function tT($) {
  return $ && $.__esModule && Object.prototype.hasOwnProperty.call($, "default") ? $.default : $;
}
var z2 = { exports: {} }, $o = {};
/**
 * @license React
 * react.production.min.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
var Dy = Symbol.for("react.element"), eT = Symbol.for("react.portal"), rT = Symbol.for("react.fragment"), nT = Symbol.for("react.strict_mode"), iT = Symbol.for("react.profiler"), aT = Symbol.for("react.provider"), oT = Symbol.for("react.context"), sT = Symbol.for("react.forward_ref"), lT = Symbol.for("react.suspense"), uT = Symbol.for("react.memo"), cT = Symbol.for("react.lazy"), Mw = Symbol.iterator;
function fT($) {
  return $ === null || typeof $ != "object" ? null : ($ = Mw && $[Mw] || $["@@iterator"], typeof $ == "function" ? $ : null);
}
var F2 = { isMounted: function() {
  return !1;
}, enqueueForceUpdate: function() {
}, enqueueReplaceState: function() {
}, enqueueSetState: function() {
} }, O2 = Object.assign, B2 = {};
function mg($, ft, It) {
  this.props = $, this.context = ft, this.refs = B2, this.updater = It || F2;
}
mg.prototype.isReactComponent = {};
mg.prototype.setState = function($, ft) {
  if (typeof $ != "object" && typeof $ != "function" && $ != null) throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");
  this.updater.enqueueSetState(this, $, ft, "setState");
};
mg.prototype.forceUpdate = function($) {
  this.updater.enqueueForceUpdate(this, $, "forceUpdate");
};
function N2() {
}
N2.prototype = mg.prototype;
function M3($, ft, It) {
  this.props = $, this.context = ft, this.refs = B2, this.updater = It || F2;
}
var E3 = M3.prototype = new N2();
E3.constructor = M3;
O2(E3, mg.prototype);
E3.isPureReactComponent = !0;
var Ew = Array.isArray, U2 = Object.prototype.hasOwnProperty, C3 = { current: null }, V2 = { key: !0, ref: !0, __self: !0, __source: !0 };
function H2($, ft, It) {
  var ne, ke = {}, Qe = null, Y = null;
  if (ft != null) for (ne in ft.ref !== void 0 && (Y = ft.ref), ft.key !== void 0 && (Qe = "" + ft.key), ft) U2.call(ft, ne) && !V2.hasOwnProperty(ne) && (ke[ne] = ft[ne]);
  var K = arguments.length - 2;
  if (K === 1) ke.children = It;
  else if (1 < K) {
    for (var e = Array(K), b = 0; b < K; b++) e[b] = arguments[b + 2];
    ke.children = e;
  }
  if ($ && $.defaultProps) for (ne in K = $.defaultProps, K) ke[ne] === void 0 && (ke[ne] = K[ne]);
  return { $$typeof: Dy, type: $, key: Qe, ref: Y, props: ke, _owner: C3.current };
}
function hT($, ft) {
  return { $$typeof: Dy, type: $.type, key: ft, ref: $.ref, props: $.props, _owner: $._owner };
}
function L3($) {
  return typeof $ == "object" && $ !== null && $.$$typeof === Dy;
}
function dT($) {
  var ft = { "=": "=0", ":": "=2" };
  return "$" + $.replace(/[=:]/g, function(It) {
    return ft[It];
  });
}
var Cw = /\/+/g;
function sb($, ft) {
  return typeof $ == "object" && $ !== null && $.key != null ? dT("" + $.key) : ft.toString(36);
}
function Jm($, ft, It, ne, ke) {
  var Qe = typeof $;
  (Qe === "undefined" || Qe === "boolean") && ($ = null);
  var Y = !1;
  if ($ === null) Y = !0;
  else switch (Qe) {
    case "string":
    case "number":
      Y = !0;
      break;
    case "object":
      switch ($.$$typeof) {
        case Dy:
        case eT:
          Y = !0;
      }
  }
  if (Y) return Y = $, ke = ke(Y), $ = ne === "" ? "." + sb(Y, 0) : ne, Ew(ke) ? (It = "", $ != null && (It = $.replace(Cw, "$&/") + "/"), Jm(ke, ft, It, "", function(b) {
    return b;
  })) : ke != null && (L3(ke) && (ke = hT(ke, It + (!ke.key || Y && Y.key === ke.key ? "" : ("" + ke.key).replace(Cw, "$&/") + "/") + $)), ft.push(ke)), 1;
  if (Y = 0, ne = ne === "" ? "." : ne + ":", Ew($)) for (var K = 0; K < $.length; K++) {
    Qe = $[K];
    var e = ne + sb(Qe, K);
    Y += Jm(Qe, ft, It, e, ke);
  }
  else if (e = fT($), typeof e == "function") for ($ = e.call($), K = 0; !(Qe = $.next()).done; ) Qe = Qe.value, e = ne + sb(Qe, K++), Y += Jm(Qe, ft, It, e, ke);
  else if (Qe === "object") throw ft = String($), Error("Objects are not valid as a React child (found: " + (ft === "[object Object]" ? "object with keys {" + Object.keys($).join(", ") + "}" : ft) + "). If you meant to render a collection of children, use an array instead.");
  return Y;
}
function Dm($, ft, It) {
  if ($ == null) return $;
  var ne = [], ke = 0;
  return Jm($, ne, "", "", function(Qe) {
    return ft.call(It, Qe, ke++);
  }), ne;
}
function vT($) {
  if ($._status === -1) {
    var ft = $._result;
    ft = ft(), ft.then(function(It) {
      ($._status === 0 || $._status === -1) && ($._status = 1, $._result = It);
    }, function(It) {
      ($._status === 0 || $._status === -1) && ($._status = 2, $._result = It);
    }), $._status === -1 && ($._status = 0, $._result = ft);
  }
  if ($._status === 1) return $._result.default;
  throw $._result;
}
var Vf = { current: null }, Qm = { transition: null }, pT = { ReactCurrentDispatcher: Vf, ReactCurrentBatchConfig: Qm, ReactCurrentOwner: C3 };
function G2() {
  throw Error("act(...) is not supported in production builds of React.");
}
$o.Children = { map: Dm, forEach: function($, ft, It) {
  Dm($, function() {
    ft.apply(this, arguments);
  }, It);
}, count: function($) {
  var ft = 0;
  return Dm($, function() {
    ft++;
  }), ft;
}, toArray: function($) {
  return Dm($, function(ft) {
    return ft;
  }) || [];
}, only: function($) {
  if (!L3($)) throw Error("React.Children.only expected to receive a single React element child.");
  return $;
} };
$o.Component = mg;
$o.Fragment = rT;
$o.Profiler = iT;
$o.PureComponent = M3;
$o.StrictMode = nT;
$o.Suspense = lT;
$o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = pT;
$o.act = G2;
$o.cloneElement = function($, ft, It) {
  if ($ == null) throw Error("React.cloneElement(...): The argument must be a React element, but you passed " + $ + ".");
  var ne = O2({}, $.props), ke = $.key, Qe = $.ref, Y = $._owner;
  if (ft != null) {
    if (ft.ref !== void 0 && (Qe = ft.ref, Y = C3.current), ft.key !== void 0 && (ke = "" + ft.key), $.type && $.type.defaultProps) var K = $.type.defaultProps;
    for (e in ft) U2.call(ft, e) && !V2.hasOwnProperty(e) && (ne[e] = ft[e] === void 0 && K !== void 0 ? K[e] : ft[e]);
  }
  var e = arguments.length - 2;
  if (e === 1) ne.children = It;
  else if (1 < e) {
    K = Array(e);
    for (var b = 0; b < e; b++) K[b] = arguments[b + 2];
    ne.children = K;
  }
  return { $$typeof: Dy, type: $.type, key: ke, ref: Qe, props: ne, _owner: Y };
};
$o.createContext = function($) {
  return $ = { $$typeof: oT, _currentValue: $, _currentValue2: $, _threadCount: 0, Provider: null, Consumer: null, _defaultValue: null, _globalName: null }, $.Provider = { $$typeof: aT, _context: $ }, $.Consumer = $;
};
$o.createElement = H2;
$o.createFactory = function($) {
  var ft = H2.bind(null, $);
  return ft.type = $, ft;
};
$o.createRef = function() {
  return { current: null };
};
$o.forwardRef = function($) {
  return { $$typeof: sT, render: $ };
};
$o.isValidElement = L3;
$o.lazy = function($) {
  return { $$typeof: cT, _payload: { _status: -1, _result: $ }, _init: vT };
};
$o.memo = function($, ft) {
  return { $$typeof: uT, type: $, compare: ft === void 0 ? null : ft };
};
$o.startTransition = function($) {
  var ft = Qm.transition;
  Qm.transition = {};
  try {
    $();
  } finally {
    Qm.transition = ft;
  }
};
$o.unstable_act = G2;
$o.useCallback = function($, ft) {
  return Vf.current.useCallback($, ft);
};
$o.useContext = function($) {
  return Vf.current.useContext($);
};
$o.useDebugValue = function() {
};
$o.useDeferredValue = function($) {
  return Vf.current.useDeferredValue($);
};
$o.useEffect = function($, ft) {
  return Vf.current.useEffect($, ft);
};
$o.useId = function() {
  return Vf.current.useId();
};
$o.useImperativeHandle = function($, ft, It) {
  return Vf.current.useImperativeHandle($, ft, It);
};
$o.useInsertionEffect = function($, ft) {
  return Vf.current.useInsertionEffect($, ft);
};
$o.useLayoutEffect = function($, ft) {
  return Vf.current.useLayoutEffect($, ft);
};
$o.useMemo = function($, ft) {
  return Vf.current.useMemo($, ft);
};
$o.useReducer = function($, ft, It) {
  return Vf.current.useReducer($, ft, It);
};
$o.useRef = function($) {
  return Vf.current.useRef($);
};
$o.useState = function($) {
  return Vf.current.useState($);
};
$o.useSyncExternalStore = function($, ft, It) {
  return Vf.current.useSyncExternalStore($, ft, It);
};
$o.useTransition = function() {
  return Vf.current.useTransition();
};
$o.version = "18.3.1";
z2.exports = $o;
var hf = z2.exports, W2 = { exports: {} }, $h = {}, j2 = { exports: {} }, Z2 = {};
/**
 * @license React
 * scheduler.production.min.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
(function($) {
  function ft(L, d) {
    var h = L.length;
    L.push(d);
    t: for (; 0 < h; ) {
      var E = h - 1 >>> 1, w = L[E];
      if (0 < ke(w, d)) L[E] = d, L[h] = w, h = E;
      else break t;
    }
  }
  function It(L) {
    return L.length === 0 ? null : L[0];
  }
  function ne(L) {
    if (L.length === 0) return null;
    var d = L[0], h = L.pop();
    if (h !== d) {
      L[0] = h;
      t: for (var E = 0, w = L.length, z = w >>> 1; E < z; ) {
        var O = 2 * (E + 1) - 1, B = L[O], V = O + 1, U = L[V];
        if (0 > ke(B, h)) V < w && 0 > ke(U, B) ? (L[E] = U, L[V] = h, E = V) : (L[E] = B, L[O] = h, E = O);
        else if (V < w && 0 > ke(U, h)) L[E] = U, L[V] = h, E = V;
        else break t;
      }
    }
    return d;
  }
  function ke(L, d) {
    var h = L.sortIndex - d.sortIndex;
    return h !== 0 ? h : L.id - d.id;
  }
  if (typeof performance == "object" && typeof performance.now == "function") {
    var Qe = performance;
    $.unstable_now = function() {
      return Qe.now();
    };
  } else {
    var Y = Date, K = Y.now();
    $.unstable_now = function() {
      return Y.now() - K;
    };
  }
  var e = [], b = [], P = 1, n = null, s = 3, T = !1, A = !1, p = !1, u = typeof setTimeout == "function" ? setTimeout : null, t = typeof clearTimeout == "function" ? clearTimeout : null, r = typeof setImmediate < "u" ? setImmediate : null;
  typeof navigator < "u" && navigator.scheduling !== void 0 && navigator.scheduling.isInputPending !== void 0 && navigator.scheduling.isInputPending.bind(navigator.scheduling);
  function i(L) {
    for (var d = It(b); d !== null; ) {
      if (d.callback === null) ne(b);
      else if (d.startTime <= L) ne(b), d.sortIndex = d.expirationTime, ft(e, d);
      else break;
      d = It(b);
    }
  }
  function a(L) {
    if (p = !1, i(L), !A) if (It(e) !== null) A = !0, C(l);
    else {
      var d = It(b);
      d !== null && m(a, d.startTime - L);
    }
  }
  function l(L, d) {
    A = !1, p && (p = !1, t(g), g = -1), T = !0;
    var h = s;
    try {
      for (i(d), n = It(e); n !== null && (!(n.expirationTime > d) || L && !v()); ) {
        var E = n.callback;
        if (typeof E == "function") {
          n.callback = null, s = n.priorityLevel;
          var w = E(n.expirationTime <= d);
          d = $.unstable_now(), typeof w == "function" ? n.callback = w : n === It(e) && ne(e), i(d);
        } else ne(e);
        n = It(e);
      }
      if (n !== null) var z = !0;
      else {
        var O = It(b);
        O !== null && m(a, O.startTime - d), z = !1;
      }
      return z;
    } finally {
      n = null, s = h, T = !1;
    }
  }
  var o = !1, y = null, g = -1, x = 5, c = -1;
  function v() {
    return !($.unstable_now() - c < x);
  }
  function f() {
    if (y !== null) {
      var L = $.unstable_now();
      c = L;
      var d = !0;
      try {
        d = y(!0, L);
      } finally {
        d ? _() : (o = !1, y = null);
      }
    } else o = !1;
  }
  var _;
  if (typeof r == "function") _ = function() {
    r(f);
  };
  else if (typeof MessageChannel < "u") {
    var S = new MessageChannel(), M = S.port2;
    S.port1.onmessage = f, _ = function() {
      M.postMessage(null);
    };
  } else _ = function() {
    u(f, 0);
  };
  function C(L) {
    y = L, o || (o = !0, _());
  }
  function m(L, d) {
    g = u(function() {
      L($.unstable_now());
    }, d);
  }
  $.unstable_IdlePriority = 5, $.unstable_ImmediatePriority = 1, $.unstable_LowPriority = 4, $.unstable_NormalPriority = 3, $.unstable_Profiling = null, $.unstable_UserBlockingPriority = 2, $.unstable_cancelCallback = function(L) {
    L.callback = null;
  }, $.unstable_continueExecution = function() {
    A || T || (A = !0, C(l));
  }, $.unstable_forceFrameRate = function(L) {
    0 > L || 125 < L ? console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported") : x = 0 < L ? Math.floor(1e3 / L) : 5;
  }, $.unstable_getCurrentPriorityLevel = function() {
    return s;
  }, $.unstable_getFirstCallbackNode = function() {
    return It(e);
  }, $.unstable_next = function(L) {
    switch (s) {
      case 1:
      case 2:
      case 3:
        var d = 3;
        break;
      default:
        d = s;
    }
    var h = s;
    s = d;
    try {
      return L();
    } finally {
      s = h;
    }
  }, $.unstable_pauseExecution = function() {
  }, $.unstable_requestPaint = function() {
  }, $.unstable_runWithPriority = function(L, d) {
    switch (L) {
      case 1:
      case 2:
      case 3:
      case 4:
      case 5:
        break;
      default:
        L = 3;
    }
    var h = s;
    s = L;
    try {
      return d();
    } finally {
      s = h;
    }
  }, $.unstable_scheduleCallback = function(L, d, h) {
    var E = $.unstable_now();
    switch (typeof h == "object" && h !== null ? (h = h.delay, h = typeof h == "number" && 0 < h ? E + h : E) : h = E, L) {
      case 1:
        var w = -1;
        break;
      case 2:
        w = 250;
        break;
      case 5:
        w = 1073741823;
        break;
      case 4:
        w = 1e4;
        break;
      default:
        w = 5e3;
    }
    return w = h + w, L = { id: P++, callback: d, priorityLevel: L, startTime: h, expirationTime: w, sortIndex: -1 }, h > E ? (L.sortIndex = h, ft(b, L), It(e) === null && L === It(b) && (p ? (t(g), g = -1) : p = !0, m(a, h - E))) : (L.sortIndex = w, ft(e, L), A || T || (A = !0, C(l))), L;
  }, $.unstable_shouldYield = v, $.unstable_wrapCallback = function(L) {
    var d = s;
    return function() {
      var h = s;
      s = d;
      try {
        return L.apply(this, arguments);
      } finally {
        s = h;
      }
    };
  };
})(Z2);
j2.exports = Z2;
var gT = j2.exports;
/**
 * @license React
 * react-dom.production.min.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
var yT = hf, Qh = gT;
function ga($) {
  for (var ft = "https://reactjs.org/docs/error-decoder.html?invariant=" + $, It = 1; It < arguments.length; It++) ft += "&args[]=" + encodeURIComponent(arguments[It]);
  return "Minified React error #" + $ + "; visit " + ft + " for the full message or use the non-minified dev environment for full errors and additional helpful warnings.";
}
var X2 = /* @__PURE__ */ new Set(), gy = {};
function _0($, ft) {
  fg($, ft), fg($ + "Capture", ft);
}
function fg($, ft) {
  for (gy[$] = ft, $ = 0; $ < ft.length; $++) X2.add(ft[$]);
}
var Ov = !(typeof window > "u" || typeof window.document > "u" || typeof window.document.createElement > "u"), kb = Object.prototype.hasOwnProperty, mT = /^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/, Lw = {}, Pw = {};
function xT($) {
  return kb.call(Pw, $) ? !0 : kb.call(Lw, $) ? !1 : mT.test($) ? Pw[$] = !0 : (Lw[$] = !0, !1);
}
function bT($, ft, It, ne) {
  if (It !== null && It.type === 0) return !1;
  switch (typeof ft) {
    case "function":
    case "symbol":
      return !0;
    case "boolean":
      return ne ? !1 : It !== null ? !It.acceptsBooleans : ($ = $.toLowerCase().slice(0, 5), $ !== "data-" && $ !== "aria-");
    default:
      return !1;
  }
}
function wT($, ft, It, ne) {
  if (ft === null || typeof ft > "u" || bT($, ft, It, ne)) return !0;
  if (ne) return !1;
  if (It !== null) switch (It.type) {
    case 3:
      return !ft;
    case 4:
      return ft === !1;
    case 5:
      return isNaN(ft);
    case 6:
      return isNaN(ft) || 1 > ft;
  }
  return !1;
}
function Hf($, ft, It, ne, ke, Qe, Y) {
  this.acceptsBooleans = ft === 2 || ft === 3 || ft === 4, this.attributeName = ne, this.attributeNamespace = ke, this.mustUseProperty = It, this.propertyName = $, this.type = ft, this.sanitizeURL = Qe, this.removeEmptyString = Y;
}
var zc = {};
"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function($) {
  zc[$] = new Hf($, 0, !1, $, null, !1, !1);
});
[["acceptCharset", "accept-charset"], ["className", "class"], ["htmlFor", "for"], ["httpEquiv", "http-equiv"]].forEach(function($) {
  var ft = $[0];
  zc[ft] = new Hf(ft, 1, !1, $[1], null, !1, !1);
});
["contentEditable", "draggable", "spellCheck", "value"].forEach(function($) {
  zc[$] = new Hf($, 2, !1, $.toLowerCase(), null, !1, !1);
});
["autoReverse", "externalResourcesRequired", "focusable", "preserveAlpha"].forEach(function($) {
  zc[$] = new Hf($, 2, !1, $, null, !1, !1);
});
"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function($) {
  zc[$] = new Hf($, 3, !1, $.toLowerCase(), null, !1, !1);
});
["checked", "multiple", "muted", "selected"].forEach(function($) {
  zc[$] = new Hf($, 3, !0, $, null, !1, !1);
});
["capture", "download"].forEach(function($) {
  zc[$] = new Hf($, 4, !1, $, null, !1, !1);
});
["cols", "rows", "size", "span"].forEach(function($) {
  zc[$] = new Hf($, 6, !1, $, null, !1, !1);
});
["rowSpan", "start"].forEach(function($) {
  zc[$] = new Hf($, 5, !1, $.toLowerCase(), null, !1, !1);
});
var P3 = /[\-:]([a-z])/g;
function I3($) {
  return $[1].toUpperCase();
}
"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function($) {
  var ft = $.replace(
    P3,
    I3
  );
  zc[ft] = new Hf(ft, 1, !1, $, null, !1, !1);
});
"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function($) {
  var ft = $.replace(P3, I3);
  zc[ft] = new Hf(ft, 1, !1, $, "http://www.w3.org/1999/xlink", !1, !1);
});
["xml:base", "xml:lang", "xml:space"].forEach(function($) {
  var ft = $.replace(P3, I3);
  zc[ft] = new Hf(ft, 1, !1, $, "http://www.w3.org/XML/1998/namespace", !1, !1);
});
["tabIndex", "crossOrigin"].forEach(function($) {
  zc[$] = new Hf($, 1, !1, $.toLowerCase(), null, !1, !1);
});
zc.xlinkHref = new Hf("xlinkHref", 1, !1, "xlink:href", "http://www.w3.org/1999/xlink", !0, !1);
["src", "href", "action", "formAction"].forEach(function($) {
  zc[$] = new Hf($, 1, !1, $.toLowerCase(), null, !0, !0);
});
function R3($, ft, It, ne) {
  var ke = zc.hasOwnProperty(ft) ? zc[ft] : null;
  (ke !== null ? ke.type !== 0 : ne || !(2 < ft.length) || ft[0] !== "o" && ft[0] !== "O" || ft[1] !== "n" && ft[1] !== "N") && (wT(ft, It, ke, ne) && (It = null), ne || ke === null ? xT(ft) && (It === null ? $.removeAttribute(ft) : $.setAttribute(ft, "" + It)) : ke.mustUseProperty ? $[ke.propertyName] = It === null ? ke.type === 3 ? !1 : "" : It : (ft = ke.attributeName, ne = ke.attributeNamespace, It === null ? $.removeAttribute(ft) : (ke = ke.type, It = ke === 3 || ke === 4 && It === !0 ? "" : "" + It, ne ? $.setAttributeNS(ne, ft, It) : $.setAttribute(ft, It))));
}
var Vv = yT.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, km = Symbol.for("react.element"), X0 = Symbol.for("react.portal"), Y0 = Symbol.for("react.fragment"), D3 = Symbol.for("react.strict_mode"), zb = Symbol.for("react.profiler"), Y2 = Symbol.for("react.provider"), K2 = Symbol.for("react.context"), k3 = Symbol.for("react.forward_ref"), Fb = Symbol.for("react.suspense"), Ob = Symbol.for("react.suspense_list"), z3 = Symbol.for("react.memo"), pp = Symbol.for("react.lazy"), J2 = Symbol.for("react.offscreen"), Iw = Symbol.iterator;
function Kg($) {
  return $ === null || typeof $ != "object" ? null : ($ = Iw && $[Iw] || $["@@iterator"], typeof $ == "function" ? $ : null);
}
var Fl = Object.assign, lb;
function ny($) {
  if (lb === void 0) try {
    throw Error();
  } catch (It) {
    var ft = It.stack.trim().match(/\n( *(at )?)/);
    lb = ft && ft[1] || "";
  }
  return `
` + lb + $;
}
var ub = !1;
function cb($, ft) {
  if (!$ || ub) return "";
  ub = !0;
  var It = Error.prepareStackTrace;
  Error.prepareStackTrace = void 0;
  try {
    if (ft) if (ft = function() {
      throw Error();
    }, Object.defineProperty(ft.prototype, "props", { set: function() {
      throw Error();
    } }), typeof Reflect == "object" && Reflect.construct) {
      try {
        Reflect.construct(ft, []);
      } catch (b) {
        var ne = b;
      }
      Reflect.construct($, [], ft);
    } else {
      try {
        ft.call();
      } catch (b) {
        ne = b;
      }
      $.call(ft.prototype);
    }
    else {
      try {
        throw Error();
      } catch (b) {
        ne = b;
      }
      $();
    }
  } catch (b) {
    if (b && ne && typeof b.stack == "string") {
      for (var ke = b.stack.split(`
`), Qe = ne.stack.split(`
`), Y = ke.length - 1, K = Qe.length - 1; 1 <= Y && 0 <= K && ke[Y] !== Qe[K]; ) K--;
      for (; 1 <= Y && 0 <= K; Y--, K--) if (ke[Y] !== Qe[K]) {
        if (Y !== 1 || K !== 1)
          do
            if (Y--, K--, 0 > K || ke[Y] !== Qe[K]) {
              var e = `
` + ke[Y].replace(" at new ", " at ");
              return $.displayName && e.includes("<anonymous>") && (e = e.replace("<anonymous>", $.displayName)), e;
            }
          while (1 <= Y && 0 <= K);
        break;
      }
    }
  } finally {
    ub = !1, Error.prepareStackTrace = It;
  }
  return ($ = $ ? $.displayName || $.name : "") ? ny($) : "";
}
function _T($) {
  switch ($.tag) {
    case 5:
      return ny($.type);
    case 16:
      return ny("Lazy");
    case 13:
      return ny("Suspense");
    case 19:
      return ny("SuspenseList");
    case 0:
    case 2:
    case 15:
      return $ = cb($.type, !1), $;
    case 11:
      return $ = cb($.type.render, !1), $;
    case 1:
      return $ = cb($.type, !0), $;
    default:
      return "";
  }
}
function Bb($) {
  if ($ == null) return null;
  if (typeof $ == "function") return $.displayName || $.name || null;
  if (typeof $ == "string") return $;
  switch ($) {
    case Y0:
      return "Fragment";
    case X0:
      return "Portal";
    case zb:
      return "Profiler";
    case D3:
      return "StrictMode";
    case Fb:
      return "Suspense";
    case Ob:
      return "SuspenseList";
  }
  if (typeof $ == "object") switch ($.$$typeof) {
    case K2:
      return ($.displayName || "Context") + ".Consumer";
    case Y2:
      return ($._context.displayName || "Context") + ".Provider";
    case k3:
      var ft = $.render;
      return $ = $.displayName, $ || ($ = ft.displayName || ft.name || "", $ = $ !== "" ? "ForwardRef(" + $ + ")" : "ForwardRef"), $;
    case z3:
      return ft = $.displayName || null, ft !== null ? ft : Bb($.type) || "Memo";
    case pp:
      ft = $._payload, $ = $._init;
      try {
        return Bb($(ft));
      } catch {
      }
  }
  return null;
}
function TT($) {
  var ft = $.type;
  switch ($.tag) {
    case 24:
      return "Cache";
    case 9:
      return (ft.displayName || "Context") + ".Consumer";
    case 10:
      return (ft._context.displayName || "Context") + ".Provider";
    case 18:
      return "DehydratedFragment";
    case 11:
      return $ = ft.render, $ = $.displayName || $.name || "", ft.displayName || ($ !== "" ? "ForwardRef(" + $ + ")" : "ForwardRef");
    case 7:
      return "Fragment";
    case 5:
      return ft;
    case 4:
      return "Portal";
    case 3:
      return "Root";
    case 6:
      return "Text";
    case 16:
      return Bb(ft);
    case 8:
      return ft === D3 ? "StrictMode" : "Mode";
    case 22:
      return "Offscreen";
    case 12:
      return "Profiler";
    case 21:
      return "Scope";
    case 13:
      return "Suspense";
    case 19:
      return "SuspenseList";
    case 25:
      return "TracingMarker";
    case 1:
    case 0:
    case 17:
    case 2:
    case 14:
    case 15:
      if (typeof ft == "function") return ft.displayName || ft.name || null;
      if (typeof ft == "string") return ft;
  }
  return null;
}
function Lp($) {
  switch (typeof $) {
    case "boolean":
    case "number":
    case "string":
    case "undefined":
      return $;
    case "object":
      return $;
    default:
      return "";
  }
}
function Q2($) {
  var ft = $.type;
  return ($ = $.nodeName) && $.toLowerCase() === "input" && (ft === "checkbox" || ft === "radio");
}
function AT($) {
  var ft = Q2($) ? "checked" : "value", It = Object.getOwnPropertyDescriptor($.constructor.prototype, ft), ne = "" + $[ft];
  if (!$.hasOwnProperty(ft) && typeof It < "u" && typeof It.get == "function" && typeof It.set == "function") {
    var ke = It.get, Qe = It.set;
    return Object.defineProperty($, ft, { configurable: !0, get: function() {
      return ke.call(this);
    }, set: function(Y) {
      ne = "" + Y, Qe.call(this, Y);
    } }), Object.defineProperty($, ft, { enumerable: It.enumerable }), { getValue: function() {
      return ne;
    }, setValue: function(Y) {
      ne = "" + Y;
    }, stopTracking: function() {
      $._valueTracker = null, delete $[ft];
    } };
  }
}
function zm($) {
  $._valueTracker || ($._valueTracker = AT($));
}
function $2($) {
  if (!$) return !1;
  var ft = $._valueTracker;
  if (!ft) return !0;
  var It = ft.getValue(), ne = "";
  return $ && (ne = Q2($) ? $.checked ? "true" : "false" : $.value), $ = ne, $ !== It ? (ft.setValue($), !0) : !1;
}
function l1($) {
  if ($ = $ || (typeof document < "u" ? document : void 0), typeof $ > "u") return null;
  try {
    return $.activeElement || $.body;
  } catch {
    return $.body;
  }
}
function Nb($, ft) {
  var It = ft.checked;
  return Fl({}, ft, { defaultChecked: void 0, defaultValue: void 0, value: void 0, checked: It ?? $._wrapperState.initialChecked });
}
function Rw($, ft) {
  var It = ft.defaultValue == null ? "" : ft.defaultValue, ne = ft.checked != null ? ft.checked : ft.defaultChecked;
  It = Lp(ft.value != null ? ft.value : It), $._wrapperState = { initialChecked: ne, initialValue: It, controlled: ft.type === "checkbox" || ft.type === "radio" ? ft.checked != null : ft.value != null };
}
function q2($, ft) {
  ft = ft.checked, ft != null && R3($, "checked", ft, !1);
}
function Ub($, ft) {
  q2($, ft);
  var It = Lp(ft.value), ne = ft.type;
  if (It != null) ne === "number" ? (It === 0 && $.value === "" || $.value != It) && ($.value = "" + It) : $.value !== "" + It && ($.value = "" + It);
  else if (ne === "submit" || ne === "reset") {
    $.removeAttribute("value");
    return;
  }
  ft.hasOwnProperty("value") ? Vb($, ft.type, It) : ft.hasOwnProperty("defaultValue") && Vb($, ft.type, Lp(ft.defaultValue)), ft.checked == null && ft.defaultChecked != null && ($.defaultChecked = !!ft.defaultChecked);
}
function Dw($, ft, It) {
  if (ft.hasOwnProperty("value") || ft.hasOwnProperty("defaultValue")) {
    var ne = ft.type;
    if (!(ne !== "submit" && ne !== "reset" || ft.value !== void 0 && ft.value !== null)) return;
    ft = "" + $._wrapperState.initialValue, It || ft === $.value || ($.value = ft), $.defaultValue = ft;
  }
  It = $.name, It !== "" && ($.name = ""), $.defaultChecked = !!$._wrapperState.initialChecked, It !== "" && ($.name = It);
}
function Vb($, ft, It) {
  (ft !== "number" || l1($.ownerDocument) !== $) && (It == null ? $.defaultValue = "" + $._wrapperState.initialValue : $.defaultValue !== "" + It && ($.defaultValue = "" + It));
}
var iy = Array.isArray;
function ag($, ft, It, ne) {
  if ($ = $.options, ft) {
    ft = {};
    for (var ke = 0; ke < It.length; ke++) ft["$" + It[ke]] = !0;
    for (It = 0; It < $.length; It++) ke = ft.hasOwnProperty("$" + $[It].value), $[It].selected !== ke && ($[It].selected = ke), ke && ne && ($[It].defaultSelected = !0);
  } else {
    for (It = "" + Lp(It), ft = null, ke = 0; ke < $.length; ke++) {
      if ($[ke].value === It) {
        $[ke].selected = !0, ne && ($[ke].defaultSelected = !0);
        return;
      }
      ft !== null || $[ke].disabled || (ft = $[ke]);
    }
    ft !== null && (ft.selected = !0);
  }
}
function Hb($, ft) {
  if (ft.dangerouslySetInnerHTML != null) throw Error(ga(91));
  return Fl({}, ft, { value: void 0, defaultValue: void 0, children: "" + $._wrapperState.initialValue });
}
function kw($, ft) {
  var It = ft.value;
  if (It == null) {
    if (It = ft.children, ft = ft.defaultValue, It != null) {
      if (ft != null) throw Error(ga(92));
      if (iy(It)) {
        if (1 < It.length) throw Error(ga(93));
        It = It[0];
      }
      ft = It;
    }
    ft == null && (ft = ""), It = ft;
  }
  $._wrapperState = { initialValue: Lp(It) };
}
function t5($, ft) {
  var It = Lp(ft.value), ne = Lp(ft.defaultValue);
  It != null && (It = "" + It, It !== $.value && ($.value = It), ft.defaultValue == null && $.defaultValue !== It && ($.defaultValue = It)), ne != null && ($.defaultValue = "" + ne);
}
function zw($) {
  var ft = $.textContent;
  ft === $._wrapperState.initialValue && ft !== "" && ft !== null && ($.value = ft);
}
function e5($) {
  switch ($) {
    case "svg":
      return "http://www.w3.org/2000/svg";
    case "math":
      return "http://www.w3.org/1998/Math/MathML";
    default:
      return "http://www.w3.org/1999/xhtml";
  }
}
function Gb($, ft) {
  return $ == null || $ === "http://www.w3.org/1999/xhtml" ? e5(ft) : $ === "http://www.w3.org/2000/svg" && ft === "foreignObject" ? "http://www.w3.org/1999/xhtml" : $;
}
var Fm, r5 = function($) {
  return typeof MSApp < "u" && MSApp.execUnsafeLocalFunction ? function(ft, It, ne, ke) {
    MSApp.execUnsafeLocalFunction(function() {
      return $(ft, It, ne, ke);
    });
  } : $;
}(function($, ft) {
  if ($.namespaceURI !== "http://www.w3.org/2000/svg" || "innerHTML" in $) $.innerHTML = ft;
  else {
    for (Fm = Fm || document.createElement("div"), Fm.innerHTML = "<svg>" + ft.valueOf().toString() + "</svg>", ft = Fm.firstChild; $.firstChild; ) $.removeChild($.firstChild);
    for (; ft.firstChild; ) $.appendChild(ft.firstChild);
  }
});
function yy($, ft) {
  if (ft) {
    var It = $.firstChild;
    if (It && It === $.lastChild && It.nodeType === 3) {
      It.nodeValue = ft;
      return;
    }
  }
  $.textContent = ft;
}
var sy = {
  animationIterationCount: !0,
  aspectRatio: !0,
  borderImageOutset: !0,
  borderImageSlice: !0,
  borderImageWidth: !0,
  boxFlex: !0,
  boxFlexGroup: !0,
  boxOrdinalGroup: !0,
  columnCount: !0,
  columns: !0,
  flex: !0,
  flexGrow: !0,
  flexPositive: !0,
  flexShrink: !0,
  flexNegative: !0,
  flexOrder: !0,
  gridArea: !0,
  gridRow: !0,
  gridRowEnd: !0,
  gridRowSpan: !0,
  gridRowStart: !0,
  gridColumn: !0,
  gridColumnEnd: !0,
  gridColumnSpan: !0,
  gridColumnStart: !0,
  fontWeight: !0,
  lineClamp: !0,
  lineHeight: !0,
  opacity: !0,
  order: !0,
  orphans: !0,
  tabSize: !0,
  widows: !0,
  zIndex: !0,
  zoom: !0,
  fillOpacity: !0,
  floodOpacity: !0,
  stopOpacity: !0,
  strokeDasharray: !0,
  strokeDashoffset: !0,
  strokeMiterlimit: !0,
  strokeOpacity: !0,
  strokeWidth: !0
}, ST = ["Webkit", "ms", "Moz", "O"];
Object.keys(sy).forEach(function($) {
  ST.forEach(function(ft) {
    ft = ft + $.charAt(0).toUpperCase() + $.substring(1), sy[ft] = sy[$];
  });
});
function n5($, ft, It) {
  return ft == null || typeof ft == "boolean" || ft === "" ? "" : It || typeof ft != "number" || ft === 0 || sy.hasOwnProperty($) && sy[$] ? ("" + ft).trim() : ft + "px";
}
function i5($, ft) {
  $ = $.style;
  for (var It in ft) if (ft.hasOwnProperty(It)) {
    var ne = It.indexOf("--") === 0, ke = n5(It, ft[It], ne);
    It === "float" && (It = "cssFloat"), ne ? $.setProperty(It, ke) : $[It] = ke;
  }
}
var MT = Fl({ menuitem: !0 }, { area: !0, base: !0, br: !0, col: !0, embed: !0, hr: !0, img: !0, input: !0, keygen: !0, link: !0, meta: !0, param: !0, source: !0, track: !0, wbr: !0 });
function Wb($, ft) {
  if (ft) {
    if (MT[$] && (ft.children != null || ft.dangerouslySetInnerHTML != null)) throw Error(ga(137, $));
    if (ft.dangerouslySetInnerHTML != null) {
      if (ft.children != null) throw Error(ga(60));
      if (typeof ft.dangerouslySetInnerHTML != "object" || !("__html" in ft.dangerouslySetInnerHTML)) throw Error(ga(61));
    }
    if (ft.style != null && typeof ft.style != "object") throw Error(ga(62));
  }
}
function jb($, ft) {
  if ($.indexOf("-") === -1) return typeof ft.is == "string";
  switch ($) {
    case "annotation-xml":
    case "color-profile":
    case "font-face":
    case "font-face-src":
    case "font-face-uri":
    case "font-face-format":
    case "font-face-name":
    case "missing-glyph":
      return !1;
    default:
      return !0;
  }
}
var Zb = null;
function F3($) {
  return $ = $.target || $.srcElement || window, $.correspondingUseElement && ($ = $.correspondingUseElement), $.nodeType === 3 ? $.parentNode : $;
}
var Xb = null, og = null, sg = null;
function Fw($) {
  if ($ = Fy($)) {
    if (typeof Xb != "function") throw Error(ga(280));
    var ft = $.stateNode;
    ft && (ft = F1(ft), Xb($.stateNode, $.type, ft));
  }
}
function a5($) {
  og ? sg ? sg.push($) : sg = [$] : og = $;
}
function o5() {
  if (og) {
    var $ = og, ft = sg;
    if (sg = og = null, Fw($), ft) for ($ = 0; $ < ft.length; $++) Fw(ft[$]);
  }
}
function s5($, ft) {
  return $(ft);
}
function l5() {
}
var fb = !1;
function u5($, ft, It) {
  if (fb) return $(ft, It);
  fb = !0;
  try {
    return s5($, ft, It);
  } finally {
    fb = !1, (og !== null || sg !== null) && (l5(), o5());
  }
}
function my($, ft) {
  var It = $.stateNode;
  if (It === null) return null;
  var ne = F1(It);
  if (ne === null) return null;
  It = ne[ft];
  t: switch (ft) {
    case "onClick":
    case "onClickCapture":
    case "onDoubleClick":
    case "onDoubleClickCapture":
    case "onMouseDown":
    case "onMouseDownCapture":
    case "onMouseMove":
    case "onMouseMoveCapture":
    case "onMouseUp":
    case "onMouseUpCapture":
    case "onMouseEnter":
      (ne = !ne.disabled) || ($ = $.type, ne = !($ === "button" || $ === "input" || $ === "select" || $ === "textarea")), $ = !ne;
      break t;
    default:
      $ = !1;
  }
  if ($) return null;
  if (It && typeof It != "function") throw Error(ga(231, ft, typeof It));
  return It;
}
var Yb = !1;
if (Ov) try {
  var Jg = {};
  Object.defineProperty(Jg, "passive", { get: function() {
    Yb = !0;
  } }), window.addEventListener("test", Jg, Jg), window.removeEventListener("test", Jg, Jg);
} catch {
  Yb = !1;
}
function ET($, ft, It, ne, ke, Qe, Y, K, e) {
  var b = Array.prototype.slice.call(arguments, 3);
  try {
    ft.apply(It, b);
  } catch (P) {
    this.onError(P);
  }
}
var ly = !1, u1 = null, c1 = !1, Kb = null, CT = { onError: function($) {
  ly = !0, u1 = $;
} };
function LT($, ft, It, ne, ke, Qe, Y, K, e) {
  ly = !1, u1 = null, ET.apply(CT, arguments);
}
function PT($, ft, It, ne, ke, Qe, Y, K, e) {
  if (LT.apply(this, arguments), ly) {
    if (ly) {
      var b = u1;
      ly = !1, u1 = null;
    } else throw Error(ga(198));
    c1 || (c1 = !0, Kb = b);
  }
}
function T0($) {
  var ft = $, It = $;
  if ($.alternate) for (; ft.return; ) ft = ft.return;
  else {
    $ = ft;
    do
      ft = $, ft.flags & 4098 && (It = ft.return), $ = ft.return;
    while ($);
  }
  return ft.tag === 3 ? It : null;
}
function c5($) {
  if ($.tag === 13) {
    var ft = $.memoizedState;
    if (ft === null && ($ = $.alternate, $ !== null && (ft = $.memoizedState)), ft !== null) return ft.dehydrated;
  }
  return null;
}
function Ow($) {
  if (T0($) !== $) throw Error(ga(188));
}
function IT($) {
  var ft = $.alternate;
  if (!ft) {
    if (ft = T0($), ft === null) throw Error(ga(188));
    return ft !== $ ? null : $;
  }
  for (var It = $, ne = ft; ; ) {
    var ke = It.return;
    if (ke === null) break;
    var Qe = ke.alternate;
    if (Qe === null) {
      if (ne = ke.return, ne !== null) {
        It = ne;
        continue;
      }
      break;
    }
    if (ke.child === Qe.child) {
      for (Qe = ke.child; Qe; ) {
        if (Qe === It) return Ow(ke), $;
        if (Qe === ne) return Ow(ke), ft;
        Qe = Qe.sibling;
      }
      throw Error(ga(188));
    }
    if (It.return !== ne.return) It = ke, ne = Qe;
    else {
      for (var Y = !1, K = ke.child; K; ) {
        if (K === It) {
          Y = !0, It = ke, ne = Qe;
          break;
        }
        if (K === ne) {
          Y = !0, ne = ke, It = Qe;
          break;
        }
        K = K.sibling;
      }
      if (!Y) {
        for (K = Qe.child; K; ) {
          if (K === It) {
            Y = !0, It = Qe, ne = ke;
            break;
          }
          if (K === ne) {
            Y = !0, ne = Qe, It = ke;
            break;
          }
          K = K.sibling;
        }
        if (!Y) throw Error(ga(189));
      }
    }
    if (It.alternate !== ne) throw Error(ga(190));
  }
  if (It.tag !== 3) throw Error(ga(188));
  return It.stateNode.current === It ? $ : ft;
}
function f5($) {
  return $ = IT($), $ !== null ? h5($) : null;
}
function h5($) {
  if ($.tag === 5 || $.tag === 6) return $;
  for ($ = $.child; $ !== null; ) {
    var ft = h5($);
    if (ft !== null) return ft;
    $ = $.sibling;
  }
  return null;
}
var d5 = Qh.unstable_scheduleCallback, Bw = Qh.unstable_cancelCallback, RT = Qh.unstable_shouldYield, DT = Qh.unstable_requestPaint, lu = Qh.unstable_now, kT = Qh.unstable_getCurrentPriorityLevel, O3 = Qh.unstable_ImmediatePriority, v5 = Qh.unstable_UserBlockingPriority, f1 = Qh.unstable_NormalPriority, zT = Qh.unstable_LowPriority, p5 = Qh.unstable_IdlePriority, R1 = null, vv = null;
function FT($) {
  if (vv && typeof vv.onCommitFiberRoot == "function") try {
    vv.onCommitFiberRoot(R1, $, void 0, ($.current.flags & 128) === 128);
  } catch {
  }
}
var $d = Math.clz32 ? Math.clz32 : NT, OT = Math.log, BT = Math.LN2;
function NT($) {
  return $ >>>= 0, $ === 0 ? 32 : 31 - (OT($) / BT | 0) | 0;
}
var Om = 64, Bm = 4194304;
function ay($) {
  switch ($ & -$) {
    case 1:
      return 1;
    case 2:
      return 2;
    case 4:
      return 4;
    case 8:
      return 8;
    case 16:
      return 16;
    case 32:
      return 32;
    case 64:
    case 128:
    case 256:
    case 512:
    case 1024:
    case 2048:
    case 4096:
    case 8192:
    case 16384:
    case 32768:
    case 65536:
    case 131072:
    case 262144:
    case 524288:
    case 1048576:
    case 2097152:
      return $ & 4194240;
    case 4194304:
    case 8388608:
    case 16777216:
    case 33554432:
    case 67108864:
      return $ & 130023424;
    case 134217728:
      return 134217728;
    case 268435456:
      return 268435456;
    case 536870912:
      return 536870912;
    case 1073741824:
      return 1073741824;
    default:
      return $;
  }
}
function h1($, ft) {
  var It = $.pendingLanes;
  if (It === 0) return 0;
  var ne = 0, ke = $.suspendedLanes, Qe = $.pingedLanes, Y = It & 268435455;
  if (Y !== 0) {
    var K = Y & ~ke;
    K !== 0 ? ne = ay(K) : (Qe &= Y, Qe !== 0 && (ne = ay(Qe)));
  } else Y = It & ~ke, Y !== 0 ? ne = ay(Y) : Qe !== 0 && (ne = ay(Qe));
  if (ne === 0) return 0;
  if (ft !== 0 && ft !== ne && !(ft & ke) && (ke = ne & -ne, Qe = ft & -ft, ke >= Qe || ke === 16 && (Qe & 4194240) !== 0)) return ft;
  if (ne & 4 && (ne |= It & 16), ft = $.entangledLanes, ft !== 0) for ($ = $.entanglements, ft &= ne; 0 < ft; ) It = 31 - $d(ft), ke = 1 << It, ne |= $[It], ft &= ~ke;
  return ne;
}
function UT($, ft) {
  switch ($) {
    case 1:
    case 2:
    case 4:
      return ft + 250;
    case 8:
    case 16:
    case 32:
    case 64:
    case 128:
    case 256:
    case 512:
    case 1024:
    case 2048:
    case 4096:
    case 8192:
    case 16384:
    case 32768:
    case 65536:
    case 131072:
    case 262144:
    case 524288:
    case 1048576:
    case 2097152:
      return ft + 5e3;
    case 4194304:
    case 8388608:
    case 16777216:
    case 33554432:
    case 67108864:
      return -1;
    case 134217728:
    case 268435456:
    case 536870912:
    case 1073741824:
      return -1;
    default:
      return -1;
  }
}
function VT($, ft) {
  for (var It = $.suspendedLanes, ne = $.pingedLanes, ke = $.expirationTimes, Qe = $.pendingLanes; 0 < Qe; ) {
    var Y = 31 - $d(Qe), K = 1 << Y, e = ke[Y];
    e === -1 ? (!(K & It) || K & ne) && (ke[Y] = UT(K, ft)) : e <= ft && ($.expiredLanes |= K), Qe &= ~K;
  }
}
function Jb($) {
  return $ = $.pendingLanes & -1073741825, $ !== 0 ? $ : $ & 1073741824 ? 1073741824 : 0;
}
function g5() {
  var $ = Om;
  return Om <<= 1, !(Om & 4194240) && (Om = 64), $;
}
function hb($) {
  for (var ft = [], It = 0; 31 > It; It++) ft.push($);
  return ft;
}
function ky($, ft, It) {
  $.pendingLanes |= ft, ft !== 536870912 && ($.suspendedLanes = 0, $.pingedLanes = 0), $ = $.eventTimes, ft = 31 - $d(ft), $[ft] = It;
}
function HT($, ft) {
  var It = $.pendingLanes & ~ft;
  $.pendingLanes = ft, $.suspendedLanes = 0, $.pingedLanes = 0, $.expiredLanes &= ft, $.mutableReadLanes &= ft, $.entangledLanes &= ft, ft = $.entanglements;
  var ne = $.eventTimes;
  for ($ = $.expirationTimes; 0 < It; ) {
    var ke = 31 - $d(It), Qe = 1 << ke;
    ft[ke] = 0, ne[ke] = -1, $[ke] = -1, It &= ~Qe;
  }
}
function B3($, ft) {
  var It = $.entangledLanes |= ft;
  for ($ = $.entanglements; It; ) {
    var ne = 31 - $d(It), ke = 1 << ne;
    ke & ft | $[ne] & ft && ($[ne] |= ft), It &= ~ke;
  }
}
var ks = 0;
function y5($) {
  return $ &= -$, 1 < $ ? 4 < $ ? $ & 268435455 ? 16 : 536870912 : 4 : 1;
}
var m5, N3, x5, b5, w5, Qb = !1, Nm = [], wp = null, _p = null, Tp = null, xy = /* @__PURE__ */ new Map(), by = /* @__PURE__ */ new Map(), yp = [], GT = "mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");
function Nw($, ft) {
  switch ($) {
    case "focusin":
    case "focusout":
      wp = null;
      break;
    case "dragenter":
    case "dragleave":
      _p = null;
      break;
    case "mouseover":
    case "mouseout":
      Tp = null;
      break;
    case "pointerover":
    case "pointerout":
      xy.delete(ft.pointerId);
      break;
    case "gotpointercapture":
    case "lostpointercapture":
      by.delete(ft.pointerId);
  }
}
function Qg($, ft, It, ne, ke, Qe) {
  return $ === null || $.nativeEvent !== Qe ? ($ = { blockedOn: ft, domEventName: It, eventSystemFlags: ne, nativeEvent: Qe, targetContainers: [ke] }, ft !== null && (ft = Fy(ft), ft !== null && N3(ft)), $) : ($.eventSystemFlags |= ne, ft = $.targetContainers, ke !== null && ft.indexOf(ke) === -1 && ft.push(ke), $);
}
function WT($, ft, It, ne, ke) {
  switch (ft) {
    case "focusin":
      return wp = Qg(wp, $, ft, It, ne, ke), !0;
    case "dragenter":
      return _p = Qg(_p, $, ft, It, ne, ke), !0;
    case "mouseover":
      return Tp = Qg(Tp, $, ft, It, ne, ke), !0;
    case "pointerover":
      var Qe = ke.pointerId;
      return xy.set(Qe, Qg(xy.get(Qe) || null, $, ft, It, ne, ke)), !0;
    case "gotpointercapture":
      return Qe = ke.pointerId, by.set(Qe, Qg(by.get(Qe) || null, $, ft, It, ne, ke)), !0;
  }
  return !1;
}
function _5($) {
  var ft = h0($.target);
  if (ft !== null) {
    var It = T0(ft);
    if (It !== null) {
      if (ft = It.tag, ft === 13) {
        if (ft = c5(It), ft !== null) {
          $.blockedOn = ft, w5($.priority, function() {
            x5(It);
          });
          return;
        }
      } else if (ft === 3 && It.stateNode.current.memoizedState.isDehydrated) {
        $.blockedOn = It.tag === 3 ? It.stateNode.containerInfo : null;
        return;
      }
    }
  }
  $.blockedOn = null;
}
function $m($) {
  if ($.blockedOn !== null) return !1;
  for (var ft = $.targetContainers; 0 < ft.length; ) {
    var It = $b($.domEventName, $.eventSystemFlags, ft[0], $.nativeEvent);
    if (It === null) {
      It = $.nativeEvent;
      var ne = new It.constructor(It.type, It);
      Zb = ne, It.target.dispatchEvent(ne), Zb = null;
    } else return ft = Fy(It), ft !== null && N3(ft), $.blockedOn = It, !1;
    ft.shift();
  }
  return !0;
}
function Uw($, ft, It) {
  $m($) && It.delete(ft);
}
function jT() {
  Qb = !1, wp !== null && $m(wp) && (wp = null), _p !== null && $m(_p) && (_p = null), Tp !== null && $m(Tp) && (Tp = null), xy.forEach(Uw), by.forEach(Uw);
}
function $g($, ft) {
  $.blockedOn === ft && ($.blockedOn = null, Qb || (Qb = !0, Qh.unstable_scheduleCallback(Qh.unstable_NormalPriority, jT)));
}
function wy($) {
  function ft(ke) {
    return $g(ke, $);
  }
  if (0 < Nm.length) {
    $g(Nm[0], $);
    for (var It = 1; It < Nm.length; It++) {
      var ne = Nm[It];
      ne.blockedOn === $ && (ne.blockedOn = null);
    }
  }
  for (wp !== null && $g(wp, $), _p !== null && $g(_p, $), Tp !== null && $g(Tp, $), xy.forEach(ft), by.forEach(ft), It = 0; It < yp.length; It++) ne = yp[It], ne.blockedOn === $ && (ne.blockedOn = null);
  for (; 0 < yp.length && (It = yp[0], It.blockedOn === null); ) _5(It), It.blockedOn === null && yp.shift();
}
var lg = Vv.ReactCurrentBatchConfig, d1 = !0;
function ZT($, ft, It, ne) {
  var ke = ks, Qe = lg.transition;
  lg.transition = null;
  try {
    ks = 1, U3($, ft, It, ne);
  } finally {
    ks = ke, lg.transition = Qe;
  }
}
function XT($, ft, It, ne) {
  var ke = ks, Qe = lg.transition;
  lg.transition = null;
  try {
    ks = 4, U3($, ft, It, ne);
  } finally {
    ks = ke, lg.transition = Qe;
  }
}
function U3($, ft, It, ne) {
  if (d1) {
    var ke = $b($, ft, It, ne);
    if (ke === null) _b($, ft, ne, v1, It), Nw($, ne);
    else if (WT(ke, $, ft, It, ne)) ne.stopPropagation();
    else if (Nw($, ne), ft & 4 && -1 < GT.indexOf($)) {
      for (; ke !== null; ) {
        var Qe = Fy(ke);
        if (Qe !== null && m5(Qe), Qe = $b($, ft, It, ne), Qe === null && _b($, ft, ne, v1, It), Qe === ke) break;
        ke = Qe;
      }
      ke !== null && ne.stopPropagation();
    } else _b($, ft, ne, null, It);
  }
}
var v1 = null;
function $b($, ft, It, ne) {
  if (v1 = null, $ = F3(ne), $ = h0($), $ !== null) if (ft = T0($), ft === null) $ = null;
  else if (It = ft.tag, It === 13) {
    if ($ = c5(ft), $ !== null) return $;
    $ = null;
  } else if (It === 3) {
    if (ft.stateNode.current.memoizedState.isDehydrated) return ft.tag === 3 ? ft.stateNode.containerInfo : null;
    $ = null;
  } else ft !== $ && ($ = null);
  return v1 = $, null;
}
function T5($) {
  switch ($) {
    case "cancel":
    case "click":
    case "close":
    case "contextmenu":
    case "copy":
    case "cut":
    case "auxclick":
    case "dblclick":
    case "dragend":
    case "dragstart":
    case "drop":
    case "focusin":
    case "focusout":
    case "input":
    case "invalid":
    case "keydown":
    case "keypress":
    case "keyup":
    case "mousedown":
    case "mouseup":
    case "paste":
    case "pause":
    case "play":
    case "pointercancel":
    case "pointerdown":
    case "pointerup":
    case "ratechange":
    case "reset":
    case "resize":
    case "seeked":
    case "submit":
    case "touchcancel":
    case "touchend":
    case "touchstart":
    case "volumechange":
    case "change":
    case "selectionchange":
    case "textInput":
    case "compositionstart":
    case "compositionend":
    case "compositionupdate":
    case "beforeblur":
    case "afterblur":
    case "beforeinput":
    case "blur":
    case "fullscreenchange":
    case "focus":
    case "hashchange":
    case "popstate":
    case "select":
    case "selectstart":
      return 1;
    case "drag":
    case "dragenter":
    case "dragexit":
    case "dragleave":
    case "dragover":
    case "mousemove":
    case "mouseout":
    case "mouseover":
    case "pointermove":
    case "pointerout":
    case "pointerover":
    case "scroll":
    case "toggle":
    case "touchmove":
    case "wheel":
    case "mouseenter":
    case "mouseleave":
    case "pointerenter":
    case "pointerleave":
      return 4;
    case "message":
      switch (kT()) {
        case O3:
          return 1;
        case v5:
          return 4;
        case f1:
        case zT:
          return 16;
        case p5:
          return 536870912;
        default:
          return 16;
      }
    default:
      return 16;
  }
}
var xp = null, V3 = null, qm = null;
function A5() {
  if (qm) return qm;
  var $, ft = V3, It = ft.length, ne, ke = "value" in xp ? xp.value : xp.textContent, Qe = ke.length;
  for ($ = 0; $ < It && ft[$] === ke[$]; $++) ;
  var Y = It - $;
  for (ne = 1; ne <= Y && ft[It - ne] === ke[Qe - ne]; ne++) ;
  return qm = ke.slice($, 1 < ne ? 1 - ne : void 0);
}
function t1($) {
  var ft = $.keyCode;
  return "charCode" in $ ? ($ = $.charCode, $ === 0 && ft === 13 && ($ = 13)) : $ = ft, $ === 10 && ($ = 13), 32 <= $ || $ === 13 ? $ : 0;
}
function Um() {
  return !0;
}
function Vw() {
  return !1;
}
function qh($) {
  function ft(It, ne, ke, Qe, Y) {
    this._reactName = It, this._targetInst = ke, this.type = ne, this.nativeEvent = Qe, this.target = Y, this.currentTarget = null;
    for (var K in $) $.hasOwnProperty(K) && (It = $[K], this[K] = It ? It(Qe) : Qe[K]);
    return this.isDefaultPrevented = (Qe.defaultPrevented != null ? Qe.defaultPrevented : Qe.returnValue === !1) ? Um : Vw, this.isPropagationStopped = Vw, this;
  }
  return Fl(ft.prototype, { preventDefault: function() {
    this.defaultPrevented = !0;
    var It = this.nativeEvent;
    It && (It.preventDefault ? It.preventDefault() : typeof It.returnValue != "unknown" && (It.returnValue = !1), this.isDefaultPrevented = Um);
  }, stopPropagation: function() {
    var It = this.nativeEvent;
    It && (It.stopPropagation ? It.stopPropagation() : typeof It.cancelBubble != "unknown" && (It.cancelBubble = !0), this.isPropagationStopped = Um);
  }, persist: function() {
  }, isPersistent: Um }), ft;
}
var xg = { eventPhase: 0, bubbles: 0, cancelable: 0, timeStamp: function($) {
  return $.timeStamp || Date.now();
}, defaultPrevented: 0, isTrusted: 0 }, H3 = qh(xg), zy = Fl({}, xg, { view: 0, detail: 0 }), YT = qh(zy), db, vb, qg, D1 = Fl({}, zy, { screenX: 0, screenY: 0, clientX: 0, clientY: 0, pageX: 0, pageY: 0, ctrlKey: 0, shiftKey: 0, altKey: 0, metaKey: 0, getModifierState: G3, button: 0, buttons: 0, relatedTarget: function($) {
  return $.relatedTarget === void 0 ? $.fromElement === $.srcElement ? $.toElement : $.fromElement : $.relatedTarget;
}, movementX: function($) {
  return "movementX" in $ ? $.movementX : ($ !== qg && (qg && $.type === "mousemove" ? (db = $.screenX - qg.screenX, vb = $.screenY - qg.screenY) : vb = db = 0, qg = $), db);
}, movementY: function($) {
  return "movementY" in $ ? $.movementY : vb;
} }), Hw = qh(D1), KT = Fl({}, D1, { dataTransfer: 0 }), JT = qh(KT), QT = Fl({}, zy, { relatedTarget: 0 }), pb = qh(QT), $T = Fl({}, xg, { animationName: 0, elapsedTime: 0, pseudoElement: 0 }), qT = qh($T), t4 = Fl({}, xg, { clipboardData: function($) {
  return "clipboardData" in $ ? $.clipboardData : window.clipboardData;
} }), e4 = qh(t4), r4 = Fl({}, xg, { data: 0 }), Gw = qh(r4), n4 = {
  Esc: "Escape",
  Spacebar: " ",
  Left: "ArrowLeft",
  Up: "ArrowUp",
  Right: "ArrowRight",
  Down: "ArrowDown",
  Del: "Delete",
  Win: "OS",
  Menu: "ContextMenu",
  Apps: "ContextMenu",
  Scroll: "ScrollLock",
  MozPrintableKey: "Unidentified"
}, i4 = {
  8: "Backspace",
  9: "Tab",
  12: "Clear",
  13: "Enter",
  16: "Shift",
  17: "Control",
  18: "Alt",
  19: "Pause",
  20: "CapsLock",
  27: "Escape",
  32: " ",
  33: "PageUp",
  34: "PageDown",
  35: "End",
  36: "Home",
  37: "ArrowLeft",
  38: "ArrowUp",
  39: "ArrowRight",
  40: "ArrowDown",
  45: "Insert",
  46: "Delete",
  112: "F1",
  113: "F2",
  114: "F3",
  115: "F4",
  116: "F5",
  117: "F6",
  118: "F7",
  119: "F8",
  120: "F9",
  121: "F10",
  122: "F11",
  123: "F12",
  144: "NumLock",
  145: "ScrollLock",
  224: "Meta"
}, a4 = { Alt: "altKey", Control: "ctrlKey", Meta: "metaKey", Shift: "shiftKey" };
function o4($) {
  var ft = this.nativeEvent;
  return ft.getModifierState ? ft.getModifierState($) : ($ = a4[$]) ? !!ft[$] : !1;
}
function G3() {
  return o4;
}
var s4 = Fl({}, zy, { key: function($) {
  if ($.key) {
    var ft = n4[$.key] || $.key;
    if (ft !== "Unidentified") return ft;
  }
  return $.type === "keypress" ? ($ = t1($), $ === 13 ? "Enter" : String.fromCharCode($)) : $.type === "keydown" || $.type === "keyup" ? i4[$.keyCode] || "Unidentified" : "";
}, code: 0, location: 0, ctrlKey: 0, shiftKey: 0, altKey: 0, metaKey: 0, repeat: 0, locale: 0, getModifierState: G3, charCode: function($) {
  return $.type === "keypress" ? t1($) : 0;
}, keyCode: function($) {
  return $.type === "keydown" || $.type === "keyup" ? $.keyCode : 0;
}, which: function($) {
  return $.type === "keypress" ? t1($) : $.type === "keydown" || $.type === "keyup" ? $.keyCode : 0;
} }), l4 = qh(s4), u4 = Fl({}, D1, { pointerId: 0, width: 0, height: 0, pressure: 0, tangentialPressure: 0, tiltX: 0, tiltY: 0, twist: 0, pointerType: 0, isPrimary: 0 }), Ww = qh(u4), c4 = Fl({}, zy, { touches: 0, targetTouches: 0, changedTouches: 0, altKey: 0, metaKey: 0, ctrlKey: 0, shiftKey: 0, getModifierState: G3 }), f4 = qh(c4), h4 = Fl({}, xg, { propertyName: 0, elapsedTime: 0, pseudoElement: 0 }), d4 = qh(h4), v4 = Fl({}, D1, {
  deltaX: function($) {
    return "deltaX" in $ ? $.deltaX : "wheelDeltaX" in $ ? -$.wheelDeltaX : 0;
  },
  deltaY: function($) {
    return "deltaY" in $ ? $.deltaY : "wheelDeltaY" in $ ? -$.wheelDeltaY : "wheelDelta" in $ ? -$.wheelDelta : 0;
  },
  deltaZ: 0,
  deltaMode: 0
}), p4 = qh(v4), g4 = [9, 13, 27, 32], W3 = Ov && "CompositionEvent" in window, uy = null;
Ov && "documentMode" in document && (uy = document.documentMode);
var y4 = Ov && "TextEvent" in window && !uy, S5 = Ov && (!W3 || uy && 8 < uy && 11 >= uy), jw = " ", Zw = !1;
function M5($, ft) {
  switch ($) {
    case "keyup":
      return g4.indexOf(ft.keyCode) !== -1;
    case "keydown":
      return ft.keyCode !== 229;
    case "keypress":
    case "mousedown":
    case "focusout":
      return !0;
    default:
      return !1;
  }
}
function E5($) {
  return $ = $.detail, typeof $ == "object" && "data" in $ ? $.data : null;
}
var K0 = !1;
function m4($, ft) {
  switch ($) {
    case "compositionend":
      return E5(ft);
    case "keypress":
      return ft.which !== 32 ? null : (Zw = !0, jw);
    case "textInput":
      return $ = ft.data, $ === jw && Zw ? null : $;
    default:
      return null;
  }
}
function x4($, ft) {
  if (K0) return $ === "compositionend" || !W3 && M5($, ft) ? ($ = A5(), qm = V3 = xp = null, K0 = !1, $) : null;
  switch ($) {
    case "paste":
      return null;
    case "keypress":
      if (!(ft.ctrlKey || ft.altKey || ft.metaKey) || ft.ctrlKey && ft.altKey) {
        if (ft.char && 1 < ft.char.length) return ft.char;
        if (ft.which) return String.fromCharCode(ft.which);
      }
      return null;
    case "compositionend":
      return S5 && ft.locale !== "ko" ? null : ft.data;
    default:
      return null;
  }
}
var b4 = { color: !0, date: !0, datetime: !0, "datetime-local": !0, email: !0, month: !0, number: !0, password: !0, range: !0, search: !0, tel: !0, text: !0, time: !0, url: !0, week: !0 };
function Xw($) {
  var ft = $ && $.nodeName && $.nodeName.toLowerCase();
  return ft === "input" ? !!b4[$.type] : ft === "textarea";
}
function C5($, ft, It, ne) {
  a5(ne), ft = p1(ft, "onChange"), 0 < ft.length && (It = new H3("onChange", "change", null, It, ne), $.push({ event: It, listeners: ft }));
}
var cy = null, _y = null;
function w4($) {
  N5($, 0);
}
function k1($) {
  var ft = $0($);
  if ($2(ft)) return $;
}
function _4($, ft) {
  if ($ === "change") return ft;
}
var L5 = !1;
if (Ov) {
  var gb;
  if (Ov) {
    var yb = "oninput" in document;
    if (!yb) {
      var Yw = document.createElement("div");
      Yw.setAttribute("oninput", "return;"), yb = typeof Yw.oninput == "function";
    }
    gb = yb;
  } else gb = !1;
  L5 = gb && (!document.documentMode || 9 < document.documentMode);
}
function Kw() {
  cy && (cy.detachEvent("onpropertychange", P5), _y = cy = null);
}
function P5($) {
  if ($.propertyName === "value" && k1(_y)) {
    var ft = [];
    C5(ft, _y, $, F3($)), u5(w4, ft);
  }
}
function T4($, ft, It) {
  $ === "focusin" ? (Kw(), cy = ft, _y = It, cy.attachEvent("onpropertychange", P5)) : $ === "focusout" && Kw();
}
function A4($) {
  if ($ === "selectionchange" || $ === "keyup" || $ === "keydown") return k1(_y);
}
function S4($, ft) {
  if ($ === "click") return k1(ft);
}
function M4($, ft) {
  if ($ === "input" || $ === "change") return k1(ft);
}
function E4($, ft) {
  return $ === ft && ($ !== 0 || 1 / $ === 1 / ft) || $ !== $ && ft !== ft;
}
var tv = typeof Object.is == "function" ? Object.is : E4;
function Ty($, ft) {
  if (tv($, ft)) return !0;
  if (typeof $ != "object" || $ === null || typeof ft != "object" || ft === null) return !1;
  var It = Object.keys($), ne = Object.keys(ft);
  if (It.length !== ne.length) return !1;
  for (ne = 0; ne < It.length; ne++) {
    var ke = It[ne];
    if (!kb.call(ft, ke) || !tv($[ke], ft[ke])) return !1;
  }
  return !0;
}
function Jw($) {
  for (; $ && $.firstChild; ) $ = $.firstChild;
  return $;
}
function Qw($, ft) {
  var It = Jw($);
  $ = 0;
  for (var ne; It; ) {
    if (It.nodeType === 3) {
      if (ne = $ + It.textContent.length, $ <= ft && ne >= ft) return { node: It, offset: ft - $ };
      $ = ne;
    }
    t: {
      for (; It; ) {
        if (It.nextSibling) {
          It = It.nextSibling;
          break t;
        }
        It = It.parentNode;
      }
      It = void 0;
    }
    It = Jw(It);
  }
}
function I5($, ft) {
  return $ && ft ? $ === ft ? !0 : $ && $.nodeType === 3 ? !1 : ft && ft.nodeType === 3 ? I5($, ft.parentNode) : "contains" in $ ? $.contains(ft) : $.compareDocumentPosition ? !!($.compareDocumentPosition(ft) & 16) : !1 : !1;
}
function R5() {
  for (var $ = window, ft = l1(); ft instanceof $.HTMLIFrameElement; ) {
    try {
      var It = typeof ft.contentWindow.location.href == "string";
    } catch {
      It = !1;
    }
    if (It) $ = ft.contentWindow;
    else break;
    ft = l1($.document);
  }
  return ft;
}
function j3($) {
  var ft = $ && $.nodeName && $.nodeName.toLowerCase();
  return ft && (ft === "input" && ($.type === "text" || $.type === "search" || $.type === "tel" || $.type === "url" || $.type === "password") || ft === "textarea" || $.contentEditable === "true");
}
function C4($) {
  var ft = R5(), It = $.focusedElem, ne = $.selectionRange;
  if (ft !== It && It && It.ownerDocument && I5(It.ownerDocument.documentElement, It)) {
    if (ne !== null && j3(It)) {
      if (ft = ne.start, $ = ne.end, $ === void 0 && ($ = ft), "selectionStart" in It) It.selectionStart = ft, It.selectionEnd = Math.min($, It.value.length);
      else if ($ = (ft = It.ownerDocument || document) && ft.defaultView || window, $.getSelection) {
        $ = $.getSelection();
        var ke = It.textContent.length, Qe = Math.min(ne.start, ke);
        ne = ne.end === void 0 ? Qe : Math.min(ne.end, ke), !$.extend && Qe > ne && (ke = ne, ne = Qe, Qe = ke), ke = Qw(It, Qe);
        var Y = Qw(
          It,
          ne
        );
        ke && Y && ($.rangeCount !== 1 || $.anchorNode !== ke.node || $.anchorOffset !== ke.offset || $.focusNode !== Y.node || $.focusOffset !== Y.offset) && (ft = ft.createRange(), ft.setStart(ke.node, ke.offset), $.removeAllRanges(), Qe > ne ? ($.addRange(ft), $.extend(Y.node, Y.offset)) : (ft.setEnd(Y.node, Y.offset), $.addRange(ft)));
      }
    }
    for (ft = [], $ = It; $ = $.parentNode; ) $.nodeType === 1 && ft.push({ element: $, left: $.scrollLeft, top: $.scrollTop });
    for (typeof It.focus == "function" && It.focus(), It = 0; It < ft.length; It++) $ = ft[It], $.element.scrollLeft = $.left, $.element.scrollTop = $.top;
  }
}
var L4 = Ov && "documentMode" in document && 11 >= document.documentMode, J0 = null, qb = null, fy = null, t3 = !1;
function $w($, ft, It) {
  var ne = It.window === It ? It.document : It.nodeType === 9 ? It : It.ownerDocument;
  t3 || J0 == null || J0 !== l1(ne) || (ne = J0, "selectionStart" in ne && j3(ne) ? ne = { start: ne.selectionStart, end: ne.selectionEnd } : (ne = (ne.ownerDocument && ne.ownerDocument.defaultView || window).getSelection(), ne = { anchorNode: ne.anchorNode, anchorOffset: ne.anchorOffset, focusNode: ne.focusNode, focusOffset: ne.focusOffset }), fy && Ty(fy, ne) || (fy = ne, ne = p1(qb, "onSelect"), 0 < ne.length && (ft = new H3("onSelect", "select", null, ft, It), $.push({ event: ft, listeners: ne }), ft.target = J0)));
}
function Vm($, ft) {
  var It = {};
  return It[$.toLowerCase()] = ft.toLowerCase(), It["Webkit" + $] = "webkit" + ft, It["Moz" + $] = "moz" + ft, It;
}
var Q0 = { animationend: Vm("Animation", "AnimationEnd"), animationiteration: Vm("Animation", "AnimationIteration"), animationstart: Vm("Animation", "AnimationStart"), transitionend: Vm("Transition", "TransitionEnd") }, mb = {}, D5 = {};
Ov && (D5 = document.createElement("div").style, "AnimationEvent" in window || (delete Q0.animationend.animation, delete Q0.animationiteration.animation, delete Q0.animationstart.animation), "TransitionEvent" in window || delete Q0.transitionend.transition);
function z1($) {
  if (mb[$]) return mb[$];
  if (!Q0[$]) return $;
  var ft = Q0[$], It;
  for (It in ft) if (ft.hasOwnProperty(It) && It in D5) return mb[$] = ft[It];
  return $;
}
var k5 = z1("animationend"), z5 = z1("animationiteration"), F5 = z1("animationstart"), O5 = z1("transitionend"), B5 = /* @__PURE__ */ new Map(), qw = "abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");
function Ip($, ft) {
  B5.set($, ft), _0(ft, [$]);
}
for (var xb = 0; xb < qw.length; xb++) {
  var bb = qw[xb], P4 = bb.toLowerCase(), I4 = bb[0].toUpperCase() + bb.slice(1);
  Ip(P4, "on" + I4);
}
Ip(k5, "onAnimationEnd");
Ip(z5, "onAnimationIteration");
Ip(F5, "onAnimationStart");
Ip("dblclick", "onDoubleClick");
Ip("focusin", "onFocus");
Ip("focusout", "onBlur");
Ip(O5, "onTransitionEnd");
fg("onMouseEnter", ["mouseout", "mouseover"]);
fg("onMouseLeave", ["mouseout", "mouseover"]);
fg("onPointerEnter", ["pointerout", "pointerover"]);
fg("onPointerLeave", ["pointerout", "pointerover"]);
_0("onChange", "change click focusin focusout input keydown keyup selectionchange".split(" "));
_0("onSelect", "focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" "));
_0("onBeforeInput", ["compositionend", "keypress", "textInput", "paste"]);
_0("onCompositionEnd", "compositionend focusout keydown keypress keyup mousedown".split(" "));
_0("onCompositionStart", "compositionstart focusout keydown keypress keyup mousedown".split(" "));
_0("onCompositionUpdate", "compositionupdate focusout keydown keypress keyup mousedown".split(" "));
var oy = "abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "), R4 = new Set("cancel close invalid load scroll toggle".split(" ").concat(oy));
function t2($, ft, It) {
  var ne = $.type || "unknown-event";
  $.currentTarget = It, PT(ne, ft, void 0, $), $.currentTarget = null;
}
function N5($, ft) {
  ft = (ft & 4) !== 0;
  for (var It = 0; It < $.length; It++) {
    var ne = $[It], ke = ne.event;
    ne = ne.listeners;
    t: {
      var Qe = void 0;
      if (ft) for (var Y = ne.length - 1; 0 <= Y; Y--) {
        var K = ne[Y], e = K.instance, b = K.currentTarget;
        if (K = K.listener, e !== Qe && ke.isPropagationStopped()) break t;
        t2(ke, K, b), Qe = e;
      }
      else for (Y = 0; Y < ne.length; Y++) {
        if (K = ne[Y], e = K.instance, b = K.currentTarget, K = K.listener, e !== Qe && ke.isPropagationStopped()) break t;
        t2(ke, K, b), Qe = e;
      }
    }
  }
  if (c1) throw $ = Kb, c1 = !1, Kb = null, $;
}
function vl($, ft) {
  var It = ft[a3];
  It === void 0 && (It = ft[a3] = /* @__PURE__ */ new Set());
  var ne = $ + "__bubble";
  It.has(ne) || (U5(ft, $, 2, !1), It.add(ne));
}
function wb($, ft, It) {
  var ne = 0;
  ft && (ne |= 4), U5(It, $, ne, ft);
}
var Hm = "_reactListening" + Math.random().toString(36).slice(2);
function Ay($) {
  if (!$[Hm]) {
    $[Hm] = !0, X2.forEach(function(It) {
      It !== "selectionchange" && (R4.has(It) || wb(It, !1, $), wb(It, !0, $));
    });
    var ft = $.nodeType === 9 ? $ : $.ownerDocument;
    ft === null || ft[Hm] || (ft[Hm] = !0, wb("selectionchange", !1, ft));
  }
}
function U5($, ft, It, ne) {
  switch (T5(ft)) {
    case 1:
      var ke = ZT;
      break;
    case 4:
      ke = XT;
      break;
    default:
      ke = U3;
  }
  It = ke.bind(null, ft, It, $), ke = void 0, !Yb || ft !== "touchstart" && ft !== "touchmove" && ft !== "wheel" || (ke = !0), ne ? ke !== void 0 ? $.addEventListener(ft, It, { capture: !0, passive: ke }) : $.addEventListener(ft, It, !0) : ke !== void 0 ? $.addEventListener(ft, It, { passive: ke }) : $.addEventListener(ft, It, !1);
}
function _b($, ft, It, ne, ke) {
  var Qe = ne;
  if (!(ft & 1) && !(ft & 2) && ne !== null) t: for (; ; ) {
    if (ne === null) return;
    var Y = ne.tag;
    if (Y === 3 || Y === 4) {
      var K = ne.stateNode.containerInfo;
      if (K === ke || K.nodeType === 8 && K.parentNode === ke) break;
      if (Y === 4) for (Y = ne.return; Y !== null; ) {
        var e = Y.tag;
        if ((e === 3 || e === 4) && (e = Y.stateNode.containerInfo, e === ke || e.nodeType === 8 && e.parentNode === ke)) return;
        Y = Y.return;
      }
      for (; K !== null; ) {
        if (Y = h0(K), Y === null) return;
        if (e = Y.tag, e === 5 || e === 6) {
          ne = Qe = Y;
          continue t;
        }
        K = K.parentNode;
      }
    }
    ne = ne.return;
  }
  u5(function() {
    var b = Qe, P = F3(It), n = [];
    t: {
      var s = B5.get($);
      if (s !== void 0) {
        var T = H3, A = $;
        switch ($) {
          case "keypress":
            if (t1(It) === 0) break t;
          case "keydown":
          case "keyup":
            T = l4;
            break;
          case "focusin":
            A = "focus", T = pb;
            break;
          case "focusout":
            A = "blur", T = pb;
            break;
          case "beforeblur":
          case "afterblur":
            T = pb;
            break;
          case "click":
            if (It.button === 2) break t;
          case "auxclick":
          case "dblclick":
          case "mousedown":
          case "mousemove":
          case "mouseup":
          case "mouseout":
          case "mouseover":
          case "contextmenu":
            T = Hw;
            break;
          case "drag":
          case "dragend":
          case "dragenter":
          case "dragexit":
          case "dragleave":
          case "dragover":
          case "dragstart":
          case "drop":
            T = JT;
            break;
          case "touchcancel":
          case "touchend":
          case "touchmove":
          case "touchstart":
            T = f4;
            break;
          case k5:
          case z5:
          case F5:
            T = qT;
            break;
          case O5:
            T = d4;
            break;
          case "scroll":
            T = YT;
            break;
          case "wheel":
            T = p4;
            break;
          case "copy":
          case "cut":
          case "paste":
            T = e4;
            break;
          case "gotpointercapture":
          case "lostpointercapture":
          case "pointercancel":
          case "pointerdown":
          case "pointermove":
          case "pointerout":
          case "pointerover":
          case "pointerup":
            T = Ww;
        }
        var p = (ft & 4) !== 0, u = !p && $ === "scroll", t = p ? s !== null ? s + "Capture" : null : s;
        p = [];
        for (var r = b, i; r !== null; ) {
          i = r;
          var a = i.stateNode;
          if (i.tag === 5 && a !== null && (i = a, t !== null && (a = my(r, t), a != null && p.push(Sy(r, a, i)))), u) break;
          r = r.return;
        }
        0 < p.length && (s = new T(s, A, null, It, P), n.push({ event: s, listeners: p }));
      }
    }
    if (!(ft & 7)) {
      t: {
        if (s = $ === "mouseover" || $ === "pointerover", T = $ === "mouseout" || $ === "pointerout", s && It !== Zb && (A = It.relatedTarget || It.fromElement) && (h0(A) || A[Bv])) break t;
        if ((T || s) && (s = P.window === P ? P : (s = P.ownerDocument) ? s.defaultView || s.parentWindow : window, T ? (A = It.relatedTarget || It.toElement, T = b, A = A ? h0(A) : null, A !== null && (u = T0(A), A !== u || A.tag !== 5 && A.tag !== 6) && (A = null)) : (T = null, A = b), T !== A)) {
          if (p = Hw, a = "onMouseLeave", t = "onMouseEnter", r = "mouse", ($ === "pointerout" || $ === "pointerover") && (p = Ww, a = "onPointerLeave", t = "onPointerEnter", r = "pointer"), u = T == null ? s : $0(T), i = A == null ? s : $0(A), s = new p(a, r + "leave", T, It, P), s.target = u, s.relatedTarget = i, a = null, h0(P) === b && (p = new p(t, r + "enter", A, It, P), p.target = i, p.relatedTarget = u, a = p), u = a, T && A) e: {
            for (p = T, t = A, r = 0, i = p; i; i = Z0(i)) r++;
            for (i = 0, a = t; a; a = Z0(a)) i++;
            for (; 0 < r - i; ) p = Z0(p), r--;
            for (; 0 < i - r; ) t = Z0(t), i--;
            for (; r--; ) {
              if (p === t || t !== null && p === t.alternate) break e;
              p = Z0(p), t = Z0(t);
            }
            p = null;
          }
          else p = null;
          T !== null && e2(n, s, T, p, !1), A !== null && u !== null && e2(n, u, A, p, !0);
        }
      }
      t: {
        if (s = b ? $0(b) : window, T = s.nodeName && s.nodeName.toLowerCase(), T === "select" || T === "input" && s.type === "file") var l = _4;
        else if (Xw(s)) if (L5) l = M4;
        else {
          l = A4;
          var o = T4;
        }
        else (T = s.nodeName) && T.toLowerCase() === "input" && (s.type === "checkbox" || s.type === "radio") && (l = S4);
        if (l && (l = l($, b))) {
          C5(n, l, It, P);
          break t;
        }
        o && o($, s, b), $ === "focusout" && (o = s._wrapperState) && o.controlled && s.type === "number" && Vb(s, "number", s.value);
      }
      switch (o = b ? $0(b) : window, $) {
        case "focusin":
          (Xw(o) || o.contentEditable === "true") && (J0 = o, qb = b, fy = null);
          break;
        case "focusout":
          fy = qb = J0 = null;
          break;
        case "mousedown":
          t3 = !0;
          break;
        case "contextmenu":
        case "mouseup":
        case "dragend":
          t3 = !1, $w(n, It, P);
          break;
        case "selectionchange":
          if (L4) break;
        case "keydown":
        case "keyup":
          $w(n, It, P);
      }
      var y;
      if (W3) t: {
        switch ($) {
          case "compositionstart":
            var g = "onCompositionStart";
            break t;
          case "compositionend":
            g = "onCompositionEnd";
            break t;
          case "compositionupdate":
            g = "onCompositionUpdate";
            break t;
        }
        g = void 0;
      }
      else K0 ? M5($, It) && (g = "onCompositionEnd") : $ === "keydown" && It.keyCode === 229 && (g = "onCompositionStart");
      g && (S5 && It.locale !== "ko" && (K0 || g !== "onCompositionStart" ? g === "onCompositionEnd" && K0 && (y = A5()) : (xp = P, V3 = "value" in xp ? xp.value : xp.textContent, K0 = !0)), o = p1(b, g), 0 < o.length && (g = new Gw(g, $, null, It, P), n.push({ event: g, listeners: o }), y ? g.data = y : (y = E5(It), y !== null && (g.data = y)))), (y = y4 ? m4($, It) : x4($, It)) && (b = p1(b, "onBeforeInput"), 0 < b.length && (P = new Gw("onBeforeInput", "beforeinput", null, It, P), n.push({ event: P, listeners: b }), P.data = y));
    }
    N5(n, ft);
  });
}
function Sy($, ft, It) {
  return { instance: $, listener: ft, currentTarget: It };
}
function p1($, ft) {
  for (var It = ft + "Capture", ne = []; $ !== null; ) {
    var ke = $, Qe = ke.stateNode;
    ke.tag === 5 && Qe !== null && (ke = Qe, Qe = my($, It), Qe != null && ne.unshift(Sy($, Qe, ke)), Qe = my($, ft), Qe != null && ne.push(Sy($, Qe, ke))), $ = $.return;
  }
  return ne;
}
function Z0($) {
  if ($ === null) return null;
  do
    $ = $.return;
  while ($ && $.tag !== 5);
  return $ || null;
}
function e2($, ft, It, ne, ke) {
  for (var Qe = ft._reactName, Y = []; It !== null && It !== ne; ) {
    var K = It, e = K.alternate, b = K.stateNode;
    if (e !== null && e === ne) break;
    K.tag === 5 && b !== null && (K = b, ke ? (e = my(It, Qe), e != null && Y.unshift(Sy(It, e, K))) : ke || (e = my(It, Qe), e != null && Y.push(Sy(It, e, K)))), It = It.return;
  }
  Y.length !== 0 && $.push({ event: ft, listeners: Y });
}
var D4 = /\r\n?/g, k4 = /\u0000|\uFFFD/g;
function r2($) {
  return (typeof $ == "string" ? $ : "" + $).replace(D4, `
`).replace(k4, "");
}
function Gm($, ft, It) {
  if (ft = r2(ft), r2($) !== ft && It) throw Error(ga(425));
}
function g1() {
}
var e3 = null, r3 = null;
function n3($, ft) {
  return $ === "textarea" || $ === "noscript" || typeof ft.children == "string" || typeof ft.children == "number" || typeof ft.dangerouslySetInnerHTML == "object" && ft.dangerouslySetInnerHTML !== null && ft.dangerouslySetInnerHTML.__html != null;
}
var i3 = typeof setTimeout == "function" ? setTimeout : void 0, z4 = typeof clearTimeout == "function" ? clearTimeout : void 0, n2 = typeof Promise == "function" ? Promise : void 0, F4 = typeof queueMicrotask == "function" ? queueMicrotask : typeof n2 < "u" ? function($) {
  return n2.resolve(null).then($).catch(O4);
} : i3;
function O4($) {
  setTimeout(function() {
    throw $;
  });
}
function Tb($, ft) {
  var It = ft, ne = 0;
  do {
    var ke = It.nextSibling;
    if ($.removeChild(It), ke && ke.nodeType === 8) if (It = ke.data, It === "/$") {
      if (ne === 0) {
        $.removeChild(ke), wy(ft);
        return;
      }
      ne--;
    } else It !== "$" && It !== "$?" && It !== "$!" || ne++;
    It = ke;
  } while (It);
  wy(ft);
}
function Ap($) {
  for (; $ != null; $ = $.nextSibling) {
    var ft = $.nodeType;
    if (ft === 1 || ft === 3) break;
    if (ft === 8) {
      if (ft = $.data, ft === "$" || ft === "$!" || ft === "$?") break;
      if (ft === "/$") return null;
    }
  }
  return $;
}
function i2($) {
  $ = $.previousSibling;
  for (var ft = 0; $; ) {
    if ($.nodeType === 8) {
      var It = $.data;
      if (It === "$" || It === "$!" || It === "$?") {
        if (ft === 0) return $;
        ft--;
      } else It === "/$" && ft++;
    }
    $ = $.previousSibling;
  }
  return null;
}
var bg = Math.random().toString(36).slice(2), dv = "__reactFiber$" + bg, My = "__reactProps$" + bg, Bv = "__reactContainer$" + bg, a3 = "__reactEvents$" + bg, B4 = "__reactListeners$" + bg, N4 = "__reactHandles$" + bg;
function h0($) {
  var ft = $[dv];
  if (ft) return ft;
  for (var It = $.parentNode; It; ) {
    if (ft = It[Bv] || It[dv]) {
      if (It = ft.alternate, ft.child !== null || It !== null && It.child !== null) for ($ = i2($); $ !== null; ) {
        if (It = $[dv]) return It;
        $ = i2($);
      }
      return ft;
    }
    $ = It, It = $.parentNode;
  }
  return null;
}
function Fy($) {
  return $ = $[dv] || $[Bv], !$ || $.tag !== 5 && $.tag !== 6 && $.tag !== 13 && $.tag !== 3 ? null : $;
}
function $0($) {
  if ($.tag === 5 || $.tag === 6) return $.stateNode;
  throw Error(ga(33));
}
function F1($) {
  return $[My] || null;
}
var o3 = [], q0 = -1;
function Rp($) {
  return { current: $ };
}
function pl($) {
  0 > q0 || ($.current = o3[q0], o3[q0] = null, q0--);
}
function nl($, ft) {
  q0++, o3[q0] = $.current, $.current = ft;
}
var Pp = {}, df = Rp(Pp), bh = Rp(!1), y0 = Pp;
function hg($, ft) {
  var It = $.type.contextTypes;
  if (!It) return Pp;
  var ne = $.stateNode;
  if (ne && ne.__reactInternalMemoizedUnmaskedChildContext === ft) return ne.__reactInternalMemoizedMaskedChildContext;
  var ke = {}, Qe;
  for (Qe in It) ke[Qe] = ft[Qe];
  return ne && ($ = $.stateNode, $.__reactInternalMemoizedUnmaskedChildContext = ft, $.__reactInternalMemoizedMaskedChildContext = ke), ke;
}
function wh($) {
  return $ = $.childContextTypes, $ != null;
}
function y1() {
  pl(bh), pl(df);
}
function a2($, ft, It) {
  if (df.current !== Pp) throw Error(ga(168));
  nl(df, ft), nl(bh, It);
}
function V5($, ft, It) {
  var ne = $.stateNode;
  if (ft = ft.childContextTypes, typeof ne.getChildContext != "function") return It;
  ne = ne.getChildContext();
  for (var ke in ne) if (!(ke in ft)) throw Error(ga(108, TT($) || "Unknown", ke));
  return Fl({}, It, ne);
}
function m1($) {
  return $ = ($ = $.stateNode) && $.__reactInternalMemoizedMergedChildContext || Pp, y0 = df.current, nl(df, $), nl(bh, bh.current), !0;
}
function o2($, ft, It) {
  var ne = $.stateNode;
  if (!ne) throw Error(ga(169));
  It ? ($ = V5($, ft, y0), ne.__reactInternalMemoizedMergedChildContext = $, pl(bh), pl(df), nl(df, $)) : pl(bh), nl(bh, It);
}
var Dv = null, O1 = !1, Ab = !1;
function H5($) {
  Dv === null ? Dv = [$] : Dv.push($);
}
function U4($) {
  O1 = !0, H5($);
}
function Dp() {
  if (!Ab && Dv !== null) {
    Ab = !0;
    var $ = 0, ft = ks;
    try {
      var It = Dv;
      for (ks = 1; $ < It.length; $++) {
        var ne = It[$];
        do
          ne = ne(!0);
        while (ne !== null);
      }
      Dv = null, O1 = !1;
    } catch (ke) {
      throw Dv !== null && (Dv = Dv.slice($ + 1)), d5(O3, Dp), ke;
    } finally {
      ks = ft, Ab = !1;
    }
  }
  return null;
}
var tg = [], eg = 0, x1 = null, b1 = 0, Ad = [], Sd = 0, m0 = null, kv = 1, zv = "";
function c0($, ft) {
  tg[eg++] = b1, tg[eg++] = x1, x1 = $, b1 = ft;
}
function G5($, ft, It) {
  Ad[Sd++] = kv, Ad[Sd++] = zv, Ad[Sd++] = m0, m0 = $;
  var ne = kv;
  $ = zv;
  var ke = 32 - $d(ne) - 1;
  ne &= ~(1 << ke), It += 1;
  var Qe = 32 - $d(ft) + ke;
  if (30 < Qe) {
    var Y = ke - ke % 5;
    Qe = (ne & (1 << Y) - 1).toString(32), ne >>= Y, ke -= Y, kv = 1 << 32 - $d(ft) + ke | It << ke | ne, zv = Qe + $;
  } else kv = 1 << Qe | It << ke | ne, zv = $;
}
function Z3($) {
  $.return !== null && (c0($, 1), G5($, 1, 0));
}
function X3($) {
  for (; $ === x1; ) x1 = tg[--eg], tg[eg] = null, b1 = tg[--eg], tg[eg] = null;
  for (; $ === m0; ) m0 = Ad[--Sd], Ad[Sd] = null, zv = Ad[--Sd], Ad[Sd] = null, kv = Ad[--Sd], Ad[Sd] = null;
}
var Jh = null, Kh = null, bl = !1, Qd = null;
function W5($, ft) {
  var It = Md(5, null, null, 0);
  It.elementType = "DELETED", It.stateNode = ft, It.return = $, ft = $.deletions, ft === null ? ($.deletions = [It], $.flags |= 16) : ft.push(It);
}
function s2($, ft) {
  switch ($.tag) {
    case 5:
      var It = $.type;
      return ft = ft.nodeType !== 1 || It.toLowerCase() !== ft.nodeName.toLowerCase() ? null : ft, ft !== null ? ($.stateNode = ft, Jh = $, Kh = Ap(ft.firstChild), !0) : !1;
    case 6:
      return ft = $.pendingProps === "" || ft.nodeType !== 3 ? null : ft, ft !== null ? ($.stateNode = ft, Jh = $, Kh = null, !0) : !1;
    case 13:
      return ft = ft.nodeType !== 8 ? null : ft, ft !== null ? (It = m0 !== null ? { id: kv, overflow: zv } : null, $.memoizedState = { dehydrated: ft, treeContext: It, retryLane: 1073741824 }, It = Md(18, null, null, 0), It.stateNode = ft, It.return = $, $.child = It, Jh = $, Kh = null, !0) : !1;
    default:
      return !1;
  }
}
function s3($) {
  return ($.mode & 1) !== 0 && ($.flags & 128) === 0;
}
function l3($) {
  if (bl) {
    var ft = Kh;
    if (ft) {
      var It = ft;
      if (!s2($, ft)) {
        if (s3($)) throw Error(ga(418));
        ft = Ap(It.nextSibling);
        var ne = Jh;
        ft && s2($, ft) ? W5(ne, It) : ($.flags = $.flags & -4097 | 2, bl = !1, Jh = $);
      }
    } else {
      if (s3($)) throw Error(ga(418));
      $.flags = $.flags & -4097 | 2, bl = !1, Jh = $;
    }
  }
}
function l2($) {
  for ($ = $.return; $ !== null && $.tag !== 5 && $.tag !== 3 && $.tag !== 13; ) $ = $.return;
  Jh = $;
}
function Wm($) {
  if ($ !== Jh) return !1;
  if (!bl) return l2($), bl = !0, !1;
  var ft;
  if ((ft = $.tag !== 3) && !(ft = $.tag !== 5) && (ft = $.type, ft = ft !== "head" && ft !== "body" && !n3($.type, $.memoizedProps)), ft && (ft = Kh)) {
    if (s3($)) throw j5(), Error(ga(418));
    for (; ft; ) W5($, ft), ft = Ap(ft.nextSibling);
  }
  if (l2($), $.tag === 13) {
    if ($ = $.memoizedState, $ = $ !== null ? $.dehydrated : null, !$) throw Error(ga(317));
    t: {
      for ($ = $.nextSibling, ft = 0; $; ) {
        if ($.nodeType === 8) {
          var It = $.data;
          if (It === "/$") {
            if (ft === 0) {
              Kh = Ap($.nextSibling);
              break t;
            }
            ft--;
          } else It !== "$" && It !== "$!" && It !== "$?" || ft++;
        }
        $ = $.nextSibling;
      }
      Kh = null;
    }
  } else Kh = Jh ? Ap($.stateNode.nextSibling) : null;
  return !0;
}
function j5() {
  for (var $ = Kh; $; ) $ = Ap($.nextSibling);
}
function dg() {
  Kh = Jh = null, bl = !1;
}
function Y3($) {
  Qd === null ? Qd = [$] : Qd.push($);
}
var V4 = Vv.ReactCurrentBatchConfig;
function ty($, ft, It) {
  if ($ = It.ref, $ !== null && typeof $ != "function" && typeof $ != "object") {
    if (It._owner) {
      if (It = It._owner, It) {
        if (It.tag !== 1) throw Error(ga(309));
        var ne = It.stateNode;
      }
      if (!ne) throw Error(ga(147, $));
      var ke = ne, Qe = "" + $;
      return ft !== null && ft.ref !== null && typeof ft.ref == "function" && ft.ref._stringRef === Qe ? ft.ref : (ft = function(Y) {
        var K = ke.refs;
        Y === null ? delete K[Qe] : K[Qe] = Y;
      }, ft._stringRef = Qe, ft);
    }
    if (typeof $ != "string") throw Error(ga(284));
    if (!It._owner) throw Error(ga(290, $));
  }
  return $;
}
function jm($, ft) {
  throw $ = Object.prototype.toString.call(ft), Error(ga(31, $ === "[object Object]" ? "object with keys {" + Object.keys(ft).join(", ") + "}" : $));
}
function u2($) {
  var ft = $._init;
  return ft($._payload);
}
function Z5($) {
  function ft(t, r) {
    if ($) {
      var i = t.deletions;
      i === null ? (t.deletions = [r], t.flags |= 16) : i.push(r);
    }
  }
  function It(t, r) {
    if (!$) return null;
    for (; r !== null; ) ft(t, r), r = r.sibling;
    return null;
  }
  function ne(t, r) {
    for (t = /* @__PURE__ */ new Map(); r !== null; ) r.key !== null ? t.set(r.key, r) : t.set(r.index, r), r = r.sibling;
    return t;
  }
  function ke(t, r) {
    return t = Cp(t, r), t.index = 0, t.sibling = null, t;
  }
  function Qe(t, r, i) {
    return t.index = i, $ ? (i = t.alternate, i !== null ? (i = i.index, i < r ? (t.flags |= 2, r) : i) : (t.flags |= 2, r)) : (t.flags |= 1048576, r);
  }
  function Y(t) {
    return $ && t.alternate === null && (t.flags |= 2), t;
  }
  function K(t, r, i, a) {
    return r === null || r.tag !== 6 ? (r = Ib(i, t.mode, a), r.return = t, r) : (r = ke(r, i), r.return = t, r);
  }
  function e(t, r, i, a) {
    var l = i.type;
    return l === Y0 ? P(t, r, i.props.children, a, i.key) : r !== null && (r.elementType === l || typeof l == "object" && l !== null && l.$$typeof === pp && u2(l) === r.type) ? (a = ke(r, i.props), a.ref = ty(t, r, i), a.return = t, a) : (a = s1(i.type, i.key, i.props, null, t.mode, a), a.ref = ty(t, r, i), a.return = t, a);
  }
  function b(t, r, i, a) {
    return r === null || r.tag !== 4 || r.stateNode.containerInfo !== i.containerInfo || r.stateNode.implementation !== i.implementation ? (r = Rb(i, t.mode, a), r.return = t, r) : (r = ke(r, i.children || []), r.return = t, r);
  }
  function P(t, r, i, a, l) {
    return r === null || r.tag !== 7 ? (r = g0(i, t.mode, a, l), r.return = t, r) : (r = ke(r, i), r.return = t, r);
  }
  function n(t, r, i) {
    if (typeof r == "string" && r !== "" || typeof r == "number") return r = Ib("" + r, t.mode, i), r.return = t, r;
    if (typeof r == "object" && r !== null) {
      switch (r.$$typeof) {
        case km:
          return i = s1(r.type, r.key, r.props, null, t.mode, i), i.ref = ty(t, null, r), i.return = t, i;
        case X0:
          return r = Rb(r, t.mode, i), r.return = t, r;
        case pp:
          var a = r._init;
          return n(t, a(r._payload), i);
      }
      if (iy(r) || Kg(r)) return r = g0(r, t.mode, i, null), r.return = t, r;
      jm(t, r);
    }
    return null;
  }
  function s(t, r, i, a) {
    var l = r !== null ? r.key : null;
    if (typeof i == "string" && i !== "" || typeof i == "number") return l !== null ? null : K(t, r, "" + i, a);
    if (typeof i == "object" && i !== null) {
      switch (i.$$typeof) {
        case km:
          return i.key === l ? e(t, r, i, a) : null;
        case X0:
          return i.key === l ? b(t, r, i, a) : null;
        case pp:
          return l = i._init, s(
            t,
            r,
            l(i._payload),
            a
          );
      }
      if (iy(i) || Kg(i)) return l !== null ? null : P(t, r, i, a, null);
      jm(t, i);
    }
    return null;
  }
  function T(t, r, i, a, l) {
    if (typeof a == "string" && a !== "" || typeof a == "number") return t = t.get(i) || null, K(r, t, "" + a, l);
    if (typeof a == "object" && a !== null) {
      switch (a.$$typeof) {
        case km:
          return t = t.get(a.key === null ? i : a.key) || null, e(r, t, a, l);
        case X0:
          return t = t.get(a.key === null ? i : a.key) || null, b(r, t, a, l);
        case pp:
          var o = a._init;
          return T(t, r, i, o(a._payload), l);
      }
      if (iy(a) || Kg(a)) return t = t.get(i) || null, P(r, t, a, l, null);
      jm(r, a);
    }
    return null;
  }
  function A(t, r, i, a) {
    for (var l = null, o = null, y = r, g = r = 0, x = null; y !== null && g < i.length; g++) {
      y.index > g ? (x = y, y = null) : x = y.sibling;
      var c = s(t, y, i[g], a);
      if (c === null) {
        y === null && (y = x);
        break;
      }
      $ && y && c.alternate === null && ft(t, y), r = Qe(c, r, g), o === null ? l = c : o.sibling = c, o = c, y = x;
    }
    if (g === i.length) return It(t, y), bl && c0(t, g), l;
    if (y === null) {
      for (; g < i.length; g++) y = n(t, i[g], a), y !== null && (r = Qe(y, r, g), o === null ? l = y : o.sibling = y, o = y);
      return bl && c0(t, g), l;
    }
    for (y = ne(t, y); g < i.length; g++) x = T(y, t, g, i[g], a), x !== null && ($ && x.alternate !== null && y.delete(x.key === null ? g : x.key), r = Qe(x, r, g), o === null ? l = x : o.sibling = x, o = x);
    return $ && y.forEach(function(v) {
      return ft(t, v);
    }), bl && c0(t, g), l;
  }
  function p(t, r, i, a) {
    var l = Kg(i);
    if (typeof l != "function") throw Error(ga(150));
    if (i = l.call(i), i == null) throw Error(ga(151));
    for (var o = l = null, y = r, g = r = 0, x = null, c = i.next(); y !== null && !c.done; g++, c = i.next()) {
      y.index > g ? (x = y, y = null) : x = y.sibling;
      var v = s(t, y, c.value, a);
      if (v === null) {
        y === null && (y = x);
        break;
      }
      $ && y && v.alternate === null && ft(t, y), r = Qe(v, r, g), o === null ? l = v : o.sibling = v, o = v, y = x;
    }
    if (c.done) return It(
      t,
      y
    ), bl && c0(t, g), l;
    if (y === null) {
      for (; !c.done; g++, c = i.next()) c = n(t, c.value, a), c !== null && (r = Qe(c, r, g), o === null ? l = c : o.sibling = c, o = c);
      return bl && c0(t, g), l;
    }
    for (y = ne(t, y); !c.done; g++, c = i.next()) c = T(y, t, g, c.value, a), c !== null && ($ && c.alternate !== null && y.delete(c.key === null ? g : c.key), r = Qe(c, r, g), o === null ? l = c : o.sibling = c, o = c);
    return $ && y.forEach(function(f) {
      return ft(t, f);
    }), bl && c0(t, g), l;
  }
  function u(t, r, i, a) {
    if (typeof i == "object" && i !== null && i.type === Y0 && i.key === null && (i = i.props.children), typeof i == "object" && i !== null) {
      switch (i.$$typeof) {
        case km:
          t: {
            for (var l = i.key, o = r; o !== null; ) {
              if (o.key === l) {
                if (l = i.type, l === Y0) {
                  if (o.tag === 7) {
                    It(t, o.sibling), r = ke(o, i.props.children), r.return = t, t = r;
                    break t;
                  }
                } else if (o.elementType === l || typeof l == "object" && l !== null && l.$$typeof === pp && u2(l) === o.type) {
                  It(t, o.sibling), r = ke(o, i.props), r.ref = ty(t, o, i), r.return = t, t = r;
                  break t;
                }
                It(t, o);
                break;
              } else ft(t, o);
              o = o.sibling;
            }
            i.type === Y0 ? (r = g0(i.props.children, t.mode, a, i.key), r.return = t, t = r) : (a = s1(i.type, i.key, i.props, null, t.mode, a), a.ref = ty(t, r, i), a.return = t, t = a);
          }
          return Y(t);
        case X0:
          t: {
            for (o = i.key; r !== null; ) {
              if (r.key === o) if (r.tag === 4 && r.stateNode.containerInfo === i.containerInfo && r.stateNode.implementation === i.implementation) {
                It(t, r.sibling), r = ke(r, i.children || []), r.return = t, t = r;
                break t;
              } else {
                It(t, r);
                break;
              }
              else ft(t, r);
              r = r.sibling;
            }
            r = Rb(i, t.mode, a), r.return = t, t = r;
          }
          return Y(t);
        case pp:
          return o = i._init, u(t, r, o(i._payload), a);
      }
      if (iy(i)) return A(t, r, i, a);
      if (Kg(i)) return p(t, r, i, a);
      jm(t, i);
    }
    return typeof i == "string" && i !== "" || typeof i == "number" ? (i = "" + i, r !== null && r.tag === 6 ? (It(t, r.sibling), r = ke(r, i), r.return = t, t = r) : (It(t, r), r = Ib(i, t.mode, a), r.return = t, t = r), Y(t)) : It(t, r);
  }
  return u;
}
var vg = Z5(!0), X5 = Z5(!1), w1 = Rp(null), _1 = null, rg = null, K3 = null;
function J3() {
  K3 = rg = _1 = null;
}
function Q3($) {
  var ft = w1.current;
  pl(w1), $._currentValue = ft;
}
function u3($, ft, It) {
  for (; $ !== null; ) {
    var ne = $.alternate;
    if (($.childLanes & ft) !== ft ? ($.childLanes |= ft, ne !== null && (ne.childLanes |= ft)) : ne !== null && (ne.childLanes & ft) !== ft && (ne.childLanes |= ft), $ === It) break;
    $ = $.return;
  }
}
function ug($, ft) {
  _1 = $, K3 = rg = null, $ = $.dependencies, $ !== null && $.firstContext !== null && ($.lanes & ft && (xh = !0), $.firstContext = null);
}
function Cd($) {
  var ft = $._currentValue;
  if (K3 !== $) if ($ = { context: $, memoizedValue: ft, next: null }, rg === null) {
    if (_1 === null) throw Error(ga(308));
    rg = $, _1.dependencies = { lanes: 0, firstContext: $ };
  } else rg = rg.next = $;
  return ft;
}
var d0 = null;
function $3($) {
  d0 === null ? d0 = [$] : d0.push($);
}
function Y5($, ft, It, ne) {
  var ke = ft.interleaved;
  return ke === null ? (It.next = It, $3(ft)) : (It.next = ke.next, ke.next = It), ft.interleaved = It, Nv($, ne);
}
function Nv($, ft) {
  $.lanes |= ft;
  var It = $.alternate;
  for (It !== null && (It.lanes |= ft), It = $, $ = $.return; $ !== null; ) $.childLanes |= ft, It = $.alternate, It !== null && (It.childLanes |= ft), It = $, $ = $.return;
  return It.tag === 3 ? It.stateNode : null;
}
var gp = !1;
function q3($) {
  $.updateQueue = { baseState: $.memoizedState, firstBaseUpdate: null, lastBaseUpdate: null, shared: { pending: null, interleaved: null, lanes: 0 }, effects: null };
}
function K5($, ft) {
  $ = $.updateQueue, ft.updateQueue === $ && (ft.updateQueue = { baseState: $.baseState, firstBaseUpdate: $.firstBaseUpdate, lastBaseUpdate: $.lastBaseUpdate, shared: $.shared, effects: $.effects });
}
function Fv($, ft) {
  return { eventTime: $, lane: ft, tag: 0, payload: null, callback: null, next: null };
}
function Sp($, ft, It) {
  var ne = $.updateQueue;
  if (ne === null) return null;
  if (ne = ne.shared, hs & 2) {
    var ke = ne.pending;
    return ke === null ? ft.next = ft : (ft.next = ke.next, ke.next = ft), ne.pending = ft, Nv($, It);
  }
  return ke = ne.interleaved, ke === null ? (ft.next = ft, $3(ne)) : (ft.next = ke.next, ke.next = ft), ne.interleaved = ft, Nv($, It);
}
function e1($, ft, It) {
  if (ft = ft.updateQueue, ft !== null && (ft = ft.shared, (It & 4194240) !== 0)) {
    var ne = ft.lanes;
    ne &= $.pendingLanes, It |= ne, ft.lanes = It, B3($, It);
  }
}
function c2($, ft) {
  var It = $.updateQueue, ne = $.alternate;
  if (ne !== null && (ne = ne.updateQueue, It === ne)) {
    var ke = null, Qe = null;
    if (It = It.firstBaseUpdate, It !== null) {
      do {
        var Y = { eventTime: It.eventTime, lane: It.lane, tag: It.tag, payload: It.payload, callback: It.callback, next: null };
        Qe === null ? ke = Qe = Y : Qe = Qe.next = Y, It = It.next;
      } while (It !== null);
      Qe === null ? ke = Qe = ft : Qe = Qe.next = ft;
    } else ke = Qe = ft;
    It = { baseState: ne.baseState, firstBaseUpdate: ke, lastBaseUpdate: Qe, shared: ne.shared, effects: ne.effects }, $.updateQueue = It;
    return;
  }
  $ = It.lastBaseUpdate, $ === null ? It.firstBaseUpdate = ft : $.next = ft, It.lastBaseUpdate = ft;
}
function T1($, ft, It, ne) {
  var ke = $.updateQueue;
  gp = !1;
  var Qe = ke.firstBaseUpdate, Y = ke.lastBaseUpdate, K = ke.shared.pending;
  if (K !== null) {
    ke.shared.pending = null;
    var e = K, b = e.next;
    e.next = null, Y === null ? Qe = b : Y.next = b, Y = e;
    var P = $.alternate;
    P !== null && (P = P.updateQueue, K = P.lastBaseUpdate, K !== Y && (K === null ? P.firstBaseUpdate = b : K.next = b, P.lastBaseUpdate = e));
  }
  if (Qe !== null) {
    var n = ke.baseState;
    Y = 0, P = b = e = null, K = Qe;
    do {
      var s = K.lane, T = K.eventTime;
      if ((ne & s) === s) {
        P !== null && (P = P.next = {
          eventTime: T,
          lane: 0,
          tag: K.tag,
          payload: K.payload,
          callback: K.callback,
          next: null
        });
        t: {
          var A = $, p = K;
          switch (s = ft, T = It, p.tag) {
            case 1:
              if (A = p.payload, typeof A == "function") {
                n = A.call(T, n, s);
                break t;
              }
              n = A;
              break t;
            case 3:
              A.flags = A.flags & -65537 | 128;
            case 0:
              if (A = p.payload, s = typeof A == "function" ? A.call(T, n, s) : A, s == null) break t;
              n = Fl({}, n, s);
              break t;
            case 2:
              gp = !0;
          }
        }
        K.callback !== null && K.lane !== 0 && ($.flags |= 64, s = ke.effects, s === null ? ke.effects = [K] : s.push(K));
      } else T = { eventTime: T, lane: s, tag: K.tag, payload: K.payload, callback: K.callback, next: null }, P === null ? (b = P = T, e = n) : P = P.next = T, Y |= s;
      if (K = K.next, K === null) {
        if (K = ke.shared.pending, K === null) break;
        s = K, K = s.next, s.next = null, ke.lastBaseUpdate = s, ke.shared.pending = null;
      }
    } while (!0);
    if (P === null && (e = n), ke.baseState = e, ke.firstBaseUpdate = b, ke.lastBaseUpdate = P, ft = ke.shared.interleaved, ft !== null) {
      ke = ft;
      do
        Y |= ke.lane, ke = ke.next;
      while (ke !== ft);
    } else Qe === null && (ke.shared.lanes = 0);
    b0 |= Y, $.lanes = Y, $.memoizedState = n;
  }
}
function f2($, ft, It) {
  if ($ = ft.effects, ft.effects = null, $ !== null) for (ft = 0; ft < $.length; ft++) {
    var ne = $[ft], ke = ne.callback;
    if (ke !== null) {
      if (ne.callback = null, ne = It, typeof ke != "function") throw Error(ga(191, ke));
      ke.call(ne);
    }
  }
}
var Oy = {}, pv = Rp(Oy), Ey = Rp(Oy), Cy = Rp(Oy);
function v0($) {
  if ($ === Oy) throw Error(ga(174));
  return $;
}
function tw($, ft) {
  switch (nl(Cy, ft), nl(Ey, $), nl(pv, Oy), $ = ft.nodeType, $) {
    case 9:
    case 11:
      ft = (ft = ft.documentElement) ? ft.namespaceURI : Gb(null, "");
      break;
    default:
      $ = $ === 8 ? ft.parentNode : ft, ft = $.namespaceURI || null, $ = $.tagName, ft = Gb(ft, $);
  }
  pl(pv), nl(pv, ft);
}
function pg() {
  pl(pv), pl(Ey), pl(Cy);
}
function J5($) {
  v0(Cy.current);
  var ft = v0(pv.current), It = Gb(ft, $.type);
  ft !== It && (nl(Ey, $), nl(pv, It));
}
function ew($) {
  Ey.current === $ && (pl(pv), pl(Ey));
}
var kl = Rp(0);
function A1($) {
  for (var ft = $; ft !== null; ) {
    if (ft.tag === 13) {
      var It = ft.memoizedState;
      if (It !== null && (It = It.dehydrated, It === null || It.data === "$?" || It.data === "$!")) return ft;
    } else if (ft.tag === 19 && ft.memoizedProps.revealOrder !== void 0) {
      if (ft.flags & 128) return ft;
    } else if (ft.child !== null) {
      ft.child.return = ft, ft = ft.child;
      continue;
    }
    if (ft === $) break;
    for (; ft.sibling === null; ) {
      if (ft.return === null || ft.return === $) return null;
      ft = ft.return;
    }
    ft.sibling.return = ft.return, ft = ft.sibling;
  }
  return null;
}
var Sb = [];
function rw() {
  for (var $ = 0; $ < Sb.length; $++) Sb[$]._workInProgressVersionPrimary = null;
  Sb.length = 0;
}
var r1 = Vv.ReactCurrentDispatcher, Mb = Vv.ReactCurrentBatchConfig, x0 = 0, zl = null, Wu = null, gc = null, S1 = !1, hy = !1, Ly = 0, H4 = 0;
function uf() {
  throw Error(ga(321));
}
function nw($, ft) {
  if (ft === null) return !1;
  for (var It = 0; It < ft.length && It < $.length; It++) if (!tv($[It], ft[It])) return !1;
  return !0;
}
function iw($, ft, It, ne, ke, Qe) {
  if (x0 = Qe, zl = ft, ft.memoizedState = null, ft.updateQueue = null, ft.lanes = 0, r1.current = $ === null || $.memoizedState === null ? Z4 : X4, $ = It(ne, ke), hy) {
    Qe = 0;
    do {
      if (hy = !1, Ly = 0, 25 <= Qe) throw Error(ga(301));
      Qe += 1, gc = Wu = null, ft.updateQueue = null, r1.current = Y4, $ = It(ne, ke);
    } while (hy);
  }
  if (r1.current = M1, ft = Wu !== null && Wu.next !== null, x0 = 0, gc = Wu = zl = null, S1 = !1, ft) throw Error(ga(300));
  return $;
}
function aw() {
  var $ = Ly !== 0;
  return Ly = 0, $;
}
function hv() {
  var $ = { memoizedState: null, baseState: null, baseQueue: null, queue: null, next: null };
  return gc === null ? zl.memoizedState = gc = $ : gc = gc.next = $, gc;
}
function Ld() {
  if (Wu === null) {
    var $ = zl.alternate;
    $ = $ !== null ? $.memoizedState : null;
  } else $ = Wu.next;
  var ft = gc === null ? zl.memoizedState : gc.next;
  if (ft !== null) gc = ft, Wu = $;
  else {
    if ($ === null) throw Error(ga(310));
    Wu = $, $ = { memoizedState: Wu.memoizedState, baseState: Wu.baseState, baseQueue: Wu.baseQueue, queue: Wu.queue, next: null }, gc === null ? zl.memoizedState = gc = $ : gc = gc.next = $;
  }
  return gc;
}
function Py($, ft) {
  return typeof ft == "function" ? ft($) : ft;
}
function Eb($) {
  var ft = Ld(), It = ft.queue;
  if (It === null) throw Error(ga(311));
  It.lastRenderedReducer = $;
  var ne = Wu, ke = ne.baseQueue, Qe = It.pending;
  if (Qe !== null) {
    if (ke !== null) {
      var Y = ke.next;
      ke.next = Qe.next, Qe.next = Y;
    }
    ne.baseQueue = ke = Qe, It.pending = null;
  }
  if (ke !== null) {
    Qe = ke.next, ne = ne.baseState;
    var K = Y = null, e = null, b = Qe;
    do {
      var P = b.lane;
      if ((x0 & P) === P) e !== null && (e = e.next = { lane: 0, action: b.action, hasEagerState: b.hasEagerState, eagerState: b.eagerState, next: null }), ne = b.hasEagerState ? b.eagerState : $(ne, b.action);
      else {
        var n = {
          lane: P,
          action: b.action,
          hasEagerState: b.hasEagerState,
          eagerState: b.eagerState,
          next: null
        };
        e === null ? (K = e = n, Y = ne) : e = e.next = n, zl.lanes |= P, b0 |= P;
      }
      b = b.next;
    } while (b !== null && b !== Qe);
    e === null ? Y = ne : e.next = K, tv(ne, ft.memoizedState) || (xh = !0), ft.memoizedState = ne, ft.baseState = Y, ft.baseQueue = e, It.lastRenderedState = ne;
  }
  if ($ = It.interleaved, $ !== null) {
    ke = $;
    do
      Qe = ke.lane, zl.lanes |= Qe, b0 |= Qe, ke = ke.next;
    while (ke !== $);
  } else ke === null && (It.lanes = 0);
  return [ft.memoizedState, It.dispatch];
}
function Cb($) {
  var ft = Ld(), It = ft.queue;
  if (It === null) throw Error(ga(311));
  It.lastRenderedReducer = $;
  var ne = It.dispatch, ke = It.pending, Qe = ft.memoizedState;
  if (ke !== null) {
    It.pending = null;
    var Y = ke = ke.next;
    do
      Qe = $(Qe, Y.action), Y = Y.next;
    while (Y !== ke);
    tv(Qe, ft.memoizedState) || (xh = !0), ft.memoizedState = Qe, ft.baseQueue === null && (ft.baseState = Qe), It.lastRenderedState = Qe;
  }
  return [Qe, ne];
}
function Q5() {
}
function $5($, ft) {
  var It = zl, ne = Ld(), ke = ft(), Qe = !tv(ne.memoizedState, ke);
  if (Qe && (ne.memoizedState = ke, xh = !0), ne = ne.queue, ow(e_.bind(null, It, ne, $), [$]), ne.getSnapshot !== ft || Qe || gc !== null && gc.memoizedState.tag & 1) {
    if (It.flags |= 2048, Iy(9, t_.bind(null, It, ne, ke, ft), void 0, null), yc === null) throw Error(ga(349));
    x0 & 30 || q5(It, ft, ke);
  }
  return ke;
}
function q5($, ft, It) {
  $.flags |= 16384, $ = { getSnapshot: ft, value: It }, ft = zl.updateQueue, ft === null ? (ft = { lastEffect: null, stores: null }, zl.updateQueue = ft, ft.stores = [$]) : (It = ft.stores, It === null ? ft.stores = [$] : It.push($));
}
function t_($, ft, It, ne) {
  ft.value = It, ft.getSnapshot = ne, r_(ft) && n_($);
}
function e_($, ft, It) {
  return It(function() {
    r_(ft) && n_($);
  });
}
function r_($) {
  var ft = $.getSnapshot;
  $ = $.value;
  try {
    var It = ft();
    return !tv($, It);
  } catch {
    return !0;
  }
}
function n_($) {
  var ft = Nv($, 1);
  ft !== null && qd(ft, $, 1, -1);
}
function h2($) {
  var ft = hv();
  return typeof $ == "function" && ($ = $()), ft.memoizedState = ft.baseState = $, $ = { pending: null, interleaved: null, lanes: 0, dispatch: null, lastRenderedReducer: Py, lastRenderedState: $ }, ft.queue = $, $ = $.dispatch = j4.bind(null, zl, $), [ft.memoizedState, $];
}
function Iy($, ft, It, ne) {
  return $ = { tag: $, create: ft, destroy: It, deps: ne, next: null }, ft = zl.updateQueue, ft === null ? (ft = { lastEffect: null, stores: null }, zl.updateQueue = ft, ft.lastEffect = $.next = $) : (It = ft.lastEffect, It === null ? ft.lastEffect = $.next = $ : (ne = It.next, It.next = $, $.next = ne, ft.lastEffect = $)), $;
}
function i_() {
  return Ld().memoizedState;
}
function n1($, ft, It, ne) {
  var ke = hv();
  zl.flags |= $, ke.memoizedState = Iy(1 | ft, It, void 0, ne === void 0 ? null : ne);
}
function B1($, ft, It, ne) {
  var ke = Ld();
  ne = ne === void 0 ? null : ne;
  var Qe = void 0;
  if (Wu !== null) {
    var Y = Wu.memoizedState;
    if (Qe = Y.destroy, ne !== null && nw(ne, Y.deps)) {
      ke.memoizedState = Iy(ft, It, Qe, ne);
      return;
    }
  }
  zl.flags |= $, ke.memoizedState = Iy(1 | ft, It, Qe, ne);
}
function d2($, ft) {
  return n1(8390656, 8, $, ft);
}
function ow($, ft) {
  return B1(2048, 8, $, ft);
}
function a_($, ft) {
  return B1(4, 2, $, ft);
}
function o_($, ft) {
  return B1(4, 4, $, ft);
}
function s_($, ft) {
  if (typeof ft == "function") return $ = $(), ft($), function() {
    ft(null);
  };
  if (ft != null) return $ = $(), ft.current = $, function() {
    ft.current = null;
  };
}
function l_($, ft, It) {
  return It = It != null ? It.concat([$]) : null, B1(4, 4, s_.bind(null, ft, $), It);
}
function sw() {
}
function u_($, ft) {
  var It = Ld();
  ft = ft === void 0 ? null : ft;
  var ne = It.memoizedState;
  return ne !== null && ft !== null && nw(ft, ne[1]) ? ne[0] : (It.memoizedState = [$, ft], $);
}
function c_($, ft) {
  var It = Ld();
  ft = ft === void 0 ? null : ft;
  var ne = It.memoizedState;
  return ne !== null && ft !== null && nw(ft, ne[1]) ? ne[0] : ($ = $(), It.memoizedState = [$, ft], $);
}
function f_($, ft, It) {
  return x0 & 21 ? (tv(It, ft) || (It = g5(), zl.lanes |= It, b0 |= It, $.baseState = !0), ft) : ($.baseState && ($.baseState = !1, xh = !0), $.memoizedState = It);
}
function G4($, ft) {
  var It = ks;
  ks = It !== 0 && 4 > It ? It : 4, $(!0);
  var ne = Mb.transition;
  Mb.transition = {};
  try {
    $(!1), ft();
  } finally {
    ks = It, Mb.transition = ne;
  }
}
function h_() {
  return Ld().memoizedState;
}
function W4($, ft, It) {
  var ne = Ep($);
  if (It = { lane: ne, action: It, hasEagerState: !1, eagerState: null, next: null }, d_($)) v_(ft, It);
  else if (It = Y5($, ft, It, ne), It !== null) {
    var ke = Uf();
    qd(It, $, ne, ke), p_(It, ft, ne);
  }
}
function j4($, ft, It) {
  var ne = Ep($), ke = { lane: ne, action: It, hasEagerState: !1, eagerState: null, next: null };
  if (d_($)) v_(ft, ke);
  else {
    var Qe = $.alternate;
    if ($.lanes === 0 && (Qe === null || Qe.lanes === 0) && (Qe = ft.lastRenderedReducer, Qe !== null)) try {
      var Y = ft.lastRenderedState, K = Qe(Y, It);
      if (ke.hasEagerState = !0, ke.eagerState = K, tv(K, Y)) {
        var e = ft.interleaved;
        e === null ? (ke.next = ke, $3(ft)) : (ke.next = e.next, e.next = ke), ft.interleaved = ke;
        return;
      }
    } catch {
    } finally {
    }
    It = Y5($, ft, ke, ne), It !== null && (ke = Uf(), qd(It, $, ne, ke), p_(It, ft, ne));
  }
}
function d_($) {
  var ft = $.alternate;
  return $ === zl || ft !== null && ft === zl;
}
function v_($, ft) {
  hy = S1 = !0;
  var It = $.pending;
  It === null ? ft.next = ft : (ft.next = It.next, It.next = ft), $.pending = ft;
}
function p_($, ft, It) {
  if (It & 4194240) {
    var ne = ft.lanes;
    ne &= $.pendingLanes, It |= ne, ft.lanes = It, B3($, It);
  }
}
var M1 = { readContext: Cd, useCallback: uf, useContext: uf, useEffect: uf, useImperativeHandle: uf, useInsertionEffect: uf, useLayoutEffect: uf, useMemo: uf, useReducer: uf, useRef: uf, useState: uf, useDebugValue: uf, useDeferredValue: uf, useTransition: uf, useMutableSource: uf, useSyncExternalStore: uf, useId: uf, unstable_isNewReconciler: !1 }, Z4 = { readContext: Cd, useCallback: function($, ft) {
  return hv().memoizedState = [$, ft === void 0 ? null : ft], $;
}, useContext: Cd, useEffect: d2, useImperativeHandle: function($, ft, It) {
  return It = It != null ? It.concat([$]) : null, n1(
    4194308,
    4,
    s_.bind(null, ft, $),
    It
  );
}, useLayoutEffect: function($, ft) {
  return n1(4194308, 4, $, ft);
}, useInsertionEffect: function($, ft) {
  return n1(4, 2, $, ft);
}, useMemo: function($, ft) {
  var It = hv();
  return ft = ft === void 0 ? null : ft, $ = $(), It.memoizedState = [$, ft], $;
}, useReducer: function($, ft, It) {
  var ne = hv();
  return ft = It !== void 0 ? It(ft) : ft, ne.memoizedState = ne.baseState = ft, $ = { pending: null, interleaved: null, lanes: 0, dispatch: null, lastRenderedReducer: $, lastRenderedState: ft }, ne.queue = $, $ = $.dispatch = W4.bind(null, zl, $), [ne.memoizedState, $];
}, useRef: function($) {
  var ft = hv();
  return $ = { current: $ }, ft.memoizedState = $;
}, useState: h2, useDebugValue: sw, useDeferredValue: function($) {
  return hv().memoizedState = $;
}, useTransition: function() {
  var $ = h2(!1), ft = $[0];
  return $ = G4.bind(null, $[1]), hv().memoizedState = $, [ft, $];
}, useMutableSource: function() {
}, useSyncExternalStore: function($, ft, It) {
  var ne = zl, ke = hv();
  if (bl) {
    if (It === void 0) throw Error(ga(407));
    It = It();
  } else {
    if (It = ft(), yc === null) throw Error(ga(349));
    x0 & 30 || q5(ne, ft, It);
  }
  ke.memoizedState = It;
  var Qe = { value: It, getSnapshot: ft };
  return ke.queue = Qe, d2(e_.bind(
    null,
    ne,
    Qe,
    $
  ), [$]), ne.flags |= 2048, Iy(9, t_.bind(null, ne, Qe, It, ft), void 0, null), It;
}, useId: function() {
  var $ = hv(), ft = yc.identifierPrefix;
  if (bl) {
    var It = zv, ne = kv;
    It = (ne & ~(1 << 32 - $d(ne) - 1)).toString(32) + It, ft = ":" + ft + "R" + It, It = Ly++, 0 < It && (ft += "H" + It.toString(32)), ft += ":";
  } else It = H4++, ft = ":" + ft + "r" + It.toString(32) + ":";
  return $.memoizedState = ft;
}, unstable_isNewReconciler: !1 }, X4 = {
  readContext: Cd,
  useCallback: u_,
  useContext: Cd,
  useEffect: ow,
  useImperativeHandle: l_,
  useInsertionEffect: a_,
  useLayoutEffect: o_,
  useMemo: c_,
  useReducer: Eb,
  useRef: i_,
  useState: function() {
    return Eb(Py);
  },
  useDebugValue: sw,
  useDeferredValue: function($) {
    var ft = Ld();
    return f_(ft, Wu.memoizedState, $);
  },
  useTransition: function() {
    var $ = Eb(Py)[0], ft = Ld().memoizedState;
    return [$, ft];
  },
  useMutableSource: Q5,
  useSyncExternalStore: $5,
  useId: h_,
  unstable_isNewReconciler: !1
}, Y4 = { readContext: Cd, useCallback: u_, useContext: Cd, useEffect: ow, useImperativeHandle: l_, useInsertionEffect: a_, useLayoutEffect: o_, useMemo: c_, useReducer: Cb, useRef: i_, useState: function() {
  return Cb(Py);
}, useDebugValue: sw, useDeferredValue: function($) {
  var ft = Ld();
  return Wu === null ? ft.memoizedState = $ : f_(ft, Wu.memoizedState, $);
}, useTransition: function() {
  var $ = Cb(Py)[0], ft = Ld().memoizedState;
  return [$, ft];
}, useMutableSource: Q5, useSyncExternalStore: $5, useId: h_, unstable_isNewReconciler: !1 };
function Kd($, ft) {
  if ($ && $.defaultProps) {
    ft = Fl({}, ft), $ = $.defaultProps;
    for (var It in $) ft[It] === void 0 && (ft[It] = $[It]);
    return ft;
  }
  return ft;
}
function c3($, ft, It, ne) {
  ft = $.memoizedState, It = It(ne, ft), It = It == null ? ft : Fl({}, ft, It), $.memoizedState = It, $.lanes === 0 && ($.updateQueue.baseState = It);
}
var N1 = { isMounted: function($) {
  return ($ = $._reactInternals) ? T0($) === $ : !1;
}, enqueueSetState: function($, ft, It) {
  $ = $._reactInternals;
  var ne = Uf(), ke = Ep($), Qe = Fv(ne, ke);
  Qe.payload = ft, It != null && (Qe.callback = It), ft = Sp($, Qe, ke), ft !== null && (qd(ft, $, ke, ne), e1(ft, $, ke));
}, enqueueReplaceState: function($, ft, It) {
  $ = $._reactInternals;
  var ne = Uf(), ke = Ep($), Qe = Fv(ne, ke);
  Qe.tag = 1, Qe.payload = ft, It != null && (Qe.callback = It), ft = Sp($, Qe, ke), ft !== null && (qd(ft, $, ke, ne), e1(ft, $, ke));
}, enqueueForceUpdate: function($, ft) {
  $ = $._reactInternals;
  var It = Uf(), ne = Ep($), ke = Fv(It, ne);
  ke.tag = 2, ft != null && (ke.callback = ft), ft = Sp($, ke, ne), ft !== null && (qd(ft, $, ne, It), e1(ft, $, ne));
} };
function v2($, ft, It, ne, ke, Qe, Y) {
  return $ = $.stateNode, typeof $.shouldComponentUpdate == "function" ? $.shouldComponentUpdate(ne, Qe, Y) : ft.prototype && ft.prototype.isPureReactComponent ? !Ty(It, ne) || !Ty(ke, Qe) : !0;
}
function g_($, ft, It) {
  var ne = !1, ke = Pp, Qe = ft.contextType;
  return typeof Qe == "object" && Qe !== null ? Qe = Cd(Qe) : (ke = wh(ft) ? y0 : df.current, ne = ft.contextTypes, Qe = (ne = ne != null) ? hg($, ke) : Pp), ft = new ft(It, Qe), $.memoizedState = ft.state !== null && ft.state !== void 0 ? ft.state : null, ft.updater = N1, $.stateNode = ft, ft._reactInternals = $, ne && ($ = $.stateNode, $.__reactInternalMemoizedUnmaskedChildContext = ke, $.__reactInternalMemoizedMaskedChildContext = Qe), ft;
}
function p2($, ft, It, ne) {
  $ = ft.state, typeof ft.componentWillReceiveProps == "function" && ft.componentWillReceiveProps(It, ne), typeof ft.UNSAFE_componentWillReceiveProps == "function" && ft.UNSAFE_componentWillReceiveProps(It, ne), ft.state !== $ && N1.enqueueReplaceState(ft, ft.state, null);
}
function f3($, ft, It, ne) {
  var ke = $.stateNode;
  ke.props = It, ke.state = $.memoizedState, ke.refs = {}, q3($);
  var Qe = ft.contextType;
  typeof Qe == "object" && Qe !== null ? ke.context = Cd(Qe) : (Qe = wh(ft) ? y0 : df.current, ke.context = hg($, Qe)), ke.state = $.memoizedState, Qe = ft.getDerivedStateFromProps, typeof Qe == "function" && (c3($, ft, Qe, It), ke.state = $.memoizedState), typeof ft.getDerivedStateFromProps == "function" || typeof ke.getSnapshotBeforeUpdate == "function" || typeof ke.UNSAFE_componentWillMount != "function" && typeof ke.componentWillMount != "function" || (ft = ke.state, typeof ke.componentWillMount == "function" && ke.componentWillMount(), typeof ke.UNSAFE_componentWillMount == "function" && ke.UNSAFE_componentWillMount(), ft !== ke.state && N1.enqueueReplaceState(ke, ke.state, null), T1($, It, ke, ne), ke.state = $.memoizedState), typeof ke.componentDidMount == "function" && ($.flags |= 4194308);
}
function gg($, ft) {
  try {
    var It = "", ne = ft;
    do
      It += _T(ne), ne = ne.return;
    while (ne);
    var ke = It;
  } catch (Qe) {
    ke = `
Error generating stack: ` + Qe.message + `
` + Qe.stack;
  }
  return { value: $, source: ft, stack: ke, digest: null };
}
function Lb($, ft, It) {
  return { value: $, source: null, stack: It ?? null, digest: ft ?? null };
}
function h3($, ft) {
  try {
    console.error(ft.value);
  } catch (It) {
    setTimeout(function() {
      throw It;
    });
  }
}
var K4 = typeof WeakMap == "function" ? WeakMap : Map;
function y_($, ft, It) {
  It = Fv(-1, It), It.tag = 3, It.payload = { element: null };
  var ne = ft.value;
  return It.callback = function() {
    C1 || (C1 = !0, _3 = ne), h3($, ft);
  }, It;
}
function m_($, ft, It) {
  It = Fv(-1, It), It.tag = 3;
  var ne = $.type.getDerivedStateFromError;
  if (typeof ne == "function") {
    var ke = ft.value;
    It.payload = function() {
      return ne(ke);
    }, It.callback = function() {
      h3($, ft);
    };
  }
  var Qe = $.stateNode;
  return Qe !== null && typeof Qe.componentDidCatch == "function" && (It.callback = function() {
    h3($, ft), typeof ne != "function" && (Mp === null ? Mp = /* @__PURE__ */ new Set([this]) : Mp.add(this));
    var Y = ft.stack;
    this.componentDidCatch(ft.value, { componentStack: Y !== null ? Y : "" });
  }), It;
}
function g2($, ft, It) {
  var ne = $.pingCache;
  if (ne === null) {
    ne = $.pingCache = new K4();
    var ke = /* @__PURE__ */ new Set();
    ne.set(ft, ke);
  } else ke = ne.get(ft), ke === void 0 && (ke = /* @__PURE__ */ new Set(), ne.set(ft, ke));
  ke.has(It) || (ke.add(It), $ = uA.bind(null, $, ft, It), ft.then($, $));
}
function y2($) {
  do {
    var ft;
    if ((ft = $.tag === 13) && (ft = $.memoizedState, ft = ft !== null ? ft.dehydrated !== null : !0), ft) return $;
    $ = $.return;
  } while ($ !== null);
  return null;
}
function m2($, ft, It, ne, ke) {
  return $.mode & 1 ? ($.flags |= 65536, $.lanes = ke, $) : ($ === ft ? $.flags |= 65536 : ($.flags |= 128, It.flags |= 131072, It.flags &= -52805, It.tag === 1 && (It.alternate === null ? It.tag = 17 : (ft = Fv(-1, 1), ft.tag = 2, Sp(It, ft, 1))), It.lanes |= 1), $);
}
var J4 = Vv.ReactCurrentOwner, xh = !1;
function Nf($, ft, It, ne) {
  ft.child = $ === null ? X5(ft, null, It, ne) : vg(ft, $.child, It, ne);
}
function x2($, ft, It, ne, ke) {
  It = It.render;
  var Qe = ft.ref;
  return ug(ft, ke), ne = iw($, ft, It, ne, Qe, ke), It = aw(), $ !== null && !xh ? (ft.updateQueue = $.updateQueue, ft.flags &= -2053, $.lanes &= ~ke, Uv($, ft, ke)) : (bl && It && Z3(ft), ft.flags |= 1, Nf($, ft, ne, ke), ft.child);
}
function b2($, ft, It, ne, ke) {
  if ($ === null) {
    var Qe = It.type;
    return typeof Qe == "function" && !pw(Qe) && Qe.defaultProps === void 0 && It.compare === null && It.defaultProps === void 0 ? (ft.tag = 15, ft.type = Qe, x_($, ft, Qe, ne, ke)) : ($ = s1(It.type, null, ne, ft, ft.mode, ke), $.ref = ft.ref, $.return = ft, ft.child = $);
  }
  if (Qe = $.child, !($.lanes & ke)) {
    var Y = Qe.memoizedProps;
    if (It = It.compare, It = It !== null ? It : Ty, It(Y, ne) && $.ref === ft.ref) return Uv($, ft, ke);
  }
  return ft.flags |= 1, $ = Cp(Qe, ne), $.ref = ft.ref, $.return = ft, ft.child = $;
}
function x_($, ft, It, ne, ke) {
  if ($ !== null) {
    var Qe = $.memoizedProps;
    if (Ty(Qe, ne) && $.ref === ft.ref) if (xh = !1, ft.pendingProps = ne = Qe, ($.lanes & ke) !== 0) $.flags & 131072 && (xh = !0);
    else return ft.lanes = $.lanes, Uv($, ft, ke);
  }
  return d3($, ft, It, ne, ke);
}
function b_($, ft, It) {
  var ne = ft.pendingProps, ke = ne.children, Qe = $ !== null ? $.memoizedState : null;
  if (ne.mode === "hidden") if (!(ft.mode & 1)) ft.memoizedState = { baseLanes: 0, cachePool: null, transitions: null }, nl(ig, Yh), Yh |= It;
  else {
    if (!(It & 1073741824)) return $ = Qe !== null ? Qe.baseLanes | It : It, ft.lanes = ft.childLanes = 1073741824, ft.memoizedState = { baseLanes: $, cachePool: null, transitions: null }, ft.updateQueue = null, nl(ig, Yh), Yh |= $, null;
    ft.memoizedState = { baseLanes: 0, cachePool: null, transitions: null }, ne = Qe !== null ? Qe.baseLanes : It, nl(ig, Yh), Yh |= ne;
  }
  else Qe !== null ? (ne = Qe.baseLanes | It, ft.memoizedState = null) : ne = It, nl(ig, Yh), Yh |= ne;
  return Nf($, ft, ke, It), ft.child;
}
function w_($, ft) {
  var It = ft.ref;
  ($ === null && It !== null || $ !== null && $.ref !== It) && (ft.flags |= 512, ft.flags |= 2097152);
}
function d3($, ft, It, ne, ke) {
  var Qe = wh(It) ? y0 : df.current;
  return Qe = hg(ft, Qe), ug(ft, ke), It = iw($, ft, It, ne, Qe, ke), ne = aw(), $ !== null && !xh ? (ft.updateQueue = $.updateQueue, ft.flags &= -2053, $.lanes &= ~ke, Uv($, ft, ke)) : (bl && ne && Z3(ft), ft.flags |= 1, Nf($, ft, It, ke), ft.child);
}
function w2($, ft, It, ne, ke) {
  if (wh(It)) {
    var Qe = !0;
    m1(ft);
  } else Qe = !1;
  if (ug(ft, ke), ft.stateNode === null) i1($, ft), g_(ft, It, ne), f3(ft, It, ne, ke), ne = !0;
  else if ($ === null) {
    var Y = ft.stateNode, K = ft.memoizedProps;
    Y.props = K;
    var e = Y.context, b = It.contextType;
    typeof b == "object" && b !== null ? b = Cd(b) : (b = wh(It) ? y0 : df.current, b = hg(ft, b));
    var P = It.getDerivedStateFromProps, n = typeof P == "function" || typeof Y.getSnapshotBeforeUpdate == "function";
    n || typeof Y.UNSAFE_componentWillReceiveProps != "function" && typeof Y.componentWillReceiveProps != "function" || (K !== ne || e !== b) && p2(ft, Y, ne, b), gp = !1;
    var s = ft.memoizedState;
    Y.state = s, T1(ft, ne, Y, ke), e = ft.memoizedState, K !== ne || s !== e || bh.current || gp ? (typeof P == "function" && (c3(ft, It, P, ne), e = ft.memoizedState), (K = gp || v2(ft, It, K, ne, s, e, b)) ? (n || typeof Y.UNSAFE_componentWillMount != "function" && typeof Y.componentWillMount != "function" || (typeof Y.componentWillMount == "function" && Y.componentWillMount(), typeof Y.UNSAFE_componentWillMount == "function" && Y.UNSAFE_componentWillMount()), typeof Y.componentDidMount == "function" && (ft.flags |= 4194308)) : (typeof Y.componentDidMount == "function" && (ft.flags |= 4194308), ft.memoizedProps = ne, ft.memoizedState = e), Y.props = ne, Y.state = e, Y.context = b, ne = K) : (typeof Y.componentDidMount == "function" && (ft.flags |= 4194308), ne = !1);
  } else {
    Y = ft.stateNode, K5($, ft), K = ft.memoizedProps, b = ft.type === ft.elementType ? K : Kd(ft.type, K), Y.props = b, n = ft.pendingProps, s = Y.context, e = It.contextType, typeof e == "object" && e !== null ? e = Cd(e) : (e = wh(It) ? y0 : df.current, e = hg(ft, e));
    var T = It.getDerivedStateFromProps;
    (P = typeof T == "function" || typeof Y.getSnapshotBeforeUpdate == "function") || typeof Y.UNSAFE_componentWillReceiveProps != "function" && typeof Y.componentWillReceiveProps != "function" || (K !== n || s !== e) && p2(ft, Y, ne, e), gp = !1, s = ft.memoizedState, Y.state = s, T1(ft, ne, Y, ke);
    var A = ft.memoizedState;
    K !== n || s !== A || bh.current || gp ? (typeof T == "function" && (c3(ft, It, T, ne), A = ft.memoizedState), (b = gp || v2(ft, It, b, ne, s, A, e) || !1) ? (P || typeof Y.UNSAFE_componentWillUpdate != "function" && typeof Y.componentWillUpdate != "function" || (typeof Y.componentWillUpdate == "function" && Y.componentWillUpdate(ne, A, e), typeof Y.UNSAFE_componentWillUpdate == "function" && Y.UNSAFE_componentWillUpdate(ne, A, e)), typeof Y.componentDidUpdate == "function" && (ft.flags |= 4), typeof Y.getSnapshotBeforeUpdate == "function" && (ft.flags |= 1024)) : (typeof Y.componentDidUpdate != "function" || K === $.memoizedProps && s === $.memoizedState || (ft.flags |= 4), typeof Y.getSnapshotBeforeUpdate != "function" || K === $.memoizedProps && s === $.memoizedState || (ft.flags |= 1024), ft.memoizedProps = ne, ft.memoizedState = A), Y.props = ne, Y.state = A, Y.context = e, ne = b) : (typeof Y.componentDidUpdate != "function" || K === $.memoizedProps && s === $.memoizedState || (ft.flags |= 4), typeof Y.getSnapshotBeforeUpdate != "function" || K === $.memoizedProps && s === $.memoizedState || (ft.flags |= 1024), ne = !1);
  }
  return v3($, ft, It, ne, Qe, ke);
}
function v3($, ft, It, ne, ke, Qe) {
  w_($, ft);
  var Y = (ft.flags & 128) !== 0;
  if (!ne && !Y) return ke && o2(ft, It, !1), Uv($, ft, Qe);
  ne = ft.stateNode, J4.current = ft;
  var K = Y && typeof It.getDerivedStateFromError != "function" ? null : ne.render();
  return ft.flags |= 1, $ !== null && Y ? (ft.child = vg(ft, $.child, null, Qe), ft.child = vg(ft, null, K, Qe)) : Nf($, ft, K, Qe), ft.memoizedState = ne.state, ke && o2(ft, It, !0), ft.child;
}
function __($) {
  var ft = $.stateNode;
  ft.pendingContext ? a2($, ft.pendingContext, ft.pendingContext !== ft.context) : ft.context && a2($, ft.context, !1), tw($, ft.containerInfo);
}
function _2($, ft, It, ne, ke) {
  return dg(), Y3(ke), ft.flags |= 256, Nf($, ft, It, ne), ft.child;
}
var p3 = { dehydrated: null, treeContext: null, retryLane: 0 };
function g3($) {
  return { baseLanes: $, cachePool: null, transitions: null };
}
function T_($, ft, It) {
  var ne = ft.pendingProps, ke = kl.current, Qe = !1, Y = (ft.flags & 128) !== 0, K;
  if ((K = Y) || (K = $ !== null && $.memoizedState === null ? !1 : (ke & 2) !== 0), K ? (Qe = !0, ft.flags &= -129) : ($ === null || $.memoizedState !== null) && (ke |= 1), nl(kl, ke & 1), $ === null)
    return l3(ft), $ = ft.memoizedState, $ !== null && ($ = $.dehydrated, $ !== null) ? (ft.mode & 1 ? $.data === "$!" ? ft.lanes = 8 : ft.lanes = 1073741824 : ft.lanes = 1, null) : (Y = ne.children, $ = ne.fallback, Qe ? (ne = ft.mode, Qe = ft.child, Y = { mode: "hidden", children: Y }, !(ne & 1) && Qe !== null ? (Qe.childLanes = 0, Qe.pendingProps = Y) : Qe = H1(Y, ne, 0, null), $ = g0($, ne, It, null), Qe.return = ft, $.return = ft, Qe.sibling = $, ft.child = Qe, ft.child.memoizedState = g3(It), ft.memoizedState = p3, $) : lw(ft, Y));
  if (ke = $.memoizedState, ke !== null && (K = ke.dehydrated, K !== null)) return Q4($, ft, Y, ne, K, ke, It);
  if (Qe) {
    Qe = ne.fallback, Y = ft.mode, ke = $.child, K = ke.sibling;
    var e = { mode: "hidden", children: ne.children };
    return !(Y & 1) && ft.child !== ke ? (ne = ft.child, ne.childLanes = 0, ne.pendingProps = e, ft.deletions = null) : (ne = Cp(ke, e), ne.subtreeFlags = ke.subtreeFlags & 14680064), K !== null ? Qe = Cp(K, Qe) : (Qe = g0(Qe, Y, It, null), Qe.flags |= 2), Qe.return = ft, ne.return = ft, ne.sibling = Qe, ft.child = ne, ne = Qe, Qe = ft.child, Y = $.child.memoizedState, Y = Y === null ? g3(It) : { baseLanes: Y.baseLanes | It, cachePool: null, transitions: Y.transitions }, Qe.memoizedState = Y, Qe.childLanes = $.childLanes & ~It, ft.memoizedState = p3, ne;
  }
  return Qe = $.child, $ = Qe.sibling, ne = Cp(Qe, { mode: "visible", children: ne.children }), !(ft.mode & 1) && (ne.lanes = It), ne.return = ft, ne.sibling = null, $ !== null && (It = ft.deletions, It === null ? (ft.deletions = [$], ft.flags |= 16) : It.push($)), ft.child = ne, ft.memoizedState = null, ne;
}
function lw($, ft) {
  return ft = H1({ mode: "visible", children: ft }, $.mode, 0, null), ft.return = $, $.child = ft;
}
function Zm($, ft, It, ne) {
  return ne !== null && Y3(ne), vg(ft, $.child, null, It), $ = lw(ft, ft.pendingProps.children), $.flags |= 2, ft.memoizedState = null, $;
}
function Q4($, ft, It, ne, ke, Qe, Y) {
  if (It)
    return ft.flags & 256 ? (ft.flags &= -257, ne = Lb(Error(ga(422))), Zm($, ft, Y, ne)) : ft.memoizedState !== null ? (ft.child = $.child, ft.flags |= 128, null) : (Qe = ne.fallback, ke = ft.mode, ne = H1({ mode: "visible", children: ne.children }, ke, 0, null), Qe = g0(Qe, ke, Y, null), Qe.flags |= 2, ne.return = ft, Qe.return = ft, ne.sibling = Qe, ft.child = ne, ft.mode & 1 && vg(ft, $.child, null, Y), ft.child.memoizedState = g3(Y), ft.memoizedState = p3, Qe);
  if (!(ft.mode & 1)) return Zm($, ft, Y, null);
  if (ke.data === "$!") {
    if (ne = ke.nextSibling && ke.nextSibling.dataset, ne) var K = ne.dgst;
    return ne = K, Qe = Error(ga(419)), ne = Lb(Qe, ne, void 0), Zm($, ft, Y, ne);
  }
  if (K = (Y & $.childLanes) !== 0, xh || K) {
    if (ne = yc, ne !== null) {
      switch (Y & -Y) {
        case 4:
          ke = 2;
          break;
        case 16:
          ke = 8;
          break;
        case 64:
        case 128:
        case 256:
        case 512:
        case 1024:
        case 2048:
        case 4096:
        case 8192:
        case 16384:
        case 32768:
        case 65536:
        case 131072:
        case 262144:
        case 524288:
        case 1048576:
        case 2097152:
        case 4194304:
        case 8388608:
        case 16777216:
        case 33554432:
        case 67108864:
          ke = 32;
          break;
        case 536870912:
          ke = 268435456;
          break;
        default:
          ke = 0;
      }
      ke = ke & (ne.suspendedLanes | Y) ? 0 : ke, ke !== 0 && ke !== Qe.retryLane && (Qe.retryLane = ke, Nv($, ke), qd(ne, $, ke, -1));
    }
    return vw(), ne = Lb(Error(ga(421))), Zm($, ft, Y, ne);
  }
  return ke.data === "$?" ? (ft.flags |= 128, ft.child = $.child, ft = cA.bind(null, $), ke._reactRetry = ft, null) : ($ = Qe.treeContext, Kh = Ap(ke.nextSibling), Jh = ft, bl = !0, Qd = null, $ !== null && (Ad[Sd++] = kv, Ad[Sd++] = zv, Ad[Sd++] = m0, kv = $.id, zv = $.overflow, m0 = ft), ft = lw(ft, ne.children), ft.flags |= 4096, ft);
}
function T2($, ft, It) {
  $.lanes |= ft;
  var ne = $.alternate;
  ne !== null && (ne.lanes |= ft), u3($.return, ft, It);
}
function Pb($, ft, It, ne, ke) {
  var Qe = $.memoizedState;
  Qe === null ? $.memoizedState = { isBackwards: ft, rendering: null, renderingStartTime: 0, last: ne, tail: It, tailMode: ke } : (Qe.isBackwards = ft, Qe.rendering = null, Qe.renderingStartTime = 0, Qe.last = ne, Qe.tail = It, Qe.tailMode = ke);
}
function A_($, ft, It) {
  var ne = ft.pendingProps, ke = ne.revealOrder, Qe = ne.tail;
  if (Nf($, ft, ne.children, It), ne = kl.current, ne & 2) ne = ne & 1 | 2, ft.flags |= 128;
  else {
    if ($ !== null && $.flags & 128) t: for ($ = ft.child; $ !== null; ) {
      if ($.tag === 13) $.memoizedState !== null && T2($, It, ft);
      else if ($.tag === 19) T2($, It, ft);
      else if ($.child !== null) {
        $.child.return = $, $ = $.child;
        continue;
      }
      if ($ === ft) break t;
      for (; $.sibling === null; ) {
        if ($.return === null || $.return === ft) break t;
        $ = $.return;
      }
      $.sibling.return = $.return, $ = $.sibling;
    }
    ne &= 1;
  }
  if (nl(kl, ne), !(ft.mode & 1)) ft.memoizedState = null;
  else switch (ke) {
    case "forwards":
      for (It = ft.child, ke = null; It !== null; ) $ = It.alternate, $ !== null && A1($) === null && (ke = It), It = It.sibling;
      It = ke, It === null ? (ke = ft.child, ft.child = null) : (ke = It.sibling, It.sibling = null), Pb(ft, !1, ke, It, Qe);
      break;
    case "backwards":
      for (It = null, ke = ft.child, ft.child = null; ke !== null; ) {
        if ($ = ke.alternate, $ !== null && A1($) === null) {
          ft.child = ke;
          break;
        }
        $ = ke.sibling, ke.sibling = It, It = ke, ke = $;
      }
      Pb(ft, !0, It, null, Qe);
      break;
    case "together":
      Pb(ft, !1, null, null, void 0);
      break;
    default:
      ft.memoizedState = null;
  }
  return ft.child;
}
function i1($, ft) {
  !(ft.mode & 1) && $ !== null && ($.alternate = null, ft.alternate = null, ft.flags |= 2);
}
function Uv($, ft, It) {
  if ($ !== null && (ft.dependencies = $.dependencies), b0 |= ft.lanes, !(It & ft.childLanes)) return null;
  if ($ !== null && ft.child !== $.child) throw Error(ga(153));
  if (ft.child !== null) {
    for ($ = ft.child, It = Cp($, $.pendingProps), ft.child = It, It.return = ft; $.sibling !== null; ) $ = $.sibling, It = It.sibling = Cp($, $.pendingProps), It.return = ft;
    It.sibling = null;
  }
  return ft.child;
}
function $4($, ft, It) {
  switch (ft.tag) {
    case 3:
      __(ft), dg();
      break;
    case 5:
      J5(ft);
      break;
    case 1:
      wh(ft.type) && m1(ft);
      break;
    case 4:
      tw(ft, ft.stateNode.containerInfo);
      break;
    case 10:
      var ne = ft.type._context, ke = ft.memoizedProps.value;
      nl(w1, ne._currentValue), ne._currentValue = ke;
      break;
    case 13:
      if (ne = ft.memoizedState, ne !== null)
        return ne.dehydrated !== null ? (nl(kl, kl.current & 1), ft.flags |= 128, null) : It & ft.child.childLanes ? T_($, ft, It) : (nl(kl, kl.current & 1), $ = Uv($, ft, It), $ !== null ? $.sibling : null);
      nl(kl, kl.current & 1);
      break;
    case 19:
      if (ne = (It & ft.childLanes) !== 0, $.flags & 128) {
        if (ne) return A_($, ft, It);
        ft.flags |= 128;
      }
      if (ke = ft.memoizedState, ke !== null && (ke.rendering = null, ke.tail = null, ke.lastEffect = null), nl(kl, kl.current), ne) break;
      return null;
    case 22:
    case 23:
      return ft.lanes = 0, b_($, ft, It);
  }
  return Uv($, ft, It);
}
var S_, y3, M_, E_;
S_ = function($, ft) {
  for (var It = ft.child; It !== null; ) {
    if (It.tag === 5 || It.tag === 6) $.appendChild(It.stateNode);
    else if (It.tag !== 4 && It.child !== null) {
      It.child.return = It, It = It.child;
      continue;
    }
    if (It === ft) break;
    for (; It.sibling === null; ) {
      if (It.return === null || It.return === ft) return;
      It = It.return;
    }
    It.sibling.return = It.return, It = It.sibling;
  }
};
y3 = function() {
};
M_ = function($, ft, It, ne) {
  var ke = $.memoizedProps;
  if (ke !== ne) {
    $ = ft.stateNode, v0(pv.current);
    var Qe = null;
    switch (It) {
      case "input":
        ke = Nb($, ke), ne = Nb($, ne), Qe = [];
        break;
      case "select":
        ke = Fl({}, ke, { value: void 0 }), ne = Fl({}, ne, { value: void 0 }), Qe = [];
        break;
      case "textarea":
        ke = Hb($, ke), ne = Hb($, ne), Qe = [];
        break;
      default:
        typeof ke.onClick != "function" && typeof ne.onClick == "function" && ($.onclick = g1);
    }
    Wb(It, ne);
    var Y;
    It = null;
    for (b in ke) if (!ne.hasOwnProperty(b) && ke.hasOwnProperty(b) && ke[b] != null) if (b === "style") {
      var K = ke[b];
      for (Y in K) K.hasOwnProperty(Y) && (It || (It = {}), It[Y] = "");
    } else b !== "dangerouslySetInnerHTML" && b !== "children" && b !== "suppressContentEditableWarning" && b !== "suppressHydrationWarning" && b !== "autoFocus" && (gy.hasOwnProperty(b) ? Qe || (Qe = []) : (Qe = Qe || []).push(b, null));
    for (b in ne) {
      var e = ne[b];
      if (K = ke != null ? ke[b] : void 0, ne.hasOwnProperty(b) && e !== K && (e != null || K != null)) if (b === "style") if (K) {
        for (Y in K) !K.hasOwnProperty(Y) || e && e.hasOwnProperty(Y) || (It || (It = {}), It[Y] = "");
        for (Y in e) e.hasOwnProperty(Y) && K[Y] !== e[Y] && (It || (It = {}), It[Y] = e[Y]);
      } else It || (Qe || (Qe = []), Qe.push(
        b,
        It
      )), It = e;
      else b === "dangerouslySetInnerHTML" ? (e = e ? e.__html : void 0, K = K ? K.__html : void 0, e != null && K !== e && (Qe = Qe || []).push(b, e)) : b === "children" ? typeof e != "string" && typeof e != "number" || (Qe = Qe || []).push(b, "" + e) : b !== "suppressContentEditableWarning" && b !== "suppressHydrationWarning" && (gy.hasOwnProperty(b) ? (e != null && b === "onScroll" && vl("scroll", $), Qe || K === e || (Qe = [])) : (Qe = Qe || []).push(b, e));
    }
    It && (Qe = Qe || []).push("style", It);
    var b = Qe;
    (ft.updateQueue = b) && (ft.flags |= 4);
  }
};
E_ = function($, ft, It, ne) {
  It !== ne && (ft.flags |= 4);
};
function ey($, ft) {
  if (!bl) switch ($.tailMode) {
    case "hidden":
      ft = $.tail;
      for (var It = null; ft !== null; ) ft.alternate !== null && (It = ft), ft = ft.sibling;
      It === null ? $.tail = null : It.sibling = null;
      break;
    case "collapsed":
      It = $.tail;
      for (var ne = null; It !== null; ) It.alternate !== null && (ne = It), It = It.sibling;
      ne === null ? ft || $.tail === null ? $.tail = null : $.tail.sibling = null : ne.sibling = null;
  }
}
function cf($) {
  var ft = $.alternate !== null && $.alternate.child === $.child, It = 0, ne = 0;
  if (ft) for (var ke = $.child; ke !== null; ) It |= ke.lanes | ke.childLanes, ne |= ke.subtreeFlags & 14680064, ne |= ke.flags & 14680064, ke.return = $, ke = ke.sibling;
  else for (ke = $.child; ke !== null; ) It |= ke.lanes | ke.childLanes, ne |= ke.subtreeFlags, ne |= ke.flags, ke.return = $, ke = ke.sibling;
  return $.subtreeFlags |= ne, $.childLanes = It, ft;
}
function q4($, ft, It) {
  var ne = ft.pendingProps;
  switch (X3(ft), ft.tag) {
    case 2:
    case 16:
    case 15:
    case 0:
    case 11:
    case 7:
    case 8:
    case 12:
    case 9:
    case 14:
      return cf(ft), null;
    case 1:
      return wh(ft.type) && y1(), cf(ft), null;
    case 3:
      return ne = ft.stateNode, pg(), pl(bh), pl(df), rw(), ne.pendingContext && (ne.context = ne.pendingContext, ne.pendingContext = null), ($ === null || $.child === null) && (Wm(ft) ? ft.flags |= 4 : $ === null || $.memoizedState.isDehydrated && !(ft.flags & 256) || (ft.flags |= 1024, Qd !== null && (S3(Qd), Qd = null))), y3($, ft), cf(ft), null;
    case 5:
      ew(ft);
      var ke = v0(Cy.current);
      if (It = ft.type, $ !== null && ft.stateNode != null) M_($, ft, It, ne, ke), $.ref !== ft.ref && (ft.flags |= 512, ft.flags |= 2097152);
      else {
        if (!ne) {
          if (ft.stateNode === null) throw Error(ga(166));
          return cf(ft), null;
        }
        if ($ = v0(pv.current), Wm(ft)) {
          ne = ft.stateNode, It = ft.type;
          var Qe = ft.memoizedProps;
          switch (ne[dv] = ft, ne[My] = Qe, $ = (ft.mode & 1) !== 0, It) {
            case "dialog":
              vl("cancel", ne), vl("close", ne);
              break;
            case "iframe":
            case "object":
            case "embed":
              vl("load", ne);
              break;
            case "video":
            case "audio":
              for (ke = 0; ke < oy.length; ke++) vl(oy[ke], ne);
              break;
            case "source":
              vl("error", ne);
              break;
            case "img":
            case "image":
            case "link":
              vl(
                "error",
                ne
              ), vl("load", ne);
              break;
            case "details":
              vl("toggle", ne);
              break;
            case "input":
              Rw(ne, Qe), vl("invalid", ne);
              break;
            case "select":
              ne._wrapperState = { wasMultiple: !!Qe.multiple }, vl("invalid", ne);
              break;
            case "textarea":
              kw(ne, Qe), vl("invalid", ne);
          }
          Wb(It, Qe), ke = null;
          for (var Y in Qe) if (Qe.hasOwnProperty(Y)) {
            var K = Qe[Y];
            Y === "children" ? typeof K == "string" ? ne.textContent !== K && (Qe.suppressHydrationWarning !== !0 && Gm(ne.textContent, K, $), ke = ["children", K]) : typeof K == "number" && ne.textContent !== "" + K && (Qe.suppressHydrationWarning !== !0 && Gm(
              ne.textContent,
              K,
              $
            ), ke = ["children", "" + K]) : gy.hasOwnProperty(Y) && K != null && Y === "onScroll" && vl("scroll", ne);
          }
          switch (It) {
            case "input":
              zm(ne), Dw(ne, Qe, !0);
              break;
            case "textarea":
              zm(ne), zw(ne);
              break;
            case "select":
            case "option":
              break;
            default:
              typeof Qe.onClick == "function" && (ne.onclick = g1);
          }
          ne = ke, ft.updateQueue = ne, ne !== null && (ft.flags |= 4);
        } else {
          Y = ke.nodeType === 9 ? ke : ke.ownerDocument, $ === "http://www.w3.org/1999/xhtml" && ($ = e5(It)), $ === "http://www.w3.org/1999/xhtml" ? It === "script" ? ($ = Y.createElement("div"), $.innerHTML = "<script><\/script>", $ = $.removeChild($.firstChild)) : typeof ne.is == "string" ? $ = Y.createElement(It, { is: ne.is }) : ($ = Y.createElement(It), It === "select" && (Y = $, ne.multiple ? Y.multiple = !0 : ne.size && (Y.size = ne.size))) : $ = Y.createElementNS($, It), $[dv] = ft, $[My] = ne, S_($, ft, !1, !1), ft.stateNode = $;
          t: {
            switch (Y = jb(It, ne), It) {
              case "dialog":
                vl("cancel", $), vl("close", $), ke = ne;
                break;
              case "iframe":
              case "object":
              case "embed":
                vl("load", $), ke = ne;
                break;
              case "video":
              case "audio":
                for (ke = 0; ke < oy.length; ke++) vl(oy[ke], $);
                ke = ne;
                break;
              case "source":
                vl("error", $), ke = ne;
                break;
              case "img":
              case "image":
              case "link":
                vl(
                  "error",
                  $
                ), vl("load", $), ke = ne;
                break;
              case "details":
                vl("toggle", $), ke = ne;
                break;
              case "input":
                Rw($, ne), ke = Nb($, ne), vl("invalid", $);
                break;
              case "option":
                ke = ne;
                break;
              case "select":
                $._wrapperState = { wasMultiple: !!ne.multiple }, ke = Fl({}, ne, { value: void 0 }), vl("invalid", $);
                break;
              case "textarea":
                kw($, ne), ke = Hb($, ne), vl("invalid", $);
                break;
              default:
                ke = ne;
            }
            Wb(It, ke), K = ke;
            for (Qe in K) if (K.hasOwnProperty(Qe)) {
              var e = K[Qe];
              Qe === "style" ? i5($, e) : Qe === "dangerouslySetInnerHTML" ? (e = e ? e.__html : void 0, e != null && r5($, e)) : Qe === "children" ? typeof e == "string" ? (It !== "textarea" || e !== "") && yy($, e) : typeof e == "number" && yy($, "" + e) : Qe !== "suppressContentEditableWarning" && Qe !== "suppressHydrationWarning" && Qe !== "autoFocus" && (gy.hasOwnProperty(Qe) ? e != null && Qe === "onScroll" && vl("scroll", $) : e != null && R3($, Qe, e, Y));
            }
            switch (It) {
              case "input":
                zm($), Dw($, ne, !1);
                break;
              case "textarea":
                zm($), zw($);
                break;
              case "option":
                ne.value != null && $.setAttribute("value", "" + Lp(ne.value));
                break;
              case "select":
                $.multiple = !!ne.multiple, Qe = ne.value, Qe != null ? ag($, !!ne.multiple, Qe, !1) : ne.defaultValue != null && ag(
                  $,
                  !!ne.multiple,
                  ne.defaultValue,
                  !0
                );
                break;
              default:
                typeof ke.onClick == "function" && ($.onclick = g1);
            }
            switch (It) {
              case "button":
              case "input":
              case "select":
              case "textarea":
                ne = !!ne.autoFocus;
                break t;
              case "img":
                ne = !0;
                break t;
              default:
                ne = !1;
            }
          }
          ne && (ft.flags |= 4);
        }
        ft.ref !== null && (ft.flags |= 512, ft.flags |= 2097152);
      }
      return cf(ft), null;
    case 6:
      if ($ && ft.stateNode != null) E_($, ft, $.memoizedProps, ne);
      else {
        if (typeof ne != "string" && ft.stateNode === null) throw Error(ga(166));
        if (It = v0(Cy.current), v0(pv.current), Wm(ft)) {
          if (ne = ft.stateNode, It = ft.memoizedProps, ne[dv] = ft, (Qe = ne.nodeValue !== It) && ($ = Jh, $ !== null)) switch ($.tag) {
            case 3:
              Gm(ne.nodeValue, It, ($.mode & 1) !== 0);
              break;
            case 5:
              $.memoizedProps.suppressHydrationWarning !== !0 && Gm(ne.nodeValue, It, ($.mode & 1) !== 0);
          }
          Qe && (ft.flags |= 4);
        } else ne = (It.nodeType === 9 ? It : It.ownerDocument).createTextNode(ne), ne[dv] = ft, ft.stateNode = ne;
      }
      return cf(ft), null;
    case 13:
      if (pl(kl), ne = ft.memoizedState, $ === null || $.memoizedState !== null && $.memoizedState.dehydrated !== null) {
        if (bl && Kh !== null && ft.mode & 1 && !(ft.flags & 128)) j5(), dg(), ft.flags |= 98560, Qe = !1;
        else if (Qe = Wm(ft), ne !== null && ne.dehydrated !== null) {
          if ($ === null) {
            if (!Qe) throw Error(ga(318));
            if (Qe = ft.memoizedState, Qe = Qe !== null ? Qe.dehydrated : null, !Qe) throw Error(ga(317));
            Qe[dv] = ft;
          } else dg(), !(ft.flags & 128) && (ft.memoizedState = null), ft.flags |= 4;
          cf(ft), Qe = !1;
        } else Qd !== null && (S3(Qd), Qd = null), Qe = !0;
        if (!Qe) return ft.flags & 65536 ? ft : null;
      }
      return ft.flags & 128 ? (ft.lanes = It, ft) : (ne = ne !== null, ne !== ($ !== null && $.memoizedState !== null) && ne && (ft.child.flags |= 8192, ft.mode & 1 && ($ === null || kl.current & 1 ? ju === 0 && (ju = 3) : vw())), ft.updateQueue !== null && (ft.flags |= 4), cf(ft), null);
    case 4:
      return pg(), y3($, ft), $ === null && Ay(ft.stateNode.containerInfo), cf(ft), null;
    case 10:
      return Q3(ft.type._context), cf(ft), null;
    case 17:
      return wh(ft.type) && y1(), cf(ft), null;
    case 19:
      if (pl(kl), Qe = ft.memoizedState, Qe === null) return cf(ft), null;
      if (ne = (ft.flags & 128) !== 0, Y = Qe.rendering, Y === null) if (ne) ey(Qe, !1);
      else {
        if (ju !== 0 || $ !== null && $.flags & 128) for ($ = ft.child; $ !== null; ) {
          if (Y = A1($), Y !== null) {
            for (ft.flags |= 128, ey(Qe, !1), ne = Y.updateQueue, ne !== null && (ft.updateQueue = ne, ft.flags |= 4), ft.subtreeFlags = 0, ne = It, It = ft.child; It !== null; ) Qe = It, $ = ne, Qe.flags &= 14680066, Y = Qe.alternate, Y === null ? (Qe.childLanes = 0, Qe.lanes = $, Qe.child = null, Qe.subtreeFlags = 0, Qe.memoizedProps = null, Qe.memoizedState = null, Qe.updateQueue = null, Qe.dependencies = null, Qe.stateNode = null) : (Qe.childLanes = Y.childLanes, Qe.lanes = Y.lanes, Qe.child = Y.child, Qe.subtreeFlags = 0, Qe.deletions = null, Qe.memoizedProps = Y.memoizedProps, Qe.memoizedState = Y.memoizedState, Qe.updateQueue = Y.updateQueue, Qe.type = Y.type, $ = Y.dependencies, Qe.dependencies = $ === null ? null : { lanes: $.lanes, firstContext: $.firstContext }), It = It.sibling;
            return nl(kl, kl.current & 1 | 2), ft.child;
          }
          $ = $.sibling;
        }
        Qe.tail !== null && lu() > yg && (ft.flags |= 128, ne = !0, ey(Qe, !1), ft.lanes = 4194304);
      }
      else {
        if (!ne) if ($ = A1(Y), $ !== null) {
          if (ft.flags |= 128, ne = !0, It = $.updateQueue, It !== null && (ft.updateQueue = It, ft.flags |= 4), ey(Qe, !0), Qe.tail === null && Qe.tailMode === "hidden" && !Y.alternate && !bl) return cf(ft), null;
        } else 2 * lu() - Qe.renderingStartTime > yg && It !== 1073741824 && (ft.flags |= 128, ne = !0, ey(Qe, !1), ft.lanes = 4194304);
        Qe.isBackwards ? (Y.sibling = ft.child, ft.child = Y) : (It = Qe.last, It !== null ? It.sibling = Y : ft.child = Y, Qe.last = Y);
      }
      return Qe.tail !== null ? (ft = Qe.tail, Qe.rendering = ft, Qe.tail = ft.sibling, Qe.renderingStartTime = lu(), ft.sibling = null, It = kl.current, nl(kl, ne ? It & 1 | 2 : It & 1), ft) : (cf(ft), null);
    case 22:
    case 23:
      return dw(), ne = ft.memoizedState !== null, $ !== null && $.memoizedState !== null !== ne && (ft.flags |= 8192), ne && ft.mode & 1 ? Yh & 1073741824 && (cf(ft), ft.subtreeFlags & 6 && (ft.flags |= 8192)) : cf(ft), null;
    case 24:
      return null;
    case 25:
      return null;
  }
  throw Error(ga(156, ft.tag));
}
function tA($, ft) {
  switch (X3(ft), ft.tag) {
    case 1:
      return wh(ft.type) && y1(), $ = ft.flags, $ & 65536 ? (ft.flags = $ & -65537 | 128, ft) : null;
    case 3:
      return pg(), pl(bh), pl(df), rw(), $ = ft.flags, $ & 65536 && !($ & 128) ? (ft.flags = $ & -65537 | 128, ft) : null;
    case 5:
      return ew(ft), null;
    case 13:
      if (pl(kl), $ = ft.memoizedState, $ !== null && $.dehydrated !== null) {
        if (ft.alternate === null) throw Error(ga(340));
        dg();
      }
      return $ = ft.flags, $ & 65536 ? (ft.flags = $ & -65537 | 128, ft) : null;
    case 19:
      return pl(kl), null;
    case 4:
      return pg(), null;
    case 10:
      return Q3(ft.type._context), null;
    case 22:
    case 23:
      return dw(), null;
    case 24:
      return null;
    default:
      return null;
  }
}
var Xm = !1, ff = !1, eA = typeof WeakSet == "function" ? WeakSet : Set, Qa = null;
function ng($, ft) {
  var It = $.ref;
  if (It !== null) if (typeof It == "function") try {
    It(null);
  } catch (ne) {
    Jl($, ft, ne);
  }
  else It.current = null;
}
function m3($, ft, It) {
  try {
    It();
  } catch (ne) {
    Jl($, ft, ne);
  }
}
var A2 = !1;
function rA($, ft) {
  if (e3 = d1, $ = R5(), j3($)) {
    if ("selectionStart" in $) var It = { start: $.selectionStart, end: $.selectionEnd };
    else t: {
      It = (It = $.ownerDocument) && It.defaultView || window;
      var ne = It.getSelection && It.getSelection();
      if (ne && ne.rangeCount !== 0) {
        It = ne.anchorNode;
        var ke = ne.anchorOffset, Qe = ne.focusNode;
        ne = ne.focusOffset;
        try {
          It.nodeType, Qe.nodeType;
        } catch {
          It = null;
          break t;
        }
        var Y = 0, K = -1, e = -1, b = 0, P = 0, n = $, s = null;
        e: for (; ; ) {
          for (var T; n !== It || ke !== 0 && n.nodeType !== 3 || (K = Y + ke), n !== Qe || ne !== 0 && n.nodeType !== 3 || (e = Y + ne), n.nodeType === 3 && (Y += n.nodeValue.length), (T = n.firstChild) !== null; )
            s = n, n = T;
          for (; ; ) {
            if (n === $) break e;
            if (s === It && ++b === ke && (K = Y), s === Qe && ++P === ne && (e = Y), (T = n.nextSibling) !== null) break;
            n = s, s = n.parentNode;
          }
          n = T;
        }
        It = K === -1 || e === -1 ? null : { start: K, end: e };
      } else It = null;
    }
    It = It || { start: 0, end: 0 };
  } else It = null;
  for (r3 = { focusedElem: $, selectionRange: It }, d1 = !1, Qa = ft; Qa !== null; ) if (ft = Qa, $ = ft.child, (ft.subtreeFlags & 1028) !== 0 && $ !== null) $.return = ft, Qa = $;
  else for (; Qa !== null; ) {
    ft = Qa;
    try {
      var A = ft.alternate;
      if (ft.flags & 1024) switch (ft.tag) {
        case 0:
        case 11:
        case 15:
          break;
        case 1:
          if (A !== null) {
            var p = A.memoizedProps, u = A.memoizedState, t = ft.stateNode, r = t.getSnapshotBeforeUpdate(ft.elementType === ft.type ? p : Kd(ft.type, p), u);
            t.__reactInternalSnapshotBeforeUpdate = r;
          }
          break;
        case 3:
          var i = ft.stateNode.containerInfo;
          i.nodeType === 1 ? i.textContent = "" : i.nodeType === 9 && i.documentElement && i.removeChild(i.documentElement);
          break;
        case 5:
        case 6:
        case 4:
        case 17:
          break;
        default:
          throw Error(ga(163));
      }
    } catch (a) {
      Jl(ft, ft.return, a);
    }
    if ($ = ft.sibling, $ !== null) {
      $.return = ft.return, Qa = $;
      break;
    }
    Qa = ft.return;
  }
  return A = A2, A2 = !1, A;
}
function dy($, ft, It) {
  var ne = ft.updateQueue;
  if (ne = ne !== null ? ne.lastEffect : null, ne !== null) {
    var ke = ne = ne.next;
    do {
      if ((ke.tag & $) === $) {
        var Qe = ke.destroy;
        ke.destroy = void 0, Qe !== void 0 && m3(ft, It, Qe);
      }
      ke = ke.next;
    } while (ke !== ne);
  }
}
function U1($, ft) {
  if (ft = ft.updateQueue, ft = ft !== null ? ft.lastEffect : null, ft !== null) {
    var It = ft = ft.next;
    do {
      if ((It.tag & $) === $) {
        var ne = It.create;
        It.destroy = ne();
      }
      It = It.next;
    } while (It !== ft);
  }
}
function x3($) {
  var ft = $.ref;
  if (ft !== null) {
    var It = $.stateNode;
    switch ($.tag) {
      case 5:
        $ = It;
        break;
      default:
        $ = It;
    }
    typeof ft == "function" ? ft($) : ft.current = $;
  }
}
function C_($) {
  var ft = $.alternate;
  ft !== null && ($.alternate = null, C_(ft)), $.child = null, $.deletions = null, $.sibling = null, $.tag === 5 && (ft = $.stateNode, ft !== null && (delete ft[dv], delete ft[My], delete ft[a3], delete ft[B4], delete ft[N4])), $.stateNode = null, $.return = null, $.dependencies = null, $.memoizedProps = null, $.memoizedState = null, $.pendingProps = null, $.stateNode = null, $.updateQueue = null;
}
function L_($) {
  return $.tag === 5 || $.tag === 3 || $.tag === 4;
}
function S2($) {
  t: for (; ; ) {
    for (; $.sibling === null; ) {
      if ($.return === null || L_($.return)) return null;
      $ = $.return;
    }
    for ($.sibling.return = $.return, $ = $.sibling; $.tag !== 5 && $.tag !== 6 && $.tag !== 18; ) {
      if ($.flags & 2 || $.child === null || $.tag === 4) continue t;
      $.child.return = $, $ = $.child;
    }
    if (!($.flags & 2)) return $.stateNode;
  }
}
function b3($, ft, It) {
  var ne = $.tag;
  if (ne === 5 || ne === 6) $ = $.stateNode, ft ? It.nodeType === 8 ? It.parentNode.insertBefore($, ft) : It.insertBefore($, ft) : (It.nodeType === 8 ? (ft = It.parentNode, ft.insertBefore($, It)) : (ft = It, ft.appendChild($)), It = It._reactRootContainer, It != null || ft.onclick !== null || (ft.onclick = g1));
  else if (ne !== 4 && ($ = $.child, $ !== null)) for (b3($, ft, It), $ = $.sibling; $ !== null; ) b3($, ft, It), $ = $.sibling;
}
function w3($, ft, It) {
  var ne = $.tag;
  if (ne === 5 || ne === 6) $ = $.stateNode, ft ? It.insertBefore($, ft) : It.appendChild($);
  else if (ne !== 4 && ($ = $.child, $ !== null)) for (w3($, ft, It), $ = $.sibling; $ !== null; ) w3($, ft, It), $ = $.sibling;
}
var Dc = null, Jd = !1;
function vp($, ft, It) {
  for (It = It.child; It !== null; ) P_($, ft, It), It = It.sibling;
}
function P_($, ft, It) {
  if (vv && typeof vv.onCommitFiberUnmount == "function") try {
    vv.onCommitFiberUnmount(R1, It);
  } catch {
  }
  switch (It.tag) {
    case 5:
      ff || ng(It, ft);
    case 6:
      var ne = Dc, ke = Jd;
      Dc = null, vp($, ft, It), Dc = ne, Jd = ke, Dc !== null && (Jd ? ($ = Dc, It = It.stateNode, $.nodeType === 8 ? $.parentNode.removeChild(It) : $.removeChild(It)) : Dc.removeChild(It.stateNode));
      break;
    case 18:
      Dc !== null && (Jd ? ($ = Dc, It = It.stateNode, $.nodeType === 8 ? Tb($.parentNode, It) : $.nodeType === 1 && Tb($, It), wy($)) : Tb(Dc, It.stateNode));
      break;
    case 4:
      ne = Dc, ke = Jd, Dc = It.stateNode.containerInfo, Jd = !0, vp($, ft, It), Dc = ne, Jd = ke;
      break;
    case 0:
    case 11:
    case 14:
    case 15:
      if (!ff && (ne = It.updateQueue, ne !== null && (ne = ne.lastEffect, ne !== null))) {
        ke = ne = ne.next;
        do {
          var Qe = ke, Y = Qe.destroy;
          Qe = Qe.tag, Y !== void 0 && (Qe & 2 || Qe & 4) && m3(It, ft, Y), ke = ke.next;
        } while (ke !== ne);
      }
      vp($, ft, It);
      break;
    case 1:
      if (!ff && (ng(It, ft), ne = It.stateNode, typeof ne.componentWillUnmount == "function")) try {
        ne.props = It.memoizedProps, ne.state = It.memoizedState, ne.componentWillUnmount();
      } catch (K) {
        Jl(It, ft, K);
      }
      vp($, ft, It);
      break;
    case 21:
      vp($, ft, It);
      break;
    case 22:
      It.mode & 1 ? (ff = (ne = ff) || It.memoizedState !== null, vp($, ft, It), ff = ne) : vp($, ft, It);
      break;
    default:
      vp($, ft, It);
  }
}
function M2($) {
  var ft = $.updateQueue;
  if (ft !== null) {
    $.updateQueue = null;
    var It = $.stateNode;
    It === null && (It = $.stateNode = new eA()), ft.forEach(function(ne) {
      var ke = fA.bind(null, $, ne);
      It.has(ne) || (It.add(ne), ne.then(ke, ke));
    });
  }
}
function Yd($, ft) {
  var It = ft.deletions;
  if (It !== null) for (var ne = 0; ne < It.length; ne++) {
    var ke = It[ne];
    try {
      var Qe = $, Y = ft, K = Y;
      t: for (; K !== null; ) {
        switch (K.tag) {
          case 5:
            Dc = K.stateNode, Jd = !1;
            break t;
          case 3:
            Dc = K.stateNode.containerInfo, Jd = !0;
            break t;
          case 4:
            Dc = K.stateNode.containerInfo, Jd = !0;
            break t;
        }
        K = K.return;
      }
      if (Dc === null) throw Error(ga(160));
      P_(Qe, Y, ke), Dc = null, Jd = !1;
      var e = ke.alternate;
      e !== null && (e.return = null), ke.return = null;
    } catch (b) {
      Jl(ke, ft, b);
    }
  }
  if (ft.subtreeFlags & 12854) for (ft = ft.child; ft !== null; ) I_(ft, $), ft = ft.sibling;
}
function I_($, ft) {
  var It = $.alternate, ne = $.flags;
  switch ($.tag) {
    case 0:
    case 11:
    case 14:
    case 15:
      if (Yd(ft, $), fv($), ne & 4) {
        try {
          dy(3, $, $.return), U1(3, $);
        } catch (p) {
          Jl($, $.return, p);
        }
        try {
          dy(5, $, $.return);
        } catch (p) {
          Jl($, $.return, p);
        }
      }
      break;
    case 1:
      Yd(ft, $), fv($), ne & 512 && It !== null && ng(It, It.return);
      break;
    case 5:
      if (Yd(ft, $), fv($), ne & 512 && It !== null && ng(It, It.return), $.flags & 32) {
        var ke = $.stateNode;
        try {
          yy(ke, "");
        } catch (p) {
          Jl($, $.return, p);
        }
      }
      if (ne & 4 && (ke = $.stateNode, ke != null)) {
        var Qe = $.memoizedProps, Y = It !== null ? It.memoizedProps : Qe, K = $.type, e = $.updateQueue;
        if ($.updateQueue = null, e !== null) try {
          K === "input" && Qe.type === "radio" && Qe.name != null && q2(ke, Qe), jb(K, Y);
          var b = jb(K, Qe);
          for (Y = 0; Y < e.length; Y += 2) {
            var P = e[Y], n = e[Y + 1];
            P === "style" ? i5(ke, n) : P === "dangerouslySetInnerHTML" ? r5(ke, n) : P === "children" ? yy(ke, n) : R3(ke, P, n, b);
          }
          switch (K) {
            case "input":
              Ub(ke, Qe);
              break;
            case "textarea":
              t5(ke, Qe);
              break;
            case "select":
              var s = ke._wrapperState.wasMultiple;
              ke._wrapperState.wasMultiple = !!Qe.multiple;
              var T = Qe.value;
              T != null ? ag(ke, !!Qe.multiple, T, !1) : s !== !!Qe.multiple && (Qe.defaultValue != null ? ag(
                ke,
                !!Qe.multiple,
                Qe.defaultValue,
                !0
              ) : ag(ke, !!Qe.multiple, Qe.multiple ? [] : "", !1));
          }
          ke[My] = Qe;
        } catch (p) {
          Jl($, $.return, p);
        }
      }
      break;
    case 6:
      if (Yd(ft, $), fv($), ne & 4) {
        if ($.stateNode === null) throw Error(ga(162));
        ke = $.stateNode, Qe = $.memoizedProps;
        try {
          ke.nodeValue = Qe;
        } catch (p) {
          Jl($, $.return, p);
        }
      }
      break;
    case 3:
      if (Yd(ft, $), fv($), ne & 4 && It !== null && It.memoizedState.isDehydrated) try {
        wy(ft.containerInfo);
      } catch (p) {
        Jl($, $.return, p);
      }
      break;
    case 4:
      Yd(ft, $), fv($);
      break;
    case 13:
      Yd(ft, $), fv($), ke = $.child, ke.flags & 8192 && (Qe = ke.memoizedState !== null, ke.stateNode.isHidden = Qe, !Qe || ke.alternate !== null && ke.alternate.memoizedState !== null || (fw = lu())), ne & 4 && M2($);
      break;
    case 22:
      if (P = It !== null && It.memoizedState !== null, $.mode & 1 ? (ff = (b = ff) || P, Yd(ft, $), ff = b) : Yd(ft, $), fv($), ne & 8192) {
        if (b = $.memoizedState !== null, ($.stateNode.isHidden = b) && !P && $.mode & 1) for (Qa = $, P = $.child; P !== null; ) {
          for (n = Qa = P; Qa !== null; ) {
            switch (s = Qa, T = s.child, s.tag) {
              case 0:
              case 11:
              case 14:
              case 15:
                dy(4, s, s.return);
                break;
              case 1:
                ng(s, s.return);
                var A = s.stateNode;
                if (typeof A.componentWillUnmount == "function") {
                  ne = s, It = s.return;
                  try {
                    ft = ne, A.props = ft.memoizedProps, A.state = ft.memoizedState, A.componentWillUnmount();
                  } catch (p) {
                    Jl(ne, It, p);
                  }
                }
                break;
              case 5:
                ng(s, s.return);
                break;
              case 22:
                if (s.memoizedState !== null) {
                  C2(n);
                  continue;
                }
            }
            T !== null ? (T.return = s, Qa = T) : C2(n);
          }
          P = P.sibling;
        }
        t: for (P = null, n = $; ; ) {
          if (n.tag === 5) {
            if (P === null) {
              P = n;
              try {
                ke = n.stateNode, b ? (Qe = ke.style, typeof Qe.setProperty == "function" ? Qe.setProperty("display", "none", "important") : Qe.display = "none") : (K = n.stateNode, e = n.memoizedProps.style, Y = e != null && e.hasOwnProperty("display") ? e.display : null, K.style.display = n5("display", Y));
              } catch (p) {
                Jl($, $.return, p);
              }
            }
          } else if (n.tag === 6) {
            if (P === null) try {
              n.stateNode.nodeValue = b ? "" : n.memoizedProps;
            } catch (p) {
              Jl($, $.return, p);
            }
          } else if ((n.tag !== 22 && n.tag !== 23 || n.memoizedState === null || n === $) && n.child !== null) {
            n.child.return = n, n = n.child;
            continue;
          }
          if (n === $) break t;
          for (; n.sibling === null; ) {
            if (n.return === null || n.return === $) break t;
            P === n && (P = null), n = n.return;
          }
          P === n && (P = null), n.sibling.return = n.return, n = n.sibling;
        }
      }
      break;
    case 19:
      Yd(ft, $), fv($), ne & 4 && M2($);
      break;
    case 21:
      break;
    default:
      Yd(
        ft,
        $
      ), fv($);
  }
}
function fv($) {
  var ft = $.flags;
  if (ft & 2) {
    try {
      t: {
        for (var It = $.return; It !== null; ) {
          if (L_(It)) {
            var ne = It;
            break t;
          }
          It = It.return;
        }
        throw Error(ga(160));
      }
      switch (ne.tag) {
        case 5:
          var ke = ne.stateNode;
          ne.flags & 32 && (yy(ke, ""), ne.flags &= -33);
          var Qe = S2($);
          w3($, Qe, ke);
          break;
        case 3:
        case 4:
          var Y = ne.stateNode.containerInfo, K = S2($);
          b3($, K, Y);
          break;
        default:
          throw Error(ga(161));
      }
    } catch (e) {
      Jl($, $.return, e);
    }
    $.flags &= -3;
  }
  ft & 4096 && ($.flags &= -4097);
}
function nA($, ft, It) {
  Qa = $, R_($);
}
function R_($, ft, It) {
  for (var ne = ($.mode & 1) !== 0; Qa !== null; ) {
    var ke = Qa, Qe = ke.child;
    if (ke.tag === 22 && ne) {
      var Y = ke.memoizedState !== null || Xm;
      if (!Y) {
        var K = ke.alternate, e = K !== null && K.memoizedState !== null || ff;
        K = Xm;
        var b = ff;
        if (Xm = Y, (ff = e) && !b) for (Qa = ke; Qa !== null; ) Y = Qa, e = Y.child, Y.tag === 22 && Y.memoizedState !== null ? L2(ke) : e !== null ? (e.return = Y, Qa = e) : L2(ke);
        for (; Qe !== null; ) Qa = Qe, R_(Qe), Qe = Qe.sibling;
        Qa = ke, Xm = K, ff = b;
      }
      E2($);
    } else ke.subtreeFlags & 8772 && Qe !== null ? (Qe.return = ke, Qa = Qe) : E2($);
  }
}
function E2($) {
  for (; Qa !== null; ) {
    var ft = Qa;
    if (ft.flags & 8772) {
      var It = ft.alternate;
      try {
        if (ft.flags & 8772) switch (ft.tag) {
          case 0:
          case 11:
          case 15:
            ff || U1(5, ft);
            break;
          case 1:
            var ne = ft.stateNode;
            if (ft.flags & 4 && !ff) if (It === null) ne.componentDidMount();
            else {
              var ke = ft.elementType === ft.type ? It.memoizedProps : Kd(ft.type, It.memoizedProps);
              ne.componentDidUpdate(ke, It.memoizedState, ne.__reactInternalSnapshotBeforeUpdate);
            }
            var Qe = ft.updateQueue;
            Qe !== null && f2(ft, Qe, ne);
            break;
          case 3:
            var Y = ft.updateQueue;
            if (Y !== null) {
              if (It = null, ft.child !== null) switch (ft.child.tag) {
                case 5:
                  It = ft.child.stateNode;
                  break;
                case 1:
                  It = ft.child.stateNode;
              }
              f2(ft, Y, It);
            }
            break;
          case 5:
            var K = ft.stateNode;
            if (It === null && ft.flags & 4) {
              It = K;
              var e = ft.memoizedProps;
              switch (ft.type) {
                case "button":
                case "input":
                case "select":
                case "textarea":
                  e.autoFocus && It.focus();
                  break;
                case "img":
                  e.src && (It.src = e.src);
              }
            }
            break;
          case 6:
            break;
          case 4:
            break;
          case 12:
            break;
          case 13:
            if (ft.memoizedState === null) {
              var b = ft.alternate;
              if (b !== null) {
                var P = b.memoizedState;
                if (P !== null) {
                  var n = P.dehydrated;
                  n !== null && wy(n);
                }
              }
            }
            break;
          case 19:
          case 17:
          case 21:
          case 22:
          case 23:
          case 25:
            break;
          default:
            throw Error(ga(163));
        }
        ff || ft.flags & 512 && x3(ft);
      } catch (s) {
        Jl(ft, ft.return, s);
      }
    }
    if (ft === $) {
      Qa = null;
      break;
    }
    if (It = ft.sibling, It !== null) {
      It.return = ft.return, Qa = It;
      break;
    }
    Qa = ft.return;
  }
}
function C2($) {
  for (; Qa !== null; ) {
    var ft = Qa;
    if (ft === $) {
      Qa = null;
      break;
    }
    var It = ft.sibling;
    if (It !== null) {
      It.return = ft.return, Qa = It;
      break;
    }
    Qa = ft.return;
  }
}
function L2($) {
  for (; Qa !== null; ) {
    var ft = Qa;
    try {
      switch (ft.tag) {
        case 0:
        case 11:
        case 15:
          var It = ft.return;
          try {
            U1(4, ft);
          } catch (e) {
            Jl(ft, It, e);
          }
          break;
        case 1:
          var ne = ft.stateNode;
          if (typeof ne.componentDidMount == "function") {
            var ke = ft.return;
            try {
              ne.componentDidMount();
            } catch (e) {
              Jl(ft, ke, e);
            }
          }
          var Qe = ft.return;
          try {
            x3(ft);
          } catch (e) {
            Jl(ft, Qe, e);
          }
          break;
        case 5:
          var Y = ft.return;
          try {
            x3(ft);
          } catch (e) {
            Jl(ft, Y, e);
          }
      }
    } catch (e) {
      Jl(ft, ft.return, e);
    }
    if (ft === $) {
      Qa = null;
      break;
    }
    var K = ft.sibling;
    if (K !== null) {
      K.return = ft.return, Qa = K;
      break;
    }
    Qa = ft.return;
  }
}
var iA = Math.ceil, E1 = Vv.ReactCurrentDispatcher, uw = Vv.ReactCurrentOwner, Ed = Vv.ReactCurrentBatchConfig, hs = 0, yc = null, Eu = null, kc = 0, Yh = 0, ig = Rp(0), ju = 0, Ry = null, b0 = 0, V1 = 0, cw = 0, vy = null, mh = null, fw = 0, yg = 1 / 0, Rv = null, C1 = !1, _3 = null, Mp = null, Ym = !1, bp = null, L1 = 0, py = 0, T3 = null, a1 = -1, o1 = 0;
function Uf() {
  return hs & 6 ? lu() : a1 !== -1 ? a1 : a1 = lu();
}
function Ep($) {
  return $.mode & 1 ? hs & 2 && kc !== 0 ? kc & -kc : V4.transition !== null ? (o1 === 0 && (o1 = g5()), o1) : ($ = ks, $ !== 0 || ($ = window.event, $ = $ === void 0 ? 16 : T5($.type)), $) : 1;
}
function qd($, ft, It, ne) {
  if (50 < py) throw py = 0, T3 = null, Error(ga(185));
  ky($, It, ne), (!(hs & 2) || $ !== yc) && ($ === yc && (!(hs & 2) && (V1 |= It), ju === 4 && mp($, kc)), _h($, ne), It === 1 && hs === 0 && !(ft.mode & 1) && (yg = lu() + 500, O1 && Dp()));
}
function _h($, ft) {
  var It = $.callbackNode;
  VT($, ft);
  var ne = h1($, $ === yc ? kc : 0);
  if (ne === 0) It !== null && Bw(It), $.callbackNode = null, $.callbackPriority = 0;
  else if (ft = ne & -ne, $.callbackPriority !== ft) {
    if (It != null && Bw(It), ft === 1) $.tag === 0 ? U4(P2.bind(null, $)) : H5(P2.bind(null, $)), F4(function() {
      !(hs & 6) && Dp();
    }), It = null;
    else {
      switch (y5(ne)) {
        case 1:
          It = O3;
          break;
        case 4:
          It = v5;
          break;
        case 16:
          It = f1;
          break;
        case 536870912:
          It = p5;
          break;
        default:
          It = f1;
      }
      It = U_(It, D_.bind(null, $));
    }
    $.callbackPriority = ft, $.callbackNode = It;
  }
}
function D_($, ft) {
  if (a1 = -1, o1 = 0, hs & 6) throw Error(ga(327));
  var It = $.callbackNode;
  if (cg() && $.callbackNode !== It) return null;
  var ne = h1($, $ === yc ? kc : 0);
  if (ne === 0) return null;
  if (ne & 30 || ne & $.expiredLanes || ft) ft = P1($, ne);
  else {
    ft = ne;
    var ke = hs;
    hs |= 2;
    var Qe = z_();
    (yc !== $ || kc !== ft) && (Rv = null, yg = lu() + 500, p0($, ft));
    do
      try {
        sA();
        break;
      } catch (K) {
        k_($, K);
      }
    while (!0);
    J3(), E1.current = Qe, hs = ke, Eu !== null ? ft = 0 : (yc = null, kc = 0, ft = ju);
  }
  if (ft !== 0) {
    if (ft === 2 && (ke = Jb($), ke !== 0 && (ne = ke, ft = A3($, ke))), ft === 1) throw It = Ry, p0($, 0), mp($, ne), _h($, lu()), It;
    if (ft === 6) mp($, ne);
    else {
      if (ke = $.current.alternate, !(ne & 30) && !aA(ke) && (ft = P1($, ne), ft === 2 && (Qe = Jb($), Qe !== 0 && (ne = Qe, ft = A3($, Qe))), ft === 1)) throw It = Ry, p0($, 0), mp($, ne), _h($, lu()), It;
      switch ($.finishedWork = ke, $.finishedLanes = ne, ft) {
        case 0:
        case 1:
          throw Error(ga(345));
        case 2:
          f0($, mh, Rv);
          break;
        case 3:
          if (mp($, ne), (ne & 130023424) === ne && (ft = fw + 500 - lu(), 10 < ft)) {
            if (h1($, 0) !== 0) break;
            if (ke = $.suspendedLanes, (ke & ne) !== ne) {
              Uf(), $.pingedLanes |= $.suspendedLanes & ke;
              break;
            }
            $.timeoutHandle = i3(f0.bind(null, $, mh, Rv), ft);
            break;
          }
          f0($, mh, Rv);
          break;
        case 4:
          if (mp($, ne), (ne & 4194240) === ne) break;
          for (ft = $.eventTimes, ke = -1; 0 < ne; ) {
            var Y = 31 - $d(ne);
            Qe = 1 << Y, Y = ft[Y], Y > ke && (ke = Y), ne &= ~Qe;
          }
          if (ne = ke, ne = lu() - ne, ne = (120 > ne ? 120 : 480 > ne ? 480 : 1080 > ne ? 1080 : 1920 > ne ? 1920 : 3e3 > ne ? 3e3 : 4320 > ne ? 4320 : 1960 * iA(ne / 1960)) - ne, 10 < ne) {
            $.timeoutHandle = i3(f0.bind(null, $, mh, Rv), ne);
            break;
          }
          f0($, mh, Rv);
          break;
        case 5:
          f0($, mh, Rv);
          break;
        default:
          throw Error(ga(329));
      }
    }
  }
  return _h($, lu()), $.callbackNode === It ? D_.bind(null, $) : null;
}
function A3($, ft) {
  var It = vy;
  return $.current.memoizedState.isDehydrated && (p0($, ft).flags |= 256), $ = P1($, ft), $ !== 2 && (ft = mh, mh = It, ft !== null && S3(ft)), $;
}
function S3($) {
  mh === null ? mh = $ : mh.push.apply(mh, $);
}
function aA($) {
  for (var ft = $; ; ) {
    if (ft.flags & 16384) {
      var It = ft.updateQueue;
      if (It !== null && (It = It.stores, It !== null)) for (var ne = 0; ne < It.length; ne++) {
        var ke = It[ne], Qe = ke.getSnapshot;
        ke = ke.value;
        try {
          if (!tv(Qe(), ke)) return !1;
        } catch {
          return !1;
        }
      }
    }
    if (It = ft.child, ft.subtreeFlags & 16384 && It !== null) It.return = ft, ft = It;
    else {
      if (ft === $) break;
      for (; ft.sibling === null; ) {
        if (ft.return === null || ft.return === $) return !0;
        ft = ft.return;
      }
      ft.sibling.return = ft.return, ft = ft.sibling;
    }
  }
  return !0;
}
function mp($, ft) {
  for (ft &= ~cw, ft &= ~V1, $.suspendedLanes |= ft, $.pingedLanes &= ~ft, $ = $.expirationTimes; 0 < ft; ) {
    var It = 31 - $d(ft), ne = 1 << It;
    $[It] = -1, ft &= ~ne;
  }
}
function P2($) {
  if (hs & 6) throw Error(ga(327));
  cg();
  var ft = h1($, 0);
  if (!(ft & 1)) return _h($, lu()), null;
  var It = P1($, ft);
  if ($.tag !== 0 && It === 2) {
    var ne = Jb($);
    ne !== 0 && (ft = ne, It = A3($, ne));
  }
  if (It === 1) throw It = Ry, p0($, 0), mp($, ft), _h($, lu()), It;
  if (It === 6) throw Error(ga(345));
  return $.finishedWork = $.current.alternate, $.finishedLanes = ft, f0($, mh, Rv), _h($, lu()), null;
}
function hw($, ft) {
  var It = hs;
  hs |= 1;
  try {
    return $(ft);
  } finally {
    hs = It, hs === 0 && (yg = lu() + 500, O1 && Dp());
  }
}
function w0($) {
  bp !== null && bp.tag === 0 && !(hs & 6) && cg();
  var ft = hs;
  hs |= 1;
  var It = Ed.transition, ne = ks;
  try {
    if (Ed.transition = null, ks = 1, $) return $();
  } finally {
    ks = ne, Ed.transition = It, hs = ft, !(hs & 6) && Dp();
  }
}
function dw() {
  Yh = ig.current, pl(ig);
}
function p0($, ft) {
  $.finishedWork = null, $.finishedLanes = 0;
  var It = $.timeoutHandle;
  if (It !== -1 && ($.timeoutHandle = -1, z4(It)), Eu !== null) for (It = Eu.return; It !== null; ) {
    var ne = It;
    switch (X3(ne), ne.tag) {
      case 1:
        ne = ne.type.childContextTypes, ne != null && y1();
        break;
      case 3:
        pg(), pl(bh), pl(df), rw();
        break;
      case 5:
        ew(ne);
        break;
      case 4:
        pg();
        break;
      case 13:
        pl(kl);
        break;
      case 19:
        pl(kl);
        break;
      case 10:
        Q3(ne.type._context);
        break;
      case 22:
      case 23:
        dw();
    }
    It = It.return;
  }
  if (yc = $, Eu = $ = Cp($.current, null), kc = Yh = ft, ju = 0, Ry = null, cw = V1 = b0 = 0, mh = vy = null, d0 !== null) {
    for (ft = 0; ft < d0.length; ft++) if (It = d0[ft], ne = It.interleaved, ne !== null) {
      It.interleaved = null;
      var ke = ne.next, Qe = It.pending;
      if (Qe !== null) {
        var Y = Qe.next;
        Qe.next = ke, ne.next = Y;
      }
      It.pending = ne;
    }
    d0 = null;
  }
  return $;
}
function k_($, ft) {
  do {
    var It = Eu;
    try {
      if (J3(), r1.current = M1, S1) {
        for (var ne = zl.memoizedState; ne !== null; ) {
          var ke = ne.queue;
          ke !== null && (ke.pending = null), ne = ne.next;
        }
        S1 = !1;
      }
      if (x0 = 0, gc = Wu = zl = null, hy = !1, Ly = 0, uw.current = null, It === null || It.return === null) {
        ju = 1, Ry = ft, Eu = null;
        break;
      }
      t: {
        var Qe = $, Y = It.return, K = It, e = ft;
        if (ft = kc, K.flags |= 32768, e !== null && typeof e == "object" && typeof e.then == "function") {
          var b = e, P = K, n = P.tag;
          if (!(P.mode & 1) && (n === 0 || n === 11 || n === 15)) {
            var s = P.alternate;
            s ? (P.updateQueue = s.updateQueue, P.memoizedState = s.memoizedState, P.lanes = s.lanes) : (P.updateQueue = null, P.memoizedState = null);
          }
          var T = y2(Y);
          if (T !== null) {
            T.flags &= -257, m2(T, Y, K, Qe, ft), T.mode & 1 && g2(Qe, b, ft), ft = T, e = b;
            var A = ft.updateQueue;
            if (A === null) {
              var p = /* @__PURE__ */ new Set();
              p.add(e), ft.updateQueue = p;
            } else A.add(e);
            break t;
          } else {
            if (!(ft & 1)) {
              g2(Qe, b, ft), vw();
              break t;
            }
            e = Error(ga(426));
          }
        } else if (bl && K.mode & 1) {
          var u = y2(Y);
          if (u !== null) {
            !(u.flags & 65536) && (u.flags |= 256), m2(u, Y, K, Qe, ft), Y3(gg(e, K));
            break t;
          }
        }
        Qe = e = gg(e, K), ju !== 4 && (ju = 2), vy === null ? vy = [Qe] : vy.push(Qe), Qe = Y;
        do {
          switch (Qe.tag) {
            case 3:
              Qe.flags |= 65536, ft &= -ft, Qe.lanes |= ft;
              var t = y_(Qe, e, ft);
              c2(Qe, t);
              break t;
            case 1:
              K = e;
              var r = Qe.type, i = Qe.stateNode;
              if (!(Qe.flags & 128) && (typeof r.getDerivedStateFromError == "function" || i !== null && typeof i.componentDidCatch == "function" && (Mp === null || !Mp.has(i)))) {
                Qe.flags |= 65536, ft &= -ft, Qe.lanes |= ft;
                var a = m_(Qe, K, ft);
                c2(Qe, a);
                break t;
              }
          }
          Qe = Qe.return;
        } while (Qe !== null);
      }
      O_(It);
    } catch (l) {
      ft = l, Eu === It && It !== null && (Eu = It = It.return);
      continue;
    }
    break;
  } while (!0);
}
function z_() {
  var $ = E1.current;
  return E1.current = M1, $ === null ? M1 : $;
}
function vw() {
  (ju === 0 || ju === 3 || ju === 2) && (ju = 4), yc === null || !(b0 & 268435455) && !(V1 & 268435455) || mp(yc, kc);
}
function P1($, ft) {
  var It = hs;
  hs |= 2;
  var ne = z_();
  (yc !== $ || kc !== ft) && (Rv = null, p0($, ft));
  do
    try {
      oA();
      break;
    } catch (ke) {
      k_($, ke);
    }
  while (!0);
  if (J3(), hs = It, E1.current = ne, Eu !== null) throw Error(ga(261));
  return yc = null, kc = 0, ju;
}
function oA() {
  for (; Eu !== null; ) F_(Eu);
}
function sA() {
  for (; Eu !== null && !RT(); ) F_(Eu);
}
function F_($) {
  var ft = N_($.alternate, $, Yh);
  $.memoizedProps = $.pendingProps, ft === null ? O_($) : Eu = ft, uw.current = null;
}
function O_($) {
  var ft = $;
  do {
    var It = ft.alternate;
    if ($ = ft.return, ft.flags & 32768) {
      if (It = tA(It, ft), It !== null) {
        It.flags &= 32767, Eu = It;
        return;
      }
      if ($ !== null) $.flags |= 32768, $.subtreeFlags = 0, $.deletions = null;
      else {
        ju = 6, Eu = null;
        return;
      }
    } else if (It = q4(It, ft, Yh), It !== null) {
      Eu = It;
      return;
    }
    if (ft = ft.sibling, ft !== null) {
      Eu = ft;
      return;
    }
    Eu = ft = $;
  } while (ft !== null);
  ju === 0 && (ju = 5);
}
function f0($, ft, It) {
  var ne = ks, ke = Ed.transition;
  try {
    Ed.transition = null, ks = 1, lA($, ft, It, ne);
  } finally {
    Ed.transition = ke, ks = ne;
  }
  return null;
}
function lA($, ft, It, ne) {
  do
    cg();
  while (bp !== null);
  if (hs & 6) throw Error(ga(327));
  It = $.finishedWork;
  var ke = $.finishedLanes;
  if (It === null) return null;
  if ($.finishedWork = null, $.finishedLanes = 0, It === $.current) throw Error(ga(177));
  $.callbackNode = null, $.callbackPriority = 0;
  var Qe = It.lanes | It.childLanes;
  if (HT($, Qe), $ === yc && (Eu = yc = null, kc = 0), !(It.subtreeFlags & 2064) && !(It.flags & 2064) || Ym || (Ym = !0, U_(f1, function() {
    return cg(), null;
  })), Qe = (It.flags & 15990) !== 0, It.subtreeFlags & 15990 || Qe) {
    Qe = Ed.transition, Ed.transition = null;
    var Y = ks;
    ks = 1;
    var K = hs;
    hs |= 4, uw.current = null, rA($, It), I_(It, $), C4(r3), d1 = !!e3, r3 = e3 = null, $.current = It, nA(It), DT(), hs = K, ks = Y, Ed.transition = Qe;
  } else $.current = It;
  if (Ym && (Ym = !1, bp = $, L1 = ke), Qe = $.pendingLanes, Qe === 0 && (Mp = null), FT(It.stateNode), _h($, lu()), ft !== null) for (ne = $.onRecoverableError, It = 0; It < ft.length; It++) ke = ft[It], ne(ke.value, { componentStack: ke.stack, digest: ke.digest });
  if (C1) throw C1 = !1, $ = _3, _3 = null, $;
  return L1 & 1 && $.tag !== 0 && cg(), Qe = $.pendingLanes, Qe & 1 ? $ === T3 ? py++ : (py = 0, T3 = $) : py = 0, Dp(), null;
}
function cg() {
  if (bp !== null) {
    var $ = y5(L1), ft = Ed.transition, It = ks;
    try {
      if (Ed.transition = null, ks = 16 > $ ? 16 : $, bp === null) var ne = !1;
      else {
        if ($ = bp, bp = null, L1 = 0, hs & 6) throw Error(ga(331));
        var ke = hs;
        for (hs |= 4, Qa = $.current; Qa !== null; ) {
          var Qe = Qa, Y = Qe.child;
          if (Qa.flags & 16) {
            var K = Qe.deletions;
            if (K !== null) {
              for (var e = 0; e < K.length; e++) {
                var b = K[e];
                for (Qa = b; Qa !== null; ) {
                  var P = Qa;
                  switch (P.tag) {
                    case 0:
                    case 11:
                    case 15:
                      dy(8, P, Qe);
                  }
                  var n = P.child;
                  if (n !== null) n.return = P, Qa = n;
                  else for (; Qa !== null; ) {
                    P = Qa;
                    var s = P.sibling, T = P.return;
                    if (C_(P), P === b) {
                      Qa = null;
                      break;
                    }
                    if (s !== null) {
                      s.return = T, Qa = s;
                      break;
                    }
                    Qa = T;
                  }
                }
              }
              var A = Qe.alternate;
              if (A !== null) {
                var p = A.child;
                if (p !== null) {
                  A.child = null;
                  do {
                    var u = p.sibling;
                    p.sibling = null, p = u;
                  } while (p !== null);
                }
              }
              Qa = Qe;
            }
          }
          if (Qe.subtreeFlags & 2064 && Y !== null) Y.return = Qe, Qa = Y;
          else t: for (; Qa !== null; ) {
            if (Qe = Qa, Qe.flags & 2048) switch (Qe.tag) {
              case 0:
              case 11:
              case 15:
                dy(9, Qe, Qe.return);
            }
            var t = Qe.sibling;
            if (t !== null) {
              t.return = Qe.return, Qa = t;
              break t;
            }
            Qa = Qe.return;
          }
        }
        var r = $.current;
        for (Qa = r; Qa !== null; ) {
          Y = Qa;
          var i = Y.child;
          if (Y.subtreeFlags & 2064 && i !== null) i.return = Y, Qa = i;
          else t: for (Y = r; Qa !== null; ) {
            if (K = Qa, K.flags & 2048) try {
              switch (K.tag) {
                case 0:
                case 11:
                case 15:
                  U1(9, K);
              }
            } catch (l) {
              Jl(K, K.return, l);
            }
            if (K === Y) {
              Qa = null;
              break t;
            }
            var a = K.sibling;
            if (a !== null) {
              a.return = K.return, Qa = a;
              break t;
            }
            Qa = K.return;
          }
        }
        if (hs = ke, Dp(), vv && typeof vv.onPostCommitFiberRoot == "function") try {
          vv.onPostCommitFiberRoot(R1, $);
        } catch {
        }
        ne = !0;
      }
      return ne;
    } finally {
      ks = It, Ed.transition = ft;
    }
  }
  return !1;
}
function I2($, ft, It) {
  ft = gg(It, ft), ft = y_($, ft, 1), $ = Sp($, ft, 1), ft = Uf(), $ !== null && (ky($, 1, ft), _h($, ft));
}
function Jl($, ft, It) {
  if ($.tag === 3) I2($, $, It);
  else for (; ft !== null; ) {
    if (ft.tag === 3) {
      I2(ft, $, It);
      break;
    } else if (ft.tag === 1) {
      var ne = ft.stateNode;
      if (typeof ft.type.getDerivedStateFromError == "function" || typeof ne.componentDidCatch == "function" && (Mp === null || !Mp.has(ne))) {
        $ = gg(It, $), $ = m_(ft, $, 1), ft = Sp(ft, $, 1), $ = Uf(), ft !== null && (ky(ft, 1, $), _h(ft, $));
        break;
      }
    }
    ft = ft.return;
  }
}
function uA($, ft, It) {
  var ne = $.pingCache;
  ne !== null && ne.delete(ft), ft = Uf(), $.pingedLanes |= $.suspendedLanes & It, yc === $ && (kc & It) === It && (ju === 4 || ju === 3 && (kc & 130023424) === kc && 500 > lu() - fw ? p0($, 0) : cw |= It), _h($, ft);
}
function B_($, ft) {
  ft === 0 && ($.mode & 1 ? (ft = Bm, Bm <<= 1, !(Bm & 130023424) && (Bm = 4194304)) : ft = 1);
  var It = Uf();
  $ = Nv($, ft), $ !== null && (ky($, ft, It), _h($, It));
}
function cA($) {
  var ft = $.memoizedState, It = 0;
  ft !== null && (It = ft.retryLane), B_($, It);
}
function fA($, ft) {
  var It = 0;
  switch ($.tag) {
    case 13:
      var ne = $.stateNode, ke = $.memoizedState;
      ke !== null && (It = ke.retryLane);
      break;
    case 19:
      ne = $.stateNode;
      break;
    default:
      throw Error(ga(314));
  }
  ne !== null && ne.delete(ft), B_($, It);
}
var N_;
N_ = function($, ft, It) {
  if ($ !== null) if ($.memoizedProps !== ft.pendingProps || bh.current) xh = !0;
  else {
    if (!($.lanes & It) && !(ft.flags & 128)) return xh = !1, $4($, ft, It);
    xh = !!($.flags & 131072);
  }
  else xh = !1, bl && ft.flags & 1048576 && G5(ft, b1, ft.index);
  switch (ft.lanes = 0, ft.tag) {
    case 2:
      var ne = ft.type;
      i1($, ft), $ = ft.pendingProps;
      var ke = hg(ft, df.current);
      ug(ft, It), ke = iw(null, ft, ne, $, ke, It);
      var Qe = aw();
      return ft.flags |= 1, typeof ke == "object" && ke !== null && typeof ke.render == "function" && ke.$$typeof === void 0 ? (ft.tag = 1, ft.memoizedState = null, ft.updateQueue = null, wh(ne) ? (Qe = !0, m1(ft)) : Qe = !1, ft.memoizedState = ke.state !== null && ke.state !== void 0 ? ke.state : null, q3(ft), ke.updater = N1, ft.stateNode = ke, ke._reactInternals = ft, f3(ft, ne, $, It), ft = v3(null, ft, ne, !0, Qe, It)) : (ft.tag = 0, bl && Qe && Z3(ft), Nf(null, ft, ke, It), ft = ft.child), ft;
    case 16:
      ne = ft.elementType;
      t: {
        switch (i1($, ft), $ = ft.pendingProps, ke = ne._init, ne = ke(ne._payload), ft.type = ne, ke = ft.tag = dA(ne), $ = Kd(ne, $), ke) {
          case 0:
            ft = d3(null, ft, ne, $, It);
            break t;
          case 1:
            ft = w2(null, ft, ne, $, It);
            break t;
          case 11:
            ft = x2(null, ft, ne, $, It);
            break t;
          case 14:
            ft = b2(null, ft, ne, Kd(ne.type, $), It);
            break t;
        }
        throw Error(ga(
          306,
          ne,
          ""
        ));
      }
      return ft;
    case 0:
      return ne = ft.type, ke = ft.pendingProps, ke = ft.elementType === ne ? ke : Kd(ne, ke), d3($, ft, ne, ke, It);
    case 1:
      return ne = ft.type, ke = ft.pendingProps, ke = ft.elementType === ne ? ke : Kd(ne, ke), w2($, ft, ne, ke, It);
    case 3:
      t: {
        if (__(ft), $ === null) throw Error(ga(387));
        ne = ft.pendingProps, Qe = ft.memoizedState, ke = Qe.element, K5($, ft), T1(ft, ne, null, It);
        var Y = ft.memoizedState;
        if (ne = Y.element, Qe.isDehydrated) if (Qe = { element: ne, isDehydrated: !1, cache: Y.cache, pendingSuspenseBoundaries: Y.pendingSuspenseBoundaries, transitions: Y.transitions }, ft.updateQueue.baseState = Qe, ft.memoizedState = Qe, ft.flags & 256) {
          ke = gg(Error(ga(423)), ft), ft = _2($, ft, ne, It, ke);
          break t;
        } else if (ne !== ke) {
          ke = gg(Error(ga(424)), ft), ft = _2($, ft, ne, It, ke);
          break t;
        } else for (Kh = Ap(ft.stateNode.containerInfo.firstChild), Jh = ft, bl = !0, Qd = null, It = X5(ft, null, ne, It), ft.child = It; It; ) It.flags = It.flags & -3 | 4096, It = It.sibling;
        else {
          if (dg(), ne === ke) {
            ft = Uv($, ft, It);
            break t;
          }
          Nf($, ft, ne, It);
        }
        ft = ft.child;
      }
      return ft;
    case 5:
      return J5(ft), $ === null && l3(ft), ne = ft.type, ke = ft.pendingProps, Qe = $ !== null ? $.memoizedProps : null, Y = ke.children, n3(ne, ke) ? Y = null : Qe !== null && n3(ne, Qe) && (ft.flags |= 32), w_($, ft), Nf($, ft, Y, It), ft.child;
    case 6:
      return $ === null && l3(ft), null;
    case 13:
      return T_($, ft, It);
    case 4:
      return tw(ft, ft.stateNode.containerInfo), ne = ft.pendingProps, $ === null ? ft.child = vg(ft, null, ne, It) : Nf($, ft, ne, It), ft.child;
    case 11:
      return ne = ft.type, ke = ft.pendingProps, ke = ft.elementType === ne ? ke : Kd(ne, ke), x2($, ft, ne, ke, It);
    case 7:
      return Nf($, ft, ft.pendingProps, It), ft.child;
    case 8:
      return Nf($, ft, ft.pendingProps.children, It), ft.child;
    case 12:
      return Nf($, ft, ft.pendingProps.children, It), ft.child;
    case 10:
      t: {
        if (ne = ft.type._context, ke = ft.pendingProps, Qe = ft.memoizedProps, Y = ke.value, nl(w1, ne._currentValue), ne._currentValue = Y, Qe !== null) if (tv(Qe.value, Y)) {
          if (Qe.children === ke.children && !bh.current) {
            ft = Uv($, ft, It);
            break t;
          }
        } else for (Qe = ft.child, Qe !== null && (Qe.return = ft); Qe !== null; ) {
          var K = Qe.dependencies;
          if (K !== null) {
            Y = Qe.child;
            for (var e = K.firstContext; e !== null; ) {
              if (e.context === ne) {
                if (Qe.tag === 1) {
                  e = Fv(-1, It & -It), e.tag = 2;
                  var b = Qe.updateQueue;
                  if (b !== null) {
                    b = b.shared;
                    var P = b.pending;
                    P === null ? e.next = e : (e.next = P.next, P.next = e), b.pending = e;
                  }
                }
                Qe.lanes |= It, e = Qe.alternate, e !== null && (e.lanes |= It), u3(
                  Qe.return,
                  It,
                  ft
                ), K.lanes |= It;
                break;
              }
              e = e.next;
            }
          } else if (Qe.tag === 10) Y = Qe.type === ft.type ? null : Qe.child;
          else if (Qe.tag === 18) {
            if (Y = Qe.return, Y === null) throw Error(ga(341));
            Y.lanes |= It, K = Y.alternate, K !== null && (K.lanes |= It), u3(Y, It, ft), Y = Qe.sibling;
          } else Y = Qe.child;
          if (Y !== null) Y.return = Qe;
          else for (Y = Qe; Y !== null; ) {
            if (Y === ft) {
              Y = null;
              break;
            }
            if (Qe = Y.sibling, Qe !== null) {
              Qe.return = Y.return, Y = Qe;
              break;
            }
            Y = Y.return;
          }
          Qe = Y;
        }
        Nf($, ft, ke.children, It), ft = ft.child;
      }
      return ft;
    case 9:
      return ke = ft.type, ne = ft.pendingProps.children, ug(ft, It), ke = Cd(ke), ne = ne(ke), ft.flags |= 1, Nf($, ft, ne, It), ft.child;
    case 14:
      return ne = ft.type, ke = Kd(ne, ft.pendingProps), ke = Kd(ne.type, ke), b2($, ft, ne, ke, It);
    case 15:
      return x_($, ft, ft.type, ft.pendingProps, It);
    case 17:
      return ne = ft.type, ke = ft.pendingProps, ke = ft.elementType === ne ? ke : Kd(ne, ke), i1($, ft), ft.tag = 1, wh(ne) ? ($ = !0, m1(ft)) : $ = !1, ug(ft, It), g_(ft, ne, ke), f3(ft, ne, ke, It), v3(null, ft, ne, !0, $, It);
    case 19:
      return A_($, ft, It);
    case 22:
      return b_($, ft, It);
  }
  throw Error(ga(156, ft.tag));
};
function U_($, ft) {
  return d5($, ft);
}
function hA($, ft, It, ne) {
  this.tag = $, this.key = It, this.sibling = this.child = this.return = this.stateNode = this.type = this.elementType = null, this.index = 0, this.ref = null, this.pendingProps = ft, this.dependencies = this.memoizedState = this.updateQueue = this.memoizedProps = null, this.mode = ne, this.subtreeFlags = this.flags = 0, this.deletions = null, this.childLanes = this.lanes = 0, this.alternate = null;
}
function Md($, ft, It, ne) {
  return new hA($, ft, It, ne);
}
function pw($) {
  return $ = $.prototype, !(!$ || !$.isReactComponent);
}
function dA($) {
  if (typeof $ == "function") return pw($) ? 1 : 0;
  if ($ != null) {
    if ($ = $.$$typeof, $ === k3) return 11;
    if ($ === z3) return 14;
  }
  return 2;
}
function Cp($, ft) {
  var It = $.alternate;
  return It === null ? (It = Md($.tag, ft, $.key, $.mode), It.elementType = $.elementType, It.type = $.type, It.stateNode = $.stateNode, It.alternate = $, $.alternate = It) : (It.pendingProps = ft, It.type = $.type, It.flags = 0, It.subtreeFlags = 0, It.deletions = null), It.flags = $.flags & 14680064, It.childLanes = $.childLanes, It.lanes = $.lanes, It.child = $.child, It.memoizedProps = $.memoizedProps, It.memoizedState = $.memoizedState, It.updateQueue = $.updateQueue, ft = $.dependencies, It.dependencies = ft === null ? null : { lanes: ft.lanes, firstContext: ft.firstContext }, It.sibling = $.sibling, It.index = $.index, It.ref = $.ref, It;
}
function s1($, ft, It, ne, ke, Qe) {
  var Y = 2;
  if (ne = $, typeof $ == "function") pw($) && (Y = 1);
  else if (typeof $ == "string") Y = 5;
  else t: switch ($) {
    case Y0:
      return g0(It.children, ke, Qe, ft);
    case D3:
      Y = 8, ke |= 8;
      break;
    case zb:
      return $ = Md(12, It, ft, ke | 2), $.elementType = zb, $.lanes = Qe, $;
    case Fb:
      return $ = Md(13, It, ft, ke), $.elementType = Fb, $.lanes = Qe, $;
    case Ob:
      return $ = Md(19, It, ft, ke), $.elementType = Ob, $.lanes = Qe, $;
    case J2:
      return H1(It, ke, Qe, ft);
    default:
      if (typeof $ == "object" && $ !== null) switch ($.$$typeof) {
        case Y2:
          Y = 10;
          break t;
        case K2:
          Y = 9;
          break t;
        case k3:
          Y = 11;
          break t;
        case z3:
          Y = 14;
          break t;
        case pp:
          Y = 16, ne = null;
          break t;
      }
      throw Error(ga(130, $ == null ? $ : typeof $, ""));
  }
  return ft = Md(Y, It, ft, ke), ft.elementType = $, ft.type = ne, ft.lanes = Qe, ft;
}
function g0($, ft, It, ne) {
  return $ = Md(7, $, ne, ft), $.lanes = It, $;
}
function H1($, ft, It, ne) {
  return $ = Md(22, $, ne, ft), $.elementType = J2, $.lanes = It, $.stateNode = { isHidden: !1 }, $;
}
function Ib($, ft, It) {
  return $ = Md(6, $, null, ft), $.lanes = It, $;
}
function Rb($, ft, It) {
  return ft = Md(4, $.children !== null ? $.children : [], $.key, ft), ft.lanes = It, ft.stateNode = { containerInfo: $.containerInfo, pendingChildren: null, implementation: $.implementation }, ft;
}
function vA($, ft, It, ne, ke) {
  this.tag = ft, this.containerInfo = $, this.finishedWork = this.pingCache = this.current = this.pendingChildren = null, this.timeoutHandle = -1, this.callbackNode = this.pendingContext = this.context = null, this.callbackPriority = 0, this.eventTimes = hb(0), this.expirationTimes = hb(-1), this.entangledLanes = this.finishedLanes = this.mutableReadLanes = this.expiredLanes = this.pingedLanes = this.suspendedLanes = this.pendingLanes = 0, this.entanglements = hb(0), this.identifierPrefix = ne, this.onRecoverableError = ke, this.mutableSourceEagerHydrationData = null;
}
function gw($, ft, It, ne, ke, Qe, Y, K, e) {
  return $ = new vA($, ft, It, K, e), ft === 1 ? (ft = 1, Qe === !0 && (ft |= 8)) : ft = 0, Qe = Md(3, null, null, ft), $.current = Qe, Qe.stateNode = $, Qe.memoizedState = { element: ne, isDehydrated: It, cache: null, transitions: null, pendingSuspenseBoundaries: null }, q3(Qe), $;
}
function pA($, ft, It) {
  var ne = 3 < arguments.length && arguments[3] !== void 0 ? arguments[3] : null;
  return { $$typeof: X0, key: ne == null ? null : "" + ne, children: $, containerInfo: ft, implementation: It };
}
function V_($) {
  if (!$) return Pp;
  $ = $._reactInternals;
  t: {
    if (T0($) !== $ || $.tag !== 1) throw Error(ga(170));
    var ft = $;
    do {
      switch (ft.tag) {
        case 3:
          ft = ft.stateNode.context;
          break t;
        case 1:
          if (wh(ft.type)) {
            ft = ft.stateNode.__reactInternalMemoizedMergedChildContext;
            break t;
          }
      }
      ft = ft.return;
    } while (ft !== null);
    throw Error(ga(171));
  }
  if ($.tag === 1) {
    var It = $.type;
    if (wh(It)) return V5($, It, ft);
  }
  return ft;
}
function H_($, ft, It, ne, ke, Qe, Y, K, e) {
  return $ = gw(It, ne, !0, $, ke, Qe, Y, K, e), $.context = V_(null), It = $.current, ne = Uf(), ke = Ep(It), Qe = Fv(ne, ke), Qe.callback = ft ?? null, Sp(It, Qe, ke), $.current.lanes = ke, ky($, ke, ne), _h($, ne), $;
}
function G1($, ft, It, ne) {
  var ke = ft.current, Qe = Uf(), Y = Ep(ke);
  return It = V_(It), ft.context === null ? ft.context = It : ft.pendingContext = It, ft = Fv(Qe, Y), ft.payload = { element: $ }, ne = ne === void 0 ? null : ne, ne !== null && (ft.callback = ne), $ = Sp(ke, ft, Y), $ !== null && (qd($, ke, Y, Qe), e1($, ke, Y)), Y;
}
function I1($) {
  if ($ = $.current, !$.child) return null;
  switch ($.child.tag) {
    case 5:
      return $.child.stateNode;
    default:
      return $.child.stateNode;
  }
}
function R2($, ft) {
  if ($ = $.memoizedState, $ !== null && $.dehydrated !== null) {
    var It = $.retryLane;
    $.retryLane = It !== 0 && It < ft ? It : ft;
  }
}
function yw($, ft) {
  R2($, ft), ($ = $.alternate) && R2($, ft);
}
function gA() {
  return null;
}
var G_ = typeof reportError == "function" ? reportError : function($) {
  console.error($);
};
function mw($) {
  this._internalRoot = $;
}
W1.prototype.render = mw.prototype.render = function($) {
  var ft = this._internalRoot;
  if (ft === null) throw Error(ga(409));
  G1($, ft, null, null);
};
W1.prototype.unmount = mw.prototype.unmount = function() {
  var $ = this._internalRoot;
  if ($ !== null) {
    this._internalRoot = null;
    var ft = $.containerInfo;
    w0(function() {
      G1(null, $, null, null);
    }), ft[Bv] = null;
  }
};
function W1($) {
  this._internalRoot = $;
}
W1.prototype.unstable_scheduleHydration = function($) {
  if ($) {
    var ft = b5();
    $ = { blockedOn: null, target: $, priority: ft };
    for (var It = 0; It < yp.length && ft !== 0 && ft < yp[It].priority; It++) ;
    yp.splice(It, 0, $), It === 0 && _5($);
  }
};
function xw($) {
  return !(!$ || $.nodeType !== 1 && $.nodeType !== 9 && $.nodeType !== 11);
}
function j1($) {
  return !(!$ || $.nodeType !== 1 && $.nodeType !== 9 && $.nodeType !== 11 && ($.nodeType !== 8 || $.nodeValue !== " react-mount-point-unstable "));
}
function D2() {
}
function yA($, ft, It, ne, ke) {
  if (ke) {
    if (typeof ne == "function") {
      var Qe = ne;
      ne = function() {
        var b = I1(Y);
        Qe.call(b);
      };
    }
    var Y = H_(ft, ne, $, 0, null, !1, !1, "", D2);
    return $._reactRootContainer = Y, $[Bv] = Y.current, Ay($.nodeType === 8 ? $.parentNode : $), w0(), Y;
  }
  for (; ke = $.lastChild; ) $.removeChild(ke);
  if (typeof ne == "function") {
    var K = ne;
    ne = function() {
      var b = I1(e);
      K.call(b);
    };
  }
  var e = gw($, 0, !1, null, null, !1, !1, "", D2);
  return $._reactRootContainer = e, $[Bv] = e.current, Ay($.nodeType === 8 ? $.parentNode : $), w0(function() {
    G1(ft, e, It, ne);
  }), e;
}
function Z1($, ft, It, ne, ke) {
  var Qe = It._reactRootContainer;
  if (Qe) {
    var Y = Qe;
    if (typeof ke == "function") {
      var K = ke;
      ke = function() {
        var e = I1(Y);
        K.call(e);
      };
    }
    G1(ft, Y, $, ke);
  } else Y = yA(It, ft, $, ke, ne);
  return I1(Y);
}
m5 = function($) {
  switch ($.tag) {
    case 3:
      var ft = $.stateNode;
      if (ft.current.memoizedState.isDehydrated) {
        var It = ay(ft.pendingLanes);
        It !== 0 && (B3(ft, It | 1), _h(ft, lu()), !(hs & 6) && (yg = lu() + 500, Dp()));
      }
      break;
    case 13:
      w0(function() {
        var ne = Nv($, 1);
        if (ne !== null) {
          var ke = Uf();
          qd(ne, $, 1, ke);
        }
      }), yw($, 1);
  }
};
N3 = function($) {
  if ($.tag === 13) {
    var ft = Nv($, 134217728);
    if (ft !== null) {
      var It = Uf();
      qd(ft, $, 134217728, It);
    }
    yw($, 134217728);
  }
};
x5 = function($) {
  if ($.tag === 13) {
    var ft = Ep($), It = Nv($, ft);
    if (It !== null) {
      var ne = Uf();
      qd(It, $, ft, ne);
    }
    yw($, ft);
  }
};
b5 = function() {
  return ks;
};
w5 = function($, ft) {
  var It = ks;
  try {
    return ks = $, ft();
  } finally {
    ks = It;
  }
};
Xb = function($, ft, It) {
  switch (ft) {
    case "input":
      if (Ub($, It), ft = It.name, It.type === "radio" && ft != null) {
        for (It = $; It.parentNode; ) It = It.parentNode;
        for (It = It.querySelectorAll("input[name=" + JSON.stringify("" + ft) + '][type="radio"]'), ft = 0; ft < It.length; ft++) {
          var ne = It[ft];
          if (ne !== $ && ne.form === $.form) {
            var ke = F1(ne);
            if (!ke) throw Error(ga(90));
            $2(ne), Ub(ne, ke);
          }
        }
      }
      break;
    case "textarea":
      t5($, It);
      break;
    case "select":
      ft = It.value, ft != null && ag($, !!It.multiple, ft, !1);
  }
};
s5 = hw;
l5 = w0;
var mA = { usingClientEntryPoint: !1, Events: [Fy, $0, F1, a5, o5, hw] }, ry = { findFiberByHostInstance: h0, bundleType: 0, version: "18.3.1", rendererPackageName: "react-dom" }, xA = { bundleType: ry.bundleType, version: ry.version, rendererPackageName: ry.rendererPackageName, rendererConfig: ry.rendererConfig, overrideHookState: null, overrideHookStateDeletePath: null, overrideHookStateRenamePath: null, overrideProps: null, overridePropsDeletePath: null, overridePropsRenamePath: null, setErrorHandler: null, setSuspenseHandler: null, scheduleUpdate: null, currentDispatcherRef: Vv.ReactCurrentDispatcher, findHostInstanceByFiber: function($) {
  return $ = f5($), $ === null ? null : $.stateNode;
}, findFiberByHostInstance: ry.findFiberByHostInstance || gA, findHostInstancesForRefresh: null, scheduleRefresh: null, scheduleRoot: null, setRefreshHandler: null, getCurrentFiber: null, reconcilerVersion: "18.3.1-next-f1338f8080-20240426" };
if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ < "u") {
  var Km = __REACT_DEVTOOLS_GLOBAL_HOOK__;
  if (!Km.isDisabled && Km.supportsFiber) try {
    R1 = Km.inject(xA), vv = Km;
  } catch {
  }
}
$h.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = mA;
$h.createPortal = function($, ft) {
  var It = 2 < arguments.length && arguments[2] !== void 0 ? arguments[2] : null;
  if (!xw(ft)) throw Error(ga(200));
  return pA($, ft, null, It);
};
$h.createRoot = function($, ft) {
  if (!xw($)) throw Error(ga(299));
  var It = !1, ne = "", ke = G_;
  return ft != null && (ft.unstable_strictMode === !0 && (It = !0), ft.identifierPrefix !== void 0 && (ne = ft.identifierPrefix), ft.onRecoverableError !== void 0 && (ke = ft.onRecoverableError)), ft = gw($, 1, !1, null, null, It, !1, ne, ke), $[Bv] = ft.current, Ay($.nodeType === 8 ? $.parentNode : $), new mw(ft);
};
$h.findDOMNode = function($) {
  if ($ == null) return null;
  if ($.nodeType === 1) return $;
  var ft = $._reactInternals;
  if (ft === void 0)
    throw typeof $.render == "function" ? Error(ga(188)) : ($ = Object.keys($).join(","), Error(ga(268, $)));
  return $ = f5(ft), $ = $ === null ? null : $.stateNode, $;
};
$h.flushSync = function($) {
  return w0($);
};
$h.hydrate = function($, ft, It) {
  if (!j1(ft)) throw Error(ga(200));
  return Z1(null, $, ft, !0, It);
};
$h.hydrateRoot = function($, ft, It) {
  if (!xw($)) throw Error(ga(405));
  var ne = It != null && It.hydratedSources || null, ke = !1, Qe = "", Y = G_;
  if (It != null && (It.unstable_strictMode === !0 && (ke = !0), It.identifierPrefix !== void 0 && (Qe = It.identifierPrefix), It.onRecoverableError !== void 0 && (Y = It.onRecoverableError)), ft = H_(ft, null, $, 1, It ?? null, ke, !1, Qe, Y), $[Bv] = ft.current, Ay($), ne) for ($ = 0; $ < ne.length; $++) It = ne[$], ke = It._getVersion, ke = ke(It._source), ft.mutableSourceEagerHydrationData == null ? ft.mutableSourceEagerHydrationData = [It, ke] : ft.mutableSourceEagerHydrationData.push(
    It,
    ke
  );
  return new W1(ft);
};
$h.render = function($, ft, It) {
  if (!j1(ft)) throw Error(ga(200));
  return Z1(null, $, ft, !1, It);
};
$h.unmountComponentAtNode = function($) {
  if (!j1($)) throw Error(ga(40));
  return $._reactRootContainer ? (w0(function() {
    Z1(null, null, $, !1, function() {
      $._reactRootContainer = null, $[Bv] = null;
    });
  }), !0) : !1;
};
$h.unstable_batchedUpdates = hw;
$h.unstable_renderSubtreeIntoContainer = function($, ft, It, ne) {
  if (!j1(It)) throw Error(ga(200));
  if ($ == null || $._reactInternals === void 0) throw Error(ga(38));
  return Z1($, ft, It, !1, ne);
};
$h.version = "18.3.1-next-f1338f8080-20240426";
function W_() {
  if (!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ > "u" || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE != "function"))
    try {
      __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(W_);
    } catch ($) {
      console.error($);
    }
}
W_(), W2.exports = $h;
var bA = W2.exports, j_, k2 = bA;
j_ = k2.createRoot, k2.hydrateRoot;
let Z_ = hf.createContext(
  /** @type {any} */
  null
);
function wA() {
  let $ = hf.useContext(Z_);
  if (!$) throw new Error("RenderContext not found");
  return $;
}
function _A() {
  return wA().model;
}
function Db($) {
  let ft = _A(), [It, ne] = hf.useState(ft.get($));
  return hf.useEffect(() => {
    let ke = () => ne(ft.get($));
    return ft.on(`change:${$}`, ke), () => ft.off(`change:${$}`, ke);
  }, [ft, $]), [
    It,
    (ke) => {
      ft.set($, ke), ft.save_changes();
    }
  ];
}
function TA($) {
  return ({ el: ft, model: It, experimental: ne }) => {
    let ke = j_(ft);
    return ke.render(
      hf.createElement(
        hf.StrictMode,
        null,
        hf.createElement(
          Z_.Provider,
          { value: { model: It, experimental: ne } },
          hf.createElement($)
        )
      )
    ), () => ke.unmount();
  };
}
var X_ = {}, Y_ = {}, K_ = { exports: {} }, AA = "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED", SA = AA, MA = SA;
function J_() {
}
function Q_() {
}
Q_.resetWarningCache = J_;
var EA = function() {
  function $(ne, ke, Qe, Y, K, e) {
    if (e !== MA) {
      var b = new Error(
        "Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types"
      );
      throw b.name = "Invariant Violation", b;
    }
  }
  $.isRequired = $;
  function ft() {
    return $;
  }
  var It = {
    array: $,
    bigint: $,
    bool: $,
    func: $,
    number: $,
    object: $,
    string: $,
    symbol: $,
    any: $,
    arrayOf: ft,
    element: $,
    elementType: $,
    instanceOf: ft,
    node: $,
    objectOf: ft,
    oneOf: ft,
    oneOfType: ft,
    shape: ft,
    exact: ft,
    checkPropTypes: Q_,
    resetWarningCache: J_
  };
  return It.PropTypes = It, It;
};
K_.exports = EA();
var CA = K_.exports;
(function($) {
  function ft(l) {
    "@babel/helpers - typeof";
    return ft = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(o) {
      return typeof o;
    } : function(o) {
      return o && typeof Symbol == "function" && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
    }, ft(l);
  }
  Object.defineProperty($, "__esModule", {
    value: !0
  }), $.default = a;
  var It = Y(hf), ne = ke(CA);
  function ke(l) {
    return l && l.__esModule ? l : { default: l };
  }
  function Qe(l) {
    if (typeof WeakMap != "function") return null;
    var o = /* @__PURE__ */ new WeakMap(), y = /* @__PURE__ */ new WeakMap();
    return (Qe = function(x) {
      return x ? y : o;
    })(l);
  }
  function Y(l, o) {
    if (l && l.__esModule)
      return l;
    if (l === null || ft(l) !== "object" && typeof l != "function")
      return { default: l };
    var y = Qe(o);
    if (y && y.has(l))
      return y.get(l);
    var g = {}, x = Object.defineProperty && Object.getOwnPropertyDescriptor;
    for (var c in l)
      if (c !== "default" && Object.prototype.hasOwnProperty.call(l, c)) {
        var v = x ? Object.getOwnPropertyDescriptor(l, c) : null;
        v && (v.get || v.set) ? Object.defineProperty(g, c, v) : g[c] = l[c];
      }
    return g.default = l, y && y.set(l, g), g;
  }
  function K(l, o) {
    if (!(l instanceof o))
      throw new TypeError("Cannot call a class as a function");
  }
  function e(l, o) {
    for (var y = 0; y < o.length; y++) {
      var g = o[y];
      g.enumerable = g.enumerable || !1, g.configurable = !0, "value" in g && (g.writable = !0), Object.defineProperty(l, g.key, g);
    }
  }
  function b(l, o, y) {
    return o && e(l.prototype, o), Object.defineProperty(l, "prototype", { writable: !1 }), l;
  }
  function P(l, o) {
    if (typeof o != "function" && o !== null)
      throw new TypeError("Super expression must either be null or a function");
    l.prototype = Object.create(o && o.prototype, { constructor: { value: l, writable: !0, configurable: !0 } }), Object.defineProperty(l, "prototype", { writable: !1 }), o && n(l, o);
  }
  function n(l, o) {
    return n = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(g, x) {
      return g.__proto__ = x, g;
    }, n(l, o);
  }
  function s(l) {
    var o = p();
    return function() {
      var g = u(l), x;
      if (o) {
        var c = u(this).constructor;
        x = Reflect.construct(g, arguments, c);
      } else
        x = g.apply(this, arguments);
      return T(this, x);
    };
  }
  function T(l, o) {
    if (o && (ft(o) === "object" || typeof o == "function"))
      return o;
    if (o !== void 0)
      throw new TypeError("Derived constructors may only return object or undefined");
    return A(l);
  }
  function A(l) {
    if (l === void 0)
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    return l;
  }
  function p() {
    if (typeof Reflect > "u" || !Reflect.construct || Reflect.construct.sham) return !1;
    if (typeof Proxy == "function") return !0;
    try {
      return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
      })), !0;
    } catch {
      return !1;
    }
  }
  function u(l) {
    return u = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(y) {
      return y.__proto__ || Object.getPrototypeOf(y);
    }, u(l);
  }
  var t = ["AfterExport", "AfterPlot", "Animated", "AnimatingFrame", "AnimationInterrupted", "AutoSize", "BeforeExport", "BeforeHover", "ButtonClicked", "Click", "ClickAnnotation", "Deselect", "DoubleClick", "Framework", "Hover", "LegendClick", "LegendDoubleClick", "Relayout", "Relayouting", "Restyle", "Redraw", "Selected", "Selecting", "SliderChange", "SliderEnd", "SliderStart", "SunburstClick", "Transitioning", "TransitionInterrupted", "Unhover", "WebGlContextLost"], r = ["plotly_restyle", "plotly_redraw", "plotly_relayout", "plotly_relayouting", "plotly_doubleclick", "plotly_animated", "plotly_sunburstclick"], i = typeof window < "u";
  function a(l) {
    var o = /* @__PURE__ */ function(y) {
      P(x, y);
      var g = s(x);
      function x(c) {
        var v;
        return K(this, x), v = g.call(this, c), v.p = Promise.resolve(), v.resizeHandler = null, v.handlers = {}, v.syncWindowResize = v.syncWindowResize.bind(A(v)), v.syncEventHandlers = v.syncEventHandlers.bind(A(v)), v.attachUpdateEvents = v.attachUpdateEvents.bind(A(v)), v.getRef = v.getRef.bind(A(v)), v.handleUpdate = v.handleUpdate.bind(A(v)), v.figureCallback = v.figureCallback.bind(A(v)), v.updatePlotly = v.updatePlotly.bind(A(v)), v;
      }
      return b(x, [{
        key: "updatePlotly",
        value: function(v, f, _) {
          var S = this;
          this.p = this.p.then(function() {
            if (!S.unmounting) {
              if (!S.el)
                throw new Error("Missing element reference");
              return l.react(S.el, {
                data: S.props.data,
                layout: S.props.layout,
                config: S.props.config,
                frames: S.props.frames
              });
            }
          }).then(function() {
            S.unmounting || (S.syncWindowResize(v), S.syncEventHandlers(), S.figureCallback(f), _ && S.attachUpdateEvents());
          }).catch(function(M) {
            S.props.onError && S.props.onError(M);
          });
        }
      }, {
        key: "componentDidMount",
        value: function() {
          this.unmounting = !1, this.updatePlotly(!0, this.props.onInitialized, !0);
        }
      }, {
        key: "componentDidUpdate",
        value: function(v) {
          this.unmounting = !1;
          var f = v.frames && v.frames.length ? v.frames.length : 0, _ = this.props.frames && this.props.frames.length ? this.props.frames.length : 0, S = !(v.layout === this.props.layout && v.data === this.props.data && v.config === this.props.config && _ === f), M = v.revision !== void 0, C = v.revision !== this.props.revision;
          !S && (!M || M && !C) || this.updatePlotly(!1, this.props.onUpdate, !1);
        }
      }, {
        key: "componentWillUnmount",
        value: function() {
          this.unmounting = !0, this.figureCallback(this.props.onPurge), this.resizeHandler && i && (window.removeEventListener("resize", this.resizeHandler), this.resizeHandler = null), this.removeUpdateEvents(), l.purge(this.el);
        }
      }, {
        key: "attachUpdateEvents",
        value: function() {
          var v = this;
          !this.el || !this.el.removeListener || r.forEach(function(f) {
            v.el.on(f, v.handleUpdate);
          });
        }
      }, {
        key: "removeUpdateEvents",
        value: function() {
          var v = this;
          !this.el || !this.el.removeListener || r.forEach(function(f) {
            v.el.removeListener(f, v.handleUpdate);
          });
        }
      }, {
        key: "handleUpdate",
        value: function() {
          this.figureCallback(this.props.onUpdate);
        }
      }, {
        key: "figureCallback",
        value: function(v) {
          if (typeof v == "function") {
            var f = this.el, _ = f.data, S = f.layout, M = this.el._transitionData ? this.el._transitionData._frames : null, C = {
              data: _,
              layout: S,
              frames: M
            };
            v(C, this.el);
          }
        }
      }, {
        key: "syncWindowResize",
        value: function(v) {
          var f = this;
          i && (this.props.useResizeHandler && !this.resizeHandler ? (this.resizeHandler = function() {
            return l.Plots.resize(f.el);
          }, window.addEventListener("resize", this.resizeHandler), v && this.resizeHandler()) : !this.props.useResizeHandler && this.resizeHandler && (window.removeEventListener("resize", this.resizeHandler), this.resizeHandler = null));
        }
      }, {
        key: "getRef",
        value: function(v) {
          this.el = v, this.props.debug && i && (window.gd = this.el);
        }
        // Attach and remove event handlers as they're added or removed from props:
      }, {
        key: "syncEventHandlers",
        value: function() {
          var v = this;
          t.forEach(function(f) {
            var _ = v.props["on" + f], S = v.handlers[f], M = !!S;
            _ && !M ? v.addEventHandler(f, _) : !_ && M ? v.removeEventHandler(f) : _ && M && _ !== S && (v.removeEventHandler(f), v.addEventHandler(f, _));
          });
        }
      }, {
        key: "addEventHandler",
        value: function(v, f) {
          this.handlers[v] = f, this.el.on(this.getPlotlyEventName(v), this.handlers[v]);
        }
      }, {
        key: "removeEventHandler",
        value: function(v) {
          this.el.removeListener(this.getPlotlyEventName(v), this.handlers[v]), delete this.handlers[v];
        }
      }, {
        key: "getPlotlyEventName",
        value: function(v) {
          return "plotly_" + v.toLowerCase();
        }
      }, {
        key: "render",
        value: function() {
          return /* @__PURE__ */ It.default.createElement("div", {
            id: this.props.divId,
            style: this.props.style,
            ref: this.getRef,
            className: this.props.className
          });
        }
      }]), x;
    }(It.Component);
    return o.propTypes = {
      data: ne.default.arrayOf(ne.default.object),
      config: ne.default.object,
      layout: ne.default.object,
      frames: ne.default.arrayOf(ne.default.object),
      revision: ne.default.number,
      onInitialized: ne.default.func,
      onPurge: ne.default.func,
      onError: ne.default.func,
      onUpdate: ne.default.func,
      debug: ne.default.bool,
      style: ne.default.object,
      className: ne.default.string,
      useResizeHandler: ne.default.bool,
      divId: ne.default.string
    }, t.forEach(function(y) {
      o.propTypes["on" + y] = ne.default.func;
    }), o.defaultProps = {
      debug: !1,
      useResizeHandler: !1,
      data: [],
      style: {
        position: "relative",
        display: "inline-block"
      }
    }, o;
  }
})(Y_);
var $_ = { exports: {} };
(function($, ft) {
  (function(ne, ke) {
    $.exports = ke();
  })(self, function() {
    return (
      /******/
      function() {
        var It = {
          /***/
          6713: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = {
                "X,X div": 'direction:ltr;font-family:"Open Sans",verdana,arial,sans-serif;margin:0;padding:0;',
                "X input,X button": 'font-family:"Open Sans",verdana,arial,sans-serif;',
                "X input:focus,X button:focus": "outline:none;",
                "X a": "text-decoration:none;",
                "X a:hover": "text-decoration:none;",
                "X .crisp": "shape-rendering:crispEdges;",
                "X .user-select-none": "-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;",
                "X svg": "overflow:hidden;",
                "X svg a": "fill:#447adb;",
                "X svg a:hover": "fill:#3c6dc5;",
                "X .main-svg": "position:absolute;top:0;left:0;pointer-events:none;",
                "X .main-svg .draglayer": "pointer-events:all;",
                "X .cursor-default": "cursor:default;",
                "X .cursor-pointer": "cursor:pointer;",
                "X .cursor-crosshair": "cursor:crosshair;",
                "X .cursor-move": "cursor:move;",
                "X .cursor-col-resize": "cursor:col-resize;",
                "X .cursor-row-resize": "cursor:row-resize;",
                "X .cursor-ns-resize": "cursor:ns-resize;",
                "X .cursor-ew-resize": "cursor:ew-resize;",
                "X .cursor-sw-resize": "cursor:sw-resize;",
                "X .cursor-s-resize": "cursor:s-resize;",
                "X .cursor-se-resize": "cursor:se-resize;",
                "X .cursor-w-resize": "cursor:w-resize;",
                "X .cursor-e-resize": "cursor:e-resize;",
                "X .cursor-nw-resize": "cursor:nw-resize;",
                "X .cursor-n-resize": "cursor:n-resize;",
                "X .cursor-ne-resize": "cursor:ne-resize;",
                "X .cursor-grab": "cursor:-webkit-grab;cursor:grab;",
                "X .modebar": "position:absolute;top:2px;right:2px;",
                "X .ease-bg": "-webkit-transition:background-color .3s ease 0s;-moz-transition:background-color .3s ease 0s;-ms-transition:background-color .3s ease 0s;-o-transition:background-color .3s ease 0s;transition:background-color .3s ease 0s;",
                "X .modebar--hover>:not(.watermark)": "opacity:0;-webkit-transition:opacity .3s ease 0s;-moz-transition:opacity .3s ease 0s;-ms-transition:opacity .3s ease 0s;-o-transition:opacity .3s ease 0s;transition:opacity .3s ease 0s;",
                "X:hover .modebar--hover .modebar-group": "opacity:1;",
                "X .modebar-group": "float:left;display:inline-block;box-sizing:border-box;padding-left:8px;position:relative;vertical-align:middle;white-space:nowrap;",
                "X .modebar-btn": "position:relative;font-size:16px;padding:3px 4px;height:22px;cursor:pointer;line-height:normal;box-sizing:border-box;",
                "X .modebar-btn svg": "position:relative;top:2px;",
                "X .modebar.vertical": "display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-end;max-height:100%;",
                "X .modebar.vertical svg": "top:-1px;",
                "X .modebar.vertical .modebar-group": "display:block;float:none;padding-left:0px;padding-bottom:8px;",
                "X .modebar.vertical .modebar-group .modebar-btn": "display:block;text-align:center;",
                "X [data-title]:before,X [data-title]:after": "position:absolute;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);display:none;opacity:0;z-index:1001;pointer-events:none;top:110%;right:50%;",
                "X [data-title]:hover:before,X [data-title]:hover:after": "display:block;opacity:1;",
                "X [data-title]:before": 'content:"";position:absolute;background:rgba(0,0,0,0);border:6px solid rgba(0,0,0,0);z-index:1002;margin-top:-12px;border-bottom-color:#69738a;margin-right:-6px;',
                "X [data-title]:after": "content:attr(data-title);background:#69738a;color:#fff;padding:8px 10px;font-size:12px;line-height:12px;white-space:nowrap;margin-right:-18px;border-radius:2px;",
                "X .vertical [data-title]:before,X .vertical [data-title]:after": "top:0%;right:200%;",
                "X .vertical [data-title]:before": "border:6px solid rgba(0,0,0,0);border-left-color:#69738a;margin-top:8px;margin-right:-30px;",
                Y: 'font-family:"Open Sans",verdana,arial,sans-serif;position:fixed;top:50px;right:20px;z-index:10000;font-size:10pt;max-width:180px;',
                "Y p": "margin:0;",
                "Y .notifier-note": "min-width:180px;max-width:250px;border:1px solid #fff;z-index:3000;margin:0;background-color:#8c97af;background-color:rgba(140,151,175,.9);color:#fff;padding:10px;overflow-wrap:break-word;word-wrap:break-word;-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto;",
                "Y .notifier-close": "color:#fff;opacity:.8;float:right;padding:0 5px;background:none;border:none;font-size:20px;font-weight:bold;line-height:20px;",
                "Y .notifier-close:hover": "color:#444;text-decoration:none;cursor:pointer;"
              };
              for (var n in P) {
                var s = n.replace(/^,/, " ,").replace(/X/g, ".js-plotly-plot .plotly").replace(/Y/g, ".plotly-notifier");
                b.addStyleRule(s, P[n]);
              }
            }
          ),
          /***/
          14187: (
            /***/
            function(Y, K, e) {
              Y.exports = e(47908);
            }
          ),
          /***/
          20273: (
            /***/
            function(Y, K, e) {
              Y.exports = e(58218);
            }
          ),
          /***/
          6457: (
            /***/
            function(Y, K, e) {
              Y.exports = e(89362);
            }
          ),
          /***/
          15849: (
            /***/
            function(Y, K, e) {
              Y.exports = e(53794);
            }
          ),
          /***/
          38847: (
            /***/
            function(Y, K, e) {
              Y.exports = e(29698);
            }
          ),
          /***/
          7659: (
            /***/
            function(Y, K, e) {
              Y.exports = e(51252);
            }
          ),
          /***/
          60089: (
            /***/
            function(Y, K, e) {
              Y.exports = e(48050);
            }
          ),
          /***/
          22084: (
            /***/
            function(Y, K, e) {
              Y.exports = e(58075);
            }
          ),
          /***/
          35892: (
            /***/
            function(Y, K, e) {
              Y.exports = e(9419);
            }
          ),
          /***/
          81204: (
            /***/
            function(Y, K, e) {
              Y.exports = e(28128);
            }
          ),
          /***/
          55857: (
            /***/
            function(Y, K, e) {
              Y.exports = e(47050);
            }
          ),
          /***/
          12862: (
            /***/
            function(Y, K, e) {
              Y.exports = e(91405);
            }
          ),
          /***/
          97629: (
            /***/
            function(Y, K, e) {
              Y.exports = e(34406);
            }
          ),
          /***/
          67549: (
            /***/
            function(Y, K, e) {
              Y.exports = e(17430);
            }
          ),
          /***/
          2660: (
            /***/
            function(Y, K, e) {
              Y.exports = e(91995);
            }
          ),
          /***/
          86071: (
            /***/
            function(Y, K, e) {
              Y.exports = e(81264);
            }
          ),
          /***/
          66200: (
            /***/
            function(Y, K, e) {
              Y.exports = e(42849);
            }
          ),
          /***/
          53446: (
            /***/
            function(Y, K, e) {
              Y.exports = e(52213);
            }
          ),
          /***/
          86899: (
            /***/
            function(Y, K, e) {
              Y.exports = e(91132);
            }
          ),
          /***/
          13430: (
            /***/
            function(Y, K, e) {
              Y.exports = e(50453);
            }
          ),
          /***/
          21548: (
            /***/
            function(Y, K, e) {
              Y.exports = e(29251);
            }
          ),
          /***/
          53939: (
            /***/
            function(Y, K, e) {
              Y.exports = e(72892);
            }
          ),
          /***/
          1902: (
            /***/
            function(Y, K, e) {
              Y.exports = e(74461);
            }
          ),
          /***/
          29096: (
            /***/
            function(Y, K, e) {
              Y.exports = e(66143);
            }
          ),
          /***/
          23820: (
            /***/
            function(Y, K, e) {
              Y.exports = e(81955);
            }
          ),
          /***/
          82017: (
            /***/
            function(Y, K, e) {
              Y.exports = e(36858);
            }
          ),
          /***/
          113: (
            /***/
            function(Y, K, e) {
              Y.exports = e(92106);
            }
          ),
          /***/
          20260: (
            /***/
            function(Y, K, e) {
              var b = e(67549);
              b.register([
                // traces
                e(20273),
                e(15849),
                e(21548),
                e(1902),
                e(29096),
                e(23820),
                e(12862),
                e(1639),
                e(10067),
                e(53446),
                e(31014),
                e(113),
                e(78170),
                e(8202),
                e(92382),
                e(82017),
                e(86899),
                e(54357),
                e(66903),
                e(90594),
                e(71680),
                e(7412),
                e(55857),
                e(784),
                e(74221),
                e(22084),
                e(44001),
                e(97281),
                e(12345),
                e(53939),
                e(29117),
                e(5410),
                e(5057),
                e(81204),
                e(86071),
                e(14226),
                e(35892),
                e(2660),
                e(96599),
                e(28573),
                e(76832),
                e(60089),
                e(51469),
                e(97629),
                e(27700),
                e(7659),
                e(11780),
                e(27195),
                e(6457),
                e(84639),
                // transforms
                e(14187),
                e(66200),
                e(13430),
                e(90590),
                // components
                e(38847)
              ]), Y.exports = b;
            }
          ),
          /***/
          28573: (
            /***/
            function(Y, K, e) {
              Y.exports = e(25638);
            }
          ),
          /***/
          90594: (
            /***/
            function(Y, K, e) {
              Y.exports = e(75297);
            }
          ),
          /***/
          7412: (
            /***/
            function(Y, K, e) {
              Y.exports = e(58859);
            }
          ),
          /***/
          27700: (
            /***/
            function(Y, K, e) {
              Y.exports = e(12683);
            }
          ),
          /***/
          5410: (
            /***/
            function(Y, K, e) {
              Y.exports = e(6305);
            }
          ),
          /***/
          29117: (
            /***/
            function(Y, K, e) {
              Y.exports = e(83910);
            }
          ),
          /***/
          78170: (
            /***/
            function(Y, K, e) {
              Y.exports = e(49913);
            }
          ),
          /***/
          12345: (
            /***/
            function(Y, K, e) {
              Y.exports = e(15186);
            }
          ),
          /***/
          96599: (
            /***/
            function(Y, K, e) {
              Y.exports = e(71760);
            }
          ),
          /***/
          54357: (
            /***/
            function(Y, K, e) {
              Y.exports = e(17822);
            }
          ),
          /***/
          51469: (
            /***/
            function(Y, K, e) {
              Y.exports = e(56534);
            }
          ),
          /***/
          74221: (
            /***/
            function(Y, K, e) {
              Y.exports = e(18070);
            }
          ),
          /***/
          44001: (
            /***/
            function(Y, K, e) {
              Y.exports = e(52378);
            }
          ),
          /***/
          14226: (
            /***/
            function(Y, K, e) {
              Y.exports = e(30929);
            }
          ),
          /***/
          5057: (
            /***/
            function(Y, K, e) {
              Y.exports = e(83866);
            }
          ),
          /***/
          11780: (
            /***/
            function(Y, K, e) {
              Y.exports = e(66939);
            }
          ),
          /***/
          27195: (
            /***/
            function(Y, K, e) {
              Y.exports = e(23748);
            }
          ),
          /***/
          84639: (
            /***/
            function(Y, K, e) {
              Y.exports = e(73304);
            }
          ),
          /***/
          1639: (
            /***/
            function(Y, K, e) {
              Y.exports = e(12864);
            }
          ),
          /***/
          90590: (
            /***/
            function(Y, K, e) {
              Y.exports = e(99855);
            }
          ),
          /***/
          97281: (
            /***/
            function(Y, K, e) {
              Y.exports = e(91450);
            }
          ),
          /***/
          784: (
            /***/
            function(Y, K, e) {
              Y.exports = e(51943);
            }
          ),
          /***/
          8202: (
            /***/
            function(Y, K, e) {
              Y.exports = e(80809);
            }
          ),
          /***/
          66903: (
            /***/
            function(Y, K, e) {
              Y.exports = e(95984);
            }
          ),
          /***/
          76832: (
            /***/
            function(Y, K, e) {
              Y.exports = e(51671);
            }
          ),
          /***/
          92382: (
            /***/
            function(Y, K, e) {
              Y.exports = e(47181);
            }
          ),
          /***/
          10067: (
            /***/
            function(Y, K, e) {
              Y.exports = e(37276);
            }
          ),
          /***/
          71680: (
            /***/
            function(Y, K, e) {
              Y.exports = e(75703);
            }
          ),
          /***/
          31014: (
            /***/
            function(Y, K, e) {
              Y.exports = e(38261);
            }
          ),
          /***/
          11645: (
            /***/
            function(Y) {
              Y.exports = [
                // no arrow
                {
                  path: "",
                  backoff: 0
                },
                // wide with flat back
                {
                  path: "M-2.4,-3V3L0.6,0Z",
                  backoff: 0.6
                },
                // narrower with flat back
                {
                  path: "M-3.7,-2.5V2.5L1.3,0Z",
                  backoff: 1.3
                },
                // barbed
                {
                  path: "M-4.45,-3L-1.65,-0.2V0.2L-4.45,3L1.55,0Z",
                  backoff: 1.55
                },
                // wide line-drawn
                {
                  path: "M-2.2,-2.2L-0.2,-0.2V0.2L-2.2,2.2L-1.4,3L1.6,0L-1.4,-3Z",
                  backoff: 1.6
                },
                // narrower line-drawn
                {
                  path: "M-4.4,-2.1L-0.6,-0.2V0.2L-4.4,2.1L-4,3L2,0L-4,-3Z",
                  backoff: 2
                },
                // circle
                {
                  path: "M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z",
                  backoff: 0,
                  noRotate: !0
                },
                // square
                {
                  path: "M2,2V-2H-2V2Z",
                  backoff: 0,
                  noRotate: !0
                }
              ];
            }
          ),
          /***/
          50222: (
            /***/
            function(Y, K, e) {
              var b = e(11645), P = e(80337), n = e(54826), s = e(78032).templatedArray;
              e(35081), Y.exports = s("annotation", {
                visible: {
                  valType: "boolean",
                  dflt: !0,
                  editType: "calc+arraydraw"
                },
                text: {
                  valType: "string",
                  editType: "calc+arraydraw"
                },
                textangle: {
                  valType: "angle",
                  dflt: 0,
                  editType: "calc+arraydraw"
                },
                font: P({
                  editType: "calc+arraydraw",
                  colorEditType: "arraydraw"
                }),
                width: {
                  valType: "number",
                  min: 1,
                  dflt: null,
                  editType: "calc+arraydraw"
                },
                height: {
                  valType: "number",
                  min: 1,
                  dflt: null,
                  editType: "calc+arraydraw"
                },
                opacity: {
                  valType: "number",
                  min: 0,
                  max: 1,
                  dflt: 1,
                  editType: "arraydraw"
                },
                align: {
                  valType: "enumerated",
                  values: ["left", "center", "right"],
                  dflt: "center",
                  editType: "arraydraw"
                },
                valign: {
                  valType: "enumerated",
                  values: ["top", "middle", "bottom"],
                  dflt: "middle",
                  editType: "arraydraw"
                },
                bgcolor: {
                  valType: "color",
                  dflt: "rgba(0,0,0,0)",
                  editType: "arraydraw"
                },
                bordercolor: {
                  valType: "color",
                  dflt: "rgba(0,0,0,0)",
                  editType: "arraydraw"
                },
                borderpad: {
                  valType: "number",
                  min: 0,
                  dflt: 1,
                  editType: "calc+arraydraw"
                },
                borderwidth: {
                  valType: "number",
                  min: 0,
                  dflt: 1,
                  editType: "calc+arraydraw"
                },
                // arrow
                showarrow: {
                  valType: "boolean",
                  dflt: !0,
                  editType: "calc+arraydraw"
                },
                arrowcolor: {
                  valType: "color",
                  editType: "arraydraw"
                },
                arrowhead: {
                  valType: "integer",
                  min: 0,
                  max: b.length,
                  dflt: 1,
                  editType: "arraydraw"
                },
                startarrowhead: {
                  valType: "integer",
                  min: 0,
                  max: b.length,
                  dflt: 1,
                  editType: "arraydraw"
                },
                arrowside: {
                  valType: "flaglist",
                  flags: ["end", "start"],
                  extras: ["none"],
                  dflt: "end",
                  editType: "arraydraw"
                },
                arrowsize: {
                  valType: "number",
                  min: 0.3,
                  dflt: 1,
                  editType: "calc+arraydraw"
                },
                startarrowsize: {
                  valType: "number",
                  min: 0.3,
                  dflt: 1,
                  editType: "calc+arraydraw"
                },
                arrowwidth: {
                  valType: "number",
                  min: 0.1,
                  editType: "calc+arraydraw"
                },
                standoff: {
                  valType: "number",
                  min: 0,
                  dflt: 0,
                  editType: "calc+arraydraw"
                },
                startstandoff: {
                  valType: "number",
                  min: 0,
                  dflt: 0,
                  editType: "calc+arraydraw"
                },
                ax: {
                  valType: "any",
                  editType: "calc+arraydraw"
                },
                ay: {
                  valType: "any",
                  editType: "calc+arraydraw"
                },
                axref: {
                  valType: "enumerated",
                  dflt: "pixel",
                  values: ["pixel", n.idRegex.x.toString()],
                  editType: "calc"
                },
                ayref: {
                  valType: "enumerated",
                  dflt: "pixel",
                  values: ["pixel", n.idRegex.y.toString()],
                  editType: "calc"
                },
                // positioning
                xref: {
                  valType: "enumerated",
                  values: ["paper", n.idRegex.x.toString()],
                  editType: "calc"
                },
                x: {
                  valType: "any",
                  editType: "calc+arraydraw"
                },
                xanchor: {
                  valType: "enumerated",
                  values: ["auto", "left", "center", "right"],
                  dflt: "auto",
                  editType: "calc+arraydraw"
                },
                xshift: {
                  valType: "number",
                  dflt: 0,
                  editType: "calc+arraydraw"
                },
                yref: {
                  valType: "enumerated",
                  values: ["paper", n.idRegex.y.toString()],
                  editType: "calc"
                },
                y: {
                  valType: "any",
                  editType: "calc+arraydraw"
                },
                yanchor: {
                  valType: "enumerated",
                  values: ["auto", "top", "middle", "bottom"],
                  dflt: "auto",
                  editType: "calc+arraydraw"
                },
                yshift: {
                  valType: "number",
                  dflt: 0,
                  editType: "calc+arraydraw"
                },
                clicktoshow: {
                  valType: "enumerated",
                  values: [!1, "onoff", "onout"],
                  dflt: !1,
                  editType: "arraydraw"
                },
                xclick: {
                  valType: "any",
                  editType: "arraydraw"
                },
                yclick: {
                  valType: "any",
                  editType: "arraydraw"
                },
                hovertext: {
                  valType: "string",
                  editType: "arraydraw"
                },
                hoverlabel: {
                  bgcolor: {
                    valType: "color",
                    editType: "arraydraw"
                  },
                  bordercolor: {
                    valType: "color",
                    editType: "arraydraw"
                  },
                  font: P({
                    editType: "arraydraw"
                  }),
                  editType: "arraydraw"
                },
                captureevents: {
                  valType: "boolean",
                  editType: "arraydraw"
                },
                editType: "calc",
                _deprecated: {
                  ref: {
                    valType: "string",
                    editType: "calc"
                  }
                }
              });
            }
          ),
          /***/
          60317: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(29714), n = e(3377).draw;
              Y.exports = function(p) {
                var u = p._fullLayout, t = b.filterVisible(u.annotations);
                if (t.length && p._fullData.length)
                  return b.syncOrAsync([n, s], p);
              };
              function s(A) {
                var p = A._fullLayout;
                b.filterVisible(p.annotations).forEach(function(u) {
                  var t = P.getFromId(A, u.xref), r = P.getFromId(A, u.yref), i = P.getRefType(u.xref), a = P.getRefType(u.yref);
                  u._extremes = {}, i === "range" && T(u, t), a === "range" && T(u, r);
                });
              }
              function T(A, p) {
                var u = p._id, t = u.charAt(0), r = A[t], i = A["a" + t], a = A[t + "ref"], l = A["a" + t + "ref"], o = A["_" + t + "padplus"], y = A["_" + t + "padminus"], g = {
                  x: 1,
                  y: -1
                }[t] * A[t + "shift"], x = 3 * A.arrowsize * A.arrowwidth || 0, c = x + g, v = x - g, f = 3 * A.startarrowsize * A.arrowwidth || 0, _ = f + g, S = f - g, M;
                if (l === a) {
                  var C = P.findExtremes(p, [p.r2c(r)], {
                    ppadplus: c,
                    ppadminus: v
                  }), m = P.findExtremes(p, [p.r2c(i)], {
                    ppadplus: Math.max(o, _),
                    ppadminus: Math.max(y, S)
                  });
                  M = {
                    min: [C.min[0], m.min[0]],
                    max: [C.max[0], m.max[0]]
                  };
                } else
                  _ = i ? _ + i : _, S = i ? S - i : S, M = P.findExtremes(p, [p.r2c(r)], {
                    ppadplus: Math.max(o, c, _),
                    ppadminus: Math.max(y, v, S)
                  });
                A._extremes[u] = M;
              }
            }
          ),
          /***/
          6035: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(33626), n = e(78032).arrayEditor;
              Y.exports = {
                hasClickToShow: s,
                onClick: T
              };
              function s(u, t) {
                var r = A(u, t);
                return r.on.length > 0 || r.explicitOff.length > 0;
              }
              function T(u, t) {
                var r = A(u, t), i = r.on, a = r.off.concat(r.explicitOff), l = {}, o = u._fullLayout.annotations, y, g;
                if (i.length || a.length) {
                  for (y = 0; y < i.length; y++)
                    g = n(u.layout, "annotations", o[i[y]]), g.modifyItem("visible", !0), b.extendFlat(l, g.getUpdateObj());
                  for (y = 0; y < a.length; y++)
                    g = n(u.layout, "annotations", o[a[y]]), g.modifyItem("visible", !1), b.extendFlat(l, g.getUpdateObj());
                  return P.call("update", u, {}, l);
                }
              }
              function A(u, t) {
                var r = u._fullLayout.annotations, i = [], a = [], l = [], o = (t || []).length, y, g, x, c, v, f, _, S;
                for (y = 0; y < r.length; y++)
                  if (x = r[y], c = x.clicktoshow, c) {
                    for (g = 0; g < o; g++)
                      if (v = t[g], f = v.xaxis, _ = v.yaxis, f._id === x.xref && _._id === x.yref && f.d2r(v.x) === p(x._xclick, f) && _.d2r(v.y) === p(x._yclick, _)) {
                        x.visible ? c === "onout" ? S = a : S = l : S = i, S.push(y);
                        break;
                      }
                    g === o && x.visible && c === "onout" && a.push(y);
                  }
                return {
                  on: i,
                  off: a,
                  explicitOff: l
                };
              }
              function p(u, t) {
                return t.type === "log" ? t.l2r(u) : t.d2r(u);
              }
            }
          ),
          /***/
          53271: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(78766);
              Y.exports = function(s, T, A, p) {
                p("opacity");
                var u = p("bgcolor"), t = p("bordercolor"), r = P.opacity(t);
                p("borderpad");
                var i = p("borderwidth"), a = p("showarrow");
                p("text", a ? " " : A._dfltTitle.annotation), p("textangle"), b.coerceFont(p, "font", A.font), p("width"), p("align");
                var l = p("height");
                if (l && p("valign"), a) {
                  var o = p("arrowside"), y, g;
                  o.indexOf("end") !== -1 && (y = p("arrowhead"), g = p("arrowsize")), o.indexOf("start") !== -1 && (p("startarrowhead", y), p("startarrowsize", g)), p("arrowcolor", r ? T.bordercolor : P.defaultLine), p("arrowwidth", (r && i || 1) * 2), p("standoff"), p("startstandoff");
                }
                var x = p("hovertext"), c = A.hoverlabel || {};
                if (x) {
                  var v = p("hoverlabel.bgcolor", c.bgcolor || (P.opacity(u) ? P.rgb(u) : P.defaultLine)), f = p("hoverlabel.bordercolor", c.bordercolor || P.contrast(v)), _ = b.extendFlat({}, c.font);
                  _.color || (_.color = f), b.coerceFont(p, "hoverlabel.font", _);
                }
                p("captureevents", !!x);
              };
            }
          ),
          /***/
          59741: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(8083);
              Y.exports = function(s, T, A, p) {
                T = T || {};
                var u = A === "log" && T.type === "linear", t = A === "linear" && T.type === "log";
                if (!(u || t)) return;
                var r = s._fullLayout.annotations, i = T._id.charAt(0), a, l;
                function o(g) {
                  var x = a[g], c = null;
                  u ? c = P(x, T.range) : c = Math.pow(10, x), b(c) || (c = null), p(l + g, c);
                }
                for (var y = 0; y < r.length; y++)
                  a = r[y], l = "annotations[" + y + "].", a[i + "ref"] === T._id && o(i), a["a" + i + "ref"] === T._id && o("a" + i);
              };
            }
          ),
          /***/
          63737: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(29714), n = e(59008), s = e(53271), T = e(50222);
              Y.exports = function(u, t) {
                n(u, t, {
                  name: "annotations",
                  handleItemDefaults: A
                });
              };
              function A(p, u, t) {
                function r(L, d) {
                  return b.coerce(p, u, T, L, d);
                }
                var i = r("visible"), a = r("clicktoshow");
                if (i || a) {
                  s(p, u, t, r);
                  for (var l = u.showarrow, o = ["x", "y"], y = [-10, -30], g = {
                    _fullLayout: t
                  }, x = 0; x < 2; x++) {
                    var c = o[x], v = P.coerceRef(p, u, g, c, "", "paper");
                    if (v !== "paper") {
                      var f = P.getFromId(g, v);
                      f._annIndices.push(u._index);
                    }
                    if (P.coercePosition(u, g, r, v, c, 0.5), l) {
                      var _ = "a" + c, S = P.coerceRef(p, u, g, _, "pixel", ["pixel", "paper"]);
                      S !== "pixel" && S !== v && (S = u[_] = "pixel");
                      var M = S === "pixel" ? y[x] : 0.4;
                      P.coercePosition(u, g, r, S, _, M);
                    }
                    r(c + "anchor"), r(c + "shift");
                  }
                  if (b.noneOrAll(p, u, ["x", "y"]), l && b.noneOrAll(p, u, ["ax", "ay"]), a) {
                    var C = r("xclick"), m = r("yclick");
                    u._xclick = C === void 0 ? u.x : P.cleanPosition(C, g, u.xref), u._yclick = m === void 0 ? u.y : P.cleanPosition(m, g, u.yref);
                  }
                }
              }
            }
          ),
          /***/
          3377: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(33626), n = e(44122), s = e(34809), T = s.strTranslate, A = e(29714), p = e(78766), u = e(62203), t = e(32141), r = e(30635), i = e(27983), a = e(14751), l = e(78032).arrayEditor, o = e(23768);
              Y.exports = {
                draw: y,
                drawOne: g,
                drawRaw: c
              };
              function y(v) {
                var f = v._fullLayout;
                f._infolayer.selectAll(".annotation").remove();
                for (var _ = 0; _ < f.annotations.length; _++)
                  f.annotations[_].visible && g(v, _);
                return n.previousPromises(v);
              }
              function g(v, f) {
                var _ = v._fullLayout, S = _.annotations[f] || {}, M = A.getFromId(v, S.xref), C = A.getFromId(v, S.yref);
                M && M.setScale(), C && C.setScale(), c(v, S, f, !1, M, C);
              }
              function x(v, f, _, S, M) {
                var C = M[_], m = M[_ + "ref"], L = _.indexOf("y") !== -1, d = A.getRefType(m) === "domain", h = L ? S.h : S.w;
                return v ? d ? C + (L ? -f : f) / v._length : v.p2r(v.r2p(C) + f) : C + (L ? -f : f) / h;
              }
              function c(v, f, _, S, M, C) {
                var m = v._fullLayout, L = v._fullLayout._size, d = v._context.edits, h, E;
                S ? (h = "annotation-" + S, E = S + ".annotations") : (h = "annotation", E = "annotations");
                var w = l(v.layout, E, f), z = w.modifyBase, O = w.modifyItem, B = w.getUpdateObj;
                m._infolayer.selectAll("." + h + '[data-index="' + _ + '"]').remove();
                var V = "clip" + m._uid + "_ann" + _;
                if (!f._input || f.visible === !1) {
                  b.selectAll("#" + V).remove();
                  return;
                }
                var U = {
                  x: {},
                  y: {}
                }, H = +f.textangle || 0, F = m._infolayer.append("g").classed(h, !0).attr("data-index", String(_)).style("opacity", f.opacity), G = F.append("g").classed("annotation-text-g", !0), q = d[f.showarrow ? "annotationTail" : "annotationPosition"], rt = f.captureevents || d.annotationText || q;
                function st(wt) {
                  var Et = {
                    index: _,
                    annotation: f._input,
                    fullAnnotation: f,
                    event: wt
                  };
                  return S && (Et.subplotId = S), Et;
                }
                var vt = G.append("g").style("pointer-events", rt ? "all" : null).call(i, "pointer").on("click", function() {
                  v._dragging = !1, v.emit("plotly_clickannotation", st(b.event));
                });
                f.hovertext && vt.on("mouseover", function() {
                  var wt = f.hoverlabel, Et = wt.font, Ct = this.getBoundingClientRect(), Gt = v.getBoundingClientRect();
                  t.loneHover({
                    x0: Ct.left - Gt.left,
                    x1: Ct.right - Gt.left,
                    y: (Ct.top + Ct.bottom) / 2 - Gt.top,
                    text: f.hovertext,
                    color: wt.bgcolor,
                    borderColor: wt.bordercolor,
                    fontFamily: Et.family,
                    fontSize: Et.size,
                    fontColor: Et.color,
                    fontWeight: Et.weight,
                    fontStyle: Et.style,
                    fontVariant: Et.variant,
                    fontShadow: Et.fontShadow,
                    fontLineposition: Et.fontLineposition,
                    fontTextcase: Et.fontTextcase
                  }, {
                    container: m._hoverlayer.node(),
                    outerContainer: m._paper.node(),
                    gd: v
                  });
                }).on("mouseout", function() {
                  t.loneUnhover(m._hoverlayer.node());
                });
                var ht = f.borderwidth, et = f.borderpad, Q = ht + et, j = vt.append("rect").attr("class", "bg").style("stroke-width", ht + "px").call(p.stroke, f.bordercolor).call(p.fill, f.bgcolor), at = f.width || f.height, ut = m._topclips.selectAll("#" + V).data(at ? [0] : []);
                ut.enter().append("clipPath").classed("annclip", !0).attr("id", V).append("rect"), ut.exit().remove();
                var nt = f.font, X = m._meta ? s.templateString(f.text, m._meta) : f.text, ct = vt.append("text").classed("annotation-text", !0).text(X);
                function lt(wt) {
                  return wt.call(u.font, nt).attr({
                    "text-anchor": {
                      left: "start",
                      right: "end"
                    }[f.align] || "middle"
                  }), r.convertToTspans(wt, v, pt), wt;
                }
                function pt() {
                  var wt = ct.selectAll("a");
                  if (wt.size() === 1 && wt.text() === ct.text()) {
                    var Et = vt.insert("a", ":first-child").attr({
                      "xlink:xlink:href": wt.attr("xlink:href"),
                      "xlink:xlink:show": wt.attr("xlink:show")
                    }).style({
                      cursor: "pointer"
                    });
                    Et.node().appendChild(j.node());
                  }
                  var Ct = vt.select(".annotation-text-math-group"), Gt = !Ct.empty(), Jt = u.bBox((Gt ? Ct : ct).node()), Qt = Jt.width, Vt = Jt.height, zt = f.width || Qt, Rt = f.height || Vt, Wt = Math.round(zt + 2 * Q), kt = Math.round(Rt + 2 * Q);
                  function re(dr, qe) {
                    return qe === "auto" && (dr < 0.3333333333333333 ? qe = "left" : dr > 0.6666666666666666 ? qe = "right" : qe = "center"), {
                      center: 0,
                      middle: 0,
                      left: 0.5,
                      bottom: -0.5,
                      right: -0.5,
                      top: 0.5
                    }[qe];
                  }
                  for (var ge = !1, _e = ["x", "y"], ce = 0; ce < _e.length; ce++) {
                    var ae = _e[ce], Se = f[ae + "ref"] || ae, ze = f["a" + ae + "ref"], Ne = {
                      x: M,
                      y: C
                    }[ae], Ve = (H + (ae === "x" ? 0 : -90)) * Math.PI / 180, Oe = Wt * Math.cos(Ve), ur = kt * Math.sin(Ve), ie = Math.abs(Oe) + Math.abs(ur), $t = f[ae + "anchor"], jt = f[ae + "shift"] * (ae === "x" ? 1 : -1), ee = U[ae], Bt, Xt, Zt, ye, Mt, St = A.getRefType(Se);
                    if (Ne && St !== "domain") {
                      var Lt = Ne.r2fraction(f[ae]);
                      (Lt < 0 || Lt > 1) && (ze === Se ? (Lt = Ne.r2fraction(f["a" + ae]), (Lt < 0 || Lt > 1) && (ge = !0)) : ge = !0), Bt = Ne._offset + Ne.r2p(f[ae]), ye = 0.5;
                    } else {
                      var te = St === "domain";
                      ae === "x" ? (Zt = f[ae], Bt = te ? Ne._offset + Ne._length * Zt : Bt = L.l + L.w * Zt) : (Zt = 1 - f[ae], Bt = te ? Ne._offset + Ne._length * Zt : Bt = L.t + L.h * Zt), ye = f.showarrow ? 0.5 : Zt;
                    }
                    if (f.showarrow) {
                      ee.head = Bt;
                      var fe = f["a" + ae];
                      if (Mt = Oe * re(0.5, f.xanchor) - ur * re(0.5, f.yanchor), ze === Se) {
                        var Me = A.getRefType(ze);
                        Me === "domain" ? (ae === "y" && (fe = 1 - fe), ee.tail = Ne._offset + Ne._length * fe) : Me === "paper" ? ae === "y" ? (fe = 1 - fe, ee.tail = L.t + L.h * fe) : ee.tail = L.l + L.w * fe : ee.tail = Ne._offset + Ne.r2p(fe), Xt = Mt;
                      } else
                        ee.tail = Bt + fe, Xt = Mt + fe;
                      ee.text = ee.tail + Mt;
                      var ir = m[ae === "x" ? "width" : "height"];
                      if (Se === "paper" && (ee.head = s.constrain(ee.head, 1, ir - 1)), ze === "pixel") {
                        var mr = -Math.max(ee.tail - 3, ee.text), Xe = Math.min(ee.tail + 3, ee.text) - ir;
                        mr > 0 ? (ee.tail += mr, ee.text += mr) : Xe > 0 && (ee.tail -= Xe, ee.text -= Xe);
                      }
                      ee.tail += jt, ee.head += jt;
                    } else
                      Mt = ie * re(ye, $t), Xt = Mt, ee.text = Bt + Mt;
                    ee.text += jt, Mt += jt, Xt += jt, f["_" + ae + "padplus"] = ie / 2 + Xt, f["_" + ae + "padminus"] = ie / 2 - Xt, f["_" + ae + "size"] = ie, f["_" + ae + "shift"] = Mt;
                  }
                  if (ge) {
                    vt.remove();
                    return;
                  }
                  var xe = 0, me = 0;
                  if (f.align !== "left" && (xe = (zt - Qt) * (f.align === "center" ? 0.5 : 1)), f.valign !== "top" && (me = (Rt - Vt) * (f.valign === "middle" ? 0.5 : 1)), Gt)
                    Ct.select("svg").attr({
                      x: Q + xe - 1,
                      y: Q + me
                    }).call(u.setClipUrl, at ? V : null, v);
                  else {
                    var Le = Q + me - Jt.top, qt = Q + xe - Jt.left;
                    ct.call(r.positionText, qt, Le).call(u.setClipUrl, at ? V : null, v);
                  }
                  ut.select("rect").call(u.setRect, Q, Q, zt, Rt), j.call(u.setRect, ht / 2, ht / 2, Wt - ht, kt - ht), vt.call(u.setTranslate, Math.round(U.x.text - Wt / 2), Math.round(U.y.text - kt / 2)), G.attr({
                    transform: "rotate(" + H + "," + U.x.text + "," + U.y.text + ")"
                  });
                  var De = function(dr, qe) {
                    F.selectAll(".annotation-arrow-g").remove();
                    var we = U.x.head, ue = U.y.head, Pe = U.x.tail + dr, Ue = U.y.tail + qe, Ye = U.x.text + dr, rr = U.y.text + qe, lr = s.rotationXYMatrix(H, Ye, rr), hr = s.apply2DTransform(lr), Sr = s.apply2DTransform2(lr), Dr = +j.attr("width"), Or = +j.attr("height"), Br = Ye - 0.5 * Dr, Nr = Br + Dr, Xr = rr - 0.5 * Or, Gr = Xr + Or, oe = [[Br, Xr, Br, Gr], [Br, Gr, Nr, Gr], [Nr, Gr, Nr, Xr], [Nr, Xr, Br, Xr]].map(Sr);
                    if (!oe.reduce(function(Jr, Zn) {
                      return Jr ^ !!s.segmentsIntersect(we, ue, we + 1e6, ue + 1e6, Zn[0], Zn[1], Zn[2], Zn[3]);
                    }, !1)) {
                      oe.forEach(function(Jr) {
                        var Zn = s.segmentsIntersect(Pe, Ue, we, ue, Jr[0], Jr[1], Jr[2], Jr[3]);
                        Zn && (Pe = Zn.x, Ue = Zn.y);
                      });
                      var de = f.arrowwidth, or = f.arrowcolor, Er = f.arrowside, Tr = F.append("g").style({
                        opacity: p.opacity(or)
                      }).classed("annotation-arrow-g", !0), tr = Tr.append("path").attr("d", "M" + Pe + "," + Ue + "L" + we + "," + ue).style("stroke-width", de + "px").call(p.stroke, p.rgb(or));
                      if (o(tr, Er, f), d.annotationPosition && tr.node().parentNode && !S) {
                        var yr = we, Ir = ue;
                        if (f.standoff) {
                          var Cr = Math.sqrt(Math.pow(we - Pe, 2) + Math.pow(ue - Ue, 2));
                          yr += f.standoff * (Pe - we) / Cr, Ir += f.standoff * (Ue - ue) / Cr;
                        }
                        var _r = Tr.append("path").classed("annotation-arrow", !0).classed("anndrag", !0).classed("cursor-move", !0).attr({
                          d: "M3,3H-3V-3H3ZM0,0L" + (Pe - yr) + "," + (Ue - Ir),
                          transform: T(yr, Ir)
                        }).style("stroke-width", de + 6 + "px").call(p.stroke, "rgba(0,0,0,0)").call(p.fill, "rgba(0,0,0,0)"), Zr, ln;
                        a.init({
                          element: _r.node(),
                          gd: v,
                          prepFn: function() {
                            var Jr = u.getTranslate(vt);
                            Zr = Jr.x, ln = Jr.y, M && M.autorange && z(M._name + ".autorange", !0), C && C.autorange && z(C._name + ".autorange", !0);
                          },
                          moveFn: function(Jr, Zn) {
                            var fn = hr(Zr, ln), hi = fn[0] + Jr, Vn = fn[1] + Zn;
                            vt.call(u.setTranslate, hi, Vn), O("x", x(M, Jr, "x", L, f)), O("y", x(C, Zn, "y", L, f)), f.axref === f.xref && O("ax", x(M, Jr, "ax", L, f)), f.ayref === f.yref && O("ay", x(C, Zn, "ay", L, f)), Tr.attr("transform", T(Jr, Zn)), G.attr({
                              transform: "rotate(" + H + "," + hi + "," + Vn + ")"
                            });
                          },
                          doneFn: function() {
                            P.call("_guiRelayout", v, B());
                            var Jr = document.querySelector(".js-notes-box-panel");
                            Jr && Jr.redraw(Jr.selectedObj);
                          }
                        });
                      }
                    }
                  };
                  if (f.showarrow && De(0, 0), q) {
                    var Je;
                    a.init({
                      element: vt.node(),
                      gd: v,
                      prepFn: function() {
                        Je = G.attr("transform");
                      },
                      moveFn: function(dr, qe) {
                        var we = "pointer";
                        if (f.showarrow)
                          f.axref === f.xref ? O("ax", x(M, dr, "ax", L, f)) : O("ax", f.ax + dr), f.ayref === f.yref ? O("ay", x(C, qe, "ay", L.w, f)) : O("ay", f.ay + qe), De(dr, qe);
                        else {
                          if (S)
                            return;
                          var ue, Pe;
                          if (M)
                            ue = x(M, dr, "x", L, f);
                          else {
                            var Ue = f._xsize / L.w, Ye = f.x + (f._xshift - f.xshift) / L.w - Ue / 2;
                            ue = a.align(Ye + dr / L.w, Ue, 0, 1, f.xanchor);
                          }
                          if (C)
                            Pe = x(C, qe, "y", L, f);
                          else {
                            var rr = f._ysize / L.h, lr = f.y - (f._yshift + f.yshift) / L.h - rr / 2;
                            Pe = a.align(lr - qe / L.h, rr, 0, 1, f.yanchor);
                          }
                          O("x", ue), O("y", Pe), (!M || !C) && (we = a.getCursor(M ? 0.5 : ue, C ? 0.5 : Pe, f.xanchor, f.yanchor));
                        }
                        G.attr({
                          transform: T(dr, qe) + Je
                        }), i(vt, we);
                      },
                      clickFn: function(dr, qe) {
                        f.captureevents && v.emit("plotly_clickannotation", st(qe));
                      },
                      doneFn: function() {
                        i(vt), P.call("_guiRelayout", v, B());
                        var dr = document.querySelector(".js-notes-box-panel");
                        dr && dr.redraw(dr.selectedObj);
                      }
                    });
                  }
                }
                d.annotationText ? ct.call(r.makeEditable, {
                  delegate: vt,
                  gd: v
                }).call(lt).on("edit", function(wt) {
                  f.text = wt, this.call(lt), O("text", wt), M && M.autorange && z(M._name + ".autorange", !0), C && C.autorange && z(C._name + ".autorange", !0), P.call("_guiRelayout", v, B());
                }) : ct.call(lt);
              }
            }
          ),
          /***/
          23768: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(78766), n = e(11645), s = e(34809), T = s.strScale, A = s.strRotate, p = s.strTranslate;
              Y.exports = function(t, r, i) {
                var a = t.node(), l = n[i.arrowhead || 0], o = n[i.startarrowhead || 0], y = (i.arrowwidth || 1) * (i.arrowsize || 1), g = (i.arrowwidth || 1) * (i.startarrowsize || 1), x = r.indexOf("start") >= 0, c = r.indexOf("end") >= 0, v = l.backoff * y + i.standoff, f = o.backoff * g + i.startstandoff, _, S, M, C;
                if (a.nodeName === "line") {
                  _ = {
                    x: +t.attr("x1"),
                    y: +t.attr("y1")
                  }, S = {
                    x: +t.attr("x2"),
                    y: +t.attr("y2")
                  };
                  var m = _.x - S.x, L = _.y - S.y;
                  if (M = Math.atan2(L, m), C = M + Math.PI, v && f && v + f > Math.sqrt(m * m + L * L)) {
                    G();
                    return;
                  }
                  if (v) {
                    if (v * v > m * m + L * L) {
                      G();
                      return;
                    }
                    var d = v * Math.cos(M), h = v * Math.sin(M);
                    S.x += d, S.y += h, t.attr({
                      x2: S.x,
                      y2: S.y
                    });
                  }
                  if (f) {
                    if (f * f > m * m + L * L) {
                      G();
                      return;
                    }
                    var E = f * Math.cos(M), w = f * Math.sin(M);
                    _.x -= E, _.y -= w, t.attr({
                      x1: _.x,
                      y1: _.y
                    });
                  }
                } else if (a.nodeName === "path") {
                  var z = a.getTotalLength(), O = "";
                  if (z < v + f) {
                    G();
                    return;
                  }
                  var B = a.getPointAtLength(0), V = a.getPointAtLength(0.1);
                  M = Math.atan2(B.y - V.y, B.x - V.x), _ = a.getPointAtLength(Math.min(f, z)), O = "0px," + f + "px,";
                  var U = a.getPointAtLength(z), H = a.getPointAtLength(z - 0.1);
                  C = Math.atan2(U.y - H.y, U.x - H.x), S = a.getPointAtLength(Math.max(0, z - v));
                  var F = O ? f + v : v;
                  O += z - F + "px," + z + "px", t.style("stroke-dasharray", O);
                }
                function G() {
                  t.style("stroke-dasharray", "0px,100px");
                }
                function q(rt, st, vt, ht) {
                  rt.path && (rt.noRotate && (vt = 0), b.select(a.parentNode).append("path").attr({
                    class: t.attr("class"),
                    d: rt.path,
                    transform: p(st.x, st.y) + A(vt * 180 / Math.PI) + T(ht)
                  }).style({
                    fill: P.rgb(i.arrowcolor),
                    "stroke-width": 0
                  }));
                }
                x && q(o, _, M, g), c && q(l, S, C, y);
              };
            }
          ),
          /***/
          3599: (
            /***/
            function(Y, K, e) {
              var b = e(3377), P = e(6035);
              Y.exports = {
                moduleType: "component",
                name: "annotations",
                layoutAttributes: e(50222),
                supplyLayoutDefaults: e(63737),
                includeBasePlot: e(20706)("annotations"),
                calcAutorange: e(60317),
                draw: b.draw,
                drawOne: b.drawOne,
                drawRaw: b.drawRaw,
                hasClickToShow: P.hasClickToShow,
                onClick: P.onClick,
                convertCoords: e(59741)
              };
            }
          ),
          /***/
          38239: (
            /***/
            function(Y, K, e) {
              var b = e(50222), P = e(13582).overrideAll, n = e(78032).templatedArray;
              Y.exports = P(n("annotation", {
                visible: b.visible,
                x: {
                  valType: "any"
                },
                y: {
                  valType: "any"
                },
                z: {
                  valType: "any"
                },
                ax: {
                  valType: "number"
                },
                ay: {
                  valType: "number"
                },
                xanchor: b.xanchor,
                xshift: b.xshift,
                yanchor: b.yanchor,
                yshift: b.yshift,
                text: b.text,
                textangle: b.textangle,
                font: b.font,
                width: b.width,
                height: b.height,
                opacity: b.opacity,
                align: b.align,
                valign: b.valign,
                bgcolor: b.bgcolor,
                bordercolor: b.bordercolor,
                borderpad: b.borderpad,
                borderwidth: b.borderwidth,
                showarrow: b.showarrow,
                arrowcolor: b.arrowcolor,
                arrowhead: b.arrowhead,
                startarrowhead: b.startarrowhead,
                arrowside: b.arrowside,
                arrowsize: b.arrowsize,
                startarrowsize: b.startarrowsize,
                arrowwidth: b.arrowwidth,
                standoff: b.standoff,
                startstandoff: b.startstandoff,
                hovertext: b.hovertext,
                hoverlabel: b.hoverlabel,
                captureevents: b.captureevents
                // maybes later?
                // clicktoshow: annAttrs.clicktoshow,
                // xclick: annAttrs.xclick,
                // yclick: annAttrs.yclick,
                // not needed!
                // axref: 'pixel'
                // ayref: 'pixel'
                // xref: 'x'
                // yref: 'y
                // zref: 'z'
              }), "calc", "from-root");
            }
          ),
          /***/
          47979: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(29714);
              Y.exports = function(T) {
                for (var A = T.fullSceneLayout, p = A.annotations, u = 0; u < p.length; u++)
                  n(p[u], T);
                T.fullLayout._infolayer.selectAll(".annotation-" + T.id).remove();
              };
              function n(s, T) {
                var A = T.fullSceneLayout, p = A.domain, u = T.fullLayout._size, t = {
                  // this gets fill in on render
                  pdata: null,
                  // to get setConvert to not execute cleanly
                  type: "linear",
                  // don't try to update them on `editable: true`
                  autorange: !1,
                  // set infinite range so that annotation draw routine
                  // does not try to remove 'outside-range' annotations,
                  // this case is handled in the render loop
                  range: [-1 / 0, 1 / 0]
                };
                s._xa = {}, b.extendFlat(s._xa, t), P.setConvert(s._xa), s._xa._offset = u.l + p.x[0] * u.w, s._xa.l2p = function() {
                  return 0.5 * (1 + s._pdata[0] / s._pdata[3]) * u.w * (p.x[1] - p.x[0]);
                }, s._ya = {}, b.extendFlat(s._ya, t), P.setConvert(s._ya), s._ya._offset = u.t + (1 - p.y[1]) * u.h, s._ya.l2p = function() {
                  return 0.5 * (1 - s._pdata[1] / s._pdata[3]) * u.h * (p.y[1] - p.y[0]);
                };
              }
            }
          ),
          /***/
          34232: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(29714), n = e(59008), s = e(53271), T = e(38239);
              Y.exports = function(u, t, r) {
                n(u, t, {
                  name: "annotations",
                  handleItemDefaults: A,
                  fullLayout: r.fullLayout
                });
              };
              function A(p, u, t, r) {
                function i(o, y) {
                  return b.coerce(p, u, T, o, y);
                }
                function a(o) {
                  var y = o + "axis", g = {
                    _fullLayout: {}
                  };
                  return g._fullLayout[y] = t[y], P.coercePosition(u, g, i, o, o, 0.5);
                }
                var l = i("visible");
                l && (s(p, u, r.fullLayout, i), a("x"), a("y"), a("z"), b.noneOrAll(p, u, ["x", "y", "z"]), u.xref = "x", u.yref = "y", u.zref = "z", i("xanchor"), i("yanchor"), i("xshift"), i("yshift"), u.showarrow && (u.axref = "pixel", u.ayref = "pixel", i("ax", -10), i("ay", -30), b.noneOrAll(p, u, ["ax", "ay"])));
              }
            }
          ),
          /***/
          9756: (
            /***/
            function(Y, K, e) {
              var b = e(3377).drawRaw, P = e(25802), n = ["x", "y", "z"];
              Y.exports = function(T) {
                for (var A = T.fullSceneLayout, p = T.dataScale, u = A.annotations, t = 0; t < u.length; t++) {
                  for (var r = u[t], i = !1, a = 0; a < 3; a++) {
                    var l = n[a], o = r[l], y = A[l + "axis"], g = y.r2fraction(o);
                    if (g < 0 || g > 1) {
                      i = !0;
                      break;
                    }
                  }
                  i ? T.fullLayout._infolayer.select(".annotation-" + T.id + '[data-index="' + t + '"]').remove() : (r._pdata = P(T.glplot.cameraParams, [A.xaxis.r2l(r.x) * p[0], A.yaxis.r2l(r.y) * p[1], A.zaxis.r2l(r.z) * p[2]]), b(T.graphDiv, r, t, T.id, r._xa, r._ya));
                }
              };
            }
          ),
          /***/
          83348: (
            /***/
            function(Y, K, e) {
              var b = e(33626), P = e(34809);
              Y.exports = {
                moduleType: "component",
                name: "annotations3d",
                schema: {
                  subplots: {
                    scene: {
                      annotations: e(38239)
                    }
                  }
                },
                layoutAttributes: e(38239),
                handleDefaults: e(34232),
                includeBasePlot: n,
                convert: e(47979),
                draw: e(9756)
              };
              function n(s, T) {
                var A = b.subplotsRegistry.gl3d;
                if (A)
                  for (var p = A.attrRegex, u = Object.keys(s), t = 0; t < u.length; t++) {
                    var r = u[t];
                    p.test(r) && (s[r].annotations || []).length && (P.pushUnique(T._basePlotModules, A), P.pushUnique(T._subplots.gl3d, r));
                  }
              }
            }
          ),
          /***/
          37177: (
            /***/
            function(Y, K, e) {
              Y.exports = e(24453), e(23428), e(1401), e(72210), e(28569), e(81133), e(78295), e(25512), e(42645), e(62324), e(91662), e(66445), e(50506), e(84756), e(41858), e(57985);
            }
          ),
          /***/
          29698: (
            /***/
            function(Y, K, e) {
              var b = e(37177), P = e(34809), n = e(63821), s = n.EPOCHJD, T = n.ONEDAY, A = {
                valType: "enumerated",
                values: P.sortObjectKeys(b.calendars),
                editType: "calc",
                dflt: "gregorian"
              }, p = function(M, C, m, L) {
                var d = {};
                return d[m] = A, P.coerce(M, C, d, m, L);
              }, u = function(M, C, m, L) {
                for (var d = 0; d < m.length; d++)
                  p(M, C, m[d] + "calendar", L.calendar);
              }, t = {
                chinese: "2000-01-01",
                coptic: "2000-01-01",
                discworld: "2000-01-01",
                ethiopian: "2000-01-01",
                hebrew: "5000-01-01",
                islamic: "1000-01-01",
                julian: "2000-01-01",
                mayan: "5000-01-01",
                nanakshahi: "1000-01-01",
                nepali: "2000-01-01",
                persian: "1000-01-01",
                jalali: "1000-01-01",
                taiwan: "1000-01-01",
                thai: "2000-01-01",
                ummalqura: "1400-01-01"
              }, r = {
                chinese: "2000-01-02",
                coptic: "2000-01-03",
                discworld: "2000-01-03",
                ethiopian: "2000-01-05",
                hebrew: "5000-01-01",
                islamic: "1000-01-02",
                julian: "2000-01-03",
                mayan: "5000-01-01",
                nanakshahi: "1000-01-05",
                nepali: "2000-01-05",
                persian: "1000-01-01",
                jalali: "1000-01-01",
                taiwan: "1000-01-04",
                thai: "2000-01-04",
                ummalqura: "1400-01-06"
              }, i = {
                chinese: ["2000-01-01", "2001-01-01"],
                coptic: ["1700-01-01", "1701-01-01"],
                discworld: ["1800-01-01", "1801-01-01"],
                ethiopian: ["2000-01-01", "2001-01-01"],
                hebrew: ["5700-01-01", "5701-01-01"],
                islamic: ["1400-01-01", "1401-01-01"],
                julian: ["2000-01-01", "2001-01-01"],
                mayan: ["5200-01-01", "5201-01-01"],
                nanakshahi: ["0500-01-01", "0501-01-01"],
                nepali: ["2000-01-01", "2001-01-01"],
                persian: ["1400-01-01", "1401-01-01"],
                jalali: ["1400-01-01", "1401-01-01"],
                taiwan: ["0100-01-01", "0101-01-01"],
                thai: ["2500-01-01", "2501-01-01"],
                ummalqura: ["1400-01-01", "1401-01-01"]
              }, a = "##", l = {
                d: {
                  0: "dd",
                  "-": "d"
                },
                // 2-digit or unpadded day of month
                e: {
                  0: "d",
                  "-": "d"
                },
                // alternate, always unpadded day of month
                a: {
                  0: "D",
                  "-": "D"
                },
                // short weekday name
                A: {
                  0: "DD",
                  "-": "DD"
                },
                // full weekday name
                j: {
                  0: "oo",
                  "-": "o"
                },
                // 3-digit or unpadded day of the year
                W: {
                  0: "ww",
                  "-": "w"
                },
                // 2-digit or unpadded week of the year (Monday first)
                m: {
                  0: "mm",
                  "-": "m"
                },
                // 2-digit or unpadded month number
                b: {
                  0: "M",
                  "-": "M"
                },
                // short month name
                B: {
                  0: "MM",
                  "-": "MM"
                },
                // full month name
                y: {
                  0: "yy",
                  "-": "yy"
                },
                // 2-digit year (map unpadded to zero-padded)
                Y: {
                  0: "yyyy",
                  "-": "yyyy"
                },
                // 4-digit year (map unpadded to zero-padded)
                U: a,
                // Sunday-first week of the year
                w: a,
                // day of the week [0(sunday),6]
                // combined format, we replace the date part with the world-calendar version
                // and the %X stays there for d3 to handle with time parts
                c: {
                  0: "D M d %X yyyy",
                  "-": "D M d %X yyyy"
                },
                x: {
                  0: "mm/dd/yyyy",
                  "-": "mm/dd/yyyy"
                }
              };
              function o(M, C, m) {
                for (var L = Math.floor((C + 0.05) / T) + s, d = g(m).fromJD(L), h = 0, E, w, z, O, B; (h = M.indexOf("%", h)) !== -1; )
                  E = M.charAt(h + 1), E === "0" || E === "-" || E === "_" ? (z = 3, w = M.charAt(h + 2), E === "_" && (E = "-")) : (w = E, E = "0", z = 2), O = l[w], O ? (O === a ? B = a : B = d.formatDate(O[E]), M = M.substr(0, h) + B + M.substr(h + z), h += B.length) : h += z;
                return M;
              }
              var y = {};
              function g(M) {
                var C = y[M];
                return C || (C = y[M] = b.instance(M), C);
              }
              function x(M) {
                return P.extendFlat({}, A, {
                  description: M
                });
              }
              function c(M) {
                return "Sets the calendar system to use with `" + M + "` date data.";
              }
              var v = {
                xcalendar: x(c("x"))
              }, f = P.extendFlat({}, v, {
                ycalendar: x(c("y"))
              }), _ = P.extendFlat({}, f, {
                zcalendar: x(c("z"))
              }), S = x(["Sets the calendar system to use for `range` and `tick0`", "if this is a date axis. This does not set the calendar for", "interpreting data on this axis, that's specified in the trace", "or via the global `layout.calendar`"].join(" "));
              Y.exports = {
                moduleType: "component",
                name: "calendars",
                schema: {
                  traces: {
                    scatter: f,
                    bar: f,
                    box: f,
                    heatmap: f,
                    contour: f,
                    histogram: f,
                    histogram2d: f,
                    histogram2dcontour: f,
                    scatter3d: _,
                    surface: _,
                    mesh3d: _,
                    scattergl: f,
                    ohlc: v,
                    candlestick: v
                  },
                  layout: {
                    calendar: x(["Sets the default calendar system to use for interpreting and", "displaying dates throughout the plot."].join(" "))
                  },
                  subplots: {
                    xaxis: {
                      calendar: S
                    },
                    yaxis: {
                      calendar: S
                    },
                    scene: {
                      xaxis: {
                        calendar: S
                      },
                      // TODO: it's actually redundant to include yaxis and zaxis here
                      // because in the scene attributes these are the same object so merging
                      // into one merges into them all. However, I left them in for parity with
                      // cartesian, where yaxis is unused until we Plotschema.get() when we
                      // use its presence or absence to determine whether to delete attributes
                      // from yaxis if they only apply to x (rangeselector/rangeslider)
                      yaxis: {
                        calendar: S
                      },
                      zaxis: {
                        calendar: S
                      }
                    },
                    polar: {
                      radialaxis: {
                        calendar: S
                      }
                    }
                  },
                  transforms: {
                    filter: {
                      valuecalendar: x(["WARNING: All transforms are deprecated and may be removed from the API in next major version.", "Sets the calendar system to use for `value`, if it is a date."].join(" ")),
                      targetcalendar: x(["WARNING: All transforms are deprecated and may be removed from the API in next major version.", "Sets the calendar system to use for `target`, if it is an", "array of dates. If `target` is a string (eg *x*) we use the", "corresponding trace attribute (eg `xcalendar`) if it exists,", "even if `targetcalendar` is provided."].join(" "))
                    }
                  }
                },
                layoutAttributes: A,
                handleDefaults: p,
                handleTraceDefaults: u,
                CANONICAL_SUNDAY: r,
                CANONICAL_TICK: t,
                DFLTRANGE: i,
                getCal: g,
                worldCalFmt: o
              };
            }
          ),
          /***/
          10229: (
            /***/
            function(Y, K) {
              K.defaults = [
                "#1f77b4",
                // muted blue
                "#ff7f0e",
                // safety orange
                "#2ca02c",
                // cooked asparagus green
                "#d62728",
                // brick red
                "#9467bd",
                // muted purple
                "#8c564b",
                // chestnut brown
                "#e377c2",
                // raspberry yogurt pink
                "#7f7f7f",
                // middle gray
                "#bcbd22",
                // curry yellow-green
                "#17becf"
                // blue-teal
              ], K.defaultLine = "#444", K.lightLine = "#eee", K.background = "#fff", K.borderLine = "#BEC8D9", K.lightFraction = 90.9090909090909;
            }
          ),
          /***/
          78766: (
            /***/
            function(Y, K, e) {
              var b = e(65657), P = e(10721), n = e(87800).isTypedArray, s = Y.exports = {}, T = e(10229);
              s.defaults = T.defaults;
              var A = s.defaultLine = T.defaultLine;
              s.lightLine = T.lightLine;
              var p = s.background = T.background;
              s.tinyRGB = function(t) {
                var r = t.toRgb();
                return "rgb(" + Math.round(r.r) + ", " + Math.round(r.g) + ", " + Math.round(r.b) + ")";
              }, s.rgb = function(t) {
                return s.tinyRGB(b(t));
              }, s.opacity = function(t) {
                return t ? b(t).getAlpha() : 0;
              }, s.addOpacity = function(t, r) {
                var i = b(t).toRgb();
                return "rgba(" + Math.round(i.r) + ", " + Math.round(i.g) + ", " + Math.round(i.b) + ", " + r + ")";
              }, s.combine = function(t, r) {
                var i = b(t).toRgb();
                if (i.a === 1) return b(t).toRgbString();
                var a = b(r || p).toRgb(), l = a.a === 1 ? a : {
                  r: 255 * (1 - a.a) + a.r * a.a,
                  g: 255 * (1 - a.a) + a.g * a.a,
                  b: 255 * (1 - a.a) + a.b * a.a
                }, o = {
                  r: l.r * (1 - i.a) + i.r * i.a,
                  g: l.g * (1 - i.a) + i.g * i.a,
                  b: l.b * (1 - i.a) + i.b * i.a
                };
                return b(o).toRgbString();
              }, s.interpolate = function(t, r, i) {
                var a = b(t).toRgb(), l = b(r).toRgb(), o = {
                  r: i * a.r + (1 - i) * l.r,
                  g: i * a.g + (1 - i) * l.g,
                  b: i * a.b + (1 - i) * l.b
                };
                return b(o).toRgbString();
              }, s.contrast = function(t, r, i) {
                var a = b(t);
                a.getAlpha() !== 1 && (a = b(s.combine(t, p)));
                var l = a.isDark() ? r ? a.lighten(r) : p : i ? a.darken(i) : A;
                return l.toString();
              }, s.stroke = function(t, r) {
                var i = b(r);
                t.style({
                  stroke: s.tinyRGB(i),
                  "stroke-opacity": i.getAlpha()
                });
              }, s.fill = function(t, r) {
                var i = b(r);
                t.style({
                  fill: s.tinyRGB(i),
                  "fill-opacity": i.getAlpha()
                });
              }, s.clean = function(t) {
                if (!(!t || typeof t != "object")) {
                  var r = Object.keys(t), i, a, l, o;
                  for (i = 0; i < r.length; i++)
                    if (l = r[i], o = t[l], l.substr(l.length - 5) === "color")
                      if (Array.isArray(o))
                        for (a = 0; a < o.length; a++) o[a] = u(o[a]);
                      else t[l] = u(o);
                    else if (l.substr(l.length - 10) === "colorscale" && Array.isArray(o))
                      for (a = 0; a < o.length; a++)
                        Array.isArray(o[a]) && (o[a][1] = u(o[a][1]));
                    else if (Array.isArray(o)) {
                      var y = o[0];
                      if (!Array.isArray(y) && y && typeof y == "object")
                        for (a = 0; a < o.length; a++) s.clean(o[a]);
                    } else o && typeof o == "object" && !n(o) && s.clean(o);
                }
              };
              function u(t) {
                if (P(t) || typeof t != "string") return t;
                var r = t.trim();
                if (r.substr(0, 3) !== "rgb") return t;
                var i = r.match(/^rgba?\s*\(([^()]*)\)$/);
                if (!i) return t;
                var a = i[1].trim().split(/\s*[\s,]\s*/), l = r.charAt(3) === "a" && a.length === 4;
                if (!l && a.length !== 3) return t;
                for (var o = 0; o < a.length; o++) {
                  if (!a[o].length || (a[o] = Number(a[o]), !(a[o] >= 0)))
                    return t;
                  if (o === 3)
                    a[o] > 1 && (a[o] = 1);
                  else if (a[o] >= 1)
                    return t;
                }
                var y = Math.round(a[0] * 255) + ", " + Math.round(a[1] * 255) + ", " + Math.round(a[2] * 255);
                return l ? "rgba(" + y + ", " + a[3] + ")" : "rgb(" + y + ")";
              }
            }
          ),
          /***/
          25158: (
            /***/
            function(Y, K, e) {
              var b = e(25829), P = e(80337), n = e(93049).extendFlat, s = e(13582).overrideAll;
              Y.exports = s({
                orientation: {
                  valType: "enumerated",
                  values: ["h", "v"],
                  dflt: "v"
                },
                thicknessmode: {
                  valType: "enumerated",
                  values: ["fraction", "pixels"],
                  dflt: "pixels"
                },
                thickness: {
                  valType: "number",
                  min: 0,
                  dflt: 30
                },
                lenmode: {
                  valType: "enumerated",
                  values: ["fraction", "pixels"],
                  dflt: "fraction"
                },
                len: {
                  valType: "number",
                  min: 0,
                  dflt: 1
                },
                x: {
                  valType: "number"
                },
                xref: {
                  valType: "enumerated",
                  dflt: "paper",
                  values: ["container", "paper"],
                  editType: "layoutstyle"
                },
                xanchor: {
                  valType: "enumerated",
                  values: ["left", "center", "right"]
                },
                xpad: {
                  valType: "number",
                  min: 0,
                  dflt: 10
                },
                y: {
                  valType: "number"
                },
                yref: {
                  valType: "enumerated",
                  dflt: "paper",
                  values: ["container", "paper"],
                  editType: "layoutstyle"
                },
                yanchor: {
                  valType: "enumerated",
                  values: ["top", "middle", "bottom"]
                },
                ypad: {
                  valType: "number",
                  min: 0,
                  dflt: 10
                },
                // a possible line around the bar itself
                outlinecolor: b.linecolor,
                outlinewidth: b.linewidth,
                // Should outlinewidth have {dflt: 0} ?
                // another possible line outside the padding and tick labels
                bordercolor: b.linecolor,
                borderwidth: {
                  valType: "number",
                  min: 0,
                  dflt: 0
                },
                bgcolor: {
                  valType: "color",
                  dflt: "rgba(0,0,0,0)"
                },
                // tick and title properties named and function exactly as in axes
                tickmode: b.minor.tickmode,
                nticks: b.nticks,
                tick0: b.tick0,
                dtick: b.dtick,
                tickvals: b.tickvals,
                ticktext: b.ticktext,
                ticks: n({}, b.ticks, {
                  dflt: ""
                }),
                ticklabeloverflow: n({}, b.ticklabeloverflow, {}),
                // ticklabelposition: not used directly, as values depend on orientation
                // left/right options are for x axes, and top/bottom options are for y axes
                ticklabelposition: {
                  valType: "enumerated",
                  values: ["outside", "inside", "outside top", "inside top", "outside left", "inside left", "outside right", "inside right", "outside bottom", "inside bottom"],
                  dflt: "outside"
                },
                ticklen: b.ticklen,
                tickwidth: b.tickwidth,
                tickcolor: b.tickcolor,
                ticklabelstep: b.ticklabelstep,
                showticklabels: b.showticklabels,
                labelalias: b.labelalias,
                tickfont: P({}),
                tickangle: b.tickangle,
                tickformat: b.tickformat,
                tickformatstops: b.tickformatstops,
                tickprefix: b.tickprefix,
                showtickprefix: b.showtickprefix,
                ticksuffix: b.ticksuffix,
                showticksuffix: b.showticksuffix,
                separatethousands: b.separatethousands,
                exponentformat: b.exponentformat,
                minexponent: b.minexponent,
                showexponent: b.showexponent,
                title: {
                  text: {
                    valType: "string"
                  },
                  font: P({}),
                  side: {
                    valType: "enumerated",
                    values: ["right", "top", "bottom"]
                  }
                },
                _deprecated: {
                  title: {
                    valType: "string"
                  },
                  titlefont: P({}),
                  titleside: {
                    valType: "enumerated",
                    values: ["right", "top", "bottom"],
                    dflt: "top"
                  }
                }
              }, "colorbars", "from-root");
            }
          ),
          /***/
          34554: (
            /***/
            function(Y) {
              Y.exports = {
                cn: {
                  colorbar: "colorbar",
                  cbbg: "cbbg",
                  cbfill: "cbfill",
                  cbfills: "cbfills",
                  cbline: "cbline",
                  cblines: "cblines",
                  cbaxis: "cbaxis",
                  cbtitleunshift: "cbtitleunshift",
                  cbtitle: "cbtitle",
                  cboutline: "cboutline",
                  crisp: "crisp",
                  jsPlaceholder: "js-placeholder"
                }
              };
            }
          ),
          /***/
          42097: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(78032), n = e(22777), s = e(87433), T = e(12036), A = e(54616), p = e(25158);
              Y.exports = function(t, r, i) {
                var a = P.newContainer(r, "colorbar"), l = t.colorbar || {};
                function o(U, H) {
                  return b.coerce(l, a, p, U, H);
                }
                var y = i.margin || {
                  t: 0,
                  b: 0,
                  l: 0,
                  r: 0
                }, g = i.width - y.l - y.r, x = i.height - y.t - y.b, c = o("orientation"), v = c === "v", f = o("thicknessmode");
                o("thickness", f === "fraction" ? 30 / (v ? g : x) : 30);
                var _ = o("lenmode");
                o("len", _ === "fraction" ? 1 : v ? x : g);
                var S = o("yref"), M = o("xref"), C = S === "paper", m = M === "paper", L, d, h, E = "left";
                v ? (h = "middle", E = m ? "left" : "right", L = m ? 1.02 : 1, d = 0.5) : (h = C ? "bottom" : "top", E = "center", L = 0.5, d = C ? 1.02 : 1), b.coerce(l, a, {
                  x: {
                    valType: "number",
                    min: m ? -2 : 0,
                    max: m ? 3 : 1,
                    dflt: L
                  }
                }, "x"), b.coerce(l, a, {
                  y: {
                    valType: "number",
                    min: C ? -2 : 0,
                    max: C ? 3 : 1,
                    dflt: d
                  }
                }, "y"), o("xanchor", E), o("xpad"), o("yanchor", h), o("ypad"), b.noneOrAll(l, a, ["x", "y"]), o("outlinecolor"), o("outlinewidth"), o("bordercolor"), o("borderwidth"), o("bgcolor");
                var w = b.coerce(l, a, {
                  ticklabelposition: {
                    valType: "enumerated",
                    dflt: "outside",
                    values: v ? ["outside", "inside", "outside top", "inside top", "outside bottom", "inside bottom"] : ["outside", "inside", "outside left", "inside left", "outside right", "inside right"]
                  }
                }, "ticklabelposition");
                o("ticklabeloverflow", w.indexOf("inside") !== -1 ? "hide past domain" : "hide past div"), n(l, a, o, "linear");
                var z = i.font, O = {
                  noAutotickangles: !0,
                  noTicklabelshift: !0,
                  noTicklabelstandoff: !0,
                  outerTicks: !1,
                  font: z
                };
                w.indexOf("inside") !== -1 && (O.bgColor = "black"), A(l, a, o, "linear", O), T(l, a, o, "linear", O), s(l, a, o, "linear", O), o("title.text", i._dfltTitle.colorbar);
                var B = a.showticklabels ? a.tickfont : z, V = b.extendFlat({}, z, {
                  family: B.family,
                  size: b.bigFont(B.size)
                });
                b.coerceFont(o, "title.font", V), o("title.side", v ? "top" : "right");
              };
            }
          ),
          /***/
          5881: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(65657), n = e(44122), s = e(33626), T = e(29714), A = e(14751), p = e(34809), u = p.strTranslate, t = e(93049).extendFlat, r = e(27983), i = e(62203), a = e(78766), l = e(17240), o = e(30635), y = e(65477).flipScale, g = e(97655), x = e(40957), c = e(25829), v = e(4530), f = v.LINE_SPACING, _ = v.FROM_TL, S = v.FROM_BR, M = e(34554).cn;
              function C(w) {
                var z = w._fullLayout, O = z._infolayer.selectAll("g." + M.colorbar).data(m(w), function(B) {
                  return B._id;
                });
                O.enter().append("g").attr("class", function(B) {
                  return B._id;
                }).classed(M.colorbar, !0), O.each(function(B) {
                  var V = b.select(this);
                  p.ensureSingle(V, "rect", M.cbbg), p.ensureSingle(V, "g", M.cbfills), p.ensureSingle(V, "g", M.cblines), p.ensureSingle(V, "g", M.cbaxis, function(H) {
                    H.classed(M.crisp, !0);
                  }), p.ensureSingle(V, "g", M.cbtitleunshift, function(H) {
                    H.append("g").classed(M.cbtitle, !0);
                  }), p.ensureSingle(V, "rect", M.cboutline);
                  var U = L(V, B, w);
                  U && U.then && (w._promises || []).push(U), w._context.edits.colorbarPosition && d(V, B, w);
                }), O.exit().each(function(B) {
                  n.autoMargin(w, B._id);
                }).remove(), O.order();
              }
              function m(w) {
                var z = w._fullLayout, O = w.calcdata, B = [], V, U, H, F;
                function G(nt) {
                  return t(nt, {
                    // fillcolor can be a d3 scale, domain is z values, range is colors
                    // or leave it out for no fill,
                    // or set to a string constant for single-color fill
                    _fillcolor: null,
                    // line.color has the same options as fillcolor
                    _line: {
                      color: null,
                      width: null,
                      dash: null
                    },
                    // levels of lines to draw.
                    // note that this DOES NOT determine the extent of the bar
                    // that's given by the domain of fillcolor
                    // (or line.color if no fillcolor domain)
                    _levels: {
                      start: null,
                      end: null,
                      size: null
                    },
                    // separate fill levels (for example, heatmap coloring of a
                    // contour map) if this is omitted, fillcolors will be
                    // evaluated halfway between levels
                    _filllevels: null,
                    // for continuous colorscales: fill with a gradient instead of explicit levels
                    // value should be the colorscale [[0, c0], [v1, c1], ..., [1, cEnd]]
                    _fillgradient: null,
                    // when using a gradient, we need the data range specified separately
                    _zrange: null
                  });
                }
                function q() {
                  typeof F.calc == "function" ? F.calc(w, H, V) : (V._fillgradient = U.reversescale ? y(U.colorscale) : U.colorscale, V._zrange = [U[F.min], U[F.max]]);
                }
                for (var rt = 0; rt < O.length; rt++) {
                  var st = O[rt];
                  if (H = st[0].trace, !!H._module) {
                    var vt = H._module.colorbar;
                    if (H.visible === !0 && vt)
                      for (var ht = Array.isArray(vt), et = ht ? vt : [vt], Q = 0; Q < et.length; Q++) {
                        F = et[Q];
                        var j = F.container;
                        U = j ? H[j] : H, U && U.showscale && (V = G(U.colorbar), V._id = "cb" + H.uid + (ht && j ? "-" + j : ""), V._traceIndex = H.index, V._propPrefix = (j ? j + "." : "") + "colorbar.", V._meta = H._meta, q(), B.push(V));
                      }
                  }
                }
                for (var at in z._colorAxes)
                  if (U = z[at], U.showscale) {
                    var ut = z._colorAxes[at];
                    V = G(U.colorbar), V._id = "cb" + at, V._propPrefix = at + ".colorbar.", V._meta = z._meta, F = {
                      min: "cmin",
                      max: "cmax"
                    }, ut[0] !== "heatmap" && (H = ut[1], F.calc = H._module.colorbar.calc), q(), B.push(V);
                  }
                return B;
              }
              function L(w, z, O) {
                var B = z.orientation === "v", V = z.len, U = z.lenmode, H = z.thickness, F = z.thicknessmode, G = z.outlinewidth, q = z.borderwidth, rt = z.bgcolor, st = z.xanchor, vt = z.yanchor, ht = z.xpad, et = z.ypad, Q = z.x, j = B ? z.y : 1 - z.y, at = z.yref === "paper", ut = z.xref === "paper", nt = O._fullLayout, X = nt._size, ct = z._fillcolor, lt = z._line, pt = z.title, wt = pt.side, Et = z._zrange || b.extent((typeof ct == "function" ? ct : lt.color).domain()), Ct = typeof lt.color == "function" ? lt.color : function() {
                  return lt.color;
                }, Gt = typeof ct == "function" ? ct : function() {
                  return ct;
                }, Jt = z._levels, Qt = h(O, z, Et), Vt = Qt.fill, zt = Qt.line, Rt = Math.round(H * (F === "fraction" ? B ? X.w : X.h : 1)), Wt = Rt / (B ? X.w : X.h), kt = Math.round(V * (U === "fraction" ? B ? X.h : X.w : 1)), re = kt / (B ? X.h : X.w), ge = ut ? X.w : O._fullLayout.width, _e = at ? X.h : O._fullLayout.height, ce = Math.round(B ? Q * ge + ht : j * _e + et), ae = {
                  center: 0.5,
                  right: 1
                }[st] || 0, Se = {
                  top: 1,
                  middle: 0.5
                }[vt] || 0, ze = B ? Q - ae * Wt : j - Se * Wt, Ne = B ? j - Se * re : Q - ae * re, Ve = Math.round(B ? _e * (1 - Ne) : ge * Ne);
                z._lenFrac = re, z._thickFrac = Wt, z._uFrac = ze, z._vFrac = Ne;
                var Oe = z._axis = E(O, z, Et);
                Oe.position = Wt + (B ? Q + ht / X.w : j + et / X.h);
                var ur = ["top", "bottom"].indexOf(wt) !== -1;
                if (B && ur && (Oe.title.side = wt, Oe.titlex = Q + ht / X.w, Oe.titley = Ne + (pt.side === "top" ? re - et / X.h : et / X.h)), !B && !ur && (Oe.title.side = wt, Oe.titley = j + et / X.h, Oe.titlex = Ne + ht / X.w), lt.color && z.tickmode === "auto") {
                  Oe.tickmode = "linear", Oe.tick0 = Jt.start;
                  var ie = Jt.size, $t = p.constrain(kt / 50, 4, 15) + 1, jt = (Et[1] - Et[0]) / ((z.nticks || $t) * ie);
                  if (jt > 1) {
                    var ee = Math.pow(10, Math.floor(Math.log(jt) / Math.LN10));
                    ie *= ee * p.roundUp(jt / ee, [2, 5, 10]), (Math.abs(Jt.start) / Jt.size + 1e-6) % 1 < 2e-6 && (Oe.tick0 = 0);
                  }
                  Oe.dtick = ie;
                }
                Oe.domain = B ? [Ne + et / X.h, Ne + re - et / X.h] : [Ne + ht / X.w, Ne + re - ht / X.w], Oe.setScale(), w.attr("transform", u(Math.round(X.l), Math.round(X.t)));
                var Bt = w.select("." + M.cbtitleunshift).attr("transform", u(-Math.round(X.l), -Math.round(X.t))), Xt = Oe.ticklabelposition, Zt = Oe.title.font.size, ye = w.select("." + M.cbaxis), Mt, St = 0, Lt = 0;
                function te(Xe, xe) {
                  var me = {
                    propContainer: Oe,
                    propName: z._propPrefix + "title",
                    traceIndex: z._traceIndex,
                    _meta: z._meta,
                    placeholder: nt._dfltTitle.colorbar,
                    containerGroup: w.select("." + M.cbtitle)
                  }, Le = Xe.charAt(0) === "h" ? Xe.substr(1) : "h" + Xe;
                  w.selectAll("." + Le + ",." + Le + "-math-group").remove(), l.draw(O, Xe, t(me, xe || {}));
                }
                function fe() {
                  if (B && ur || !B && !ur) {
                    var Xe, xe;
                    wt === "top" && (Xe = ht + X.l + ge * Q, xe = et + X.t + _e * (1 - Ne - re) + 3 + Zt * 0.75), wt === "bottom" && (Xe = ht + X.l + ge * Q, xe = et + X.t + _e * (1 - Ne) - 3 - Zt * 0.25), wt === "right" && (xe = et + X.t + _e * j + 3 + Zt * 0.75, Xe = ht + X.l + ge * Ne), te(Oe._id + "title", {
                      attributes: {
                        x: Xe,
                        y: xe,
                        "text-anchor": B ? "start" : "middle"
                      }
                    });
                  }
                }
                function Me() {
                  if (B && !ur || !B && ur) {
                    var Xe = Oe.position || 0, xe = Oe._offset + Oe._length / 2, me, Le;
                    if (wt === "right")
                      Le = xe, me = X.l + ge * Xe + 10 + Zt * (Oe.showticklabels ? 1 : 0.5);
                    else if (me = xe, wt === "bottom" && (Le = X.t + _e * Xe + 10 + (Xt.indexOf("inside") === -1 ? Oe.tickfont.size : 0) + (Oe.ticks !== "intside" && z.ticklen || 0)), wt === "top") {
                      var qt = pt.text.split("<br>").length;
                      Le = X.t + _e * Xe + 10 - Rt - f * Zt * qt;
                    }
                    te((B ? (
                      // the 'h' + is a hack to get around the fact that
                      // convertToTspans rotates any 'y...' class by 90 degrees.
                      // TODO: find a better way to control this.
                      "h"
                    ) : "v") + Oe._id + "title", {
                      avoid: {
                        selection: b.select(O).selectAll("g." + Oe._id + "tick"),
                        side: wt,
                        offsetTop: B ? 0 : X.t,
                        offsetLeft: B ? X.l : 0,
                        maxShift: B ? nt.width : nt.height
                      },
                      attributes: {
                        x: me,
                        y: Le,
                        "text-anchor": "middle"
                      },
                      transform: {
                        rotate: B ? -90 : 0,
                        offset: 0
                      }
                    });
                  }
                }
                function ir() {
                  if (!B && !ur || B && ur) {
                    var Xe = w.select("." + M.cbtitle), xe = Xe.select("text"), me = [-G / 2, G / 2], Le = Xe.select(".h" + Oe._id + "title-math-group").node(), qt = 15.6;
                    xe.node() && (qt = parseInt(xe.node().style.fontSize, 10) * f);
                    var De;
                    if (Le ? (De = i.bBox(Le), Lt = De.width, St = De.height, St > qt && (me[1] -= (St - qt) / 2)) : xe.node() && !xe.classed(M.jsPlaceholder) && (De = i.bBox(xe.node()), Lt = De.width, St = De.height), B) {
                      if (St) {
                        if (St += 5, wt === "top")
                          Oe.domain[1] -= St / X.h, me[1] *= -1;
                        else {
                          Oe.domain[0] += St / X.h;
                          var Je = o.lineCount(xe);
                          me[1] += (1 - Je) * qt;
                        }
                        Xe.attr("transform", u(me[0], me[1])), Oe.setScale();
                      }
                    } else
                      Lt && (wt === "right" && (Oe.domain[0] += (Lt + Zt / 2) / X.w), Xe.attr("transform", u(me[0], me[1])), Oe.setScale());
                  }
                  w.selectAll("." + M.cbfills + ",." + M.cblines).attr("transform", B ? u(0, Math.round(X.h * (1 - Oe.domain[1]))) : u(Math.round(X.w * Oe.domain[0]), 0)), ye.attr("transform", B ? u(0, Math.round(-X.t)) : u(Math.round(-X.l), 0));
                  var dr = w.select("." + M.cbfills).selectAll("rect." + M.cbfill).attr("style", "").data(Vt);
                  dr.enter().append("rect").classed(M.cbfill, !0).attr("style", ""), dr.exit().remove();
                  var qe = Et.map(Oe.c2p).map(Math.round).sort(function(Ye, rr) {
                    return Ye - rr;
                  });
                  dr.each(function(Ye, rr) {
                    var lr = [rr === 0 ? Et[0] : (Vt[rr] + Vt[rr - 1]) / 2, rr === Vt.length - 1 ? Et[1] : (Vt[rr] + Vt[rr + 1]) / 2].map(Oe.c2p).map(Math.round);
                    B && (lr[1] = p.constrain(lr[1] + (lr[1] > lr[0]) ? 1 : -1, qe[0], qe[1]));
                    var hr = b.select(this).attr(B ? "x" : "y", ce).attr(B ? "y" : "x", b.min(lr)).attr(B ? "width" : "height", Math.max(Rt, 2)).attr(B ? "height" : "width", Math.max(b.max(lr) - b.min(lr), 2));
                    if (z._fillgradient)
                      i.gradient(hr, O, z._id, B ? "vertical" : "horizontalreversed", z._fillgradient, "fill");
                    else {
                      var Sr = Gt(Ye).replace("e-", "");
                      hr.attr("fill", P(Sr).toHexString());
                    }
                  });
                  var we = w.select("." + M.cblines).selectAll("path." + M.cbline).data(lt.color && lt.width ? zt : []);
                  we.enter().append("path").classed(M.cbline, !0), we.exit().remove(), we.each(function(Ye) {
                    var rr = ce, lr = Math.round(Oe.c2p(Ye)) + lt.width / 2 % 1;
                    b.select(this).attr("d", "M" + (B ? rr + "," + lr : lr + "," + rr) + (B ? "h" : "v") + Rt).call(i.lineGroupStyle, lt.width, Ct(Ye), lt.dash);
                  }), ye.selectAll("g." + Oe._id + "tick,path").remove();
                  var ue = ce + Rt + (G || 0) / 2 - (z.ticks === "outside" ? 1 : 0), Pe = T.calcTicks(Oe), Ue = T.getTickSigns(Oe)[2];
                  return T.drawTicks(O, Oe, {
                    vals: Oe.ticks === "inside" ? T.clipEnds(Oe, Pe) : Pe,
                    layer: ye,
                    path: T.makeTickPath(Oe, ue, Ue),
                    transFn: T.makeTransTickFn(Oe)
                  }), T.drawLabels(O, Oe, {
                    vals: Pe,
                    layer: ye,
                    transFn: T.makeTransTickLabelFn(Oe),
                    labelFns: T.makeLabelFns(Oe, ue)
                  });
                }
                function mr() {
                  var Xe, xe = Rt + G / 2;
                  Xt.indexOf("inside") === -1 && (Xe = i.bBox(ye.node()), xe += B ? Xe.width : Xe.height), Mt = Bt.select("text");
                  var me = 0, Le = B && wt === "top", qt = !B && wt === "right", De = 0;
                  if (Mt.node() && !Mt.classed(M.jsPlaceholder)) {
                    var Je, dr = Bt.select(".h" + Oe._id + "title-math-group").node();
                    dr && (B && ur || !B && !ur) ? (Xe = i.bBox(dr), me = Xe.width, Je = Xe.height) : (Xe = i.bBox(Bt.node()), me = Xe.right - X.l - (B ? ce : Ve), Je = Xe.bottom - X.t - (B ? Ve : ce), !B && wt === "top" && (xe += Xe.height, De = Xe.height)), qt && (Mt.attr("transform", u(me / 2 + Zt / 2, 0)), me *= 2), xe = Math.max(xe, B ? me : Je);
                  }
                  var qe = (B ? ht : et) * 2 + xe + q + G / 2, we = 0;
                  !B && pt.text && vt === "bottom" && j <= 0 && (we = qe / 2, qe += we, De += we), nt._hColorbarMoveTitle = we, nt._hColorbarMoveCBTitle = De;
                  var ue = q + G, Pe = (B ? ce : Ve) - ue / 2 - (B ? ht : 0), Ue = (B ? Ve : ce) - (B ? kt : et + De - we);
                  w.select("." + M.cbbg).attr("x", Pe).attr("y", Ue).attr(B ? "width" : "height", Math.max(qe - we, 2)).attr(B ? "height" : "width", Math.max(kt + ue, 2)).call(a.fill, rt).call(a.stroke, z.bordercolor).style("stroke-width", q);
                  var Ye = qt ? Math.max(me - 10, 0) : 0;
                  w.selectAll("." + M.cboutline).attr("x", (B ? ce : Ve + ht) + Ye).attr("y", (B ? Ve + et - kt : ce) + (Le ? St : 0)).attr(B ? "width" : "height", Math.max(Rt, 2)).attr(B ? "height" : "width", Math.max(kt - (B ? 2 * et + St : 2 * ht + Ye), 2)).call(a.stroke, z.outlinecolor).style({
                    fill: "none",
                    "stroke-width": G
                  });
                  var rr = B ? ae * qe : 0, lr = B ? 0 : (1 - Se) * qe - De;
                  if (rr = ut ? X.l - rr : -rr, lr = at ? X.t - lr : -lr, w.attr("transform", u(rr, lr)), !B && (q || P(rt).getAlpha() && !P.equals(nt.paper_bgcolor, rt))) {
                    var hr = ye.selectAll("text"), Sr = hr[0].length, Dr = w.select("." + M.cbbg).node(), Or = i.bBox(Dr), Br = i.getTranslate(w), Nr = 2;
                    hr.each(function(Ir, Cr) {
                      var _r = 0, Zr = Sr - 1;
                      if (Cr === _r || Cr === Zr) {
                        var ln = i.bBox(this), Jr = i.getTranslate(this), Zn;
                        if (Cr === Zr) {
                          var fn = ln.right + Jr.x, hi = Or.right + Br.x + Ve - q - Nr + Q;
                          Zn = hi - fn, Zn > 0 && (Zn = 0);
                        } else if (Cr === _r) {
                          var Vn = ln.left + Jr.x, jr = Or.left + Br.x + Ve + q + Nr;
                          Zn = jr - Vn, Zn < 0 && (Zn = 0);
                        }
                        Zn && (Sr < 3 ? this.setAttribute("transform", "translate(" + Zn + ",0) " + this.getAttribute("transform")) : this.setAttribute("visibility", "hidden"));
                      }
                    });
                  }
                  var Xr = {}, Gr = _[st], oe = S[st], de = _[vt], or = S[vt], Er = qe - Rt;
                  B ? (U === "pixels" ? (Xr.y = j, Xr.t = kt * de, Xr.b = kt * or) : (Xr.t = Xr.b = 0, Xr.yt = j + V * de, Xr.yb = j - V * or), F === "pixels" ? (Xr.x = Q, Xr.l = qe * Gr, Xr.r = qe * oe) : (Xr.l = Er * Gr, Xr.r = Er * oe, Xr.xl = Q - H * Gr, Xr.xr = Q + H * oe)) : (U === "pixels" ? (Xr.x = Q, Xr.l = kt * Gr, Xr.r = kt * oe) : (Xr.l = Xr.r = 0, Xr.xl = Q + V * Gr, Xr.xr = Q - V * oe), F === "pixels" ? (Xr.y = 1 - j, Xr.t = qe * de, Xr.b = qe * or) : (Xr.t = Er * de, Xr.b = Er * or, Xr.yt = j - H * de, Xr.yb = j + H * or));
                  var Tr = z.y < 0.5 ? "b" : "t", tr = z.x < 0.5 ? "l" : "r";
                  O._fullLayout._reservedMargin[z._id] = {};
                  var yr = {
                    r: nt.width - Pe - rr,
                    l: Pe + Xr.r,
                    b: nt.height - Ue - lr,
                    t: Ue + Xr.b
                  };
                  ut && at ? n.autoMargin(O, z._id, Xr) : ut ? O._fullLayout._reservedMargin[z._id][Tr] = yr[Tr] : at || B ? O._fullLayout._reservedMargin[z._id][tr] = yr[tr] : O._fullLayout._reservedMargin[z._id][Tr] = yr[Tr];
                }
                return p.syncOrAsync([n.previousPromises, fe, ir, Me, n.previousPromises, mr], O);
              }
              function d(w, z, O) {
                var B = z.orientation === "v", V = O._fullLayout, U = V._size, H, F, G;
                A.init({
                  element: w.node(),
                  gd: O,
                  prepFn: function() {
                    H = w.attr("transform"), r(w);
                  },
                  moveFn: function(q, rt) {
                    w.attr("transform", H + u(q, rt)), F = A.align((B ? z._uFrac : z._vFrac) + q / U.w, B ? z._thickFrac : z._lenFrac, 0, 1, z.xanchor), G = A.align((B ? z._vFrac : 1 - z._uFrac) - rt / U.h, B ? z._lenFrac : z._thickFrac, 0, 1, z.yanchor);
                    var st = A.getCursor(F, G, z.xanchor, z.yanchor);
                    r(w, st);
                  },
                  doneFn: function() {
                    if (r(w), F !== void 0 && G !== void 0) {
                      var q = {};
                      q[z._propPrefix + "x"] = F, q[z._propPrefix + "y"] = G, z._traceIndex !== void 0 ? s.call("_guiRestyle", O, q, z._traceIndex) : s.call("_guiRelayout", O, q);
                    }
                  }
                });
              }
              function h(w, z, O) {
                var B = z._levels, V = [], U = [], H, F, G = B.end + B.size / 100, q = B.size, rt = 1.001 * O[0] - 1e-3 * O[1], st = 1.001 * O[1] - 1e-3 * O[0];
                for (F = 0; F < 1e5 && (H = B.start + F * q, !(q > 0 ? H >= G : H <= G)); F++)
                  H > rt && H < st && V.push(H);
                if (z._fillgradient)
                  U = [0];
                else if (typeof z._fillcolor == "function") {
                  var vt = z._filllevels;
                  if (vt)
                    for (G = vt.end + vt.size / 100, q = vt.size, F = 0; F < 1e5 && (H = vt.start + F * q, !(q > 0 ? H >= G : H <= G)); F++)
                      H > O[0] && H < O[1] && U.push(H);
                  else
                    U = V.map(function(ht) {
                      return ht - B.size / 2;
                    }), U.push(U[U.length - 1] + B.size);
                } else z._fillcolor && typeof z._fillcolor == "string" && (U = [0]);
                return B.size < 0 && (V.reverse(), U.reverse()), {
                  line: V,
                  fill: U
                };
              }
              function E(w, z, O) {
                var B = w._fullLayout, V = z.orientation === "v", U = {
                  type: "linear",
                  range: O,
                  tickmode: z.tickmode,
                  nticks: z.nticks,
                  tick0: z.tick0,
                  dtick: z.dtick,
                  tickvals: z.tickvals,
                  ticktext: z.ticktext,
                  ticks: z.ticks,
                  ticklen: z.ticklen,
                  tickwidth: z.tickwidth,
                  tickcolor: z.tickcolor,
                  showticklabels: z.showticklabels,
                  labelalias: z.labelalias,
                  ticklabelposition: z.ticklabelposition,
                  ticklabeloverflow: z.ticklabeloverflow,
                  ticklabelstep: z.ticklabelstep,
                  tickfont: z.tickfont,
                  tickangle: z.tickangle,
                  tickformat: z.tickformat,
                  exponentformat: z.exponentformat,
                  minexponent: z.minexponent,
                  separatethousands: z.separatethousands,
                  showexponent: z.showexponent,
                  showtickprefix: z.showtickprefix,
                  tickprefix: z.tickprefix,
                  showticksuffix: z.showticksuffix,
                  ticksuffix: z.ticksuffix,
                  title: z.title,
                  showline: !0,
                  anchor: "free",
                  side: V ? "right" : "bottom",
                  position: 1
                }, H = V ? "y" : "x", F = {
                  type: "linear",
                  _id: H + z._id
                }, G = {
                  letter: H,
                  font: B.font,
                  noAutotickangles: H === "y",
                  noHover: !0,
                  noTickson: !0,
                  noTicklabelmode: !0,
                  noInsideRange: !0,
                  calendar: B.calendar
                  // not really necessary (yet?)
                };
                function q(rt, st) {
                  return p.coerce(U, F, c, rt, st);
                }
                return g(U, F, q, G, B), x(U, F, q, G), F;
              }
              Y.exports = {
                draw: C
              };
            }
          ),
          /***/
          91362: (
            /***/
            function(Y, K, e) {
              var b = e(34809);
              Y.exports = function(n) {
                return b.isPlainObject(n.colorbar);
              };
            }
          ),
          /***/
          96919: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                moduleType: "component",
                name: "colorbar",
                attributes: e(25158),
                supplyDefaults: e(42097),
                draw: e(5881).draw,
                hasColorbar: e(91362)
              };
            }
          ),
          /***/
          87163: (
            /***/
            function(Y, K, e) {
              var b = e(25158), P = e(90694).counter, n = e(62994), s = e(19017).scales;
              n(s), Y.exports = function(A, p) {
                A = A || "", p = p || {};
                var u = p.cLetter || "c";
                "onlyIfNumerical" in p && p.onlyIfNumerical;
                var t = "noScale" in p ? p.noScale : A === "marker.line", r = "showScaleDflt" in p ? p.showScaleDflt : u === "z", i = typeof p.colorscaleDflt == "string" ? s[p.colorscaleDflt] : null, a = p.editTypeOverride || "", l;
                "colorAttr" in p ? (l = p.colorAttr, p.colorAttr) : l = {
                  z: "z",
                  c: "color"
                }[u];
                var o = u + "auto", y = u + "min", g = u + "max", x = u + "mid", c = {};
                c[y] = c[g] = void 0;
                var v = {};
                v[o] = !1;
                var f = {};
                return l === "color" && (f.color = {
                  valType: "color",
                  arrayOk: !0,
                  editType: a || "style"
                }, p.anim && (f.color.anim = !0)), f[o] = {
                  valType: "boolean",
                  dflt: !0,
                  editType: "calc",
                  impliedEdits: c
                }, f[y] = {
                  valType: "number",
                  dflt: null,
                  editType: a || "plot",
                  impliedEdits: v
                }, f[g] = {
                  valType: "number",
                  dflt: null,
                  editType: a || "plot",
                  impliedEdits: v
                }, f[x] = {
                  valType: "number",
                  dflt: null,
                  editType: "calc",
                  impliedEdits: c
                }, f.colorscale = {
                  valType: "colorscale",
                  editType: "calc",
                  dflt: i,
                  impliedEdits: {
                    autocolorscale: !1
                  }
                }, f.autocolorscale = {
                  valType: "boolean",
                  // gets overrode in 'heatmap' & 'surface' for backwards comp.
                  dflt: p.autoColorDflt !== !1,
                  editType: "calc",
                  impliedEdits: {
                    colorscale: void 0
                  }
                }, f.reversescale = {
                  valType: "boolean",
                  dflt: !1,
                  editType: "plot"
                }, t || (f.showscale = {
                  valType: "boolean",
                  dflt: r,
                  editType: "calc"
                }, f.colorbar = b), p.noColorAxis || (f.coloraxis = {
                  valType: "subplotid",
                  regex: P("coloraxis"),
                  dflt: null,
                  editType: "calc"
                }), f;
              };
            }
          ),
          /***/
          28379: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(34809), n = e(65477).extractOpts;
              Y.exports = function(T, A, p) {
                var u = T._fullLayout, t = p.vals, r = p.containerStr, i = r ? P.nestedProperty(A, r).get() : A, a = n(i), l = a.auto !== !1, o = a.min, y = a.max, g = a.mid, x = function() {
                  return P.aggNums(Math.min, null, t);
                }, c = function() {
                  return P.aggNums(Math.max, null, t);
                };
                if (o === void 0 ? o = x() : l && (i._colorAx && b(o) ? o = Math.min(o, x()) : o = x()), y === void 0 ? y = c() : l && (i._colorAx && b(y) ? y = Math.max(y, c()) : y = c()), l && g !== void 0 && (y - g > g - o ? o = g - (y - g) : y - g < g - o && (y = g + (g - o))), o === y && (o -= 0.5, y += 0.5), a._sync("min", o), a._sync("max", y), a.autocolorscale) {
                  var v;
                  o * y < 0 ? v = u.colorscale.diverging : o >= 0 ? v = u.colorscale.sequential : v = u.colorscale.sequentialminus, a._sync("colorscale", v);
                }
              };
            }
          ),
          /***/
          67623: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(65477).hasColorscale, n = e(65477).extractOpts;
              Y.exports = function(T, A) {
                function p(o, y) {
                  var g = o["_" + y];
                  g !== void 0 && (o[y] = g);
                }
                function u(o, y) {
                  var g = y.container ? b.nestedProperty(o, y.container).get() : o;
                  if (g)
                    if (g.coloraxis)
                      g._colorAx = A[g.coloraxis];
                    else {
                      var x = n(g), c = x.auto;
                      (c || x.min === void 0) && p(g, y.min), (c || x.max === void 0) && p(g, y.max), x.autocolorscale && p(g, "colorscale");
                    }
                }
                for (var t = 0; t < T.length; t++) {
                  var r = T[t], i = r._module.colorbar;
                  if (i)
                    if (Array.isArray(i))
                      for (var a = 0; a < i.length; a++)
                        u(r, i[a]);
                    else
                      u(r, i);
                  P(r, "marker.line") && u(r, {
                    container: "marker.line",
                    min: "cmin",
                    max: "cmax"
                  });
                }
                for (var l in A._colorAxes)
                  u(A[l], {
                    min: "cmin",
                    max: "cmax"
                  });
              };
            }
          ),
          /***/
          39356: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(34809), n = e(91362), s = e(42097), T = e(19017).isValid, A = e(33626).traceIs;
              function p(u, t) {
                var r = t.slice(0, t.length - 1);
                return t ? P.nestedProperty(u, r).get() || {} : u;
              }
              Y.exports = function u(t, r, i, a, l) {
                var o = l.prefix, y = l.cLetter, g = "_module" in r, x = p(t, o), c = p(r, o), v = p(r._template || {}, o) || {}, f = function() {
                  return delete t.coloraxis, delete r.coloraxis, u(t, r, i, a, l);
                };
                if (g) {
                  var _ = i._colorAxes || {}, S = a(o + "coloraxis");
                  if (S) {
                    var M = A(r, "contour") && P.nestedProperty(r, "contours.coloring").get() || "heatmap", C = _[S];
                    C ? (C[2].push(f), C[0] !== M && (C[0] = !1, P.warn(["Ignoring coloraxis:", S, "setting", "as it is linked to incompatible colorscales."].join(" ")))) : _[S] = [M, r, [f]];
                    return;
                  }
                }
                var m = x[y + "min"], L = x[y + "max"], d = b(m) && b(L) && m < L, h = a(o + y + "auto", !d);
                h ? a(o + y + "mid") : (a(o + y + "min"), a(o + y + "max"));
                var E = x.colorscale, w = v.colorscale, z;
                if (E !== void 0 && (z = !T(E)), w !== void 0 && (z = !T(w)), a(o + "autocolorscale", z), a(o + "colorscale"), a(o + "reversescale"), o !== "marker.line.") {
                  var O;
                  o && g && (O = n(x));
                  var B = a(o + "showscale", O);
                  B && (o && v && (c._template = v), s(x, c, i));
                }
              };
            }
          ),
          /***/
          65477: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(65657), n = e(10721), s = e(34809), T = e(78766), A = e(19017).isValid;
              function p(g, x, c) {
                var v = x ? s.nestedProperty(g, x).get() || {} : g, f = v[c || "color"];
                f && f._inputArray && (f = f._inputArray);
                var _ = !1;
                if (s.isArrayOrTypedArray(f)) {
                  for (var S = 0; S < f.length; S++)
                    if (n(f[S])) {
                      _ = !0;
                      break;
                    }
                }
                return s.isPlainObject(v) && (_ || v.showscale === !0 || n(v.cmin) && n(v.cmax) || A(v.colorscale) || s.isPlainObject(v.colorbar));
              }
              var u = ["showscale", "autocolorscale", "colorscale", "reversescale", "colorbar"], t = ["min", "max", "mid", "auto"];
              function r(g) {
                var x = g._colorAx, c = x || g, v = {}, f, _, S;
                for (_ = 0; _ < u.length; _++)
                  S = u[_], v[S] = c[S];
                if (x)
                  for (f = "c", _ = 0; _ < t.length; _++)
                    S = t[_], v[S] = c["c" + S];
                else {
                  var M;
                  for (_ = 0; _ < t.length; _++) {
                    if (S = t[_], M = "c" + S, M in c) {
                      v[S] = c[M];
                      continue;
                    }
                    M = "z" + S, M in c && (v[S] = c[M]);
                  }
                  f = M.charAt(0);
                }
                return v._sync = function(C, m) {
                  var L = t.indexOf(C) !== -1 ? f + C : C;
                  c[L] = c["_" + L] = m;
                }, v;
              }
              function i(g) {
                for (var x = r(g), c = x.min, v = x.max, f = x.reversescale ? a(x.colorscale) : x.colorscale, _ = f.length, S = new Array(_), M = new Array(_), C = 0; C < _; C++) {
                  var m = f[C];
                  S[C] = c + m[0] * (v - c), M[C] = m[1];
                }
                return {
                  domain: S,
                  range: M
                };
              }
              function a(g) {
                for (var x = g.length, c = new Array(x), v = x - 1, f = 0; v >= 0; v--, f++) {
                  var _ = g[v];
                  c[f] = [1 - _[0], _[1]];
                }
                return c;
              }
              function l(g, x) {
                x = x || {};
                for (var c = g.domain, v = g.range, f = v.length, _ = new Array(f), S = 0; S < f; S++) {
                  var M = P(v[S]).toRgb();
                  _[S] = [M.r, M.g, M.b, M.a];
                }
                var C = b.scale.linear().domain(c).range(_).clamp(!0), m = x.noNumericCheck, L = x.returnArray, d;
                return m && L ? d = C : m ? d = function(h) {
                  return y(C(h));
                } : L ? d = function(h) {
                  return n(h) ? C(h) : P(h).isValid() ? h : T.defaultLine;
                } : d = function(h) {
                  return n(h) ? y(C(h)) : P(h).isValid() ? h : T.defaultLine;
                }, d.domain = C.domain, d.range = function() {
                  return v;
                }, d;
              }
              function o(g, x) {
                return l(i(g), x);
              }
              function y(g) {
                var x = {
                  r: g[0],
                  g: g[1],
                  b: g[2],
                  a: g[3]
                };
                return P(x).toRgbString();
              }
              Y.exports = {
                hasColorscale: p,
                extractOpts: r,
                extractScale: i,
                flipScale: a,
                makeColorScaleFunc: l,
                makeColorScaleFuncFromTrace: o
              };
            }
          ),
          /***/
          88856: (
            /***/
            function(Y, K, e) {
              var b = e(19017), P = e(65477);
              Y.exports = {
                moduleType: "component",
                name: "colorscale",
                attributes: e(87163),
                layoutAttributes: e(56978),
                supplyLayoutDefaults: e(64613),
                handleDefaults: e(39356),
                crossTraceDefaults: e(67623),
                calc: e(28379),
                // ./scales.js is required in lib/coerce.js ;
                // it needs to be a separate module to avoid a circular dependency
                scales: b.scales,
                defaultScale: b.defaultScale,
                getScale: b.get,
                isValidScale: b.isValid,
                hasColorscale: P.hasColorscale,
                extractOpts: P.extractOpts,
                extractScale: P.extractScale,
                flipScale: P.flipScale,
                makeColorScaleFunc: P.makeColorScaleFunc,
                makeColorScaleFuncFromTrace: P.makeColorScaleFuncFromTrace
              };
            }
          ),
          /***/
          56978: (
            /***/
            function(Y, K, e) {
              var b = e(93049).extendFlat, P = e(87163), n = e(19017).scales;
              Y.exports = {
                editType: "calc",
                colorscale: {
                  editType: "calc",
                  sequential: {
                    valType: "colorscale",
                    dflt: n.Reds,
                    editType: "calc"
                  },
                  sequentialminus: {
                    valType: "colorscale",
                    dflt: n.Blues,
                    editType: "calc"
                  },
                  diverging: {
                    valType: "colorscale",
                    dflt: n.RdBu,
                    editType: "calc"
                  }
                },
                coloraxis: b({
                  // not really a 'subplot' attribute container,
                  // but this is the flag we use to denote attributes that
                  // support yaxis, yaxis2, yaxis3, ... counters
                  _isSubplotObj: !0,
                  editType: "calc"
                }, P("", {
                  colorAttr: "corresponding trace color array(s)",
                  noColorAxis: !0,
                  showScaleDflt: !0
                }))
              };
            }
          ),
          /***/
          64613: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(78032), n = e(56978), s = e(39356);
              Y.exports = function(A, p) {
                function u(g, x) {
                  return b.coerce(A, p, n, g, x);
                }
                u("colorscale.sequential"), u("colorscale.sequentialminus"), u("colorscale.diverging");
                var t = p._colorAxes, r, i;
                function a(g, x) {
                  return b.coerce(r, i, n.coloraxis, g, x);
                }
                for (var l in t) {
                  var o = t[l];
                  if (o[0])
                    r = A[l] || {}, i = P.newContainer(p, l, "coloraxis"), i._name = l, s(r, i, p, a, {
                      prefix: "",
                      cLetter: "c"
                    });
                  else {
                    for (var y = 0; y < o[2].length; y++)
                      o[2][y]();
                    delete p._colorAxes[l];
                  }
                }
              };
            }
          ),
          /***/
          19017: (
            /***/
            function(Y, K, e) {
              var b = e(65657), P = {
                Greys: [[0, "rgb(0,0,0)"], [1, "rgb(255,255,255)"]],
                YlGnBu: [[0, "rgb(8,29,88)"], [0.125, "rgb(37,52,148)"], [0.25, "rgb(34,94,168)"], [0.375, "rgb(29,145,192)"], [0.5, "rgb(65,182,196)"], [0.625, "rgb(127,205,187)"], [0.75, "rgb(199,233,180)"], [0.875, "rgb(237,248,217)"], [1, "rgb(255,255,217)"]],
                Greens: [[0, "rgb(0,68,27)"], [0.125, "rgb(0,109,44)"], [0.25, "rgb(35,139,69)"], [0.375, "rgb(65,171,93)"], [0.5, "rgb(116,196,118)"], [0.625, "rgb(161,217,155)"], [0.75, "rgb(199,233,192)"], [0.875, "rgb(229,245,224)"], [1, "rgb(247,252,245)"]],
                YlOrRd: [[0, "rgb(128,0,38)"], [0.125, "rgb(189,0,38)"], [0.25, "rgb(227,26,28)"], [0.375, "rgb(252,78,42)"], [0.5, "rgb(253,141,60)"], [0.625, "rgb(254,178,76)"], [0.75, "rgb(254,217,118)"], [0.875, "rgb(255,237,160)"], [1, "rgb(255,255,204)"]],
                Bluered: [[0, "rgb(0,0,255)"], [1, "rgb(255,0,0)"]],
                // modified RdBu based on
                // http://www.kennethmoreland.com/color-maps/
                RdBu: [[0, "rgb(5,10,172)"], [0.35, "rgb(106,137,247)"], [0.5, "rgb(190,190,190)"], [0.6, "rgb(220,170,132)"], [0.7, "rgb(230,145,90)"], [1, "rgb(178,10,28)"]],
                // Scale for non-negative numeric values
                Reds: [[0, "rgb(220,220,220)"], [0.2, "rgb(245,195,157)"], [0.4, "rgb(245,160,105)"], [1, "rgb(178,10,28)"]],
                // Scale for non-positive numeric values
                Blues: [[0, "rgb(5,10,172)"], [0.35, "rgb(40,60,190)"], [0.5, "rgb(70,100,245)"], [0.6, "rgb(90,120,245)"], [0.7, "rgb(106,137,247)"], [1, "rgb(220,220,220)"]],
                Picnic: [[0, "rgb(0,0,255)"], [0.1, "rgb(51,153,255)"], [0.2, "rgb(102,204,255)"], [0.3, "rgb(153,204,255)"], [0.4, "rgb(204,204,255)"], [0.5, "rgb(255,255,255)"], [0.6, "rgb(255,204,255)"], [0.7, "rgb(255,153,255)"], [0.8, "rgb(255,102,204)"], [0.9, "rgb(255,102,102)"], [1, "rgb(255,0,0)"]],
                Rainbow: [[0, "rgb(150,0,90)"], [0.125, "rgb(0,0,200)"], [0.25, "rgb(0,25,255)"], [0.375, "rgb(0,152,255)"], [0.5, "rgb(44,255,150)"], [0.625, "rgb(151,255,0)"], [0.75, "rgb(255,234,0)"], [0.875, "rgb(255,111,0)"], [1, "rgb(255,0,0)"]],
                Portland: [[0, "rgb(12,51,131)"], [0.25, "rgb(10,136,186)"], [0.5, "rgb(242,211,56)"], [0.75, "rgb(242,143,56)"], [1, "rgb(217,30,30)"]],
                Jet: [[0, "rgb(0,0,131)"], [0.125, "rgb(0,60,170)"], [0.375, "rgb(5,255,255)"], [0.625, "rgb(255,255,0)"], [0.875, "rgb(250,0,0)"], [1, "rgb(128,0,0)"]],
                Hot: [[0, "rgb(0,0,0)"], [0.3, "rgb(230,0,0)"], [0.6, "rgb(255,210,0)"], [1, "rgb(255,255,255)"]],
                Blackbody: [[0, "rgb(0,0,0)"], [0.2, "rgb(230,0,0)"], [0.4, "rgb(230,210,0)"], [0.7, "rgb(255,255,255)"], [1, "rgb(160,200,255)"]],
                Earth: [[0, "rgb(0,0,130)"], [0.1, "rgb(0,180,180)"], [0.2, "rgb(40,210,40)"], [0.4, "rgb(230,230,50)"], [0.6, "rgb(120,70,20)"], [1, "rgb(255,255,255)"]],
                Electric: [[0, "rgb(0,0,0)"], [0.15, "rgb(30,0,100)"], [0.4, "rgb(120,0,100)"], [0.6, "rgb(160,90,0)"], [0.8, "rgb(230,200,0)"], [1, "rgb(255,250,220)"]],
                Viridis: [[0, "#440154"], [0.06274509803921569, "#48186a"], [0.12549019607843137, "#472d7b"], [0.18823529411764706, "#424086"], [0.25098039215686274, "#3b528b"], [0.3137254901960784, "#33638d"], [0.3764705882352941, "#2c728e"], [0.4392156862745098, "#26828e"], [0.5019607843137255, "#21918c"], [0.5647058823529412, "#1fa088"], [0.6274509803921569, "#28ae80"], [0.6901960784313725, "#3fbc73"], [0.7529411764705882, "#5ec962"], [0.8156862745098039, "#84d44b"], [0.8784313725490196, "#addc30"], [0.9411764705882353, "#d8e219"], [1, "#fde725"]],
                Cividis: [[0, "rgb(0,32,76)"], [0.058824, "rgb(0,42,102)"], [0.117647, "rgb(0,52,110)"], [0.176471, "rgb(39,63,108)"], [0.235294, "rgb(60,74,107)"], [0.294118, "rgb(76,85,107)"], [0.352941, "rgb(91,95,109)"], [0.411765, "rgb(104,106,112)"], [0.470588, "rgb(117,117,117)"], [0.529412, "rgb(131,129,120)"], [0.588235, "rgb(146,140,120)"], [0.647059, "rgb(161,152,118)"], [0.705882, "rgb(176,165,114)"], [0.764706, "rgb(192,177,109)"], [0.823529, "rgb(209,191,102)"], [0.882353, "rgb(225,204,92)"], [0.941176, "rgb(243,219,79)"], [1, "rgb(255,233,69)"]]
              }, n = P.RdBu;
              function s(p, u) {
                if (u || (u = n), !p) return u;
                function t() {
                  try {
                    p = P[p] || JSON.parse(p);
                  } catch {
                    p = u;
                  }
                }
                return typeof p == "string" && (t(), typeof p == "string" && t()), T(p) ? p : u;
              }
              function T(p) {
                var u = 0;
                if (!Array.isArray(p) || p.length < 2 || !p[0] || !p[p.length - 1] || +p[0][0] != 0 || +p[p.length - 1][0] != 1) return !1;
                for (var t = 0; t < p.length; t++) {
                  var r = p[t];
                  if (r.length !== 2 || +r[0] < u || !b(r[1]).isValid())
                    return !1;
                  u = +r[0];
                }
                return !0;
              }
              function A(p) {
                return P[p] !== void 0 ? !0 : T(p);
              }
              Y.exports = {
                scales: P,
                defaultScale: n,
                get: s,
                isValid: A
              };
            }
          ),
          /***/
          53770: (
            /***/
            function(Y) {
              Y.exports = function(e, b, P, n, s) {
                var T = (e - P) / (n - P), A = T + b / (n - P), p = (T + A) / 2;
                return s === "left" || s === "bottom" ? T : s === "center" || s === "middle" ? p : s === "right" || s === "top" ? A : T < 0.6666666666666666 - p ? T : A > 1.3333333333333333 - p ? A : p;
              };
            }
          ),
          /***/
          4001: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = [["sw-resize", "s-resize", "se-resize"], ["w-resize", "move", "e-resize"], ["nw-resize", "n-resize", "ne-resize"]];
              Y.exports = function(s, T, A, p) {
                return A === "left" ? s = 0 : A === "center" ? s = 1 : A === "right" ? s = 2 : s = b.constrain(Math.floor(s * 3), 0, 2), p === "bottom" ? T = 0 : p === "middle" ? T = 1 : p === "top" ? T = 2 : T = b.constrain(Math.floor(T * 3), 0, 2), P[T][s];
              };
            }
          ),
          /***/
          70414: (
            /***/
            function(Y, K) {
              K.selectMode = function(e) {
                return e === "lasso" || e === "select";
              }, K.drawMode = function(e) {
                return e === "drawclosedpath" || e === "drawopenpath" || e === "drawline" || e === "drawrect" || e === "drawcircle";
              }, K.openMode = function(e) {
                return e === "drawline" || e === "drawopenpath";
              }, K.rectMode = function(e) {
                return e === "select" || e === "drawline" || e === "drawrect" || e === "drawcircle";
              }, K.freeMode = function(e) {
                return e === "lasso" || e === "drawclosedpath" || e === "drawopenpath";
              }, K.selectingOrDrawing = function(e) {
                return K.freeMode(e) || K.rectMode(e);
              };
            }
          ),
          /***/
          14751: (
            /***/
            function(Y, K, e) {
              var b = e(44039), P = e(39784), n = e(74043), s = e(34809).removeElement, T = e(54826), A = Y.exports = {};
              A.align = e(53770), A.getCursor = e(4001);
              var p = e(60148);
              A.unhover = p.wrapped, A.unhoverRaw = p.raw, A.init = function(i) {
                var a = i.gd, l = 1, o = a._context.doubleClickDelay, y = i.element, g, x, c, v, f, _, S, M;
                a._mouseDownTime || (a._mouseDownTime = 0), y.style.pointerEvents = "all", y.onmousedown = L, n ? (y._ontouchstart && y.removeEventListener("touchstart", y._ontouchstart), y._ontouchstart = L, y.addEventListener("touchstart", L, {
                  passive: !1
                })) : y.ontouchstart = L;
                function C(E, w, z) {
                  return Math.abs(E) < z && (E = 0), Math.abs(w) < z && (w = 0), [E, w];
                }
                var m = i.clampFn || C;
                function L(E) {
                  a._dragged = !1, a._dragging = !0;
                  var w = t(E);
                  g = w[0], x = w[1], S = E.target, _ = E, M = E.buttons === 2 || E.ctrlKey, typeof E.clientX > "u" && typeof E.clientY > "u" && (E.clientX = g, E.clientY = x), c = (/* @__PURE__ */ new Date()).getTime(), c - a._mouseDownTime < o ? l += 1 : (l = 1, a._mouseDownTime = c), i.prepFn && i.prepFn(E, g, x), P && !M ? (f = u(), f.style.cursor = window.getComputedStyle(y).cursor) : P || (f = document, v = window.getComputedStyle(document.documentElement).cursor, document.documentElement.style.cursor = window.getComputedStyle(y).cursor), document.addEventListener("mouseup", h), document.addEventListener("touchend", h), i.dragmode !== !1 && (E.preventDefault(), document.addEventListener("mousemove", d), document.addEventListener("touchmove", d, {
                    passive: !1
                  }));
                }
                function d(E) {
                  E.preventDefault();
                  var w = t(E), z = i.minDrag || T.MINDRAG, O = m(w[0] - g, w[1] - x, z), B = O[0], V = O[1];
                  (B || V) && (a._dragged = !0, A.unhover(a, E)), a._dragged && i.moveFn && !M && (a._dragdata = {
                    element: y,
                    dx: B,
                    dy: V
                  }, i.moveFn(B, V));
                }
                function h(E) {
                  if (delete a._dragdata, i.dragmode !== !1 && (E.preventDefault(), document.removeEventListener("mousemove", d), document.removeEventListener("touchmove", d)), document.removeEventListener("mouseup", h), document.removeEventListener("touchend", h), P ? s(f) : v && (f.documentElement.style.cursor = v, v = null), !a._dragging) {
                    a._dragged = !1;
                    return;
                  }
                  if (a._dragging = !1, (/* @__PURE__ */ new Date()).getTime() - a._mouseDownTime > o && (l = Math.max(l - 1, 1)), a._dragged)
                    i.doneFn && i.doneFn();
                  else if (i.clickFn && i.clickFn(l, _), !M) {
                    var w;
                    try {
                      w = new MouseEvent("click", E);
                    } catch {
                      var z = t(E);
                      w = document.createEvent("MouseEvents"), w.initMouseEvent("click", E.bubbles, E.cancelable, E.view, E.detail, E.screenX, E.screenY, z[0], z[1], E.ctrlKey, E.altKey, E.shiftKey, E.metaKey, E.button, E.relatedTarget);
                    }
                    S.dispatchEvent(w);
                  }
                  a._dragging = !1, a._dragged = !1;
                }
              };
              function u() {
                var r = document.createElement("div");
                r.className = "dragcover";
                var i = r.style;
                return i.position = "fixed", i.left = 0, i.right = 0, i.top = 0, i.bottom = 0, i.zIndex = 999999999, i.background = "none", document.body.appendChild(r), r;
              }
              A.coverSlip = u;
              function t(r) {
                return b(r.changedTouches ? r.changedTouches[0] : r, document.body);
              }
            }
          ),
          /***/
          60148: (
            /***/
            function(Y, K, e) {
              var b = e(68596), P = e(64025), n = e(95425).getGraphDiv, s = e(85988), T = Y.exports = {};
              T.wrapped = function(A, p, u) {
                A = n(A), A._fullLayout && P.clear(A._fullLayout._uid + s.HOVERID), T.raw(A, p, u);
              }, T.raw = function(p, u) {
                var t = p._fullLayout, r = p._hoverdata;
                u || (u = {}), !(u.target && !p._dragged && b.triggerHandler(p, "plotly_beforehover", u) === !1) && (t._hoverlayer.selectAll("g").remove(), t._hoverlayer.selectAll("line").remove(), t._hoverlayer.selectAll("circle").remove(), p._hoverdata = void 0, u.target && r && p.emit("plotly_unhover", {
                  event: u,
                  points: r
                }));
              };
            }
          ),
          /***/
          94850: (
            /***/
            function(Y, K) {
              K.T = {
                valType: "string",
                // string type usually doesn't take values... this one should really be
                // a special type or at least a special coercion function, from the GUI
                // you only get these values but elsewhere the user can supply a list of
                // dash lengths in px, and it will be honored
                values: ["solid", "dot", "dash", "longdash", "dashdot", "longdashdot"],
                dflt: "solid",
                editType: "style"
              }, K.k = {
                shape: {
                  valType: "enumerated",
                  values: ["", "/", "\\", "x", "-", "|", "+", "."],
                  dflt: "",
                  arrayOk: !0,
                  editType: "style"
                },
                fillmode: {
                  valType: "enumerated",
                  values: ["replace", "overlay"],
                  dflt: "replace",
                  editType: "style"
                },
                bgcolor: {
                  valType: "color",
                  arrayOk: !0,
                  editType: "style"
                },
                fgcolor: {
                  valType: "color",
                  arrayOk: !0,
                  editType: "style"
                },
                fgopacity: {
                  valType: "number",
                  editType: "style",
                  min: 0,
                  max: 1
                },
                size: {
                  valType: "number",
                  min: 0,
                  dflt: 8,
                  arrayOk: !0,
                  editType: "style"
                },
                solidity: {
                  valType: "number",
                  min: 0,
                  max: 1,
                  dflt: 0.3,
                  arrayOk: !0,
                  editType: "style"
                },
                editType: "style"
              };
            }
          ),
          /***/
          62203: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(34809), n = P.numberFormat, s = e(10721), T = e(65657), A = e(33626), p = e(78766), u = e(88856), t = P.strTranslate, r = e(30635), i = e(62972), a = e(4530), l = a.LINE_SPACING, o = e(20438).DESELECTDIM, y = e(64726), g = e(92527), x = e(36040).appendArrayPointValue, c = Y.exports = {};
              c.font = function(Rt, Wt) {
                var kt = Wt.variant, re = Wt.style, ge = Wt.weight, _e = Wt.color, ce = Wt.size, ae = Wt.family, Se = Wt.shadow, ze = Wt.lineposition, Ne = Wt.textcase;
                ae && Rt.style("font-family", ae), ce + 1 && Rt.style("font-size", ce + "px"), _e && Rt.call(p.fill, _e), ge && Rt.style("font-weight", ge), re && Rt.style("font-style", re), kt && Rt.style("font-variant", kt), Ne && Rt.style("text-transform", v(_(Ne))), Se && Rt.style("text-shadow", Se === "auto" ? r.makeTextShadow(p.contrast(_e)) : v(Se)), ze && Rt.style("text-decoration-line", v(S(ze)));
              };
              function v(Rt) {
                return Rt === "none" ? void 0 : Rt;
              }
              var f = {
                normal: "none",
                lower: "lowercase",
                upper: "uppercase",
                "word caps": "capitalize"
              };
              function _(Rt) {
                return f[Rt];
              }
              function S(Rt) {
                return Rt.replace("under", "underline").replace("over", "overline").replace("through", "line-through").split("+").join(" ");
              }
              c.setPosition = function(Rt, Wt, kt) {
                Rt.attr("x", Wt).attr("y", kt);
              }, c.setSize = function(Rt, Wt, kt) {
                Rt.attr("width", Wt).attr("height", kt);
              }, c.setRect = function(Rt, Wt, kt, re, ge) {
                Rt.call(c.setPosition, Wt, kt).call(c.setSize, re, ge);
              }, c.translatePoint = function(Rt, Wt, kt, re) {
                var ge = kt.c2p(Rt.x), _e = re.c2p(Rt.y);
                if (s(ge) && s(_e) && Wt.node())
                  Wt.node().nodeName === "text" ? Wt.attr("x", ge).attr("y", _e) : Wt.attr("transform", t(ge, _e));
                else
                  return !1;
                return !0;
              }, c.translatePoints = function(Rt, Wt, kt) {
                Rt.each(function(re) {
                  var ge = b.select(this);
                  c.translatePoint(re, ge, Wt, kt);
                });
              }, c.hideOutsideRangePoint = function(Rt, Wt, kt, re, ge, _e) {
                Wt.attr("display", kt.isPtWithinRange(Rt, ge) && re.isPtWithinRange(Rt, _e) ? null : "none");
              }, c.hideOutsideRangePoints = function(Rt, Wt) {
                if (Wt._hasClipOnAxisFalse) {
                  var kt = Wt.xaxis, re = Wt.yaxis;
                  Rt.each(function(ge) {
                    var _e = ge[0].trace, ce = _e.xcalendar, ae = _e.ycalendar, Se = A.traceIs(_e, "bar-like") ? ".bartext" : ".point,.textpoint";
                    Rt.selectAll(Se).each(function(ze) {
                      c.hideOutsideRangePoint(ze, b.select(this), kt, re, ce, ae);
                    });
                  });
                }
              }, c.crispRound = function(Rt, Wt, kt) {
                return !Wt || !s(Wt) ? kt || 0 : Rt._context.staticPlot ? Wt : Wt < 1 ? 1 : Math.round(Wt);
              }, c.singleLineStyle = function(Rt, Wt, kt, re, ge) {
                Wt.style("fill", "none");
                var _e = (((Rt || [])[0] || {}).trace || {}).line || {}, ce = kt || _e.width || 0, ae = ge || _e.dash || "";
                p.stroke(Wt, re || _e.color), c.dashLine(Wt, ae, ce);
              }, c.lineGroupStyle = function(Rt, Wt, kt, re) {
                Rt.style("fill", "none").each(function(ge) {
                  var _e = (((ge || [])[0] || {}).trace || {}).line || {}, ce = Wt || _e.width || 0, ae = re || _e.dash || "";
                  b.select(this).call(p.stroke, kt || _e.color).call(c.dashLine, ae, ce);
                });
              }, c.dashLine = function(Rt, Wt, kt) {
                kt = +kt || 0, Wt = c.dashStyle(Wt, kt), Rt.style({
                  "stroke-dasharray": Wt,
                  "stroke-width": kt + "px"
                });
              }, c.dashStyle = function(Rt, Wt) {
                Wt = +Wt || 1;
                var kt = Math.max(Wt, 3);
                return Rt === "solid" ? Rt = "" : Rt === "dot" ? Rt = kt + "px," + kt + "px" : Rt === "dash" ? Rt = 3 * kt + "px," + 3 * kt + "px" : Rt === "longdash" ? Rt = 5 * kt + "px," + 5 * kt + "px" : Rt === "dashdot" ? Rt = 3 * kt + "px," + kt + "px," + kt + "px," + kt + "px" : Rt === "longdashdot" && (Rt = 5 * kt + "px," + 2 * kt + "px," + kt + "px," + 2 * kt + "px"), Rt;
              };
              function M(Rt, Wt, kt, re) {
                var ge = Wt.fillpattern, _e = Wt.fillgradient, ce = ge && c.getPatternAttr(ge.shape, 0, "");
                if (ce) {
                  var ae = c.getPatternAttr(ge.bgcolor, 0, null), Se = c.getPatternAttr(ge.fgcolor, 0, null), ze = ge.fgopacity, Ne = c.getPatternAttr(ge.size, 0, 8), Ve = c.getPatternAttr(ge.solidity, 0, 0.3), Oe = Wt.uid;
                  c.pattern(Rt, "point", kt, Oe, ce, Ne, Ve, void 0, ge.fillmode, ae, Se, ze);
                } else if (_e && _e.type !== "none") {
                  var ur = _e.type, ie = "scatterfill-" + Wt.uid;
                  if (re && (ie = "legendfill-" + Wt.uid), !re && (_e.start !== void 0 || _e.stop !== void 0)) {
                    var $t, jt;
                    ur === "horizontal" ? ($t = {
                      x: _e.start,
                      y: 0
                    }, jt = {
                      x: _e.stop,
                      y: 0
                    }) : ur === "vertical" && ($t = {
                      x: 0,
                      y: _e.start
                    }, jt = {
                      x: 0,
                      y: _e.stop
                    }), $t.x = Wt._xA.c2p($t.x === void 0 ? Wt._extremes.x.min[0].val : $t.x, !0), $t.y = Wt._yA.c2p($t.y === void 0 ? Wt._extremes.y.min[0].val : $t.y, !0), jt.x = Wt._xA.c2p(jt.x === void 0 ? Wt._extremes.x.max[0].val : jt.x, !0), jt.y = Wt._yA.c2p(jt.y === void 0 ? Wt._extremes.y.max[0].val : jt.y, !0), Rt.call(w, kt, ie, "linear", _e.colorscale, "fill", $t, jt, !0, !1);
                  } else
                    ur === "horizontal" && (ur = ur + "reversed"), Rt.call(c.gradient, kt, ie, ur, _e.colorscale, "fill");
                } else Wt.fillcolor && Rt.call(p.fill, Wt.fillcolor);
              }
              c.singleFillStyle = function(Rt, Wt) {
                var kt = b.select(Rt.node()), re = kt.data(), ge = ((re[0] || [])[0] || {}).trace || {};
                M(Rt, ge, Wt, !1);
              }, c.fillGroupStyle = function(Rt, Wt, kt) {
                Rt.style("stroke-width", 0).each(function(re) {
                  var ge = b.select(this);
                  re[0].trace && M(ge, re[0].trace, Wt, kt);
                });
              };
              var C = e(38882);
              c.symbolNames = [], c.symbolFuncs = [], c.symbolBackOffs = [], c.symbolNeedLines = {}, c.symbolNoDot = {}, c.symbolNoFill = {}, c.symbolList = [], Object.keys(C).forEach(function(Rt) {
                var Wt = C[Rt], kt = Wt.n;
                c.symbolList.push(kt, String(kt), Rt, kt + 100, String(kt + 100), Rt + "-open"), c.symbolNames[kt] = Rt, c.symbolFuncs[kt] = Wt.f, c.symbolBackOffs[kt] = Wt.backoff || 0, Wt.needLine && (c.symbolNeedLines[kt] = !0), Wt.noDot ? c.symbolNoDot[kt] = !0 : c.symbolList.push(kt + 200, String(kt + 200), Rt + "-dot", kt + 300, String(kt + 300), Rt + "-open-dot"), Wt.noFill && (c.symbolNoFill[kt] = !0);
              });
              var m = c.symbolNames.length, L = "M0,0.5L0.5,0L0,-0.5L-0.5,0Z";
              c.symbolNumber = function(Rt) {
                if (s(Rt))
                  Rt = +Rt;
                else if (typeof Rt == "string") {
                  var Wt = 0;
                  Rt.indexOf("-open") > 0 && (Wt = 100, Rt = Rt.replace("-open", "")), Rt.indexOf("-dot") > 0 && (Wt += 200, Rt = Rt.replace("-dot", "")), Rt = c.symbolNames.indexOf(Rt), Rt >= 0 && (Rt += Wt);
                }
                return Rt % 100 >= m || Rt >= 400 ? 0 : Math.floor(Math.max(Rt, 0));
              };
              function d(Rt, Wt, kt, re) {
                var ge = Rt % 100;
                return c.symbolFuncs[ge](Wt, kt, re) + (Rt >= 200 ? L : "");
              }
              var h = n("~f"), E = {
                radial: {
                  type: "radial"
                },
                radialreversed: {
                  type: "radial",
                  reversed: !0
                },
                horizontal: {
                  type: "linear",
                  start: {
                    x: 1,
                    y: 0
                  },
                  stop: {
                    x: 0,
                    y: 0
                  }
                },
                horizontalreversed: {
                  type: "linear",
                  start: {
                    x: 1,
                    y: 0
                  },
                  stop: {
                    x: 0,
                    y: 0
                  },
                  reversed: !0
                },
                vertical: {
                  type: "linear",
                  start: {
                    x: 0,
                    y: 1
                  },
                  stop: {
                    x: 0,
                    y: 0
                  }
                },
                verticalreversed: {
                  type: "linear",
                  start: {
                    x: 0,
                    y: 1
                  },
                  stop: {
                    x: 0,
                    y: 0
                  },
                  reversed: !0
                }
              };
              c.gradient = function(Rt, Wt, kt, re, ge, _e) {
                var ce = E[re];
                return w(Rt, Wt, kt, ce.type, ge, _e, ce.start, ce.stop, !1, ce.reversed);
              };
              function w(Rt, Wt, kt, re, ge, _e, ce, ae, Se, ze) {
                var Ne = ge.length, Ve;
                re === "linear" ? Ve = {
                  node: "linearGradient",
                  attrs: {
                    x1: ce.x,
                    y1: ce.y,
                    x2: ae.x,
                    y2: ae.y,
                    gradientUnits: Se ? "userSpaceOnUse" : "objectBoundingBox"
                  },
                  reversed: ze
                } : re === "radial" && (Ve = {
                  node: "radialGradient",
                  reversed: ze
                });
                for (var Oe = new Array(Ne), ur = 0; ur < Ne; ur++)
                  Ve.reversed ? Oe[Ne - 1 - ur] = [h((1 - ge[ur][0]) * 100), ge[ur][1]] : Oe[ur] = [h(ge[ur][0] * 100), ge[ur][1]];
                var ie = Wt._fullLayout, $t = "g" + ie._uid + "-" + kt, jt = ie._defs.select(".gradients").selectAll("#" + $t).data([re + Oe.join(";")], P.identity);
                jt.exit().remove(), jt.enter().append(Ve.node).each(function() {
                  var ee = b.select(this);
                  Ve.attrs && ee.attr(Ve.attrs), ee.attr("id", $t);
                  var Bt = ee.selectAll("stop").data(Oe);
                  Bt.exit().remove(), Bt.enter().append("stop"), Bt.each(function(Xt) {
                    var Zt = T(Xt[1]);
                    b.select(this).attr({
                      offset: Xt[0] + "%",
                      "stop-color": p.tinyRGB(Zt),
                      "stop-opacity": Zt.getAlpha()
                    });
                  });
                }), Rt.style(_e, at($t, Wt)).style(_e + "-opacity", null), Rt.classed("gradient_filled", !0);
              }
              c.pattern = function(Rt, Wt, kt, re, ge, _e, ce, ae, Se, ze, Ne, Ve) {
                var Oe = Wt === "legend";
                ae && (Se === "overlay" ? (ze = ae, Ne = p.contrast(ze)) : (ze = void 0, Ne = ae));
                var ur = kt._fullLayout, ie = "p" + ur._uid + "-" + re, $t, jt, ee = function(mr, Xe, xe, me, Le) {
                  return me + (Le - me) * (mr - Xe) / (xe - Xe);
                }, Bt, Xt, Zt, ye, Mt = {}, St = T(Ne), Lt = p.tinyRGB(St), te = St.getAlpha(), fe = Ve * te;
                switch (ge) {
                  case "/":
                    $t = _e * Math.sqrt(2), jt = _e * Math.sqrt(2), Bt = "M-" + $t / 4 + "," + jt / 4 + "l" + $t / 2 + ",-" + jt / 2 + "M0," + jt + "L" + $t + ",0M" + $t / 4 * 3 + "," + jt / 4 * 5 + "l" + $t / 2 + ",-" + jt / 2, Xt = ce * _e, ye = "path", Mt = {
                      d: Bt,
                      opacity: fe,
                      stroke: Lt,
                      "stroke-width": Xt + "px"
                    };
                    break;
                  case "\\":
                    $t = _e * Math.sqrt(2), jt = _e * Math.sqrt(2), Bt = "M" + $t / 4 * 3 + ",-" + jt / 4 + "l" + $t / 2 + "," + jt / 2 + "M0,0L" + $t + "," + jt + "M-" + $t / 4 + "," + jt / 4 * 3 + "l" + $t / 2 + "," + jt / 2, Xt = ce * _e, ye = "path", Mt = {
                      d: Bt,
                      opacity: fe,
                      stroke: Lt,
                      "stroke-width": Xt + "px"
                    };
                    break;
                  case "x":
                    $t = _e * Math.sqrt(2), jt = _e * Math.sqrt(2), Bt = "M-" + $t / 4 + "," + jt / 4 + "l" + $t / 2 + ",-" + jt / 2 + "M0," + jt + "L" + $t + ",0M" + $t / 4 * 3 + "," + jt / 4 * 5 + "l" + $t / 2 + ",-" + jt / 2 + "M" + $t / 4 * 3 + ",-" + jt / 4 + "l" + $t / 2 + "," + jt / 2 + "M0,0L" + $t + "," + jt + "M-" + $t / 4 + "," + jt / 4 * 3 + "l" + $t / 2 + "," + jt / 2, Xt = _e - _e * Math.sqrt(1 - ce), ye = "path", Mt = {
                      d: Bt,
                      opacity: fe,
                      stroke: Lt,
                      "stroke-width": Xt + "px"
                    };
                    break;
                  case "|":
                    $t = _e, jt = _e, ye = "path", Bt = "M" + $t / 2 + ",0L" + $t / 2 + "," + jt, Xt = ce * _e, ye = "path", Mt = {
                      d: Bt,
                      opacity: fe,
                      stroke: Lt,
                      "stroke-width": Xt + "px"
                    };
                    break;
                  case "-":
                    $t = _e, jt = _e, ye = "path", Bt = "M0," + jt / 2 + "L" + $t + "," + jt / 2, Xt = ce * _e, ye = "path", Mt = {
                      d: Bt,
                      opacity: fe,
                      stroke: Lt,
                      "stroke-width": Xt + "px"
                    };
                    break;
                  case "+":
                    $t = _e, jt = _e, ye = "path", Bt = "M" + $t / 2 + ",0L" + $t / 2 + "," + jt + "M0," + jt / 2 + "L" + $t + "," + jt / 2, Xt = _e - _e * Math.sqrt(1 - ce), ye = "path", Mt = {
                      d: Bt,
                      opacity: fe,
                      stroke: Lt,
                      "stroke-width": Xt + "px"
                    };
                    break;
                  case ".":
                    $t = _e, jt = _e, ce < Math.PI / 4 ? Zt = Math.sqrt(ce * _e * _e / Math.PI) : Zt = ee(ce, Math.PI / 4, 1, _e / 2, _e / Math.sqrt(2)), ye = "circle", Mt = {
                      cx: $t / 2,
                      cy: jt / 2,
                      r: Zt,
                      opacity: fe,
                      fill: Lt
                    };
                    break;
                }
                var Me = [ge || "noSh", ze || "noBg", Ne || "noFg", _e, ce].join(";"), ir = ur._defs.select(".patterns").selectAll("#" + ie).data([Me], P.identity);
                ir.exit().remove(), ir.enter().append("pattern").each(function() {
                  var mr = b.select(this);
                  if (mr.attr({
                    id: ie,
                    width: $t + "px",
                    height: jt + "px",
                    patternUnits: "userSpaceOnUse",
                    // for legends scale down patterns just a bit so that default size (i.e 8) nicely fit in small icons
                    patternTransform: Oe ? "scale(0.8)" : ""
                  }), ze) {
                    var Xe = T(ze), xe = p.tinyRGB(Xe), me = Xe.getAlpha(), Le = mr.selectAll("rect").data([0]);
                    Le.exit().remove(), Le.enter().append("rect").attr({
                      width: $t + "px",
                      height: jt + "px",
                      fill: xe,
                      "fill-opacity": me
                    });
                  }
                  var qt = mr.selectAll(ye).data([0]);
                  qt.exit().remove(), qt.enter().append(ye).attr(Mt);
                }), Rt.style("fill", at(ie, kt)).style("fill-opacity", null), Rt.classed("pattern_filled", !0);
              }, c.initGradients = function(Rt) {
                var Wt = Rt._fullLayout, kt = P.ensureSingle(Wt._defs, "g", "gradients");
                kt.selectAll("linearGradient,radialGradient").remove(), b.select(Rt).selectAll(".gradient_filled").classed("gradient_filled", !1);
              }, c.initPatterns = function(Rt) {
                var Wt = Rt._fullLayout, kt = P.ensureSingle(Wt._defs, "g", "patterns");
                kt.selectAll("pattern").remove(), b.select(Rt).selectAll(".pattern_filled").classed("pattern_filled", !1);
              }, c.getPatternAttr = function(Rt, Wt, kt) {
                return Rt && P.isArrayOrTypedArray(Rt) ? Wt < Rt.length ? Rt[Wt] : kt : Rt;
              }, c.pointStyle = function(Rt, Wt, kt, re) {
                if (Rt.size()) {
                  var ge = c.makePointStyleFns(Wt);
                  Rt.each(function(_e) {
                    c.singlePointStyle(_e, b.select(this), Wt, ge, kt, re);
                  });
                }
              }, c.singlePointStyle = function(Rt, Wt, kt, re, ge, _e) {
                var ce = kt.marker, ae = ce.line;
                if (_e && _e.i >= 0 && Rt.i === void 0 && (Rt.i = _e.i), Wt.style("opacity", re.selectedOpacityFn ? re.selectedOpacityFn(Rt) : Rt.mo === void 0 ? ce.opacity : Rt.mo), re.ms2mrc) {
                  var Se;
                  Rt.ms === "various" || ce.size === "various" ? Se = 3 : Se = re.ms2mrc(Rt.ms), Rt.mrc = Se, re.selectedSizeFn && (Se = Rt.mrc = re.selectedSizeFn(Rt));
                  var ze = c.symbolNumber(Rt.mx || ce.symbol) || 0;
                  Rt.om = ze % 200 >= 100;
                  var Ne = zt(Rt, kt), Ve = X(Rt, kt);
                  Wt.attr("d", d(ze, Se, Ne, Ve));
                }
                var Oe = !1, ur, ie, $t;
                if (Rt.so)
                  $t = ae.outlierwidth, ie = ae.outliercolor, ur = ce.outliercolor;
                else {
                  var jt = (ae || {}).width;
                  $t = (Rt.mlw + 1 || jt + 1 || // TODO: we need the latter for legends... can we get rid of it?
                  (Rt.trace ? (Rt.trace.marker.line || {}).width : 0) + 1) - 1 || 0, "mlc" in Rt ? ie = Rt.mlcc = re.lineScale(Rt.mlc) : P.isArrayOrTypedArray(ae.color) ? ie = p.defaultLine : ie = ae.color, P.isArrayOrTypedArray(ce.color) && (ur = p.defaultLine, Oe = !0), "mc" in Rt ? ur = Rt.mcc = re.markerScale(Rt.mc) : ur = ce.color || ce.colors || "rgba(0,0,0,0)", re.selectedColorFn && (ur = re.selectedColorFn(Rt));
                }
                if (Rt.om)
                  Wt.call(p.stroke, ur).style({
                    "stroke-width": ($t || 1) + "px",
                    fill: "none"
                  });
                else {
                  Wt.style("stroke-width", (Rt.isBlank ? 0 : $t) + "px");
                  var ee = ce.gradient, Bt = Rt.mgt;
                  Bt ? Oe = !0 : Bt = ee && ee.type, P.isArrayOrTypedArray(Bt) && (Bt = Bt[0], E[Bt] || (Bt = 0));
                  var Xt = ce.pattern, Zt = Xt && c.getPatternAttr(Xt.shape, Rt.i, "");
                  if (Bt && Bt !== "none") {
                    var ye = Rt.mgc;
                    ye ? Oe = !0 : ye = ee.color;
                    var Mt = kt.uid;
                    Oe && (Mt += "-" + Rt.i), c.gradient(Wt, ge, Mt, Bt, [[0, ye], [1, ur]], "fill");
                  } else if (Zt) {
                    var St = !1, Lt = Xt.fgcolor;
                    !Lt && _e && _e.color && (Lt = _e.color, St = !0);
                    var te = c.getPatternAttr(Lt, Rt.i, _e && _e.color || null), fe = c.getPatternAttr(Xt.bgcolor, Rt.i, null), Me = Xt.fgopacity, ir = c.getPatternAttr(Xt.size, Rt.i, 8), mr = c.getPatternAttr(Xt.solidity, Rt.i, 0.3);
                    St = St || Rt.mcc || P.isArrayOrTypedArray(Xt.shape) || P.isArrayOrTypedArray(Xt.bgcolor) || P.isArrayOrTypedArray(Xt.fgcolor) || P.isArrayOrTypedArray(Xt.size) || P.isArrayOrTypedArray(Xt.solidity);
                    var Xe = kt.uid;
                    St && (Xe += "-" + Rt.i), c.pattern(Wt, "point", ge, Xe, Zt, ir, mr, Rt.mcc, Xt.fillmode, fe, te, Me);
                  } else
                    P.isArrayOrTypedArray(ur) ? p.fill(Wt, ur[Rt.i]) : p.fill(Wt, ur);
                  $t && p.stroke(Wt, ie);
                }
              }, c.makePointStyleFns = function(Rt) {
                var Wt = {}, kt = Rt.marker;
                return Wt.markerScale = c.tryColorscale(kt, ""), Wt.lineScale = c.tryColorscale(kt, "line"), A.traceIs(Rt, "symbols") && (Wt.ms2mrc = y.isBubble(Rt) ? g(Rt) : function() {
                  return (kt.size || 6) / 2;
                }), Rt.selectedpoints && P.extendFlat(Wt, c.makeSelectedPointStyleFns(Rt)), Wt;
              }, c.makeSelectedPointStyleFns = function(Rt) {
                var Wt = {}, kt = Rt.selected || {}, re = Rt.unselected || {}, ge = Rt.marker || {}, _e = kt.marker || {}, ce = re.marker || {}, ae = ge.opacity, Se = _e.opacity, ze = ce.opacity, Ne = Se !== void 0, Ve = ze !== void 0;
                (P.isArrayOrTypedArray(ae) || Ne || Ve) && (Wt.selectedOpacityFn = function(Zt) {
                  var ye = Zt.mo === void 0 ? ge.opacity : Zt.mo;
                  return Zt.selected ? Ne ? Se : ye : Ve ? ze : o * ye;
                });
                var Oe = ge.color, ur = _e.color, ie = ce.color;
                (ur || ie) && (Wt.selectedColorFn = function(Zt) {
                  var ye = Zt.mcc || Oe;
                  return Zt.selected ? ur || ye : ie || ye;
                });
                var $t = ge.size, jt = _e.size, ee = ce.size, Bt = jt !== void 0, Xt = ee !== void 0;
                return A.traceIs(Rt, "symbols") && (Bt || Xt) && (Wt.selectedSizeFn = function(Zt) {
                  var ye = Zt.mrc || $t / 2;
                  return Zt.selected ? Bt ? jt / 2 : ye : Xt ? ee / 2 : ye;
                }), Wt;
              }, c.makeSelectedTextStyleFns = function(Rt) {
                var Wt = {}, kt = Rt.selected || {}, re = Rt.unselected || {}, ge = Rt.textfont || {}, _e = kt.textfont || {}, ce = re.textfont || {}, ae = ge.color, Se = _e.color, ze = ce.color;
                return Wt.selectedTextColorFn = function(Ne) {
                  var Ve = Ne.tc || ae;
                  return Ne.selected ? Se || Ve : ze || (Se ? Ve : p.addOpacity(Ve, o));
                }, Wt;
              }, c.selectedPointStyle = function(Rt, Wt) {
                if (!(!Rt.size() || !Wt.selectedpoints)) {
                  var kt = c.makeSelectedPointStyleFns(Wt), re = Wt.marker || {}, ge = [];
                  kt.selectedOpacityFn && ge.push(function(_e, ce) {
                    _e.style("opacity", kt.selectedOpacityFn(ce));
                  }), kt.selectedColorFn && ge.push(function(_e, ce) {
                    p.fill(_e, kt.selectedColorFn(ce));
                  }), kt.selectedSizeFn && ge.push(function(_e, ce) {
                    var ae = ce.mx || re.symbol || 0, Se = kt.selectedSizeFn(ce);
                    _e.attr("d", d(c.symbolNumber(ae), Se, zt(ce, Wt), X(ce, Wt))), ce.mrc2 = Se;
                  }), ge.length && Rt.each(function(_e) {
                    for (var ce = b.select(this), ae = 0; ae < ge.length; ae++)
                      ge[ae](ce, _e);
                  });
                }
              }, c.tryColorscale = function(Rt, Wt) {
                var kt = Wt ? P.nestedProperty(Rt, Wt).get() : Rt;
                if (kt) {
                  var re = kt.color;
                  if ((kt.colorscale || kt._colorAx) && P.isArrayOrTypedArray(re))
                    return u.makeColorScaleFuncFromTrace(kt);
                }
                return P.identity;
              };
              var z = {
                start: 1,
                end: -1,
                middle: 0,
                bottom: 1,
                top: -1
              };
              function O(Rt, Wt, kt, re, ge) {
                var _e = b.select(Rt.node().parentNode), ce = Wt.indexOf("top") !== -1 ? "top" : Wt.indexOf("bottom") !== -1 ? "bottom" : "middle", ae = Wt.indexOf("left") !== -1 ? "end" : Wt.indexOf("right") !== -1 ? "start" : "middle", Se = re ? re / 0.8 + 1 : 0, ze = (r.lineCount(Rt) - 1) * l + 1, Ne = z[ae] * Se, Ve = kt * 0.75 + z[ce] * Se + (z[ce] - 1) * ze * kt / 2;
                Rt.attr("text-anchor", ae), ge || _e.attr("transform", t(Ne, Ve));
              }
              function B(Rt, Wt) {
                var kt = Rt.ts || Wt.textfont.size;
                return s(kt) && kt > 0 ? kt : 0;
              }
              c.textPointStyle = function(Rt, Wt, kt) {
                if (Rt.size()) {
                  var re;
                  if (Wt.selectedpoints) {
                    var ge = c.makeSelectedTextStyleFns(Wt);
                    re = ge.selectedTextColorFn;
                  }
                  var _e = Wt.texttemplate, ce = kt._fullLayout;
                  Rt.each(function(ae) {
                    var Se = b.select(this), ze = _e ? P.extractOption(ae, Wt, "txt", "texttemplate") : P.extractOption(ae, Wt, "tx", "text");
                    if (!ze && ze !== 0) {
                      Se.remove();
                      return;
                    }
                    if (_e) {
                      var Ne = Wt._module.formatLabels, Ve = Ne ? Ne(ae, Wt, ce) : {}, Oe = {};
                      x(Oe, Wt, ae.i);
                      var ur = Wt._meta || {};
                      ze = P.texttemplateString(ze, Ve, ce._d3locale, Oe, ae, ur);
                    }
                    var ie = ae.tp || Wt.textposition, $t = B(ae, Wt), jt = re ? re(ae) : ae.tc || Wt.textfont.color;
                    Se.call(c.font, {
                      family: ae.tf || Wt.textfont.family,
                      weight: ae.tw || Wt.textfont.weight,
                      style: ae.ty || Wt.textfont.style,
                      variant: ae.tv || Wt.textfont.variant,
                      textcase: ae.tC || Wt.textfont.textcase,
                      lineposition: ae.tE || Wt.textfont.lineposition,
                      shadow: ae.tS || Wt.textfont.shadow,
                      size: $t,
                      color: jt
                    }).text(ze).call(r.convertToTspans, kt).call(O, ie, $t, ae.mrc);
                  });
                }
              }, c.selectedTextStyle = function(Rt, Wt) {
                if (!(!Rt.size() || !Wt.selectedpoints)) {
                  var kt = c.makeSelectedTextStyleFns(Wt);
                  Rt.each(function(re) {
                    var ge = b.select(this), _e = kt.selectedTextColorFn(re), ce = re.tp || Wt.textposition, ae = B(re, Wt);
                    p.fill(ge, _e);
                    var Se = A.traceIs(Wt, "bar-like");
                    O(ge, ce, ae, re.mrc2 || re.mrc, Se);
                  });
                }
              };
              var V = 0.5;
              c.smoothopen = function(Rt, Wt) {
                if (Rt.length < 3)
                  return "M" + Rt.join("L");
                var kt = "M" + Rt[0], re = [], ge;
                for (ge = 1; ge < Rt.length - 1; ge++)
                  re.push(rt(Rt[ge - 1], Rt[ge], Rt[ge + 1], Wt));
                for (kt += "Q" + re[0][0] + " " + Rt[1], ge = 2; ge < Rt.length - 1; ge++)
                  kt += "C" + re[ge - 2][1] + " " + re[ge - 1][0] + " " + Rt[ge];
                return kt += "Q" + re[Rt.length - 3][1] + " " + Rt[Rt.length - 1], kt;
              }, c.smoothclosed = function(Rt, Wt) {
                if (Rt.length < 3)
                  return "M" + Rt.join("L") + "Z";
                var kt = "M" + Rt[0], re = Rt.length - 1, ge = [rt(Rt[re], Rt[0], Rt[1], Wt)], _e;
                for (_e = 1; _e < re; _e++)
                  ge.push(rt(Rt[_e - 1], Rt[_e], Rt[_e + 1], Wt));
                for (ge.push(rt(Rt[re - 1], Rt[re], Rt[0], Wt)), _e = 1; _e <= re; _e++)
                  kt += "C" + ge[_e - 1][1] + " " + ge[_e][0] + " " + Rt[_e];
                return kt += "C" + ge[re][1] + " " + ge[0][0] + " " + Rt[0] + "Z", kt;
              };
              var U, H;
              function F(Rt, Wt, kt) {
                return kt && (Rt = ht(Rt)), Wt ? q(Rt[1]) : G(Rt[0]);
              }
              function G(Rt) {
                var Wt = b.round(Rt, 2);
                return U = Wt, Wt;
              }
              function q(Rt) {
                var Wt = b.round(Rt, 2);
                return H = Wt, Wt;
              }
              function rt(Rt, Wt, kt, re) {
                var ge = Rt[0] - Wt[0], _e = Rt[1] - Wt[1], ce = kt[0] - Wt[0], ae = kt[1] - Wt[1], Se = Math.pow(ge * ge + _e * _e, V / 2), ze = Math.pow(ce * ce + ae * ae, V / 2), Ne = (ze * ze * ge - Se * Se * ce) * re, Ve = (ze * ze * _e - Se * Se * ae) * re, Oe = 3 * ze * (Se + ze), ur = 3 * Se * (Se + ze);
                return [[G(Wt[0] + (Oe && Ne / Oe)), q(Wt[1] + (Oe && Ve / Oe))], [G(Wt[0] - (ur && Ne / ur)), q(Wt[1] - (ur && Ve / ur))]];
              }
              var st = {
                hv: function(Rt, Wt, kt) {
                  return "H" + G(Wt[0]) + "V" + F(Wt, 1, kt);
                },
                vh: function(Rt, Wt, kt) {
                  return "V" + q(Wt[1]) + "H" + F(Wt, 0, kt);
                },
                hvh: function(Rt, Wt, kt) {
                  return "H" + G((Rt[0] + Wt[0]) / 2) + "V" + q(Wt[1]) + "H" + F(Wt, 0, kt);
                },
                vhv: function(Rt, Wt, kt) {
                  return "V" + q((Rt[1] + Wt[1]) / 2) + "H" + G(Wt[0]) + "V" + F(Wt, 1, kt);
                }
              }, vt = function(Rt, Wt, kt) {
                return "L" + F(Wt, 0, kt) + "," + F(Wt, 1, kt);
              };
              c.steps = function(Rt) {
                var Wt = st[Rt] || vt;
                return function(kt) {
                  for (var re = "M" + G(kt[0][0]) + "," + q(kt[0][1]), ge = kt.length, _e = 1; _e < ge; _e++)
                    re += Wt(kt[_e - 1], kt[_e], _e === ge - 1);
                  return re;
                };
              };
              function ht(Rt, Wt) {
                var kt = Rt.backoff, re = Rt.trace, ge = Rt.d, _e = Rt.i;
                if (kt && re && re.marker && re.marker.angle % 360 === 0 && re.line && re.line.shape !== "spline") {
                  var ce = P.isArrayOrTypedArray(kt), ae = Rt, Se = Wt ? Wt[0] : U || 0, ze = Wt ? Wt[1] : H || 0, Ne = ae[0], Ve = ae[1], Oe = Ne - Se, ur = Ve - ze, ie = Math.atan2(ur, Oe), $t = ce ? kt[_e] : kt;
                  if ($t === "auto") {
                    var jt = ae.i;
                    re.type === "scatter" && jt--;
                    var ee = ae.marker, Bt = ee.symbol;
                    P.isArrayOrTypedArray(Bt) && (Bt = Bt[jt]);
                    var Xt = ee.size;
                    P.isArrayOrTypedArray(Xt) && (Xt = Xt[jt]), $t = ee ? c.symbolBackOffs[c.symbolNumber(Bt)] * Xt : 0, $t += c.getMarkerStandoff(ge[jt], re) || 0;
                  }
                  var Zt = Ne - $t * Math.cos(ie), ye = Ve - $t * Math.sin(ie);
                  (Zt <= Ne && Zt >= Se || Zt >= Ne && Zt <= Se) && (ye <= Ve && ye >= ze || ye >= Ve && ye <= ze) && (Rt = [Zt, ye]);
                }
                return Rt;
              }
              c.applyBackoff = ht, c.makeTester = function() {
                var Rt = P.ensureSingleById(b.select("body"), "svg", "js-plotly-tester", function(kt) {
                  kt.attr(i.svgAttrs).style({
                    position: "absolute",
                    left: "-10000px",
                    top: "-10000px",
                    width: "9000px",
                    height: "9000px",
                    "z-index": "1"
                  });
                }), Wt = P.ensureSingle(Rt, "path", "js-reference-point", function(kt) {
                  kt.attr("d", "M0,0H1V1H0Z").style({
                    "stroke-width": 0,
                    fill: "black"
                  });
                });
                c.tester = Rt, c.testref = Wt;
              }, c.savedBBoxes = {};
              var et = 0, Q = 1e4;
              c.bBox = function(Rt, Wt, kt) {
                kt || (kt = j(Rt));
                var re;
                if (kt) {
                  if (re = c.savedBBoxes[kt], re) return P.extendFlat({}, re);
                } else if (Rt.childNodes.length === 1) {
                  var ge = Rt.childNodes[0];
                  if (kt = j(ge), kt) {
                    var _e = +ge.getAttribute("x") || 0, ce = +ge.getAttribute("y") || 0, ae = ge.getAttribute("transform");
                    if (!ae) {
                      var Se = c.bBox(ge, !1, kt);
                      return _e && (Se.left += _e, Se.right += _e), ce && (Se.top += ce, Se.bottom += ce), Se;
                    }
                    if (kt += "~" + _e + "~" + ce + "~" + ae, re = c.savedBBoxes[kt], re) return P.extendFlat({}, re);
                  }
                }
                var ze, Ne;
                Wt ? ze = Rt : (Ne = c.tester.node(), ze = Rt.cloneNode(!0), Ne.appendChild(ze)), b.select(ze).attr("transform", null).call(r.positionText, 0, 0);
                var Ve = ze.getBoundingClientRect(), Oe = c.testref.node().getBoundingClientRect();
                Wt || Ne.removeChild(ze);
                var ur = {
                  height: Ve.height,
                  width: Ve.width,
                  left: Ve.left - Oe.left,
                  top: Ve.top - Oe.top,
                  right: Ve.right - Oe.left,
                  bottom: Ve.bottom - Oe.top
                };
                return et >= Q && (c.savedBBoxes = {}, et = 0), kt && (c.savedBBoxes[kt] = ur), et++, P.extendFlat({}, ur);
              };
              function j(Rt) {
                var Wt = Rt.getAttribute("data-unformatted");
                if (Wt !== null)
                  return Wt + Rt.getAttribute("data-math") + Rt.getAttribute("text-anchor") + Rt.getAttribute("style");
              }
              c.setClipUrl = function(Rt, Wt, kt) {
                Rt.attr("clip-path", at(Wt, kt));
              };
              function at(Rt, Wt) {
                if (!Rt) return null;
                var kt = Wt._context, re = kt._exportedPlot ? "" : kt._baseUrl || "";
                return re ? "url('" + re + "#" + Rt + "')" : "url(#" + Rt + ")";
              }
              c.getTranslate = function(Rt) {
                var Wt = /.*\btranslate\((-?\d*\.?\d*)[^-\d]*(-?\d*\.?\d*)[^\d].*/, kt = Rt.attr ? "attr" : "getAttribute", re = Rt[kt]("transform") || "", ge = re.replace(Wt, function(_e, ce, ae) {
                  return [ce, ae].join(" ");
                }).split(" ");
                return {
                  x: +ge[0] || 0,
                  y: +ge[1] || 0
                };
              }, c.setTranslate = function(Rt, Wt, kt) {
                var re = /(\btranslate\(.*?\);?)/, ge = Rt.attr ? "attr" : "getAttribute", _e = Rt.attr ? "attr" : "setAttribute", ce = Rt[ge]("transform") || "";
                return Wt = Wt || 0, kt = kt || 0, ce = ce.replace(re, "").trim(), ce += t(Wt, kt), ce = ce.trim(), Rt[_e]("transform", ce), ce;
              }, c.getScale = function(Rt) {
                var Wt = /.*\bscale\((\d*\.?\d*)[^\d]*(\d*\.?\d*)[^\d].*/, kt = Rt.attr ? "attr" : "getAttribute", re = Rt[kt]("transform") || "", ge = re.replace(Wt, function(_e, ce, ae) {
                  return [ce, ae].join(" ");
                }).split(" ");
                return {
                  x: +ge[0] || 1,
                  y: +ge[1] || 1
                };
              }, c.setScale = function(Rt, Wt, kt) {
                var re = /(\bscale\(.*?\);?)/, ge = Rt.attr ? "attr" : "getAttribute", _e = Rt.attr ? "attr" : "setAttribute", ce = Rt[ge]("transform") || "";
                return Wt = Wt || 1, kt = kt || 1, ce = ce.replace(re, "").trim(), ce += "scale(" + Wt + "," + kt + ")", ce = ce.trim(), Rt[_e]("transform", ce), ce;
              };
              var ut = /\s*sc.*/;
              c.setPointGroupScale = function(Rt, Wt, kt) {
                if (Wt = Wt || 1, kt = kt || 1, !!Rt) {
                  var re = Wt === 1 && kt === 1 ? "" : "scale(" + Wt + "," + kt + ")";
                  Rt.each(function() {
                    var ge = (this.getAttribute("transform") || "").replace(ut, "");
                    ge += re, ge = ge.trim(), this.setAttribute("transform", ge);
                  });
                }
              };
              var nt = /translate\([^)]*\)\s*$/;
              c.setTextPointsScale = function(Rt, Wt, kt) {
                Rt && Rt.each(function() {
                  var re, ge = b.select(this), _e = ge.select("text");
                  if (_e.node()) {
                    var ce = parseFloat(_e.attr("x") || 0), ae = parseFloat(_e.attr("y") || 0), Se = (ge.attr("transform") || "").match(nt);
                    Wt === 1 && kt === 1 ? re = [] : re = [t(ce, ae), "scale(" + Wt + "," + kt + ")", t(-ce, -ae)], Se && re.push(Se), ge.attr("transform", re.join(""));
                  }
                });
              };
              function X(Rt, Wt) {
                var kt;
                return Rt && (kt = Rt.mf), kt === void 0 && (kt = Wt.marker && Wt.marker.standoff || 0), !Wt._geo && !Wt._xA ? -kt : kt;
              }
              c.getMarkerStandoff = X;
              var ct = Math.atan2, lt = Math.cos, pt = Math.sin;
              function wt(Rt, Wt) {
                var kt = Wt[0], re = Wt[1];
                return [kt * lt(Rt) - re * pt(Rt), kt * pt(Rt) + re * lt(Rt)];
              }
              var Et, Ct, Gt, Jt, Qt, Vt;
              function zt(Rt, Wt) {
                var kt = Rt.ma;
                kt === void 0 && (kt = Wt.marker.angle, (!kt || P.isArrayOrTypedArray(kt)) && (kt = 0));
                var re, ge, _e = Wt.marker.angleref;
                if (_e === "previous" || _e === "north") {
                  if (Wt._geo) {
                    var ce = Wt._geo.project(Rt.lonlat);
                    re = ce[0], ge = ce[1];
                  } else {
                    var ae = Wt._xA, Se = Wt._yA;
                    if (ae && Se)
                      re = ae.c2p(Rt.x), ge = Se.c2p(Rt.y);
                    else
                      return 90;
                  }
                  if (Wt._geo) {
                    var ze = Rt.lonlat[0], Ne = Rt.lonlat[1], Ve = Wt._geo.project([
                      ze,
                      Ne + 1e-5
                      // epsilon
                    ]), Oe = Wt._geo.project([
                      ze + 1e-5,
                      // epsilon
                      Ne
                    ]), ur = ct(Oe[1] - ge, Oe[0] - re), ie = ct(Ve[1] - ge, Ve[0] - re), $t;
                    if (_e === "north")
                      $t = kt / 180 * Math.PI;
                    else if (_e === "previous") {
                      var jt = ze / 180 * Math.PI, ee = Ne / 180 * Math.PI, Bt = Et / 180 * Math.PI, Xt = Ct / 180 * Math.PI, Zt = Bt - jt, ye = lt(Xt) * pt(Zt), Mt = pt(Xt) * lt(ee) - lt(Xt) * pt(ee) * lt(Zt);
                      $t = -ct(ye, Mt) - Math.PI, Et = ze, Ct = Ne;
                    }
                    var St = wt(ur, [lt($t), 0]), Lt = wt(ie, [pt($t), 0]);
                    kt = ct(St[1] + Lt[1], St[0] + Lt[0]) / Math.PI * 180, _e === "previous" && !(Vt === Wt.uid && Rt.i === Qt + 1) && (kt = null);
                  }
                  if (_e === "previous" && !Wt._geo)
                    if (Vt === Wt.uid && Rt.i === Qt + 1 && s(re) && s(ge)) {
                      var te = re - Gt, fe = ge - Jt, Me = Wt.line && Wt.line.shape || "", ir = Me.slice(Me.length - 1);
                      ir === "h" && (fe = 0), ir === "v" && (te = 0), kt += ct(fe, te) / Math.PI * 180 + 90;
                    } else
                      kt = null;
                }
                return Gt = re, Jt = ge, Qt = Rt.i, Vt = Wt.uid, kt;
              }
              c.getMarkerAngle = zt;
            }
          ),
          /***/
          38882: (
            /***/
            function(Y, K, e) {
              var b = e(26953), P = e(45568).round, n = "M0,0Z", s = Math.sqrt(2), T = Math.sqrt(3), A = Math.PI, p = Math.cos, u = Math.sin;
              Y.exports = {
                circle: {
                  n: 0,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y, 2), v = "M" + c + ",0A" + c + "," + c + " 0 1,1 0,-" + c + "A" + c + "," + c + " 0 0,1 " + c + ",0Z";
                    return x ? o(g, x, v) : v;
                  }
                },
                square: {
                  n: 1,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y, 2);
                    return o(g, x, "M" + c + "," + c + "H-" + c + "V-" + c + "H" + c + "Z");
                  }
                },
                diamond: {
                  n: 2,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 1.3, 2);
                    return o(g, x, "M" + c + ",0L0," + c + "L-" + c + ",0L0,-" + c + "Z");
                  }
                },
                cross: {
                  n: 3,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 0.4, 2), v = P(y * 1.2, 2);
                    return o(g, x, "M" + v + "," + c + "H" + c + "V" + v + "H-" + c + "V" + c + "H-" + v + "V-" + c + "H-" + c + "V-" + v + "H" + c + "V-" + c + "H" + v + "Z");
                  }
                },
                x: {
                  n: 4,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 0.8 / s, 2), v = "l" + c + "," + c, f = "l" + c + ",-" + c, _ = "l-" + c + ",-" + c, S = "l-" + c + "," + c;
                    return o(g, x, "M0," + c + v + f + _ + f + _ + S + _ + S + v + S + v + "Z");
                  }
                },
                "triangle-up": {
                  n: 5,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 2 / T, 2), v = P(y / 2, 2), f = P(y, 2);
                    return o(g, x, "M-" + c + "," + v + "H" + c + "L0,-" + f + "Z");
                  }
                },
                "triangle-down": {
                  n: 6,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 2 / T, 2), v = P(y / 2, 2), f = P(y, 2);
                    return o(g, x, "M-" + c + ",-" + v + "H" + c + "L0," + f + "Z");
                  }
                },
                "triangle-left": {
                  n: 7,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 2 / T, 2), v = P(y / 2, 2), f = P(y, 2);
                    return o(g, x, "M" + v + ",-" + c + "V" + c + "L-" + f + ",0Z");
                  }
                },
                "triangle-right": {
                  n: 8,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 2 / T, 2), v = P(y / 2, 2), f = P(y, 2);
                    return o(g, x, "M-" + v + ",-" + c + "V" + c + "L" + f + ",0Z");
                  }
                },
                "triangle-ne": {
                  n: 9,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 0.6, 2), v = P(y * 1.2, 2);
                    return o(g, x, "M-" + v + ",-" + c + "H" + c + "V" + v + "Z");
                  }
                },
                "triangle-se": {
                  n: 10,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 0.6, 2), v = P(y * 1.2, 2);
                    return o(g, x, "M" + c + ",-" + v + "V" + c + "H-" + v + "Z");
                  }
                },
                "triangle-sw": {
                  n: 11,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 0.6, 2), v = P(y * 1.2, 2);
                    return o(g, x, "M" + v + "," + c + "H-" + c + "V-" + v + "Z");
                  }
                },
                "triangle-nw": {
                  n: 12,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 0.6, 2), v = P(y * 1.2, 2);
                    return o(g, x, "M-" + c + "," + v + "V-" + c + "H" + v + "Z");
                  }
                },
                pentagon: {
                  n: 13,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 0.951, 2), v = P(y * 0.588, 2), f = P(-y, 2), _ = P(y * -0.309, 2), S = P(y * 0.809, 2);
                    return o(g, x, "M" + c + "," + _ + "L" + v + "," + S + "H-" + v + "L-" + c + "," + _ + "L0," + f + "Z");
                  }
                },
                hexagon: {
                  n: 14,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y, 2), v = P(y / 2, 2), f = P(y * T / 2, 2);
                    return o(g, x, "M" + f + ",-" + v + "V" + v + "L0," + c + "L-" + f + "," + v + "V-" + v + "L0,-" + c + "Z");
                  }
                },
                hexagon2: {
                  n: 15,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y, 2), v = P(y / 2, 2), f = P(y * T / 2, 2);
                    return o(g, x, "M-" + v + "," + f + "H" + v + "L" + c + ",0L" + v + ",-" + f + "H-" + v + "L-" + c + ",0Z");
                  }
                },
                octagon: {
                  n: 16,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 0.924, 2), v = P(y * 0.383, 2);
                    return o(g, x, "M-" + v + ",-" + c + "H" + v + "L" + c + ",-" + v + "V" + v + "L" + v + "," + c + "H-" + v + "L-" + c + "," + v + "V-" + v + "Z");
                  }
                },
                star: {
                  n: 17,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = y * 1.4, v = P(c * 0.225, 2), f = P(c * 0.951, 2), _ = P(c * 0.363, 2), S = P(c * 0.588, 2), M = P(-c, 2), C = P(c * -0.309, 2), m = P(c * 0.118, 2), L = P(c * 0.809, 2), d = P(c * 0.382, 2);
                    return o(g, x, "M" + v + "," + C + "H" + f + "L" + _ + "," + m + "L" + S + "," + L + "L0," + d + "L-" + S + "," + L + "L-" + _ + "," + m + "L-" + f + "," + C + "H-" + v + "L0," + M + "Z");
                  }
                },
                hexagram: {
                  n: 18,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 0.66, 2), v = P(y * 0.38, 2), f = P(y * 0.76, 2);
                    return o(g, x, "M-" + f + ",0l-" + v + ",-" + c + "h" + f + "l" + v + ",-" + c + "l" + v + "," + c + "h" + f + "l-" + v + "," + c + "l" + v + "," + c + "h-" + f + "l-" + v + "," + c + "l-" + v + ",-" + c + "h-" + f + "Z");
                  }
                },
                "star-triangle-up": {
                  n: 19,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * T * 0.8, 2), v = P(y * 0.8, 2), f = P(y * 1.6, 2), _ = P(y * 4, 2), S = "A " + _ + "," + _ + " 0 0 1 ";
                    return o(g, x, "M-" + c + "," + v + S + c + "," + v + S + "0,-" + f + S + "-" + c + "," + v + "Z");
                  }
                },
                "star-triangle-down": {
                  n: 20,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * T * 0.8, 2), v = P(y * 0.8, 2), f = P(y * 1.6, 2), _ = P(y * 4, 2), S = "A " + _ + "," + _ + " 0 0 1 ";
                    return o(g, x, "M" + c + ",-" + v + S + "-" + c + ",-" + v + S + "0," + f + S + c + ",-" + v + "Z");
                  }
                },
                "star-square": {
                  n: 21,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 1.1, 2), v = P(y * 2, 2), f = "A " + v + "," + v + " 0 0 1 ";
                    return o(g, x, "M-" + c + ",-" + c + f + "-" + c + "," + c + f + c + "," + c + f + c + ",-" + c + f + "-" + c + ",-" + c + "Z");
                  }
                },
                "star-diamond": {
                  n: 22,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 1.4, 2), v = P(y * 1.9, 2), f = "A " + v + "," + v + " 0 0 1 ";
                    return o(g, x, "M-" + c + ",0" + f + "0," + c + f + c + ",0" + f + "0,-" + c + f + "-" + c + ",0Z");
                  }
                },
                "diamond-tall": {
                  n: 23,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 0.7, 2), v = P(y * 1.4, 2);
                    return o(g, x, "M0," + v + "L" + c + ",0L0,-" + v + "L-" + c + ",0Z");
                  }
                },
                "diamond-wide": {
                  n: 24,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 1.4, 2), v = P(y * 0.7, 2);
                    return o(g, x, "M0," + v + "L" + c + ",0L0,-" + v + "L-" + c + ",0Z");
                  }
                },
                hourglass: {
                  n: 25,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y, 2);
                    return o(g, x, "M" + c + "," + c + "H-" + c + "L" + c + ",-" + c + "H-" + c + "Z");
                  },
                  noDot: !0
                },
                bowtie: {
                  n: 26,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y, 2);
                    return o(g, x, "M" + c + "," + c + "V-" + c + "L-" + c + "," + c + "V-" + c + "Z");
                  },
                  noDot: !0
                },
                "circle-cross": {
                  n: 27,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y, 2);
                    return o(g, x, "M0," + c + "V-" + c + "M" + c + ",0H-" + c + "M" + c + ",0A" + c + "," + c + " 0 1,1 0,-" + c + "A" + c + "," + c + " 0 0,1 " + c + ",0Z");
                  },
                  needLine: !0,
                  noDot: !0
                },
                "circle-x": {
                  n: 28,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y, 2), v = P(y / s, 2);
                    return o(g, x, "M" + v + "," + v + "L-" + v + ",-" + v + "M" + v + ",-" + v + "L-" + v + "," + v + "M" + c + ",0A" + c + "," + c + " 0 1,1 0,-" + c + "A" + c + "," + c + " 0 0,1 " + c + ",0Z");
                  },
                  needLine: !0,
                  noDot: !0
                },
                "square-cross": {
                  n: 29,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y, 2);
                    return o(g, x, "M0," + c + "V-" + c + "M" + c + ",0H-" + c + "M" + c + "," + c + "H-" + c + "V-" + c + "H" + c + "Z");
                  },
                  needLine: !0,
                  noDot: !0
                },
                "square-x": {
                  n: 30,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y, 2);
                    return o(g, x, "M" + c + "," + c + "L-" + c + ",-" + c + "M" + c + ",-" + c + "L-" + c + "," + c + "M" + c + "," + c + "H-" + c + "V-" + c + "H" + c + "Z");
                  },
                  needLine: !0,
                  noDot: !0
                },
                "diamond-cross": {
                  n: 31,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 1.3, 2);
                    return o(g, x, "M" + c + ",0L0," + c + "L-" + c + ",0L0,-" + c + "ZM0,-" + c + "V" + c + "M-" + c + ",0H" + c);
                  },
                  needLine: !0,
                  noDot: !0
                },
                "diamond-x": {
                  n: 32,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 1.3, 2), v = P(y * 0.65, 2);
                    return o(g, x, "M" + c + ",0L0," + c + "L-" + c + ",0L0,-" + c + "ZM-" + v + ",-" + v + "L" + v + "," + v + "M-" + v + "," + v + "L" + v + ",-" + v);
                  },
                  needLine: !0,
                  noDot: !0
                },
                "cross-thin": {
                  n: 33,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 1.4, 2);
                    return o(g, x, "M0," + c + "V-" + c + "M" + c + ",0H-" + c);
                  },
                  needLine: !0,
                  noDot: !0,
                  noFill: !0
                },
                "x-thin": {
                  n: 34,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y, 2);
                    return o(g, x, "M" + c + "," + c + "L-" + c + ",-" + c + "M" + c + ",-" + c + "L-" + c + "," + c);
                  },
                  needLine: !0,
                  noDot: !0,
                  noFill: !0
                },
                asterisk: {
                  n: 35,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 1.2, 2), v = P(y * 0.85, 2);
                    return o(g, x, "M0," + c + "V-" + c + "M" + c + ",0H-" + c + "M" + v + "," + v + "L-" + v + ",-" + v + "M" + v + ",-" + v + "L-" + v + "," + v);
                  },
                  needLine: !0,
                  noDot: !0,
                  noFill: !0
                },
                hash: {
                  n: 36,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y / 2, 2), v = P(y, 2);
                    return o(g, x, "M" + c + "," + v + "V-" + v + "M" + (c - v) + ",-" + v + "V" + v + "M" + v + "," + c + "H-" + v + "M-" + v + "," + (c - v) + "H" + v);
                  },
                  needLine: !0,
                  noFill: !0
                },
                "y-up": {
                  n: 37,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 1.2, 2), v = P(y * 1.6, 2), f = P(y * 0.8, 2);
                    return o(g, x, "M-" + c + "," + f + "L0,0M" + c + "," + f + "L0,0M0,-" + v + "L0,0");
                  },
                  needLine: !0,
                  noDot: !0,
                  noFill: !0
                },
                "y-down": {
                  n: 38,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 1.2, 2), v = P(y * 1.6, 2), f = P(y * 0.8, 2);
                    return o(g, x, "M-" + c + ",-" + f + "L0,0M" + c + ",-" + f + "L0,0M0," + v + "L0,0");
                  },
                  needLine: !0,
                  noDot: !0,
                  noFill: !0
                },
                "y-left": {
                  n: 39,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 1.2, 2), v = P(y * 1.6, 2), f = P(y * 0.8, 2);
                    return o(g, x, "M" + f + "," + c + "L0,0M" + f + ",-" + c + "L0,0M-" + v + ",0L0,0");
                  },
                  needLine: !0,
                  noDot: !0,
                  noFill: !0
                },
                "y-right": {
                  n: 40,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 1.2, 2), v = P(y * 1.6, 2), f = P(y * 0.8, 2);
                    return o(g, x, "M-" + f + "," + c + "L0,0M-" + f + ",-" + c + "L0,0M" + v + ",0L0,0");
                  },
                  needLine: !0,
                  noDot: !0,
                  noFill: !0
                },
                "line-ew": {
                  n: 41,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 1.4, 2);
                    return o(g, x, "M" + c + ",0H-" + c);
                  },
                  needLine: !0,
                  noDot: !0,
                  noFill: !0
                },
                "line-ns": {
                  n: 42,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 1.4, 2);
                    return o(g, x, "M0," + c + "V-" + c);
                  },
                  needLine: !0,
                  noDot: !0,
                  noFill: !0
                },
                "line-ne": {
                  n: 43,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y, 2);
                    return o(g, x, "M" + c + ",-" + c + "L-" + c + "," + c);
                  },
                  needLine: !0,
                  noDot: !0,
                  noFill: !0
                },
                "line-nw": {
                  n: 44,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y, 2);
                    return o(g, x, "M" + c + "," + c + "L-" + c + ",-" + c);
                  },
                  needLine: !0,
                  noDot: !0,
                  noFill: !0
                },
                "arrow-up": {
                  n: 45,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y, 2), v = P(y * 2, 2);
                    return o(g, x, "M0,0L-" + c + "," + v + "H" + c + "Z");
                  },
                  backoff: 1,
                  noDot: !0
                },
                "arrow-down": {
                  n: 46,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y, 2), v = P(y * 2, 2);
                    return o(g, x, "M0,0L-" + c + ",-" + v + "H" + c + "Z");
                  },
                  noDot: !0
                },
                "arrow-left": {
                  n: 47,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 2, 2), v = P(y, 2);
                    return o(g, x, "M0,0L" + c + ",-" + v + "V" + v + "Z");
                  },
                  noDot: !0
                },
                "arrow-right": {
                  n: 48,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 2, 2), v = P(y, 2);
                    return o(g, x, "M0,0L-" + c + ",-" + v + "V" + v + "Z");
                  },
                  noDot: !0
                },
                "arrow-bar-up": {
                  n: 49,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y, 2), v = P(y * 2, 2);
                    return o(g, x, "M-" + c + ",0H" + c + "M0,0L-" + c + "," + v + "H" + c + "Z");
                  },
                  backoff: 1,
                  needLine: !0,
                  noDot: !0
                },
                "arrow-bar-down": {
                  n: 50,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y, 2), v = P(y * 2, 2);
                    return o(g, x, "M-" + c + ",0H" + c + "M0,0L-" + c + ",-" + v + "H" + c + "Z");
                  },
                  needLine: !0,
                  noDot: !0
                },
                "arrow-bar-left": {
                  n: 51,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 2, 2), v = P(y, 2);
                    return o(g, x, "M0,-" + v + "V" + v + "M0,0L" + c + ",-" + v + "V" + v + "Z");
                  },
                  needLine: !0,
                  noDot: !0
                },
                "arrow-bar-right": {
                  n: 52,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = P(y * 2, 2), v = P(y, 2);
                    return o(g, x, "M0,-" + v + "V" + v + "M0,0L-" + c + ",-" + v + "V" + v + "Z");
                  },
                  needLine: !0,
                  noDot: !0
                },
                arrow: {
                  n: 53,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = A / 2.5, v = 2 * y * p(c), f = 2 * y * u(c);
                    return o(g, x, "M0,0L" + -v + "," + f + "L" + v + "," + f + "Z");
                  },
                  backoff: 0.9,
                  noDot: !0
                },
                "arrow-wide": {
                  n: 54,
                  f: function(y, g, x) {
                    if (t(g)) return n;
                    var c = A / 4, v = 2 * y * p(c), f = 2 * y * u(c);
                    return o(g, x, "M0,0L" + -v + "," + f + "A " + 2 * y + "," + 2 * y + " 0 0 1 " + v + "," + f + "Z");
                  },
                  backoff: 0.4,
                  noDot: !0
                }
              };
              function t(y) {
                return y === null;
              }
              var r, i, a, l;
              function o(y, g, x) {
                if ((!y || y % 360 === 0) && !g) return x;
                if (a === y && l === g && r === x) return i;
                a = y, l = g, r = x;
                function c(z, O) {
                  var B = p(z), V = u(z), U = O[0], H = O[1] + (g || 0);
                  return [U * B - H * V, U * V + H * B];
                }
                for (var v = y / 180 * A, f = 0, _ = 0, S = b(x), M = "", C = 0; C < S.length; C++) {
                  var m = S[C], L = m[0], d = f, h = _;
                  if (L === "M" || L === "L")
                    f = +m[1], _ = +m[2];
                  else if (L === "m" || L === "l")
                    f += +m[1], _ += +m[2];
                  else if (L === "H")
                    f = +m[1];
                  else if (L === "h")
                    f += +m[1];
                  else if (L === "V")
                    _ = +m[1];
                  else if (L === "v")
                    _ += +m[1];
                  else if (L === "A") {
                    f = +m[1], _ = +m[2];
                    var E = c(v, [+m[6], +m[7]]);
                    m[6] = E[0], m[7] = E[1], m[3] = +m[3] + y;
                  }
                  (L === "H" || L === "V") && (L = "L"), (L === "h" || L === "v") && (L = "l"), (L === "m" || L === "l") && (f -= d, _ -= h);
                  var w = c(v, [f, _]);
                  (L === "H" || L === "V") && (L = "L"), (L === "M" || L === "L" || L === "m" || L === "l") && (m[1] = w[0], m[2] = w[1]), m[0] = L, M += m[0] + m.slice(1).join(",");
                }
                return i = M, M;
              }
            }
          ),
          /***/
          75568: (
            /***/
            function(Y) {
              Y.exports = {
                visible: {
                  valType: "boolean",
                  editType: "calc"
                },
                type: {
                  valType: "enumerated",
                  values: ["percent", "constant", "sqrt", "data"],
                  editType: "calc"
                },
                symmetric: {
                  valType: "boolean",
                  editType: "calc"
                },
                array: {
                  valType: "data_array",
                  editType: "calc"
                },
                arrayminus: {
                  valType: "data_array",
                  editType: "calc"
                },
                value: {
                  valType: "number",
                  min: 0,
                  dflt: 10,
                  editType: "calc"
                },
                valueminus: {
                  valType: "number",
                  min: 0,
                  dflt: 10,
                  editType: "calc"
                },
                traceref: {
                  valType: "integer",
                  min: 0,
                  dflt: 0,
                  editType: "style"
                },
                tracerefminus: {
                  valType: "integer",
                  min: 0,
                  dflt: 0,
                  editType: "style"
                },
                copy_ystyle: {
                  valType: "boolean",
                  editType: "plot"
                },
                copy_zstyle: {
                  valType: "boolean",
                  editType: "style"
                },
                color: {
                  valType: "color",
                  editType: "style"
                },
                thickness: {
                  valType: "number",
                  min: 0,
                  dflt: 2,
                  editType: "style"
                },
                width: {
                  valType: "number",
                  min: 0,
                  editType: "plot"
                },
                editType: "calc",
                _deprecated: {
                  opacity: {
                    valType: "number",
                    editType: "style"
                  }
                }
              };
            }
          ),
          /***/
          352: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(33626), n = e(29714), s = e(34809), T = e(25589);
              Y.exports = function(u) {
                for (var t = u.calcdata, r = 0; r < t.length; r++) {
                  var i = t[r], a = i[0].trace;
                  if (a.visible === !0 && P.traceIs(a, "errorBarsOK")) {
                    var l = n.getFromId(u, a.xaxis), o = n.getFromId(u, a.yaxis);
                    A(i, a, l, "x"), A(i, a, o, "y");
                  }
                }
              };
              function A(p, u, t, r) {
                var i = u["error_" + r] || {}, a = i.visible && ["linear", "log"].indexOf(t.type) !== -1, l = [];
                if (a) {
                  for (var o = T(i), y = 0; y < p.length; y++) {
                    var g = p[y], x = g.i;
                    if (x === void 0) x = y;
                    else if (x === null) continue;
                    var c = g[r];
                    if (b(t.c2l(c))) {
                      var v = o(c, x);
                      if (b(v[0]) && b(v[1])) {
                        var f = g[r + "s"] = c - v[0], _ = g[r + "h"] = c + v[1];
                        l.push(f, _);
                      }
                    }
                  }
                  var S = t._id, M = u._extremes[S], C = n.findExtremes(t, l, s.extendFlat({
                    tozero: M.opts.tozero
                  }, {
                    padded: !0
                  }));
                  M.min = M.min.concat(C.min), M.max = M.max.concat(C.max);
                }
              }
            }
          ),
          /***/
          25589: (
            /***/
            function(Y) {
              Y.exports = function(b) {
                var P = b.type, n = b.symmetric;
                if (P === "data") {
                  var s = b.array || [];
                  if (n)
                    return function(t, r) {
                      var i = +s[r];
                      return [i, i];
                    };
                  var T = b.arrayminus || [];
                  return function(t, r) {
                    var i = +s[r], a = +T[r];
                    return !isNaN(i) || !isNaN(a) ? [a || 0, i || 0] : [NaN, NaN];
                  };
                } else {
                  var A = K(P, b.value), p = K(P, b.valueminus);
                  return n || b.valueminus === void 0 ? function(t) {
                    var r = A(t);
                    return [r, r];
                  } : function(t) {
                    return [p(t), A(t)];
                  };
                }
              };
              function K(e, b) {
                if (e === "percent")
                  return function(P) {
                    return Math.abs(P * b / 100);
                  };
                if (e === "constant")
                  return function() {
                    return Math.abs(b);
                  };
                if (e === "sqrt")
                  return function(P) {
                    return Math.sqrt(Math.abs(P));
                  };
              }
            }
          ),
          /***/
          5543: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(33626), n = e(34809), s = e(78032), T = e(75568);
              Y.exports = function(A, p, u, t) {
                var r = "error_" + t.axis, i = s.newContainer(p, r), a = A[r] || {};
                function l(f, _) {
                  return n.coerce(a, i, T, f, _);
                }
                var o = a.array !== void 0 || a.value !== void 0 || a.type === "sqrt", y = l("visible", o);
                if (y !== !1) {
                  var g = l("type", "array" in a ? "data" : "percent"), x = !0;
                  g !== "sqrt" && (x = l("symmetric", !((g === "data" ? "arrayminus" : "valueminus") in a))), g === "data" ? (l("array"), l("traceref"), x || (l("arrayminus"), l("tracerefminus"))) : (g === "percent" || g === "constant") && (l("value"), x || l("valueminus"));
                  var c = "copy_" + t.inherit + "style";
                  if (t.inherit) {
                    var v = p["error_" + t.inherit];
                    (v || {}).visible && l(c, !(a.color || b(a.thickness) || b(a.width)));
                  }
                  (!t.inherit || !i[c]) && (l("color", u), l("thickness"), l("width", P.traceIs(p, "gl3d") ? 0 : 4));
                }
              };
            }
          ),
          /***/
          77901: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(13582).overrideAll, n = e(75568), s = {
                error_x: b.extendFlat({}, n),
                error_y: b.extendFlat({}, n)
              };
              delete s.error_x.copy_zstyle, delete s.error_y.copy_zstyle, delete s.error_y.copy_ystyle;
              var T = {
                error_x: b.extendFlat({}, n),
                error_y: b.extendFlat({}, n),
                error_z: b.extendFlat({}, n)
              };
              delete T.error_x.copy_ystyle, delete T.error_y.copy_ystyle, delete T.error_z.copy_ystyle, delete T.error_z.copy_zstyle, Y.exports = {
                moduleType: "component",
                name: "errorbars",
                schema: {
                  traces: {
                    scatter: s,
                    bar: s,
                    histogram: s,
                    scatter3d: P(T, "calc", "nested"),
                    scattergl: P(s, "calc", "nested")
                  }
                },
                supplyDefaults: e(5543),
                calc: e(352),
                makeComputeError: e(25589),
                plot: e(42130),
                style: e(22800),
                hoverInfo: A
              };
              function A(p, u, t) {
                (u.error_y || {}).visible && (t.yerr = p.yh - p.y, u.error_y.symmetric || (t.yerrneg = p.y - p.ys)), (u.error_x || {}).visible && (t.xerr = p.xh - p.x, u.error_x.symmetric || (t.xerrneg = p.x - p.xs));
              }
            }
          ),
          /***/
          42130: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(10721), n = e(62203), s = e(64726);
              Y.exports = function(p, u, t, r) {
                var i, a = t.xaxis, l = t.yaxis, o = r && r.duration > 0, y = p._context.staticPlot;
                u.each(function(g) {
                  var x = g[0].trace, c = x.error_x || {}, v = x.error_y || {}, f;
                  x.ids && (f = function(C) {
                    return C.id;
                  });
                  var _ = s.hasMarkers(x) && x.marker.maxdisplayed > 0;
                  !v.visible && !c.visible && (g = []);
                  var S = b.select(this).selectAll("g.errorbar").data(g, f);
                  if (S.exit().remove(), !!g.length) {
                    c.visible || S.selectAll("path.xerror").remove(), v.visible || S.selectAll("path.yerror").remove(), S.style("opacity", 1);
                    var M = S.enter().append("g").classed("errorbar", !0);
                    o && M.style("opacity", 0).transition().duration(r.duration).style("opacity", 1), n.setClipUrl(S, t.layerClipId, p), S.each(function(C) {
                      var m = b.select(this), L = T(C, a, l);
                      if (!(_ && !C.vis)) {
                        var d, h = m.select("path.yerror");
                        if (v.visible && P(L.x) && P(L.yh) && P(L.ys)) {
                          var E = v.width;
                          d = "M" + (L.x - E) + "," + L.yh + "h" + 2 * E + // hat
                          "m-" + E + ",0V" + L.ys, L.noYS || (d += "m-" + E + ",0h" + 2 * E), i = !h.size(), i ? h = m.append("path").style("vector-effect", y ? "none" : "non-scaling-stroke").classed("yerror", !0) : o && (h = h.transition().duration(r.duration).ease(r.easing)), h.attr("d", d);
                        } else h.remove();
                        var w = m.select("path.xerror");
                        if (c.visible && P(L.y) && P(L.xh) && P(L.xs)) {
                          var z = (c.copy_ystyle ? v : c).width;
                          d = "M" + L.xh + "," + (L.y - z) + "v" + 2 * z + // hat
                          "m0,-" + z + "H" + L.xs, L.noXS || (d += "m0,-" + z + "v" + 2 * z), i = !w.size(), i ? w = m.append("path").style("vector-effect", y ? "none" : "non-scaling-stroke").classed("xerror", !0) : o && (w = w.transition().duration(r.duration).ease(r.easing)), w.attr("d", d);
                        } else w.remove();
                      }
                    });
                  }
                });
              };
              function T(A, p, u) {
                var t = {
                  x: p.c2p(A.x),
                  y: u.c2p(A.y)
                };
                return A.yh !== void 0 && (t.yh = u.c2p(A.yh), t.ys = u.c2p(A.ys), P(t.ys) || (t.noYS = !0, t.ys = u.c2p(A.ys, !0))), A.xh !== void 0 && (t.xh = p.c2p(A.xh), t.xs = p.c2p(A.xs), P(t.xs) || (t.noXS = !0, t.xs = p.c2p(A.xs, !0))), t;
              }
            }
          ),
          /***/
          22800: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(78766);
              Y.exports = function(s) {
                s.each(function(T) {
                  var A = T[0].trace, p = A.error_y || {}, u = A.error_x || {}, t = b.select(this);
                  t.selectAll("path.yerror").style("stroke-width", p.thickness + "px").call(P.stroke, p.color), u.copy_ystyle && (u = p), t.selectAll("path.xerror").style("stroke-width", u.thickness + "px").call(P.stroke, u.color);
                });
              };
            }
          ),
          /***/
          70192: (
            /***/
            function(Y, K, e) {
              var b = e(80337), P = e(6811).hoverlabel, n = e(93049).extendFlat;
              Y.exports = {
                hoverlabel: {
                  bgcolor: n({}, P.bgcolor, {
                    arrayOk: !0
                  }),
                  bordercolor: n({}, P.bordercolor, {
                    arrayOk: !0
                  }),
                  font: b({
                    arrayOk: !0,
                    editType: "none"
                  }),
                  align: n({}, P.align, {
                    arrayOk: !0
                  }),
                  namelength: n({}, P.namelength, {
                    arrayOk: !0
                  }),
                  editType: "none"
                }
              };
            }
          ),
          /***/
          83552: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(33626);
              Y.exports = function(T) {
                var A = T.calcdata, p = T._fullLayout;
                function u(l) {
                  return function(o) {
                    return b.coerceHoverinfo({
                      hoverinfo: o
                    }, {
                      _module: l._module
                    }, p);
                  };
                }
                for (var t = 0; t < A.length; t++) {
                  var r = A[t], i = r[0].trace;
                  if (!P.traceIs(i, "pie-like")) {
                    var a = P.traceIs(i, "2dMap") ? n : b.fillArray;
                    a(i.hoverinfo, r, "hi", u(i)), i.hovertemplate && a(i.hovertemplate, r, "ht"), i.hoverlabel && (a(i.hoverlabel.bgcolor, r, "hbg"), a(i.hoverlabel.bordercolor, r, "hbc"), a(i.hoverlabel.font.size, r, "hts"), a(i.hoverlabel.font.color, r, "htc"), a(i.hoverlabel.font.family, r, "htf"), a(i.hoverlabel.font.weight, r, "htw"), a(i.hoverlabel.font.style, r, "hty"), a(i.hoverlabel.font.variant, r, "htv"), a(i.hoverlabel.namelength, r, "hnl"), a(i.hoverlabel.align, r, "hta"));
                  }
                }
              };
              function n(s, T, A, p) {
                p = p || b.identity, Array.isArray(s) && (T[0][A] = p(s));
              }
            }
          ),
          /***/
          94225: (
            /***/
            function(Y, K, e) {
              var b = e(33626), P = e(38103).hover;
              Y.exports = function(s, T, A) {
                var p = b.getComponentMethod("annotations", "onClick")(s, s._hoverdata);
                A !== void 0 && P(s, T, A, !0);
                function u() {
                  s.emit("plotly_click", {
                    points: s._hoverdata,
                    event: T
                  });
                }
                s._hoverdata && T && T.target && (p && p.then ? p.then(u) : u(), T.stopImmediatePropagation && T.stopImmediatePropagation());
              };
            }
          ),
          /***/
          85988: (
            /***/
            function(Y) {
              Y.exports = {
                // hover labels for multiple horizontal bars get tilted by this angle
                YANGLE: 60,
                // size and display constants for hover text
                // pixel size of hover arrows
                HOVERARROWSIZE: 6,
                // pixels padding around text
                HOVERTEXTPAD: 3,
                // hover font
                HOVERFONTSIZE: 13,
                HOVERFONT: "Arial, sans-serif",
                // minimum time (msec) between hover calls
                HOVERMINTIME: 50,
                // ID suffix (with fullLayout._uid) for hover events in the throttle cache
                HOVERID: "-hover"
              };
            }
          ),
          /***/
          3239: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(70192), n = e(26430);
              Y.exports = function(T, A, p, u) {
                function t(i, a) {
                  return b.coerce(T, A, P, i, a);
                }
                var r = b.extendFlat({}, u.hoverlabel);
                A.hovertemplate && (r.namelength = -1), n(T, A, t, r);
              };
            }
          ),
          /***/
          36040: (
            /***/
            function(Y, K, e) {
              var b = e(34809);
              K.getSubplot = function(p) {
                return p.subplot || p.xaxis + p.yaxis || p.geo;
              }, K.isTraceInSubplots = function(p, u) {
                if (p.type === "splom") {
                  for (var t = p.xaxes || [], r = p.yaxes || [], i = 0; i < t.length; i++)
                    for (var a = 0; a < r.length; a++)
                      if (u.indexOf(t[i] + r[a]) !== -1)
                        return !0;
                  return !1;
                }
                return u.indexOf(K.getSubplot(p)) !== -1;
              }, K.flat = function(p, u) {
                for (var t = new Array(p.length), r = 0; r < p.length; r++)
                  t[r] = u;
                return t;
              }, K.p2c = function(p, u) {
                for (var t = new Array(p.length), r = 0; r < p.length; r++)
                  t[r] = p[r].p2c(u);
                return t;
              }, K.getDistanceFunction = function(p, u, t, r) {
                return p === "closest" ? r || K.quadrature(u, t) : p.charAt(0) === "x" ? u : t;
              }, K.getClosest = function(p, u, t) {
                if (t.index !== !1)
                  t.index >= 0 && t.index < p.length ? t.distance = 0 : t.index = !1;
                else
                  for (var r = 0; r < p.length; r++) {
                    var i = u(p[r]);
                    i <= t.distance && (t.index = r, t.distance = i);
                  }
                return t;
              }, K.inbox = function(p, u, t) {
                return p * u < 0 || p === 0 ? t : 1 / 0;
              }, K.quadrature = function(p, u) {
                return function(t) {
                  var r = p(t), i = u(t);
                  return Math.sqrt(r * r + i * i);
                };
              }, K.makeEventData = function(p, u, t) {
                var r = "index" in p ? p.index : p.pointNumber, i = {
                  data: u._input,
                  fullData: u,
                  curveNumber: u.index,
                  pointNumber: r
                };
                if (u._indexToPoints) {
                  var a = u._indexToPoints[r];
                  a.length === 1 ? i.pointIndex = a[0] : i.pointIndices = a;
                } else
                  i.pointIndex = r;
                return u._module.eventData ? i = u._module.eventData(i, p, u, t, r) : ("xVal" in p ? i.x = p.xVal : "x" in p && (i.x = p.x), "yVal" in p ? i.y = p.yVal : "y" in p && (i.y = p.y), p.xa && (i.xaxis = p.xa), p.ya && (i.yaxis = p.ya), p.zLabelVal !== void 0 && (i.z = p.zLabelVal)), K.appendArrayPointValue(i, u, r), i;
              }, K.appendArrayPointValue = function(p, u, t) {
                var r = u._arrayAttrs;
                if (r)
                  for (var i = 0; i < r.length; i++) {
                    var a = r[i], l = n(a);
                    if (p[l] === void 0) {
                      var o = b.nestedProperty(u, a).get(), y = s(o, t);
                      y !== void 0 && (p[l] = y);
                    }
                  }
              }, K.appendArrayMultiPointValues = function(p, u, t) {
                var r = u._arrayAttrs;
                if (r)
                  for (var i = 0; i < r.length; i++) {
                    var a = r[i], l = n(a);
                    if (p[l] === void 0) {
                      for (var o = b.nestedProperty(u, a).get(), y = new Array(t.length), g = 0; g < t.length; g++)
                        y[g] = s(o, t[g]);
                      p[l] = y;
                    }
                  }
              };
              var P = {
                ids: "id",
                locations: "location",
                labels: "label",
                values: "value",
                "marker.colors": "color",
                parents: "parent"
              };
              function n(p) {
                return P[p] || p;
              }
              function s(p, u) {
                if (Array.isArray(u)) {
                  if (Array.isArray(p) && Array.isArray(p[u[0]]))
                    return p[u[0]][u[1]];
                } else
                  return p[u];
              }
              var T = {
                x: !0,
                y: !0
              }, A = {
                "x unified": !0,
                "y unified": !0
              };
              K.isUnifiedHover = function(p) {
                return typeof p != "string" ? !1 : !!A[p];
              }, K.isXYhover = function(p) {
                return typeof p != "string" ? !1 : !!T[p];
              };
            }
          ),
          /***/
          38103: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(10721), n = e(65657), s = e(34809), T = s.pushUnique, A = s.strTranslate, p = s.strRotate, u = e(68596), t = e(30635), r = e(93134), i = e(62203), a = e(78766), l = e(14751), o = e(29714), y = e(54826).zindexSeparator, g = e(33626), x = e(36040), c = e(85988), v = e(73970), f = e(6134), _ = c.YANGLE, S = Math.PI * _ / 180, M = 1 / Math.sin(S), C = Math.cos(S), m = Math.sin(S), L = c.HOVERARROWSIZE, d = c.HOVERTEXTPAD, h = {
                box: !0,
                ohlc: !0,
                violin: !0,
                candlestick: !0
              }, E = {
                scatter: !0,
                scattergl: !0,
                splom: !0
              };
              function w(X, ct) {
                return X.distance - ct.distance;
              }
              K.hover = function(ct, lt, pt, wt) {
                ct = s.getGraphDiv(ct);
                var Et = lt.target;
                s.throttle(ct._fullLayout._uid + c.HOVERID, c.HOVERMINTIME, function() {
                  z(ct, lt, pt, wt, Et);
                });
              }, K.loneHover = function(ct, lt) {
                var pt = !0;
                Array.isArray(ct) || (pt = !1, ct = [ct]);
                var wt = lt.gd, Et = at(wt), Ct = ut(wt), Gt = ct.map(function(ge) {
                  var _e = ge._x0 || ge.x0 || ge.x || 0, ce = ge._x1 || ge.x1 || ge.x || 0, ae = ge._y0 || ge.y0 || ge.y || 0, Se = ge._y1 || ge.y1 || ge.y || 0, ze = ge.eventData;
                  if (ze) {
                    var Ne = Math.min(_e, ce), Ve = Math.max(_e, ce), Oe = Math.min(ae, Se), ur = Math.max(ae, Se), ie = ge.trace;
                    if (g.traceIs(ie, "gl3d")) {
                      var $t = wt._fullLayout[ie.scene]._scene.container, jt = $t.offsetLeft, ee = $t.offsetTop;
                      Ne += jt, Ve += jt, Oe += ee, ur += ee;
                    }
                    ze.bbox = {
                      x0: Ne + Ct,
                      x1: Ve + Ct,
                      y0: Oe + Et,
                      y1: ur + Et
                    }, lt.inOut_bbox && lt.inOut_bbox.push(ze.bbox);
                  } else
                    ze = !1;
                  return {
                    color: ge.color || a.defaultLine,
                    x0: ge.x0 || ge.x || 0,
                    x1: ge.x1 || ge.x || 0,
                    y0: ge.y0 || ge.y || 0,
                    y1: ge.y1 || ge.y || 0,
                    xLabel: ge.xLabel,
                    yLabel: ge.yLabel,
                    zLabel: ge.zLabel,
                    text: ge.text,
                    name: ge.name,
                    idealAlign: ge.idealAlign,
                    // optional extra bits of styling
                    borderColor: ge.borderColor,
                    fontFamily: ge.fontFamily,
                    fontSize: ge.fontSize,
                    fontColor: ge.fontColor,
                    fontWeight: ge.fontWeight,
                    fontStyle: ge.fontStyle,
                    fontVariant: ge.fontVariant,
                    nameLength: ge.nameLength,
                    textAlign: ge.textAlign,
                    // filler to make createHoverText happy
                    trace: ge.trace || {
                      index: 0,
                      hoverinfo: ""
                    },
                    xa: {
                      _offset: 0
                    },
                    ya: {
                      _offset: 0
                    },
                    index: 0,
                    hovertemplate: ge.hovertemplate || !1,
                    hovertemplateLabels: ge.hovertemplateLabels || !1,
                    eventData: ze
                  };
                }), Jt = !1, Qt = V(Gt, {
                  gd: wt,
                  hovermode: "closest",
                  rotateLabels: Jt,
                  bgColor: lt.bgColor || a.background,
                  container: b.select(lt.container),
                  outerContainer: lt.outerContainer || lt.container
                }), Vt = Qt.hoverLabels, zt = 5, Rt = 0, Wt = 0;
                Vt.sort(function(ge, _e) {
                  return ge.y0 - _e.y0;
                }).each(function(ge, _e) {
                  var ce = ge.y0 - ge.by / 2;
                  ce - zt < Rt ? ge.offset = Rt - ce + zt : ge.offset = 0, Rt = ce + ge.by + ge.offset, _e === lt.anchorIndex && (Wt = ge.offset);
                }).each(function(ge) {
                  ge.offset -= Wt;
                });
                var kt = wt._fullLayout._invScaleX, re = wt._fullLayout._invScaleY;
                return q(Vt, Jt, kt, re), pt ? Vt : Vt.node();
              };
              function z(X, ct, lt, pt, wt) {
                lt || (lt = "xy"), typeof lt == "string" && (lt = lt.split(y)[0]);
                var Et = Array.isArray(lt) ? lt : [lt], Ct, Gt = X._fullLayout, Jt = Gt.hoversubplots, Qt = Gt._plots || [], Vt = Qt[lt], zt = Gt._has("cartesian"), Rt = ct.hovermode || Gt.hovermode, Wt = (Rt || "").charAt(0) === "x", kt = (Rt || "").charAt(0) === "y", re, ge;
                if (zt && (Wt || kt) && Jt === "axis") {
                  for (var _e = Et.length, ce = 0; ce < _e; ce++)
                    if (Ct = Et[ce], Qt[Ct]) {
                      re = o.getFromId(X, Ct, "x"), ge = o.getFromId(X, Ct, "y");
                      var ae = (Wt ? re : ge)._subplotsWith;
                      if (ae && ae.length)
                        for (var Se = 0; Se < ae.length; Se++)
                          T(Et, ae[Se]);
                    }
                }
                if (Vt && Jt !== "single") {
                  var ze = Vt.overlays.map(function(ci) {
                    return ci.id;
                  });
                  Et = Et.concat(ze);
                }
                for (var Ne = Et.length, Ve = new Array(Ne), Oe = new Array(Ne), ur = !1, ie = 0; ie < Ne; ie++)
                  if (Ct = Et[ie], Qt[Ct])
                    ur = !0, Ve[ie] = Qt[Ct].xaxis, Oe[ie] = Qt[Ct].yaxis;
                  else if (Gt[Ct] && Gt[Ct]._subplot) {
                    var $t = Gt[Ct]._subplot;
                    Ve[ie] = $t.xaxis, Oe[ie] = $t.yaxis;
                  } else {
                    s.warn("Unrecognized subplot: " + Ct);
                    return;
                  }
                if (Rt && !ur && (Rt = "closest"), ["x", "y", "closest", "x unified", "y unified"].indexOf(Rt) === -1 || !X.calcdata || X.querySelector(".zoombox") || X._dragging)
                  return l.unhoverRaw(X, ct);
                var jt = Gt.hoverdistance;
                jt === -1 && (jt = 1 / 0);
                var ee = Gt.spikedistance;
                ee === -1 && (ee = 1 / 0);
                var Bt = [], Xt = [], Zt, ye, Mt, St, Lt, te, fe, Me, ir, mr, Xe, xe, me, Le = {
                  hLinePoint: null,
                  vLinePoint: null
                }, qt = !1;
                if (Array.isArray(ct))
                  for (Rt = "array", Mt = 0; Mt < ct.length; Mt++)
                    Lt = X.calcdata[ct[Mt].curveNumber || 0], Lt && (te = Lt[0].trace, Lt[0].trace.hoverinfo !== "skip" && (Xt.push(Lt), te.orientation === "h" && (qt = !0)));
                else {
                  var De = X.calcdata.slice();
                  for (De.sort(function(ci, rn) {
                    var Cn = ci[0].trace.zorder || 0, Un = rn[0].trace.zorder || 0;
                    return Cn - Un;
                  }), St = 0; St < De.length; St++)
                    Lt = De[St], te = Lt[0].trace, te.hoverinfo !== "skip" && x.isTraceInSubplots(te, Et) && (Xt.push(Lt), te.orientation === "h" && (qt = !0));
                  var Je = !wt, dr, qe;
                  if (Je)
                    "xpx" in ct ? dr = ct.xpx : dr = Ve[0]._length / 2, "ypx" in ct ? qe = ct.ypx : qe = Oe[0]._length / 2;
                  else {
                    if (u.triggerHandler(X, "plotly_beforehover", ct) === !1)
                      return;
                    var we = wt.getBoundingClientRect();
                    dr = ct.clientX - we.left, qe = ct.clientY - we.top, Gt._calcInverseTransform(X);
                    var ue = s.apply3DTransform(Gt._invTransform)(dr, qe);
                    if (dr = ue[0], qe = ue[1], dr < 0 || dr > Ve[0]._length || qe < 0 || qe > Oe[0]._length)
                      return l.unhoverRaw(X, ct);
                  }
                  if (ct.pointerX = dr + Ve[0]._offset, ct.pointerY = qe + Oe[0]._offset, "xval" in ct ? Zt = x.flat(Et, ct.xval) : Zt = x.p2c(Ve, dr), "yval" in ct ? ye = x.flat(Et, ct.yval) : ye = x.p2c(Oe, qe), !P(Zt[0]) || !P(ye[0]))
                    return s.warn("Fx.hover failed", ct, X), l.unhoverRaw(X, ct);
                }
                var Pe = 1 / 0;
                function Ue(ci, rn) {
                  for (St = 0; St < Xt.length; St++)
                    if (Lt = Xt[St], !(!Lt || !Lt[0] || !Lt[0].trace) && (te = Lt[0].trace, !(te.visible !== !0 || te._length === 0) && ["carpet", "contourcarpet"].indexOf(te._module.name) === -1)) {
                      if (ir = Rt, x.isUnifiedHover(ir) && (ir = ir.charAt(0)), te.type === "splom" ? (Me = 0, fe = Et[Me]) : (fe = x.getSubplot(te), Me = Et.indexOf(fe)), xe = {
                        // trace properties
                        cd: Lt,
                        trace: te,
                        xa: Ve[Me],
                        ya: Oe[Me],
                        // max distances for hover and spikes - for points that want to show but do not
                        // want to override other points, set distance/spikeDistance equal to max*Distance
                        // and it will not get filtered out but it will be guaranteed to have a greater
                        // distance than any point that calculated a real distance.
                        maxHoverDistance: jt,
                        maxSpikeDistance: ee,
                        // point properties - override all of these
                        index: !1,
                        // point index in trace - only used by plotly.js hoverdata consumers
                        distance: Math.min(Pe, jt),
                        // pixel distance or pseudo-distance
                        // distance/pseudo-distance for spikes. This distance should always be calculated
                        // as if in "closest" mode, and should only be set if this point should
                        // generate a spike.
                        spikeDistance: 1 / 0,
                        // in some cases the spikes have different positioning from the hover label
                        // they don't need x0/x1, just one position
                        xSpike: void 0,
                        ySpike: void 0,
                        // where and how to display the hover label
                        color: a.defaultLine,
                        // trace color
                        name: te.name,
                        x0: void 0,
                        x1: void 0,
                        y0: void 0,
                        y1: void 0,
                        xLabelVal: void 0,
                        yLabelVal: void 0,
                        zLabelVal: void 0,
                        text: void 0
                      }, Gt[fe] && (xe.subplot = Gt[fe]._subplot), Gt._splomScenes && Gt._splomScenes[te.uid] && (xe.scene = Gt._splomScenes[te.uid]), ir === "array") {
                        var Cn = ct[St];
                        "pointNumber" in Cn ? (xe.index = Cn.pointNumber, ir = "closest") : (ir = "", "xval" in Cn && (mr = Cn.xval, ir = "x"), "yval" in Cn && (Xe = Cn.yval, ir = ir ? "closest" : "y"));
                      } else ci !== void 0 && rn !== void 0 ? (mr = ci, Xe = rn) : (mr = Zt[Me], Xe = ye[Me]);
                      if (me = Bt.length, jt !== 0)
                        if (te._module && te._module.hoverPoints) {
                          var Un = te._module.hoverPoints(xe, mr, Xe, ir, {
                            finiteRange: !0,
                            hoverLayer: Gt._hoverlayer,
                            // options for splom when hovering on same axis
                            hoversubplots: Jt,
                            gd: X
                          });
                          if (Un)
                            for (var Fn, mi = 0; mi < Un.length; mi++)
                              Fn = Un[mi], P(Fn.x0) && P(Fn.y0) && Bt.push(rt(Fn, Rt));
                        } else
                          s.log("Unrecognized trace type in hover:", te);
                      if (Rt === "closest" && Bt.length > me && (Bt.splice(0, me), Pe = Bt[0].distance), zt && ee !== 0 && Bt.length === 0) {
                        xe.distance = ee, xe.index = !1;
                        var Nn = te._module.hoverPoints(xe, mr, Xe, "closest", {
                          hoverLayer: Gt._hoverlayer
                        });
                        if (Nn && (Nn = Nn.filter(function(Qr) {
                          return Qr.spikeDistance <= ee;
                        })), Nn && Nn.length) {
                          var di, Ai = Nn.filter(function(Qr) {
                            return Qr.xa.showspikes && Qr.xa.spikesnap !== "hovered data";
                          });
                          if (Ai.length) {
                            var Gi = Ai[0];
                            P(Gi.x0) && P(Gi.y0) && (di = rr(Gi), (!Le.vLinePoint || Le.vLinePoint.spikeDistance > di.spikeDistance) && (Le.vLinePoint = di));
                          }
                          var ia = Nn.filter(function(Qr) {
                            return Qr.ya.showspikes && Qr.ya.spikesnap !== "hovered data";
                          });
                          if (ia.length) {
                            var Ca = ia[0];
                            P(Ca.x0) && P(Ca.y0) && (di = rr(Ca), (!Le.hLinePoint || Le.hLinePoint.spikeDistance > di.spikeDistance) && (Le.hLinePoint = di));
                          }
                        }
                      }
                    }
                }
                Ue();
                function Ye(ci, rn, Cn) {
                  for (var Un = null, Fn = 1 / 0, mi, Nn = 0; Nn < ci.length; Nn++)
                    re && re._id !== ci[Nn].xa._id || ge && ge._id !== ci[Nn].ya._id || (mi = ci[Nn].spikeDistance, Cn && Nn === 0 && (mi = -1 / 0), mi <= Fn && mi <= rn && (Un = ci[Nn], Fn = mi));
                  return Un;
                }
                function rr(ci) {
                  return ci ? {
                    xa: ci.xa,
                    ya: ci.ya,
                    x: ci.xSpike !== void 0 ? ci.xSpike : (ci.x0 + ci.x1) / 2,
                    y: ci.ySpike !== void 0 ? ci.ySpike : (ci.y0 + ci.y1) / 2,
                    distance: ci.distance,
                    spikeDistance: ci.spikeDistance,
                    curveNumber: ci.trace.index,
                    color: ci.color,
                    pointNumber: ci.index
                  } : null;
                }
                var lr = {
                  fullLayout: Gt,
                  container: Gt._hoverlayer,
                  event: ct
                };
                X._spikepoints;
                var hr = {
                  vLinePoint: Le.vLinePoint,
                  hLinePoint: Le.hLinePoint
                };
                X._spikepoints = hr;
                var Sr = function() {
                  var ci = Bt.filter(function(Cn) {
                    return re && re._id === Cn.xa._id && ge && ge._id === Cn.ya._id;
                  }), rn = Bt.filter(function(Cn) {
                    return !(re && re._id === Cn.xa._id && ge && ge._id === Cn.ya._id);
                  });
                  ci.sort(w), rn.sort(w), Bt = ci.concat(rn), Bt = Q(Bt, Rt);
                };
                Sr();
                var Dr = Rt.charAt(0), Or = (Dr === "x" || Dr === "y") && Bt[0] && E[Bt[0].trace.type];
                if (zt && ee !== 0 && Bt.length !== 0) {
                  var Br = Bt.filter(function(ci) {
                    return ci.ya.showspikes;
                  }), Nr = Ye(Br, ee, Or);
                  Le.hLinePoint = rr(Nr);
                  var Xr = Bt.filter(function(ci) {
                    return ci.xa.showspikes;
                  }), Gr = Ye(Xr, ee, Or);
                  Le.vLinePoint = rr(Gr);
                }
                if (Bt.length === 0) {
                  var oe = l.unhoverRaw(X, ct);
                  return zt && (Le.hLinePoint !== null || Le.vLinePoint !== null) && ht() && st(X, Le, lr), oe;
                }
                if (zt && ht() && st(X, Le, lr), x.isXYhover(ir) && Bt[0].length !== 0 && Bt[0].trace.type !== "splom") {
                  var de = Bt[0];
                  h[de.trace.type] ? Bt = Bt.filter(function(ci) {
                    return ci.trace.index === de.trace.index;
                  }) : Bt = [de];
                  var or = Bt.length, Er = j("x", de, Gt), Tr = j("y", de, Gt);
                  Ue(Er, Tr);
                  var tr = [], yr = {}, Ir = 0, Cr = function(ci) {
                    var rn = h[ci.trace.type] ? O(ci) : ci.trace.index;
                    if (!yr[rn])
                      Ir++, yr[rn] = Ir, tr.push(ci);
                    else {
                      var Cn = yr[rn] - 1, Un = tr[Cn];
                      Cn > 0 && Math.abs(ci.distance) < Math.abs(Un.distance) && (tr[Cn] = ci);
                    }
                  }, _r;
                  for (_r = 0; _r < or; _r++)
                    Cr(Bt[_r]);
                  for (_r = Bt.length - 1; _r > or - 1; _r--)
                    Cr(Bt[_r]);
                  Bt = tr, Sr();
                }
                var Zr = X._hoverdata, ln = [], Jr = at(X), Zn = ut(X);
                for (Mt = 0; Mt < Bt.length; Mt++) {
                  var fn = Bt[Mt], hi = x.makeEventData(fn, fn.trace, fn.cd);
                  if (fn.hovertemplate !== !1) {
                    var Vn = !1;
                    fn.cd[fn.index] && fn.cd[fn.index].ht && (Vn = fn.cd[fn.index].ht), fn.hovertemplate = Vn || fn.trace.hovertemplate || !1;
                  }
                  if (fn.xa && fn.ya) {
                    var jr = fn.x0 + fn.xa._offset, zr = fn.x1 + fn.xa._offset, Tn = fn.y0 + fn.ya._offset, sn = fn.y1 + fn.ya._offset, $n = Math.min(jr, zr), kn = Math.max(jr, zr), An = Math.min(Tn, sn), qn = Math.max(Tn, sn);
                    hi.bbox = {
                      x0: $n + Zn,
                      x1: kn + Zn,
                      y0: An + Jr,
                      y1: qn + Jr
                    };
                  }
                  fn.eventData = [hi], ln.push(hi);
                }
                X._hoverdata = ln;
                var si = Rt === "y" && (Xt.length > 1 || Bt.length > 1) || Rt === "closest" && qt && Bt.length > 1, qi = a.combine(Gt.plot_bgcolor || a.background, Gt.paper_bgcolor), ha = V(Bt, {
                  gd: X,
                  hovermode: Rt,
                  rotateLabels: si,
                  bgColor: qi,
                  container: Gt._hoverlayer,
                  outerContainer: Gt._paper.node(),
                  commonLabelOpts: Gt.hoverlabel,
                  hoverdistance: Gt.hoverdistance
                }), Mi = ha.hoverLabels;
                if (x.isUnifiedHover(Rt) || (H(Mi, si, Gt, ha.commonLabelBoundingBox), q(Mi, si, Gt._invScaleX, Gt._invScaleY)), wt && wt.tagName) {
                  var Ji = g.getComponentMethod("annotations", "hasClickToShow")(X, ln);
                  r(b.select(wt), Ji ? "pointer" : "");
                }
                !wt || pt || !vt(X, ct, Zr) || (Zr && X.emit("plotly_unhover", {
                  event: ct,
                  points: Zr
                }), X.emit("plotly_hover", {
                  event: ct,
                  points: X._hoverdata,
                  xaxes: Ve,
                  yaxes: Oe,
                  xvals: Zt,
                  yvals: ye
                }));
              }
              function O(X) {
                return [X.trace.index, X.index, X.x0, X.y0, X.name, X.attr, X.xa ? X.xa._id : "", X.ya ? X.ya._id : ""].join(",");
              }
              var B = /<extra>([\s\S]*)<\/extra>/;
              function V(X, ct) {
                var lt = ct.gd, pt = lt._fullLayout, wt = ct.hovermode, Et = ct.rotateLabels, Ct = ct.bgColor, Gt = ct.container, Jt = ct.outerContainer, Qt = ct.commonLabelOpts || {};
                if (X.length === 0) return [[]];
                var Vt = ct.fontFamily || c.HOVERFONT, zt = ct.fontSize || c.HOVERFONTSIZE, Rt = ct.fontWeight || pt.font.weight, Wt = ct.fontStyle || pt.font.style, kt = ct.fontVariant || pt.font.variant, re = ct.fontTextcase || pt.font.textcase, ge = ct.fontLineposition || pt.font.lineposition, _e = ct.fontShadow || pt.font.shadow, ce = X[0], ae = ce.xa, Se = ce.ya, ze = wt.charAt(0), Ne = ze + "Label", Ve = ce[Ne];
                if (Ve === void 0 && ae.type === "multicategory")
                  for (var Oe = 0; Oe < X.length && (Ve = X[Oe][Ne], Ve === void 0); Oe++)
                    ;
                var ur = nt(lt, Jt), ie = ur.top, $t = ur.width, jt = ur.height, ee = Ve !== void 0 && ce.distance <= ct.hoverdistance && (wt === "x" || wt === "y");
                if (ee) {
                  var Bt = !0, Xt, Zt;
                  for (Xt = 0; Xt < X.length; Xt++)
                    if (Bt && X[Xt].zLabel === void 0 && (Bt = !1), Zt = X[Xt].hoverinfo || X[Xt].trace.hoverinfo, Zt) {
                      var ye = Array.isArray(Zt) ? Zt : Zt.split("+");
                      if (ye.indexOf("all") === -1 && ye.indexOf(wt) === -1) {
                        ee = !1;
                        break;
                      }
                    }
                  Bt && (ee = !1);
                }
                var Mt = Gt.selectAll("g.axistext").data(ee ? [0] : []);
                Mt.enter().append("g").classed("axistext", !0), Mt.exit().remove();
                var St = {
                  minX: 0,
                  maxX: 0,
                  minY: 0,
                  maxY: 0
                };
                if (Mt.each(function() {
                  var Gr = b.select(this), oe = s.ensureSingle(Gr, "path", "", function(kn) {
                    kn.style({
                      "stroke-width": "1px"
                    });
                  }), de = s.ensureSingle(Gr, "text", "", function(kn) {
                    kn.attr("data-notex", 1);
                  }), or = Qt.bgcolor || a.defaultLine, Er = Qt.bordercolor || a.contrast(or), Tr = a.contrast(or), tr = Qt.font, yr = {
                    weight: tr.weight || Rt,
                    style: tr.style || Wt,
                    variant: tr.variant || kt,
                    textcase: tr.textcase || re,
                    lineposition: tr.lineposition || ge,
                    shadow: tr.shadow || _e,
                    family: tr.family || Vt,
                    size: tr.size || zt,
                    color: tr.color || Tr
                  };
                  oe.style({
                    fill: or,
                    stroke: Er
                  }), de.text(Ve).call(i.font, yr).call(t.positionText, 0, 0).call(t.convertToTspans, lt), Gr.attr("transform", "");
                  var Ir = nt(lt, de.node()), Cr, _r;
                  if (wt === "x") {
                    var Zr = ae.side === "top" ? "-" : "";
                    de.attr("text-anchor", "middle").call(t.positionText, 0, ae.side === "top" ? ie - Ir.bottom - L - d : ie - Ir.top + L + d), Cr = ae._offset + (ce.x0 + ce.x1) / 2, _r = Se._offset + (ae.side === "top" ? 0 : Se._length);
                    var ln = Ir.width / 2 + d, Jr = Cr;
                    Cr < ln ? Jr = ln : Cr > pt.width - ln && (Jr = pt.width - ln), oe.attr("d", "M" + (Cr - Jr) + ",0L" + (Cr - Jr + L) + "," + Zr + L + "H" + ln + "v" + Zr + (d * 2 + Ir.height) + "H" + -ln + "V" + Zr + L + "H" + (Cr - Jr - L) + "Z"), Cr = Jr, St.minX = Cr - ln, St.maxX = Cr + ln, ae.side === "top" ? (St.minY = _r - (d * 2 + Ir.height), St.maxY = _r - d) : (St.minY = _r + d, St.maxY = _r + (d * 2 + Ir.height));
                  } else {
                    var Zn, fn, hi;
                    Se.side === "right" ? (Zn = "start", fn = 1, hi = "", Cr = ae._offset + ae._length) : (Zn = "end", fn = -1, hi = "-", Cr = ae._offset), _r = Se._offset + (ce.y0 + ce.y1) / 2, de.attr("text-anchor", Zn), oe.attr("d", "M0,0L" + hi + L + "," + L + "V" + (d + Ir.height / 2) + "h" + hi + (d * 2 + Ir.width) + "V-" + (d + Ir.height / 2) + "H" + hi + L + "V-" + L + "Z"), St.minY = _r - (d + Ir.height / 2), St.maxY = _r + (d + Ir.height / 2), Se.side === "right" ? (St.minX = Cr + L, St.maxX = Cr + L + (d * 2 + Ir.width)) : (St.minX = Cr - L - (d * 2 + Ir.width), St.maxX = Cr - L);
                    var Vn = Ir.height / 2, jr = ie - Ir.top - Vn, zr = "clip" + pt._uid + "commonlabel" + Se._id, Tn;
                    if (Cr < Ir.width + 2 * d + L) {
                      Tn = "M-" + (L + d) + "-" + Vn + "h-" + (Ir.width - d) + "V" + Vn + "h" + (Ir.width - d) + "Z";
                      var sn = Ir.width - Cr + d;
                      t.positionText(de, sn, jr), Zn === "end" && de.selectAll("tspan").each(function() {
                        var kn = b.select(this), An = i.tester.append("text").text(kn.text()).call(i.font, yr), qn = nt(lt, An.node());
                        Math.round(qn.width) < Math.round(Ir.width) && kn.attr("x", sn - qn.width), An.remove();
                      });
                    } else
                      t.positionText(de, fn * (d + L), jr), Tn = null;
                    var $n = pt._topclips.selectAll("#" + zr).data(Tn ? [0] : []);
                    $n.enter().append("clipPath").attr("id", zr).append("path"), $n.exit().remove(), $n.select("path").attr("d", Tn), i.setClipUrl(de, Tn ? zr : null, lt);
                  }
                  Gr.attr("transform", A(Cr, _r));
                }), x.isUnifiedHover(wt)) {
                  Gt.selectAll("g.hovertext").remove();
                  var Lt = X.filter(function(Gr) {
                    return Gr.hoverinfo !== "none";
                  });
                  if (Lt.length === 0) return [];
                  var te = pt.hoverlabel, fe = te.font, Me = {
                    showlegend: !0,
                    legend: {
                      title: {
                        text: Ve,
                        font: fe
                      },
                      font: fe,
                      bgcolor: te.bgcolor,
                      bordercolor: te.bordercolor,
                      borderwidth: 1,
                      tracegroupgap: 7,
                      traceorder: pt.legend ? pt.legend.traceorder : void 0,
                      orientation: "v"
                    }
                  }, ir = {
                    font: fe
                  };
                  v(Me, ir, lt._fullData);
                  var mr = ir.legend;
                  mr.entries = [];
                  for (var Xe = 0; Xe < Lt.length; Xe++) {
                    var xe = Lt[Xe];
                    if (xe.hoverinfo !== "none") {
                      var me = U(xe, !0, wt, pt, Ve), Le = me[0], qt = me[1];
                      xe.name = qt, qt !== "" ? xe.text = qt + " : " + Le : xe.text = Le;
                      var De = xe.cd[xe.index];
                      De && (De.mc && (xe.mc = De.mc), De.mcc && (xe.mc = De.mcc), De.mlc && (xe.mlc = De.mlc), De.mlcc && (xe.mlc = De.mlcc), De.mlw && (xe.mlw = De.mlw), De.mrc && (xe.mrc = De.mrc), De.dir && (xe.dir = De.dir)), xe._distinct = !0, mr.entries.push([xe]);
                    }
                  }
                  mr.entries.sort(function(Gr, oe) {
                    return Gr[0].trace.index - oe[0].trace.index;
                  }), mr.layer = Gt, mr._inHover = !0, mr._groupTitleFont = te.grouptitlefont, f(lt, mr);
                  var Je = Gt.select("g.legend"), dr = nt(lt, Je.node()), qe = dr.width + 2 * d, we = dr.height + 2 * d, ue = Lt[0], Pe = (ue.x0 + ue.x1) / 2, Ue = (ue.y0 + ue.y1) / 2, Ye = !(g.traceIs(ue.trace, "bar-like") || g.traceIs(ue.trace, "box-violin")), rr, lr;
                  ze === "y" ? Ye ? (lr = Ue - d, rr = Ue + d) : (lr = Math.min.apply(null, Lt.map(function(Gr) {
                    return Math.min(Gr.y0, Gr.y1);
                  })), rr = Math.max.apply(null, Lt.map(function(Gr) {
                    return Math.max(Gr.y0, Gr.y1);
                  }))) : lr = rr = s.mean(Lt.map(function(Gr) {
                    return (Gr.y0 + Gr.y1) / 2;
                  })) - we / 2;
                  var hr, Sr;
                  ze === "x" ? Ye ? (hr = Pe + d, Sr = Pe - d) : (hr = Math.max.apply(null, Lt.map(function(Gr) {
                    return Math.max(Gr.x0, Gr.x1);
                  })), Sr = Math.min.apply(null, Lt.map(function(Gr) {
                    return Math.min(Gr.x0, Gr.x1);
                  }))) : hr = Sr = s.mean(Lt.map(function(Gr) {
                    return (Gr.x0 + Gr.x1) / 2;
                  })) - qe / 2;
                  var Dr = ae._offset, Or = Se._offset;
                  rr += Or, hr += Dr, Sr += Dr - qe, lr += Or - we;
                  var Br, Nr;
                  return hr + qe < $t && hr >= 0 ? Br = hr : Sr + qe < $t && Sr >= 0 ? Br = Sr : Dr + qe < $t ? Br = Dr : hr - Pe < Pe - Sr + qe ? Br = $t - qe : Br = 0, Br += d, rr + we < jt && rr >= 0 ? Nr = rr : lr + we < jt && lr >= 0 ? Nr = lr : Or + we < jt ? Nr = Or : rr - Ue < Ue - lr + we ? Nr = jt - we : Nr = 0, Nr += d, Je.attr("transform", A(Br - 1, Nr - 1)), Je;
                }
                var Xr = Gt.selectAll("g.hovertext").data(X, function(Gr) {
                  return O(Gr);
                });
                return Xr.enter().append("g").classed("hovertext", !0).each(function() {
                  var Gr = b.select(this);
                  Gr.append("rect").call(a.fill, a.addOpacity(Ct, 0.8)), Gr.append("text").classed("name", !0), Gr.append("path").style("stroke-width", "1px"), Gr.append("text").classed("nums", !0).call(i.font, {
                    weight: Rt,
                    style: Wt,
                    variant: kt,
                    textcase: re,
                    lineposition: ge,
                    shadow: _e,
                    family: Vt,
                    size: zt
                  });
                }), Xr.exit().remove(), Xr.each(function(Gr) {
                  var oe = b.select(this).attr("transform", ""), de = Gr.color;
                  Array.isArray(de) && (de = de[Gr.eventData[0].pointNumber]);
                  var or = Gr.bgcolor || de, Er = a.combine(a.opacity(or) ? or : a.defaultLine, Ct), Tr = a.combine(a.opacity(de) ? de : a.defaultLine, Ct), tr = Gr.borderColor || a.contrast(Er), yr = U(Gr, ee, wt, pt, Ve, oe), Ir = yr[0], Cr = yr[1], _r = oe.select("text.nums").call(i.font, {
                    family: Gr.fontFamily || Vt,
                    size: Gr.fontSize || zt,
                    color: Gr.fontColor || tr,
                    weight: Gr.fontWeight || Rt,
                    style: Gr.fontStyle || Wt,
                    variant: Gr.fontVariant || kt,
                    textcase: Gr.fontTextcase || re,
                    lineposition: Gr.fontLineposition || ge,
                    shadow: Gr.fontShadow || _e
                  }).text(Ir).attr("data-notex", 1).call(t.positionText, 0, 0).call(t.convertToTspans, lt), Zr = oe.select("text.name"), ln = 0, Jr = 0;
                  if (Cr && Cr !== Ir) {
                    Zr.call(i.font, {
                      family: Gr.fontFamily || Vt,
                      size: Gr.fontSize || zt,
                      color: Tr,
                      weight: Gr.fontWeight || Rt,
                      style: Gr.fontStyle || Wt,
                      variant: Gr.fontVariant || kt,
                      textcase: Gr.fontTextcase || re,
                      lineposition: Gr.fontLineposition || ge,
                      shadow: Gr.fontShadow || _e
                    }).text(Cr).attr("data-notex", 1).call(t.positionText, 0, 0).call(t.convertToTspans, lt);
                    var Zn = nt(lt, Zr.node());
                    ln = Zn.width + 2 * d, Jr = Zn.height + 2 * d;
                  } else
                    Zr.remove(), oe.select("rect").remove();
                  oe.select("path").style({
                    fill: Er,
                    stroke: tr
                  });
                  var fn = Gr.xa._offset + (Gr.x0 + Gr.x1) / 2, hi = Gr.ya._offset + (Gr.y0 + Gr.y1) / 2, Vn = Math.abs(Gr.x1 - Gr.x0), jr = Math.abs(Gr.y1 - Gr.y0), zr = nt(lt, _r.node()), Tn = zr.width / pt._invScaleX, sn = zr.height / pt._invScaleY;
                  Gr.ty0 = (ie - zr.top) / pt._invScaleY, Gr.bx = Tn + 2 * d, Gr.by = Math.max(sn + 2 * d, Jr), Gr.anchor = "start", Gr.txwidth = Tn, Gr.tx2width = ln, Gr.offset = 0;
                  var $n = (Tn + L + d + ln) * pt._invScaleX, kn, An;
                  if (Et)
                    Gr.pos = fn, kn = hi + jr / 2 + $n <= jt, An = hi - jr / 2 - $n >= 0, (Gr.idealAlign === "top" || !kn) && An ? (hi -= jr / 2, Gr.anchor = "end") : kn ? (hi += jr / 2, Gr.anchor = "start") : Gr.anchor = "middle", Gr.crossPos = hi;
                  else {
                    if (Gr.pos = hi, kn = fn + Vn / 2 + $n <= $t, An = fn - Vn / 2 - $n >= 0, (Gr.idealAlign === "left" || !kn) && An)
                      fn -= Vn / 2, Gr.anchor = "end";
                    else if (kn)
                      fn += Vn / 2, Gr.anchor = "start";
                    else {
                      Gr.anchor = "middle";
                      var qn = $n / 2, si = fn + qn - $t, qi = fn - qn;
                      si > 0 && (fn -= si), qi < 0 && (fn += -qi);
                    }
                    Gr.crossPos = fn;
                  }
                  _r.attr("text-anchor", Gr.anchor), ln && Zr.attr("text-anchor", Gr.anchor), oe.attr("transform", A(fn, hi) + (Et ? p(_) : ""));
                }), {
                  hoverLabels: Xr,
                  commonLabelBoundingBox: St
                };
              }
              function U(X, ct, lt, pt, wt, Et) {
                var Ct = "", Gt = "";
                X.nameOverride !== void 0 && (X.name = X.nameOverride), X.name && (X.trace._meta && (X.name = s.templateString(X.name, X.trace._meta)), Ct = et(X.name, X.nameLength));
                var Jt = lt.charAt(0), Qt = Jt === "x" ? "y" : "x";
                X.zLabel !== void 0 ? (X.xLabel !== void 0 && (Gt += "x: " + X.xLabel + "<br>"), X.yLabel !== void 0 && (Gt += "y: " + X.yLabel + "<br>"), X.trace.type !== "choropleth" && X.trace.type !== "choroplethmapbox" && X.trace.type !== "choroplethmap" && (Gt += (Gt ? "z: " : "") + X.zLabel)) : ct && X[Jt + "Label"] === wt ? Gt = X[Qt + "Label"] || "" : X.xLabel === void 0 ? X.yLabel !== void 0 && X.trace.type !== "scattercarpet" && (Gt = X.yLabel) : X.yLabel === void 0 ? Gt = X.xLabel : Gt = "(" + X.xLabel + ", " + X.yLabel + ")", (X.text || X.text === 0) && !Array.isArray(X.text) && (Gt += (Gt ? "<br>" : "") + X.text), X.extraText !== void 0 && (Gt += (Gt ? "<br>" : "") + X.extraText), Et && Gt === "" && !X.hovertemplate && (Ct === "" && Et.remove(), Gt = Ct);
                var Vt = X.hovertemplate || !1;
                if (Vt) {
                  var zt = X.hovertemplateLabels || X;
                  X[Jt + "Label"] !== wt && (zt[Jt + "other"] = zt[Jt + "Val"], zt[Jt + "otherLabel"] = zt[Jt + "Label"]), Gt = s.hovertemplateString(Vt, zt, pt._d3locale, X.eventData[0] || {}, X.trace._meta), Gt = Gt.replace(B, function(Rt, Wt) {
                    return Ct = et(Wt, X.nameLength), "";
                  });
                }
                return [Gt, Ct];
              }
              function H(X, ct, lt, pt) {
                var wt = ct ? "xa" : "ya", Et = ct ? "ya" : "xa", Ct = 0, Gt = 1, Jt = X.size(), Qt = new Array(Jt), Vt = 0, zt = pt.minX, Rt = pt.maxX, Wt = pt.minY, kt = pt.maxY, re = function(Zt) {
                  return Zt * lt._invScaleX;
                }, ge = function(Zt) {
                  return Zt * lt._invScaleY;
                };
                X.each(function(Zt) {
                  var ye = Zt[wt], Mt = Zt[Et], St = ye._id.charAt(0) === "x", Lt = ye.range;
                  Vt === 0 && Lt && Lt[0] > Lt[1] !== St && (Gt = -1);
                  var te = 0, fe = St ? lt.width : lt.height;
                  if (lt.hovermode === "x" || lt.hovermode === "y") {
                    var Me = F(Zt, ct), ir = Zt.anchor, mr = ir === "end" ? -1 : 1, Xe, xe;
                    if (ir === "middle")
                      Xe = Zt.crossPos + (St ? ge(Me.y - Zt.by / 2) : re(Zt.bx / 2 + Zt.tx2width / 2)), xe = Xe + (St ? ge(Zt.by) : re(Zt.bx));
                    else if (St)
                      Xe = Zt.crossPos + ge(L + Me.y) - ge(Zt.by / 2 - L), xe = Xe + ge(Zt.by);
                    else {
                      var me = re(mr * L + Me.x), Le = me + re(mr * Zt.bx);
                      Xe = Zt.crossPos + Math.min(me, Le), xe = Zt.crossPos + Math.max(me, Le);
                    }
                    St ? Wt !== void 0 && kt !== void 0 && Math.min(xe, kt) - Math.max(Xe, Wt) > 1 && (Mt.side === "left" ? (te = Mt._mainLinePosition, fe = lt.width) : fe = Mt._mainLinePosition) : zt !== void 0 && Rt !== void 0 && Math.min(xe, Rt) - Math.max(Xe, zt) > 1 && (Mt.side === "top" ? (te = Mt._mainLinePosition, fe = lt.height) : fe = Mt._mainLinePosition);
                  }
                  Qt[Vt++] = [{
                    datum: Zt,
                    traceIndex: Zt.trace.index,
                    dp: 0,
                    pos: Zt.pos,
                    posref: Zt.posref,
                    size: Zt.by * (St ? M : 1) / 2,
                    pmin: te,
                    pmax: fe
                  }];
                }), Qt.sort(function(Zt, ye) {
                  return Zt[0].posref - ye[0].posref || // for equal positions, sort trace indices increasing or decreasing
                  // depending on whether the axis is reversed or not... so stacked
                  // traces will generally keep their order even if one trace adds
                  // nothing to the stack.
                  Gt * (ye[0].traceIndex - Zt[0].traceIndex);
                });
                var _e, ce, ae, Se, ze, Ne, Ve;
                function Oe(Zt) {
                  var ye = Zt[0], Mt = Zt[Zt.length - 1];
                  if (ce = ye.pmin - ye.pos - ye.dp + ye.size, ae = Mt.pos + Mt.dp + Mt.size - ye.pmax, ce > 0.01) {
                    for (ze = Zt.length - 1; ze >= 0; ze--) Zt[ze].dp += ce;
                    _e = !1;
                  }
                  if (!(ae < 0.01)) {
                    if (ce < -0.01) {
                      for (ze = Zt.length - 1; ze >= 0; ze--) Zt[ze].dp -= ae;
                      _e = !1;
                    }
                    if (_e) {
                      var St = 0;
                      for (Se = 0; Se < Zt.length; Se++)
                        Ne = Zt[Se], Ne.pos + Ne.dp + Ne.size > ye.pmax && St++;
                      for (Se = Zt.length - 1; Se >= 0 && !(St <= 0); Se--)
                        Ne = Zt[Se], Ne.pos > ye.pmax - 1 && (Ne.del = !0, St--);
                      for (Se = 0; Se < Zt.length && !(St <= 0); Se++)
                        if (Ne = Zt[Se], Ne.pos < ye.pmin + 1)
                          for (Ne.del = !0, St--, ae = Ne.size * 2, ze = Zt.length - 1; ze >= 0; ze--) Zt[ze].dp -= ae;
                      for (Se = Zt.length - 1; Se >= 0 && !(St <= 0); Se--)
                        Ne = Zt[Se], Ne.pos + Ne.dp + Ne.size > ye.pmax && (Ne.del = !0, St--);
                    }
                  }
                }
                for (; !_e && Ct <= Jt; ) {
                  for (Ct++, _e = !0, Se = 0; Se < Qt.length - 1; ) {
                    var ur = Qt[Se], ie = Qt[Se + 1], $t = ur[ur.length - 1], jt = ie[0];
                    if (ce = $t.pos + $t.dp + $t.size - jt.pos - jt.dp + jt.size, ce > 0.01) {
                      for (ze = ie.length - 1; ze >= 0; ze--) ie[ze].dp += ce;
                      for (ur.push.apply(ur, ie), Qt.splice(Se + 1, 1), Ve = 0, ze = ur.length - 1; ze >= 0; ze--) Ve += ur[ze].dp;
                      for (ae = Ve / ur.length, ze = ur.length - 1; ze >= 0; ze--) ur[ze].dp -= ae;
                      _e = !1;
                    } else Se++;
                  }
                  Qt.forEach(Oe);
                }
                for (Se = Qt.length - 1; Se >= 0; Se--) {
                  var ee = Qt[Se];
                  for (ze = ee.length - 1; ze >= 0; ze--) {
                    var Bt = ee[ze], Xt = Bt.datum;
                    Xt.offset = Bt.dp, Xt.del = Bt.del;
                  }
                }
              }
              function F(X, ct) {
                var lt = 0, pt = X.offset;
                return ct && (pt *= -m, lt = X.offset * C), {
                  x: lt,
                  y: pt
                };
              }
              function G(X) {
                var ct = {
                  start: 1,
                  end: -1,
                  middle: 0
                }[X.anchor], lt = ct * (L + d), pt = lt + ct * (X.txwidth + d), wt = X.anchor === "middle";
                return wt && (lt -= X.tx2width / 2, pt += X.txwidth / 2 + d), {
                  alignShift: ct,
                  textShiftX: lt,
                  text2ShiftX: pt
                };
              }
              function q(X, ct, lt, pt) {
                var wt = function(Ct) {
                  return Ct * lt;
                }, Et = function(Ct) {
                  return Ct * pt;
                };
                X.each(function(Ct) {
                  var Gt = b.select(this);
                  if (Ct.del) return Gt.remove();
                  var Jt = Gt.select("text.nums"), Qt = Ct.anchor, Vt = Qt === "end" ? -1 : 1, zt = G(Ct), Rt = F(Ct, ct), Wt = Rt.x, kt = Rt.y, re = Qt === "middle";
                  Gt.select("path").attr("d", re ? (
                    // middle aligned: rect centered on data
                    "M-" + wt(Ct.bx / 2 + Ct.tx2width / 2) + "," + Et(kt - Ct.by / 2) + "h" + wt(Ct.bx) + "v" + Et(Ct.by) + "h-" + wt(Ct.bx) + "Z"
                  ) : (
                    // left or right aligned: side rect with arrow to data
                    "M0,0L" + wt(Vt * L + Wt) + "," + Et(L + kt) + "v" + Et(Ct.by / 2 - L) + "h" + wt(Vt * Ct.bx) + "v-" + Et(Ct.by) + "H" + wt(Vt * L + Wt) + "V" + Et(kt - L) + "Z"
                  ));
                  var ge = Wt + zt.textShiftX, _e = kt + Ct.ty0 - Ct.by / 2 + d, ce = Ct.textAlign || "auto";
                  ce !== "auto" && (ce === "left" && Qt !== "start" ? (Jt.attr("text-anchor", "start"), ge = re ? -Ct.bx / 2 - Ct.tx2width / 2 + d : -Ct.bx - d) : ce === "right" && Qt !== "end" && (Jt.attr("text-anchor", "end"), ge = re ? Ct.bx / 2 - Ct.tx2width / 2 - d : Ct.bx + d)), Jt.call(t.positionText, wt(ge), Et(_e)), Ct.tx2width && (Gt.select("text.name").call(t.positionText, wt(zt.text2ShiftX + zt.alignShift * d + Wt), Et(kt + Ct.ty0 - Ct.by / 2 + d)), Gt.select("rect").call(i.setRect, wt(zt.text2ShiftX + (zt.alignShift - 1) * Ct.tx2width / 2 + Wt), Et(kt - Ct.by / 2 - 1), wt(Ct.tx2width), Et(Ct.by + 2)));
                });
              }
              function rt(X, ct) {
                var lt = X.index, pt = X.trace || {}, wt = X.cd[0], Et = X.cd[lt] || {};
                function Ct(Rt) {
                  return Rt || P(Rt) && Rt === 0;
                }
                var Gt = Array.isArray(lt) ? function(Rt, Wt) {
                  var kt = s.castOption(wt, lt, Rt);
                  return Ct(kt) ? kt : s.extractOption({}, pt, "", Wt);
                } : function(Rt, Wt) {
                  return s.extractOption(Et, pt, Rt, Wt);
                };
                function Jt(Rt, Wt, kt) {
                  var re = Gt(Wt, kt);
                  Ct(re) && (X[Rt] = re);
                }
                if (Jt("hoverinfo", "hi", "hoverinfo"), Jt("bgcolor", "hbg", "hoverlabel.bgcolor"), Jt("borderColor", "hbc", "hoverlabel.bordercolor"), Jt("fontFamily", "htf", "hoverlabel.font.family"), Jt("fontSize", "hts", "hoverlabel.font.size"), Jt("fontColor", "htc", "hoverlabel.font.color"), Jt("fontWeight", "htw", "hoverlabel.font.weight"), Jt("fontStyle", "hty", "hoverlabel.font.style"), Jt("fontVariant", "htv", "hoverlabel.font.variant"), Jt("nameLength", "hnl", "hoverlabel.namelength"), Jt("textAlign", "hta", "hoverlabel.align"), X.posref = ct === "y" || ct === "closest" && pt.orientation === "h" ? X.xa._offset + (X.x0 + X.x1) / 2 : X.ya._offset + (X.y0 + X.y1) / 2, X.x0 = s.constrain(X.x0, 0, X.xa._length), X.x1 = s.constrain(X.x1, 0, X.xa._length), X.y0 = s.constrain(X.y0, 0, X.ya._length), X.y1 = s.constrain(X.y1, 0, X.ya._length), X.xLabelVal !== void 0 && (X.xLabel = "xLabel" in X ? X.xLabel : o.hoverLabelText(X.xa, X.xLabelVal, pt.xhoverformat), X.xVal = X.xa.c2d(X.xLabelVal)), X.yLabelVal !== void 0 && (X.yLabel = "yLabel" in X ? X.yLabel : o.hoverLabelText(X.ya, X.yLabelVal, pt.yhoverformat), X.yVal = X.ya.c2d(X.yLabelVal)), X.zLabelVal !== void 0 && X.zLabel === void 0 && (X.zLabel = String(X.zLabelVal)), !isNaN(X.xerr) && !(X.xa.type === "log" && X.xerr <= 0)) {
                  var Qt = o.tickText(X.xa, X.xa.c2l(X.xerr), "hover").text;
                  X.xerrneg !== void 0 ? X.xLabel += " +" + Qt + " / -" + o.tickText(X.xa, X.xa.c2l(X.xerrneg), "hover").text : X.xLabel += " ± " + Qt, ct === "x" && (X.distance += 1);
                }
                if (!isNaN(X.yerr) && !(X.ya.type === "log" && X.yerr <= 0)) {
                  var Vt = o.tickText(X.ya, X.ya.c2l(X.yerr), "hover").text;
                  X.yerrneg !== void 0 ? X.yLabel += " +" + Vt + " / -" + o.tickText(X.ya, X.ya.c2l(X.yerrneg), "hover").text : X.yLabel += " ± " + Vt, ct === "y" && (X.distance += 1);
                }
                var zt = X.hoverinfo || X.trace.hoverinfo;
                return zt && zt !== "all" && (zt = Array.isArray(zt) ? zt : zt.split("+"), zt.indexOf("x") === -1 && (X.xLabel = void 0), zt.indexOf("y") === -1 && (X.yLabel = void 0), zt.indexOf("z") === -1 && (X.zLabel = void 0), zt.indexOf("text") === -1 && (X.text = void 0), zt.indexOf("name") === -1 && (X.name = void 0)), X;
              }
              function st(X, ct, lt) {
                var pt = lt.container, wt = lt.fullLayout, Et = wt._size, Ct = lt.event, Gt = !!ct.hLinePoint, Jt = !!ct.vLinePoint, Qt, Vt;
                if (pt.selectAll(".spikeline").remove(), !!(Jt || Gt)) {
                  var zt = a.combine(wt.plot_bgcolor, wt.paper_bgcolor);
                  if (Gt) {
                    var Rt = ct.hLinePoint, Wt, kt;
                    Qt = Rt && Rt.xa, Vt = Rt && Rt.ya;
                    var re = Vt.spikesnap;
                    re === "cursor" ? (Wt = Ct.pointerX, kt = Ct.pointerY) : (Wt = Qt._offset + Rt.x, kt = Vt._offset + Rt.y);
                    var ge = n.readability(Rt.color, zt) < 1.5 ? a.contrast(zt) : Rt.color, _e = Vt.spikemode, ce = Vt.spikethickness, ae = Vt.spikecolor || ge, Se = o.getPxPosition(X, Vt), ze, Ne;
                    if (_e.indexOf("toaxis") !== -1 || _e.indexOf("across") !== -1) {
                      if (_e.indexOf("toaxis") !== -1 && (ze = Se, Ne = Wt), _e.indexOf("across") !== -1) {
                        var Ve = Vt._counterDomainMin, Oe = Vt._counterDomainMax;
                        Vt.anchor === "free" && (Ve = Math.min(Ve, Vt.position), Oe = Math.max(Oe, Vt.position)), ze = Et.l + Ve * Et.w, Ne = Et.l + Oe * Et.w;
                      }
                      pt.insert("line", ":first-child").attr({
                        x1: ze,
                        x2: Ne,
                        y1: kt,
                        y2: kt,
                        "stroke-width": ce,
                        stroke: ae,
                        "stroke-dasharray": i.dashStyle(Vt.spikedash, ce)
                      }).classed("spikeline", !0).classed("crisp", !0), pt.insert("line", ":first-child").attr({
                        x1: ze,
                        x2: Ne,
                        y1: kt,
                        y2: kt,
                        "stroke-width": ce + 2,
                        stroke: zt
                      }).classed("spikeline", !0).classed("crisp", !0);
                    }
                    _e.indexOf("marker") !== -1 && pt.insert("circle", ":first-child").attr({
                      cx: Se + (Vt.side !== "right" ? ce : -ce),
                      cy: kt,
                      r: ce,
                      fill: ae
                    }).classed("spikeline", !0);
                  }
                  if (Jt) {
                    var ur = ct.vLinePoint, ie, $t;
                    Qt = ur && ur.xa, Vt = ur && ur.ya;
                    var jt = Qt.spikesnap;
                    jt === "cursor" ? (ie = Ct.pointerX, $t = Ct.pointerY) : (ie = Qt._offset + ur.x, $t = Vt._offset + ur.y);
                    var ee = n.readability(ur.color, zt) < 1.5 ? a.contrast(zt) : ur.color, Bt = Qt.spikemode, Xt = Qt.spikethickness, Zt = Qt.spikecolor || ee, ye = o.getPxPosition(X, Qt), Mt, St;
                    if (Bt.indexOf("toaxis") !== -1 || Bt.indexOf("across") !== -1) {
                      if (Bt.indexOf("toaxis") !== -1 && (Mt = ye, St = $t), Bt.indexOf("across") !== -1) {
                        var Lt = Qt._counterDomainMin, te = Qt._counterDomainMax;
                        Qt.anchor === "free" && (Lt = Math.min(Lt, Qt.position), te = Math.max(te, Qt.position)), Mt = Et.t + (1 - te) * Et.h, St = Et.t + (1 - Lt) * Et.h;
                      }
                      pt.insert("line", ":first-child").attr({
                        x1: ie,
                        x2: ie,
                        y1: Mt,
                        y2: St,
                        "stroke-width": Xt,
                        stroke: Zt,
                        "stroke-dasharray": i.dashStyle(Qt.spikedash, Xt)
                      }).classed("spikeline", !0).classed("crisp", !0), pt.insert("line", ":first-child").attr({
                        x1: ie,
                        x2: ie,
                        y1: Mt,
                        y2: St,
                        "stroke-width": Xt + 2,
                        stroke: zt
                      }).classed("spikeline", !0).classed("crisp", !0);
                    }
                    Bt.indexOf("marker") !== -1 && pt.insert("circle", ":first-child").attr({
                      cx: ie,
                      cy: ye - (Qt.side !== "top" ? Xt : -Xt),
                      r: Xt,
                      fill: Zt
                    }).classed("spikeline", !0);
                  }
                }
              }
              function vt(X, ct, lt) {
                if (!lt || lt.length !== X._hoverdata.length) return !0;
                for (var pt = lt.length - 1; pt >= 0; pt--) {
                  var wt = lt[pt], Et = X._hoverdata[pt];
                  if (wt.curveNumber !== Et.curveNumber || String(wt.pointNumber) !== String(Et.pointNumber) || String(wt.pointNumbers) !== String(Et.pointNumbers))
                    return !0;
                }
                return !1;
              }
              function ht(X, ct) {
                return !0;
              }
              function et(X, ct) {
                return t.plainText(X || "", {
                  len: ct,
                  allowedTags: ["br", "sub", "sup", "b", "i", "em", "s", "u"]
                });
              }
              function Q(X, ct) {
                for (var lt = ct.charAt(0), pt = [], wt = [], Et = [], Ct = 0; Ct < X.length; Ct++) {
                  var Gt = X[Ct];
                  g.traceIs(Gt.trace, "bar-like") || g.traceIs(Gt.trace, "box-violin") ? Et.push(Gt) : Gt.trace[lt + "period"] ? wt.push(Gt) : pt.push(Gt);
                }
                return pt.concat(wt).concat(Et);
              }
              function j(X, ct, lt) {
                var pt = ct[X + "a"], wt = ct[X + "Val"], Et = ct.cd[0];
                if (pt.type === "category" || pt.type === "multicategory") wt = pt._categoriesMap[wt];
                else if (pt.type === "date") {
                  var Ct = ct.trace[X + "periodalignment"];
                  if (Ct) {
                    var Gt = ct.cd[ct.index], Jt = Gt[X + "Start"];
                    Jt === void 0 && (Jt = Gt[X]);
                    var Qt = Gt[X + "End"];
                    Qt === void 0 && (Qt = Gt[X]);
                    var Vt = Qt - Jt;
                    Ct === "end" ? wt += Vt : Ct === "middle" && (wt += Vt / 2);
                  }
                  wt = pt.d2c(wt);
                }
                return Et && Et.t && Et.t.posLetter === pt._id && (lt.boxmode === "group" || lt.violinmode === "group") && (wt += Et.t.dPos), wt;
              }
              function at(X) {
                return X.offsetTop + X.clientTop;
              }
              function ut(X) {
                return X.offsetLeft + X.clientLeft;
              }
              function nt(X, ct) {
                var lt = X._fullLayout, pt = ct.getBoundingClientRect(), wt = pt.left, Et = pt.top, Ct = wt + pt.width, Gt = Et + pt.height, Jt = s.apply3DTransform(lt._invTransform)(wt, Et), Qt = s.apply3DTransform(lt._invTransform)(Ct, Gt), Vt = Jt[0], zt = Jt[1], Rt = Qt[0], Wt = Qt[1];
                return {
                  x: Vt,
                  y: zt,
                  width: Rt - Vt,
                  height: Wt - zt,
                  top: Math.min(zt, Wt),
                  left: Math.min(Vt, Rt),
                  right: Math.max(Vt, Rt),
                  bottom: Math.max(zt, Wt)
                };
              }
            }
          ),
          /***/
          26430: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(78766), n = e(36040).isUnifiedHover;
              Y.exports = function(T, A, p, u) {
                u = u || {};
                var t = A.legend;
                function r(i) {
                  u.font[i] || (u.font[i] = t ? A.legend.font[i] : A.font[i]);
                }
                A && n(A.hovermode) && (u.font || (u.font = {}), r("size"), r("family"), r("color"), r("weight"), r("style"), r("variant"), t ? (u.bgcolor || (u.bgcolor = P.combine(A.legend.bgcolor, A.paper_bgcolor)), u.bordercolor || (u.bordercolor = A.legend.bordercolor)) : u.bgcolor || (u.bgcolor = A.paper_bgcolor)), p("hoverlabel.bgcolor", u.bgcolor), p("hoverlabel.bordercolor", u.bordercolor), p("hoverlabel.namelength", u.namelength), b.coerceFont(p, "hoverlabel.font", u.font), p("hoverlabel.align", u.align);
              };
            }
          ),
          /***/
          45265: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(6811);
              Y.exports = function(s, T) {
                function A(p, u) {
                  return T[p] !== void 0 ? T[p] : b.coerce(s, T, P, p, u);
                }
                return A("clickmode"), A("hoversubplots"), A("hovermode");
              };
            }
          ),
          /***/
          32141: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(34809), n = e(14751), s = e(36040), T = e(6811), A = e(38103);
              Y.exports = {
                moduleType: "component",
                name: "fx",
                constants: e(85988),
                schema: {
                  layout: T
                },
                attributes: e(70192),
                layoutAttributes: T,
                supplyLayoutGlobalDefaults: e(5358),
                supplyDefaults: e(3239),
                supplyLayoutDefaults: e(8412),
                calc: e(83552),
                getDistanceFunction: s.getDistanceFunction,
                getClosest: s.getClosest,
                inbox: s.inbox,
                quadrature: s.quadrature,
                appendArrayPointValue: s.appendArrayPointValue,
                castHoverOption: u,
                castHoverinfo: t,
                hover: A.hover,
                unhover: n.unhover,
                loneHover: A.loneHover,
                loneUnhover: p,
                click: e(94225)
              };
              function p(r) {
                var i = P.isD3Selection(r) ? r : b.select(r);
                i.selectAll("g.hovertext").remove(), i.selectAll(".spikeline").remove();
              }
              function u(r, i, a) {
                return P.castOption(r, i, "hoverlabel." + a);
              }
              function t(r, i, a) {
                function l(o) {
                  return P.coerceHoverinfo({
                    hoverinfo: o
                  }, {
                    _module: r._module
                  }, i);
                }
                return P.castOption(r, a, "hoverinfo", l);
              }
            }
          ),
          /***/
          6811: (
            /***/
            function(Y, K, e) {
              var b = e(85988), P = e(80337), n = P({
                editType: "none"
              });
              n.family.dflt = b.HOVERFONT, n.size.dflt = b.HOVERFONTSIZE, Y.exports = {
                clickmode: {
                  valType: "flaglist",
                  flags: ["event", "select"],
                  dflt: "event",
                  editType: "plot",
                  extras: ["none"]
                },
                dragmode: {
                  valType: "enumerated",
                  values: ["zoom", "pan", "select", "lasso", "drawclosedpath", "drawopenpath", "drawline", "drawrect", "drawcircle", "orbit", "turntable", !1],
                  dflt: "zoom",
                  editType: "modebar"
                },
                hovermode: {
                  valType: "enumerated",
                  values: ["x", "y", "closest", !1, "x unified", "y unified"],
                  dflt: "closest",
                  editType: "modebar"
                },
                hoversubplots: {
                  valType: "enumerated",
                  values: ["single", "overlaying", "axis"],
                  dflt: "overlaying",
                  editType: "none"
                },
                hoverdistance: {
                  valType: "integer",
                  min: -1,
                  dflt: 20,
                  editType: "none"
                },
                spikedistance: {
                  valType: "integer",
                  min: -1,
                  dflt: -1,
                  editType: "none"
                },
                hoverlabel: {
                  bgcolor: {
                    valType: "color",
                    editType: "none"
                  },
                  bordercolor: {
                    valType: "color",
                    editType: "none"
                  },
                  font: n,
                  grouptitlefont: P({
                    editType: "none"
                  }),
                  align: {
                    valType: "enumerated",
                    values: ["left", "right", "auto"],
                    dflt: "auto",
                    editType: "none"
                  },
                  namelength: {
                    valType: "integer",
                    min: -1,
                    dflt: 15,
                    editType: "none"
                  },
                  editType: "none"
                },
                selectdirection: {
                  valType: "enumerated",
                  values: ["h", "v", "d", "any"],
                  dflt: "any",
                  editType: "none"
                }
              };
            }
          ),
          /***/
          8412: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(6811), n = e(45265), s = e(26430);
              Y.exports = function(A, p) {
                function u(y, g) {
                  return b.coerce(A, p, P, y, g);
                }
                var t = n(A, p);
                t && (u("hoverdistance"), u("spikedistance"));
                var r = u("dragmode");
                r === "select" && u("selectdirection");
                var i = p._has("mapbox"), a = p._has("map"), l = p._has("geo"), o = p._basePlotModules.length;
                p.dragmode === "zoom" && ((i || a || l) && o === 1 || (i || a) && l && o === 2) && (p.dragmode = "pan"), s(A, p, u), b.coerceFont(u, "hoverlabel.grouptitlefont", p.hoverlabel.font);
              };
            }
          ),
          /***/
          5358: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(26430), n = e(6811);
              Y.exports = function(T, A) {
                function p(u, t) {
                  return b.coerce(T, A, n, u, t);
                }
                P(T, A, p);
              };
            }
          ),
          /***/
          83595: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(90694).counter, n = e(13792).u, s = e(54826).idRegex, T = e(78032), A = {
                rows: {
                  valType: "integer",
                  min: 1,
                  editType: "plot"
                },
                roworder: {
                  valType: "enumerated",
                  values: ["top to bottom", "bottom to top"],
                  dflt: "top to bottom",
                  editType: "plot"
                },
                columns: {
                  valType: "integer",
                  min: 1,
                  editType: "plot"
                },
                subplots: {
                  valType: "info_array",
                  freeLength: !0,
                  dimensions: 2,
                  items: {
                    valType: "enumerated",
                    values: [P("xy").toString(), ""],
                    editType: "plot"
                  },
                  editType: "plot"
                },
                xaxes: {
                  valType: "info_array",
                  freeLength: !0,
                  items: {
                    valType: "enumerated",
                    values: [s.x.toString(), ""],
                    editType: "plot"
                  },
                  editType: "plot"
                },
                yaxes: {
                  valType: "info_array",
                  freeLength: !0,
                  items: {
                    valType: "enumerated",
                    values: [s.y.toString(), ""],
                    editType: "plot"
                  },
                  editType: "plot"
                },
                pattern: {
                  valType: "enumerated",
                  values: ["independent", "coupled"],
                  dflt: "coupled",
                  editType: "plot"
                },
                xgap: {
                  valType: "number",
                  min: 0,
                  max: 1,
                  editType: "plot"
                },
                ygap: {
                  valType: "number",
                  min: 0,
                  max: 1,
                  editType: "plot"
                },
                domain: n({
                  name: "grid",
                  editType: "plot",
                  noGridCell: !0
                }, {}),
                xside: {
                  valType: "enumerated",
                  values: ["bottom", "bottom plot", "top plot", "top"],
                  dflt: "bottom plot",
                  editType: "plot"
                },
                yside: {
                  valType: "enumerated",
                  values: ["left", "left plot", "right plot", "right"],
                  dflt: "left plot",
                  editType: "plot"
                },
                editType: "plot"
              };
              function p(a, l, o) {
                var y = l[o + "axes"], g = Object.keys((a._splomAxes || {})[o] || {});
                if (Array.isArray(y)) return y;
                if (g.length) return g;
              }
              function u(a, l) {
                var o = a.grid || {}, y = p(l, o, "x"), g = p(l, o, "y");
                if (!a.grid && !y && !g) return;
                var x = Array.isArray(o.subplots) && Array.isArray(o.subplots[0]), c = Array.isArray(y), v = Array.isArray(g), f = c && y !== o.xaxes && v && g !== o.yaxes, _, S;
                x ? (_ = o.subplots.length, S = o.subplots[0].length) : (v && (_ = g.length), c && (S = y.length));
                var M = T.newContainer(l, "grid");
                function C(V, U) {
                  return b.coerce(o, M, A, V, U);
                }
                var m = C("rows", _), L = C("columns", S);
                if (!(m * L > 1)) {
                  delete l.grid;
                  return;
                }
                if (!x && !c && !v) {
                  var d = C("pattern") === "independent";
                  d && (x = !0);
                }
                M._hasSubplotGrid = x;
                var h = C("roworder"), E = h === "top to bottom", w = x ? 0.2 : 0.1, z = x ? 0.3 : 0.1, O, B;
                f && l._splomGridDflt && (O = l._splomGridDflt.xside, B = l._splomGridDflt.yside), M._domains = {
                  x: t("x", C, w, O, L),
                  y: t("y", C, z, B, m, E)
                };
              }
              function t(a, l, o, y, g, x) {
                var c = l(a + "gap", o), v = l("domain." + a);
                l(a + "side", y);
                for (var f = new Array(g), _ = v[0], S = (v[1] - _) / (g - c), M = S * (1 - c), C = 0; C < g; C++) {
                  var m = _ + S * C;
                  f[x ? g - 1 - C : C] = [m, m + M];
                }
                return f;
              }
              function r(a, l) {
                var o = l.grid;
                if (!(!o || !o._domains)) {
                  var y = a.grid || {}, g = l._subplots, x = o._hasSubplotGrid, c = o.rows, v = o.columns, f = o.pattern === "independent", _, S, M, C, m, L, d, h = o._axisMap = {};
                  if (x) {
                    var E = y.subplots || [];
                    L = o.subplots = new Array(c);
                    var w = 1;
                    for (_ = 0; _ < c; _++) {
                      var z = L[_] = new Array(v), O = E[_] || [];
                      for (S = 0; S < v; S++)
                        if (f ? (m = w === 1 ? "xy" : "x" + w + "y" + w, w++) : m = O[S], z[S] = "", g.cartesian.indexOf(m) !== -1) {
                          if (d = m.indexOf("y"), M = m.slice(0, d), C = m.slice(d), h[M] !== void 0 && h[M] !== S || h[C] !== void 0 && h[C] !== _)
                            continue;
                          z[S] = m, h[M] = S, h[C] = _;
                        }
                    }
                  } else {
                    var B = p(l, y, "x"), V = p(l, y, "y");
                    o.xaxes = i(B, g.xaxis, v, h, "x"), o.yaxes = i(V, g.yaxis, c, h, "y");
                  }
                  var U = o._anchors = {}, H = o.roworder === "top to bottom";
                  for (var F in h) {
                    var G = F.charAt(0), q = o[G + "side"], rt, st, vt;
                    if (q.length < 8)
                      U[F] = "free";
                    else if (G === "x") {
                      if (q.charAt(0) === "t" === H ? (rt = 0, st = 1, vt = c) : (rt = c - 1, st = -1, vt = -1), x) {
                        var ht = h[F];
                        for (_ = rt; _ !== vt; _ += st)
                          if (m = L[_][ht], !!m && (d = m.indexOf("y"), m.slice(0, d) === F)) {
                            U[F] = m.slice(d);
                            break;
                          }
                      } else
                        for (_ = rt; _ !== vt; _ += st)
                          if (C = o.yaxes[_], g.cartesian.indexOf(F + C) !== -1) {
                            U[F] = C;
                            break;
                          }
                    } else if (q.charAt(0) === "l" ? (rt = 0, st = 1, vt = v) : (rt = v - 1, st = -1, vt = -1), x) {
                      var et = h[F];
                      for (_ = rt; _ !== vt; _ += st)
                        if (m = L[et][_], !!m && (d = m.indexOf("y"), m.slice(d) === F)) {
                          U[F] = m.slice(0, d);
                          break;
                        }
                    } else
                      for (_ = rt; _ !== vt; _ += st)
                        if (M = o.xaxes[_], g.cartesian.indexOf(M + F) !== -1) {
                          U[F] = M;
                          break;
                        }
                  }
                }
              }
              function i(a, l, o, y, g) {
                var x = new Array(o), c;
                function v(f, _) {
                  l.indexOf(_) !== -1 && y[_] === void 0 ? (x[f] = _, y[_] = f) : x[f] = "";
                }
                if (Array.isArray(a))
                  for (c = 0; c < o; c++)
                    v(c, a[c]);
                else
                  for (v(0, g), c = 1; c < o; c++)
                    v(c, g + (c + 1));
                return x;
              }
              Y.exports = {
                moduleType: "component",
                name: "grid",
                schema: {
                  layout: {
                    grid: A
                  }
                },
                layoutAttributes: A,
                sizeDefaults: u,
                contentDefaults: r
              };
            }
          ),
          /***/
          37260: (
            /***/
            function(Y, K, e) {
              var b = e(54826), P = e(78032).templatedArray;
              e(35081), Y.exports = P("image", {
                visible: {
                  valType: "boolean",
                  dflt: !0,
                  editType: "arraydraw"
                },
                source: {
                  valType: "string",
                  editType: "arraydraw"
                },
                layer: {
                  valType: "enumerated",
                  values: ["below", "above"],
                  dflt: "above",
                  editType: "arraydraw"
                },
                sizex: {
                  valType: "number",
                  dflt: 0,
                  editType: "arraydraw"
                },
                sizey: {
                  valType: "number",
                  dflt: 0,
                  editType: "arraydraw"
                },
                sizing: {
                  valType: "enumerated",
                  values: ["fill", "contain", "stretch"],
                  dflt: "contain",
                  editType: "arraydraw"
                },
                opacity: {
                  valType: "number",
                  min: 0,
                  max: 1,
                  dflt: 1,
                  editType: "arraydraw"
                },
                x: {
                  valType: "any",
                  dflt: 0,
                  editType: "arraydraw"
                },
                y: {
                  valType: "any",
                  dflt: 0,
                  editType: "arraydraw"
                },
                xanchor: {
                  valType: "enumerated",
                  values: ["left", "center", "right"],
                  dflt: "left",
                  editType: "arraydraw"
                },
                yanchor: {
                  valType: "enumerated",
                  values: ["top", "middle", "bottom"],
                  dflt: "top",
                  editType: "arraydraw"
                },
                xref: {
                  valType: "enumerated",
                  values: ["paper", b.idRegex.x.toString()],
                  dflt: "paper",
                  editType: "arraydraw"
                },
                yref: {
                  valType: "enumerated",
                  values: ["paper", b.idRegex.y.toString()],
                  dflt: "paper",
                  editType: "arraydraw"
                },
                editType: "arraydraw"
              });
            }
          ),
          /***/
          89443: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(8083);
              Y.exports = function(s, T, A, p) {
                T = T || {};
                var u = A === "log" && T.type === "linear", t = A === "linear" && T.type === "log";
                if (u || t) {
                  for (var r = s._fullLayout.images, i = T._id.charAt(0), a, l, o = 0; o < r.length; o++)
                    if (a = r[o], l = "images[" + o + "].", a[i + "ref"] === T._id) {
                      var y = a[i], g = a["size" + i], x = null, c = null;
                      if (u) {
                        x = P(y, T.range);
                        var v = g / Math.pow(10, x) / 2;
                        c = 2 * Math.log(v + Math.sqrt(1 + v * v)) / Math.LN10;
                      } else
                        x = Math.pow(10, y), c = x * (Math.pow(10, g / 2) - Math.pow(10, -g / 2));
                      b(x) ? b(c) || (c = null) : (x = null, c = null), p(l + i, x), p(l + "size" + i, c);
                    }
                }
              };
            }
          ),
          /***/
          507: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(29714), n = e(59008), s = e(37260), T = "images";
              Y.exports = function(u, t) {
                var r = {
                  name: T,
                  handleItemDefaults: A
                };
                n(u, t, r);
              };
              function A(p, u, t) {
                function r(v, f) {
                  return b.coerce(p, u, s, v, f);
                }
                var i = r("source"), a = r("visible", !!i);
                if (!a) return u;
                r("layer"), r("xanchor"), r("yanchor"), r("sizex"), r("sizey"), r("sizing"), r("opacity");
                for (var l = {
                  _fullLayout: t
                }, o = ["x", "y"], y = 0; y < 2; y++) {
                  var g = o[y], x = P.coerceRef(p, u, l, g, "paper", void 0);
                  if (x !== "paper") {
                    var c = P.getFromId(l, x);
                    c._imgIndices.push(u._index);
                  }
                  P.coercePosition(u, l, r, x, g, 0);
                }
                return u;
              }
            }
          ),
          /***/
          32211: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(62203), n = e(29714), s = e(5975), T = e(62972);
              Y.exports = function(p) {
                var u = p._fullLayout, t = [], r = {}, i = [], a, l;
                for (l = 0; l < u.images.length; l++) {
                  var o = u.images[l];
                  if (o.visible)
                    if (o.layer === "below" && o.xref !== "paper" && o.yref !== "paper") {
                      a = s.ref2id(o.xref) + s.ref2id(o.yref);
                      var y = u._plots[a];
                      if (!y) {
                        i.push(o);
                        continue;
                      }
                      y.mainplot && (a = y.mainplot.id), r[a] || (r[a] = []), r[a].push(o);
                    } else o.layer === "above" ? t.push(o) : i.push(o);
                }
                var g = {
                  x: {
                    left: {
                      sizing: "xMin",
                      offset: 0
                    },
                    center: {
                      sizing: "xMid",
                      offset: -1 / 2
                    },
                    right: {
                      sizing: "xMax",
                      offset: -1
                    }
                  },
                  y: {
                    top: {
                      sizing: "YMin",
                      offset: 0
                    },
                    middle: {
                      sizing: "YMid",
                      offset: -1 / 2
                    },
                    bottom: {
                      sizing: "YMax",
                      offset: -1
                    }
                  }
                };
                function x(C) {
                  var m = b.select(this);
                  if (this._imgSrc !== C.source)
                    if (m.attr("xmlns", T.svg), C.source && C.source.slice(0, 5) === "data:")
                      m.attr("xlink:href", C.source), this._imgSrc = C.source;
                    else {
                      var L = new Promise((function(d) {
                        var h = new Image();
                        this.img = h, h.setAttribute("crossOrigin", "anonymous"), h.onerror = E, h.onload = function() {
                          var w = document.createElement("canvas");
                          w.width = this.width, w.height = this.height;
                          var z = w.getContext("2d", {
                            willReadFrequently: !0
                          });
                          z.drawImage(this, 0, 0);
                          var O = w.toDataURL("image/png");
                          m.attr("xlink:href", O), d();
                        }, m.on("error", E), h.src = C.source, this._imgSrc = C.source;
                        function E() {
                          m.remove(), d();
                        }
                      }).bind(this));
                      p._promises.push(L);
                    }
                }
                function c(C) {
                  var m = b.select(this), L = n.getFromId(p, C.xref), d = n.getFromId(p, C.yref), h = n.getRefType(C.xref) === "domain", E = n.getRefType(C.yref) === "domain", w = u._size, z, O;
                  L !== void 0 ? z = typeof C.xref == "string" && h ? L._length * C.sizex : Math.abs(L.l2p(C.sizex) - L.l2p(0)) : z = C.sizex * w.w, d !== void 0 ? O = typeof C.yref == "string" && E ? d._length * C.sizey : Math.abs(d.l2p(C.sizey) - d.l2p(0)) : O = C.sizey * w.h;
                  var B = z * g.x[C.xanchor].offset, V = O * g.y[C.yanchor].offset, U = g.x[C.xanchor].sizing + g.y[C.yanchor].sizing, H, F;
                  switch (L !== void 0 ? H = typeof C.xref == "string" && h ? L._length * C.x + L._offset : L.r2p(C.x) + L._offset : H = C.x * w.w + w.l, H += B, d !== void 0 ? F = typeof C.yref == "string" && E ? (
                    // consistent with "paper" yref value, where positive values
                    // move up the page
                    d._length * (1 - C.y) + d._offset
                  ) : d.r2p(C.y) + d._offset : F = w.h - C.y * w.h + w.t, F += V, C.sizing) {
                    case "fill":
                      U += " slice";
                      break;
                    case "stretch":
                      U = "none";
                      break;
                  }
                  m.attr({
                    x: H,
                    y: F,
                    width: z,
                    height: O,
                    preserveAspectRatio: U,
                    opacity: C.opacity
                  });
                  var G = L && n.getRefType(C.xref) !== "domain" ? L._id : "", q = d && n.getRefType(C.yref) !== "domain" ? d._id : "", rt = G + q;
                  P.setClipUrl(m, rt ? "clip" + u._uid + rt : null, p);
                }
                var v = u._imageLowerLayer.selectAll("image").data(i), f = u._imageUpperLayer.selectAll("image").data(t);
                v.enter().append("image"), f.enter().append("image"), v.exit().remove(), f.exit().remove(), v.each(function(C) {
                  x.bind(this)(C), c.bind(this)(C);
                }), f.each(function(C) {
                  x.bind(this)(C), c.bind(this)(C);
                });
                var _ = Object.keys(u._plots);
                for (l = 0; l < _.length; l++) {
                  a = _[l];
                  var S = u._plots[a];
                  if (S.imagelayer) {
                    var M = S.imagelayer.selectAll("image").data(r[a] || []);
                    M.enter().append("image"), M.exit().remove(), M.each(function(C) {
                      x.bind(this)(C), c.bind(this)(C);
                    });
                  }
                }
              };
            }
          ),
          /***/
          15553: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                moduleType: "component",
                name: "images",
                layoutAttributes: e(37260),
                supplyLayoutDefaults: e(507),
                includeBasePlot: e(20706)("images"),
                draw: e(32211),
                convertCoords: e(89443)
              };
            }
          ),
          /***/
          86405: (
            /***/
            function(Y, K, e) {
              var b = e(80337), P = e(10229);
              Y.exports = {
                // not really a 'subplot' attribute container,
                // but this is the flag we use to denote attributes that
                // support yaxis, yaxis2, yaxis3, ... counters
                _isSubplotObj: !0,
                visible: {
                  valType: "boolean",
                  dflt: !0,
                  editType: "legend"
                },
                bgcolor: {
                  valType: "color",
                  editType: "legend"
                },
                bordercolor: {
                  valType: "color",
                  dflt: P.defaultLine,
                  editType: "legend"
                },
                borderwidth: {
                  valType: "number",
                  min: 0,
                  dflt: 0,
                  editType: "legend"
                },
                font: b({
                  editType: "legend"
                }),
                grouptitlefont: b({
                  editType: "legend"
                }),
                orientation: {
                  valType: "enumerated",
                  values: ["v", "h"],
                  dflt: "v",
                  editType: "legend"
                },
                traceorder: {
                  valType: "flaglist",
                  flags: ["reversed", "grouped"],
                  extras: ["normal"],
                  editType: "legend"
                },
                tracegroupgap: {
                  valType: "number",
                  min: 0,
                  dflt: 10,
                  editType: "legend"
                },
                entrywidth: {
                  valType: "number",
                  min: 0,
                  editType: "legend"
                },
                entrywidthmode: {
                  valType: "enumerated",
                  values: ["fraction", "pixels"],
                  dflt: "pixels",
                  editType: "legend"
                },
                indentation: {
                  valType: "number",
                  min: -15,
                  dflt: 0,
                  editType: "legend"
                },
                itemsizing: {
                  valType: "enumerated",
                  values: ["trace", "constant"],
                  dflt: "trace",
                  editType: "legend"
                },
                itemwidth: {
                  valType: "number",
                  min: 30,
                  dflt: 30,
                  editType: "legend"
                },
                itemclick: {
                  valType: "enumerated",
                  values: ["toggle", "toggleothers", !1],
                  dflt: "toggle",
                  editType: "legend"
                },
                itemdoubleclick: {
                  valType: "enumerated",
                  values: ["toggle", "toggleothers", !1],
                  dflt: "toggleothers",
                  editType: "legend"
                },
                groupclick: {
                  valType: "enumerated",
                  values: ["toggleitem", "togglegroup"],
                  dflt: "togglegroup",
                  editType: "legend"
                },
                x: {
                  valType: "number",
                  editType: "legend"
                },
                xref: {
                  valType: "enumerated",
                  dflt: "paper",
                  values: ["container", "paper"],
                  editType: "layoutstyle"
                },
                xanchor: {
                  valType: "enumerated",
                  values: ["auto", "left", "center", "right"],
                  dflt: "left",
                  editType: "legend"
                },
                y: {
                  valType: "number",
                  editType: "legend"
                },
                yref: {
                  valType: "enumerated",
                  dflt: "paper",
                  values: ["container", "paper"],
                  editType: "layoutstyle"
                },
                yanchor: {
                  valType: "enumerated",
                  values: ["auto", "top", "middle", "bottom"],
                  editType: "legend"
                },
                uirevision: {
                  valType: "any",
                  editType: "none"
                },
                valign: {
                  valType: "enumerated",
                  values: ["top", "middle", "bottom"],
                  dflt: "middle",
                  editType: "legend"
                },
                title: {
                  text: {
                    valType: "string",
                    dflt: "",
                    editType: "legend"
                  },
                  font: b({
                    editType: "legend"
                  }),
                  side: {
                    valType: "enumerated",
                    values: ["top", "left", "top left", "top center", "top right"],
                    editType: "legend"
                  },
                  editType: "legend"
                },
                editType: "legend"
              };
            }
          ),
          /***/
          72783: (
            /***/
            function(Y) {
              Y.exports = {
                scrollBarWidth: 6,
                scrollBarMinHeight: 20,
                scrollBarColor: "#808BA4",
                scrollBarMargin: 4,
                scrollBarEnterAttrs: {
                  rx: 20,
                  ry: 3,
                  width: 0,
                  height: 0
                },
                // number of px between legend title and (left) side of legend (always in x direction and from inner border)
                titlePad: 2,
                // number of px between each legend item (x and/or y direction)
                itemGap: 5
              };
            }
          ),
          /***/
          73970: (
            /***/
            function(Y, K, e) {
              var b = e(33626), P = e(34809), n = e(78032), s = e(9829), T = e(86405), A = e(6704), p = e(57599);
              function u(t, r, i, a) {
                var l = r[t] || {}, o = n.newContainer(i, t);
                function y(vt, ht) {
                  return P.coerce(l, o, T, vt, ht);
                }
                var g = P.coerceFont(y, "font", i.font);
                y("bgcolor", i.paper_bgcolor), y("bordercolor");
                var x = y("visible");
                if (x) {
                  for (var c, v = function(vt, ht) {
                    var et = c._input, Q = c;
                    return P.coerce(et, Q, s, vt, ht);
                  }, f = i.font || {}, _ = P.coerceFont(y, "grouptitlefont", f, {
                    overrideDflt: {
                      size: Math.round(f.size * 1.1)
                    }
                  }), S = 0, M = !1, C = "normal", m = (i.shapes || []).filter(function(vt) {
                    return vt.showlegend;
                  }), L = a.concat(m).filter(function(vt) {
                    return t === (vt.legend || "legend");
                  }), d = 0; d < L.length; d++)
                    if (c = L[d], !!c.visible) {
                      var h = c._isShape;
                      (c.showlegend || c._dfltShowLegend && !(c._module && c._module.attributes && c._module.attributes.showlegend && c._module.attributes.showlegend.dflt === !1)) && (S++, c.showlegend && (M = !0, (!h && b.traceIs(c, "pie-like") || c._input.showlegend === !0) && S++), P.coerceFont(v, "legendgrouptitle.font", _)), (!h && b.traceIs(c, "bar") && i.barmode === "stack" || ["tonextx", "tonexty"].indexOf(c.fill) !== -1) && (C = p.isGrouped({
                        traceorder: C
                      }) ? "grouped+reversed" : "reversed"), c.legendgroup !== void 0 && c.legendgroup !== "" && (C = p.isReversed({
                        traceorder: C
                      }) ? "reversed+grouped" : "grouped");
                    }
                  var E = P.coerce(r, i, A, "showlegend", M && S > (t === "legend" ? 1 : 0));
                  if (E === !1 && (i[t] = void 0), !(E === !1 && !l.uirevision) && (y("uirevision", i.uirevision), E !== !1)) {
                    y("borderwidth");
                    var w = y("orientation"), z = y("yref"), O = y("xref"), B = w === "h", V = z === "paper", U = O === "paper", H, F, G, q = "left";
                    B ? (H = 0, b.getComponentMethod("rangeslider", "isVisible")(r.xaxis) ? V ? (F = 1.1, G = "bottom") : (F = 1, G = "top") : V ? (F = -0.1, G = "top") : (F = 0, G = "bottom")) : (F = 1, G = "auto", U ? H = 1.02 : (H = 1, q = "right")), P.coerce(l, o, {
                      x: {
                        valType: "number",
                        editType: "legend",
                        min: U ? -2 : 0,
                        max: U ? 3 : 1,
                        dflt: H
                      }
                    }, "x"), P.coerce(l, o, {
                      y: {
                        valType: "number",
                        editType: "legend",
                        min: V ? -2 : 0,
                        max: V ? 3 : 1,
                        dflt: F
                      }
                    }, "y"), y("traceorder", C), p.isGrouped(i[t]) && y("tracegroupgap"), y("entrywidth"), y("entrywidthmode"), y("indentation"), y("itemsizing"), y("itemwidth"), y("itemclick"), y("itemdoubleclick"), y("groupclick"), y("xanchor", q), y("yanchor", G), y("valign"), P.noneOrAll(l, o, ["x", "y"]);
                    var rt = y("title.text");
                    if (rt) {
                      y("title.side", B ? "left" : "top");
                      var st = P.extendFlat({}, g, {
                        size: P.bigFont(g.size)
                      });
                      P.coerceFont(y, "title.font", st);
                    }
                  }
                }
              }
              Y.exports = function(r, i, a) {
                var l, o = a.slice(), y = i.shapes;
                if (y)
                  for (l = 0; l < y.length; l++) {
                    var g = y[l];
                    if (g.showlegend) {
                      var x = {
                        _input: g._input,
                        visible: g.visible,
                        showlegend: g.showlegend,
                        legend: g.legend
                      };
                      o.push(x);
                    }
                  }
                var c = ["legend"];
                for (l = 0; l < o.length; l++)
                  P.pushUnique(c, o[l].legend);
                for (i._legends = [], l = 0; l < c.length; l++) {
                  var v = c[l];
                  u(v, r, i, o), i[v] && i[v].visible && (i[v]._id = v), i._legends.push(v);
                }
              };
            }
          ),
          /***/
          6134: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(34809), n = e(44122), s = e(33626), T = e(68596), A = e(14751), p = e(62203), u = e(78766), t = e(30635), r = e(22165), i = e(72783), a = e(4530), l = a.LINE_SPACING, o = a.FROM_TL, y = a.FROM_BR, g = e(851), x = e(14375), c = e(57599), v = 1, f = /^legend[0-9]*$/;
              Y.exports = function(F, G) {
                if (G)
                  S(F, G);
                else {
                  var q = F._fullLayout, rt = q._legends, st = q._infolayer.selectAll('[class^="legend"]');
                  st.each(function() {
                    var Q = b.select(this), j = Q.attr("class"), at = j.split(" ")[0];
                    at.match(f) && rt.indexOf(at) === -1 && Q.remove();
                  });
                  for (var vt = 0; vt < rt.length; vt++) {
                    var ht = rt[vt], et = F._fullLayout[ht];
                    S(F, et);
                  }
                }
              };
              function _(H, F, G) {
                if (!(F.title.side !== "top center" && F.title.side !== "top right")) {
                  var q = F.title.font, rt = q.size * l, st = 0, vt = H.node(), ht = p.bBox(vt).width;
                  F.title.side === "top center" ? st = 0.5 * (F._width - 2 * G - 2 * i.titlePad - ht) : F.title.side === "top right" && (st = F._width - 2 * G - 2 * i.titlePad - ht), t.positionText(H, G + i.titlePad + st, G + rt);
                }
              }
              function S(H, F) {
                var G = F || {}, q = H._fullLayout, rt = U(G), st, vt, ht = G._inHover;
                if (ht ? (vt = G.layer, st = "hover") : (vt = q._infolayer, st = rt), !!vt) {
                  st += q._uid, H._legendMouseDownTime || (H._legendMouseDownTime = 0);
                  var et;
                  if (ht) {
                    if (!G.entries) return;
                    et = g(G.entries, G);
                  } else {
                    for (var Q = (H.calcdata || []).slice(), j = q.shapes, at = 0; at < j.length; at++) {
                      var ut = j[at];
                      if (ut.showlegend) {
                        var nt = {
                          _isShape: !0,
                          _fullInput: ut,
                          index: ut._index,
                          name: ut.name || ut.label.text || "shape " + ut._index,
                          legend: ut.legend,
                          legendgroup: ut.legendgroup,
                          legendgrouptitle: ut.legendgrouptitle,
                          legendrank: ut.legendrank,
                          legendwidth: ut.legendwidth,
                          showlegend: ut.showlegend,
                          visible: ut.visible,
                          opacity: ut.opacity,
                          mode: ut.type === "line" ? "lines" : "markers",
                          line: ut.line,
                          marker: {
                            line: ut.line,
                            color: ut.fillcolor,
                            size: 12,
                            symbol: ut.type === "rect" ? "square" : ut.type === "circle" ? "circle" : (
                              // case of path
                              "hexagon2"
                            )
                          }
                        };
                        Q.push([{
                          trace: nt
                        }]);
                      }
                    }
                    et = q.showlegend && g(Q, G, q._legends.length > 1);
                  }
                  var X = q.hiddenlabels || [];
                  if (!ht && (!q.showlegend || !et.length))
                    return vt.selectAll("." + rt).remove(), q._topdefs.select("#" + st).remove(), n.autoMargin(H, rt);
                  var ct = P.ensureSingle(vt, "g", rt, function(Vt) {
                    ht || Vt.attr("pointer-events", "all");
                  }), lt = P.ensureSingleById(q._topdefs, "clipPath", st, function(Vt) {
                    Vt.append("rect");
                  }), pt = P.ensureSingle(ct, "rect", "bg", function(Vt) {
                    Vt.attr("shape-rendering", "crispEdges");
                  });
                  pt.call(u.stroke, G.bordercolor).call(u.fill, G.bgcolor).style("stroke-width", G.borderwidth + "px");
                  var wt = P.ensureSingle(ct, "g", "scrollbox"), Et = G.title;
                  G._titleWidth = 0, G._titleHeight = 0;
                  var Ct;
                  Et.text ? (Ct = P.ensureSingle(wt, "text", rt + "titletext"), Ct.attr("text-anchor", "start").call(p.font, Et.font).text(Et.text), h(Ct, wt, H, G, v)) : wt.selectAll("." + rt + "titletext").remove();
                  var Gt = P.ensureSingle(ct, "rect", "scrollbar", function(Vt) {
                    Vt.attr(i.scrollBarEnterAttrs).call(u.fill, i.scrollBarColor);
                  }), Jt = wt.selectAll("g.groups").data(et);
                  Jt.enter().append("g").attr("class", "groups"), Jt.exit().remove();
                  var Qt = Jt.selectAll("g.traces").data(P.identity);
                  Qt.enter().append("g").attr("class", "traces"), Qt.exit().remove(), Qt.style("opacity", function(Vt) {
                    var zt = Vt[0].trace;
                    return s.traceIs(zt, "pie-like") ? X.indexOf(Vt[0].label) !== -1 ? 0.5 : 1 : zt.visible === "legendonly" ? 0.5 : 1;
                  }).each(function() {
                    b.select(this).call(m, H, G);
                  }).call(x, H, G).each(function() {
                    ht || b.select(this).call(d, H, rt);
                  }), P.syncOrAsync([n.previousPromises, function() {
                    return z(H, Jt, Qt, G);
                  }, function() {
                    var Vt = q._size, zt = G.borderwidth, Rt = G.xref === "paper", Wt = G.yref === "paper";
                    if (Et.text && _(Ct, G, zt), !ht) {
                      var kt, re;
                      Rt ? kt = Vt.l + Vt.w * G.x - o[B(G)] * G._width : kt = q.width * G.x - o[B(G)] * G._width, Wt ? re = Vt.t + Vt.h * (1 - G.y) - o[V(G)] * G._effHeight : re = q.height * (1 - G.y) - o[V(G)] * G._effHeight;
                      var ge = O(H, rt, kt, re);
                      if (ge) return;
                      if (q.margin.autoexpand) {
                        var _e = kt, ce = re;
                        kt = Rt ? P.constrain(kt, 0, q.width - G._width) : _e, re = Wt ? P.constrain(re, 0, q.height - G._effHeight) : ce, kt !== _e && P.log("Constrain " + rt + ".x to make legend fit inside graph"), re !== ce && P.log("Constrain " + rt + ".y to make legend fit inside graph");
                      }
                      p.setTranslate(ct, kt, re);
                    }
                    if (Gt.on(".drag", null), ct.on("wheel", null), ht || G._height <= G._maxHeight || H._context.staticPlot) {
                      var ae = G._effHeight;
                      ht && (ae = G._height), pt.attr({
                        width: G._width - zt,
                        height: ae - zt,
                        x: zt / 2,
                        y: zt / 2
                      }), p.setTranslate(wt, 0, 0), lt.select("rect").attr({
                        width: G._width - 2 * zt,
                        height: ae - 2 * zt,
                        x: zt,
                        y: zt
                      }), p.setClipUrl(wt, st, H), p.setRect(Gt, 0, 0, 0, 0), delete G._scrollY;
                    } else {
                      var Se = Math.max(i.scrollBarMinHeight, G._effHeight * G._effHeight / G._height), ze = G._effHeight - Se - 2 * i.scrollBarMargin, Ne = G._height - G._effHeight, Ve = ze / Ne, Oe = Math.min(G._scrollY || 0, Ne);
                      pt.attr({
                        width: G._width - 2 * zt + i.scrollBarWidth + i.scrollBarMargin,
                        height: G._effHeight - zt,
                        x: zt / 2,
                        y: zt / 2
                      }), lt.select("rect").attr({
                        width: G._width - 2 * zt + i.scrollBarWidth + i.scrollBarMargin,
                        height: G._effHeight - 2 * zt,
                        x: zt,
                        y: zt + Oe
                      }), p.setClipUrl(wt, st, H), Zt(Oe, Se, Ve), ct.on("wheel", function() {
                        Oe = P.constrain(G._scrollY + b.event.deltaY / ze * Ne, 0, Ne), Zt(Oe, Se, Ve), Oe !== 0 && Oe !== Ne && b.event.preventDefault();
                      });
                      var ur, ie, $t, jt = function(te, fe, Me) {
                        var ir = (Me - fe) / Ve + te;
                        return P.constrain(ir, 0, Ne);
                      }, ee = function(te, fe, Me) {
                        var ir = (fe - Me) / Ve + te;
                        return P.constrain(ir, 0, Ne);
                      }, Bt = b.behavior.drag().on("dragstart", function() {
                        var te = b.event.sourceEvent;
                        te.type === "touchstart" ? ur = te.changedTouches[0].clientY : ur = te.clientY, $t = Oe;
                      }).on("drag", function() {
                        var te = b.event.sourceEvent;
                        te.buttons === 2 || te.ctrlKey || (te.type === "touchmove" ? ie = te.changedTouches[0].clientY : ie = te.clientY, Oe = jt($t, ur, ie), Zt(Oe, Se, Ve));
                      });
                      Gt.call(Bt);
                      var Xt = b.behavior.drag().on("dragstart", function() {
                        var te = b.event.sourceEvent;
                        te.type === "touchstart" && (ur = te.changedTouches[0].clientY, $t = Oe);
                      }).on("drag", function() {
                        var te = b.event.sourceEvent;
                        te.type === "touchmove" && (ie = te.changedTouches[0].clientY, Oe = ee($t, ur, ie), Zt(Oe, Se, Ve));
                      });
                      wt.call(Xt);
                    }
                    function Zt(te, fe, Me) {
                      G._scrollY = H._fullLayout[rt]._scrollY = te, p.setTranslate(wt, 0, -te), p.setRect(Gt, G._width, i.scrollBarMargin + te * Me, i.scrollBarWidth, fe), lt.select("rect").attr("y", zt + te);
                    }
                    if (H._context.edits.legendPosition) {
                      var ye, Mt, St, Lt;
                      ct.classed("cursor-move", !0), A.init({
                        element: ct.node(),
                        gd: H,
                        prepFn: function(te) {
                          if (te.target !== Gt.node()) {
                            var fe = p.getTranslate(ct);
                            St = fe.x, Lt = fe.y;
                          }
                        },
                        moveFn: function(te, fe) {
                          if (St !== void 0 && Lt !== void 0) {
                            var Me = St + te, ir = Lt + fe;
                            p.setTranslate(ct, Me, ir), ye = A.align(Me, G._width, Vt.l, Vt.l + Vt.w, G.xanchor), Mt = A.align(ir + G._height, -G._height, Vt.t + Vt.h, Vt.t, G.yanchor);
                          }
                        },
                        doneFn: function() {
                          if (ye !== void 0 && Mt !== void 0) {
                            var te = {};
                            te[rt + ".x"] = ye, te[rt + ".y"] = Mt, s.call("_guiRelayout", H, te);
                          }
                        },
                        clickFn: function(te, fe) {
                          var Me = vt.selectAll("g.traces").filter(function() {
                            var ir = this.getBoundingClientRect();
                            return fe.clientX >= ir.left && fe.clientX <= ir.right && fe.clientY >= ir.top && fe.clientY <= ir.bottom;
                          });
                          Me.size() > 0 && C(H, ct, Me, te, fe);
                        }
                      });
                    }
                  }], H);
                }
              }
              function M(H, F, G) {
                var q = H[0], rt = q.width, st = F.entrywidthmode, vt = q.trace.legendwidth || F.entrywidth;
                return st === "fraction" ? F._maxWidth * vt : G + (vt || rt);
              }
              function C(H, F, G, q, rt) {
                var st = G.data()[0][0].trace, vt = {
                  event: rt,
                  node: G.node(),
                  curveNumber: st.index,
                  expandedIndex: st._expandedIndex,
                  data: H.data,
                  layout: H.layout,
                  frames: H._transitionData._frames,
                  config: H._context,
                  fullData: H._fullData,
                  fullLayout: H._fullLayout
                };
                st._group && (vt.group = st._group), s.traceIs(st, "pie-like") && (vt.label = G.datum()[0].label);
                var ht = T.triggerHandler(H, "plotly_legendclick", vt);
                if (q === 1) {
                  if (ht === !1) return;
                  F._clickTimeout = setTimeout(function() {
                    H._fullLayout && r(G, H, q);
                  }, H._context.doubleClickDelay);
                } else if (q === 2) {
                  F._clickTimeout && clearTimeout(F._clickTimeout), H._legendMouseDownTime = 0;
                  var et = T.triggerHandler(H, "plotly_legenddoubleclick", vt);
                  et !== !1 && ht !== !1 && r(G, H, q);
                }
              }
              function m(H, F, G) {
                var q = U(G), rt = H.data()[0][0], st = rt.trace, vt = s.traceIs(st, "pie-like"), ht = !G._inHover && F._context.edits.legendText && !vt, et = G._maxNameLength, Q, j;
                rt.groupTitle ? (Q = rt.groupTitle.text, j = rt.groupTitle.font) : (j = G.font, G.entries ? Q = rt.text : (Q = vt ? rt.label : st.name, st._meta && (Q = P.templateString(Q, st._meta))));
                var at = P.ensureSingle(H, "text", q + "text");
                at.attr("text-anchor", "start").call(p.font, j).text(ht ? L(Q, et) : Q);
                var ut = G.indentation + G.itemwidth + i.itemGap * 2;
                t.positionText(at, ut, 0), ht ? at.call(t.makeEditable, {
                  gd: F,
                  text: Q
                }).call(h, H, F, G).on("edit", function(nt) {
                  this.text(L(nt, et)).call(h, H, F, G);
                  var X = rt.trace._fullInput || {}, ct = {};
                  if (s.hasTransform(X, "groupby")) {
                    var lt = s.getTransformIndices(X, "groupby"), pt = lt[lt.length - 1], wt = P.keyedContainer(X, "transforms[" + pt + "].styles", "target", "value.name");
                    wt.set(rt.trace._group, nt), ct = wt.constructUpdate();
                  } else
                    ct.name = nt;
                  return X._isShape ? s.call("_guiRelayout", F, "shapes[" + st.index + "].name", ct.name) : s.call("_guiRestyle", F, ct, st.index);
                }) : h(at, H, F, G);
              }
              function L(H, F) {
                var G = Math.max(4, F);
                if (H && H.trim().length >= G / 2) return H;
                H = H || "";
                for (var q = G - H.length; q > 0; q--) H += " ";
                return H;
              }
              function d(H, F, G) {
                var q = F._context.doubleClickDelay, rt, st = 1, vt = P.ensureSingle(H, "rect", G + "toggle", function(ht) {
                  F._context.staticPlot || ht.style("cursor", "pointer").attr("pointer-events", "all"), ht.call(u.fill, "rgba(0,0,0,0)");
                });
                F._context.staticPlot || (vt.on("mousedown", function() {
                  rt = (/* @__PURE__ */ new Date()).getTime(), rt - F._legendMouseDownTime < q ? st += 1 : (st = 1, F._legendMouseDownTime = rt);
                }), vt.on("mouseup", function() {
                  if (!(F._dragged || F._editing)) {
                    var ht = F._fullLayout[G];
                    (/* @__PURE__ */ new Date()).getTime() - F._legendMouseDownTime > q && (st = Math.max(st - 1, 1)), C(F, ht, H, st, b.event);
                  }
                }));
              }
              function h(H, F, G, q, rt) {
                q._inHover && H.attr("data-notex", !0), t.convertToTspans(H, G, function() {
                  E(F, G, q, rt);
                });
              }
              function E(H, F, G, q) {
                var rt = H.data()[0][0];
                if (!G._inHover && rt && !rt.trace.showlegend) {
                  H.remove();
                  return;
                }
                var st = H.select("g[class*=math-group]"), vt = st.node(), ht = U(G);
                G || (G = F._fullLayout[ht]);
                var et = G.borderwidth, Q;
                q === v ? Q = G.title.font : rt.groupTitle ? Q = rt.groupTitle.font : Q = G.font;
                var j = Q.size * l, at, ut;
                if (vt) {
                  var nt = p.bBox(vt);
                  at = nt.height, ut = nt.width, q === v ? p.setTranslate(st, et, et + at * 0.75) : p.setTranslate(st, 0, at * 0.25);
                } else {
                  var X = "." + ht + (q === v ? "title" : "") + "text", ct = H.select(X), lt = t.lineCount(ct), pt = ct.node();
                  if (at = j * lt, ut = pt ? p.bBox(pt).width : 0, q === v)
                    G.title.side === "left" && (ut += i.itemGap * 2), t.positionText(ct, et + i.titlePad, et + j);
                  else {
                    var wt = i.itemGap * 2 + G.indentation + G.itemwidth;
                    rt.groupTitle && (wt = i.itemGap, ut -= G.indentation + G.itemwidth), t.positionText(ct, wt, -j * ((lt - 1) / 2 - 0.3));
                  }
                }
                q === v ? (G._titleWidth = ut, G._titleHeight = at) : (rt.lineHeight = j, rt.height = Math.max(at, 16) + 3, rt.width = ut);
              }
              function w(H) {
                var F = 0, G = 0, q = H.title.side;
                return q && (q.indexOf("left") !== -1 && (F = H._titleWidth), q.indexOf("top") !== -1 && (G = H._titleHeight)), [F, G];
              }
              function z(H, F, G, q) {
                var rt = H._fullLayout, st = U(q);
                q || (q = rt[st]);
                var vt = rt._size, ht = c.isVertical(q), et = c.isGrouped(q), Q = q.entrywidthmode === "fraction", j = q.borderwidth, at = 2 * j, ut = i.itemGap, nt = q.indentation + q.itemwidth + ut * 2, X = 2 * (j + ut), ct = V(q), lt = q.y < 0 || q.y === 0 && ct === "top", pt = q.y > 1 || q.y === 1 && ct === "bottom", wt = q.tracegroupgap, Et = {};
                q._maxHeight = Math.max(lt || pt ? rt.height / 2 : vt.h, 30);
                var Ct = 0;
                q._width = 0, q._height = 0;
                var Gt = w(q);
                if (ht)
                  G.each(function($t) {
                    var jt = $t[0].height;
                    p.setTranslate(this, j + Gt[0], j + Gt[1] + q._height + jt / 2 + ut), q._height += jt, q._width = Math.max(q._width, $t[0].width);
                  }), Ct = nt + q._width, q._width += ut + nt + at, q._height += X, et && (F.each(function($t, jt) {
                    p.setTranslate(this, 0, jt * q.tracegroupgap);
                  }), q._height += (q._lgroupsLength - 1) * q.tracegroupgap);
                else {
                  var Jt = B(q), Qt = q.x < 0 || q.x === 0 && Jt === "right", Vt = q.x > 1 || q.x === 1 && Jt === "left", zt = pt || lt, Rt = rt.width / 2;
                  q._maxWidth = Math.max(Qt ? zt && Jt === "left" ? vt.l + vt.w : Rt : Vt ? zt && Jt === "right" ? vt.r + vt.w : Rt : vt.w, 2 * nt);
                  var Wt = 0, kt = 0;
                  G.each(function($t) {
                    var jt = M($t, q, nt);
                    Wt = Math.max(Wt, jt), kt += jt;
                  }), Ct = null;
                  var re = 0;
                  if (et) {
                    var ge = 0, _e = 0, ce = 0;
                    F.each(function() {
                      var $t = 0, jt = 0;
                      b.select(this).selectAll("g.traces").each(function(Bt) {
                        var Xt = M(Bt, q, nt), Zt = Bt[0].height;
                        p.setTranslate(this, Gt[0], Gt[1] + j + ut + Zt / 2 + jt), jt += Zt, $t = Math.max($t, Xt), Et[Bt[0].trace.legendgroup] = $t;
                      });
                      var ee = $t + ut;
                      // not on the first column already
                      _e > 0 && // goes beyound limit
                      ee + j + _e > q._maxWidth ? (re = Math.max(re, _e), _e = 0, ce += ge + wt, ge = jt) : ge = Math.max(ge, jt), p.setTranslate(this, _e, ce), _e += ee;
                    }), q._width = Math.max(re, _e) + j, q._height = ce + ge + X;
                  } else {
                    var ae = G.size(), Se = kt + at + (ae - 1) * ut < q._maxWidth, ze = 0, Ne = 0, Ve = 0, Oe = 0;
                    G.each(function($t) {
                      var jt = $t[0].height, ee = M($t, q, nt), Bt = Se ? ee : Wt;
                      Q || (Bt += ut), Bt + j + Ne - ut >= q._maxWidth && (re = Math.max(re, Oe), Ne = 0, Ve += ze, q._height += ze, ze = 0), p.setTranslate(this, Gt[0] + j + Ne, Gt[1] + j + Ve + jt / 2 + ut), Oe = Ne + ee + ut, Ne += Bt, ze = Math.max(ze, jt);
                    }), Se ? (q._width = Ne + at, q._height = ze + X) : (q._width = Math.max(re, Oe) + at, q._height += ze + X);
                  }
                }
                q._width = Math.ceil(Math.max(q._width + Gt[0], q._titleWidth + 2 * (j + i.titlePad))), q._height = Math.ceil(Math.max(q._height + Gt[1], q._titleHeight + 2 * (j + i.itemGap))), q._effHeight = Math.min(q._height, q._maxHeight);
                var ur = H._context.edits, ie = ur.legendText || ur.legendPosition;
                G.each(function($t) {
                  var jt = b.select(this).select("." + st + "toggle"), ee = $t[0].height, Bt = $t[0].trace.legendgroup, Xt = M($t, q, nt);
                  et && Bt !== "" && (Xt = Et[Bt]);
                  var Zt = ie ? nt : Ct || Xt;
                  !ht && !Q && (Zt += ut / 2), p.setRect(jt, 0, -ee / 2, Zt, ee);
                });
              }
              function O(H, F, G, q) {
                var rt = H._fullLayout, st = rt[F], vt = B(st), ht = V(st), et = st.xref === "paper", Q = st.yref === "paper";
                H._fullLayout._reservedMargin[F] = {};
                var j = st.y < 0.5 ? "b" : "t", at = st.x < 0.5 ? "l" : "r", ut = {
                  r: rt.width - G,
                  l: G + st._width,
                  b: rt.height - q,
                  t: q + st._effHeight
                };
                if (et && Q)
                  return n.autoMargin(H, F, {
                    x: st.x,
                    y: st.y,
                    l: st._width * o[vt],
                    r: st._width * y[vt],
                    b: st._effHeight * y[ht],
                    t: st._effHeight * o[ht]
                  });
                et ? H._fullLayout._reservedMargin[F][j] = ut[j] : Q || st.orientation === "v" ? H._fullLayout._reservedMargin[F][at] = ut[at] : H._fullLayout._reservedMargin[F][j] = ut[j];
              }
              function B(H) {
                return P.isRightAnchor(H) ? "right" : P.isCenterAnchor(H) ? "center" : "left";
              }
              function V(H) {
                return P.isBottomAnchor(H) ? "bottom" : P.isMiddleAnchor(H) ? "middle" : "top";
              }
              function U(H) {
                return H._id || "legend";
              }
            }
          ),
          /***/
          851: (
            /***/
            function(Y, K, e) {
              var b = e(33626), P = e(57599);
              Y.exports = function(s, T, A) {
                var p = T._inHover, u = P.isGrouped(T), t = P.isReversed(T), r = {}, i = [], a = !1, l = {}, o = 0, y = 0, g, x;
                function c(H, F, G) {
                  if (T.visible !== !1 && !(A && H !== T._id))
                    if (F === "" || !P.isGrouped(T)) {
                      var q = "~~i" + o;
                      i.push(q), r[q] = [G], o++;
                    } else i.indexOf(F) === -1 ? (i.push(F), a = !0, r[F] = [G]) : r[F].push(G);
                }
                for (g = 0; g < s.length; g++) {
                  var v = s[g], f = v[0], _ = f.trace, S = _.legend, M = _.legendgroup;
                  if (!(!p && (!_.visible || !_.showlegend)))
                    if (b.traceIs(_, "pie-like"))
                      for (l[M] || (l[M] = {}), x = 0; x < v.length; x++) {
                        var C = v[x].label;
                        l[M][C] || (c(S, M, {
                          label: C,
                          color: v[x].color,
                          i: v[x].i,
                          trace: _,
                          pts: v[x].pts
                        }), l[M][C] = !0, y = Math.max(y, (C || "").length));
                      }
                    else
                      c(S, M, f), y = Math.max(y, (_.name || "").length);
                }
                if (!i.length) return [];
                var m = !a || !u, L = [];
                for (g = 0; g < i.length; g++) {
                  var d = r[i[g]];
                  m ? L.push(d[0]) : L.push(d);
                }
                for (m && (L = [L]), g = 0; g < L.length; g++) {
                  var h = 1 / 0;
                  for (x = 0; x < L[g].length; x++) {
                    var E = L[g][x].trace.legendrank;
                    h > E && (h = E);
                  }
                  L[g][0]._groupMinRank = h, L[g][0]._preGroupSort = g;
                }
                var w = function(H, F) {
                  return H[0]._groupMinRank - F[0]._groupMinRank || H[0]._preGroupSort - F[0]._preGroupSort;
                }, z = function(H, F) {
                  return H.trace.legendrank - F.trace.legendrank || H._preSort - F._preSort;
                };
                for (L.forEach(function(H, F) {
                  H[0]._preGroupSort = F;
                }), L.sort(w), g = 0; g < L.length; g++) {
                  L[g].forEach(function(H, F) {
                    H._preSort = F;
                  }), L[g].sort(z);
                  var O = L[g][0].trace, B = null;
                  for (x = 0; x < L[g].length; x++) {
                    var V = L[g][x].trace.legendgrouptitle;
                    if (V && V.text) {
                      B = V, p && (V.font = T._groupTitleFont);
                      break;
                    }
                  }
                  if (t && L[g].reverse(), B) {
                    var U = !1;
                    for (x = 0; x < L[g].length; x++)
                      if (b.traceIs(L[g][x].trace, "pie-like")) {
                        U = !0;
                        break;
                      }
                    L[g].unshift({
                      i: -1,
                      groupTitle: B,
                      noClick: U,
                      trace: {
                        showlegend: O.showlegend,
                        legendgroup: O.legendgroup,
                        visible: T.groupclick === "toggleitem" ? !0 : O.visible
                      }
                    });
                  }
                  for (x = 0; x < L[g].length; x++)
                    L[g][x] = [L[g][x]];
                }
                return T._lgroupsLength = L.length, T._maxNameLength = y, L;
              };
            }
          ),
          /***/
          22165: (
            /***/
            function(Y, K, e) {
              var b = e(33626), P = e(34809), n = P.pushUnique, s = !0;
              Y.exports = function(A, p, u) {
                var t = p._fullLayout;
                if (p._dragged || p._editing) return;
                var r = t.legend.itemclick, i = t.legend.itemdoubleclick, a = t.legend.groupclick;
                u === 1 && r === "toggle" && i === "toggleothers" && s && p.data && p._context.showTips && P.notifier(P._(p, "Double-click on legend to isolate one trace"), "long"), s = !1;
                var l;
                if (u === 1 ? l = r : u === 2 && (l = i), !l) return;
                var o = a === "togglegroup", y = t.hiddenlabels ? t.hiddenlabels.slice() : [], g = A.data()[0][0];
                if (g.groupTitle && g.noClick) return;
                var x = p._fullData, c = (t.shapes || []).filter(function(Rt) {
                  return Rt.showlegend;
                }), v = x.concat(c), f = g.trace;
                f._isShape && (f = f._fullInput);
                var _ = f.legendgroup, S, M, C, m, L, d, h = {}, E = [], w = [], z = [];
                function O(Rt, Wt) {
                  var kt = E.indexOf(Rt), re = h.visible;
                  return re || (re = h.visible = []), E.indexOf(Rt) === -1 && (E.push(Rt), kt = E.length - 1), re[kt] = Wt, kt;
                }
                var B = (t.shapes || []).map(function(Rt) {
                  return Rt._input;
                }), V = !1;
                function U(Rt, Wt) {
                  B[Rt].visible = Wt, V = !0;
                }
                function H(Rt, Wt) {
                  if (!(g.groupTitle && !o)) {
                    var kt = Rt._fullInput || Rt, re = kt._isShape, ge = kt.index;
                    if (ge === void 0 && (ge = kt._index), b.hasTransform(kt, "groupby")) {
                      var _e = w[ge];
                      if (!_e) {
                        var ce = b.getTransformIndices(kt, "groupby"), ae = ce[ce.length - 1];
                        _e = P.keyedContainer(kt, "transforms[" + ae + "].styles", "target", "value.visible"), w[ge] = _e;
                      }
                      var Se = _e.get(Rt._group);
                      Se === void 0 && (Se = !0), Se !== !1 && _e.set(Rt._group, Wt), z[ge] = O(ge, kt.visible !== !1);
                    } else {
                      var ze = kt.visible === !1 ? !1 : Wt;
                      re ? U(ge, ze) : O(ge, ze);
                    }
                  }
                }
                var F = f.legend, G = f._fullInput, q = G && G._isShape;
                if (!q && b.traceIs(f, "pie-like")) {
                  var rt = g.label, st = y.indexOf(rt);
                  if (l === "toggle")
                    st === -1 ? y.push(rt) : y.splice(st, 1);
                  else if (l === "toggleothers") {
                    var vt = st !== -1, ht = [];
                    for (S = 0; S < p.calcdata.length; S++) {
                      var et = p.calcdata[S];
                      for (M = 0; M < et.length; M++) {
                        var Q = et[M], j = Q.label;
                        F === et[0].trace.legend && rt !== j && (y.indexOf(j) === -1 && (vt = !0), n(y, j), ht.push(j));
                      }
                    }
                    if (!vt)
                      for (var at = 0; at < ht.length; at++) {
                        var ut = y.indexOf(ht[at]);
                        ut !== -1 && y.splice(ut, 1);
                      }
                  }
                  b.call("_guiRelayout", p, "hiddenlabels", y);
                } else {
                  var nt = _ && _.length, X = [], ct;
                  if (nt)
                    for (S = 0; S < v.length; S++)
                      ct = v[S], ct.visible && ct.legendgroup === _ && X.push(S);
                  if (l === "toggle") {
                    var lt;
                    switch (f.visible) {
                      case !0:
                        lt = "legendonly";
                        break;
                      case !1:
                        lt = !1;
                        break;
                      case "legendonly":
                        lt = !0;
                        break;
                    }
                    if (nt)
                      if (o)
                        for (S = 0; S < v.length; S++) {
                          var pt = v[S];
                          pt.visible !== !1 && pt.legendgroup === _ && H(pt, lt);
                        }
                      else
                        H(f, lt);
                    else
                      H(f, lt);
                  } else if (l === "toggleothers") {
                    var wt, Et, Ct, Gt, Jt, Qt = !0;
                    for (S = 0; S < v.length; S++)
                      if (Jt = v[S], wt = Jt === f, Ct = Jt.showlegend !== !0, !(wt || Ct) && (Et = nt && Jt.legendgroup === _, !Et && Jt.legend === F && Jt.visible === !0 && !b.traceIs(Jt, "notLegendIsolatable"))) {
                        Qt = !1;
                        break;
                      }
                    for (S = 0; S < v.length; S++)
                      if (Jt = v[S], !(Jt.visible === !1 || Jt.legend !== F) && !b.traceIs(Jt, "notLegendIsolatable"))
                        switch (f.visible) {
                          case "legendonly":
                            H(Jt, !0);
                            break;
                          case !0:
                            Gt = Qt ? !0 : "legendonly", wt = Jt === f, Ct = Jt.showlegend !== !0 && !Jt.legendgroup, Et = wt || nt && Jt.legendgroup === _, H(Jt, Et || Ct ? !0 : Gt);
                            break;
                        }
                  }
                  for (S = 0; S < w.length; S++)
                    if (C = w[S], !!C) {
                      var Vt = C.constructUpdate(), zt = Object.keys(Vt);
                      for (M = 0; M < zt.length; M++)
                        m = zt[M], d = h[m] = h[m] || [], d[z[S]] = Vt[m];
                    }
                  for (L = Object.keys(h), S = 0; S < L.length; S++)
                    for (m = L[S], M = 0; M < E.length; M++)
                      h[m].hasOwnProperty(M) || (h[m][M] = void 0);
                  V ? b.call("_guiUpdate", p, h, {
                    shapes: B
                  }, E) : b.call("_guiRestyle", p, h, E);
                }
              };
            }
          ),
          /***/
          57599: (
            /***/
            function(Y, K) {
              K.isGrouped = function(b) {
                return (b.traceorder || "").indexOf("grouped") !== -1;
              }, K.isVertical = function(b) {
                return b.orientation !== "h";
              }, K.isReversed = function(b) {
                return (b.traceorder || "").indexOf("reversed") !== -1;
              };
            }
          ),
          /***/
          82494: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                moduleType: "component",
                name: "legend",
                layoutAttributes: e(86405),
                supplyLayoutDefaults: e(73970),
                draw: e(6134),
                style: e(14375)
              };
            }
          ),
          /***/
          14375: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(33626), n = e(34809), s = n.strTranslate, T = e(62203), A = e(78766), p = e(65477).extractOpts, u = e(64726), t = e(32891), r = e(37252).castOption, i = e(72783), a = 12, l = 5, o = 2, y = 10, g = 5;
              Y.exports = function(_, S, M) {
                var C = S._fullLayout;
                M || (M = C.legend);
                var m = M.itemsizing === "constant", L = M.itemwidth, d = (L + i.itemGap * 2) / 2, h = s(d, 0), E = function(ht, et, Q, j) {
                  var at;
                  if (ht + 1)
                    at = ht;
                  else if (et && et.width > 0)
                    at = et.width;
                  else
                    return 0;
                  return m ? j : Math.min(at, Q);
                };
                _.each(function(ht) {
                  var et = b.select(this), Q = n.ensureSingle(et, "g", "layers");
                  Q.style("opacity", ht[0].trace.opacity);
                  var j = M.indentation, at = M.valign, ut = ht[0].lineHeight, nt = ht[0].height;
                  if (at === "middle" && j === 0 || !ut || !nt)
                    Q.attr("transform", null);
                  else {
                    var X = {
                      top: 1,
                      bottom: -1
                    }[at], ct = X * (0.5 * (ut - nt + 3)) || 0, lt = M.indentation;
                    Q.attr("transform", s(lt, ct));
                  }
                  var pt = Q.selectAll("g.legendfill").data([ht]);
                  pt.enter().append("g").classed("legendfill", !0);
                  var wt = Q.selectAll("g.legendlines").data([ht]);
                  wt.enter().append("g").classed("legendlines", !0);
                  var Et = Q.selectAll("g.legendsymbols").data([ht]);
                  Et.enter().append("g").classed("legendsymbols", !0), Et.selectAll("g.legendpoints").data([ht]).enter().append("g").classed("legendpoints", !0);
                }).each(vt).each(O).each(V).each(B).each(H).each(rt).each(q).each(w).each(z).each(F).each(G);
                function w(ht) {
                  var et = c(ht), Q = et.showFill, j = et.showLine, at = et.showGradientLine, ut = et.showGradientFill, nt = et.anyFill, X = et.anyLine, ct = ht[0], lt = ct.trace, pt, wt, Et = p(lt), Ct = Et.colorscale, Gt = Et.reversescale, Jt = function(re) {
                    if (re.size())
                      if (Q)
                        T.fillGroupStyle(re, S, !0);
                      else {
                        var ge = "legendfill-" + lt.uid;
                        T.gradient(re, S, ge, x(Gt), Ct, "fill");
                      }
                  }, Qt = function(re) {
                    if (re.size()) {
                      var ge = "legendline-" + lt.uid;
                      T.lineGroupStyle(re), T.gradient(re, S, ge, x(Gt), Ct, "stroke");
                    }
                  }, Vt = u.hasMarkers(lt) || !nt ? "M5,0" : (
                    // with a line leave it slightly below center, to leave room for the
                    // line thickness and because the line is usually more prominent
                    X ? "M5,-2" : "M5,-3"
                  ), zt = b.select(this), Rt = zt.select(".legendfill").selectAll("path").data(Q || ut ? [ht] : []);
                  if (Rt.enter().append("path").classed("js-fill", !0), Rt.exit().remove(), Rt.attr("d", Vt + "h" + L + "v6h-" + L + "z").call(Jt), j || at) {
                    var Wt = E(void 0, lt.line, y, l);
                    wt = n.minExtend(lt, {
                      line: {
                        width: Wt
                      }
                    }), pt = [n.minExtend(ct, {
                      trace: wt
                    })];
                  }
                  var kt = zt.select(".legendlines").selectAll("path").data(j || at ? [pt] : []);
                  kt.enter().append("path").classed("js-line", !0), kt.exit().remove(), kt.attr("d", Vt + (at ? "l" + L + ",0.0001" : "h" + L)).call(j ? T.lineGroupStyle : Qt);
                }
                function z(ht) {
                  var et = c(ht), Q = et.anyFill, j = et.anyLine, at = et.showLine, ut = et.showMarker, nt = ht[0], X = nt.trace, ct = !ut && !j && !Q && u.hasText(X), lt, pt;
                  function wt(Rt, Wt, kt, re) {
                    var ge = n.nestedProperty(X, Rt).get(), _e = n.isArrayOrTypedArray(ge) && Wt ? Wt(ge) : ge;
                    if (m && _e && re !== void 0 && (_e = re), kt) {
                      if (_e < kt[0]) return kt[0];
                      if (_e > kt[1]) return kt[1];
                    }
                    return _e;
                  }
                  function Et(Rt) {
                    return nt._distinct && nt.index && Rt[nt.index] ? Rt[nt.index] : Rt[0];
                  }
                  if (ut || ct || at) {
                    var Ct = {}, Gt = {};
                    if (ut) {
                      Ct.mc = wt("marker.color", Et), Ct.mx = wt("marker.symbol", Et), Ct.mo = wt("marker.opacity", n.mean, [0.2, 1]), Ct.mlc = wt("marker.line.color", Et), Ct.mlw = wt("marker.line.width", n.mean, [0, 5], o), Gt.marker = {
                        sizeref: 1,
                        sizemin: 1,
                        sizemode: "diameter"
                      };
                      var Jt = wt("marker.size", n.mean, [2, 16], a);
                      Ct.ms = Jt, Gt.marker.size = Jt;
                    }
                    at && (Gt.line = {
                      width: wt("line.width", Et, [0, 10], l)
                    }), ct && (Ct.tx = "Aa", Ct.tp = wt("textposition", Et), Ct.ts = 10, Ct.tc = wt("textfont.color", Et), Ct.tf = wt("textfont.family", Et), Ct.tw = wt("textfont.weight", Et), Ct.ty = wt("textfont.style", Et), Ct.tv = wt("textfont.variant", Et), Ct.tC = wt("textfont.textcase", Et), Ct.tE = wt("textfont.lineposition", Et), Ct.tS = wt("textfont.shadow", Et)), lt = [n.minExtend(nt, Ct)], pt = n.minExtend(X, Gt), pt.selectedpoints = null, pt.texttemplate = null;
                  }
                  var Qt = b.select(this).select("g.legendpoints"), Vt = Qt.selectAll("path.scatterpts").data(ut ? lt : []);
                  Vt.enter().insert("path", ":first-child").classed("scatterpts", !0).attr("transform", h), Vt.exit().remove(), Vt.call(T.pointStyle, pt, S), ut && (lt[0].mrc = 3);
                  var zt = Qt.selectAll("g.pointtext").data(ct ? lt : []);
                  zt.enter().append("g").classed("pointtext", !0).append("text").attr("transform", h), zt.exit().remove(), zt.selectAll("text").call(T.textPointStyle, pt, S);
                }
                function O(ht) {
                  var et = ht[0].trace, Q = et.type === "waterfall";
                  if (ht[0]._distinct && Q) {
                    var j = ht[0].trace[ht[0].dir].marker;
                    return ht[0].mc = j.color, ht[0].mlw = j.line.width, ht[0].mlc = j.line.color, U(ht, this, "waterfall");
                  }
                  var at = [];
                  et.visible && Q && (at = ht[0].hasTotals ? [["increasing", "M-6,-6V6H0Z"], ["totals", "M6,6H0L-6,-6H-0Z"], ["decreasing", "M6,6V-6H0Z"]] : [["increasing", "M-6,-6V6H6Z"], ["decreasing", "M6,6V-6H-6Z"]]);
                  var ut = b.select(this).select("g.legendpoints").selectAll("path.legendwaterfall").data(at);
                  ut.enter().append("path").classed("legendwaterfall", !0).attr("transform", h).style("stroke-miterlimit", 1), ut.exit().remove(), ut.each(function(nt) {
                    var X = b.select(this), ct = et[nt[0]].marker, lt = E(void 0, ct.line, g, o);
                    X.attr("d", nt[1]).style("stroke-width", lt + "px").call(A.fill, ct.color), lt && X.call(A.stroke, ct.line.color);
                  });
                }
                function B(ht) {
                  U(ht, this);
                }
                function V(ht) {
                  U(ht, this, "funnel");
                }
                function U(ht, et, Q) {
                  var j = ht[0].trace, at = j.marker || {}, ut = at.line || {}, nt = at.cornerradius ? "M6,3a3,3,0,0,1-3,3H-3a3,3,0,0,1-3-3V-3a3,3,0,0,1,3-3H3a3,3,0,0,1,3,3Z" : (
                    // Square with rounded corners
                    "M6,6H-6V-6H6Z"
                  ), X = Q ? j.visible && j.type === Q : P.traceIs(j, "bar"), ct = b.select(et).select("g.legendpoints").selectAll("path.legend" + Q).data(X ? [ht] : []);
                  ct.enter().append("path").classed("legend" + Q, !0).attr("d", nt).attr("transform", h), ct.exit().remove(), ct.each(function(lt) {
                    var pt = b.select(this), wt = lt[0], Et = E(wt.mlw, at.line, g, o);
                    pt.style("stroke-width", Et + "px");
                    var Ct = wt.mcc;
                    if (!M._inHover && "mc" in wt) {
                      var Gt = p(at), Jt = Gt.mid;
                      Jt === void 0 && (Jt = (Gt.max + Gt.min) / 2), Ct = T.tryColorscale(at, "")(Jt);
                    }
                    var Qt = Ct || wt.mc || at.color, Vt = at.pattern, zt = Vt && T.getPatternAttr(Vt.shape, 0, "");
                    if (zt) {
                      var Rt = T.getPatternAttr(Vt.bgcolor, 0, null), Wt = T.getPatternAttr(Vt.fgcolor, 0, null), kt = Vt.fgopacity, re = v(Vt.size, 8, 10), ge = v(Vt.solidity, 0.5, 1), _e = "legend-" + j.uid;
                      pt.call(T.pattern, "legend", S, _e, zt, re, ge, Ct, Vt.fillmode, Rt, Wt, kt);
                    } else
                      pt.call(A.fill, Qt);
                    Et && A.stroke(pt, wt.mlc || ut.color);
                  });
                }
                function H(ht) {
                  var et = ht[0].trace, Q = b.select(this).select("g.legendpoints").selectAll("path.legendbox").data(et.visible && P.traceIs(et, "box-violin") ? [ht] : []);
                  Q.enter().append("path").classed("legendbox", !0).attr("d", "M6,6H-6V-6H6Z").attr("transform", h), Q.exit().remove(), Q.each(function() {
                    var j = b.select(this);
                    if ((et.boxpoints === "all" || et.points === "all") && A.opacity(et.fillcolor) === 0 && A.opacity((et.line || {}).color) === 0) {
                      var at = n.minExtend(et, {
                        marker: {
                          size: m ? a : n.constrain(et.marker.size, 2, 16),
                          sizeref: 1,
                          sizemin: 1,
                          sizemode: "diameter"
                        }
                      });
                      Q.call(T.pointStyle, at, S);
                    } else {
                      var ut = E(void 0, et.line, g, o);
                      j.style("stroke-width", ut + "px").call(A.fill, et.fillcolor), ut && A.stroke(j, et.line.color);
                    }
                  });
                }
                function F(ht) {
                  var et = ht[0].trace, Q = b.select(this).select("g.legendpoints").selectAll("path.legendcandle").data(et.visible && et.type === "candlestick" ? [ht, ht] : []);
                  Q.enter().append("path").classed("legendcandle", !0).attr("d", function(j, at) {
                    return at ? "M-15,0H-8M-8,6V-6H8Z" : "M15,0H8M8,-6V6H-8Z";
                  }).attr("transform", h).style("stroke-miterlimit", 1), Q.exit().remove(), Q.each(function(j, at) {
                    var ut = b.select(this), nt = et[at ? "increasing" : "decreasing"], X = E(void 0, nt.line, g, o);
                    ut.style("stroke-width", X + "px").call(A.fill, nt.fillcolor), X && A.stroke(ut, nt.line.color);
                  });
                }
                function G(ht) {
                  var et = ht[0].trace, Q = b.select(this).select("g.legendpoints").selectAll("path.legendohlc").data(et.visible && et.type === "ohlc" ? [ht, ht] : []);
                  Q.enter().append("path").classed("legendohlc", !0).attr("d", function(j, at) {
                    return at ? "M-15,0H0M-8,-6V0" : "M15,0H0M8,6V0";
                  }).attr("transform", h).style("stroke-miterlimit", 1), Q.exit().remove(), Q.each(function(j, at) {
                    var ut = b.select(this), nt = et[at ? "increasing" : "decreasing"], X = E(void 0, nt.line, g, o);
                    ut.style("fill", "none").call(T.dashLine, nt.line.dash, X), X && A.stroke(ut, nt.line.color);
                  });
                }
                function q(ht) {
                  st(ht, this, "pie");
                }
                function rt(ht) {
                  st(ht, this, "funnelarea");
                }
                function st(ht, et, Q) {
                  var j = ht[0], at = j.trace, ut = Q ? at.visible && at.type === Q : P.traceIs(at, Q), nt = b.select(et).select("g.legendpoints").selectAll("path.legend" + Q).data(ut ? [ht] : []);
                  if (nt.enter().append("path").classed("legend" + Q, !0).attr("d", "M6,6H-6V-6H6Z").attr("transform", h), nt.exit().remove(), nt.size()) {
                    var X = at.marker || {}, ct = E(r(X.line.width, j.pts), X.line, g, o), lt = "pieLike", pt = n.minExtend(at, {
                      marker: {
                        line: {
                          width: ct
                        }
                      }
                    }, lt), wt = n.minExtend(j, {
                      trace: pt
                    }, lt);
                    t(nt, wt, pt, S);
                  }
                }
                function vt(ht) {
                  var et = ht[0].trace, Q, j = [];
                  if (et.visible)
                    switch (et.type) {
                      case "histogram2d":
                      case "heatmap":
                        j = [
                          ["M-15,-2V4H15V-2Z"]
                          // similar to contour
                        ], Q = !0;
                        break;
                      case "choropleth":
                      case "choroplethmapbox":
                      case "choroplethmap":
                        j = [["M-6,-6V6H6V-6Z"]], Q = !0;
                        break;
                      case "densitymapbox":
                      case "densitymap":
                        j = [["M-6,0 a6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0"]], Q = "radial";
                        break;
                      case "cone":
                        j = [["M-6,2 A2,2 0 0,0 -6,6 V6L6,4Z"], ["M-6,-6 A2,2 0 0,0 -6,-2 L6,-4Z"], ["M-6,-2 A2,2 0 0,0 -6,2 L6,0Z"]], Q = !1;
                        break;
                      case "streamtube":
                        j = [["M-6,2 A2,2 0 0,0 -6,6 H6 A2,2 0 0,1 6,2 Z"], ["M-6,-6 A2,2 0 0,0 -6,-2 H6 A2,2 0 0,1 6,-6 Z"], ["M-6,-2 A2,2 0 0,0 -6,2 H6 A2,2 0 0,1 6,-2 Z"]], Q = !1;
                        break;
                      case "surface":
                        j = [["M-6,-6 A2,3 0 0,0 -6,0 H6 A2,3 0 0,1 6,-6 Z"], ["M-6,1 A2,3 0 0,1 -6,6 H6 A2,3 0 0,0 6,0 Z"]], Q = !0;
                        break;
                      case "mesh3d":
                        j = [["M-6,6H0L-6,-6Z"], ["M6,6H0L6,-6Z"], ["M-6,-6H6L0,6Z"]], Q = !1;
                        break;
                      case "volume":
                        j = [["M-6,6H0L-6,-6Z"], ["M6,6H0L6,-6Z"], ["M-6,-6H6L0,6Z"]], Q = !0;
                        break;
                      case "isosurface":
                        j = [["M-6,6H0L-6,-6Z"], ["M6,6H0L6,-6Z"], ["M-6,-6 A12,24 0 0,0 6,-6 L0,6Z"]], Q = !1;
                        break;
                    }
                  var at = b.select(this).select("g.legendpoints").selectAll("path.legend3dandfriends").data(j);
                  at.enter().append("path").classed("legend3dandfriends", !0).attr("transform", h).style("stroke-miterlimit", 1), at.exit().remove(), at.each(function(ut, nt) {
                    var X = b.select(this), ct = p(et), lt = ct.colorscale, pt = ct.reversescale, wt = function(Jt) {
                      if (Jt.size()) {
                        var Qt = "legendfill-" + et.uid;
                        T.gradient(Jt, S, Qt, x(pt, Q === "radial"), lt, "fill");
                      }
                    }, Et;
                    if (lt) {
                      if (!Q) {
                        var Gt = lt.length;
                        Et = nt === 0 ? lt[pt ? Gt - 1 : 0][1] : (
                          // minimum
                          nt === 1 ? lt[pt ? 0 : Gt - 1][1] : (
                            // maximum
                            lt[Math.floor((Gt - 1) / 2)][1]
                          )
                        );
                      }
                    } else {
                      var Ct = et.vertexcolor || et.facecolor || et.color;
                      Et = n.isArrayOrTypedArray(Ct) ? Ct[nt] || Ct[0] : Ct;
                    }
                    X.attr("d", ut[0]), Et ? X.call(A.fill, Et) : X.call(wt);
                  });
                }
              };
              function x(f, _) {
                var S = _ ? "radial" : "horizontal";
                return S + (f ? "" : "reversed");
              }
              function c(f) {
                var _ = f[0].trace, S = _.contours, M = u.hasLines(_), C = u.hasMarkers(_), m = _.visible && _.fill && _.fill !== "none", L = !1, d = !1;
                if (S) {
                  var h = S.coloring;
                  h === "lines" ? L = !0 : M = h === "none" || h === "heatmap" || S.showlines, S.type === "constraint" ? m = S._operation !== "=" : (h === "fill" || h === "heatmap") && (d = !0);
                }
                return {
                  showMarker: C,
                  showLine: M,
                  showFill: m,
                  showGradientLine: L,
                  showGradientFill: d,
                  anyLine: M || L,
                  anyFill: m || d
                };
              }
              function v(f, _, S) {
                return f && n.isArrayOrTypedArray(f) ? _ : f > S ? S : f;
              }
            }
          ),
          /***/
          50308: (
            /***/
            function(Y, K, e) {
              e(87632), Y.exports = {
                editType: "modebar",
                orientation: {
                  valType: "enumerated",
                  values: ["v", "h"],
                  dflt: "h",
                  editType: "modebar"
                },
                bgcolor: {
                  valType: "color",
                  editType: "modebar"
                },
                color: {
                  valType: "color",
                  editType: "modebar"
                },
                activecolor: {
                  valType: "color",
                  editType: "modebar"
                },
                uirevision: {
                  valType: "any",
                  editType: "none"
                },
                add: {
                  valType: "string",
                  arrayOk: !0,
                  dflt: "",
                  editType: "modebar"
                },
                remove: {
                  valType: "string",
                  arrayOk: !0,
                  dflt: "",
                  editType: "modebar"
                }
              };
            }
          ),
          /***/
          5832: (
            /***/
            function(Y, K, e) {
              var b = e(33626), P = e(44122), n = e(5975), s = e(35188), T = e(28231).eraseActiveShape, A = e(34809), p = A._, u = Y.exports = {};
              u.toImage = {
                name: "toImage",
                title: function(S) {
                  var M = S._context.toImageButtonOptions || {}, C = M.format || "png";
                  return C === "png" ? p(S, "Download plot as a png") : (
                    // legacy text
                    p(S, "Download plot")
                  );
                },
                icon: s.camera,
                click: function(S) {
                  var M = S._context.toImageButtonOptions, C = {
                    format: M.format || "png"
                  };
                  A.notifier(p(S, "Taking snapshot - this may take a few seconds"), "long"), C.format !== "svg" && A.isIE() && (A.notifier(p(S, "IE only supports svg.  Changing format to svg."), "long"), C.format = "svg"), ["filename", "width", "height", "scale"].forEach(function(m) {
                    m in M && (C[m] = M[m]);
                  }), b.call("downloadImage", S, C).then(function(m) {
                    A.notifier(p(S, "Snapshot succeeded") + " - " + m, "long");
                  }).catch(function() {
                    A.notifier(p(S, "Sorry, there was a problem downloading your snapshot!"), "long");
                  });
                }
              }, u.sendDataToCloud = {
                name: "sendDataToCloud",
                title: function(S) {
                  return p(S, "Edit in Chart Studio");
                },
                icon: s.disk,
                click: function(S) {
                  P.sendDataToCloud(S);
                }
              }, u.editInChartStudio = {
                name: "editInChartStudio",
                title: function(S) {
                  return p(S, "Edit in Chart Studio");
                },
                icon: s.pencil,
                click: function(S) {
                  P.sendDataToCloud(S);
                }
              }, u.zoom2d = {
                name: "zoom2d",
                _cat: "zoom",
                title: function(S) {
                  return p(S, "Zoom");
                },
                attr: "dragmode",
                val: "zoom",
                icon: s.zoombox,
                click: t
              }, u.pan2d = {
                name: "pan2d",
                _cat: "pan",
                title: function(S) {
                  return p(S, "Pan");
                },
                attr: "dragmode",
                val: "pan",
                icon: s.pan,
                click: t
              }, u.select2d = {
                name: "select2d",
                _cat: "select",
                title: function(S) {
                  return p(S, "Box Select");
                },
                attr: "dragmode",
                val: "select",
                icon: s.selectbox,
                click: t
              }, u.lasso2d = {
                name: "lasso2d",
                _cat: "lasso",
                title: function(S) {
                  return p(S, "Lasso Select");
                },
                attr: "dragmode",
                val: "lasso",
                icon: s.lasso,
                click: t
              }, u.drawclosedpath = {
                name: "drawclosedpath",
                title: function(S) {
                  return p(S, "Draw closed freeform");
                },
                attr: "dragmode",
                val: "drawclosedpath",
                icon: s.drawclosedpath,
                click: t
              }, u.drawopenpath = {
                name: "drawopenpath",
                title: function(S) {
                  return p(S, "Draw open freeform");
                },
                attr: "dragmode",
                val: "drawopenpath",
                icon: s.drawopenpath,
                click: t
              }, u.drawline = {
                name: "drawline",
                title: function(S) {
                  return p(S, "Draw line");
                },
                attr: "dragmode",
                val: "drawline",
                icon: s.drawline,
                click: t
              }, u.drawrect = {
                name: "drawrect",
                title: function(S) {
                  return p(S, "Draw rectangle");
                },
                attr: "dragmode",
                val: "drawrect",
                icon: s.drawrect,
                click: t
              }, u.drawcircle = {
                name: "drawcircle",
                title: function(S) {
                  return p(S, "Draw circle");
                },
                attr: "dragmode",
                val: "drawcircle",
                icon: s.drawcircle,
                click: t
              }, u.eraseshape = {
                name: "eraseshape",
                title: function(S) {
                  return p(S, "Erase active shape");
                },
                icon: s.eraseshape,
                click: T
              }, u.zoomIn2d = {
                name: "zoomIn2d",
                _cat: "zoomin",
                title: function(S) {
                  return p(S, "Zoom in");
                },
                attr: "zoom",
                val: "in",
                icon: s.zoom_plus,
                click: t
              }, u.zoomOut2d = {
                name: "zoomOut2d",
                _cat: "zoomout",
                title: function(S) {
                  return p(S, "Zoom out");
                },
                attr: "zoom",
                val: "out",
                icon: s.zoom_minus,
                click: t
              }, u.autoScale2d = {
                name: "autoScale2d",
                _cat: "autoscale",
                title: function(S) {
                  return p(S, "Autoscale");
                },
                attr: "zoom",
                val: "auto",
                icon: s.autoscale,
                click: t
              }, u.resetScale2d = {
                name: "resetScale2d",
                _cat: "resetscale",
                title: function(S) {
                  return p(S, "Reset axes");
                },
                attr: "zoom",
                val: "reset",
                icon: s.home,
                click: t
              }, u.hoverClosestCartesian = {
                name: "hoverClosestCartesian",
                _cat: "hoverclosest",
                title: function(S) {
                  return p(S, "Show closest data on hover");
                },
                attr: "hovermode",
                val: "closest",
                icon: s.tooltip_basic,
                gravity: "ne",
                click: t
              }, u.hoverCompareCartesian = {
                name: "hoverCompareCartesian",
                _cat: "hoverCompare",
                title: function(S) {
                  return p(S, "Compare data on hover");
                },
                attr: "hovermode",
                val: function(S) {
                  return S._fullLayout._isHoriz ? "y" : "x";
                },
                icon: s.tooltip_compare,
                gravity: "ne",
                click: t
              };
              function t(S, M) {
                var C = M.currentTarget, m = C.getAttribute("data-attr"), L = C.getAttribute("data-val") || !0, d = S._fullLayout, h = {}, E = n.list(S, null, !0), w = d._cartesianSpikesEnabled, z, O;
                if (m === "zoom") {
                  var B = L === "in" ? 0.5 : 2, V = (1 + B) / 2, U = (1 - B) / 2, H;
                  for (O = 0; O < E.length; O++)
                    if (z = E[O], !z.fixedrange)
                      if (H = z._name, L === "auto")
                        h[H + ".autorange"] = !0;
                      else if (L === "reset")
                        z._rangeInitial0 === void 0 && z._rangeInitial1 === void 0 ? h[H + ".autorange"] = !0 : z._rangeInitial0 === void 0 ? (h[H + ".autorange"] = z._autorangeInitial, h[H + ".range"] = [null, z._rangeInitial1]) : z._rangeInitial1 === void 0 ? (h[H + ".range"] = [z._rangeInitial0, null], h[H + ".autorange"] = z._autorangeInitial) : h[H + ".range"] = [z._rangeInitial0, z._rangeInitial1], z._showSpikeInitial !== void 0 && (h[H + ".showspikes"] = z._showSpikeInitial, w === "on" && !z._showSpikeInitial && (w = "off"));
                      else {
                        var F = [z.r2l(z.range[0]), z.r2l(z.range[1])], G = [V * F[0] + U * F[1], V * F[1] + U * F[0]];
                        h[H + ".range[0]"] = z.l2r(G[0]), h[H + ".range[1]"] = z.l2r(G[1]);
                      }
                } else
                  m === "hovermode" && (L === "x" || L === "y") && (L = d._isHoriz ? "y" : "x", C.setAttribute("data-val", L)), h[m] = L;
                d._cartesianSpikesEnabled = w, b.call("_guiRelayout", S, h);
              }
              u.zoom3d = {
                name: "zoom3d",
                _cat: "zoom",
                title: function(S) {
                  return p(S, "Zoom");
                },
                attr: "scene.dragmode",
                val: "zoom",
                icon: s.zoombox,
                click: r
              }, u.pan3d = {
                name: "pan3d",
                _cat: "pan",
                title: function(S) {
                  return p(S, "Pan");
                },
                attr: "scene.dragmode",
                val: "pan",
                icon: s.pan,
                click: r
              }, u.orbitRotation = {
                name: "orbitRotation",
                title: function(S) {
                  return p(S, "Orbital rotation");
                },
                attr: "scene.dragmode",
                val: "orbit",
                icon: s["3d_rotate"],
                click: r
              }, u.tableRotation = {
                name: "tableRotation",
                title: function(S) {
                  return p(S, "Turntable rotation");
                },
                attr: "scene.dragmode",
                val: "turntable",
                icon: s["z-axis"],
                click: r
              };
              function r(S, M) {
                for (var C = M.currentTarget, m = C.getAttribute("data-attr"), L = C.getAttribute("data-val") || !0, d = S._fullLayout._subplots.gl3d || [], h = {}, E = m.split("."), w = 0; w < d.length; w++)
                  h[d[w] + "." + E[1]] = L;
                var z = L === "pan" ? L : "zoom";
                h.dragmode = z, b.call("_guiRelayout", S, h);
              }
              u.resetCameraDefault3d = {
                name: "resetCameraDefault3d",
                _cat: "resetCameraDefault",
                title: function(S) {
                  return p(S, "Reset camera to default");
                },
                attr: "resetDefault",
                icon: s.home,
                click: i
              }, u.resetCameraLastSave3d = {
                name: "resetCameraLastSave3d",
                _cat: "resetCameraLastSave",
                title: function(S) {
                  return p(S, "Reset camera to last save");
                },
                attr: "resetLastSave",
                icon: s.movie,
                click: i
              };
              function i(S, M) {
                for (var C = M.currentTarget, m = C.getAttribute("data-attr"), L = m === "resetLastSave", d = m === "resetDefault", h = S._fullLayout, E = h._subplots.gl3d || [], w = {}, z = 0; z < E.length; z++) {
                  var O = E[z], B = O + ".camera", V = O + ".aspectratio", U = O + ".aspectmode", H = h[O]._scene, F;
                  L ? (w[B + ".up"] = H.viewInitial.up, w[B + ".eye"] = H.viewInitial.eye, w[B + ".center"] = H.viewInitial.center, F = !0) : d && (w[B + ".up"] = null, w[B + ".eye"] = null, w[B + ".center"] = null, F = !0), F && (w[V + ".x"] = H.viewInitial.aspectratio.x, w[V + ".y"] = H.viewInitial.aspectratio.y, w[V + ".z"] = H.viewInitial.aspectratio.z, w[U] = H.viewInitial.aspectmode);
                }
                b.call("_guiRelayout", S, w);
              }
              u.hoverClosest3d = {
                name: "hoverClosest3d",
                _cat: "hoverclosest",
                title: function(S) {
                  return p(S, "Toggle show closest data on hover");
                },
                attr: "hovermode",
                val: null,
                toggle: !0,
                icon: s.tooltip_basic,
                gravity: "ne",
                click: l
              };
              function a(S, M) {
                var C = M.currentTarget, m = C._previousVal, L = S._fullLayout, d = L._subplots.gl3d || [], h = ["xaxis", "yaxis", "zaxis"], E = {}, w = {};
                if (m)
                  w = m, C._previousVal = null;
                else {
                  for (var z = 0; z < d.length; z++) {
                    var O = d[z], B = L[O], V = O + ".hovermode";
                    E[V] = B.hovermode, w[V] = !1;
                    for (var U = 0; U < 3; U++) {
                      var H = h[U], F = O + "." + H + ".showspikes";
                      w[F] = !1, E[F] = B[H].showspikes;
                    }
                  }
                  C._previousVal = E;
                }
                return w;
              }
              function l(S, M) {
                var C = a(S, M);
                b.call("_guiRelayout", S, C);
              }
              u.zoomInGeo = {
                name: "zoomInGeo",
                _cat: "zoomin",
                title: function(S) {
                  return p(S, "Zoom in");
                },
                attr: "zoom",
                val: "in",
                icon: s.zoom_plus,
                click: o
              }, u.zoomOutGeo = {
                name: "zoomOutGeo",
                _cat: "zoomout",
                title: function(S) {
                  return p(S, "Zoom out");
                },
                attr: "zoom",
                val: "out",
                icon: s.zoom_minus,
                click: o
              }, u.resetGeo = {
                name: "resetGeo",
                _cat: "reset",
                title: function(S) {
                  return p(S, "Reset");
                },
                attr: "reset",
                val: null,
                icon: s.autoscale,
                click: o
              }, u.hoverClosestGeo = {
                name: "hoverClosestGeo",
                _cat: "hoverclosest",
                title: function(S) {
                  return p(S, "Toggle show closest data on hover");
                },
                attr: "hovermode",
                val: null,
                toggle: !0,
                icon: s.tooltip_basic,
                gravity: "ne",
                click: g
              };
              function o(S, M) {
                for (var C = M.currentTarget, m = C.getAttribute("data-attr"), L = C.getAttribute("data-val") || !0, d = S._fullLayout, h = d._subplots.geo || [], E = 0; E < h.length; E++) {
                  var w = h[E], z = d[w];
                  if (m === "zoom") {
                    var O = z.projection.scale, B = L === "in" ? 2 * O : 0.5 * O;
                    b.call("_guiRelayout", S, w + ".projection.scale", B);
                  }
                }
                m === "reset" && _(S, "geo");
              }
              u.hoverClosestGl2d = {
                name: "hoverClosestGl2d",
                _cat: "hoverclosest",
                title: function(S) {
                  return p(S, "Toggle show closest data on hover");
                },
                attr: "hovermode",
                val: null,
                toggle: !0,
                icon: s.tooltip_basic,
                gravity: "ne",
                click: g
              }, u.hoverClosestPie = {
                name: "hoverClosestPie",
                _cat: "hoverclosest",
                title: function(S) {
                  return p(S, "Toggle show closest data on hover");
                },
                attr: "hovermode",
                val: "closest",
                icon: s.tooltip_basic,
                gravity: "ne",
                click: g
              };
              function y(S) {
                var M = S._fullLayout;
                return M.hovermode ? !1 : M._has("cartesian") ? M._isHoriz ? "y" : "x" : "closest";
              }
              function g(S) {
                var M = y(S);
                b.call("_guiRelayout", S, "hovermode", M);
              }
              u.resetViewSankey = {
                name: "resetSankeyGroup",
                title: function(S) {
                  return p(S, "Reset view");
                },
                icon: s.home,
                click: function(S) {
                  for (var M = {
                    "node.groups": [],
                    "node.x": [],
                    "node.y": []
                  }, C = 0; C < S._fullData.length; C++) {
                    var m = S._fullData[C]._viewInitial;
                    M["node.groups"].push(m.node.groups.slice()), M["node.x"].push(m.node.x.slice()), M["node.y"].push(m.node.y.slice());
                  }
                  b.call("restyle", S, M);
                }
              }, u.toggleHover = {
                name: "toggleHover",
                title: function(S) {
                  return p(S, "Toggle show closest data on hover");
                },
                attr: "hovermode",
                val: null,
                toggle: !0,
                icon: s.tooltip_basic,
                gravity: "ne",
                click: function(S, M) {
                  var C = a(S, M);
                  C.hovermode = y(S), b.call("_guiRelayout", S, C);
                }
              }, u.resetViews = {
                name: "resetViews",
                title: function(S) {
                  return p(S, "Reset views");
                },
                icon: s.home,
                click: function(S, M) {
                  var C = M.currentTarget;
                  C.setAttribute("data-attr", "zoom"), C.setAttribute("data-val", "reset"), t(S, M), C.setAttribute("data-attr", "resetLastSave"), i(S, M), _(S, "geo"), _(S, "mapbox"), _(S, "map");
                }
              }, u.toggleSpikelines = {
                name: "toggleSpikelines",
                title: function(S) {
                  return p(S, "Toggle Spike Lines");
                },
                icon: s.spikeline,
                attr: "_cartesianSpikesEnabled",
                val: "on",
                click: function(S) {
                  var M = S._fullLayout, C = M._cartesianSpikesEnabled;
                  M._cartesianSpikesEnabled = C === "on" ? "off" : "on", b.call("_guiRelayout", S, x(S));
                }
              };
              function x(S) {
                for (var M = S._fullLayout, C = M._cartesianSpikesEnabled === "on", m = n.list(S, null, !0), L = {}, d = 0; d < m.length; d++) {
                  var h = m[d];
                  L[h._name + ".showspikes"] = C ? !0 : h._showSpikeInitial;
                }
                return L;
              }
              u.resetViewMapbox = {
                name: "resetViewMapbox",
                _cat: "resetView",
                title: function(S) {
                  return p(S, "Reset view");
                },
                attr: "reset",
                icon: s.home,
                click: function(S) {
                  _(S, "mapbox");
                }
              }, u.resetViewMap = {
                name: "resetViewMap",
                _cat: "resetView",
                title: function(S) {
                  return p(S, "Reset view");
                },
                attr: "reset",
                icon: s.home,
                click: function(S) {
                  _(S, "map");
                }
              }, u.zoomInMapbox = {
                name: "zoomInMapbox",
                _cat: "zoomin",
                title: function(S) {
                  return p(S, "Zoom in");
                },
                attr: "zoom",
                val: "in",
                icon: s.zoom_plus,
                click: c
              }, u.zoomInMap = {
                name: "zoomInMap",
                _cat: "zoomin",
                title: function(S) {
                  return p(S, "Zoom in");
                },
                attr: "zoom",
                val: "in",
                icon: s.zoom_plus,
                click: v
              }, u.zoomOutMapbox = {
                name: "zoomOutMapbox",
                _cat: "zoomout",
                title: function(S) {
                  return p(S, "Zoom out");
                },
                attr: "zoom",
                val: "out",
                icon: s.zoom_minus,
                click: c
              }, u.zoomOutMap = {
                name: "zoomOutMap",
                _cat: "zoomout",
                title: function(S) {
                  return p(S, "Zoom out");
                },
                attr: "zoom",
                val: "out",
                icon: s.zoom_minus,
                click: v
              };
              function c(S, M) {
                f(S, M, "mapbox");
              }
              function v(S, M) {
                f(S, M, "map");
              }
              function f(S, M, C) {
                for (var m = M.currentTarget, L = m.getAttribute("data-val"), d = S._fullLayout, h = d._subplots[C] || [], E = 1.05, w = {}, z = 0; z < h.length; z++) {
                  var O = h[z], B = d[O].zoom, V = L === "in" ? E * B : B / E;
                  w[O + ".zoom"] = V;
                }
                b.call("_guiRelayout", S, w);
              }
              function _(S, M) {
                for (var C = S._fullLayout, m = C._subplots[M] || [], L = {}, d = 0; d < m.length; d++)
                  for (var h = m[d], E = C[h]._subplot, w = E.viewInitial, z = Object.keys(w), O = 0; O < z.length; O++) {
                    var B = z[O];
                    L[h + "." + B] = w[B];
                  }
                b.call("_guiRelayout", S, L);
              }
            }
          ),
          /***/
          87632: (
            /***/
            function(Y, K, e) {
              var b = e(5832), P = Object.keys(b), n = ["drawline", "drawopenpath", "drawclosedpath", "drawcircle", "drawrect", "eraseshape"], s = ["v1hovermode", "hoverclosest", "hovercompare", "togglehover", "togglespikelines"].concat(n), T = [], A = function(p) {
                if (s.indexOf(p._cat || p.name) === -1) {
                  var u = p.name, t = (p._cat || p.name).toLowerCase();
                  T.indexOf(u) === -1 && T.push(u), T.indexOf(t) === -1 && T.push(t);
                }
              };
              P.forEach(function(p) {
                A(b[p]);
              }), T.sort(), Y.exports = {
                DRAW_MODES: n,
                backButtons: s,
                foreButtons: T
              };
            }
          ),
          /***/
          17683: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(78766), n = e(78032), s = e(50308);
              Y.exports = function(A, p) {
                var u = A.modebar || {}, t = n.newContainer(p, "modebar");
                function r(a, l) {
                  return b.coerce(u, t, s, a, l);
                }
                r("orientation"), r("bgcolor", P.addOpacity(p.paper_bgcolor, 0.5));
                var i = P.contrast(P.rgb(p.modebar.bgcolor));
                r("color", P.addOpacity(i, 0.3)), r("activecolor", P.addOpacity(i, 0.7)), r("uirevision", p.uirevision), r("add"), r("remove");
              };
            }
          ),
          /***/
          95433: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                moduleType: "component",
                name: "modebar",
                layoutAttributes: e(50308),
                supplyLayoutDefaults: e(17683),
                manage: e(75442)
              };
            }
          ),
          /***/
          75442: (
            /***/
            function(Y, K, e) {
              var b = e(5975), P = e(64726), n = e(33626), s = e(36040).isUnifiedHover, T = e(85393), A = e(5832), p = e(87632).DRAW_MODES, u = e(34809).extendDeep;
              Y.exports = function(g) {
                var x = g._fullLayout, c = g._context, v = x._modeBar;
                if (!c.displayModeBar && !c.watermark) {
                  v && (v.destroy(), delete x._modeBar);
                  return;
                }
                if (!Array.isArray(c.modeBarButtonsToRemove))
                  throw new Error(["*modeBarButtonsToRemove* configuration options", "must be an array."].join(" "));
                if (!Array.isArray(c.modeBarButtonsToAdd))
                  throw new Error(["*modeBarButtonsToAdd* configuration options", "must be an array."].join(" "));
                var f = c.modeBarButtons, _;
                Array.isArray(f) && f.length ? _ = o(f) : !c.displayModeBar && c.watermark ? _ = [] : _ = t(g), v ? v.update(g, _) : x._modeBar = T(g, _);
              };
              function t(y) {
                var g = y._fullLayout, x = y._fullData, c = y._context;
                function v(X, ct) {
                  if (typeof ct == "string") {
                    if (ct.toLowerCase() === X.toLowerCase()) return !0;
                  } else {
                    var lt = ct.name, pt = ct._cat || ct.name;
                    if (lt === X || pt === X.toLowerCase()) return !0;
                  }
                  return !1;
                }
                var f = g.modebar.add;
                typeof f == "string" && (f = [f]);
                var _ = g.modebar.remove;
                typeof _ == "string" && (_ = [_]);
                var S = c.modeBarButtonsToAdd.concat(f.filter(function(X) {
                  for (var ct = 0; ct < c.modeBarButtonsToRemove.length; ct++)
                    if (v(X, c.modeBarButtonsToRemove[ct])) return !1;
                  return !0;
                })), M = c.modeBarButtonsToRemove.concat(_.filter(function(X) {
                  for (var ct = 0; ct < c.modeBarButtonsToAdd.length; ct++)
                    if (v(X, c.modeBarButtonsToAdd[ct])) return !1;
                  return !0;
                })), C = g._has("cartesian"), m = g._has("gl3d"), L = g._has("geo"), d = g._has("pie"), h = g._has("funnelarea"), E = g._has("gl2d"), w = g._has("ternary"), z = g._has("mapbox"), O = g._has("map"), B = g._has("polar"), V = g._has("smith"), U = g._has("sankey"), H = r(g), F = s(g.hovermode), G = [];
                function q(X) {
                  if (X.length) {
                    for (var ct = [], lt = 0; lt < X.length; lt++) {
                      for (var pt = X[lt], wt = A[pt], Et = wt.name.toLowerCase(), Ct = (wt._cat || wt.name).toLowerCase(), Gt = !1, Jt = 0; Jt < M.length; Jt++) {
                        var Qt = M[Jt].toLowerCase();
                        if (Qt === Et || Qt === Ct) {
                          Gt = !0;
                          break;
                        }
                      }
                      Gt || ct.push(A[pt]);
                    }
                    G.push(ct);
                  }
                }
                var rt = ["toImage"];
                c.showEditInChartStudio ? rt.push("editInChartStudio") : c.showSendToCloud && rt.push("sendDataToCloud"), q(rt);
                var st = [], vt = [], ht = [], et = [];
                (C || E || d || h || w) + L + m + z + O + B + V > 1 ? (vt = ["toggleHover"], ht = ["resetViews"]) : L ? (st = ["zoomInGeo", "zoomOutGeo"], vt = ["hoverClosestGeo"], ht = ["resetGeo"]) : m ? (vt = ["hoverClosest3d"], ht = ["resetCameraDefault3d", "resetCameraLastSave3d"]) : z ? (st = ["zoomInMapbox", "zoomOutMapbox"], vt = ["toggleHover"], ht = ["resetViewMapbox"]) : O ? (st = ["zoomInMap", "zoomOutMap"], vt = ["toggleHover"], ht = ["resetViewMap"]) : E ? vt = ["hoverClosestGl2d"] : d ? vt = ["hoverClosestPie"] : U ? (vt = ["hoverClosestCartesian", "hoverCompareCartesian"], ht = ["resetViewSankey"]) : vt = ["toggleHover"], C && vt.push("toggleSpikelines", "hoverClosestCartesian", "hoverCompareCartesian"), (a(x) || F) && (vt = []), (C || E) && !H && (st = ["zoomIn2d", "zoomOut2d", "autoScale2d"], ht[0] !== "resetViews" && (ht = ["resetScale2d"])), m ? et = ["zoom3d", "pan3d", "orbitRotation", "tableRotation"] : (C || E) && !H || w ? et = ["zoom2d", "pan2d"] : z || O || L ? et = ["pan2d"] : B && (et = ["zoom2d"]), i(x) && et.push("select2d", "lasso2d");
                var Q = [], j = function(X) {
                  Q.indexOf(X) === -1 && vt.indexOf(X) !== -1 && Q.push(X);
                };
                if (Array.isArray(S)) {
                  for (var at = [], ut = 0; ut < S.length; ut++) {
                    var nt = S[ut];
                    typeof nt == "string" ? (nt = nt.toLowerCase(), p.indexOf(nt) !== -1 ? (g._has("mapbox") || g._has("map") || // draw shapes in paper coordinate (could be improved in future to support data coordinate, when there is no pitch)
                    g._has("cartesian")) && et.push(nt) : nt === "togglespikelines" ? j("toggleSpikelines") : nt === "togglehover" ? j("toggleHover") : nt === "hovercompare" ? j("hoverCompareCartesian") : nt === "hoverclosest" ? (j("hoverClosestCartesian"), j("hoverClosestGeo"), j("hoverClosest3d"), j("hoverClosestGl2d"), j("hoverClosestPie")) : nt === "v1hovermode" && (j("hoverClosestCartesian"), j("hoverCompareCartesian"), j("hoverClosestGeo"), j("hoverClosest3d"), j("hoverClosestGl2d"), j("hoverClosestPie"))) : at.push(nt);
                  }
                  S = at;
                }
                return q(et), q(st.concat(ht)), q(Q), l(G, S);
              }
              function r(y) {
                for (var g = b.list({
                  _fullLayout: y
                }, null, !0), x = 0; x < g.length; x++)
                  if (!g[x].fixedrange)
                    return !1;
                return !0;
              }
              function i(y) {
                for (var g = !1, x = 0; x < y.length && !g; x++) {
                  var c = y[x];
                  !c._module || !c._module.selectPoints || (n.traceIs(c, "scatter-like") ? (P.hasMarkers(c) || P.hasText(c)) && (g = !0) : n.traceIs(c, "box-violin") ? (c.boxpoints === "all" || c.points === "all") && (g = !0) : g = !0);
                }
                return g;
              }
              function a(y) {
                for (var g = 0; g < y.length; g++)
                  if (!n.traceIs(y[g], "noHover")) return !1;
                return !0;
              }
              function l(y, g) {
                if (g.length)
                  if (Array.isArray(g[0]))
                    for (var x = 0; x < g.length; x++)
                      y.push(g[x]);
                  else y.push(g);
                return y;
              }
              function o(y) {
                for (var g = u([], y), x = 0; x < g.length; x++)
                  for (var c = g[x], v = 0; v < c.length; v++) {
                    var f = c[v];
                    if (typeof f == "string")
                      if (A[f] !== void 0)
                        g[x][v] = A[f];
                      else
                        throw new Error(["*modeBarButtons* configuration options", "invalid button name"].join(" "));
                  }
                return g;
              }
            }
          ),
          /***/
          85393: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(10721), n = e(34809), s = e(35188), T = e(29697).version, A = new DOMParser();
              function p(i) {
                this.container = i.container, this.element = document.createElement("div"), this.update(i.graphInfo, i.buttons), this.container.appendChild(this.element);
              }
              var u = p.prototype;
              u.update = function(i, a) {
                this.graphInfo = i;
                var l = this.graphInfo._context, o = this.graphInfo._fullLayout, y = "modebar-" + o._uid;
                this.element.setAttribute("id", y), this._uid = y, this.element.className = "modebar", l.displayModeBar === "hover" && (this.element.className += " modebar--hover ease-bg"), o.modebar.orientation === "v" && (this.element.className += " vertical", a = a.reverse());
                var g = o.modebar, x = l.displayModeBar === "hover" ? ".js-plotly-plot .plotly:hover " : "";
                n.deleteRelatedStyleRule(y), n.addRelatedStyleRule(y, x + "#" + y + " .modebar-group", "background-color: " + g.bgcolor), n.addRelatedStyleRule(y, "#" + y + " .modebar-btn .icon path", "fill: " + g.color), n.addRelatedStyleRule(y, "#" + y + " .modebar-btn:hover .icon path", "fill: " + g.activecolor), n.addRelatedStyleRule(y, "#" + y + " .modebar-btn.active .icon path", "fill: " + g.activecolor);
                var c = !this.hasButtons(a), v = this.hasLogo !== l.displaylogo, f = this.locale !== l.locale;
                if (this.locale = l.locale, (c || v || f) && (this.removeAllButtons(), this.updateButtons(a), l.watermark || l.displaylogo)) {
                  var _ = this.getLogo();
                  l.watermark && (_.className = _.className + " watermark"), o.modebar.orientation === "v" ? this.element.insertBefore(_, this.element.childNodes[0]) : this.element.appendChild(_), this.hasLogo = !0;
                }
                this.updateActiveButton();
              }, u.updateButtons = function(i) {
                var a = this;
                this.buttons = i, this.buttonElements = [], this.buttonsNames = [], this.buttons.forEach(function(l) {
                  var o = a.createGroup();
                  l.forEach(function(y) {
                    var g = y.name;
                    if (!g)
                      throw new Error("must provide button 'name' in button config");
                    if (a.buttonsNames.indexOf(g) !== -1)
                      throw new Error("button name '" + g + "' is taken");
                    a.buttonsNames.push(g);
                    var x = a.createButton(y);
                    a.buttonElements.push(x), o.appendChild(x);
                  }), a.element.appendChild(o);
                });
              }, u.createGroup = function() {
                var i = document.createElement("div");
                return i.className = "modebar-group", i;
              }, u.createButton = function(i) {
                var a = this, l = document.createElement("a");
                l.setAttribute("rel", "tooltip"), l.className = "modebar-btn";
                var o = i.title;
                o === void 0 ? o = i.name : typeof o == "function" && (o = o(this.graphInfo)), (o || o === 0) && l.setAttribute("data-title", o), i.attr !== void 0 && l.setAttribute("data-attr", i.attr);
                var y = i.val;
                y !== void 0 && (typeof y == "function" && (y = y(this.graphInfo)), l.setAttribute("data-val", y));
                var g = i.click;
                if (typeof g != "function")
                  throw new Error("must provide button 'click' function in button config");
                l.addEventListener("click", function(c) {
                  i.click(a.graphInfo, c), a.updateActiveButton(c.currentTarget);
                }), l.setAttribute("data-toggle", i.toggle || !1), i.toggle && b.select(l).classed("active", !0);
                var x = i.icon;
                return typeof x == "function" ? l.appendChild(x()) : l.appendChild(this.createIcon(x || s.question)), l.setAttribute("data-gravity", i.gravity || "n"), l;
              }, u.createIcon = function(i) {
                var a = P(i.height) ? Number(i.height) : i.ascent - i.descent, l = "http://www.w3.org/2000/svg", o;
                if (i.path) {
                  o = document.createElementNS(l, "svg"), o.setAttribute("viewBox", [0, 0, i.width, a].join(" ")), o.setAttribute("class", "icon");
                  var y = document.createElementNS(l, "path");
                  y.setAttribute("d", i.path), i.transform ? y.setAttribute("transform", i.transform) : i.ascent !== void 0 && y.setAttribute("transform", "matrix(1 0 0 -1 0 " + i.ascent + ")"), o.appendChild(y);
                }
                if (i.svg) {
                  var g = A.parseFromString(i.svg, "application/xml");
                  o = g.childNodes[0];
                }
                return o.setAttribute("height", "1em"), o.setAttribute("width", "1em"), o;
              }, u.updateActiveButton = function(i) {
                var a = this.graphInfo._fullLayout, l = i !== void 0 ? i.getAttribute("data-attr") : null;
                this.buttonElements.forEach(function(o) {
                  var y = o.getAttribute("data-val") || !0, g = o.getAttribute("data-attr"), x = o.getAttribute("data-toggle") === "true", c = b.select(o);
                  if (x)
                    g === l && c.classed("active", !c.classed("active"));
                  else {
                    var v = g === null ? g : n.nestedProperty(a, g).get();
                    c.classed("active", v === y);
                  }
                });
              }, u.hasButtons = function(i) {
                var a = this.buttons;
                if (!a || i.length !== a.length) return !1;
                for (var l = 0; l < i.length; ++l) {
                  if (i[l].length !== a[l].length) return !1;
                  for (var o = 0; o < i[l].length; o++)
                    if (i[l][o].name !== a[l][o].name) return !1;
                }
                return !0;
              };
              function t(i) {
                return i + " (v" + T + ")";
              }
              u.getLogo = function() {
                var i = this.createGroup(), a = document.createElement("a");
                return a.href = "https://plotly.com/", a.target = "_blank", a.setAttribute("data-title", t(n._(this.graphInfo, "Produced with Plotly.js"))), a.className = "modebar-btn plotlyjsicon modebar-btn--logo", a.appendChild(this.createIcon(s.newplotlylogo)), i.appendChild(a), i;
              }, u.removeAllButtons = function() {
                for (; this.element.firstChild; )
                  this.element.removeChild(this.element.firstChild);
                this.hasLogo = !1;
              }, u.destroy = function() {
                n.removeElement(this.container.querySelector(".modebar")), n.deleteRelatedStyleRule(this._uid);
              };
              function r(i, a) {
                var l = i._fullLayout, o = new p({
                  graphInfo: i,
                  container: l._modebardiv.node(),
                  buttons: a
                });
                return l._privateplot && b.select(o.element).append("span").classed("badge-private float--left", !0).text("PRIVATE"), o;
              }
              Y.exports = r;
            }
          ),
          /***/
          91032: (
            /***/
            function(Y, K, e) {
              var b = e(80337), P = e(10229), n = e(78032).templatedArray, s = n("button", {
                visible: {
                  valType: "boolean",
                  dflt: !0,
                  editType: "plot"
                },
                step: {
                  valType: "enumerated",
                  values: ["month", "year", "day", "hour", "minute", "second", "all"],
                  dflt: "month",
                  editType: "plot"
                },
                stepmode: {
                  valType: "enumerated",
                  values: ["backward", "todate"],
                  dflt: "backward",
                  editType: "plot"
                },
                count: {
                  valType: "number",
                  min: 0,
                  dflt: 1,
                  editType: "plot"
                },
                label: {
                  valType: "string",
                  editType: "plot"
                },
                editType: "plot"
              });
              Y.exports = {
                visible: {
                  valType: "boolean",
                  editType: "plot"
                },
                buttons: s,
                x: {
                  valType: "number",
                  min: -2,
                  max: 3,
                  editType: "plot"
                },
                xanchor: {
                  valType: "enumerated",
                  values: ["auto", "left", "center", "right"],
                  dflt: "left",
                  editType: "plot"
                },
                y: {
                  valType: "number",
                  min: -2,
                  max: 3,
                  editType: "plot"
                },
                yanchor: {
                  valType: "enumerated",
                  values: ["auto", "top", "middle", "bottom"],
                  dflt: "bottom",
                  editType: "plot"
                },
                font: b({
                  editType: "plot"
                }),
                bgcolor: {
                  valType: "color",
                  dflt: P.lightLine,
                  editType: "plot"
                },
                activecolor: {
                  valType: "color",
                  editType: "plot"
                },
                bordercolor: {
                  valType: "color",
                  dflt: P.defaultLine,
                  editType: "plot"
                },
                borderwidth: {
                  valType: "number",
                  min: 0,
                  dflt: 0,
                  editType: "plot"
                },
                editType: "plot"
              };
            }
          ),
          /***/
          68508: (
            /***/
            function(Y) {
              Y.exports = {
                // 'y' position pad above counter axis domain
                yPad: 0.02,
                // minimum button width (regardless of text size)
                minButtonWidth: 30,
                // buttons rect radii
                rx: 3,
                ry: 3,
                // light fraction used to compute the 'activecolor' default
                lightAmount: 25,
                darkAmount: 10
              };
            }
          ),
          /***/
          86255: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(78766), n = e(78032), s = e(59008), T = e(91032), A = e(68508);
              Y.exports = function(r, i, a, l, o) {
                var y = r.rangeselector || {}, g = n.newContainer(i, "rangeselector");
                function x(S, M) {
                  return b.coerce(y, g, T, S, M);
                }
                var c = s(y, g, {
                  name: "buttons",
                  handleItemDefaults: p,
                  calendar: o
                }), v = x("visible", c.length > 0);
                if (v) {
                  var f = u(i, a, l);
                  x("x", f[0]), x("y", f[1]), b.noneOrAll(r, i, ["x", "y"]), x("xanchor"), x("yanchor"), b.coerceFont(x, "font", a.font);
                  var _ = x("bgcolor");
                  x("activecolor", P.contrast(_, A.lightAmount, A.darkAmount)), x("bordercolor"), x("borderwidth");
                }
              };
              function p(t, r, i, a) {
                var l = a.calendar;
                function o(x, c) {
                  return b.coerce(t, r, T.buttons, x, c);
                }
                var y = o("visible");
                if (y) {
                  var g = o("step");
                  g !== "all" && (l && l !== "gregorian" && (g === "month" || g === "year") ? r.stepmode = "backward" : o("stepmode"), o("count")), o("label");
                }
              }
              function u(t, r, i) {
                for (var a = i.filter(function(g) {
                  return r[g].anchor === t._id;
                }), l = 0, o = 0; o < a.length; o++) {
                  var y = r[a[o]].domain;
                  y && (l = Math.max(y[1], l));
                }
                return [t.domain[0], l + A.yPad];
              }
            }
          ),
          /***/
          45431: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(33626), n = e(44122), s = e(78766), T = e(62203), A = e(34809), p = A.strTranslate, u = e(30635), t = e(5975), r = e(4530), i = r.LINE_SPACING, a = r.FROM_TL, l = r.FROM_BR, o = e(68508), y = e(16383);
              Y.exports = function(m) {
                var L = m._fullLayout, d = L._infolayer.selectAll(".rangeselector").data(g(m), x);
                d.enter().append("g").classed("rangeselector", !0), d.exit().remove(), d.style({
                  cursor: "pointer",
                  "pointer-events": "all"
                }), d.each(function(h) {
                  var E = b.select(this), w = h, z = w.rangeselector, O = E.selectAll("g.button").data(A.filterVisible(z.buttons));
                  O.enter().append("g").classed("button", !0), O.exit().remove(), O.each(function(B) {
                    var V = b.select(this), U = y(w, B);
                    B._isActive = c(w, B, U), V.call(v, z, B), V.call(_, z, B, m), V.on("click", function() {
                      m._dragged || P.call("_guiRelayout", m, U);
                    }), V.on("mouseover", function() {
                      B._isHovered = !0, V.call(v, z, B);
                    }), V.on("mouseout", function() {
                      B._isHovered = !1, V.call(v, z, B);
                    });
                  }), M(m, O, z, w._name, E);
                });
              };
              function g(C) {
                for (var m = t.list(C, "x", !0), L = [], d = 0; d < m.length; d++) {
                  var h = m[d];
                  h.rangeselector && h.rangeselector.visible && L.push(h);
                }
                return L;
              }
              function x(C) {
                return C._id;
              }
              function c(C, m, L) {
                if (m.step === "all")
                  return C.autorange === !0;
                var d = Object.keys(L);
                return C.range[0] === L[d[0]] && C.range[1] === L[d[1]];
              }
              function v(C, m, L) {
                var d = A.ensureSingle(C, "rect", "selector-rect", function(h) {
                  h.attr("shape-rendering", "crispEdges");
                });
                d.attr({
                  rx: o.rx,
                  ry: o.ry
                }), d.call(s.stroke, m.bordercolor).call(s.fill, f(m, L)).style("stroke-width", m.borderwidth + "px");
              }
              function f(C, m) {
                return m._isActive || m._isHovered ? C.activecolor : C.bgcolor;
              }
              function _(C, m, L, d) {
                function h(w) {
                  u.convertToTspans(w, d);
                }
                var E = A.ensureSingle(C, "text", "selector-text", function(w) {
                  w.attr("text-anchor", "middle");
                });
                E.call(T.font, m.font).text(S(L, d._fullLayout._meta)).call(h);
              }
              function S(C, m) {
                return C.label ? m ? A.templateString(C.label, m) : C.label : C.step === "all" ? "all" : C.count + C.step.charAt(0);
              }
              function M(C, m, L, d, h) {
                var E = 0, w = 0, z = L.borderwidth;
                m.each(function() {
                  var F = b.select(this), G = F.select(".selector-text"), q = L.font.size * i, rt = Math.max(q * u.lineCount(G), 16) + 3;
                  w = Math.max(w, rt);
                }), m.each(function() {
                  var F = b.select(this), G = F.select(".selector-rect"), q = F.select(".selector-text"), rt = q.node() && T.bBox(q.node()).width, st = L.font.size * i, vt = u.lineCount(q), ht = Math.max(rt + 10, o.minButtonWidth);
                  F.attr("transform", p(z + E, z)), G.attr({
                    x: 0,
                    y: 0,
                    width: ht,
                    height: w
                  }), u.positionText(q, ht / 2, w / 2 - (vt - 1) * st / 2 + 3), E += ht + 5;
                });
                var O = C._fullLayout._size, B = O.l + O.w * L.x, V = O.t + O.h * (1 - L.y), U = "left";
                A.isRightAnchor(L) && (B -= E, U = "right"), A.isCenterAnchor(L) && (B -= E / 2, U = "center");
                var H = "top";
                A.isBottomAnchor(L) && (V -= w, H = "bottom"), A.isMiddleAnchor(L) && (V -= w / 2, H = "middle"), E = Math.ceil(E), w = Math.ceil(w), B = Math.round(B), V = Math.round(V), n.autoMargin(C, d + "-range-selector", {
                  x: L.x,
                  y: L.y,
                  l: E * a[U],
                  r: E * l[U],
                  b: w * l[H],
                  t: w * a[H]
                }), h.attr("transform", p(B, V));
              }
            }
          ),
          /***/
          16383: (
            /***/
            function(Y, K, e) {
              var b = e(50936), P = e(34809).titleCase;
              Y.exports = function(T, A) {
                var p = T._name, u = {};
                if (A.step === "all")
                  u[p + ".autorange"] = !0;
                else {
                  var t = n(T, A);
                  u[p + ".range[0]"] = t[0], u[p + ".range[1]"] = t[1];
                }
                return u;
              };
              function n(s, T) {
                var A = s.range, p = new Date(s.r2l(A[1])), u = T.step, t = b["utc" + P(u)], r = T.count, i;
                switch (T.stepmode) {
                  case "backward":
                    i = s.l2r(+t.offset(p, -r));
                    break;
                  case "todate":
                    var a = t.offset(p, -r);
                    i = s.l2r(+t.ceil(a));
                    break;
                }
                var l = A[1];
                return [i, l];
              }
            }
          ),
          /***/
          44453: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                moduleType: "component",
                name: "rangeselector",
                schema: {
                  subplots: {
                    xaxis: {
                      rangeselector: e(91032)
                    }
                  }
                },
                layoutAttributes: e(91032),
                handleDefaults: e(86255),
                draw: e(45431)
              };
            }
          ),
          /***/
          63608: (
            /***/
            function(Y, K, e) {
              var b = e(10229);
              Y.exports = {
                bgcolor: {
                  valType: "color",
                  dflt: b.background,
                  editType: "plot"
                },
                bordercolor: {
                  valType: "color",
                  dflt: b.defaultLine,
                  editType: "plot"
                },
                borderwidth: {
                  valType: "integer",
                  dflt: 0,
                  min: 0,
                  editType: "plot"
                },
                autorange: {
                  valType: "boolean",
                  dflt: !0,
                  editType: "calc",
                  impliedEdits: {
                    "range[0]": void 0,
                    "range[1]": void 0
                  }
                },
                range: {
                  valType: "info_array",
                  items: [{
                    valType: "any",
                    editType: "calc",
                    impliedEdits: {
                      "^autorange": !1
                    }
                  }, {
                    valType: "any",
                    editType: "calc",
                    impliedEdits: {
                      "^autorange": !1
                    }
                  }],
                  editType: "calc",
                  impliedEdits: {
                    autorange: !1
                  }
                },
                thickness: {
                  valType: "number",
                  dflt: 0.15,
                  min: 0,
                  max: 1,
                  editType: "plot"
                },
                visible: {
                  valType: "boolean",
                  dflt: !0,
                  editType: "calc"
                },
                editType: "calc"
              };
            }
          ),
          /***/
          46223: (
            /***/
            function(Y, K, e) {
              var b = e(5975).list, P = e(32919).getAutoRange, n = e(20604);
              Y.exports = function(T) {
                for (var A = b(T, "x", !0), p = 0; p < A.length; p++) {
                  var u = A[p], t = u[n.name];
                  t && t.visible && t.autorange && (t._input.autorange = !0, t._input.range = t.range = P(T, u));
                }
              };
            }
          ),
          /***/
          20604: (
            /***/
            function(Y) {
              Y.exports = {
                // attribute container name
                name: "rangeslider",
                // class names
                containerClassName: "rangeslider-container",
                bgClassName: "rangeslider-bg",
                rangePlotClassName: "rangeslider-rangeplot",
                maskMinClassName: "rangeslider-mask-min",
                maskMaxClassName: "rangeslider-mask-max",
                slideBoxClassName: "rangeslider-slidebox",
                grabberMinClassName: "rangeslider-grabber-min",
                grabAreaMinClassName: "rangeslider-grabarea-min",
                handleMinClassName: "rangeslider-handle-min",
                grabberMaxClassName: "rangeslider-grabber-max",
                grabAreaMaxClassName: "rangeslider-grabarea-max",
                handleMaxClassName: "rangeslider-handle-max",
                maskMinOppAxisClassName: "rangeslider-mask-min-opp-axis",
                maskMaxOppAxisClassName: "rangeslider-mask-max-opp-axis",
                // style constants
                maskColor: "rgba(0,0,0,0.4)",
                maskOppAxisColor: "rgba(0,0,0,0.2)",
                slideBoxFill: "transparent",
                slideBoxCursor: "ew-resize",
                grabAreaFill: "transparent",
                grabAreaCursor: "col-resize",
                grabAreaWidth: 10,
                handleWidth: 4,
                handleRadius: 1,
                handleStrokeWidth: 1,
                extraPad: 15
              };
            }
          ),
          /***/
          41295: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(78032), n = e(5975), s = e(63608), T = e(66249);
              Y.exports = function(p, u, t) {
                var r = p[t], i = u[t];
                if (!(r.rangeslider || u._requestRangeslider[i._id])) return;
                b.isPlainObject(r.rangeslider) || (r.rangeslider = {});
                var a = r.rangeslider, l = P.newContainer(i, "rangeslider");
                function o(d, h) {
                  return b.coerce(a, l, s, d, h);
                }
                var y, g;
                function x(d, h) {
                  return b.coerce(y, g, T, d, h);
                }
                var c = o("visible");
                if (c) {
                  o("bgcolor", u.plot_bgcolor), o("bordercolor"), o("borderwidth"), o("thickness"), o("autorange", !i.isValidRange(a.range)), o("range");
                  var v = u._subplots;
                  if (v)
                    for (var f = v.cartesian.filter(function(d) {
                      return d.substr(0, d.indexOf("y")) === n.name2id(t);
                    }).map(function(d) {
                      return d.substr(d.indexOf("y"), d.length);
                    }), _ = b.simpleMap(f, n.id2name), S = 0; S < _.length; S++) {
                      var M = _[S];
                      y = a[M] || {}, g = P.newContainer(l, M, "yaxis");
                      var C = u[M], m;
                      y.range && C.isValidRange(y.range) && (m = "fixed");
                      var L = x("rangemode", m);
                      L !== "match" && x("range", C.range.slice());
                    }
                  l._input = a;
                }
              };
            }
          ),
          /***/
          88887: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(33626), n = e(44122), s = e(34809), T = s.strTranslate, A = e(62203), p = e(78766), u = e(17240), t = e(37703), r = e(5975), i = e(14751), a = e(27983), l = e(20604);
              Y.exports = function(m) {
                for (var L = m._fullLayout, d = L._rangeSliderData, h = 0; h < d.length; h++) {
                  var E = d[h][l.name];
                  E._clipId = E._id + "-" + L._uid;
                }
                function w(O) {
                  return O._name;
                }
                var z = L._infolayer.selectAll("g." + l.containerClassName).data(d, w);
                z.exit().each(function(O) {
                  var B = O[l.name];
                  L._topdefs.select("#" + B._clipId).remove();
                }).remove(), d.length !== 0 && (z.enter().append("g").classed(l.containerClassName, !0).attr("pointer-events", "all"), z.each(function(O) {
                  var B = b.select(this), V = O[l.name], U = L[r.id2name(O.anchor)], H = V[r.id2name(O.anchor)];
                  if (V.range) {
                    var F = s.simpleMap(V.range, O.r2l), G = s.simpleMap(O.range, O.r2l), q;
                    G[0] < G[1] ? q = [Math.min(F[0], G[0]), Math.max(F[1], G[1])] : q = [Math.max(F[0], G[0]), Math.min(F[1], G[1])], V.range = V._input.range = s.simpleMap(q, O.l2r);
                  }
                  O.cleanRange("rangeslider.range");
                  var rt = L._size, st = O.domain;
                  V._width = rt.w * (st[1] - st[0]);
                  var vt = Math.round(rt.l + rt.w * st[0]), ht = Math.round(rt.t + rt.h * (1 - O._counterDomainMin) + (O.side === "bottom" ? O._depth : 0) + V._offsetShift + l.extraPad);
                  B.attr("transform", T(vt, ht)), V._rl = s.simpleMap(V.range, O.r2l);
                  var et = V._rl[0], Q = V._rl[1], j = Q - et;
                  if (V.p2d = function(Ct) {
                    return Ct / V._width * j + et;
                  }, V.d2p = function(Ct) {
                    return (Ct - et) / j * V._width;
                  }, O.rangebreaks) {
                    var at = O.locateBreaks(et, Q);
                    if (at.length) {
                      var ut, nt, X = 0;
                      for (ut = 0; ut < at.length; ut++)
                        nt = at[ut], X += nt.max - nt.min;
                      var ct = V._width / (Q - et - X), lt = [-ct * et];
                      for (ut = 0; ut < at.length; ut++)
                        nt = at[ut], lt.push(lt[lt.length - 1] - ct * (nt.max - nt.min));
                      for (V.d2p = function(Ct) {
                        for (var Gt = lt[0], Jt = 0; Jt < at.length; Jt++) {
                          var Qt = at[Jt];
                          if (Ct >= Qt.max) Gt = lt[Jt + 1];
                          else if (Ct < Qt.min) break;
                        }
                        return Gt + ct * Ct;
                      }, ut = 0; ut < at.length; ut++)
                        nt = at[ut], nt.pmin = V.d2p(nt.min), nt.pmax = V.d2p(nt.max);
                      V.p2d = function(Ct) {
                        for (var Gt = lt[0], Jt = 0; Jt < at.length; Jt++) {
                          var Qt = at[Jt];
                          if (Ct >= Qt.pmax) Gt = lt[Jt + 1];
                          else if (Ct < Qt.pmin) break;
                        }
                        return (Ct - Gt) / ct;
                      };
                    }
                  }
                  if (H.rangemode !== "match") {
                    var pt = U.r2l(H.range[0]), wt = U.r2l(H.range[1]), Et = wt - pt;
                    V.d2pOppAxis = function(Ct) {
                      return (Ct - pt) / Et * V._height;
                    };
                  }
                  B.call(c, m, O, V).call(v, m, O, V).call(f, m, O, V).call(S, m, O, V, H).call(M, m, O, V).call(C, m, O, V), y(B, m, O, V), x(B, m, O, V, U, H), O.side === "bottom" && u.draw(m, O._id + "title", {
                    propContainer: O,
                    propName: O._name + ".title",
                    placeholder: L._dfltTitle.x,
                    attributes: {
                      x: O._offset + O._length / 2,
                      y: ht + V._height + V._offsetShift + 10 + 1.5 * O.title.font.size,
                      "text-anchor": "middle"
                    }
                  });
                }));
              };
              function o(m) {
                return typeof m.clientX == "number" ? m.clientX : m.touches && m.touches.length > 0 ? m.touches[0].clientX : 0;
              }
              function y(m, L, d, h) {
                if (L._context.staticPlot) return;
                var E = m.select("rect." + l.slideBoxClassName).node(), w = m.select("rect." + l.grabAreaMinClassName).node(), z = m.select("rect." + l.grabAreaMaxClassName).node();
                function O() {
                  var B = b.event, V = B.target, U = o(B), H = U - m.node().getBoundingClientRect().left, F = h.d2p(d._rl[0]), G = h.d2p(d._rl[1]), q = i.coverSlip();
                  this.addEventListener("touchmove", rt), this.addEventListener("touchend", st), q.addEventListener("mousemove", rt), q.addEventListener("mouseup", st);
                  function rt(vt) {
                    var ht = o(vt), et = +ht - U, Q, j, at;
                    switch (V) {
                      case E:
                        if (at = "ew-resize", F + et > d._length || G + et < 0)
                          return;
                        Q = F + et, j = G + et;
                        break;
                      case w:
                        if (at = "col-resize", F + et > d._length)
                          return;
                        Q = F + et, j = G;
                        break;
                      case z:
                        if (at = "col-resize", G + et < 0)
                          return;
                        Q = F, j = G + et;
                        break;
                      default:
                        at = "ew-resize", Q = H, j = H + et;
                        break;
                    }
                    if (j < Q) {
                      var ut = j;
                      j = Q, Q = ut;
                    }
                    h._pixelMin = Q, h._pixelMax = j, a(b.select(q), at), g(m, L, d, h);
                  }
                  function st() {
                    q.removeEventListener("mousemove", rt), q.removeEventListener("mouseup", st), this.removeEventListener("touchmove", rt), this.removeEventListener("touchend", st), s.removeElement(q);
                  }
                }
                m.on("mousedown", O), m.on("touchstart", O);
              }
              function g(m, L, d, h) {
                function E(O) {
                  return d.l2r(s.constrain(O, h._rl[0], h._rl[1]));
                }
                var w = E(h.p2d(h._pixelMin)), z = E(h.p2d(h._pixelMax));
                window.requestAnimationFrame(function() {
                  P.call("_guiRelayout", L, d._name + ".range", [w, z]);
                });
              }
              function x(m, L, d, h, E, w) {
                var z = l.handleWidth / 2;
                function O(vt) {
                  return s.constrain(vt, 0, h._width);
                }
                function B(vt) {
                  return s.constrain(vt, 0, h._height);
                }
                function V(vt) {
                  return s.constrain(vt, -z, h._width + z);
                }
                var U = O(h.d2p(d._rl[0])), H = O(h.d2p(d._rl[1]));
                if (m.select("rect." + l.slideBoxClassName).attr("x", U).attr("width", H - U), m.select("rect." + l.maskMinClassName).attr("width", U), m.select("rect." + l.maskMaxClassName).attr("x", H).attr("width", h._width - H), w.rangemode !== "match") {
                  var F = h._height - B(h.d2pOppAxis(E._rl[1])), G = h._height - B(h.d2pOppAxis(E._rl[0]));
                  m.select("rect." + l.maskMinOppAxisClassName).attr("x", U).attr("height", F).attr("width", H - U), m.select("rect." + l.maskMaxOppAxisClassName).attr("x", U).attr("y", G).attr("height", h._height - G).attr("width", H - U), m.select("rect." + l.slideBoxClassName).attr("y", F).attr("height", G - F);
                }
                var q = 0.5, rt = Math.round(V(U - z)) - q, st = Math.round(V(H - z)) + q;
                m.select("g." + l.grabberMinClassName).attr("transform", T(rt, q)), m.select("g." + l.grabberMaxClassName).attr("transform", T(st, q));
              }
              function c(m, L, d, h) {
                var E = s.ensureSingle(m, "rect", l.bgClassName, function(B) {
                  B.attr({
                    x: 0,
                    y: 0,
                    "shape-rendering": "crispEdges"
                  });
                }), w = h.borderwidth % 2 === 0 ? h.borderwidth : h.borderwidth - 1, z = -h._offsetShift, O = A.crispRound(L, h.borderwidth);
                E.attr({
                  width: h._width + w,
                  height: h._height + w,
                  transform: T(z, z),
                  "stroke-width": O
                }).call(p.stroke, h.bordercolor).call(p.fill, h.bgcolor);
              }
              function v(m, L, d, h) {
                var E = L._fullLayout, w = s.ensureSingleById(E._topdefs, "clipPath", h._clipId, function(z) {
                  z.append("rect").attr({
                    x: 0,
                    y: 0
                  });
                });
                w.select("rect").attr({
                  width: h._width,
                  height: h._height
                });
              }
              function f(m, L, d, h) {
                var E = L.calcdata, w = m.selectAll("g." + l.rangePlotClassName).data(d._subplotsWith, s.identity);
                w.enter().append("g").attr("class", function(O) {
                  return l.rangePlotClassName + " " + O;
                }).call(A.setClipUrl, h._clipId, L), w.order(), w.exit().remove();
                var z;
                w.each(function(O, B) {
                  var V = b.select(this), U = B === 0, H = r.getFromId(L, O, "y"), F = H._name, G = h[F], q = {
                    data: [],
                    layout: {
                      xaxis: {
                        type: d.type,
                        domain: [0, 1],
                        range: h.range.slice(),
                        calendar: d.calendar
                      },
                      width: h._width,
                      height: h._height,
                      margin: {
                        t: 0,
                        b: 0,
                        l: 0,
                        r: 0
                      }
                    },
                    _context: L._context
                  };
                  d.rangebreaks && (q.layout.xaxis.rangebreaks = d.rangebreaks), q.layout[F] = {
                    type: H.type,
                    domain: [0, 1],
                    range: G.rangemode !== "match" ? G.range.slice() : H.range.slice(),
                    calendar: H.calendar
                  }, H.rangebreaks && (q.layout[F].rangebreaks = H.rangebreaks), n.supplyDefaults(q);
                  var rt = q._fullLayout.xaxis, st = q._fullLayout[F];
                  rt.clearCalc(), rt.setScale(), st.clearCalc(), st.setScale();
                  var vt = {
                    id: O,
                    plotgroup: V,
                    xaxis: rt,
                    yaxis: st,
                    isRangePlot: !0
                  };
                  U ? z = vt : (vt.mainplot = "xy", vt.mainplotinfo = z), t.rangePlot(L, vt, _(E, O));
                });
              }
              function _(m, L) {
                for (var d = [], h = 0; h < m.length; h++) {
                  var E = m[h], w = E[0].trace;
                  w.xaxis + w.yaxis === L && d.push(E);
                }
                return d;
              }
              function S(m, L, d, h, E) {
                var w = s.ensureSingle(m, "rect", l.maskMinClassName, function(V) {
                  V.attr({
                    x: 0,
                    y: 0,
                    "shape-rendering": "crispEdges"
                  });
                });
                w.attr("height", h._height).call(p.fill, l.maskColor);
                var z = s.ensureSingle(m, "rect", l.maskMaxClassName, function(V) {
                  V.attr({
                    y: 0,
                    "shape-rendering": "crispEdges"
                  });
                });
                if (z.attr("height", h._height).call(p.fill, l.maskColor), E.rangemode !== "match") {
                  var O = s.ensureSingle(m, "rect", l.maskMinOppAxisClassName, function(V) {
                    V.attr({
                      y: 0,
                      "shape-rendering": "crispEdges"
                    });
                  });
                  O.attr("width", h._width).call(p.fill, l.maskOppAxisColor);
                  var B = s.ensureSingle(m, "rect", l.maskMaxOppAxisClassName, function(V) {
                    V.attr({
                      y: 0,
                      "shape-rendering": "crispEdges"
                    });
                  });
                  B.attr("width", h._width).style("border-top", l.maskOppBorder).call(p.fill, l.maskOppAxisColor);
                }
              }
              function M(m, L, d, h) {
                if (!L._context.staticPlot) {
                  var E = s.ensureSingle(m, "rect", l.slideBoxClassName, function(w) {
                    w.attr({
                      y: 0,
                      cursor: l.slideBoxCursor,
                      "shape-rendering": "crispEdges"
                    });
                  });
                  E.attr({
                    height: h._height,
                    fill: l.slideBoxFill
                  });
                }
              }
              function C(m, L, d, h) {
                var E = s.ensureSingle(m, "g", l.grabberMinClassName), w = s.ensureSingle(m, "g", l.grabberMaxClassName), z = {
                  x: 0,
                  width: l.handleWidth,
                  rx: l.handleRadius,
                  fill: p.background,
                  stroke: p.defaultLine,
                  "stroke-width": l.handleStrokeWidth,
                  "shape-rendering": "crispEdges"
                }, O = {
                  y: Math.round(h._height / 4),
                  height: Math.round(h._height / 2)
                }, B = s.ensureSingle(E, "rect", l.handleMinClassName, function(G) {
                  G.attr(z);
                });
                B.attr(O);
                var V = s.ensureSingle(w, "rect", l.handleMaxClassName, function(G) {
                  G.attr(z);
                });
                V.attr(O);
                var U = {
                  width: l.grabAreaWidth,
                  x: 0,
                  y: 0,
                  fill: l.grabAreaFill,
                  cursor: L._context.staticPlot ? void 0 : l.grabAreaCursor
                }, H = s.ensureSingle(E, "rect", l.grabAreaMinClassName, function(G) {
                  G.attr(U);
                });
                H.attr("height", h._height);
                var F = s.ensureSingle(w, "rect", l.grabAreaMaxClassName, function(G) {
                  G.attr(U);
                });
                F.attr("height", h._height);
              }
            }
          ),
          /***/
          80400: (
            /***/
            function(Y, K, e) {
              var b = e(5975), P = e(30635), n = e(20604), s = e(4530).LINE_SPACING, T = n.name;
              function A(p) {
                var u = p && p[T];
                return u && u.visible;
              }
              K.isVisible = A, K.makeData = function(p) {
                var u = b.list({
                  _fullLayout: p
                }, "x", !0), t = p.margin, r = [];
                if (!p._has("gl2d"))
                  for (var i = 0; i < u.length; i++) {
                    var a = u[i];
                    if (A(a)) {
                      r.push(a);
                      var l = a[T];
                      l._id = T + a._id, l._height = (p.height - t.b - t.t) * l.thickness, l._offsetShift = Math.floor(l.borderwidth / 2);
                    }
                  }
                p._rangeSliderData = r;
              }, K.autoMarginOpts = function(p, u) {
                var t = p._fullLayout, r = u[T], i = u._id.charAt(0), a = 0, l = 0;
                if (u.side === "bottom" && (a = u._depth, u.title.text !== t._dfltTitle[i])) {
                  l = 1.5 * u.title.font.size + 10 + r._offsetShift;
                  var o = (u.title.text.match(P.BR_TAG_ALL) || []).length;
                  l += o * u.title.font.size * s;
                }
                return {
                  x: 0,
                  y: u._counterDomainMin,
                  l: 0,
                  r: 0,
                  t: 0,
                  b: r._height + a + Math.max(t.margin.b, l),
                  pad: n.extraPad + r._offsetShift * 2
                };
              };
            }
          ),
          /***/
          55429: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(63608), n = e(66249), s = e(80400);
              Y.exports = {
                moduleType: "component",
                name: "rangeslider",
                schema: {
                  subplots: {
                    xaxis: {
                      rangeslider: b.extendFlat({}, P, {
                        yaxis: n
                      })
                    }
                  }
                },
                layoutAttributes: e(63608),
                handleDefaults: e(41295),
                calcAutorange: e(46223),
                draw: e(88887),
                isVisible: s.isVisible,
                makeData: s.makeData,
                autoMarginOpts: s.autoMarginOpts
              };
            }
          ),
          /***/
          66249: (
            /***/
            function(Y) {
              Y.exports = {
                // not really a 'subplot' attribute container,
                // but this is the flag we use to denote attributes that
                // support yaxis, yaxis2, yaxis3, ... counters
                _isSubplotObj: !0,
                rangemode: {
                  valType: "enumerated",
                  values: ["auto", "fixed", "match"],
                  dflt: "match",
                  editType: "calc"
                },
                range: {
                  valType: "info_array",
                  items: [{
                    valType: "any",
                    editType: "plot"
                  }, {
                    valType: "any",
                    editType: "plot"
                  }],
                  editType: "plot"
                },
                editType: "calc"
              };
            }
          ),
          /***/
          4327: (
            /***/
            function(Y, K, e) {
              var b = e(50222), P = e(36640).line, n = e(94850).T, s = e(93049).extendFlat, T = e(13582).overrideAll, A = e(78032).templatedArray;
              e(35081), Y.exports = T(A("selection", {
                type: {
                  valType: "enumerated",
                  values: ["rect", "path"]
                },
                xref: s({}, b.xref, {}),
                yref: s({}, b.yref, {}),
                x0: {
                  valType: "any"
                },
                x1: {
                  valType: "any"
                },
                y0: {
                  valType: "any"
                },
                y1: {
                  valType: "any"
                },
                path: {
                  valType: "string",
                  editType: "arraydraw"
                },
                opacity: {
                  valType: "number",
                  min: 0,
                  max: 1,
                  dflt: 0.7,
                  editType: "arraydraw"
                },
                line: {
                  color: P.color,
                  width: s({}, P.width, {
                    min: 1,
                    dflt: 1
                  }),
                  dash: s({}, n, {
                    dflt: "dot"
                  })
                }
              }), "arraydraw", "from-root");
            }
          ),
          /***/
          78865: (
            /***/
            function(Y) {
              Y.exports = {
                // max pixels off straight before a lasso select line counts as bent
                BENDPX: 1.5,
                // smallest dimension allowed for a select box
                MINSELECT: 12,
                // throttling limit (ms) for selectPoints calls
                SELECTDELAY: 100,
                // cache ID suffix for throttle
                SELECTID: "-select"
              };
            }
          ),
          /***/
          2272: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(29714), n = e(59008), s = e(4327), T = e(49728);
              Y.exports = function(u, t) {
                n(u, t, {
                  name: "selections",
                  handleItemDefaults: A
                });
                for (var r = t.selections, i = 0; i < r.length; i++) {
                  var a = r[i];
                  a && a.path === void 0 && (a.x0 === void 0 || a.x1 === void 0 || a.y0 === void 0 || a.y1 === void 0) && (t.selections[i] = null);
                }
              };
              function A(p, u, t) {
                function r(E, w) {
                  return b.coerce(p, u, s, E, w);
                }
                var i = r("path"), a = i ? "path" : "rect", l = r("type", a), o = l !== "path";
                o && delete u.path, r("opacity"), r("line.color"), r("line.width"), r("line.dash");
                for (var y = ["x", "y"], g = 0; g < 2; g++) {
                  var x = y[g], c = {
                    _fullLayout: t
                  }, v, f, _, S = P.coerceRef(p, u, c, x);
                  if (v = P.getFromId(c, S), v._selectionIndices.push(u._index), _ = T.rangeToShapePosition(v), f = T.shapePositionToRange(v), o) {
                    var M = x + "0", C = x + "1", m = p[M], L = p[C];
                    p[M] = f(p[M], !0), p[C] = f(p[C], !0), P.coercePosition(u, c, r, S, M), P.coercePosition(u, c, r, S, C);
                    var d = u[M], h = u[C];
                    d !== void 0 && h !== void 0 && (u[M] = _(d), u[C] = _(h), p[M] = m, p[C] = L);
                  }
                }
                o && b.noneOrAll(p, u, ["x0", "x1", "y0", "y1"]);
              }
            }
          ),
          /***/
          7028: (
            /***/
            function(Y, K, e) {
              var b = e(81055).readPaths, P = e(561), n = e(78534).clearOutlineControllers, s = e(78766), T = e(62203), A = e(78032).arrayEditor, p = e(49728), u = p.getPathString;
              Y.exports = {
                draw: t,
                drawOne: i,
                activateLastSelection: o
              };
              function t(g) {
                var x = g._fullLayout;
                n(g), x._selectionLayer.selectAll("path").remove();
                for (var c in x._plots) {
                  var v = x._plots[c].selectionLayer;
                  v && v.selectAll("path").remove();
                }
                for (var f = 0; f < x.selections.length; f++)
                  i(g, f);
              }
              function r(g) {
                return g._context.editSelection;
              }
              function i(g, x) {
                g._fullLayout._paperdiv.selectAll('.selectionlayer [data-index="' + x + '"]').remove();
                var c = p.makeSelectionsOptionsAndPlotinfo(g, x), v = c.options, f = c.plotinfo;
                if (!v._input) return;
                _(g._fullLayout._selectionLayer);
                function _(S) {
                  var M = u(g, v), C = {
                    "data-index": x,
                    "fill-rule": "evenodd",
                    d: M
                  }, m = v.opacity, L = "rgba(0,0,0,0)", d = v.line.color || s.contrast(g._fullLayout.plot_bgcolor), h = v.line.width, E = v.line.dash;
                  h || (h = 5, E = "solid");
                  var w = r(g) && g._fullLayout._activeSelectionIndex === x;
                  w && (L = g._fullLayout.activeselection.fillcolor, m = g._fullLayout.activeselection.opacity);
                  for (var z = [], O = 1; O >= 0; O--) {
                    var B = S.append("path").attr(C).style("opacity", O ? 0.1 : m).call(s.stroke, d).call(s.fill, L).call(T.dashLine, O ? "solid" : E, O ? 4 + h : h);
                    if (a(B, g, v), w) {
                      var V = A(g.layout, "selections", v);
                      B.style({
                        cursor: "move"
                      });
                      var U = {
                        element: B.node(),
                        plotinfo: f,
                        gd: g,
                        editHelpers: V,
                        isActiveSelection: !0
                        // i.e. to enable controllers
                      }, H = b(M, g);
                      P(H, B, U);
                    } else
                      B.style("pointer-events", O ? "all" : "none");
                    z[O] = B;
                  }
                  var F = z[0], G = z[1];
                  G.node().addEventListener("click", function() {
                    return l(g, F);
                  });
                }
              }
              function a(g, x, c) {
                var v = c.xref + c.yref;
                T.setClipUrl(g, "clip" + x._fullLayout._uid + v, x);
              }
              function l(g, x) {
                if (r(g)) {
                  var c = x.node(), v = +c.getAttribute("data-index");
                  if (v >= 0) {
                    if (v === g._fullLayout._activeSelectionIndex) {
                      y(g);
                      return;
                    }
                    g._fullLayout._activeSelectionIndex = v, g._fullLayout._deactivateSelection = y, t(g);
                  }
                }
              }
              function o(g) {
                if (r(g)) {
                  var x = g._fullLayout.selections.length - 1;
                  g._fullLayout._activeSelectionIndex = x, g._fullLayout._deactivateSelection = y, t(g);
                }
              }
              function y(g) {
                if (r(g)) {
                  var x = g._fullLayout._activeSelectionIndex;
                  x >= 0 && (n(g), delete g._fullLayout._activeSelectionIndex, t(g));
                }
              }
            }
          ),
          /***/
          52307: (
            /***/
            function(Y, K, e) {
              var b = e(94850).T, P = e(93049).extendFlat;
              Y.exports = {
                newselection: {
                  mode: {
                    valType: "enumerated",
                    values: ["immediate", "gradual"],
                    dflt: "immediate",
                    editType: "none"
                  },
                  line: {
                    color: {
                      valType: "color",
                      editType: "none"
                    },
                    width: {
                      valType: "number",
                      min: 1,
                      dflt: 1,
                      editType: "none"
                    },
                    dash: P({}, b, {
                      dflt: "dot",
                      editType: "none"
                    }),
                    editType: "none"
                  },
                  // no drawdirection here noting that layout.selectdirection is used instead.
                  editType: "none"
                },
                activeselection: {
                  fillcolor: {
                    valType: "color",
                    dflt: "rgba(0,0,0,0)",
                    editType: "none"
                  },
                  opacity: {
                    valType: "number",
                    min: 0,
                    max: 1,
                    dflt: 0.5,
                    editType: "none"
                  },
                  editType: "none"
                }
              };
            }
          ),
          /***/
          43028: (
            /***/
            function(Y) {
              Y.exports = function(e, b, P) {
                P("newselection.mode");
                var n = P("newselection.line.width");
                n && (P("newselection.line.color"), P("newselection.line.dash")), P("activeselection.fillcolor"), P("activeselection.opacity");
              };
            }
          ),
          /***/
          51817: (
            /***/
            function(Y, K, e) {
              var b = e(70414), P = b.selectMode, n = e(78534), s = n.clearOutline, T = e(81055), A = T.readPaths, p = T.writePaths, u = T.fixDatesForPaths;
              Y.exports = function(r, i) {
                if (r.length) {
                  var a = r[0][0];
                  if (a) {
                    var l = a.getAttribute("d"), o = i.gd, y = o._fullLayout.newselection, g = i.plotinfo, x = g.xaxis, c = g.yaxis, v = i.isActiveSelection, f = i.dragmode, _ = (o.layout || {}).selections || [];
                    if (!P(f) && v !== void 0) {
                      var S = o._fullLayout._activeSelectionIndex;
                      if (S < _.length)
                        switch (o._fullLayout.selections[S].type) {
                          case "rect":
                            f = "select";
                            break;
                          case "path":
                            f = "lasso";
                            break;
                        }
                    }
                    var M = A(l, o, g, v), C = {
                      xref: x._id,
                      yref: c._id,
                      opacity: y.opacity,
                      line: {
                        color: y.line.color,
                        width: y.line.width,
                        dash: y.line.dash
                      }
                    }, m;
                    M.length === 1 && (m = M[0]), m && m.length === 5 && // ensure we only have 4 corners for a rect
                    f === "select" ? (C.type = "rect", C.x0 = m[0][1], C.y0 = m[0][2], C.x1 = m[2][1], C.y1 = m[2][2]) : (C.type = "path", x && c && u(M, x, c), C.path = p(M), m = null), s(o);
                    for (var L = i.editHelpers, d = (L || {}).modifyItem, h = [], E = 0; E < _.length; E++) {
                      var w = o._fullLayout.selections[E];
                      if (!w) {
                        h[E] = w;
                        continue;
                      }
                      if (h[E] = w._input, v !== void 0 && E === o._fullLayout._activeSelectionIndex) {
                        var z = C;
                        switch (w.type) {
                          case "rect":
                            d("x0", z.x0), d("x1", z.x1), d("y0", z.y0), d("y1", z.y1);
                            break;
                          case "path":
                            d("path", z.path);
                            break;
                        }
                      }
                    }
                    return v === void 0 ? (h.push(C), h) : L ? L.getUpdateObj() : {};
                  }
                }
              };
            }
          ),
          /***/
          49801: (
            /***/
            function(Y, K, e) {
              var b = e(34809).strTranslate;
              function P(A, p) {
                switch (A.type) {
                  case "log":
                    return A.p2d(p);
                  case "date":
                    return A.p2r(p, 0, A.calendar);
                  default:
                    return A.p2r(p);
                }
              }
              function n(A, p) {
                switch (A.type) {
                  case "log":
                    return A.d2p(p);
                  case "date":
                    return A.r2p(p, 0, A.calendar);
                  default:
                    return A.r2p(p);
                }
              }
              function s(A) {
                var p = A._id.charAt(0) === "y" ? 1 : 0;
                return function(u) {
                  return P(A, u[p]);
                };
              }
              function T(A) {
                return b(A.xaxis._offset, A.yaxis._offset);
              }
              Y.exports = {
                p2r: P,
                r2p: n,
                axValue: s,
                getTransform: T
              };
            }
          ),
          /***/
          44844: (
            /***/
            function(Y, K, e) {
              var b = e(7028), P = e(88666);
              Y.exports = {
                moduleType: "component",
                name: "selections",
                layoutAttributes: e(4327),
                supplyLayoutDefaults: e(2272),
                supplyDrawNewSelectionDefaults: e(43028),
                includeBasePlot: e(20706)("selections"),
                draw: b.draw,
                drawOne: b.drawOne,
                reselect: P.reselect,
                prepSelect: P.prepSelect,
                clearOutline: P.clearOutline,
                clearSelectionsCache: P.clearSelectionsCache,
                selectOnClick: P.selectOnClick
              };
            }
          ),
          /***/
          88666: (
            /***/
            function(Y, K, e) {
              var b = e(11516), P = e(52773), n = e(33626), s = e(62203).dashStyle, T = e(78766), A = e(32141), p = e(36040).makeEventData, u = e(70414), t = u.freeMode, r = u.rectMode, i = u.drawMode, a = u.openMode, l = u.selectMode, o = e(49728), y = e(2956), g = e(561), x = e(78534).clearOutline, c = e(81055), v = c.handleEllipse, f = c.readPaths, _ = e(87562).newShapes, S = e(51817), M = e(7028).activateLastSelection, C = e(34809), m = C.sorterAsc, L = e(80899), d = e(64025), h = e(5975).getFromId, E = e(34823), w = e(71817).redrawReglTraces, z = e(78865), O = z.MINSELECT, B = L.filter, V = L.tester, U = e(49801), H = U.p2r, F = U.axValue, G = U.getTransform;
              function q(ee) {
                return ee.subplot !== void 0;
              }
              function rt(ee, Bt, Xt, Zt, ye) {
                var Mt = !q(Zt), St = t(ye), Lt = r(ye), te = a(ye), fe = i(ye), Me = l(ye), ir = ye === "drawline", mr = ye === "drawcircle", Xe = ir || mr, xe = Zt.gd, me = xe._fullLayout, Le = Me && me.newselection.mode === "immediate" && Mt, qt = me._zoomlayer, De = Zt.element.getBoundingClientRect(), Je = Zt.plotinfo, dr = G(Je), qe = Bt - De.left, we = Xt - De.top;
                me._calcInverseTransform(xe);
                var ue = C.apply3DTransform(me._invTransform)(qe, we);
                qe = ue[0], we = ue[1];
                var Pe = me._invScaleX, Ue = me._invScaleY, Ye = qe, rr = we, lr = "M" + qe + "," + we, hr = Zt.xaxes[0], Sr = Zt.yaxes[0], Dr = hr._length, Or = Sr._length, Br = ee.altKey && !(i(ye) && te), Nr, Xr, Gr, oe, de, or, Er;
                j(ee, xe, Zt), St && (Nr = B([[qe, we]], z.BENDPX));
                var Tr = qt.selectAll("path.select-outline-" + Je.id).data([1]), tr = fe ? me.newshape : me.newselection;
                fe && (Zt.hasText = tr.label.text || tr.label.texttemplate);
                var yr = fe && !te ? tr.fillcolor : "rgba(0,0,0,0)", Ir = tr.line.color || (Mt ? T.contrast(xe._fullLayout.plot_bgcolor) : "#7f7f7f");
                Tr.enter().append("path").attr("class", "select-outline select-outline-" + Je.id).style({
                  opacity: fe ? tr.opacity / 2 : 1,
                  "stroke-dasharray": s(tr.line.dash, tr.line.width),
                  "stroke-width": tr.line.width + "px",
                  "shape-rendering": "crispEdges"
                }).call(T.stroke, Ir).call(T.fill, yr).attr("fill-rule", "evenodd").classed("cursor-move", !!fe).attr("transform", dr).attr("d", lr + "Z");
                var Cr = qt.append("path").attr("class", "zoombox-corners").style({
                  fill: T.background,
                  stroke: T.defaultLine,
                  "stroke-width": 1
                }).attr("transform", dr).attr("d", "M0,0Z");
                if (fe && Zt.hasText) {
                  var _r = qt.select(".label-temp");
                  _r.empty() && (_r = qt.append("g").classed("label-temp", !0).classed("select-outline", !0).style({
                    opacity: 0.8
                  }));
                }
                var Zr = me._uid + z.SELECTID, ln = [], Jr = ct(xe, Zt.xaxes, Zt.yaxes, Zt.subplot);
                Le && !ee.shiftKey && (Zt._clearSubplotSelections = function() {
                  if (Mt) {
                    var fn = hr._id, hi = Sr._id;
                    _e(xe, fn, hi, Jr);
                    for (var Vn = (xe.layout || {}).selections || [], jr = [], zr = !1, Tn = 0; Tn < Vn.length; Tn++) {
                      var sn = me.selections[Tn];
                      sn.xref !== fn || sn.yref !== hi ? jr.push(Vn[Tn]) : zr = !0;
                    }
                    zr && (xe._fullLayout._noEmitSelectedAtStart = !0, n.call("_guiRelayout", xe, {
                      selections: jr
                    }));
                  }
                });
                var Zn = ur(Zt);
                Zt.moveFn = function(fn, hi) {
                  Zt._clearSubplotSelections && (Zt._clearSubplotSelections(), Zt._clearSubplotSelections = void 0), Ye = Math.max(0, Math.min(Dr, Pe * fn + qe)), rr = Math.max(0, Math.min(Or, Ue * hi + we));
                  var Vn = Math.abs(Ye - qe), jr = Math.abs(rr - we);
                  if (Lt) {
                    var zr, Tn, sn;
                    if (Me) {
                      var $n = me.selectdirection;
                      switch ($n === "any" ? jr < Math.min(Vn * 0.6, O) ? zr = "h" : Vn < Math.min(jr * 0.6, O) ? zr = "v" : zr = "d" : zr = $n, zr) {
                        case "h":
                          Tn = mr ? Or / 2 : 0, sn = Or;
                          break;
                        case "v":
                          Tn = mr ? Dr / 2 : 0, sn = Dr;
                          break;
                      }
                    }
                    if (fe)
                      switch (me.newshape.drawdirection) {
                        case "vertical":
                          zr = "h", Tn = mr ? Or / 2 : 0, sn = Or;
                          break;
                        case "horizontal":
                          zr = "v", Tn = mr ? Dr / 2 : 0, sn = Dr;
                          break;
                        case "ortho":
                          Vn < jr ? (zr = "h", Tn = we, sn = rr) : (zr = "v", Tn = qe, sn = Ye);
                          break;
                        default:
                          zr = "d";
                      }
                    zr === "h" ? (oe = Xe ? v(mr, [Ye, Tn], [Ye, sn]) : (
                      // using x1 instead of x0 allows adjusting the line while drawing
                      [[qe, Tn], [qe, sn], [Ye, sn], [Ye, Tn]]
                    ), oe.xmin = Xe ? Ye : Math.min(qe, Ye), oe.xmax = Xe ? Ye : Math.max(qe, Ye), oe.ymin = Math.min(Tn, sn), oe.ymax = Math.max(Tn, sn), Cr.attr("d", "M" + oe.xmin + "," + (we - O) + "h-4v" + 2 * O + "h4ZM" + (oe.xmax - 1) + "," + (we - O) + "h4v" + 2 * O + "h-4Z")) : zr === "v" ? (oe = Xe ? v(mr, [Tn, rr], [sn, rr]) : (
                      // using y1 instead of y0 allows adjusting the line while drawing
                      [[Tn, we], [Tn, rr], [sn, rr], [sn, we]]
                    ), oe.xmin = Math.min(Tn, sn), oe.xmax = Math.max(Tn, sn), oe.ymin = Xe ? rr : Math.min(we, rr), oe.ymax = Xe ? rr : Math.max(we, rr), Cr.attr("d", "M" + (qe - O) + "," + oe.ymin + "v-4h" + 2 * O + "v4ZM" + (qe - O) + "," + (oe.ymax - 1) + "v4h" + 2 * O + "v-4Z")) : zr === "d" && (oe = Xe ? v(mr, [qe, we], [Ye, rr]) : [[qe, we], [qe, rr], [Ye, rr], [Ye, we]], oe.xmin = Math.min(qe, Ye), oe.xmax = Math.max(qe, Ye), oe.ymin = Math.min(we, rr), oe.ymax = Math.max(we, rr), Cr.attr("d", "M0,0Z"));
                  } else St && (Nr.addPt([Ye, rr]), oe = Nr.filtered);
                  if (Zt.selectionDefs && Zt.selectionDefs.length ? (Gr = Vt(Zt.mergedPolygons, oe, Br), oe.subtract = Br, Xr = Q(Zt.selectionDefs.concat([oe]))) : (Gr = [oe], Xr = V(oe)), g(Rt(Gr, te), Tr, Zt), Me) {
                    var kn = kt(xe, !1), An = kn.eventData ? kn.eventData.points.slice() : [];
                    kn = kt(xe, !1, Xr, Jr, Zt), Xr = kn.selectionTesters, Er = kn.eventData;
                    var qn;
                    Nr ? qn = Nr.filtered : qn = Ne(Gr), d.throttle(Zr, z.SELECTDELAY, function() {
                      ln = Wt(Xr, Jr);
                      for (var si = ln.slice(), qi = 0; qi < An.length; qi++) {
                        for (var ha = An[qi], Mi = !1, Ji = 0; Ji < si.length; Ji++)
                          if (si[Ji].curveNumber === ha.curveNumber && si[Ji].pointNumber === ha.pointNumber) {
                            Mi = !0;
                            break;
                          }
                        Mi || si.push(ha);
                      }
                      si.length && (Er || (Er = {}), Er.points = si), Zn(Er, qn), ie(xe, Er);
                    });
                  }
                }, Zt.clickFn = function(fn, hi) {
                  if (Cr.remove(), xe._fullLayout._activeShapeIndex >= 0) {
                    xe._fullLayout._deactivateShape(xe);
                    return;
                  }
                  if (!fe) {
                    var Vn = me.clickmode;
                    d.done(Zr).then(function() {
                      if (d.clear(Zr), fn === 2) {
                        for (Tr.remove(), de = 0; de < Jr.length; de++)
                          or = Jr[de], or._module.selectPoints(or, !1);
                        if (Jt(xe, Jr), nt(Zt), jt(xe), Jr.length) {
                          var jr = Jr[0].xaxis, zr = Jr[0].yaxis;
                          if (jr && zr) {
                            for (var Tn = [], sn = xe._fullLayout.selections, $n = 0; $n < sn.length; $n++) {
                              var kn = sn[$n];
                              kn && (kn.xref !== jr._id || kn.yref !== zr._id) && Tn.push(kn);
                            }
                            Tn.length < sn.length && (xe._fullLayout._noEmitSelectedAtStart = !0, n.call("_guiRelayout", xe, {
                              selections: Tn
                            }));
                          }
                        }
                      } else
                        Vn.indexOf("select") > -1 && st(hi, xe, Zt.xaxes, Zt.yaxes, Zt.subplot, Zt, Tr), Vn === "event" && $t(xe, void 0);
                      A.click(xe, hi, Je.id);
                    }).catch(C.error);
                  }
                }, Zt.doneFn = function() {
                  Cr.remove(), d.done(Zr).then(function() {
                    d.clear(Zr), !Le && oe && Zt.selectionDefs && (oe.subtract = Br, Zt.selectionDefs.push(oe), Zt.mergedPolygons.length = 0, [].push.apply(Zt.mergedPolygons, Gr)), (Le || fe) && nt(Zt, Le), Zt.doneFnCompleted && Zt.doneFnCompleted(ln), Me && $t(xe, Er);
                  }).catch(C.error);
                };
              }
              function st(ee, Bt, Xt, Zt, ye, Mt, St) {
                var Lt = Bt._hoverdata, te = Bt._fullLayout, fe = te.clickmode, Me = fe.indexOf("event") > -1, ir = [], mr, Xe, xe, me, Le, qt, De, Je, dr, qe;
                if (pt(Lt)) {
                  j(ee, Bt, Mt), mr = ct(Bt, Xt, Zt, ye);
                  var we = wt(Lt, mr), ue = we.pointNumbers.length > 0;
                  if (ue ? Ct(mr, we) : Gt(mr) && (De = Et(we))) {
                    for (St && St.remove(), qe = 0; qe < mr.length; qe++)
                      Xe = mr[qe], Xe._module.selectPoints(Xe, !1);
                    Jt(Bt, mr), nt(Mt), Me && jt(Bt);
                  } else {
                    Je = ee.shiftKey && (De !== void 0 ? De : Et(we)), xe = vt(we.pointNumber, we.searchInfo, Je);
                    var Pe = Mt.selectionDefs.concat([xe]);
                    for (me = Q(Pe), qe = 0; qe < mr.length; qe++)
                      if (Le = mr[qe]._module.selectPoints(mr[qe], me), qt = zt(Le, mr[qe]), ir.length)
                        for (var Ue = 0; Ue < qt.length; Ue++)
                          ir.push(qt[Ue]);
                      else ir = qt;
                    if (dr = {
                      points: ir
                    }, Jt(Bt, mr, dr), xe && Mt && Mt.selectionDefs.push(xe), St) {
                      var Ye = Mt.mergedPolygons, rr = a(Mt.dragmode);
                      g(Rt(Ye, rr), St, Mt);
                    }
                    Me && $t(Bt, dr);
                  }
                }
              }
              function vt(ee, Bt, Xt) {
                return {
                  pointNumber: ee,
                  searchInfo: Bt,
                  subtract: !!Xt
                };
              }
              function ht(ee) {
                return "pointNumber" in ee && "searchInfo" in ee;
              }
              function et(ee) {
                return {
                  xmin: 0,
                  xmax: 0,
                  ymin: 0,
                  ymax: 0,
                  pts: [],
                  contains: function(Bt, Xt, Zt, ye) {
                    var Mt = ee.searchInfo.cd[0].trace._expandedIndex, St = ye.cd[0].trace._expandedIndex;
                    return St === Mt && Zt === ee.pointNumber;
                  },
                  isRect: !1,
                  degenerate: !1,
                  subtract: !!ee.subtract
                };
              }
              function Q(ee) {
                if (!ee.length) return;
                for (var Bt = [], Xt = ht(ee[0]) ? 0 : ee[0][0][0], Zt = Xt, ye = ht(ee[0]) ? 0 : ee[0][0][1], Mt = ye, St = 0; St < ee.length; St++)
                  if (ht(ee[St]))
                    Bt.push(et(ee[St]));
                  else {
                    var Lt = V(ee[St]);
                    Lt.subtract = !!ee[St].subtract, Bt.push(Lt), Xt = Math.min(Xt, Lt.xmin), Zt = Math.max(Zt, Lt.xmax), ye = Math.min(ye, Lt.ymin), Mt = Math.max(Mt, Lt.ymax);
                  }
                function te(fe, Me, ir, mr) {
                  for (var Xe = !1, xe = 0; xe < Bt.length; xe++)
                    Bt[xe].contains(fe, Me, ir, mr) && (Xe = !Bt[xe].subtract);
                  return Xe;
                }
                return {
                  xmin: Xt,
                  xmax: Zt,
                  ymin: ye,
                  ymax: Mt,
                  pts: [],
                  contains: te,
                  isRect: !1,
                  degenerate: !1
                };
              }
              function j(ee, Bt, Xt) {
                var Zt = Bt._fullLayout, ye = Xt.plotinfo, Mt = Xt.dragmode, St = Zt._lastSelectedSubplot && Zt._lastSelectedSubplot === ye.id, Lt = (ee.shiftKey || ee.altKey) && !(i(Mt) && a(Mt));
                St && Lt && ye.selection && ye.selection.selectionDefs && !Xt.selectionDefs ? (Xt.selectionDefs = ye.selection.selectionDefs, Xt.mergedPolygons = ye.selection.mergedPolygons) : (!Lt || !ye.selection) && nt(Xt), St || (x(Bt), Zt._lastSelectedSubplot = ye.id);
              }
              function at(ee) {
                return ee._fullLayout._activeShapeIndex >= 0;
              }
              function ut(ee) {
                return ee._fullLayout._activeSelectionIndex >= 0;
              }
              function nt(ee, Bt) {
                var Xt = ee.dragmode, Zt = ee.plotinfo, ye = ee.gd;
                at(ye) && ye._fullLayout._deactivateShape(ye), ut(ye) && ye._fullLayout._deactivateSelection(ye);
                var Mt = ye._fullLayout, St = Mt._zoomlayer, Lt = i(Xt), te = l(Xt);
                if (Lt || te) {
                  var fe = St.selectAll(".select-outline-" + Zt.id);
                  if (fe && ye._fullLayout._outlining) {
                    var Me;
                    Lt && (Me = _(fe, ee)), Me && n.call("_guiRelayout", ye, {
                      shapes: Me
                    });
                    var ir;
                    te && !q(ee) && (ir = S(fe, ee)), ir && (ye._fullLayout._noEmitSelectedAtStart = !0, n.call("_guiRelayout", ye, {
                      selections: ir
                    }).then(function() {
                      Bt && M(ye);
                    })), ye._fullLayout._outlining = !1;
                  }
                }
                Zt.selection = {}, Zt.selection.selectionDefs = ee.selectionDefs = [], Zt.selection.mergedPolygons = ee.mergedPolygons = [];
              }
              function X(ee) {
                return ee._id;
              }
              function ct(ee, Bt, Xt, Zt) {
                if (!ee.calcdata) return [];
                var ye = [], Mt = Bt.map(X), St = Xt.map(X), Lt, te, fe;
                for (fe = 0; fe < ee.calcdata.length; fe++)
                  if (Lt = ee.calcdata[fe], te = Lt[0].trace, !(te.visible !== !0 || !te._module || !te._module.selectPoints))
                    if (q({
                      subplot: Zt
                    }) && (te.subplot === Zt || te.geo === Zt))
                      ye.push(lt(te._module, Lt, Bt[0], Xt[0]));
                    else if (te.type === "splom") {
                      if (te._xaxes[Mt[0]] && te._yaxes[St[0]]) {
                        var Me = lt(te._module, Lt, Bt[0], Xt[0]);
                        Me.scene = ee._fullLayout._splomScenes[te.uid], ye.push(Me);
                      }
                    } else if (te.type === "sankey") {
                      var ir = lt(te._module, Lt, Bt[0], Xt[0]);
                      ye.push(ir);
                    } else {
                      if (Mt.indexOf(te.xaxis) === -1 && (!te._xA || !te._xA.overlaying) || St.indexOf(te.yaxis) === -1 && (!te._yA || !te._yA.overlaying)) continue;
                      ye.push(lt(te._module, Lt, h(ee, te.xaxis), h(ee, te.yaxis)));
                    }
                return ye;
              }
              function lt(ee, Bt, Xt, Zt) {
                return {
                  _module: ee,
                  cd: Bt,
                  xaxis: Xt,
                  yaxis: Zt
                };
              }
              function pt(ee) {
                return ee && Array.isArray(ee) && ee[0].hoverOnBox !== !0;
              }
              function wt(ee, Bt) {
                var Xt = ee[0], Zt = -1, ye = [], Mt, St;
                for (St = 0; St < Bt.length; St++)
                  if (Mt = Bt[St], Xt.fullData._expandedIndex === Mt.cd[0].trace._expandedIndex) {
                    if (Xt.hoverOnBox === !0)
                      break;
                    Xt.pointNumber !== void 0 ? Zt = Xt.pointNumber : Xt.binNumber !== void 0 && (Zt = Xt.binNumber, ye = Xt.pointNumbers);
                    break;
                  }
                return {
                  pointNumber: Zt,
                  pointNumbers: ye,
                  searchInfo: Mt
                };
              }
              function Et(ee) {
                var Bt = ee.searchInfo.cd[0].trace, Xt = ee.pointNumber, Zt = ee.pointNumbers, ye = Zt.length > 0, Mt = ye ? Zt[0] : Xt;
                return Bt.selectedpoints ? Bt.selectedpoints.indexOf(Mt) > -1 : !1;
              }
              function Ct(ee, Bt) {
                var Xt = [], Zt, ye, Mt, St;
                for (St = 0; St < ee.length; St++)
                  Zt = ee[St], Zt.cd[0].trace.selectedpoints && Zt.cd[0].trace.selectedpoints.length > 0 && Xt.push(Zt);
                if (Xt.length === 1 && (Mt = Xt[0] === Bt.searchInfo, Mt && (ye = Bt.searchInfo.cd[0].trace, ye.selectedpoints.length === Bt.pointNumbers.length))) {
                  for (St = 0; St < Bt.pointNumbers.length; St++)
                    if (ye.selectedpoints.indexOf(Bt.pointNumbers[St]) < 0)
                      return !1;
                  return !0;
                }
                return !1;
              }
              function Gt(ee) {
                var Bt = 0, Xt, Zt, ye;
                for (ye = 0; ye < ee.length; ye++)
                  if (Xt = ee[ye], Zt = Xt.cd[0].trace, Zt.selectedpoints && (Zt.selectedpoints.length > 1 || (Bt += Zt.selectedpoints.length, Bt > 1)))
                    return !1;
                return Bt === 1;
              }
              function Jt(ee, Bt, Xt) {
                var Zt;
                for (Zt = 0; Zt < Bt.length; Zt++) {
                  var ye = Bt[Zt].cd[0].trace._fullInput, Mt = ee._fullLayout._tracePreGUI[ye.uid] || {};
                  Mt.selectedpoints === void 0 && (Mt.selectedpoints = ye._input.selectedpoints || null);
                }
                var St;
                if (Xt) {
                  var Lt = Xt.points || [];
                  for (Zt = 0; Zt < Bt.length; Zt++)
                    St = Bt[Zt].cd[0].trace, St._input.selectedpoints = St._fullInput.selectedpoints = [], St._fullInput !== St && (St.selectedpoints = []);
                  for (var te = 0; te < Lt.length; te++) {
                    var fe = Lt[te], Me = fe.data, ir = fe.fullData, mr = fe.pointIndex, Xe = fe.pointIndices;
                    Xe ? ([].push.apply(Me.selectedpoints, Xe), St._fullInput !== St && [].push.apply(ir.selectedpoints, Xe)) : (Me.selectedpoints.push(mr), St._fullInput !== St && ir.selectedpoints.push(mr));
                  }
                } else
                  for (Zt = 0; Zt < Bt.length; Zt++)
                    St = Bt[Zt].cd[0].trace, delete St.selectedpoints, delete St._input.selectedpoints, St._fullInput !== St && delete St._fullInput.selectedpoints;
                Qt(ee, Bt);
              }
              function Qt(ee, Bt) {
                for (var Xt = !1, Zt = 0; Zt < Bt.length; Zt++) {
                  var ye = Bt[Zt], Mt = ye.cd;
                  n.traceIs(Mt[0].trace, "regl") && (Xt = !0);
                  var St = ye._module, Lt = St.styleOnSelect || St.style;
                  Lt && (Lt(ee, Mt, Mt[0].node3), Mt[0].nodeRangePlot3 && Lt(ee, Mt, Mt[0].nodeRangePlot3));
                }
                Xt && (E(ee), w(ee));
              }
              function Vt(ee, Bt, Xt) {
                for (var Zt = Xt ? b.difference : b.union, ye = Zt({
                  regions: ee
                }, {
                  regions: [Bt]
                }), Mt = ye.regions.reverse(), St = 0; St < Mt.length; St++) {
                  var Lt = Mt[St];
                  Lt.subtract = Se(Lt, Mt.slice(0, St));
                }
                return Mt;
              }
              function zt(ee, Bt) {
                if (Array.isArray(ee))
                  for (var Xt = Bt.cd, Zt = Bt.cd[0].trace, ye = 0; ye < ee.length; ye++)
                    ee[ye] = p(ee[ye], Zt, Xt);
                return ee;
              }
              function Rt(ee, Bt) {
                for (var Xt = [], Zt = 0; Zt < ee.length; Zt++) {
                  Xt[Zt] = [];
                  for (var ye = 0; ye < ee[Zt].length; ye++) {
                    Xt[Zt][ye] = [], Xt[Zt][ye][0] = ye ? "L" : "M";
                    for (var Mt = 0; Mt < ee[Zt][ye].length; Mt++)
                      Xt[Zt][ye].push(ee[Zt][ye][Mt]);
                  }
                  Bt || Xt[Zt].push([
                    "Z",
                    Xt[Zt][0][1],
                    // initial x
                    Xt[Zt][0][2]
                    // initial y
                  ]);
                }
                return Xt;
              }
              function Wt(ee, Bt) {
                for (var Xt = [], Zt, ye, Mt = 0; Mt < Bt.length; Mt++) {
                  var St = Bt[Mt];
                  ye = St._module.selectPoints(St, ee), Zt = zt(ye, St), Xt = Xt.concat(Zt);
                }
                return Xt;
              }
              function kt(ee, Bt, Xt, Zt, ye) {
                var Mt = !!Zt, St, Lt, te;
                ye && (St = ye.plotinfo, Lt = ye.xaxes[0]._id, te = ye.yaxes[0]._id);
                var fe = [], Me = [], ir = ae(ee), mr = ee._fullLayout;
                if (St) {
                  var Xe = mr._zoomlayer, xe = mr.dragmode, me = i(xe), Le = l(xe);
                  if (me || Le) {
                    var qt = h(ee, Lt, "x"), De = h(ee, te, "y");
                    if (qt && De) {
                      var Je = Xe.selectAll(".select-outline-" + St.id);
                      if (Je && ee._fullLayout._outlining && Je.length) {
                        for (var dr = Je[0][0], qe = dr.getAttribute("d"), we = f(qe, ee, St), ue = [], Pe = 0; Pe < we.length; Pe++) {
                          for (var Ue = we[Pe], Ye = [], rr = 0; rr < Ue.length; rr++)
                            Ye.push([ze(qt, Ue[rr][1]), ze(De, Ue[rr][2])]);
                          Ye.xref = Lt, Ye.yref = te, Ye.subtract = Se(Ye, ue), ue.push(Ye);
                        }
                        ir = ir.concat(ue);
                      }
                    }
                  }
                }
                var lr = Lt && te ? [Lt + te] : mr._subplots.cartesian;
                re(ee);
                for (var hr = {}, Sr = 0; Sr < lr.length; Sr++) {
                  var Dr = lr[Sr], Or = Dr.indexOf("y"), Br = Dr.slice(0, Or), Nr = Dr.slice(Or), Xr = Lt && te ? Xt : void 0;
                  if (Xr = ce(ir, Br, Nr, Xr), Xr) {
                    var Gr = Zt;
                    if (!Mt) {
                      var oe = h(ee, Br, "x"), de = h(ee, Nr, "y");
                      Gr = ct(ee, [oe], [de], Dr);
                      for (var or = 0; or < Gr.length; or++) {
                        var Er = Gr[or], Tr = Er.cd[0], tr = Tr.trace;
                        if (Er._module.name === "scattergl" && !Tr.t.xpx) {
                          var yr = tr.x, Ir = tr.y, Cr = tr._length;
                          Tr.t.xpx = [], Tr.t.ypx = [];
                          for (var _r = 0; _r < Cr; _r++)
                            Tr.t.xpx[_r] = oe.c2p(yr[_r]), Tr.t.ypx[_r] = de.c2p(Ir[_r]);
                        }
                        Er._module.name === "splom" && (hr[tr.uid] || (hr[tr.uid] = !0));
                      }
                    }
                    var Zr = Wt(Xr, Gr);
                    fe = fe.concat(Zr), Me = Me.concat(Gr);
                  }
                }
                var ln = {
                  points: fe
                };
                Jt(ee, Me, ln);
                var Jr = mr.clickmode, Zn = Jr.indexOf("event") > -1 && Bt;
                if (!St && // get called from plot_api & plots
                Bt) {
                  var fn = ae(ee, !0);
                  if (fn.length) {
                    var hi = fn[0].xref, Vn = fn[0].yref;
                    if (hi && Vn) {
                      var jr = Ne(fn), zr = Oe([h(ee, hi, "x"), h(ee, Vn, "y")]);
                      zr(ln, jr);
                    }
                  }
                  ee._fullLayout._noEmitSelectedAtStart ? ee._fullLayout._noEmitSelectedAtStart = !1 : Zn && $t(ee, ln), mr._reselect = !1;
                }
                if (!St && // get called from plot_api & plots
                mr._deselect) {
                  var Tn = mr._deselect;
                  Lt = Tn.xref, te = Tn.yref, ge(Lt, te, Me) || _e(ee, Lt, te, Zt), Zn && (ln.points.length ? $t(ee, ln) : jt(ee)), mr._deselect = !1;
                }
                return {
                  eventData: ln,
                  selectionTesters: Xt
                };
              }
              function re(ee) {
                var Bt = ee.calcdata;
                if (Bt)
                  for (var Xt = 0; Xt < Bt.length; Xt++) {
                    var Zt = Bt[Xt][0], ye = Zt.trace, Mt = ee._fullLayout._splomScenes;
                    if (Mt) {
                      var St = Mt[ye.uid];
                      St && (St.selectBatch = []);
                    }
                  }
              }
              function ge(ee, Bt, Xt) {
                for (var Zt = 0; Zt < Xt.length; Zt++) {
                  var ye = Xt[Zt];
                  if (ye.xaxis && ye.xaxis._id === ee && ye.yaxis && ye.yaxis._id === Bt)
                    return !0;
                }
                return !1;
              }
              function _e(ee, Bt, Xt, Zt) {
                Zt = ct(ee, [h(ee, Bt, "x")], [h(ee, Xt, "y")], Bt + Xt);
                for (var ye = 0; ye < Zt.length; ye++) {
                  var Mt = Zt[ye];
                  Mt._module.selectPoints(Mt, !1);
                }
                Jt(ee, Zt);
              }
              function ce(ee, Bt, Xt, Zt) {
                for (var ye, Mt = 0; Mt < ee.length; Mt++) {
                  var St = ee[Mt];
                  if (!(Bt !== St.xref || Xt !== St.yref))
                    if (ye) {
                      var Lt = !!St.subtract;
                      ye = Vt(ye, St, Lt), Zt = Q(ye);
                    } else
                      ye = [St], Zt = V(St);
                }
                return Zt;
              }
              function ae(ee, Bt) {
                for (var Xt = [], Zt = ee._fullLayout, ye = Zt.selections, Mt = ye.length, St = 0; St < Mt; St++)
                  if (!(Bt && St !== Zt._activeSelectionIndex)) {
                    var Lt = ye[St];
                    if (Lt) {
                      var te = Lt.xref, fe = Lt.yref, Me = h(ee, te, "x"), ir = h(ee, fe, "y"), mr, Xe, xe, me, Le;
                      if (Lt.type === "rect") {
                        Le = [];
                        var qt = ze(Me, Lt.x0), De = ze(Me, Lt.x1), Je = ze(ir, Lt.y0), dr = ze(ir, Lt.y1);
                        Le = [[qt, Je], [qt, dr], [De, dr], [De, Je]], mr = Math.min(qt, De), Xe = Math.max(qt, De), xe = Math.min(Je, dr), me = Math.max(Je, dr), Le.xmin = mr, Le.xmax = Xe, Le.ymin = xe, Le.ymax = me, Le.xref = te, Le.yref = fe, Le.subtract = !1, Le.isRect = !0, Xt.push(Le);
                      } else if (Lt.type === "path")
                        for (var qe = Lt.path.split("Z"), we = [], ue = 0; ue < qe.length; ue++) {
                          var Pe = qe[ue];
                          if (Pe) {
                            Pe += "Z";
                            var Ue = o.extractPathCoords(Pe, y.paramIsX, "raw"), Ye = o.extractPathCoords(Pe, y.paramIsY, "raw");
                            mr = 1 / 0, Xe = -1 / 0, xe = 1 / 0, me = -1 / 0, Le = [];
                            for (var rr = 0; rr < Ue.length; rr++) {
                              var lr = ze(Me, Ue[rr]), hr = ze(ir, Ye[rr]);
                              Le.push([lr, hr]), mr = Math.min(lr, mr), Xe = Math.max(lr, Xe), xe = Math.min(hr, xe), me = Math.max(hr, me);
                            }
                            Le.xmin = mr, Le.xmax = Xe, Le.ymin = xe, Le.ymax = me, Le.xref = te, Le.yref = fe, Le.subtract = Se(Le, we), we.push(Le), Xt.push(Le);
                          }
                        }
                    }
                  }
                return Xt;
              }
              function Se(ee, Bt) {
                for (var Xt = !1, Zt = 0; Zt < Bt.length; Zt++)
                  for (var ye = Bt[Zt], Mt = 0; Mt < ee.length; Mt++)
                    if (P(ee[Mt], ye)) {
                      Xt = !Xt;
                      break;
                    }
                return Xt;
              }
              function ze(ee, Bt) {
                return ee.type === "date" && (Bt = Bt.replace("_", " ")), ee.type === "log" ? ee.c2p(Bt) : ee.r2p(Bt, null, ee.calendar);
              }
              function Ne(ee) {
                for (var Bt = ee.length, Xt = [], Zt = 0; Zt < Bt; Zt++) {
                  var ye = ee[Zt];
                  Xt = Xt.concat(ye), Xt = Xt.concat([ye[0]]);
                }
                return Ve(Xt);
              }
              function Ve(ee) {
                return ee.isRect = ee.length === 5 && ee[0][0] === ee[4][0] && ee[0][1] === ee[4][1] && ee[0][0] === ee[1][0] && ee[2][0] === ee[3][0] && ee[0][1] === ee[3][1] && ee[1][1] === ee[2][1] || ee[0][1] === ee[1][1] && ee[2][1] === ee[3][1] && ee[0][0] === ee[3][0] && ee[1][0] === ee[2][0], ee.isRect && (ee.xmin = Math.min(ee[0][0], ee[2][0]), ee.xmax = Math.max(ee[0][0], ee[2][0]), ee.ymin = Math.min(ee[0][1], ee[2][1]), ee.ymax = Math.max(ee[0][1], ee[2][1])), ee;
              }
              function Oe(ee) {
                return function(Bt, Xt) {
                  for (var Zt, ye, Mt = 0; Mt < ee.length; Mt++) {
                    var St = ee[Mt], Lt = St._id, te = Lt.charAt(0);
                    if (Xt.isRect) {
                      Zt || (Zt = {});
                      var fe = Xt[te + "min"], Me = Xt[te + "max"];
                      fe !== void 0 && Me !== void 0 && (Zt[Lt] = [H(St, fe), H(St, Me)].sort(m));
                    } else
                      ye || (ye = {}), ye[Lt] = Xt.map(F(St));
                  }
                  Zt && (Bt.range = Zt), ye && (Bt.lassoPoints = ye);
                };
              }
              function ur(ee) {
                var Bt = ee.plotinfo;
                return Bt.fillRangeItems || // allow subplots (i.e. geo, mapbox, map, sankey) to override fillRangeItems routine
                Oe(ee.xaxes.concat(ee.yaxes));
              }
              function ie(ee, Bt) {
                ee.emit("plotly_selecting", Bt);
              }
              function $t(ee, Bt) {
                Bt && (Bt.selections = (ee.layout || {}).selections || []), ee.emit("plotly_selected", Bt);
              }
              function jt(ee) {
                ee.emit("plotly_deselect", null);
              }
              Y.exports = {
                reselect: kt,
                prepSelect: rt,
                clearOutline: x,
                clearSelectionsCache: nt,
                selectOnClick: st
              };
            }
          ),
          /***/
          43144: (
            /***/
            function(Y, K, e) {
              var b = e(50222), P = e(80337), n = e(36640).line, s = e(94850).T, T = e(93049).extendFlat, A = e(78032).templatedArray;
              e(35081);
              var p = e(9829), u = e(3208).LF, t = e(41235);
              Y.exports = A("shape", {
                visible: T({}, p.visible, {
                  editType: "calc+arraydraw"
                }),
                showlegend: {
                  valType: "boolean",
                  dflt: !1,
                  editType: "calc+arraydraw"
                },
                legend: T({}, p.legend, {
                  editType: "calc+arraydraw"
                }),
                legendgroup: T({}, p.legendgroup, {
                  editType: "calc+arraydraw"
                }),
                legendgrouptitle: {
                  text: T({}, p.legendgrouptitle.text, {
                    editType: "calc+arraydraw"
                  }),
                  font: P({
                    editType: "calc+arraydraw"
                  }),
                  editType: "calc+arraydraw"
                },
                legendrank: T({}, p.legendrank, {
                  editType: "calc+arraydraw"
                }),
                legendwidth: T({}, p.legendwidth, {
                  editType: "calc+arraydraw"
                }),
                type: {
                  valType: "enumerated",
                  values: ["circle", "rect", "path", "line"],
                  editType: "calc+arraydraw"
                },
                layer: {
                  valType: "enumerated",
                  values: ["below", "above", "between"],
                  dflt: "above",
                  editType: "arraydraw"
                },
                xref: T({}, b.xref, {}),
                xsizemode: {
                  valType: "enumerated",
                  values: ["scaled", "pixel"],
                  dflt: "scaled",
                  editType: "calc+arraydraw"
                },
                xanchor: {
                  valType: "any",
                  editType: "calc+arraydraw"
                },
                x0: {
                  valType: "any",
                  editType: "calc+arraydraw"
                },
                x1: {
                  valType: "any",
                  editType: "calc+arraydraw"
                },
                x0shift: {
                  valType: "number",
                  dflt: 0,
                  min: -1,
                  max: 1,
                  editType: "calc"
                },
                x1shift: {
                  valType: "number",
                  dflt: 0,
                  min: -1,
                  max: 1,
                  editType: "calc"
                },
                yref: T({}, b.yref, {}),
                ysizemode: {
                  valType: "enumerated",
                  values: ["scaled", "pixel"],
                  dflt: "scaled",
                  editType: "calc+arraydraw"
                },
                yanchor: {
                  valType: "any",
                  editType: "calc+arraydraw"
                },
                y0: {
                  valType: "any",
                  editType: "calc+arraydraw"
                },
                y1: {
                  valType: "any",
                  editType: "calc+arraydraw"
                },
                y0shift: {
                  valType: "number",
                  dflt: 0,
                  min: -1,
                  max: 1,
                  editType: "calc"
                },
                y1shift: {
                  valType: "number",
                  dflt: 0,
                  min: -1,
                  max: 1,
                  editType: "calc"
                },
                path: {
                  valType: "string",
                  editType: "calc+arraydraw"
                },
                opacity: {
                  valType: "number",
                  min: 0,
                  max: 1,
                  dflt: 1,
                  editType: "arraydraw"
                },
                line: {
                  color: T({}, n.color, {
                    editType: "arraydraw"
                  }),
                  width: T({}, n.width, {
                    editType: "calc+arraydraw"
                  }),
                  dash: T({}, s, {
                    editType: "arraydraw"
                  }),
                  editType: "calc+arraydraw"
                },
                fillcolor: {
                  valType: "color",
                  dflt: "rgba(0,0,0,0)",
                  editType: "arraydraw"
                },
                fillrule: {
                  valType: "enumerated",
                  values: ["evenodd", "nonzero"],
                  dflt: "evenodd",
                  editType: "arraydraw"
                },
                editable: {
                  valType: "boolean",
                  dflt: !1,
                  editType: "calc+arraydraw"
                },
                label: {
                  text: {
                    valType: "string",
                    dflt: "",
                    editType: "arraydraw"
                  },
                  texttemplate: u({}, {
                    keys: Object.keys(t)
                  }),
                  font: P({
                    editType: "calc+arraydraw",
                    colorEditType: "arraydraw"
                  }),
                  textposition: {
                    valType: "enumerated",
                    values: ["top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "start", "middle", "end"],
                    editType: "arraydraw"
                  },
                  textangle: {
                    valType: "angle",
                    dflt: "auto",
                    editType: "calc+arraydraw"
                  },
                  xanchor: {
                    valType: "enumerated",
                    values: ["auto", "left", "center", "right"],
                    dflt: "auto",
                    editType: "calc+arraydraw"
                  },
                  yanchor: {
                    valType: "enumerated",
                    values: ["top", "middle", "bottom"],
                    editType: "calc+arraydraw"
                  },
                  padding: {
                    valType: "number",
                    dflt: 3,
                    min: 0,
                    editType: "arraydraw"
                  },
                  editType: "arraydraw"
                },
                editType: "arraydraw"
              });
            }
          ),
          /***/
          44959: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(29714), n = e(2956), s = e(49728);
              Y.exports = function(r) {
                var i = r._fullLayout, a = b.filterVisible(i.shapes);
                if (!(!a.length || !r._fullData.length))
                  for (var l = 0; l < a.length; l++) {
                    var o = a[l];
                    o._extremes = {};
                    var y, g, x = P.getRefType(o.xref), c = P.getRefType(o.yref);
                    o.xref !== "paper" && x !== "domain" && (y = P.getFromId(r, o.xref), g = u(y, o, n.paramIsX), g && (o._extremes[y._id] = P.findExtremes(y, g, T(o)))), o.yref !== "paper" && c !== "domain" && (y = P.getFromId(r, o.yref), g = u(y, o, n.paramIsY), g && (o._extremes[y._id] = P.findExtremes(y, g, A(o))));
                  }
              };
              function T(t) {
                return p(t.line.width, t.xsizemode, t.x0, t.x1, t.path, !1);
              }
              function A(t) {
                return p(t.line.width, t.ysizemode, t.y0, t.y1, t.path, !0);
              }
              function p(t, r, i, a, l, o) {
                var y = t / 2, g = o;
                if (r === "pixel") {
                  var x = l ? s.extractPathCoords(l, o ? n.paramIsY : n.paramIsX) : [i, a], c = b.aggNums(Math.max, null, x), v = b.aggNums(Math.min, null, x), f = v < 0 ? Math.abs(v) + y : y, _ = c > 0 ? c + y : y;
                  return {
                    ppad: y,
                    ppadplus: g ? f : _,
                    ppadminus: g ? _ : f
                  };
                } else
                  return {
                    ppad: y
                  };
              }
              function u(t, r, i) {
                var a = t._id.charAt(0) === "x" ? "x" : "y", l = t.type === "category" || t.type === "multicategory", o, y, g = 0, x = 0, c = l ? t.r2c : t.d2c, v = r[a + "sizemode"] === "scaled";
                if (v ? (o = r[a + "0"], y = r[a + "1"], l && (g = r[a + "0shift"], x = r[a + "1shift"])) : (o = r[a + "anchor"], y = r[a + "anchor"]), o !== void 0) return [c(o) + g, c(y) + x];
                if (r.path) {
                  var f = 1 / 0, _ = -1 / 0, S = r.path.match(n.segmentRE), M, C, m, L, d;
                  for (t.type === "date" && (c = s.decodeDate(c)), M = 0; M < S.length; M++)
                    C = S[M], m = i[C.charAt(0)].drawn, m !== void 0 && (L = S[M].substr(1).match(n.paramRE), !(!L || L.length < m) && (d = c(L[m]), d < f && (f = d), d > _ && (_ = d)));
                  if (_ >= f) return [f, _];
                }
              }
            }
          ),
          /***/
          2956: (
            /***/
            function(Y) {
              Y.exports = {
                segmentRE: /[MLHVQCTSZ][^MLHVQCTSZ]*/g,
                paramRE: /[^\s,]+/g,
                // which numbers in each path segment are x (or y) values
                // drawn is which param is a drawn point, as opposed to a
                // control point (which doesn't count toward autorange.
                // TODO: this means curved paths could extend beyond the
                // autorange bounds. This is a bit tricky to get right
                // unless we revert to bounding boxes, but perhaps there's
                // a calculation we could do...)
                paramIsX: {
                  M: {
                    0: !0,
                    drawn: 0
                  },
                  L: {
                    0: !0,
                    drawn: 0
                  },
                  H: {
                    0: !0,
                    drawn: 0
                  },
                  V: {},
                  Q: {
                    0: !0,
                    2: !0,
                    drawn: 2
                  },
                  C: {
                    0: !0,
                    2: !0,
                    4: !0,
                    drawn: 4
                  },
                  T: {
                    0: !0,
                    drawn: 0
                  },
                  S: {
                    0: !0,
                    2: !0,
                    drawn: 2
                  },
                  // A: {0: true, 5: true},
                  Z: {}
                },
                paramIsY: {
                  M: {
                    1: !0,
                    drawn: 1
                  },
                  L: {
                    1: !0,
                    drawn: 1
                  },
                  H: {},
                  V: {
                    0: !0,
                    drawn: 0
                  },
                  Q: {
                    1: !0,
                    3: !0,
                    drawn: 3
                  },
                  C: {
                    1: !0,
                    3: !0,
                    5: !0,
                    drawn: 5
                  },
                  T: {
                    1: !0,
                    drawn: 1
                  },
                  S: {
                    1: !0,
                    3: !0,
                    drawn: 5
                  },
                  // A: {1: true, 6: true},
                  Z: {}
                },
                numParams: {
                  M: 2,
                  L: 2,
                  H: 1,
                  V: 1,
                  Q: 4,
                  C: 6,
                  T: 2,
                  S: 4,
                  // A: 7,
                  Z: 0
                }
              };
            }
          ),
          /***/
          74367: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(29714), n = e(59008), s = e(43144), T = e(49728);
              Y.exports = function(t, r) {
                n(t, r, {
                  name: "shapes",
                  handleItemDefaults: p
                });
              };
              function A(u, t) {
                return u ? "bottom" : t.indexOf("top") !== -1 ? "top" : t.indexOf("bottom") !== -1 ? "bottom" : "middle";
              }
              function p(u, t, r) {
                function i(ht, et) {
                  return b.coerce(u, t, s, ht, et);
                }
                t._isShape = !0;
                var a = i("visible");
                if (a) {
                  var l = i("showlegend");
                  l && (i("legend"), i("legendwidth"), i("legendgroup"), i("legendgrouptitle.text"), b.coerceFont(i, "legendgrouptitle.font"), i("legendrank"));
                  var o = i("path"), y = o ? "path" : "rect", g = i("type", y), x = g !== "path";
                  x && delete t.path, i("editable"), i("layer"), i("opacity"), i("fillcolor"), i("fillrule");
                  var c = i("line.width");
                  c && (i("line.color"), i("line.dash"));
                  for (var v = i("xsizemode"), f = i("ysizemode"), _ = ["x", "y"], S = 0; S < 2; S++) {
                    var M = _[S], C = M + "anchor", m = M === "x" ? v : f, L = {
                      _fullLayout: r
                    }, d, h, E, w = P.coerceRef(u, t, L, M, void 0, "paper"), z = P.getRefType(w);
                    if (z === "range" ? (d = P.getFromId(L, w), d._shapeIndices.push(t._index), E = T.rangeToShapePosition(d), h = T.shapePositionToRange(d), (d.type === "category" || d.type === "multicategory") && (i(M + "0shift"), i(M + "1shift"))) : h = E = b.identity, x) {
                      var O = 0.25, B = 0.75, V = M + "0", U = M + "1", H = u[V], F = u[U];
                      u[V] = h(u[V], !0), u[U] = h(u[U], !0), m === "pixel" ? (i(V, 0), i(U, 10)) : (P.coercePosition(t, L, i, w, V, O), P.coercePosition(t, L, i, w, U, B)), t[V] = E(t[V]), t[U] = E(t[U]), u[V] = H, u[U] = F;
                    }
                    if (m === "pixel") {
                      var G = u[C];
                      u[C] = h(u[C], !0), P.coercePosition(t, L, i, w, C, 0.25), t[C] = E(t[C]), u[C] = G;
                    }
                  }
                  x && b.noneOrAll(u, t, ["x0", "x1", "y0", "y1"]);
                  var q = g === "line", rt, st;
                  if (x && (rt = i("label.texttemplate")), rt || (st = i("label.text")), st || rt) {
                    i("label.textangle");
                    var vt = i("label.textposition", q ? "middle" : "middle center");
                    i("label.xanchor"), i("label.yanchor", A(q, vt)), i("label.padding"), b.coerceFont(i, "label.font", r.font);
                  }
                }
              }
            }
          ),
          /***/
          44433: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(29714), n = e(30635), s = e(62203), T = e(81055).readPaths, A = e(49728), p = A.getPathString, u = e(41235), t = e(4530).FROM_TL;
              Y.exports = function(l, o, y, g) {
                if (g.selectAll(".shape-label").remove(), !!(y.label.text || y.label.texttemplate)) {
                  var x;
                  if (y.label.texttemplate) {
                    var c = {};
                    if (y.type !== "path") {
                      var v = P.getFromId(l, y.xref), f = P.getFromId(l, y.yref);
                      for (var _ in u) {
                        var S = u[_](y, v, f);
                        S !== void 0 && (c[_] = S);
                      }
                    }
                    x = b.texttemplateStringForShapes(y.label.texttemplate, {}, l._fullLayout._d3locale, c);
                  } else
                    x = y.label.text;
                  var M = {
                    "data-index": o
                  }, C = y.label.font, m = {
                    "data-notex": 1
                  }, L = g.append("g").attr(M).classed("shape-label", !0), d = L.append("text").attr(m).classed("shape-label-text", !0).text(x), h, E, w, z;
                  if (y.path) {
                    var O = p(l, y), B = T(O, l);
                    h = 1 / 0, w = 1 / 0, E = -1 / 0, z = -1 / 0;
                    for (var V = 0; V < B.length; V++)
                      for (var U = 0; U < B[V].length; U++)
                        for (var H = B[V][U], F = 1; F < H.length; F += 2) {
                          var G = H[F], q = H[F + 1];
                          h = Math.min(h, G), E = Math.max(E, G), w = Math.min(w, q), z = Math.max(z, q);
                        }
                  } else {
                    var rt = P.getFromId(l, y.xref), st = y.x0shift, vt = y.x1shift, ht = P.getRefType(y.xref), et = P.getFromId(l, y.yref), Q = y.y0shift, j = y.y1shift, at = P.getRefType(y.yref), ut = function(Ct, Gt) {
                      var Jt = A.getDataToPixel(l, rt, Gt, !1, ht);
                      return Jt(Ct);
                    }, nt = function(Ct, Gt) {
                      var Jt = A.getDataToPixel(l, et, Gt, !0, at);
                      return Jt(Ct);
                    };
                    h = ut(y.x0, st), E = ut(y.x1, vt), w = nt(y.y0, Q), z = nt(y.y1, j);
                  }
                  var X = y.label.textangle;
                  X === "auto" && (y.type === "line" ? X = r(h, w, E, z) : X = 0), d.call(function(Ct) {
                    return Ct.call(s.font, C).attr({}), n.convertToTspans(Ct, l), Ct;
                  });
                  var ct = s.bBox(d.node()), lt = i(h, w, E, z, y, X, ct), pt = lt.textx, wt = lt.texty, Et = lt.xanchor;
                  d.attr({
                    "text-anchor": {
                      left: "start",
                      center: "middle",
                      right: "end"
                    }[Et],
                    y: wt,
                    x: pt,
                    transform: "rotate(" + X + "," + pt + "," + wt + ")"
                  }).call(n.positionText, pt, wt);
                }
              };
              function r(a, l, o, y) {
                var g, x;
                return x = Math.abs(o - a), o >= a ? g = l - y : g = y - l, -180 / Math.PI * Math.atan2(g, x);
              }
              function i(a, l, o, y, g, x, c) {
                var v = g.label.textposition, f = g.label.textangle, _ = g.label.padding, S = g.type, M = Math.PI / 180 * x, C = Math.sin(M), m = Math.cos(M), L = g.label.xanchor, d = g.label.yanchor, h, E, w, z;
                if (S === "line") {
                  v === "start" ? (h = a, E = l) : v === "end" ? (h = o, E = y) : (h = (a + o) / 2, E = (l + y) / 2), L === "auto" && (v === "start" ? f === "auto" ? o > a ? L = "left" : o < a ? L = "right" : L = "center" : o > a ? L = "right" : o < a ? L = "left" : L = "center" : v === "end" ? f === "auto" ? o > a ? L = "right" : o < a ? L = "left" : L = "center" : o > a ? L = "left" : o < a ? L = "right" : L = "center" : L = "center");
                  var O = {
                    left: 1,
                    center: 0,
                    right: -1
                  }, B = {
                    bottom: -1,
                    middle: 0,
                    top: 1
                  };
                  if (f === "auto") {
                    var V = B[d];
                    w = -_ * C * V, z = _ * m * V;
                  } else {
                    var U = O[L], H = B[d];
                    w = _ * U, z = _ * H;
                  }
                  h = h + w, E = E + z;
                } else
                  w = _ + 3, v.indexOf("right") !== -1 ? (h = Math.max(a, o) - w, L === "auto" && (L = "right")) : v.indexOf("left") !== -1 ? (h = Math.min(a, o) + w, L === "auto" && (L = "left")) : (h = (a + o) / 2, L === "auto" && (L = "center")), v.indexOf("top") !== -1 ? E = Math.min(l, y) : v.indexOf("bottom") !== -1 ? E = Math.max(l, y) : E = (l + y) / 2, z = _, d === "bottom" ? E = E - z : d === "top" && (E = E + z);
                var F = t[d], G = g.label.font.size, q = c.height, rt = (q * F - G) * C, st = -(q * F - G) * m;
                return {
                  textx: h + rt,
                  texty: E + st,
                  xanchor: L
                };
              }
            }
          ),
          /***/
          561: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = b.strTranslate, n = e(14751), s = e(70414), T = s.drawMode, A = s.selectMode, p = e(33626), u = e(78766), t = e(93391), r = t.i000, i = t.i090, a = t.i180, l = t.i270, o = e(78534), y = o.clearOutlineControllers, g = e(81055), x = g.pointsOnRectangle, c = g.pointsOnEllipse, v = g.writePaths, f = e(87562).newShapes, _ = e(87562).createShapeObj, S = e(51817), M = e(44433);
              Y.exports = function d(h, E, w, z) {
                z || (z = 0);
                var O = w.gd;
                function B() {
                  d(h, E, w, z++), (c(h[0]) || w.hasText) && V({
                    redrawing: !0
                  });
                }
                function V(Vt) {
                  var zt = {};
                  w.isActiveShape !== void 0 && (w.isActiveShape = !1, zt = f(E, w)), w.isActiveSelection !== void 0 && (w.isActiveSelection = !1, zt = S(E, w), O._fullLayout._reselect = !0), Object.keys(zt).length && p.call((Vt || {}).redrawing ? "relayout" : "_guiRelayout", O, zt);
                }
                var U = O._fullLayout, H = U._zoomlayer, F = w.dragmode, G = T(F), q = A(F);
                (G || q) && (O._fullLayout._outlining = !0), y(O), E.attr("d", v(h));
                var rt, st, vt, ht, et;
                if (!z && (w.isActiveShape || w.isActiveSelection)) {
                  et = C([], h);
                  var Q = H.append("g").attr("class", "outline-controllers");
                  pt(Q), Qt();
                }
                if (G && w.hasText) {
                  var j = H.select(".label-temp"), at = _(E, w, w.dragmode);
                  M(O, "label-temp", at, j);
                }
                function ut(Vt) {
                  vt = +Vt.srcElement.getAttribute("data-i"), ht = +Vt.srcElement.getAttribute("data-j"), rt[vt][ht].moveFn = nt;
                }
                function nt(Vt, zt) {
                  if (h.length) {
                    var Rt = et[vt][ht][1], Wt = et[vt][ht][2], kt = h[vt], re = kt.length;
                    if (x(kt)) {
                      var ge = Vt, _e = zt;
                      if (w.isActiveSelection) {
                        var ce = m(kt, ht);
                        ce[1] === kt[ht][1] ? _e = 0 : ge = 0;
                      }
                      for (var ae = 0; ae < re; ae++)
                        if (ae !== ht) {
                          var Se = kt[ae];
                          Se[1] === kt[ht][1] && (Se[1] = Rt + ge), Se[2] === kt[ht][2] && (Se[2] = Wt + _e);
                        }
                      if (kt[ht][1] = Rt + ge, kt[ht][2] = Wt + _e, !x(kt))
                        for (var ze = 0; ze < re; ze++)
                          for (var Ne = 0; Ne < kt[ze].length; Ne++)
                            kt[ze][Ne] = et[vt][ze][Ne];
                    } else
                      kt[ht][1] = Rt + Vt, kt[ht][2] = Wt + zt;
                    B();
                  }
                }
                function X() {
                  V();
                }
                function ct() {
                  if (h.length && h[vt] && h[vt].length) {
                    for (var Vt = [], zt = 0; zt < h[vt].length; zt++)
                      zt !== ht && Vt.push(h[vt][zt]);
                    Vt.length > 1 && !(Vt.length === 2 && Vt[1][0] === "Z") && (ht === 0 && (Vt[0][0] = "M"), h[vt] = Vt, B(), V());
                  }
                }
                function lt(Vt, zt) {
                  if (Vt === 2) {
                    vt = +zt.srcElement.getAttribute("data-i"), ht = +zt.srcElement.getAttribute("data-j");
                    var Rt = h[vt];
                    !x(Rt) && !c(Rt) && ct();
                  }
                }
                function pt(Vt) {
                  rt = [];
                  for (var zt = 0; zt < h.length; zt++) {
                    var Rt = h[zt], Wt = x(Rt), kt = !Wt && c(Rt);
                    rt[zt] = [];
                    for (var re = Rt.length, ge = 0; ge < re; ge++)
                      if (Rt[ge][0] !== "Z" && !(kt && ge !== r && ge !== i && ge !== a && ge !== l)) {
                        var _e = Wt && w.isActiveSelection, ce;
                        _e && (ce = m(Rt, ge));
                        var ae = Rt[ge][1], Se = Rt[ge][2], ze = Vt.append(_e ? "rect" : "circle").attr("data-i", zt).attr("data-j", ge).style({
                          fill: u.background,
                          stroke: u.defaultLine,
                          "stroke-width": 1,
                          "shape-rendering": "crispEdges"
                        });
                        if (_e) {
                          var Ne = ce[1] - ae, Ve = ce[2] - Se, Oe = Ve ? 5 : Math.max(Math.min(25, Math.abs(Ne) - 5), 5), ur = Ne ? 5 : Math.max(Math.min(25, Math.abs(Ve) - 5), 5);
                          ze.classed(Ve ? "cursor-ew-resize" : "cursor-ns-resize", !0).attr("width", Oe).attr("height", ur).attr("x", ae - Oe / 2).attr("y", Se - ur / 2).attr("transform", P(Ne / 2, Ve / 2));
                        } else
                          ze.classed("cursor-grab", !0).attr("r", 5).attr("cx", ae).attr("cy", Se);
                        rt[zt][ge] = {
                          element: ze.node(),
                          gd: O,
                          prepFn: ut,
                          doneFn: X,
                          clickFn: lt
                        }, n.init(rt[zt][ge]);
                      }
                  }
                }
                function wt(Vt, zt) {
                  if (h.length)
                    for (var Rt = 0; Rt < h.length; Rt++)
                      for (var Wt = 0; Wt < h[Rt].length; Wt++)
                        for (var kt = 0; kt + 2 < h[Rt][Wt].length; kt += 2)
                          h[Rt][Wt][kt + 1] = et[Rt][Wt][kt + 1] + Vt, h[Rt][Wt][kt + 2] = et[Rt][Wt][kt + 2] + zt;
                }
                function Et(Vt, zt) {
                  wt(Vt, zt), B();
                }
                function Ct(Vt) {
                  vt = +Vt.srcElement.getAttribute("data-i"), vt || (vt = 0), st[vt].moveFn = Et;
                }
                function Gt() {
                  V();
                }
                function Jt(Vt) {
                  Vt === 2 && L(O);
                }
                function Qt() {
                  if (st = [], !!h.length) {
                    var Vt = 0;
                    st[Vt] = {
                      element: E[0][0],
                      gd: O,
                      prepFn: Ct,
                      doneFn: Gt,
                      clickFn: Jt
                    }, n.init(st[Vt]);
                  }
                }
              };
              function C(d, h) {
                for (var E = 0; E < h.length; E++) {
                  var w = h[E];
                  d[E] = [];
                  for (var z = 0; z < w.length; z++) {
                    d[E][z] = [];
                    for (var O = 0; O < w[z].length; O++)
                      d[E][z][O] = w[z][O];
                  }
                }
                return d;
              }
              function m(d, h) {
                var E = d[h][1], w = d[h][2], z = d.length, O, B, V;
                return O = (h + 1) % z, B = d[O][1], V = d[O][2], B === E && V === w && (O = (h + 2) % z, B = d[O][1], V = d[O][2]), [O, B, V];
              }
              function L(d) {
                if (A(d._fullLayout.dragmode)) {
                  y(d);
                  var h = d._fullLayout._activeSelectionIndex, E = (d.layout || {}).selections || [];
                  if (h < E.length) {
                    for (var w = [], z = 0; z < E.length; z++)
                      z !== h && w.push(E[z]);
                    delete d._fullLayout._activeSelectionIndex;
                    var O = d._fullLayout.selections[h];
                    d._fullLayout._deselect = {
                      xref: O.xref,
                      yref: O.yref
                    }, p.call("_guiRelayout", d, {
                      selections: w
                    });
                  }
                }
              }
            }
          ),
          /***/
          28231: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(33626), n = e(34809), s = e(29714), T = e(81055).readPaths, A = e(561), p = e(44433), u = e(78534).clearOutlineControllers, t = e(78766), r = e(62203), i = e(78032).arrayEditor, a = e(14751), l = e(27983), o = e(2956), y = e(49728), g = y.getPathString;
              Y.exports = {
                draw: x,
                drawOne: f,
                eraseActiveShape: L,
                drawLabel: p
              };
              function x(d) {
                var h = d._fullLayout;
                h._shapeUpperLayer.selectAll("path").remove(), h._shapeLowerLayer.selectAll("path").remove(), h._shapeUpperLayer.selectAll("text").remove(), h._shapeLowerLayer.selectAll("text").remove();
                for (var E in h._plots) {
                  var w = h._plots[E].shapelayer;
                  w && (w.selectAll("path").remove(), w.selectAll("text").remove());
                }
                for (var z = 0; z < h.shapes.length; z++)
                  h.shapes[z].visible === !0 && f(d, z);
              }
              function c(d) {
                return !!d._fullLayout._outlining;
              }
              function v(d) {
                return !d._context.edits.shapePosition;
              }
              function f(d, h) {
                d._fullLayout._paperdiv.selectAll('.shapelayer [data-index="' + h + '"]').remove();
                var E = y.makeShapesOptionsAndPlotinfo(d, h), w = E.options, z = E.plotinfo;
                if (!w._input || w.visible !== !0) return;
                if (w.layer === "above")
                  B(d._fullLayout._shapeUpperLayer);
                else if (w.xref === "paper" || w.yref === "paper")
                  B(d._fullLayout._shapeLowerLayer);
                else if (w.layer === "between")
                  B(z.shapelayerBetween);
                else if (z._hadPlotinfo) {
                  var O = z.mainplotinfo || z;
                  B(O.shapelayer);
                } else
                  B(d._fullLayout._shapeLowerLayer);
                function B(V) {
                  var U = g(d, w), H = {
                    "data-index": h,
                    "fill-rule": w.fillrule,
                    d: U
                  }, F = w.opacity, G = w.fillcolor, q = w.line.width ? w.line.color : "rgba(0,0,0,0)", rt = w.line.width, st = w.line.dash;
                  !rt && w.editable === !0 && (rt = 5, st = "solid");
                  var vt = U[U.length - 1] !== "Z", ht = v(d) && w.editable && d._fullLayout._activeShapeIndex === h;
                  ht && (G = vt ? "rgba(0,0,0,0)" : d._fullLayout.activeshape.fillcolor, F = d._fullLayout.activeshape.opacity);
                  var et = V.append("g").classed("shape-group", !0).attr({
                    "data-index": h
                  }), Q = et.append("path").attr(H).style("opacity", F).call(t.stroke, q).call(t.fill, G).call(r.dashLine, st, rt);
                  _(et, d, w), p(d, h, w, et);
                  var j;
                  if ((ht || d._context.edits.shapePosition) && (j = i(d.layout, "shapes", w)), ht) {
                    Q.style({
                      cursor: "move"
                    });
                    var at = {
                      element: Q.node(),
                      plotinfo: z,
                      gd: d,
                      editHelpers: j,
                      hasText: w.label.text || w.label.texttemplate,
                      isActiveShape: !0
                      // i.e. to enable controllers
                    }, ut = T(U, d);
                    A(ut, Q, at);
                  } else
                    d._context.edits.shapePosition ? S(d, Q, w, h, V, j) : w.editable === !0 && Q.style("pointer-events", vt || t.opacity(G) * F <= 0.5 ? "stroke" : "all");
                  Q.node().addEventListener("click", function() {
                    return C(d, Q);
                  });
                }
              }
              function _(d, h, E) {
                var w = (E.xref + E.yref).replace(/paper/g, "").replace(/[xyz][1-9]* *domain/g, "");
                r.setClipUrl(d, w ? "clip" + h._fullLayout._uid + w : null, h);
              }
              function S(d, h, E, w, z, O) {
                var B = 10, V = 10, U = E.xsizemode === "pixel", H = E.ysizemode === "pixel", F = E.type === "line", G = E.type === "path", q = O.modifyItem, rt, st, vt, ht, et, Q, j, at, ut, nt, X, ct, lt, pt, wt, Et = b.select(h.node().parentNode), Ct = s.getFromId(d, E.xref), Gt = s.getRefType(E.xref), Jt = s.getFromId(d, E.yref), Qt = s.getRefType(E.yref), Vt = E.x0shift, zt = E.x1shift, Rt = E.y0shift, Wt = E.y1shift, kt = function(Zt, ye) {
                  var Mt = y.getDataToPixel(d, Ct, ye, !1, Gt);
                  return Mt(Zt);
                }, re = function(Zt, ye) {
                  var Mt = y.getDataToPixel(d, Jt, ye, !0, Qt);
                  return Mt(Zt);
                }, ge = y.getPixelToData(d, Ct, !1, Gt), _e = y.getPixelToData(d, Jt, !0, Qt), ce = ze(), ae = {
                  element: ce.node(),
                  gd: d,
                  prepFn: Oe,
                  doneFn: ur,
                  clickFn: ie
                }, Se;
                a.init(ae), ce.node().onmousemove = Ve;
                function ze() {
                  return F ? Ne() : h;
                }
                function Ne() {
                  var Zt = 10, ye = Math.max(E.line.width, Zt), Mt = z.append("g").attr("data-index", w).attr("drag-helper", !0);
                  Mt.append("path").attr("d", h.attr("d")).style({
                    cursor: "move",
                    "stroke-width": ye,
                    "stroke-opacity": "0"
                    // ensure not visible
                  });
                  var St = {
                    "fill-opacity": "0"
                    // ensure not visible
                  }, Lt = Math.max(ye / 2, Zt);
                  return Mt.append("circle").attr({
                    "data-line-point": "start-point",
                    cx: U ? kt(E.xanchor) + E.x0 : kt(E.x0, Vt),
                    cy: H ? re(E.yanchor) - E.y0 : re(E.y0, Rt),
                    r: Lt
                  }).style(St).classed("cursor-grab", !0), Mt.append("circle").attr({
                    "data-line-point": "end-point",
                    cx: U ? kt(E.xanchor) + E.x1 : kt(E.x1, zt),
                    cy: H ? re(E.yanchor) - E.y1 : re(E.y1, Wt),
                    r: Lt
                  }).style(St).classed("cursor-grab", !0), Mt;
                }
                function Ve(Zt) {
                  if (c(d)) {
                    Se = null;
                    return;
                  }
                  if (F)
                    Zt.target.tagName === "path" ? Se = "move" : Se = Zt.target.attributes["data-line-point"].value === "start-point" ? "resize-over-start-point" : "resize-over-end-point";
                  else {
                    var ye = ae.element.getBoundingClientRect(), Mt = ye.right - ye.left, St = ye.bottom - ye.top, Lt = Zt.clientX - ye.left, te = Zt.clientY - ye.top, fe = !G && Mt > B && St > V && !Zt.shiftKey ? a.getCursor(Lt / Mt, 1 - te / St) : "move";
                    l(h, fe), Se = fe.split("-")[0];
                  }
                }
                function Oe(Zt) {
                  c(d) || (U && (et = kt(E.xanchor)), H && (Q = re(E.yanchor)), E.type === "path" ? wt = E.path : (rt = U ? E.x0 : kt(E.x0), st = H ? E.y0 : re(E.y0), vt = U ? E.x1 : kt(E.x1), ht = H ? E.y1 : re(E.y1)), rt < vt ? (ut = rt, lt = "x0", nt = vt, pt = "x1") : (ut = vt, lt = "x1", nt = rt, pt = "x0"), !H && st < ht || H && st > ht ? (j = st, X = "y0", at = ht, ct = "y1") : (j = ht, X = "y1", at = st, ct = "y0"), Ve(Zt), ee(z, E), Xt(h, E, d), ae.moveFn = Se === "move" ? $t : jt, ae.altKey = Zt.altKey);
                }
                function ur() {
                  c(d) || (l(h), Bt(z), _(h, d, E), P.call("_guiRelayout", d, O.getUpdateObj()));
                }
                function ie() {
                  c(d) || Bt(z);
                }
                function $t(Zt, ye) {
                  if (E.type === "path") {
                    var Mt = function(te) {
                      return te;
                    }, St = Mt, Lt = Mt;
                    U ? q("xanchor", E.xanchor = ge(et + Zt)) : (St = function(fe) {
                      return ge(kt(fe) + Zt);
                    }, Ct && Ct.type === "date" && (St = y.encodeDate(St))), H ? q("yanchor", E.yanchor = _e(Q + ye)) : (Lt = function(fe) {
                      return _e(re(fe) + ye);
                    }, Jt && Jt.type === "date" && (Lt = y.encodeDate(Lt))), q("path", E.path = M(wt, St, Lt));
                  } else
                    U ? q("xanchor", E.xanchor = ge(et + Zt)) : (q("x0", E.x0 = ge(rt + Zt)), q("x1", E.x1 = ge(vt + Zt))), H ? q("yanchor", E.yanchor = _e(Q + ye)) : (q("y0", E.y0 = _e(st + ye)), q("y1", E.y1 = _e(ht + ye)));
                  h.attr("d", g(d, E)), ee(z, E), p(d, w, E, Et);
                }
                function jt(Zt, ye) {
                  if (G) {
                    var Mt = function(qe) {
                      return qe;
                    }, St = Mt, Lt = Mt;
                    U ? q("xanchor", E.xanchor = ge(et + Zt)) : (St = function(we) {
                      return ge(kt(we) + Zt);
                    }, Ct && Ct.type === "date" && (St = y.encodeDate(St))), H ? q("yanchor", E.yanchor = _e(Q + ye)) : (Lt = function(we) {
                      return _e(re(we) + ye);
                    }, Jt && Jt.type === "date" && (Lt = y.encodeDate(Lt))), q("path", E.path = M(wt, St, Lt));
                  } else if (F) {
                    if (Se === "resize-over-start-point") {
                      var te = rt + Zt, fe = H ? st - ye : st + ye;
                      q("x0", E.x0 = U ? te : ge(te)), q("y0", E.y0 = H ? fe : _e(fe));
                    } else if (Se === "resize-over-end-point") {
                      var Me = vt + Zt, ir = H ? ht - ye : ht + ye;
                      q("x1", E.x1 = U ? Me : ge(Me)), q("y1", E.y1 = H ? ir : _e(ir));
                    }
                  } else {
                    var mr = function(qe) {
                      return Se.indexOf(qe) !== -1;
                    }, Xe = mr("n"), xe = mr("s"), me = mr("w"), Le = mr("e"), qt = Xe ? j + ye : j, De = xe ? at + ye : at, Je = me ? ut + Zt : ut, dr = Le ? nt + Zt : nt;
                    H && (Xe && (qt = j - ye), xe && (De = at - ye)), (!H && De - qt > V || H && qt - De > V) && (q(X, E[X] = H ? qt : _e(qt)), q(ct, E[ct] = H ? De : _e(De))), dr - Je > B && (q(lt, E[lt] = U ? Je : ge(Je)), q(pt, E[pt] = U ? dr : ge(dr)));
                  }
                  h.attr("d", g(d, E)), ee(z, E), p(d, w, E, Et);
                }
                function ee(Zt, ye) {
                  (U || H) && Mt();
                  function Mt() {
                    var St = ye.type !== "path", Lt = Zt.selectAll(".visual-cue").data([0]), te = 1;
                    Lt.enter().append("path").attr({
                      fill: "#fff",
                      "fill-rule": "evenodd",
                      stroke: "#000",
                      "stroke-width": te
                    }).classed("visual-cue", !0);
                    var fe = kt(U ? ye.xanchor : n.midRange(St ? [ye.x0, ye.x1] : y.extractPathCoords(ye.path, o.paramIsX))), Me = re(H ? ye.yanchor : n.midRange(St ? [ye.y0, ye.y1] : y.extractPathCoords(ye.path, o.paramIsY)));
                    if (fe = y.roundPositionForSharpStrokeRendering(fe, te), Me = y.roundPositionForSharpStrokeRendering(Me, te), U && H) {
                      var ir = "M" + (fe - 1 - te) + "," + (Me - 1 - te) + "h-8v2h8 v8h2v-8 h8v-2h-8 v-8h-2 Z";
                      Lt.attr("d", ir);
                    } else if (U) {
                      var mr = "M" + (fe - 1 - te) + "," + (Me - 9 - te) + "v18 h2 v-18 Z";
                      Lt.attr("d", mr);
                    } else {
                      var Xe = "M" + (fe - 9 - te) + "," + (Me - 1 - te) + "h18 v2 h-18 Z";
                      Lt.attr("d", Xe);
                    }
                  }
                }
                function Bt(Zt) {
                  Zt.selectAll(".visual-cue").remove();
                }
                function Xt(Zt, ye, Mt) {
                  var St = ye.xref, Lt = ye.yref, te = s.getFromId(Mt, St), fe = s.getFromId(Mt, Lt), Me = "";
                  St !== "paper" && !te.autorange && (Me += St), Lt !== "paper" && !fe.autorange && (Me += Lt), r.setClipUrl(Zt, Me ? "clip" + Mt._fullLayout._uid + Me : null, Mt);
                }
              }
              function M(d, h, E) {
                return d.replace(o.segmentRE, function(w) {
                  var z = 0, O = w.charAt(0), B = o.paramIsX[O], V = o.paramIsY[O], U = o.numParams[O], H = w.substr(1).replace(o.paramRE, function(F) {
                    return z >= U || (B[z] ? F = h(F) : V[z] && (F = E(F)), z++), F;
                  });
                  return O + H;
                });
              }
              function C(d, h) {
                if (v(d)) {
                  var E = h.node(), w = +E.getAttribute("data-index");
                  if (w >= 0) {
                    if (w === d._fullLayout._activeShapeIndex) {
                      m(d);
                      return;
                    }
                    d._fullLayout._activeShapeIndex = w, d._fullLayout._deactivateShape = m, x(d);
                  }
                }
              }
              function m(d) {
                if (v(d)) {
                  var h = d._fullLayout._activeShapeIndex;
                  h >= 0 && (u(d), delete d._fullLayout._activeShapeIndex, x(d));
                }
              }
              function L(d) {
                if (v(d)) {
                  u(d);
                  var h = d._fullLayout._activeShapeIndex, E = (d.layout || {}).shapes || [];
                  if (h < E.length) {
                    for (var w = [], z = 0; z < E.length; z++)
                      z !== h && w.push(E[z]);
                    return delete d._fullLayout._activeShapeIndex, P.call("_guiRelayout", d, {
                      shapes: w
                    });
                  }
                }
              }
            }
          ),
          /***/
          64101: (
            /***/
            function(Y, K, e) {
              var b = e(13582).overrideAll, P = e(9829), n = e(80337), s = e(94850).T, T = e(93049).extendFlat, A = e(3208).LF, p = e(41235);
              Y.exports = b({
                newshape: {
                  visible: T({}, P.visible, {}),
                  showlegend: {
                    valType: "boolean",
                    dflt: !1
                  },
                  legend: T({}, P.legend, {}),
                  legendgroup: T({}, P.legendgroup, {}),
                  legendgrouptitle: {
                    text: T({}, P.legendgrouptitle.text, {}),
                    font: n({})
                  },
                  legendrank: T({}, P.legendrank, {}),
                  legendwidth: T({}, P.legendwidth, {}),
                  line: {
                    color: {
                      valType: "color"
                    },
                    width: {
                      valType: "number",
                      min: 0,
                      dflt: 4
                    },
                    dash: T({}, s, {
                      dflt: "solid"
                    })
                  },
                  fillcolor: {
                    valType: "color",
                    dflt: "rgba(0,0,0,0)"
                  },
                  fillrule: {
                    valType: "enumerated",
                    values: ["evenodd", "nonzero"],
                    dflt: "evenodd"
                  },
                  opacity: {
                    valType: "number",
                    min: 0,
                    max: 1,
                    dflt: 1
                  },
                  layer: {
                    valType: "enumerated",
                    values: ["below", "above", "between"],
                    dflt: "above"
                  },
                  drawdirection: {
                    valType: "enumerated",
                    values: ["ortho", "horizontal", "vertical", "diagonal"],
                    dflt: "diagonal"
                  },
                  name: T({}, P.name, {}),
                  label: {
                    text: {
                      valType: "string",
                      dflt: ""
                    },
                    texttemplate: A({
                      newshape: !0
                    }, {
                      keys: Object.keys(p)
                    }),
                    font: n({}),
                    textposition: {
                      valType: "enumerated",
                      values: ["top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "start", "middle", "end"]
                    },
                    textangle: {
                      valType: "angle",
                      dflt: "auto"
                    },
                    xanchor: {
                      valType: "enumerated",
                      values: ["auto", "left", "center", "right"],
                      dflt: "auto"
                    },
                    yanchor: {
                      valType: "enumerated",
                      values: ["top", "middle", "bottom"]
                    },
                    padding: {
                      valType: "number",
                      dflt: 3,
                      min: 0
                    }
                  }
                },
                activeshape: {
                  fillcolor: {
                    valType: "color",
                    dflt: "rgb(255,0,255)"
                  },
                  opacity: {
                    valType: "number",
                    min: 0,
                    max: 1,
                    dflt: 0.5
                  }
                }
              }, "none", "from-root");
            }
          ),
          /***/
          93391: (
            /***/
            function(Y) {
              var K = 32;
              Y.exports = {
                CIRCLE_SIDES: K,
                i000: 0,
                i090: K / 4,
                i180: K / 2,
                i270: K / 4 * 3,
                cos45: Math.cos(Math.PI / 4),
                sin45: Math.sin(Math.PI / 4),
                SQRT2: Math.sqrt(2)
              };
            }
          ),
          /***/
          85522: (
            /***/
            function(Y, K, e) {
              var b = e(78766), P = e(34809);
              function n(s, T) {
                return s ? "bottom" : T.indexOf("top") !== -1 ? "top" : T.indexOf("bottom") !== -1 ? "bottom" : "middle";
              }
              Y.exports = function(T, A, p) {
                p("newshape.visible"), p("newshape.name"), p("newshape.showlegend"), p("newshape.legend"), p("newshape.legendwidth"), p("newshape.legendgroup"), p("newshape.legendgrouptitle.text"), P.coerceFont(p, "newshape.legendgrouptitle.font"), p("newshape.legendrank"), p("newshape.drawdirection"), p("newshape.layer"), p("newshape.fillcolor"), p("newshape.fillrule"), p("newshape.opacity");
                var u = p("newshape.line.width");
                if (u) {
                  var t = (T || {}).plot_bgcolor || "#FFF";
                  p("newshape.line.color", b.contrast(t)), p("newshape.line.dash");
                }
                var r = T.dragmode === "drawline", i = p("newshape.label.text"), a = p("newshape.label.texttemplate");
                if (i || a) {
                  p("newshape.label.textangle");
                  var l = p("newshape.label.textposition", r ? "middle" : "middle center");
                  p("newshape.label.xanchor"), p("newshape.label.yanchor", n(r, l)), p("newshape.label.padding"), P.coerceFont(p, "newshape.label.font", A.font);
                }
                p("activeshape.fillcolor"), p("activeshape.opacity");
              };
            }
          ),
          /***/
          81055: (
            /***/
            function(Y, K, e) {
              var b = e(26953), P = e(93391), n = P.CIRCLE_SIDES, s = P.SQRT2, T = e(49801), A = T.p2r, p = T.r2p, u = [0, 3, 4, 5, 6, 1, 2], t = [0, 3, 4, 1, 2];
              K.writePaths = function(a) {
                var l = a.length;
                if (!l) return "M0,0Z";
                for (var o = "", y = 0; y < l; y++)
                  for (var g = a[y].length, x = 0; x < g; x++) {
                    var c = a[y][x][0];
                    if (c === "Z")
                      o += "Z";
                    else
                      for (var v = a[y][x].length, f = 0; f < v; f++) {
                        var _ = f;
                        c === "Q" || c === "S" ? _ = t[f] : c === "C" && (_ = u[f]), o += a[y][x][_], f > 0 && f < v - 1 && (o += ",");
                      }
                  }
                return o;
              }, K.readPaths = function(a, l, o, y) {
                var g = b(a), x = [], c = -1, v = function() {
                  c++, x[c] = [];
                }, f, _ = 0, S = 0, M, C, m = function() {
                  M = _, C = S;
                };
                m();
                for (var L = 0; L < g.length; L++) {
                  var d = [], h, E, w, z, O = g[L][0], B = O;
                  switch (O) {
                    case "M":
                      v(), _ = +g[L][1], S = +g[L][2], d.push([B, _, S]), m();
                      break;
                    case "Q":
                    case "S":
                      h = +g[L][1], w = +g[L][2], _ = +g[L][3], S = +g[L][4], d.push([B, _, S, h, w]);
                      break;
                    case "C":
                      h = +g[L][1], w = +g[L][2], E = +g[L][3], z = +g[L][4], _ = +g[L][5], S = +g[L][6], d.push([B, _, S, h, w, E, z]);
                      break;
                    case "T":
                    case "L":
                      _ = +g[L][1], S = +g[L][2], d.push([B, _, S]);
                      break;
                    case "H":
                      B = "L", _ = +g[L][1], d.push([B, _, S]);
                      break;
                    case "V":
                      B = "L", S = +g[L][1], d.push([B, _, S]);
                      break;
                    case "A":
                      B = "L";
                      var V = +g[L][1], U = +g[L][2];
                      +g[L][4] || (V = -V, U = -U);
                      var H = _ - V, F = S;
                      for (f = 1; f <= n / 2; f++) {
                        var G = 2 * Math.PI * f / n;
                        d.push([B, H + V * Math.cos(G), F + U * Math.sin(G)]);
                      }
                      break;
                    case "Z":
                      (_ !== M || S !== C) && (_ = M, S = C, d.push([B, _, S]));
                      break;
                  }
                  for (var q = (o || {}).domain, rt = l._fullLayout._size, st = o && o.xsizemode === "pixel", vt = o && o.ysizemode === "pixel", ht = y === !1, et = 0; et < d.length; et++) {
                    for (f = 0; f + 2 < 7; f += 2) {
                      var Q = d[et][f + 1], j = d[et][f + 2];
                      Q === void 0 || j === void 0 || (_ = Q, S = j, o && (o.xaxis && o.xaxis.p2r ? (ht && (Q -= o.xaxis._offset), st ? Q = p(o.xaxis, o.xanchor) + Q : Q = A(o.xaxis, Q)) : (ht && (Q -= rt.l), q ? Q = q.x[0] + Q / rt.w : Q = Q / rt.w), o.yaxis && o.yaxis.p2r ? (ht && (j -= o.yaxis._offset), vt ? j = p(o.yaxis, o.yanchor) - j : j = A(o.yaxis, j)) : (ht && (j -= rt.t), q ? j = q.y[1] - j / rt.h : j = 1 - j / rt.h)), d[et][f + 1] = Q, d[et][f + 2] = j);
                    }
                    x[c].push(d[et].slice());
                  }
                }
                return x;
              };
              function r(a, l) {
                return Math.abs(a - l) <= 1e-6;
              }
              function i(a, l) {
                var o = l[1] - a[1], y = l[2] - a[2];
                return Math.sqrt(o * o + y * y);
              }
              K.pointsOnRectangle = function(a) {
                var l = a.length;
                if (l !== 5) return !1;
                for (var o = 1; o < 3; o++) {
                  var y = a[0][o] - a[1][o], g = a[3][o] - a[2][o];
                  if (!r(y, g)) return !1;
                  var x = a[0][o] - a[3][o], c = a[1][o] - a[2][o];
                  if (!r(x, c)) return !1;
                }
                return !r(a[0][1], a[1][1]) && !r(a[0][1], a[3][1]) ? !1 : !!(i(a[0], a[1]) * i(a[0], a[3]));
              }, K.pointsOnEllipse = function(a) {
                var l = a.length;
                if (l !== n + 1) return !1;
                l = n;
                for (var o = 0; o < l; o++) {
                  var y = (l * 2 - o) % l, g = (l / 2 + y) % l, x = (l / 2 + o) % l;
                  if (!r(i(a[o], a[x]), i(a[y], a[g]))) return !1;
                }
                return !0;
              }, K.handleEllipse = function(a, l, o) {
                if (!a) return [l, o];
                var y = K.ellipseOver({
                  x0: l[0],
                  y0: l[1],
                  x1: o[0],
                  y1: o[1]
                }), g = (y.x1 + y.x0) / 2, x = (y.y1 + y.y0) / 2, c = (y.x1 - y.x0) / 2, v = (y.y1 - y.y0) / 2;
                c || (c = v = v / s), v || (v = c = c / s);
                for (var f = [], _ = 0; _ < n; _++) {
                  var S = _ * 2 * Math.PI / n;
                  f.push([g + c * Math.cos(S), x + v * Math.sin(S)]);
                }
                return f;
              }, K.ellipseOver = function(a) {
                var l = a.x0, o = a.y0, y = a.x1, g = a.y1, x = y - l, c = g - o;
                l -= x, o -= c;
                var v = (l + y) / 2, f = (o + g) / 2, _ = s;
                return x *= _, c *= _, {
                  x0: v - x,
                  y0: f - c,
                  x1: v + x,
                  y1: f + c
                };
              }, K.fixDatesForPaths = function(a, l, o) {
                var y = l.type === "date", g = o.type === "date";
                if (!y && !g) return a;
                for (var x = 0; x < a.length; x++)
                  for (var c = 0; c < a[x].length; c++)
                    for (var v = 0; v + 2 < a[x][c].length; v += 2)
                      y && (a[x][c][v + 1] = a[x][c][v + 1].replace(" ", "_")), g && (a[x][c][v + 2] = a[x][c][v + 2].replace(" ", "_"));
                return a;
              };
            }
          ),
          /***/
          87562: (
            /***/
            function(Y, K, e) {
              var b = e(70414), P = b.drawMode, n = b.openMode, s = e(93391), T = s.i000, A = s.i090, p = s.i180, u = s.i270, t = s.cos45, r = s.sin45, i = e(49801), a = i.p2r, l = i.r2p, o = e(78534), y = o.clearOutline, g = e(81055), x = g.readPaths, c = g.writePaths, v = g.ellipseOver, f = g.fixDatesForPaths;
              function _(M, C) {
                if (M.length) {
                  var m = M[0][0];
                  if (m) {
                    var L = C.gd, d = C.isActiveShape, h = C.dragmode, E = (L.layout || {}).shapes || [];
                    if (!P(h) && d !== void 0) {
                      var w = L._fullLayout._activeShapeIndex;
                      if (w < E.length)
                        switch (L._fullLayout.shapes[w].type) {
                          case "rect":
                            h = "drawrect";
                            break;
                          case "circle":
                            h = "drawcircle";
                            break;
                          case "line":
                            h = "drawline";
                            break;
                          case "path":
                            var z = E[w].path || "";
                            z[z.length - 1] === "Z" ? h = "drawclosedpath" : h = "drawopenpath";
                            break;
                        }
                    }
                    var O = S(M, C, h);
                    y(L);
                    for (var B = C.editHelpers, V = (B || {}).modifyItem, U = [], H = 0; H < E.length; H++) {
                      var F = L._fullLayout.shapes[H];
                      if (U[H] = F._input, d !== void 0 && H === L._fullLayout._activeShapeIndex) {
                        var G = O;
                        switch (F.type) {
                          case "line":
                          case "rect":
                          case "circle":
                            V("x0", G.x0 - (F.x0shift || 0)), V("x1", G.x1 - (F.x1shift || 0)), V("y0", G.y0 - (F.y0shift || 0)), V("y1", G.y1 - (F.y1shift || 0));
                            break;
                          case "path":
                            V("path", G.path);
                            break;
                        }
                      }
                    }
                    return d === void 0 ? (U.push(O), U) : B ? B.getUpdateObj() : {};
                  }
                }
              }
              function S(M, C, m) {
                var L = M[0][0], d = C.gd, h = L.getAttribute("d"), E = d._fullLayout.newshape, w = C.plotinfo, z = C.isActiveShape, O = w.xaxis, B = w.yaxis, V = !!w.domain || !w.xaxis, U = !!w.domain || !w.yaxis, H = n(m), F = x(h, d, w, z), G = {
                  editable: !0,
                  visible: E.visible,
                  name: E.name,
                  showlegend: E.showlegend,
                  legend: E.legend,
                  legendwidth: E.legendwidth,
                  legendgroup: E.legendgroup,
                  legendgrouptitle: {
                    text: E.legendgrouptitle.text,
                    font: E.legendgrouptitle.font
                  },
                  legendrank: E.legendrank,
                  label: E.label,
                  xref: V ? "paper" : O._id,
                  yref: U ? "paper" : B._id,
                  layer: E.layer,
                  opacity: E.opacity,
                  line: {
                    color: E.line.color,
                    width: E.line.width,
                    dash: E.line.dash
                  }
                };
                H || (G.fillcolor = E.fillcolor, G.fillrule = E.fillrule);
                var q;
                if (F.length === 1 && (q = F[0]), q && q.length === 5 && // ensure we only have 4 corners for a rect
                m === "drawrect")
                  G.type = "rect", G.x0 = q[0][1], G.y0 = q[0][2], G.x1 = q[2][1], G.y1 = q[2][2];
                else if (q && m === "drawline")
                  G.type = "line", G.x0 = q[0][1], G.y0 = q[0][2], G.x1 = q[1][1], G.y1 = q[1][2];
                else if (q && m === "drawcircle") {
                  G.type = "circle";
                  var rt = q[T][1], st = q[A][1], vt = q[p][1], ht = q[u][1], et = q[T][2], Q = q[A][2], j = q[p][2], at = q[u][2], ut = w.xaxis && (w.xaxis.type === "date" || w.xaxis.type === "log"), nt = w.yaxis && (w.yaxis.type === "date" || w.yaxis.type === "log");
                  ut && (rt = l(w.xaxis, rt), st = l(w.xaxis, st), vt = l(w.xaxis, vt), ht = l(w.xaxis, ht)), nt && (et = l(w.yaxis, et), Q = l(w.yaxis, Q), j = l(w.yaxis, j), at = l(w.yaxis, at));
                  var X = (st + ht) / 2, ct = (et + j) / 2, lt = (ht - st + vt - rt) / 2, pt = (at - Q + j - et) / 2, wt = v({
                    x0: X,
                    y0: ct,
                    x1: X + lt * t,
                    y1: ct + pt * r
                  });
                  ut && (wt.x0 = a(w.xaxis, wt.x0), wt.x1 = a(w.xaxis, wt.x1)), nt && (wt.y0 = a(w.yaxis, wt.y0), wt.y1 = a(w.yaxis, wt.y1)), G.x0 = wt.x0, G.y0 = wt.y0, G.x1 = wt.x1, G.y1 = wt.y1;
                } else
                  G.type = "path", O && B && f(F, O, B), G.path = c(F), q = null;
                return G;
              }
              Y.exports = {
                newShapes: _,
                createShapeObj: S
              };
            }
          ),
          /***/
          78534: (
            /***/
            function(Y) {
              function K(b) {
                var P = b._fullLayout._zoomlayer;
                P && P.selectAll(".outline-controllers").remove();
              }
              function e(b) {
                var P = b._fullLayout._zoomlayer;
                P && P.selectAll(".select-outline").remove(), b._fullLayout._outlining = !1;
              }
              Y.exports = {
                clearOutlineControllers: K,
                clearOutline: e
              };
            }
          ),
          /***/
          49728: (
            /***/
            function(Y, K, e) {
              var b = e(2956), P = e(34809), n = e(29714);
              K.rangeToShapePosition = function(A) {
                return A.type === "log" ? A.r2d : function(p) {
                  return p;
                };
              }, K.shapePositionToRange = function(A) {
                return A.type === "log" ? A.d2r : function(p) {
                  return p;
                };
              }, K.decodeDate = function(A) {
                return function(p) {
                  return p.replace && (p = p.replace("_", " ")), A(p);
                };
              }, K.encodeDate = function(A) {
                return function(p) {
                  return A(p).replace(" ", "_");
                };
              }, K.extractPathCoords = function(A, p, u) {
                var t = [], r = A.match(b.segmentRE);
                return r.forEach(function(i) {
                  var a = p[i.charAt(0)].drawn;
                  if (a !== void 0) {
                    var l = i.substr(1).match(b.paramRE);
                    if (!(!l || l.length < a)) {
                      var o = l[a], y = u ? o : P.cleanNumber(o);
                      t.push(y);
                    }
                  }
                }), t;
              }, K.getDataToPixel = function(A, p, u, t, r) {
                var i = A._fullLayout._size, a;
                if (p)
                  if (r === "domain")
                    a = function(o) {
                      return p._length * (t ? 1 - o : o) + p._offset;
                    };
                  else {
                    var l = K.shapePositionToRange(p);
                    a = function(o) {
                      var y = T(p, u);
                      return p._offset + p.r2p(l(o, !0)) + y;
                    }, p.type === "date" && (a = K.decodeDate(a));
                  }
                else t ? a = function(o) {
                  return i.t + i.h * (1 - o);
                } : a = function(o) {
                  return i.l + i.w * o;
                };
                return a;
              }, K.getPixelToData = function(A, p, u, t) {
                var r = A._fullLayout._size, i;
                if (p)
                  if (t === "domain")
                    i = function(l) {
                      var o = (l - p._offset) / p._length;
                      return u ? 1 - o : o;
                    };
                  else {
                    var a = K.rangeToShapePosition(p);
                    i = function(l) {
                      return a(p.p2r(l - p._offset));
                    };
                  }
                else u ? i = function(l) {
                  return 1 - (l - r.t) / r.h;
                } : i = function(l) {
                  return (l - r.l) / r.w;
                };
                return i;
              }, K.roundPositionForSharpStrokeRendering = function(A, p) {
                var u = Math.round(p % 2) === 1, t = Math.round(A);
                return u ? t + 0.5 : t;
              }, K.makeShapesOptionsAndPlotinfo = function(A, p) {
                var u = A._fullLayout.shapes[p] || {}, t = A._fullLayout._plots[u.xref + u.yref], r = !!t;
                return r ? t._hadPlotinfo = !0 : (t = {}, u.xref && u.xref !== "paper" && (t.xaxis = A._fullLayout[u.xref + "axis"]), u.yref && u.yref !== "paper" && (t.yaxis = A._fullLayout[u.yref + "axis"])), t.xsizemode = u.xsizemode, t.ysizemode = u.ysizemode, t.xanchor = u.xanchor, t.yanchor = u.yanchor, {
                  options: u,
                  plotinfo: t
                };
              }, K.makeSelectionsOptionsAndPlotinfo = function(A, p) {
                var u = A._fullLayout.selections[p] || {}, t = A._fullLayout._plots[u.xref + u.yref], r = !!t;
                return r ? t._hadPlotinfo = !0 : (t = {}, u.xref && (t.xaxis = A._fullLayout[u.xref + "axis"]), u.yref && (t.yaxis = A._fullLayout[u.yref + "axis"])), {
                  options: u,
                  plotinfo: t
                };
              }, K.getPathString = function(A, p) {
                var u = p.type, t = n.getRefType(p.xref), r = n.getRefType(p.yref), i = n.getFromId(A, p.xref), a = n.getFromId(A, p.yref), l = A._fullLayout._size, o, y, g, x, c = T(i, p.x0shift), v = T(i, p.x1shift), f = T(a, p.y0shift), _ = T(a, p.y1shift), S, M, C, m;
                if (i ? t === "domain" ? y = function(U) {
                  return i._offset + i._length * U;
                } : (o = K.shapePositionToRange(i), y = function(U) {
                  return i._offset + i.r2p(o(U, !0));
                }) : y = function(U) {
                  return l.l + l.w * U;
                }, a ? r === "domain" ? x = function(U) {
                  return a._offset + a._length * (1 - U);
                } : (g = K.shapePositionToRange(a), x = function(U) {
                  return a._offset + a.r2p(g(U, !0));
                }) : x = function(U) {
                  return l.t + l.h * (1 - U);
                }, u === "path")
                  return i && i.type === "date" && (y = K.decodeDate(y)), a && a.type === "date" && (x = K.decodeDate(x)), s(p, y, x);
                if (p.xsizemode === "pixel") {
                  var L = y(p.xanchor);
                  S = L + p.x0 + c, M = L + p.x1 + v;
                } else
                  S = y(p.x0) + c, M = y(p.x1) + v;
                if (p.ysizemode === "pixel") {
                  var d = x(p.yanchor);
                  C = d - p.y0 + f, m = d - p.y1 + _;
                } else
                  C = x(p.y0) + f, m = x(p.y1) + _;
                if (u === "line") return "M" + S + "," + C + "L" + M + "," + m;
                if (u === "rect") return "M" + S + "," + C + "H" + M + "V" + m + "H" + S + "Z";
                var h = (S + M) / 2, E = (C + m) / 2, w = Math.abs(h - S), z = Math.abs(E - C), O = "A" + w + "," + z, B = h + w + "," + E, V = h + "," + (E - z);
                return "M" + B + O + " 0 1,1 " + V + O + " 0 0,1 " + B + "Z";
              };
              function s(A, p, u) {
                var t = A.path, r = A.xsizemode, i = A.ysizemode, a = A.xanchor, l = A.yanchor;
                return t.replace(b.segmentRE, function(o) {
                  var y = 0, g = o.charAt(0), x = b.paramIsX[g], c = b.paramIsY[g], v = b.numParams[g], f = o.substr(1).replace(b.paramRE, function(_) {
                    return x[y] ? r === "pixel" ? _ = p(a) + Number(_) : _ = p(_) : c[y] && (i === "pixel" ? _ = u(l) - Number(_) : _ = u(_)), y++, y > v && (_ = "X"), _;
                  });
                  return y > v && (f = f.replace(/[\s,]*X.*/, ""), P.log("Ignoring extra params in segment " + o)), g + f;
                });
              }
              function T(A, p) {
                p = p || 0;
                var u = 0;
                return p && A && (A.type === "category" || A.type === "multicategory") && (u = (A.r2p(1) - A.r2p(0)) * p), u;
              }
            }
          ),
          /***/
          43701: (
            /***/
            function(Y, K, e) {
              var b = e(28231);
              Y.exports = {
                moduleType: "component",
                name: "shapes",
                layoutAttributes: e(43144),
                supplyLayoutDefaults: e(74367),
                supplyDrawNewShapeDefaults: e(85522),
                includeBasePlot: e(20706)("shapes"),
                calcAutorange: e(44959),
                draw: b.draw,
                drawOne: b.drawOne
              };
            }
          ),
          /***/
          41235: (
            /***/
            function(Y) {
              function K(x, c) {
                return c ? c.d2l(x) : x;
              }
              function e(x, c) {
                return c ? c.l2d(x) : x;
              }
              function b(x) {
                return x.x0;
              }
              function P(x) {
                return x.x1;
              }
              function n(x) {
                return x.y0;
              }
              function s(x) {
                return x.y1;
              }
              function T(x) {
                return x.x0shift || 0;
              }
              function A(x) {
                return x.x1shift || 0;
              }
              function p(x) {
                return x.y0shift || 0;
              }
              function u(x) {
                return x.y1shift || 0;
              }
              function t(x, c) {
                return K(x.x1, c) + A(x) - K(x.x0, c) - T(x);
              }
              function r(x, c, v) {
                return K(x.y1, v) + u(x) - K(x.y0, v) - p(x);
              }
              function i(x, c) {
                return Math.abs(t(x, c));
              }
              function a(x, c, v) {
                return Math.abs(r(x, c, v));
              }
              function l(x, c, v) {
                return x.type !== "line" ? void 0 : Math.sqrt(Math.pow(t(x, c), 2) + Math.pow(r(x, c, v), 2));
              }
              function o(x, c) {
                return e((K(x.x1, c) + A(x) + K(x.x0, c) + T(x)) / 2, c);
              }
              function y(x, c, v) {
                return e((K(x.y1, v) + u(x) + K(x.y0, v) + p(x)) / 2, v);
              }
              function g(x, c, v) {
                return x.type !== "line" ? void 0 : r(x, c, v) / t(x, c);
              }
              Y.exports = {
                x0: b,
                x1: P,
                y0: n,
                y1: s,
                slope: g,
                dx: t,
                dy: r,
                width: i,
                height: a,
                length: l,
                xcenter: o,
                ycenter: y
              };
            }
          ),
          /***/
          8606: (
            /***/
            function(Y, K, e) {
              var b = e(80337), P = e(57891), n = e(93049).extendDeepAll, s = e(13582).overrideAll, T = e(49722), A = e(78032).templatedArray, p = e(64194), u = A("step", {
                visible: {
                  valType: "boolean",
                  dflt: !0
                },
                method: {
                  valType: "enumerated",
                  values: ["restyle", "relayout", "animate", "update", "skip"],
                  dflt: "restyle"
                },
                args: {
                  valType: "info_array",
                  freeLength: !0,
                  items: [{
                    valType: "any"
                  }, {
                    valType: "any"
                  }, {
                    valType: "any"
                  }]
                },
                label: {
                  valType: "string"
                },
                value: {
                  valType: "string"
                },
                execute: {
                  valType: "boolean",
                  dflt: !0
                }
              });
              Y.exports = s(A("slider", {
                visible: {
                  valType: "boolean",
                  dflt: !0
                },
                active: {
                  valType: "number",
                  min: 0,
                  dflt: 0
                },
                steps: u,
                lenmode: {
                  valType: "enumerated",
                  values: ["fraction", "pixels"],
                  dflt: "fraction"
                },
                len: {
                  valType: "number",
                  min: 0,
                  dflt: 1
                },
                x: {
                  valType: "number",
                  min: -2,
                  max: 3,
                  dflt: 0
                },
                pad: n(P({
                  editType: "arraydraw"
                }), {}, {
                  t: {
                    dflt: 20
                  }
                }),
                xanchor: {
                  valType: "enumerated",
                  values: ["auto", "left", "center", "right"],
                  dflt: "left"
                },
                y: {
                  valType: "number",
                  min: -2,
                  max: 3,
                  dflt: 0
                },
                yanchor: {
                  valType: "enumerated",
                  values: ["auto", "top", "middle", "bottom"],
                  dflt: "top"
                },
                transition: {
                  duration: {
                    valType: "number",
                    min: 0,
                    dflt: 150
                  },
                  easing: {
                    valType: "enumerated",
                    values: T.transition.easing.values,
                    dflt: "cubic-in-out"
                  }
                },
                currentvalue: {
                  visible: {
                    valType: "boolean",
                    dflt: !0
                  },
                  xanchor: {
                    valType: "enumerated",
                    values: ["left", "center", "right"],
                    dflt: "left"
                  },
                  offset: {
                    valType: "number",
                    dflt: 10
                  },
                  prefix: {
                    valType: "string"
                  },
                  suffix: {
                    valType: "string"
                  },
                  font: b({})
                },
                font: b({}),
                activebgcolor: {
                  valType: "color",
                  dflt: p.gripBgActiveColor
                },
                bgcolor: {
                  valType: "color",
                  dflt: p.railBgColor
                },
                bordercolor: {
                  valType: "color",
                  dflt: p.railBorderColor
                },
                borderwidth: {
                  valType: "number",
                  min: 0,
                  dflt: p.railBorderWidth
                },
                ticklen: {
                  valType: "number",
                  min: 0,
                  dflt: p.tickLength
                },
                tickcolor: {
                  valType: "color",
                  dflt: p.tickColor
                },
                tickwidth: {
                  valType: "number",
                  min: 0,
                  dflt: 1
                },
                minorticklen: {
                  valType: "number",
                  min: 0,
                  dflt: p.minorTickLength
                }
              }), "arraydraw", "from-root");
            }
          ),
          /***/
          64194: (
            /***/
            function(Y) {
              Y.exports = {
                // layout attribute name
                name: "sliders",
                // class names
                containerClassName: "slider-container",
                groupClassName: "slider-group",
                inputAreaClass: "slider-input-area",
                railRectClass: "slider-rail-rect",
                railTouchRectClass: "slider-rail-touch-rect",
                gripRectClass: "slider-grip-rect",
                tickRectClass: "slider-tick-rect",
                inputProxyClass: "slider-input-proxy",
                labelsClass: "slider-labels",
                labelGroupClass: "slider-label-group",
                labelClass: "slider-label",
                currentValueClass: "slider-current-value",
                railHeight: 5,
                // DOM attribute name in button group keeping track
                // of active update menu
                menuIndexAttrName: "slider-active-index",
                // id root pass to Plots.autoMargin
                autoMarginIdRoot: "slider-",
                // min item width / height
                minWidth: 30,
                minHeight: 30,
                // padding around item text
                textPadX: 40,
                // arrow offset off right edge
                arrowOffsetX: 4,
                railRadius: 2,
                railWidth: 5,
                railBorder: 4,
                railBorderWidth: 1,
                railBorderColor: "#bec8d9",
                railBgColor: "#f8fafc",
                // The distance of the rail from the edge of the touchable area
                // Slightly less than the step inset because of the curved edges
                // of the rail
                railInset: 8,
                // The distance from the extremal tick marks to the edge of the
                // touchable area. This is basically the same as the grip radius,
                // but for other styles it wouldn't really need to be.
                stepInset: 10,
                gripRadius: 10,
                gripWidth: 20,
                gripHeight: 20,
                gripBorder: 20,
                gripBorderWidth: 1,
                gripBorderColor: "#bec8d9",
                gripBgColor: "#f6f8fa",
                gripBgActiveColor: "#dbdde0",
                labelPadding: 8,
                labelOffset: 0,
                tickWidth: 1,
                tickColor: "#333",
                tickOffset: 25,
                tickLength: 7,
                minorTickOffset: 25,
                minorTickColor: "#333",
                minorTickLength: 4,
                // Extra space below the current value label:
                currentValuePadding: 8,
                currentValueInset: 0
              };
            }
          ),
          /***/
          74537: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(59008), n = e(8606), s = e(64194), T = s.name, A = n.steps;
              Y.exports = function(r, i) {
                P(r, i, {
                  name: T,
                  handleItemDefaults: p
                });
              };
              function p(t, r, i) {
                function a(f, _) {
                  return b.coerce(t, r, n, f, _);
                }
                for (var l = P(t, r, {
                  name: "steps",
                  handleItemDefaults: u
                }), o = 0, y = 0; y < l.length; y++)
                  l[y].visible && o++;
                var g;
                if (o < 2 ? g = r.visible = !1 : g = a("visible"), !!g) {
                  r._stepCount = o;
                  var x = r._visibleSteps = b.filterVisible(l), c = a("active");
                  (l[c] || {}).visible || (r.active = x[0]._index), a("x"), a("y"), b.noneOrAll(t, r, ["x", "y"]), a("xanchor"), a("yanchor"), a("len"), a("lenmode"), a("pad.t"), a("pad.r"), a("pad.b"), a("pad.l"), b.coerceFont(a, "font", i.font);
                  var v = a("currentvalue.visible");
                  v && (a("currentvalue.xanchor"), a("currentvalue.prefix"), a("currentvalue.suffix"), a("currentvalue.offset"), b.coerceFont(a, "currentvalue.font", r.font)), a("transition.duration"), a("transition.easing"), a("bgcolor"), a("activebgcolor"), a("bordercolor"), a("borderwidth"), a("ticklen"), a("tickwidth"), a("tickcolor"), a("minorticklen");
                }
              }
              function u(t, r) {
                function i(o, y) {
                  return b.coerce(t, r, A, o, y);
                }
                var a;
                if (t.method !== "skip" && !Array.isArray(t.args) ? a = r.visible = !1 : a = i("visible"), a) {
                  i("method"), i("args");
                  var l = i("label", "step-" + r._index);
                  i("value", l), i("execute");
                }
              }
            }
          ),
          /***/
          44097: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(44122), n = e(78766), s = e(62203), T = e(34809), A = T.strTranslate, p = e(30635), u = e(78032).arrayEditor, t = e(64194), r = e(4530), i = r.LINE_SPACING, a = r.FROM_TL, l = r.FROM_BR;
              Y.exports = function(V) {
                var U = V._context.staticPlot, H = V._fullLayout, F = y(H, V), G = H._infolayer.selectAll("g." + t.containerClassName).data(F.length > 0 ? [0] : []);
                G.enter().append("g").classed(t.containerClassName, !0).style("cursor", U ? null : "ew-resize");
                function q(ht) {
                  ht._commandObserver && (ht._commandObserver.remove(), delete ht._commandObserver), P.autoMargin(V, o(ht));
                }
                if (G.exit().each(function() {
                  b.select(this).selectAll("g." + t.groupClassName).each(q);
                }).remove(), F.length !== 0) {
                  var rt = G.selectAll("g." + t.groupClassName).data(F, g);
                  rt.enter().append("g").classed(t.groupClassName, !0), rt.exit().each(q).remove();
                  for (var st = 0; st < F.length; st++) {
                    var vt = F[st];
                    x(V, vt);
                  }
                  rt.each(function(ht) {
                    var et = b.select(this);
                    d(ht), P.manageCommandObserver(V, ht, ht._visibleSteps, function(Q) {
                      var j = et.data()[0];
                      j.active !== Q.index && (j._dragging || C(V, et, j, Q.index, !1, !0));
                    }), c(V, b.select(this), ht);
                  });
                }
              };
              function o(B) {
                return t.autoMarginIdRoot + B._index;
              }
              function y(B, V) {
                for (var U = B[t.name], H = [], F = 0; F < U.length; F++) {
                  var G = U[F];
                  G.visible && (G._gd = V, H.push(G));
                }
                return H;
              }
              function g(B) {
                return B._index;
              }
              function x(B, V) {
                var U = s.tester.selectAll("g." + t.labelGroupClass).data(V._visibleSteps);
                U.enter().append("g").classed(t.labelGroupClass, !0);
                var H = 0, F = 0;
                U.each(function(at) {
                  var ut = b.select(this), nt = _(ut, {
                    step: at
                  }, V), X = nt.node();
                  if (X) {
                    var ct = s.bBox(X);
                    F = Math.max(F, ct.height), H = Math.max(H, ct.width);
                  }
                }), U.remove();
                var G = V._dims = {};
                G.inputAreaWidth = Math.max(t.railWidth, t.gripHeight);
                var q = B._fullLayout._size;
                G.lx = q.l + q.w * V.x, G.ly = q.t + q.h * (1 - V.y), V.lenmode === "fraction" ? G.outerLength = Math.round(q.w * V.len) : G.outerLength = V.len, G.inputAreaStart = 0, G.inputAreaLength = Math.round(G.outerLength - V.pad.l - V.pad.r);
                var rt = G.inputAreaLength - 2 * t.stepInset, st = rt / (V._stepCount - 1), vt = H + t.labelPadding;
                if (G.labelStride = Math.max(1, Math.ceil(vt / st)), G.labelHeight = F, G.currentValueMaxWidth = 0, G.currentValueHeight = 0, G.currentValueTotalHeight = 0, G.currentValueMaxLines = 1, V.currentvalue.visible) {
                  var ht = s.tester.append("g");
                  U.each(function(at) {
                    var ut = v(ht, V, at.label), nt = ut.node() && s.bBox(ut.node()) || {
                      width: 0,
                      height: 0
                    }, X = p.lineCount(ut);
                    G.currentValueMaxWidth = Math.max(G.currentValueMaxWidth, Math.ceil(nt.width)), G.currentValueHeight = Math.max(G.currentValueHeight, Math.ceil(nt.height)), G.currentValueMaxLines = Math.max(G.currentValueMaxLines, X);
                  }), G.currentValueTotalHeight = G.currentValueHeight + V.currentvalue.offset, ht.remove();
                }
                G.height = G.currentValueTotalHeight + t.tickOffset + V.ticklen + t.labelOffset + G.labelHeight + V.pad.t + V.pad.b;
                var et = "left";
                T.isRightAnchor(V) && (G.lx -= G.outerLength, et = "right"), T.isCenterAnchor(V) && (G.lx -= G.outerLength / 2, et = "center");
                var Q = "top";
                T.isBottomAnchor(V) && (G.ly -= G.height, Q = "bottom"), T.isMiddleAnchor(V) && (G.ly -= G.height / 2, Q = "middle"), G.outerLength = Math.ceil(G.outerLength), G.height = Math.ceil(G.height), G.lx = Math.round(G.lx), G.ly = Math.round(G.ly);
                var j = {
                  y: V.y,
                  b: G.height * l[Q],
                  t: G.height * a[Q]
                };
                V.lenmode === "fraction" ? (j.l = 0, j.xl = V.x - V.len * a[et], j.r = 0, j.xr = V.x + V.len * l[et]) : (j.x = V.x, j.l = G.outerLength * a[et], j.r = G.outerLength * l[et]), P.autoMargin(B, o(V), j);
              }
              function c(B, V, U) {
                (U.steps[U.active] || {}).visible || (U.active = U._visibleSteps[0]._index), V.call(v, U).call(O, U).call(S, U).call(L, U).call(z, B, U).call(f, B, U);
                var H = U._dims;
                s.setTranslate(V, H.lx + U.pad.l, H.ly + U.pad.t), V.call(h, U, !1), V.call(v, U);
              }
              function v(B, V, U) {
                if (V.currentvalue.visible) {
                  var H = V._dims, F, G;
                  switch (V.currentvalue.xanchor) {
                    case "right":
                      F = H.inputAreaLength - t.currentValueInset - H.currentValueMaxWidth, G = "left";
                      break;
                    case "center":
                      F = H.inputAreaLength * 0.5, G = "middle";
                      break;
                    default:
                      F = t.currentValueInset, G = "left";
                  }
                  var q = T.ensureSingle(B, "text", t.labelClass, function(Q) {
                    Q.attr({
                      "text-anchor": G,
                      "data-notex": 1
                    });
                  }), rt = V.currentvalue.prefix ? V.currentvalue.prefix : "";
                  if (typeof U == "string")
                    rt += U;
                  else {
                    var st = V.steps[V.active].label, vt = V._gd._fullLayout._meta;
                    vt && (st = T.templateString(st, vt)), rt += st;
                  }
                  V.currentvalue.suffix && (rt += V.currentvalue.suffix), q.call(s.font, V.currentvalue.font).text(rt).call(p.convertToTspans, V._gd);
                  var ht = p.lineCount(q), et = (H.currentValueMaxLines + 1 - ht) * V.currentvalue.font.size * i;
                  return p.positionText(q, F, et), q;
                }
              }
              function f(B, V, U) {
                var H = T.ensureSingle(B, "rect", t.gripRectClass, function(F) {
                  F.call(m, V, B, U).style("pointer-events", "all");
                });
                H.attr({
                  width: t.gripWidth,
                  height: t.gripHeight,
                  rx: t.gripRadius,
                  ry: t.gripRadius
                }).call(n.stroke, U.bordercolor).call(n.fill, U.bgcolor).style("stroke-width", U.borderwidth + "px");
              }
              function _(B, V, U) {
                var H = T.ensureSingle(B, "text", t.labelClass, function(q) {
                  q.attr({
                    "text-anchor": "middle",
                    "data-notex": 1
                  });
                }), F = V.step.label, G = U._gd._fullLayout._meta;
                return G && (F = T.templateString(F, G)), H.call(s.font, U.font).text(F).call(p.convertToTspans, U._gd), H;
              }
              function S(B, V) {
                var U = T.ensureSingle(B, "g", t.labelsClass), H = V._dims, F = U.selectAll("g." + t.labelGroupClass).data(H.labelSteps);
                F.enter().append("g").classed(t.labelGroupClass, !0), F.exit().remove(), F.each(function(G) {
                  var q = b.select(this);
                  q.call(_, G, V), s.setTranslate(q, E(V, G.fraction), t.tickOffset + V.ticklen + // position is the baseline of the top line of text only, even
                  // if the label spans multiple lines
                  V.font.size * i + t.labelOffset + H.currentValueTotalHeight);
                });
              }
              function M(B, V, U, H, F) {
                var G = Math.round(H * (U._stepCount - 1)), q = U._visibleSteps[G]._index;
                q !== U.active && C(B, V, U, q, !0, F);
              }
              function C(B, V, U, H, F, G) {
                var q = U.active;
                U.active = H, u(B.layout, t.name, U).applyUpdate("active", H);
                var rt = U.steps[U.active];
                V.call(h, U, G), V.call(v, U), B.emit("plotly_sliderchange", {
                  slider: U,
                  step: U.steps[U.active],
                  interaction: F,
                  previousActive: q
                }), rt && rt.method && F && (V._nextMethod ? (V._nextMethod.step = rt, V._nextMethod.doCallback = F, V._nextMethod.doTransition = G) : (V._nextMethod = {
                  step: rt,
                  doCallback: F,
                  doTransition: G
                }, V._nextMethodRaf = window.requestAnimationFrame(function() {
                  var st = V._nextMethod.step;
                  st.method && (st.execute && P.executeAPICommand(B, st.method, st.args), V._nextMethod = null, V._nextMethodRaf = null);
                })));
              }
              function m(B, V, U) {
                if (V._context.staticPlot) return;
                var H = U.node(), F = b.select(V);
                function G() {
                  return U.data()[0];
                }
                function q() {
                  var rt = G();
                  V.emit("plotly_sliderstart", {
                    slider: rt
                  });
                  var st = U.select("." + t.gripRectClass);
                  b.event.stopPropagation(), b.event.preventDefault(), st.call(n.fill, rt.activebgcolor);
                  var vt = w(rt, b.mouse(H)[0]);
                  M(V, U, rt, vt, !0), rt._dragging = !0;
                  function ht() {
                    var Q = G(), j = w(Q, b.mouse(H)[0]);
                    M(V, U, Q, j, !1);
                  }
                  F.on("mousemove", ht), F.on("touchmove", ht);
                  function et() {
                    var Q = G();
                    Q._dragging = !1, st.call(n.fill, Q.bgcolor), F.on("mouseup", null), F.on("mousemove", null), F.on("touchend", null), F.on("touchmove", null), V.emit("plotly_sliderend", {
                      slider: Q,
                      step: Q.steps[Q.active]
                    });
                  }
                  F.on("mouseup", et), F.on("touchend", et);
                }
                B.on("mousedown", q), B.on("touchstart", q);
              }
              function L(B, V) {
                var U = B.selectAll("rect." + t.tickRectClass).data(V._visibleSteps), H = V._dims;
                U.enter().append("rect").classed(t.tickRectClass, !0), U.exit().remove(), U.attr({
                  width: V.tickwidth + "px",
                  "shape-rendering": "crispEdges"
                }), U.each(function(F, G) {
                  var q = G % H.labelStride === 0, rt = b.select(this);
                  rt.attr({
                    height: q ? V.ticklen : V.minorticklen
                  }).call(n.fill, V.tickcolor), s.setTranslate(rt, E(V, G / (V._stepCount - 1)) - 0.5 * V.tickwidth, (q ? t.tickOffset : t.minorTickOffset) + H.currentValueTotalHeight);
                });
              }
              function d(B) {
                var V = B._dims;
                V.labelSteps = [];
                for (var U = B._stepCount, H = 0; H < U; H += V.labelStride)
                  V.labelSteps.push({
                    fraction: H / (U - 1),
                    step: B._visibleSteps[H]
                  });
              }
              function h(B, V, U) {
                for (var H = B.select("rect." + t.gripRectClass), F = 0, G = 0; G < V._stepCount; G++)
                  if (V._visibleSteps[G]._index === V.active) {
                    F = G;
                    break;
                  }
                var q = E(V, F / (V._stepCount - 1));
                if (!V._invokingCommand) {
                  var rt = H;
                  U && V.transition.duration > 0 && (rt = rt.transition().duration(V.transition.duration).ease(V.transition.easing)), rt.attr("transform", A(q - t.gripWidth * 0.5, V._dims.currentValueTotalHeight));
                }
              }
              function E(B, V) {
                var U = B._dims;
                return U.inputAreaStart + t.stepInset + (U.inputAreaLength - 2 * t.stepInset) * Math.min(1, Math.max(0, V));
              }
              function w(B, V) {
                var U = B._dims;
                return Math.min(1, Math.max(0, (V - t.stepInset - U.inputAreaStart) / (U.inputAreaLength - 2 * t.stepInset - 2 * U.inputAreaStart)));
              }
              function z(B, V, U) {
                var H = U._dims, F = T.ensureSingle(B, "rect", t.railTouchRectClass, function(G) {
                  G.call(m, V, B, U).style("pointer-events", "all");
                });
                F.attr({
                  width: H.inputAreaLength,
                  height: Math.max(H.inputAreaWidth, t.tickOffset + U.ticklen + H.labelHeight)
                }).call(n.fill, U.bgcolor).attr("opacity", 0), s.setTranslate(F, 0, H.currentValueTotalHeight);
              }
              function O(B, V) {
                var U = V._dims, H = U.inputAreaLength - t.railInset * 2, F = T.ensureSingle(B, "rect", t.railRectClass);
                F.attr({
                  width: H,
                  height: t.railWidth,
                  rx: t.railRadius,
                  ry: t.railRadius,
                  "shape-rendering": "crispEdges"
                }).call(n.stroke, V.bordercolor).call(n.fill, V.bgcolor).style("stroke-width", V.borderwidth + "px"), s.setTranslate(F, t.railInset, (U.inputAreaWidth - t.railWidth) * 0.5 + U.currentValueTotalHeight);
              }
            }
          ),
          /***/
          15359: (
            /***/
            function(Y, K, e) {
              var b = e(64194);
              Y.exports = {
                moduleType: "component",
                name: b.name,
                layoutAttributes: e(8606),
                supplyLayoutDefaults: e(74537),
                draw: e(44097)
              };
            }
          ),
          /***/
          17240: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(10721), n = e(44122), s = e(33626), T = e(34809), A = T.strTranslate, p = e(62203), u = e(78766), t = e(30635), r = e(20438), i = e(4530).OPPOSITE_SIDE, a = / [XY][0-9]* /, l = 1.6, o = 1.6;
              function y(g, x, c) {
                var v = g._fullLayout, f = c.propContainer, _ = c.propName, S = c.placeholder, M = c.traceIndex, C = c.avoid || {}, m = c.attributes, L = c.transform, d = c.containerGroup, h = 1, E = f.title, w = (E && E.text ? E.text : "").trim(), z = !1, O = E && E.font ? E.font : {}, B = O.family, V = O.size, U = O.color, H = O.weight, F = O.style, G = O.variant, q = O.textcase, rt = O.lineposition, st = O.shadow, vt = c.subtitlePropName, ht = !!vt, et = c.subtitlePlaceholder, Q = (f.title || {}).subtitle || {
                  text: "",
                  font: {}
                }, j = Q.text.trim(), at = !1, ut = 1, nt = Q.font, X = nt.family, ct = nt.size, lt = nt.color, pt = nt.weight, wt = nt.style, Et = nt.variant, Ct = nt.textcase, Gt = nt.lineposition, Jt = nt.shadow, Qt;
                _ === "title.text" ? Qt = "titleText" : _.indexOf("axis") !== -1 ? Qt = "axisTitleText" : _.indexOf("colorbar" !== -1) && (Qt = "colorbarTitleText");
                var Vt = g._context.edits[Qt];
                function zt(Oe, ur) {
                  return Oe === void 0 || ur === void 0 ? !1 : Oe.replace(a, " % ") === ur.replace(a, " % ");
                }
                w === "" ? h = 0 : zt(w, S) && (Vt || (w = ""), h = 0.2, z = !0), ht && (j === "" ? ut = 0 : zt(j, et) && (Vt || (j = ""), ut = 0.2, at = !0)), c._meta ? w = T.templateString(w, c._meta) : v._meta && (w = T.templateString(w, v._meta));
                var Rt = w || j || Vt, Wt;
                d || (d = T.ensureSingle(v._infolayer, "g", "g-" + x), Wt = v._hColorbarMoveTitle);
                var kt = d.selectAll("text." + x).data(Rt ? [0] : []);
                kt.enter().append("text"), kt.text(w).attr("class", x), kt.exit().remove();
                var re = null, ge = x + "-subtitle", _e = j || Vt;
                if (ht && _e && (re = d.selectAll("text." + ge).data(_e ? [0] : []), re.enter().append("text"), re.text(j).attr("class", ge), re.exit().remove()), !Rt) return d;
                function ce(Oe, ur) {
                  T.syncOrAsync([ae, Se], {
                    title: Oe,
                    subtitle: ur
                  });
                }
                function ae(Oe) {
                  var ur = Oe.title, ie = Oe.subtitle, $t;
                  !L && Wt && (L = {}), L ? ($t = "", L.rotate && ($t += "rotate(" + [L.rotate, m.x, m.y] + ")"), (L.offset || Wt) && ($t += A(0, (L.offset || 0) - (Wt || 0)))) : $t = null, ur.attr("transform", $t);
                  function jt(Mt) {
                    if (Mt) {
                      var St = b.select(Mt.node().parentNode).select("." + ge);
                      if (!St.empty()) {
                        var Lt = Mt.node().getBBox();
                        if (Lt.height) {
                          var te = Lt.y + Lt.height + l * ct;
                          St.attr("y", te);
                        }
                      }
                    }
                  }
                  if (ur.style("opacity", h * u.opacity(U)).call(p.font, {
                    color: u.rgb(U),
                    size: b.round(V, 2),
                    family: B,
                    weight: H,
                    style: F,
                    variant: G,
                    textcase: q,
                    shadow: st,
                    lineposition: rt
                  }).attr(m).call(t.convertToTspans, g, jt), ie) {
                    var ee = d.select("." + x + "-math-group"), Bt = ur.node().getBBox(), Xt = ee.node() ? ee.node().getBBox() : void 0, Zt = Xt ? Xt.y + Xt.height + l * ct : Bt.y + Bt.height + o * ct, ye = T.extendFlat({}, m, {
                      y: Zt
                    });
                    ie.attr("transform", $t), ie.style("opacity", ut * u.opacity(lt)).call(p.font, {
                      color: u.rgb(lt),
                      size: b.round(ct, 2),
                      family: X,
                      weight: pt,
                      style: wt,
                      variant: Et,
                      textcase: Ct,
                      shadow: Jt,
                      lineposition: Gt
                    }).attr(ye).call(t.convertToTspans, g);
                  }
                  return n.previousPromises(g);
                }
                function Se(Oe) {
                  var ur = Oe.title, ie = b.select(ur.node().parentNode);
                  if (C && C.selection && C.side && w) {
                    ie.attr("transform", null);
                    var $t = i[C.side], jt = C.side === "left" || C.side === "top" ? -1 : 1, ee = P(C.pad) ? C.pad : 2, Bt = p.bBox(ie.node()), Xt = {
                      t: 0,
                      b: 0,
                      l: 0,
                      r: 0
                    }, Zt = g._fullLayout._reservedMargin;
                    for (var ye in Zt)
                      for (var Mt in Zt[ye]) {
                        var St = Zt[ye][Mt];
                        Xt[Mt] = Math.max(Xt[Mt], St);
                      }
                    var Lt = {
                      left: Xt.l,
                      top: Xt.t,
                      right: v.width - Xt.r,
                      bottom: v.height - Xt.b
                    }, te = C.maxShift || jt * (Lt[C.side] - Bt[C.side]), fe = 0;
                    if (te < 0)
                      fe = te;
                    else {
                      var Me = C.offsetLeft || 0, ir = C.offsetTop || 0;
                      Bt.left -= Me, Bt.right -= Me, Bt.top -= ir, Bt.bottom -= ir, C.selection.each(function() {
                        var Xe = p.bBox(this);
                        T.bBoxIntersect(Bt, Xe, ee) && (fe = Math.max(fe, jt * (Xe[C.side] - Bt[$t]) + ee));
                      }), fe = Math.min(te, fe), f._titleScoot = Math.abs(fe);
                    }
                    if (fe > 0 || te < 0) {
                      var mr = {
                        left: [-fe, 0],
                        right: [fe, 0],
                        top: [0, -fe],
                        bottom: [0, fe]
                      }[C.side];
                      ie.attr("transform", A(mr[0], mr[1]));
                    }
                  }
                }
                kt.call(ce, re);
                function ze(Oe, ur) {
                  Oe.text(ur).on("mouseover.opacity", function() {
                    b.select(this).transition().duration(r.SHOW_PLACEHOLDER).style("opacity", 1);
                  }).on("mouseout.opacity", function() {
                    b.select(this).transition().duration(r.HIDE_PLACEHOLDER).style("opacity", 0);
                  });
                }
                if (Vt && (w ? kt.on(".opacity", null) : (ze(kt, S), z = !0), kt.call(t.makeEditable, {
                  gd: g
                }).on("edit", function(Oe) {
                  M !== void 0 ? s.call("_guiRestyle", g, _, Oe, M) : s.call("_guiRelayout", g, _, Oe);
                }).on("cancel", function() {
                  this.text(this.attr("data-unformatted")).call(ce);
                }).on("input", function(Oe) {
                  this.text(Oe || " ").call(t.positionText, m.x, m.y);
                }), ht)) {
                  if (ht && !w) {
                    var Ne = kt.node().getBBox(), Ve = Ne.y + Ne.height + o * ct;
                    re.attr("y", Ve);
                  }
                  j ? re.on(".opacity", null) : (ze(re, et), at = !0), re.call(t.makeEditable, {
                    gd: g
                  }).on("edit", function(Oe) {
                    s.call("_guiRelayout", g, "title.subtitle.text", Oe);
                  }).on("cancel", function() {
                    this.text(this.attr("data-unformatted")).call(ce);
                  }).on("input", function(Oe) {
                    this.text(Oe || " ").call(t.positionText, re.attr("x"), re.attr("y"));
                  });
                }
                return kt.classed("js-placeholder", z), re && re.classed("js-placeholder", at), d;
              }
              Y.exports = {
                draw: y,
                SUBTITLE_PADDING_EM: o,
                SUBTITLE_PADDING_MATHJAX_EM: l
              };
            }
          ),
          /***/
          85389: (
            /***/
            function(Y, K, e) {
              var b = e(80337), P = e(10229), n = e(93049).extendFlat, s = e(13582).overrideAll, T = e(57891), A = e(78032).templatedArray, p = A("button", {
                visible: {
                  valType: "boolean"
                },
                method: {
                  valType: "enumerated",
                  values: ["restyle", "relayout", "animate", "update", "skip"],
                  dflt: "restyle"
                },
                args: {
                  valType: "info_array",
                  freeLength: !0,
                  items: [{
                    valType: "any"
                  }, {
                    valType: "any"
                  }, {
                    valType: "any"
                  }]
                },
                args2: {
                  valType: "info_array",
                  freeLength: !0,
                  items: [{
                    valType: "any"
                  }, {
                    valType: "any"
                  }, {
                    valType: "any"
                  }]
                },
                label: {
                  valType: "string",
                  dflt: ""
                },
                execute: {
                  valType: "boolean",
                  dflt: !0
                }
              });
              Y.exports = s(A("updatemenu", {
                _arrayAttrRegexps: [/^updatemenus\[(0|[1-9][0-9]+)\]\.buttons/],
                visible: {
                  valType: "boolean"
                },
                type: {
                  valType: "enumerated",
                  values: ["dropdown", "buttons"],
                  dflt: "dropdown"
                },
                direction: {
                  valType: "enumerated",
                  values: ["left", "right", "up", "down"],
                  dflt: "down"
                },
                active: {
                  valType: "integer",
                  min: -1,
                  dflt: 0
                },
                showactive: {
                  valType: "boolean",
                  dflt: !0
                },
                buttons: p,
                x: {
                  valType: "number",
                  min: -2,
                  max: 3,
                  dflt: -0.05
                },
                xanchor: {
                  valType: "enumerated",
                  values: ["auto", "left", "center", "right"],
                  dflt: "right"
                },
                y: {
                  valType: "number",
                  min: -2,
                  max: 3,
                  dflt: 1
                },
                yanchor: {
                  valType: "enumerated",
                  values: ["auto", "top", "middle", "bottom"],
                  dflt: "top"
                },
                pad: n(T({
                  editType: "arraydraw"
                }), {}),
                font: b({}),
                bgcolor: {
                  valType: "color"
                },
                bordercolor: {
                  valType: "color",
                  dflt: P.borderLine
                },
                borderwidth: {
                  valType: "number",
                  min: 0,
                  dflt: 1,
                  editType: "arraydraw"
                }
              }), "arraydraw", "from-root");
            }
          ),
          /***/
          71559: (
            /***/
            function(Y) {
              Y.exports = {
                // layout attribute name
                name: "updatemenus",
                // class names
                containerClassName: "updatemenu-container",
                headerGroupClassName: "updatemenu-header-group",
                headerClassName: "updatemenu-header",
                headerArrowClassName: "updatemenu-header-arrow",
                dropdownButtonGroupClassName: "updatemenu-dropdown-button-group",
                dropdownButtonClassName: "updatemenu-dropdown-button",
                buttonClassName: "updatemenu-button",
                itemRectClassName: "updatemenu-item-rect",
                itemTextClassName: "updatemenu-item-text",
                // DOM attribute name in button group keeping track
                // of active update menu
                menuIndexAttrName: "updatemenu-active-index",
                // id root pass to Plots.autoMargin
                autoMarginIdRoot: "updatemenu-",
                // options when 'active: -1'
                blankHeaderOpts: {
                  label: "  "
                },
                // min item width / height
                minWidth: 30,
                minHeight: 30,
                // padding around item text
                textPadX: 24,
                arrowPadX: 16,
                // item rect radii
                rx: 2,
                ry: 2,
                // item  text x offset off left edge
                textOffsetX: 12,
                // item  text y offset (w.r.t. middle)
                textOffsetY: 3,
                // arrow offset off right edge
                arrowOffsetX: 4,
                // gap between header and buttons
                gapButtonHeader: 5,
                // gap between between buttons
                gapButton: 2,
                // color given to active buttons
                activeColor: "#F4FAFF",
                // color given to hovered buttons
                hoverColor: "#F4FAFF",
                // symbol for menu open arrow
                arrowSymbol: {
                  left: "◄",
                  right: "►",
                  up: "▲",
                  down: "▼"
                }
              };
            }
          ),
          /***/
          42746: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(59008), n = e(85389), s = e(71559), T = s.name, A = n.buttons;
              Y.exports = function(r, i) {
                var a = {
                  name: T,
                  handleItemDefaults: p
                };
                P(r, i, a);
              };
              function p(t, r, i) {
                function a(y, g) {
                  return b.coerce(t, r, n, y, g);
                }
                var l = P(t, r, {
                  name: "buttons",
                  handleItemDefaults: u
                }), o = a("visible", l.length > 0);
                o && (a("active"), a("direction"), a("type"), a("showactive"), a("x"), a("y"), b.noneOrAll(t, r, ["x", "y"]), a("xanchor"), a("yanchor"), a("pad.t"), a("pad.r"), a("pad.b"), a("pad.l"), b.coerceFont(a, "font", i.font), a("bgcolor", i.paper_bgcolor), a("bordercolor"), a("borderwidth"));
              }
              function u(t, r) {
                function i(l, o) {
                  return b.coerce(t, r, A, l, o);
                }
                var a = i("visible", t.method === "skip" || Array.isArray(t.args));
                a && (i("method"), i("args"), i("args2"), i("label"), i("execute"));
              }
            }
          ),
          /***/
          40974: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(44122), n = e(78766), s = e(62203), T = e(34809), A = e(30635), p = e(78032).arrayEditor, u = e(4530).LINE_SPACING, t = e(71559), r = e(21736);
              Y.exports = function(w) {
                var z = w._fullLayout, O = T.filterVisible(z[t.name]);
                function B(st) {
                  P.autoMargin(w, L(st));
                }
                var V = z._menulayer.selectAll("g." + t.containerClassName).data(O.length > 0 ? [0] : []);
                if (V.enter().append("g").classed(t.containerClassName, !0).style("cursor", "pointer"), V.exit().each(function() {
                  b.select(this).selectAll("g." + t.headerGroupClassName).each(B);
                }).remove(), O.length !== 0) {
                  var U = V.selectAll("g." + t.headerGroupClassName).data(O, i);
                  U.enter().append("g").classed(t.headerGroupClassName, !0);
                  for (var H = T.ensureSingle(V, "g", t.dropdownButtonGroupClassName, function(st) {
                    st.style("pointer-events", "all");
                  }), F = 0; F < O.length; F++) {
                    var G = O[F];
                    m(w, G);
                  }
                  var q = "updatemenus" + z._uid, rt = new r(w, H, q);
                  U.enter().size() && (H.node().parentNode.appendChild(H.node()), H.call(h)), U.exit().each(function(st) {
                    H.call(h), B(st);
                  }).remove(), U.each(function(st) {
                    var vt = b.select(this), ht = st.type === "dropdown" ? H : null;
                    P.manageCommandObserver(w, st, st.buttons, function(et) {
                      o(w, st, st.buttons[et.index], vt, ht, rt, et.index, !0);
                    }), st.type === "dropdown" ? (y(w, vt, H, rt, st), l(H, st) && g(w, vt, H, rt, st)) : g(w, vt, null, null, st);
                  });
                }
              };
              function i(E) {
                return E._index;
              }
              function a(E) {
                return +E.attr(t.menuIndexAttrName) == -1;
              }
              function l(E, w) {
                return +E.attr(t.menuIndexAttrName) === w._index;
              }
              function o(E, w, z, O, B, V, U, H) {
                w.active = U, p(E.layout, t.name, w).applyUpdate("active", U), w.type === "buttons" ? g(E, O, null, null, w) : w.type === "dropdown" && (B.attr(t.menuIndexAttrName, "-1"), y(E, O, B, V, w), H || g(E, O, B, V, w));
              }
              function y(E, w, z, O, B) {
                var V = T.ensureSingle(w, "g", t.headerClassName, function(st) {
                  st.style("pointer-events", "all");
                }), U = B._dims, H = B.active, F = B.buttons[H] || t.blankHeaderOpts, G = {
                  y: B.pad.t,
                  yPad: 0,
                  x: B.pad.l,
                  xPad: 0,
                  index: 0
                }, q = {
                  width: U.headerWidth,
                  height: U.headerHeight
                };
                V.call(v, B, F, E).call(d, B, G, q);
                var rt = T.ensureSingle(w, "text", t.headerArrowClassName, function(st) {
                  st.attr("text-anchor", "end").call(s.font, B.font).text(t.arrowSymbol[B.direction]);
                });
                rt.attr({
                  x: U.headerWidth - t.arrowOffsetX + B.pad.l,
                  y: U.headerHeight / 2 + t.textOffsetY + B.pad.t
                }), V.on("click", function() {
                  z.call(h, String(l(z, B) ? -1 : B._index)), g(E, w, z, O, B);
                }), V.on("mouseover", function() {
                  V.call(M);
                }), V.on("mouseout", function() {
                  V.call(C, B);
                }), s.setTranslate(w, U.lx, U.ly);
              }
              function g(E, w, z, O, B) {
                z || (z = w, z.attr("pointer-events", "all"));
                var V = !a(z) || B.type === "buttons" ? B.buttons : [], U = B.type === "dropdown" ? t.dropdownButtonClassName : t.buttonClassName, H = z.selectAll("g." + U).data(T.filterVisible(V)), F = H.enter().append("g").classed(U, !0), G = H.exit();
                B.type === "dropdown" ? (F.attr("opacity", "0").transition().attr("opacity", "1"), G.transition().attr("opacity", "0").remove()) : G.remove();
                var q = 0, rt = 0, st = B._dims, vt = ["up", "down"].indexOf(B.direction) !== -1;
                B.type === "dropdown" && (vt ? rt = st.headerHeight + t.gapButtonHeader : q = st.headerWidth + t.gapButtonHeader), B.type === "dropdown" && B.direction === "up" && (rt = -t.gapButtonHeader + t.gapButton - st.openHeight), B.type === "dropdown" && B.direction === "left" && (q = -t.gapButtonHeader + t.gapButton - st.openWidth);
                var ht = {
                  x: st.lx + q + B.pad.l,
                  y: st.ly + rt + B.pad.t,
                  yPad: t.gapButton,
                  xPad: t.gapButton,
                  index: 0
                }, et = {
                  l: ht.x + B.borderwidth,
                  t: ht.y + B.borderwidth
                };
                H.each(function(Q, j) {
                  var at = b.select(this);
                  at.call(v, B, Q, E).call(d, B, ht), at.on("click", function() {
                    b.event.defaultPrevented || (Q.execute && (Q.args2 && B.active === j ? (o(E, B, Q, w, z, O, -1), P.executeAPICommand(E, Q.method, Q.args2)) : (o(E, B, Q, w, z, O, j), P.executeAPICommand(E, Q.method, Q.args))), E.emit("plotly_buttonclicked", {
                      menu: B,
                      button: Q,
                      active: B.active
                    }));
                  }), at.on("mouseover", function() {
                    at.call(M);
                  }), at.on("mouseout", function() {
                    at.call(C, B), H.call(S, B);
                  });
                }), H.call(S, B), vt ? (et.w = Math.max(st.openWidth, st.headerWidth), et.h = ht.y - et.t) : (et.w = ht.x - et.l, et.h = Math.max(st.openHeight, st.headerHeight)), et.direction = B.direction, O && (H.size() ? x(E, w, z, O, B, et) : c(O));
              }
              function x(E, w, z, O, B, V) {
                var U = B.direction, H = U === "up" || U === "down", F = B._dims, G = B.active, q, rt, st;
                if (H)
                  for (rt = 0, st = 0; st < G; st++)
                    rt += F.heights[st] + t.gapButton;
                else
                  for (q = 0, st = 0; st < G; st++)
                    q += F.widths[st] + t.gapButton;
                O.enable(V, q, rt), O.hbar && O.hbar.attr("opacity", "0").transition().attr("opacity", "1"), O.vbar && O.vbar.attr("opacity", "0").transition().attr("opacity", "1");
              }
              function c(E) {
                var w = !!E.hbar, z = !!E.vbar;
                w && E.hbar.transition().attr("opacity", "0").each("end", function() {
                  w = !1, z || E.disable();
                }), z && E.vbar.transition().attr("opacity", "0").each("end", function() {
                  z = !1, w || E.disable();
                });
              }
              function v(E, w, z, O) {
                E.call(f, w).call(_, w, z, O);
              }
              function f(E, w) {
                var z = T.ensureSingle(E, "rect", t.itemRectClassName, function(O) {
                  O.attr({
                    rx: t.rx,
                    ry: t.ry,
                    "shape-rendering": "crispEdges"
                  });
                });
                z.call(n.stroke, w.bordercolor).call(n.fill, w.bgcolor).style("stroke-width", w.borderwidth + "px");
              }
              function _(E, w, z, O) {
                var B = T.ensureSingle(E, "text", t.itemTextClassName, function(H) {
                  H.attr({
                    "text-anchor": "start",
                    "data-notex": 1
                  });
                }), V = z.label, U = O._fullLayout._meta;
                U && (V = T.templateString(V, U)), B.call(s.font, w.font).text(V).call(A.convertToTspans, O);
              }
              function S(E, w) {
                var z = w.active;
                E.each(function(O, B) {
                  var V = b.select(this);
                  B === z && w.showactive && V.select("rect." + t.itemRectClassName).call(n.fill, t.activeColor);
                });
              }
              function M(E) {
                E.select("rect." + t.itemRectClassName).call(n.fill, t.hoverColor);
              }
              function C(E, w) {
                E.select("rect." + t.itemRectClassName).call(n.fill, w.bgcolor);
              }
              function m(E, w) {
                var z = w._dims = {
                  width1: 0,
                  height1: 0,
                  heights: [],
                  widths: [],
                  totalWidth: 0,
                  totalHeight: 0,
                  openWidth: 0,
                  openHeight: 0,
                  lx: 0,
                  ly: 0
                }, O = s.tester.selectAll("g." + t.dropdownButtonClassName).data(T.filterVisible(w.buttons));
                O.enter().append("g").classed(t.dropdownButtonClassName, !0);
                var B = ["up", "down"].indexOf(w.direction) !== -1;
                O.each(function(q, rt) {
                  var st = b.select(this);
                  st.call(v, w, q, E);
                  var vt = st.select("." + t.itemTextClassName), ht = vt.node() && s.bBox(vt.node()).width, et = Math.max(ht + t.textPadX, t.minWidth), Q = w.font.size * u, j = A.lineCount(vt), at = Math.max(Q * j, t.minHeight) + t.textOffsetY;
                  at = Math.ceil(at), et = Math.ceil(et), z.widths[rt] = et, z.heights[rt] = at, z.height1 = Math.max(z.height1, at), z.width1 = Math.max(z.width1, et), B ? (z.totalWidth = Math.max(z.totalWidth, et), z.openWidth = z.totalWidth, z.totalHeight += at + t.gapButton, z.openHeight += at + t.gapButton) : (z.totalWidth += et + t.gapButton, z.openWidth += et + t.gapButton, z.totalHeight = Math.max(z.totalHeight, at), z.openHeight = z.totalHeight);
                }), B ? z.totalHeight -= t.gapButton : z.totalWidth -= t.gapButton, z.headerWidth = z.width1 + t.arrowPadX, z.headerHeight = z.height1, w.type === "dropdown" && (B ? (z.width1 += t.arrowPadX, z.totalHeight = z.height1) : z.totalWidth = z.width1, z.totalWidth += t.arrowPadX), O.remove();
                var V = z.totalWidth + w.pad.l + w.pad.r, U = z.totalHeight + w.pad.t + w.pad.b, H = E._fullLayout._size;
                z.lx = H.l + H.w * w.x, z.ly = H.t + H.h * (1 - w.y);
                var F = "left";
                T.isRightAnchor(w) && (z.lx -= V, F = "right"), T.isCenterAnchor(w) && (z.lx -= V / 2, F = "center");
                var G = "top";
                T.isBottomAnchor(w) && (z.ly -= U, G = "bottom"), T.isMiddleAnchor(w) && (z.ly -= U / 2, G = "middle"), z.totalWidth = Math.ceil(z.totalWidth), z.totalHeight = Math.ceil(z.totalHeight), z.lx = Math.round(z.lx), z.ly = Math.round(z.ly), P.autoMargin(E, L(w), {
                  x: w.x,
                  y: w.y,
                  l: V * ({
                    right: 1,
                    center: 0.5
                  }[F] || 0),
                  r: V * ({
                    left: 1,
                    center: 0.5
                  }[F] || 0),
                  b: U * ({
                    top: 1,
                    middle: 0.5
                  }[G] || 0),
                  t: U * ({
                    bottom: 1,
                    middle: 0.5
                  }[G] || 0)
                });
              }
              function L(E) {
                return t.autoMarginIdRoot + E._index;
              }
              function d(E, w, z, O) {
                O = O || {};
                var B = E.select("." + t.itemRectClassName), V = E.select("." + t.itemTextClassName), U = w.borderwidth, H = z.index, F = w._dims;
                s.setTranslate(E, U + z.x, U + z.y);
                var G = ["up", "down"].indexOf(w.direction) !== -1, q = O.height || (G ? F.heights[H] : F.height1);
                B.attr({
                  x: 0,
                  y: 0,
                  width: O.width || (G ? F.width1 : F.widths[H]),
                  height: q
                });
                var rt = w.font.size * u, st = A.lineCount(V), vt = (st - 1) * rt / 2;
                A.positionText(V, t.textOffsetX, q / 2 - vt + t.textOffsetY), G ? z.y += F.heights[H] + z.yPad : z.x += F.widths[H] + z.xPad, z.index++;
              }
              function h(E, w) {
                E.attr(t.menuIndexAttrName, w || "-1").selectAll("g." + t.dropdownButtonClassName).remove();
              }
            }
          ),
          /***/
          46230: (
            /***/
            function(Y, K, e) {
              var b = e(71559);
              Y.exports = {
                moduleType: "component",
                name: b.name,
                layoutAttributes: e(85389),
                supplyLayoutDefaults: e(42746),
                draw: e(40974)
              };
            }
          ),
          /***/
          21736: (
            /***/
            function(Y, K, e) {
              Y.exports = T;
              var b = e(45568), P = e(78766), n = e(62203), s = e(34809);
              function T(A, p, u) {
                this.gd = A, this.container = p, this.id = u, this.position = null, this.translateX = null, this.translateY = null, this.hbar = null, this.vbar = null, this.bg = this.container.selectAll("rect.scrollbox-bg").data([0]), this.bg.exit().on(".drag", null).on("wheel", null).remove(), this.bg.enter().append("rect").classed("scrollbox-bg", !0).style("pointer-events", "all").attr({
                  opacity: 0,
                  x: 0,
                  y: 0,
                  width: 0,
                  height: 0
                });
              }
              T.barWidth = 2, T.barLength = 20, T.barRadius = 2, T.barPad = 1, T.barColor = "#808BA4", T.prototype.enable = function(p, u, t) {
                var r = this.gd._fullLayout, i = r.width, a = r.height;
                this.position = p;
                var l = this.position.l, o = this.position.w, y = this.position.t, g = this.position.h, x = this.position.direction, c = x === "down", v = x === "left", f = x === "right", _ = x === "up", S = o, M = g, C, m, L, d;
                !c && !v && !f && !_ && (this.position.direction = "down", c = !0);
                var h = c || _;
                h ? (C = l, m = C + S, c ? (L = y, d = Math.min(L + M, a), M = d - L) : (d = y + M, L = Math.max(d - M, 0), M = d - L)) : (L = y, d = L + M, v ? (m = l + S, C = Math.max(m - S, 0), S = m - C) : (C = l, m = Math.min(C + S, i), S = m - C)), this._box = {
                  l: C,
                  t: L,
                  w: S,
                  h: M
                };
                var E = o > S, w = T.barLength + 2 * T.barPad, z = T.barWidth + 2 * T.barPad, O = l, B = y + g;
                B + z > a && (B = a - z);
                var V = this.container.selectAll("rect.scrollbar-horizontal").data(E ? [0] : []);
                V.exit().on(".drag", null).remove(), V.enter().append("rect").classed("scrollbar-horizontal", !0).call(P.fill, T.barColor), E ? (this.hbar = V.attr({
                  rx: T.barRadius,
                  ry: T.barRadius,
                  x: O,
                  y: B,
                  width: w,
                  height: z
                }), this._hbarXMin = O + w / 2, this._hbarTranslateMax = S - w) : (delete this.hbar, delete this._hbarXMin, delete this._hbarTranslateMax);
                var U = g > M, H = T.barWidth + 2 * T.barPad, F = T.barLength + 2 * T.barPad, G = l + o, q = y;
                G + H > i && (G = i - H);
                var rt = this.container.selectAll("rect.scrollbar-vertical").data(U ? [0] : []);
                rt.exit().on(".drag", null).remove(), rt.enter().append("rect").classed("scrollbar-vertical", !0).call(P.fill, T.barColor), U ? (this.vbar = rt.attr({
                  rx: T.barRadius,
                  ry: T.barRadius,
                  x: G,
                  y: q,
                  width: H,
                  height: F
                }), this._vbarYMin = q + F / 2, this._vbarTranslateMax = M - F) : (delete this.vbar, delete this._vbarYMin, delete this._vbarTranslateMax);
                var st = this.id, vt = C - 0.5, ht = U ? m + H + 0.5 : m + 0.5, et = L - 0.5, Q = E ? d + z + 0.5 : d + 0.5, j = r._topdefs.selectAll("#" + st).data(E || U ? [0] : []);
                if (j.exit().remove(), j.enter().append("clipPath").attr("id", st).append("rect"), E || U ? (this._clipRect = j.select("rect").attr({
                  x: Math.floor(vt),
                  y: Math.floor(et),
                  width: Math.ceil(ht) - Math.floor(vt),
                  height: Math.ceil(Q) - Math.floor(et)
                }), this.container.call(n.setClipUrl, st, this.gd), this.bg.attr({
                  x: l,
                  y,
                  width: o,
                  height: g
                })) : (this.bg.attr({
                  width: 0,
                  height: 0
                }), this.container.on("wheel", null).on(".drag", null).call(n.setClipUrl, null), delete this._clipRect), E || U) {
                  var at = b.behavior.drag().on("dragstart", function() {
                    b.event.sourceEvent.preventDefault();
                  }).on("drag", this._onBoxDrag.bind(this));
                  this.container.on("wheel", null).on("wheel", this._onBoxWheel.bind(this)).on(".drag", null).call(at);
                  var ut = b.behavior.drag().on("dragstart", function() {
                    b.event.sourceEvent.preventDefault(), b.event.sourceEvent.stopPropagation();
                  }).on("drag", this._onBarDrag.bind(this));
                  E && this.hbar.on(".drag", null).call(ut), U && this.vbar.on(".drag", null).call(ut);
                }
                this.setTranslate(u, t);
              }, T.prototype.disable = function() {
                (this.hbar || this.vbar) && (this.bg.attr({
                  width: 0,
                  height: 0
                }), this.container.on("wheel", null).on(".drag", null).call(n.setClipUrl, null), delete this._clipRect), this.hbar && (this.hbar.on(".drag", null), this.hbar.remove(), delete this.hbar, delete this._hbarXMin, delete this._hbarTranslateMax), this.vbar && (this.vbar.on(".drag", null), this.vbar.remove(), delete this.vbar, delete this._vbarYMin, delete this._vbarTranslateMax);
              }, T.prototype._onBoxDrag = function() {
                var p = this.translateX, u = this.translateY;
                this.hbar && (p -= b.event.dx), this.vbar && (u -= b.event.dy), this.setTranslate(p, u);
              }, T.prototype._onBoxWheel = function() {
                var p = this.translateX, u = this.translateY;
                this.hbar && (p += b.event.deltaY), this.vbar && (u += b.event.deltaY), this.setTranslate(p, u);
              }, T.prototype._onBarDrag = function() {
                var p = this.translateX, u = this.translateY;
                if (this.hbar) {
                  var t = p + this._hbarXMin, r = t + this._hbarTranslateMax, i = s.constrain(b.event.x, t, r), a = (i - t) / (r - t), l = this.position.w - this._box.w;
                  p = a * l;
                }
                if (this.vbar) {
                  var o = u + this._vbarYMin, y = o + this._vbarTranslateMax, g = s.constrain(b.event.y, o, y), x = (g - o) / (y - o), c = this.position.h - this._box.h;
                  u = x * c;
                }
                this.setTranslate(p, u);
              }, T.prototype.setTranslate = function(p, u) {
                var t = this.position.w - this._box.w, r = this.position.h - this._box.h;
                if (p = s.constrain(p || 0, 0, t), u = s.constrain(u || 0, 0, r), this.translateX = p, this.translateY = u, this.container.call(n.setTranslate, this._box.l - this.position.l - p, this._box.t - this.position.t - u), this._clipRect && this._clipRect.attr({
                  x: Math.floor(this.position.l + p - 0.5),
                  y: Math.floor(this.position.t + u - 0.5)
                }), this.hbar) {
                  var i = p / t;
                  this.hbar.call(n.setTranslate, p + i * this._hbarTranslateMax, u);
                }
                if (this.vbar) {
                  var a = u / r;
                  this.vbar.call(n.setTranslate, p, u + a * this._vbarTranslateMax);
                }
              };
            }
          ),
          /***/
          4530: (
            /***/
            function(Y) {
              Y.exports = {
                // from bottom left: this is the origin of our paper-reference
                // positioning system
                FROM_BL: {
                  left: 0,
                  center: 0.5,
                  right: 1,
                  bottom: 0,
                  middle: 0.5,
                  top: 1
                },
                // from top left: this is the screen pixel positioning origin
                FROM_TL: {
                  left: 0,
                  center: 0.5,
                  right: 1,
                  bottom: 1,
                  middle: 0.5,
                  top: 0
                },
                // from bottom right: sometimes you just need the opposite of ^^
                FROM_BR: {
                  left: 1,
                  center: 0.5,
                  right: 0,
                  bottom: 0,
                  middle: 0.5,
                  top: 1
                },
                // multiple of fontSize to get the vertical offset between lines
                LINE_SPACING: 1.3,
                // multiple of fontSize to shift from the baseline
                // to the cap (captical letter) line
                // (to use when we don't calculate this shift from Drawing.bBox)
                // This is an approximation since in reality cap height can differ
                // from font to font. However, according to Wikipedia
                //   an "average" font might have a cap height of 70% of the em
                // https://en.wikipedia.org/wiki/Em_(typography)#History
                CAP_SHIFT: 0.7,
                // half the cap height (distance between baseline and cap line)
                // of an "average" font (for more info see above).
                MID_SHIFT: 0.35,
                OPPOSITE_SIDE: {
                  left: "right",
                  right: "left",
                  top: "bottom",
                  bottom: "top"
                }
              };
            }
          ),
          /***/
          35081: (
            /***/
            function(Y) {
              Y.exports = {
                axisRefDescription: function(K, e, b) {
                  return ["If set to a", K, "axis id (e.g. *" + K + "* or", "*" + K + "2*), the `" + K + "` position refers to a", K, "coordinate. If set to *paper*, the `" + K + "`", "position refers to the distance from the", e, "of the plotting", "area in normalized coordinates where *0* (*1*) corresponds to the", e, "(" + b + "). If set to a", K, "axis ID followed by", "*domain* (separated by a space), the position behaves like for", "*paper*, but refers to the distance in fractions of the domain", "length from the", e, "of the domain of that axis: e.g.,", "*" + K + "2 domain* refers to the domain of the second", K, " axis and a", K, "position of 0.5 refers to the", "point between the", e, "and the", b, "of the domain of the", "second", K, "axis."].join(" ");
                }
              };
            }
          ),
          /***/
          20909: (
            /***/
            function(Y) {
              Y.exports = {
                INCREASING: {
                  COLOR: "#3D9970",
                  SYMBOL: "▲"
                },
                DECREASING: {
                  COLOR: "#FF4136",
                  SYMBOL: "▼"
                }
              };
            }
          ),
          /***/
          87296: (
            /***/
            function(Y) {
              Y.exports = {
                FORMAT_LINK: "https://github.com/d3/d3-format/tree/v1.4.5#d3-format",
                DATE_FORMAT_LINK: "https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format"
              };
            }
          ),
          /***/
          20726: (
            /***/
            function(Y) {
              Y.exports = {
                COMPARISON_OPS: ["=", "!=", "<", ">=", ">", "<="],
                COMPARISON_OPS2: ["=", "<", ">=", ">", "<="],
                INTERVAL_OPS: ["[]", "()", "[)", "(]", "][", ")(", "](", ")["],
                SET_OPS: ["{}", "}{"],
                CONSTRAINT_REDUCTION: {
                  // for contour constraints, open/closed endpoints are equivalent
                  "=": "=",
                  "<": "<",
                  "<=": "<",
                  ">": ">",
                  ">=": ">",
                  "[]": "[]",
                  "()": "[]",
                  "[)": "[]",
                  "(]": "[]",
                  "][": "][",
                  ")(": "][",
                  "](": "][",
                  ")[": "]["
                }
              };
            }
          ),
          /***/
          84770: (
            /***/
            function(Y) {
              Y.exports = {
                solid: [[], 0],
                dot: [[0.5, 1], 200],
                dash: [[0.5, 1], 50],
                longdash: [[0.5, 1], 10],
                dashdot: [[0.5, 0.625, 0.875, 1], 50],
                longdashdot: [[0.5, 0.7, 0.8, 1], 10]
              };
            }
          ),
          /***/
          49467: (
            /***/
            function(Y) {
              Y.exports = {
                circle: "●",
                "circle-open": "○",
                square: "■",
                "square-open": "□",
                diamond: "◆",
                "diamond-open": "◇",
                cross: "+",
                x: "❌"
              };
            }
          ),
          /***/
          20438: (
            /***/
            function(Y) {
              Y.exports = {
                /**
                 * Timing information for interactive elements
                 */
                SHOW_PLACEHOLDER: 100,
                HIDE_PLACEHOLDER: 1e3,
                // opacity dimming fraction for points that are not in selection
                DESELECTDIM: 0.2
              };
            }
          ),
          /***/
          63821: (
            /***/
            function(Y) {
              Y.exports = {
                /**
                 * Standardize all missing data in calcdata to use undefined
                 * never null or NaN.
                 * That way we can use !==undefined, or !== BADNUM,
                 * to test for real data
                 */
                BADNUM: void 0,
                /*
                 * Limit certain operations to well below floating point max value
                 * to avoid glitches: Make sure that even when you multiply it by the
                 * number of pixels on a giant screen it still works
                 */
                FP_SAFE: Number.MAX_VALUE * 1e-4,
                /*
                 * conversion of date units to milliseconds
                 * year and month constants are marked "AVG"
                 * to remind us that not all years and months
                 * have the same length
                 */
                ONEMAXYEAR: 316224e5,
                // 366 * ONEDAY
                ONEAVGYEAR: 315576e5,
                // 365.25 days
                ONEMINYEAR: 31536e6,
                // 365 * ONEDAY
                ONEMAXQUARTER: 79488e5,
                // 92 * ONEDAY
                ONEAVGQUARTER: 78894e5,
                // 1/4 of ONEAVGYEAR
                ONEMINQUARTER: 76896e5,
                // 89 * ONEDAY
                ONEMAXMONTH: 26784e5,
                // 31 * ONEDAY
                ONEAVGMONTH: 26298e5,
                // 1/12 of ONEAVGYEAR
                ONEMINMONTH: 24192e5,
                // 28 * ONEDAY
                ONEWEEK: 6048e5,
                // 7 * ONEDAY
                ONEDAY: 864e5,
                // 24 * ONEHOUR
                ONEHOUR: 36e5,
                ONEMIN: 6e4,
                ONESEC: 1e3,
                ONEMILLI: 1,
                ONEMICROSEC: 1e-3,
                /*
                 * For fast conversion btwn world calendars and epoch ms, the Julian Day Number
                 * of the unix epoch. From calendars.instance().newDate(1970, 1, 1).toJD()
                 */
                EPOCHJD: 24405875e-1,
                /*
                 * Are two values nearly equal? Compare to 1PPM
                 */
                ALMOST_EQUAL: 0.999999,
                /*
                 * If we're asked to clip a non-positive log value, how far off-screen
                 * do we put it?
                 */
                LOG_CLIP: 10,
                /*
                 * not a number, but for displaying numbers: the "minus sign" symbol is
                 * wider than the regular ascii dash "-"
                 */
                MINUS_SIGN: "−"
              };
            }
          ),
          /***/
          1837: (
            /***/
            function(Y, K) {
              K.CSS_DECLARATIONS = [["image-rendering", "optimizeSpeed"], ["image-rendering", "-moz-crisp-edges"], ["image-rendering", "-o-crisp-edges"], ["image-rendering", "-webkit-optimize-contrast"], ["image-rendering", "optimize-contrast"], ["image-rendering", "crisp-edges"], ["image-rendering", "pixelated"]], K.STYLE = K.CSS_DECLARATIONS.map(function(e) {
                return e.join(": ") + "; ";
              }).join("");
            }
          ),
          /***/
          62972: (
            /***/
            function(Y, K) {
              K.xmlns = "http://www.w3.org/2000/xmlns/", K.svg = "http://www.w3.org/2000/svg", K.xlink = "http://www.w3.org/1999/xlink", K.svgAttrs = {
                xmlns: K.svg,
                "xmlns:xlink": K.xlink
              };
            }
          ),
          /***/
          17430: (
            /***/
            function(Y, K, e) {
              K.version = e(29697).version, e(71116), e(6713);
              for (var b = e(33626), P = K.register = b.register, n = e(90742), s = Object.keys(n), T = 0; T < s.length; T++) {
                var A = s[T];
                A.charAt(0) !== "_" && (K[A] = n[A]), P({
                  moduleType: "apiMethod",
                  name: A,
                  fn: n[A]
                });
              }
              P(e(69693)), P([
                e(3599),
                e(83348),
                e(44844),
                e(43701),
                e(15553),
                e(46230),
                e(15359),
                e(55429),
                e(44453),
                e(83595),
                e(77901),
                e(88856),
                e(96919),
                e(82494),
                // legend needs to come after shape | legend defaults depends on shapes
                e(32141),
                // fx needs to come after legend | unified hover defaults depends on legends
                e(95433)
              ]), P([e(30227), e(44611)]), window.PlotlyLocales && Array.isArray(window.PlotlyLocales) && (P(window.PlotlyLocales), delete window.PlotlyLocales), K.Icons = e(35188);
              var p = e(32141), u = e(44122);
              K.Plots = {
                resize: u.resize,
                graphJson: u.graphJson,
                sendDataToCloud: u.sendDataToCloud
              }, K.Fx = {
                hover: p.hover,
                unhover: p.unhover,
                loneHover: p.loneHover,
                loneUnhover: p.loneUnhover
              }, K.Snapshot = e(6170), K.PlotSchema = e(57297);
            }
          ),
          /***/
          35188: (
            /***/
            function(Y) {
              Y.exports = {
                undo: {
                  width: 857.1,
                  height: 1e3,
                  path: "m857 350q0-87-34-166t-91-137-137-92-166-34q-96 0-183 41t-147 114q-4 6-4 13t5 11l76 77q6 5 14 5 9-1 13-7 41-53 100-82t126-29q58 0 110 23t92 61 61 91 22 111-22 111-61 91-92 61-110 23q-55 0-105-20t-90-57l77-77q17-16 8-38-10-23-33-23h-250q-15 0-25 11t-11 25v250q0 24 22 33 22 10 39-8l72-72q60 57 137 88t159 31q87 0 166-34t137-92 91-137 34-166z",
                  transform: "matrix(1 0 0 -1 0 850)"
                },
                home: {
                  width: 928.6,
                  height: 1e3,
                  path: "m786 296v-267q0-15-11-26t-25-10h-214v214h-143v-214h-214q-15 0-25 10t-11 26v267q0 1 0 2t0 2l321 264 321-264q1-1 1-4z m124 39l-34-41q-5-5-12-6h-2q-7 0-12 3l-386 322-386-322q-7-4-13-4-7 2-12 7l-35 41q-4 5-3 13t6 12l401 334q18 15 42 15t43-15l136-114v109q0 8 5 13t13 5h107q8 0 13-5t5-13v-227l122-102q5-5 6-12t-4-13z",
                  transform: "matrix(1 0 0 -1 0 850)"
                },
                "camera-retro": {
                  width: 1e3,
                  height: 1e3,
                  path: "m518 386q0 8-5 13t-13 5q-37 0-63-27t-26-63q0-8 5-13t13-5 12 5 5 13q0 23 16 38t38 16q8 0 13 5t5 13z m125-73q0-59-42-101t-101-42-101 42-42 101 42 101 101 42 101-42 42-101z m-572-320h858v71h-858v-71z m643 320q0 89-62 152t-152 62-151-62-63-152 63-151 151-63 152 63 62 151z m-571 358h214v72h-214v-72z m-72-107h858v143h-462l-36-71h-360v-72z m929 143v-714q0-30-21-51t-50-21h-858q-29 0-50 21t-21 51v714q0 30 21 51t50 21h858q29 0 50-21t21-51z",
                  transform: "matrix(1 0 0 -1 0 850)"
                },
                zoombox: {
                  width: 1e3,
                  height: 1e3,
                  path: "m1000-25l-250 251c40 63 63 138 63 218 0 224-182 406-407 406-224 0-406-182-406-406s183-406 407-406c80 0 155 22 218 62l250-250 125 125z m-812 250l0 438 437 0 0-438-437 0z m62 375l313 0 0-312-313 0 0 312z",
                  transform: "matrix(1 0 0 -1 0 850)"
                },
                pan: {
                  width: 1e3,
                  height: 1e3,
                  path: "m1000 350l-187 188 0-125-250 0 0 250 125 0-188 187-187-187 125 0 0-250-250 0 0 125-188-188 186-187 0 125 252 0 0-250-125 0 187-188 188 188-125 0 0 250 250 0 0-126 187 188z",
                  transform: "matrix(1 0 0 -1 0 850)"
                },
                zoom_plus: {
                  width: 875,
                  height: 1e3,
                  path: "m1 787l0-875 875 0 0 875-875 0z m687-500l-187 0 0-187-125 0 0 187-188 0 0 125 188 0 0 187 125 0 0-187 187 0 0-125z",
                  transform: "matrix(1 0 0 -1 0 850)"
                },
                zoom_minus: {
                  width: 875,
                  height: 1e3,
                  path: "m0 788l0-876 875 0 0 876-875 0z m688-500l-500 0 0 125 500 0 0-125z",
                  transform: "matrix(1 0 0 -1 0 850)"
                },
                autoscale: {
                  width: 1e3,
                  height: 1e3,
                  path: "m250 850l-187 0-63 0 0-62 0-188 63 0 0 188 187 0 0 62z m688 0l-188 0 0-62 188 0 0-188 62 0 0 188 0 62-62 0z m-875-938l0 188-63 0 0-188 0-62 63 0 187 0 0 62-187 0z m875 188l0-188-188 0 0-62 188 0 62 0 0 62 0 188-62 0z m-125 188l-1 0-93-94-156 156 156 156 92-93 2 0 0 250-250 0 0-2 93-92-156-156-156 156 94 92 0 2-250 0 0-250 0 0 93 93 157-156-157-156-93 94 0 0 0-250 250 0 0 0-94 93 156 157 156-157-93-93 0 0 250 0 0 250z",
                  transform: "matrix(1 0 0 -1 0 850)"
                },
                tooltip_basic: {
                  width: 1500,
                  height: 1e3,
                  path: "m375 725l0 0-375-375 375-374 0-1 1125 0 0 750-1125 0z",
                  transform: "matrix(1 0 0 -1 0 850)"
                },
                tooltip_compare: {
                  width: 1125,
                  height: 1e3,
                  path: "m187 786l0 2-187-188 188-187 0 0 937 0 0 373-938 0z m0-499l0 1-187-188 188-188 0 0 937 0 0 376-938-1z",
                  transform: "matrix(1 0 0 -1 0 850)"
                },
                plotlylogo: {
                  width: 1542,
                  height: 1e3,
                  path: "m0-10h182v-140h-182v140z m228 146h183v-286h-183v286z m225 714h182v-1000h-182v1000z m225-285h182v-715h-182v715z m225 142h183v-857h-183v857z m231-428h182v-429h-182v429z m225-291h183v-138h-183v138z",
                  transform: "matrix(1 0 0 -1 0 850)"
                },
                "z-axis": {
                  width: 1e3,
                  height: 1e3,
                  path: "m833 5l-17 108v41l-130-65 130-66c0 0 0 38 0 39 0-1 36-14 39-25 4-15-6-22-16-30-15-12-39-16-56-20-90-22-187-23-279-23-261 0-341 34-353 59 3 60 228 110 228 110-140-8-351-35-351-116 0-120 293-142 474-142 155 0 477 22 477 142 0 50-74 79-163 96z m-374 94c-58-5-99-21-99-40 0-24 65-43 144-43 79 0 143 19 143 43 0 19-42 34-98 40v216h87l-132 135-133-135h88v-216z m167 515h-136v1c16 16 31 34 46 52l84 109v54h-230v-71h124v-1c-16-17-28-32-44-51l-89-114v-51h245v72z",
                  transform: "matrix(1 0 0 -1 0 850)"
                },
                "3d_rotate": {
                  width: 1e3,
                  height: 1e3,
                  path: "m922 660c-5 4-9 7-14 11-359 263-580-31-580-31l-102 28 58-400c0 1 1 1 2 2 118 108 351 249 351 249s-62 27-100 42c88 83 222 183 347 122 16-8 30-17 44-27-2 1-4 2-6 4z m36-329c0 0 64 229-88 296-62 27-124 14-175-11 157-78 225-208 249-266 8-19 11-31 11-31 2 5 6 15 11 32-5-13-8-20-8-20z m-775-239c70-31 117-50 198-32-121 80-199 346-199 346l-96-15-58-12c0 0 55-226 155-287z m603 133l-317-139c0 0 4-4 19-14 7-5 24-15 24-15s-177-147-389 4c235-287 536-112 536-112l31-22 100 299-4-1z m-298-153c6-4 14-9 24-15 0 0-17 10-24 15z",
                  transform: "matrix(1 0 0 -1 0 850)"
                },
                camera: {
                  width: 1e3,
                  height: 1e3,
                  path: "m500 450c-83 0-150-67-150-150 0-83 67-150 150-150 83 0 150 67 150 150 0 83-67 150-150 150z m400 150h-120c-16 0-34 13-39 29l-31 93c-6 15-23 28-40 28h-340c-16 0-34-13-39-28l-31-94c-6-15-23-28-40-28h-120c-55 0-100-45-100-100v-450c0-55 45-100 100-100h800c55 0 100 45 100 100v450c0 55-45 100-100 100z m-400-550c-138 0-250 112-250 250 0 138 112 250 250 250 138 0 250-112 250-250 0-138-112-250-250-250z m365 380c-19 0-35 16-35 35 0 19 16 35 35 35 19 0 35-16 35-35 0-19-16-35-35-35z",
                  transform: "matrix(1 0 0 -1 0 850)"
                },
                movie: {
                  width: 1e3,
                  height: 1e3,
                  path: "m938 413l-188-125c0 37-17 71-44 94 64 38 107 107 107 187 0 121-98 219-219 219-121 0-219-98-219-219 0-61 25-117 66-156h-115c30 33 49 76 49 125 0 103-84 187-187 187s-188-84-188-187c0-57 26-107 65-141-38-22-65-62-65-109v-250c0-70 56-126 125-126h500c69 0 125 56 125 126l188-126c34 0 62 28 62 63v375c0 35-28 63-62 63z m-750 0c-69 0-125 56-125 125s56 125 125 125 125-56 125-125-56-125-125-125z m406-1c-87 0-157 70-157 157 0 86 70 156 157 156s156-70 156-156-70-157-156-157z",
                  transform: "matrix(1 0 0 -1 0 850)"
                },
                question: {
                  width: 857.1,
                  height: 1e3,
                  path: "m500 82v107q0 8-5 13t-13 5h-107q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h107q8 0 13 5t5 13z m143 375q0 49-31 91t-77 65-95 23q-136 0-207-119-9-14 4-24l74-55q4-4 10-4 9 0 14 7 30 38 48 51 19 14 48 14 27 0 48-15t21-33q0-21-11-34t-38-25q-35-16-65-48t-29-70v-20q0-8 5-13t13-5h107q8 0 13 5t5 13q0 10 12 27t30 28q18 10 28 16t25 19 25 27 16 34 7 45z m214-107q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z",
                  transform: "matrix(1 0 0 -1 0 850)"
                },
                disk: {
                  width: 857.1,
                  height: 1e3,
                  path: "m214-7h429v214h-429v-214z m500 0h72v500q0 8-6 21t-11 20l-157 156q-5 6-19 12t-22 5v-232q0-22-15-38t-38-16h-322q-22 0-37 16t-16 38v232h-72v-714h72v232q0 22 16 38t37 16h465q22 0 38-16t15-38v-232z m-214 518v178q0 8-5 13t-13 5h-107q-7 0-13-5t-5-13v-178q0-8 5-13t13-5h107q7 0 13 5t5 13z m357-18v-518q0-22-15-38t-38-16h-750q-23 0-38 16t-16 38v750q0 22 16 38t38 16h517q23 0 50-12t42-26l156-157q16-15 27-42t11-49z",
                  transform: "matrix(1 0 0 -1 0 850)"
                },
                drawopenpath: {
                  width: 70,
                  height: 70,
                  path: "M33.21,85.65a7.31,7.31,0,0,1-2.59-.48c-8.16-3.11-9.27-19.8-9.88-41.3-.1-3.58-.19-6.68-.35-9-.15-2.1-.67-3.48-1.43-3.79-2.13-.88-7.91,2.32-12,5.86L3,32.38c1.87-1.64,11.55-9.66,18.27-6.9,2.13.87,4.75,3.14,5.17,9,.17,2.43.26,5.59.36,9.25a224.17,224.17,0,0,0,1.5,23.4c1.54,10.76,4,12.22,4.48,12.4.84.32,2.79-.46,5.76-3.59L43,80.07C41.53,81.57,37.68,85.64,33.21,85.65ZM74.81,69a11.34,11.34,0,0,0,6.09-6.72L87.26,44.5,74.72,32,56.9,38.35c-2.37.86-5.57,3.42-6.61,6L38.65,72.14l8.42,8.43ZM55,46.27a7.91,7.91,0,0,1,3.64-3.17l14.8-5.3,8,8L76.11,60.6l-.06.19a6.37,6.37,0,0,1-3,3.43L48.25,74.59,44.62,71Zm16.57,7.82A6.9,6.9,0,1,0,64.64,61,6.91,6.91,0,0,0,71.54,54.09Zm-4.05,0a2.85,2.85,0,1,1-2.85-2.85A2.86,2.86,0,0,1,67.49,54.09Zm-4.13,5.22L60.5,56.45,44.26,72.7l2.86,2.86ZM97.83,35.67,84.14,22l-8.57,8.57L89.26,44.24Zm-13.69-8,8,8-2.85,2.85-8-8Z",
                  transform: "matrix(1 0 0 1 -15 -15)"
                },
                drawclosedpath: {
                  width: 90,
                  height: 90,
                  path: "M88.41,21.12a26.56,26.56,0,0,0-36.18,0l-2.07,2-2.07-2a26.57,26.57,0,0,0-36.18,0,23.74,23.74,0,0,0,0,34.8L48,90.12a3.22,3.22,0,0,0,4.42,0l36-34.21a23.73,23.73,0,0,0,0-34.79ZM84,51.24,50.16,83.35,16.35,51.25a17.28,17.28,0,0,1,0-25.47,20,20,0,0,1,27.3,0l4.29,4.07a3.23,3.23,0,0,0,4.44,0l4.29-4.07a20,20,0,0,1,27.3,0,17.27,17.27,0,0,1,0,25.46ZM66.76,47.68h-33v6.91h33ZM53.35,35H46.44V68h6.91Z",
                  transform: "matrix(1 0 0 1 -5 -5)"
                },
                lasso: {
                  width: 1031,
                  height: 1e3,
                  path: "m1018 538c-36 207-290 336-568 286-277-48-473-256-436-463 10-57 36-108 76-151-13-66 11-137 68-183 34-28 75-41 114-42l-55-70 0 0c-2-1-3-2-4-3-10-14-8-34 5-45 14-11 34-8 45 4 1 1 2 3 2 5l0 0 113 140c16 11 31 24 45 40 4 3 6 7 8 11 48-3 100 0 151 9 278 48 473 255 436 462z m-624-379c-80 14-149 48-197 96 42 42 109 47 156 9 33-26 47-66 41-105z m-187-74c-19 16-33 37-39 60 50-32 109-55 174-68-42-25-95-24-135 8z m360 75c-34-7-69-9-102-8 8 62-16 128-68 170-73 59-175 54-244-5-9 20-16 40-20 61-28 159 121 317 333 354s407-60 434-217c28-159-121-318-333-355z",
                  transform: "matrix(1 0 0 -1 0 850)"
                },
                selectbox: {
                  width: 1e3,
                  height: 1e3,
                  path: "m0 850l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m285 0l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m-857-286l0-143 143 0 0 143-143 0z m857 0l0-143 143 0 0 143-143 0z m-857-285l0-143 143 0 0 143-143 0z m857 0l0-143 143 0 0 143-143 0z m-857-286l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m285 0l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z",
                  transform: "matrix(1 0 0 -1 0 850)"
                },
                drawline: {
                  width: 70,
                  height: 70,
                  path: "M60.64,62.3a11.29,11.29,0,0,0,6.09-6.72l6.35-17.72L60.54,25.31l-17.82,6.4c-2.36.86-5.57,3.41-6.6,6L24.48,65.5l8.42,8.42ZM40.79,39.63a7.89,7.89,0,0,1,3.65-3.17l14.79-5.31,8,8L61.94,54l-.06.19a6.44,6.44,0,0,1-3,3.43L34.07,68l-3.62-3.63Zm16.57,7.81a6.9,6.9,0,1,0-6.89,6.9A6.9,6.9,0,0,0,57.36,47.44Zm-4,0a2.86,2.86,0,1,1-2.85-2.85A2.86,2.86,0,0,1,53.32,47.44Zm-4.13,5.22L46.33,49.8,30.08,66.05l2.86,2.86ZM83.65,29,70,15.34,61.4,23.9,75.09,37.59ZM70,21.06l8,8-2.84,2.85-8-8ZM87,80.49H10.67V87H87Z",
                  transform: "matrix(1 0 0 1 -15 -15)"
                },
                drawrect: {
                  width: 80,
                  height: 80,
                  path: "M78,22V79H21V22H78m9-9H12V88H87V13ZM68,46.22H31V54H68ZM53,32H45.22V69H53Z",
                  transform: "matrix(1 0 0 1 -10 -10)"
                },
                drawcircle: {
                  width: 80,
                  height: 80,
                  path: "M50,84.72C26.84,84.72,8,69.28,8,50.3S26.84,15.87,50,15.87,92,31.31,92,50.3,73.16,84.72,50,84.72Zm0-60.59c-18.6,0-33.74,11.74-33.74,26.17S31.4,76.46,50,76.46,83.74,64.72,83.74,50.3,68.6,24.13,50,24.13Zm17.15,22h-34v7.11h34Zm-13.8-13H46.24v34h7.11Z",
                  transform: "matrix(1 0 0 1 -10 -10)"
                },
                eraseshape: {
                  width: 80,
                  height: 80,
                  path: "M82.77,78H31.85L6,49.57,31.85,21.14H82.77a8.72,8.72,0,0,1,8.65,8.77V69.24A8.72,8.72,0,0,1,82.77,78ZM35.46,69.84H82.77a.57.57,0,0,0,.49-.6V29.91a.57.57,0,0,0-.49-.61H35.46L17,49.57Zm32.68-34.7-24,24,5,5,24-24Zm-19,.53-5,5,24,24,5-5Z",
                  transform: "matrix(1 0 0 1 -10 -10)"
                },
                spikeline: {
                  width: 1e3,
                  height: 1e3,
                  path: "M512 409c0-57-46-104-103-104-57 0-104 47-104 104 0 57 47 103 104 103 57 0 103-46 103-103z m-327-39l92 0 0 92-92 0z m-185 0l92 0 0 92-92 0z m370-186l92 0 0 93-92 0z m0-184l92 0 0 92-92 0z",
                  transform: "matrix(1.5 0 0 -1.5 0 850)"
                },
                pencil: {
                  width: 1792,
                  height: 1792,
                  path: "M491 1536l91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192l416 416-832 832h-416v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z",
                  transform: "matrix(1 0 0 1 0 1)"
                },
                newplotlylogo: {
                  name: "newplotlylogo",
                  svg: ["<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 132 132'>", "<defs>", " <style>", "  .cls-0{fill:#000;}", "  .cls-1{fill:#FFF;}", "  .cls-2{fill:#F26;}", "  .cls-3{fill:#D69;}", "  .cls-4{fill:#BAC;}", "  .cls-5{fill:#9EF;}", " </style>", "</defs>", " <title>plotly-logomark</title>", " <g id='symbol'>", "  <rect class='cls-0' x='0' y='0' width='132' height='132' rx='18' ry='18'/>", "  <circle class='cls-5' cx='102' cy='30' r='6'/>", "  <circle class='cls-4' cx='78' cy='30' r='6'/>", "  <circle class='cls-4' cx='78' cy='54' r='6'/>", "  <circle class='cls-3' cx='54' cy='30' r='6'/>", "  <circle class='cls-2' cx='30' cy='30' r='6'/>", "  <circle class='cls-2' cx='30' cy='54' r='6'/>", "  <path class='cls-1' d='M30,72a6,6,0,0,0-6,6v24a6,6,0,0,0,12,0V78A6,6,0,0,0,30,72Z'/>", "  <path class='cls-1' d='M78,72a6,6,0,0,0-6,6v24a6,6,0,0,0,12,0V78A6,6,0,0,0,78,72Z'/>", "  <path class='cls-1' d='M54,48a6,6,0,0,0-6,6v48a6,6,0,0,0,12,0V54A6,6,0,0,0,54,48Z'/>", "  <path class='cls-1' d='M102,48a6,6,0,0,0-6,6v48a6,6,0,0,0,12,0V54A6,6,0,0,0,102,48Z'/>", " </g>", "</svg>"].join("")
                }
              };
            }
          ),
          /***/
          32546: (
            /***/
            function(Y, K) {
              K.isLeftAnchor = function(b) {
                return b.xanchor === "left" || b.xanchor === "auto" && b.x <= 0.3333333333333333;
              }, K.isCenterAnchor = function(b) {
                return b.xanchor === "center" || b.xanchor === "auto" && b.x > 0.3333333333333333 && b.x < 0.6666666666666666;
              }, K.isRightAnchor = function(b) {
                return b.xanchor === "right" || b.xanchor === "auto" && b.x >= 0.6666666666666666;
              }, K.isTopAnchor = function(b) {
                return b.yanchor === "top" || b.yanchor === "auto" && b.y >= 0.6666666666666666;
              }, K.isMiddleAnchor = function(b) {
                return b.yanchor === "middle" || b.yanchor === "auto" && b.y > 0.3333333333333333 && b.y < 0.6666666666666666;
              }, K.isBottomAnchor = function(b) {
                return b.yanchor === "bottom" || b.yanchor === "auto" && b.y <= 0.3333333333333333;
              };
            }
          ),
          /***/
          44313: (
            /***/
            function(Y, K, e) {
              var b = e(98953), P = b.mod, n = b.modHalf, s = Math.PI, T = 2 * s;
              function A(x) {
                return x / 180 * s;
              }
              function p(x) {
                return x / s * 180;
              }
              function u(x) {
                return Math.abs(x[1] - x[0]) > T - 1e-14;
              }
              function t(x, c) {
                return n(c - x, T);
              }
              function r(x, c) {
                return Math.abs(t(x, c));
              }
              function i(x, c) {
                if (u(c)) return !0;
                var v, f;
                c[0] < c[1] ? (v = c[0], f = c[1]) : (v = c[1], f = c[0]), v = P(v, T), f = P(f, T), v > f && (f += T);
                var _ = P(x, T), S = _ + T;
                return _ >= v && _ <= f || S >= v && S <= f;
              }
              function a(x, c, v, f) {
                if (!i(c, f)) return !1;
                var _, S;
                return v[0] < v[1] ? (_ = v[0], S = v[1]) : (_ = v[1], S = v[0]), x >= _ && x <= S;
              }
              function l(x, c, v, f, _, S, M) {
                _ = _ || 0, S = S || 0;
                var C = u([v, f]), m, L, d, h, E;
                C ? (m = 0, L = s, d = T) : v < f ? (m = v, d = f) : (m = f, d = v), x < c ? (h = x, E = c) : (h = c, E = x);
                function w(V, U) {
                  return [V * Math.cos(U) + _, S - V * Math.sin(U)];
                }
                var z = Math.abs(d - m) <= s ? 0 : 1;
                function O(V, U, H) {
                  return "A" + [V, V] + " " + [0, z, H] + " " + w(V, U);
                }
                var B;
                return C ? h === null ? B = "M" + w(E, m) + O(E, L, 0) + O(E, d, 0) + "Z" : B = "M" + w(h, m) + O(h, L, 0) + O(h, d, 0) + "ZM" + w(E, m) + O(E, L, 1) + O(E, d, 1) + "Z" : h === null ? (B = "M" + w(E, m) + O(E, d, 0), M && (B += "L0,0Z")) : B = "M" + w(h, m) + "L" + w(E, m) + O(E, d, 0) + "L" + w(h, d) + O(h, m, 1) + "Z", B;
              }
              function o(x, c, v, f, _) {
                return l(null, x, c, v, f, _, 0);
              }
              function y(x, c, v, f, _) {
                return l(null, x, c, v, f, _, 1);
              }
              function g(x, c, v, f, _, S) {
                return l(x, c, v, f, _, S, 1);
              }
              Y.exports = {
                deg2rad: A,
                rad2deg: p,
                angleDelta: t,
                angleDist: r,
                isFullCircle: u,
                isAngleInsideSector: i,
                isPtInsideSector: a,
                pathArc: o,
                pathSector: y,
                pathAnnulus: g
              };
            }
          ),
          /***/
          87800: (
            /***/
            function(Y, K, e) {
              var b = e(93229).decode, P = e(56174), n = Array.isArray, s = ArrayBuffer, T = DataView;
              function A(l) {
                return s.isView(l) && !(l instanceof T);
              }
              K.isTypedArray = A;
              function p(l) {
                return n(l) || A(l);
              }
              K.isArrayOrTypedArray = p;
              function u(l) {
                return !p(l[0]);
              }
              K.isArray1D = u, K.ensureArray = function(l, o) {
                return n(l) || (l = []), l.length = o, l;
              };
              var t = {
                u1c: typeof Uint8ClampedArray > "u" ? void 0 : Uint8ClampedArray,
                // not supported in numpy?
                i1: typeof Int8Array > "u" ? void 0 : Int8Array,
                u1: typeof Uint8Array > "u" ? void 0 : Uint8Array,
                i2: typeof Int16Array > "u" ? void 0 : Int16Array,
                u2: typeof Uint16Array > "u" ? void 0 : Uint16Array,
                i4: typeof Int32Array > "u" ? void 0 : Int32Array,
                u4: typeof Uint32Array > "u" ? void 0 : Uint32Array,
                f4: typeof Float32Array > "u" ? void 0 : Float32Array,
                f8: typeof Float64Array > "u" ? void 0 : Float64Array
                /* TODO: potentially add Big Int
                 i8: typeof BigInt64Array === 'undefined' ? undefined :
                           BigInt64Array,
                 u8: typeof BigUint64Array === 'undefined' ? undefined :
                           BigUint64Array,
                */
              };
              t.uint8c = t.u1c, t.uint8 = t.u1, t.int8 = t.i1, t.uint16 = t.u2, t.int16 = t.i2, t.uint32 = t.u4, t.int32 = t.i4, t.float32 = t.f4, t.float64 = t.f8;
              function r(l) {
                return l.constructor === ArrayBuffer;
              }
              K.isArrayBuffer = r, K.decodeTypedArraySpec = function(l) {
                var o = [], y = i(l), g = y.dtype, x = t[g];
                if (!x) throw new Error('Error in dtype: "' + g + '"');
                var c = x.BYTES_PER_ELEMENT, v = y.bdata;
                r(v) || (v = b(v));
                var f = y.shape === void 0 ? (
                  // detect 1-d length
                  [v.byteLength / c]
                ) : (
                  // convert number to string and split to array
                  ("" + y.shape).split(",")
                );
                f.reverse();
                var _ = f.length, S, M, C = +f[0], m = c * C, L = 0;
                if (_ === 1)
                  o = new x(v);
                else if (_ === 2)
                  for (S = +f[1], M = 0; M < S; M++)
                    o[M] = new x(v, L, C), L += m;
                else if (_ === 3) {
                  S = +f[1];
                  for (var d = +f[2], h = 0; h < d; h++)
                    for (o[h] = [], M = 0; M < S; M++)
                      o[h][M] = new x(v, L, C), L += m;
                } else
                  throw new Error("ndim: " + _ + 'is not supported with the shape:"' + y.shape + '"');
                return o.bdata = y.bdata, o.dtype = y.dtype, o.shape = f.reverse().join(","), l._inputArray = o, o;
              }, K.isTypedArraySpec = function(l) {
                return P(l) && l.hasOwnProperty("dtype") && typeof l.dtype == "string" && l.hasOwnProperty("bdata") && (typeof l.bdata == "string" || r(l.bdata)) && (l.shape === void 0 || l.hasOwnProperty("shape") && (typeof l.shape == "string" || typeof l.shape == "number"));
              };
              function i(l) {
                return {
                  bdata: l.bdata,
                  dtype: l.dtype,
                  shape: l.shape
                };
              }
              K.concat = function() {
                var l = [], o = !0, y = 0, g, x, c, v, f, _, S, M;
                for (c = 0; c < arguments.length; c++)
                  v = arguments[c], _ = v.length, _ && (x ? l.push(v) : (x = v, f = _), n(v) ? g = !1 : (o = !1, y ? g !== v.constructor && (g = !1) : g = v.constructor), y += _);
                if (!y) return [];
                if (!l.length) return x;
                if (o) return x.concat.apply(x, l);
                if (g) {
                  for (S = new g(y), S.set(x), c = 0; c < l.length; c++)
                    v = l[c], S.set(v, f), f += v.length;
                  return S;
                }
                for (S = new Array(y), M = 0; M < x.length; M++) S[M] = x[M];
                for (c = 0; c < l.length; c++) {
                  for (v = l[c], M = 0; M < v.length; M++) S[f + M] = v[M];
                  f += M;
                }
                return S;
              }, K.maxRowLength = function(l) {
                return a(l, Math.max, 0);
              }, K.minRowLength = function(l) {
                return a(l, Math.min, 1 / 0);
              };
              function a(l, o, y) {
                if (p(l))
                  if (p(l[0])) {
                    for (var g = y, x = 0; x < l.length; x++)
                      g = o(g, l[x].length);
                    return g;
                  } else
                    return l.length;
                return 0;
              }
            }
          ),
          /***/
          44498: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(63821).BADNUM, n = /^['"%,$#\s']+|[, ]|['"%,$#\s']+$/g;
              Y.exports = function(T) {
                return typeof T == "string" && (T = T.replace(n, "")), b(T) ? Number(T) : P;
              };
            }
          ),
          /***/
          34823: (
            /***/
            function(Y) {
              Y.exports = function(e) {
                var b = e._fullLayout;
                b._glcanvas && b._glcanvas.size() && b._glcanvas.each(function(P) {
                  P.regl && P.regl.clear({
                    color: !0,
                    depth: !0
                  });
                });
              };
            }
          ),
          /***/
          23493: (
            /***/
            function(Y) {
              Y.exports = function(e) {
                e._responsiveChartHandler && (window.removeEventListener("resize", e._responsiveChartHandler), delete e._responsiveChartHandler);
              };
            }
          ),
          /***/
          34220: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(65657), n = e(93049).extendFlat, s = e(9829), T = e(19017), A = e(78766), p = e(20438).DESELECTDIM, u = e(35632), t = e(90694).counter, r = e(98953).modHalf, i = e(87800).isArrayOrTypedArray, a = e(87800).isTypedArraySpec, l = e(87800).decodeTypedArraySpec;
              K.valObjectMeta = {
                data_array: {
                  // You can use *dflt=[] to force said array to exist though.
                  coerceFunction: function(y, g, x) {
                    g.set(i(y) ? y : a(y) ? l(y) : x);
                  }
                },
                enumerated: {
                  coerceFunction: function(y, g, x, c) {
                    c.coerceNumber && (y = +y), c.values.indexOf(y) === -1 ? g.set(x) : g.set(y);
                  },
                  validateFunction: function(y, g) {
                    g.coerceNumber && (y = +y);
                    for (var x = g.values, c = 0; c < x.length; c++) {
                      var v = String(x[c]);
                      if (v.charAt(0) === "/" && v.charAt(v.length - 1) === "/") {
                        var f = new RegExp(v.substr(1, v.length - 2));
                        if (f.test(y)) return !0;
                      } else if (y === x[c]) return !0;
                    }
                    return !1;
                  }
                },
                boolean: {
                  coerceFunction: function(y, g, x) {
                    y === !0 || y === !1 ? g.set(y) : g.set(x);
                  }
                },
                number: {
                  coerceFunction: function(y, g, x, c) {
                    a(y) && (y = l(y)), !b(y) || c.min !== void 0 && y < c.min || c.max !== void 0 && y > c.max ? g.set(x) : g.set(+y);
                  }
                },
                integer: {
                  coerceFunction: function(y, g, x, c) {
                    if ((c.extras || []).indexOf(y) !== -1) {
                      g.set(y);
                      return;
                    }
                    a(y) && (y = l(y)), y % 1 || !b(y) || c.min !== void 0 && y < c.min || c.max !== void 0 && y > c.max ? g.set(x) : g.set(+y);
                  }
                },
                string: {
                  // TODO 'values shouldn't be in there (edge case: 'dash' in Scatter)
                  coerceFunction: function(y, g, x, c) {
                    if (typeof y != "string") {
                      var v = typeof y == "number";
                      c.strict === !0 || !v ? g.set(x) : g.set(String(y));
                    } else c.noBlank && !y ? g.set(x) : g.set(y);
                  }
                },
                color: {
                  coerceFunction: function(y, g, x) {
                    a(y) && (y = l(y)), P(y).isValid() ? g.set(y) : g.set(x);
                  }
                },
                colorlist: {
                  coerceFunction: function(y, g, x) {
                    function c(v) {
                      return P(v).isValid();
                    }
                    !Array.isArray(y) || !y.length ? g.set(x) : y.every(c) ? g.set(y) : g.set(x);
                  }
                },
                colorscale: {
                  coerceFunction: function(y, g, x) {
                    g.set(T.get(y, x));
                  }
                },
                angle: {
                  coerceFunction: function(y, g, x) {
                    a(y) && (y = l(y)), y === "auto" ? g.set("auto") : b(y) ? g.set(r(+y, 360)) : g.set(x);
                  }
                },
                subplotid: {
                  coerceFunction: function(y, g, x, c) {
                    var v = c.regex || t(x);
                    if (typeof y == "string" && v.test(y)) {
                      g.set(y);
                      return;
                    }
                    g.set(x);
                  },
                  validateFunction: function(y, g) {
                    var x = g.dflt;
                    return y === x ? !0 : typeof y != "string" ? !1 : !!t(x).test(y);
                  }
                },
                flaglist: {
                  coerceFunction: function(y, g, x, c) {
                    if ((c.extras || []).indexOf(y) !== -1) {
                      g.set(y);
                      return;
                    }
                    if (typeof y != "string") {
                      g.set(x);
                      return;
                    }
                    for (var v = y.split("+"), f = 0; f < v.length; ) {
                      var _ = v[f];
                      c.flags.indexOf(_) === -1 || v.indexOf(_) < f ? v.splice(f, 1) : f++;
                    }
                    v.length ? g.set(v.join("+")) : g.set(x);
                  }
                },
                any: {
                  coerceFunction: function(y, g, x) {
                    y === void 0 ? g.set(x) : g.set(a(y) ? l(y) : y);
                  }
                },
                info_array: {
                  // set `dimensions=2` for a 2D array or '1-2' for either
                  // `items` may be a single object instead of an array, in which case
                  // `freeLength` must be true.
                  // if `dimensions='1-2'` and items is a 1D array, then the value can
                  // either be a matching 1D array or an array of such matching 1D arrays
                  coerceFunction: function(y, g, x, c) {
                    function v(B, V, U) {
                      var H, F = {
                        set: function(G) {
                          H = G;
                        }
                      };
                      return U === void 0 && (U = V.dflt), K.valObjectMeta[V.valType].coerceFunction(B, F, U, V), H;
                    }
                    if (a(y) && (y = l(y)), !i(y)) {
                      g.set(x);
                      return;
                    }
                    var f = c.dimensions === 2 || c.dimensions === "1-2" && Array.isArray(y) && i(y[0]), _ = c.items, S = [], M = Array.isArray(_), C = M && f && i(_[0]), m = f && M && !C, L = M && !m ? _.length : y.length, d, h, E, w, z, O;
                    if (x = Array.isArray(x) ? x : [], f)
                      for (d = 0; d < L; d++)
                        for (S[d] = [], E = i(y[d]) ? y[d] : [], m ? z = _.length : M ? z = _[d].length : z = E.length, h = 0; h < z; h++)
                          m ? w = _[h] : M ? w = _[d][h] : w = _, O = v(E[h], w, (x[d] || [])[h]), O !== void 0 && (S[d][h] = O);
                    else
                      for (d = 0; d < L; d++)
                        O = v(y[d], M ? _[d] : _, x[d]), O !== void 0 && (S[d] = O);
                    g.set(S);
                  },
                  validateFunction: function(y, g) {
                    if (!i(y)) return !1;
                    var x = g.items, c = Array.isArray(x), v = g.dimensions === 2;
                    if (!g.freeLength && y.length !== x.length) return !1;
                    for (var f = 0; f < y.length; f++)
                      if (v) {
                        if (!i(y[f]) || !g.freeLength && y[f].length !== x[f].length)
                          return !1;
                        for (var _ = 0; _ < y[f].length; _++)
                          if (!o(y[f][_], c ? x[f][_] : x))
                            return !1;
                      } else if (!o(y[f], c ? x[f] : x)) return !1;
                    return !0;
                  }
                }
              }, K.coerce = function(y, g, x, c, v) {
                var f = u(x, c).get(), _ = u(y, c), S = u(g, c), M = _.get(), C = g._template;
                if (M === void 0 && C && (M = u(C, c).get(), C = 0), v === void 0 && (v = f.dflt), f.arrayOk) {
                  if (i(M))
                    return S.set(M), M;
                  if (a(M))
                    return M = l(M), S.set(M), M;
                }
                var m = K.valObjectMeta[f.valType].coerceFunction;
                m(M, S, v, f);
                var L = S.get();
                return C && L === v && !o(M, f) && (M = u(C, c).get(), m(M, S, v, f), L = S.get()), L;
              }, K.coerce2 = function(y, g, x, c, v) {
                var f = u(y, c), _ = K.coerce(y, g, x, c, v), S = f.get();
                return S != null ? _ : !1;
              }, K.coerceFont = function(y, g, x, c) {
                c || (c = {}), x = n({}, x), x = n(x, c.overrideDflt || {});
                var v = {
                  family: y(g + ".family", x.family),
                  size: y(g + ".size", x.size),
                  color: y(g + ".color", x.color),
                  weight: y(g + ".weight", x.weight),
                  style: y(g + ".style", x.style)
                };
                if (c.noFontVariant || (v.variant = y(g + ".variant", x.variant)), c.noFontLineposition || (v.lineposition = y(g + ".lineposition", x.lineposition)), c.noFontTextcase || (v.textcase = y(g + ".textcase", x.textcase)), !c.noFontShadow) {
                  var f = x.shadow;
                  f === "none" && c.autoShadowDflt && (f = "auto"), v.shadow = y(g + ".shadow", f);
                }
                return v;
              }, K.coercePattern = function(y, g, x, c) {
                var v = y(g + ".shape");
                if (v) {
                  y(g + ".solidity"), y(g + ".size");
                  var f = y(g + ".fillmode"), _ = f === "overlay";
                  if (!c) {
                    var S = y(g + ".bgcolor", _ ? x : void 0);
                    y(g + ".fgcolor", _ ? A.contrast(S) : x);
                  }
                  y(g + ".fgopacity", _ ? 0.5 : 1);
                }
              }, K.coerceHoverinfo = function(y, g, x) {
                var c = g._module.attributes, v = c.hoverinfo ? c : s, f = v.hoverinfo, _;
                if (x._dataLength === 1) {
                  var S = f.dflt === "all" ? f.flags.slice() : f.dflt.split("+");
                  S.splice(S.indexOf("name"), 1), _ = S.join("+");
                }
                return K.coerce(y, g, v, "hoverinfo", _);
              }, K.coerceSelectionMarkerOpacity = function(y, g) {
                if (y.marker) {
                  var x = y.marker.opacity;
                  if (x !== void 0) {
                    var c, v;
                    !i(x) && !y.selected && !y.unselected && (c = x, v = p * x), g("selected.marker.opacity", c), g("unselected.marker.opacity", v);
                  }
                }
              };
              function o(y, g) {
                var x = K.valObjectMeta[g.valType];
                if (g.arrayOk && i(y)) return !0;
                if (x.validateFunction)
                  return x.validateFunction(y, g);
                var c = {}, v = c, f = {
                  set: function(_) {
                    v = _;
                  }
                };
                return x.coerceFunction(y, f, c, g), v !== c;
              }
              K.validate = o;
            }
          ),
          /***/
          92596: (
            /***/
            function(Y, K, e) {
              var b = e(42696).DC, P = e(10721), n = e(48636), s = e(98953).mod, T = e(63821), A = T.BADNUM, p = T.ONEDAY, u = T.ONEHOUR, t = T.ONEMIN, r = T.ONESEC, i = T.EPOCHJD, a = e(33626), l = e(42696).aL, o = /^\s*(-?\d\d\d\d|\d\d)(-(\d?\d)(-(\d?\d)([ Tt]([01]?\d|2[0-3])(:([0-5]\d)(:([0-5]\d(\.\d+)?))?(Z|z|[+\-]\d\d(:?\d\d)?)?)?)?)?)?\s*$/m, y = /^\s*(-?\d\d\d\d|\d\d)(-(\d?\di?)(-(\d?\d)([ Tt]([01]?\d|2[0-3])(:([0-5]\d)(:([0-5]\d(\.\d+)?))?(Z|z|[+\-]\d\d(:?\d\d)?)?)?)?)?)?\s*$/m, g = (/* @__PURE__ */ new Date()).getFullYear() - 70;
              function x(B) {
                return B && a.componentsRegistry.calendars && typeof B == "string" && B !== "gregorian";
              }
              K.dateTick0 = function(B, V) {
                var U = c(B, !!V);
                if (V < 2) return U;
                var H = K.dateTime2ms(U, B);
                return H += p * (V - 1), K.ms2DateTime(H, 0, B);
              };
              function c(B, V) {
                return x(B) ? V ? a.getComponentMethod("calendars", "CANONICAL_SUNDAY")[B] : a.getComponentMethod("calendars", "CANONICAL_TICK")[B] : V ? "2000-01-02" : "2000-01-01";
              }
              K.dfltRange = function(B) {
                return x(B) ? a.getComponentMethod("calendars", "DFLTRANGE")[B] : ["2000-01-01", "2001-01-01"];
              }, K.isJSDate = function(B) {
                return typeof B == "object" && B !== null && typeof B.getTime == "function";
              };
              var v, f;
              K.dateTime2ms = function(B, V) {
                if (K.isJSDate(B)) {
                  var U = B.getTimezoneOffset() * t, H = (B.getUTCMinutes() - B.getMinutes()) * t + (B.getUTCSeconds() - B.getSeconds()) * r + (B.getUTCMilliseconds() - B.getMilliseconds());
                  if (H) {
                    var F = 3 * t;
                    U = U - F / 2 + s(H - U + F / 2, F);
                  }
                  return B = Number(B) - U, B >= v && B <= f ? B : A;
                }
                if (typeof B != "string" && typeof B != "number") return A;
                B = String(B);
                var G = x(V), q = B.charAt(0);
                G && (q === "G" || q === "g") && (B = B.substr(1), V = "");
                var rt = G && V.substr(0, 7) === "chinese", st = B.match(rt ? y : o);
                if (!st) return A;
                var vt = st[1], ht = st[3] || "1", et = Number(st[5] || 1), Q = Number(st[7] || 0), j = Number(st[9] || 0), at = Number(st[11] || 0);
                if (G) {
                  if (vt.length === 2) return A;
                  vt = Number(vt);
                  var ut;
                  try {
                    var nt = a.getComponentMethod("calendars", "getCal")(V);
                    if (rt) {
                      var X = ht.charAt(ht.length - 1) === "i";
                      ht = parseInt(ht, 10), ut = nt.newDate(vt, nt.toMonthIndex(vt, ht, X), et);
                    } else
                      ut = nt.newDate(vt, Number(ht), et);
                  } catch {
                    return A;
                  }
                  return ut ? (ut.toJD() - i) * p + Q * u + j * t + at * r : A;
                }
                vt.length === 2 ? vt = (Number(vt) + 2e3 - g) % 100 + g : vt = Number(vt), ht -= 1;
                var ct = new Date(Date.UTC(2e3, ht, et, Q, j));
                return ct.setUTCFullYear(vt), ct.getUTCMonth() !== ht || ct.getUTCDate() !== et ? A : ct.getTime() + at * r;
              }, v = K.MIN_MS = K.dateTime2ms("-9999"), f = K.MAX_MS = K.dateTime2ms("9999-12-31 23:59:59.9999"), K.isDateTime = function(B, V) {
                return K.dateTime2ms(B, V) !== A;
              };
              function _(B, V) {
                return String(B + Math.pow(10, V)).substr(1);
              }
              var S = 90 * p, M = 3 * u, C = 5 * t;
              K.ms2DateTime = function(B, V, U) {
                if (typeof B != "number" || !(B >= v && B <= f)) return A;
                V || (V = 0);
                var H = Math.floor(s(B + 0.05, 1) * 10), F = Math.round(B - H / 10), G, q, rt, st, vt, ht;
                if (x(U)) {
                  var et = Math.floor(F / p) + i, Q = Math.floor(s(B, p));
                  try {
                    G = a.getComponentMethod("calendars", "getCal")(U).fromJD(et).formatDate("yyyy-mm-dd");
                  } catch {
                    G = l("G%Y-%m-%d")(new Date(F));
                  }
                  if (G.charAt(0) === "-")
                    for (; G.length < 11; ) G = "-0" + G.substr(1);
                  else
                    for (; G.length < 10; ) G = "0" + G;
                  q = V < S ? Math.floor(Q / u) : 0, rt = V < S ? Math.floor(Q % u / t) : 0, st = V < M ? Math.floor(Q % t / r) : 0, vt = V < C ? Q % r * 10 + H : 0;
                } else
                  ht = new Date(F), G = l("%Y-%m-%d")(ht), q = V < S ? ht.getUTCHours() : 0, rt = V < S ? ht.getUTCMinutes() : 0, st = V < M ? ht.getUTCSeconds() : 0, vt = V < C ? ht.getUTCMilliseconds() * 10 + H : 0;
                return m(G, q, rt, st, vt);
              }, K.ms2DateTimeLocal = function(B) {
                if (!(B >= v + p && B <= f - p)) return A;
                var V = Math.floor(s(B + 0.05, 1) * 10), U = new Date(Math.round(B - V / 10)), H = b("%Y-%m-%d")(U), F = U.getHours(), G = U.getMinutes(), q = U.getSeconds(), rt = U.getUTCMilliseconds() * 10 + V;
                return m(H, F, G, q, rt);
              };
              function m(B, V, U, H, F) {
                if ((V || U || H || F) && (B += " " + _(V, 2) + ":" + _(U, 2), (H || F) && (B += ":" + _(H, 2), F))) {
                  for (var G = 4; F % 10 === 0; )
                    G -= 1, F /= 10;
                  B += "." + _(F, G);
                }
                return B;
              }
              K.cleanDate = function(B, V, U) {
                if (B === A) return V;
                if (K.isJSDate(B) || typeof B == "number" && isFinite(B)) {
                  if (x(U))
                    return n.error("JS Dates and milliseconds are incompatible with world calendars", B), V;
                  if (B = K.ms2DateTimeLocal(+B), !B && V !== void 0) return V;
                } else if (!K.isDateTime(B, U))
                  return n.error("unrecognized date", B), V;
                return B;
              };
              var L = /%\d?f/g, d = /%h/g, h = {
                1: "1",
                2: "1",
                3: "2",
                4: "2"
              };
              function E(B, V, U, H) {
                B = B.replace(L, function(G) {
                  var q = Math.min(+G.charAt(1) || 6, 6), rt = (V / 1e3 % 1 + 2).toFixed(q).substr(2).replace(/0+$/, "") || "0";
                  return rt;
                });
                var F = new Date(Math.floor(V + 0.05));
                if (B = B.replace(d, function() {
                  return h[U("%q")(F)];
                }), x(H))
                  try {
                    B = a.getComponentMethod("calendars", "worldCalFmt")(B, V, H);
                  } catch {
                    return "Invalid";
                  }
                return U(B)(F);
              }
              var w = [59, 59.9, 59.99, 59.999, 59.9999];
              function z(B, V) {
                var U = s(B + 0.05, p), H = _(Math.floor(U / u), 2) + ":" + _(s(Math.floor(U / t), 60), 2);
                if (V !== "M") {
                  P(V) || (V = 0);
                  var F = Math.min(s(B / r, 60), w[V]), G = (100 + F).toFixed(V).substr(1);
                  V > 0 && (G = G.replace(/0+$/, "").replace(/[\.]$/, "")), H += ":" + G;
                }
                return H;
              }
              K.formatDate = function(B, V, U, H, F, G) {
                if (F = x(F) && F, !V)
                  if (U === "y") V = G.year;
                  else if (U === "m") V = G.month;
                  else if (U === "d")
                    V = G.dayMonth + `
` + G.year;
                  else
                    return z(B, U) + `
` + E(G.dayMonthYear, B, H, F);
                return E(V, B, H, F);
              };
              var O = 3 * p;
              K.incrementMonth = function(B, V, U) {
                U = x(U) && U;
                var H = s(B, p);
                if (B = Math.round(B - H), U)
                  try {
                    var F = Math.round(B / p) + i, G = a.getComponentMethod("calendars", "getCal")(U), q = G.fromJD(F);
                    return V % 12 ? G.add(q, V, "m") : G.add(q, V / 12, "y"), (q.toJD() - i) * p + H;
                  } catch {
                    n.error("invalid ms " + B + " in calendar " + U);
                  }
                var rt = new Date(B + O);
                return rt.setUTCMonth(rt.getUTCMonth() + V) + H - O;
              }, K.findExactDates = function(B, V) {
                for (var U = 0, H = 0, F = 0, G = 0, q, rt, st = x(V) && a.getComponentMethod("calendars", "getCal")(V), vt = 0; vt < B.length; vt++) {
                  if (rt = B[vt], !P(rt)) {
                    G++;
                    continue;
                  }
                  if (!(rt % p))
                    if (st)
                      try {
                        q = st.fromJD(rt / p + i), q.day() === 1 ? q.month() === 1 ? U++ : H++ : F++;
                      } catch {
                      }
                    else
                      q = new Date(rt), q.getUTCDate() === 1 ? q.getUTCMonth() === 0 ? U++ : H++ : F++;
                }
                H += U, F += H;
                var ht = B.length - G;
                return {
                  exactYears: U / ht,
                  exactMonths: H / ht,
                  exactDays: F / ht
                };
              };
            }
          ),
          /***/
          95425: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(48636), n = e(15236), s = e(11191);
              function T(g) {
                var x;
                if (typeof g == "string") {
                  if (x = document.getElementById(g), x === null)
                    throw new Error("No DOM element with id '" + g + "' exists on the page.");
                  return x;
                } else if (g == null)
                  throw new Error("DOM element provided is null or undefined");
                return g;
              }
              function A(g) {
                var x = b.select(g);
                return x.node() instanceof HTMLElement && x.size() && x.classed("js-plotly-plot");
              }
              function p(g) {
                var x = g && g.parentNode;
                x && x.removeChild(g);
              }
              function u(g, x) {
                t("global", g, x);
              }
              function t(g, x, c) {
                var v = "plotly.js-style-" + g, f = document.getElementById(v);
                f || (f = document.createElement("style"), f.setAttribute("id", v), f.appendChild(document.createTextNode("")), document.head.appendChild(f));
                var _ = f.sheet;
                _.insertRule ? _.insertRule(x + "{" + c + "}", 0) : _.addRule ? _.addRule(x, c, 0) : P.warn("addStyleRule failed");
              }
              function r(g) {
                var x = "plotly.js-style-" + g, c = document.getElementById(x);
                c && p(c);
              }
              function i(g) {
                var x = l(g), c = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
                return x.forEach(function(v) {
                  var f = a(v);
                  if (f) {
                    var _ = n.convertCssMatrix(f);
                    c = s.multiply(c, c, _);
                  }
                }), c;
              }
              function a(g) {
                var x = window.getComputedStyle(g, null), c = x.getPropertyValue("-webkit-transform") || x.getPropertyValue("-moz-transform") || x.getPropertyValue("-ms-transform") || x.getPropertyValue("-o-transform") || x.getPropertyValue("transform");
                return c === "none" ? null : c.replace("matrix", "").replace("3d", "").slice(1, -1).split(",").map(function(v) {
                  return +v;
                });
              }
              function l(g) {
                for (var x = []; o(g); )
                  x.push(g), g = g.parentNode, typeof ShadowRoot == "function" && g instanceof ShadowRoot && (g = g.host);
                return x;
              }
              function o(g) {
                return g && (g instanceof Element || g instanceof HTMLElement);
              }
              function y(g, x) {
                return g && x && g.top === x.top && g.left === x.left && g.right === x.right && g.bottom === x.bottom;
              }
              Y.exports = {
                getGraphDiv: T,
                isPlotDiv: A,
                removeElement: p,
                addStyleRule: u,
                addRelatedStyleRule: t,
                deleteRelatedStyleRule: r,
                getFullTransformMatrix: i,
                getElementTransformMatrix: a,
                getElementAndAncestors: l,
                equalDomRects: y
              };
            }
          ),
          /***/
          68596: (
            /***/
            function(Y, K, e) {
              var b = e(7683).EventEmitter, P = {
                init: function(n) {
                  if (n._ev instanceof b) return n;
                  var s = new b(), T = new b();
                  return n._ev = s, n._internalEv = T, n.on = s.on.bind(s), n.once = s.once.bind(s), n.removeListener = s.removeListener.bind(s), n.removeAllListeners = s.removeAllListeners.bind(s), n._internalOn = T.on.bind(T), n._internalOnce = T.once.bind(T), n._removeInternalListener = T.removeListener.bind(T), n._removeAllInternalListeners = T.removeAllListeners.bind(T), n.emit = function(A, p) {
                    typeof jQuery < "u" && jQuery(n).trigger(A, p), s.emit(A, p), T.emit(A, p);
                  }, n;
                },
                /*
                 * This function behaves like jQuery's triggerHandler. It calls
                 * all handlers for a particular event and returns the return value
                 * of the LAST handler. This function also triggers jQuery's
                 * triggerHandler for backwards compatibility.
                 */
                triggerHandler: function(n, s, T) {
                  var A, p;
                  typeof jQuery < "u" && (A = jQuery(n).triggerHandler(s, T));
                  var u = n._ev;
                  if (!u) return A;
                  var t = u._events[s];
                  if (!t) return A;
                  function r(a) {
                    if (a.listener) {
                      if (u.removeListener(s, a.listener), !a.fired)
                        return a.fired = !0, a.listener.apply(u, [T]);
                    } else
                      return a.apply(u, [T]);
                  }
                  t = Array.isArray(t) ? t : [t];
                  var i;
                  for (i = 0; i < t.length - 1; i++)
                    r(t[i]);
                  return p = r(t[i]), A !== void 0 ? A : p;
                },
                purge: function(n) {
                  return delete n._ev, delete n.on, delete n.once, delete n.removeListener, delete n.removeAllListeners, delete n.emit, delete n._ev, delete n._internalEv, delete n._internalOn, delete n._internalOnce, delete n._removeInternalListener, delete n._removeAllInternalListeners, n;
                }
              };
              Y.exports = P;
            }
          ),
          /***/
          93049: (
            /***/
            function(Y, K, e) {
              var b = e(56174), P = Array.isArray;
              function n(T, A) {
                var p, u;
                for (p = 0; p < T.length; p++) {
                  if (u = T[p], u !== null && typeof u == "object")
                    return !1;
                  u !== void 0 && (A[p] = u);
                }
                return !0;
              }
              K.extendFlat = function() {
                return s(arguments, !1, !1, !1);
              }, K.extendDeep = function() {
                return s(arguments, !0, !1, !1);
              }, K.extendDeepAll = function() {
                return s(arguments, !0, !0, !1);
              }, K.extendDeepNoArrays = function() {
                return s(arguments, !0, !1, !0);
              };
              function s(T, A, p, u) {
                var t = T[0], r = T.length, i, a, l, o, y, g, x;
                if (r === 2 && P(t) && P(T[1]) && t.length === 0) {
                  if (x = n(T[1], t), x)
                    return t;
                  t.splice(0, t.length);
                }
                for (var c = 1; c < r; c++) {
                  i = T[c];
                  for (a in i)
                    l = t[a], o = i[a], u && P(o) ? t[a] = o : A && o && (b(o) || (y = P(o))) ? (y ? (y = !1, g = l && P(l) ? l : []) : g = l && b(l) ? l : {}, t[a] = s([g, o], A, p, u)) : (typeof o < "u" || p) && (t[a] = o);
                }
                return t;
              }
            }
          ),
          /***/
          48965: (
            /***/
            function(Y) {
              Y.exports = function(e) {
                for (var b = {}, P = [], n = 0, s = 0; s < e.length; s++) {
                  var T = e[s];
                  b[T] !== 1 && (b[T] = 1, P[n++] = T);
                }
                return P;
              };
            }
          ),
          /***/
          78926: (
            /***/
            function(Y) {
              Y.exports = function(n) {
                for (var s = b(n) ? e : K, T = [], A = 0; A < n.length; A++) {
                  var p = n[A];
                  s(p) && T.push(p);
                }
                return T;
              };
              function K(P) {
                return P.visible === !0;
              }
              function e(P) {
                var n = P[0].trace;
                return n.visible === !0 && n._length !== 0;
              }
              function b(P) {
                return Array.isArray(P) && Array.isArray(P[0]) && P[0][0] && P[0][0].trace;
              }
            }
          ),
          /***/
          3994: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(78171), {
                area: n
              } = e(61990), {
                centroid: s
              } = e(30035), {
                bbox: T
              } = e(25368), A = e(29527), p = e(48636), u = e(56174), t = e(35632), r = e(80899), i = Object.keys(P), a = {
                "ISO-3": A,
                "USA-states": A,
                "country names": l
              };
              function l(_) {
                for (var S = 0; S < i.length; S++) {
                  var M = i[S], C = new RegExp(P[M]);
                  if (C.test(_.trim().toLowerCase())) return M;
                }
                return p.log("Unrecognized country name: " + _ + "."), !1;
              }
              function o(_, S, M) {
                if (!S || typeof S != "string") return !1;
                var C = a[_](S), m, L, d;
                if (C) {
                  if (_ === "USA-states")
                    for (m = [], d = 0; d < M.length; d++)
                      L = M[d], L.properties && L.properties.gu && L.properties.gu === "USA" && m.push(L);
                  else
                    m = M;
                  for (d = 0; d < m.length; d++)
                    if (L = m[d], L.id === C) return L;
                  p.log(["Location with id", C, "does not have a matching topojson feature at this resolution."].join(" "));
                }
                return !1;
              }
              function y(_) {
                var S = _.geometry, M = S.coordinates, C = _.id, m = [], L, d, h, E;
                function w(z) {
                  for (var O = 0; O < z.length - 1; O++)
                    if (z[O][0] > 0 && z[O + 1][0] < 0) return O;
                  return null;
                }
                switch (C === "RUS" || C === "FJI" ? L = function(z) {
                  var O;
                  if (w(z) === null)
                    O = z;
                  else
                    for (O = new Array(z.length), E = 0; E < z.length; E++)
                      O[E] = [z[E][0] < 0 ? z[E][0] + 360 : z[E][0], z[E][1]];
                  m.push(r.tester(O));
                } : C === "ATA" ? L = function(z) {
                  var O = w(z);
                  if (O === null)
                    return m.push(r.tester(z));
                  var B = new Array(z.length + 1), V = 0;
                  for (E = 0; E < z.length; E++)
                    E > O ? B[V++] = [z[E][0] + 360, z[E][1]] : E === O ? (B[V++] = z[E], B[V++] = [z[E][0], -90]) : B[V++] = z[E];
                  var U = r.tester(B);
                  U.pts.pop(), m.push(U);
                } : L = function(z) {
                  m.push(r.tester(z));
                }, S.type) {
                  case "MultiPolygon":
                    for (d = 0; d < M.length; d++)
                      for (h = 0; h < M[d].length; h++)
                        L(M[d][h]);
                    break;
                  case "Polygon":
                    for (d = 0; d < M.length; d++)
                      L(M[d]);
                    break;
                }
                return m;
              }
              function g(_) {
                var S = _.geojson, M = window.PlotlyGeoAssets || {}, C = typeof S == "string" ? M[S] : S;
                return u(C) ? C : (p.error("Oops ... something went wrong when fetching " + S), !1);
              }
              function x(_) {
                var S = _[0].trace, M = g(S);
                if (!M) return !1;
                var C = {}, m = [], L;
                for (L = 0; L < S._length; L++) {
                  var d = _[L];
                  (d.loc || d.loc === 0) && (C[d.loc] = d);
                }
                function h(z) {
                  var O = t(z, S.featureidkey || "id").get(), B = C[O];
                  if (B) {
                    var V = z.geometry;
                    if (V.type === "Polygon" || V.type === "MultiPolygon") {
                      var U = {
                        type: "Feature",
                        id: O,
                        geometry: V,
                        properties: {}
                      };
                      U.geometry.coordinates.length > 0 ? U.properties.ct = c(U) : U.properties.ct = [NaN, NaN], B.fIn = z, B.fOut = U, m.push(U);
                    } else
                      p.log(["Location", B.loc, "does not have a valid GeoJSON geometry.", "Traces with locationmode *geojson-id* only support", "*Polygon* and *MultiPolygon* geometries."].join(" "));
                  }
                  delete C[O];
                }
                switch (M.type) {
                  case "FeatureCollection":
                    var E = M.features;
                    for (L = 0; L < E.length; L++)
                      h(E[L]);
                    break;
                  case "Feature":
                    h(M);
                    break;
                  default:
                    return p.warn(["Invalid GeoJSON type", (M.type || "none") + ".", "Traces with locationmode *geojson-id* only support", "*FeatureCollection* and *Feature* types."].join(" ")), !1;
                }
                for (var w in C)
                  p.log(["Location *" + w + "*", "does not have a matching feature with id-key", "*" + S.featureidkey + "*."].join(" "));
                return m;
              }
              function c(_) {
                var S = _.geometry, M;
                if (S.type === "MultiPolygon")
                  for (var C = S.coordinates, m = 0, L = 0; L < C.length; L++) {
                    var d = {
                      type: "Polygon",
                      coordinates: C[L]
                    }, h = n(d);
                    h > m && (m = h, M = d);
                  }
                else
                  M = S;
                return s(M).geometry.coordinates;
              }
              function v(_) {
                var S = window.PlotlyGeoAssets || {}, M = [];
                function C(E) {
                  return new Promise(function(w, z) {
                    b.json(E, function(O, B) {
                      if (O) {
                        delete S[E];
                        var V = O.status === 404 ? 'GeoJSON at URL "' + E + '" does not exist.' : "Unexpected error while fetching from " + E;
                        return z(new Error(V));
                      }
                      return S[E] = B, w(B);
                    });
                  });
                }
                function m(E) {
                  return new Promise(function(w, z) {
                    var O = 0, B = setInterval(function() {
                      if (S[E] && S[E] !== "pending")
                        return clearInterval(B), w(S[E]);
                      if (O > 100)
                        return clearInterval(B), z("Unexpected error while fetching from " + E);
                      O++;
                    }, 50);
                  });
                }
                for (var L = 0; L < _.length; L++) {
                  var d = _[L][0].trace, h = d.geojson;
                  typeof h == "string" && (S[h] ? S[h] === "pending" && M.push(m(h)) : (S[h] = "pending", M.push(C(h))));
                }
                return M;
              }
              function f(_) {
                return T(_);
              }
              Y.exports = {
                locationToFeature: o,
                feature2polygons: y,
                getTraceGeojson: g,
                extractTraceFeature: x,
                fetchTraceGeoData: v,
                computeBbox: f
              };
            }
          ),
          /***/
          39532: (
            /***/
            function(Y, K, e) {
              var b = e(63821).BADNUM;
              K.calcTraceToLineCoords = function(P) {
                for (var n = P[0].trace, s = n.connectgaps, T = [], A = [], p = 0; p < P.length; p++) {
                  var u = P[p], t = u.lonlat;
                  t[0] !== b ? A.push(t) : !s && A.length > 0 && (T.push(A), A = []);
                }
                return A.length > 0 && T.push(A), T;
              }, K.makeLine = function(P) {
                return P.length === 1 ? {
                  type: "LineString",
                  coordinates: P[0]
                } : {
                  type: "MultiLineString",
                  coordinates: P
                };
              }, K.makePolygon = function(P) {
                if (P.length === 1)
                  return {
                    type: "Polygon",
                    coordinates: P
                  };
                for (var n = new Array(P.length), s = 0; s < P.length; s++)
                  n[s] = [P[s]];
                return {
                  type: "MultiPolygon",
                  coordinates: n
                };
              }, K.makeBlank = function() {
                return {
                  type: "Point",
                  coordinates: []
                };
              };
            }
          ),
          /***/
          3447: (
            /***/
            function(Y, K, e) {
              var b = e(98953).mod;
              K.segmentsIntersect = P;
              function P(p, u, t, r, i, a, l, o) {
                var y = t - p, g = i - p, x = l - i, c = r - u, v = a - u, f = o - a, _ = y * f - x * c;
                if (_ === 0) return null;
                var S = (g * f - x * v) / _, M = (g * c - y * v) / _;
                return M < 0 || M > 1 || S < 0 || S > 1 ? null : {
                  x: p + y * S,
                  y: u + c * S
                };
              }
              K.segmentDistance = function(u, t, r, i, a, l, o, y) {
                if (P(u, t, r, i, a, l, o, y)) return 0;
                var g = r - u, x = i - t, c = o - a, v = y - l, f = g * g + x * x, _ = c * c + v * v, S = Math.min(n(g, x, f, a - u, l - t), n(g, x, f, o - u, y - t), n(c, v, _, u - a, t - l), n(c, v, _, r - a, i - l));
                return Math.sqrt(S);
              };
              function n(p, u, t, r, i) {
                var a = r * p + i * u;
                if (a < 0)
                  return r * r + i * i;
                if (a > t) {
                  var l = r - p, o = i - u;
                  return l * l + o * o;
                } else {
                  var y = r * u - i * p;
                  return y * y / t;
                }
              }
              var s, T, A;
              K.getTextLocation = function(u, t, r, i) {
                if ((u !== T || i !== A) && (s = {}, T = u, A = i), s[r])
                  return s[r];
                var a = u.getPointAtLength(b(r - i / 2, t)), l = u.getPointAtLength(b(r + i / 2, t)), o = Math.atan((l.y - a.y) / (l.x - a.x)), y = u.getPointAtLength(b(r, t)), g = (y.x * 4 + a.x + l.x) / 6, x = (y.y * 4 + a.y + l.y) / 6, c = {
                  x: g,
                  y: x,
                  theta: o
                };
                return s[r] = c, c;
              }, K.clearLocationCache = function() {
                T = null;
              }, K.getVisibleSegment = function(u, t, r) {
                var i = t.left, a = t.right, l = t.top, o = t.bottom, y = 0, g = u.getTotalLength(), x = g, c, v;
                function f(S) {
                  var M = u.getPointAtLength(S);
                  S === 0 ? c = M : S === g && (v = M);
                  var C = M.x < i ? i - M.x : M.x > a ? M.x - a : 0, m = M.y < l ? l - M.y : M.y > o ? M.y - o : 0;
                  return Math.sqrt(C * C + m * m);
                }
                for (var _ = f(y); _; ) {
                  if (y += _ + r, y > x) return;
                  _ = f(y);
                }
                for (_ = f(x); _; ) {
                  if (x -= _ + r, y > x) return;
                  _ = f(x);
                }
                return {
                  min: y,
                  max: x,
                  len: x - y,
                  total: g,
                  isClosed: y === 0 && x === g && Math.abs(c.x - v.x) < 0.1 && Math.abs(c.y - v.y) < 0.1
                };
              }, K.findPointOnPath = function(u, t, r, i) {
                i = i || {};
                for (var a = i.pathLength || u.getTotalLength(), l = i.tolerance || 1e-3, o = i.iterationLimit || 30, y = u.getPointAtLength(0)[r] > u.getPointAtLength(a)[r] ? -1 : 1, g = 0, x = 0, c = a, v, f, _; g < o; ) {
                  if (v = (x + c) / 2, f = u.getPointAtLength(v), _ = f[r] - t, Math.abs(_) < l)
                    return f;
                  y * _ > 0 ? c = v : x = v, g++;
                }
                return f;
              };
            }
          ),
          /***/
          46998: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(65657), n = e(162), s = e(88856), T = e(10229).defaultLine, A = e(87800).isArrayOrTypedArray, p = n(T), u = 1;
              function t(o, y) {
                var g = o;
                return g[3] *= y, g;
              }
              function r(o) {
                if (b(o)) return p;
                var y = n(o);
                return y.length ? y : p;
              }
              function i(o) {
                return b(o) ? o : u;
              }
              function a(o, y, g) {
                var x = o.color;
                x && x._inputArray && (x = x._inputArray);
                var c = A(x), v = A(y), f = s.extractOpts(o), _ = [], S, M, C, m, L;
                if (f.colorscale !== void 0 ? S = s.makeColorScaleFuncFromTrace(o) : S = r, c ? M = function(h, E) {
                  return h[E] === void 0 ? p : n(S(h[E]));
                } : M = r, v ? C = function(h, E) {
                  return h[E] === void 0 ? u : i(h[E]);
                } : C = i, c || v)
                  for (var d = 0; d < g; d++)
                    m = M(x, d), L = C(y, d), _[d] = t(m, L);
                else _ = t(n(x), y);
                return _;
              }
              function l(o) {
                var y = s.extractOpts(o), g = y.colorscale;
                return y.reversescale && (g = s.flipScale(y.colorscale)), g.map(function(x) {
                  var c = x[0], v = P(x[1]), f = v.toRgb();
                  return {
                    index: c,
                    rgb: [f.r, f.g, f.b, f.a]
                  };
                });
              }
              Y.exports = {
                formatColor: a,
                parseColorScale: l
              };
            }
          ),
          /***/
          71293: (
            /***/
            function(Y, K, e) {
              var b = e(29527);
              function P(n) {
                return [n];
              }
              Y.exports = {
                // The D3 data binding concept and the General Update Pattern promotes the idea of
                // traversing into the scenegraph by using the `.data(fun, keyFun)` call.
                // The `fun` is most often a `repeat`, ie. the elements beneath a `<g>` element need
                // access to the same data, or a `descend`, which fans a scenegraph node into a bunch of
                // of elements, e.g. points, lines, rows, requiring an array as input.
                // The role of the `keyFun` is to identify what elements are being entered/exited/updated,
                // otherwise D3 reverts to using a plain index which would screw up `transition`s.
                keyFun: function(n) {
                  return n.key;
                },
                repeat: P,
                descend: b,
                // Plotly.js uses a convention of storing the actual contents of the `calcData` as the
                // element zero of a container array. These helpers are just used for clarity as a
                // newcomer to the codebase may not know what the `[0]` is, and whether there can be further
                // elements (not atm).
                wrap: P,
                unwrap: function(n) {
                  return n[0];
                }
              };
            }
          ),
          /***/
          29527: (
            /***/
            function(Y) {
              Y.exports = function(e) {
                return e;
              };
            }
          ),
          /***/
          10688: (
            /***/
            function(Y) {
              Y.exports = function(e, b) {
                if (!b) return e;
                var P = 1 / Math.abs(b), n = P > 1 ? (P * e + P * b) / P : e + b, s = String(n).length;
                if (s > 16) {
                  var T = String(b).length, A = String(e).length;
                  if (s >= A + T) {
                    var p = parseFloat(n).toPrecision(12);
                    p.indexOf("e+") === -1 && (n = +p);
                  }
                }
                return n;
              };
            }
          ),
          /***/
          34809: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(42696).aL, n = e(36464).GP, s = e(10721), T = e(63821), A = T.FP_SAFE, p = -A, u = T.BADNUM, t = Y.exports = {};
              t.adjustFormat = function(ut) {
                return !ut || /^\d[.]\df/.test(ut) || /[.]\d%/.test(ut) ? ut : ut === "0.f" ? "~f" : /^\d%/.test(ut) ? "~%" : /^\ds/.test(ut) ? "~s" : !/^[~,.0$]/.test(ut) && /[&fps]/.test(ut) ? "~" + ut : ut;
              };
              var r = {};
              t.warnBadFormat = function(at) {
                var ut = String(at);
                r[ut] || (r[ut] = 1, t.warn('encountered bad format: "' + ut + '"'));
              }, t.noFormat = function(at) {
                return String(at);
              }, t.numberFormat = function(at) {
                var ut;
                try {
                  ut = n(t.adjustFormat(at));
                } catch {
                  return t.warnBadFormat(at), t.noFormat;
                }
                return ut;
              }, t.nestedProperty = e(35632), t.keyedContainer = e(34967), t.relativeAttr = e(82047), t.isPlainObject = e(56174), t.toLogRange = e(8083), t.relinkPrivateKeys = e(80428);
              var i = e(87800);
              t.isArrayBuffer = i.isArrayBuffer, t.isTypedArray = i.isTypedArray, t.isArrayOrTypedArray = i.isArrayOrTypedArray, t.isArray1D = i.isArray1D, t.ensureArray = i.ensureArray, t.concat = i.concat, t.maxRowLength = i.maxRowLength, t.minRowLength = i.minRowLength;
              var a = e(98953);
              t.mod = a.mod, t.modHalf = a.modHalf;
              var l = e(34220);
              t.valObjectMeta = l.valObjectMeta, t.coerce = l.coerce, t.coerce2 = l.coerce2, t.coerceFont = l.coerceFont, t.coercePattern = l.coercePattern, t.coerceHoverinfo = l.coerceHoverinfo, t.coerceSelectionMarkerOpacity = l.coerceSelectionMarkerOpacity, t.validate = l.validate;
              var o = e(92596);
              t.dateTime2ms = o.dateTime2ms, t.isDateTime = o.isDateTime, t.ms2DateTime = o.ms2DateTime, t.ms2DateTimeLocal = o.ms2DateTimeLocal, t.cleanDate = o.cleanDate, t.isJSDate = o.isJSDate, t.formatDate = o.formatDate, t.incrementMonth = o.incrementMonth, t.dateTick0 = o.dateTick0, t.dfltRange = o.dfltRange, t.findExactDates = o.findExactDates, t.MIN_MS = o.MIN_MS, t.MAX_MS = o.MAX_MS;
              var y = e(98813);
              t.findBin = y.findBin, t.sorterAsc = y.sorterAsc, t.sorterDes = y.sorterDes, t.distinctVals = y.distinctVals, t.roundUp = y.roundUp, t.sort = y.sort, t.findIndexOfMin = y.findIndexOfMin, t.sortObjectKeys = e(62994);
              var g = e(89258);
              t.aggNums = g.aggNums, t.len = g.len, t.mean = g.mean, t.geometricMean = g.geometricMean, t.median = g.median, t.midRange = g.midRange, t.variance = g.variance, t.stdev = g.stdev, t.interp = g.interp;
              var x = e(15236);
              t.init2dArray = x.init2dArray, t.transposeRagged = x.transposeRagged, t.dot = x.dot, t.translationMatrix = x.translationMatrix, t.rotationMatrix = x.rotationMatrix, t.rotationXYMatrix = x.rotationXYMatrix, t.apply3DTransform = x.apply3DTransform, t.apply2DTransform = x.apply2DTransform, t.apply2DTransform2 = x.apply2DTransform2, t.convertCssMatrix = x.convertCssMatrix, t.inverseTransformMatrix = x.inverseTransformMatrix;
              var c = e(44313);
              t.deg2rad = c.deg2rad, t.rad2deg = c.rad2deg, t.angleDelta = c.angleDelta, t.angleDist = c.angleDist, t.isFullCircle = c.isFullCircle, t.isAngleInsideSector = c.isAngleInsideSector, t.isPtInsideSector = c.isPtInsideSector, t.pathArc = c.pathArc, t.pathSector = c.pathSector, t.pathAnnulus = c.pathAnnulus;
              var v = e(32546);
              t.isLeftAnchor = v.isLeftAnchor, t.isCenterAnchor = v.isCenterAnchor, t.isRightAnchor = v.isRightAnchor, t.isTopAnchor = v.isTopAnchor, t.isMiddleAnchor = v.isMiddleAnchor, t.isBottomAnchor = v.isBottomAnchor;
              var f = e(3447);
              t.segmentsIntersect = f.segmentsIntersect, t.segmentDistance = f.segmentDistance, t.getTextLocation = f.getTextLocation, t.clearLocationCache = f.clearLocationCache, t.getVisibleSegment = f.getVisibleSegment, t.findPointOnPath = f.findPointOnPath;
              var _ = e(93049);
              t.extendFlat = _.extendFlat, t.extendDeep = _.extendDeep, t.extendDeepAll = _.extendDeepAll, t.extendDeepNoArrays = _.extendDeepNoArrays;
              var S = e(48636);
              t.log = S.log, t.warn = S.warn, t.error = S.error;
              var M = e(90694);
              t.counterRegex = M.counter;
              var C = e(64025);
              t.throttle = C.throttle, t.throttleDone = C.done, t.clearThrottle = C.clear;
              var m = e(95425);
              t.getGraphDiv = m.getGraphDiv, t.isPlotDiv = m.isPlotDiv, t.removeElement = m.removeElement, t.addStyleRule = m.addStyleRule, t.addRelatedStyleRule = m.addRelatedStyleRule, t.deleteRelatedStyleRule = m.deleteRelatedStyleRule, t.getFullTransformMatrix = m.getFullTransformMatrix, t.getElementTransformMatrix = m.getElementTransformMatrix, t.getElementAndAncestors = m.getElementAndAncestors, t.equalDomRects = m.equalDomRects, t.clearResponsive = e(23493), t.preserveDrawingBuffer = e(32521), t.makeTraceGroups = e(75944), t._ = e(38514), t.notifier = e(87355), t.filterUnique = e(48965), t.filterVisible = e(78926), t.pushUnique = e(36539), t.increment = e(10688), t.cleanNumber = e(44498), t.ensureNumber = function(ut) {
                return s(ut) ? (ut = Number(ut), ut > A || ut < p ? u : ut) : u;
              }, t.isIndex = function(at, ut) {
                return ut !== void 0 && at >= ut ? !1 : s(at) && at >= 0 && at % 1 === 0;
              }, t.noop = e(4969), t.identity = e(29527), t.repeat = function(at, ut) {
                for (var nt = new Array(ut), X = 0; X < ut; X++)
                  nt[X] = at;
                return nt;
              }, t.swapAttrs = function(at, ut, nt, X) {
                nt || (nt = "x"), X || (X = "y");
                for (var ct = 0; ct < ut.length; ct++) {
                  var lt = ut[ct], pt = t.nestedProperty(at, lt.replace("?", nt)), wt = t.nestedProperty(at, lt.replace("?", X)), Et = pt.get();
                  pt.set(wt.get()), wt.set(Et);
                }
              }, t.raiseToTop = function(ut) {
                ut.parentNode.appendChild(ut);
              }, t.cancelTransition = function(at) {
                return at.transition().duration(0);
              }, t.constrain = function(at, ut, nt) {
                return ut > nt ? Math.max(nt, Math.min(ut, at)) : Math.max(ut, Math.min(nt, at));
              }, t.bBoxIntersect = function(at, ut, nt) {
                return nt = nt || 0, at.left <= ut.right + nt && ut.left <= at.right + nt && at.top <= ut.bottom + nt && ut.top <= at.bottom + nt;
              }, t.simpleMap = function(at, ut, nt, X, ct) {
                for (var lt = at.length, pt = new Array(lt), wt = 0; wt < lt; wt++) pt[wt] = ut(at[wt], nt, X, ct);
                return pt;
              }, t.randstr = function at(ut, nt, X, ct) {
                if (X || (X = 16), nt === void 0 && (nt = 24), nt <= 0) return "0";
                var lt = Math.log(Math.pow(2, nt)) / Math.log(X), pt = "", wt, Et, Ct;
                for (wt = 2; lt === 1 / 0; wt *= 2)
                  lt = Math.log(Math.pow(2, nt / wt)) / Math.log(X) * wt;
                var Gt = lt - Math.floor(lt);
                for (wt = 0; wt < Math.floor(lt); wt++)
                  Ct = Math.floor(Math.random() * X).toString(X), pt = Ct + pt;
                Gt && (Et = Math.pow(X, Gt), Ct = Math.floor(Math.random() * Et).toString(X), pt = Ct + pt);
                var Jt = parseInt(pt, X);
                return ut && ut[pt] || Jt !== 1 / 0 && Jt >= Math.pow(2, nt) ? ct > 10 ? (t.warn("randstr failed uniqueness"), pt) : at(ut, nt, X, (ct || 0) + 1) : pt;
              }, t.OptionControl = function(at, ut) {
                at || (at = {}), ut || (ut = "opt");
                var nt = {};
                return nt.optionList = [], nt._newoption = function(X) {
                  X[ut] = at, nt[X.name] = X, nt.optionList.push(X);
                }, nt["_" + ut] = at, nt;
              }, t.smooth = function(at, ut) {
                if (ut = Math.round(ut) || 0, ut < 2) return at;
                var nt = at.length, X = 2 * nt, ct = 2 * ut - 1, lt = new Array(ct), pt = new Array(nt), wt, Et, Ct, Gt;
                for (wt = 0; wt < ct; wt++)
                  lt[wt] = (1 - Math.cos(Math.PI * (wt + 1) / ut)) / (2 * ut);
                for (wt = 0; wt < nt; wt++) {
                  for (Gt = 0, Et = 0; Et < ct; Et++)
                    Ct = wt + Et + 1 - ut, Ct < -nt ? Ct -= X * Math.round(Ct / X) : Ct >= X && (Ct -= X * Math.floor(Ct / X)), Ct < 0 ? Ct = -1 - Ct : Ct >= nt && (Ct = X - 1 - Ct), Gt += at[Ct] * lt[Et];
                  pt[wt] = Gt;
                }
                return pt;
              }, t.syncOrAsync = function(at, ut, nt) {
                var X, ct;
                function lt() {
                  return t.syncOrAsync(at, ut, nt);
                }
                for (; at.length; )
                  if (ct = at.splice(0, 1)[0], X = ct(ut), X && X.then)
                    return X.then(lt);
                return nt && nt(ut);
              }, t.stripTrailingSlash = function(at) {
                return at.substr(-1) === "/" ? at.substr(0, at.length - 1) : at;
              }, t.noneOrAll = function(at, ut, nt) {
                if (at) {
                  var X = !1, ct = !0, lt, pt;
                  for (lt = 0; lt < nt.length; lt++)
                    pt = at[nt[lt]], pt != null ? X = !0 : ct = !1;
                  if (X && !ct)
                    for (lt = 0; lt < nt.length; lt++)
                      at[nt[lt]] = ut[nt[lt]];
                }
              }, t.mergeArray = function(at, ut, nt, X) {
                var ct = typeof X == "function";
                if (t.isArrayOrTypedArray(at))
                  for (var lt = Math.min(at.length, ut.length), pt = 0; pt < lt; pt++) {
                    var wt = at[pt];
                    ut[pt][nt] = ct ? X(wt) : wt;
                  }
              }, t.mergeArrayCastPositive = function(at, ut, nt) {
                return t.mergeArray(at, ut, nt, function(X) {
                  var ct = +X;
                  return isFinite(ct) && ct > 0 ? ct : 0;
                });
              }, t.fillArray = function(at, ut, nt, X) {
                if (X = X || t.identity, t.isArrayOrTypedArray(at))
                  for (var ct = 0; ct < ut.length; ct++)
                    ut[ct][nt] = X(at[ct]);
              }, t.castOption = function(at, ut, nt, X) {
                X = X || t.identity;
                var ct = t.nestedProperty(at, nt).get();
                return t.isArrayOrTypedArray(ct) ? Array.isArray(ut) && t.isArrayOrTypedArray(ct[ut[0]]) ? X(ct[ut[0]][ut[1]]) : X(ct[ut]) : ct;
              }, t.extractOption = function(at, ut, nt, X) {
                if (nt in at) return at[nt];
                var ct = t.nestedProperty(ut, X).get();
                if (!Array.isArray(ct)) return ct;
              };
              function L(at) {
                var ut = {};
                for (var nt in at)
                  for (var X = at[nt], ct = 0; ct < X.length; ct++)
                    ut[X[ct]] = +nt;
                return ut;
              }
              t.tagSelected = function(at, ut, nt) {
                var X = ut.selectedpoints, ct = ut._indexToPoints, lt;
                ct && (lt = L(ct));
                function pt(Jt) {
                  return Jt !== void 0 && Jt < at.length;
                }
                for (var wt = 0; wt < X.length; wt++) {
                  var Et = X[wt];
                  if (t.isIndex(Et) || t.isArrayOrTypedArray(Et) && t.isIndex(Et[0]) && t.isIndex(Et[1])) {
                    var Ct = lt ? lt[Et] : Et, Gt = nt ? nt[Ct] : Ct;
                    pt(Gt) && (at[Gt].selected = 1);
                  }
                }
              }, t.selIndices2selPoints = function(at) {
                var ut = at.selectedpoints, nt = at._indexToPoints;
                if (nt) {
                  for (var X = L(nt), ct = [], lt = 0; lt < ut.length; lt++) {
                    var pt = ut[lt];
                    if (t.isIndex(pt)) {
                      var wt = X[pt];
                      t.isIndex(wt) && ct.push(wt);
                    }
                  }
                  return ct;
                } else
                  return ut;
              }, t.getTargetArray = function(at, ut) {
                var nt = ut.target;
                if (typeof nt == "string" && nt) {
                  var X = t.nestedProperty(at, nt).get();
                  return t.isArrayOrTypedArray(X) ? X : !1;
                } else if (t.isArrayOrTypedArray(nt))
                  return nt;
                return !1;
              };
              function d(at, ut, nt) {
                var X = {};
                typeof ut != "object" && (ut = {});
                var ct = nt === "pieLike" ? -1 : 3, lt = Object.keys(at), pt, wt, Et;
                for (pt = 0; pt < lt.length; pt++)
                  wt = lt[pt], Et = at[wt], !(wt.charAt(0) === "_" || typeof Et == "function") && (wt === "module" ? X[wt] = Et : Array.isArray(Et) ? wt === "colorscale" || ct === -1 ? X[wt] = Et.slice() : X[wt] = Et.slice(0, ct) : t.isTypedArray(Et) ? ct === -1 ? X[wt] = Et.subarray() : X[wt] = Et.subarray(0, ct) : Et && typeof Et == "object" ? X[wt] = d(at[wt], ut[wt], nt) : X[wt] = Et);
                for (lt = Object.keys(ut), pt = 0; pt < lt.length; pt++)
                  wt = lt[pt], Et = ut[wt], (typeof Et != "object" || !(wt in X) || typeof X[wt] != "object") && (X[wt] = Et);
                return X;
              }
              t.minExtend = d, t.titleCase = function(at) {
                return at.charAt(0).toUpperCase() + at.substr(1);
              }, t.containsAny = function(at, ut) {
                for (var nt = 0; nt < ut.length; nt++)
                  if (at.indexOf(ut[nt]) !== -1) return !0;
                return !1;
              }, t.isIE = function() {
                return typeof window.navigator.msSaveBlob < "u";
              };
              var h = /Version\/[\d\.]+.*Safari/;
              t.isSafari = function() {
                return h.test(window.navigator.userAgent);
              };
              var E = /iPad|iPhone|iPod/;
              t.isIOS = function() {
                return E.test(window.navigator.userAgent);
              };
              var w = /Firefox\/(\d+)\.\d+/;
              t.getFirefoxVersion = function() {
                var at = w.exec(window.navigator.userAgent);
                if (at && at.length === 2) {
                  var ut = parseInt(at[1]);
                  if (!isNaN(ut))
                    return ut;
                }
                return null;
              }, t.isD3Selection = function(at) {
                return at instanceof b.selection;
              }, t.ensureSingle = function(at, ut, nt, X) {
                var ct = at.select(ut + (nt ? "." + nt : ""));
                if (ct.size()) return ct;
                var lt = at.append(ut);
                return nt && lt.classed(nt, !0), X && lt.call(X), lt;
              }, t.ensureSingleById = function(at, ut, nt, X) {
                var ct = at.select(ut + "#" + nt);
                if (ct.size()) return ct;
                var lt = at.append(ut).attr("id", nt);
                return X && lt.call(X), lt;
              }, t.objectFromPath = function(at, ut) {
                for (var nt = at.split("."), X, ct = X = {}, lt = 0; lt < nt.length; lt++) {
                  var pt = nt[lt], wt = null, Et = nt[lt].match(/(.*)\[([0-9]+)\]/);
                  Et ? (pt = Et[1], wt = Et[2], X = X[pt] = [], lt === nt.length - 1 ? X[wt] = ut : X[wt] = {}, X = X[wt]) : (lt === nt.length - 1 ? X[pt] = ut : X[pt] = {}, X = X[pt]);
                }
                return ct;
              };
              var z = /^([^\[\.]+)\.(.+)?/, O = /^([^\.]+)\[([0-9]+)\](\.)?(.+)?/;
              function B(at) {
                return at.slice(0, 2) === "__";
              }
              t.expandObjectPaths = function(at) {
                var ut, nt, X, ct, lt, pt, wt;
                if (typeof at == "object" && !Array.isArray(at)) {
                  for (nt in at)
                    if (at.hasOwnProperty(nt))
                      if (ut = nt.match(z)) {
                        if (ct = at[nt], X = ut[1], B(X)) continue;
                        delete at[nt], at[X] = t.extendDeepNoArrays(at[X] || {}, t.objectFromPath(nt, t.expandObjectPaths(ct))[X]);
                      } else if (ut = nt.match(O)) {
                        if (ct = at[nt], X = ut[1], B(X)) continue;
                        if (lt = parseInt(ut[2]), delete at[nt], at[X] = at[X] || [], ut[3] === ".")
                          wt = ut[4], pt = at[X][lt] = at[X][lt] || {}, t.extendDeepNoArrays(pt, t.objectFromPath(wt, t.expandObjectPaths(ct)));
                        else {
                          if (B(X)) continue;
                          at[X][lt] = t.expandObjectPaths(ct);
                        }
                      } else {
                        if (B(nt)) continue;
                        at[nt] = t.expandObjectPaths(at[nt]);
                      }
                }
                return at;
              }, t.numSeparate = function(at, ut, nt) {
                if (nt || (nt = !1), typeof ut != "string" || ut.length === 0)
                  throw new Error("Separator string required for formatting!");
                typeof at == "number" && (at = String(at));
                var X = /(\d+)(\d{3})/, ct = ut.charAt(0), lt = ut.charAt(1), pt = at.split("."), wt = pt[0], Et = pt.length > 1 ? ct + pt[1] : "";
                if (lt && (pt.length > 1 || wt.length > 4 || nt))
                  for (; X.test(wt); )
                    wt = wt.replace(X, "$1" + lt + "$2");
                return wt + Et;
              }, t.TEMPLATE_STRING_REGEX = /%{([^\s%{}:]*)([:|\|][^}]*)?}/g;
              var V = /^\w*$/;
              t.templateString = function(at, ut) {
                var nt = {};
                return at.replace(t.TEMPLATE_STRING_REGEX, function(X, ct) {
                  var lt;
                  return V.test(ct) ? lt = ut[ct] : (nt[ct] = nt[ct] || t.nestedProperty(ut, ct).get, lt = nt[ct]()), t.isValidTextValue(lt) ? lt : "";
                });
              };
              var U = {
                max: 10,
                count: 0,
                name: "hovertemplate"
              };
              t.hovertemplateString = function() {
                return st.apply(U, arguments);
              };
              var H = {
                max: 10,
                count: 0,
                name: "texttemplate"
              };
              t.texttemplateString = function() {
                return st.apply(H, arguments);
              };
              var F = /^(\S+)([\*\/])(-?\d+(\.\d+)?)$/;
              function G(at) {
                var ut = at.match(F);
                return ut ? {
                  key: ut[1],
                  op: ut[2],
                  number: Number(ut[3])
                } : {
                  key: at,
                  op: null,
                  number: null
                };
              }
              var q = {
                max: 10,
                count: 0,
                name: "texttemplate",
                parseMultDiv: !0
              };
              t.texttemplateStringForShapes = function() {
                return st.apply(q, arguments);
              };
              var rt = /^[:|\|]/;
              function st(at, ut, nt) {
                var X = this, ct = arguments;
                ut || (ut = {});
                var lt = {};
                return at.replace(t.TEMPLATE_STRING_REGEX, function(pt, wt, Et) {
                  var Ct = wt === "xother" || wt === "yother", Gt = wt === "_xother" || wt === "_yother", Jt = wt === "_xother_" || wt === "_yother_", Qt = wt === "xother_" || wt === "yother_", Vt = Ct || Gt || Qt || Jt, zt = wt;
                  (Gt || Jt) && (zt = zt.substring(1)), (Qt || Jt) && (zt = zt.substring(0, zt.length - 1));
                  var Rt = null, Wt = null;
                  if (X.parseMultDiv) {
                    var kt = G(zt);
                    zt = kt.key, Rt = kt.op, Wt = kt.number;
                  }
                  var re;
                  if (Vt) {
                    if (re = ut[zt], re === void 0) return "";
                  } else {
                    var ge, _e;
                    for (_e = 3; _e < ct.length; _e++)
                      if (ge = ct[_e], !!ge) {
                        if (ge.hasOwnProperty(zt)) {
                          re = ge[zt];
                          break;
                        }
                        if (V.test(zt) || (re = t.nestedProperty(ge, zt).get(), re = lt[zt] || t.nestedProperty(ge, zt).get(), re && (lt[zt] = re)), re !== void 0) break;
                      }
                  }
                  if (re !== void 0 && (Rt === "*" && (re *= Wt), Rt === "/" && (re /= Wt)), re === void 0 && X)
                    return X.count < X.max && (t.warn("Variable '" + zt + "' in " + X.name + " could not be found!"), re = pt), X.count === X.max && t.warn("Too many " + X.name + " warnings - additional warnings will be suppressed"), X.count++, pt;
                  if (Et) {
                    var ce;
                    if (Et[0] === ":" && (ce = nt ? nt.numberFormat : t.numberFormat, re !== "" && (re = ce(Et.replace(rt, ""))(re))), Et[0] === "|") {
                      ce = nt ? nt.timeFormat : P;
                      var ae = t.dateTime2ms(re);
                      re = t.formatDate(ae, Et.replace(rt, ""), !1, ce);
                    }
                  } else {
                    var Se = zt + "Label";
                    ut.hasOwnProperty(Se) && (re = ut[Se]);
                  }
                  return Vt && (re = "(" + re + ")", (Gt || Jt) && (re = " " + re), (Qt || Jt) && (re = re + " ")), re;
                });
              }
              var vt = 48, ht = 57;
              t.subplotSort = function(at, ut) {
                for (var nt = Math.min(at.length, ut.length) + 1, X = 0, ct = 0, lt = 0; lt < nt; lt++) {
                  var pt = at.charCodeAt(lt) || 0, wt = ut.charCodeAt(lt) || 0, Et = pt >= vt && pt <= ht, Ct = wt >= vt && wt <= ht;
                  if (Et && (X = 10 * X + pt - vt), Ct && (ct = 10 * ct + wt - vt), !Et || !Ct) {
                    if (X !== ct) return X - ct;
                    if (pt !== wt) return pt - wt;
                  }
                }
                return ct - X;
              };
              var et = 2e9;
              t.seedPseudoRandom = function() {
                et = 2e9;
              }, t.pseudoRandom = function() {
                var at = et;
                return et = (69069 * et + 1) % 4294967296, Math.abs(et - at) < 429496729 ? t.pseudoRandom() : et / 4294967296;
              }, t.fillText = function(at, ut, nt) {
                var X = Array.isArray(nt) ? function(pt) {
                  nt.push(pt);
                } : function(pt) {
                  nt.text = pt;
                }, ct = t.extractOption(at, ut, "htx", "hovertext");
                if (t.isValidTextValue(ct)) return X(ct);
                var lt = t.extractOption(at, ut, "tx", "text");
                if (t.isValidTextValue(lt)) return X(lt);
              }, t.isValidTextValue = function(at) {
                return at || at === 0;
              }, t.formatPercent = function(at, ut) {
                ut = ut || 0;
                for (var nt = (Math.round(100 * at * Math.pow(10, ut)) * Math.pow(0.1, ut)).toFixed(ut) + "%", X = 0; X < ut; X++)
                  nt.indexOf(".") !== -1 && (nt = nt.replace("0%", "%"), nt = nt.replace(".%", "%"));
                return nt;
              }, t.isHidden = function(at) {
                var ut = window.getComputedStyle(at).display;
                return !ut || ut === "none";
              }, t.strTranslate = function(at, ut) {
                return at || ut ? "translate(" + at + "," + ut + ")" : "";
              }, t.strRotate = function(at) {
                return at ? "rotate(" + at + ")" : "";
              }, t.strScale = function(at) {
                return at !== 1 ? "scale(" + at + ")" : "";
              }, t.getTextTransform = function(at) {
                var ut = at.noCenter, nt = at.textX, X = at.textY, ct = at.targetX, lt = at.targetY, pt = at.anchorX || 0, wt = at.anchorY || 0, Et = at.rotate, Ct = at.scale;
                return Ct ? Ct > 1 && (Ct = 1) : Ct = 0, t.strTranslate(ct - Ct * (nt + pt), lt - Ct * (X + wt)) + t.strScale(Ct) + (Et ? "rotate(" + Et + (ut ? "" : " " + nt + " " + X) + ")" : "");
              }, t.setTransormAndDisplay = function(at, ut) {
                at.attr("transform", t.getTextTransform(ut)), at.style("display", ut.scale ? null : "none");
              }, t.ensureUniformFontSize = function(at, ut) {
                var nt = t.extendFlat({}, ut);
                return nt.size = Math.max(ut.size, at._fullLayout.uniformtext.minsize || 0), nt;
              }, t.join2 = function(at, ut, nt) {
                var X = at.length;
                return X > 1 ? at.slice(0, -1).join(ut) + nt + at[X - 1] : at.join(ut);
              }, t.bigFont = function(at) {
                return Math.round(1.2 * at);
              };
              var Q = t.getFirefoxVersion(), j = Q !== null && Q < 86;
              t.getPositionFromD3Event = function() {
                return j ? [b.event.layerX, b.event.layerY] : [b.event.offsetX, b.event.offsetY];
              };
            }
          ),
          /***/
          56174: (
            /***/
            function(Y) {
              Y.exports = function(e) {
                return window && window.process && window.process.versions ? Object.prototype.toString.call(e) === "[object Object]" : Object.prototype.toString.call(e) === "[object Object]" && Object.getPrototypeOf(e).hasOwnProperty("hasOwnProperty");
              };
            }
          ),
          /***/
          34967: (
            /***/
            function(Y, K, e) {
              var b = e(35632), P = /^\w*$/, n = 0, s = 1, T = 2, A = 3, p = 4;
              Y.exports = function(t, r, i, a) {
                i = i || "name", a = a || "value";
                var l, o, y, g = {};
                r && r.length ? (y = b(t, r), o = y.get()) : o = t, r = r || "";
                var x = {};
                if (o)
                  for (l = 0; l < o.length; l++)
                    x[o[l][i]] = l;
                var c = P.test(a), v = {
                  set: function(f, _) {
                    var S = _ === null ? p : n;
                    if (!o) {
                      if (!y || S === p) return;
                      o = [], y.set(o);
                    }
                    var M = x[f];
                    if (M === void 0) {
                      if (S === p) return;
                      S = S | A, M = o.length, x[f] = M;
                    } else _ !== (c ? o[M][a] : b(o[M], a).get()) && (S = S | T);
                    var C = o[M] = o[M] || {};
                    return C[i] = f, c ? C[a] = _ : b(C, a).set(_), _ !== null && (S = S & ~p), g[M] = g[M] | S, v;
                  },
                  get: function(f) {
                    if (o) {
                      var _ = x[f];
                      if (_ !== void 0)
                        return c ? o[_][a] : b(o[_], a).get();
                    }
                  },
                  rename: function(f, _) {
                    var S = x[f];
                    return S === void 0 || (g[S] = g[S] | s, x[_] = S, delete x[f], o[S][i] = _), v;
                  },
                  remove: function(f) {
                    var _ = x[f];
                    if (_ === void 0) return v;
                    var S = o[_];
                    if (Object.keys(S).length > 2)
                      return g[_] = g[_] | T, v.set(f, null);
                    if (c) {
                      for (l = _; l < o.length; l++)
                        g[l] = g[l] | A;
                      for (l = _; l < o.length; l++)
                        x[o[l][i]]--;
                      o.splice(_, 1), delete x[f];
                    } else
                      b(S, a).set(null), g[_] = g[_] | T | p;
                    return v;
                  },
                  constructUpdate: function() {
                    for (var f, _, S = {}, M = Object.keys(g), C = 0; C < M.length; C++)
                      _ = M[C], f = r + "[" + _ + "]", o[_] ? (g[_] & s && (S[f + "." + i] = o[_][i]), g[_] & T && (c ? S[f + "." + a] = g[_] & p ? null : o[_][a] : S[f + "." + a] = g[_] & p ? null : b(o[_], a).get())) : S[f] = null;
                    return S;
                  }
                };
                return v;
              };
            }
          ),
          /***/
          38514: (
            /***/
            function(Y, K, e) {
              var b = e(33626);
              Y.exports = function(n, s) {
                for (var T = n._context.locale, A = 0; A < 2; A++) {
                  for (var p = n._context.locales, u = 0; u < 2; u++) {
                    var t = (p[T] || {}).dictionary;
                    if (t) {
                      var r = t[s];
                      if (r) return r;
                    }
                    p = b.localeRegistry;
                  }
                  var i = T.split("-")[0];
                  if (i === T) break;
                  T = i;
                }
                return s;
              };
            }
          ),
          /***/
          48636: (
            /***/
            function(Y, K, e) {
              var b = e(24452).dfltConfig, P = e(87355), n = Y.exports = {};
              n.log = function() {
                var s;
                if (b.logging > 1) {
                  var T = ["LOG:"];
                  for (s = 0; s < arguments.length; s++)
                    T.push(arguments[s]);
                  console.trace.apply(console, T);
                }
                if (b.notifyOnLogging > 1) {
                  var A = [];
                  for (s = 0; s < arguments.length; s++)
                    A.push(arguments[s]);
                  P(A.join("<br>"), "long");
                }
              }, n.warn = function() {
                var s;
                if (b.logging > 0) {
                  var T = ["WARN:"];
                  for (s = 0; s < arguments.length; s++)
                    T.push(arguments[s]);
                  console.trace.apply(console, T);
                }
                if (b.notifyOnLogging > 0) {
                  var A = [];
                  for (s = 0; s < arguments.length; s++)
                    A.push(arguments[s]);
                  P(A.join("<br>"), "stick");
                }
              }, n.error = function() {
                var s;
                if (b.logging > 0) {
                  var T = ["ERROR:"];
                  for (s = 0; s < arguments.length; s++)
                    T.push(arguments[s]);
                  console.error.apply(console, T);
                }
                if (b.notifyOnLogging > 0) {
                  var A = [];
                  for (s = 0; s < arguments.length; s++)
                    A.push(arguments[s]);
                  P(A.join("<br>"), "stick");
                }
              };
            }
          ),
          /***/
          75944: (
            /***/
            function(Y, K, e) {
              var b = e(45568);
              Y.exports = function(n, s, T) {
                var A = n.selectAll("g." + T.replace(/\s/g, ".")).data(s, function(u) {
                  return u[0].trace.uid;
                });
                A.exit().remove(), A.enter().append("g").attr("class", T), A.order();
                var p = n.classed("rangeplot") ? "nodeRangePlot3" : "node3";
                return A.each(function(u) {
                  u[0][p] = b.select(this);
                }), A;
              };
            }
          ),
          /***/
          15236: (
            /***/
            function(Y, K, e) {
              var b = e(11191);
              K.init2dArray = function(P, n) {
                for (var s = new Array(P), T = 0; T < P; T++) s[T] = new Array(n);
                return s;
              }, K.transposeRagged = function(P) {
                var n = 0, s = P.length, T, A;
                for (T = 0; T < s; T++) n = Math.max(n, P[T].length);
                var p = new Array(n);
                for (T = 0; T < n; T++)
                  for (p[T] = new Array(s), A = 0; A < s; A++) p[T][A] = P[A][T];
                return p;
              }, K.dot = function(P, n) {
                if (!(P.length && n.length) || P.length !== n.length) return null;
                var s = P.length, T, A;
                if (P[0].length)
                  for (T = new Array(s), A = 0; A < s; A++) T[A] = K.dot(P[A], n);
                else if (n[0].length) {
                  var p = K.transposeRagged(n);
                  for (T = new Array(p.length), A = 0; A < p.length; A++) T[A] = K.dot(P, p[A]);
                } else
                  for (T = 0, A = 0; A < s; A++) T += P[A] * n[A];
                return T;
              }, K.translationMatrix = function(P, n) {
                return [[1, 0, P], [0, 1, n], [0, 0, 1]];
              }, K.rotationMatrix = function(P) {
                var n = P * Math.PI / 180;
                return [[Math.cos(n), -Math.sin(n), 0], [Math.sin(n), Math.cos(n), 0], [0, 0, 1]];
              }, K.rotationXYMatrix = function(P, n, s) {
                return K.dot(K.dot(K.translationMatrix(n, s), K.rotationMatrix(P)), K.translationMatrix(-n, -s));
              }, K.apply3DTransform = function(P) {
                return function() {
                  var n = arguments, s = arguments.length === 1 ? n[0] : [n[0], n[1], n[2] || 0];
                  return K.dot(P, [s[0], s[1], s[2], 1]).slice(0, 3);
                };
              }, K.apply2DTransform = function(P) {
                return function() {
                  var n = arguments;
                  n.length === 3 && (n = n[0]);
                  var s = arguments.length === 1 ? n[0] : [n[0], n[1]];
                  return K.dot(P, [s[0], s[1], 1]).slice(0, 2);
                };
              }, K.apply2DTransform2 = function(P) {
                var n = K.apply2DTransform(P);
                return function(s) {
                  return n(s.slice(0, 2)).concat(n(s.slice(2, 4)));
                };
              }, K.convertCssMatrix = function(P) {
                if (P) {
                  var n = P.length;
                  if (n === 16) return P;
                  if (n === 6)
                    return [P[0], P[1], 0, 0, P[2], P[3], 0, 0, 0, 0, 1, 0, P[4], P[5], 0, 1];
                }
                return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
              }, K.inverseTransformMatrix = function(P) {
                var n = [];
                return b.invert(n, P), [[n[0], n[1], n[2], n[3]], [n[4], n[5], n[6], n[7]], [n[8], n[9], n[10], n[11]], [n[12], n[13], n[14], n[15]]];
              };
            }
          ),
          /***/
          98953: (
            /***/
            function(Y) {
              function K(b, P) {
                var n = b % P;
                return n < 0 ? n + P : n;
              }
              function e(b, P) {
                return Math.abs(b) > P / 2 ? b - Math.round(b / P) * P : b;
              }
              Y.exports = {
                mod: K,
                modHalf: e
              };
            }
          ),
          /***/
          35632: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(87800).isArrayOrTypedArray;
              Y.exports = function(a, l) {
                if (b(l)) l = String(l);
                else if (typeof l != "string" || l.substr(l.length - 4) === "[-1]")
                  throw "bad property string";
                var o = l.split("."), y, g, x, c;
                for (c = 0; c < o.length; c++)
                  if (String(o[c]).slice(0, 2) === "__")
                    throw "bad property string";
                for (c = 0; c < o.length; ) {
                  if (y = String(o[c]).match(/^([^\[\]]*)((\[\-?[0-9]*\])+)$/), y) {
                    if (y[1]) o[c] = y[1];
                    else if (c === 0) o.splice(0, 1);
                    else throw "bad property string";
                    for (g = y[2].substr(1, y[2].length - 2).split("]["), x = 0; x < g.length; x++)
                      c++, o.splice(c, 0, Number(g[x]));
                  }
                  c++;
                }
                return typeof a != "object" ? r(a, l, o) : {
                  set: A(a, o, l),
                  get: n(a, o),
                  astr: l,
                  parts: o,
                  obj: a
                };
              };
              function n(i, a) {
                return function() {
                  var l = i, o, y, g, x, c;
                  for (x = 0; x < a.length - 1; x++) {
                    if (o = a[x], o === -1) {
                      for (y = !0, g = [], c = 0; c < l.length; c++)
                        g[c] = n(l[c], a.slice(x + 1))(), g[c] !== g[0] && (y = !1);
                      return y ? g[0] : g;
                    }
                    if (typeof o == "number" && !P(l) || (l = l[o], typeof l != "object" || l === null))
                      return;
                  }
                  if (!(typeof l != "object" || l === null) && (g = l[a[x]], g !== null))
                    return g;
                };
              }
              var s = /(^|\.)args\[/;
              function T(i, a) {
                return i === void 0 || i === null && !a.match(s);
              }
              function A(i, a, l) {
                return function(o) {
                  var y = i, g = "", x = T(o, l), c, v;
                  for (v = 0; v < a.length - 1; v++) {
                    if (c = a[v], typeof c == "number" && !P(y))
                      throw "array index but container is not an array";
                    if (c === -1) {
                      if (x = !u(y, a.slice(v + 1), o, l), x) break;
                      return;
                    }
                    if (!t(y, c, a[v + 1], x))
                      break;
                    if (y = y[c], typeof y != "object" || y === null)
                      throw "container is not an object";
                    g = p(g, c);
                  }
                  if (x) {
                    if (v === a.length - 1 && (delete y[a[v]], Array.isArray(y) && +a[v] === y.length - 1))
                      for (; y.length && y[y.length - 1] === void 0; )
                        y.pop();
                  } else y[a[v]] = o;
                };
              }
              function p(i, a) {
                var l = a;
                return b(a) ? l = "[" + a + "]" : i && (l = "." + a), i + l;
              }
              function u(i, a, l, o) {
                var y = P(l), g = !0, x = l, c = o.replace("-1", 0), v = y ? !1 : T(l, c), f = a[0], _;
                for (_ = 0; _ < i.length; _++)
                  c = o.replace("-1", _), y && (x = l[_ % l.length], v = T(x, c)), v && (g = !1), t(i, _, f, v) && A(i[_], a, o.replace("-1", _))(x);
                return g;
              }
              function t(i, a, l, o) {
                if (i[a] === void 0) {
                  if (o) return !1;
                  typeof l == "number" ? i[a] = [] : i[a] = {};
                }
                return !0;
              }
              function r(i, a, l) {
                return {
                  set: function() {
                    throw "bad container";
                  },
                  get: function() {
                  },
                  astr: a,
                  parts: l,
                  obj: i
                };
              }
            }
          ),
          /***/
          4969: (
            /***/
            function(Y) {
              Y.exports = function() {
              };
            }
          ),
          /***/
          87355: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(10721), n = [];
              Y.exports = function(s, T) {
                if (n.indexOf(s) !== -1) return;
                n.push(s);
                var A = 1e3;
                P(T) ? A = T : T === "long" && (A = 3e3);
                var p = b.select("body").selectAll(".plotly-notifier").data([0]);
                p.enter().append("div").classed("plotly-notifier", !0);
                var u = p.selectAll(".notifier-note").data(n);
                function t(r) {
                  r.duration(700).style("opacity", 0).each("end", function(i) {
                    var a = n.indexOf(i);
                    a !== -1 && n.splice(a, 1), b.select(this).remove();
                  });
                }
                u.enter().append("div").classed("notifier-note", !0).style("opacity", 0).each(function(r) {
                  var i = b.select(this);
                  i.append("button").classed("notifier-close", !0).html("&times;").on("click", function() {
                    i.transition().call(t);
                  });
                  for (var a = i.append("p"), l = r.split(/<br\s*\/?>/g), o = 0; o < l.length; o++)
                    o && a.append("br"), a.append("span").text(l[o]);
                  T === "stick" ? i.transition().duration(350).style("opacity", 1) : i.transition().duration(700).style("opacity", 1).transition().delay(A).call(t);
                });
              };
            }
          ),
          /***/
          93134: (
            /***/
            function(Y, K, e) {
              var b = e(27983), P = "data-savedcursor", n = "!!";
              Y.exports = function(T, A) {
                var p = T.attr(P);
                if (A) {
                  if (!p) {
                    for (var u = (T.attr("class") || "").split(" "), t = 0; t < u.length; t++) {
                      var r = u[t];
                      r.indexOf("cursor-") === 0 && T.attr(P, r.substr(7)).classed(r, !1);
                    }
                    T.attr(P) || T.attr(P, n);
                  }
                  b(T, A);
                } else p && (T.attr(P, null), p === n ? b(T) : b(T, p));
              };
            }
          ),
          /***/
          80899: (
            /***/
            function(Y, K, e) {
              var b = e(15236).dot, P = e(63821).BADNUM, n = Y.exports = {};
              n.tester = function(T) {
                var A = T.slice(), p = A[0][0], u = p, t = A[0][1], r = t, i;
                for ((A[A.length - 1][0] !== A[0][0] || A[A.length - 1][1] !== A[0][1]) && A.push(A[0]), i = 1; i < A.length; i++)
                  p = Math.min(p, A[i][0]), u = Math.max(u, A[i][0]), t = Math.min(t, A[i][1]), r = Math.max(r, A[i][1]);
                var a = !1, l;
                A.length === 5 && (A[0][0] === A[1][0] ? A[2][0] === A[3][0] && A[0][1] === A[3][1] && A[1][1] === A[2][1] && (a = !0, l = function(c) {
                  return c[0] === A[0][0];
                }) : A[0][1] === A[1][1] && A[2][1] === A[3][1] && A[0][0] === A[3][0] && A[1][0] === A[2][0] && (a = !0, l = function(c) {
                  return c[1] === A[0][1];
                }));
                function o(c, v) {
                  var f = c[0], _ = c[1];
                  return !(f === P || f < p || f > u || _ === P || _ < t || _ > r || v && l(c));
                }
                function y(c, v) {
                  var f = c[0], _ = c[1];
                  if (f === P || f < p || f > u || _ === P || _ < t || _ > r)
                    return !1;
                  var S = A.length, M = A[0][0], C = A[0][1], m = 0, L, d, h, E, w;
                  for (L = 1; L < S; L++)
                    if (d = M, h = C, M = A[L][0], C = A[L][1], E = Math.min(d, M), !(f < E || f > Math.max(d, M) || _ > Math.max(h, C)))
                      if (_ < Math.min(h, C))
                        f !== E && m++;
                      else {
                        if (M === d ? w = _ : w = h + (f - d) * (C - h) / (M - d), _ === w)
                          return !(L === 1 && v);
                        _ <= w && f !== E && m++;
                      }
                  return m % 2 === 1;
                }
                var g = !0, x = A[0];
                for (i = 1; i < A.length; i++)
                  if (x[0] !== A[i][0] || x[1] !== A[i][1]) {
                    g = !1;
                    break;
                  }
                return {
                  xmin: p,
                  xmax: u,
                  ymin: t,
                  ymax: r,
                  pts: A,
                  contains: a ? o : y,
                  isRect: a,
                  degenerate: g
                };
              }, n.isSegmentBent = function(T, A, p, u) {
                var t = T[A], r = [T[p][0] - t[0], T[p][1] - t[1]], i = b(r, r), a = Math.sqrt(i), l = [-r[1] / a, r[0] / a], o, y, g;
                for (o = A + 1; o < p; o++)
                  if (y = [T[o][0] - t[0], T[o][1] - t[1]], g = b(y, r), g < 0 || g > i || Math.abs(b(y, l)) > u) return !0;
                return !1;
              }, n.filter = function(T, A) {
                var p = [T[0]], u = 0, t = 0;
                function r(a) {
                  T.push(a);
                  var l = p.length, o = u;
                  p.splice(t + 1);
                  for (var y = o + 1; y < T.length; y++)
                    (y === T.length - 1 || n.isSegmentBent(T, o, y + 1, A)) && (p.push(T[y]), p.length < l - 2 && (u = y, t = p.length - 1), o = y);
                }
                if (T.length > 1) {
                  var i = T.pop();
                  r(i);
                }
                return {
                  addPt: r,
                  raw: T,
                  filtered: p
                };
              };
            }
          ),
          /***/
          22459: (
            /***/
            function(Y, K, e) {
              var b = e(97464), P = e(81330);
              Y.exports = function(s, T, A) {
                var p = s._fullLayout, u = !0;
                return p._glcanvas.each(function(t) {
                  if (t.regl) {
                    t.regl.preloadCachedCode(A);
                    return;
                  }
                  if (!(t.pick && !p._has("parcoords"))) {
                    try {
                      t.regl = P({
                        canvas: this,
                        attributes: {
                          antialias: !t.pick,
                          preserveDrawingBuffer: !0
                        },
                        pixelRatio: s._context.plotGlPixelRatio || e.g.devicePixelRatio,
                        extensions: T || [],
                        cachedCode: A || {}
                      });
                    } catch {
                      u = !1;
                    }
                    t.regl || (u = !1), u && this.addEventListener("webglcontextlost", function(r) {
                      s && s.emit && s.emit("plotly_webglcontextlost", {
                        event: r,
                        layer: t.key
                      });
                    }, !1);
                  }
                }), u || b({
                  container: p._glcontainer.node()
                }), u;
              };
            }
          ),
          /***/
          32521: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(13087);
              Y.exports = function(T) {
                var A;
                if (T && T.hasOwnProperty("userAgent") ? A = T.userAgent : A = n(), typeof A != "string") return !0;
                var p = P({
                  ua: {
                    headers: {
                      "user-agent": A
                    }
                  },
                  tablet: !0,
                  featureDetect: !1
                });
                if (!p)
                  for (var u = A.split(" "), t = 1; t < u.length; t++) {
                    var r = u[t];
                    if (r.indexOf("Safari") !== -1)
                      for (var i = t - 1; i > -1; i--) {
                        var a = u[i];
                        if (a.substr(0, 8) === "Version/") {
                          var l = a.substr(8).split(".")[0];
                          if (b(l) && (l = +l), l >= 13) return !0;
                        }
                      }
                  }
                return p;
              };
              function n() {
                var s;
                return typeof navigator < "u" && (s = navigator.userAgent), s && s.headers && typeof s.headers["user-agent"] == "string" && (s = s.headers["user-agent"]), s;
              }
            }
          ),
          /***/
          36539: (
            /***/
            function(Y) {
              Y.exports = function(e, b) {
                if (b instanceof RegExp) {
                  for (var P = b.toString(), n = 0; n < e.length; n++)
                    if (e[n] instanceof RegExp && e[n].toString() === P)
                      return e;
                  e.push(b);
                } else (b || b === 0) && e.indexOf(b) === -1 && e.push(b);
                return e;
              };
            }
          ),
          /***/
          40486: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(24452).dfltConfig;
              function n(T, A) {
                for (var p = [], u, t = 0; t < A.length; t++)
                  u = A[t], u === T ? p[t] = u : typeof u == "object" ? p[t] = Array.isArray(u) ? b.extendDeep([], u) : b.extendDeepAll({}, u) : p[t] = u;
                return p;
              }
              var s = {};
              s.add = function(T, A, p, u, t) {
                var r, i;
                if (T.undoQueue = T.undoQueue || {
                  index: 0,
                  queue: [],
                  sequence: !1
                }, i = T.undoQueue.index, T.autoplay) {
                  T.undoQueue.inSequence || (T.autoplay = !1);
                  return;
                }
                !T.undoQueue.sequence || T.undoQueue.beginSequence ? (r = {
                  undo: {
                    calls: [],
                    args: []
                  },
                  redo: {
                    calls: [],
                    args: []
                  }
                }, T.undoQueue.queue.splice(i, T.undoQueue.queue.length - i, r), T.undoQueue.index += 1) : r = T.undoQueue.queue[i - 1], T.undoQueue.beginSequence = !1, r && (r.undo.calls.unshift(A), r.undo.args.unshift(p), r.redo.calls.push(u), r.redo.args.push(t)), T.undoQueue.queue.length > P.queueLength && (T.undoQueue.queue.shift(), T.undoQueue.index--);
              }, s.startSequence = function(T) {
                T.undoQueue = T.undoQueue || {
                  index: 0,
                  queue: [],
                  sequence: !1
                }, T.undoQueue.sequence = !0, T.undoQueue.beginSequence = !0;
              }, s.stopSequence = function(T) {
                T.undoQueue = T.undoQueue || {
                  index: 0,
                  queue: [],
                  sequence: !1
                }, T.undoQueue.sequence = !1, T.undoQueue.beginSequence = !1;
              }, s.undo = function(A) {
                var p, u;
                if (!(A.undoQueue === void 0 || isNaN(A.undoQueue.index) || A.undoQueue.index <= 0)) {
                  for (A.undoQueue.index--, p = A.undoQueue.queue[A.undoQueue.index], A.undoQueue.inSequence = !0, u = 0; u < p.undo.calls.length; u++)
                    s.plotDo(A, p.undo.calls[u], p.undo.args[u]);
                  A.undoQueue.inSequence = !1, A.autoplay = !1;
                }
              }, s.redo = function(A) {
                var p, u;
                if (!(A.undoQueue === void 0 || isNaN(A.undoQueue.index) || A.undoQueue.index >= A.undoQueue.queue.length)) {
                  for (p = A.undoQueue.queue[A.undoQueue.index], A.undoQueue.inSequence = !0, u = 0; u < p.redo.calls.length; u++)
                    s.plotDo(A, p.redo.calls[u], p.redo.args[u]);
                  A.undoQueue.inSequence = !1, A.autoplay = !1, A.undoQueue.index++;
                }
              }, s.plotDo = function(T, A, p) {
                T.autoplay = !0, p = n(T, p), A.apply(null, p);
              }, Y.exports = s;
            }
          ),
          /***/
          90694: (
            /***/
            function(Y, K) {
              K.counter = function(e, b, P, n) {
                var s = (b || "") + (P ? "" : "$"), T = n === !1 ? "" : "^";
                return e === "xy" ? new RegExp(T + "x([2-9]|[1-9][0-9]+)?y([2-9]|[1-9][0-9]+)?" + s) : new RegExp(T + e + "([2-9]|[1-9][0-9]+)?" + s);
              };
            }
          ),
          /***/
          82047: (
            /***/
            function(Y) {
              var K = /^(.*)(\.[^\.\[\]]+|\[\d\])$/, e = /^[^\.\[\]]+$/;
              Y.exports = function(b, P) {
                for (; P; ) {
                  var n = b.match(K);
                  if (n) b = n[1];
                  else if (b.match(e)) b = "";
                  else throw new Error("bad relativeAttr call:" + [b, P]);
                  if (P.charAt(0) === "^") P = P.slice(1);
                  else break;
                }
                return b && P.charAt(0) !== "[" ? b + "." + P : b + P;
              };
            }
          ),
          /***/
          80428: (
            /***/
            function(Y, K, e) {
              var b = e(87800).isArrayOrTypedArray, P = e(56174);
              Y.exports = function n(s, T) {
                for (var A in T) {
                  var p = T[A], u = s[A];
                  if (u !== p)
                    if (A.charAt(0) === "_" || typeof p == "function") {
                      if (A in s) continue;
                      s[A] = p;
                    } else if (b(p) && b(u) && P(p[0])) {
                      if (A === "customdata" || A === "ids") continue;
                      for (var t = Math.min(p.length, u.length), r = 0; r < t; r++)
                        u[r] !== p[r] && P(p[r]) && P(u[r]) && n(u[r], p[r]);
                    } else P(p) && P(u) && (n(u, p), Object.keys(u).length || delete s[A]);
                }
              };
            }
          ),
          /***/
          98813: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(48636), n = e(29527), s = e(63821).BADNUM, T = 1e-9;
              K.findBin = function(r, i, a) {
                if (b(i.start))
                  return a ? Math.ceil((r - i.start) / i.size - T) - 1 : Math.floor((r - i.start) / i.size + T);
                var l = 0, o = i.length, y = 0, g = o > 1 ? (i[o - 1] - i[0]) / (o - 1) : 1, x, c;
                for (g >= 0 ? c = a ? A : p : c = a ? t : u, r += g * T * (a ? -1 : 1) * (g >= 0 ? 1 : -1); l < o && y++ < 100; )
                  x = Math.floor((l + o) / 2), c(i[x], r) ? l = x + 1 : o = x;
                return y > 90 && P.log("Long binary search..."), l - 1;
              };
              function A(r, i) {
                return r < i;
              }
              function p(r, i) {
                return r <= i;
              }
              function u(r, i) {
                return r > i;
              }
              function t(r, i) {
                return r >= i;
              }
              K.sorterAsc = function(r, i) {
                return r - i;
              }, K.sorterDes = function(r, i) {
                return i - r;
              }, K.distinctVals = function(r) {
                var i = r.slice();
                i.sort(K.sorterAsc);
                var a;
                for (a = i.length - 1; a > -1 && i[a] === s; a--)
                  ;
                for (var l = i[a] - i[0] || 1, o = l / (a || 1) / 1e4, y = [], g, x = 0; x <= a; x++) {
                  var c = i[x], v = c - g;
                  g === void 0 ? (y.push(c), g = c) : v > o && (l = Math.min(l, v), y.push(c), g = c);
                }
                return {
                  vals: y,
                  minDiff: l
                };
              }, K.roundUp = function(r, i, a) {
                for (var l = 0, o = i.length - 1, y, g = 0, x = a ? 0 : 1, c = a ? 1 : 0, v = a ? Math.ceil : Math.floor; l < o && g++ < 100; )
                  y = v((l + o) / 2), i[y] <= r ? l = y + x : o = y - c;
                return i[l];
              }, K.sort = function(r, i) {
                for (var a = 0, l = 0, o = 1; o < r.length; o++) {
                  var y = i(r[o], r[o - 1]);
                  if (y < 0 ? a = 1 : y > 0 && (l = 1), a && l) return r.sort(i);
                }
                return l ? r : r.reverse();
              }, K.findIndexOfMin = function(r, i) {
                i = i || n;
                for (var a = 1 / 0, l, o = 0; o < r.length; o++) {
                  var y = i(r[o]);
                  y < a && (a = y, l = o);
                }
                return l;
              };
            }
          ),
          /***/
          27983: (
            /***/
            function(Y) {
              Y.exports = function(e, b) {
                (e.attr("class") || "").split(" ").forEach(function(P) {
                  P.indexOf("cursor-") === 0 && e.classed(P, !1);
                }), b && e.classed("cursor-" + b, !0);
              };
            }
          ),
          /***/
          97464: (
            /***/
            function(Y, K, e) {
              var b = e(78766), P = function() {
              };
              Y.exports = function(s) {
                for (var T in s)
                  typeof s[T] == "function" && (s[T] = P);
                s.destroy = function() {
                  s.container.parentNode.removeChild(s.container);
                };
                var A = document.createElement("div");
                A.className = "no-webgl", A.style.cursor = "pointer", A.style.fontSize = "24px", A.style.color = b.defaults[0], A.style.position = "absolute", A.style.left = A.style.top = "0px", A.style.width = A.style.height = "100%", A.style["background-color"] = b.lightLine, A.style["z-index"] = 30;
                var p = document.createElement("p");
                return p.textContent = "WebGL is not supported by your browser - visit https://get.webgl.org for more info", p.style.position = "relative", p.style.top = "50%", p.style.left = "50%", p.style.height = "30%", p.style.width = "50%", p.style.margin = "-15% 0 0 -25%", A.appendChild(p), s.container.appendChild(A), s.container.style.background = "#FFFFFF", s.container.onclick = function() {
                  window.open("https://get.webgl.org");
                }, !1;
              };
            }
          ),
          /***/
          62994: (
            /***/
            function(Y) {
              Y.exports = function(e) {
                return Object.keys(e).sort();
              };
            }
          ),
          /***/
          89258: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(87800).isArrayOrTypedArray;
              K.aggNums = function(n, s, T, A) {
                var p, u;
                if ((!A || A > T.length) && (A = T.length), b(s) || (s = !1), P(T[0])) {
                  for (u = new Array(A), p = 0; p < A; p++) u[p] = K.aggNums(n, s, T[p]);
                  T = u;
                }
                for (p = 0; p < A; p++)
                  b(s) ? b(T[p]) && (s = n(+s, +T[p])) : s = T[p];
                return s;
              }, K.len = function(n) {
                return K.aggNums(function(s) {
                  return s + 1;
                }, 0, n);
              }, K.mean = function(n, s) {
                return s || (s = K.len(n)), K.aggNums(function(T, A) {
                  return T + A;
                }, 0, n) / s;
              }, K.geometricMean = function(n, s) {
                return s || (s = K.len(n)), Math.pow(K.aggNums(function(T, A) {
                  return T * A;
                }, 1, n), 1 / s);
              }, K.midRange = function(n) {
                if (!(n === void 0 || n.length === 0))
                  return (K.aggNums(Math.max, null, n) + K.aggNums(Math.min, null, n)) / 2;
              }, K.variance = function(n, s, T) {
                return s || (s = K.len(n)), b(T) || (T = K.mean(n, s)), K.aggNums(function(A, p) {
                  return A + Math.pow(p - T, 2);
                }, 0, n) / s;
              }, K.stdev = function(n, s, T) {
                return Math.sqrt(K.variance(n, s, T));
              }, K.median = function(n) {
                var s = n.slice().sort();
                return K.interp(s, 0.5);
              }, K.interp = function(n, s) {
                if (!b(s)) throw "n should be a finite number";
                if (s = s * n.length - 0.5, s < 0) return n[0];
                if (s > n.length - 1) return n[n.length - 1];
                var T = s % 1;
                return T * n[Math.ceil(s)] + (1 - T) * n[Math.floor(s)];
              };
            }
          ),
          /***/
          55010: (
            /***/
            function(Y, K, e) {
              var b = e(162);
              function P(n) {
                return n ? b(n) : [0, 0, 0, 1];
              }
              Y.exports = P;
            }
          ),
          /***/
          95544: (
            /***/
            function(Y, K, e) {
              var b = e(1837), P = e(62203), n = e(34809), s = null;
              function T() {
                if (s !== null)
                  return s;
                s = !1;
                var A = n.isIE() || n.isSafari() || n.isIOS();
                if (window.navigator.userAgent && !A) {
                  var p = Array.from(b.CSS_DECLARATIONS).reverse(), u = window.CSS && window.CSS.supports || window.supportsCSS;
                  if (typeof u == "function")
                    s = p.some(function(a) {
                      return u.apply(null, a);
                    });
                  else {
                    var t = P.tester.append("image").attr("style", b.STYLE), r = window.getComputedStyle(t.node()), i = r.imageRendering;
                    s = p.some(function(a) {
                      var l = a[1];
                      return i === l || i === l.toLowerCase();
                    }), t.remove();
                  }
                }
                return s;
              }
              Y.exports = T;
            }
          ),
          /***/
          30635: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(34809), n = P.strTranslate, s = e(62972), T = e(4530).LINE_SPACING, A = /([^$]*)([$]+[^$]*[$]+)([^$]*)/;
              K.convertToTspans = function(U, H, F) {
                var G = U.text(), q = !U.attr("data-notex") && H && H._context.typesetMath && typeof MathJax < "u" && G.match(A), rt = b.select(U.node().parentNode);
                if (rt.empty()) return;
                var st = U.attr("class") ? U.attr("class").split(" ")[0] : "text";
                st += "-math", rt.selectAll("svg." + st).remove(), rt.selectAll("g." + st + "-group").remove(), U.style("display", null).attr({
                  // some callers use data-unformatted *from the <text> element* in 'cancel'
                  // so we need it here even if we're going to turn it into math
                  // these two (plus style and text-anchor attributes) form the key we're
                  // going to use for Drawing.bBox
                  "data-unformatted": G,
                  "data-math": "N"
                });
                function vt() {
                  rt.empty() || (st = U.attr("class") + "-math", rt.select("svg." + st).remove()), U.text("").style("white-space", "pre");
                  var ht = z(U.node(), G);
                  ht && U.style("pointer-events", "all"), K.positionText(U), F && F.call(U);
                }
                return q ? (H && H._promises || []).push(new Promise(function(ht) {
                  U.style("display", "none");
                  var et = parseInt(U.node().style.fontSize, 10), Q = {
                    fontSize: et
                  };
                  i(q[2], Q, function(j, at, ut) {
                    rt.selectAll("svg." + st).remove(), rt.selectAll("g." + st + "-group").remove();
                    var nt = j && j.select("svg");
                    if (!nt || !nt.node()) {
                      vt(), ht();
                      return;
                    }
                    var X = rt.append("g").classed(st + "-group", !0).attr({
                      "pointer-events": "none",
                      "data-unformatted": G,
                      "data-math": "Y"
                    });
                    X.node().appendChild(nt.node()), at && at.node() && nt.node().insertBefore(at.node().cloneNode(!0), nt.node().firstChild);
                    var ct = ut.width, lt = ut.height;
                    nt.attr({
                      class: st,
                      height: lt,
                      preserveAspectRatio: "xMinYMin meet"
                    }).style({
                      overflow: "visible",
                      "pointer-events": "none"
                    });
                    var pt = U.node().style.fill || "black", wt = nt.select("g");
                    wt.attr({
                      fill: pt,
                      stroke: pt
                    });
                    var Et = wt.node().getBoundingClientRect(), Ct = Et.width, Gt = Et.height;
                    (Ct > ct || Gt > lt) && (nt.style("overflow", "hidden"), Et = nt.node().getBoundingClientRect(), Ct = Et.width, Gt = Et.height);
                    var Jt = +U.attr("x"), Qt = +U.attr("y"), Vt = et || U.node().getBoundingClientRect().height, zt = -Vt / 4;
                    if (st[0] === "y")
                      X.attr({
                        transform: "rotate(" + [-90, Jt, Qt] + ")" + n(-Ct / 2, zt - Gt / 2)
                      });
                    else if (st[0] === "l")
                      Qt = zt - Gt / 2;
                    else if (st[0] === "a" && st.indexOf("atitle") !== 0)
                      Jt = 0, Qt = zt;
                    else {
                      var Rt = U.attr("text-anchor");
                      Jt = Jt - Ct * (Rt === "middle" ? 0.5 : Rt === "end" ? 1 : 0), Qt = Qt + zt - Gt / 2;
                    }
                    nt.attr({
                      x: Jt,
                      y: Qt
                    }), F && F.call(U, X), ht(X);
                  });
                })) : vt(), U;
              };
              var p = /(<|&lt;|&#60;)/g, u = /(>|&gt;|&#62;)/g;
              function t(U) {
                return U.replace(p, "\\lt ").replace(u, "\\gt ");
              }
              var r = [["$", "$"], ["\\(", "\\)"]];
              function i(U, H, F) {
                var G = parseInt((MathJax.version || "").split(".")[0]);
                if (G !== 2 && G !== 3) {
                  P.warn("No MathJax version:", MathJax.version);
                  return;
                }
                var q, rt, st, vt, ht = function() {
                  return rt = P.extendDeepAll({}, MathJax.Hub.config), st = MathJax.Hub.processSectionDelay, MathJax.Hub.processSectionDelay !== void 0 && (MathJax.Hub.processSectionDelay = 0), MathJax.Hub.Config({
                    messageStyle: "none",
                    tex2jax: {
                      inlineMath: r
                    },
                    displayAlign: "left"
                  });
                }, et = function() {
                  rt = P.extendDeepAll({}, MathJax.config), MathJax.config.tex || (MathJax.config.tex = {}), MathJax.config.tex.inlineMath = r;
                }, Q = function() {
                  if (q = MathJax.Hub.config.menuSettings.renderer, q !== "SVG")
                    return MathJax.Hub.setRenderer("SVG");
                }, j = function() {
                  q = MathJax.config.startup.output, q !== "svg" && (MathJax.config.startup.output = "svg");
                }, at = function() {
                  var pt = "math-output-" + P.randstr({}, 64);
                  vt = b.select("body").append("div").attr({
                    id: pt
                  }).style({
                    visibility: "hidden",
                    position: "absolute",
                    "font-size": H.fontSize + "px"
                  }).text(t(U));
                  var wt = vt.node();
                  return G === 2 ? MathJax.Hub.Typeset(wt) : MathJax.typeset([wt]);
                }, ut = function() {
                  var pt = vt.select(G === 2 ? ".MathJax_SVG" : ".MathJax"), wt = !pt.empty() && vt.select("svg").node();
                  if (!wt)
                    P.log("There was an error in the tex syntax.", U), F();
                  else {
                    var Et = wt.getBoundingClientRect(), Ct;
                    G === 2 ? Ct = b.select("body").select("#MathJax_SVG_glyphs") : Ct = pt.select("defs"), F(pt, Ct, Et);
                  }
                  vt.remove();
                }, nt = function() {
                  if (q !== "SVG")
                    return MathJax.Hub.setRenderer(q);
                }, X = function() {
                  q !== "svg" && (MathJax.config.startup.output = q);
                }, ct = function() {
                  return st !== void 0 && (MathJax.Hub.processSectionDelay = st), MathJax.Hub.Config(rt);
                }, lt = function() {
                  MathJax.config = rt;
                };
                G === 2 ? MathJax.Hub.Queue(ht, Q, at, ut, nt, ct) : G === 3 && (et(), j(), MathJax.startup.defaultReady(), MathJax.startup.promise.then(function() {
                  at(), ut(), X(), lt();
                }));
              }
              var a = {
                // would like to use baseline-shift for sub/sup but FF doesn't support it
                // so we need to use dy along with the uber hacky shift-back-to
                // baseline below
                sup: "font-size:70%",
                sub: "font-size:70%",
                s: "text-decoration:line-through",
                u: "text-decoration:underline",
                b: "font-weight:bold",
                i: "font-style:italic",
                a: "cursor:pointer",
                span: "",
                em: "font-style:italic;font-weight:bold"
              }, l = {
                sub: "0.3em",
                sup: "-0.6em"
              }, o = {
                sub: "-0.21em",
                sup: "0.42em"
              }, y = "​", g = ["http:", "https:", "mailto:", "", void 0, ":"], x = K.NEWLINES = /(\r\n?|\n)/g, c = /(<[^<>]*>)/, v = /<(\/?)([^ >]*)(\s+(.*))?>/i, f = /<br(\s+.*)?>/i;
              K.BR_TAG_ALL = /<br(\s+.*)?>/gi;
              var _ = /(^|[\s"'])style\s*=\s*("([^"]*);?"|'([^']*);?')/i, S = /(^|[\s"'])href\s*=\s*("([^"]*)"|'([^']*)')/i, M = /(^|[\s"'])target\s*=\s*("([^"\s]*)"|'([^'\s]*)')/i, C = /(^|[\s"'])popup\s*=\s*("([\w=,]*)"|'([\w=,]*)')/i;
              function m(U, H) {
                if (!U) return null;
                var F = U.match(H), G = F && (F[3] || F[4]);
                return G && E(G);
              }
              var L = /(^|;)\s*color:/;
              K.plainText = function(U, H) {
                H = H || {};
                for (var F = H.len !== void 0 && H.len !== -1 ? H.len : 1 / 0, G = H.allowedTags !== void 0 ? H.allowedTags : ["br"], q = "...", rt = q.length, st = U.split(c), vt = [], ht = "", et = 0, Q = 0; Q < st.length; Q++) {
                  var j = st[Q], at = j.match(v), ut = at && at[2].toLowerCase();
                  if (ut)
                    G.indexOf(ut) !== -1 && (vt.push(j), ht = ut);
                  else {
                    var nt = j.length;
                    if (et + nt < F)
                      vt.push(j), et += nt;
                    else if (et < F) {
                      var X = F - et;
                      ht && (ht !== "br" || X <= rt || nt <= rt) && vt.pop(), F > rt ? vt.push(j.substr(0, X - rt) + q) : vt.push(j.substr(0, X));
                      break;
                    }
                    ht = "";
                  }
                }
                return vt.join("");
              };
              var d = {
                mu: "μ",
                amp: "&",
                lt: "<",
                gt: ">",
                nbsp: " ",
                times: "×",
                plusmn: "±",
                deg: "°"
              }, h = /&(#\d+|#x[\da-fA-F]+|[a-z]+);/g;
              function E(U) {
                return U.replace(h, function(H, F) {
                  var G;
                  return F.charAt(0) === "#" ? G = w(F.charAt(1) === "x" ? parseInt(F.substr(2), 16) : parseInt(F.substr(1), 10)) : G = d[F], G || H;
                });
              }
              K.convertEntities = E;
              function w(U) {
                if (!(U > 1114111)) {
                  var H = String.fromCodePoint;
                  if (H) return H(U);
                  var F = String.fromCharCode;
                  return U <= 65535 ? F(U) : F((U >> 10) + 55232, U % 1024 + 56320);
                }
              }
              function z(U, H) {
                H = H.replace(x, " ");
                var F = !1, G = [], q, rt = -1;
                function st() {
                  rt++;
                  var Gt = document.createElementNS(s.svg, "tspan");
                  b.select(Gt).attr({
                    class: "line",
                    dy: rt * T + "em"
                  }), U.appendChild(Gt), q = Gt;
                  var Jt = G;
                  if (G = [{
                    node: Gt
                  }], Jt.length > 1)
                    for (var Qt = 1; Qt < Jt.length; Qt++)
                      vt(Jt[Qt]);
                }
                function vt(Gt) {
                  var Jt = Gt.type, Qt = {}, Vt;
                  if (Jt === "a") {
                    Vt = "a";
                    var zt = Gt.target, Rt = Gt.href, Wt = Gt.popup;
                    Rt && (Qt = {
                      "xlink:xlink:show": zt === "_blank" || zt.charAt(0) !== "_" ? "new" : "replace",
                      target: zt,
                      "xlink:xlink:href": Rt
                    }, Wt && (Qt.onclick = 'window.open(this.href.baseVal,this.target.baseVal,"' + Wt + '");return false;'));
                  } else Vt = "tspan";
                  Gt.style && (Qt.style = Gt.style);
                  var kt = document.createElementNS(s.svg, Vt);
                  if (Jt === "sup" || Jt === "sub") {
                    ht(q, y), q.appendChild(kt);
                    var re = document.createElementNS(s.svg, "tspan");
                    ht(re, y), b.select(re).attr("dy", o[Jt]), Qt.dy = l[Jt], q.appendChild(kt), q.appendChild(re);
                  } else
                    q.appendChild(kt);
                  b.select(kt).attr(Qt), q = Gt.node = kt, G.push(Gt);
                }
                function ht(Gt, Jt) {
                  Gt.appendChild(document.createTextNode(Jt));
                }
                function et(Gt) {
                  if (G.length === 1) {
                    P.log("Ignoring unexpected end tag </" + Gt + ">.", H);
                    return;
                  }
                  var Jt = G.pop();
                  Gt !== Jt.type && P.log("Start tag <" + Jt.type + "> doesnt match end tag <" + Gt + ">. Pretending it did match.", H), q = G[G.length - 1].node;
                }
                var Q = f.test(H);
                Q ? st() : (q = U, G = [{
                  node: U
                }]);
                for (var j = H.split(c), at = 0; at < j.length; at++) {
                  var ut = j[at], nt = ut.match(v), X = nt && nt[2].toLowerCase(), ct = a[X];
                  if (X === "br")
                    st();
                  else if (ct === void 0)
                    ht(q, E(ut));
                  else if (nt[1])
                    et(X);
                  else {
                    var lt = nt[4], pt = {
                      type: X
                    }, wt = m(lt, _);
                    if (wt ? (wt = wt.replace(L, "$1 fill:"), ct && (wt += ";" + ct)) : ct && (wt = ct), wt && (pt.style = wt), X === "a") {
                      F = !0;
                      var Et = m(lt, S);
                      if (Et) {
                        var Ct = O(Et);
                        Ct && (pt.href = Ct, pt.target = m(lt, M) || "_blank", pt.popup = m(lt, C));
                      }
                    }
                    vt(pt);
                  }
                }
                return F;
              }
              function O(U) {
                var H = encodeURI(decodeURI(U)), F = document.createElement("a"), G = document.createElement("a");
                F.href = U, G.href = H;
                var q = F.protocol, rt = G.protocol;
                return g.indexOf(q) !== -1 && g.indexOf(rt) !== -1 ? H : "";
              }
              K.sanitizeHTML = function(H) {
                H = H.replace(x, " ");
                for (var F = document.createElement("p"), G = F, q = [], rt = H.split(c), st = 0; st < rt.length; st++) {
                  var vt = rt[st], ht = vt.match(v), et = ht && ht[2].toLowerCase();
                  if (et in a)
                    if (ht[1])
                      q.length && (G = q.pop());
                    else {
                      var Q = ht[4], j = m(Q, _), at = j ? {
                        style: j
                      } : {};
                      if (et === "a") {
                        var ut = m(Q, S);
                        if (ut) {
                          var nt = O(ut);
                          if (nt) {
                            at.href = nt;
                            var X = m(Q, M);
                            X && (at.target = X);
                          }
                        }
                      }
                      var ct = document.createElement(et);
                      G.appendChild(ct), b.select(ct).attr(at), G = ct, q.push(ct);
                    }
                  else
                    G.appendChild(document.createTextNode(E(vt)));
                }
                var lt = "innerHTML";
                return F[lt];
              }, K.lineCount = function(H) {
                return H.selectAll("tspan.line").size() || 1;
              }, K.positionText = function(H, F, G) {
                return H.each(function() {
                  var q = b.select(this);
                  function rt(ht, et) {
                    return et === void 0 ? (et = q.attr(ht), et === null && (q.attr(ht, 0), et = 0)) : q.attr(ht, et), et;
                  }
                  var st = rt("x", F), vt = rt("y", G);
                  this.nodeName === "text" && q.selectAll("tspan.line").attr({
                    x: st,
                    y: vt
                  });
                });
              };
              function B(U, H, F) {
                var G = F.horizontalAlign, q = F.verticalAlign || "top", rt = U.node().getBoundingClientRect(), st = H.node().getBoundingClientRect(), vt, ht, et;
                return q === "bottom" ? ht = function() {
                  return rt.bottom - vt.height;
                } : q === "middle" ? ht = function() {
                  return rt.top + (rt.height - vt.height) / 2;
                } : ht = function() {
                  return rt.top;
                }, G === "right" ? et = function() {
                  return rt.right - vt.width;
                } : G === "center" ? et = function() {
                  return rt.left + (rt.width - vt.width) / 2;
                } : et = function() {
                  return rt.left;
                }, function() {
                  vt = this.node().getBoundingClientRect();
                  var Q = et() - st.left, j = ht() - st.top, at = F.gd || {};
                  if (F.gd) {
                    at._fullLayout._calcInverseTransform(at);
                    var ut = P.apply3DTransform(at._fullLayout._invTransform)(Q, j);
                    Q = ut[0], j = ut[1];
                  }
                  return this.style({
                    top: j + "px",
                    left: Q + "px",
                    "z-index": 1e3
                  }), this;
                };
              }
              var V = "1px ";
              K.makeTextShadow = function(U) {
                var H = V, F = V, G = V;
                return H + F + G + U + ", -" + H + "-" + F + G + U + ", " + H + "-" + F + G + U + ", -" + H + F + G + U;
              }, K.makeEditable = function(U, H) {
                var F = H.gd, G = H.delegate, q = b.dispatch("edit", "input", "cancel"), rt = G || U;
                if (U.style({
                  "pointer-events": G ? "none" : "all"
                }), U.size() !== 1) throw new Error("boo");
                function st() {
                  ht(), U.style({
                    opacity: 0
                  });
                  var et = rt.attr("class"), Q;
                  et ? Q = "." + et.split(" ")[0] + "-math-group" : Q = "[class*=-math-group]", Q && b.select(U.node().parentNode).select(Q).style({
                    opacity: 0
                  });
                }
                function vt(et) {
                  var Q = et.node(), j = document.createRange();
                  j.selectNodeContents(Q);
                  var at = window.getSelection();
                  at.removeAllRanges(), at.addRange(j), Q.focus();
                }
                function ht() {
                  var et = b.select(F), Q = et.select(".svg-container"), j = Q.append("div"), at = U.node().style, ut = parseFloat(at.fontSize || 12), nt = H.text;
                  nt === void 0 && (nt = U.attr("data-unformatted")), j.classed("plugin-editable editable", !0).style({
                    position: "absolute",
                    "font-family": at.fontFamily || "Arial",
                    "font-size": ut,
                    color: H.fill || at.fill || "black",
                    opacity: 1,
                    "background-color": H.background || "transparent",
                    outline: "#ffffff33 1px solid",
                    margin: [-ut / 8 + 1, 0, 0, -1].join("px ") + "px",
                    padding: "0",
                    "box-sizing": "border-box"
                  }).attr({
                    contenteditable: !0
                  }).text(nt).call(B(U, Q, H)).on("blur", function() {
                    F._editing = !1, U.text(this.textContent).style({
                      opacity: 1
                    });
                    var X = b.select(this).attr("class"), ct;
                    X ? ct = "." + X.split(" ")[0] + "-math-group" : ct = "[class*=-math-group]", ct && b.select(U.node().parentNode).select(ct).style({
                      opacity: 0
                    });
                    var lt = this.textContent;
                    b.select(this).transition().duration(0).remove(), b.select(document).on("mouseup", null), q.edit.call(U, lt);
                  }).on("focus", function() {
                    var X = this;
                    F._editing = !0, b.select(document).on("mouseup", function() {
                      if (b.event.target === X) return !1;
                      document.activeElement === j.node() && j.node().blur();
                    });
                  }).on("keyup", function() {
                    b.event.which === 27 ? (F._editing = !1, U.style({
                      opacity: 1
                    }), b.select(this).style({
                      opacity: 0
                    }).on("blur", function() {
                      return !1;
                    }).transition().remove(), q.cancel.call(U, this.textContent)) : (q.input.call(U, this.textContent), b.select(this).call(B(U, Q, H)));
                  }).on("keydown", function() {
                    b.event.which === 13 && this.blur();
                  }).call(vt);
                }
                return H.immediate ? st() : rt.on("click", st), b.rebind(U, q, "on");
              };
            }
          ),
          /***/
          64025: (
            /***/
            function(Y, K) {
              var e = {};
              K.throttle = function(n, s, T) {
                var A = e[n], p = Date.now();
                if (!A) {
                  for (var u in e)
                    e[u].ts < p - 6e4 && delete e[u];
                  A = e[n] = {
                    ts: 0,
                    timer: null
                  };
                }
                b(A);
                function t() {
                  T(), A.ts = Date.now(), A.onDone && (A.onDone(), A.onDone = null);
                }
                if (p > A.ts + s) {
                  t();
                  return;
                }
                A.timer = setTimeout(function() {
                  t(), A.timer = null;
                }, s);
              }, K.done = function(P) {
                var n = e[P];
                return !n || !n.timer ? Promise.resolve() : new Promise(function(s) {
                  var T = n.onDone;
                  n.onDone = function() {
                    T && T(), s(), n.onDone = null;
                  };
                });
              }, K.clear = function(P) {
                if (P)
                  b(e[P]), delete e[P];
                else
                  for (var n in e) K.clear(n);
              };
              function b(P) {
                P && P.timer !== null && (clearTimeout(P.timer), P.timer = null);
              }
            }
          ),
          /***/
          8083: (
            /***/
            function(Y, K, e) {
              var b = e(10721);
              Y.exports = function(n, s) {
                if (n > 0) return Math.log(n) / Math.LN10;
                var T = Math.log(Math.min(s[0], s[1])) / Math.LN10;
                return b(T) || (T = Math.log(Math.max(s[0], s[1])) / Math.LN10 - 6), T;
              };
            }
          ),
          /***/
          11577: (
            /***/
            function(Y, K, e) {
              var b = Y.exports = {}, P = e(74285).locationmodeToLayer, n = e(48640).N4;
              b.getTopojsonName = function(s) {
                return [s.scope.replace(/ /g, "-"), "_", s.resolution.toString(), "m"].join("");
              }, b.getTopojsonPath = function(s, T) {
                return s + T + ".json";
              }, b.getTopojsonFeatures = function(s, T) {
                var A = P[s.locationmode], p = T.objects[A];
                return n(T, p).features;
              };
            }
          ),
          /***/
          44611: (
            /***/
            function(Y) {
              Y.exports = {
                moduleType: "locale",
                name: "en-US",
                dictionary: {
                  "Click to enter Colorscale title": "Click to enter Colorscale title"
                },
                format: {
                  date: "%m/%d/%Y"
                }
              };
            }
          ),
          /***/
          30227: (
            /***/
            function(Y) {
              Y.exports = {
                moduleType: "locale",
                name: "en",
                dictionary: {
                  "Click to enter Colorscale title": "Click to enter Colourscale title"
                },
                format: {
                  days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
                  shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
                  months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
                  shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
                  periods: ["AM", "PM"],
                  dateTime: "%a %b %e %X %Y",
                  date: "%d/%m/%Y",
                  time: "%H:%M:%S",
                  decimal: ".",
                  thousands: ",",
                  grouping: [3],
                  currency: ["$", ""],
                  year: "%Y",
                  month: "%b %Y",
                  dayMonth: "%b %-d",
                  dayMonthYear: "%b %-d, %Y"
                }
              };
            }
          ),
          /***/
          56037: (
            /***/
            function(Y, K, e) {
              var b = e(33626);
              Y.exports = function(n) {
                for (var s = b.layoutArrayContainers, T = b.layoutArrayRegexes, A = n.split("[")[0], p, u, t = 0; t < T.length; t++)
                  if (u = n.match(T[t]), u && u.index === 0) {
                    p = u[0];
                    break;
                  }
                if (p || (p = s[s.indexOf(A)]), !p) return !1;
                var r = n.substr(p.length);
                return r ? (u = r.match(/^\[(0|[1-9][0-9]*)\](\.(.+))?$/), u ? {
                  array: p,
                  index: Number(u[1]),
                  property: u[3] || ""
                } : !1) : {
                  array: p,
                  index: "",
                  property: ""
                };
              };
            }
          ),
          /***/
          13582: (
            /***/
            function(Y, K, e) {
              var b = e(93049).extendFlat, P = e(56174), n = {
                valType: "flaglist",
                extras: ["none"],
                flags: ["calc", "clearAxisTypes", "plot", "style", "markerSize", "colorbars"]
              }, s = {
                valType: "flaglist",
                extras: ["none"],
                flags: ["calc", "plot", "legend", "ticks", "axrange", "layoutstyle", "modebar", "camera", "arraydraw", "colorbars"]
              }, T = n.flags.slice().concat(["fullReplot"]), A = s.flags.slice().concat("layoutReplot");
              Y.exports = {
                traces: n,
                layout: s,
                /*
                 * default (all false) edit flags for restyle (traces)
                 * creates a new object each call, so the caller can mutate freely
                 */
                traceFlags: function() {
                  return p(T);
                },
                /*
                 * default (all false) edit flags for relayout
                 * creates a new object each call, so the caller can mutate freely
                 */
                layoutFlags: function() {
                  return p(A);
                },
                /*
                 * update `flags` with the `editType` values found in `attr`
                 */
                update: function(r, i) {
                  var a = i.editType;
                  if (a && a !== "none")
                    for (var l = a.split("+"), o = 0; o < l.length; o++)
                      r[l[o]] = !0;
                },
                overrideAll: u
              };
              function p(r) {
                for (var i = {}, a = 0; a < r.length; a++) i[r[a]] = !1;
                return i;
              }
              function u(r, i, a) {
                var l = b({}, r);
                for (var o in l) {
                  var y = l[o];
                  P(y) && (l[o] = t(y, i, a, o));
                }
                return a === "from-root" && (l.editType = i), l;
              }
              function t(r, i, a, l) {
                if (r.valType) {
                  var o = b({}, r);
                  if (o.editType = i, Array.isArray(r.items)) {
                    o.items = new Array(r.items.length);
                    for (var y = 0; y < r.items.length; y++)
                      o.items[y] = t(r.items[y], i);
                  }
                  return o;
                } else
                  return u(r, i, l.charAt(0) === "_" ? "nested" : "from-root");
              }
            }
          ),
          /***/
          10887: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(36472), n = e(33626), s = e(34809), T = e(44122), A = e(5975), p = e(78766), u = A.cleanId, t = A.getFromTrace, r = n.traceIs;
              K.clearPromiseQueue = function(f) {
                Array.isArray(f._promises) && f._promises.length > 0 && s.log("Clearing previous rejected promises from queue."), f._promises = [];
              }, K.cleanLayout = function(f) {
                var _, S;
                f || (f = {}), f.xaxis1 && (f.xaxis || (f.xaxis = f.xaxis1), delete f.xaxis1), f.yaxis1 && (f.yaxis || (f.yaxis = f.yaxis1), delete f.yaxis1), f.scene1 && (f.scene || (f.scene = f.scene1), delete f.scene1);
                var M = (T.subplotsRegistry.cartesian || {}).attrRegex, C = (T.subplotsRegistry.polar || {}).attrRegex, m = (T.subplotsRegistry.ternary || {}).attrRegex, L = (T.subplotsRegistry.gl3d || {}).attrRegex, d = Object.keys(f);
                for (_ = 0; _ < d.length; _++) {
                  var h = d[_];
                  if (M && M.test(h)) {
                    var E = f[h];
                    E.anchor && E.anchor !== "free" && (E.anchor = u(E.anchor)), E.overlaying && (E.overlaying = u(E.overlaying)), E.type || (E.isdate ? E.type = "date" : E.islog ? E.type = "log" : E.isdate === !1 && E.islog === !1 && (E.type = "linear")), (E.autorange === "withzero" || E.autorange === "tozero") && (E.autorange = !0, E.rangemode = "tozero"), E.insiderange && delete E.range, delete E.islog, delete E.isdate, delete E.categories, g(E, "domain") && delete E.domain, E.autotick !== void 0 && (E.tickmode === void 0 && (E.tickmode = E.autotick ? "auto" : "linear"), delete E.autotick), a(E);
                  } else if (C && C.test(h)) {
                    var w = f[h];
                    a(w.radialaxis);
                  } else if (m && m.test(h)) {
                    var z = f[h];
                    a(z.aaxis), a(z.baxis), a(z.caxis);
                  } else if (L && L.test(h)) {
                    var O = f[h], B = O.cameraposition;
                    if (Array.isArray(B) && B[0].length === 4) {
                      var V = B[0], U = B[1], H = B[2], F = P([], V), G = [];
                      for (S = 0; S < 3; ++S)
                        G[S] = U[S] + H * F[2 + 4 * S];
                      O.camera = {
                        eye: {
                          x: G[0],
                          y: G[1],
                          z: G[2]
                        },
                        center: {
                          x: U[0],
                          y: U[1],
                          z: U[2]
                        },
                        up: {
                          x: 0,
                          y: 0,
                          z: 1
                        }
                        // we just ignore calculating camera z up in this case
                      }, delete O.cameraposition;
                    }
                    a(O.xaxis), a(O.yaxis), a(O.zaxis);
                  }
                }
                var q = Array.isArray(f.annotations) ? f.annotations.length : 0;
                for (_ = 0; _ < q; _++) {
                  var rt = f.annotations[_];
                  s.isPlainObject(rt) && (rt.ref && (rt.ref === "paper" ? (rt.xref = "paper", rt.yref = "paper") : rt.ref === "data" && (rt.xref = "x", rt.yref = "y"), delete rt.ref), i(rt, "xref"), i(rt, "yref"));
                }
                var st = Array.isArray(f.shapes) ? f.shapes.length : 0;
                for (_ = 0; _ < st; _++) {
                  var vt = f.shapes[_];
                  s.isPlainObject(vt) && (i(vt, "xref"), i(vt, "yref"));
                }
                var ht = Array.isArray(f.images) ? f.images.length : 0;
                for (_ = 0; _ < ht; _++) {
                  var et = f.images[_];
                  s.isPlainObject(et) && (i(et, "xref"), i(et, "yref"));
                }
                var Q = f.legend;
                return Q && (Q.x > 3 ? (Q.x = 1.02, Q.xanchor = "left") : Q.x < -2 && (Q.x = -0.02, Q.xanchor = "right"), Q.y > 3 ? (Q.y = 1.02, Q.yanchor = "bottom") : Q.y < -2 && (Q.y = -0.02, Q.yanchor = "top")), a(f), f.dragmode === "rotate" && (f.dragmode = "orbit"), p.clean(f), f.template && f.template.layout && K.cleanLayout(f.template.layout), f;
              };
              function i(f, _) {
                var S = f[_], M = _.charAt(0);
                S && S !== "paper" && (f[_] = u(S, M, !0));
              }
              function a(f) {
                f && ((typeof f.title == "string" || typeof f.title == "number") && (f.title = {
                  text: f.title
                }), _("titlefont", "font"), _("titleposition", "position"), _("titleside", "side"), _("titleoffset", "offset"));
                function _(S, M) {
                  var C = f[S], m = f.title && f.title[M];
                  C && !m && (f.title || (f.title = {}), f.title[M] = f[S], delete f[S]);
                }
              }
              K.cleanData = function(f) {
                for (var _ = 0; _ < f.length; _++) {
                  var S = f[_], M;
                  if (S.type === "histogramy" && "xbins" in S && !("ybins" in S) && (S.ybins = S.xbins, delete S.xbins), S.error_y && "opacity" in S.error_y) {
                    var C = p.defaults, m = S.error_y.color || (r(S, "bar") ? p.defaultLine : C[_ % C.length]);
                    S.error_y.color = p.addOpacity(p.rgb(m), p.opacity(m) * S.error_y.opacity), delete S.error_y.opacity;
                  }
                  if ("bardir" in S && (S.bardir === "h" && (r(S, "bar") || S.type.substr(0, 9) === "histogram") && (S.orientation = "h", K.swapXYData(S)), delete S.bardir), S.type === "histogramy" && K.swapXYData(S), (S.type === "histogramx" || S.type === "histogramy") && (S.type = "histogram"), "scl" in S && !("colorscale" in S) && (S.colorscale = S.scl, delete S.scl), "reversescl" in S && !("reversescale" in S) && (S.reversescale = S.reversescl, delete S.reversescl), S.xaxis && (S.xaxis = u(S.xaxis, "x")), S.yaxis && (S.yaxis = u(S.yaxis, "y")), r(S, "gl3d") && S.scene && (S.scene = T.subplotsRegistry.gl3d.cleanId(S.scene)), !r(S, "pie-like") && !r(S, "bar-like"))
                    if (Array.isArray(S.textposition))
                      for (M = 0; M < S.textposition.length; M++)
                        S.textposition[M] = y(S.textposition[M]);
                    else S.textposition && (S.textposition = y(S.textposition));
                  var L = n.getModule(S);
                  if (L && L.colorbar) {
                    var d = L.colorbar.container, h = d ? S[d] : S;
                    h && h.colorscale && (h.colorscale === "YIGnBu" && (h.colorscale = "YlGnBu"), h.colorscale === "YIOrRd" && (h.colorscale = "YlOrRd"));
                  }
                  if (S.type === "surface" && s.isPlainObject(S.contours)) {
                    var E = ["x", "y", "z"];
                    for (M = 0; M < E.length; M++) {
                      var w = S.contours[E[M]];
                      s.isPlainObject(w) && (w.highlightColor && (w.highlightcolor = w.highlightColor, delete w.highlightColor), w.highlightWidth && (w.highlightwidth = w.highlightWidth, delete w.highlightWidth));
                    }
                  }
                  if (S.type === "candlestick" || S.type === "ohlc") {
                    var z = (S.increasing || {}).showlegend !== !1, O = (S.decreasing || {}).showlegend !== !1, B = l(S.increasing), V = l(S.decreasing);
                    if (B !== !1 && V !== !1) {
                      var U = o(B, V, z, O);
                      U && (S.name = U);
                    } else (B || V) && !S.name && (S.name = B || V);
                  }
                  if (Array.isArray(S.transforms)) {
                    var H = S.transforms;
                    for (M = 0; M < H.length; M++) {
                      var F = H[M];
                      if (s.isPlainObject(F))
                        switch (F.type) {
                          case "filter":
                            F.filtersrc && (F.target = F.filtersrc, delete F.filtersrc), F.calendar && (F.valuecalendar || (F.valuecalendar = F.calendar), delete F.calendar);
                            break;
                          case "groupby":
                            if (F.styles = F.styles || F.style, F.styles && !Array.isArray(F.styles)) {
                              var G = F.styles, q = Object.keys(G);
                              F.styles = [];
                              for (var rt = 0; rt < q.length; rt++)
                                F.styles.push({
                                  target: q[rt],
                                  value: G[q[rt]]
                                });
                            }
                            break;
                        }
                    }
                  }
                  g(S, "line") && delete S.line, "marker" in S && (g(S.marker, "line") && delete S.marker.line, g(S, "marker") && delete S.marker), p.clean(S), S.autobinx && (delete S.autobinx, delete S.xbins), S.autobiny && (delete S.autobiny, delete S.ybins), a(S), S.colorbar && a(S.colorbar), S.marker && S.marker.colorbar && a(S.marker.colorbar), S.line && S.line.colorbar && a(S.line.colorbar), S.aaxis && a(S.aaxis), S.baxis && a(S.baxis);
                }
              };
              function l(f) {
                if (!s.isPlainObject(f)) return !1;
                var _ = f.name;
                return delete f.name, delete f.showlegend, (typeof _ == "string" || typeof _ == "number") && String(_);
              }
              function o(f, _, S, M) {
                if (S && !M) return f;
                if (M && !S || !f.trim()) return _;
                if (!_.trim()) return f;
                var C = Math.min(f.length, _.length), m;
                for (m = 0; m < C && f.charAt(m) === _.charAt(m); m++)
                  ;
                var L = f.substr(0, m);
                return L.trim();
              }
              function y(f) {
                var _ = "middle", S = "center";
                return typeof f == "string" && (f.indexOf("top") !== -1 ? _ = "top" : f.indexOf("bottom") !== -1 && (_ = "bottom"), f.indexOf("left") !== -1 ? S = "left" : f.indexOf("right") !== -1 && (S = "right")), _ + " " + S;
              }
              function g(f, _) {
                return _ in f && typeof f[_] == "object" && Object.keys(f[_]).length === 0;
              }
              K.swapXYData = function(f) {
                var _;
                if (s.swapAttrs(f, ["?", "?0", "d?", "?bins", "nbins?", "autobin?", "?src", "error_?"]), Array.isArray(f.z) && Array.isArray(f.z[0]) && (f.transpose ? delete f.transpose : f.transpose = !0), f.error_x && f.error_y) {
                  var S = f.error_y, M = "copy_ystyle" in S ? S.copy_ystyle : !(S.color || S.thickness || S.width);
                  s.swapAttrs(f, ["error_?.copy_ystyle"]), M && s.swapAttrs(f, ["error_?.color", "error_?.thickness", "error_?.width"]);
                }
                if (typeof f.hoverinfo == "string") {
                  var C = f.hoverinfo.split("+");
                  for (_ = 0; _ < C.length; _++)
                    C[_] === "x" ? C[_] = "y" : C[_] === "y" && (C[_] = "x");
                  f.hoverinfo = C.join("+");
                }
              }, K.coerceTraceIndices = function(f, _) {
                if (b(_))
                  return [_];
                if (!Array.isArray(_) || !_.length)
                  return f.data.map(function(C, m) {
                    return m;
                  });
                if (Array.isArray(_)) {
                  for (var S = [], M = 0; M < _.length; M++)
                    s.isIndex(_[M], f.data.length) ? S.push(_[M]) : s.warn("trace index (", _[M], ") is not a number or is out of bounds");
                  return S;
                }
                return _;
              }, K.manageArrayContainers = function(f, _, S) {
                var M = f.obj, C = f.parts, m = C.length, L = C[m - 1], d = b(L);
                if (d && _ === null) {
                  var h = C.slice(0, m - 1).join("."), E = s.nestedProperty(M, h).get();
                  E.splice(L, 1);
                } else d && f.get() === void 0 && f.get() === void 0 && (S[f.astr] = null), f.set(_);
              };
              var x = /(\.[^\[\]\.]+|\[[^\[\]\.]+\])$/;
              function c(f) {
                var _ = f.search(x);
                if (_ > 0) return f.substr(0, _);
              }
              K.hasParent = function(f, _) {
                for (var S = c(_); S; ) {
                  if (S in f) return !0;
                  S = c(S);
                }
                return !1;
              };
              var v = ["x", "y", "z"];
              K.clearAxisTypes = function(f, _, S) {
                for (var M = 0; M < _.length; M++)
                  for (var C = f._fullData[M], m = 0; m < 3; m++) {
                    var L = t(f, C, v[m]);
                    if (L && L.type !== "log") {
                      var d = L._name, h = L._id.substr(1);
                      if (h.substr(0, 5) === "scene") {
                        if (S[h] !== void 0) continue;
                        d = h + "." + d;
                      }
                      var E = d + ".type";
                      S[d] === void 0 && S[E] === void 0 && s.nestedProperty(f.layout, E).set(null);
                    }
                  }
              };
            }
          ),
          /***/
          90742: (
            /***/
            function(Y, K, e) {
              var b = e(31420);
              K._doPlot = b._doPlot, K.newPlot = b.newPlot, K.restyle = b.restyle, K.relayout = b.relayout, K.redraw = b.redraw, K.update = b.update, K._guiRestyle = b._guiRestyle, K._guiRelayout = b._guiRelayout, K._guiUpdate = b._guiUpdate, K._storeDirectGUIEdit = b._storeDirectGUIEdit, K.react = b.react, K.extendTraces = b.extendTraces, K.prependTraces = b.prependTraces, K.addTraces = b.addTraces, K.deleteTraces = b.deleteTraces, K.moveTraces = b.moveTraces, K.purge = b.purge, K.addFrames = b.addFrames, K.deleteFrames = b.deleteFrames, K.animate = b.animate, K.setPlotConfig = b.setPlotConfig;
              var P = e(95425).getGraphDiv, n = e(28231).eraseActiveShape;
              K.deleteActiveShape = function(T) {
                return n(P(T));
              }, K.toImage = e(80491), K.validate = e(2466), K.downloadImage = e(26452);
              var s = e(53853);
              K.makeTemplate = s.makeTemplate, K.validateTemplate = s.validateTemplate;
            }
          ),
          /***/
          85844: (
            /***/
            function(Y, K, e) {
              var b = e(56174), P = e(4969), n = e(48636), s = e(98813).sorterAsc, T = e(33626);
              K.containerArrayMatch = e(56037);
              var A = K.isAddVal = function(t) {
                return t === "add" || b(t);
              }, p = K.isRemoveVal = function(t) {
                return t === null || t === "remove";
              };
              K.applyContainerArrayChanges = function(t, r, i, a, l) {
                var o = r.astr, y = T.getComponentMethod(o, "supplyLayoutDefaults"), g = T.getComponentMethod(o, "draw"), x = T.getComponentMethod(o, "drawOne"), c = a.replot || a.recalc || y === P || g === P, v = t.layout, f = t._fullLayout;
                if (i[""]) {
                  Object.keys(i).length > 1 && n.warn("Full array edits are incompatible with other edits", o);
                  var _ = i[""][""];
                  if (p(_)) r.set(null);
                  else if (Array.isArray(_)) r.set(_);
                  else
                    return n.warn("Unrecognized full array edit value", o, _), !0;
                  return c ? !1 : (y(v, f), g(t), !0);
                }
                var S = Object.keys(i).map(Number).sort(s), M = r.get(), C = M || [], m = l(f, o).get(), L = [], d = -1, h = C.length, E, w, z, O, B, V, U, H;
                for (E = 0; E < S.length; E++) {
                  if (z = S[E], O = i[z], B = Object.keys(O), V = O[""], U = A(V), z < 0 || z > C.length - (U ? 0 : 1)) {
                    n.warn("index out of range", o, z);
                    continue;
                  }
                  if (V !== void 0)
                    B.length > 1 && n.warn("Insertion & removal are incompatible with edits to the same index.", o, z), p(V) ? L.push(z) : U ? (V === "add" && (V = {}), C.splice(z, 0, V), m && m.splice(z, 0, {})) : n.warn("Unrecognized full object edit value", o, z, V), d === -1 && (d = z);
                  else
                    for (w = 0; w < B.length; w++)
                      H = o + "[" + z + "].", l(C[z], B[w], H).set(O[B[w]]);
                }
                for (E = L.length - 1; E >= 0; E--)
                  C.splice(L[E], 1), m && m.splice(L[E], 1);
                if (C.length ? M || r.set(C) : r.set(null), c) return !1;
                if (y(v, f), x !== P) {
                  var F;
                  if (d === -1)
                    F = S;
                  else {
                    for (h = Math.max(C.length, h), F = [], E = 0; E < S.length && (z = S[E], !(z >= d)); E++)
                      F.push(z);
                    for (E = d; E < h; E++)
                      F.push(E);
                  }
                  for (E = 0; E < F.length; E++)
                    x(t, F[E]);
                } else g(t);
                return !0;
              };
            }
          ),
          /***/
          31420: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(10721), n = e(39784), s = e(34809), T = s.nestedProperty, A = e(68596), p = e(40486), u = e(33626), t = e(57297), r = e(44122), i = e(29714), a = e(90259), l = e(25829), o = e(62203), y = e(78766), g = e(95284).initInteractions, x = e(62972), c = e(44844).clearOutline, v = e(24452).dfltConfig, f = e(85844), _ = e(10887), S = e(71817), M = e(13582), C = e(54826).AX_NAME_PATTERN, m = 0, L = 5;
              function d(Mt, St, Lt, te) {
                var fe;
                if (Mt = s.getGraphDiv(Mt), A.init(Mt), s.isPlainObject(St)) {
                  var Me = St;
                  St = Me.data, Lt = Me.layout, te = Me.config, fe = Me.frames;
                }
                var ir = A.triggerHandler(Mt, "plotly_beforeplot", [St, Lt, te]);
                if (ir === !1) return Promise.reject();
                !St && !Lt && !s.isPlotDiv(Mt) && s.warn("Calling _doPlot as if redrawing but this container doesn't yet have a plot.", Mt);
                function mr() {
                  if (fe)
                    return K.addFrames(Mt, fe);
                }
                O(Mt, te), Lt || (Lt = {}), b.select(Mt).classed("js-plotly-plot", !0), o.makeTester(), Array.isArray(Mt._promises) || (Mt._promises = []);
                var Xe = (Mt.data || []).length === 0 && Array.isArray(St);
                Array.isArray(St) && (_.cleanData(St), Xe ? Mt.data = St : Mt.data.push.apply(Mt.data, St), Mt.empty = !1), (!Mt.layout || Xe) && (Mt.layout = _.cleanLayout(Lt)), r.supplyDefaults(Mt);
                var xe = Mt._fullLayout, me = xe._has("cartesian");
                xe._replotting = !0, (Xe || xe._shouldCreateBgLayer) && (ye(Mt), xe._shouldCreateBgLayer && delete xe._shouldCreateBgLayer), o.initGradients(Mt), o.initPatterns(Mt), Xe && i.saveShowSpikeInitial(Mt);
                var Le = !Mt.calcdata || Mt.calcdata.length !== (Mt._fullData || []).length;
                Le && r.doCalcdata(Mt);
                for (var qt = 0; qt < Mt.calcdata.length; qt++)
                  Mt.calcdata[qt][0].trace = Mt._fullData[qt];
                Mt._context.responsive ? Mt._responsiveChartHandler || (Mt._responsiveChartHandler = function() {
                  s.isHidden(Mt) || r.resize(Mt);
                }, window.addEventListener("resize", Mt._responsiveChartHandler)) : s.clearResponsive(Mt);
                var De = s.extendFlat({}, xe._size), Je = 0;
                function dr() {
                  for (var lr = xe._basePlotModules, hr = 0; hr < lr.length; hr++)
                    lr[hr].drawFramework && lr[hr].drawFramework(Mt);
                  !xe._glcanvas && xe._has("gl") && (xe._glcanvas = xe._glcontainer.selectAll(".gl-canvas").data([{
                    key: "contextLayer",
                    context: !0,
                    pick: !1
                  }, {
                    key: "focusLayer",
                    context: !1,
                    pick: !1
                  }, {
                    key: "pickLayer",
                    context: !1,
                    pick: !0
                  }], function(Br) {
                    return Br.key;
                  }), xe._glcanvas.enter().append("canvas").attr("class", function(Br) {
                    return "gl-canvas gl-canvas-" + Br.key.replace("Layer", "");
                  }).style({
                    position: "absolute",
                    top: 0,
                    left: 0,
                    overflow: "visible",
                    "pointer-events": "none"
                  }));
                  var Sr = Mt._context.plotGlPixelRatio;
                  if (xe._glcanvas) {
                    xe._glcanvas.attr("width", xe.width * Sr).attr("height", xe.height * Sr).style("width", xe.width + "px").style("height", xe.height + "px");
                    var Dr = xe._glcanvas.data()[0].regl;
                    if (Dr && (Math.floor(xe.width * Sr) !== Dr._gl.drawingBufferWidth || Math.floor(xe.height * Sr) !== Dr._gl.drawingBufferHeight)) {
                      var Or = "WebGL context buffer and canvas dimensions do not match due to browser/WebGL bug.";
                      if (Je)
                        s.error(Or);
                      else
                        return s.log(Or + " Clearing graph and plotting again."), r.cleanPlot([], {}, Mt._fullData, xe), r.supplyDefaults(Mt), xe = Mt._fullLayout, r.doCalcdata(Mt), Je++, dr();
                    }
                  }
                  return xe.modebar.orientation === "h" ? xe._modebardiv.style("height", null).style("width", "100%") : xe._modebardiv.style("width", null).style("height", xe.height + "px"), r.previousPromises(Mt);
                }
                function qe() {
                  if (r.clearAutoMarginIds(Mt), S.drawMarginPushers(Mt), i.allowAutoMargin(Mt), Mt._fullLayout.title.text && Mt._fullLayout.title.automargin && r.allowAutoMargin(Mt, "title.automargin"), xe._has("pie"))
                    for (var lr = Mt._fullData, hr = 0; hr < lr.length; hr++) {
                      var Sr = lr[hr];
                      Sr.type === "pie" && Sr.automargin && r.allowAutoMargin(Mt, "pie." + Sr.uid + ".automargin");
                    }
                  return r.doAutoMargin(Mt), r.previousPromises(Mt);
                }
                function we() {
                  if (r.didMarginChange(De, xe._size))
                    return s.syncOrAsync([qe, S.layoutStyles], Mt);
                }
                function ue() {
                  if (!Le) {
                    Pe();
                    return;
                  }
                  return s.syncOrAsync([u.getComponentMethod("shapes", "calcAutorange"), u.getComponentMethod("annotations", "calcAutorange"), Pe], Mt);
                }
                function Pe() {
                  Mt._transitioning || (S.doAutoRangeAndConstraints(Mt), Xe && i.saveRangeInitial(Mt), u.getComponentMethod("rangeslider", "calcAutorange")(Mt));
                }
                function Ue() {
                  return i.draw(Mt, Xe ? "" : "redraw");
                }
                var Ye = [r.previousPromises, mr, dr, qe, we];
                me && Ye.push(ue), Ye.push(S.layoutStyles), me && Ye.push(Ue, function(hr) {
                  var Sr = hr._fullLayout._insideTickLabelsUpdaterange;
                  if (Sr)
                    return hr._fullLayout._insideTickLabelsUpdaterange = void 0, Et(hr, Sr).then(function() {
                      i.saveRangeInitial(hr, !0);
                    });
                }), Ye.push(
                  S.drawData,
                  S.finalDraw,
                  g,
                  r.addLinks,
                  r.rehover,
                  r.redrag,
                  r.reselect,
                  // TODO: doAutoMargin is only needed here for axis automargin, which
                  // happens outside of marginPushers where all the other automargins are
                  // calculated. Would be much better to separate margin calculations from
                  // component drawing - see https://github.com/plotly/plotly.js/issues/2704
                  r.doAutoMargin,
                  r.previousPromises
                );
                var rr = s.syncOrAsync(Ye, Mt);
                return (!rr || !rr.then) && (rr = Promise.resolve()), rr.then(function() {
                  return h(Mt), Mt;
                });
              }
              function h(Mt) {
                var St = Mt._fullLayout;
                St._redrawFromAutoMarginCount ? St._redrawFromAutoMarginCount-- : Mt.emit("plotly_afterplot");
              }
              function E(Mt) {
                return s.extendFlat(v, Mt);
              }
              function w(Mt, St) {
                try {
                  Mt._fullLayout._paper.style("background", St);
                } catch (Lt) {
                  s.error(Lt);
                }
              }
              function z(Mt, St) {
                var Lt = y.combine(St, "white");
                w(Mt, Lt);
              }
              function O(Mt, St) {
                if (!Mt._context) {
                  Mt._context = s.extendDeep({}, v);
                  var Lt = b.select("base");
                  Mt._context._baseUrl = Lt.size() && Lt.attr("href") ? window.location.href.split("#")[0] : "";
                }
                var te = Mt._context, fe, Me, ir;
                if (St) {
                  for (Me = Object.keys(St), fe = 0; fe < Me.length; fe++)
                    ir = Me[fe], !(ir === "editable" || ir === "edits") && ir in te && (ir === "setBackground" && St[ir] === "opaque" ? te[ir] = z : te[ir] = St[ir]);
                  St.plot3dPixelRatio && !te.plotGlPixelRatio && (te.plotGlPixelRatio = te.plot3dPixelRatio);
                  var mr = St.editable;
                  if (mr !== void 0)
                    for (te.editable = mr, Me = Object.keys(te.edits), fe = 0; fe < Me.length; fe++)
                      te.edits[Me[fe]] = mr;
                  if (St.edits)
                    for (Me = Object.keys(St.edits), fe = 0; fe < Me.length; fe++)
                      ir = Me[fe], ir in te.edits && (te.edits[ir] = St.edits[ir]);
                  te._exportedPlot = St._exportedPlot;
                }
                te.staticPlot && (te.editable = !1, te.edits = {}, te.autosizable = !1, te.scrollZoom = !1, te.doubleClick = !1, te.showTips = !1, te.showLink = !1, te.displayModeBar = !1), te.displayModeBar === "hover" && !n && (te.displayModeBar = !0), (te.setBackground === "transparent" || typeof te.setBackground != "function") && (te.setBackground = w), te._hasZeroHeight = te._hasZeroHeight || Mt.clientHeight === 0, te._hasZeroWidth = te._hasZeroWidth || Mt.clientWidth === 0;
                var Xe = te.scrollZoom, xe = te._scrollZoom = {};
                if (Xe === !0)
                  xe.cartesian = 1, xe.gl3d = 1, xe.geo = 1, xe.mapbox = 1, xe.map = 1;
                else if (typeof Xe == "string") {
                  var me = Xe.split("+");
                  for (fe = 0; fe < me.length; fe++)
                    xe[me[fe]] = 1;
                } else Xe !== !1 && (xe.gl3d = 1, xe.geo = 1, xe.mapbox = 1, xe.map = 1);
              }
              function B(Mt) {
                if (Mt = s.getGraphDiv(Mt), !s.isPlotDiv(Mt))
                  throw new Error("This element is not a Plotly plot: " + Mt);
                return _.cleanData(Mt.data), _.cleanLayout(Mt.layout), Mt.calcdata = void 0, K._doPlot(Mt).then(function() {
                  return Mt.emit("plotly_redraw"), Mt;
                });
              }
              function V(Mt, St, Lt, te) {
                return Mt = s.getGraphDiv(Mt), r.cleanPlot([], {}, Mt._fullData || [], Mt._fullLayout || {}), r.purge(Mt), K._doPlot(Mt, St, Lt, te);
              }
              function U(Mt, St) {
                var Lt = St + 1, te = [], fe, Me;
                for (fe = 0; fe < Mt.length; fe++)
                  Me = Mt[fe], Me < 0 ? te.push(Lt + Me) : te.push(Me);
                return te;
              }
              function H(Mt, St, Lt) {
                var te, fe;
                for (te = 0; te < St.length; te++) {
                  if (fe = St[te], fe !== parseInt(fe, 10))
                    throw new Error("all values in " + Lt + " must be integers");
                  if (fe >= Mt.data.length || fe < -Mt.data.length)
                    throw new Error(Lt + " must be valid indices for gd.data.");
                  if (St.indexOf(fe, te + 1) > -1 || fe >= 0 && St.indexOf(-Mt.data.length + fe) > -1 || fe < 0 && St.indexOf(Mt.data.length + fe) > -1)
                    throw new Error("each index in " + Lt + " must be unique.");
                }
              }
              function F(Mt, St, Lt) {
                if (!Array.isArray(Mt.data))
                  throw new Error("gd.data must be an array.");
                if (typeof St > "u")
                  throw new Error("currentIndices is a required argument.");
                if (Array.isArray(St) || (St = [St]), H(Mt, St, "currentIndices"), typeof Lt < "u" && !Array.isArray(Lt) && (Lt = [Lt]), typeof Lt < "u" && H(Mt, Lt, "newIndices"), typeof Lt < "u" && St.length !== Lt.length)
                  throw new Error("current and new indices must be of equal length.");
              }
              function G(Mt, St, Lt) {
                var te, fe;
                if (!Array.isArray(Mt.data))
                  throw new Error("gd.data must be an array.");
                if (typeof St > "u")
                  throw new Error("traces must be defined.");
                for (Array.isArray(St) || (St = [St]), te = 0; te < St.length; te++)
                  if (fe = St[te], typeof fe != "object" || Array.isArray(fe) || fe === null)
                    throw new Error("all values in traces array must be non-array objects");
                if (typeof Lt < "u" && !Array.isArray(Lt) && (Lt = [Lt]), typeof Lt < "u" && Lt.length !== St.length)
                  throw new Error("if indices is specified, traces.length must equal indices.length");
              }
              function q(Mt, St, Lt, te) {
                var fe = s.isPlainObject(te);
                if (!Array.isArray(Mt.data))
                  throw new Error("gd.data must be an array");
                if (!s.isPlainObject(St))
                  throw new Error("update must be a key:value object");
                if (typeof Lt > "u")
                  throw new Error("indices must be an integer or array of integers");
                H(Mt, Lt, "indices");
                for (var Me in St) {
                  if (!Array.isArray(St[Me]) || St[Me].length !== Lt.length)
                    throw new Error("attribute " + Me + " must be an array of length equal to indices array length");
                  if (fe && (!(Me in te) || !Array.isArray(te[Me]) || te[Me].length !== St[Me].length))
                    throw new Error("when maxPoints is set as a key:value object it must contain a 1:1 corrispondence with the keys and number of traces in the update object");
                }
              }
              function rt(Mt, St, Lt, te) {
                var fe = s.isPlainObject(te), Me = [], ir, mr, Xe, xe, me;
                Array.isArray(Lt) || (Lt = [Lt]), Lt = U(Lt, Mt.data.length - 1);
                for (var Le in St)
                  for (var qt = 0; qt < Lt.length; qt++) {
                    if (ir = Mt.data[Lt[qt]], Xe = T(ir, Le), mr = Xe.get(), xe = St[Le][qt], !s.isArrayOrTypedArray(xe))
                      throw new Error("attribute: " + Le + " index: " + qt + " must be an array");
                    if (!s.isArrayOrTypedArray(mr))
                      throw new Error("cannot extend missing or non-array attribute: " + Le);
                    if (mr.constructor !== xe.constructor)
                      throw new Error("cannot extend array with an array of a different type: " + Le);
                    me = fe ? te[Le][qt] : te, P(me) || (me = -1), Me.push({
                      prop: Xe,
                      target: mr,
                      insert: xe,
                      maxp: Math.floor(me)
                    });
                  }
                return Me;
              }
              function st(Mt, St, Lt, te, fe) {
                q(Mt, St, Lt, te);
                for (var Me = rt(Mt, St, Lt, te), ir = {}, mr = {}, Xe = 0; Xe < Me.length; Xe++) {
                  var xe = Me[Xe].prop, me = Me[Xe].maxp, Le = fe(Me[Xe].target, Me[Xe].insert, me);
                  xe.set(Le[0]), Array.isArray(ir[xe.astr]) || (ir[xe.astr] = []), ir[xe.astr].push(Le[1]), Array.isArray(mr[xe.astr]) || (mr[xe.astr] = []), mr[xe.astr].push(Me[Xe].target.length);
                }
                return {
                  update: ir,
                  maxPoints: mr
                };
              }
              function vt(Mt, St) {
                var Lt = new Mt.constructor(Mt.length + St.length);
                return Lt.set(Mt), Lt.set(St, Mt.length), Lt;
              }
              function ht(Mt, St, Lt, te) {
                Mt = s.getGraphDiv(Mt);
                function fe(Xe, xe, me) {
                  var Le, qt;
                  if (s.isTypedArray(Xe))
                    if (me < 0) {
                      var De = new Xe.constructor(0), Je = vt(Xe, xe);
                      me < 0 ? (Le = Je, qt = De) : (Le = De, qt = Je);
                    } else if (Le = new Xe.constructor(me), qt = new Xe.constructor(Xe.length + xe.length - me), me === xe.length)
                      Le.set(xe), qt.set(Xe);
                    else if (me < xe.length) {
                      var dr = xe.length - me;
                      Le.set(xe.subarray(dr)), qt.set(Xe), qt.set(xe.subarray(0, dr), Xe.length);
                    } else {
                      var qe = me - xe.length, we = Xe.length - qe;
                      Le.set(Xe.subarray(we)), Le.set(xe, qe), qt.set(Xe.subarray(0, we));
                    }
                  else
                    Le = Xe.concat(xe), qt = me >= 0 && me < Le.length ? Le.splice(0, Le.length - me) : [];
                  return [Le, qt];
                }
                var Me = st(Mt, St, Lt, te, fe), ir = K.redraw(Mt), mr = [Mt, Me.update, Lt, Me.maxPoints];
                return p.add(Mt, K.prependTraces, mr, ht, arguments), ir;
              }
              function et(Mt, St, Lt, te) {
                Mt = s.getGraphDiv(Mt);
                function fe(Xe, xe, me) {
                  var Le, qt;
                  if (s.isTypedArray(Xe))
                    if (me <= 0) {
                      var De = new Xe.constructor(0), Je = vt(xe, Xe);
                      me < 0 ? (Le = Je, qt = De) : (Le = De, qt = Je);
                    } else if (Le = new Xe.constructor(me), qt = new Xe.constructor(Xe.length + xe.length - me), me === xe.length)
                      Le.set(xe), qt.set(Xe);
                    else if (me < xe.length) {
                      var dr = xe.length - me;
                      Le.set(xe.subarray(0, dr)), qt.set(xe.subarray(dr)), qt.set(Xe, dr);
                    } else {
                      var qe = me - xe.length;
                      Le.set(xe), Le.set(Xe.subarray(0, qe), xe.length), qt.set(Xe.subarray(qe));
                    }
                  else
                    Le = xe.concat(Xe), qt = me >= 0 && me < Le.length ? Le.splice(me, Le.length) : [];
                  return [Le, qt];
                }
                var Me = st(Mt, St, Lt, te, fe), ir = K.redraw(Mt), mr = [Mt, Me.update, Lt, Me.maxPoints];
                return p.add(Mt, K.extendTraces, mr, et, arguments), ir;
              }
              function Q(Mt, St, Lt) {
                Mt = s.getGraphDiv(Mt);
                var te = [], fe = K.deleteTraces, Me = Q, ir = [Mt, te], mr = [Mt, St], Xe, xe;
                for (G(Mt, St, Lt), Array.isArray(St) || (St = [St]), St = St.map(function(me) {
                  return s.extendFlat({}, me);
                }), _.cleanData(St), Xe = 0; Xe < St.length; Xe++)
                  Mt.data.push(St[Xe]);
                for (Xe = 0; Xe < St.length; Xe++)
                  te.push(-St.length + Xe);
                if (typeof Lt > "u")
                  return xe = K.redraw(Mt), p.add(Mt, fe, ir, Me, mr), xe;
                Array.isArray(Lt) || (Lt = [Lt]);
                try {
                  F(Mt, te, Lt);
                } catch (me) {
                  throw Mt.data.splice(Mt.data.length - St.length, St.length), me;
                }
                return p.startSequence(Mt), p.add(Mt, fe, ir, Me, mr), xe = K.moveTraces(Mt, te, Lt), p.stopSequence(Mt), xe;
              }
              function j(Mt, St) {
                Mt = s.getGraphDiv(Mt);
                var Lt = [], te = K.addTraces, fe = j, Me = [Mt, Lt, St], ir = [Mt, St], mr, Xe;
                if (typeof St > "u")
                  throw new Error("indices must be an integer or array of integers.");
                for (Array.isArray(St) || (St = [St]), H(Mt, St, "indices"), St = U(St, Mt.data.length - 1), St.sort(s.sorterDes), mr = 0; mr < St.length; mr += 1)
                  Xe = Mt.data.splice(St[mr], 1)[0], Lt.push(Xe);
                var xe = K.redraw(Mt);
                return p.add(Mt, te, Me, fe, ir), xe;
              }
              function at(Mt, St, Lt) {
                Mt = s.getGraphDiv(Mt);
                var te = [], fe = [], Me = at, ir = at, mr = [Mt, Lt, St], Xe = [Mt, St, Lt], xe;
                if (F(Mt, St, Lt), St = Array.isArray(St) ? St : [St], typeof Lt > "u")
                  for (Lt = [], xe = 0; xe < St.length; xe++)
                    Lt.push(-St.length + xe);
                for (Lt = Array.isArray(Lt) ? Lt : [Lt], St = U(St, Mt.data.length - 1), Lt = U(Lt, Mt.data.length - 1), xe = 0; xe < Mt.data.length; xe++)
                  St.indexOf(xe) === -1 && te.push(Mt.data[xe]);
                for (xe = 0; xe < St.length; xe++)
                  fe.push({
                    newIndex: Lt[xe],
                    trace: Mt.data[St[xe]]
                  });
                for (fe.sort(function(Le, qt) {
                  return Le.newIndex - qt.newIndex;
                }), xe = 0; xe < fe.length; xe += 1)
                  te.splice(fe[xe].newIndex, 0, fe[xe].trace);
                Mt.data = te;
                var me = K.redraw(Mt);
                return p.add(Mt, Me, mr, ir, Xe), me;
              }
              function ut(Mt, St, Lt, te) {
                Mt = s.getGraphDiv(Mt), _.clearPromiseQueue(Mt);
                var fe = {};
                if (typeof St == "string") fe[St] = Lt;
                else if (s.isPlainObject(St))
                  fe = s.extendFlat({}, St), te === void 0 && (te = Lt);
                else
                  return s.warn("Restyle fail.", St, Lt, te), Promise.reject();
                Object.keys(fe).length && (Mt.changed = !0);
                var Me = _.coerceTraceIndices(Mt, te), ir = pt(Mt, fe, Me), mr = ir.flags;
                mr.calc && (Mt.calcdata = void 0), mr.clearAxisTypes && _.clearAxisTypes(Mt, Me, {});
                var Xe = [];
                mr.fullReplot ? Xe.push(K._doPlot) : (Xe.push(r.previousPromises), r.supplyDefaults(Mt), mr.markerSize && (r.doCalcdata(Mt), Gt(Xe)), mr.style && Xe.push(S.doTraceStyle), mr.colorbars && Xe.push(S.doColorBars), Xe.push(h)), Xe.push(r.rehover, r.redrag, r.reselect), p.add(Mt, ut, [Mt, ir.undoit, ir.traces], ut, [Mt, ir.redoit, ir.traces]);
                var xe = s.syncOrAsync(Xe, Mt);
                return (!xe || !xe.then) && (xe = Promise.resolve()), xe.then(function() {
                  return Mt.emit("plotly_restyle", ir.eventData), Mt;
                });
              }
              function nt(Mt) {
                return Mt === void 0 ? null : Mt;
              }
              function X(Mt, St) {
                return St ? function(Lt, te, fe) {
                  var Me = T(Lt, te), ir = Me.set;
                  return Me.set = function(mr) {
                    var Xe = (fe || "") + te;
                    ct(Xe, Me.get(), mr, Mt), ir(mr);
                  }, Me;
                } : T;
              }
              function ct(Mt, St, Lt, te) {
                if (Array.isArray(St) || Array.isArray(Lt))
                  for (var fe = Array.isArray(St) ? St : [], Me = Array.isArray(Lt) ? Lt : [], ir = Math.max(fe.length, Me.length), mr = 0; mr < ir; mr++)
                    ct(Mt + "[" + mr + "]", fe[mr], Me[mr], te);
                else if (s.isPlainObject(St) || s.isPlainObject(Lt)) {
                  var Xe = s.isPlainObject(St) ? St : {}, xe = s.isPlainObject(Lt) ? Lt : {}, me = s.extendFlat({}, Xe, xe);
                  for (var Le in me)
                    ct(Mt + "." + Le, Xe[Le], xe[Le], te);
                } else te[Mt] === void 0 && (te[Mt] = nt(St));
              }
              function lt(Mt, St, Lt) {
                for (var te in Lt) {
                  var fe = T(Mt, te);
                  ct(te, fe.get(), Lt[te], St);
                }
              }
              function pt(Mt, St, Lt) {
                var te = Mt._fullLayout, fe = Mt._fullData, Me = Mt.data, ir = te._guiEditing, mr = X(te._preGUI, ir), Xe = s.extendDeepAll({}, St), xe;
                wt(St);
                var me = M.traceFlags(), Le = {}, qt = {}, De;
                function Je() {
                  return Lt.map(function() {
                  });
                }
                function dr(Vn) {
                  var jr = i.id2name(Vn);
                  De.indexOf(jr) === -1 && De.push(jr);
                }
                function qe(Vn) {
                  return "LAYOUT" + Vn + ".autorange";
                }
                function we(Vn) {
                  return "LAYOUT" + Vn + ".range";
                }
                function ue(Vn) {
                  for (var jr = Vn; jr < fe.length; jr++)
                    if (fe[jr]._input === Me[Vn]) return fe[jr];
                }
                function Pe(Vn, jr, zr) {
                  if (Array.isArray(Vn)) {
                    Vn.forEach(function(kn) {
                      Pe(kn, jr, zr);
                    });
                    return;
                  }
                  if (!(Vn in St || _.hasParent(St, Vn))) {
                    var Tn;
                    if (Vn.substr(0, 6) === "LAYOUT")
                      Tn = mr(Mt.layout, Vn.replace("LAYOUT", ""));
                    else {
                      var sn = Lt[zr], $n = te._tracePreGUI[ue(sn)._fullInput.uid];
                      Tn = X($n, ir)(Me[sn], Vn);
                    }
                    Vn in qt || (qt[Vn] = Je()), qt[Vn][zr] === void 0 && (qt[Vn][zr] = nt(Tn.get())), jr !== void 0 && Tn.set(jr);
                  }
                }
                function Ue(Vn) {
                  return function(jr) {
                    return fe[jr][Vn];
                  };
                }
                function Ye(Vn) {
                  return function(jr, zr) {
                    return jr === !1 ? fe[Lt[zr]][Vn] : null;
                  };
                }
                for (var rr in St) {
                  if (_.hasParent(St, rr))
                    throw new Error("cannot set " + rr + " and a parent attribute simultaneously");
                  var lr = St[rr], hr, Sr, Dr, Or, Br, Nr;
                  if ((rr === "autobinx" || rr === "autobiny") && (rr = rr.charAt(rr.length - 1) + "bins", Array.isArray(lr) ? lr = lr.map(Ye(rr)) : lr === !1 ? lr = Lt.map(Ue(rr)) : lr = null), Le[rr] = lr, rr.substr(0, 6) === "LAYOUT") {
                    Dr = mr(Mt.layout, rr.replace("LAYOUT", "")), qt[rr] = [nt(Dr.get())], Dr.set(Array.isArray(lr) ? lr[0] : lr), me.calc = !0;
                    continue;
                  }
                  for (qt[rr] = Je(), xe = 0; xe < Lt.length; xe++) {
                    hr = Me[Lt[xe]], Sr = ue(Lt[xe]);
                    var Xr = te._tracePreGUI[Sr._fullInput.uid];
                    if (Dr = X(Xr, ir)(hr, rr), Or = Dr.get(), Br = Array.isArray(lr) ? lr[xe % lr.length] : lr, Br !== void 0) {
                      var Gr = Dr.parts[Dr.parts.length - 1], oe = rr.substr(0, rr.length - Gr.length - 1), de = oe ? oe + "." : "", or = oe ? T(Sr, oe).get() : Sr;
                      if (Nr = t.getTraceValObject(Sr, Dr.parts), Nr && Nr.impliedEdits && Br !== null)
                        for (var Er in Nr.impliedEdits)
                          Pe(s.relativeAttr(rr, Er), Nr.impliedEdits[Er], xe);
                      else if ((Gr === "thicknessmode" || Gr === "lenmode") && Or !== Br && (Br === "fraction" || Br === "pixels") && or) {
                        var Tr = te._size, tr = or.orient, yr = tr === "top" || tr === "bottom";
                        if (Gr === "thicknessmode") {
                          var Ir = yr ? Tr.h : Tr.w;
                          Pe(de + "thickness", or.thickness * (Br === "fraction" ? 1 / Ir : Ir), xe);
                        } else {
                          var Cr = yr ? Tr.w : Tr.h;
                          Pe(de + "len", or.len * (Br === "fraction" ? 1 / Cr : Cr), xe);
                        }
                      } else if (rr === "type" && (Br === "pie" != (Or === "pie") || Br === "funnelarea" != (Or === "funnelarea"))) {
                        var _r = "x", Zr = "y";
                        (Br === "bar" || Or === "bar") && hr.orientation === "h" && (_r = "y", Zr = "x"), s.swapAttrs(hr, ["?", "?src"], "labels", _r), s.swapAttrs(hr, ["d?", "?0"], "label", _r), s.swapAttrs(hr, ["?", "?src"], "values", Zr), Or === "pie" || Or === "funnelarea" ? (T(hr, "marker.color").set(T(hr, "marker.colors").get()), te._pielayer.selectAll("g.trace").remove()) : u.traceIs(hr, "cartesian") && T(hr, "marker.colors").set(T(hr, "marker.color").get());
                      }
                      qt[rr][xe] = nt(Or);
                      var ln = ["swapxy", "swapxyaxes", "orientation", "orientationaxes"];
                      if (ln.indexOf(rr) !== -1) {
                        if (rr === "orientation") {
                          Dr.set(Br);
                          var Jr = hr.x && !hr.y ? "h" : "v";
                          if ((Dr.get() || Jr) === Sr.orientation)
                            continue;
                        } else rr === "orientationaxes" && (hr.orientation = {
                          v: "h",
                          h: "v"
                        }[Sr.orientation]);
                        _.swapXYData(hr), me.calc = me.clearAxisTypes = !0;
                      } else r.dataArrayContainers.indexOf(Dr.parts[0]) !== -1 ? (_.manageArrayContainers(Dr, Br, qt), me.calc = !0) : (Nr ? Nr.arrayOk && !u.traceIs(Sr, "regl") && (s.isArrayOrTypedArray(Br) || s.isArrayOrTypedArray(Or)) ? me.calc = !0 : M.update(me, Nr) : me.calc = !0, Dr.set(Br));
                    }
                  }
                  if (["swapxyaxes", "orientationaxes"].indexOf(rr) !== -1 && i.swap(Mt, Lt), rr === "orientationaxes") {
                    var Zn = T(Mt.layout, "hovermode"), fn = Zn.get();
                    fn === "x" ? Zn.set("y") : fn === "y" ? Zn.set("x") : fn === "x unified" ? Zn.set("y unified") : fn === "y unified" && Zn.set("x unified");
                  }
                  if (["orientation", "type"].indexOf(rr) !== -1) {
                    for (De = [], xe = 0; xe < Lt.length; xe++) {
                      var hi = Me[Lt[xe]];
                      u.traceIs(hi, "cartesian") && (dr(hi.xaxis || "x"), dr(hi.yaxis || "y"));
                    }
                    Pe(De.map(qe), !0, 0), Pe(De.map(we), [0, 1], 0);
                  }
                }
                return (me.calc || me.plot) && (me.fullReplot = !0), {
                  flags: me,
                  undoit: qt,
                  redoit: Le,
                  traces: Lt,
                  eventData: s.extendDeepNoArrays([], [Xe, Lt])
                };
              }
              function wt(Mt) {
                var St = s.counterRegex("axis", ".title", !1, !1), Lt = /colorbar\.title$/, te = Object.keys(Mt), fe, Me, ir;
                for (fe = 0; fe < te.length; fe++)
                  Me = te[fe], ir = Mt[Me], (Me === "title" || St.test(Me) || Lt.test(Me)) && (typeof ir == "string" || typeof ir == "number") ? mr(Me, Me.replace("title", "title.text")) : Me.indexOf("titlefont") > -1 && Me.indexOf("grouptitlefont") === -1 ? mr(Me, Me.replace("titlefont", "title.font")) : Me.indexOf("titleposition") > -1 ? mr(Me, Me.replace("titleposition", "title.position")) : Me.indexOf("titleside") > -1 ? mr(Me, Me.replace("titleside", "title.side")) : Me.indexOf("titleoffset") > -1 && mr(Me, Me.replace("titleoffset", "title.offset"));
                function mr(Xe, xe) {
                  Mt[xe] = Mt[Xe], delete Mt[Xe];
                }
              }
              function Et(Mt, St, Lt) {
                Mt = s.getGraphDiv(Mt), _.clearPromiseQueue(Mt);
                var te = {};
                if (typeof St == "string")
                  te[St] = Lt;
                else if (s.isPlainObject(St))
                  te = s.extendFlat({}, St);
                else
                  return s.warn("Relayout fail.", St, Lt), Promise.reject();
                Object.keys(te).length && (Mt.changed = !0);
                var fe = zt(Mt, te), Me = fe.flags;
                Me.calc && (Mt.calcdata = void 0);
                var ir = [r.previousPromises];
                Me.layoutReplot ? ir.push(S.layoutReplot) : Object.keys(te).length && (Ct(Mt, Me, fe) || r.supplyDefaults(Mt), Me.legend && ir.push(S.doLegend), Me.layoutstyle && ir.push(S.layoutStyles), Me.axrange && Gt(ir, fe.rangesAltered), Me.ticks && ir.push(S.doTicksRelayout), Me.modebar && ir.push(S.doModeBar), Me.camera && ir.push(S.doCamera), Me.colorbars && ir.push(S.doColorBars), ir.push(h)), ir.push(r.rehover, r.redrag, r.reselect), p.add(Mt, Et, [Mt, fe.undoit], Et, [Mt, fe.redoit]);
                var mr = s.syncOrAsync(ir, Mt);
                return (!mr || !mr.then) && (mr = Promise.resolve(Mt)), mr.then(function() {
                  return Mt.emit("plotly_relayout", fe.eventData), Mt;
                });
              }
              function Ct(Mt, St, Lt) {
                var te = Mt._fullLayout;
                if (!St.axrange) return !1;
                for (var fe in St)
                  if (fe !== "axrange" && St[fe]) return !1;
                var Me, ir, mr = function(De, Je) {
                  return s.coerce(Me, ir, l, De, Je);
                }, Xe = {};
                for (var xe in Lt.rangesAltered) {
                  var me = i.id2name(xe);
                  if (Me = Mt.layout[me], ir = te[me], a(Me, ir, mr, Xe), ir._matchGroup) {
                    for (var Le in ir._matchGroup)
                      if (Le !== xe) {
                        var qt = te[i.id2name(Le)];
                        qt.autorange = ir.autorange, qt.range = ir.range.slice(), qt._input.range = ir.range.slice();
                      }
                  }
                }
                return !0;
              }
              function Gt(Mt, St) {
                var Lt = St ? function(te) {
                  var fe = [], Me = !0;
                  for (var ir in St) {
                    var mr = i.getFromId(te, ir);
                    if (fe.push(ir), (mr.ticklabelposition || "").indexOf("inside") !== -1 && mr._anchorAxis && fe.push(mr._anchorAxis._id), mr._matchGroup)
                      for (var Xe in mr._matchGroup)
                        St[Xe] || fe.push(Xe);
                  }
                  return i.draw(te, fe, {
                    skipTitle: Me
                  });
                } : function(te) {
                  return i.draw(te, "redraw");
                };
                Mt.push(c, S.doAutoRangeAndConstraints, Lt, S.drawData, S.finalDraw);
              }
              var Jt = /^[xyz]axis[0-9]*\.range(\[[0|1]\])?$/, Qt = /^[xyz]axis[0-9]*\.autorange$/, Vt = /^[xyz]axis[0-9]*\.domain(\[[0|1]\])?$/;
              function zt(Mt, St) {
                var Lt = Mt.layout, te = Mt._fullLayout, fe = te._guiEditing, Me = X(te._preGUI, fe), ir = Object.keys(St), mr = i.list(Mt), Xe = s.extendDeepAll({}, St), xe = {}, me, Le, qt;
                for (wt(St), ir = Object.keys(St), Le = 0; Le < ir.length; Le++)
                  if (ir[Le].indexOf("allaxes") === 0) {
                    for (qt = 0; qt < mr.length; qt++) {
                      var De = mr[qt]._id.substr(1), Je = De.indexOf("scene") !== -1 ? De + "." : "", dr = ir[Le].replace("allaxes", Je + mr[qt]._name);
                      St[dr] || (St[dr] = St[ir[Le]]);
                    }
                    delete St[ir[Le]];
                  }
                var qe = M.layoutFlags(), we = {}, ue = {};
                function Pe($n, kn) {
                  if (Array.isArray($n)) {
                    $n.forEach(function(qn) {
                      Pe(qn, kn);
                    });
                    return;
                  }
                  if (!($n in St || _.hasParent(St, $n))) {
                    var An = Me(Lt, $n);
                    $n in ue || (ue[$n] = nt(An.get())), kn !== void 0 && An.set(kn);
                  }
                }
                var Ue = {}, Ye;
                function rr($n) {
                  var kn = i.name2id($n.split(".")[0]);
                  return Ue[kn] = 1, kn;
                }
                for (var lr in St) {
                  if (_.hasParent(St, lr))
                    throw new Error("cannot set " + lr + " and a parent attribute simultaneously");
                  for (var hr = Me(Lt, lr), Sr = St[lr], Dr = hr.parts.length, Or = Dr - 1; Or > 0 && typeof hr.parts[Or] != "string"; ) Or--;
                  var Br = hr.parts[Or], Nr = hr.parts[Or - 1] + "." + Br, Xr = hr.parts.slice(0, Or).join("."), Gr = T(Mt.layout, Xr).get(), oe = T(te, Xr).get(), de = hr.get();
                  if (Sr !== void 0) {
                    we[lr] = Sr, ue[lr] = Br === "reverse" ? Sr : nt(de);
                    var or = t.getLayoutValObject(te, hr.parts);
                    if (or && or.impliedEdits && Sr !== null)
                      for (var Er in or.impliedEdits)
                        Pe(s.relativeAttr(lr, Er), or.impliedEdits[Er]);
                    if (["width", "height"].indexOf(lr) !== -1)
                      if (Sr) {
                        Pe("autosize", null);
                        var Tr = lr === "height" ? "width" : "height";
                        Pe(Tr, te[Tr]);
                      } else
                        te[lr] = Mt._initialAutoSize[lr];
                    else if (lr === "autosize")
                      Pe("width", Sr ? null : te.width), Pe("height", Sr ? null : te.height);
                    else if (Nr.match(Jt))
                      rr(Nr), T(te, Xr + "._inputRange").set(null);
                    else if (Nr.match(Qt)) {
                      rr(Nr), T(te, Xr + "._inputRange").set(null);
                      var tr = T(te, Xr).get();
                      tr._inputDomain && (tr._input.domain = tr._inputDomain.slice());
                    } else Nr.match(Vt) && T(te, Xr + "._inputDomain").set(null);
                    if (Br === "type") {
                      Ye = Gr;
                      var yr = oe.type === "linear" && Sr === "log", Ir = oe.type === "log" && Sr === "linear";
                      if (yr || Ir) {
                        if (!Ye || !Ye.range)
                          Pe(Xr + ".autorange", !0);
                        else if (oe.autorange)
                          yr && (Ye.range = Ye.range[1] > Ye.range[0] ? [1, 2] : [2, 1]);
                        else {
                          var Cr = Ye.range[0], _r = Ye.range[1];
                          yr ? (Cr <= 0 && _r <= 0 && Pe(Xr + ".autorange", !0), Cr <= 0 ? Cr = _r / 1e6 : _r <= 0 && (_r = Cr / 1e6), Pe(Xr + ".range[0]", Math.log(Cr) / Math.LN10), Pe(Xr + ".range[1]", Math.log(_r) / Math.LN10)) : (Pe(Xr + ".range[0]", Math.pow(10, Cr)), Pe(Xr + ".range[1]", Math.pow(10, _r)));
                        }
                        Array.isArray(te._subplots.polar) && te._subplots.polar.length && te[hr.parts[0]] && hr.parts[1] === "radialaxis" && delete te[hr.parts[0]]._subplot.viewInitial["radialaxis.range"], u.getComponentMethod("annotations", "convertCoords")(Mt, oe, Sr, Pe), u.getComponentMethod("images", "convertCoords")(Mt, oe, Sr, Pe);
                      } else
                        Pe(Xr + ".autorange", !0), Pe(Xr + ".range", null);
                      T(te, Xr + "._inputRange").set(null);
                    } else if (Br.match(C)) {
                      var Zr = T(te, lr).get(), ln = (Sr || {}).type;
                      (!ln || ln === "-") && (ln = "linear"), u.getComponentMethod("annotations", "convertCoords")(Mt, Zr, ln, Pe), u.getComponentMethod("images", "convertCoords")(Mt, Zr, ln, Pe);
                    }
                    var Jr = f.containerArrayMatch(lr);
                    if (Jr) {
                      me = Jr.array, Le = Jr.index;
                      var Zn = Jr.property, fn = or || {
                        editType: "calc"
                      };
                      Le !== "" && Zn === "" && (f.isAddVal(Sr) ? ue[lr] = null : f.isRemoveVal(Sr) ? ue[lr] = (T(Lt, me).get() || [])[Le] : s.warn("unrecognized full object value", St)), M.update(qe, fn), xe[me] || (xe[me] = {});
                      var hi = xe[me][Le];
                      hi || (hi = xe[me][Le] = {}), hi[Zn] = Sr, delete St[lr];
                    } else Br === "reverse" ? (Gr.range ? Gr.range.reverse() : (Pe(Xr + ".autorange", !0), Gr.range = [1, 0]), oe.autorange ? qe.calc = !0 : qe.plot = !0) : (lr === "dragmode" && (Sr === !1 && de !== !1 || Sr !== !1 && de === !1) || te._has("scatter-like") && te._has("regl") && lr === "dragmode" && (Sr === "lasso" || Sr === "select") && !(de === "lasso" || de === "select") || te._has("gl2d") ? qe.plot = !0 : or ? M.update(qe, or) : qe.calc = !0, hr.set(Sr));
                  }
                }
                for (me in xe) {
                  var Vn = f.applyContainerArrayChanges(Mt, Me(Lt, me), xe[me], qe, Me);
                  Vn || (qe.plot = !0);
                }
                for (var jr in Ue) {
                  Ye = i.getFromId(Mt, jr);
                  var zr = Ye && Ye._constraintGroup;
                  if (zr) {
                    qe.calc = !0;
                    for (var Tn in zr)
                      Ue[Tn] || (i.getFromId(Mt, Tn)._constraintShrinkable = !0);
                  }
                }
                (Rt(Mt) || St.height || St.width) && (qe.plot = !0);
                var sn = te.shapes;
                for (Le = 0; Le < sn.length; Le++)
                  if (sn[Le].showlegend) {
                    qe.calc = !0;
                    break;
                  }
                return (qe.plot || qe.calc) && (qe.layoutReplot = !0), {
                  flags: qe,
                  rangesAltered: Ue,
                  undoit: ue,
                  redoit: we,
                  eventData: Xe
                };
              }
              function Rt(Mt) {
                var St = Mt._fullLayout, Lt = St.width, te = St.height;
                return Mt.layout.autosize && r.plotAutoSize(Mt, Mt.layout, St), St.width !== Lt || St.height !== te;
              }
              function Wt(Mt, St, Lt, te) {
                Mt = s.getGraphDiv(Mt), _.clearPromiseQueue(Mt), s.isPlainObject(St) || (St = {}), s.isPlainObject(Lt) || (Lt = {}), Object.keys(St).length && (Mt.changed = !0), Object.keys(Lt).length && (Mt.changed = !0);
                var fe = _.coerceTraceIndices(Mt, te), Me = pt(Mt, s.extendFlat({}, St), fe), ir = Me.flags, mr = zt(Mt, s.extendFlat({}, Lt)), Xe = mr.flags;
                (ir.calc || Xe.calc) && (Mt.calcdata = void 0), ir.clearAxisTypes && _.clearAxisTypes(Mt, fe, Lt);
                var xe = [];
                Xe.layoutReplot ? xe.push(S.layoutReplot) : ir.fullReplot ? xe.push(K._doPlot) : (xe.push(r.previousPromises), Ct(Mt, Xe, mr) || r.supplyDefaults(Mt), ir.style && xe.push(S.doTraceStyle), (ir.colorbars || Xe.colorbars) && xe.push(S.doColorBars), Xe.legend && xe.push(S.doLegend), Xe.layoutstyle && xe.push(S.layoutStyles), Xe.axrange && Gt(xe, mr.rangesAltered), Xe.ticks && xe.push(S.doTicksRelayout), Xe.modebar && xe.push(S.doModeBar), Xe.camera && xe.push(S.doCamera), xe.push(h)), xe.push(r.rehover, r.redrag, r.reselect), p.add(Mt, Wt, [Mt, Me.undoit, mr.undoit, Me.traces], Wt, [Mt, Me.redoit, mr.redoit, Me.traces]);
                var me = s.syncOrAsync(xe, Mt);
                return (!me || !me.then) && (me = Promise.resolve(Mt)), me.then(function() {
                  return Mt.emit("plotly_update", {
                    data: Me.eventData,
                    layout: mr.eventData
                  }), Mt;
                });
              }
              function kt(Mt) {
                return function(Lt) {
                  Lt._fullLayout._guiEditing = !0;
                  var te = Mt.apply(null, arguments);
                  return Lt._fullLayout._guiEditing = !1, te;
                };
              }
              var re = [
                {
                  pattern: /^hiddenlabels/,
                  attr: "legend.uirevision"
                },
                {
                  pattern: /^((x|y)axis\d*)\.((auto)?range|title\.text)/
                },
                // showspikes and modes include those nested inside scenes
                {
                  pattern: /axis\d*\.showspikes$/,
                  attr: "modebar.uirevision"
                },
                {
                  pattern: /(hover|drag)mode$/,
                  attr: "modebar.uirevision"
                },
                {
                  pattern: /^(scene\d*)\.camera/
                },
                {
                  pattern: /^(geo\d*)\.(projection|center|fitbounds)/
                },
                {
                  pattern: /^(ternary\d*\.[abc]axis)\.(min|title\.text)$/
                },
                {
                  pattern: /^(polar\d*\.radialaxis)\.((auto)?range|angle|title\.text)/
                },
                {
                  pattern: /^(polar\d*\.angularaxis)\.rotation/
                },
                {
                  pattern: /^(mapbox\d*)\.(center|zoom|bearing|pitch)/
                },
                {
                  pattern: /^(map\d*)\.(center|zoom|bearing|pitch)/
                },
                {
                  pattern: /^legend\.(x|y)$/,
                  attr: "editrevision"
                },
                {
                  pattern: /^(shapes|annotations)/,
                  attr: "editrevision"
                },
                {
                  pattern: /^title\.text$/,
                  attr: "editrevision"
                }
              ], ge = [
                {
                  pattern: /^selectedpoints$/,
                  attr: "selectionrevision"
                },
                // "visible" includes trace.transforms[i].styles[j].value.visible
                {
                  pattern: /(^|value\.)visible$/,
                  attr: "legend.uirevision"
                },
                {
                  pattern: /^dimensions\[\d+\]\.constraintrange/
                },
                {
                  pattern: /^node\.(x|y|groups)/
                },
                // for Sankey nodes
                {
                  pattern: /^level$/
                },
                // for Sunburst, Treemap and Icicle traces
                // below this you must be in editable: true mode
                // TODO: I still put name and title with `trace.uirevision`
                // reasonable or should these be `editrevision`?
                // Also applies to axis titles up in the layout section
                // "name" also includes transform.styles
                {
                  pattern: /(^|value\.)name$/
                },
                // including nested colorbar attributes (ie marker.colorbar)
                {
                  pattern: /colorbar\.title\.text$/
                },
                {
                  pattern: /colorbar\.(x|y)$/,
                  attr: "editrevision"
                }
              ];
              function _e(Mt, St) {
                for (var Lt = 0; Lt < St.length; Lt++) {
                  var te = St[Lt], fe = Mt.match(te.pattern);
                  if (fe) {
                    var Me = fe[1] || "";
                    return {
                      head: Me,
                      tail: Mt.substr(Me.length + 1),
                      attr: te.attr
                    };
                  }
                }
              }
              function ce(Mt, St) {
                var Lt = T(St, Mt).get();
                if (Lt !== void 0) return Lt;
                var te = Mt.split(".");
                for (te.pop(); te.length > 1; )
                  if (te.pop(), Lt = T(St, te.join(".") + ".uirevision").get(), Lt !== void 0) return Lt;
                return St.uirevision;
              }
              function ae(Mt, St) {
                for (var Lt = 0; Lt < St.length; Lt++)
                  if (St[Lt]._fullInput.uid === Mt) return Lt;
                return -1;
              }
              function Se(Mt, St, Lt) {
                for (var te = 0; te < St.length; te++)
                  if (St[te].uid === Mt) return te;
                return !St[Lt] || St[Lt].uid ? -1 : Lt;
              }
              function ze(Mt, St) {
                var Lt = s.isPlainObject(Mt), te = Array.isArray(Mt);
                return Lt || te ? (Lt && s.isPlainObject(St) || te && Array.isArray(St)) && JSON.stringify(Mt) === JSON.stringify(St) : Mt === St;
              }
              function Ne(Mt, St, Lt, te) {
                var fe = te._preGUI, Me, ir, mr, Xe, xe, me, Le, qt, De, Je, dr = [], qe = {}, we = {};
                for (Me in fe) {
                  if (xe = _e(Me, re), xe) {
                    if (De = xe.head, Je = xe.tail, ir = xe.attr || De + ".uirevision", mr = T(te, ir).get(), Xe = mr && ce(ir, St), Xe && Xe === mr) {
                      if (me = fe[Me], me === null && (me = void 0), Le = T(St, Me), qt = Le.get(), ze(qt, me)) {
                        qt === void 0 && Je === "autorange" && dr.push(De), Le.set(nt(T(te, Me).get()));
                        continue;
                      } else if (Je === "autorange" || Je.substr(0, 6) === "range[") {
                        var ue = fe[De + ".range[0]"], Pe = fe[De + ".range[1]"], Ue = fe[De + ".autorange"];
                        if (Ue || Ue === null && ue === null && Pe === null) {
                          if (!(De in qe)) {
                            var Ye = T(St, De).get();
                            qe[De] = Ye && (Ye.autorange || Ye.autorange !== !1 && (!Ye.range || Ye.range.length !== 2));
                          }
                          if (qe[De]) {
                            Le.set(nt(T(te, Me).get()));
                            continue;
                          }
                        }
                      }
                    }
                  } else
                    s.warn("unrecognized GUI edit: " + Me);
                  delete fe[Me], xe && xe.tail.substr(0, 6) === "range[" && (we[xe.head] = 1);
                }
                for (var rr = 0; rr < dr.length; rr++) {
                  var lr = dr[rr];
                  if (we[lr]) {
                    var hr = T(St, lr).get();
                    hr && delete hr.autorange;
                  }
                }
                var Sr = te._tracePreGUI;
                for (var Dr in Sr) {
                  var Or = Sr[Dr], Br = null, Nr;
                  for (Me in Or) {
                    if (!Br) {
                      var Xr = ae(Dr, Lt);
                      if (Xr < 0) {
                        delete Sr[Dr];
                        break;
                      }
                      var Gr = Lt[Xr];
                      Nr = Gr._fullInput;
                      var oe = Se(Dr, Mt, Nr.index);
                      if (oe < 0) {
                        delete Sr[Dr];
                        break;
                      }
                      Br = Mt[oe];
                    }
                    if (xe = _e(Me, ge), xe) {
                      if (xe.attr ? (mr = T(te, xe.attr).get(), Xe = mr && ce(xe.attr, St)) : (mr = Nr.uirevision, Xe = Br.uirevision, Xe === void 0 && (Xe = St.uirevision)), Xe && Xe === mr && (me = Or[Me], me === null && (me = void 0), Le = T(Br, Me), qt = Le.get(), ze(qt, me))) {
                        Le.set(nt(T(Nr, Me).get()));
                        continue;
                      }
                    } else
                      s.warn("unrecognized GUI edit: " + Me + " in trace uid " + Dr);
                    delete Or[Me];
                  }
                }
              }
              function Ve(Mt, St, Lt, te) {
                var fe, Me;
                function ir() {
                  return K.addFrames(Mt, fe);
                }
                Mt = s.getGraphDiv(Mt), _.clearPromiseQueue(Mt);
                var mr = Mt._fullData, Xe = Mt._fullLayout;
                if (!s.isPlotDiv(Mt) || !mr || !Xe)
                  Me = K.newPlot(Mt, St, Lt, te);
                else {
                  if (s.isPlainObject(St)) {
                    var xe = St;
                    St = xe.data, Lt = xe.layout, te = xe.config, fe = xe.frames;
                  }
                  var me = !1;
                  if (te) {
                    var Le = s.extendDeep({}, Mt._context);
                    Mt._context = void 0, O(Mt, te), me = $t(Le, Mt._context);
                  }
                  Mt.data = St || [], _.cleanData(Mt.data), Mt.layout = Lt || {}, _.cleanLayout(Mt.layout), Ne(Mt.data, Mt.layout, mr, Xe), r.supplyDefaults(Mt, {
                    skipUpdateCalc: !0
                  });
                  var qt = Mt._fullData, De = Mt._fullLayout, Je = De.datarevision === void 0, dr = De.transition, qe = ur(Mt, Xe, De, Je, dr), we = qe.newDataRevision, ue = Oe(Mt, mr, qt, Je, dr, we);
                  if (Rt(Mt) && (qe.layoutReplot = !0), ue.calc || qe.calc) {
                    Mt.calcdata = void 0;
                    for (var Pe = Object.getOwnPropertyNames(De), Ue = 0; Ue < Pe.length; Ue++) {
                      var Ye = Pe[Ue], rr = Ye.substring(0, 5);
                      if (rr === "xaxis" || rr === "yaxis") {
                        var lr = De[Ye]._emptyCategories;
                        lr && lr();
                      }
                    }
                  } else
                    r.supplyDefaultsUpdateCalc(Mt.calcdata, qt);
                  var hr = [];
                  if (fe && (Mt._transitionData = {}, r.createTransitionData(Mt), hr.push(ir)), De.transition && !me && (ue.anim || qe.anim))
                    qe.ticks && hr.push(S.doTicksRelayout), r.doCalcdata(Mt), S.doAutoRangeAndConstraints(Mt), hr.push(function() {
                      return r.transitionFromReact(Mt, ue, qe, Xe);
                    });
                  else if (ue.fullReplot || qe.layoutReplot || me)
                    Mt._fullLayout._skipDefaults = !0, hr.push(K._doPlot);
                  else {
                    for (var Sr in qe.arrays) {
                      var Dr = qe.arrays[Sr];
                      if (Dr.length) {
                        var Or = u.getComponentMethod(Sr, "drawOne");
                        if (Or !== s.noop)
                          for (var Br = 0; Br < Dr.length; Br++)
                            Or(Mt, Dr[Br]);
                        else {
                          var Nr = u.getComponentMethod(Sr, "draw");
                          if (Nr === s.noop)
                            throw new Error("cannot draw components: " + Sr);
                          Nr(Mt);
                        }
                      }
                    }
                    hr.push(r.previousPromises), ue.style && hr.push(S.doTraceStyle), (ue.colorbars || qe.colorbars) && hr.push(S.doColorBars), qe.legend && hr.push(S.doLegend), qe.layoutstyle && hr.push(S.layoutStyles), qe.axrange && Gt(hr), qe.ticks && hr.push(S.doTicksRelayout), qe.modebar && hr.push(S.doModeBar), qe.camera && hr.push(S.doCamera), hr.push(h);
                  }
                  hr.push(r.rehover, r.redrag, r.reselect), Me = s.syncOrAsync(hr, Mt), (!Me || !Me.then) && (Me = Promise.resolve(Mt));
                }
                return Me.then(function() {
                  return Mt.emit("plotly_react", {
                    data: St,
                    layout: Lt
                  }), Mt;
                });
              }
              function Oe(Mt, St, Lt, te, fe, Me) {
                var ir = St.length === Lt.length;
                if (!fe && !ir)
                  return {
                    fullReplot: !0,
                    calc: !0
                  };
                var mr = M.traceFlags();
                mr.arrays = {}, mr.nChanges = 0, mr.nChangesAnim = 0;
                var Xe, xe;
                function me(De) {
                  var Je = t.getTraceValObject(xe, De);
                  return !xe._module.animatable && Je.anim && (Je.anim = !1), Je;
                }
                var Le = {
                  getValObject: me,
                  flags: mr,
                  immutable: te,
                  transition: fe,
                  newDataRevision: Me,
                  gd: Mt
                }, qt = {};
                for (Xe = 0; Xe < St.length; Xe++)
                  if (Lt[Xe]) {
                    if (xe = Lt[Xe]._fullInput, r.hasMakesDataTransform(xe) && (xe = Lt[Xe]), qt[xe.uid]) continue;
                    qt[xe.uid] = 1, ie(St[Xe]._fullInput, xe, [], Le);
                  }
                return (mr.calc || mr.plot) && (mr.fullReplot = !0), fe && mr.nChanges && mr.nChangesAnim && (mr.anim = mr.nChanges === mr.nChangesAnim && ir ? "all" : "some"), mr;
              }
              function ur(Mt, St, Lt, te, fe) {
                var Me = M.layoutFlags();
                Me.arrays = {}, Me.rangesAltered = {}, Me.nChanges = 0, Me.nChangesAnim = 0;
                function ir(Xe) {
                  return t.getLayoutValObject(Lt, Xe);
                }
                var mr = {
                  getValObject: ir,
                  flags: Me,
                  immutable: te,
                  transition: fe,
                  gd: Mt
                };
                return ie(St, Lt, [], mr), (Me.plot || Me.calc) && (Me.layoutReplot = !0), fe && Me.nChanges && Me.nChangesAnim && (Me.anim = Me.nChanges === Me.nChangesAnim ? "all" : "some"), Me;
              }
              function ie(Mt, St, Lt, te) {
                var fe, Me, ir, mr = te.getValObject, Xe = te.flags, xe = te.immutable, me = te.inArray, Le = te.arrayIndex;
                function qt() {
                  var Xr = fe.editType;
                  if (me && Xr.indexOf("arraydraw") !== -1) {
                    s.pushUnique(Xe.arrays[me], Le);
                    return;
                  }
                  M.update(Xe, fe), Xr !== "none" && Xe.nChanges++, te.transition && fe.anim && Xe.nChangesAnim++, (Jt.test(ir) || Qt.test(ir)) && (Xe.rangesAltered[Lt[0]] = 1), Vt.test(ir) && T(St, "_inputDomain").set(null), Me === "datarevision" && (Xe.newDataRevision = 1);
                }
                function De(Xr) {
                  return Xr.valType === "data_array" || Xr.arrayOk;
                }
                for (Me in Mt) {
                  if (Xe.calc && !te.transition) return;
                  var Je = Mt[Me], dr = St[Me], qe = Lt.concat(Me);
                  if (ir = qe.join("."), !(Me.charAt(0) === "_" || typeof Je == "function" || Je === dr)) {
                    if ((Me === "tick0" || Me === "dtick") && Lt[0] !== "geo") {
                      var we = St.tickmode;
                      if (we === "auto" || we === "array" || !we) continue;
                    }
                    if (!(Me === "range" && St.autorange) && !((Me === "zmin" || Me === "zmax") && St.type === "contourcarpet") && (fe = mr(qe), !!fe && !(fe._compareAsJSON && JSON.stringify(Je) === JSON.stringify(dr)))) {
                      var ue = fe.valType, Pe, Ue = De(fe), Ye = Array.isArray(Je), rr = Array.isArray(dr);
                      if (Ye && rr) {
                        var lr = "_input_" + Me, hr = Mt[lr], Sr = St[lr];
                        if (Array.isArray(hr) && hr === Sr) continue;
                      }
                      if (dr === void 0)
                        Ue && Ye ? Xe.calc = !0 : qt();
                      else if (fe._isLinkedToArray) {
                        var Dr = [], Or = !1;
                        me || (Xe.arrays[Me] = Dr);
                        var Br = Math.min(Je.length, dr.length), Nr = Math.max(Je.length, dr.length);
                        if (Br !== Nr)
                          if (fe.editType === "arraydraw")
                            Or = !0;
                          else {
                            qt();
                            continue;
                          }
                        for (Pe = 0; Pe < Br; Pe++)
                          ie(
                            Je[Pe],
                            dr[Pe],
                            qe.concat(Pe),
                            // add array indices, but not if we're already in an array
                            s.extendFlat({
                              inArray: Me,
                              arrayIndex: Pe
                            }, te)
                          );
                        if (Or)
                          for (Pe = Br; Pe < Nr; Pe++)
                            Dr.push(Pe);
                      } else !ue && s.isPlainObject(Je) ? ie(Je, dr, qe, te) : Ue ? Ye && rr ? (xe && (Xe.calc = !0), (xe || te.newDataRevision) && qt()) : Ye !== rr ? Xe.calc = !0 : qt() : Ye && rr ? (Je.length !== dr.length || String(Je) !== String(dr)) && qt() : qt();
                    }
                  }
                }
                for (Me in St)
                  if (!(Me in Mt || Me.charAt(0) === "_" || typeof St[Me] == "function"))
                    if (fe = mr(Lt.concat(Me)), De(fe) && Array.isArray(St[Me])) {
                      Xe.calc = !0;
                      return;
                    } else qt();
              }
              function $t(Mt, St) {
                var Lt;
                for (Lt in Mt)
                  if (Lt.charAt(0) !== "_") {
                    var te = Mt[Lt], fe = St[Lt];
                    if (te !== fe)
                      if (s.isPlainObject(te) && s.isPlainObject(fe)) {
                        if ($t(te, fe))
                          return !0;
                      } else if (Array.isArray(te) && Array.isArray(fe)) {
                        if (te.length !== fe.length)
                          return !0;
                        for (var Me = 0; Me < te.length; Me++)
                          if (te[Me] !== fe[Me])
                            if (s.isPlainObject(te[Me]) && s.isPlainObject(fe[Me])) {
                              if ($t(te[Me], fe[Me]))
                                return !0;
                            } else
                              return !0;
                      } else
                        return !0;
                  }
              }
              function jt(Mt, St, Lt) {
                if (Mt = s.getGraphDiv(Mt), !s.isPlotDiv(Mt))
                  throw new Error("This element is not a Plotly plot: " + Mt + ". It's likely that you've failed to create a plot before animating it. For more details, see https://plotly.com/javascript/animations/");
                var te = Mt._transitionData;
                te._frameQueue || (te._frameQueue = []), Lt = r.supplyAnimationDefaults(Lt);
                var fe = Lt.transition, Me = Lt.frame;
                te._frameWaitingCnt === void 0 && (te._frameWaitingCnt = 0);
                function ir(xe) {
                  return Array.isArray(fe) ? xe >= fe.length ? fe[0] : fe[xe] : fe;
                }
                function mr(xe) {
                  return Array.isArray(Me) ? xe >= Me.length ? Me[0] : Me[xe] : Me;
                }
                function Xe(xe, me) {
                  var Le = 0;
                  return function() {
                    if (xe && ++Le === me)
                      return xe();
                  };
                }
                return new Promise(function(xe, me) {
                  function Le() {
                    if (te._frameQueue.length !== 0) {
                      for (; te._frameQueue.length; ) {
                        var Br = te._frameQueue.pop();
                        Br.onInterrupt && Br.onInterrupt();
                      }
                      Mt.emit("plotly_animationinterrupted", []);
                    }
                  }
                  function qt(Br) {
                    if (Br.length !== 0) {
                      for (var Nr = 0; Nr < Br.length; Nr++) {
                        var Xr;
                        Br[Nr].type === "byname" ? Xr = r.computeFrame(Mt, Br[Nr].name) : Xr = Br[Nr].data;
                        var Gr = mr(Nr), oe = ir(Nr);
                        oe.duration = Math.min(oe.duration, Gr.duration);
                        var de = {
                          frame: Xr,
                          name: Br[Nr].name,
                          frameOpts: Gr,
                          transitionOpts: oe
                        };
                        Nr === Br.length - 1 && (de.onComplete = Xe(xe, 2), de.onInterrupt = me), te._frameQueue.push(de);
                      }
                      Lt.mode === "immediate" && (te._lastFrameAt = -1 / 0), te._animationRaf || dr();
                    }
                  }
                  function De() {
                    Mt.emit("plotly_animated"), window.cancelAnimationFrame(te._animationRaf), te._animationRaf = null;
                  }
                  function Je() {
                    te._currentFrame && te._currentFrame.onComplete && te._currentFrame.onComplete();
                    var Br = te._currentFrame = te._frameQueue.shift();
                    if (Br) {
                      var Nr = Br.name ? Br.name.toString() : null;
                      Mt._fullLayout._currentFrame = Nr, te._lastFrameAt = Date.now(), te._timeToNext = Br.frameOpts.duration, r.transition(Mt, Br.frame.data, Br.frame.layout, _.coerceTraceIndices(Mt, Br.frame.traces), Br.frameOpts, Br.transitionOpts).then(function() {
                        Br.onComplete && Br.onComplete();
                      }), Mt.emit("plotly_animatingframe", {
                        name: Nr,
                        frame: Br.frame,
                        animation: {
                          frame: Br.frameOpts,
                          transition: Br.transitionOpts
                        }
                      });
                    } else
                      De();
                  }
                  function dr() {
                    Mt.emit("plotly_animating"), te._lastFrameAt = -1 / 0, te._timeToNext = 0, te._runningTransitions = 0, te._currentFrame = null;
                    var Br = function() {
                      te._animationRaf = window.requestAnimationFrame(Br), Date.now() - te._lastFrameAt > te._timeToNext && Je();
                    };
                    Br();
                  }
                  var qe = 0;
                  function we(Br) {
                    return Array.isArray(fe) ? qe >= fe.length ? Br.transitionOpts = fe[qe] : Br.transitionOpts = fe[0] : Br.transitionOpts = fe, qe++, Br;
                  }
                  var ue, Pe, Ue = [], Ye = St == null, rr = Array.isArray(St), lr = !Ye && !rr && s.isPlainObject(St);
                  if (lr)
                    Ue.push({
                      type: "object",
                      data: we(s.extendFlat({}, St))
                    });
                  else if (Ye || ["string", "number"].indexOf(typeof St) !== -1)
                    for (ue = 0; ue < te._frames.length; ue++)
                      Pe = te._frames[ue], Pe && (Ye || String(Pe.group) === String(St)) && Ue.push({
                        type: "byname",
                        name: String(Pe.name),
                        data: we({
                          name: Pe.name
                        })
                      });
                  else if (rr)
                    for (ue = 0; ue < St.length; ue++) {
                      var hr = St[ue];
                      ["number", "string"].indexOf(typeof hr) !== -1 ? (hr = String(hr), Ue.push({
                        type: "byname",
                        name: hr,
                        data: we({
                          name: hr
                        })
                      })) : s.isPlainObject(hr) && Ue.push({
                        type: "object",
                        data: we(s.extendFlat({}, hr))
                      });
                    }
                  for (ue = 0; ue < Ue.length; ue++)
                    if (Pe = Ue[ue], Pe.type === "byname" && !te._frameHash[Pe.data.name]) {
                      s.warn('animate failure: frame not found: "' + Pe.data.name + '"'), me();
                      return;
                    }
                  ["next", "immediate"].indexOf(Lt.mode) !== -1 && Le(), Lt.direction === "reverse" && Ue.reverse();
                  var Sr = Mt._fullLayout._currentFrame;
                  if (Sr && Lt.fromcurrent) {
                    var Dr = -1;
                    for (ue = 0; ue < Ue.length; ue++)
                      if (Pe = Ue[ue], Pe.type === "byname" && Pe.name === Sr) {
                        Dr = ue;
                        break;
                      }
                    if (Dr > 0 && Dr < Ue.length - 1) {
                      var Or = [];
                      for (ue = 0; ue < Ue.length; ue++)
                        Pe = Ue[ue], (Ue[ue].type !== "byname" || ue > Dr) && Or.push(Pe);
                      Ue = Or;
                    }
                  }
                  Ue.length > 0 ? qt(Ue) : (Mt.emit("plotly_animated"), xe());
                });
              }
              function ee(Mt, St, Lt) {
                if (Mt = s.getGraphDiv(Mt), St == null)
                  return Promise.resolve();
                if (!s.isPlotDiv(Mt))
                  throw new Error("This element is not a Plotly plot: " + Mt + ". It's likely that you've failed to create a plot before adding frames. For more details, see https://plotly.com/javascript/animations/");
                var te, fe, Me, ir, mr = Mt._transitionData._frames, Xe = Mt._transitionData._frameHash;
                if (!Array.isArray(St))
                  throw new Error("addFrames failure: frameList must be an Array of frame definitions" + St);
                var xe = mr.length + St.length * 2, me = [], Le = {};
                for (te = St.length - 1; te >= 0; te--)
                  if (s.isPlainObject(St[te])) {
                    var qt = St[te].name, De = (Xe[qt] || Le[qt] || {}).name, Je = St[te].name, dr = Xe[De] || Le[De];
                    De && Je && typeof Je == "number" && dr && m < L && (m++, s.warn('addFrames: overwriting frame "' + (Xe[De] || Le[De]).name + '" with a frame whose name of type "number" also equates to "' + De + '". This is valid but may potentially lead to unexpected behavior since all plotly.js frame names are stored internally as strings.'), m === L && s.warn("addFrames: This API call has yielded too many of these warnings. For the rest of this call, further warnings about numeric frame names will be suppressed.")), Le[qt] = {
                      name: qt
                    }, me.push({
                      frame: r.supplyFrameDefaults(St[te]),
                      index: Lt && Lt[te] !== void 0 && Lt[te] !== null ? Lt[te] : xe + te
                    });
                  }
                me.sort(function(lr, hr) {
                  return lr.index > hr.index ? -1 : lr.index < hr.index ? 1 : 0;
                });
                var qe = [], we = [], ue = mr.length;
                for (te = me.length - 1; te >= 0; te--) {
                  if (fe = me[te].frame, typeof fe.name == "number" && s.warn("Warning: addFrames accepts frames with numeric names, but the numbers areimplicitly cast to strings"), !fe.name)
                    for (; Xe[fe.name = "frame " + Mt._transitionData._counter++]; ) ;
                  if (Xe[fe.name]) {
                    for (Me = 0; Me < mr.length && (mr[Me] || {}).name !== fe.name; Me++)
                      ;
                    qe.push({
                      type: "replace",
                      index: Me,
                      value: fe
                    }), we.unshift({
                      type: "replace",
                      index: Me,
                      value: mr[Me]
                    });
                  } else
                    ir = Math.max(0, Math.min(me[te].index, ue)), qe.push({
                      type: "insert",
                      index: ir,
                      value: fe
                    }), we.unshift({
                      type: "delete",
                      index: ir
                    }), ue++;
                }
                var Pe = r.modifyFrames, Ue = r.modifyFrames, Ye = [Mt, we], rr = [Mt, qe];
                return p && p.add(Mt, Pe, Ye, Ue, rr), r.modifyFrames(Mt, qe);
              }
              function Bt(Mt, St) {
                if (Mt = s.getGraphDiv(Mt), !s.isPlotDiv(Mt))
                  throw new Error("This element is not a Plotly plot: " + Mt);
                var Lt, te, fe = Mt._transitionData._frames, Me = [], ir = [];
                if (!St)
                  for (St = [], Lt = 0; Lt < fe.length; Lt++)
                    St.push(Lt);
                for (St = St.slice(), St.sort(), Lt = St.length - 1; Lt >= 0; Lt--)
                  te = St[Lt], Me.push({
                    type: "delete",
                    index: te
                  }), ir.unshift({
                    type: "insert",
                    index: te,
                    value: fe[te]
                  });
                var mr = r.modifyFrames, Xe = r.modifyFrames, xe = [Mt, ir], me = [Mt, Me];
                return p && p.add(Mt, mr, xe, Xe, me), r.modifyFrames(Mt, Me);
              }
              function Xt(Mt) {
                Mt = s.getGraphDiv(Mt);
                var St = Mt._fullLayout || {}, Lt = Mt._fullData || [];
                return r.cleanPlot([], {}, Lt, St), r.purge(Mt), A.purge(Mt), St._container && St._container.remove(), delete Mt._context, Mt;
              }
              function Zt(Mt) {
                var St = Mt._fullLayout, Lt = Mt.getBoundingClientRect();
                if (!s.equalDomRects(Lt, St._lastBBox)) {
                  var te = St._invTransform = s.inverseTransformMatrix(s.getFullTransformMatrix(Mt));
                  St._invScaleX = Math.sqrt(te[0][0] * te[0][0] + te[0][1] * te[0][1] + te[0][2] * te[0][2]), St._invScaleY = Math.sqrt(te[1][0] * te[1][0] + te[1][1] * te[1][1] + te[1][2] * te[1][2]), St._lastBBox = Lt;
                }
              }
              function ye(Mt) {
                var St = b.select(Mt), Lt = Mt._fullLayout;
                if (Lt._calcInverseTransform = Zt, Lt._calcInverseTransform(Mt), Lt._container = St.selectAll(".plot-container").data([0]), Lt._container.enter().insert("div", ":first-child").classed("plot-container", !0).classed("plotly", !0), Lt._paperdiv = Lt._container.selectAll(".svg-container").data([0]), Lt._paperdiv.enter().append("div").classed("user-select-none", !0).classed("svg-container", !0).style("position", "relative"), Lt._glcontainer = Lt._paperdiv.selectAll(".gl-container").data([{}]), Lt._glcontainer.enter().append("div").classed("gl-container", !0), Lt._paperdiv.selectAll(".main-svg").remove(), Lt._paperdiv.select(".modebar-container").remove(), Lt._paper = Lt._paperdiv.insert("svg", ":first-child").classed("main-svg", !0), Lt._toppaper = Lt._paperdiv.append("svg").classed("main-svg", !0), Lt._modebardiv = Lt._paperdiv.append("div"), delete Lt._modeBar, Lt._hoverpaper = Lt._paperdiv.append("svg").classed("main-svg", !0), !Lt._uid) {
                  var te = {};
                  b.selectAll("defs").each(function() {
                    this.id && (te[this.id.split("-")[1]] = 1);
                  }), Lt._uid = s.randstr(te);
                }
                Lt._paperdiv.selectAll(".main-svg").attr(x.svgAttrs), Lt._defs = Lt._paper.append("defs").attr("id", "defs-" + Lt._uid), Lt._clips = Lt._defs.append("g").classed("clips", !0), Lt._topdefs = Lt._toppaper.append("defs").attr("id", "topdefs-" + Lt._uid), Lt._topclips = Lt._topdefs.append("g").classed("clips", !0), Lt._bgLayer = Lt._paper.append("g").classed("bglayer", !0), Lt._draggers = Lt._paper.append("g").classed("draglayer", !0);
                var fe = Lt._paper.append("g").classed("layer-below", !0);
                Lt._imageLowerLayer = fe.append("g").classed("imagelayer", !0), Lt._shapeLowerLayer = fe.append("g").classed("shapelayer", !0), Lt._cartesianlayer = Lt._paper.append("g").classed("cartesianlayer", !0), Lt._polarlayer = Lt._paper.append("g").classed("polarlayer", !0), Lt._smithlayer = Lt._paper.append("g").classed("smithlayer", !0), Lt._ternarylayer = Lt._paper.append("g").classed("ternarylayer", !0), Lt._geolayer = Lt._paper.append("g").classed("geolayer", !0), Lt._funnelarealayer = Lt._paper.append("g").classed("funnelarealayer", !0), Lt._pielayer = Lt._paper.append("g").classed("pielayer", !0), Lt._iciclelayer = Lt._paper.append("g").classed("iciclelayer", !0), Lt._treemaplayer = Lt._paper.append("g").classed("treemaplayer", !0), Lt._sunburstlayer = Lt._paper.append("g").classed("sunburstlayer", !0), Lt._indicatorlayer = Lt._toppaper.append("g").classed("indicatorlayer", !0), Lt._glimages = Lt._paper.append("g").classed("glimages", !0);
                var Me = Lt._toppaper.append("g").classed("layer-above", !0);
                Lt._imageUpperLayer = Me.append("g").classed("imagelayer", !0), Lt._shapeUpperLayer = Me.append("g").classed("shapelayer", !0), Lt._selectionLayer = Lt._toppaper.append("g").classed("selectionlayer", !0), Lt._infolayer = Lt._toppaper.append("g").classed("infolayer", !0), Lt._menulayer = Lt._toppaper.append("g").classed("menulayer", !0), Lt._zoomlayer = Lt._toppaper.append("g").classed("zoomlayer", !0), Lt._hoverlayer = Lt._hoverpaper.append("g").classed("hoverlayer", !0), Lt._modebardiv.classed("modebar-container", !0).style("position", "absolute").style("top", "0px").style("right", "0px"), Mt.emit("plotly_framework");
              }
              K.animate = jt, K.addFrames = ee, K.deleteFrames = Bt, K.addTraces = Q, K.deleteTraces = j, K.extendTraces = ht, K.moveTraces = at, K.prependTraces = et, K.newPlot = V, K._doPlot = d, K.purge = Xt, K.react = Ve, K.redraw = B, K.relayout = Et, K.restyle = ut, K.setPlotConfig = E, K.update = Wt, K._guiRelayout = kt(Et), K._guiRestyle = kt(ut), K._guiUpdate = kt(Wt), K._storeDirectGUIEdit = lt;
            }
          ),
          /***/
          24452: (
            /***/
            function(Y) {
              var K = {
                staticPlot: {
                  valType: "boolean",
                  dflt: !1
                },
                typesetMath: {
                  valType: "boolean",
                  dflt: !0
                },
                plotlyServerURL: {
                  valType: "string",
                  dflt: ""
                },
                editable: {
                  valType: "boolean",
                  dflt: !1
                },
                edits: {
                  annotationPosition: {
                    valType: "boolean",
                    dflt: !1
                  },
                  annotationTail: {
                    valType: "boolean",
                    dflt: !1
                  },
                  annotationText: {
                    valType: "boolean",
                    dflt: !1
                  },
                  axisTitleText: {
                    valType: "boolean",
                    dflt: !1
                  },
                  colorbarPosition: {
                    valType: "boolean",
                    dflt: !1
                  },
                  colorbarTitleText: {
                    valType: "boolean",
                    dflt: !1
                  },
                  legendPosition: {
                    valType: "boolean",
                    dflt: !1
                  },
                  legendText: {
                    valType: "boolean",
                    dflt: !1
                  },
                  shapePosition: {
                    valType: "boolean",
                    dflt: !1
                  },
                  titleText: {
                    valType: "boolean",
                    dflt: !1
                  }
                },
                editSelection: {
                  valType: "boolean",
                  dflt: !0
                },
                autosizable: {
                  valType: "boolean",
                  dflt: !1
                },
                responsive: {
                  valType: "boolean",
                  dflt: !1
                },
                fillFrame: {
                  valType: "boolean",
                  dflt: !1
                },
                frameMargins: {
                  valType: "number",
                  dflt: 0,
                  min: 0,
                  max: 0.5
                },
                scrollZoom: {
                  valType: "flaglist",
                  flags: ["cartesian", "gl3d", "geo", "mapbox", "map"],
                  extras: [!0, !1],
                  dflt: "gl3d+geo+map"
                },
                doubleClick: {
                  valType: "enumerated",
                  values: [!1, "reset", "autosize", "reset+autosize"],
                  dflt: "reset+autosize"
                },
                doubleClickDelay: {
                  valType: "number",
                  dflt: 300,
                  min: 0
                },
                showAxisDragHandles: {
                  valType: "boolean",
                  dflt: !0
                },
                showAxisRangeEntryBoxes: {
                  valType: "boolean",
                  dflt: !0
                },
                showTips: {
                  valType: "boolean",
                  dflt: !0
                },
                showLink: {
                  valType: "boolean",
                  dflt: !1
                },
                linkText: {
                  valType: "string",
                  dflt: "Edit chart",
                  noBlank: !0
                },
                sendData: {
                  valType: "boolean",
                  dflt: !0
                },
                showSources: {
                  valType: "any",
                  dflt: !1
                },
                displayModeBar: {
                  valType: "enumerated",
                  values: ["hover", !0, !1],
                  dflt: "hover"
                },
                showSendToCloud: {
                  valType: "boolean",
                  dflt: !1
                },
                showEditInChartStudio: {
                  valType: "boolean",
                  dflt: !1
                },
                modeBarButtonsToRemove: {
                  valType: "any",
                  dflt: []
                },
                modeBarButtonsToAdd: {
                  valType: "any",
                  dflt: []
                },
                modeBarButtons: {
                  valType: "any",
                  dflt: !1
                },
                toImageButtonOptions: {
                  valType: "any",
                  dflt: {}
                },
                displaylogo: {
                  valType: "boolean",
                  dflt: !0
                },
                watermark: {
                  valType: "boolean",
                  dflt: !1
                },
                plotGlPixelRatio: {
                  valType: "number",
                  dflt: 2,
                  min: 1,
                  max: 4
                },
                setBackground: {
                  valType: "any",
                  dflt: "transparent"
                },
                topojsonURL: {
                  valType: "string",
                  noBlank: !0,
                  dflt: "https://cdn.plot.ly/"
                },
                mapboxAccessToken: {
                  valType: "string",
                  dflt: null
                },
                logging: {
                  valType: "integer",
                  min: 0,
                  max: 2,
                  dflt: 1
                },
                notifyOnLogging: {
                  valType: "integer",
                  min: 0,
                  max: 2,
                  dflt: 0
                },
                queueLength: {
                  valType: "integer",
                  min: 0,
                  dflt: 0
                },
                globalTransforms: {
                  valType: "any",
                  dflt: []
                },
                locale: {
                  valType: "string",
                  dflt: "en-US"
                },
                locales: {
                  valType: "any",
                  dflt: {}
                }
              }, e = {};
              function b(P, n) {
                for (var s in P) {
                  var T = P[s];
                  T.valType ? n[s] = T.dflt : (n[s] || (n[s] = {}), b(T, n[s]));
                }
              }
              b(K, e), Y.exports = {
                configAttributes: K,
                dfltConfig: e
              };
            }
          ),
          /***/
          57297: (
            /***/
            function(Y, K, e) {
              var b = e(33626), P = e(34809), n = e(9829), s = e(6704), T = e(58935), A = e(49722), p = e(24452).configAttributes, u = e(13582), t = P.extendDeepAll, r = P.isPlainObject, i = P.isArrayOrTypedArray, a = P.nestedProperty, l = P.valObjectMeta, o = "_isSubplotObj", y = "_isLinkedToArray", g = "_arrayAttrRegexps", x = "_deprecated", c = [o, y, g, x];
              K.IS_SUBPLOT_OBJ = o, K.IS_LINKED_TO_ARRAY = y, K.DEPRECATED = x, K.UNDERSCORE_ATTRS = c, K.get = function() {
                var O = {};
                b.allTypes.forEach(function(V) {
                  O[V] = S(V);
                });
                var B = {};
                return Object.keys(b.transformsRegistry).forEach(function(V) {
                  B[V] = C(V);
                }), {
                  defs: {
                    valObjects: l,
                    metaKeys: c.concat(["description", "role", "editType", "impliedEdits"]),
                    editType: {
                      traces: u.traces,
                      layout: u.layout
                    },
                    impliedEdits: {}
                  },
                  traces: O,
                  layout: M(),
                  transforms: B,
                  frames: m(),
                  animation: L(A),
                  config: L(p)
                };
              }, K.crawl = function(O, B, V, U) {
                var H = V || 0;
                U = U || "", Object.keys(O).forEach(function(F) {
                  var G = O[F];
                  if (c.indexOf(F) === -1) {
                    var q = (U ? U + "." : "") + F;
                    B(G, F, O, H, q), !K.isValObject(G) && r(G) && F !== "impliedEdits" && K.crawl(G, B, H + 1, q);
                  }
                });
              }, K.isValObject = function(O) {
                return O && O.valType !== void 0;
              }, K.findArrayAttributes = function(O) {
                var B = [], V = [], U = [], H, F;
                function G(et, Q, j, at) {
                  V = V.slice(0, at).concat([Q]), U = U.slice(0, at).concat([et && et._isLinkedToArray]);
                  var ut = et && (et.valType === "data_array" || et.arrayOk === !0) && !(V[at - 1] === "colorbar" && (Q === "ticktext" || Q === "tickvals"));
                  ut && q(H, 0, "");
                }
                function q(et, Q, j) {
                  var at = et[V[Q]], ut = j + V[Q];
                  if (Q === V.length - 1)
                    i(at) && B.push(F + ut);
                  else if (U[Q]) {
                    if (Array.isArray(at))
                      for (var nt = 0; nt < at.length; nt++)
                        r(at[nt]) && q(at[nt], Q + 1, ut + "[" + nt + "].");
                  } else r(at) && q(at, Q + 1, ut + ".");
                }
                H = O, F = "", K.crawl(n, G), O._module && O._module.attributes && K.crawl(O._module.attributes, G);
                var rt = O.transforms;
                if (rt)
                  for (var st = 0; st < rt.length; st++) {
                    var vt = rt[st], ht = vt._module;
                    ht && (F = "transforms[" + st + "].", H = vt, K.crawl(ht.attributes, G));
                  }
                return B;
              }, K.getTraceValObject = function(O, B) {
                var V = B[0], U = 1, H, F;
                if (V === "transforms") {
                  if (B.length === 1)
                    return n.transforms;
                  var G = O.transforms;
                  if (!Array.isArray(G) || !G.length) return !1;
                  var q = B[1];
                  if (!_(q) || q >= G.length)
                    return !1;
                  H = (b.transformsRegistry[G[q].type] || {}).attributes, F = H && H[B[2]], U = 3;
                } else {
                  var rt = O._module;
                  if (rt || (rt = (b.modules[O.type || n.type.dflt] || {})._module), !rt) return !1;
                  if (H = rt.attributes, F = H && H[V], !F) {
                    var st = rt.basePlotModule;
                    st && st.attributes && (F = st.attributes[V]);
                  }
                  F || (F = n[V]);
                }
                return f(F, B, U);
              }, K.getLayoutValObject = function(O, B) {
                var V = v(O, B[0]);
                return f(V, B, 1);
              };
              function v(O, B) {
                var V, U, H, F, G = O._basePlotModules;
                if (G) {
                  var q;
                  for (V = 0; V < G.length; V++) {
                    if (H = G[V], H.attrRegex && H.attrRegex.test(B)) {
                      if (H.layoutAttrOverrides) return H.layoutAttrOverrides;
                      !q && H.layoutAttributes && (q = H.layoutAttributes);
                    }
                    var rt = H.baseLayoutAttrOverrides;
                    if (rt && B in rt) return rt[B];
                  }
                  if (q) return q;
                }
                var st = O._modules;
                if (st) {
                  for (V = 0; V < st.length; V++)
                    if (F = st[V].layoutAttributes, F && B in F)
                      return F[B];
                }
                for (U in b.componentsRegistry) {
                  if (H = b.componentsRegistry[U], H.name === "colorscale" && B.indexOf("coloraxis") === 0)
                    return H.layoutAttributes[B];
                  if (!H.schema && B === H.name)
                    return H.layoutAttributes;
                }
                return B in s ? s[B] : !1;
              }
              function f(O, B, V) {
                if (!O) return !1;
                if (O._isLinkedToArray) {
                  if (_(B[V])) V++;
                  else if (V < B.length) return !1;
                }
                for (; V < B.length; V++) {
                  var U = O[B[V]];
                  if (r(U)) O = U;
                  else break;
                  if (V === B.length - 1) break;
                  if (O._isLinkedToArray) {
                    if (V++, !_(B[V])) return !1;
                  } else if (O.valType === "info_array") {
                    V++;
                    var H = B[V];
                    if (!_(H)) return !1;
                    var F = O.items;
                    if (Array.isArray(F)) {
                      if (H >= F.length) return !1;
                      if (O.dimensions === 2) {
                        if (V++, B.length === V) return O;
                        var G = B[V];
                        if (!_(G)) return !1;
                        O = F[H][G];
                      } else O = F[H];
                    } else
                      O = F;
                  }
                }
                return O;
              }
              function _(O) {
                return O === Math.round(O) && O >= 0;
              }
              function S(O) {
                var B, V;
                B = b.modules[O]._module, V = B.basePlotModule;
                var U = {};
                U.type = null;
                var H = t({}, n), F = t({}, B.attributes);
                K.crawl(F, function(rt, st, vt, ht, et) {
                  a(H, et).set(void 0), rt === void 0 && a(F, et).set(void 0);
                }), t(U, H), b.traceIs(O, "noOpacity") && delete U.opacity, b.traceIs(O, "showLegend") || (delete U.showlegend, delete U.legendgroup), b.traceIs(O, "noHover") && (delete U.hoverinfo, delete U.hoverlabel), B.selectPoints || delete U.selectedpoints, t(U, F), V.attributes && t(U, V.attributes), U.type = O;
                var G = {
                  meta: B.meta || {},
                  categories: B.categories || {},
                  animatable: !!B.animatable,
                  type: O,
                  attributes: L(U)
                };
                if (B.layoutAttributes) {
                  var q = {};
                  t(q, B.layoutAttributes), G.layoutAttributes = L(q);
                }
                return B.animatable || K.crawl(G, function(rt) {
                  K.isValObject(rt) && "anim" in rt && delete rt.anim;
                }), G;
              }
              function M() {
                var O = {}, B, V;
                t(O, s);
                for (B in b.subplotsRegistry)
                  if (V = b.subplotsRegistry[B], !!V.layoutAttributes)
                    if (Array.isArray(V.attr))
                      for (var U = 0; U < V.attr.length; U++)
                        w(O, V, V.attr[U]);
                    else {
                      var H = V.attr === "subplot" ? V.name : V.attr;
                      w(O, V, H);
                    }
                for (B in b.componentsRegistry) {
                  V = b.componentsRegistry[B];
                  var F = V.schema;
                  if (F && (F.subplots || F.layout)) {
                    var G = F.subplots;
                    if (G && G.xaxis && !G.yaxis)
                      for (var q in G.xaxis)
                        delete O.yaxis[q];
                    delete O.xaxis.shift, delete O.xaxis.autoshift;
                  } else V.name === "colorscale" ? t(O, V.layoutAttributes) : V.layoutAttributes && z(O, V.layoutAttributes, V.name);
                }
                return {
                  layoutAttributes: L(O)
                };
              }
              function C(O) {
                var B = b.transformsRegistry[O], V = t({}, B.attributes);
                return Object.keys(b.componentsRegistry).forEach(function(U) {
                  var H = b.componentsRegistry[U];
                  H.schema && H.schema.transforms && H.schema.transforms[O] && Object.keys(H.schema.transforms[O]).forEach(function(F) {
                    z(V, H.schema.transforms[O][F], F);
                  });
                }), {
                  attributes: L(V)
                };
              }
              function m() {
                var O = {
                  frames: t({}, T)
                };
                return L(O), O.frames;
              }
              function L(O) {
                return d(O), h(O), E(O), O;
              }
              function d(O) {
                function B(U) {
                  return {
                    valType: "string",
                    editType: "none"
                  };
                }
                function V(U, H, F) {
                  K.isValObject(U) ? (U.arrayOk === !0 || U.valType === "data_array") && (F[H + "src"] = B()) : r(U) && (U.role = "object");
                }
                K.crawl(O, V);
              }
              function h(O) {
                function B(V, U, H) {
                  if (V) {
                    var F = V[y];
                    F && (delete V[y], H[U] = {
                      items: {}
                    }, H[U].items[F] = V, H[U].role = "object");
                  }
                }
                K.crawl(O, B);
              }
              function E(O) {
                function B(V) {
                  for (var U in V)
                    if (r(V[U]))
                      B(V[U]);
                    else if (Array.isArray(V[U]))
                      for (var H = 0; H < V[U].length; H++)
                        B(V[U][H]);
                    else
                      V[U] instanceof RegExp && (V[U] = V[U].toString());
                }
                B(O);
              }
              function w(O, B, V) {
                var U = a(O, V), H = t({}, B.layoutAttributes);
                H[o] = !0, U.set(H);
              }
              function z(O, B, V) {
                var U = a(O, V);
                U.set(t(U.get() || {}, B));
              }
            }
          ),
          /***/
          78032: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(9829), n = "templateitemname", s = {
                name: {
                  valType: "string",
                  editType: "none"
                }
              };
              s[n] = {
                valType: "string",
                editType: "calc"
              }, K.templatedArray = function(p, u) {
                return u._isLinkedToArray = p, u.name = s.name, u[n] = s[n], u;
              }, K.traceTemplater = function(p) {
                var u = {}, t, r;
                for (t in p)
                  r = p[t], Array.isArray(r) && r.length && (u[t] = 0);
                function i(a) {
                  t = b.coerce(a, {}, P, "type");
                  var l = {
                    type: t,
                    _template: null
                  };
                  if (t in u) {
                    r = p[t];
                    var o = u[t] % r.length;
                    u[t]++, l._template = r[o];
                  }
                  return l;
                }
                return {
                  newTrace: i
                  // TODO: function to figure out what's left & what didn't work
                };
              }, K.newContainer = function(p, u, t) {
                var r = p._template, i = r && (r[u] || t && r[t]);
                b.isPlainObject(i) || (i = null);
                var a = p[u] = {
                  _template: i
                };
                return a;
              }, K.arrayTemplater = function(p, u, t) {
                var r = p._template, i = r && r[A(u)], a = r && r[u];
                (!Array.isArray(a) || !a.length) && (a = []);
                var l = {};
                function o(g) {
                  var x = {
                    name: g.name,
                    _input: g
                  }, c = x[n] = g[n];
                  if (!T(c))
                    return x._template = i, x;
                  for (var v = 0; v < a.length; v++) {
                    var f = a[v];
                    if (f.name === c)
                      return l[c] = 1, x._template = f, x;
                  }
                  return x[t] = g[t] || !1, x._template = !1, x;
                }
                function y() {
                  for (var g = [], x = 0; x < a.length; x++) {
                    var c = a[x], v = c.name;
                    if (T(v) && !l[v]) {
                      var f = {
                        _template: c,
                        name: v,
                        _input: {
                          _templateitemname: v
                        }
                      };
                      f[n] = c[n], g.push(f), l[v] = 1;
                    }
                  }
                  return g;
                }
                return {
                  newItem: o,
                  defaultItems: y
                };
              };
              function T(p) {
                return p && typeof p == "string";
              }
              function A(p) {
                var u = p.length - 1;
                return p.charAt(u) !== "s" && b.warn("bad argument to arrayDefaultKey: " + p), p.substr(0, p.length - 1) + "defaults";
              }
              K.arrayDefaultKey = A, K.arrayEditor = function(p, u, t) {
                var r = (b.nestedProperty(p, u).get() || []).length, i = t._index, a = i >= r && (t._input || {})._templateitemname;
                a && (i = r);
                var l = u + "[" + i + "]", o;
                function y() {
                  o = {}, a && (o[l] = {}, o[l][n] = a);
                }
                y();
                function g(f, _) {
                  o[f] = _;
                }
                function x(f, _) {
                  a ? b.nestedProperty(o[l], f).set(_) : o[l + "." + f] = _;
                }
                function c() {
                  var f = o;
                  return y(), f;
                }
                function v(f, _) {
                  f && x(f, _);
                  var S = c();
                  for (var M in S)
                    b.nestedProperty(p, M).set(S[M]);
                }
                return {
                  modifyBase: g,
                  modifyItem: x,
                  getUpdateObj: c,
                  applyUpdate: v
                };
              };
            }
          ),
          /***/
          71817: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(33626), n = e(44122), s = e(34809), T = e(30635), A = e(34823), p = e(78766), u = e(62203), t = e(17240), r = e(95433), i = e(29714), a = e(4530), l = e(84391), o = l.enforce, y = l.clean, g = e(32919).doAutoRange, x = "start", c = "middle", v = "end", f = e(54826).zindexSeparator;
              K.layoutStyles = function(U) {
                return s.syncOrAsync([n.doAutoMargin, S], U);
              };
              function _(U, H, F) {
                for (var G = 0; G < F.length; G++) {
                  var q = F[G][0], rt = F[G][1];
                  if (!(q[0] >= U[1] || q[1] <= U[0]) && rt[0] < H[1] && rt[1] > H[0])
                    return !0;
                }
                return !1;
              }
              function S(U) {
                var H = U._fullLayout, F = H._size, G = F.p, q = i.list(U, "", !0), rt, st, vt, ht, et, Q;
                if (H._paperdiv.style({
                  width: U._context.responsive && H.autosize && !U._context._hasZeroWidth && !U.layout.width ? "100%" : H.width + "px",
                  height: U._context.responsive && H.autosize && !U._context._hasZeroHeight && !U.layout.height ? "100%" : H.height + "px"
                }).selectAll(".main-svg").call(u.setSize, H.width, H.height), U._context.setBackground(U, H.paper_bgcolor), K.drawMainTitle(U), r.manage(U), !H._has("cartesian"))
                  return n.previousPromises(U);
                function j(Zt, ye, Mt) {
                  var St = Zt._lw / 2;
                  if (Zt._id.charAt(0) === "x") {
                    if (ye) {
                      if (Mt === "top") return ye._offset - G - St;
                    } else return F.t + F.h * (1 - (Zt.position || 0)) + St % 1;
                    return ye._offset + ye._length + G + St;
                  }
                  if (ye) {
                    if (Mt === "right") return ye._offset + ye._length + G + St;
                  } else return F.l + F.w * (Zt.position || 0) + St % 1;
                  return ye._offset - G - St;
                }
                for (rt = 0; rt < q.length; rt++) {
                  ht = q[rt];
                  var at = ht._anchorAxis;
                  ht._linepositions = {}, ht._lw = u.crispRound(U, ht.linewidth, 1), ht._mainLinePosition = j(ht, at, ht.side), ht._mainMirrorPosition = ht.mirror && at ? j(ht, at, a.OPPOSITE_SIDE[ht.side]) : null;
                }
                var ut = [], nt = [], X = [], ct = p.opacity(H.paper_bgcolor) === 1 && p.opacity(H.plot_bgcolor) === 1 && H.paper_bgcolor === H.plot_bgcolor;
                for (st in H._plots)
                  if (vt = H._plots[st], vt.mainplot)
                    vt.bg && vt.bg.remove(), vt.bg = void 0;
                  else {
                    var lt = vt.xaxis.domain, pt = vt.yaxis.domain, wt = vt.plotgroup;
                    if (_(lt, pt, X) && st.indexOf(f) === -1) {
                      var Et = wt.node(), Ct = vt.bg = s.ensureSingle(wt, "rect", "bg");
                      Et.insertBefore(Ct.node(), Et.childNodes[0]), nt.push(st);
                    } else
                      wt.select("rect.bg").remove(), X.push([lt, pt]), ct || (ut.push(st), nt.push(st));
                  }
                var Gt = H._bgLayer.selectAll(".bg").data(ut);
                for (Gt.enter().append("rect").classed("bg", !0), Gt.exit().remove(), Gt.each(function(Zt) {
                  H._plots[Zt].bg = b.select(this);
                }), rt = 0; rt < nt.length; rt++)
                  vt = H._plots[nt[rt]], et = vt.xaxis, Q = vt.yaxis, vt.bg && et._offset !== void 0 && Q._offset !== void 0 && vt.bg.call(u.setRect, et._offset - G, Q._offset - G, et._length + 2 * G, Q._length + 2 * G).call(p.fill, H.plot_bgcolor).style("stroke-width", 0);
                if (!H._hasOnlyLargeSploms)
                  for (st in H._plots) {
                    vt = H._plots[st], et = vt.xaxis, Q = vt.yaxis;
                    var Jt = vt.clipId = "clip" + H._uid + st + "plot", Qt = s.ensureSingleById(H._clips, "clipPath", Jt, function(Zt) {
                      Zt.classed("plotclip", !0).append("rect");
                    });
                    vt.clipRect = Qt.select("rect").attr({
                      width: et._length,
                      height: Q._length
                    }), u.setTranslate(vt.plot, et._offset, Q._offset);
                    var Vt, zt;
                    vt._hasClipOnAxisFalse ? (Vt = null, zt = Jt) : (Vt = Jt, zt = null), u.setClipUrl(vt.plot, Vt, U), vt.layerClipId = zt;
                  }
                var Rt, Wt, kt, re, ge, _e, ce, ae, Se, ze, Ne, Ve, Oe;
                function ur(Zt) {
                  return "M" + Rt + "," + Zt + "H" + Wt;
                }
                function ie(Zt) {
                  return "M" + et._offset + "," + Zt + "h" + et._length;
                }
                function $t(Zt) {
                  return "M" + Zt + "," + ae + "V" + ce;
                }
                function jt(Zt) {
                  return Q._shift !== void 0 && (Zt += Q._shift), "M" + Zt + "," + Q._offset + "v" + Q._length;
                }
                function ee(Zt, ye, Mt) {
                  if (!Zt.showline || st !== Zt._mainSubplot) return "";
                  if (!Zt._anchorAxis) return Mt(Zt._mainLinePosition);
                  var St = ye(Zt._mainLinePosition);
                  return Zt.mirror && (St += ye(Zt._mainMirrorPosition)), St;
                }
                for (st in H._plots) {
                  vt = H._plots[st], et = vt.xaxis, Q = vt.yaxis;
                  var Bt = "M0,0";
                  M(et, st) && (ge = m(et, "left", Q, q), Rt = et._offset - (ge ? G + ge : 0), _e = m(et, "right", Q, q), Wt = et._offset + et._length + (_e ? G + _e : 0), kt = j(et, Q, "bottom"), re = j(et, Q, "top"), Oe = !et._anchorAxis || st !== et._mainSubplot, Oe && (et.mirror === "allticks" || et.mirror === "all") && (et._linepositions[st] = [kt, re]), Bt = ee(et, ur, ie), Oe && et.showline && (et.mirror === "all" || et.mirror === "allticks") && (Bt += ur(kt) + ur(re)), vt.xlines.style("stroke-width", et._lw + "px").call(p.stroke, et.showline ? et.linecolor : "rgba(0,0,0,0)")), vt.xlines.attr("d", Bt);
                  var Xt = "M0,0";
                  M(Q, st) && (Ne = m(Q, "bottom", et, q), ce = Q._offset + Q._length + (Ne ? G : 0), Ve = m(Q, "top", et, q), ae = Q._offset - (Ve ? G : 0), Se = j(Q, et, "left"), ze = j(Q, et, "right"), Oe = !Q._anchorAxis || st !== Q._mainSubplot, Oe && (Q.mirror === "allticks" || Q.mirror === "all") && (Q._linepositions[st] = [Se, ze]), Xt = ee(Q, $t, jt), Oe && Q.showline && (Q.mirror === "all" || Q.mirror === "allticks") && (Xt += $t(Se) + $t(ze)), vt.ylines.style("stroke-width", Q._lw + "px").call(p.stroke, Q.showline ? Q.linecolor : "rgba(0,0,0,0)")), vt.ylines.attr("d", Xt);
                }
                return i.makeClipPaths(U), n.previousPromises(U);
              }
              function M(U, H) {
                return (U.ticks || U.showline) && (H === U._mainSubplot || U.mirror === "all" || U.mirror === "allticks");
              }
              function C(U, H, F) {
                if (!F.showline || !F._lw) return !1;
                if (F.mirror === "all" || F.mirror === "allticks") return !0;
                var G = F._anchorAxis;
                if (!G) return !1;
                var q = a.FROM_BL[H];
                return F.side === H ? G.domain[q] === U.domain[q] : F.mirror && G.domain[1 - q] === U.domain[1 - q];
              }
              function m(U, H, F, G) {
                if (C(U, H, F))
                  return F._lw;
                for (var q = 0; q < G.length; q++) {
                  var rt = G[q];
                  if (rt._mainAxis === F._mainAxis && C(U, H, rt))
                    return rt._lw;
                }
                return 0;
              }
              K.drawMainTitle = function(U) {
                var H = U._fullLayout.title, F = U._fullLayout, G = B(F), q = V(F), rt = z(F, q), st = w(F, G);
                if (t.draw(U, "gtitle", {
                  propContainer: F,
                  propName: "title.text",
                  subtitlePropName: "title.subtitle.text",
                  placeholder: F._dfltTitle.plot,
                  subtitlePlaceholder: F._dfltTitle.subtitle,
                  attributes: {
                    x: st,
                    y: rt,
                    "text-anchor": G,
                    dy: q
                  }
                }), H.text && H.automargin) {
                  var vt = b.selectAll(".gtitle"), ht = u.bBox(b.selectAll(".g-gtitle").node()).height, et = h(U, H, ht);
                  if (et > 0) {
                    E(U, rt, et, ht), vt.attr({
                      x: st,
                      y: rt,
                      "text-anchor": G,
                      dy: O(H.yanchor)
                    }).call(T.positionText, st, rt);
                    var Q = (H.text.match(T.BR_TAG_ALL) || []).length;
                    if (Q) {
                      var j = a.LINE_SPACING * Q + a.MID_SHIFT;
                      H.y === 0 && (j = -j), vt.selectAll(".line").each(function() {
                        var ct = +this.getAttribute("dy").slice(0, -2) - j + "em";
                        this.setAttribute("dy", ct);
                      });
                    }
                    var at = b.selectAll(".gtitle-subtitle");
                    if (at.node()) {
                      var ut = vt.node().getBBox(), nt = ut.y + ut.height, X = nt + t.SUBTITLE_PADDING_EM * H.subtitle.font.size;
                      at.attr({
                        x: st,
                        y: X,
                        "text-anchor": G,
                        dy: O(H.yanchor)
                      }).call(T.positionText, st, X);
                    }
                  }
                }
              };
              function L(U, H, F, G, q) {
                var rt = H.yref === "paper" ? U._fullLayout._size.h : U._fullLayout.height, st = s.isTopAnchor(H) ? G : G - q, vt = F === "b" ? rt - st : st;
                return s.isTopAnchor(H) && F === "t" || s.isBottomAnchor(H) && F === "b" ? !1 : vt < q;
              }
              function d(U, H, F, G, q) {
                var rt = 0;
                return F === "middle" && (rt += q / 2), U === "t" ? (F === "top" && (rt += q), rt += G - H * G) : (F === "bottom" && (rt += q), rt += H * G), rt;
              }
              function h(U, H, F) {
                var G = H.y, q = H.yanchor, rt = G > 0.5 ? "t" : "b", st = U._fullLayout.margin[rt], vt = 0;
                return H.yref === "paper" ? vt = F + H.pad.t + H.pad.b : H.yref === "container" && (vt = d(rt, G, q, U._fullLayout.height, F) + H.pad.t + H.pad.b), vt > st ? vt : 0;
              }
              function E(U, H, F, G) {
                var q = "title.automargin", rt = U._fullLayout.title, st = rt.y > 0.5 ? "t" : "b", vt = {
                  x: rt.x,
                  y: rt.y,
                  t: 0,
                  b: 0
                }, ht = {};
                rt.yref === "paper" && L(U, rt, st, H, G) ? vt[st] = F : rt.yref === "container" && (ht[st] = F, U._fullLayout._reservedMargin[q] = ht), n.allowAutoMargin(U, q), n.autoMargin(U, q, vt);
              }
              function w(U, H) {
                var F = U.title, G = U._size, q = 0;
                switch (H === x ? q = F.pad.l : H === v && (q = -F.pad.r), F.xref) {
                  case "paper":
                    return G.l + G.w * F.x + q;
                  case "container":
                  default:
                    return U.width * F.x + q;
                }
              }
              function z(U, H) {
                var F = U.title, G = U._size, q = 0;
                if (H === "0em" || !H ? q = -F.pad.b : H === a.CAP_SHIFT + "em" && (q = F.pad.t), F.y === "auto")
                  return G.t / 2;
                switch (F.yref) {
                  case "paper":
                    return G.t + G.h - G.h * F.y + q;
                  case "container":
                  default:
                    return U.height - U.height * F.y + q;
                }
              }
              function O(U) {
                return U === "top" ? a.CAP_SHIFT + 0.3 + "em" : U === "bottom" ? "-0.3em" : a.MID_SHIFT + "em";
              }
              function B(U) {
                var H = U.title, F = c;
                return s.isRightAnchor(H) ? F = v : s.isLeftAnchor(H) && (F = x), F;
              }
              function V(U) {
                var H = U.title, F = "0em";
                return s.isTopAnchor(H) ? F = a.CAP_SHIFT + "em" : s.isMiddleAnchor(H) && (F = a.MID_SHIFT + "em"), F;
              }
              K.doTraceStyle = function(U) {
                var H = U.calcdata, F = [], G;
                for (G = 0; G < H.length; G++) {
                  var q = H[G], rt = q[0] || {}, st = rt.trace || {}, vt = st._module || {}, ht = vt.arraysToCalcdata;
                  ht && ht(q, st);
                  var et = vt.editStyle;
                  et && F.push({
                    fn: et,
                    cd0: rt
                  });
                }
                if (F.length) {
                  for (G = 0; G < F.length; G++) {
                    var Q = F[G];
                    Q.fn(U, Q.cd0);
                  }
                  A(U), K.redrawReglTraces(U);
                }
                return n.style(U), P.getComponentMethod("legend", "draw")(U), n.previousPromises(U);
              }, K.doColorBars = function(U) {
                return P.getComponentMethod("colorbar", "draw")(U), n.previousPromises(U);
              }, K.layoutReplot = function(U) {
                var H = U.layout;
                return U.layout = void 0, P.call("_doPlot", U, "", H);
              }, K.doLegend = function(U) {
                return P.getComponentMethod("legend", "draw")(U), n.previousPromises(U);
              }, K.doTicksRelayout = function(U) {
                return i.draw(U, "redraw"), U._fullLayout._hasOnlyLargeSploms && (P.subplotsRegistry.splom.updateGrid(U), A(U), K.redrawReglTraces(U)), K.drawMainTitle(U), n.previousPromises(U);
              }, K.doModeBar = function(U) {
                var H = U._fullLayout;
                r.manage(U);
                for (var F = 0; F < H._basePlotModules.length; F++) {
                  var G = H._basePlotModules[F].updateFx;
                  G && G(U);
                }
                return n.previousPromises(U);
              }, K.doCamera = function(U) {
                for (var H = U._fullLayout, F = H._subplots.gl3d, G = 0; G < F.length; G++) {
                  var q = H[F[G]], rt = q._scene;
                  rt.setViewport(q);
                }
              }, K.drawData = function(U) {
                var H = U._fullLayout;
                A(U);
                for (var F = H._basePlotModules, G = 0; G < F.length; G++)
                  F[G].plot(U);
                return K.redrawReglTraces(U), n.style(U), P.getComponentMethod("selections", "draw")(U), P.getComponentMethod("shapes", "draw")(U), P.getComponentMethod("annotations", "draw")(U), P.getComponentMethod("images", "draw")(U), H._replotting = !1, n.previousPromises(U);
              }, K.redrawReglTraces = function(U) {
                var H = U._fullLayout;
                if (H._has("regl")) {
                  var F = U._fullData, G = [], q = [], rt, st;
                  for (H._hasOnlyLargeSploms && H._splomGrid.draw(), rt = 0; rt < F.length; rt++) {
                    var vt = F[rt];
                    vt.visible === !0 && vt._length !== 0 && (vt.type === "splom" ? H._splomScenes[vt.uid].draw() : vt.type === "scattergl" ? s.pushUnique(G, vt.xaxis + vt.yaxis) : vt.type === "scatterpolargl" && s.pushUnique(q, vt.subplot));
                  }
                  for (rt = 0; rt < G.length; rt++)
                    st = H._plots[G[rt]], st._scene && st._scene.draw();
                  for (rt = 0; rt < q.length; rt++)
                    st = H[q[rt]]._subplot, st._scene && st._scene.draw();
                }
              }, K.doAutoRangeAndConstraints = function(U) {
                for (var H = i.list(U, "", !0), F, G = {}, q = 0; q < H.length; q++)
                  if (F = H[q], !G[F._id]) {
                    G[F._id] = 1, y(U, F), g(U, F);
                    var rt = F._matchGroup;
                    if (rt)
                      for (var st in rt) {
                        var vt = i.getFromId(U, st);
                        g(U, vt, F.range), G[st] = 1;
                      }
                  }
                o(U);
              }, K.finalDraw = function(U) {
                P.getComponentMethod("rangeslider", "draw")(U), P.getComponentMethod("rangeselector", "draw")(U);
              }, K.drawMarginPushers = function(U) {
                P.getComponentMethod("legend", "draw")(U), P.getComponentMethod("rangeselector", "draw")(U), P.getComponentMethod("sliders", "draw")(U), P.getComponentMethod("updatemenus", "draw")(U), P.getComponentMethod("colorbar", "draw")(U);
              };
            }
          ),
          /***/
          53853: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = b.isPlainObject, n = e(57297), s = e(44122), T = e(9829), A = e(78032), p = e(24452).dfltConfig;
              K.makeTemplate = function(g) {
                g = b.isPlainObject(g) ? g : b.getGraphDiv(g), g = b.extendDeep({
                  _context: p
                }, {
                  data: g.data,
                  layout: g.layout
                }), s.supplyDefaults(g);
                var x = g.data || [], c = g.layout || {};
                c._basePlotModules = g._fullLayout._basePlotModules, c._modules = g._fullLayout._modules;
                var v = {
                  data: {},
                  layout: {}
                };
                x.forEach(function(E) {
                  var w = {};
                  r(E, w, a.bind(null, E));
                  var z = b.coerce(E, {}, T, "type"), O = v.data[z];
                  O || (O = v.data[z] = []), O.push(w);
                }), r(c, v.layout, i.bind(null, c)), delete v.layout.template;
                var f = c.template;
                if (P(f)) {
                  var _ = f.layout, S, M, C, m, L, d;
                  P(_) && u(_, v.layout);
                  var h = f.data;
                  if (P(h)) {
                    for (M in v.data)
                      if (C = h[M], Array.isArray(C)) {
                        for (L = v.data[M], d = L.length, m = C.length, S = 0; S < d; S++)
                          u(C[S % m], L[S]);
                        for (S = d; S < m; S++)
                          L.push(b.extendDeep({}, C[S]));
                      }
                    for (M in h)
                      M in v.data || (v.data[M] = b.extendDeep([], h[M]));
                  }
                }
                return v;
              };
              function u(g, x) {
                g = b.extendDeep({}, g);
                var c = Object.keys(g).sort(), v, f;
                function _(L, d, h) {
                  if (P(d) && P(L))
                    u(L, d);
                  else if (Array.isArray(d) && Array.isArray(L)) {
                    var E = A.arrayTemplater({
                      _template: g
                    }, h);
                    for (f = 0; f < d.length; f++) {
                      var w = d[f], z = E.newItem(w)._template;
                      z && u(z, w);
                    }
                    var O = E.defaultItems();
                    for (f = 0; f < O.length; f++) d.push(O[f]._template);
                    for (f = 0; f < d.length; f++) delete d[f].templateitemname;
                  }
                }
                for (v = 0; v < c.length; v++) {
                  var S = c[v], M = g[S];
                  if (S in x ? _(M, x[S], S) : x[S] = M, t(S) === S)
                    for (var C in x) {
                      var m = t(C);
                      C !== m && m === S && !(C in g) && _(M, x[C], S);
                    }
                }
              }
              function t(g) {
                return g.replace(/[0-9]+$/, "");
              }
              function r(g, x, c, v, f) {
                var _ = f && c(f);
                for (var S in g) {
                  var M = g[S], C = l(g, S, v), m = l(g, S, f), L = c(m);
                  if (!L) {
                    var d = t(S);
                    d !== S && (m = l(g, d, f), L = c(m));
                  }
                  if (!(_ && _ === L) && !(!L || L._noTemplating || L.valType === "data_array" || L.arrayOk && Array.isArray(M)))
                    if (!L.valType && P(M))
                      r(M, x, c, C, m);
                    else if (L._isLinkedToArray && Array.isArray(M))
                      for (var h = !1, E = 0, w = {}, z = 0; z < M.length; z++) {
                        var O = M[z];
                        if (P(O)) {
                          var B = O.name;
                          if (B)
                            w[B] || (r(O, x, c, l(M, E, C), l(M, E, m)), E++, w[B] = 1);
                          else if (!h) {
                            var V = A.arrayDefaultKey(S), U = l(g, V, v), H = l(M, E, C);
                            r(O, x, c, H, l(M, E, m));
                            var F = b.nestedProperty(x, H), G = b.nestedProperty(x, U);
                            G.set(F.get()), F.set(null), h = !0;
                          }
                        }
                      }
                    else {
                      var q = b.nestedProperty(x, C);
                      q.set(M);
                    }
                }
              }
              function i(g, x) {
                return n.getLayoutValObject(g, b.nestedProperty({}, x).parts);
              }
              function a(g, x) {
                return n.getTraceValObject(g, b.nestedProperty({}, x).parts);
              }
              function l(g, x, c) {
                var v;
                return c ? Array.isArray(g) ? v = c + "[" + x + "]" : v = c + "." + x : v = x, v;
              }
              K.validateTemplate = function(g, x) {
                var c = b.extendDeep({}, {
                  _context: p,
                  data: g.data,
                  layout: g.layout
                }), v = c.layout || {};
                P(x) || (x = v.template || {});
                var f = x.layout, _ = x.data, S = [];
                c.layout = v, c.layout.template = x, s.supplyDefaults(c);
                var M = c._fullLayout, C = c._fullData, m = {};
                function L(U, H) {
                  for (var F in U)
                    if (F.charAt(0) !== "_" && P(U[F])) {
                      var G = t(F), q = [], rt;
                      for (rt = 0; rt < H.length; rt++)
                        q.push(l(U, F, H[rt])), G !== F && q.push(l(U, G, H[rt]));
                      for (rt = 0; rt < q.length; rt++)
                        m[q[rt]] = 1;
                      L(U[F], q);
                    }
                }
                function d(U, H) {
                  for (var F in U)
                    if (F.indexOf("defaults") === -1 && P(U[F])) {
                      var G = l(U, F, H);
                      m[G] ? d(U[F], G) : S.push({
                        code: "unused",
                        path: G
                      });
                    }
                }
                if (P(f) ? (L(M, ["layout"]), d(f, "layout")) : S.push({
                  code: "layout"
                }), !P(_))
                  S.push({
                    code: "data"
                  });
                else {
                  for (var h = {}, E, w = 0; w < C.length; w++) {
                    var z = C[w];
                    E = z.type, h[E] = (h[E] || 0) + 1, z._fullInput._template || S.push({
                      code: "missing",
                      index: z._fullInput.index,
                      traceType: E
                    });
                  }
                  for (E in _) {
                    var O = _[E].length, B = h[E] || 0;
                    O > B ? S.push({
                      code: "unused",
                      traceType: E,
                      templateCount: O,
                      dataCount: B
                    }) : B > O && S.push({
                      code: "reused",
                      traceType: E,
                      templateCount: O,
                      dataCount: B
                    });
                  }
                }
                function V(U, H) {
                  for (var F in U)
                    if (F.charAt(0) !== "_") {
                      var G = U[F], q = l(U, F, H);
                      P(G) ? (Array.isArray(U) && G._template === !1 && G.templateitemname && S.push({
                        code: "missing",
                        path: q,
                        templateitemname: G.templateitemname
                      }), V(G, q)) : Array.isArray(G) && o(G) && V(G, q);
                    }
                }
                if (V({
                  data: C,
                  layout: M
                }, ""), S.length) return S.map(y);
              };
              function o(g) {
                for (var x = 0; x < g.length; x++)
                  if (P(g[x])) return !0;
              }
              function y(g) {
                var x;
                switch (g.code) {
                  case "data":
                    x = "The template has no key data.";
                    break;
                  case "layout":
                    x = "The template has no key layout.";
                    break;
                  case "missing":
                    g.path ? x = "There are no templates for item " + g.path + " with name " + g.templateitemname : x = "There are no templates for trace " + g.index + ", of type " + g.traceType + ".";
                    break;
                  case "unused":
                    g.path ? x = "The template item at " + g.path + " was not used in constructing the plot." : g.dataCount ? x = "Some of the templates of type " + g.traceType + " were not used. The template has " + g.templateCount + " traces, the data only has " + g.dataCount + " of this type." : x = "The template has " + g.templateCount + " traces of type " + g.traceType + " but there are none in the data.";
                    break;
                  case "reused":
                    x = "Some of the templates of type " + g.traceType + " were used more than once. The template has " + g.templateCount + " traces, the data has " + g.dataCount + " of this type.";
                    break;
                }
                return g.msg = x, g;
              }
            }
          ),
          /***/
          80491: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(31420), n = e(44122), s = e(34809), T = e(84619), A = e(6243), p = e(72914), u = e(29697).version, t = {
                format: {
                  valType: "enumerated",
                  values: ["png", "jpeg", "webp", "svg", "full-json"],
                  dflt: "png"
                },
                width: {
                  valType: "number",
                  min: 1
                },
                height: {
                  valType: "number",
                  min: 1
                },
                scale: {
                  valType: "number",
                  min: 0,
                  dflt: 1
                },
                setBackground: {
                  valType: "any",
                  dflt: !1
                },
                imageDataOnly: {
                  valType: "boolean",
                  dflt: !1
                }
              };
              function r(i, a) {
                a = a || {};
                var l, o, y, g;
                s.isPlainObject(i) ? (l = i.data || [], o = i.layout || {}, y = i.config || {}, g = {}) : (i = s.getGraphDiv(i), l = s.extendDeep([], i.data), o = s.extendDeep({}, i.layout), y = i._context, g = i._fullLayout || {});
                function x(B) {
                  return !(B in a) || s.validate(a[B], t[B]);
                }
                if (!x("width") && a.width !== null || !x("height") && a.height !== null)
                  throw new Error("Height and width should be pixel values.");
                if (!x("format"))
                  throw new Error("Export format is not " + s.join2(t.format.values, ", ", " or ") + ".");
                var c = {};
                function v(B, V) {
                  return s.coerce(a, c, t, B, V);
                }
                var f = v("format"), _ = v("width"), S = v("height"), M = v("scale"), C = v("setBackground"), m = v("imageDataOnly"), L = document.createElement("div");
                L.style.position = "absolute", L.style.left = "-5000px", document.body.appendChild(L);
                var d = s.extendFlat({}, o);
                _ ? d.width = _ : a.width === null && b(g.width) && (d.width = g.width), S ? d.height = S : a.height === null && b(g.height) && (d.height = g.height);
                var h = s.extendFlat({}, y, {
                  _exportedPlot: !0,
                  staticPlot: !0,
                  setBackground: C
                }), E = T.getRedrawFunc(L);
                function w() {
                  return new Promise(function(B) {
                    setTimeout(B, T.getDelay(L._fullLayout));
                  });
                }
                function z() {
                  return new Promise(function(B, V) {
                    var U = A(L, f, M), H = L._fullLayout.width, F = L._fullLayout.height;
                    function G() {
                      P.purge(L), document.body.removeChild(L);
                    }
                    if (f === "full-json") {
                      var q = n.graphJson(L, !1, "keepdata", "object", !0, !0);
                      return q.version = u, q = JSON.stringify(q), G(), B(m ? q : T.encodeJSON(q));
                    }
                    if (G(), f === "svg")
                      return B(m ? U : T.encodeSVG(U));
                    var rt = document.createElement("canvas");
                    rt.id = s.randstr(), p({
                      format: f,
                      width: H,
                      height: F,
                      scale: M,
                      canvas: rt,
                      svg: U,
                      // ask svgToImg to return a Promise
                      //  rather than EventEmitter
                      //  leave EventEmitter for backward
                      //  compatibility
                      promise: !0
                    }).then(B).catch(V);
                  });
                }
                function O(B) {
                  return m ? B.replace(T.IMAGE_URL_PREFIX, "") : B;
                }
                return new Promise(function(B, V) {
                  P.newPlot(L, l, d, h).then(E).then(w).then(z).then(function(U) {
                    B(O(U));
                  }).catch(function(U) {
                    V(U);
                  });
                });
              }
              Y.exports = r;
            }
          ),
          /***/
          2466: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(44122), n = e(57297), s = e(24452).dfltConfig, T = b.isPlainObject, A = Array.isArray, p = b.isArrayOrTypedArray;
              Y.exports = function(v, f) {
                v === void 0 && (v = []), f === void 0 && (f = {});
                var _ = n.get(), S = [], M = {
                  _context: b.extendFlat({}, s)
                }, C, m;
                A(v) ? (M.data = b.extendDeep([], v), C = v) : (M.data = [], C = [], S.push(a("array", "data"))), T(f) ? (M.layout = b.extendDeep({}, f), m = f) : (M.layout = {}, m = {}, arguments.length > 1 && S.push(a("object", "layout"))), P.supplyDefaults(M);
                for (var L = M._fullData, d = C.length, h = 0; h < d; h++) {
                  var E = C[h], w = ["data", h];
                  if (!T(E)) {
                    S.push(a("object", w));
                    continue;
                  }
                  var z = L[h], O = z.type, B = _.traces[O].attributes;
                  B.type = {
                    valType: "enumerated",
                    values: [O]
                  }, z.visible === !1 && E.visible !== !1 && S.push(a("invisible", w)), u(E, z, B, S, w);
                  var V = E.transforms, U = z.transforms;
                  if (V) {
                    A(V) || S.push(a("array", w, ["transforms"])), w.push("transforms");
                    for (var H = 0; H < V.length; H++) {
                      var F = ["transforms", H], G = V[H].type;
                      if (!T(V[H])) {
                        S.push(a("object", w, F));
                        continue;
                      }
                      var q = _.transforms[G] ? _.transforms[G].attributes : {};
                      q.type = {
                        valType: "enumerated",
                        values: Object.keys(_.transforms)
                      }, u(V[H], U[H], q, S, w, F);
                    }
                  }
                }
                var rt = M._fullLayout, st = t(_, L);
                return u(m, rt, st, S, "layout"), S.length === 0 ? void 0 : S;
              };
              function u(c, v, f, _, S, M) {
                M = M || [];
                for (var C = Object.keys(c), m = 0; m < C.length; m++) {
                  var L = C[m];
                  if (L !== "transforms") {
                    var d = M.slice();
                    d.push(L);
                    var h = c[L], E = v[L], w = o(f, L), z = (w || {}).valType, O = z === "info_array", B = z === "colorscale", V = (w || {}).items;
                    if (!l(f, L))
                      _.push(a("schema", S, d));
                    else if (T(h) && T(E) && z !== "any")
                      u(h, E, w, _, S, d);
                    else if (O && A(h)) {
                      h.length > E.length && _.push(a("unused", S, d.concat(E.length)));
                      var U = E.length, H = Array.isArray(V);
                      H && (U = Math.min(U, V.length));
                      var F, G, q, rt, st;
                      if (w.dimensions === 2)
                        for (G = 0; G < U; G++)
                          if (A(h[G])) {
                            h[G].length > E[G].length && _.push(a("unused", S, d.concat(G, E[G].length)));
                            var vt = E[G].length;
                            for (F = 0; F < (H ? Math.min(vt, V[G].length) : vt); F++)
                              q = H ? V[G][F] : V, rt = h[G][F], st = E[G][F], b.validate(rt, q) ? st !== rt && st !== +rt && _.push(a("dynamic", S, d.concat(G, F), rt, st)) : _.push(a("value", S, d.concat(G, F), rt));
                          } else
                            _.push(a("array", S, d.concat(G), h[G]));
                      else
                        for (G = 0; G < U; G++)
                          q = H ? V[G] : V, rt = h[G], st = E[G], b.validate(rt, q) ? st !== rt && st !== +rt && _.push(a("dynamic", S, d.concat(G), rt, st)) : _.push(a("value", S, d.concat(G), rt));
                    } else if (w.items && !O && A(h)) {
                      var ht = V[Object.keys(V)[0]], et = [], Q, j;
                      for (Q = 0; Q < E.length; Q++) {
                        var at = E[Q]._index || Q;
                        if (j = d.slice(), j.push(at), T(h[at]) && T(E[Q])) {
                          et.push(at);
                          var ut = h[at], nt = E[Q];
                          T(ut) && ut.visible !== !1 && nt.visible === !1 ? _.push(a("invisible", S, j)) : u(ut, nt, ht, _, S, j);
                        }
                      }
                      for (Q = 0; Q < h.length; Q++)
                        j = d.slice(), j.push(Q), T(h[Q]) ? et.indexOf(Q) === -1 && _.push(a("unused", S, j)) : _.push(a("object", S, j, h[Q]));
                    } else !T(h) && T(E) ? _.push(a("object", S, d, h)) : !p(h) && p(E) && !O && !B ? _.push(a("array", S, d, h)) : L in v ? b.validate(h, w) ? w.valType === "enumerated" && (w.coerceNumber && h !== +E || h !== E) && _.push(a("dynamic", S, d, h, E)) : _.push(a("value", S, d, h)) : _.push(a("unused", S, d, h));
                  }
                }
                return _;
              }
              function t(c, v) {
                for (var f = c.layout.layoutAttributes, _ = 0; _ < v.length; _++) {
                  var S = v[_], M = c.traces[S.type], C = M.layoutAttributes;
                  C && (S.subplot ? b.extendFlat(f[M.attributes.subplot.dflt], C) : b.extendFlat(f, C));
                }
                return f;
              }
              var r = {
                object: function(c, v) {
                  var f;
                  return c === "layout" && v === "" ? f = "The layout argument" : c[0] === "data" && v === "" ? f = "Trace " + c[1] + " in the data argument" : f = i(c) + "key " + v, f + " must be linked to an object container";
                },
                array: function(c, v) {
                  var f;
                  return c === "data" ? f = "The data argument" : f = i(c) + "key " + v, f + " must be linked to an array container";
                },
                schema: function(c, v) {
                  return i(c) + "key " + v + " is not part of the schema";
                },
                unused: function(c, v, f) {
                  var _ = T(f) ? "container" : "key";
                  return i(c) + _ + " " + v + " did not get coerced";
                },
                dynamic: function(c, v, f, _) {
                  return [i(c) + "key", v, "(set to '" + f + "')", "got reset to", "'" + _ + "'", "during defaults."].join(" ");
                },
                invisible: function(c, v) {
                  return (v ? i(c) + "item " + v : "Trace " + c[1]) + " got defaulted to be not visible";
                },
                value: function(c, v, f) {
                  return [i(c) + "key " + v, "is set to an invalid value (" + f + ")"].join(" ");
                }
              };
              function i(c) {
                return A(c) ? "In data trace " + c[1] + ", " : "In " + c + ", ";
              }
              function a(c, v, f, _, S) {
                f = f || "";
                var M, C;
                A(v) ? (M = v[0], C = v[1]) : (M = v, C = null);
                var m = x(f), L = r[c](v, m, _, S);
                return b.log(L), {
                  code: c,
                  container: M,
                  trace: C,
                  path: f,
                  astr: m,
                  msg: L
                };
              }
              function l(c, v) {
                var f = g(v), _ = f.keyMinusId, S = f.id;
                return _ in c && c[_]._isSubplotObj && S ? !0 : v in c;
              }
              function o(c, v) {
                if (v in c) return c[v];
                var f = g(v);
                return c[f.keyMinusId];
              }
              var y = b.counterRegex("([a-z]+)");
              function g(c) {
                var v = c.match(y);
                return {
                  keyMinusId: v && v[1],
                  id: v && v[2]
                };
              }
              function x(c) {
                if (!A(c)) return String(c);
                for (var v = "", f = 0; f < c.length; f++) {
                  var _ = c[f];
                  typeof _ == "number" ? v = v.substr(0, v.length - 1) + "[" + _ + "]" : v += _, f < c.length - 1 && (v += ".");
                }
                return v;
              }
            }
          ),
          /***/
          49722: (
            /***/
            function(Y) {
              Y.exports = {
                mode: {
                  valType: "enumerated",
                  dflt: "afterall",
                  values: ["immediate", "next", "afterall"]
                },
                direction: {
                  valType: "enumerated",
                  values: ["forward", "reverse"],
                  dflt: "forward"
                },
                fromcurrent: {
                  valType: "boolean",
                  dflt: !1
                },
                frame: {
                  duration: {
                    valType: "number",
                    min: 0,
                    dflt: 500
                  },
                  redraw: {
                    valType: "boolean",
                    dflt: !0
                  }
                },
                transition: {
                  duration: {
                    valType: "number",
                    min: 0,
                    dflt: 500,
                    editType: "none"
                  },
                  easing: {
                    valType: "enumerated",
                    dflt: "cubic-in-out",
                    values: ["linear", "quad", "cubic", "sin", "exp", "circle", "elastic", "back", "bounce", "linear-in", "quad-in", "cubic-in", "sin-in", "exp-in", "circle-in", "elastic-in", "back-in", "bounce-in", "linear-out", "quad-out", "cubic-out", "sin-out", "exp-out", "circle-out", "elastic-out", "back-out", "bounce-out", "linear-in-out", "quad-in-out", "cubic-in-out", "sin-in-out", "exp-in-out", "circle-in-out", "elastic-in-out", "back-in-out", "bounce-in-out"],
                    editType: "none"
                  },
                  ordering: {
                    valType: "enumerated",
                    values: ["layout first", "traces first"],
                    dflt: "layout first",
                    editType: "none"
                  }
                }
              };
            }
          ),
          /***/
          59008: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(78032);
              Y.exports = function(s, T, A) {
                var p = A.name, u = A.inclusionAttr || "visible", t = T[p], r = b.isArrayOrTypedArray(s[p]) ? s[p] : [], i = T[p] = [], a = P.arrayTemplater(T, p, u), l, o;
                for (l = 0; l < r.length; l++) {
                  var y = r[l];
                  b.isPlainObject(y) ? o = a.newItem(y) : (o = a.newItem({}), o[u] = !1), o._index = l, o[u] !== !1 && A.handleItemDefaults(y, o, T, A), i.push(o);
                }
                var g = a.defaultItems();
                for (l = 0; l < g.length; l++)
                  o = g[l], o._index = i.length, A.handleItemDefaults({}, o, T, A, {}), i.push(o);
                if (b.isArrayOrTypedArray(t)) {
                  var x = Math.min(t.length, i.length);
                  for (l = 0; l < x; l++)
                    b.relinkPrivateKeys(i[l], t[l]);
                }
                return i;
              };
            }
          ),
          /***/
          9829: (
            /***/
            function(Y, K, e) {
              var b = e(80337), P = e(70192);
              Y.exports = {
                type: {
                  valType: "enumerated",
                  values: [],
                  // listed dynamically
                  dflt: "scatter",
                  editType: "calc+clearAxisTypes",
                  _noTemplating: !0
                  // we handle this at a higher level
                },
                visible: {
                  valType: "enumerated",
                  values: [!0, !1, "legendonly"],
                  dflt: !0,
                  editType: "calc"
                },
                showlegend: {
                  valType: "boolean",
                  dflt: !0,
                  editType: "style"
                },
                legend: {
                  valType: "subplotid",
                  dflt: "legend",
                  editType: "style"
                },
                legendgroup: {
                  valType: "string",
                  dflt: "",
                  editType: "style"
                },
                legendgrouptitle: {
                  text: {
                    valType: "string",
                    dflt: "",
                    editType: "style"
                  },
                  font: b({
                    editType: "style"
                  }),
                  editType: "style"
                },
                legendrank: {
                  valType: "number",
                  dflt: 1e3,
                  editType: "style"
                },
                legendwidth: {
                  valType: "number",
                  min: 0,
                  editType: "style"
                },
                opacity: {
                  valType: "number",
                  min: 0,
                  max: 1,
                  dflt: 1,
                  editType: "style"
                },
                name: {
                  valType: "string",
                  editType: "style"
                },
                uid: {
                  valType: "string",
                  editType: "plot",
                  anim: !0
                },
                ids: {
                  valType: "data_array",
                  editType: "calc",
                  anim: !0
                },
                customdata: {
                  valType: "data_array",
                  editType: "calc"
                },
                meta: {
                  valType: "any",
                  arrayOk: !0,
                  editType: "plot"
                },
                // N.B. these cannot be 'data_array' as they do not have the same length as
                // other data arrays and arrayOk attributes in general
                //
                // Maybe add another valType:
                // https://github.com/plotly/plotly.js/issues/1894
                selectedpoints: {
                  valType: "any",
                  editType: "calc"
                },
                hoverinfo: {
                  valType: "flaglist",
                  flags: ["x", "y", "z", "text", "name"],
                  extras: ["all", "none", "skip"],
                  arrayOk: !0,
                  dflt: "all",
                  editType: "none"
                },
                hoverlabel: P.hoverlabel,
                stream: {
                  token: {
                    valType: "string",
                    noBlank: !0,
                    strict: !0,
                    editType: "calc"
                  },
                  maxpoints: {
                    valType: "number",
                    min: 0,
                    max: 1e4,
                    dflt: 500,
                    editType: "calc"
                  },
                  editType: "calc"
                },
                transforms: {
                  _isLinkedToArray: "transform",
                  editType: "calc"
                },
                uirevision: {
                  valType: "any",
                  editType: "none"
                }
              };
            }
          ),
          /***/
          40528: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(34809), n = P.dateTime2ms, s = P.incrementMonth, T = e(63821), A = T.ONEAVGMONTH;
              Y.exports = function(u, t, r, i) {
                if (t.type !== "date") return {
                  vals: i
                };
                var a = u[r + "periodalignment"];
                if (!a) return {
                  vals: i
                };
                var l = u[r + "period"], o;
                if (b(l)) {
                  if (l = +l, l <= 0) return {
                    vals: i
                  };
                } else if (typeof l == "string" && l.charAt(0) === "M") {
                  var y = +l.substring(1);
                  if (y > 0 && Math.round(y) === y)
                    o = y;
                  else return {
                    vals: i
                  };
                }
                for (var g = t.calendar, x = a === "start", c = a === "end", v = u[r + "period0"], f = n(v, g) || 0, _ = [], S = [], M = [], C = i.length, m = 0; m < C; m++) {
                  var L = i[m], d, h, E;
                  if (o) {
                    for (d = Math.round((L - f) / (o * A)), E = s(f, o * d, g); E > L; )
                      E = s(E, -o, g);
                    for (; E <= L; )
                      E = s(E, o, g);
                    h = s(E, -o, g);
                  } else {
                    for (d = Math.round((L - f) / l), E = f + d * l; E > L; )
                      E -= l;
                    for (; E <= L; )
                      E += l;
                    h = E - l;
                  }
                  _[m] = x ? h : c ? E : (h + E) / 2, S[m] = h, M[m] = E;
                }
                return {
                  vals: _,
                  starts: S,
                  ends: M
                };
              };
            }
          ),
          /***/
          55126: (
            /***/
            function(Y) {
              Y.exports = {
                xaxis: {
                  valType: "subplotid",
                  dflt: "x",
                  editType: "calc+clearAxisTypes"
                },
                yaxis: {
                  valType: "subplotid",
                  dflt: "y",
                  editType: "calc+clearAxisTypes"
                }
              };
            }
          ),
          /***/
          32919: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(10721), n = e(34809), s = e(63821).FP_SAFE, T = e(33626), A = e(62203), p = e(5975), u = p.getFromId, t = p.isLinked;
              Y.exports = {
                applyAutorangeOptions: d,
                getAutoRange: r,
                makePadFn: a,
                doAutoRange: g,
                findExtremes: x,
                concatExtremes: y
              };
              function r(h, E) {
                var w, z, O = [], B = h._fullLayout, V = a(B, E, 0), U = a(B, E, 1), H = y(h, E), F = H.min, G = H.max;
                if (F.length === 0 || G.length === 0)
                  return n.simpleMap(E.range, E.r2l);
                var q = F[0].val, rt = G[0].val;
                for (w = 1; w < F.length && q === rt; w++)
                  q = Math.min(q, F[w].val);
                for (w = 1; w < G.length && q === rt; w++)
                  rt = Math.max(rt, G[w].val);
                var st = E.autorange, vt = st === "reversed" || st === "min reversed" || st === "max reversed";
                if (!vt && E.range) {
                  var ht = n.simpleMap(E.range, E.r2l);
                  vt = ht[1] < ht[0];
                }
                E.autorange === "reversed" && (E.autorange = !0);
                var et = E.rangemode, Q = et === "tozero", j = et === "nonnegative", at = E._length, ut = at / 10, nt = 0, X, ct, lt, pt, wt, Et;
                for (w = 0; w < F.length; w++)
                  for (X = F[w], z = 0; z < G.length; z++)
                    ct = G[z], Et = ct.val - X.val - i(E, X.val, ct.val), Et > 0 && (wt = at - V(X) - U(ct), wt > ut ? Et / wt > nt && (lt = X, pt = ct, nt = Et / wt) : Et / at > nt && (lt = {
                      val: X.val,
                      nopad: 1
                    }, pt = {
                      val: ct.val,
                      nopad: 1
                    }, nt = Et / at));
                function Ct(zt, Rt) {
                  return Math.max(zt, U(Rt));
                }
                if (q === rt) {
                  var Gt = q - 1, Jt = q + 1;
                  if (Q)
                    if (q === 0)
                      O = [0, 1];
                    else {
                      var Qt = (q > 0 ? G : F).reduce(Ct, 0), Vt = q / (1 - Math.min(0.5, Qt / at));
                      O = q > 0 ? [0, Vt] : [Vt, 0];
                    }
                  else j ? O = [Math.max(0, Gt), Math.max(1, Jt)] : O = [Gt, Jt];
                } else
                  Q ? (lt.val >= 0 && (lt = {
                    val: 0,
                    nopad: 1
                  }), pt.val <= 0 && (pt = {
                    val: 0,
                    nopad: 1
                  })) : j && (lt.val - nt * V(lt) < 0 && (lt = {
                    val: 0,
                    nopad: 1
                  }), pt.val <= 0 && (pt = {
                    val: 1,
                    nopad: 1
                  })), nt = (pt.val - lt.val - i(E, X.val, ct.val)) / (at - V(lt) - U(pt)), O = [lt.val - nt * V(lt), pt.val + nt * U(pt)];
                return O = d(O, E), E.limitRange && E.limitRange(), vt && O.reverse(), n.simpleMap(O, E.l2r || Number);
              }
              function i(h, E, w) {
                var z = 0;
                if (h.rangebreaks)
                  for (var O = h.locateBreaks(E, w), B = 0; B < O.length; B++) {
                    var V = O[B];
                    z += V.max - V.min;
                  }
                return z;
              }
              function a(h, E, w) {
                var z = 0.05 * E._length, O = E._anchorAxis || {};
                if ((E.ticklabelposition || "").indexOf("inside") !== -1 || (O.ticklabelposition || "").indexOf("inside") !== -1) {
                  var B = E.isReversed();
                  if (!B) {
                    var V = n.simpleMap(E.range, E.r2l);
                    B = V[1] < V[0];
                  }
                  B && (w = !w);
                }
                var U = 0;
                return t(h, E._id) || (U = o(h, E, w)), z = Math.max(U, z), E.constrain === "domain" && E._inputDomain && (z *= (E._inputDomain[1] - E._inputDomain[0]) / (E.domain[1] - E.domain[0])), function(F) {
                  return F.nopad ? 0 : F.pad + (F.extrapad ? z : U);
                };
              }
              var l = 3;
              function o(h, E, w) {
                var z = 0, O = E._id.charAt(0) === "x";
                for (var B in h._plots) {
                  var V = h._plots[B];
                  if (!(E._id !== V.xaxis._id && E._id !== V.yaxis._id)) {
                    var U = (O ? V.yaxis : V.xaxis) || {};
                    if ((U.ticklabelposition || "").indexOf("inside") !== -1 && (!w && (U.side === "left" || U.side === "bottom") || w && (U.side === "top" || U.side === "right"))) {
                      if (U._vals) {
                        var H = n.deg2rad(U._tickAngles[U._id + "tick"] || 0), F = Math.abs(Math.cos(H)), G = Math.abs(Math.sin(H));
                        if (!U._vals[0].bb) {
                          var q = U._id + "tick", rt = U._selections[q];
                          rt.each(function(j) {
                            var at = b.select(this), ut = at.select(".text-math-group");
                            ut.empty() && (j.bb = A.bBox(at.node()));
                          });
                        }
                        for (var st = 0; st < U._vals.length; st++) {
                          var vt = U._vals[st], ht = vt.bb;
                          if (ht) {
                            var et = 2 * l + ht.width, Q = 2 * l + ht.height;
                            z = Math.max(z, O ? Math.max(et * F, Q * G) : Math.max(Q * F, et * G));
                          }
                        }
                      }
                      U.ticks === "inside" && U.ticklabelposition === "inside" && (z += U.ticklen || 0);
                    }
                  }
                }
                return z;
              }
              function y(h, E, w) {
                var z = E._id, O = h._fullData, B = h._fullLayout, V = [], U = [], H, F, G;
                function q(et, Q) {
                  for (H = 0; H < Q.length; H++) {
                    var j = et[Q[H]], at = (j._extremes || {})[z];
                    if (j.visible === !0 && at) {
                      for (F = 0; F < at.min.length; F++)
                        G = at.min[F], c(V, G.val, G.pad, {
                          extrapad: G.extrapad
                        });
                      for (F = 0; F < at.max.length; F++)
                        G = at.max[F], v(U, G.val, G.pad, {
                          extrapad: G.extrapad
                        });
                    }
                  }
                }
                if (q(O, E._traceIndices), q(B.annotations || [], E._annIndices || []), q(B.shapes || [], E._shapeIndices || []), E._matchGroup && !w) {
                  for (var rt in E._matchGroup)
                    if (rt !== E._id) {
                      var st = u(h, rt), vt = y(h, st, !0), ht = E._length / st._length;
                      for (F = 0; F < vt.min.length; F++)
                        G = vt.min[F], c(V, G.val, G.pad * ht, {
                          extrapad: G.extrapad
                        });
                      for (F = 0; F < vt.max.length; F++)
                        G = vt.max[F], v(U, G.val, G.pad * ht, {
                          extrapad: G.extrapad
                        });
                    }
                }
                return {
                  min: V,
                  max: U
                };
              }
              function g(h, E, w) {
                if (E.setScale(), E.autorange) {
                  E.range = w ? w.slice() : r(h, E), E._r = E.range.slice(), E._rl = n.simpleMap(E._r, E.r2l);
                  var z = E._input, O = {};
                  O[E._attr + ".range"] = E.range, O[E._attr + ".autorange"] = E.autorange, T.call("_storeDirectGUIEdit", h.layout, h._fullLayout._preGUI, O), z.range = E.range.slice(), z.autorange = E.autorange;
                }
                var B = E._anchorAxis;
                if (B && B.rangeslider) {
                  var V = B.rangeslider[E._name];
                  V && V.rangemode === "auto" && (V.range = r(h, E)), B._input.rangeslider[E._name] = n.extendFlat({}, V);
                }
              }
              function x(h, E, w) {
                w || (w = {}), h._m || h.setScale();
                var z = [], O = [], B = E.length, V = w.padded || !1, U = w.tozero && (h.type === "linear" || h.type === "-"), H = h.type === "log", F = !1, G = w.vpadLinearized || !1, q, rt, st, vt, ht, et, Q, j, at;
                function ut(Ct) {
                  if (Array.isArray(Ct))
                    return F = !0, function(Jt) {
                      return Math.max(Number(Ct[Jt] || 0), 0);
                    };
                  var Gt = Math.max(Number(Ct || 0), 0);
                  return function() {
                    return Gt;
                  };
                }
                var nt = ut((h._m > 0 ? w.ppadplus : w.ppadminus) || w.ppad || 0), X = ut((h._m > 0 ? w.ppadminus : w.ppadplus) || w.ppad || 0), ct = ut(w.vpadplus || w.vpad), lt = ut(w.vpadminus || w.vpad);
                if (!F) {
                  if (j = 1 / 0, at = -1 / 0, H)
                    for (q = 0; q < B; q++)
                      rt = E[q], rt < j && rt > 0 && (j = rt), rt > at && rt < s && (at = rt);
                  else
                    for (q = 0; q < B; q++)
                      rt = E[q], rt < j && rt > -s && (j = rt), rt > at && rt < s && (at = rt);
                  E = [j, at], B = 2;
                }
                var pt = {
                  tozero: U,
                  extrapad: V
                };
                function wt(Ct) {
                  st = E[Ct], P(st) && (et = nt(Ct), Q = X(Ct), G ? (vt = h.c2l(st) - lt(Ct), ht = h.c2l(st) + ct(Ct)) : (j = st - lt(Ct), at = st + ct(Ct), H && j < at / 10 && (j = at / 10), vt = h.c2l(j), ht = h.c2l(at)), U && (vt = Math.min(0, vt), ht = Math.max(0, ht)), _(vt) && c(z, vt, Q, pt), _(ht) && v(O, ht, et, pt));
                }
                var Et = Math.min(6, B);
                for (q = 0; q < Et; q++) wt(q);
                for (q = B - 1; q >= Et; q--) wt(q);
                return {
                  min: z,
                  max: O,
                  opts: w
                };
              }
              function c(h, E, w, z) {
                f(h, E, w, z, S);
              }
              function v(h, E, w, z) {
                f(h, E, w, z, M);
              }
              function f(h, E, w, z, O) {
                for (var B = z.tozero, V = z.extrapad, U = !0, H = 0; H < h.length && U; H++) {
                  var F = h[H];
                  if (O(F.val, E) && F.pad >= w && (F.extrapad || !V)) {
                    U = !1;
                    break;
                  } else O(E, F.val) && F.pad <= w && (V || !F.extrapad) && (h.splice(H, 1), H--);
                }
                if (U) {
                  var G = B && E === 0;
                  h.push({
                    val: E,
                    pad: G ? 0 : w,
                    extrapad: G ? !1 : V
                  });
                }
              }
              function _(h) {
                return P(h) && Math.abs(h) < s;
              }
              function S(h, E) {
                return h <= E;
              }
              function M(h, E) {
                return h >= E;
              }
              function C(h, E) {
                var w = E.autorangeoptions;
                return w && w.minallowed !== void 0 && L(E, w.minallowed, w.maxallowed) ? w.minallowed : w && w.clipmin !== void 0 && L(E, w.clipmin, w.clipmax) ? Math.max(h, E.d2l(w.clipmin)) : h;
              }
              function m(h, E) {
                var w = E.autorangeoptions;
                return w && w.maxallowed !== void 0 && L(E, w.minallowed, w.maxallowed) ? w.maxallowed : w && w.clipmax !== void 0 && L(E, w.clipmin, w.clipmax) ? Math.min(h, E.d2l(w.clipmax)) : h;
              }
              function L(h, E, w) {
                return E !== void 0 && w !== void 0 ? (E = h.d2l(E), w = h.d2l(w), E < w) : !0;
              }
              function d(h, E) {
                if (!E || !E.autorangeoptions) return h;
                var w = h[0], z = h[1], O = E.autorangeoptions.include;
                if (O !== void 0) {
                  var B = E.d2l(w), V = E.d2l(z);
                  n.isArrayOrTypedArray(O) || (O = [O]);
                  for (var U = 0; U < O.length; U++) {
                    var H = E.d2l(O[U]);
                    B >= H && (B = H, w = H), V <= H && (V = H, z = H);
                  }
                }
                return w = C(w, E), z = m(z, E), [w, z];
              }
            }
          ),
          /***/
          75511: (
            /***/
            function(Y) {
              Y.exports = function(e, b, P) {
                var n, s;
                if (P) {
                  var T = b === "reversed" || b === "min reversed" || b === "max reversed";
                  n = P[T ? 1 : 0], s = P[T ? 0 : 1];
                }
                var A = e("autorangeoptions.minallowed", s === null ? n : void 0), p = e("autorangeoptions.maxallowed", n === null ? s : void 0);
                A === void 0 && e("autorangeoptions.clipmin"), p === void 0 && e("autorangeoptions.clipmax"), e("autorangeoptions.include");
              };
            }
          ),
          /***/
          29714: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(10721), n = e(44122), s = e(33626), T = e(34809), A = T.strTranslate, p = e(30635), u = e(17240), t = e(78766), r = e(62203), i = e(25829), a = e(68599), l = e(63821), o = l.ONEMAXYEAR, y = l.ONEAVGYEAR, g = l.ONEMINYEAR, x = l.ONEMAXQUARTER, c = l.ONEAVGQUARTER, v = l.ONEMINQUARTER, f = l.ONEMAXMONTH, _ = l.ONEAVGMONTH, S = l.ONEMINMONTH, M = l.ONEWEEK, C = l.ONEDAY, m = C / 2, L = l.ONEHOUR, d = l.ONEMIN, h = l.ONESEC, E = l.ONEMILLI, w = l.ONEMICROSEC, z = l.MINUS_SIGN, O = l.BADNUM, B = {
                K: "zeroline"
              }, V = {
                K: "gridline",
                L: "path"
              }, U = {
                K: "minor-gridline",
                L: "path"
              }, H = {
                K: "tick",
                L: "path"
              }, F = {
                K: "tick",
                L: "text"
              }, G = {
                width: ["x", "r", "l", "xl", "xr"],
                height: ["y", "t", "b", "yt", "yb"],
                right: ["r", "xr"],
                left: ["l", "xl"],
                top: ["t", "yt"],
                bottom: ["b", "yb"]
              }, q = e(4530), rt = q.MID_SHIFT, st = q.CAP_SHIFT, vt = q.LINE_SPACING, ht = q.OPPOSITE_SIDE, et = 3, Q = Y.exports = {};
              Q.setConvert = e(19091);
              var j = e(9666), at = e(5975), ut = at.idSort, nt = at.isLinked;
              Q.id2name = at.id2name, Q.name2id = at.name2id, Q.cleanId = at.cleanId, Q.list = at.list, Q.listIds = at.listIds, Q.getFromId = at.getFromId, Q.getFromTrace = at.getFromTrace;
              var X = e(32919);
              Q.getAutoRange = X.getAutoRange, Q.findExtremes = X.findExtremes;
              var ct = 1e-4;
              function lt(oe) {
                var de = (oe[1] - oe[0]) * ct;
                return [oe[0] - de, oe[1] + de];
              }
              Q.coerceRef = function(oe, de, or, Er, Tr, tr) {
                var yr = Er.charAt(Er.length - 1), Ir = or._fullLayout._subplots[yr + "axis"], Cr = Er + "ref", _r = {};
                return Tr || (Tr = Ir[0] || (typeof tr == "string" ? tr : tr[0])), tr || (tr = Tr), Ir = Ir.concat(Ir.map(function(Zr) {
                  return Zr + " domain";
                })), _r[Cr] = {
                  valType: "enumerated",
                  values: Ir.concat(tr ? typeof tr == "string" ? [tr] : tr : []),
                  dflt: Tr
                }, T.coerce(oe, de, _r, Cr);
              }, Q.getRefType = function(oe) {
                return oe === void 0 ? oe : oe === "paper" ? "paper" : oe === "pixel" ? "pixel" : /( domain)$/.test(oe) ? "domain" : "range";
              }, Q.coercePosition = function(oe, de, or, Er, Tr, tr) {
                var yr, Ir, Cr = Q.getRefType(Er);
                if (Cr !== "range")
                  yr = T.ensureNumber, Ir = or(Tr, tr);
                else {
                  var _r = Q.getFromId(de, Er);
                  tr = _r.fraction2r(tr), Ir = or(Tr, tr), yr = _r.cleanPos;
                }
                oe[Tr] = yr(Ir);
              }, Q.cleanPosition = function(oe, de, or) {
                var Er = or === "paper" || or === "pixel" ? T.ensureNumber : Q.getFromId(de, or).cleanPos;
                return Er(oe);
              }, Q.redrawComponents = function(oe, de) {
                de = de || Q.listIds(oe);
                var or = oe._fullLayout;
                function Er(Tr, tr, yr, Ir) {
                  for (var Cr = s.getComponentMethod(Tr, tr), _r = {}, Zr = 0; Zr < de.length; Zr++)
                    for (var ln = or[Q.id2name(de[Zr])], Jr = ln[yr], Zn = 0; Zn < Jr.length; Zn++) {
                      var fn = Jr[Zn];
                      if (!_r[fn] && (Cr(oe, fn), _r[fn] = 1, Ir))
                        return;
                    }
                }
                Er("annotations", "drawOne", "_annIndices"), Er("shapes", "drawOne", "_shapeIndices"), Er("images", "draw", "_imgIndices", !0), Er("selections", "drawOne", "_selectionIndices");
              };
              var pt = Q.getDataConversions = function(oe, de, or, Er) {
                var Tr, tr = or === "x" || or === "y" || or === "z" ? or : Er;
                if (T.isArrayOrTypedArray(tr)) {
                  if (Tr = {
                    type: j(Er, void 0, {
                      autotypenumbers: oe._fullLayout.autotypenumbers
                    }),
                    _categories: []
                  }, Q.setConvert(Tr), Tr.type === "category")
                    for (var yr = 0; yr < Er.length; yr++)
                      Tr.d2c(Er[yr]);
                } else
                  Tr = Q.getFromTrace(oe, de, tr);
                return Tr ? {
                  d2c: Tr.d2c,
                  c2d: Tr.c2d
                } : tr === "ids" ? {
                  d2c: Et,
                  c2d: Et
                } : {
                  d2c: wt,
                  c2d: wt
                };
              };
              function wt(oe) {
                return +oe;
              }
              function Et(oe) {
                return String(oe);
              }
              Q.getDataToCoordFunc = function(oe, de, or, Er) {
                return pt(oe, de, or, Er).d2c;
              }, Q.counterLetter = function(oe) {
                var de = oe.charAt(0);
                if (de === "x") return "y";
                if (de === "y") return "x";
              }, Q.minDtick = function(oe, de, or, Er) {
                ["log", "category", "multicategory"].indexOf(oe.type) !== -1 || !Er ? oe._minDtick = 0 : oe._minDtick === void 0 ? (oe._minDtick = de, oe._forceTick0 = or) : oe._minDtick && ((oe._minDtick / de + 1e-6) % 1 < 2e-6 && // existing minDtick is an integer multiple of newDiff
                // (within rounding err)
                // and forceTick0 can be shifted to newFirst
                ((or - oe._forceTick0) / de % 1 + 1.000001) % 1 < 2e-6 ? (oe._minDtick = de, oe._forceTick0 = or) : ((de / oe._minDtick + 1e-6) % 1 > 2e-6 || // if the converse is true (newDiff is a multiple of minDtick and
                // newFirst can be shifted to forceTick0) then do nothing - same
                // forcing stands. Otherwise, cancel forced minimum
                ((or - oe._forceTick0) / oe._minDtick % 1 + 1.000001) % 1 > 2e-6) && (oe._minDtick = 0));
              }, Q.saveRangeInitial = function(oe, de) {
                for (var or = Q.list(oe, "", !0), Er = !1, Tr = 0; Tr < or.length; Tr++) {
                  var tr = or[Tr], yr = tr._rangeInitial0 === void 0 && tr._rangeInitial1 === void 0, Ir = yr || tr.range[0] !== tr._rangeInitial0 || tr.range[1] !== tr._rangeInitial1, Cr = tr.autorange;
                  (yr && Cr !== !0 || de && Ir) && (tr._rangeInitial0 = Cr === "min" || Cr === "max reversed" ? void 0 : tr.range[0], tr._rangeInitial1 = Cr === "max" || Cr === "min reversed" ? void 0 : tr.range[1], tr._autorangeInitial = Cr, Er = !0);
                }
                return Er;
              }, Q.saveShowSpikeInitial = function(oe, de) {
                for (var or = Q.list(oe, "", !0), Er = !1, Tr = "on", tr = 0; tr < or.length; tr++) {
                  var yr = or[tr], Ir = yr._showSpikeInitial === void 0, Cr = Ir || yr.showspikes !== yr._showspikes;
                  (Ir || de && Cr) && (yr._showSpikeInitial = yr.showspikes, Er = !0), Tr === "on" && !yr.showspikes && (Tr = "off");
                }
                return oe._fullLayout._cartesianSpikesEnabled = Tr, Er;
              }, Q.autoBin = function(oe, de, or, Er, Tr, tr) {
                var yr = T.aggNums(Math.min, null, oe), Ir = T.aggNums(Math.max, null, oe);
                if (de.type === "category" || de.type === "multicategory")
                  return {
                    start: yr - 0.5,
                    end: Ir + 0.5,
                    size: Math.max(1, Math.round(tr) || 1),
                    _dataSpan: Ir - yr
                  };
                Tr || (Tr = de.calendar);
                var Cr;
                if (de.type === "log" ? Cr = {
                  type: "linear",
                  range: [yr, Ir]
                } : Cr = {
                  type: de.type,
                  range: T.simpleMap([yr, Ir], de.c2r, 0, Tr),
                  calendar: Tr
                }, Q.setConvert(Cr), tr = tr && a.dtick(tr, Cr.type), tr)
                  Cr.dtick = tr, Cr.tick0 = a.tick0(void 0, Cr.type, Tr);
                else {
                  var _r;
                  if (or) _r = (Ir - yr) / or;
                  else {
                    var Zr = T.distinctVals(oe), ln = Math.pow(10, Math.floor(Math.log(Zr.minDiff) / Math.LN10)), Jr = ln * T.roundUp(Zr.minDiff / ln, [0.9, 1.9, 4.9, 9.9], !0);
                    _r = Math.max(Jr, 2 * T.stdev(oe) / Math.pow(oe.length, Er ? 0.25 : 0.4)), P(_r) || (_r = 1);
                  }
                  Q.autoTicks(Cr, _r);
                }
                var Zn = Cr.dtick, fn = Q.tickIncrement(Q.tickFirst(Cr), Zn, "reverse", Tr), hi, Vn;
                if (typeof Zn == "number")
                  fn = Ct(fn, oe, Cr, yr, Ir), Vn = 1 + Math.floor((Ir - fn) / Zn), hi = fn + Vn * Zn;
                else
                  for (Cr.dtick.charAt(0) === "M" && (fn = Gt(fn, oe, Zn, yr, Tr)), hi = fn, Vn = 0; hi <= Ir; )
                    hi = Q.tickIncrement(hi, Zn, !1, Tr), Vn++;
                return {
                  start: de.c2r(fn, 0, Tr),
                  end: de.c2r(hi, 0, Tr),
                  size: Zn,
                  _dataSpan: Ir - yr
                };
              };
              function Ct(oe, de, or, Er, Tr) {
                var tr = 0, yr = 0, Ir = 0, Cr = 0;
                function _r(Zn) {
                  return (1 + (Zn - oe) * 100 / or.dtick) % 100 < 2;
                }
                for (var Zr = 0; Zr < de.length; Zr++)
                  de[Zr] % 1 === 0 ? Ir++ : P(de[Zr]) || Cr++, _r(de[Zr]) && tr++, _r(de[Zr] + or.dtick / 2) && yr++;
                var ln = de.length - Cr;
                if (Ir === ln && or.type !== "date")
                  or.dtick < 1 ? oe = Er - 0.5 * or.dtick : (oe -= 0.5, oe + or.dtick < Er && (oe += or.dtick));
                else if (yr < ln * 0.1 && (tr > ln * 0.3 || _r(Er) || _r(Tr))) {
                  var Jr = or.dtick / 2;
                  oe += oe + Jr < Er ? Jr : -Jr;
                }
                return oe;
              }
              function Gt(oe, de, or, Er, Tr) {
                var tr = T.findExactDates(de, Tr), yr = 0.8;
                if (tr.exactDays > yr) {
                  var Ir = Number(or.substr(1));
                  tr.exactYears > yr && Ir % 12 === 0 ? oe = Q.tickIncrement(oe, "M6", "reverse") + C * 1.5 : tr.exactMonths > yr ? oe = Q.tickIncrement(oe, "M1", "reverse") + C * 15.5 : oe -= m;
                  var Cr = Q.tickIncrement(oe, or);
                  if (Cr <= Er) return Cr;
                }
                return oe;
              }
              Q.prepMinorTicks = function(oe, de, or) {
                if (!de.minor.dtick) {
                  delete oe.dtick;
                  var Er = de.dtick && P(de._tmin), Tr;
                  if (Er) {
                    var tr = Q.tickIncrement(de._tmin, de.dtick, !0);
                    Tr = [de._tmin, tr * 0.99 + de._tmin * 0.01];
                  } else {
                    var yr = T.simpleMap(de.range, de.r2l);
                    Tr = [yr[0], 0.8 * yr[0] + 0.2 * yr[1]];
                  }
                  if (oe.range = T.simpleMap(Tr, de.l2r), oe._isMinor = !0, Q.prepTicks(oe, or), Er) {
                    var Ir = P(de.dtick), Cr = P(oe.dtick), _r = Ir ? de.dtick : +de.dtick.substring(1), Zr = Cr ? oe.dtick : +oe.dtick.substring(1);
                    Ir && Cr ? Jt(_r, Zr) ? _r === 2 * M && Zr === 2 * C && (oe.dtick = M) : _r === 2 * M && Zr === 3 * C ? oe.dtick = M : _r === M && !(de._input.minor || {}).nticks ? oe.dtick = C : Qt(_r / Zr, 2.5) ? oe.dtick = _r / 2 : oe.dtick = _r : String(de.dtick).charAt(0) === "M" ? Cr ? oe.dtick = "M1" : Jt(_r, Zr) ? _r >= 12 && Zr === 2 && (oe.dtick = "M3") : oe.dtick = de.dtick : String(oe.dtick).charAt(0) === "L" ? String(de.dtick).charAt(0) === "L" ? Jt(_r, Zr) || (oe.dtick = Qt(_r / Zr, 2.5) ? de.dtick / 2 : de.dtick) : oe.dtick = "D1" : oe.dtick === "D2" && +de.dtick > 1 && (oe.dtick = 1);
                  }
                  oe.range = de.range;
                }
                de.minor._tick0Init === void 0 && (oe.tick0 = de.tick0);
              };
              function Jt(oe, de) {
                return Math.abs((oe / de + 0.5) % 1 - 0.5) < 1e-3;
              }
              function Qt(oe, de) {
                return Math.abs(oe / de - 1) < 1e-3;
              }
              Q.prepTicks = function(oe, de) {
                var or = T.simpleMap(oe.range, oe.r2l, void 0, void 0, de);
                if (oe.tickmode === "auto" || !oe.dtick) {
                  var Er = oe.nticks, Tr;
                  Er || (oe.type === "category" || oe.type === "multicategory" ? (Tr = oe.tickfont ? T.bigFont(oe.tickfont.size || 12) : 15, Er = oe._length / Tr) : (Tr = oe._id.charAt(0) === "y" ? 40 : 80, Er = T.constrain(oe._length / Tr, 4, 9) + 1), oe._name === "radialaxis" && (Er *= 2)), oe.minor && oe.minor.tickmode !== "array" || oe.tickmode === "array" && (Er *= 100), oe._roughDTick = Math.abs(or[1] - or[0]) / Er, Q.autoTicks(oe, oe._roughDTick), oe._minDtick > 0 && oe.dtick < oe._minDtick * 2 && (oe.dtick = oe._minDtick, oe.tick0 = oe.l2r(oe._forceTick0));
                }
                oe.ticklabelmode === "period" && zt(oe), oe.tick0 || (oe.tick0 = oe.type === "date" ? "2000-01-01" : 0), oe.type === "date" && oe.dtick < 0.1 && (oe.dtick = 0.1), Oe(oe);
              };
              function Vt(oe) {
                return +oe.substring(1);
              }
              function zt(oe) {
                var de;
                function or() {
                  return !(P(oe.dtick) || oe.dtick.charAt(0) !== "M");
                }
                var Er = or(), Tr = Q.getTickFormat(oe);
                if (Tr) {
                  var tr = oe._dtickInit !== oe.dtick;
                  /%[fLQsSMX]/.test(Tr) || (/%[HI]/.test(Tr) ? (de = L, tr && !Er && oe.dtick < L && (oe.dtick = L)) : /%p/.test(Tr) ? (de = m, tr && !Er && oe.dtick < m && (oe.dtick = m)) : /%[Aadejuwx]/.test(Tr) ? (de = C, tr && !Er && oe.dtick < C && (oe.dtick = C)) : /%[UVW]/.test(Tr) ? (de = M, tr && !Er && oe.dtick < M && (oe.dtick = M)) : /%[Bbm]/.test(Tr) ? (de = _, tr && (Er ? Vt(oe.dtick) < 1 : oe.dtick < S) && (oe.dtick = "M1")) : /%[q]/.test(Tr) ? (de = c, tr && (Er ? Vt(oe.dtick) < 3 : oe.dtick < v) && (oe.dtick = "M3")) : /%[Yy]/.test(Tr) && (de = y, tr && (Er ? Vt(oe.dtick) < 12 : oe.dtick < g) && (oe.dtick = "M12")));
                }
                Er = or(), Er && oe.tick0 === oe._dowTick0 && (oe.tick0 = oe._rawTick0), oe._definedDelta = de;
              }
              function Rt(oe, de, or) {
                for (var Er = 0; Er < oe.length; Er++) {
                  var Tr = oe[Er].value, tr = Er, yr = Er + 1;
                  Er < oe.length - 1 ? (tr = Er, yr = Er + 1) : Er > 0 ? (tr = Er - 1, yr = Er) : (tr = Er, yr = Er);
                  var Ir = oe[tr].value, Cr = oe[yr].value, _r = Math.abs(Cr - Ir), Zr = or || _r, ln = 0;
                  Zr >= g ? _r >= g && _r <= o ? ln = _r : ln = y : or === c && Zr >= v ? _r >= v && _r <= x ? ln = _r : ln = c : Zr >= S ? _r >= S && _r <= f ? ln = _r : ln = _ : or === M && Zr >= M ? ln = M : Zr >= C ? ln = C : or === m && Zr >= m ? ln = m : or === L && Zr >= L && (ln = L);
                  var Jr;
                  ln >= _r && (ln = _r, Jr = !0);
                  var Zn = Tr + ln;
                  if (de.rangebreaks && ln > 0) {
                    for (var fn = 84, hi = 0, Vn = 0; Vn < fn; Vn++) {
                      var jr = (Vn + 0.5) / fn;
                      de.maskBreaks(Tr * (1 - jr) + jr * Zn) !== O && hi++;
                    }
                    ln *= hi / fn, ln || (oe[Er].drop = !0), Jr && _r > M && (ln = _r);
                  }
                  (ln > 0 || // not instant
                  Er === 0) && (oe[Er].periodX = Tr + ln / 2);
                }
              }
              Q.calcTicks = function(de, or) {
                for (var Er = de.type, Tr = de.calendar, tr = de.ticklabelstep, yr = de.ticklabelmode === "period", Ir = de.range[0] > de.range[1], Cr = !de.ticklabelindex || T.isArrayOrTypedArray(de.ticklabelindex) ? de.ticklabelindex : [de.ticklabelindex], _r = T.simpleMap(de.range, de.r2l, void 0, void 0, or), Zr = _r[1] < _r[0], ln = Math.min(_r[0], _r[1]), Jr = Math.max(_r[0], _r[1]), Zn = Math.max(1e3, de._length || 0), fn = [], hi = [], Vn = [], jr = [], zr = [], Tn = de.minor && (de.minor.ticks || de.minor.showgrid), sn = 1; sn >= (Tn ? 0 : 1); sn--) {
                  var $n = !sn;
                  sn ? (de._dtickInit = de.dtick, de._tick0Init = de.tick0) : (de.minor._dtickInit = de.minor.dtick, de.minor._tick0Init = de.minor.tick0);
                  var kn = sn ? de : T.extendFlat({}, de, de.minor);
                  if ($n ? Q.prepMinorTicks(kn, de, or) : Q.prepTicks(kn, or), kn.tickmode === "array") {
                    sn ? (Vn = [], fn = re(de, !$n)) : (jr = [], hi = re(de, !$n));
                    continue;
                  }
                  if (kn.tickmode === "sync") {
                    Vn = [], fn = kt(de);
                    continue;
                  }
                  var An = lt(_r), qn = An[0], si = An[1], qi = P(kn.dtick), ha = Er === "log" && !(qi || kn.dtick.charAt(0) === "L"), Mi = Q.tickFirst(kn, or);
                  if (sn) {
                    if (de._tmin = Mi, Mi < qn !== Zr) break;
                    (Er === "category" || Er === "multicategory") && (si = Zr ? Math.max(-0.5, si) : Math.min(de._categories.length - 0.5, si));
                  }
                  var Ji = null, ci = Mi, rn;
                  if (sn) {
                    var Cn;
                    qi ? Cn = de.dtick : Er === "date" ? typeof de.dtick == "string" && de.dtick.charAt(0) === "M" && (Cn = _ * de.dtick.substring(1)) : Cn = de._roughDTick, rn = Math.round((de.r2l(ci) - de.r2l(de.tick0)) / Cn) - 1;
                  }
                  var Un = kn.dtick;
                  for (kn.rangebreaks && kn._tick0Init !== kn.tick0 && (ci = Dr(ci, de), Zr || (ci = Q.tickIncrement(ci, Un, !Zr, Tr))), sn && yr && (ci = Q.tickIncrement(ci, Un, !Zr, Tr), rn--); Zr ? ci >= si : ci <= si; ci = Q.tickIncrement(ci, Un, Zr, Tr)) {
                    if (sn && rn++, kn.rangebreaks && !Zr) {
                      if (ci < qn) continue;
                      if (kn.maskBreaks(ci) === O && Dr(ci, kn) >= Jr) break;
                    }
                    if (Vn.length > Zn || ci === Ji) break;
                    Ji = ci;
                    var Fn = {
                      value: ci
                    };
                    sn ? (ha && ci !== (ci | 0) && (Fn.simpleLabel = !0), tr > 1 && rn % tr && (Fn.skipLabel = !0), Vn.push(Fn)) : (Fn.minor = !0, jr.push(Fn));
                  }
                }
                if (!jr || jr.length < 2)
                  Cr = !1;
                else {
                  var mi = (jr[1].value - jr[0].value) * (Ir ? -1 : 1);
                  Gr(mi, de.tickformat) || (Cr = !1);
                }
                if (!Cr)
                  zr = Vn;
                else {
                  var Nn = Vn.concat(jr);
                  yr && Vn.length && (Nn = Nn.slice(1)), Nn = Nn.sort(function(Ti, bi) {
                    return Ti.value - bi.value;
                  }).filter(function(Ti, bi, ki) {
                    return bi === 0 || Ti.value !== ki[bi - 1].value;
                  });
                  var di = Nn.map(function(Ti, bi) {
                    return Ti.minor === void 0 && !Ti.skipLabel ? bi : null;
                  }).filter(function(Ti) {
                    return Ti !== null;
                  });
                  di.forEach(function(Ti) {
                    Cr.map(function(bi) {
                      var ki = Ti + bi;
                      ki >= 0 && ki < Nn.length && T.pushUnique(zr, Nn[ki]);
                    });
                  });
                }
                if (Tn) {
                  var Ai = de.minor.ticks === "inside" && de.ticks === "outside" || de.minor.ticks === "outside" && de.ticks === "inside";
                  if (!Ai) {
                    for (var Gi = Vn.map(function(Ti) {
                      return Ti.value;
                    }), ia = [], Ca = 0; Ca < jr.length; Ca++) {
                      var Qr = jr[Ca], pn = Qr.value;
                      if (Gi.indexOf(pn) === -1) {
                        for (var $r = !1, mn = 0; !$r && mn < Vn.length; mn++)
                          // add 10e6 to eliminate problematic digits
                          1e7 + Vn[mn].value === 1e7 + pn && ($r = !0);
                        $r || ia.push(Qr);
                      }
                    }
                    jr = ia;
                  }
                }
                yr && Rt(zr, de, de._definedDelta);
                var Wn;
                if (de.rangebreaks) {
                  var yi = de._id.charAt(0) === "y", ei = 1;
                  de.tickmode === "auto" && (ei = de.tickfont ? de.tickfont.size : 12);
                  var Jn = NaN;
                  for (Wn = Vn.length - 1; Wn > -1; Wn--) {
                    if (Vn[Wn].drop) {
                      Vn.splice(Wn, 1);
                      continue;
                    }
                    Vn[Wn].value = Dr(Vn[Wn].value, de);
                    var en = de.c2p(Vn[Wn].value);
                    (yi ? Jn > en - ei : Jn < en + ei) ? Vn.splice(Zr ? Wn + 1 : Wn, 1) : Jn = en;
                  }
                }
                Sr(de) && Math.abs(_r[1] - _r[0]) === 360 && Vn.pop(), de._tmax = (Vn[Vn.length - 1] || {}).value, de._prevDateHead = "", de._inCalcTicks = !0;
                var Sn, wn = function(Ti) {
                  Ti.text = "", de._prevDateHead = Sn;
                };
                Vn = Vn.concat(jr);
                function Dn(Ti, bi) {
                  var ki = Q.tickText(
                    Ti,
                    bi.value,
                    !1,
                    // hover
                    bi.simpleLabel
                    // noSuffixPrefix
                  ), Bi = bi.periodX;
                  return Bi !== void 0 && (ki.periodX = Bi, (Bi > Jr || Bi < ln) && (Bi > Jr && (ki.periodX = Jr), Bi < ln && (ki.periodX = ln), wn(ki))), ki;
                }
                var li;
                for (Wn = 0; Wn < Vn.length; Wn++) {
                  var fi = Vn[Wn].minor, _i = Vn[Wn].value;
                  fi ? (Cr && zr.indexOf(Vn[Wn]) !== -1 ? li = Dn(de, Vn[Wn]) : li = {
                    x: _i
                  }, li.minor = !0, hi.push(li)) : (Sn = de._prevDateHead, li = Dn(de, Vn[Wn]), (Vn[Wn].skipLabel || Cr && zr.indexOf(Vn[Wn]) === -1) && wn(li), fn.push(li));
                }
                return fn = fn.concat(hi), de._inCalcTicks = !1, yr && fn.length && (fn[0].noTick = !0), fn;
              };
              function Wt(oe, de) {
                return oe.rangebreaks && (de = de.filter(function(or) {
                  return oe.maskBreaks(or.x) !== O;
                })), de;
              }
              function kt(oe) {
                var de = oe._mainAxis, or = [];
                if (de._vals) {
                  for (var Er = 0; Er < de._vals.length; Er++)
                    if (!de._vals[Er].noTick) {
                      var Tr = de.l2p(de._vals[Er].x), tr = oe.p2l(Tr), yr = Q.tickText(oe, tr);
                      de._vals[Er].minor && (yr.minor = !0, yr.text = ""), or.push(yr);
                    }
                }
                return or = Wt(oe, or), or;
              }
              function re(oe, de) {
                var or = T.simpleMap(oe.range, oe.r2l), Er = lt(or), Tr = Math.min(Er[0], Er[1]), tr = Math.max(Er[0], Er[1]), yr = oe.type === "category" ? oe.d2l_noadd : oe.d2l;
                oe.type === "log" && String(oe.dtick).charAt(0) !== "L" && (oe.dtick = "L" + Math.pow(10, Math.floor(Math.min(oe.range[0], oe.range[1])) - 1));
                for (var Ir = [], Cr = 0; Cr <= 1; Cr++)
                  if (!(de !== void 0 && (de && Cr || de === !1 && !Cr)) && !(Cr && !oe.minor)) {
                    var _r = Cr ? oe.minor.tickvals : oe.tickvals, Zr = Cr ? [] : oe.ticktext;
                    if (_r) {
                      T.isArrayOrTypedArray(Zr) || (Zr = []);
                      for (var ln = 0; ln < _r.length; ln++) {
                        var Jr = yr(_r[ln]);
                        if (Jr > Tr && Jr < tr) {
                          var Zn = Q.tickText(oe, Jr, !1, String(Zr[ln]));
                          Cr && (Zn.minor = !0, Zn.text = ""), Ir.push(Zn);
                        }
                      }
                    }
                  }
                return Ir = Wt(oe, Ir), Ir;
              }
              var ge = [2, 5, 10], _e = [1, 2, 3, 6, 12], ce = [1, 2, 5, 10, 15, 30], ae = [1, 2, 3, 7, 14], Se = [-0.046, 0, 0.301, 0.477, 0.602, 0.699, 0.778, 0.845, 0.903, 0.954, 1], ze = [-0.301, 0, 0.301, 0.699, 1], Ne = [15, 30, 45, 90, 180];
              function Ve(oe, de, or) {
                return de * T.roundUp(oe / de, or);
              }
              Q.autoTicks = function(oe, de, or) {
                var Er;
                function Tr(ln) {
                  return Math.pow(ln, Math.floor(Math.log(de) / Math.LN10));
                }
                if (oe.type === "date") {
                  oe.tick0 = T.dateTick0(oe.calendar, 0);
                  var tr = 2 * de;
                  if (tr > y)
                    de /= y, Er = Tr(10), oe.dtick = "M" + 12 * Ve(de, Er, ge);
                  else if (tr > _)
                    de /= _, oe.dtick = "M" + Ve(de, 1, _e);
                  else if (tr > C) {
                    if (oe.dtick = Ve(de, C, oe._hasDayOfWeekBreaks ? [1, 2, 7, 14] : ae), !or) {
                      var yr = Q.getTickFormat(oe), Ir = oe.ticklabelmode === "period";
                      Ir && (oe._rawTick0 = oe.tick0), /%[uVW]/.test(yr) ? oe.tick0 = T.dateTick0(oe.calendar, 2) : oe.tick0 = T.dateTick0(oe.calendar, 1), Ir && (oe._dowTick0 = oe.tick0);
                    }
                  } else tr > L ? oe.dtick = Ve(de, L, _e) : tr > d ? oe.dtick = Ve(de, d, ce) : tr > h ? oe.dtick = Ve(de, h, ce) : (Er = Tr(10), oe.dtick = Ve(de, Er, ge));
                } else if (oe.type === "log") {
                  oe.tick0 = 0;
                  var Cr = T.simpleMap(oe.range, oe.r2l);
                  if (oe._isMinor && (de *= 1.5), de > 0.7)
                    oe.dtick = Math.ceil(de);
                  else if (Math.abs(Cr[1] - Cr[0]) < 1) {
                    var _r = 1.5 * Math.abs((Cr[1] - Cr[0]) / de);
                    de = Math.abs(Math.pow(10, Cr[1]) - Math.pow(10, Cr[0])) / _r, Er = Tr(10), oe.dtick = "L" + Ve(de, Er, ge);
                  } else
                    oe.dtick = de > 0.3 ? "D2" : "D1";
                } else oe.type === "category" || oe.type === "multicategory" ? (oe.tick0 = 0, oe.dtick = Math.ceil(Math.max(de, 1))) : Sr(oe) ? (oe.tick0 = 0, Er = 1, oe.dtick = Ve(de, Er, Ne)) : (oe.tick0 = 0, Er = Tr(10), oe.dtick = Ve(de, Er, ge));
                if (oe.dtick === 0 && (oe.dtick = 1), !P(oe.dtick) && typeof oe.dtick != "string") {
                  var Zr = oe.dtick;
                  throw oe.dtick = 1, "ax.dtick error: " + String(Zr);
                }
              };
              function Oe(oe) {
                var de = oe.dtick;
                if (oe._tickexponent = 0, !P(de) && typeof de != "string" && (de = 1), (oe.type === "category" || oe.type === "multicategory") && (oe._tickround = null), oe.type === "date") {
                  var or = oe.r2l(oe.tick0), Er = oe.l2r(or).replace(/(^-|i)/g, ""), Tr = Er.length;
                  if (String(de).charAt(0) === "M")
                    Tr > 10 || Er.substr(5) !== "01-01" ? oe._tickround = "d" : oe._tickround = +de.substr(1) % 12 === 0 ? "y" : "m";
                  else if (de >= C && Tr <= 10 || de >= C * 15) oe._tickround = "d";
                  else if (de >= d && Tr <= 16 || de >= L) oe._tickround = "M";
                  else if (de >= h && Tr <= 19 || de >= d) oe._tickround = "S";
                  else {
                    var tr = oe.l2r(or + de).replace(/^-/, "").length;
                    oe._tickround = Math.max(Tr, tr) - 20, oe._tickround < 0 && (oe._tickround = 4);
                  }
                } else if (P(de) || de.charAt(0) === "L") {
                  var yr = oe.range.map(oe.r2d || Number);
                  P(de) || (de = Number(de.substr(1))), oe._tickround = 2 - Math.floor(Math.log(de) / Math.LN10 + 0.01);
                  var Ir = Math.max(Math.abs(yr[0]), Math.abs(yr[1])), Cr = Math.floor(Math.log(Ir) / Math.LN10 + 0.01), _r = oe.minexponent === void 0 ? 3 : oe.minexponent;
                  Math.abs(Cr) > _r && (Mt(oe.exponentformat) && !St(Cr) ? oe._tickexponent = 3 * Math.round((Cr - 1) / 3) : oe._tickexponent = Cr);
                } else
                  oe._tickround = null;
              }
              Q.tickIncrement = function(oe, de, or, Er) {
                var Tr = or ? -1 : 1;
                if (P(de)) return T.increment(oe, Tr * de);
                var tr = de.charAt(0), yr = Tr * Number(de.substr(1));
                if (tr === "M") return T.incrementMonth(oe, yr, Er);
                if (tr === "L") return Math.log(Math.pow(10, oe) + yr) / Math.LN10;
                if (tr === "D") {
                  var Ir = de === "D2" ? ze : Se, Cr = oe + Tr * 0.01, _r = T.roundUp(T.mod(Cr, 1), Ir, or);
                  return Math.floor(Cr) + Math.log(b.round(Math.pow(10, _r), 1)) / Math.LN10;
                }
                throw "unrecognized dtick " + String(de);
              }, Q.tickFirst = function(oe, de) {
                var or = oe.r2l || Number, Er = T.simpleMap(oe.range, or, void 0, void 0, de), Tr = Er[1] < Er[0], tr = Tr ? Math.floor : Math.ceil, yr = lt(Er)[0], Ir = oe.dtick, Cr = or(oe.tick0);
                if (P(Ir)) {
                  var _r = tr((yr - Cr) / Ir) * Ir + Cr;
                  return (oe.type === "category" || oe.type === "multicategory") && (_r = T.constrain(_r, 0, oe._categories.length - 1)), _r;
                }
                var Zr = Ir.charAt(0), ln = Number(Ir.substr(1));
                if (Zr === "M") {
                  for (var Jr = 0, Zn = Cr, fn, hi, Vn; Jr < 10; ) {
                    if (fn = Q.tickIncrement(Zn, Ir, Tr, oe.calendar), (fn - yr) * (Zn - yr) <= 0)
                      return Tr ? Math.min(Zn, fn) : Math.max(Zn, fn);
                    hi = (yr - (Zn + fn) / 2) / (fn - Zn), Vn = Zr + (Math.abs(Math.round(hi)) || 1) * ln, Zn = Q.tickIncrement(Zn, Vn, hi < 0 ? !Tr : Tr, oe.calendar), Jr++;
                  }
                  return T.error("tickFirst did not converge", oe), Zn;
                } else {
                  if (Zr === "L")
                    return Math.log(tr((Math.pow(10, yr) - Cr) / ln) * ln + Cr) / Math.LN10;
                  if (Zr === "D") {
                    var jr = Ir === "D2" ? ze : Se, zr = T.roundUp(T.mod(yr, 1), jr, Tr);
                    return Math.floor(yr) + Math.log(b.round(Math.pow(10, zr), 1)) / Math.LN10;
                  } else throw "unrecognized dtick " + String(Ir);
                }
              }, Q.tickText = function(oe, de, or, Er) {
                var Tr = ur(oe, de), tr = oe.tickmode === "array", yr = or || tr, Ir = oe.type, Cr = Ir === "category" ? oe.d2l_noadd : oe.d2l, _r, Zr = function(Vn) {
                  var jr = oe.l2p(Vn);
                  return jr >= 0 && jr <= oe._length ? Vn : null;
                };
                if (tr && T.isArrayOrTypedArray(oe.ticktext)) {
                  var ln = T.simpleMap(oe.range, oe.r2l), Jr = (Math.abs(ln[1] - ln[0]) - (oe._lBreaks || 0)) / 1e4;
                  for (_r = 0; _r < oe.ticktext.length && !(Math.abs(de - Cr(oe.tickvals[_r])) < Jr); _r++)
                    ;
                  if (_r < oe.ticktext.length)
                    return Tr.text = String(oe.ticktext[_r]), Tr.xbnd = [Zr(Tr.x - 0.5), Zr(Tr.x + oe.dtick - 0.5)], Tr;
                }
                function Zn(Vn) {
                  if (Vn === void 0) return !0;
                  if (or) return Vn === "none";
                  var jr = {
                    first: oe._tmin,
                    last: oe._tmax
                  }[Vn];
                  return Vn !== "all" && de !== jr;
                }
                var fn = or ? "never" : oe.exponentformat !== "none" && Zn(oe.showexponent) ? "hide" : "";
                if (Ir === "date" ? ie(oe, Tr, or, yr) : Ir === "log" ? $t(oe, Tr, or, yr, fn) : Ir === "category" ? jt(oe, Tr) : Ir === "multicategory" ? ee(oe, Tr, or) : Sr(oe) ? Xt(oe, Tr, or, yr, fn) : Bt(oe, Tr, or, yr, fn), Er || (oe.tickprefix && !Zn(oe.showtickprefix) && (Tr.text = oe.tickprefix + Tr.text), oe.ticksuffix && !Zn(oe.showticksuffix) && (Tr.text += oe.ticksuffix)), oe.labelalias && oe.labelalias.hasOwnProperty(Tr.text)) {
                  var hi = oe.labelalias[Tr.text];
                  typeof hi == "string" && (Tr.text = hi);
                }
                return (oe.tickson === "boundaries" || oe.showdividers) && (Tr.xbnd = [Zr(Tr.x - 0.5), Zr(Tr.x + oe.dtick - 0.5)]), Tr;
              }, Q.hoverLabelText = function(oe, de, or) {
                or && (oe = T.extendFlat({}, oe, {
                  hoverformat: or
                }));
                var Er = T.isArrayOrTypedArray(de) ? de[0] : de, Tr = T.isArrayOrTypedArray(de) ? de[1] : void 0;
                if (Tr !== void 0 && Tr !== Er)
                  return Q.hoverLabelText(oe, Er, or) + " - " + Q.hoverLabelText(oe, Tr, or);
                var tr = oe.type === "log" && Er <= 0, yr = Q.tickText(oe, oe.c2l(tr ? -Er : Er), "hover").text;
                return tr ? Er === 0 ? "0" : z + yr : yr;
              };
              function ur(oe, de, or) {
                var Er = oe.tickfont || {};
                return {
                  x: de,
                  dx: 0,
                  dy: 0,
                  text: or || "",
                  fontSize: Er.size,
                  font: Er.family,
                  fontWeight: Er.weight,
                  fontStyle: Er.style,
                  fontVariant: Er.variant,
                  fontTextcase: Er.textcase,
                  fontLineposition: Er.lineposition,
                  fontShadow: Er.shadow,
                  fontColor: Er.color
                };
              }
              function ie(oe, de, or, Er) {
                var Tr = oe._tickround, tr = or && oe.hoverformat || Q.getTickFormat(oe);
                Er = !tr && Er, Er && (P(Tr) ? Tr = 4 : Tr = {
                  y: "m",
                  m: "d",
                  d: "M",
                  M: "S",
                  S: 4
                }[Tr]);
                var yr = T.formatDate(de.x, tr, Tr, oe._dateFormat, oe.calendar, oe._extraFormat), Ir, Cr = yr.indexOf(`
`);
                if (Cr !== -1 && (Ir = yr.substr(Cr + 1), yr = yr.substr(0, Cr)), Er && (Ir !== void 0 && (yr === "00:00:00" || yr === "00:00") ? (yr = Ir, Ir = "") : yr.length === 8 && (yr = yr.replace(/:00$/, ""))), Ir)
                  if (or)
                    Tr === "d" ? yr += ", " + Ir : yr = Ir + (yr ? ", " + yr : "");
                  else if (!oe._inCalcTicks || oe._prevDateHead !== Ir)
                    oe._prevDateHead = Ir, yr += "<br>" + Ir;
                  else {
                    var _r = Or(oe), Zr = oe._trueSide || oe.side;
                    (!_r && Zr === "top" || _r && Zr === "bottom") && (yr += "<br> ");
                  }
                de.text = yr;
              }
              function $t(oe, de, or, Er, Tr) {
                var tr = oe.dtick, yr = de.x, Ir = oe.tickformat, Cr = typeof tr == "string" && tr.charAt(0);
                if (Tr === "never" && (Tr = ""), Er && Cr !== "L" && (tr = "L3", Cr = "L"), Ir || Cr === "L")
                  de.text = Lt(Math.pow(10, yr), oe, Tr, Er);
                else if (P(tr) || Cr === "D" && T.mod(yr + 0.01, 1) < 0.1) {
                  var _r = Math.round(yr), Zr = Math.abs(_r), ln = oe.exponentformat;
                  ln === "power" || Mt(ln) && St(_r) ? (_r === 0 ? de.text = 1 : _r === 1 ? de.text = "10" : de.text = "10<sup>" + (_r > 1 ? "" : z) + Zr + "</sup>", de.fontSize *= 1.25) : (ln === "e" || ln === "E") && Zr > 2 ? de.text = "1" + ln + (_r > 0 ? "+" : z) + Zr : (de.text = Lt(Math.pow(10, yr), oe, "", "fakehover"), tr === "D1" && oe._id.charAt(0) === "y" && (de.dy -= de.fontSize / 6));
                } else if (Cr === "D")
                  de.text = String(Math.round(Math.pow(10, T.mod(yr, 1)))), de.fontSize *= 0.75;
                else throw "unrecognized dtick " + String(tr);
                if (oe.dtick === "D1") {
                  var Jr = String(de.text).charAt(0);
                  (Jr === "0" || Jr === "1") && (oe._id.charAt(0) === "y" ? de.dx -= de.fontSize / 4 : (de.dy += de.fontSize / 2, de.dx += (oe.range[1] > oe.range[0] ? 1 : -1) * de.fontSize * (yr < 0 ? 0.5 : 0.25)));
                }
              }
              function jt(oe, de) {
                var or = oe._categories[Math.round(de.x)];
                or === void 0 && (or = ""), de.text = String(or);
              }
              function ee(oe, de, or) {
                var Er = Math.round(de.x), Tr = oe._categories[Er] || [], tr = Tr[1] === void 0 ? "" : String(Tr[1]), yr = Tr[0] === void 0 ? "" : String(Tr[0]);
                or ? de.text = yr + " - " + tr : (de.text = tr, de.text2 = yr);
              }
              function Bt(oe, de, or, Er, Tr) {
                Tr === "never" ? Tr = "" : oe.showexponent === "all" && Math.abs(de.x / oe.dtick) < 1e-6 && (Tr = "hide"), de.text = Lt(de.x, oe, Tr, Er);
              }
              function Xt(oe, de, or, Er, Tr) {
                if (oe.thetaunit === "radians" && !or) {
                  var tr = de.x / 180;
                  if (tr === 0)
                    de.text = "0";
                  else {
                    var yr = Zt(tr);
                    if (yr[1] >= 100)
                      de.text = Lt(T.deg2rad(de.x), oe, Tr, Er);
                    else {
                      var Ir = de.x < 0;
                      yr[1] === 1 ? yr[0] === 1 ? de.text = "π" : de.text = yr[0] + "π" : de.text = ["<sup>", yr[0], "</sup>", "⁄", "<sub>", yr[1], "</sub>", "π"].join(""), Ir && (de.text = z + de.text);
                    }
                  }
                } else
                  de.text = Lt(de.x, oe, Tr, Er);
              }
              function Zt(oe) {
                function de(Ir, Cr) {
                  return Math.abs(Ir - Cr) <= 1e-6;
                }
                function or(Ir, Cr) {
                  return de(Cr, 0) ? Ir : or(Cr, Ir % Cr);
                }
                function Er(Ir) {
                  for (var Cr = 1; !de(Math.round(Ir * Cr) / Cr, Ir); )
                    Cr *= 10;
                  return Cr;
                }
                var Tr = Er(oe), tr = oe * Tr, yr = Math.abs(or(tr, Tr));
                return [
                  // numerator
                  Math.round(tr / yr),
                  // denominator
                  Math.round(Tr / yr)
                ];
              }
              var ye = ["f", "p", "n", "μ", "m", "", "k", "M", "G", "T"];
              function Mt(oe) {
                return oe === "SI" || oe === "B";
              }
              function St(oe) {
                return oe > 14 || oe < -15;
              }
              function Lt(oe, de, or, Er) {
                var Tr = oe < 0, tr = de._tickround, yr = or || de.exponentformat || "B", Ir = de._tickexponent, Cr = Q.getTickFormat(de), _r = de.separatethousands;
                if (Er) {
                  var Zr = {
                    exponentformat: yr,
                    minexponent: de.minexponent,
                    dtick: de.showexponent === "none" ? de.dtick : P(oe) && Math.abs(oe) || 1,
                    // if not showing any exponents, don't change the exponent
                    // from what we calculate
                    range: de.showexponent === "none" ? de.range.map(de.r2d) : [0, oe || 1]
                  };
                  Oe(Zr), tr = (Number(Zr._tickround) || 0) + 4, Ir = Zr._tickexponent, de.hoverformat && (Cr = de.hoverformat);
                }
                if (Cr) return de._numFormat(Cr)(oe).replace(/-/g, z);
                var ln = Math.pow(10, -tr) / 2;
                if (yr === "none" && (Ir = 0), oe = Math.abs(oe), oe < ln)
                  oe = "0", Tr = !1;
                else {
                  if (oe += ln, Ir && (oe *= Math.pow(10, -Ir), tr += Ir), tr === 0) oe = String(Math.floor(oe));
                  else if (tr < 0) {
                    oe = String(Math.round(oe)), oe = oe.substr(0, oe.length + tr);
                    for (var Jr = tr; Jr < 0; Jr++) oe += "0";
                  } else {
                    oe = String(oe);
                    var Zn = oe.indexOf(".") + 1;
                    Zn && (oe = oe.substr(0, Zn + tr).replace(/\.?0+$/, ""));
                  }
                  oe = T.numSeparate(oe, de._separators, _r);
                }
                if (Ir && yr !== "hide") {
                  Mt(yr) && St(Ir) && (yr = "power");
                  var fn;
                  Ir < 0 ? fn = z + -Ir : yr !== "power" ? fn = "+" + Ir : fn = String(Ir), yr === "e" || yr === "E" ? oe += yr + fn : yr === "power" ? oe += "×10<sup>" + fn + "</sup>" : yr === "B" && Ir === 9 ? oe += "B" : Mt(yr) && (oe += ye[Ir / 3 + 5]);
                }
                return Tr ? z + oe : oe;
              }
              Q.getTickFormat = function(oe) {
                var de;
                function or(Cr) {
                  return typeof Cr != "string" ? Cr : Number(Cr.replace("M", "")) * _;
                }
                function Er(Cr, _r) {
                  var Zr = ["L", "D"];
                  if (typeof Cr == typeof _r) {
                    if (typeof Cr == "number")
                      return Cr - _r;
                    var ln = Zr.indexOf(Cr.charAt(0)), Jr = Zr.indexOf(_r.charAt(0));
                    return ln === Jr ? Number(Cr.replace(/(L|D)/g, "")) - Number(_r.replace(/(L|D)/g, "")) : ln - Jr;
                  } else
                    return typeof Cr == "number" ? 1 : -1;
                }
                function Tr(Cr, _r, Zr) {
                  var ln = Zr || function(fn) {
                    return fn;
                  }, Jr = _r[0], Zn = _r[1];
                  return (!Jr && typeof Jr != "number" || ln(Jr) <= ln(Cr)) && (!Zn && typeof Zn != "number" || ln(Zn) >= ln(Cr));
                }
                function tr(Cr, _r) {
                  var Zr = _r[0] === null, ln = _r[1] === null, Jr = Er(Cr, _r[0]) >= 0, Zn = Er(Cr, _r[1]) <= 0;
                  return (Zr || Jr) && (ln || Zn);
                }
                var yr, Ir;
                if (oe.tickformatstops && oe.tickformatstops.length > 0)
                  switch (oe.type) {
                    case "date":
                    case "linear": {
                      for (de = 0; de < oe.tickformatstops.length; de++)
                        if (Ir = oe.tickformatstops[de], Ir.enabled && Tr(oe.dtick, Ir.dtickrange, or)) {
                          yr = Ir;
                          break;
                        }
                      break;
                    }
                    case "log": {
                      for (de = 0; de < oe.tickformatstops.length; de++)
                        if (Ir = oe.tickformatstops[de], Ir.enabled && tr(oe.dtick, Ir.dtickrange)) {
                          yr = Ir;
                          break;
                        }
                      break;
                    }
                  }
                return yr ? yr.value : oe.tickformat;
              }, Q.getSubplots = function(oe, de) {
                var or = oe._fullLayout._subplots, Er = or.cartesian.concat(or.gl2d || []), Tr = de ? Q.findSubplotsWithAxis(Er, de) : Er;
                return Tr.sort(function(tr, yr) {
                  var Ir = tr.substr(1).split("y"), Cr = yr.substr(1).split("y");
                  return Ir[0] === Cr[0] ? +Ir[1] - +Cr[1] : +Ir[0] - +Cr[0];
                }), Tr;
              }, Q.findSubplotsWithAxis = function(oe, de) {
                for (var or = new RegExp(de._id.charAt(0) === "x" ? "^" + de._id + "y" : de._id + "$"), Er = [], Tr = 0; Tr < oe.length; Tr++) {
                  var tr = oe[Tr];
                  or.test(tr) && Er.push(tr);
                }
                return Er;
              }, Q.makeClipPaths = function(oe) {
                var de = oe._fullLayout;
                if (!de._hasOnlyLargeSploms) {
                  var or = {
                    _offset: 0,
                    _length: de.width,
                    _id: ""
                  }, Er = {
                    _offset: 0,
                    _length: de.height,
                    _id: ""
                  }, Tr = Q.list(oe, "x", !0), tr = Q.list(oe, "y", !0), yr = [], Ir, Cr;
                  for (Ir = 0; Ir < Tr.length; Ir++)
                    for (yr.push({
                      x: Tr[Ir],
                      y: Er
                    }), Cr = 0; Cr < tr.length; Cr++)
                      Ir === 0 && yr.push({
                        x: or,
                        y: tr[Cr]
                      }), yr.push({
                        x: Tr[Ir],
                        y: tr[Cr]
                      });
                  var _r = de._clips.selectAll(".axesclip").data(yr, function(Zr) {
                    return Zr.x._id + Zr.y._id;
                  });
                  _r.enter().append("clipPath").classed("axesclip", !0).attr("id", function(Zr) {
                    return "clip" + de._uid + Zr.x._id + Zr.y._id;
                  }).append("rect"), _r.exit().remove(), _r.each(function(Zr) {
                    b.select(this).select("rect").attr({
                      x: Zr.x._offset || 0,
                      y: Zr.y._offset || 0,
                      width: Zr.x._length || 1,
                      height: Zr.y._length || 1
                    });
                  });
                }
              }, Q.draw = function(oe, de, or) {
                var Er = oe._fullLayout;
                de === "redraw" && Er._paper.selectAll("g.subplot").each(function(Cr) {
                  var _r = Cr[0], Zr = Er._plots[_r];
                  if (Zr) {
                    var ln = Zr.xaxis, Jr = Zr.yaxis;
                    Zr.xaxislayer.selectAll("." + ln._id + "tick").remove(), Zr.yaxislayer.selectAll("." + Jr._id + "tick").remove(), Zr.xaxislayer.selectAll("." + ln._id + "tick2").remove(), Zr.yaxislayer.selectAll("." + Jr._id + "tick2").remove(), Zr.xaxislayer.selectAll("." + ln._id + "divider").remove(), Zr.yaxislayer.selectAll("." + Jr._id + "divider").remove(), Zr.minorGridlayer && Zr.minorGridlayer.selectAll("path").remove(), Zr.gridlayer && Zr.gridlayer.selectAll("path").remove(), Zr.zerolinelayer && Zr.zerolinelayer.selectAll("path").remove(), Er._infolayer.select(".g-" + ln._id + "title").remove(), Er._infolayer.select(".g-" + Jr._id + "title").remove();
                  }
                });
                var Tr = !de || de === "redraw" ? Q.listIds(oe) : de, tr = Q.list(oe), yr = tr.filter(function(Cr) {
                  return Cr.autoshift;
                }).map(function(Cr) {
                  return Cr.overlaying;
                });
                Tr.map(function(Cr) {
                  var _r = Q.getFromId(oe, Cr);
                  if (_r.tickmode === "sync" && _r.overlaying) {
                    var Zr = Tr.findIndex(function(ln) {
                      return ln === _r.overlaying;
                    });
                    Zr >= 0 && Tr.unshift(Tr.splice(Zr, 1).shift());
                  }
                });
                var Ir = {
                  false: {
                    left: 0,
                    right: 0
                  }
                };
                return T.syncOrAsync(Tr.map(function(Cr) {
                  return function() {
                    if (Cr) {
                      var _r = Q.getFromId(oe, Cr);
                      or || (or = {}), or.axShifts = Ir, or.overlayingShiftedAx = yr;
                      var Zr = Q.drawOne(oe, _r, or);
                      return _r._shiftPusher && Nr(_r, _r._fullDepth || 0, Ir, !0), _r._r = _r.range.slice(), _r._rl = T.simpleMap(_r._r, _r.r2l), Zr;
                    }
                  };
                }));
              }, Q.drawOne = function(oe, de, or) {
                or = or || {};
                var Er = or.axShifts || {}, Tr = or.overlayingShiftedAx || [], tr, yr, Ir;
                de.setScale();
                var Cr = oe._fullLayout, _r = de._id, Zr = _r.charAt(0), ln = Q.counterLetter(_r), Jr = Cr._plots[de._mainSubplot];
                if (!Jr) return;
                if (de._shiftPusher = de.autoshift || Tr.indexOf(de._id) !== -1 || Tr.indexOf(de.overlaying) !== -1, de._shiftPusher & de.anchor === "free") {
                  var Zn = de.linewidth / 2 || 0;
                  de.ticks === "inside" && (Zn += de.ticklen), Nr(de, Zn, Er, !0), Nr(de, de.shift || 0, Er, !1);
                }
                (or.skipTitle !== !0 || de._shift === void 0) && (de._shift = Xr(de, Er));
                var fn = Jr[Zr + "axislayer"], hi = de._mainLinePosition, Vn = hi += de._shift, jr = de._mainMirrorPosition, zr = de._vals = Q.calcTicks(de), Tn = [de.mirror, Vn, jr].join("_");
                for (tr = 0; tr < zr.length; tr++)
                  zr[tr].axInfo = Tn;
                de._selections = {}, de._tickAngles && (de._prevTickAngles = de._tickAngles), de._tickAngles = {}, de._depth = null;
                var sn = {};
                function $n(fi) {
                  var _i = _r + (fi || "tick");
                  return sn[_i] || (sn[_i] = mr(de, _i, Vn)), sn[_i];
                }
                if (de.visible) {
                  var kn = Q.makeTransTickFn(de), An = Q.makeTransTickLabelFn(de), qn, si, qi = de.ticks === "inside", ha = de.ticks === "outside";
                  if (de.tickson === "boundaries") {
                    var Mi = fe(de, zr);
                    si = Q.clipEnds(de, Mi), qn = qi ? si : Mi;
                  } else
                    si = Q.clipEnds(de, zr), qn = qi && de.ticklabelmode !== "period" ? si : zr;
                  var Ji = de._gridVals = si, ci = ir(de, zr);
                  if (!Cr._hasOnlyLargeSploms) {
                    var rn = de._subplotsWith, Cn = {};
                    for (tr = 0; tr < rn.length; tr++) {
                      yr = rn[tr], Ir = Cr._plots[yr];
                      var Un = Ir[ln + "axis"], Fn = Un._mainAxis._id;
                      if (!Cn[Fn]) {
                        Cn[Fn] = 1;
                        var mi = Zr === "x" ? "M0," + Un._offset + "v" + Un._length : "M" + Un._offset + ",0h" + Un._length;
                        Q.drawGrid(oe, de, {
                          vals: Ji,
                          counterAxis: Un,
                          layer: Ir.gridlayer.select("." + _r),
                          minorLayer: Ir.minorGridlayer.select("." + _r),
                          path: mi,
                          transFn: kn
                        }), Q.drawZeroLine(oe, de, {
                          counterAxis: Un,
                          layer: Ir.zerolinelayer,
                          path: mi,
                          transFn: kn
                        });
                      }
                    }
                  }
                  var Nn, di = Q.getTickSigns(de), Ai = Q.getTickSigns(de, "minor");
                  if (de.ticks || de.minor && de.minor.ticks) {
                    var Gi = Q.makeTickPath(de, Vn, di[2]), ia = Q.makeTickPath(de, Vn, Ai[2], {
                      minor: !0
                    }), Ca, Qr, pn, $r;
                    if (de._anchorAxis && de.mirror && de.mirror !== !0 ? (Ca = Q.makeTickPath(de, jr, di[3]), Qr = Q.makeTickPath(de, jr, Ai[3], {
                      minor: !0
                    }), pn = Gi + Ca, $r = ia + Qr) : (Ca = "", Qr = "", pn = Gi, $r = ia), de.showdividers && ha && de.tickson === "boundaries") {
                      var mn = {};
                      for (tr = 0; tr < ci.length; tr++)
                        mn[ci[tr].x] = 1;
                      Nn = function(fi) {
                        return mn[fi.x] ? Ca : pn;
                      };
                    } else
                      Nn = function(fi) {
                        return fi.minor ? $r : pn;
                      };
                  }
                  if (Q.drawTicks(oe, de, {
                    vals: qn,
                    layer: fn,
                    path: Nn,
                    transFn: kn
                  }), de.mirror === "allticks") {
                    var Wn = Object.keys(de._linepositions || {});
                    for (tr = 0; tr < Wn.length; tr++) {
                      yr = Wn[tr], Ir = Cr._plots[yr];
                      var yi = de._linepositions[yr] || [], ei = yi[0], Jn = yi[1], en = yi[2], Sn = Q.makeTickPath(de, ei, en ? di[0] : Ai[0], {
                        minor: en
                      }) + Q.makeTickPath(de, Jn, en ? di[1] : Ai[1], {
                        minor: en
                      });
                      Q.drawTicks(oe, de, {
                        vals: qn,
                        layer: Ir[Zr + "axislayer"],
                        path: Sn,
                        transFn: kn
                      });
                    }
                  }
                  var wn = [];
                  if (wn.push(function() {
                    return Q.drawLabels(oe, de, {
                      vals: zr,
                      layer: fn,
                      plotinfo: Ir,
                      transFn: An,
                      labelFns: Q.makeLabelFns(de, Vn)
                    });
                  }), de.type === "multicategory") {
                    var Dn = {
                      x: 2,
                      y: 10
                    }[Zr];
                    wn.push(function() {
                      var fi = {
                        x: "height",
                        y: "width"
                      }[Zr], _i = $n()[fi] + Dn + (de._tickAngles[_r + "tick"] ? de.tickfont.size * vt : 0);
                      return Q.drawLabels(oe, de, {
                        vals: Me(de, zr),
                        layer: fn,
                        cls: _r + "tick2",
                        repositionOnUpdate: !0,
                        secondary: !0,
                        transFn: kn,
                        labelFns: Q.makeLabelFns(de, Vn + _i * di[4])
                      });
                    }), wn.push(function() {
                      return de._depth = di[4] * ($n("tick2")[de.side] - Vn), Le(oe, de, {
                        vals: ci,
                        layer: fn,
                        path: Q.makeTickPath(de, Vn, di[4], {
                          len: de._depth
                        }),
                        transFn: kn
                      });
                    });
                  } else de.title.hasOwnProperty("standoff") && wn.push(function() {
                    de._depth = di[4] * ($n()[de.side] - Vn);
                  });
                  var li = s.getComponentMethod("rangeslider", "isVisible")(de);
                  return !or.skipTitle && !(li && de.side === "bottom") && wn.push(function() {
                    return De(oe, de);
                  }), wn.push(function() {
                    var fi = de.side.charAt(0), _i = ht[de.side].charAt(0), Ti = Q.getPxPosition(oe, de), bi = ha ? de.ticklen : 0, ki, Bi, ra, Ea;
                    (de.automargin || li || de._shiftPusher) && (de.type === "multicategory" ? ki = $n("tick2") : (ki = $n(), Zr === "x" && fi === "b" && (de._depth = Math.max(ki.width > 0 ? ki.bottom - Ti : 0, bi))));
                    var Io = 0, go = 0;
                    if (de._shiftPusher && (Io = Math.max(bi, ki.height > 0 ? fi === "l" ? Ti - ki.left : ki.right - Ti : 0), de.title.text !== Cr._dfltTitle[Zr] && (go = (de._titleStandoff || 0) + (de._titleScoot || 0), fi === "l" && (go += qt(de))), de._fullDepth = Math.max(Io, go)), de.automargin) {
                      Bi = {
                        x: 0,
                        y: 0,
                        r: 0,
                        l: 0,
                        t: 0,
                        b: 0
                      };
                      var Ss = [0, 1], Bs = typeof de._shift == "number" ? de._shift : 0;
                      if (Zr === "x") {
                        if (fi === "b" ? Bi[fi] = de._depth : (Bi[fi] = de._depth = Math.max(ki.width > 0 ? Ti - ki.top : 0, bi), Ss.reverse()), ki.width > 0) {
                          var so = ki.right - (de._offset + de._length);
                          so > 0 && (Bi.xr = 1, Bi.r = so);
                          var Ql = de._offset - ki.left;
                          Ql > 0 && (Bi.xl = 0, Bi.l = Ql);
                        }
                      } else if (fi === "l" ? (de._depth = Math.max(ki.height > 0 ? Ti - ki.left : 0, bi), Bi[fi] = de._depth - Bs) : (de._depth = Math.max(ki.height > 0 ? ki.right - Ti : 0, bi), Bi[fi] = de._depth + Bs, Ss.reverse()), ki.height > 0) {
                        var Zu = ki.bottom - (de._offset + de._length);
                        Zu > 0 && (Bi.yb = 0, Bi.b = Zu);
                        var Ns = de._offset - ki.top;
                        Ns > 0 && (Bi.yt = 1, Bi.t = Ns);
                      }
                      Bi[ln] = de.anchor === "free" ? de.position : de._anchorAxis.domain[Ss[0]], de.title.text !== Cr._dfltTitle[Zr] && (Bi[fi] += qt(de) + (de.title.standoff || 0)), de.mirror && de.anchor !== "free" && (ra = {
                        x: 0,
                        y: 0,
                        r: 0,
                        l: 0,
                        t: 0,
                        b: 0
                      }, ra[_i] = de.linewidth, de.mirror && de.mirror !== !0 && (ra[_i] += bi), de.mirror === !0 || de.mirror === "ticks" ? ra[ln] = de._anchorAxis.domain[Ss[1]] : (de.mirror === "all" || de.mirror === "allticks") && (ra[ln] = [de._counterDomainMin, de._counterDomainMax][Ss[1]]));
                    }
                    li && (Ea = s.getComponentMethod("rangeslider", "autoMarginOpts")(oe, de)), typeof de.automargin == "string" && (te(Bi, de.automargin), te(ra, de.automargin)), n.autoMargin(oe, ue(de), Bi), n.autoMargin(oe, Pe(de), ra), n.autoMargin(oe, Ue(de), Ea);
                  }), T.syncOrAsync(wn);
                }
              };
              function te(oe, de) {
                if (oe) {
                  var or = Object.keys(G).reduce(function(Er, Tr) {
                    return de.indexOf(Tr) !== -1 && G[Tr].forEach(function(tr) {
                      Er[tr] = 1;
                    }), Er;
                  }, {});
                  Object.keys(oe).forEach(function(Er) {
                    or[Er] || (Er.length === 1 ? oe[Er] = 0 : delete oe[Er]);
                  });
                }
              }
              function fe(oe, de) {
                var or = [], Er, Tr = function(tr, yr) {
                  var Ir = tr.xbnd[yr];
                  Ir !== null && or.push(T.extendFlat({}, tr, {
                    x: Ir
                  }));
                };
                if (de.length) {
                  for (Er = 0; Er < de.length; Er++)
                    Tr(de[Er], 0);
                  Tr(de[Er - 1], 1);
                }
                return or;
              }
              function Me(oe, de) {
                for (var or = [], Er = {}, Tr = 0; Tr < de.length; Tr++) {
                  var tr = de[Tr];
                  Er[tr.text2] ? Er[tr.text2].push(tr.x) : Er[tr.text2] = [tr.x];
                }
                for (var yr in Er)
                  or.push(ur(oe, T.interp(Er[yr], 0.5), yr));
                return or;
              }
              function ir(oe, de) {
                var or = [], Er, Tr, tr = de.length && de[de.length - 1].x < de[0].x, yr = function(Cr, _r) {
                  var Zr = Cr.xbnd[_r];
                  Zr !== null && or.push(T.extendFlat({}, Cr, {
                    x: Zr
                  }));
                };
                if (oe.showdividers && de.length) {
                  for (Er = 0; Er < de.length; Er++) {
                    var Ir = de[Er];
                    Ir.text2 !== Tr && yr(Ir, tr ? 1 : 0), Tr = Ir.text2;
                  }
                  yr(de[Er - 1], tr ? 0 : 1);
                }
                return or;
              }
              function mr(oe, de, or) {
                var Er, Tr, tr, yr;
                if (oe._selections[de].size())
                  Er = 1 / 0, Tr = -1 / 0, tr = 1 / 0, yr = -1 / 0, oe._selections[de].each(function() {
                    var Cr = we(this), _r = r.bBox(Cr.node().parentNode);
                    Er = Math.min(Er, _r.top), Tr = Math.max(Tr, _r.bottom), tr = Math.min(tr, _r.left), yr = Math.max(yr, _r.right);
                  });
                else {
                  var Ir = Q.makeLabelFns(oe, or);
                  Er = Tr = Ir.yFn({
                    dx: 0,
                    dy: 0,
                    fontSize: 0
                  }), tr = yr = Ir.xFn({
                    dx: 0,
                    dy: 0,
                    fontSize: 0
                  });
                }
                return {
                  top: Er,
                  bottom: Tr,
                  left: tr,
                  right: yr,
                  height: Tr - Er,
                  width: yr - tr
                };
              }
              Q.getTickSigns = function(oe, de) {
                var or = oe._id.charAt(0), Er = {
                  x: "top",
                  y: "right"
                }[or], Tr = oe.side === Er ? 1 : -1, tr = [-1, 1, Tr, -Tr], yr = de ? (oe.minor || {}).ticks : oe.ticks;
                return yr !== "inside" == (or === "x") && (tr = tr.map(function(Ir) {
                  return -Ir;
                })), oe.side && tr.push({
                  l: -1,
                  t: -1,
                  r: 1,
                  b: 1
                }[oe.side.charAt(0)]), tr;
              }, Q.makeTransTickFn = function(oe) {
                return oe._id.charAt(0) === "x" ? function(de) {
                  return A(oe._offset + oe.l2p(de.x), 0);
                } : function(de) {
                  return A(0, oe._offset + oe.l2p(de.x));
                };
              }, Q.makeTransTickLabelFn = function(oe) {
                var de = xe(oe), or = oe.ticklabelshift || 0, Er = oe.ticklabelstandoff || 0, Tr = de[0], tr = de[1], yr = oe.range[0] > oe.range[1], Ir = oe.ticklabelposition && oe.ticklabelposition.indexOf("inside") !== -1, Cr = !Ir;
                if (or) {
                  var _r = yr ? -1 : 1;
                  or = or * _r;
                }
                if (Er) {
                  var Zr = oe.side, ln = Ir && (Zr === "top" || Zr === "left") || Cr && (Zr === "bottom" || Zr === "right") ? 1 : -1;
                  Er = Er * ln;
                }
                return oe._id.charAt(0) === "x" ? function(Jr) {
                  return A(Tr + oe._offset + oe.l2p(Xe(Jr)) + or, tr + Er);
                } : function(Jr) {
                  return A(tr + Er, Tr + oe._offset + oe.l2p(Xe(Jr)) + or);
                };
              };
              function Xe(oe) {
                return oe.periodX !== void 0 ? oe.periodX : oe.x;
              }
              function xe(oe) {
                var de = oe.ticklabelposition || "", or = function(Zn) {
                  return de.indexOf(Zn) !== -1;
                }, Er = or("top"), Tr = or("left"), tr = or("right"), yr = or("bottom"), Ir = or("inside"), Cr = yr || Tr || Er || tr;
                if (!Cr && !Ir) return [0, 0];
                var _r = oe.side, Zr = Cr ? (oe.tickwidth || 0) / 2 : 0, ln = et, Jr = oe.tickfont ? oe.tickfont.size : 12;
                return (yr || Er) && (Zr += Jr * st, ln += (oe.linewidth || 0) / 2), (Tr || tr) && (Zr += (oe.linewidth || 0) / 2, ln += et), Ir && _r === "top" && (ln -= Jr * (1 - st)), (Tr || Er) && (Zr = -Zr), (_r === "bottom" || _r === "right") && (ln = -ln), [Cr ? Zr : 0, Ir ? ln : 0];
              }
              Q.makeTickPath = function(oe, de, or, Er) {
                Er || (Er = {});
                var Tr = Er.minor;
                if (Tr && !oe.minor) return "";
                var tr = Er.len !== void 0 ? Er.len : Tr ? oe.minor.ticklen : oe.ticklen, yr = oe._id.charAt(0), Ir = (oe.linewidth || 1) / 2;
                return yr === "x" ? "M0," + (de + Ir * or) + "v" + tr * or : "M" + (de + Ir * or) + ",0h" + tr * or;
              }, Q.makeLabelFns = function(oe, de, or) {
                var Er = oe.ticklabelposition || "", Tr = function(Mi) {
                  return Er.indexOf(Mi) !== -1;
                }, tr = Tr("top"), yr = Tr("left"), Ir = Tr("right"), Cr = Tr("bottom"), _r = Cr || yr || tr || Ir, Zr = Tr("inside"), ln = Er === "inside" && oe.ticks === "inside" || !Zr && oe.ticks === "outside" && oe.tickson !== "boundaries", Jr = 0, Zn = 0, fn = ln ? oe.ticklen : 0;
                if (Zr ? fn *= -1 : _r && (fn = 0), ln && (Jr += fn, or)) {
                  var hi = T.deg2rad(or);
                  Jr = fn * Math.cos(hi) + 1, Zn = fn * Math.sin(hi);
                }
                oe.showticklabels && (ln || oe.showline) && (Jr += 0.2 * oe.tickfont.size), Jr += (oe.linewidth || 1) / 2 * (Zr ? -1 : 1);
                var Vn = {
                  labelStandoff: Jr,
                  labelShift: Zn
                }, jr, zr, Tn, sn, $n = 0, kn = oe.side, An = oe._id.charAt(0), qn = oe.tickangle, si;
                if (An === "x")
                  si = !Zr && kn === "bottom" || Zr && kn === "top", sn = si ? 1 : -1, Zr && (sn *= -1), jr = Zn * sn, zr = de + Jr * sn, Tn = si ? 1 : -0.2, Math.abs(qn) === 90 && (Zr ? Tn += rt : qn === -90 && kn === "bottom" ? Tn = st : qn === 90 && kn === "top" ? Tn = rt : Tn = 0.5, $n = rt / 2 * (qn / 90)), Vn.xFn = function(Mi) {
                    return Mi.dx + jr + $n * Mi.fontSize;
                  }, Vn.yFn = function(Mi) {
                    return Mi.dy + zr + Mi.fontSize * Tn;
                  }, Vn.anchorFn = function(Mi, Ji) {
                    if (_r) {
                      if (yr) return "end";
                      if (Ir) return "start";
                    }
                    return !P(Ji) || Ji === 0 || Ji === 180 ? "middle" : Ji * sn < 0 !== Zr ? "end" : "start";
                  }, Vn.heightFn = function(Mi, Ji, ci) {
                    return Ji < -60 || Ji > 60 ? -0.5 * ci : oe.side === "top" !== Zr ? -ci : 0;
                  };
                else if (An === "y") {
                  if (si = !Zr && kn === "left" || Zr && kn === "right", sn = si ? 1 : -1, Zr && (sn *= -1), jr = Jr, zr = Zn * sn, Tn = 0, !Zr && Math.abs(qn) === 90 && (qn === -90 && kn === "left" || qn === 90 && kn === "right" ? Tn = st : Tn = 0.5), Zr) {
                    var qi = P(qn) ? +qn : 0;
                    if (qi !== 0) {
                      var ha = T.deg2rad(qi);
                      $n = Math.abs(Math.sin(ha)) * st * sn, Tn = 0;
                    }
                  }
                  Vn.xFn = function(Mi) {
                    return Mi.dx + de - (jr + Mi.fontSize * Tn) * sn + $n * Mi.fontSize;
                  }, Vn.yFn = function(Mi) {
                    return Mi.dy + zr + Mi.fontSize * rt;
                  }, Vn.anchorFn = function(Mi, Ji) {
                    return P(Ji) && Math.abs(Ji) === 90 ? "middle" : si ? "end" : "start";
                  }, Vn.heightFn = function(Mi, Ji, ci) {
                    return oe.side === "right" && (Ji *= -1), Ji < -30 ? -ci : Ji < 30 ? -0.5 * ci : 0;
                  };
                }
                return Vn;
              };
              function me(oe) {
                return [oe.text, oe.x, oe.axInfo, oe.font, oe.fontSize, oe.fontColor].join("_");
              }
              Q.drawTicks = function(oe, de, or) {
                or = or || {};
                var Er = de._id + "tick", Tr = [].concat(de.minor && de.minor.ticks ? (
                  // minor vals
                  or.vals.filter(function(yr) {
                    return yr.minor && !yr.noTick;
                  })
                ) : []).concat(de.ticks ? (
                  // major vals
                  or.vals.filter(function(yr) {
                    return !yr.minor && !yr.noTick;
                  })
                ) : []), tr = or.layer.selectAll("path." + Er).data(Tr, me);
                tr.exit().remove(), tr.enter().append("path").classed(Er, 1).classed("ticks", 1).classed("crisp", or.crisp !== !1).each(function(yr) {
                  return t.stroke(b.select(this), yr.minor ? de.minor.tickcolor : de.tickcolor);
                }).style("stroke-width", function(yr) {
                  return r.crispRound(oe, yr.minor ? de.minor.tickwidth : de.tickwidth, 1) + "px";
                }).attr("d", or.path).style("display", null), Br(de, [H]), tr.attr("transform", or.transFn);
              }, Q.drawGrid = function(oe, de, or) {
                if (or = or || {}, de.tickmode !== "sync") {
                  var Er = de._id + "grid", Tr = de.minor && de.minor.showgrid, tr = Tr ? or.vals.filter(function(jr) {
                    return jr.minor;
                  }) : [], yr = de.showgrid ? or.vals.filter(function(jr) {
                    return !jr.minor;
                  }) : [], Ir = or.counterAxis;
                  if (Ir && Q.shouldShowZeroLine(oe, de, Ir))
                    for (var Cr = de.tickmode === "array", _r = 0; _r < yr.length; _r++) {
                      var Zr = yr[_r].x;
                      if (Cr ? !Zr : Math.abs(Zr) < de.dtick / 100)
                        if (yr = yr.slice(0, _r).concat(yr.slice(_r + 1)), Cr) _r--;
                        else break;
                    }
                  de._gw = r.crispRound(oe, de.gridwidth, 1);
                  for (var ln = Tr ? r.crispRound(oe, de.minor.gridwidth, 1) : 0, Jr = or.layer, Zn = or.minorLayer, fn = 1; fn >= 0; fn--) {
                    var hi = fn ? Jr : Zn;
                    if (hi) {
                      var Vn = hi.selectAll("path." + Er).data(fn ? yr : tr, me);
                      Vn.exit().remove(), Vn.enter().append("path").classed(Er, 1).classed("crisp", or.crisp !== !1), Vn.attr("transform", or.transFn).attr("d", or.path).each(function(jr) {
                        return t.stroke(b.select(this), jr.minor ? de.minor.gridcolor : de.gridcolor || "#ddd");
                      }).style("stroke-dasharray", function(jr) {
                        return r.dashStyle(jr.minor ? de.minor.griddash : de.griddash, jr.minor ? de.minor.gridwidth : de.gridwidth);
                      }).style("stroke-width", function(jr) {
                        return (jr.minor ? ln : de._gw) + "px";
                      }).style("display", null), typeof or.path == "function" && Vn.attr("d", or.path);
                    }
                  }
                  Br(de, [V, U]);
                }
              }, Q.drawZeroLine = function(oe, de, or) {
                or = or || or;
                var Er = de._id + "zl", Tr = Q.shouldShowZeroLine(oe, de, or.counterAxis), tr = or.layer.selectAll("path." + Er).data(Tr ? [{
                  x: 0,
                  id: de._id
                }] : []);
                tr.exit().remove(), tr.enter().append("path").classed(Er, 1).classed("zl", 1).classed("crisp", or.crisp !== !1).each(function() {
                  or.layer.selectAll("path").sort(function(yr, Ir) {
                    return ut(yr.id, Ir.id);
                  });
                }), tr.attr("transform", or.transFn).attr("d", or.path).call(t.stroke, de.zerolinecolor || t.defaultLine).style("stroke-width", r.crispRound(oe, de.zerolinewidth, de._gw || 1) + "px").style("display", null), Br(de, [B]);
              }, Q.drawLabels = function(oe, de, or) {
                or = or || {};
                var Er = oe._fullLayout, Tr = de._id, tr = or.cls || Tr + "tick", yr = or.vals.filter(function(Fn) {
                  return Fn.text;
                }), Ir = or.labelFns, Cr = or.secondary ? 0 : de.tickangle, _r = (de._prevTickAngles || {})[tr], Zr = or.layer.selectAll("g." + tr).data(de.showticklabels ? yr : [], me), ln = [];
                Zr.enter().append("g").classed(tr, 1).append("text").attr("text-anchor", "middle").each(function(Fn) {
                  var mi = b.select(this), Nn = oe._promises.length;
                  mi.call(p.positionText, Ir.xFn(Fn), Ir.yFn(Fn)).call(r.font, {
                    family: Fn.font,
                    size: Fn.fontSize,
                    color: Fn.fontColor,
                    weight: Fn.fontWeight,
                    style: Fn.fontStyle,
                    variant: Fn.fontVariant,
                    textcase: Fn.fontTextcase,
                    lineposition: Fn.fontLineposition,
                    shadow: Fn.fontShadow
                  }).text(Fn.text).call(p.convertToTspans, oe), oe._promises[Nn] ? ln.push(oe._promises.pop().then(function() {
                    Jr(mi, Cr);
                  })) : Jr(mi, Cr);
                }), Br(de, [F]), Zr.exit().remove(), or.repositionOnUpdate && Zr.each(function(Fn) {
                  b.select(this).select("text").call(p.positionText, Ir.xFn(Fn), Ir.yFn(Fn));
                });
                function Jr(Fn, mi) {
                  Fn.each(function(Nn) {
                    var di = b.select(this), Ai = di.select(".text-math-group"), Gi = Ir.anchorFn(Nn, mi), ia = or.transFn.call(di.node(), Nn) + (P(mi) && +mi != 0 ? " rotate(" + mi + "," + Ir.xFn(Nn) + "," + (Ir.yFn(Nn) - Nn.fontSize / 2) + ")" : ""), Ca = p.lineCount(di), Qr = vt * Nn.fontSize, pn = Ir.heightFn(Nn, P(mi) ? +mi : 0, (Ca - 1) * Qr);
                    if (pn && (ia += A(0, pn)), Ai.empty()) {
                      var $r = di.select("text");
                      $r.attr({
                        transform: ia,
                        "text-anchor": Gi
                      }), $r.style("opacity", 1), de._adjustTickLabelsOverflow && de._adjustTickLabelsOverflow();
                    } else {
                      var mn = r.bBox(Ai.node()).width, Wn = mn * {
                        end: -0.5,
                        start: 0.5
                      }[Gi];
                      Ai.attr("transform", ia + A(Wn, 0));
                    }
                  });
                }
                de._adjustTickLabelsOverflow = function() {
                  var Fn = de.ticklabeloverflow;
                  if (!(!Fn || Fn === "allow")) {
                    var mi = Fn.indexOf("hide") !== -1, Nn = de._id.charAt(0) === "x", di = 0, Ai = Nn ? oe._fullLayout.width : oe._fullLayout.height;
                    if (Fn.indexOf("domain") !== -1) {
                      var Gi = T.simpleMap(de.range, de.r2l);
                      di = de.l2p(Gi[0]) + de._offset, Ai = de.l2p(Gi[1]) + de._offset;
                    }
                    var ia = Math.min(di, Ai), Ca = Math.max(di, Ai), Qr = de.side, pn = 1 / 0, $r = -1 / 0;
                    Zr.each(function(ei) {
                      var Jn = b.select(this), en = Jn.select(".text-math-group");
                      if (en.empty()) {
                        var Sn = r.bBox(Jn.node()), wn = 0;
                        Nn ? (Sn.right > Ca || Sn.left < ia) && (wn = 1) : (Sn.bottom > Ca || Sn.top + (de.tickangle ? 0 : ei.fontSize / 4) < ia) && (wn = 1);
                        var Dn = Jn.select("text");
                        wn ? mi && Dn.style("opacity", 0) : (Dn.style("opacity", 1), Qr === "bottom" || Qr === "right" ? pn = Math.min(pn, Nn ? Sn.top : Sn.left) : pn = -1 / 0, Qr === "top" || Qr === "left" ? $r = Math.max($r, Nn ? Sn.bottom : Sn.right) : $r = 1 / 0);
                      }
                    });
                    for (var mn in Er._plots) {
                      var Wn = Er._plots[mn];
                      if (!(de._id !== Wn.xaxis._id && de._id !== Wn.yaxis._id)) {
                        var yi = Nn ? Wn.yaxis : Wn.xaxis;
                        yi && (yi["_visibleLabelMin_" + de._id] = pn, yi["_visibleLabelMax_" + de._id] = $r);
                      }
                    }
                  }
                }, de._hideCounterAxisInsideTickLabels = function(Fn) {
                  var mi = de._id.charAt(0) === "x", Nn = [];
                  for (var di in Er._plots) {
                    var Ai = Er._plots[di];
                    de._id !== Ai.xaxis._id && de._id !== Ai.yaxis._id || Nn.push(mi ? Ai.yaxis : Ai.xaxis);
                  }
                  Nn.forEach(function(Gi, ia) {
                    Gi && Or(Gi) && (Fn || [B, U, V, H, F]).forEach(function(Ca) {
                      var Qr = Ca.K === "tick" && Ca.L === "text" && de.ticklabelmode === "period", pn = Er._plots[de._mainSubplot], $r;
                      Ca.K === B.K ? $r = pn.zerolinelayer.selectAll("." + de._id + "zl") : Ca.K === U.K ? $r = pn.minorGridlayer.selectAll("." + de._id) : Ca.K === V.K ? $r = pn.gridlayer.selectAll("." + de._id) : $r = pn[de._id.charAt(0) + "axislayer"], $r.each(function() {
                        var mn = b.select(this);
                        Ca.L && (mn = mn.selectAll(Ca.L)), mn.each(function(Wn) {
                          var yi = de.l2p(Qr ? Xe(Wn) : Wn.x) + de._offset, ei = b.select(this);
                          yi < de["_visibleLabelMax_" + Gi._id] && yi > de["_visibleLabelMin_" + Gi._id] ? ei.style("display", "none") : Ca.K === "tick" && !ia && ei.style("display", null);
                        });
                      });
                    });
                  });
                }, Jr(Zr, _r + 1 ? _r : Cr);
                function Zn() {
                  return ln.length && Promise.all(ln);
                }
                var fn = null;
                function hi() {
                  if (Jr(Zr, Cr), yr.length && de.autotickangles && (de.type !== "log" || String(de.dtick).charAt(0) !== "D")) {
                    fn = de.autotickangles[0];
                    var Fn = 0, mi = [], Nn, di = 1;
                    Zr.each(function(ki) {
                      Fn = Math.max(Fn, ki.fontSize);
                      var Bi = de.l2p(ki.x), ra = we(this), Ea = r.bBox(ra.node());
                      di = Math.max(di, p.lineCount(ra)), mi.push({
                        // ignore about y, just deal with x overlaps
                        top: 0,
                        bottom: 10,
                        height: 10,
                        left: Bi - Ea.width / 2,
                        // impose a 2px gap
                        right: Bi + Ea.width / 2 + 2,
                        width: Ea.width + 2
                      });
                    });
                    var Ai = (de.tickson === "boundaries" || de.showdividers) && !or.secondary, Gi = yr.length, ia = Math.abs((yr[Gi - 1].x - yr[0].x) * de._m) / (Gi - 1), Ca = Ai ? ia / 2 : ia, Qr = Ai ? de.ticklen : Fn * 1.25 * di, pn = Math.sqrt(Math.pow(Ca, 2) + Math.pow(Qr, 2)), $r = Ca / pn, mn = de.autotickangles.map(function(ki) {
                      return ki * Math.PI / 180;
                    }), Wn = mn.find(function(ki) {
                      return Math.abs(Math.cos(ki)) <= $r;
                    });
                    Wn === void 0 && (Wn = mn.reduce(function(ki, Bi) {
                      return Math.abs(Math.cos(ki)) < Math.abs(Math.cos(Bi)) ? ki : Bi;
                    }, mn[0]));
                    var yi = Wn * (180 / Math.PI);
                    if (Ai) {
                      var ei = 2;
                      for (de.ticks && (ei += de.tickwidth / 2), Nn = 0; Nn < mi.length; Nn++) {
                        var Jn = yr[Nn].xbnd, en = mi[Nn];
                        if (Jn[0] !== null && en.left - de.l2p(Jn[0]) < ei || Jn[1] !== null && de.l2p(Jn[1]) - en.right < ei) {
                          fn = yi;
                          break;
                        }
                      }
                    } else {
                      var Sn = de.ticklabelposition || "", wn = function(ki) {
                        return Sn.indexOf(ki) !== -1;
                      }, Dn = wn("top"), li = wn("left"), fi = wn("right"), _i = wn("bottom"), Ti = _i || li || Dn || fi, bi = Ti ? (de.tickwidth || 0) + 2 * et : 0;
                      for (Nn = 0; Nn < mi.length - 1; Nn++)
                        if (T.bBoxIntersect(mi[Nn], mi[Nn + 1], bi)) {
                          fn = yi;
                          break;
                        }
                    }
                    fn && Jr(Zr, fn);
                  }
                }
                de._selections && (de._selections[tr] = Zr);
                var Vn = [Zn];
                de.automargin && Er._redrawFromAutoMarginCount && _r === 90 ? (fn = _r, Vn.push(function() {
                  Jr(Zr, _r);
                })) : Vn.push(hi), de._tickAngles && Vn.push(function() {
                  de._tickAngles[tr] = fn === null ? P(Cr) ? Cr : 0 : fn;
                });
                var jr = function() {
                  var Fn = 0, mi = 0;
                  return Zr.each(function(Nn, di) {
                    var Ai = we(this), Gi = Ai.select(".text-math-group");
                    if (Gi.empty()) {
                      var ia;
                      de._vals[di] && (ia = de._vals[di].bb || r.bBox(Ai.node()), de._vals[di].bb = ia), Fn = Math.max(Fn, ia.width), mi = Math.max(mi, ia.height);
                    }
                  }), {
                    labelsMaxW: Fn,
                    labelsMaxH: mi
                  };
                }, zr = de._anchorAxis;
                if (zr && (zr.autorange || zr.insiderange) && Or(de) && !nt(Er, de._id) && (Er._insideTickLabelsUpdaterange || (Er._insideTickLabelsUpdaterange = {}), zr.autorange && (Er._insideTickLabelsUpdaterange[zr._name + ".autorange"] = zr.autorange, Vn.push(jr)), zr.insiderange)) {
                  var Tn = jr(), sn = de._id.charAt(0) === "y" ? Tn.labelsMaxW : Tn.labelsMaxH;
                  sn += 2 * et, de.ticklabelposition === "inside" && (sn += de.ticklen || 0);
                  var $n = de.side === "right" || de.side === "top" ? 1 : -1, kn = $n === 1 ? 1 : 0, An = $n === 1 ? 0 : 1, qn = [];
                  qn[An] = zr.range[An];
                  var si = zr.range, qi = zr.r2p(si[kn]), ha = zr.r2p(si[An]), Mi = Er._insideTickLabelsUpdaterange[zr._name + ".range"];
                  if (Mi) {
                    var Ji = zr.r2p(Mi[kn]), ci = zr.r2p(Mi[An]), rn = $n * (de._id.charAt(0) === "y" ? 1 : -1);
                    rn * qi < rn * Ji && (qi = Ji, qn[kn] = si[kn] = Mi[kn]), rn * ha > rn * ci && (ha = ci, qn[An] = si[An] = Mi[An]);
                  }
                  var Cn = Math.abs(ha - qi);
                  Cn - sn > 0 ? (Cn -= sn, sn *= 1 + sn / Cn) : sn = 0, de._id.charAt(0) !== "y" && (sn = -sn), qn[kn] = zr.p2r(zr.r2p(si[kn]) + $n * sn), zr.autorange === "min" || zr.autorange === "max reversed" ? (qn[0] = null, zr._rangeInitial0 = void 0, zr._rangeInitial1 = void 0) : (zr.autorange === "max" || zr.autorange === "min reversed") && (qn[1] = null, zr._rangeInitial0 = void 0, zr._rangeInitial1 = void 0), Er._insideTickLabelsUpdaterange[zr._name + ".range"] = qn;
                }
                var Un = T.syncOrAsync(Vn);
                return Un && Un.then && oe._promises.push(Un), Un;
              };
              function Le(oe, de, or) {
                var Er = de._id + "divider", Tr = or.vals, tr = or.layer.selectAll("path." + Er).data(Tr, me);
                tr.exit().remove(), tr.enter().insert("path", ":first-child").classed(Er, 1).classed("crisp", 1).call(t.stroke, de.dividercolor).style("stroke-width", r.crispRound(oe, de.dividerwidth, 1) + "px"), tr.attr("transform", or.transFn).attr("d", or.path);
              }
              Q.getPxPosition = function(oe, de) {
                var or = oe._fullLayout._size, Er = de._id.charAt(0), Tr = de.side, tr;
                if (de.anchor !== "free" ? tr = de._anchorAxis : Er === "x" ? tr = {
                  _offset: or.t + (1 - (de.position || 0)) * or.h,
                  _length: 0
                } : Er === "y" && (tr = {
                  _offset: or.l + (de.position || 0) * or.w + de._shift,
                  _length: 0
                }), Tr === "top" || Tr === "left")
                  return tr._offset;
                if (Tr === "bottom" || Tr === "right")
                  return tr._offset + tr._length;
              };
              function qt(oe) {
                var de = oe.title.font.size, or = (oe.title.text.match(p.BR_TAG_ALL) || []).length;
                return oe.title.hasOwnProperty("standoff") ? de * (st + or * vt) : or ? de * (or + 1) * vt : de;
              }
              function De(oe, de) {
                var or = oe._fullLayout, Er = de._id, Tr = Er.charAt(0), tr = de.title.font.size, yr, Ir = (de.title.text.match(p.BR_TAG_ALL) || []).length;
                if (de.title.hasOwnProperty("standoff"))
                  de.side === "bottom" || de.side === "right" ? yr = de._depth + de.title.standoff + tr * st : (de.side === "top" || de.side === "left") && (yr = de._depth + de.title.standoff + tr * (rt + Ir * vt));
                else {
                  var Cr = Or(de);
                  if (de.type === "multicategory")
                    yr = de._depth;
                  else {
                    var _r = 1.5 * tr;
                    Cr && (_r = 0.5 * tr, de.ticks === "outside" && (_r += de.ticklen)), yr = 10 + _r + (de.linewidth ? de.linewidth - 1 : 0);
                  }
                  Cr || (Tr === "x" ? yr += de.side === "top" ? tr * (de.showticklabels ? 1 : 0) : tr * (de.showticklabels ? 1.5 : 0.5) : yr += de.side === "right" ? tr * (de.showticklabels ? 1 : 0.5) : tr * (de.showticklabels ? 0.5 : 0));
                }
                var Zr = Q.getPxPosition(oe, de), ln, Jr, Zn;
                Tr === "x" ? (Jr = de._offset + de._length / 2, Zn = de.side === "top" ? Zr - yr : Zr + yr) : (Zn = de._offset + de._length / 2, Jr = de.side === "right" ? Zr + yr : Zr - yr, ln = {
                  rotate: "-90",
                  offset: 0
                });
                var fn;
                if (de.type !== "multicategory") {
                  var hi = de._selections[de._id + "tick"];
                  if (fn = {
                    selection: hi,
                    side: de.side
                  }, hi && hi.node() && hi.node().parentNode) {
                    var Vn = r.getTranslate(hi.node().parentNode);
                    fn.offsetLeft = Vn.x, fn.offsetTop = Vn.y;
                  }
                  de.title.hasOwnProperty("standoff") && (fn.pad = 0);
                }
                return de._titleStandoff = yr, u.draw(oe, Er + "title", {
                  propContainer: de,
                  propName: de._name + ".title.text",
                  placeholder: or._dfltTitle[Tr],
                  avoid: fn,
                  transform: ln,
                  attributes: {
                    x: Jr,
                    y: Zn,
                    "text-anchor": "middle"
                  }
                });
              }
              Q.shouldShowZeroLine = function(oe, de, or) {
                var Er = T.simpleMap(de.range, de.r2l);
                return Er[0] * Er[1] <= 0 && de.zeroline && (de.type === "linear" || de.type === "-") && !(de.rangebreaks && de.maskBreaks(0) === O) && (Je(de, 0) || !dr(oe, de, or, Er) || qe(oe, de));
              }, Q.clipEnds = function(oe, de) {
                return de.filter(function(or) {
                  return Je(oe, or.x);
                });
              };
              function Je(oe, de) {
                var or = oe.l2p(de);
                return or > 1 && or < oe._length - 1;
              }
              function dr(oe, de, or, Er) {
                var Tr = or._mainAxis;
                if (!Tr) return;
                var tr = oe._fullLayout, yr = de._id.charAt(0), Ir = Q.counterLetter(de._id), Cr = de._offset + (Math.abs(Er[0]) < Math.abs(Er[1]) == (yr === "x") ? 0 : de._length);
                function _r(fn) {
                  if (!fn.showline || !fn.linewidth) return !1;
                  var hi = Math.max((fn.linewidth + de.zerolinewidth) / 2, 1);
                  function Vn(Tn) {
                    return typeof Tn == "number" && Math.abs(Tn - Cr) < hi;
                  }
                  if (Vn(fn._mainLinePosition) || Vn(fn._mainMirrorPosition))
                    return !0;
                  var jr = fn._linepositions || {};
                  for (var zr in jr)
                    if (Vn(jr[zr][0]) || Vn(jr[zr][1]))
                      return !0;
                }
                var Zr = tr._plots[or._mainSubplot];
                if (!(Zr.mainplotinfo || Zr).overlays.length)
                  return _r(or);
                for (var ln = Q.list(oe, Ir), Jr = 0; Jr < ln.length; Jr++) {
                  var Zn = ln[Jr];
                  if (Zn._mainAxis === Tr && _r(Zn))
                    return !0;
                }
              }
              function qe(oe, de) {
                for (var or = oe._fullData, Er = de._mainSubplot, Tr = de._id.charAt(0), tr = 0; tr < or.length; tr++) {
                  var yr = or[tr];
                  if (yr.visible === !0 && yr.xaxis + yr.yaxis === Er && (s.traceIs(yr, "bar-like") && yr.orientation === {
                    x: "h",
                    y: "v"
                  }[Tr] || yr.fill && yr.fill.charAt(yr.fill.length - 1) === Tr))
                    return !0;
                }
                return !1;
              }
              function we(oe) {
                var de = b.select(oe), or = de.select(".text-math-group");
                return or.empty() ? de.select("text") : or;
              }
              Q.allowAutoMargin = function(oe) {
                for (var de = Q.list(oe, "", !0), or = 0; or < de.length; or++) {
                  var Er = de[or];
                  Er.automargin && (n.allowAutoMargin(oe, ue(Er)), Er.mirror && n.allowAutoMargin(oe, Pe(Er))), s.getComponentMethod("rangeslider", "isVisible")(Er) && n.allowAutoMargin(oe, Ue(Er));
                }
              };
              function ue(oe) {
                return oe._id + ".automargin";
              }
              function Pe(oe) {
                return ue(oe) + ".mirror";
              }
              function Ue(oe) {
                return oe._id + ".rangeslider";
              }
              Q.swap = function(oe, de) {
                for (var or = Ye(oe, de), Er = 0; Er < or.length; Er++)
                  lr(oe, or[Er].x, or[Er].y);
              };
              function Ye(oe, de) {
                var or = [], Er, Tr;
                for (Er = 0; Er < de.length; Er++) {
                  var tr = [], yr = oe._fullData[de[Er]].xaxis, Ir = oe._fullData[de[Er]].yaxis;
                  if (!(!yr || !Ir)) {
                    for (Tr = 0; Tr < or.length; Tr++)
                      (or[Tr].x.indexOf(yr) !== -1 || or[Tr].y.indexOf(Ir) !== -1) && tr.push(Tr);
                    if (!tr.length) {
                      or.push({
                        x: [yr],
                        y: [Ir]
                      });
                      continue;
                    }
                    var Cr = or[tr[0]], _r;
                    if (tr.length > 1)
                      for (Tr = 1; Tr < tr.length; Tr++)
                        _r = or[tr[Tr]], rr(Cr.x, _r.x), rr(Cr.y, _r.y);
                    rr(Cr.x, [yr]), rr(Cr.y, [Ir]);
                  }
                }
                return or;
              }
              function rr(oe, de) {
                for (var or = 0; or < de.length; or++)
                  oe.indexOf(de[or]) === -1 && oe.push(de[or]);
              }
              function lr(oe, de, or) {
                var Er = [], Tr = [], tr = oe.layout, yr, Ir;
                for (yr = 0; yr < de.length; yr++) Er.push(Q.getFromId(oe, de[yr]));
                for (yr = 0; yr < or.length; yr++) Tr.push(Q.getFromId(oe, or[yr]));
                var Cr = Object.keys(i), _r = ["anchor", "domain", "overlaying", "position", "side", "tickangle", "editType"], Zr = ["linear", "log"];
                for (yr = 0; yr < Cr.length; yr++) {
                  var ln = Cr[yr], Jr = Er[0][ln], Zn = Tr[0][ln], fn = !0, hi = !1, Vn = !1;
                  if (!(ln.charAt(0) === "_" || typeof Jr == "function" || _r.indexOf(ln) !== -1)) {
                    for (Ir = 1; Ir < Er.length && fn; Ir++) {
                      var jr = Er[Ir][ln];
                      ln === "type" && Zr.indexOf(Jr) !== -1 && Zr.indexOf(jr) !== -1 && Jr !== jr ? hi = !0 : jr !== Jr && (fn = !1);
                    }
                    for (Ir = 1; Ir < Tr.length && fn; Ir++) {
                      var zr = Tr[Ir][ln];
                      ln === "type" && Zr.indexOf(Zn) !== -1 && Zr.indexOf(zr) !== -1 && Zn !== zr ? Vn = !0 : Tr[Ir][ln] !== Zn && (fn = !1);
                    }
                    fn && (hi && (tr[Er[0]._name].type = "linear"), Vn && (tr[Tr[0]._name].type = "linear"), hr(tr, ln, Er, Tr, oe._fullLayout._dfltTitle));
                  }
                }
                for (yr = 0; yr < oe._fullLayout.annotations.length; yr++) {
                  var Tn = oe._fullLayout.annotations[yr];
                  de.indexOf(Tn.xref) !== -1 && or.indexOf(Tn.yref) !== -1 && T.swapAttrs(tr.annotations[yr], ["?"]);
                }
              }
              function hr(oe, de, or, Er, Tr) {
                var tr = T.nestedProperty, yr = tr(oe[or[0]._name], de).get(), Ir = tr(oe[Er[0]._name], de).get(), Cr;
                for (de === "title" && (yr && yr.text === Tr.x && (yr.text = Tr.y), Ir && Ir.text === Tr.y && (Ir.text = Tr.x)), Cr = 0; Cr < or.length; Cr++)
                  tr(oe, or[Cr]._name + "." + de).set(Ir);
                for (Cr = 0; Cr < Er.length; Cr++)
                  tr(oe, Er[Cr]._name + "." + de).set(yr);
              }
              function Sr(oe) {
                return oe._id === "angularaxis";
              }
              function Dr(oe, de) {
                for (var or = de._rangebreaks.length, Er = 0; Er < or; Er++) {
                  var Tr = de._rangebreaks[Er];
                  if (oe >= Tr.min && oe < Tr.max)
                    return Tr.max;
                }
                return oe;
              }
              function Or(oe) {
                return (oe.ticklabelposition || "").indexOf("inside") !== -1;
              }
              function Br(oe, de) {
                Or(oe._anchorAxis || {}) && oe._hideCounterAxisInsideTickLabels && oe._hideCounterAxisInsideTickLabels(de);
              }
              function Nr(oe, de, or, Er) {
                var Tr = oe.anchor !== "free" && (oe.overlaying === void 0 || oe.overlaying === !1) ? oe._id : oe.overlaying, tr;
                Er ? tr = oe.side === "right" ? de : -de : tr = de, Tr in or || (or[Tr] = {}), oe.side in or[Tr] || (or[Tr][oe.side] = 0), or[Tr][oe.side] += tr;
              }
              function Xr(oe, de) {
                return oe.autoshift ? de[oe.overlaying][oe.side] : oe.shift || 0;
              }
              function Gr(oe, de) {
                return /%f/.test(de) ? oe >= w : /%L/.test(de) ? oe >= E : /%[SX]/.test(de) ? oe >= h : /%M/.test(de) ? oe >= d : /%[HI]/.test(de) ? oe >= L : /%p/.test(de) ? oe >= m : /%[Aadejuwx]/.test(de) ? oe >= C : /%[UVW]/.test(de) ? oe >= M : /%[Bbm]/.test(de) ? oe >= S : /%[q]/.test(de) ? oe >= v : /%[Yy]/.test(de) ? oe >= g : !0;
              }
            }
          ),
          /***/
          9666: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(34809), n = e(63821).BADNUM, s = P.isArrayOrTypedArray, T = P.isDateTime, A = P.cleanNumber, p = Math.round;
              Y.exports = function(y, g, x) {
                var c = y, v = x.noMultiCategory;
                if (s(c) && !c.length) return "-";
                if (!v && l(c)) return "multicategory";
                if (v && Array.isArray(c[0])) {
                  for (var f = [], _ = 0; _ < c.length; _++)
                    if (s(c[_]))
                      for (var S = 0; S < c[_].length; S++)
                        f.push(c[_][S]);
                  c = f;
                }
                if (r(c, g)) return "date";
                var M = x.autotypenumbers !== "strict";
                return a(c, M) ? "category" : t(c, M) ? "linear" : "-";
              };
              function u(o, y) {
                return y ? b(o) : typeof o == "number";
              }
              function t(o, y) {
                for (var g = o.length, x = 0; x < g; x++)
                  if (u(o[x], y)) return !0;
                return !1;
              }
              function r(o, y) {
                for (var g = o.length, x = i(g), c = 0, v = 0, f = {}, _ = 0; _ < g; _ += x) {
                  var S = p(_), M = o[S], C = String(M);
                  f[C] || (f[C] = 1, T(M, y) && c++, b(M) && v++);
                }
                return c > v * 2;
              }
              function i(o) {
                return Math.max(1, (o - 1) / 1e3);
              }
              function a(o, y) {
                for (var g = o.length, x = i(g), c = 0, v = 0, f = {}, _ = 0; _ < g; _ += x) {
                  var S = p(_), M = o[S], C = String(M);
                  if (!f[C]) {
                    f[C] = 1;
                    var m = typeof M;
                    m === "boolean" ? v++ : (y ? A(M) !== n : m === "number") ? c++ : m === "string" && v++;
                  }
                }
                return v > c * 2;
              }
              function l(o) {
                return s(o[0]) && s(o[1]);
              }
            }
          ),
          /***/
          97655: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(33626), n = e(34809), s = e(78032), T = e(59008), A = e(25829), p = e(22777), u = e(87433), t = e(12036), r = e(54616), i = e(46473), a = e(97405), l = e(90259), o = e(19091), y = e(54826).WEEKDAY_PATTERN, g = e(54826).HOUR_PATTERN;
              Y.exports = function(_, S, M, C, m) {
                var L = C.letter, d = C.font || {}, h = C.splomStash || {}, E = M("visible", !C.visibleDflt), w = S._template || {}, z = S.type || w.type || "-", O;
                if (z === "date") {
                  var B = P.getComponentMethod("calendars", "handleDefaults");
                  B(_, S, "calendar", C.calendar), C.noTicklabelmode || (O = M("ticklabelmode"));
                }
                !C.noTicklabelindex && (z === "date" || z === "linear") && M("ticklabelindex");
                var V = "";
                (!C.noTicklabelposition || z === "multicategory") && (V = n.coerce(_, S, {
                  ticklabelposition: {
                    valType: "enumerated",
                    dflt: "outside",
                    values: O === "period" ? ["outside", "inside"] : L === "x" ? ["outside", "inside", "outside left", "inside left", "outside right", "inside right"] : ["outside", "inside", "outside top", "inside top", "outside bottom", "inside bottom"]
                  }
                }, "ticklabelposition")), C.noTicklabeloverflow || M("ticklabeloverflow", V.indexOf("inside") !== -1 ? "hide past domain" : z === "category" || z === "multicategory" ? "allow" : "hide past div"), o(S, m), l(_, S, M, C), i(_, S, M, C), z !== "category" && !C.noHover && M("hoverformat");
                var U = M("color"), H = U !== A.color.dflt ? U : d.color, F = h.label || m._dfltTitle[L];
                if (r(_, S, M, z, C), !E) return S;
                M("title.text", F), n.coerceFont(M, "title.font", d, {
                  overrideDflt: {
                    size: n.bigFont(d.size),
                    color: H
                  }
                }), p(_, S, M, z);
                var G = C.hasMinor;
                if (G && (s.newContainer(S, "minor"), p(_, S, M, z, {
                  isMinor: !0
                })), t(_, S, M, z, C), u(_, S, M, C), G) {
                  var q = C.isMinor;
                  C.isMinor = !0, u(_, S, M, C), C.isMinor = q;
                }
                a(_, S, M, {
                  dfltColor: U,
                  bgColor: C.bgColor,
                  showGrid: C.showGrid,
                  hasMinor: G,
                  attributes: A
                }), G && !S.minor.ticks && !S.minor.showgrid && delete S.minor, (S.showline || S.ticks) && M("mirror");
                var rt = z === "multicategory";
                if (!C.noTickson && (z === "category" || rt) && (S.ticks || S.showgrid)) {
                  var st;
                  rt && (st = "boundaries");
                  var vt = M("tickson", st);
                  vt === "boundaries" && delete S.ticklabelposition;
                }
                if (rt) {
                  var ht = M("showdividers");
                  ht && (M("dividercolor"), M("dividerwidth"));
                }
                if (z === "date")
                  if (T(_, S, {
                    name: "rangebreaks",
                    inclusionAttr: "enabled",
                    handleItemDefaults: x
                  }), !S.rangebreaks.length)
                    delete S.rangebreaks;
                  else {
                    for (var et = 0; et < S.rangebreaks.length; et++)
                      if (S.rangebreaks[et].pattern === y) {
                        S._hasDayOfWeekBreaks = !0;
                        break;
                      }
                    if (o(S, m), m._has("scattergl") || m._has("splom"))
                      for (var Q = 0; Q < C.data.length; Q++) {
                        var j = C.data[Q];
                        (j.type === "scattergl" || j.type === "splom") && (j.visible = !1, n.warn(j.type + " traces do not work on axes with rangebreaks. Setting trace " + j.index + " to `visible: false`."));
                      }
                  }
                return S;
              };
              function x(f, _, S) {
                function M(O, B) {
                  return n.coerce(f, _, A.rangebreaks, O, B);
                }
                var C = M("enabled");
                if (C) {
                  var m = M("bounds");
                  if (m && m.length >= 2) {
                    var L = "", d, h;
                    if (m.length === 2) {
                      for (d = 0; d < 2; d++)
                        if (h = v(m[d]), h) {
                          L = y;
                          break;
                        }
                    }
                    var E = M("pattern", L);
                    if (E === y)
                      for (d = 0; d < 2; d++)
                        h = v(m[d]), h && (_.bounds[d] = m[d] = h - 1);
                    if (E)
                      for (d = 0; d < 2; d++)
                        switch (h = m[d], E) {
                          case y:
                            if (!b(h)) {
                              _.enabled = !1;
                              return;
                            }
                            if (h = +h, h !== Math.floor(h) || // don't accept fractional days for mow
                            h < 0 || h >= 7) {
                              _.enabled = !1;
                              return;
                            }
                            _.bounds[d] = m[d] = h;
                            break;
                          case g:
                            if (!b(h)) {
                              _.enabled = !1;
                              return;
                            }
                            if (h = +h, h < 0 || h > 24) {
                              _.enabled = !1;
                              return;
                            }
                            _.bounds[d] = m[d] = h;
                            break;
                        }
                    if (S.autorange === !1) {
                      var w = S.range;
                      if (w[0] < w[1]) {
                        if (m[0] < w[0] && m[1] > w[1]) {
                          _.enabled = !1;
                          return;
                        }
                      } else if (m[0] > w[0] && m[1] < w[1]) {
                        _.enabled = !1;
                        return;
                      }
                    }
                  } else {
                    var z = M("values");
                    if (z && z.length)
                      M("dvalue");
                    else {
                      _.enabled = !1;
                      return;
                    }
                  }
                }
              }
              var c = {
                sun: 1,
                mon: 2,
                tue: 3,
                wed: 4,
                thu: 5,
                fri: 6,
                sat: 7
              };
              function v(f) {
                if (typeof f == "string")
                  return c[f.substr(0, 3).toLowerCase()];
              }
            }
          ),
          /***/
          80712: (
            /***/
            function(Y, K, e) {
              var b = e(87296), P = b.FORMAT_LINK, n = b.DATE_FORMAT_LINK;
              function s(p, u) {
                return {
                  valType: "string",
                  dflt: "",
                  editType: "none",
                  description: (u ? T : A)("hover text", p) + ["By default the values are formatted using " + (u ? "generic number format" : "`" + p + "axis.hoverformat`") + "."].join(" ")
                };
              }
              function T(p, u) {
                return ["Sets the " + p + " formatting rule" + (u ? "for `" + u + "` " : ""), "using d3 formatting mini-languages", "which are very similar to those in Python. For numbers, see: " + P + "."].join(" ");
              }
              function A(p, u) {
                return T(p, u) + [" And for dates see: " + n + ".", "We add two items to d3's date formatter:", "*%h* for half of the year as a decimal number as well as", "*%{n}f* for fractional seconds", "with n digits. For example, *2016-10-13 09:15:23.456* with tickformat", "*%H~%M~%S.%2f* would display *09~15~23.46*"].join(" ");
              }
              Y.exports = {
                axisHoverFormat: s,
                descriptionOnlyNumbers: T,
                descriptionWithDates: A
              };
            }
          ),
          /***/
          5975: (
            /***/
            function(Y, K, e) {
              var b = e(33626), P = e(54826);
              K.id2name = function(T) {
                if (!(typeof T != "string" || !T.match(P.AX_ID_PATTERN))) {
                  var A = T.split(" ")[0].substr(1);
                  return A === "1" && (A = ""), T.charAt(0) + "axis" + A;
                }
              }, K.name2id = function(T) {
                if (T.match(P.AX_NAME_PATTERN)) {
                  var A = T.substr(5);
                  return A === "1" && (A = ""), T.charAt(0) + A;
                }
              }, K.cleanId = function(T, A, p) {
                var u = /( domain)$/.test(T);
                if (!(typeof T != "string" || !T.match(P.AX_ID_PATTERN)) && !(A && T.charAt(0) !== A) && !(u && !p)) {
                  var t = T.split(" ")[0].substr(1).replace(/^0+/, "");
                  return t === "1" && (t = ""), T.charAt(0) + t + (u && p ? " domain" : "");
                }
              }, K.list = function(s, T, A) {
                var p = s._fullLayout;
                if (!p) return [];
                var u = K.listIds(s, T), t = new Array(u.length), r;
                for (r = 0; r < u.length; r++) {
                  var i = u[r];
                  t[r] = p[i.charAt(0) + "axis" + i.substr(1)];
                }
                if (!A) {
                  var a = p._subplots.gl3d || [];
                  for (r = 0; r < a.length; r++) {
                    var l = p[a[r]];
                    T ? t.push(l[T + "axis"]) : t.push(l.xaxis, l.yaxis, l.zaxis);
                  }
                }
                return t;
              }, K.listIds = function(s, T) {
                var A = s._fullLayout;
                if (!A) return [];
                var p = A._subplots;
                return T ? p[T + "axis"] : p.xaxis.concat(p.yaxis);
              }, K.getFromId = function(s, T, A) {
                var p = s._fullLayout;
                return T = T === void 0 || typeof T != "string" ? T : T.replace(" domain", ""), A === "x" ? T = T.replace(/y[0-9]*/, "") : A === "y" && (T = T.replace(/x[0-9]*/, "")), p[K.id2name(T)];
              }, K.getFromTrace = function(s, T, A) {
                var p = s._fullLayout, u = null;
                if (b.traceIs(T, "gl3d")) {
                  var t = T.scene;
                  t.substr(0, 5) === "scene" && (u = p[t][A + "axis"]);
                } else
                  u = K.getFromId(s, T[A + "axis"] || A);
                return u;
              }, K.idSort = function(s, T) {
                var A = s.charAt(0), p = T.charAt(0);
                return A !== p ? A > p ? 1 : -1 : +(s.substr(1) || 1) - +(T.substr(1) || 1);
              }, K.ref2id = function(s) {
                return /^[xyz]/.test(s) ? s.split(" ")[0] : !1;
              };
              function n(s, T) {
                if (T && T.length) {
                  for (var A = 0; A < T.length; A++)
                    if (T[A][s]) return !0;
                }
                return !1;
              }
              K.isLinked = function(s, T) {
                return n(T, s._axisMatchGroups) || n(T, s._axisConstraintGroups);
              };
            }
          ),
          /***/
          46473: (
            /***/
            function(Y, K, e) {
              var b = e(87800).isTypedArraySpec;
              function P(n, s) {
                var T = s.dataAttr || n._id.charAt(0), A = {}, p, u, t;
                if (s.axData)
                  p = s.axData;
                else
                  for (p = [], u = 0; u < s.data.length; u++) {
                    var r = s.data[u];
                    r[T + "axis"] === n._id && p.push(r);
                  }
                for (u = 0; u < p.length; u++) {
                  var i = p[u][T];
                  for (t = 0; t < i.length; t++) {
                    var a = i[t];
                    a != null && (A[a] = 1);
                  }
                }
                return Object.keys(A);
              }
              Y.exports = function(s, T, A, p) {
                if (T.type === "category") {
                  var u = s.categoryarray, t = Array.isArray(u) && u.length > 0 || b(u), r;
                  t && (r = "array");
                  var i = A("categoryorder", r), a;
                  i === "array" && (a = A("categoryarray")), !t && i === "array" && (i = T.categoryorder = "trace"), i === "trace" ? T._initialCategories = [] : i === "array" ? T._initialCategories = a.slice() : (a = P(T, p).sort(), i === "category ascending" ? T._initialCategories = a : i === "category descending" && (T._initialCategories = a.reverse()));
                }
              };
            }
          ),
          /***/
          68599: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(34809), n = e(63821), s = n.ONEDAY, T = n.ONEWEEK;
              K.dtick = function(A, p) {
                var u = p === "log", t = p === "date", r = p === "category", i = t ? s : 1;
                if (!A) return i;
                if (b(A))
                  return A = Number(A), A <= 0 ? i : r ? Math.max(1, Math.round(A)) : t ? Math.max(0.1, A) : A;
                if (typeof A != "string" || !(t || u))
                  return i;
                var a = A.charAt(0), l = A.substr(1);
                return l = b(l) ? Number(l) : 0, l <= 0 || !// "M<n>" gives ticks every (integer) n months
                (t && a === "M" && l === Math.round(l) || // "L<f>" gives ticks linearly spaced in data (not in position) every (float) f
                u && a === "L" || // "D1" gives powers of 10 with all small digits between, "D2" gives only 2 and 5
                u && a === "D" && (l === 1 || l === 2)) ? i : A;
              }, K.tick0 = function(A, p, u, t) {
                if (p === "date")
                  return P.cleanDate(A, P.dateTick0(u, t % T === 0 ? 1 : 0));
                if (!(t === "D1" || t === "D2"))
                  return b(A) ? Number(A) : 0;
              };
            }
          ),
          /***/
          54826: (
            /***/
            function(Y, K, e) {
              var b = e(90694).counter;
              Y.exports = {
                idRegex: {
                  x: b("x", "( domain)?"),
                  y: b("y", "( domain)?")
                },
                attrRegex: b("[xy]axis"),
                // axis match regular expression
                xAxisMatch: b("xaxis"),
                yAxisMatch: b("yaxis"),
                // pattern matching axis ids and names
                // note that this is more permissive than counterRegex, as
                // id2name, name2id, and cleanId accept "x1" etc
                AX_ID_PATTERN: /^[xyz][0-9]*( domain)?$/,
                AX_NAME_PATTERN: /^[xyz]axis[0-9]*$/,
                // and for 2D subplots
                SUBPLOT_PATTERN: /^x([0-9]*)y([0-9]*)$/,
                HOUR_PATTERN: "hour",
                WEEKDAY_PATTERN: "day of week",
                // pixels to move mouse before you stop clamping to starting point
                MINDRAG: 8,
                // smallest dimension allowed for a zoombox
                MINZOOM: 20,
                // width of axis drag regions
                DRAGGERSIZE: 20,
                // delay before a redraw (relayout) after smooth panning and zooming
                REDRAWDELAY: 50,
                // last resort axis ranges for x and y axes if we have no data
                DFLTRANGEX: [-1, 6],
                DFLTRANGEY: [-1, 4],
                // Layers to keep trace types in the right order
                // N.B. each  'unique' plot method must have its own layer
                traceLayerClasses: ["imagelayer", "heatmaplayer", "contourcarpetlayer", "contourlayer", "funnellayer", "waterfalllayer", "barlayer", "carpetlayer", "violinlayer", "boxlayer", "ohlclayer", "scattercarpetlayer", "scatterlayer"],
                clipOnAxisFalseQuery: [".scatterlayer", ".barlayer", ".funnellayer", ".waterfalllayer"],
                layerValue2layerClass: {
                  "above traces": "above",
                  "below traces": "below"
                },
                zindexSeparator: "z"
                // used for zindex of cartesian subplots e.g. xy, xyz2, xyz3, etc.
              };
            }
          ),
          /***/
          84391: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(32919), n = e(5975).id2name, s = e(25829), T = e(67611), A = e(19091), p = e(63821).ALMOST_EQUAL, u = e(4530).FROM_BL;
              K.handleDefaults = function(g, x, c) {
                var v = c.axIds, f = c.axHasImage, _ = x._axisConstraintGroups = [], S = x._axisMatchGroups = [], M, C, m, L, d, h, E, w;
                for (M = 0; M < v.length; M++)
                  L = n(v[M]), d = g[L], h = x[L], t(d, h, {
                    axIds: v,
                    layoutOut: x,
                    hasImage: f[L]
                  });
                function z(rt, st) {
                  for (M = 0; M < rt.length; M++) {
                    C = rt[M];
                    for (m in C)
                      x[n(m)][st] = C;
                  }
                }
                for (z(S, "_matchGroup"), M = 0; M < _.length; M++) {
                  C = _[M];
                  for (m in C)
                    if (h = x[n(m)], h.fixedrange) {
                      for (var O in C) {
                        var B = n(O);
                        (g[B] || {}).fixedrange === !1 && b.warn("fixedrange was specified as false for axis " + B + " but was overridden because another axis in its constraint group has fixedrange true"), x[B].fixedrange = !0;
                      }
                      break;
                    }
                }
                for (M = 0; M < _.length; ) {
                  C = _[M];
                  for (m in C) {
                    h = x[n(m)], h._matchGroup && Object.keys(h._matchGroup).length === Object.keys(C).length && (_.splice(M, 1), M--);
                    break;
                  }
                  M++;
                }
                z(_, "_constraintGroup");
                var V = ["constrain", "range", "autorange", "rangemode", "rangebreaks", "categoryorder", "categoryarray"], U = !1, H = !1;
                function F() {
                  w = h[E], E === "rangebreaks" && (H = h._hasDayOfWeekBreaks);
                }
                for (M = 0; M < S.length; M++) {
                  C = S[M];
                  for (var G = 0; G < V.length; G++) {
                    E = V[G], w = null;
                    var q;
                    for (m in C)
                      if (L = n(m), d = g[L], h = x[L], E in h) {
                        if (!h.matches && (q = h, E in d)) {
                          F();
                          break;
                        }
                        w === null && E in d && F();
                      }
                    if (E === "range" && w && d.range && d.range.length === 2 && d.range[0] !== null && d.range[1] !== null && (U = !0), E === "autorange" && w === null && U && (w = !1), w === null && E in q && (w = q[E]), w !== null)
                      for (m in C)
                        h = x[n(m)], h[E] = E === "range" ? w.slice() : w, E === "rangebreaks" && (h._hasDayOfWeekBreaks = H, A(h, x));
                  }
                }
              };
              function t(g, x, c) {
                var v = c.axIds, f = c.layoutOut, _ = c.hasImage, S = f._axisConstraintGroups, M = f._axisMatchGroups, C = x._id, m = C.charAt(0), L = ((f._splomAxes || {})[m] || {})[C] || {}, d = x._id, h = d.charAt(0) === "x";
                x._matchGroup = null, x._constraintGroup = null;
                function E(et, Q) {
                  return b.coerce(g, x, s, et, Q);
                }
                E("constrain", _ ? "domain" : "range"), b.coerce(g, x, {
                  constraintoward: {
                    valType: "enumerated",
                    values: h ? ["left", "center", "right"] : ["bottom", "middle", "top"],
                    dflt: h ? "center" : "middle"
                  }
                }, "constraintoward");
                var w = x.type, z, O, B = [];
                for (z = 0; z < v.length; z++)
                  if (O = v[z], O !== d) {
                    var V = f[n(O)];
                    V.type === w && B.push(O);
                  }
                var U = i(S, d);
                if (U) {
                  var H = [];
                  for (z = 0; z < B.length; z++)
                    O = B[z], U[O] || H.push(O);
                  B = H;
                }
                var F = B.length, G, q;
                F && (g.matches || L.matches) && (G = b.coerce(g, x, {
                  matches: {
                    valType: "enumerated",
                    values: B,
                    dflt: B.indexOf(L.matches) !== -1 ? L.matches : void 0
                  }
                }, "matches"));
                var rt = _ && !h ? x.anchor : void 0;
                if (F && !G && (g.scaleanchor || rt) && (q = b.coerce(g, x, {
                  scaleanchor: {
                    valType: "enumerated",
                    values: B.concat([!1])
                  }
                }, "scaleanchor", rt)), G) {
                  x._matchGroup = a(M, d, G, 1);
                  var st = f[n(G)], vt = r(f, x) / r(f, st);
                  h !== (G.charAt(0) === "x") && (vt = (h ? "x" : "y") + vt), a(S, d, G, vt);
                } else g.matches && v.indexOf(g.matches) !== -1 && b.warn("ignored " + x._name + '.matches: "' + g.matches + '" to avoid an infinite loop');
                if (q) {
                  var ht = E("scaleratio");
                  ht || (ht = x.scaleratio = 1), a(S, d, q, ht);
                } else g.scaleanchor && v.indexOf(g.scaleanchor) !== -1 && b.warn("ignored " + x._name + '.scaleanchor: "' + g.scaleanchor + '" to avoid either an infinite loop and possibly inconsistent scaleratios, or because this axis declares a *matches* constraint.');
              }
              function r(g, x) {
                var c = x.domain;
                return c || (c = g[n(x.overlaying)].domain), c[1] - c[0];
              }
              function i(g, x) {
                for (var c = 0; c < g.length; c++)
                  if (g[c][x])
                    return g[c];
                return null;
              }
              function a(g, x, c, v) {
                var f, _, S, M, C, m = i(g, x);
                m === null ? (m = {}, m[x] = 1, C = g.length, g.push(m)) : C = g.indexOf(m);
                var L = Object.keys(m);
                for (f = 0; f < g.length; f++)
                  if (S = g[f], f !== C && S[c]) {
                    var d = S[c];
                    for (_ = 0; _ < L.length; _++)
                      M = L[_], S[M] = l(d, l(v, m[M]));
                    g.splice(C, 1);
                    return;
                  }
                if (v !== 1)
                  for (_ = 0; _ < L.length; _++) {
                    var h = L[_];
                    m[h] = l(v, m[h]);
                  }
                m[c] = 1;
              }
              function l(g, x) {
                var c = "", v = "", f, _;
                typeof g == "string" && (c = g.match(/^[xy]*/)[0], f = c.length, g = +g.substr(f)), typeof x == "string" && (v = x.match(/^[xy]*/)[0], _ = v.length, x = +x.substr(_));
                var S = g * x;
                return !f && !_ ? S : !f || !_ || c.charAt(0) === v.charAt(0) ? c + v + g * x : f === _ ? S : (f > _ ? c.substr(_) : v.substr(f)) + S;
              }
              function o(g, x) {
                for (var c = x._size, v = c.h / c.w, f = {}, _ = Object.keys(g), S = 0; S < _.length; S++) {
                  var M = _[S], C = g[M];
                  if (typeof C == "string") {
                    var m = C.match(/^[xy]*/)[0], L = m.length;
                    C = +C.substr(L);
                    for (var d = m.charAt(0) === "y" ? v : 1 / v, h = 0; h < L; h++)
                      C *= d;
                  }
                  f[M] = C;
                }
                return f;
              }
              K.enforce = function(x) {
                var c = x._fullLayout, v = c._axisConstraintGroups || [], f, _, S, M, C, m, L, d;
                for (f = 0; f < v.length; f++) {
                  S = o(v[f], c);
                  var h = Object.keys(S), E = 1 / 0, w = 0, z = 1 / 0, O = {}, B = {}, V = !1;
                  for (_ = 0; _ < h.length; _++)
                    M = h[_], B[M] = C = c[n(M)], C._inputDomain ? C.domain = C._inputDomain.slice() : C._inputDomain = C.domain.slice(), C._inputRange || (C._inputRange = C.range.slice()), C.setScale(), O[M] = m = Math.abs(C._m) / S[M], E = Math.min(E, m), (C.constrain === "domain" || !C._constraintShrinkable) && (z = Math.min(z, m)), delete C._constraintShrinkable, w = Math.max(w, m), C.constrain === "domain" && (V = !0);
                  if (!(E > p * w && !V)) {
                    for (_ = 0; _ < h.length; _++)
                      if (M = h[_], m = O[M], C = B[M], L = C.constrain, m !== z || L === "domain")
                        if (d = m / z, L === "range")
                          T(C, d);
                        else {
                          var U = C._inputDomain, H = (C.domain[1] - C.domain[0]) / (U[1] - U[0]), F = (C.r2l(C.range[1]) - C.r2l(C.range[0])) / (C.r2l(C._inputRange[1]) - C.r2l(C._inputRange[0]));
                          if (d /= H, d * F < 1) {
                            C.domain = C._input.domain = U.slice(), T(C, d);
                            continue;
                          }
                          if (F < 1 && (C.range = C._input.range = C._inputRange.slice(), d *= F), C.autorange) {
                            var G = C.r2l(C.range[0]), q = C.r2l(C.range[1]), rt = (G + q) / 2, st = rt, vt = rt, ht = Math.abs(q - rt), et = rt - ht * d * 1.0001, Q = rt + ht * d * 1.0001, j = P.makePadFn(c, C, 0), at = P.makePadFn(c, C, 1);
                            y(C, d);
                            var ut = Math.abs(C._m), nt = P.concatExtremes(x, C), X = nt.min, ct = nt.max, lt, pt;
                            for (pt = 0; pt < X.length; pt++)
                              lt = X[pt].val - j(X[pt]) / ut, lt > et && lt < st && (st = lt);
                            for (pt = 0; pt < ct.length; pt++)
                              lt = ct[pt].val + at(ct[pt]) / ut, lt < Q && lt > vt && (vt = lt);
                            var wt = (vt - st) / (2 * ht);
                            d /= wt, st = C.l2r(st), vt = C.l2r(vt), C.range = C._input.range = G < q ? [st, vt] : [vt, st];
                          }
                          y(C, d);
                        }
                  }
                }
              }, K.getAxisGroup = function(x, c) {
                for (var v = x._axisMatchGroups, f = 0; f < v.length; f++) {
                  var _ = v[f];
                  if (_[c]) return "g" + f;
                }
                return c;
              }, K.clean = function(x, c) {
                if (c._inputDomain) {
                  for (var v = !1, f = c._id, _ = x._fullLayout._axisConstraintGroups, S = 0; S < _.length; S++)
                    if (_[S][f]) {
                      v = !0;
                      break;
                    }
                  (!v || c.constrain !== "domain") && (c._input.domain = c.domain = c._inputDomain, delete c._inputDomain);
                }
              };
              function y(g, x) {
                var c = g._inputDomain, v = u[g.constraintoward], f = c[0] + (c[1] - c[0]) * v;
                g.domain = g._input.domain = [f + (c[0] - f) / x, f + (c[1] - f) / x], g.setScale();
              }
            }
          ),
          /***/
          51680: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(34809), n = P.numberFormat, s = e(65657), T = e(74043), A = e(33626), p = P.strTranslate, u = e(30635), t = e(78766), r = e(62203), i = e(32141), a = e(29714), l = e(27983), o = e(14751), y = e(70414), g = y.selectingOrDrawing, x = y.freeMode, c = e(4530).FROM_TL, v = e(34823), f = e(71817).redrawReglTraces, _ = e(44122), S = e(5975).getFromId, M = e(44844).prepSelect, C = e(44844).clearOutline, m = e(44844).selectOnClick, L = e(67611), d = e(54826), h = d.MINDRAG, E = d.MINZOOM, w = !0;
              function z(lt, pt, wt, Et, Ct, Gt, Jt, Qt) {
                var Vt = lt._fullLayout._zoomlayer, zt = Jt + Qt === "nsew", Rt = (Jt + Qt).length === 1, Wt, kt, re, ge, _e, ce, ae, Se, ze, Ne, Ve, Oe, ur, ie, $t, jt, ee, Bt, Xt, Zt, ye, Mt, St;
                wt += pt.yaxis._shift;
                function Lt() {
                  if (Wt = pt.xaxis, kt = pt.yaxis, ze = Wt._length, Ne = kt._length, ae = Wt._offset, Se = kt._offset, re = {}, re[Wt._id] = Wt, ge = {}, ge[kt._id] = kt, Jt && Qt)
                    for (var Tr = pt.overlays, tr = 0; tr < Tr.length; tr++) {
                      var yr = Tr[tr].xaxis;
                      re[yr._id] = yr;
                      var Ir = Tr[tr].yaxis;
                      ge[Ir._id] = Ir;
                    }
                  _e = ct(re), ce = ct(ge), ur = V(_e, Qt), ie = V(ce, Jt), $t = !ie && !ur, Oe = nt(lt, lt._fullLayout._axisMatchGroups, re, ge), Ve = nt(lt, lt._fullLayout._axisConstraintGroups, re, ge, Oe);
                  var Cr = Ve.isSubplotConstrained || Oe.isSubplotConstrained;
                  jt = Qt || Cr, ee = Jt || Cr;
                  var _r = lt._fullLayout;
                  Bt = _r._has("scattergl"), Xt = _r._has("splom"), Zt = _r._has("svg");
                }
                Lt();
                var te = q(ie + ur, lt._fullLayout.dragmode, zt), fe = B(pt, Jt + Qt + "drag", te, wt, Et, Ct, Gt);
                if ($t && !zt)
                  return fe.onmousedown = null, fe.style.pointerEvents = "none", fe;
                var Me = {
                  element: fe,
                  gd: lt,
                  plotinfo: pt
                };
                Me.prepFn = function(Tr, tr, yr) {
                  var Ir = Me.dragmode, Cr = lt._fullLayout.dragmode;
                  Cr !== Ir && (Me.dragmode = Cr), Lt(), Mt = lt._fullLayout._invScaleX, St = lt._fullLayout._invScaleY, $t || (zt ? Tr.shiftKey ? Cr === "pan" ? Cr = "zoom" : g(Cr) || (Cr = "pan") : Tr.ctrlKey && (Cr = "pan") : Cr = "pan"), x(Cr) ? Me.minDrag = 1 : Me.minDrag = void 0, g(Cr) ? (Me.xaxes = _e, Me.yaxes = ce, M(Tr, tr, yr, Me, Cr)) : (Me.clickFn = mr, g(Ir) && ir(), $t || (Cr === "zoom" ? (Me.moveFn = Pe, Me.doneFn = Ye, Me.minDrag = 1, ue(Tr, tr, yr)) : Cr === "pan" && (Me.moveFn = Or, Me.doneFn = Gr))), lt._fullLayout._redrag = function() {
                    var _r = lt._dragdata;
                    if (_r && _r.element === fe) {
                      var Zr = lt._fullLayout.dragmode;
                      g(Zr) || (Lt(), oe([0, 0, ze, Ne]), Me.moveFn(_r.dx, _r.dy));
                    }
                  };
                };
                function ir() {
                  Me.plotinfo.selection = !1, C(lt);
                }
                function mr(Tr, tr) {
                  var yr = Me.gd;
                  if (yr._fullLayout._activeShapeIndex >= 0) {
                    yr._fullLayout._deactivateShape(yr);
                    return;
                  }
                  var Ir = yr._fullLayout.clickmode;
                  if (et(yr), Tr === 2 && !Rt && Xr(), zt)
                    Ir.indexOf("select") > -1 && m(tr, yr, _e, ce, pt.id, Me), Ir.indexOf("event") > -1 && i.click(yr, tr, pt.id);
                  else if (Tr === 1 && Rt) {
                    var Cr = Jt ? kt : Wt, _r = Jt === "s" || Qt === "w" ? 0 : 1, Zr = Cr._name + ".range[" + _r + "]", ln = U(Cr, _r), Jr = "left", Zn = "middle";
                    if (Cr.fixedrange) return;
                    Jt ? (Zn = Jt === "n" ? "top" : "bottom", Cr.side === "right" && (Jr = "right")) : Qt === "e" && (Jr = "right"), yr._context.showAxisRangeEntryBoxes && b.select(fe).call(u.makeEditable, {
                      gd: yr,
                      immediate: !0,
                      background: yr._fullLayout.paper_bgcolor,
                      text: String(ln),
                      fill: Cr.tickfont ? Cr.tickfont.color : "#444",
                      horizontalAlign: Jr,
                      verticalAlign: Zn
                    }).on("edit", function(fn) {
                      var hi = Cr.d2r(fn);
                      hi !== void 0 && A.call("_guiRelayout", yr, Zr, hi);
                    });
                  }
                }
                o.init(Me);
                var Xe, xe, me, Le, qt, De, Je, dr, qe, we;
                function ue(Tr, tr, yr) {
                  var Ir = fe.getBoundingClientRect();
                  Xe = tr - Ir.left, xe = yr - Ir.top, lt._fullLayout._calcInverseTransform(lt);
                  var Cr = P.apply3DTransform(lt._fullLayout._invTransform)(Xe, xe);
                  Xe = Cr[0], xe = Cr[1], me = {
                    l: Xe,
                    r: Xe,
                    w: 0,
                    t: xe,
                    b: xe,
                    h: 0
                  }, Le = lt._hmpixcount ? lt._hmlumcount / lt._hmpixcount : s(lt._fullLayout.plot_bgcolor).getLuminance(), qt = "M0,0H" + ze + "V" + Ne + "H0V0", De = !1, Je = "xy", we = !1, dr = rt(Vt, Le, ae, Se, qt), qe = st(Vt, ae, Se);
                }
                function Pe(Tr, tr) {
                  if (lt._transitioningWithDuration)
                    return !1;
                  var yr = Math.max(0, Math.min(ze, Mt * Tr + Xe)), Ir = Math.max(0, Math.min(Ne, St * tr + xe)), Cr = Math.abs(yr - Xe), _r = Math.abs(Ir - xe);
                  me.l = Math.min(Xe, yr), me.r = Math.max(Xe, yr), me.t = Math.min(xe, Ir), me.b = Math.max(xe, Ir);
                  function Zr() {
                    Je = "", me.r = me.l, me.t = me.b, qe.attr("d", "M0,0Z");
                  }
                  if (Ve.isSubplotConstrained)
                    Cr > E || _r > E ? (Je = "xy", Cr / ze > _r / Ne ? (_r = Cr * Ne / ze, xe > Ir ? me.t = xe - _r : me.b = xe + _r) : (Cr = _r * ze / Ne, Xe > yr ? me.l = Xe - Cr : me.r = Xe + Cr), qe.attr("d", ut(me))) : Zr();
                  else if (Oe.isSubplotConstrained)
                    if (Cr > E || _r > E) {
                      Je = "xy";
                      var ln = Math.min(me.l / ze, (Ne - me.b) / Ne), Jr = Math.max(me.r / ze, (Ne - me.t) / Ne);
                      me.l = ln * ze, me.r = Jr * ze, me.b = (1 - ln) * Ne, me.t = (1 - Jr) * Ne, qe.attr("d", ut(me));
                    } else
                      Zr();
                  else !ie || _r < Math.min(Math.max(Cr * 0.6, h), E) ? Cr < h || !ur ? Zr() : (me.t = 0, me.b = Ne, Je = "x", qe.attr("d", j(me, xe))) : !ur || Cr < Math.min(_r * 0.6, E) ? (me.l = 0, me.r = ze, Je = "y", qe.attr("d", at(me, Xe))) : (Je = "xy", qe.attr("d", ut(me)));
                  me.w = me.r - me.l, me.h = me.b - me.t, Je && (we = !0), lt._dragged = we, vt(dr, qe, me, qt, De, Le), Ue(), lt.emit("plotly_relayouting", ye), De = !0;
                }
                function Ue() {
                  ye = {}, (Je === "xy" || Je === "x") && (H(_e, me.l / ze, me.r / ze, ye, Ve.xaxes), Br("x", ye)), (Je === "xy" || Je === "y") && (H(ce, (Ne - me.b) / Ne, (Ne - me.t) / Ne, ye, Ve.yaxes), Br("y", ye));
                }
                function Ye() {
                  Ue(), et(lt), Gr(), Q(lt);
                }
                var rr = [0, 0, ze, Ne], lr = null, hr = d.REDRAWDELAY, Sr = pt.mainplot ? lt._fullLayout._plots[pt.mainplot] : pt;
                function Dr(Tr) {
                  if (!lt._context._scrollZoom.cartesian && !lt._fullLayout._enablescrollzoom)
                    return;
                  if (ir(), lt._transitioningWithDuration) {
                    Tr.preventDefault(), Tr.stopPropagation();
                    return;
                  }
                  Lt(), clearTimeout(lr);
                  var tr = -Tr.deltaY;
                  if (isFinite(tr) || (tr = Tr.wheelDelta / 10), !isFinite(tr)) {
                    P.log("Did not find wheel motion attributes: ", Tr);
                    return;
                  }
                  var yr = Math.exp(-Math.min(Math.max(tr, -20), 20) / 200), Ir = Sr.draglayer.select(".nsewdrag").node().getBoundingClientRect(), Cr = (Tr.clientX - Ir.left) / Ir.width, _r = (Ir.bottom - Tr.clientY) / Ir.height, Zr;
                  function ln(Jr, Zn, fn) {
                    if (Jr.fixedrange) return;
                    var hi = P.simpleMap(Jr.range, Jr.r2l), Vn = hi[0] + (hi[1] - hi[0]) * Zn;
                    function jr(zr) {
                      return Jr.l2r(Vn + (zr - Vn) * fn);
                    }
                    Jr.range = hi.map(jr);
                  }
                  if (jt) {
                    for (Qt || (Cr = 0.5), Zr = 0; Zr < _e.length; Zr++)
                      ln(_e[Zr], Cr, yr);
                    Br("x"), rr[2] *= yr, rr[0] += rr[2] * Cr * (1 / yr - 1);
                  }
                  if (ee) {
                    for (Jt || (_r = 0.5), Zr = 0; Zr < ce.length; Zr++)
                      ln(ce[Zr], _r, yr);
                    Br("y"), rr[3] *= yr, rr[1] += rr[3] * (1 - _r) * (1 / yr - 1);
                  }
                  oe(rr), Nr(), lt.emit("plotly_relayouting", ye), lr = setTimeout(function() {
                    lt._fullLayout && (rr = [0, 0, ze, Ne], Gr());
                  }, hr), Tr.preventDefault();
                }
                Jt.length * Qt.length !== 1 && X(fe, Dr);
                function Or(Tr, tr) {
                  if (Tr = Tr * Mt, tr = tr * St, lt._transitioningWithDuration)
                    return;
                  if (lt._fullLayout._replotting = !0, ur === "ew" || ie === "ns") {
                    var yr = ur ? -Tr : 0, Ir = ie ? -tr : 0;
                    if (Oe.isSubplotConstrained) {
                      if (ur && ie) {
                        var Cr = (Tr / ze - tr / Ne) / 2;
                        Tr = Cr * ze, tr = -Cr * Ne, yr = -Tr, Ir = -tr;
                      }
                      ie ? yr = -Ir * ze / Ne : Ir = -yr * Ne / ze;
                    }
                    ur && (F(_e, Tr), Br("x")), ie && (F(ce, tr), Br("y")), oe([yr, Ir, ze, Ne]), Nr(), lt.emit("plotly_relayouting", ye);
                    return;
                  }
                  function _r(jr, zr, Tn) {
                    for (var sn = 1 - zr, $n, kn, An = 0; An < jr.length; An++) {
                      var qn = jr[An];
                      if (!qn.fixedrange) {
                        $n = qn, kn = qn._rl[sn] + (qn._rl[zr] - qn._rl[sn]) / G(Tn / qn._length);
                        var si = qn.l2r(kn);
                        si !== !1 && si !== void 0 && (qn.range[zr] = si);
                      }
                    }
                    return $n._length * ($n._rl[zr] - kn) / ($n._rl[zr] - $n._rl[sn]);
                  }
                  var Zr = ur === "w" == (ie === "n") ? 1 : -1;
                  if (ur && ie && (Ve.isSubplotConstrained || Oe.isSubplotConstrained)) {
                    var ln = (Tr / ze + Zr * tr / Ne) / 2;
                    Tr = ln * ze, tr = Zr * ln * Ne;
                  }
                  var Jr, Zn;
                  if (ur === "w" ? Tr = _r(_e, 0, Tr) : ur === "e" ? Tr = _r(_e, 1, -Tr) : ur || (Tr = 0), ie === "n" ? tr = _r(ce, 1, tr) : ie === "s" ? tr = _r(ce, 0, -tr) : ie || (tr = 0), Jr = ur === "w" ? Tr : 0, Zn = ie === "n" ? tr : 0, Ve.isSubplotConstrained && !Oe.isSubplotConstrained || // NW or SE on matching axes - create a symmetric zoom
                  Oe.isSubplotConstrained && ur && ie && Zr > 0) {
                    var fn;
                    if (Oe.isSubplotConstrained || !ur && ie.length === 1) {
                      for (fn = 0; fn < _e.length; fn++)
                        _e[fn].range = _e[fn]._r.slice(), L(_e[fn], 1 - tr / Ne);
                      Tr = tr * ze / Ne, Jr = Tr / 2;
                    }
                    if (Oe.isSubplotConstrained || !ie && ur.length === 1) {
                      for (fn = 0; fn < ce.length; fn++)
                        ce[fn].range = ce[fn]._r.slice(), L(ce[fn], 1 - Tr / ze);
                      tr = Tr * Ne / ze, Zn = tr / 2;
                    }
                  }
                  (!Oe.isSubplotConstrained || !ie) && Br("x"), (!Oe.isSubplotConstrained || !ur) && Br("y");
                  var hi = ze - Tr, Vn = Ne - tr;
                  Oe.isSubplotConstrained && !(ur && ie) && (ur ? (Zn = Jr ? 0 : Tr * Ne / ze, Vn = hi * Ne / ze) : (Jr = Zn ? 0 : tr * ze / Ne, hi = Vn * ze / Ne)), oe([Jr, Zn, hi, Vn]), Nr(), lt.emit("plotly_relayouting", ye);
                }
                function Br(Tr, tr) {
                  for (var yr = Oe.isSubplotConstrained ? {
                    x: ce,
                    y: _e
                  }[Tr] : Oe[Tr + "axes"], Ir = Oe.isSubplotConstrained ? {
                    x: _e,
                    y: ce
                  }[Tr] : [], Cr = 0; Cr < yr.length; Cr++) {
                    var _r = yr[Cr], Zr = _r._id, ln = Oe.xLinks[Zr] || Oe.yLinks[Zr], Jr = Ir[0] || re[ln] || ge[ln];
                    Jr && (tr ? (tr[_r._name + ".range[0]"] = tr[Jr._name + ".range[0]"], tr[_r._name + ".range[1]"] = tr[Jr._name + ".range[1]"]) : _r.range = Jr.range.slice());
                  }
                }
                function Nr() {
                  var Tr = [], tr;
                  function yr(Zr) {
                    for (tr = 0; tr < Zr.length; tr++)
                      Zr[tr].fixedrange || Tr.push(Zr[tr]._id);
                  }
                  function Ir(Zr, ln) {
                    for (tr = 0; tr < Zr.length; tr++) {
                      var Jr = Zr[tr], Zn = Jr[ln];
                      !Jr.fixedrange && Zn.tickmode === "sync" && Tr.push(Zn._id);
                    }
                  }
                  for (jt && (yr(_e), yr(Ve.xaxes), yr(Oe.xaxes), Ir(pt.overlays, "xaxis")), ee && (yr(ce), yr(Ve.yaxes), yr(Oe.yaxes), Ir(pt.overlays, "yaxis")), ye = {}, tr = 0; tr < Tr.length; tr++) {
                    var Cr = Tr[tr], _r = S(lt, Cr);
                    a.drawOne(lt, _r, {
                      skipTitle: !0
                    }), ye[_r._name + ".range[0]"] = _r.range[0], ye[_r._name + ".range[1]"] = _r.range[1];
                  }
                  a.redrawComponents(lt, Tr);
                }
                function Xr() {
                  if (!lt._transitioningWithDuration) {
                    var Tr = lt._context.doubleClick, tr = [];
                    ur && (tr = tr.concat(_e)), ie && (tr = tr.concat(ce)), Oe.xaxes && (tr = tr.concat(Oe.xaxes)), Oe.yaxes && (tr = tr.concat(Oe.yaxes));
                    var yr = {}, Ir, Cr;
                    if (Tr === "reset+autosize")
                      for (Tr = "autosize", Cr = 0; Cr < tr.length; Cr++) {
                        Ir = tr[Cr];
                        var _r = Ir._rangeInitial0, Zr = Ir._rangeInitial1, ln = _r !== void 0 || Zr !== void 0;
                        if (ln && (_r !== void 0 && _r !== Ir.range[0] || Zr !== void 0 && Zr !== Ir.range[1]) || !ln && Ir.autorange !== !0) {
                          Tr = "reset";
                          break;
                        }
                      }
                    if (Tr === "autosize")
                      for (Cr = 0; Cr < tr.length; Cr++)
                        Ir = tr[Cr], Ir.fixedrange || (yr[Ir._name + ".autorange"] = !0);
                    else if (Tr === "reset") {
                      for ((ur || Ve.isSubplotConstrained) && (tr = tr.concat(Ve.xaxes)), ie && !Ve.isSubplotConstrained && (tr = tr.concat(Ve.yaxes)), Ve.isSubplotConstrained && (ur ? ie || (tr = tr.concat(ce)) : tr = tr.concat(_e)), Cr = 0; Cr < tr.length; Cr++)
                        if (Ir = tr[Cr], !Ir.fixedrange) {
                          var Jr = Ir._name, Zn = Ir._autorangeInitial;
                          Ir._rangeInitial0 === void 0 && Ir._rangeInitial1 === void 0 ? yr[Jr + ".autorange"] = !0 : Ir._rangeInitial0 === void 0 ? (yr[Jr + ".autorange"] = Zn, yr[Jr + ".range"] = [null, Ir._rangeInitial1]) : Ir._rangeInitial1 === void 0 ? (yr[Jr + ".range"] = [Ir._rangeInitial0, null], yr[Jr + ".autorange"] = Zn) : yr[Jr + ".range"] = [Ir._rangeInitial0, Ir._rangeInitial1];
                        }
                    }
                    lt.emit("plotly_doubleclick", null), A.call("_guiRelayout", lt, yr);
                  }
                }
                function Gr() {
                  oe([0, 0, ze, Ne]), P.syncOrAsync([_.previousPromises, function() {
                    lt._fullLayout._replotting = !1, A.call("_guiRelayout", lt, ye);
                  }], lt);
                }
                function oe(Tr) {
                  var tr = lt._fullLayout, yr = tr._plots, Ir = tr._subplots.cartesian, Cr, _r, Zr, ln;
                  if (Xt && A.subplotsRegistry.splom.drag(lt), Bt) {
                    for (Cr = 0; Cr < Ir.length; Cr++)
                      if (_r = yr[Ir[Cr]], Zr = _r.xaxis, ln = _r.yaxis, _r._scene) {
                        Zr.limitRange && Zr.limitRange(), ln.limitRange && ln.limitRange();
                        var Jr = P.simpleMap(Zr.range, Zr.r2l), Zn = P.simpleMap(ln.range, ln.r2l);
                        _r._scene.update({
                          range: [Jr[0], Zn[0], Jr[1], Zn[1]]
                        });
                      }
                  }
                  if ((Xt || Bt) && (v(lt), f(lt)), Zt) {
                    var fn = Tr[2] / Wt._length, hi = Tr[3] / kt._length;
                    for (Cr = 0; Cr < Ir.length; Cr++) {
                      _r = yr[Ir[Cr]], Zr = _r.xaxis, ln = _r.yaxis;
                      var Vn = (jt || Oe.isSubplotConstrained) && !Zr.fixedrange && re[Zr._id], jr = (ee || Oe.isSubplotConstrained) && !ln.fixedrange && ge[ln._id], zr, Tn, sn, $n;
                      if (Vn ? (zr = fn, sn = Qt || Oe.isSubplotConstrained ? Tr[0] : Er(Zr, zr)) : Oe.xaHash[Zr._id] ? (zr = fn, sn = Tr[0] * Zr._length / Wt._length) : Oe.yaHash[Zr._id] ? (zr = hi, sn = ie === "ns" ? -Tr[1] * Zr._length / kt._length : Er(Zr, zr, {
                        n: "top",
                        s: "bottom"
                      }[ie])) : (zr = de(Zr, fn, hi), sn = or(Zr, zr)), zr > 1 && (Zr.maxallowed !== void 0 && jt === (Zr.range[0] < Zr.range[1] ? "e" : "w") || Zr.minallowed !== void 0 && jt === (Zr.range[0] < Zr.range[1] ? "w" : "e")) && (zr = 1, sn = 0), jr ? (Tn = hi, $n = Jt || Oe.isSubplotConstrained ? Tr[1] : Er(ln, Tn)) : Oe.yaHash[ln._id] ? (Tn = hi, $n = Tr[1] * ln._length / kt._length) : Oe.xaHash[ln._id] ? (Tn = fn, $n = ur === "ew" ? -Tr[0] * ln._length / Wt._length : Er(ln, Tn, {
                        e: "right",
                        w: "left"
                      }[ur])) : (Tn = de(ln, fn, hi), $n = or(ln, Tn)), Tn > 1 && (ln.maxallowed !== void 0 && ee === (ln.range[0] < ln.range[1] ? "n" : "s") || ln.minallowed !== void 0 && ee === (ln.range[0] < ln.range[1] ? "s" : "n")) && (Tn = 1, $n = 0), !(!zr && !Tn)) {
                        zr || (zr = 1), Tn || (Tn = 1);
                        var kn = Zr._offset - sn / zr, An = ln._offset - $n / Tn;
                        _r.clipRect.call(r.setTranslate, sn, $n).call(r.setScale, zr, Tn), _r.plot.call(r.setTranslate, kn, An).call(r.setScale, 1 / zr, 1 / Tn), (zr !== _r.xScaleFactor || Tn !== _r.yScaleFactor) && (r.setPointGroupScale(_r.zoomScalePts, zr, Tn), r.setTextPointsScale(_r.zoomScaleTxt, zr, Tn)), r.hideOutsideRangePoints(_r.clipOnAxisFalseTraces, _r), _r.xScaleFactor = zr, _r.yScaleFactor = Tn;
                      }
                    }
                  }
                }
                function de(Tr, tr, yr) {
                  return Tr.fixedrange ? 0 : jt && Ve.xaHash[Tr._id] ? tr : ee && (Ve.isSubplotConstrained ? Ve.xaHash : Ve.yaHash)[Tr._id] ? yr : 0;
                }
                function or(Tr, tr) {
                  return tr ? (Tr.range = Tr._r.slice(), L(Tr, tr), Er(Tr, tr)) : 0;
                }
                function Er(Tr, tr, yr) {
                  return Tr._length * (1 - tr) * c[yr || Tr.constraintoward || "middle"];
                }
                return fe;
              }
              function O(lt, pt, wt, Et) {
                var Ct = P.ensureSingle(lt.draglayer, pt, wt, function(Gt) {
                  Gt.classed("drag", !0).style({
                    fill: "transparent",
                    "stroke-width": 0
                  }).attr("data-subplot", lt.id);
                });
                return Ct.call(l, Et), Ct.node();
              }
              function B(lt, pt, wt, Et, Ct, Gt, Jt) {
                var Qt = O(lt, "rect", pt, wt);
                return b.select(Qt).call(r.setRect, Et, Ct, Gt, Jt), Qt;
              }
              function V(lt, pt) {
                for (var wt = 0; wt < lt.length; wt++)
                  if (!lt[wt].fixedrange) return pt;
                return "";
              }
              function U(lt, pt) {
                var wt = lt.range[pt], Et = Math.abs(wt - lt.range[1 - pt]), Ct;
                return lt.type === "date" ? wt : lt.type === "log" ? (Ct = Math.ceil(Math.max(0, -Math.log(Et) / Math.LN10)) + 3, n("." + Ct + "g")(Math.pow(10, wt))) : (Ct = Math.floor(Math.log(Math.abs(wt)) / Math.LN10) - Math.floor(Math.log(Et) / Math.LN10) + 4, n("." + String(Ct) + "g")(wt));
              }
              function H(lt, pt, wt, Et, Ct) {
                for (var Gt = 0; Gt < lt.length; Gt++) {
                  var Jt = lt[Gt];
                  if (!Jt.fixedrange)
                    if (Jt.rangebreaks) {
                      var Qt = Jt._id.charAt(0) === "y", Vt = Qt ? 1 - pt : pt, zt = Qt ? 1 - wt : wt;
                      Et[Jt._name + ".range[0]"] = Jt.l2r(Jt.p2l(Vt * Jt._length)), Et[Jt._name + ".range[1]"] = Jt.l2r(Jt.p2l(zt * Jt._length));
                    } else {
                      var Rt = Jt._rl[0], Wt = Jt._rl[1] - Rt;
                      Et[Jt._name + ".range[0]"] = Jt.l2r(Rt + Wt * pt), Et[Jt._name + ".range[1]"] = Jt.l2r(Rt + Wt * wt);
                    }
                }
                if (Ct && Ct.length) {
                  var kt = (pt + (1 - wt)) / 2;
                  H(Ct, kt, 1 - kt, Et, []);
                }
              }
              function F(lt, pt) {
                for (var wt = 0; wt < lt.length; wt++) {
                  var Et = lt[wt];
                  if (!Et.fixedrange) {
                    if (Et.rangebreaks) {
                      var Ct = 0, Gt = Et._length, Jt = Et.p2l(Ct + pt) - Et.p2l(Ct), Qt = Et.p2l(Gt + pt) - Et.p2l(Gt), Vt = (Jt + Qt) / 2;
                      Et.range = [Et.l2r(Et._rl[0] - Vt), Et.l2r(Et._rl[1] - Vt)];
                    } else
                      Et.range = [Et.l2r(Et._rl[0] - pt / Et._m), Et.l2r(Et._rl[1] - pt / Et._m)];
                    Et.limitRange && Et.limitRange();
                  }
                }
              }
              function G(lt) {
                return 1 - (lt >= 0 ? Math.min(lt, 0.9) : 1 / (1 / Math.max(lt, -0.3) + 3.222));
              }
              function q(lt, pt, wt) {
                return lt ? lt === "nsew" ? wt ? "" : pt === "pan" ? "move" : "crosshair" : lt.toLowerCase() + "-resize" : "pointer";
              }
              function rt(lt, pt, wt, Et, Ct) {
                return lt.append("path").attr("class", "zoombox").style({
                  fill: pt > 0.2 ? "rgba(0,0,0,0)" : "rgba(255,255,255,0)",
                  "stroke-width": 0
                }).attr("transform", p(wt, Et)).attr("d", Ct + "Z");
              }
              function st(lt, pt, wt) {
                return lt.append("path").attr("class", "zoombox-corners").style({
                  fill: t.background,
                  stroke: t.defaultLine,
                  "stroke-width": 1,
                  opacity: 0
                }).attr("transform", p(pt, wt)).attr("d", "M0,0Z");
              }
              function vt(lt, pt, wt, Et, Ct, Gt) {
                lt.attr("d", Et + "M" + wt.l + "," + wt.t + "v" + wt.h + "h" + wt.w + "v-" + wt.h + "h-" + wt.w + "Z"), ht(lt, pt, Ct, Gt);
              }
              function ht(lt, pt, wt, Et) {
                wt || (lt.transition().style("fill", Et > 0.2 ? "rgba(0,0,0,0.4)" : "rgba(255,255,255,0.3)").duration(200), pt.transition().style("opacity", 1).duration(200));
              }
              function et(lt) {
                b.select(lt).selectAll(".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners").remove();
              }
              function Q(lt) {
                w && lt.data && lt._context.showTips && (P.notifier(P._(lt, "Double-click to zoom back out"), "long"), w = !1);
              }
              function j(lt, pt) {
                return "M" + (lt.l - 0.5) + "," + (pt - E - 0.5) + "h-3v" + (2 * E + 1) + "h3ZM" + (lt.r + 0.5) + "," + (pt - E - 0.5) + "h3v" + (2 * E + 1) + "h-3Z";
              }
              function at(lt, pt) {
                return "M" + (pt - E - 0.5) + "," + (lt.t - 0.5) + "v-3h" + (2 * E + 1) + "v3ZM" + (pt - E - 0.5) + "," + (lt.b + 0.5) + "v3h" + (2 * E + 1) + "v-3Z";
              }
              function ut(lt) {
                var pt = Math.floor(Math.min(lt.b - lt.t, lt.r - lt.l, E) / 2);
                return "M" + (lt.l - 3.5) + "," + (lt.t - 0.5 + pt) + "h3v" + -pt + "h" + pt + "v-3h-" + (pt + 3) + "ZM" + (lt.r + 3.5) + "," + (lt.t - 0.5 + pt) + "h-3v" + -pt + "h" + -pt + "v-3h" + (pt + 3) + "ZM" + (lt.r + 3.5) + "," + (lt.b + 0.5 - pt) + "h-3v" + pt + "h" + -pt + "v3h" + (pt + 3) + "ZM" + (lt.l - 3.5) + "," + (lt.b + 0.5 - pt) + "h3v" + pt + "h" + pt + "v3h-" + (pt + 3) + "Z";
              }
              function nt(lt, pt, wt, Et, Ct) {
                for (var Gt = !1, Jt = {}, Qt = {}, Vt, zt, Rt, Wt, kt = (Ct || {}).xaHash, re = (Ct || {}).yaHash, ge = 0; ge < pt.length; ge++) {
                  var _e = pt[ge];
                  for (Vt in wt)
                    if (_e[Vt]) {
                      for (Rt in _e)
                        !(Ct && (kt[Rt] || re[Rt])) && !(Rt.charAt(0) === "x" ? wt : Et)[Rt] && (Jt[Rt] = Vt);
                      for (zt in Et)
                        !(Ct && (kt[zt] || re[zt])) && _e[zt] && (Gt = !0);
                    }
                  for (zt in Et)
                    if (_e[zt])
                      for (Wt in _e)
                        !(Ct && (kt[Wt] || re[Wt])) && !(Wt.charAt(0) === "x" ? wt : Et)[Wt] && (Qt[Wt] = zt);
                }
                Gt && (P.extendFlat(Jt, Qt), Qt = {});
                var ce = {}, ae = [];
                for (Rt in Jt) {
                  var Se = S(lt, Rt);
                  ae.push(Se), ce[Se._id] = Se;
                }
                var ze = {}, Ne = [];
                for (Wt in Qt) {
                  var Ve = S(lt, Wt);
                  Ne.push(Ve), ze[Ve._id] = Ve;
                }
                return {
                  xaHash: ce,
                  yaHash: ze,
                  xaxes: ae,
                  yaxes: Ne,
                  xLinks: Jt,
                  yLinks: Qt,
                  isSubplotConstrained: Gt
                };
              }
              function X(lt, pt) {
                if (!T)
                  lt.onwheel !== void 0 ? lt.onwheel = pt : lt.onmousewheel !== void 0 ? lt.onmousewheel = pt : lt.isAddedWheelEvent || (lt.isAddedWheelEvent = !0, lt.addEventListener("wheel", pt, {
                    passive: !1
                  }));
                else {
                  var wt = lt.onwheel !== void 0 ? "wheel" : "mousewheel";
                  lt._onwheel && lt.removeEventListener(wt, lt._onwheel), lt._onwheel = pt, lt.addEventListener(wt, pt, {
                    passive: !1
                  });
                }
              }
              function ct(lt) {
                var pt = [];
                for (var wt in lt) pt.push(lt[wt]);
                return pt;
              }
              Y.exports = {
                makeDragBox: z,
                makeDragger: O,
                makeRectDragger: B,
                makeZoombox: rt,
                makeCorners: st,
                updateZoombox: vt,
                xyCorners: ut,
                transitionZoombox: ht,
                removeZoombox: et,
                showDoubleClickNotifier: Q,
                attachWheelEventHandler: X
              };
            }
          ),
          /***/
          95284: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(32141), n = e(14751), s = e(27983), T = e(51680).makeDragBox, A = e(54826).DRAGGERSIZE;
              K.initInteractions = function(u) {
                var t = u._fullLayout;
                if (u._context.staticPlot) {
                  b.select(u).selectAll(".drag").remove();
                  return;
                }
                if (!(!t._has("cartesian") && !t._has("splom"))) {
                  var r = Object.keys(t._plots || {}).sort(function(a, l) {
                    if ((t._plots[a].mainplot && !0) === (t._plots[l].mainplot && !0)) {
                      var o = a.split("y"), y = l.split("y");
                      return o[0] === y[0] ? Number(o[1] || 1) - Number(y[1] || 1) : Number(o[0] || 1) - Number(y[0] || 1);
                    }
                    return t._plots[a].mainplot ? 1 : -1;
                  });
                  r.forEach(function(a) {
                    var l = t._plots[a], o = l.xaxis, y = l.yaxis;
                    if (!l.mainplot) {
                      var g = T(u, l, o._offset, y._offset, o._length, y._length, "ns", "ew");
                      g.onmousemove = function(v) {
                        u._fullLayout._rehover = function() {
                          u._fullLayout._hoversubplot === a && u._fullLayout._plots[a] && P.hover(u, v, a);
                        }, P.hover(u, v, a), u._fullLayout._lasthover = g, u._fullLayout._hoversubplot = a;
                      }, g.onmouseout = function(v) {
                        u._dragging || (u._fullLayout._hoversubplot = null, n.unhover(u, v));
                      }, u._context.showAxisDragHandles && (T(u, l, o._offset - A, y._offset - A, A, A, "n", "w"), T(u, l, o._offset + o._length, y._offset - A, A, A, "n", "e"), T(u, l, o._offset - A, y._offset + y._length, A, A, "s", "w"), T(u, l, o._offset + o._length, y._offset + y._length, A, A, "s", "e"));
                    }
                    if (u._context.showAxisDragHandles) {
                      if (a === o._mainSubplot) {
                        var x = o._mainLinePosition;
                        o.side === "top" && (x -= A), T(u, l, o._offset + o._length * 0.1, x, o._length * 0.8, A, "", "ew"), T(u, l, o._offset, x, o._length * 0.1, A, "", "w"), T(u, l, o._offset + o._length * 0.9, x, o._length * 0.1, A, "", "e");
                      }
                      if (a === y._mainSubplot) {
                        var c = y._mainLinePosition;
                        y.side !== "right" && (c -= A), T(u, l, c, y._offset + y._length * 0.1, A, y._length * 0.8, "ns", ""), T(u, l, c, y._offset + y._length * 0.9, A, y._length * 0.1, "s", ""), T(u, l, c, y._offset, A, y._length * 0.1, "n", "");
                      }
                    }
                  });
                  var i = t._hoverlayer.node();
                  i.onmousemove = function(a) {
                    a.target = u._fullLayout._lasthover, P.hover(u, a, t._hoversubplot);
                  }, i.onclick = function(a) {
                    a.target = u._fullLayout._lasthover, P.click(u, a);
                  }, i.onmousedown = function(a) {
                    u._fullLayout._lasthover.onmousedown(a);
                  }, K.updateFx(u);
                }
              }, K.updateFx = function(p) {
                var u = p._fullLayout, t = u.dragmode === "pan" ? "move" : "crosshair";
                s(u._draggers, t);
              };
            }
          ),
          /***/
          20706: (
            /***/
            function(Y, K, e) {
              var b = e(33626), P = e(34809), n = e(5975);
              Y.exports = function(T) {
                return function(p, u) {
                  var t = p[T];
                  if (Array.isArray(t))
                    for (var r = b.subplotsRegistry.cartesian, i = r.idRegex, a = u._subplots, l = a.xaxis, o = a.yaxis, y = a.cartesian, g = u._has("cartesian") || u._has("gl2d"), x = 0; x < t.length; x++) {
                      var c = t[x];
                      if (P.isPlainObject(c)) {
                        var v = n.cleanId(c.xref, "x", !1), f = n.cleanId(c.yref, "y", !1), _ = i.x.test(v), S = i.y.test(f);
                        if (_ || S) {
                          g || P.pushUnique(u._basePlotModules, r);
                          var M = !1;
                          _ && l.indexOf(v) === -1 && (l.push(v), M = !0), S && o.indexOf(f) === -1 && (o.push(f), M = !0), M && _ && S && y.push(v + f);
                        }
                      }
                    }
                };
              };
            }
          ),
          /***/
          37703: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(33626), n = e(34809), s = e(44122), T = e(62203), A = e(4173).eV, p = e(5975), u = e(54826), t = e(62972), r = n.ensureSingle;
              function i(c, v, f) {
                return n.ensureSingle(c, v, f, function(_) {
                  _.datum(f);
                });
              }
              var a = u.zindexSeparator;
              K.name = "cartesian", K.attr = ["xaxis", "yaxis"], K.idRoot = ["x", "y"], K.idRegex = u.idRegex, K.attrRegex = u.attrRegex, K.attributes = e(55126), K.layoutAttributes = e(25829), K.supplyLayoutDefaults = e(74098), K.transitionAxes = e(84982), K.finalizeSubplots = function(c, v) {
                var f = v._subplots, _ = f.xaxis, S = f.yaxis, M = f.cartesian, C = M.concat(f.gl2d || []), m = {}, L = {}, d, h, E;
                for (d = 0; d < C.length; d++) {
                  var w = C[d].split("y");
                  m[w[0]] = 1, L["y" + w[1]] = 1;
                }
                for (d = 0; d < _.length; d++)
                  h = _[d], m[h] || (E = (c[p.id2name(h)] || {}).anchor, u.idRegex.y.test(E) || (E = "y"), M.push(h + E), C.push(h + E), L[E] || (L[E] = 1, n.pushUnique(S, E)));
                for (d = 0; d < S.length; d++)
                  E = S[d], L[E] || (h = (c[p.id2name(E)] || {}).anchor, u.idRegex.x.test(h) || (h = "x"), M.push(h + E), C.push(h + E), m[h] || (m[h] = 1, n.pushUnique(_, h)));
                if (!C.length) {
                  h = "", E = "";
                  for (var z in c)
                    if (u.attrRegex.test(z)) {
                      var O = z.charAt(0);
                      O === "x" ? (!h || +z.substr(5) < +h.substr(5)) && (h = z) : (!E || +z.substr(5) < +E.substr(5)) && (E = z);
                    }
                  h = h ? p.name2id(h) : "x", E = E ? p.name2id(E) : "y", _.push(h), S.push(E), M.push(h + E);
                }
              }, K.plot = function(c, v, f, _) {
                var S = c._fullLayout, M = S._subplots.cartesian, C = c.calcdata, m;
                if (!Array.isArray(v))
                  for (v = [], m = 0; m < C.length; m++) v.push(m);
                for (var L = S._zindices, d = 0; d < L.length; d++) {
                  var h = L[d];
                  for (m = 0; m < M.length; m++) {
                    var E = M[m], w = S._plots[E];
                    if (d > 0) {
                      var z = w.id;
                      if (z.indexOf(a) !== -1) continue;
                      z += a + (d + 1), w = n.extendFlat({}, w, {
                        id: z,
                        plot: S._cartesianlayer.selectAll(".subplot").select("." + z)
                      });
                    }
                    for (var O = [], B, V = 0; V < C.length; V++) {
                      var U = C[V], H = U[0].trace;
                      h === (H.zorder || 0) && H.xaxis + H.yaxis === E && ((v.indexOf(H.index) !== -1 || H.carpet) && (B && B[0].trace.xaxis + B[0].trace.yaxis === E && ["tonextx", "tonexty", "tonext"].indexOf(H.fill) !== -1 && O.indexOf(B) === -1 && O.push(B), O.push(U)), B = U);
                    }
                    l(c, w, O, f, _);
                  }
                }
              };
              function l(c, v, f, _, S) {
                for (var M = u.traceLayerClasses, C = c._fullLayout, m = C._zindices, L = C._modules, d, h, E, w = [], z = [], O = 0; O < m.length; O++)
                  for (var B = m[O], V = 0; V < L.length; V++) {
                    d = L[V];
                    var U = d.name, H = P.modules[U].categories;
                    if (H.svg) {
                      var F = d.layerName || U + "layer", G = F + (O ? Number(O) + 1 : ""), q = d.plot;
                      h = A(f, q, B), E = h[0], f = h[1], E.length && w.push({
                        i: M.indexOf(F),
                        zindex: O,
                        className: G,
                        plotMethod: q,
                        cdModule: E
                      }), H.zoomScale && z.push("." + G);
                    }
                  }
                w.sort(function(vt, ht) {
                  return (vt.zindex || 0) - (ht.zindex || 0) || vt.i - ht.i;
                });
                var rt = v.plot.selectAll("g.mlayer").data(w, function(vt) {
                  return vt.className;
                });
                if (rt.enter().append("g").attr("class", function(vt) {
                  return vt.className;
                }).classed("mlayer", !0).classed("rangeplot", v.isRangePlot), rt.exit().remove(), rt.order(), rt.each(function(vt) {
                  var ht = b.select(this), et = vt.className;
                  vt.plotMethod(c, v, vt.cdModule, ht, _, S), u.clipOnAxisFalseQuery.indexOf("." + et) === -1 && T.setClipUrl(ht, v.layerClipId, c);
                }), C._has("scattergl") && (d = P.getModule("scattergl"), E = A(f, d)[0], d.plot(c, v, E)), !c._context.staticPlot && (v._hasClipOnAxisFalse && (v.clipOnAxisFalseTraces = v.plot.selectAll(u.clipOnAxisFalseQuery.join(",")).selectAll(".trace")), z.length)) {
                  var st = v.plot.selectAll(z.join(",")).selectAll(".trace");
                  v.zoomScalePts = st.selectAll("path.point"), v.zoomScaleTxt = st.selectAll(".textpoint");
                }
              }
              K.clean = function(c, v, f, _) {
                var S = _._plots || {}, M = v._plots || {}, C = _._subplots || {}, m, L, d;
                if (_._hasOnlyLargeSploms && !v._hasOnlyLargeSploms)
                  for (d in S)
                    m = S[d], m.plotgroup && m.plotgroup.remove();
                var h = _._has && _._has("gl"), E = v._has && v._has("gl");
                if (h && !E)
                  for (d in S)
                    m = S[d], m._scene && m._scene.destroy();
                if (C.xaxis && C.yaxis) {
                  var w = p.listIds({
                    _fullLayout: _
                  });
                  for (L = 0; L < w.length; L++) {
                    var z = w[L];
                    v[p.id2name(z)] || _._infolayer.selectAll(".g-" + z + "title").remove();
                  }
                }
                var O = _._has && _._has("cartesian"), B = v._has && v._has("cartesian");
                if (O && !B)
                  g(_._cartesianlayer.selectAll(".subplot"), _), _._defs.selectAll(".axesclip").remove(), delete _._axisConstraintGroups, delete _._axisMatchGroups;
                else if (C.cartesian)
                  for (L = 0; L < C.cartesian.length; L++) {
                    var V = C.cartesian[L];
                    if (V.indexOf(a) === -1 && !M[V]) {
                      var U = "." + V + ",." + V + "-x,." + V + "-y";
                      _._cartesianlayer.selectAll(U).remove(), x(V, _);
                    }
                  }
              }, K.drawFramework = function(c) {
                var v = c._fullLayout, f = c.calcdata, _, S = {};
                for (_ = 0; _ < f.length; _++) {
                  var M = f[_][0], C = M.trace, m = C.zorder || 0;
                  S[m] || (S[m] = []), S[m].push(M);
                }
                var L = Object.keys(S).map(Number).sort(n.sorterAsc);
                L.length || (L = [0]), v._zindices = L;
                var d = o(c), h = d.length, E = [];
                for (_ = 0; _ < h; _++)
                  E[_] = d[_].slice();
                for (var w = 1; w < L.length; w++) {
                  var z = [];
                  for (_ = 0; _ < h; _++)
                    z[_] = d[_].slice(), z[_][0] += a + (w + 1);
                  E = E.concat(z);
                }
                var O = v._cartesianlayer.selectAll(".subplot").data(E, String);
                O.enter().append("g").attr("class", function(B) {
                  return "subplot " + B[0];
                }), O.order(), O.exit().call(g, v), O.each(function(B) {
                  var V = B[0], U = V.indexOf(a), H = U !== -1, F = H ? V.slice(0, U) : V, G = v._plots[V];
                  G || (G = n.extendFlat({}, v._plots[F]), G && (G.id = V, v._plots[V] = G, v._subplots.cartesian.push(V))), G && (G.plotgroup = b.select(this), y(c, G), H || (G.draglayer = r(v._draggers, "g", V)));
                });
              }, K.rangePlot = function(c, v, f) {
                y(c, v), l(c, v, f), s.style(c);
              };
              function o(c) {
                var v = c._fullLayout, f = v._zindices.length, _ = v._subplots.cartesian, S = _.length, M, C, m, L, d, h, E = [], w = [];
                for (M = 0; M < S; M++) {
                  m = _[M], L = v._plots[m], d = L.xaxis, h = L.yaxis;
                  var z = d._mainAxis, O = h._mainAxis, B = z._id + O._id, V = v._plots[B];
                  L.overlays = [], B !== m && V ? (L.mainplot = B, L.mainplotinfo = V, w.push(m)) : (L.mainplot = void 0, L.mainplotinfo = void 0, E.push(m));
                }
                for (M = 0; M < w.length; M++)
                  m = w[M], L = v._plots[m], L.mainplotinfo.overlays.push(L);
                var U = E.concat(w), H = [];
                for (M = 0; M < S; M++) {
                  m = U[M], L = v._plots[m], d = L.xaxis, h = L.yaxis;
                  for (var F = [], G = 1; G <= f; G++) {
                    var q = "";
                    for (G > 1 && (q += a + G), F.push(m + q), C = 0; C < L.overlays.length; C++)
                      F.push(L.overlays[C].id + q);
                  }
                  F = F.concat([d.layer, h.layer, d.overlaying || "", h.overlaying || ""]), H.push(F);
                }
                return H;
              }
              function y(c, v) {
                var f = c._fullLayout, _ = v.plotgroup, S = v.id, M = S.indexOf(a), C = M !== -1, m = u.layerValue2layerClass[v.xaxis.layer], L = u.layerValue2layerClass[v.yaxis.layer], d = f._hasOnlyLargeSploms;
                if (!v.mainplot || f._zindices.length > 1)
                  if (d)
                    v.xlines = r(_, "path", "xlines-above"), v.ylines = r(_, "path", "ylines-above"), v.xaxislayer = r(_, "g", "xaxislayer-above"), v.yaxislayer = r(_, "g", "yaxislayer-above");
                  else {
                    if (!C) {
                      var h = r(_, "g", "layer-subplot");
                      v.shapelayer = r(h, "g", "shapelayer"), v.imagelayer = r(h, "g", "imagelayer"), v.minorGridlayer = r(_, "g", "minor-gridlayer"), v.gridlayer = r(_, "g", "gridlayer"), v.zerolinelayer = r(_, "g", "zerolinelayer");
                      var E = r(_, "g", "layer-between");
                      v.shapelayerBetween = r(E, "g", "shapelayer"), v.imagelayerBetween = r(E, "g", "imagelayer"), r(_, "path", "xlines-below"), r(_, "path", "ylines-below"), v.overlinesBelow = r(_, "g", "overlines-below"), r(_, "g", "xaxislayer-below"), r(_, "g", "yaxislayer-below"), v.overaxesBelow = r(_, "g", "overaxes-below");
                    }
                    v.overplot = r(_, "g", "overplot"), v.plot = r(v.overplot, "g", S), C || (v.xlines = r(_, "path", "xlines-above"), v.ylines = r(_, "path", "ylines-above"), v.overlinesAbove = r(_, "g", "overlines-above"), r(_, "g", "xaxislayer-above"), r(_, "g", "yaxislayer-above"), v.overaxesAbove = r(_, "g", "overaxes-above"), v.xlines = _.select(".xlines-" + m), v.ylines = _.select(".ylines-" + L), v.xaxislayer = _.select(".xaxislayer-" + m), v.yaxislayer = _.select(".yaxislayer-" + L));
                  }
                else {
                  var w = v.mainplotinfo, z = w.plotgroup, O = S + "-x", B = S + "-y";
                  v.minorGridlayer = w.minorGridlayer, v.gridlayer = w.gridlayer, v.zerolinelayer = w.zerolinelayer, r(w.overlinesBelow, "path", O), r(w.overlinesBelow, "path", B), r(w.overaxesBelow, "g", O), r(w.overaxesBelow, "g", B), v.plot = r(w.overplot, "g", S), r(w.overlinesAbove, "path", O), r(w.overlinesAbove, "path", B), r(w.overaxesAbove, "g", O), r(w.overaxesAbove, "g", B), v.xlines = z.select(".overlines-" + m).select("." + O), v.ylines = z.select(".overlines-" + L).select("." + B), v.xaxislayer = z.select(".overaxes-" + m).select("." + O), v.yaxislayer = z.select(".overaxes-" + L).select("." + B);
                }
                C || (d || (i(v.minorGridlayer, "g", v.xaxis._id), i(v.minorGridlayer, "g", v.yaxis._id), v.minorGridlayer.selectAll("g").map(function(V) {
                  return V[0];
                }).sort(p.idSort), i(v.gridlayer, "g", v.xaxis._id), i(v.gridlayer, "g", v.yaxis._id), v.gridlayer.selectAll("g").map(function(V) {
                  return V[0];
                }).sort(p.idSort)), v.xlines.style("fill", "none").classed("crisp", !0), v.ylines.style("fill", "none").classed("crisp", !0));
              }
              function g(c, v) {
                if (c) {
                  var f = {};
                  c.each(function(L) {
                    var d = L[0], h = b.select(this);
                    h.remove(), x(d, v), f[d] = !0;
                  });
                  for (var _ in v._plots)
                    for (var S = v._plots[_], M = S.overlays || [], C = 0; C < M.length; C++) {
                      var m = M[C];
                      f[m.id] && m.plot.selectAll(".trace").remove();
                    }
                }
              }
              function x(c, v) {
                v._draggers.selectAll("g." + c).remove(), v._defs.select("#clip" + v._uid + c + "plot").remove();
              }
              K.toSVG = function(c) {
                var v = c._fullLayout._glimages, f = b.select(c).selectAll(".svg-container"), _ = f.filter(function(M, C) {
                  return C === f.size() - 1;
                }).selectAll(".gl-canvas-context, .gl-canvas-focus");
                function S() {
                  var M = this, C = M.toDataURL("image/png"), m = v.append("svg:image");
                  m.attr({
                    xmlns: t.svg,
                    "xlink:href": C,
                    preserveAspectRatio: "none",
                    x: 0,
                    y: 0,
                    width: M.style.width,
                    height: M.style.height
                  });
                }
                _.each(S);
              }, K.updateFx = e(95284).updateFx;
            }
          ),
          /***/
          25829: (
            /***/
            function(Y, K, e) {
              var b = e(80337), P = e(10229), n = e(94850).T, s = e(93049).extendFlat, T = e(78032).templatedArray, A = e(80712).descriptionWithDates, p = e(63821).ONEDAY, u = e(54826), t = u.HOUR_PATTERN, r = u.WEEKDAY_PATTERN, i = {
                valType: "enumerated",
                values: ["auto", "linear", "array"],
                editType: "ticks",
                impliedEdits: {
                  tick0: void 0,
                  dtick: void 0
                }
              }, a = s({}, i, {
                values: i.values.slice().concat(["sync"])
              });
              function l(m) {
                return {
                  valType: "integer",
                  min: 0,
                  dflt: m ? 5 : 0,
                  editType: "ticks"
                };
              }
              var o = {
                valType: "any",
                editType: "ticks",
                impliedEdits: {
                  tickmode: "linear"
                }
              }, y = {
                valType: "any",
                editType: "ticks",
                impliedEdits: {
                  tickmode: "linear"
                }
              }, g = {
                valType: "data_array",
                editType: "ticks"
              }, x = {
                valType: "enumerated",
                values: ["outside", "inside", ""],
                editType: "ticks"
              };
              function c(m) {
                var L = {
                  valType: "number",
                  min: 0,
                  editType: "ticks"
                };
                return m || (L.dflt = 5), L;
              }
              function v(m) {
                var L = {
                  valType: "number",
                  min: 0,
                  editType: "ticks"
                };
                return m || (L.dflt = 1), L;
              }
              var f = {
                valType: "color",
                dflt: P.defaultLine,
                editType: "ticks"
              }, _ = {
                valType: "color",
                dflt: P.lightLine,
                editType: "ticks"
              };
              function S(m) {
                var L = {
                  valType: "number",
                  min: 0,
                  editType: "ticks"
                };
                return m || (L.dflt = 1), L;
              }
              var M = s({}, n, {
                editType: "ticks"
              }), C = {
                valType: "boolean",
                editType: "ticks"
              };
              Y.exports = {
                visible: {
                  valType: "boolean",
                  editType: "plot"
                },
                color: {
                  valType: "color",
                  dflt: P.defaultLine,
                  editType: "ticks"
                },
                title: {
                  text: {
                    valType: "string",
                    editType: "ticks"
                  },
                  font: b({
                    editType: "ticks"
                  }),
                  standoff: {
                    valType: "number",
                    min: 0,
                    editType: "ticks"
                  },
                  editType: "ticks"
                },
                type: {
                  valType: "enumerated",
                  // '-' means we haven't yet run autotype or couldn't find any data
                  // it gets turned into linear in gd._fullLayout but not copied back
                  // to gd.data like the others are.
                  values: ["-", "linear", "log", "date", "category", "multicategory"],
                  dflt: "-",
                  editType: "calc",
                  // we forget when an axis has been autotyped, just writing the auto
                  // value back to the input - so it doesn't make sense to template this.
                  // Note: we do NOT prohibit this in `coerce`, so if someone enters a
                  // type in the template explicitly it will be honored as the default.
                  _noTemplating: !0
                },
                autotypenumbers: {
                  valType: "enumerated",
                  values: ["convert types", "strict"],
                  dflt: "convert types",
                  editType: "calc"
                },
                autorange: {
                  valType: "enumerated",
                  values: [!0, !1, "reversed", "min reversed", "max reversed", "min", "max"],
                  dflt: !0,
                  editType: "axrange",
                  impliedEdits: {
                    "range[0]": void 0,
                    "range[1]": void 0
                  }
                },
                autorangeoptions: {
                  minallowed: {
                    valType: "any",
                    editType: "plot",
                    impliedEdits: {
                      "range[0]": void 0,
                      "range[1]": void 0
                    }
                  },
                  maxallowed: {
                    valType: "any",
                    editType: "plot",
                    impliedEdits: {
                      "range[0]": void 0,
                      "range[1]": void 0
                    }
                  },
                  clipmin: {
                    valType: "any",
                    editType: "plot",
                    impliedEdits: {
                      "range[0]": void 0,
                      "range[1]": void 0
                    }
                  },
                  clipmax: {
                    valType: "any",
                    editType: "plot",
                    impliedEdits: {
                      "range[0]": void 0,
                      "range[1]": void 0
                    }
                  },
                  include: {
                    valType: "any",
                    arrayOk: !0,
                    editType: "plot",
                    impliedEdits: {
                      "range[0]": void 0,
                      "range[1]": void 0
                    }
                  },
                  editType: "plot"
                },
                rangemode: {
                  valType: "enumerated",
                  values: ["normal", "tozero", "nonnegative"],
                  dflt: "normal",
                  editType: "plot"
                },
                range: {
                  valType: "info_array",
                  items: [{
                    valType: "any",
                    editType: "axrange",
                    impliedEdits: {
                      "^autorange": !1
                    },
                    anim: !0
                  }, {
                    valType: "any",
                    editType: "axrange",
                    impliedEdits: {
                      "^autorange": !1
                    },
                    anim: !0
                  }],
                  editType: "axrange",
                  impliedEdits: {
                    autorange: !1
                  },
                  anim: !0
                },
                minallowed: {
                  valType: "any",
                  editType: "plot",
                  impliedEdits: {
                    "^autorange": !1
                  }
                },
                maxallowed: {
                  valType: "any",
                  editType: "plot",
                  impliedEdits: {
                    "^autorange": !1
                  }
                },
                fixedrange: {
                  valType: "boolean",
                  dflt: !1,
                  editType: "calc"
                },
                insiderange: {
                  valType: "info_array",
                  items: [{
                    valType: "any",
                    editType: "plot"
                  }, {
                    valType: "any",
                    editType: "plot"
                  }],
                  editType: "plot"
                },
                // scaleanchor: not used directly, just put here for reference
                // values are any opposite-letter axis id, or `false`.
                scaleanchor: {
                  valType: "enumerated",
                  values: [u.idRegex.x.toString(), u.idRegex.y.toString(), !1],
                  editType: "plot"
                },
                scaleratio: {
                  valType: "number",
                  min: 0,
                  dflt: 1,
                  editType: "plot"
                },
                constrain: {
                  valType: "enumerated",
                  values: ["range", "domain"],
                  editType: "plot"
                },
                // constraintoward: not used directly, just put here for reference
                constraintoward: {
                  valType: "enumerated",
                  values: ["left", "center", "right", "top", "middle", "bottom"],
                  editType: "plot"
                },
                matches: {
                  valType: "enumerated",
                  values: [u.idRegex.x.toString(), u.idRegex.y.toString()],
                  editType: "calc"
                },
                rangebreaks: T("rangebreak", {
                  enabled: {
                    valType: "boolean",
                    dflt: !0,
                    editType: "calc"
                  },
                  bounds: {
                    valType: "info_array",
                    items: [{
                      valType: "any",
                      editType: "calc"
                    }, {
                      valType: "any",
                      editType: "calc"
                    }],
                    editType: "calc"
                  },
                  pattern: {
                    valType: "enumerated",
                    values: [r, t, ""],
                    editType: "calc"
                  },
                  values: {
                    valType: "info_array",
                    freeLength: !0,
                    editType: "calc",
                    items: {
                      valType: "any",
                      editType: "calc"
                    }
                  },
                  dvalue: {
                    // TODO could become 'any' to add support for 'months', 'years'
                    valType: "number",
                    editType: "calc",
                    min: 0,
                    dflt: p
                  },
                  /*
                  gap: {
                      valType: 'number',
                      min: 0,
                      dflt: 0, // for *date* axes, maybe something else for *linear*
                      editType: 'calc',
                  },
                  gapmode: {
                      valType: 'enumerated',
                      values: ['pixels', 'fraction'],
                      dflt: 'pixels',
                      editType: 'calc',
                  },
                  */
                  // To complete https://github.com/plotly/plotly.js/issues/4210
                  // we additionally need `gap` and make this work on *linear*, and
                  // possibly all other cartesian axis types. We possibly would also need
                  // some style attributes controlling the zig-zag on the corresponding
                  // axis.
                  editType: "calc"
                }),
                // ticks
                tickmode: a,
                nticks: l(),
                tick0: o,
                dtick: y,
                ticklabelstep: {
                  valType: "integer",
                  min: 1,
                  dflt: 1,
                  editType: "ticks"
                },
                tickvals: g,
                ticktext: {
                  valType: "data_array",
                  editType: "ticks"
                },
                ticks: x,
                tickson: {
                  valType: "enumerated",
                  values: ["labels", "boundaries"],
                  dflt: "labels",
                  editType: "ticks"
                },
                ticklabelmode: {
                  valType: "enumerated",
                  values: ["instant", "period"],
                  dflt: "instant",
                  editType: "ticks"
                },
                // ticklabelposition: not used directly, as values depend on direction (similar to side)
                // left/right options are for x axes, and top/bottom options are for y axes
                ticklabelposition: {
                  valType: "enumerated",
                  values: ["outside", "inside", "outside top", "inside top", "outside left", "inside left", "outside right", "inside right", "outside bottom", "inside bottom"],
                  dflt: "outside",
                  editType: "calc"
                },
                ticklabeloverflow: {
                  valType: "enumerated",
                  values: ["allow", "hide past div", "hide past domain"],
                  editType: "calc"
                },
                ticklabelshift: {
                  valType: "integer",
                  dflt: 0,
                  editType: "ticks"
                },
                ticklabelstandoff: {
                  valType: "integer",
                  dflt: 0,
                  editType: "ticks"
                },
                ticklabelindex: {
                  // in the future maybe add `extras: ['all', 'minor']` to allow showing labels for all ticks
                  // or for all minor ticks.
                  valType: "integer",
                  arrayOk: !0,
                  editType: "calc"
                },
                mirror: {
                  valType: "enumerated",
                  values: [!0, "ticks", !1, "all", "allticks"],
                  dflt: !1,
                  editType: "ticks+layoutstyle"
                },
                ticklen: c(),
                tickwidth: v(),
                tickcolor: f,
                showticklabels: {
                  valType: "boolean",
                  dflt: !0,
                  editType: "ticks"
                },
                labelalias: {
                  valType: "any",
                  dflt: !1,
                  editType: "ticks"
                },
                automargin: {
                  valType: "flaglist",
                  flags: ["height", "width", "left", "right", "top", "bottom"],
                  extras: [!0, !1],
                  dflt: !1,
                  editType: "ticks"
                },
                showspikes: {
                  valType: "boolean",
                  dflt: !1,
                  editType: "modebar"
                },
                spikecolor: {
                  valType: "color",
                  dflt: null,
                  editType: "none"
                },
                spikethickness: {
                  valType: "number",
                  dflt: 3,
                  editType: "none"
                },
                spikedash: s({}, n, {
                  dflt: "dash",
                  editType: "none"
                }),
                spikemode: {
                  valType: "flaglist",
                  flags: ["toaxis", "across", "marker"],
                  dflt: "toaxis",
                  editType: "none"
                },
                spikesnap: {
                  valType: "enumerated",
                  values: ["data", "cursor", "hovered data"],
                  dflt: "hovered data",
                  editType: "none"
                },
                tickfont: b({
                  editType: "ticks"
                }),
                tickangle: {
                  valType: "angle",
                  dflt: "auto",
                  editType: "ticks"
                },
                autotickangles: {
                  valType: "info_array",
                  freeLength: !0,
                  items: {
                    valType: "angle"
                  },
                  dflt: [0, 30, 90],
                  editType: "ticks"
                },
                tickprefix: {
                  valType: "string",
                  dflt: "",
                  editType: "ticks"
                },
                showtickprefix: {
                  valType: "enumerated",
                  values: ["all", "first", "last", "none"],
                  dflt: "all",
                  editType: "ticks"
                },
                ticksuffix: {
                  valType: "string",
                  dflt: "",
                  editType: "ticks"
                },
                showticksuffix: {
                  valType: "enumerated",
                  values: ["all", "first", "last", "none"],
                  dflt: "all",
                  editType: "ticks"
                },
                showexponent: {
                  valType: "enumerated",
                  values: ["all", "first", "last", "none"],
                  dflt: "all",
                  editType: "ticks"
                },
                exponentformat: {
                  valType: "enumerated",
                  values: ["none", "e", "E", "power", "SI", "B"],
                  dflt: "B",
                  editType: "ticks"
                },
                minexponent: {
                  valType: "number",
                  dflt: 3,
                  min: 0,
                  editType: "ticks"
                },
                separatethousands: {
                  valType: "boolean",
                  dflt: !1,
                  editType: "ticks"
                },
                tickformat: {
                  valType: "string",
                  dflt: "",
                  editType: "ticks",
                  description: A("tick label")
                },
                tickformatstops: T("tickformatstop", {
                  enabled: {
                    valType: "boolean",
                    dflt: !0,
                    editType: "ticks"
                  },
                  dtickrange: {
                    valType: "info_array",
                    items: [{
                      valType: "any",
                      editType: "ticks"
                    }, {
                      valType: "any",
                      editType: "ticks"
                    }],
                    editType: "ticks"
                  },
                  value: {
                    valType: "string",
                    dflt: "",
                    editType: "ticks"
                  },
                  editType: "ticks"
                }),
                hoverformat: {
                  valType: "string",
                  dflt: "",
                  editType: "none",
                  description: A("hover text")
                },
                // lines and grids
                showline: {
                  valType: "boolean",
                  dflt: !1,
                  editType: "ticks+layoutstyle"
                },
                linecolor: {
                  valType: "color",
                  dflt: P.defaultLine,
                  editType: "layoutstyle"
                },
                linewidth: {
                  valType: "number",
                  min: 0,
                  dflt: 1,
                  editType: "ticks+layoutstyle"
                },
                showgrid: C,
                gridcolor: _,
                gridwidth: S(),
                griddash: M,
                zeroline: {
                  valType: "boolean",
                  editType: "ticks"
                },
                zerolinecolor: {
                  valType: "color",
                  dflt: P.defaultLine,
                  editType: "ticks"
                },
                zerolinewidth: {
                  valType: "number",
                  dflt: 1,
                  editType: "ticks"
                },
                showdividers: {
                  valType: "boolean",
                  dflt: !0,
                  editType: "ticks"
                },
                dividercolor: {
                  valType: "color",
                  dflt: P.defaultLine,
                  editType: "ticks"
                },
                dividerwidth: {
                  valType: "number",
                  dflt: 1,
                  editType: "ticks"
                },
                // TODO dividerlen: that would override "to label base" length?
                // positioning attributes
                // anchor: not used directly, just put here for reference
                // values are any opposite-letter axis id
                anchor: {
                  valType: "enumerated",
                  values: ["free", u.idRegex.x.toString(), u.idRegex.y.toString()],
                  editType: "plot"
                },
                // side: not used directly, as values depend on direction
                // values are top, bottom for x axes, and left, right for y
                side: {
                  valType: "enumerated",
                  values: ["top", "bottom", "left", "right"],
                  editType: "plot"
                },
                // overlaying: not used directly, just put here for reference
                // values are false and any other same-letter axis id that's not
                // itself overlaying anything
                overlaying: {
                  valType: "enumerated",
                  values: ["free", u.idRegex.x.toString(), u.idRegex.y.toString()],
                  editType: "plot"
                },
                minor: {
                  tickmode: i,
                  nticks: l("minor"),
                  tick0: o,
                  dtick: y,
                  tickvals: g,
                  ticks: x,
                  ticklen: c("minor"),
                  tickwidth: v("minor"),
                  tickcolor: f,
                  gridcolor: _,
                  gridwidth: S("minor"),
                  griddash: M,
                  showgrid: C,
                  editType: "ticks"
                },
                layer: {
                  valType: "enumerated",
                  values: ["above traces", "below traces"],
                  dflt: "above traces",
                  editType: "plot"
                },
                domain: {
                  valType: "info_array",
                  items: [{
                    valType: "number",
                    min: 0,
                    max: 1,
                    editType: "plot"
                  }, {
                    valType: "number",
                    min: 0,
                    max: 1,
                    editType: "plot"
                  }],
                  dflt: [0, 1],
                  editType: "plot"
                },
                position: {
                  valType: "number",
                  min: 0,
                  max: 1,
                  dflt: 0,
                  editType: "plot"
                },
                autoshift: {
                  valType: "boolean",
                  dflt: !1,
                  editType: "plot"
                },
                shift: {
                  valType: "number",
                  editType: "plot"
                },
                categoryorder: {
                  valType: "enumerated",
                  values: ["trace", "category ascending", "category descending", "array", "total ascending", "total descending", "min ascending", "min descending", "max ascending", "max descending", "sum ascending", "sum descending", "mean ascending", "mean descending", "geometric mean ascending", "geometric mean descending", "median ascending", "median descending"],
                  dflt: "trace",
                  editType: "calc"
                },
                categoryarray: {
                  valType: "data_array",
                  editType: "calc"
                },
                uirevision: {
                  valType: "any",
                  editType: "none"
                },
                editType: "calc",
                _deprecated: {
                  autotick: {
                    valType: "boolean",
                    editType: "ticks"
                  },
                  title: {
                    valType: "string",
                    editType: "ticks"
                  },
                  titlefont: b({
                    editType: "ticks"
                  })
                }
              };
            }
          ),
          /***/
          74098: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(78766), n = e(36040).isUnifiedHover, s = e(45265), T = e(78032), A = e(6704), p = e(25829), u = e(4392), t = e(97655), r = e(84391), i = e(40957), a = e(5975), l = a.id2name, o = a.name2id, y = e(54826).AX_ID_PATTERN, g = e(33626), x = g.traceIs, c = g.getComponentMethod;
              function v(f, _, S) {
                Array.isArray(f[_]) ? f[_].push(S) : f[_] = [S];
              }
              Y.exports = function(_, S, M) {
                var C = S.autotypenumbers, m = {}, L = {}, d = {}, h = {}, E = {}, w = {}, z = {}, O = {}, B = {}, V = {}, U, H;
                for (U = 0; U < M.length; U++) {
                  var F = M[U];
                  if (!(!x(F, "cartesian") && !x(F, "gl2d"))) {
                    var G;
                    if (F.xaxis)
                      G = l(F.xaxis), v(m, G, F);
                    else if (F.xaxes)
                      for (H = 0; H < F.xaxes.length; H++)
                        v(m, l(F.xaxes[H]), F);
                    var q;
                    if (F.yaxis)
                      q = l(F.yaxis), v(m, q, F);
                    else if (F.yaxes)
                      for (H = 0; H < F.yaxes.length; H++)
                        v(m, l(F.yaxes[H]), F);
                    if (F.type === "funnel" ? F.orientation === "h" ? (G && (L[G] = !0), q && (z[q] = !0)) : q && (d[q] = !0) : F.type === "image" ? (q && (O[q] = !0), G && (O[G] = !0)) : (q && (E[q] = !0, w[q] = !0), (!x(F, "carpet") || F.type === "carpet" && !F._cheater) && G && (h[G] = !0)), F.type === "carpet" && F._cheater && G && (L[G] = !0), x(F, "2dMap") && (B[G] = !0, B[q] = !0), x(F, "oriented")) {
                      var rt = F.orientation === "h" ? q : G;
                      V[rt] = !0;
                    }
                  }
                }
                var st = S._subplots, vt = st.xaxis, ht = st.yaxis, et = b.simpleMap(vt, l), Q = b.simpleMap(ht, l), j = et.concat(Q), at = P.background;
                vt.length && ht.length && (at = b.coerce(_, S, A, "plot_bgcolor"));
                var ut = P.combine(at, S.paper_bgcolor), nt, X, ct, lt, pt;
                function wt() {
                  var Mt = m[nt] || [];
                  pt._traceIndices = Mt.map(function(St) {
                    return St._expandedIndex;
                  }), pt._annIndices = [], pt._shapeIndices = [], pt._selectionIndices = [], pt._imgIndices = [], pt._subplotsWith = [], pt._counterAxes = [], pt._name = pt._attr = nt, pt._id = X;
                }
                function Et(Mt, St) {
                  return b.coerce(lt, pt, p, Mt, St);
                }
                function Ct(Mt, St) {
                  return b.coerce2(lt, pt, p, Mt, St);
                }
                function Gt(Mt) {
                  return Mt === "x" ? ht : vt;
                }
                function Jt(Mt, St) {
                  for (var Lt = Mt === "x" ? et : Q, te = [], fe = 0; fe < Lt.length; fe++) {
                    var Me = Lt[fe];
                    Me !== St && !(_[Me] || {}).overlaying && te.push(o(Me));
                  }
                  return te;
                }
                var Qt = {
                  x: Gt("x"),
                  y: Gt("y")
                }, Vt = Qt.x.concat(Qt.y), zt = {}, Rt = [];
                function Wt() {
                  var Mt = lt.matches;
                  y.test(Mt) && Vt.indexOf(Mt) === -1 && (zt[Mt] = lt.type, Rt = Object.keys(zt));
                }
                var kt = s(_, S), re = n(kt);
                for (U = 0; U < j.length; U++) {
                  nt = j[U], X = o(nt), ct = nt.charAt(0), b.isPlainObject(_[nt]) || (_[nt] = {}), lt = _[nt], pt = T.newContainer(S, nt, ct + "axis"), wt();
                  var ge = ct === "x" && !h[nt] && L[nt] || ct === "y" && !E[nt] && d[nt], _e = ct === "y" && (!w[nt] && z[nt] || O[nt]), ce = {
                    hasMinor: !0,
                    letter: ct,
                    font: S.font,
                    outerTicks: B[nt],
                    showGrid: !V[nt],
                    data: m[nt] || [],
                    bgColor: ut,
                    calendar: S.calendar,
                    automargin: !0,
                    visibleDflt: ge,
                    reverseDflt: _e,
                    autotypenumbersDflt: C,
                    splomStash: ((S._splomAxes || {})[ct] || {})[X],
                    noAutotickangles: ct === "y"
                  };
                  Et("uirevision", S.uirevision), u(lt, pt, Et, ce), t(lt, pt, Et, ce, S);
                  var ae = re && ct === kt.charAt(0), Se = Ct("spikecolor", re ? pt.color : void 0), ze = Ct("spikethickness", re ? 1.5 : void 0), Ne = Ct("spikedash", re ? "dot" : void 0), Ve = Ct("spikemode", re ? "across" : void 0), Oe = Ct("spikesnap"), ur = Et("showspikes", !!ae || !!Se || !!ze || !!Ne || !!Ve || !!Oe);
                  ur || (delete pt.spikecolor, delete pt.spikethickness, delete pt.spikedash, delete pt.spikemode, delete pt.spikesnap);
                  var ie = l(lt.overlaying), $t = [0, 1];
                  if (S[ie] !== void 0) {
                    var jt = l(S[ie].anchor);
                    S[jt] !== void 0 && ($t = S[jt].domain);
                  }
                  i(lt, pt, Et, {
                    letter: ct,
                    counterAxes: Qt[ct],
                    overlayableAxes: Jt(ct, nt),
                    grid: S.grid,
                    overlayingDomain: $t
                  }), Et("title.standoff"), Wt(), pt._input = lt;
                }
                for (U = 0; U < Rt.length; ) {
                  X = Rt[U++], nt = l(X), ct = nt.charAt(0), b.isPlainObject(_[nt]) || (_[nt] = {}), lt = _[nt], pt = T.newContainer(S, nt, ct + "axis"), wt();
                  var ee = {
                    letter: ct,
                    font: S.font,
                    outerTicks: B[nt],
                    showGrid: !V[nt],
                    data: [],
                    bgColor: ut,
                    calendar: S.calendar,
                    automargin: !0,
                    visibleDflt: !1,
                    reverseDflt: !1,
                    autotypenumbersDflt: C,
                    splomStash: ((S._splomAxes || {})[ct] || {})[X]
                  };
                  Et("uirevision", S.uirevision), pt.type = zt[X] || "linear", t(lt, pt, Et, ee, S), i(lt, pt, Et, {
                    letter: ct,
                    counterAxes: Qt[ct],
                    overlayableAxes: Jt(ct, nt),
                    grid: S.grid
                  }), Et("fixedrange"), Wt(), pt._input = lt;
                }
                var Bt = c("rangeslider", "handleDefaults"), Xt = c("rangeselector", "handleDefaults");
                for (U = 0; U < et.length; U++)
                  nt = et[U], lt = _[nt], pt = S[nt], Bt(_, S, nt), pt.type === "date" && Xt(lt, pt, S, Q, pt.calendar), Et("fixedrange");
                for (U = 0; U < Q.length; U++) {
                  nt = Q[U], lt = _[nt], pt = S[nt];
                  var Zt = S[l(pt.anchor)], ye = c("rangeslider", "isVisible")(Zt);
                  Et("fixedrange", ye);
                }
                r.handleDefaults(_, S, {
                  axIds: Vt.concat(Rt).sort(a.idSort),
                  axHasImage: O
                });
              };
            }
          ),
          /***/
          97405: (
            /***/
            function(Y, K, e) {
              var b = e(65657).mix, P = e(10229), n = e(34809);
              Y.exports = function(T, A, p, u) {
                u = u || {};
                var t = u.dfltColor;
                function r(d, h) {
                  return n.coerce2(T, A, u.attributes, d, h);
                }
                var i = r("linecolor", t), a = r("linewidth"), l = p("showline", u.showLine || !!i || !!a);
                l || (delete A.linecolor, delete A.linewidth);
                var o = b(t, u.bgColor, u.blend || P.lightFraction).toRgbString(), y = r("gridcolor", o), g = r("gridwidth"), x = r("griddash"), c = p("showgrid", u.showGrid || !!y || !!g || !!x);
                if (c || (delete A.gridcolor, delete A.gridwidth, delete A.griddash), u.hasMinor) {
                  var v = b(A.gridcolor, u.bgColor, 67).toRgbString(), f = r("minor.gridcolor", v), _ = r("minor.gridwidth", A.gridwidth || 1), S = r("minor.griddash", A.griddash || "solid"), M = p("minor.showgrid", !!f || !!_ || !!S);
                  M || (delete A.minor.gridcolor, delete A.minor.gridwidth, delete A.minor.griddash);
                }
                if (!u.noZeroLine) {
                  var C = r("zerolinecolor", t), m = r("zerolinewidth"), L = p("zeroline", u.showGrid || !!C || !!m);
                  L || (delete A.zerolinecolor, delete A.zerolinewidth);
                }
              };
            }
          ),
          /***/
          40957: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(34809);
              Y.exports = function(s, T, A, p) {
                var u = p.counterAxes || [], t = p.overlayableAxes || [], r = p.letter, i = p.grid, a = p.overlayingDomain, l, o, y, g, x, c;
                i && (o = i._domains[r][i._axisMap[T._id]], l = i._anchors[T._id], o && (y = i[r + "side"].split(" ")[0], g = i.domain[r][y === "right" || y === "top" ? 1 : 0])), o = o || [0, 1], l = l || (b(s.position) ? "free" : u[0] || "free"), y = y || (r === "x" ? "bottom" : "left"), g = g || 0, x = 0, c = !1;
                var v = P.coerce(s, T, {
                  anchor: {
                    valType: "enumerated",
                    values: ["free"].concat(u),
                    dflt: l
                  }
                }, "anchor"), f = P.coerce(s, T, {
                  side: {
                    valType: "enumerated",
                    values: r === "x" ? ["bottom", "top"] : ["left", "right"],
                    dflt: y
                  }
                }, "side");
                if (v === "free") {
                  if (r === "y") {
                    var _ = A("autoshift");
                    _ && (g = f === "left" ? a[0] : a[1], c = T.automargin ? T.automargin : !0, x = f === "left" ? -3 : 3), A("shift", x);
                  }
                  A("position", g);
                }
                A("automargin", c);
                var S = !1;
                if (t.length && (S = P.coerce(s, T, {
                  overlaying: {
                    valType: "enumerated",
                    values: [!1].concat(t),
                    dflt: !1
                  }
                }, "overlaying")), !S) {
                  var M = A("domain", o);
                  M[0] > M[1] - 244140625e-12 && (T.domain = o), P.noneOrAll(s.domain, T.domain, o), T.tickmode === "sync" && (T.tickmode = "auto");
                }
                return A("layer"), T;
              };
            }
          ),
          /***/
          54616: (
            /***/
            function(Y, K, e) {
              var b = e(87703);
              Y.exports = function(n, s, T, A, p) {
                p || (p = {});
                var u = p.tickSuffixDflt, t = b(n), r = T("tickprefix");
                r && T("showtickprefix", t);
                var i = T("ticksuffix", u);
                i && T("showticksuffix", t);
              };
            }
          ),
          /***/
          90259: (
            /***/
            function(Y, K, e) {
              var b = e(75511);
              Y.exports = function(n, s, T, A) {
                var p = s._template || {}, u = s.type || p.type || "-";
                T("minallowed"), T("maxallowed");
                var t = T("range");
                if (!t) {
                  var r;
                  !A.noInsiderange && u !== "log" && (r = T("insiderange"), r && (r[0] === null || r[1] === null) && (s.insiderange = !1, r = void 0), r && (t = T("range", r)));
                }
                var i = s.getAutorangeDflt(t, A), a = T("autorange", i), l;
                t && (t[0] === null && t[1] === null || (t[0] === null || t[1] === null) && (a === "reversed" || a === !0) || t[0] !== null && (a === "min" || a === "max reversed") || t[1] !== null && (a === "max" || a === "min reversed")) && (t = void 0, delete s.range, s.autorange = !0, l = !0), l || (i = s.getAutorangeDflt(t, A), a = T("autorange", i)), a && (b(T, a, t), (u === "linear" || u === "-") && T("rangemode")), s.cleanRange();
              };
            }
          ),
          /***/
          67611: (
            /***/
            function(Y, K, e) {
              var b = e(4530).FROM_BL;
              Y.exports = function(n, s, T) {
                T === void 0 && (T = b[n.constraintoward || "center"]);
                var A = [n.r2l(n.range[0]), n.r2l(n.range[1])], p = A[0] + (A[1] - A[0]) * T;
                n.range = n._input.range = [n.l2r(p + (A[0] - p) * s), n.l2r(p + (A[1] - p) * s)], n.setScale();
              };
            }
          ),
          /***/
          19091: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(42696).aL, n = e(34809), s = n.numberFormat, T = e(10721), A = n.cleanNumber, p = n.ms2DateTime, u = n.dateTime2ms, t = n.ensureNumber, r = n.isArrayOrTypedArray, i = e(63821), a = i.FP_SAFE, l = i.BADNUM, o = i.LOG_CLIP, y = i.ONEWEEK, g = i.ONEDAY, x = i.ONEHOUR, c = i.ONEMIN, v = i.ONESEC, f = e(5975), _ = e(54826), S = _.HOUR_PATTERN, M = _.WEEKDAY_PATTERN;
              function C(L) {
                return Math.pow(10, L);
              }
              function m(L) {
                return L != null;
              }
              Y.exports = function(d, h) {
                h = h || {};
                var E = d._id || "x", w = E.charAt(0);
                function z(j, at) {
                  if (j > 0) return Math.log(j) / Math.LN10;
                  if (j <= 0 && at && d.range && d.range.length === 2) {
                    var ut = d.range[0], nt = d.range[1];
                    return 0.5 * (ut + nt - 2 * o * Math.abs(ut - nt));
                  } else return l;
                }
                function O(j, at, ut, nt) {
                  if ((nt || {}).msUTC && T(j))
                    return +j;
                  var X = u(j, ut || d.calendar);
                  if (X === l)
                    if (T(j)) {
                      j = +j;
                      var ct = Math.floor(n.mod(j + 0.05, 1) * 10), lt = Math.round(j - ct / 10);
                      X = u(new Date(lt)) + ct / 10;
                    } else return l;
                  return X;
                }
                function B(j, at, ut) {
                  return p(j, at, ut || d.calendar);
                }
                function V(j) {
                  return d._categories[Math.round(j)];
                }
                function U(j) {
                  if (m(j)) {
                    if (d._categoriesMap === void 0 && (d._categoriesMap = {}), d._categoriesMap[j] !== void 0)
                      return d._categoriesMap[j];
                    d._categories.push(typeof j == "number" ? String(j) : j);
                    var at = d._categories.length - 1;
                    return d._categoriesMap[j] = at, at;
                  }
                  return l;
                }
                function H(j, at) {
                  for (var ut = new Array(at), nt = 0; nt < at; nt++) {
                    var X = (j[0] || [])[nt], ct = (j[1] || [])[nt];
                    ut[nt] = F([X, ct]);
                  }
                  return ut;
                }
                function F(j) {
                  if (d._categoriesMap)
                    return d._categoriesMap[j];
                }
                function G(j) {
                  var at = F(j);
                  if (at !== void 0) return at;
                  if (T(j)) return +j;
                }
                function q(j) {
                  return T(j) ? +j : F(j);
                }
                function rt(j, at, ut) {
                  return b.round(ut + at * j, 2);
                }
                function st(j, at, ut) {
                  return (j - ut) / at;
                }
                var vt = function(at) {
                  return T(at) ? rt(at, d._m, d._b) : l;
                }, ht = function(j) {
                  return st(j, d._m, d._b);
                };
                if (d.rangebreaks) {
                  var et = w === "y";
                  vt = function(j) {
                    if (!T(j)) return l;
                    var at = d._rangebreaks.length;
                    if (!at) return rt(j, d._m, d._b);
                    var ut = et;
                    d.range[0] > d.range[1] && (ut = !ut);
                    for (var nt = ut ? -1 : 1, X = nt * j, ct = 0, lt = 0; lt < at; lt++) {
                      var pt = nt * d._rangebreaks[lt].min, wt = nt * d._rangebreaks[lt].max;
                      if (X < pt) break;
                      if (X > wt) ct = lt + 1;
                      else {
                        ct = X < (pt + wt) / 2 ? lt : lt + 1;
                        break;
                      }
                    }
                    var Et = d._B[ct] || 0;
                    return isFinite(Et) ? rt(j, d._m2, Et) : 0;
                  }, ht = function(j) {
                    var at = d._rangebreaks.length;
                    if (!at) return st(j, d._m, d._b);
                    for (var ut = 0, nt = 0; nt < at && !(j < d._rangebreaks[nt].pmin); nt++)
                      j > d._rangebreaks[nt].pmax && (ut = nt + 1);
                    return st(j, d._m2, d._B[ut]);
                  };
                }
                d.c2l = d.type === "log" ? z : t, d.l2c = d.type === "log" ? C : t, d.l2p = vt, d.p2l = ht, d.c2p = d.type === "log" ? function(j, at) {
                  return vt(z(j, at));
                } : vt, d.p2c = d.type === "log" ? function(j) {
                  return C(ht(j));
                } : ht, ["linear", "-"].indexOf(d.type) !== -1 ? (d.d2r = d.r2d = d.d2c = d.r2c = d.d2l = d.r2l = A, d.c2d = d.c2r = d.l2d = d.l2r = t, d.d2p = d.r2p = function(j) {
                  return d.l2p(A(j));
                }, d.p2d = d.p2r = ht, d.cleanPos = t) : d.type === "log" ? (d.d2r = d.d2l = function(j, at) {
                  return z(A(j), at);
                }, d.r2d = d.r2c = function(j) {
                  return C(A(j));
                }, d.d2c = d.r2l = A, d.c2d = d.l2r = t, d.c2r = z, d.l2d = C, d.d2p = function(j, at) {
                  return d.l2p(d.d2r(j, at));
                }, d.p2d = function(j) {
                  return C(ht(j));
                }, d.r2p = function(j) {
                  return d.l2p(A(j));
                }, d.p2r = ht, d.cleanPos = t) : d.type === "date" ? (d.d2r = d.r2d = n.identity, d.d2c = d.r2c = d.d2l = d.r2l = O, d.c2d = d.c2r = d.l2d = d.l2r = B, d.d2p = d.r2p = function(j, at, ut) {
                  return d.l2p(O(j, 0, ut));
                }, d.p2d = d.p2r = function(j, at, ut) {
                  return B(ht(j), at, ut);
                }, d.cleanPos = function(j) {
                  return n.cleanDate(j, l, d.calendar);
                }) : d.type === "category" ? (d.d2c = d.d2l = U, d.r2d = d.c2d = d.l2d = V, d.d2r = d.d2l_noadd = G, d.r2c = function(j) {
                  var at = q(j);
                  return at !== void 0 ? at : d.fraction2r(0.5);
                }, d.l2r = d.c2r = t, d.r2l = q, d.d2p = function(j) {
                  return d.l2p(d.r2c(j));
                }, d.p2d = function(j) {
                  return V(ht(j));
                }, d.r2p = d.d2p, d.p2r = ht, d.cleanPos = function(j) {
                  return typeof j == "string" && j !== "" ? j : t(j);
                }) : d.type === "multicategory" && (d.r2d = d.c2d = d.l2d = V, d.d2r = d.d2l_noadd = G, d.r2c = function(j) {
                  var at = G(j);
                  return at !== void 0 ? at : d.fraction2r(0.5);
                }, d.r2c_just_indices = F, d.l2r = d.c2r = t, d.r2l = G, d.d2p = function(j) {
                  return d.l2p(d.r2c(j));
                }, d.p2d = function(j) {
                  return V(ht(j));
                }, d.r2p = d.d2p, d.p2r = ht, d.cleanPos = function(j) {
                  return Array.isArray(j) || typeof j == "string" && j !== "" ? j : t(j);
                }, d.setupMultiCategory = function(j) {
                  var at = d._traceIndices, ut, nt, X = d._matchGroup;
                  if (X && d._categories.length === 0) {
                    for (var ct in X)
                      if (ct !== E) {
                        var lt = h[f.id2name(ct)];
                        at = at.concat(lt._traceIndices);
                      }
                  }
                  var pt = [[0, {}], [0, {}]], wt = [];
                  for (ut = 0; ut < at.length; ut++) {
                    var Et = j[at[ut]];
                    if (w in Et) {
                      var Ct = Et[w], Gt = Et._length || n.minRowLength(Ct);
                      if (r(Ct[0]) && r(Ct[1]))
                        for (nt = 0; nt < Gt; nt++) {
                          var Jt = Ct[0][nt], Qt = Ct[1][nt];
                          m(Jt) && m(Qt) && (wt.push([Jt, Qt]), Jt in pt[0][1] || (pt[0][1][Jt] = pt[0][0]++), Qt in pt[1][1] || (pt[1][1][Qt] = pt[1][0]++));
                        }
                    }
                  }
                  for (wt.sort(function(Vt, zt) {
                    var Rt = pt[0][1], Wt = Rt[Vt[0]] - Rt[zt[0]];
                    if (Wt) return Wt;
                    var kt = pt[1][1];
                    return kt[Vt[1]] - kt[zt[1]];
                  }), ut = 0; ut < wt.length; ut++)
                    U(wt[ut]);
                }), d.fraction2r = function(j) {
                  var at = d.r2l(d.range[0]), ut = d.r2l(d.range[1]);
                  return d.l2r(at + j * (ut - at));
                }, d.r2fraction = function(j) {
                  var at = d.r2l(d.range[0]), ut = d.r2l(d.range[1]);
                  return (d.r2l(j) - at) / (ut - at);
                }, d.limitRange = function(j) {
                  var at = d.minallowed, ut = d.maxallowed;
                  if (!(at === void 0 && ut === void 0)) {
                    j || (j = "range");
                    var nt = n.nestedProperty(d, j).get(), X = n.simpleMap(nt, d.r2l), ct = X[1] < X[0];
                    ct && X.reverse();
                    var lt = n.simpleMap([at, ut], d.r2l);
                    if (at !== void 0 && X[0] < lt[0] && (nt[ct ? 1 : 0] = at), ut !== void 0 && X[1] > lt[1] && (nt[ct ? 0 : 1] = ut), nt[0] === nt[1]) {
                      var pt = d.l2r(at), wt = d.l2r(ut);
                      if (at !== void 0) {
                        var Et = pt + 1;
                        ut !== void 0 && (Et = Math.min(Et, wt)), nt[ct ? 1 : 0] = Et;
                      }
                      if (ut !== void 0) {
                        var Ct = wt + 1;
                        at !== void 0 && (Ct = Math.max(Ct, pt)), nt[ct ? 0 : 1] = Ct;
                      }
                    }
                  }
                }, d.cleanRange = function(j, at) {
                  d._cleanRange(j, at), d.limitRange(j);
                }, d._cleanRange = function(j, at) {
                  at || (at = {}), j || (j = "range");
                  var ut = n.nestedProperty(d, j).get(), nt, X;
                  if (d.type === "date" ? X = n.dfltRange(d.calendar) : w === "y" ? X = _.DFLTRANGEY : d._name === "realaxis" ? X = [0, 1] : X = at.dfltRange || _.DFLTRANGEX, X = X.slice(), (d.rangemode === "tozero" || d.rangemode === "nonnegative") && (X[0] = 0), !ut || ut.length !== 2) {
                    n.nestedProperty(d, j).set(X);
                    return;
                  }
                  var ct = ut[0] === null, lt = ut[1] === null;
                  for (d.type === "date" && !d.autorange && (ut[0] = n.cleanDate(ut[0], l, d.calendar), ut[1] = n.cleanDate(ut[1], l, d.calendar)), nt = 0; nt < 2; nt++)
                    if (d.type === "date") {
                      if (!n.isDateTime(ut[nt], d.calendar)) {
                        d[j] = X;
                        break;
                      }
                      if (d.r2l(ut[0]) === d.r2l(ut[1])) {
                        var pt = n.constrain(d.r2l(ut[0]), n.MIN_MS + 1e3, n.MAX_MS - 1e3);
                        ut[0] = d.l2r(pt - 1e3), ut[1] = d.l2r(pt + 1e3);
                        break;
                      }
                    } else {
                      if (!T(ut[nt]))
                        if (!(ct || lt) && T(ut[1 - nt]))
                          ut[nt] = ut[1 - nt] * (nt ? 10 : 0.1);
                        else {
                          d[j] = X;
                          break;
                        }
                      if (ut[nt] < -a ? ut[nt] = -a : ut[nt] > a && (ut[nt] = a), ut[0] === ut[1]) {
                        var wt = Math.max(1, Math.abs(ut[0] * 1e-6));
                        ut[0] -= wt, ut[1] += wt;
                      }
                    }
                }, d.setScale = function(j) {
                  var at = h._size;
                  if (d.overlaying) {
                    var ut = f.getFromId({
                      _fullLayout: h
                    }, d.overlaying);
                    d.domain = ut.domain;
                  }
                  var nt = j && d._r ? "_r" : "range", X = d.calendar;
                  d.cleanRange(nt);
                  var ct = d.r2l(d[nt][0], X), lt = d.r2l(d[nt][1], X), pt = w === "y";
                  if (pt ? (d._offset = at.t + (1 - d.domain[1]) * at.h, d._length = at.h * (d.domain[1] - d.domain[0]), d._m = d._length / (ct - lt), d._b = -d._m * lt) : (d._offset = at.l + d.domain[0] * at.w, d._length = at.w * (d.domain[1] - d.domain[0]), d._m = d._length / (lt - ct), d._b = -d._m * ct), d._rangebreaks = [], d._lBreaks = 0, d._m2 = 0, d._B = [], d.rangebreaks) {
                    var wt, Et;
                    if (d._rangebreaks = d.locateBreaks(Math.min(ct, lt), Math.max(ct, lt)), d._rangebreaks.length) {
                      for (wt = 0; wt < d._rangebreaks.length; wt++)
                        Et = d._rangebreaks[wt], d._lBreaks += Math.abs(Et.max - Et.min);
                      var Ct = pt;
                      ct > lt && (Ct = !Ct), Ct && d._rangebreaks.reverse();
                      var Gt = Ct ? -1 : 1;
                      for (d._m2 = Gt * d._length / (Math.abs(lt - ct) - d._lBreaks), d._B.push(-d._m2 * (pt ? lt : ct)), wt = 0; wt < d._rangebreaks.length; wt++)
                        Et = d._rangebreaks[wt], d._B.push(d._B[d._B.length - 1] - Gt * d._m2 * (Et.max - Et.min));
                      for (wt = 0; wt < d._rangebreaks.length; wt++)
                        Et = d._rangebreaks[wt], Et.pmin = vt(Et.min), Et.pmax = vt(Et.max);
                    }
                  }
                  if (!isFinite(d._m) || !isFinite(d._b) || d._length < 0)
                    throw h._replotting = !1, new Error("Something went wrong with axis scaling");
                }, d.maskBreaks = function(j) {
                  var at = d.rangebreaks || [], ut, nt, X, ct, lt;
                  at._cachedPatterns || (at._cachedPatterns = at.map(function(Rt) {
                    return Rt.enabled && Rt.bounds ? n.simpleMap(
                      Rt.bounds,
                      Rt.pattern ? A : d.d2c
                      // case of pattern: ''
                    ) : null;
                  })), at._cachedValues || (at._cachedValues = at.map(function(Rt) {
                    return Rt.enabled && Rt.values ? n.simpleMap(Rt.values, d.d2c).sort(n.sorterAsc) : null;
                  }));
                  for (var pt = 0; pt < at.length; pt++) {
                    var wt = at[pt];
                    if (wt.enabled) {
                      if (wt.bounds) {
                        var Et = wt.pattern;
                        switch (ut = at._cachedPatterns[pt], nt = ut[0], X = ut[1], Et) {
                          case M:
                            lt = new Date(j), ct = lt.getUTCDay(), nt > X && (X += 7, ct < nt && (ct += 7));
                            break;
                          case S:
                            lt = new Date(j);
                            var Ct = lt.getUTCHours(), Gt = lt.getUTCMinutes(), Jt = lt.getUTCSeconds(), Qt = lt.getUTCMilliseconds();
                            ct = Ct + (Gt / 60 + Jt / 3600 + Qt / 36e5), nt > X && (X += 24, ct < nt && (ct += 24));
                            break;
                          case "":
                            ct = j;
                            break;
                        }
                        if (ct >= nt && ct < X) return l;
                      } else
                        for (var Vt = at._cachedValues[pt], zt = 0; zt < Vt.length; zt++)
                          if (nt = Vt[zt], X = nt + wt.dvalue, j >= nt && j < X) return l;
                    }
                  }
                  return j;
                }, d.locateBreaks = function(j, at) {
                  var ut, nt, X, ct, lt = [];
                  if (!d.rangebreaks) return lt;
                  var pt = d.rangebreaks.slice().sort(function(kt, re) {
                    return kt.pattern === M && re.pattern === S ? -1 : re.pattern === M && kt.pattern === S ? 1 : 0;
                  }), wt = function(kt, re) {
                    if (kt = n.constrain(kt, j, at), re = n.constrain(re, j, at), kt !== re) {
                      for (var ge = !0, _e = 0; _e < lt.length; _e++) {
                        var ce = lt[_e];
                        kt < ce.max && re >= ce.min && (kt < ce.min && (ce.min = kt), re > ce.max && (ce.max = re), ge = !1);
                      }
                      ge && lt.push({
                        min: kt,
                        max: re
                      });
                    }
                  };
                  for (ut = 0; ut < pt.length; ut++) {
                    var Et = pt[ut];
                    if (Et.enabled)
                      if (Et.bounds) {
                        var Ct = j, Gt = at;
                        Et.pattern && (Ct = Math.floor(Ct)), nt = n.simpleMap(Et.bounds, Et.pattern ? A : d.r2l), X = nt[0], ct = nt[1];
                        var Jt = new Date(Ct), Qt, Vt;
                        switch (Et.pattern) {
                          case M:
                            Vt = y, Qt = ((ct < X ? 7 : 0) + (ct - X)) * g, Ct += X * g - (Jt.getUTCDay() * g + Jt.getUTCHours() * x + Jt.getUTCMinutes() * c + Jt.getUTCSeconds() * v + Jt.getUTCMilliseconds());
                            break;
                          case S:
                            Vt = g, Qt = ((ct < X ? 24 : 0) + (ct - X)) * x, Ct += X * x - (Jt.getUTCHours() * x + Jt.getUTCMinutes() * c + Jt.getUTCSeconds() * v + Jt.getUTCMilliseconds());
                            break;
                          default:
                            Ct = Math.min(nt[0], nt[1]), Gt = Math.max(nt[0], nt[1]), Vt = Gt - Ct, Qt = Vt;
                        }
                        for (var zt = Ct; zt < Gt; zt += Vt)
                          wt(zt, zt + Qt);
                      } else
                        for (var Rt = n.simpleMap(Et.values, d.d2c), Wt = 0; Wt < Rt.length; Wt++)
                          X = Rt[Wt], ct = X + Et.dvalue, wt(X, ct);
                  }
                  return lt.sort(function(kt, re) {
                    return kt.min - re.min;
                  }), lt;
                }, d.makeCalcdata = function(j, at, ut) {
                  var nt, X, ct, lt, pt = d.type, wt = pt === "date" && j[at + "calendar"];
                  if (at in j) {
                    if (nt = j[at], lt = j._length || n.minRowLength(nt), n.isTypedArray(nt) && (pt === "linear" || pt === "log")) {
                      if (lt === nt.length)
                        return nt;
                      if (nt.subarray)
                        return nt.subarray(0, lt);
                    }
                    if (pt === "multicategory")
                      return H(nt, lt);
                    for (X = new Array(lt), ct = 0; ct < lt; ct++)
                      X[ct] = d.d2c(nt[ct], 0, wt, ut);
                  } else {
                    var Et = at + "0" in j ? d.d2c(j[at + "0"], 0, wt) : 0, Ct = j["d" + at] ? Number(j["d" + at]) : 1;
                    for (nt = j[{
                      x: "y",
                      y: "x"
                    }[at]], lt = j._length || nt.length, X = new Array(lt), ct = 0; ct < lt; ct++)
                      X[ct] = Et + ct * Ct;
                  }
                  if (d.rangebreaks)
                    for (ct = 0; ct < lt; ct++)
                      X[ct] = d.maskBreaks(X[ct]);
                  return X;
                }, d.isValidRange = function(j, at) {
                  return Array.isArray(j) && j.length === 2 && (at && j[0] === null || T(d.r2l(j[0]))) && (at && j[1] === null || T(d.r2l(j[1])));
                }, d.getAutorangeDflt = function(j, at) {
                  var ut = !d.isValidRange(j, "nullOk");
                  return ut && at && at.reverseDflt ? ut = "reversed" : j && (j[0] === null && j[1] === null ? ut = !0 : j[0] === null && j[1] !== null ? ut = "min" : j[0] !== null && j[1] === null && (ut = "max")), ut;
                }, d.isReversed = function() {
                  var j = d.autorange;
                  return j === "reversed" || j === "min reversed" || j === "max reversed";
                }, d.isPtWithinRange = function(j, at) {
                  var ut = d.c2l(j[w], null, at), nt = d.r2l(d.range[0]), X = d.r2l(d.range[1]);
                  return nt < X ? nt <= ut && ut <= X : X <= ut && ut <= nt;
                }, d._emptyCategories = function() {
                  d._categories = [], d._categoriesMap = {};
                }, d.clearCalc = function() {
                  var j = d._matchGroup;
                  if (j) {
                    var at = null, ut = null;
                    for (var nt in j) {
                      var X = h[f.id2name(nt)];
                      if (X._categories) {
                        at = X._categories, ut = X._categoriesMap;
                        break;
                      }
                    }
                    at && ut ? (d._categories = at, d._categoriesMap = ut) : d._emptyCategories();
                  } else
                    d._emptyCategories();
                  if (d._initialCategories)
                    for (var ct = 0; ct < d._initialCategories.length; ct++)
                      U(d._initialCategories[ct]);
                }, d.sortByInitialCategories = function() {
                  var j = [];
                  if (d._emptyCategories(), d._initialCategories)
                    for (var at = 0; at < d._initialCategories.length; at++)
                      U(d._initialCategories[at]);
                  j = j.concat(d._traceIndices);
                  var ut = d._matchGroup;
                  for (var nt in ut)
                    if (E !== nt) {
                      var X = h[f.id2name(nt)];
                      X._categories = d._categories, X._categoriesMap = d._categoriesMap, j = j.concat(X._traceIndices);
                    }
                  return j;
                };
                var Q = h._d3locale;
                d.type === "date" && (d._dateFormat = Q ? Q.timeFormat : P, d._extraFormat = h._extraFormat), d._separators = h.separators, d._numFormat = Q ? Q.numberFormat : s, delete d._minDtick, delete d._forceTick0;
              };
            }
          ),
          /***/
          87703: (
            /***/
            function(Y) {
              Y.exports = function(e) {
                var b = ["showexponent", "showtickprefix", "showticksuffix"], P = b.filter(function(s) {
                  return e[s] !== void 0;
                }), n = function(s) {
                  return e[s] === e[P[0]];
                };
                if (P.every(n) || P.length === 1)
                  return e[P[0]];
              };
            }
          ),
          /***/
          12036: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(78766).contrast, n = e(25829), s = e(87703), T = e(59008);
              Y.exports = function(u, t, r, i, a) {
                a || (a = {});
                var l = r("labelalias");
                b.isPlainObject(l) || delete t.labelalias;
                var o = s(u), y = r("showticklabels");
                if (y) {
                  a.noTicklabelshift || r("ticklabelshift"), a.noTicklabelstandoff || r("ticklabelstandoff");
                  var g = a.font || {}, x = t.color, c = t.ticklabelposition || "", v = c.indexOf("inside") !== -1 ? P(a.bgColor) : (
                    // as with titlefont.color, inherit axis.color only if one was
                    // explicitly provided
                    x && x !== n.color.dflt ? x : g.color
                  );
                  if (b.coerceFont(r, "tickfont", g, {
                    overrideDflt: {
                      color: v
                    }
                  }), !a.noTicklabelstep && i !== "multicategory" && i !== "log" && r("ticklabelstep"), !a.noAng) {
                    var f = r("tickangle");
                    !a.noAutotickangles && f === "auto" && r("autotickangles");
                  }
                  if (i !== "category") {
                    var _ = r("tickformat");
                    T(u, t, {
                      name: "tickformatstops",
                      inclusionAttr: "enabled",
                      handleItemDefaults: A
                    }), t.tickformatstops.length || delete t.tickformatstops, !a.noExp && !_ && i !== "date" && (r("showexponent", o), r("exponentformat"), r("minexponent"), r("separatethousands"));
                  }
                }
              };
              function A(p, u) {
                function t(i, a) {
                  return b.coerce(p, u, n.tickformatstops, i, a);
                }
                var r = t("enabled");
                r && (t("dtickrange"), t("value"));
              }
            }
          ),
          /***/
          87433: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(25829);
              Y.exports = function(s, T, A, p) {
                var u = p.isMinor, t = u ? s.minor || {} : s, r = u ? T.minor : T, i = u ? P.minor : P, a = u ? "minor." : "", l = b.coerce2(t, r, i, "ticklen", u ? (T.ticklen || 5) * 0.6 : void 0), o = b.coerce2(t, r, i, "tickwidth", u ? T.tickwidth || 1 : void 0), y = b.coerce2(t, r, i, "tickcolor", (u ? T.tickcolor : void 0) || r.color), g = A(a + "ticks", !u && p.outerTicks || l || o || y ? "outside" : "");
                g || (delete r.ticklen, delete r.tickwidth, delete r.tickcolor);
              };
            }
          ),
          /***/
          22777: (
            /***/
            function(Y, K, e) {
              var b = e(68599), P = e(34809).isArrayOrTypedArray, n = e(87800).isTypedArraySpec, s = e(87800).decodeTypedArraySpec;
              Y.exports = function(A, p, u, t, r) {
                r || (r = {});
                var i = r.isMinor, a = i ? A.minor || {} : A, l = i ? p.minor : p, o = i ? "minor." : "";
                function y(M) {
                  var C = a[M];
                  return n(C) && (C = s(C)), C !== void 0 ? C : (l._template || {})[M];
                }
                var g = y("tick0"), x = y("dtick"), c = y("tickvals"), v = P(c) ? "array" : x ? "linear" : "auto", f = u(o + "tickmode", v);
                if (f === "auto" || f === "sync")
                  u(o + "nticks");
                else if (f === "linear") {
                  var _ = l.dtick = b.dtick(x, t);
                  l.tick0 = b.tick0(g, t, p.calendar, _);
                } else if (t !== "multicategory") {
                  var S = u(o + "tickvals");
                  S === void 0 ? l.tickmode = "auto" : i || u("ticktext");
                }
              };
            }
          ),
          /***/
          84982: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(33626), n = e(34809), s = e(62203), T = e(29714);
              Y.exports = function(p, u, t, r) {
                var i = p._fullLayout;
                if (u.length === 0) {
                  T.redrawComponents(p);
                  return;
                }
                function a(S) {
                  var M = S.xaxis, C = S.yaxis;
                  i._defs.select("#" + S.clipId + "> rect").call(s.setTranslate, 0, 0).call(s.setScale, 1, 1), S.plot.call(s.setTranslate, M._offset, C._offset).call(s.setScale, 1, 1);
                  var m = S.plot.selectAll(".scatterlayer .trace");
                  m.selectAll(".point").call(s.setPointGroupScale, 1, 1), m.selectAll(".textpoint").call(s.setTextPointsScale, 1, 1), m.call(s.hideOutsideRangePoints, S);
                }
                function l(S, M) {
                  var C = S.plotinfo, m = C.xaxis, L = C.yaxis, d = m._length, h = L._length, E = !!S.xr1, w = !!S.yr1, z = [];
                  if (E) {
                    var O = n.simpleMap(S.xr0, m.r2l), B = n.simpleMap(S.xr1, m.r2l), V = O[1] - O[0], U = B[1] - B[0];
                    z[0] = (O[0] * (1 - M) + M * B[0] - O[0]) / (O[1] - O[0]) * d, z[2] = d * (1 - M + M * U / V), m.range[0] = m.l2r(O[0] * (1 - M) + M * B[0]), m.range[1] = m.l2r(O[1] * (1 - M) + M * B[1]);
                  } else
                    z[0] = 0, z[2] = d;
                  if (w) {
                    var H = n.simpleMap(S.yr0, L.r2l), F = n.simpleMap(S.yr1, L.r2l), G = H[1] - H[0], q = F[1] - F[0];
                    z[1] = (H[1] * (1 - M) + M * F[1] - H[1]) / (H[0] - H[1]) * h, z[3] = h * (1 - M + M * q / G), L.range[0] = m.l2r(H[0] * (1 - M) + M * F[0]), L.range[1] = L.l2r(H[1] * (1 - M) + M * F[1]);
                  } else
                    z[1] = 0, z[3] = h;
                  T.drawOne(p, m, {
                    skipTitle: !0
                  }), T.drawOne(p, L, {
                    skipTitle: !0
                  }), T.redrawComponents(p, [m._id, L._id]);
                  var rt = E ? d / z[2] : 1, st = w ? h / z[3] : 1, vt = E ? z[0] : 0, ht = w ? z[1] : 0, et = E ? z[0] / z[2] * d : 0, Q = w ? z[1] / z[3] * h : 0, j = m._offset - et, at = L._offset - Q;
                  C.clipRect.call(s.setTranslate, vt, ht).call(s.setScale, 1 / rt, 1 / st), C.plot.call(s.setTranslate, j, at).call(s.setScale, rt, st), s.setPointGroupScale(C.zoomScalePts, 1 / rt, 1 / st), s.setTextPointsScale(C.zoomScaleTxt, 1 / rt, 1 / st);
                }
                var o;
                r && (o = r());
                function y() {
                  for (var S = {}, M = 0; M < u.length; M++) {
                    var C = u[M], m = C.plotinfo.xaxis, L = C.plotinfo.yaxis;
                    C.xr1 && (S[m._name + ".range"] = C.xr1.slice()), C.yr1 && (S[L._name + ".range"] = C.yr1.slice());
                  }
                  return o && o(), P.call("relayout", p, S).then(function() {
                    for (var d = 0; d < u.length; d++)
                      a(u[d].plotinfo);
                  });
                }
                function g() {
                  for (var S = {}, M = 0; M < u.length; M++) {
                    var C = u[M], m = C.plotinfo.xaxis, L = C.plotinfo.yaxis;
                    C.xr0 && (S[m._name + ".range"] = C.xr0.slice()), C.yr0 && (S[L._name + ".range"] = C.yr0.slice());
                  }
                  return P.call("relayout", p, S).then(function() {
                    for (var d = 0; d < u.length; d++)
                      a(u[d].plotinfo);
                  });
                }
                var x, c, v, f = b.ease(t.easing);
                p._transitionData._interruptCallbacks.push(function() {
                  return window.cancelAnimationFrame(v), v = null, g();
                });
                function _() {
                  c = Date.now();
                  for (var S = Math.min(1, (c - x) / t.duration), M = f(S), C = 0; C < u.length; C++)
                    l(u[C], M);
                  c - x > t.duration ? (y(), v = window.cancelAnimationFrame(_)) : v = window.requestAnimationFrame(_);
                }
                return x = Date.now(), v = window.requestAnimationFrame(_), Promise.resolve();
              };
            }
          ),
          /***/
          4392: (
            /***/
            function(Y, K, e) {
              var b = e(33626).traceIs, P = e(9666);
              Y.exports = function(u, t, r, i) {
                r("autotypenumbers", i.autotypenumbersDflt);
                var a = r("type", (i.splomStash || {}).type);
                a === "-" && (n(t, i.data), t.type === "-" ? t.type = "linear" : u.type = t.type);
              };
              function n(p, u) {
                if (p.type === "-") {
                  var t = p._id, r = t.charAt(0), i;
                  t.indexOf("scene") !== -1 && (t = r);
                  var a = s(u, t, r);
                  if (a) {
                    if (a.type === "histogram" && r === {
                      v: "y",
                      h: "x"
                    }[a.orientation || "v"]) {
                      p.type = "linear";
                      return;
                    }
                    var l = r + "calendar", o = a[l], y = {
                      noMultiCategory: !b(a, "cartesian") || b(a, "noMultiCategory")
                    };
                    if (a.type === "box" && a._hasPreCompStats && r === {
                      h: "x",
                      v: "y"
                    }[a.orientation || "v"] && (y.noMultiCategory = !0), y.autotypenumbers = p.autotypenumbers, A(a, r)) {
                      var g = T(a), x = [];
                      for (i = 0; i < u.length; i++) {
                        var c = u[i];
                        !b(c, "box-violin") || (c[r + "axis"] || r) !== t || (c[g] !== void 0 ? x.push(c[g][0]) : c.name !== void 0 ? x.push(c.name) : x.push("text"), c[l] !== o && (o = void 0));
                      }
                      p.type = P(x, o, y);
                    } else if (a.type === "splom") {
                      var v = a.dimensions, f = v[a._axesDim[t]];
                      f.visible && (p.type = P(f.values, o, y));
                    } else
                      p.type = P(a[r] || [a[r + "0"]], o, y);
                  }
                }
              }
              function s(p, u, t) {
                for (var r = 0; r < p.length; r++) {
                  var i = p[r];
                  if (i.type === "splom" && i._length > 0 && (i["_" + t + "axes"] || {})[u])
                    return i;
                  if ((i[t + "axis"] || t) === u) {
                    if (A(i, t))
                      return i;
                    if ((i[t] || []).length || i[t + "0"])
                      return i;
                  }
                }
              }
              function T(p) {
                return {
                  v: "x",
                  h: "y"
                }[p.orientation || "v"];
              }
              function A(p, u) {
                var t = T(p), r = b(p, "box-violin"), i = b(p._fullInput || {}, "candlestick");
                return r && !i && u === t && p[t] === void 0 && p[t + "0"] === void 0;
              }
            }
          ),
          /***/
          90251: (
            /***/
            function(Y, K, e) {
              var b = e(33626), P = e(34809);
              K.manageCommandObserver = function(u, t, r, i) {
                var a = {}, l = !0;
                t && t._commandObserver && (a = t._commandObserver), a.cache || (a.cache = {}), a.lookupTable = {};
                var o = K.hasSimpleAPICommandBindings(u, r, a.lookupTable);
                if (t && t._commandObserver) {
                  if (o)
                    return a;
                  if (t._commandObserver.remove)
                    return t._commandObserver.remove(), t._commandObserver = null, a;
                }
                if (o) {
                  n(u, o, a.cache), a.check = function() {
                    if (l) {
                      var c = n(u, o, a.cache);
                      return c.changed && i && a.lookupTable[c.value] !== void 0 && (a.disable(), Promise.resolve(i({
                        value: c.value,
                        type: o.type,
                        prop: o.prop,
                        traces: o.traces,
                        index: a.lookupTable[c.value]
                      })).then(a.enable, a.enable)), c.changed;
                    }
                  };
                  for (var y = ["plotly_relayout", "plotly_redraw", "plotly_restyle", "plotly_update", "plotly_animatingframe", "plotly_afterplot"], g = 0; g < y.length; g++)
                    u._internalOn(y[g], a.check);
                  a.remove = function() {
                    for (var x = 0; x < y.length; x++)
                      u._removeInternalListener(y[x], a.check);
                  };
                } else
                  P.log("Unable to automatically bind plot updates to API command"), a.lookupTable = {}, a.remove = function() {
                  };
                return a.disable = function() {
                  l = !1;
                }, a.enable = function() {
                  l = !0;
                }, t && (t._commandObserver = a), a;
              }, K.hasSimpleAPICommandBindings = function(u, t, r) {
                var i, a = t.length, l;
                for (i = 0; i < a; i++) {
                  var o, y = t[i], g = y.method, x = y.args;
                  if (Array.isArray(x) || (x = []), !g)
                    return !1;
                  var c = K.computeAPICommandBindings(u, g, x);
                  if (c.length !== 1)
                    return !1;
                  if (!l)
                    l = c[0], Array.isArray(l.traces) && l.traces.sort();
                  else {
                    if (o = c[0], o.type !== l.type || o.prop !== l.prop)
                      return !1;
                    if (Array.isArray(l.traces))
                      if (Array.isArray(o.traces)) {
                        o.traces.sort();
                        for (var v = 0; v < l.traces.length; v++)
                          if (l.traces[v] !== o.traces[v])
                            return !1;
                      } else
                        return !1;
                    else if (o.prop !== l.prop)
                      return !1;
                  }
                  o = c[0];
                  var f = o.value;
                  if (Array.isArray(f))
                    if (f.length === 1)
                      f = f[0];
                    else
                      return !1;
                  r && (r[f] = i);
                }
                return l;
              };
              function n(u, t, r) {
                var i, a, l, o = !1;
                if (t.type === "data")
                  i = u._fullData[t.traces !== null ? t.traces[0] : 0];
                else if (t.type === "layout")
                  i = u._fullLayout;
                else
                  return !1;
                return a = P.nestedProperty(i, t.prop).get(), l = r[t.type] = r[t.type] || {}, l.hasOwnProperty(t.prop) && l[t.prop] !== a && (o = !0), l[t.prop] = a, {
                  changed: o,
                  value: a
                };
              }
              K.executeAPICommand = function(u, t, r) {
                if (t === "skip") return Promise.resolve();
                var i = b.apiMethodRegistry[t], a = [u];
                Array.isArray(r) || (r = []);
                for (var l = 0; l < r.length; l++)
                  a.push(r[l]);
                return i.apply(null, a).catch(function(o) {
                  return P.warn("API call to Plotly." + t + " rejected.", o), Promise.reject(o);
                });
              }, K.computeAPICommandBindings = function(u, t, r) {
                var i;
                switch (Array.isArray(r) || (r = []), t) {
                  case "restyle":
                    i = A(u, r);
                    break;
                  case "relayout":
                    i = T(u, r);
                    break;
                  case "update":
                    i = A(u, [r[0], r[2]]).concat(T(u, [r[1]]));
                    break;
                  case "animate":
                    i = s(u, r);
                    break;
                  default:
                    i = [];
                }
                return i;
              };
              function s(u, t) {
                return Array.isArray(t[0]) && t[0].length === 1 && ["string", "number"].indexOf(typeof t[0][0]) !== -1 ? [{
                  type: "layout",
                  prop: "_currentFrame",
                  value: t[0][0].toString()
                }] : [];
              }
              function T(u, t) {
                var r = [], i = t[0], a = {};
                if (typeof i == "string")
                  a[i] = t[1];
                else if (P.isPlainObject(i))
                  a = i;
                else
                  return r;
                return p(a, function(l, o, y) {
                  r.push({
                    type: "layout",
                    prop: l,
                    value: y
                  });
                }, "", 0), r;
              }
              function A(u, t) {
                var r, i, a, l, o = [];
                if (i = t[0], a = t[1], r = t[2], l = {}, typeof i == "string")
                  l[i] = a;
                else if (P.isPlainObject(i))
                  l = i, r === void 0 && (r = a);
                else
                  return o;
                return r === void 0 && (r = null), p(l, function(y, g, x) {
                  var c, v;
                  if (Array.isArray(x)) {
                    v = x.slice();
                    var f = Math.min(v.length, u.data.length);
                    r && (f = Math.min(f, r.length)), c = [];
                    for (var _ = 0; _ < f; _++)
                      c[_] = r ? r[_] : _;
                  } else
                    v = x, c = r ? r.slice() : null;
                  if (c === null)
                    Array.isArray(v) && (v = v[0]);
                  else if (Array.isArray(c)) {
                    if (!Array.isArray(v)) {
                      var S = v;
                      v = [];
                      for (var M = 0; M < c.length; M++)
                        v[M] = S;
                    }
                    v.length = Math.min(c.length, v.length);
                  }
                  o.push({
                    type: "data",
                    prop: y,
                    traces: c,
                    value: v
                  });
                }, "", 0), o;
              }
              function p(u, t, r, i) {
                Object.keys(u).forEach(function(a) {
                  var l = u[a];
                  if (a[0] !== "_") {
                    var o = r + (i > 0 ? "." : "") + a;
                    P.isPlainObject(l) ? p(l, t, o, i + 1) : t(o, a, l);
                  }
                });
              }
            }
          ),
          /***/
          13792: (
            /***/
            function(Y, K, e) {
              var b = e(93049).extendFlat;
              K.u = function(P, n) {
                P = P || {}, n = n || {};
                var s = {
                  valType: "info_array",
                  editType: P.editType,
                  items: [{
                    valType: "number",
                    min: 0,
                    max: 1,
                    editType: P.editType
                  }, {
                    valType: "number",
                    min: 0,
                    max: 1,
                    editType: P.editType
                  }],
                  dflt: [0, 1]
                };
                P.name && P.name + "", P.trace, n.description && "" + n.description;
                var T = {
                  x: b({}, s, {}),
                  y: b({}, s, {}),
                  editType: P.editType
                };
                return P.noGridCell || (T.row = {
                  valType: "integer",
                  min: 0,
                  dflt: 0,
                  editType: P.editType
                }, T.column = {
                  valType: "integer",
                  min: 0,
                  dflt: 0,
                  editType: P.editType
                }), T;
              }, K.N = function(P, n, s, T) {
                var A = T && T.x || [0, 1], p = T && T.y || [0, 1], u = n.grid;
                if (u) {
                  var t = s("domain.column");
                  t !== void 0 && (t < u.columns ? A = u._domains.x[t] : delete P.domain.column);
                  var r = s("domain.row");
                  r !== void 0 && (r < u.rows ? p = u._domains.y[r] : delete P.domain.row);
                }
                var i = s("domain.x", A), a = s("domain.y", p);
                i[0] < i[1] || (P.domain.x = A.slice()), a[0] < a[1] || (P.domain.y = p.slice());
              };
            }
          ),
          /***/
          80337: (
            /***/
            function(Y) {
              Y.exports = function(K) {
                var e = K.variantValues, b = K.editType, P = K.colorEditType;
                P === void 0 && (P = b);
                var n = {
                  editType: b,
                  valType: "integer",
                  min: 1,
                  max: 1e3,
                  extras: ["normal", "bold"],
                  dflt: "normal"
                };
                K.noNumericWeightValues && (n.valType = "enumerated", n.values = n.extras, n.extras = void 0, n.min = void 0, n.max = void 0);
                var s = {
                  family: {
                    valType: "string",
                    noBlank: !0,
                    strict: !0,
                    editType: b
                  },
                  size: {
                    valType: "number",
                    min: 1,
                    editType: b
                  },
                  color: {
                    valType: "color",
                    editType: P
                  },
                  weight: n,
                  style: {
                    editType: b,
                    valType: "enumerated",
                    values: ["normal", "italic"],
                    dflt: "normal"
                  },
                  variant: K.noFontVariant ? void 0 : {
                    editType: b,
                    valType: "enumerated",
                    values: e || ["normal", "small-caps", "all-small-caps", "all-petite-caps", "petite-caps", "unicase"],
                    dflt: "normal"
                  },
                  textcase: K.noFontTextcase ? void 0 : {
                    editType: b,
                    valType: "enumerated",
                    values: ["normal", "word caps", "upper", "lower"],
                    dflt: "normal"
                  },
                  lineposition: K.noFontLineposition ? void 0 : {
                    editType: b,
                    valType: "flaglist",
                    flags: ["under", "over", "through"],
                    extras: ["none"],
                    dflt: "none"
                  },
                  shadow: K.noFontShadow ? void 0 : {
                    editType: b,
                    valType: "string",
                    dflt: K.autoShadowDflt ? "auto" : "none"
                  },
                  editType: b
                  // blank strings so compress_attributes can remove
                  // TODO - that's uber hacky... better solution?
                };
                return K.autoSize && (s.size.dflt = "auto"), K.autoColor && (s.color.dflt = "auto"), K.arrayOk && (s.family.arrayOk = !0, s.weight.arrayOk = !0, s.style.arrayOk = !0, K.noFontVariant || (s.variant.arrayOk = !0), K.noFontTextcase || (s.textcase.arrayOk = !0), K.noFontLineposition || (s.lineposition.arrayOk = !0), K.noFontShadow || (s.shadow.arrayOk = !0), s.size.arrayOk = !0, s.color.arrayOk = !0), s;
              };
            }
          ),
          /***/
          58935: (
            /***/
            function(Y) {
              Y.exports = {
                _isLinkedToArray: "frames_entry",
                group: {
                  valType: "string"
                },
                name: {
                  valType: "string"
                },
                traces: {
                  valType: "any"
                },
                baseframe: {
                  valType: "string"
                },
                data: {
                  valType: "any"
                },
                layout: {
                  valType: "any"
                }
              };
            }
          ),
          /***/
          74285: (
            /***/
            function(Y, K) {
              K.projNames = {
                airy: "airy",
                aitoff: "aitoff",
                "albers usa": "albersUsa",
                albers: "albers",
                // 'armadillo': 'armadillo',
                august: "august",
                "azimuthal equal area": "azimuthalEqualArea",
                "azimuthal equidistant": "azimuthalEquidistant",
                baker: "baker",
                // 'berghaus': 'berghaus',
                bertin1953: "bertin1953",
                boggs: "boggs",
                bonne: "bonne",
                bottomley: "bottomley",
                bromley: "bromley",
                // 'chamberlin africa': 'chamberlinAfrica',
                // 'chamberlin': 'chamberlin',
                collignon: "collignon",
                "conic conformal": "conicConformal",
                "conic equal area": "conicEqualArea",
                "conic equidistant": "conicEquidistant",
                craig: "craig",
                craster: "craster",
                "cylindrical equal area": "cylindricalEqualArea",
                "cylindrical stereographic": "cylindricalStereographic",
                eckert1: "eckert1",
                eckert2: "eckert2",
                eckert3: "eckert3",
                eckert4: "eckert4",
                eckert5: "eckert5",
                eckert6: "eckert6",
                eisenlohr: "eisenlohr",
                "equal earth": "equalEarth",
                equirectangular: "equirectangular",
                fahey: "fahey",
                "foucaut sinusoidal": "foucautSinusoidal",
                foucaut: "foucaut",
                // 'gilbert': 'gilbert',
                // 'gingery': 'gingery',
                ginzburg4: "ginzburg4",
                ginzburg5: "ginzburg5",
                ginzburg6: "ginzburg6",
                ginzburg8: "ginzburg8",
                ginzburg9: "ginzburg9",
                gnomonic: "gnomonic",
                "gringorten quincuncial": "gringortenQuincuncial",
                gringorten: "gringorten",
                guyou: "guyou",
                // 'hammer retroazimuthal': 'hammerRetroazimuthal',
                hammer: "hammer",
                // 'healpix': 'healpix',
                hill: "hill",
                homolosine: "homolosine",
                hufnagel: "hufnagel",
                hyperelliptical: "hyperelliptical",
                // 'interrupted boggs': 'interruptedBoggs',
                // 'interrupted homolosine': 'interruptedHomolosine',
                // 'interrupted mollweide hemispheres': 'interruptedMollweideHemispheres',
                // 'interrupted mollweide': 'interruptedMollweide',
                // 'interrupted quartic authalic': 'interruptedQuarticAuthalic',
                // 'interrupted sinu mollweide': 'interruptedSinuMollweide',
                // 'interrupted sinusoidal': 'interruptedSinusoidal',
                kavrayskiy7: "kavrayskiy7",
                lagrange: "lagrange",
                larrivee: "larrivee",
                laskowski: "laskowski",
                // 'littrow': 'littrow',
                loximuthal: "loximuthal",
                mercator: "mercator",
                miller: "miller",
                // 'modified stereographic alaska': 'modifiedStereographicAlaska',
                // 'modified stereographic gs48': 'modifiedStereographicGs48',
                // 'modified stereographic gs50': 'modifiedStereographicGs50',
                // 'modified stereographic lee': 'modifiedStereographicLee',
                // 'modified stereographic miller': 'modifiedStereographicMiller',
                // 'modified stereographic': 'modifiedStereographic',
                mollweide: "mollweide",
                "mt flat polar parabolic": "mtFlatPolarParabolic",
                "mt flat polar quartic": "mtFlatPolarQuartic",
                "mt flat polar sinusoidal": "mtFlatPolarSinusoidal",
                "natural earth": "naturalEarth",
                "natural earth1": "naturalEarth1",
                "natural earth2": "naturalEarth2",
                "nell hammer": "nellHammer",
                nicolosi: "nicolosi",
                orthographic: "orthographic",
                patterson: "patterson",
                "peirce quincuncial": "peirceQuincuncial",
                polyconic: "polyconic",
                // 'polyhedral butterfly': 'polyhedralButterfly',
                // 'polyhedral collignon': 'polyhedralCollignon',
                // 'polyhedral waterman': 'polyhedralWaterman',
                "rectangular polyconic": "rectangularPolyconic",
                robinson: "robinson",
                satellite: "satellite",
                "sinu mollweide": "sinuMollweide",
                sinusoidal: "sinusoidal",
                stereographic: "stereographic",
                times: "times",
                "transverse mercator": "transverseMercator",
                // 'two point azimuthalUsa': 'twoPointAzimuthalUsa',
                // 'two point azimuthal': 'twoPointAzimuthal',
                // 'two point equidistantUsa': 'twoPointEquidistantUsa',
                // 'two point equidistant': 'twoPointEquidistant',
                "van der grinten": "vanDerGrinten",
                "van der grinten2": "vanDerGrinten2",
                "van der grinten3": "vanDerGrinten3",
                "van der grinten4": "vanDerGrinten4",
                wagner4: "wagner4",
                wagner6: "wagner6",
                // 'wagner7': 'wagner7',
                // 'wagner': 'wagner',
                wiechel: "wiechel",
                "winkel tripel": "winkel3",
                winkel3: "winkel3"
              }, K.axesNames = ["lonaxis", "lataxis"], K.lonaxisSpan = {
                orthographic: 180,
                "azimuthal equal area": 360,
                "azimuthal equidistant": 360,
                "conic conformal": 180,
                gnomonic: 160,
                stereographic: 180,
                "transverse mercator": 180,
                "*": 360
              }, K.lataxisSpan = {
                "conic conformal": 150,
                stereographic: 179.5,
                "*": 180
              }, K.scopeDefaults = {
                world: {
                  lonaxisRange: [-180, 180],
                  lataxisRange: [-90, 90],
                  projType: "equirectangular",
                  projRotate: [0, 0, 0]
                },
                usa: {
                  lonaxisRange: [-180, -50],
                  lataxisRange: [15, 80],
                  projType: "albers usa"
                },
                europe: {
                  lonaxisRange: [-30, 60],
                  lataxisRange: [30, 85],
                  projType: "conic conformal",
                  projRotate: [15, 0, 0],
                  projParallels: [0, 60]
                },
                asia: {
                  lonaxisRange: [22, 160],
                  lataxisRange: [-15, 55],
                  projType: "mercator",
                  projRotate: [0, 0, 0]
                },
                africa: {
                  lonaxisRange: [-30, 60],
                  lataxisRange: [-40, 40],
                  projType: "mercator",
                  projRotate: [0, 0, 0]
                },
                "north america": {
                  lonaxisRange: [-180, -45],
                  lataxisRange: [5, 85],
                  projType: "conic conformal",
                  projRotate: [-100, 0, 0],
                  projParallels: [29.5, 45.5]
                },
                "south america": {
                  lonaxisRange: [-100, -30],
                  lataxisRange: [-60, 15],
                  projType: "mercator",
                  projRotate: [0, 0, 0]
                }
              }, K.clipPad = 1e-3, K.precision = 0.1, K.landColor = "#F0DC82", K.waterColor = "#3399FF", K.locationmodeToLayer = {
                "ISO-3": "countries",
                "USA-states": "subunits",
                "country names": "countries"
              }, K.sphereSVG = {
                type: "Sphere"
              }, K.fillLayers = {
                ocean: 1,
                land: 1,
                lakes: 1
              }, K.lineLayers = {
                subunits: 1,
                countries: 1,
                coastlines: 1,
                rivers: 1,
                frame: 1
              }, K.layers = ["bg", "ocean", "land", "lakes", "subunits", "countries", "coastlines", "rivers", "lataxis", "lonaxis", "frame", "backplot", "frontplot"], K.layersForChoropleth = ["bg", "ocean", "land", "subunits", "countries", "coastlines", "lataxis", "lonaxis", "frame", "backplot", "rivers", "lakes", "frontplot"], K.layerNameToAdjective = {
                ocean: "ocean",
                land: "land",
                lakes: "lake",
                subunits: "subunit",
                countries: "country",
                coastlines: "coastline",
                rivers: "river",
                frame: "frame"
              };
            }
          ),
          /***/
          6493: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(70884), n = P.geoPath, s = P.geoDistance, T = e(75987), A = e(33626), p = e(34809), u = p.strTranslate, t = e(78766), r = e(62203), i = e(32141), a = e(44122), l = e(29714), o = e(32919).getAutoRange, y = e(14751), g = e(44844).prepSelect, x = e(44844).clearOutline, c = e(44844).selectOnClick, v = e(14309), f = e(74285), _ = e(3994), S = e(11577), M = e(48640).N4;
              function C(E) {
                this.id = E.id, this.graphDiv = E.graphDiv, this.container = E.container, this.topojsonURL = E.topojsonURL, this.isStatic = E.staticPlot, this.topojsonName = null, this.topojson = null, this.projection = null, this.scope = null, this.viewInitial = null, this.fitScale = null, this.bounds = null, this.midPt = null, this.hasChoropleth = !1, this.traceHash = {}, this.layers = {}, this.basePaths = {}, this.dataPaths = {}, this.dataPoints = {}, this.clipDef = null, this.clipRect = null, this.bgRect = null, this.makeFramework();
              }
              var m = C.prototype;
              Y.exports = function(w) {
                return new C(w);
              }, m.plot = function(E, w, z, O) {
                var B = this;
                if (O) return B.update(E, w, !0);
                B._geoCalcData = E, B._fullLayout = w;
                var V = w[this.id], U = [], H = !1;
                for (var F in f.layerNameToAdjective)
                  if (F !== "frame" && V["show" + F]) {
                    H = !0;
                    break;
                  }
                for (var G = !1, q = 0; q < E.length; q++) {
                  var rt = E[0][0].trace;
                  rt._geo = B, rt.locationmode && (H = !0);
                  var st = rt.marker;
                  if (st) {
                    var vt = st.angle, ht = st.angleref;
                    (vt || ht === "north" || ht === "previous") && (G = !0);
                  }
                }
                if (this._hasMarkerAngles = G, H) {
                  var et = S.getTopojsonName(V);
                  (B.topojson === null || et !== B.topojsonName) && (B.topojsonName = et, PlotlyGeoAssets.topojson[B.topojsonName] === void 0 && U.push(B.fetchTopojson()));
                }
                U = U.concat(_.fetchTraceGeoData(E)), z.push(new Promise(function(Q, j) {
                  Promise.all(U).then(function() {
                    B.topojson = PlotlyGeoAssets.topojson[B.topojsonName], B.update(E, w), Q();
                  }).catch(j);
                }));
              }, m.fetchTopojson = function() {
                var E = this, w = S.getTopojsonPath(E.topojsonURL, E.topojsonName);
                return new Promise(function(z, O) {
                  b.json(w, function(B, V) {
                    if (B)
                      return B.status === 404 ? O(new Error(["plotly.js could not find topojson file at", w + ".", "Make sure the *topojsonURL* plot config option", "is set properly."].join(" "))) : O(new Error(["unexpected error while fetching topojson file at", w].join(" ")));
                    PlotlyGeoAssets.topojson[E.topojsonName] = V, z();
                  });
                });
              }, m.update = function(E, w, z) {
                var O = w[this.id];
                this.hasChoropleth = !1;
                for (var B = 0; B < E.length; B++) {
                  var V = E[B], U = V[0].trace;
                  U.type === "choropleth" && (this.hasChoropleth = !0), U.visible === !0 && U._length > 0 && U._module.calcGeoJSON(V, w);
                }
                if (!z) {
                  var H = this.updateProjection(E, w);
                  if (H) return;
                  (!this.viewInitial || this.scope !== O.scope) && this.saveViewInitial(O);
                }
                this.scope = O.scope, this.updateBaseLayers(w, O), this.updateDims(w, O), this.updateFx(w, O), a.generalUpdatePerTraceModule(this.graphDiv, this, E, O);
                var F = this.layers.frontplot.select(".scatterlayer");
                this.dataPoints.point = F.selectAll(".point"), this.dataPoints.text = F.selectAll("text"), this.dataPaths.line = F.selectAll(".js-line");
                var G = this.layers.backplot.select(".choroplethlayer");
                this.dataPaths.choropleth = G.selectAll("path"), this._render();
              }, m.updateProjection = function(E, w) {
                var z = this.graphDiv, O = w[this.id], B = w._size, V = O.domain, U = O.projection, H = O.lonaxis, F = O.lataxis, G = H._ax, q = F._ax, rt = this.projection = L(O), st = [[B.l + B.w * V.x[0], B.t + B.h * (1 - V.y[1])], [B.l + B.w * V.x[1], B.t + B.h * (1 - V.y[0])]], vt = O.center || {}, ht = U.rotation || {}, et = H.range || [], Q = F.range || [];
                if (O.fitbounds) {
                  G._length = st[1][0] - st[0][0], q._length = st[1][1] - st[0][1], G.range = o(z, G), q.range = o(z, q);
                  var j = (G.range[0] + G.range[1]) / 2, at = (q.range[0] + q.range[1]) / 2;
                  if (O._isScoped)
                    vt = {
                      lon: j,
                      lat: at
                    };
                  else if (O._isClipped) {
                    vt = {
                      lon: j,
                      lat: at
                    }, ht = {
                      lon: j,
                      lat: at,
                      roll: ht.roll
                    };
                    var ut = U.type, nt = f.lonaxisSpan[ut] / 2 || 180, X = f.lataxisSpan[ut] / 2 || 90;
                    et = [j - nt, j + nt], Q = [at - X, at + X];
                  } else
                    vt = {
                      lon: j,
                      lat: at
                    }, ht = {
                      lon: j,
                      lat: ht.lat,
                      roll: ht.roll
                    };
                }
                rt.center([vt.lon - ht.lon, vt.lat - ht.lat]).rotate([-ht.lon, -ht.lat, ht.roll]).parallels(U.parallels);
                var ct = h(et, Q);
                rt.fitExtent(st, ct);
                var lt = this.bounds = rt.getBounds(ct), pt = this.fitScale = rt.scale(), wt = rt.translate();
                if (O.fitbounds) {
                  var Et = rt.getBounds(h(G.range, q.range)), Ct = Math.min((lt[1][0] - lt[0][0]) / (Et[1][0] - Et[0][0]), (lt[1][1] - lt[0][1]) / (Et[1][1] - Et[0][1]));
                  isFinite(Ct) ? rt.scale(Ct * pt) : p.warn("Something went wrong during" + this.id + "fitbounds computations.");
                } else
                  rt.scale(U.scale * pt);
                var Gt = this.midPt = [(lt[0][0] + lt[1][0]) / 2, (lt[0][1] + lt[1][1]) / 2];
                if (rt.translate([wt[0] + (Gt[0] - wt[0]), wt[1] + (Gt[1] - wt[1])]).clipExtent(lt), O._isAlbersUsa) {
                  var Jt = rt([vt.lon, vt.lat]), Qt = rt.translate();
                  rt.translate([Qt[0] - (Jt[0] - Qt[0]), Qt[1] - (Jt[1] - Qt[1])]);
                }
              }, m.updateBaseLayers = function(E, w) {
                var z = this, O = z.topojson, B = z.layers, V = z.basePaths;
                function U(st) {
                  return st === "lonaxis" || st === "lataxis";
                }
                function H(st) {
                  return !!f.lineLayers[st];
                }
                function F(st) {
                  return !!f.fillLayers[st];
                }
                var G = this.hasChoropleth ? f.layersForChoropleth : f.layers, q = G.filter(function(st) {
                  return H(st) || F(st) ? w["show" + st] : U(st) ? w[st].showgrid : !0;
                }), rt = z.framework.selectAll(".layer").data(q, String);
                rt.exit().each(function(st) {
                  delete B[st], delete V[st], b.select(this).remove();
                }), rt.enter().append("g").attr("class", function(st) {
                  return "layer " + st;
                }).each(function(st) {
                  var vt = B[st] = b.select(this);
                  st === "bg" ? z.bgRect = vt.append("rect").style("pointer-events", "all") : U(st) ? V[st] = vt.append("path").style("fill", "none") : st === "backplot" ? vt.append("g").classed("choroplethlayer", !0) : st === "frontplot" ? vt.append("g").classed("scatterlayer", !0) : H(st) ? V[st] = vt.append("path").style("fill", "none").style("stroke-miterlimit", 2) : F(st) && (V[st] = vt.append("path").style("stroke", "none"));
                }), rt.order(), rt.each(function(st) {
                  var vt = V[st], ht = f.layerNameToAdjective[st];
                  st === "frame" ? vt.datum(f.sphereSVG) : H(st) || F(st) ? vt.datum(M(O, O.objects[st])) : U(st) && vt.datum(d(st, w, E)).call(t.stroke, w[st].gridcolor).call(r.dashLine, w[st].griddash, w[st].gridwidth), H(st) ? vt.call(t.stroke, w[ht + "color"]).call(r.dashLine, "", w[ht + "width"]) : F(st) && vt.call(t.fill, w[ht + "color"]);
                });
              }, m.updateDims = function(E, w) {
                var z = this.bounds, O = (w.framewidth || 0) / 2, B = z[0][0] - O, V = z[0][1] - O, U = z[1][0] - B + O, H = z[1][1] - V + O;
                r.setRect(this.clipRect, B, V, U, H), this.bgRect.call(r.setRect, B, V, U, H).call(t.fill, w.bgcolor), this.xaxis._offset = B, this.xaxis._length = U, this.yaxis._offset = V, this.yaxis._length = H;
              }, m.updateFx = function(E, w) {
                var z = this, O = z.graphDiv, B = z.bgRect, V = E.dragmode, U = E.clickmode;
                if (z.isStatic) return;
                function H() {
                  var rt = z.viewInitial, st = {};
                  for (var vt in rt)
                    st[z.id + "." + vt] = rt[vt];
                  A.call("_guiRelayout", O, st), O.emit("plotly_doubleclick", null);
                }
                function F(rt) {
                  return z.projection.invert([rt[0] + z.xaxis._offset, rt[1] + z.yaxis._offset]);
                }
                var G = function(rt, st) {
                  if (st.isRect) {
                    var vt = rt.range = {};
                    vt[z.id] = [F([st.xmin, st.ymin]), F([st.xmax, st.ymax])];
                  } else {
                    var ht = rt.lassoPoints = {};
                    ht[z.id] = st.map(F);
                  }
                }, q = {
                  element: z.bgRect.node(),
                  gd: O,
                  plotinfo: {
                    id: z.id,
                    xaxis: z.xaxis,
                    yaxis: z.yaxis,
                    fillRangeItems: G
                  },
                  xaxes: [z.xaxis],
                  yaxes: [z.yaxis],
                  subplot: z.id,
                  clickFn: function(rt) {
                    rt === 2 && x(O);
                  }
                };
                V === "pan" ? (B.node().onmousedown = null, B.call(v(z, w)), B.on("dblclick.zoom", H), O._context._scrollZoom.geo || B.on("wheel.zoom", null)) : (V === "select" || V === "lasso") && (B.on(".zoom", null), q.prepFn = function(rt, st, vt) {
                  g(rt, st, vt, q, V);
                }, y.init(q)), B.on("mousemove", function() {
                  var rt = z.projection.invert(p.getPositionFromD3Event());
                  if (!rt)
                    return y.unhover(O, b.event);
                  z.xaxis.p2c = function() {
                    return rt[0];
                  }, z.yaxis.p2c = function() {
                    return rt[1];
                  }, i.hover(O, b.event, z.id);
                }), B.on("mouseout", function() {
                  O._dragging || y.unhover(O, b.event);
                }), B.on("click", function() {
                  V !== "select" && V !== "lasso" && (U.indexOf("select") > -1 && c(b.event, O, [z.xaxis], [z.yaxis], z.id, q), U.indexOf("event") > -1 && i.click(O, b.event));
                });
              }, m.makeFramework = function() {
                var E = this, w = E.graphDiv, z = w._fullLayout, O = "clip" + z._uid + E.id;
                E.clipDef = z._clips.append("clipPath").attr("id", O), E.clipRect = E.clipDef.append("rect"), E.framework = b.select(E.container).append("g").attr("class", "geo " + E.id).call(r.setClipUrl, O, w), E.project = function(B) {
                  var V = E.projection(B);
                  return V ? [V[0] - E.xaxis._offset, V[1] - E.yaxis._offset] : [null, null];
                }, E.xaxis = {
                  _id: "x",
                  c2p: function(B) {
                    return E.project(B)[0];
                  }
                }, E.yaxis = {
                  _id: "y",
                  c2p: function(B) {
                    return E.project(B)[1];
                  }
                }, E.mockAxis = {
                  type: "linear",
                  showexponent: "all",
                  exponentformat: "B"
                }, l.setConvert(E.mockAxis, z);
              }, m.saveViewInitial = function(E) {
                var w = E.center || {}, z = E.projection, O = z.rotation || {};
                this.viewInitial = {
                  fitbounds: E.fitbounds,
                  "projection.scale": z.scale
                };
                var B;
                E._isScoped ? B = {
                  "center.lon": w.lon,
                  "center.lat": w.lat
                } : E._isClipped ? B = {
                  "projection.rotation.lon": O.lon,
                  "projection.rotation.lat": O.lat
                } : B = {
                  "center.lon": w.lon,
                  "center.lat": w.lat,
                  "projection.rotation.lon": O.lon
                }, p.extendFlat(this.viewInitial, B);
              }, m.render = function(E) {
                this._hasMarkerAngles && E ? this.plot(this._geoCalcData, this._fullLayout, [], !0) : this._render();
              }, m._render = function() {
                var E = this.projection, w = E.getPath(), z;
                function O(V) {
                  var U = E(V.lonlat);
                  return U ? u(U[0], U[1]) : null;
                }
                function B(V) {
                  return E.isLonLatOverEdges(V.lonlat) ? "none" : null;
                }
                for (z in this.basePaths)
                  this.basePaths[z].attr("d", w);
                for (z in this.dataPaths)
                  this.dataPaths[z].attr("d", function(V) {
                    return w(V.geojson);
                  });
                for (z in this.dataPoints)
                  this.dataPoints[z].attr("display", B).attr("transform", O);
              };
              function L(E) {
                var w = E.projection, z = w.type, O = f.projNames[z];
                O = "geo" + p.titleCase(O);
                for (var B = P[O] || T[O], V = B(), U = E._isSatellite ? Math.acos(1 / w.distance) * 180 / Math.PI : E._isClipped ? f.lonaxisSpan[z] / 2 : null, H = ["center", "rotate", "parallels", "clipExtent"], F = function(rt) {
                  return rt ? V : [];
                }, G = 0; G < H.length; G++) {
                  var q = H[G];
                  typeof V[q] != "function" && (V[q] = F);
                }
                return V.isLonLatOverEdges = function(rt) {
                  if (V(rt) === null)
                    return !0;
                  if (U) {
                    var st = V.rotate(), vt = s(rt, [-st[0], -st[1]]), ht = U * Math.PI / 180;
                    return vt > ht;
                  } else
                    return !1;
                }, V.getPath = function() {
                  return n().projection(V);
                }, V.getBounds = function(rt) {
                  return V.getPath().bounds(rt);
                }, V.precision(f.precision), E._isSatellite && V.tilt(w.tilt).distance(w.distance), U && V.clipAngle(U - f.clipPad), V;
              }
              function d(E, w, z) {
                var O = 1e-6, B = 2.5, V = w[E], U = f.scopeDefaults[w.scope], H, F, G;
                E === "lonaxis" ? (H = U.lonaxisRange, F = U.lataxisRange, G = function(at, ut) {
                  return [at, ut];
                }) : E === "lataxis" && (H = U.lataxisRange, F = U.lonaxisRange, G = function(at, ut) {
                  return [ut, at];
                });
                var q = {
                  type: "linear",
                  range: [H[0], H[1] - O],
                  tick0: V.tick0,
                  dtick: V.dtick
                };
                l.setConvert(q, z);
                var rt = l.calcTicks(q);
                !w.isScoped && E === "lonaxis" && rt.pop();
                for (var st = rt.length, vt = new Array(st), ht = 0; ht < st; ht++)
                  for (var et = rt[ht].x, Q = vt[ht] = [], j = F[0]; j < F[1] + B; j += B)
                    Q.push(G(et, j));
                return {
                  type: "MultiLineString",
                  coordinates: vt
                };
              }
              function h(E, w) {
                var z = f.clipPad, O = E[0] + z, B = E[1] - z, V = w[0] + z, U = w[1] - z;
                O > 0 && B < 0 && (B += 360);
                var H = (B - O) / 4;
                return {
                  type: "Polygon",
                  coordinates: [[[O, V], [O, U], [O + H, U], [O + 2 * H, U], [O + 3 * H, U], [B, U], [B, V], [B - H, V], [B - 2 * H, V], [B - 3 * H, V], [O, V]]]
                };
              }
            }
          ),
          /***/
          47544: (
            /***/
            function(Y, K, e) {
              var b = e(4173).fX, P = e(34809).counterRegex, n = e(6493), s = "geo", T = P(s), A = {};
              A[s] = {
                valType: "subplotid",
                dflt: s,
                editType: "calc"
              };
              function p(r) {
                for (var i = r._fullLayout, a = r.calcdata, l = i._subplots[s], o = 0; o < l.length; o++) {
                  var y = l[o], g = b(a, s, y), x = i[y], c = x._subplot;
                  c || (c = n({
                    id: y,
                    graphDiv: r,
                    container: i._geolayer.node(),
                    topojsonURL: r._context.topojsonURL,
                    staticPlot: r._context.staticPlot
                  }), i[y]._subplot = c), c.plot(g, i, r._promises);
                }
              }
              function u(r, i, a, l) {
                for (var o = l._subplots[s] || [], y = 0; y < o.length; y++) {
                  var g = o[y], x = l[g]._subplot;
                  !i[g] && x && (x.framework.remove(), x.clipDef.remove());
                }
              }
              function t(r) {
                for (var i = r._fullLayout, a = i._subplots[s], l = 0; l < a.length; l++) {
                  var o = i[a[l]], y = o._subplot;
                  y.updateFx(i, o);
                }
              }
              Y.exports = {
                attr: s,
                name: s,
                idRoot: s,
                idRegex: T,
                attrRegex: T,
                attributes: A,
                layoutAttributes: e(42194),
                supplyLayoutDefaults: e(31653),
                plot: p,
                updateFx: t,
                clean: u
              };
            }
          ),
          /***/
          42194: (
            /***/
            function(Y, K, e) {
              var b = e(10229), P = e(13792).u, n = e(94850).T, s = e(74285), T = e(13582).overrideAll, A = e(62994), p = {
                range: {
                  valType: "info_array",
                  items: [{
                    valType: "number"
                  }, {
                    valType: "number"
                  }]
                },
                showgrid: {
                  valType: "boolean",
                  dflt: !1
                },
                tick0: {
                  valType: "number",
                  dflt: 0
                },
                dtick: {
                  valType: "number"
                },
                gridcolor: {
                  valType: "color",
                  dflt: b.lightLine
                },
                gridwidth: {
                  valType: "number",
                  min: 0,
                  dflt: 1
                },
                griddash: n
              }, u = Y.exports = T({
                domain: P({
                  name: "geo"
                }, {}),
                fitbounds: {
                  valType: "enumerated",
                  values: [!1, "locations", "geojson"],
                  dflt: !1,
                  editType: "plot"
                },
                resolution: {
                  valType: "enumerated",
                  values: [110, 50],
                  dflt: 110,
                  coerceNumber: !0
                },
                scope: {
                  valType: "enumerated",
                  values: A(s.scopeDefaults),
                  dflt: "world"
                },
                projection: {
                  type: {
                    valType: "enumerated",
                    values: A(s.projNames)
                  },
                  rotation: {
                    lon: {
                      valType: "number"
                    },
                    lat: {
                      valType: "number"
                    },
                    roll: {
                      valType: "number"
                    }
                  },
                  tilt: {
                    valType: "number",
                    dflt: 0
                  },
                  distance: {
                    valType: "number",
                    min: 1.001,
                    dflt: 2
                  },
                  parallels: {
                    valType: "info_array",
                    items: [{
                      valType: "number"
                    }, {
                      valType: "number"
                    }]
                  },
                  scale: {
                    valType: "number",
                    min: 0,
                    dflt: 1
                  }
                },
                center: {
                  lon: {
                    valType: "number"
                  },
                  lat: {
                    valType: "number"
                  }
                },
                visible: {
                  valType: "boolean",
                  dflt: !0
                },
                showcoastlines: {
                  valType: "boolean"
                },
                coastlinecolor: {
                  valType: "color",
                  dflt: b.defaultLine
                },
                coastlinewidth: {
                  valType: "number",
                  min: 0,
                  dflt: 1
                },
                showland: {
                  valType: "boolean",
                  dflt: !1
                },
                landcolor: {
                  valType: "color",
                  dflt: s.landColor
                },
                showocean: {
                  valType: "boolean",
                  dflt: !1
                },
                oceancolor: {
                  valType: "color",
                  dflt: s.waterColor
                },
                showlakes: {
                  valType: "boolean",
                  dflt: !1
                },
                lakecolor: {
                  valType: "color",
                  dflt: s.waterColor
                },
                showrivers: {
                  valType: "boolean",
                  dflt: !1
                },
                rivercolor: {
                  valType: "color",
                  dflt: s.waterColor
                },
                riverwidth: {
                  valType: "number",
                  min: 0,
                  dflt: 1
                },
                showcountries: {
                  valType: "boolean"
                },
                countrycolor: {
                  valType: "color",
                  dflt: b.defaultLine
                },
                countrywidth: {
                  valType: "number",
                  min: 0,
                  dflt: 1
                },
                showsubunits: {
                  valType: "boolean"
                },
                subunitcolor: {
                  valType: "color",
                  dflt: b.defaultLine
                },
                subunitwidth: {
                  valType: "number",
                  min: 0,
                  dflt: 1
                },
                showframe: {
                  valType: "boolean"
                },
                framecolor: {
                  valType: "color",
                  dflt: b.defaultLine
                },
                framewidth: {
                  valType: "number",
                  min: 0,
                  dflt: 1
                },
                bgcolor: {
                  valType: "color",
                  dflt: b.background
                },
                lonaxis: p,
                lataxis: p
              }, "plot", "from-root");
              u.uirevision = {
                valType: "any",
                editType: "none"
              };
            }
          ),
          /***/
          31653: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(4448), n = e(4173).KO, s = e(74285), T = e(42194), A = s.axesNames;
              Y.exports = function(t, r, i) {
                P(t, r, i, {
                  type: "geo",
                  attributes: T,
                  handleDefaults: p,
                  fullData: i,
                  partition: "y"
                });
              };
              function p(u, t, r, i) {
                var a = n(i.fullData, "geo", i.id), l = a.map(function(Q) {
                  return Q._expandedIndex;
                }), o = r("resolution"), y = r("scope"), g = s.scopeDefaults[y], x = r("projection.type", g.projType), c = t._isAlbersUsa = x === "albers usa";
                c && (y = t.scope = "usa");
                var v = t._isScoped = y !== "world", f = t._isSatellite = x === "satellite", _ = t._isConic = x.indexOf("conic") !== -1 || x === "albers", S = t._isClipped = !!s.lonaxisSpan[x];
                if (u.visible === !1) {
                  var M = b.extendDeep({}, t._template);
                  M.showcoastlines = !1, M.showcountries = !1, M.showframe = !1, M.showlakes = !1, M.showland = !1, M.showocean = !1, M.showrivers = !1, M.showsubunits = !1, M.lonaxis && (M.lonaxis.showgrid = !1), M.lataxis && (M.lataxis.showgrid = !1), t._template = M;
                }
                for (var C = r("visible"), m, L = 0; L < A.length; L++) {
                  var d = A[L], h = [30, 10][L], E;
                  if (v)
                    E = g[d + "Range"];
                  else {
                    var w = s[d + "Span"], z = (w[x] || w["*"]) / 2, O = r("projection.rotation." + d.substr(0, 3), g.projRotate[L]);
                    E = [O - z, O + z];
                  }
                  var B = r(d + ".range", E);
                  r(d + ".tick0"), r(d + ".dtick", h), m = r(d + ".showgrid", C ? void 0 : !1), m && (r(d + ".gridcolor"), r(d + ".gridwidth"), r(d + ".griddash")), t[d]._ax = {
                    type: "linear",
                    _id: d.slice(0, 3),
                    _traceIndices: l,
                    setScale: b.identity,
                    c2l: b.identity,
                    r2l: b.identity,
                    autorange: !0,
                    range: B.slice(),
                    _m: 1,
                    _input: {}
                  };
                }
                var V = t.lonaxis.range, U = t.lataxis.range, H = V[0], F = V[1];
                H > 0 && F < 0 && (F += 360);
                var G = (H + F) / 2, q;
                if (!c) {
                  var rt = v ? g.projRotate : [G, 0, 0];
                  q = r("projection.rotation.lon", rt[0]), r("projection.rotation.lat", rt[1]), r("projection.rotation.roll", rt[2]), m = r("showcoastlines", !v && C), m && (r("coastlinecolor"), r("coastlinewidth")), m = r("showocean", C ? void 0 : !1), m && r("oceancolor");
                }
                var st, vt;
                if (c ? (st = -96.6, vt = 38.7) : (st = v ? G : q, vt = (U[0] + U[1]) / 2), r("center.lon", st), r("center.lat", vt), f && (r("projection.tilt"), r("projection.distance")), _) {
                  var ht = g.projParallels || [0, 60];
                  r("projection.parallels", ht);
                }
                r("projection.scale"), m = r("showland", C ? void 0 : !1), m && r("landcolor"), m = r("showlakes", C ? void 0 : !1), m && r("lakecolor"), m = r("showrivers", C ? void 0 : !1), m && (r("rivercolor"), r("riverwidth")), m = r("showcountries", v && y !== "usa" && C), m && (r("countrycolor"), r("countrywidth")), (y === "usa" || y === "north america" && o === 50) && (r("showsubunits", C), r("subunitcolor"), r("subunitwidth")), v || (m = r("showframe", C), m && (r("framecolor"), r("framewidth"))), r("bgcolor");
                var et = r("fitbounds");
                et && (delete t.projection.scale, v ? (delete t.center.lon, delete t.center.lat) : S ? (delete t.center.lon, delete t.center.lat, delete t.projection.rotation.lon, delete t.projection.rotation.lat, delete t.lonaxis.range, delete t.lataxis.range) : (delete t.center.lon, delete t.center.lat, delete t.projection.rotation.lon));
              }
            }
          ),
          /***/
          14309: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(34809), n = e(33626), s = Math.PI / 180, T = 180 / Math.PI, A = {
                cursor: "pointer"
              }, p = {
                cursor: "auto"
              };
              function u(d, h) {
                var E = d.projection, w;
                return h._isScoped ? w = i : h._isClipped ? w = l : w = a, w(d, E);
              }
              Y.exports = u;
              function t(d, h) {
                return b.behavior.zoom().translate(h.translate()).scale(h.scale());
              }
              function r(d, h, E) {
                var w = d.id, z = d.graphDiv, O = z.layout, B = O[w], V = z._fullLayout, U = V[w], H = {}, F = {};
                function G(q, rt) {
                  H[w + "." + q] = P.nestedProperty(B, q).get(), n.call("_storeDirectGUIEdit", O, V._preGUI, H);
                  var st = P.nestedProperty(U, q);
                  st.get() !== rt && (st.set(rt), P.nestedProperty(B, q).set(rt), F[w + "." + q] = rt);
                }
                E(G), G("projection.scale", h.scale() / d.fitScale), G("fitbounds", !1), z.emit("plotly_relayout", F);
              }
              function i(d, h) {
                var E = t(d, h);
                function w() {
                  b.select(this).style(A);
                }
                function z() {
                  h.scale(b.event.scale).translate(b.event.translate), d.render(!0);
                  var V = h.invert(d.midPt);
                  d.graphDiv.emit("plotly_relayouting", {
                    "geo.projection.scale": h.scale() / d.fitScale,
                    "geo.center.lon": V[0],
                    "geo.center.lat": V[1]
                  });
                }
                function O(V) {
                  var U = h.invert(d.midPt);
                  V("center.lon", U[0]), V("center.lat", U[1]);
                }
                function B() {
                  b.select(this).style(p), r(d, h, O);
                }
                return E.on("zoomstart", w).on("zoom", z).on("zoomend", B), E;
              }
              function a(d, h) {
                var E = t(d, h), w = 2, z, O, B, V, U, H, F, G, q;
                function rt(j) {
                  return h.invert(j);
                }
                function st(j) {
                  var at = rt(j);
                  if (!at) return !0;
                  var ut = h(at);
                  return Math.abs(ut[0] - j[0]) > w || Math.abs(ut[1] - j[1]) > w;
                }
                function vt() {
                  b.select(this).style(A), z = b.mouse(this), O = h.rotate(), B = h.translate(), V = O, U = rt(z);
                }
                function ht() {
                  if (H = b.mouse(this), st(z)) {
                    E.scale(h.scale()), E.translate(h.translate());
                    return;
                  }
                  h.scale(b.event.scale), h.translate([B[0], b.event.translate[1]]), U ? rt(H) && (G = rt(H), F = [V[0] + (G[0] - U[0]), O[1], O[2]], h.rotate(F), V = F) : (z = H, U = rt(z)), q = !0, d.render(!0);
                  var j = h.rotate(), at = h.invert(d.midPt);
                  d.graphDiv.emit("plotly_relayouting", {
                    "geo.projection.scale": h.scale() / d.fitScale,
                    "geo.center.lon": at[0],
                    "geo.center.lat": at[1],
                    "geo.projection.rotation.lon": -j[0]
                  });
                }
                function et() {
                  b.select(this).style(p), q && r(d, h, Q);
                }
                function Q(j) {
                  var at = h.rotate(), ut = h.invert(d.midPt);
                  j("projection.rotation.lon", -at[0]), j("center.lon", ut[0]), j("center.lat", ut[1]);
                }
                return E.on("zoomstart", vt).on("zoom", ht).on("zoomend", et), E;
              }
              function l(d, h) {
                h.rotate(), h.scale();
                var E = t(d, h), w = L(E, "zoomstart", "zoom", "zoomend"), z = 0, O = E.on, B;
                E.on("zoomstart", function() {
                  b.select(this).style(A);
                  var G = b.mouse(this), q = h.rotate(), rt = q, st = h.translate(), vt = y(q);
                  B = o(h, G), O.call(E, "zoom", function() {
                    var ht = b.mouse(this);
                    if (h.scale(b.event.scale), !B)
                      G = ht, B = o(h, G);
                    else if (o(h, ht)) {
                      h.rotate(q).translate(st);
                      var et = o(h, ht), Q = x(B, et), j = S(g(vt, Q)), at = c(j, B, rt);
                      (!isFinite(at[0]) || !isFinite(at[1]) || !isFinite(at[2])) && (at = rt), h.rotate(at), rt = at;
                    }
                    U(w.of(this, arguments));
                  }), V(w.of(this, arguments));
                }).on("zoomend", function() {
                  b.select(this).style(p), O.call(E, "zoom", null), H(w.of(this, arguments)), r(d, h, F);
                }).on("zoom.redraw", function() {
                  d.render(!0);
                  var G = h.rotate();
                  d.graphDiv.emit("plotly_relayouting", {
                    "geo.projection.scale": h.scale() / d.fitScale,
                    "geo.projection.rotation.lon": -G[0],
                    "geo.projection.rotation.lat": -G[1]
                  });
                });
                function V(G) {
                  z++ || G({
                    type: "zoomstart"
                  });
                }
                function U(G) {
                  G({
                    type: "zoom"
                  });
                }
                function H(G) {
                  --z || G({
                    type: "zoomend"
                  });
                }
                function F(G) {
                  var q = h.rotate();
                  G("projection.rotation.lon", -q[0]), G("projection.rotation.lat", -q[1]);
                }
                return b.rebind(E, w, "on");
              }
              function o(d, h) {
                var E = d.invert(h);
                return E && isFinite(E[0]) && isFinite(E[1]) && M(E);
              }
              function y(d) {
                var h = 0.5 * d[0] * s, E = 0.5 * d[1] * s, w = 0.5 * d[2] * s, z = Math.sin(h), O = Math.cos(h), B = Math.sin(E), V = Math.cos(E), U = Math.sin(w), H = Math.cos(w);
                return [O * V * H + z * B * U, z * V * H - O * B * U, O * B * H + z * V * U, O * V * U - z * B * H];
              }
              function g(d, h) {
                var E = d[0], w = d[1], z = d[2], O = d[3], B = h[0], V = h[1], U = h[2], H = h[3];
                return [E * B - w * V - z * U - O * H, E * V + w * B + z * H - O * U, E * U - w * H + z * B + O * V, E * H + w * U - z * V + O * B];
              }
              function x(d, h) {
                if (!(!d || !h)) {
                  var E = m(d, h), w = Math.sqrt(C(E, E)), z = 0.5 * Math.acos(Math.max(-1, Math.min(1, C(d, h)))), O = Math.sin(z) / w;
                  return w && [Math.cos(z), E[2] * O, -E[1] * O, E[0] * O];
                }
              }
              function c(d, h, E) {
                var w = _(h, 2, d[0]);
                w = _(w, 1, d[1]), w = _(w, 0, d[2] - E[2]);
                var z = h[0], O = h[1], B = h[2], V = w[0], U = w[1], H = w[2], F = Math.atan2(O, z) * T, G = Math.sqrt(z * z + O * O), q, rt;
                Math.abs(U) > G ? (rt = (U > 0 ? 90 : -90) - F, q = 0) : (rt = Math.asin(U / G) * T - F, q = Math.sqrt(G * G - U * U));
                var st = 180 - rt - 2 * F, vt = (Math.atan2(H, V) - Math.atan2(B, q)) * T, ht = (Math.atan2(H, V) - Math.atan2(B, -q)) * T, et = v(E[0], E[1], rt, vt), Q = v(E[0], E[1], st, ht);
                return et <= Q ? [rt, vt, E[2]] : [st, ht, E[2]];
              }
              function v(d, h, E, w) {
                var z = f(E - d), O = f(w - h);
                return Math.sqrt(z * z + O * O);
              }
              function f(d) {
                return (d % 360 + 540) % 360 - 180;
              }
              function _(d, h, E) {
                var w = E * s, z = d.slice(), O = h === 0 ? 1 : 0, B = h === 2 ? 1 : 2, V = Math.cos(w), U = Math.sin(w);
                return z[O] = d[O] * V - d[B] * U, z[B] = d[B] * V + d[O] * U, z;
              }
              function S(d) {
                return [Math.atan2(2 * (d[0] * d[1] + d[2] * d[3]), 1 - 2 * (d[1] * d[1] + d[2] * d[2])) * T, Math.asin(Math.max(-1, Math.min(1, 2 * (d[0] * d[2] - d[3] * d[1])))) * T, Math.atan2(2 * (d[0] * d[3] + d[1] * d[2]), 1 - 2 * (d[2] * d[2] + d[3] * d[3])) * T];
              }
              function M(d) {
                var h = d[0] * s, E = d[1] * s, w = Math.cos(E);
                return [w * Math.cos(h), w * Math.sin(h), Math.sin(E)];
              }
              function C(d, h) {
                for (var E = 0, w = 0, z = d.length; w < z; ++w) E += d[w] * h[w];
                return E;
              }
              function m(d, h) {
                return [d[1] * h[2] - d[2] * h[1], d[2] * h[0] - d[0] * h[2], d[0] * h[1] - d[1] * h[0]];
              }
              function L(d) {
                for (var h = 0, E = arguments.length, w = []; ++h < E; ) w.push(arguments[h]);
                var z = b.dispatch.apply(null, w);
                return z.of = function(O, B) {
                  return function(V) {
                    var U;
                    try {
                      U = V.sourceEvent = b.event, V.target = d, b.event = V, z[V.type].apply(O, B);
                    } finally {
                      b.event = U;
                    }
                  };
                }, z;
              }
            }
          ),
          /***/
          4173: (
            /***/
            function(Y, K, e) {
              var b = e(33626), P = e(54826).SUBPLOT_PATTERN;
              K.fX = function(n, s, T) {
                var A = b.subplotsRegistry[s];
                if (!A) return [];
                for (var p = A.attr, u = [], t = 0; t < n.length; t++) {
                  var r = n[t], i = r[0].trace;
                  i[p] === T && u.push(r);
                }
                return u;
              }, K.eV = function(n, s, T) {
                var A = [], p = [], u;
                if (typeof s == "string" ? u = b.getModule(s).plot : typeof s == "function" ? u = s : u = s.plot, !u)
                  return [A, n];
                for (var t = T, r = 0; r < n.length; r++) {
                  var i = n[r], a = i[0].trace, l = a.zorder !== void 0;
                  a.visible !== !0 || a._length === 0 || (a._module && a._module.plot === u && (!l || a.zorder === t) ? A.push(i) : p.push(i));
                }
                return [A, p];
              }, K.KO = function(s, T, A) {
                if (!b.subplotsRegistry[T]) return [];
                var p = b.subplotsRegistry[T].attr, u = [], t, r, i;
                if (T === "gl2d") {
                  var a = A.match(P);
                  r = "x" + a[1], i = "y" + a[2];
                }
                for (var l = 0; l < s.length; l++)
                  t = s[l], T === "gl2d" && b.traceIs(t, "gl2d") ? t[p[0]] === r && t[p[1]] === i && u.push(t) : t[p] === A && u.push(t);
                return u;
              };
            }
          ),
          /***/
          77055: (
            /***/
            function(Y, K, e) {
              var b = e(99978), P = e(20573), n = e(44039), s = e(54826), T = e(74043);
              Y.exports = p;
              function A(u, t) {
                this.element = u, this.plot = t, this.mouseListener = null, this.wheelListener = null, this.lastInputTime = Date.now(), this.lastPos = [0, 0], this.boxEnabled = !1, this.boxInited = !1, this.boxStart = [0, 0], this.boxEnd = [0, 0], this.dragStart = [0, 0];
              }
              function p(u) {
                var t = u.mouseContainer, r = u.glplot, i = new A(t, r);
                function a() {
                  u.xaxis.autorange = !1, u.yaxis.autorange = !1;
                }
                function l() {
                  for (var y = u.graphDiv._fullLayout._axisConstraintGroups, g = u.xaxis._id, x = u.yaxis._id, c = 0; c < y.length; c++)
                    if (y[c][g] !== -1) {
                      if (y[c][x] !== -1) return !0;
                      break;
                    }
                  return !1;
                }
                i.mouseListener = b(t, o), t.addEventListener("touchstart", function(y) {
                  var g = n(y.changedTouches[0], t);
                  o(0, g[0], g[1]), o(1, g[0], g[1]), y.preventDefault();
                }, T ? {
                  passive: !1
                } : !1), t.addEventListener("touchmove", function(y) {
                  y.preventDefault();
                  var g = n(y.changedTouches[0], t);
                  o(1, g[0], g[1]), y.preventDefault();
                }, T ? {
                  passive: !1
                } : !1), t.addEventListener("touchend", function(y) {
                  o(0, i.lastPos[0], i.lastPos[1]), y.preventDefault();
                }, T ? {
                  passive: !1
                } : !1);
                function o(y, g, x) {
                  var c = u.calcDataBox(), v = r.viewBox, f = i.lastPos[0], _ = i.lastPos[1], S = s.MINDRAG * r.pixelRatio, M = s.MINZOOM * r.pixelRatio, C, m;
                  g *= r.pixelRatio, x *= r.pixelRatio, x = v[3] - v[1] - x;
                  function L(O, B, V) {
                    var U = Math.min(B, V), H = Math.max(B, V);
                    U !== H ? (c[O] = U, c[O + 2] = H, i.dataBox = c, u.setRanges(c)) : (u.selectBox.selectBox = [0, 0, 1, 1], u.glplot.setDirty());
                  }
                  switch (u.fullLayout.dragmode) {
                    case "zoom":
                      if (y) {
                        var d = g / (v[2] - v[0]) * (c[2] - c[0]) + c[0], h = x / (v[3] - v[1]) * (c[3] - c[1]) + c[1];
                        i.boxInited || (i.boxStart[0] = d, i.boxStart[1] = h, i.dragStart[0] = g, i.dragStart[1] = x), i.boxEnd[0] = d, i.boxEnd[1] = h, i.boxInited = !0, !i.boxEnabled && (i.boxStart[0] !== i.boxEnd[0] || i.boxStart[1] !== i.boxEnd[1]) && (i.boxEnabled = !0);
                        var E = Math.abs(i.dragStart[0] - g) < M, w = Math.abs(i.dragStart[1] - x) < M;
                        if (l() && !(E && w)) {
                          C = i.boxEnd[0] - i.boxStart[0], m = i.boxEnd[1] - i.boxStart[1];
                          var z = (c[3] - c[1]) / (c[2] - c[0]);
                          Math.abs(C * z) > Math.abs(m) ? (i.boxEnd[1] = i.boxStart[1] + Math.abs(C) * z * (m >= 0 ? 1 : -1), i.boxEnd[1] < c[1] ? (i.boxEnd[1] = c[1], i.boxEnd[0] = i.boxStart[0] + (c[1] - i.boxStart[1]) / Math.abs(z)) : i.boxEnd[1] > c[3] && (i.boxEnd[1] = c[3], i.boxEnd[0] = i.boxStart[0] + (c[3] - i.boxStart[1]) / Math.abs(z))) : (i.boxEnd[0] = i.boxStart[0] + Math.abs(m) / z * (C >= 0 ? 1 : -1), i.boxEnd[0] < c[0] ? (i.boxEnd[0] = c[0], i.boxEnd[1] = i.boxStart[1] + (c[0] - i.boxStart[0]) * Math.abs(z)) : i.boxEnd[0] > c[2] && (i.boxEnd[0] = c[2], i.boxEnd[1] = i.boxStart[1] + (c[2] - i.boxStart[0]) * Math.abs(z)));
                        } else
                          E && (i.boxEnd[0] = i.boxStart[0]), w && (i.boxEnd[1] = i.boxStart[1]);
                      } else i.boxEnabled ? (C = i.boxStart[0] !== i.boxEnd[0], m = i.boxStart[1] !== i.boxEnd[1], C || m ? (C && (L(0, i.boxStart[0], i.boxEnd[0]), u.xaxis.autorange = !1), m && (L(1, i.boxStart[1], i.boxEnd[1]), u.yaxis.autorange = !1), u.relayoutCallback()) : u.glplot.setDirty(), i.boxEnabled = !1, i.boxInited = !1) : i.boxInited && (i.boxInited = !1);
                      break;
                    case "pan":
                      i.boxEnabled = !1, i.boxInited = !1, y ? (i.panning || (i.dragStart[0] = g, i.dragStart[1] = x), Math.abs(i.dragStart[0] - g) < S && (g = i.dragStart[0]), Math.abs(i.dragStart[1] - x) < S && (x = i.dragStart[1]), C = (f - g) * (c[2] - c[0]) / (r.viewBox[2] - r.viewBox[0]), m = (_ - x) * (c[3] - c[1]) / (r.viewBox[3] - r.viewBox[1]), c[0] += C, c[2] += C, c[1] += m, c[3] += m, u.setRanges(c), i.panning = !0, i.lastInputTime = Date.now(), a(), u.cameraChanged(), u.handleAnnotations()) : i.panning && (i.panning = !1, u.relayoutCallback());
                      break;
                  }
                  i.lastPos[0] = g, i.lastPos[1] = x;
                }
                return i.wheelListener = P(t, function(y, g) {
                  if (!u.scrollZoom) return !1;
                  var x = u.calcDataBox(), c = r.viewBox, v = i.lastPos[0], f = i.lastPos[1], _ = Math.exp(5 * g / (c[3] - c[1])), S = v / (c[2] - c[0]) * (x[2] - x[0]) + x[0], M = f / (c[3] - c[1]) * (x[3] - x[1]) + x[1];
                  return x[0] = (x[0] - S) * _ + S, x[2] = (x[2] - S) * _ + S, x[1] = (x[1] - M) * _ + M, x[3] = (x[3] - M) * _ + M, u.setRanges(x), i.lastInputTime = Date.now(), a(), u.cameraChanged(), u.handleAnnotations(), u.relayoutCallback(), !0;
                }, !0), i;
              }
            }
          ),
          /***/
          10749: (
            /***/
            function(Y, K, e) {
              var b = e(29714), P = e(55010);
              function n(p) {
                this.scene = p, this.gl = p.gl, this.pixelRatio = p.pixelRatio, this.screenBox = [0, 0, 1, 1], this.viewBox = [0, 0, 1, 1], this.dataBox = [-1, -1, 1, 1], this.borderLineEnable = [!1, !1, !1, !1], this.borderLineWidth = [1, 1, 1, 1], this.borderLineColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]], this.ticks = [[], []], this.tickEnable = [!0, !0, !1, !1], this.tickPad = [15, 15, 15, 15], this.tickAngle = [0, 0, 0, 0], this.tickColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]], this.tickMarkLength = [0, 0, 0, 0], this.tickMarkWidth = [0, 0, 0, 0], this.tickMarkColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]], this.labels = ["x", "y"], this.labelEnable = [!0, !0, !1, !1], this.labelAngle = [0, Math.PI / 2, 0, 3 * Math.PI / 2], this.labelPad = [15, 15, 15, 15], this.labelSize = [12, 12], this.labelFont = ["sans-serif", "sans-serif"], this.labelColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]], this.title = "", this.titleEnable = !0, this.titleCenter = [0, 0, 0, 0], this.titleAngle = 0, this.titleColor = [0, 0, 0, 1], this.titleFont = "sans-serif", this.titleSize = 18, this.gridLineEnable = [!0, !0], this.gridLineColor = [[0, 0, 0, 0.5], [0, 0, 0, 0.5]], this.gridLineWidth = [1, 1], this.zeroLineEnable = [!0, !0], this.zeroLineWidth = [1, 1], this.zeroLineColor = [[0, 0, 0, 1], [0, 0, 0, 1]], this.borderColor = [0, 0, 0, 0], this.backgroundColor = [0, 0, 0, 0], this.static = this.scene.staticPlot;
              }
              var s = n.prototype, T = ["xaxis", "yaxis"];
              s.merge = function(p) {
                this.titleEnable = !1, this.backgroundColor = P(p.plot_bgcolor);
                var u, t, r, i, a, l, o, y, g, x, c;
                for (x = 0; x < 2; ++x) {
                  u = T[x];
                  var v = u.charAt(0);
                  for (t = p[this.scene[u]._name], r = t.title.text === this.scene.fullLayout._dfltTitle[v] ? "" : t.title.text, c = 0; c <= 2; c += 2)
                    this.labelEnable[x + c] = !1, this.labels[x + c] = r, this.labelColor[x + c] = P(t.title.font.color), this.labelFont[x + c] = t.title.font.family, this.labelSize[x + c] = t.title.font.size, this.labelPad[x + c] = this.getLabelPad(u, t), this.tickEnable[x + c] = !1, this.tickColor[x + c] = P((t.tickfont || {}).color), this.tickAngle[x + c] = t.tickangle === "auto" ? 0 : Math.PI * -t.tickangle / 180, this.tickPad[x + c] = this.getTickPad(t), this.tickMarkLength[x + c] = 0, this.tickMarkWidth[x + c] = t.tickwidth || 0, this.tickMarkColor[x + c] = P(t.tickcolor), this.borderLineEnable[x + c] = !1, this.borderLineColor[x + c] = P(t.linecolor), this.borderLineWidth[x + c] = t.linewidth || 0;
                  o = this.hasSharedAxis(t), a = this.hasAxisInDfltPos(u, t) && !o, l = this.hasAxisInAltrPos(u, t) && !o, i = t.mirror || !1, y = o ? String(i).indexOf("all") !== -1 : (
                    // 'all' or 'allticks'
                    !!i
                  ), g = o ? i === "allticks" : String(i).indexOf("ticks") !== -1, a ? this.labelEnable[x] = !0 : l && (this.labelEnable[x + 2] = !0), a ? this.tickEnable[x] = t.showticklabels : l && (this.tickEnable[x + 2] = t.showticklabels), (a || y) && (this.borderLineEnable[x] = t.showline), (l || y) && (this.borderLineEnable[x + 2] = t.showline), (a || g) && (this.tickMarkLength[x] = this.getTickMarkLength(t)), (l || g) && (this.tickMarkLength[x + 2] = this.getTickMarkLength(t)), this.gridLineEnable[x] = t.showgrid, this.gridLineColor[x] = P(t.gridcolor), this.gridLineWidth[x] = t.gridwidth, this.zeroLineEnable[x] = t.zeroline, this.zeroLineColor[x] = P(t.zerolinecolor), this.zeroLineWidth[x] = t.zerolinewidth;
                }
              }, s.hasSharedAxis = function(p) {
                var u = this.scene, t = u.fullLayout._subplots.gl2d, r = b.findSubplotsWithAxis(t, p);
                return r.indexOf(u.id) !== 0;
              }, s.hasAxisInDfltPos = function(p, u) {
                var t = u.side;
                if (p === "xaxis") return t === "bottom";
                if (p === "yaxis") return t === "left";
              }, s.hasAxisInAltrPos = function(p, u) {
                var t = u.side;
                if (p === "xaxis") return t === "top";
                if (p === "yaxis") return t === "right";
              }, s.getLabelPad = function(p, u) {
                var t = 1.5, r = u.title.font.size, i = u.showticklabels;
                if (p === "xaxis")
                  return u.side === "top" ? -10 + r * (t + (i ? 1 : 0)) : -10 + r * (t + (i ? 0.5 : 0));
                if (p === "yaxis")
                  return u.side === "right" ? 10 + r * (t + (i ? 1 : 0.5)) : 10 + r * (t + (i ? 0.5 : 0));
              }, s.getTickPad = function(p) {
                return p.ticks === "outside" ? 10 + p.ticklen : 15;
              }, s.getTickMarkLength = function(p) {
                if (!p.ticks) return 0;
                var u = p.ticklen;
                return p.ticks === "inside" ? -u : u;
              };
              function A(p) {
                return new n(p);
              }
              Y.exports = A;
            }
          ),
          /***/
          24585: (
            /***/
            function(Y, K, e) {
              var b = e(13582).overrideAll, P = e(27672), n = e(6704), s = e(62972), T = e(54826), A = e(37703), p = e(6811), u = e(4173).KO;
              K.name = "gl2d", K.attr = ["xaxis", "yaxis"], K.idRoot = ["x", "y"], K.idRegex = T.idRegex, K.attrRegex = T.attrRegex, K.attributes = e(55126), K.supplyLayoutDefaults = function(t, r, i) {
                r._has("cartesian") || A.supplyLayoutDefaults(t, r, i);
              }, K.layoutAttrOverrides = b(A.layoutAttributes, "plot", "from-root"), K.baseLayoutAttrOverrides = b({
                plot_bgcolor: n.plot_bgcolor,
                hoverlabel: p.hoverlabel
                // dragmode needs calc but only when transitioning TO lasso or select
                // so for now it's left inside _relayout
                // dragmode: fxAttrs.dragmode
              }, "plot", "nested"), K.plot = function(r) {
                for (var i = r._fullLayout, a = r._fullData, l = i._subplots.gl2d, o = 0; o < l.length; o++) {
                  var y = l[o], g = i._plots[y], x = u(a, "gl2d", y), c = g._scene2d;
                  c === void 0 && (c = new P({
                    id: y,
                    graphDiv: r,
                    container: r.querySelector(".gl-container"),
                    staticPlot: r._context.staticPlot,
                    plotGlPixelRatio: r._context.plotGlPixelRatio
                  }, i), g._scene2d = c), c.plot(x, r.calcdata, i, r.layout);
                }
              }, K.clean = function(t, r, i, a) {
                for (var l = a._subplots.gl2d || [], o = 0; o < l.length; o++) {
                  var y = l[o], g = a._plots[y];
                  if (g._scene2d) {
                    var x = u(t, "gl2d", y);
                    x.length === 0 && (g._scene2d.destroy(), delete a._plots[y]);
                  }
                }
                A.clean.apply(this, arguments);
              }, K.drawFramework = function(t) {
                t._context.staticPlot || A.drawFramework(t);
              }, K.toSVG = function(t) {
                for (var r = t._fullLayout, i = r._subplots.gl2d, a = 0; a < i.length; a++) {
                  var l = r._plots[i[a]], o = l._scene2d, y = o.toImage("png"), g = r._glimages.append("svg:image");
                  g.attr({
                    xmlns: s.svg,
                    "xlink:href": y,
                    x: 0,
                    y: 0,
                    width: "100%",
                    height: "100%",
                    preserveAspectRatio: "none"
                  }), o.destroy();
                }
              }, K.updateFx = function(t) {
                for (var r = t._fullLayout, i = r._subplots.gl2d, a = 0; a < i.length; a++) {
                  var l = r._plots[i[a]]._scene2d;
                  l.updateFx(r.dragmode);
                }
              };
            }
          ),
          /***/
          27672: (
            /***/
            function(Y, K, e) {
              var b = e(33626), P = e(29714), n = e(32141), s = e(99098).gl_plot2d, T = e(99098).gl_spikes2d, A = e(99098).gl_select_box, p = e(22248), u = e(10749), t = e(77055), r = e(97464), i = e(84391), a = i.enforce, l = i.clean, o = e(32919).doAutoRange, y = e(70414), g = y.drawMode, x = y.selectMode, c = ["xaxis", "yaxis"], v, f, _ = e(54826).SUBPLOT_PATTERN;
              function S(m, L) {
                this.container = m.container, this.graphDiv = m.graphDiv, this.pixelRatio = m.plotGlPixelRatio || window.devicePixelRatio, this.id = m.id, this.staticPlot = !!m.staticPlot, this.scrollZoom = this.graphDiv._context._scrollZoom.cartesian, this.fullData = null, this.updateRefs(L), this.makeFramework(), !this.stopped && (this.glplotOptions = u(this), this.glplotOptions.merge(L), this.glplot = s(this.glplotOptions), this.camera = t(this), this.traces = {}, this.spikes = T(this.glplot), this.selectBox = A(this.glplot, {
                  innerFill: !1,
                  outerFill: !0
                }), this.lastButtonState = 0, this.pickResult = null, this.isMouseOver = !0, this.stopped = !1, this.redraw = this.draw.bind(this), this.redraw());
              }
              Y.exports = S;
              var M = S.prototype;
              M.makeFramework = function() {
                if (this.staticPlot) {
                  if (!f && (v = document.createElement("canvas"), f = p({
                    canvas: v,
                    preserveDrawingBuffer: !1,
                    premultipliedAlpha: !0,
                    antialias: !0
                  }), !f))
                    throw new Error("Error creating static canvas/context for image server");
                  this.canvas = v, this.gl = f;
                } else {
                  var m = this.container.querySelector(".gl-canvas-focus"), L = p({
                    canvas: m,
                    preserveDrawingBuffer: !0,
                    premultipliedAlpha: !0
                  });
                  if (!L) {
                    r(this), this.stopped = !0;
                    return;
                  }
                  this.canvas = m, this.gl = L;
                }
                var d = this.canvas;
                d.style.width = "100%", d.style.height = "100%", d.style.position = "absolute", d.style.top = "0px", d.style.left = "0px", d.style["pointer-events"] = "none", this.updateSize(d);
                var h = this.svgContainer = document.createElementNS("http://www.w3.org/2000/svg", "svg");
                h.style.position = "absolute", h.style.top = h.style.left = "0px", h.style.width = h.style.height = "100%", h.style["z-index"] = 20, h.style["pointer-events"] = "none";
                var E = this.mouseContainer = document.createElement("div");
                E.style.position = "absolute", E.style["pointer-events"] = "auto", this.pickCanvas = this.container.querySelector(".gl-canvas-pick");
                var w = this.container;
                w.appendChild(h), w.appendChild(E);
                var z = this;
                E.addEventListener("mouseout", function() {
                  z.isMouseOver = !1, z.unhover();
                }), E.addEventListener("mouseover", function() {
                  z.isMouseOver = !0;
                });
              }, M.toImage = function(m) {
                m || (m = "png"), this.stopped = !0, this.staticPlot && this.container.appendChild(v), this.updateSize(this.canvas);
                var L = this.glplot.gl, d = L.drawingBufferWidth, h = L.drawingBufferHeight;
                L.clearColor(1, 1, 1, 0), L.clear(L.COLOR_BUFFER_BIT | L.DEPTH_BUFFER_BIT), this.glplot.setDirty(), this.glplot.draw(), L.bindFramebuffer(L.FRAMEBUFFER, null);
                var E = new Uint8Array(d * h * 4);
                L.readPixels(0, 0, d, h, L.RGBA, L.UNSIGNED_BYTE, E);
                for (var w = 0, z = h - 1; w < z; ++w, --z)
                  for (var O = 0; O < d; ++O)
                    for (var B = 0; B < 4; ++B) {
                      var V = E[4 * (d * w + O) + B];
                      E[4 * (d * w + O) + B] = E[4 * (d * z + O) + B], E[4 * (d * z + O) + B] = V;
                    }
                var U = document.createElement("canvas");
                U.width = d, U.height = h;
                var H = U.getContext("2d", {
                  willReadFrequently: !0
                }), F = H.createImageData(d, h);
                F.data.set(E), H.putImageData(F, 0, 0);
                var G;
                switch (m) {
                  case "jpeg":
                    G = U.toDataURL("image/jpeg");
                    break;
                  case "webp":
                    G = U.toDataURL("image/webp");
                    break;
                  default:
                    G = U.toDataURL("image/png");
                }
                return this.staticPlot && this.container.removeChild(v), G;
              }, M.updateSize = function(m) {
                m || (m = this.canvas);
                var L = this.pixelRatio, d = this.fullLayout, h = d.width, E = d.height, w = Math.ceil(L * h) | 0, z = Math.ceil(L * E) | 0;
                return (m.width !== w || m.height !== z) && (m.width = w, m.height = z), m;
              }, M.computeTickMarks = function() {
                this.xaxis.setScale(), this.yaxis.setScale();
                for (var m = [P.calcTicks(this.xaxis), P.calcTicks(this.yaxis)], L = 0; L < 2; ++L)
                  for (var d = 0; d < m[L].length; ++d)
                    m[L][d].text = m[L][d].text + "";
                return m;
              };
              function C(m, L) {
                for (var d = 0; d < 2; ++d) {
                  var h = m[d], E = L[d];
                  if (h.length !== E.length) return !0;
                  for (var w = 0; w < h.length; ++w)
                    if (h[w].x !== E[w].x) return !0;
                }
                return !1;
              }
              M.updateRefs = function(m) {
                this.fullLayout = m;
                var L = this.id.match(_), d = "xaxis" + L[1], h = "yaxis" + L[2];
                this.xaxis = this.fullLayout[d], this.yaxis = this.fullLayout[h];
              }, M.relayoutCallback = function() {
                var m = this.graphDiv, L = this.xaxis, d = this.yaxis, h = m.layout, E = {}, w = E[L._name + ".range"] = L.range.slice(), z = E[d._name + ".range"] = d.range.slice();
                E[L._name + ".autorange"] = L.autorange, E[d._name + ".autorange"] = d.autorange, b.call("_storeDirectGUIEdit", m.layout, m._fullLayout._preGUI, E);
                var O = h[L._name];
                O.range = w, O.autorange = L.autorange;
                var B = h[d._name];
                B.range = z, B.autorange = d.autorange, E.lastInputTime = this.camera.lastInputTime, m.emit("plotly_relayout", E);
              }, M.cameraChanged = function() {
                var m = this.camera;
                this.glplot.setDataBox(this.calcDataBox());
                var L = this.computeTickMarks(), d = this.glplotOptions.ticks;
                C(L, d) && (this.glplotOptions.ticks = L, this.glplotOptions.dataBox = m.dataBox, this.glplot.update(this.glplotOptions), this.handleAnnotations());
              }, M.handleAnnotations = function() {
                for (var m = this.graphDiv, L = this.fullLayout.annotations, d = 0; d < L.length; d++) {
                  var h = L[d];
                  h.xref === this.xaxis._id && h.yref === this.yaxis._id && b.getComponentMethod("annotations", "drawOne")(m, d);
                }
              }, M.destroy = function() {
                if (this.glplot) {
                  var m = this.traces;
                  m && Object.keys(m).map(function(L) {
                    m[L].dispose(), delete m[L];
                  }), this.glplot.dispose(), this.container.removeChild(this.svgContainer), this.container.removeChild(this.mouseContainer), this.fullData = null, this.glplot = null, this.stopped = !0, this.camera.mouseListener.enabled = !1, this.mouseContainer.removeEventListener("wheel", this.camera.wheelListener), this.camera = null;
                }
              }, M.plot = function(m, L, d) {
                var h = this.glplot;
                this.updateRefs(d), this.xaxis.clearCalc(), this.yaxis.clearCalc(), this.updateTraces(m, L), this.updateFx(d.dragmode);
                var E = d.width, w = d.height;
                this.updateSize(this.canvas);
                var z = this.glplotOptions;
                z.merge(d), z.screenBox = [0, 0, E, w];
                var O = {
                  _fullLayout: {
                    _axisConstraintGroups: d._axisConstraintGroups,
                    xaxis: this.xaxis,
                    yaxis: this.yaxis,
                    _size: d._size
                  }
                };
                l(O, this.xaxis), l(O, this.yaxis);
                var B = d._size, V = this.xaxis.domain, U = this.yaxis.domain;
                z.viewBox = [B.l + V[0] * B.w, B.b + U[0] * B.h, E - B.r - (1 - V[1]) * B.w, w - B.t - (1 - U[1]) * B.h], this.mouseContainer.style.width = B.w * (V[1] - V[0]) + "px", this.mouseContainer.style.height = B.h * (U[1] - U[0]) + "px", this.mouseContainer.height = B.h * (U[1] - U[0]), this.mouseContainer.style.left = B.l + V[0] * B.w + "px", this.mouseContainer.style.top = B.t + (1 - U[1]) * B.h + "px";
                var H, F;
                for (F = 0; F < 2; ++F)
                  H = this[c[F]], H._length = z.viewBox[F + 2] - z.viewBox[F], o(this.graphDiv, H), H.setScale();
                a(O), z.ticks = this.computeTickMarks(), z.dataBox = this.calcDataBox(), z.merge(d), h.update(z), this.glplot.draw();
              }, M.calcDataBox = function() {
                var m = this.xaxis, L = this.yaxis, d = m.range, h = L.range, E = m.r2l, w = L.r2l;
                return [E(d[0]), w(h[0]), E(d[1]), w(h[1])];
              }, M.setRanges = function(m) {
                var L = this.xaxis, d = this.yaxis, h = L.l2r, E = d.l2r;
                L.range = [h(m[0]), h(m[2])], d.range = [E(m[1]), E(m[3])];
              }, M.updateTraces = function(m, L) {
                var d = Object.keys(this.traces), h, E, w;
                this.fullData = m;
                t: for (h = 0; h < d.length; h++) {
                  var z = d[h], O = this.traces[z];
                  for (E = 0; E < m.length; E++)
                    if (w = m[E], w.uid === z && w.type === O.type)
                      continue t;
                  O.dispose(), delete this.traces[z];
                }
                for (h = 0; h < m.length; h++) {
                  w = m[h];
                  var B = L[h], V = this.traces[w.uid];
                  V ? V.update(w, B) : (V = w._module.plot(this, w, B), this.traces[w.uid] = V);
                }
                this.glplot.objects.sort(function(U, H) {
                  return U._trace.index - H._trace.index;
                });
              }, M.updateFx = function(m) {
                x(m) || g(m) ? (this.pickCanvas.style["pointer-events"] = "none", this.mouseContainer.style["pointer-events"] = "none") : (this.pickCanvas.style["pointer-events"] = "auto", this.mouseContainer.style["pointer-events"] = "auto"), m === "pan" ? this.mouseContainer.style.cursor = "move" : m === "zoom" ? this.mouseContainer.style.cursor = "crosshair" : this.mouseContainer.style.cursor = null;
              }, M.emitPointAction = function(m, L) {
                for (var d = m.trace.uid, h = m.pointIndex, E, w = 0; w < this.fullData.length; w++)
                  this.fullData[w].uid === d && (E = this.fullData[w]);
                var z = {
                  x: m.traceCoord[0],
                  y: m.traceCoord[1],
                  curveNumber: E.index,
                  pointNumber: h,
                  data: E._input,
                  fullData: this.fullData,
                  xaxis: this.xaxis,
                  yaxis: this.yaxis
                };
                n.appendArrayPointValue(z, E, h), this.graphDiv.emit(L, {
                  points: [z]
                });
              }, M.draw = function() {
                if (!this.stopped) {
                  requestAnimationFrame(this.redraw);
                  var m = this.glplot, L = this.camera, d = L.mouseListener, h = this.lastButtonState === 1 && d.buttons === 0, E = this.fullLayout;
                  this.lastButtonState = d.buttons, this.cameraChanged();
                  var w = d.x * m.pixelRatio, z = this.canvas.height - m.pixelRatio * d.y, O;
                  if (L.boxEnabled && E.dragmode === "zoom") {
                    this.selectBox.enabled = !0;
                    for (var B = this.selectBox.selectBox = [Math.min(L.boxStart[0], L.boxEnd[0]), Math.min(L.boxStart[1], L.boxEnd[1]), Math.max(L.boxStart[0], L.boxEnd[0]), Math.max(L.boxStart[1], L.boxEnd[1])], V = 0; V < 2; V++)
                      L.boxStart[V] === L.boxEnd[V] && (B[V] = m.dataBox[V], B[V + 2] = m.dataBox[V + 2]);
                    m.setDirty();
                  } else if (!L.panning && this.isMouseOver) {
                    this.selectBox.enabled = !1;
                    var U = E._size, H = this.xaxis.domain, F = this.yaxis.domain;
                    O = m.pick(w / m.pixelRatio + U.l + H[0] * U.w, z / m.pixelRatio - (U.t + (1 - F[1]) * U.h));
                    var G = O && O.object._trace.handlePick(O);
                    if (G && h && this.emitPointAction(G, "plotly_click"), O && O.object._trace.hoverinfo !== "skip" && E.hovermode && G && (!this.lastPickResult || this.lastPickResult.traceUid !== G.trace.uid || this.lastPickResult.dataCoord[0] !== G.dataCoord[0] || this.lastPickResult.dataCoord[1] !== G.dataCoord[1])) {
                      var q = G;
                      this.lastPickResult = {
                        traceUid: G.trace ? G.trace.uid : null,
                        dataCoord: G.dataCoord.slice()
                      }, this.spikes.update({
                        center: O.dataCoord
                      }), q.screenCoord = [((m.viewBox[2] - m.viewBox[0]) * (O.dataCoord[0] - m.dataBox[0]) / (m.dataBox[2] - m.dataBox[0]) + m.viewBox[0]) / m.pixelRatio, (this.canvas.height - (m.viewBox[3] - m.viewBox[1]) * (O.dataCoord[1] - m.dataBox[1]) / (m.dataBox[3] - m.dataBox[1]) - m.viewBox[1]) / m.pixelRatio], this.emitPointAction(G, "plotly_hover");
                      var rt = this.fullData[q.trace.index] || {}, st = q.pointIndex, vt = n.castHoverinfo(rt, E, st);
                      if (vt && vt !== "all") {
                        var ht = vt.split("+");
                        ht.indexOf("x") === -1 && (q.traceCoord[0] = void 0), ht.indexOf("y") === -1 && (q.traceCoord[1] = void 0), ht.indexOf("z") === -1 && (q.traceCoord[2] = void 0), ht.indexOf("text") === -1 && (q.textLabel = void 0), ht.indexOf("name") === -1 && (q.name = void 0);
                      }
                      n.loneHover({
                        x: q.screenCoord[0],
                        y: q.screenCoord[1],
                        xLabel: this.hoverFormatter("xaxis", q.traceCoord[0]),
                        yLabel: this.hoverFormatter("yaxis", q.traceCoord[1]),
                        zLabel: q.traceCoord[2],
                        text: q.textLabel,
                        name: q.name,
                        color: n.castHoverOption(rt, st, "bgcolor") || q.color,
                        borderColor: n.castHoverOption(rt, st, "bordercolor"),
                        fontFamily: n.castHoverOption(rt, st, "font.family"),
                        fontSize: n.castHoverOption(rt, st, "font.size"),
                        fontColor: n.castHoverOption(rt, st, "font.color"),
                        nameLength: n.castHoverOption(rt, st, "namelength"),
                        textAlign: n.castHoverOption(rt, st, "align")
                      }, {
                        container: this.svgContainer,
                        gd: this.graphDiv
                      });
                    }
                  }
                  O || this.unhover(), m.draw();
                }
              }, M.unhover = function() {
                this.lastPickResult && (this.spikes.update({}), this.lastPickResult = null, this.graphDiv.emit("plotly_unhover"), n.loneUnhover(this.svgContainer));
              }, M.hoverFormatter = function(m, L) {
                if (L !== void 0) {
                  var d = this[m];
                  return P.tickText(d, d.c2l(L), "hover").text;
                }
              };
            }
          ),
          /***/
          2487: (
            /***/
            function(Y, K, e) {
              var b = e(13582).overrideAll, P = e(6811), n = e(20299), s = e(4173).KO, T = e(34809), A = e(62972), p = "gl3d", u = "scene";
              K.name = p, K.attr = u, K.idRoot = u, K.idRegex = K.attrRegex = T.counterRegex("scene"), K.attributes = e(22597), K.layoutAttributes = e(77168), K.baseLayoutAttrOverrides = b({
                hoverlabel: P.hoverlabel
              }, "plot", "nested"), K.supplyLayoutDefaults = e(15250), K.plot = function(r) {
                for (var i = r._fullLayout, a = r._fullData, l = i._subplots[p], o = 0; o < l.length; o++) {
                  var y = l[o], g = s(a, p, y), x = i[y], c = x.camera, v = x._scene;
                  v || (v = new n({
                    id: y,
                    graphDiv: r,
                    container: r.querySelector(".gl-container"),
                    staticPlot: r._context.staticPlot,
                    plotGlPixelRatio: r._context.plotGlPixelRatio,
                    camera: c
                  }, i), x._scene = v), v.viewInitial || (v.viewInitial = {
                    up: {
                      x: c.up.x,
                      y: c.up.y,
                      z: c.up.z
                    },
                    eye: {
                      x: c.eye.x,
                      y: c.eye.y,
                      z: c.eye.z
                    },
                    center: {
                      x: c.center.x,
                      y: c.center.y,
                      z: c.center.z
                    }
                  }), v.plot(g, i, r.layout);
                }
              }, K.clean = function(t, r, i, a) {
                for (var l = a._subplots[p] || [], o = 0; o < l.length; o++) {
                  var y = l[o];
                  !r[y] && a[y]._scene && (a[y]._scene.destroy(), a._infolayer && a._infolayer.selectAll(".annotation-" + y).remove());
                }
              }, K.toSVG = function(t) {
                for (var r = t._fullLayout, i = r._subplots[p], a = r._size, l = 0; l < i.length; l++) {
                  var o = r[i[l]], y = o.domain, g = o._scene, x = g.toImage("png"), c = r._glimages.append("svg:image");
                  c.attr({
                    xmlns: A.svg,
                    "xlink:href": x,
                    x: a.l + a.w * y.x[0],
                    y: a.t + a.h * (1 - y.y[1]),
                    width: a.w * (y.x[1] - y.x[0]),
                    height: a.h * (y.y[1] - y.y[0]),
                    preserveAspectRatio: "none"
                  }), g.destroy();
                }
              }, K.cleanId = function(r) {
                if (r.match(/^scene[0-9]*$/)) {
                  var i = r.substr(5);
                  return i === "1" && (i = ""), u + i;
                }
              }, K.updateFx = function(t) {
                for (var r = t._fullLayout, i = r._subplots[p], a = 0; a < i.length; a++) {
                  var l = r[i[a]]._scene;
                  l.updateFx(r.dragmode, r.hovermode);
                }
              };
            }
          ),
          /***/
          22597: (
            /***/
            function(Y) {
              Y.exports = {
                scene: {
                  valType: "subplotid",
                  dflt: "scene",
                  editType: "calc+clearAxisTypes"
                }
              };
            }
          ),
          /***/
          63397: (
            /***/
            function(Y, K, e) {
              var b = e(78766), P = e(25829), n = e(93049).extendFlat, s = e(13582).overrideAll;
              Y.exports = s({
                visible: P.visible,
                showspikes: {
                  valType: "boolean",
                  dflt: !0
                },
                spikesides: {
                  valType: "boolean",
                  dflt: !0
                },
                spikethickness: {
                  valType: "number",
                  min: 0,
                  dflt: 2
                },
                spikecolor: {
                  valType: "color",
                  dflt: b.defaultLine
                },
                showbackground: {
                  valType: "boolean",
                  dflt: !1
                },
                backgroundcolor: {
                  valType: "color",
                  dflt: "rgba(204, 204, 204, 0.5)"
                },
                showaxeslabels: {
                  valType: "boolean",
                  dflt: !0
                },
                color: P.color,
                categoryorder: P.categoryorder,
                categoryarray: P.categoryarray,
                title: {
                  text: P.title.text,
                  font: P.title.font
                },
                type: n({}, P.type, {
                  values: ["-", "linear", "log", "date", "category"]
                }),
                autotypenumbers: P.autotypenumbers,
                autorange: P.autorange,
                autorangeoptions: {
                  minallowed: P.autorangeoptions.minallowed,
                  maxallowed: P.autorangeoptions.maxallowed,
                  clipmin: P.autorangeoptions.clipmin,
                  clipmax: P.autorangeoptions.clipmax,
                  include: P.autorangeoptions.include,
                  editType: "plot"
                },
                rangemode: P.rangemode,
                minallowed: P.minallowed,
                maxallowed: P.maxallowed,
                range: n({}, P.range, {
                  items: [{
                    valType: "any",
                    editType: "plot",
                    impliedEdits: {
                      "^autorange": !1
                    }
                  }, {
                    valType: "any",
                    editType: "plot",
                    impliedEdits: {
                      "^autorange": !1
                    }
                  }],
                  anim: !1
                }),
                // ticks
                tickmode: P.minor.tickmode,
                nticks: P.nticks,
                tick0: P.tick0,
                dtick: P.dtick,
                tickvals: P.tickvals,
                ticktext: P.ticktext,
                ticks: P.ticks,
                mirror: P.mirror,
                ticklen: P.ticklen,
                tickwidth: P.tickwidth,
                tickcolor: P.tickcolor,
                showticklabels: P.showticklabels,
                labelalias: P.labelalias,
                tickfont: P.tickfont,
                tickangle: P.tickangle,
                tickprefix: P.tickprefix,
                showtickprefix: P.showtickprefix,
                ticksuffix: P.ticksuffix,
                showticksuffix: P.showticksuffix,
                showexponent: P.showexponent,
                exponentformat: P.exponentformat,
                minexponent: P.minexponent,
                separatethousands: P.separatethousands,
                tickformat: P.tickformat,
                tickformatstops: P.tickformatstops,
                hoverformat: P.hoverformat,
                // lines and grids
                showline: P.showline,
                linecolor: P.linecolor,
                linewidth: P.linewidth,
                showgrid: P.showgrid,
                gridcolor: n(
                  {},
                  P.gridcolor,
                  // shouldn't this be on-par with 2D?
                  {
                    dflt: "rgb(204, 204, 204)"
                  }
                ),
                gridwidth: P.gridwidth,
                zeroline: P.zeroline,
                zerolinecolor: P.zerolinecolor,
                zerolinewidth: P.zerolinewidth,
                _deprecated: {
                  title: P._deprecated.title,
                  titlefont: P._deprecated.titlefont
                }
              }, "plot", "from-root");
            }
          ),
          /***/
          34258: (
            /***/
            function(Y, K, e) {
              var b = e(65657).mix, P = e(34809), n = e(78032), s = e(63397), T = e(4392), A = e(97655), p = ["xaxis", "yaxis", "zaxis"], u = 100 * 136 / 187;
              Y.exports = function(r, i, a) {
                var l, o;
                function y(c, v) {
                  return P.coerce(l, o, s, c, v);
                }
                for (var g = 0; g < p.length; g++) {
                  var x = p[g];
                  l = r[x] || {}, o = n.newContainer(i, x), o._id = x[0] + a.scene, o._name = x, T(l, o, y, a), A(l, o, y, {
                    font: a.font,
                    letter: x[0],
                    data: a.data,
                    showGrid: !0,
                    noAutotickangles: !0,
                    noTicklabelindex: !0,
                    noTickson: !0,
                    noTicklabelmode: !0,
                    noTicklabelshift: !0,
                    noTicklabelstandoff: !0,
                    noTicklabelstep: !0,
                    noTicklabelposition: !0,
                    noTicklabeloverflow: !0,
                    noInsiderange: !0,
                    bgColor: a.bgColor,
                    calendar: a.calendar
                  }, a.fullLayout), y("gridcolor", b(o.color, a.bgColor, u).toRgbString()), y("title.text", x[0]), o.setScale = P.noop, y("showspikes") && (y("spikesides"), y("spikethickness"), y("spikecolor", o.color)), y("showaxeslabels"), y("showbackground") && y("backgroundcolor");
                }
              };
            }
          ),
          /***/
          95701: (
            /***/
            function(Y, K, e) {
              var b = e(55010), P = e(34809), n = ["xaxis", "yaxis", "zaxis"];
              function s() {
                this.bounds = [[-10, -10, -10], [10, 10, 10]], this.ticks = [[], [], []], this.tickEnable = [!0, !0, !0], this.tickFont = ["sans-serif", "sans-serif", "sans-serif"], this.tickSize = [12, 12, 12], this.tickFontWeight = ["normal", "normal", "normal", "normal"], this.tickFontStyle = ["normal", "normal", "normal", "normal"], this.tickFontVariant = ["normal", "normal", "normal", "normal"], this.tickAngle = [0, 0, 0], this.tickColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]], this.tickPad = [18, 18, 18], this.labels = ["x", "y", "z"], this.labelEnable = [!0, !0, !0], this.labelFont = ["Open Sans", "Open Sans", "Open Sans"], this.labelSize = [20, 20, 20], this.labelFontWeight = ["normal", "normal", "normal", "normal"], this.labelFontStyle = ["normal", "normal", "normal", "normal"], this.labelFontVariant = ["normal", "normal", "normal", "normal"], this.labelColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]], this.labelPad = [30, 30, 30], this.lineEnable = [!0, !0, !0], this.lineMirror = [!1, !1, !1], this.lineWidth = [1, 1, 1], this.lineColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]], this.lineTickEnable = [!0, !0, !0], this.lineTickMirror = [!1, !1, !1], this.lineTickLength = [10, 10, 10], this.lineTickWidth = [1, 1, 1], this.lineTickColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]], this.gridEnable = [!0, !0, !0], this.gridWidth = [1, 1, 1], this.gridColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]], this.zeroEnable = [!0, !0, !0], this.zeroLineColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]], this.zeroLineWidth = [2, 2, 2], this.backgroundEnable = [!0, !0, !0], this.backgroundColor = [[0.8, 0.8, 0.8, 0.5], [0.8, 0.8, 0.8, 0.5], [0.8, 0.8, 0.8, 0.5]], this._defaultTickPad = this.tickPad.slice(), this._defaultLabelPad = this.labelPad.slice(), this._defaultLineTickLength = this.lineTickLength.slice();
              }
              var T = s.prototype;
              T.merge = function(p, u) {
                for (var t = this, r = 0; r < 3; ++r) {
                  var i = u[n[r]];
                  if (!i.visible) {
                    t.tickEnable[r] = !1, t.labelEnable[r] = !1, t.lineEnable[r] = !1, t.lineTickEnable[r] = !1, t.gridEnable[r] = !1, t.zeroEnable[r] = !1, t.backgroundEnable[r] = !1;
                    continue;
                  }
                  t.labels[r] = p._meta ? P.templateString(i.title.text, p._meta) : i.title.text, "font" in i.title && (i.title.font.color && (t.labelColor[r] = b(i.title.font.color)), i.title.font.family && (t.labelFont[r] = i.title.font.family), i.title.font.size && (t.labelSize[r] = i.title.font.size), i.title.font.weight && (t.labelFontWeight[r] = i.title.font.weight), i.title.font.style && (t.labelFontStyle[r] = i.title.font.style), i.title.font.variant && (t.labelFontVariant[r] = i.title.font.variant)), "showline" in i && (t.lineEnable[r] = i.showline), "linecolor" in i && (t.lineColor[r] = b(i.linecolor)), "linewidth" in i && (t.lineWidth[r] = i.linewidth), "showgrid" in i && (t.gridEnable[r] = i.showgrid), "gridcolor" in i && (t.gridColor[r] = b(i.gridcolor)), "gridwidth" in i && (t.gridWidth[r] = i.gridwidth), i.type === "log" ? t.zeroEnable[r] = !1 : "zeroline" in i && (t.zeroEnable[r] = i.zeroline), "zerolinecolor" in i && (t.zeroLineColor[r] = b(i.zerolinecolor)), "zerolinewidth" in i && (t.zeroLineWidth[r] = i.zerolinewidth), "ticks" in i && i.ticks ? t.lineTickEnable[r] = !0 : t.lineTickEnable[r] = !1, "ticklen" in i && (t.lineTickLength[r] = t._defaultLineTickLength[r] = i.ticklen), "tickcolor" in i && (t.lineTickColor[r] = b(i.tickcolor)), "tickwidth" in i && (t.lineTickWidth[r] = i.tickwidth), "tickangle" in i && (t.tickAngle[r] = i.tickangle === "auto" ? -3600 : (
                    // i.e. special number to set auto option
                    Math.PI * -i.tickangle / 180
                  )), "showticklabels" in i && (t.tickEnable[r] = i.showticklabels), "tickfont" in i && (i.tickfont.color && (t.tickColor[r] = b(i.tickfont.color)), i.tickfont.family && (t.tickFont[r] = i.tickfont.family), i.tickfont.size && (t.tickSize[r] = i.tickfont.size), i.tickfont.weight && (t.tickFontWeight[r] = i.tickfont.weight), i.tickfont.style && (t.tickFontStyle[r] = i.tickfont.style), i.tickfont.variant && (t.tickFontVariant[r] = i.tickfont.variant)), "mirror" in i ? ["ticks", "all", "allticks"].indexOf(i.mirror) !== -1 ? (t.lineTickMirror[r] = !0, t.lineMirror[r] = !0) : i.mirror === !0 ? (t.lineTickMirror[r] = !1, t.lineMirror[r] = !0) : (t.lineTickMirror[r] = !1, t.lineMirror[r] = !1) : t.lineMirror[r] = !1, "showbackground" in i && i.showbackground !== !1 ? (t.backgroundEnable[r] = !0, t.backgroundColor[r] = b(i.backgroundcolor)) : t.backgroundEnable[r] = !1;
                }
              };
              function A(p, u) {
                var t = new s();
                return t.merge(p, u), t;
              }
              Y.exports = A;
            }
          ),
          /***/
          15250: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(78766), n = e(33626), s = e(4448), T = e(34258), A = e(77168), p = e(4173).KO, u = "gl3d";
              Y.exports = function(i, a, l) {
                var o = a._basePlotModules.length > 1;
                function y(g) {
                  if (!o) {
                    var x = b.validate(i[g], A[g]);
                    if (x) return i[g];
                  }
                }
                s(i, a, l, {
                  type: u,
                  attributes: A,
                  handleDefaults: t,
                  fullLayout: a,
                  font: a.font,
                  fullData: l,
                  getDfltFromLayout: y,
                  autotypenumbersDflt: a.autotypenumbers,
                  paper_bgcolor: a.paper_bgcolor,
                  calendar: a.calendar
                });
              };
              function t(r, i, a, l) {
                for (var o = a("bgcolor"), y = P.combine(o, l.paper_bgcolor), g = ["up", "center", "eye"], x = 0; x < g.length; x++)
                  a("camera." + g[x] + ".x"), a("camera." + g[x] + ".y"), a("camera." + g[x] + ".z");
                a("camera.projection.type");
                var c = !!a("aspectratio.x") && !!a("aspectratio.y") && !!a("aspectratio.z"), v = c ? "manual" : "auto", f = a("aspectmode", v);
                c || (r.aspectratio = i.aspectratio = {
                  x: 1,
                  y: 1,
                  z: 1
                }, f === "manual" && (i.aspectmode = "auto"), r.aspectmode = i.aspectmode);
                var _ = p(l.fullData, u, l.id);
                T(r, i, {
                  font: l.font,
                  scene: l.id,
                  data: _,
                  bgColor: y,
                  calendar: l.calendar,
                  autotypenumbersDflt: l.autotypenumbersDflt,
                  fullLayout: l.fullLayout
                }), n.getComponentMethod("annotations3d", "handleDefaults")(r, i, l);
                var S = l.getDfltFromLayout("dragmode");
                if (S !== !1 && !S)
                  if (S = "orbit", r.camera && r.camera.up) {
                    var M = r.camera.up.x, C = r.camera.up.y, m = r.camera.up.z;
                    m !== 0 && (!M || !C || !m || m / Math.sqrt(M * M + C * C + m * m) > 0.999) && (S = "turntable");
                  } else
                    S = "turntable";
                a("dragmode", S), a("hovermode", l.getDfltFromLayout("hovermode"));
              }
            }
          ),
          /***/
          77168: (
            /***/
            function(Y, K, e) {
              var b = e(63397), P = e(13792).u, n = e(93049).extendFlat, s = e(34809).counterRegex;
              function T(A, p, u) {
                return {
                  x: {
                    valType: "number",
                    dflt: A,
                    editType: "camera"
                  },
                  y: {
                    valType: "number",
                    dflt: p,
                    editType: "camera"
                  },
                  z: {
                    valType: "number",
                    dflt: u,
                    editType: "camera"
                  },
                  editType: "camera"
                };
              }
              Y.exports = {
                _arrayAttrRegexps: [s("scene", ".annotations", !0)],
                bgcolor: {
                  valType: "color",
                  dflt: "rgba(0,0,0,0)",
                  editType: "plot"
                },
                camera: {
                  up: n(T(0, 0, 1), {}),
                  center: n(T(0, 0, 0), {}),
                  eye: n(T(1.25, 1.25, 1.25), {}),
                  projection: {
                    type: {
                      valType: "enumerated",
                      values: ["perspective", "orthographic"],
                      dflt: "perspective",
                      editType: "calc"
                    },
                    editType: "calc"
                  },
                  editType: "camera"
                },
                domain: P({
                  name: "scene",
                  editType: "plot"
                }),
                aspectmode: {
                  valType: "enumerated",
                  values: ["auto", "cube", "data", "manual"],
                  dflt: "auto",
                  editType: "plot",
                  impliedEdits: {
                    "aspectratio.x": void 0,
                    "aspectratio.y": void 0,
                    "aspectratio.z": void 0
                  }
                },
                aspectratio: {
                  // must be positive (0's are coerced to 1)
                  x: {
                    valType: "number",
                    min: 0,
                    editType: "plot",
                    impliedEdits: {
                      "^aspectmode": "manual"
                    }
                  },
                  y: {
                    valType: "number",
                    min: 0,
                    editType: "plot",
                    impliedEdits: {
                      "^aspectmode": "manual"
                    }
                  },
                  z: {
                    valType: "number",
                    min: 0,
                    editType: "plot",
                    impliedEdits: {
                      "^aspectmode": "manual"
                    }
                  },
                  editType: "plot",
                  impliedEdits: {
                    aspectmode: "manual"
                  }
                },
                xaxis: b,
                yaxis: b,
                zaxis: b,
                dragmode: {
                  valType: "enumerated",
                  values: ["orbit", "turntable", "zoom", "pan", !1],
                  editType: "plot"
                },
                hovermode: {
                  valType: "enumerated",
                  values: ["closest", !1],
                  dflt: "closest",
                  editType: "modebar"
                },
                uirevision: {
                  valType: "any",
                  editType: "none"
                },
                editType: "plot",
                _deprecated: {
                  cameraposition: {
                    valType: "info_array",
                    editType: "camera"
                  }
                }
              };
            }
          ),
          /***/
          64087: (
            /***/
            function(Y, K, e) {
              var b = e(55010), P = ["xaxis", "yaxis", "zaxis"];
              function n() {
                this.enabled = [!0, !0, !0], this.colors = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]], this.drawSides = [!0, !0, !0], this.lineWidth = [1, 1, 1];
              }
              var s = n.prototype;
              s.merge = function(A) {
                for (var p = 0; p < 3; ++p) {
                  var u = A[P[p]];
                  if (!u.visible) {
                    this.enabled[p] = !1, this.drawSides[p] = !1;
                    continue;
                  }
                  this.enabled[p] = u.showspikes, this.colors[p] = b(u.spikecolor), this.drawSides[p] = u.spikesides, this.lineWidth[p] = u.spikethickness;
                }
              };
              function T(A) {
                var p = new n();
                return p.merge(A), p;
              }
              Y.exports = T;
            }
          ),
          /***/
          32412: (
            /***/
            function(Y, K, e) {
              Y.exports = T;
              var b = e(29714), P = e(34809), n = ["xaxis", "yaxis", "zaxis"];
              function s(A) {
                for (var p = new Array(3), u = 0; u < 3; ++u) {
                  for (var t = A[u], r = new Array(t.length), i = 0; i < t.length; ++i)
                    r[i] = t[i].x;
                  p[u] = r;
                }
                return p;
              }
              function T(A) {
                for (var p = A.axesOptions, u = A.glplot.axesPixels, t = A.fullSceneLayout, r = [[], [], []], i = 0; i < 3; ++i) {
                  var a = t[n[i]];
                  if (a._length = (u[i].hi - u[i].lo) * u[i].pixelsPerDataUnit / A.dataScale[i], Math.abs(a._length) === 1 / 0 || isNaN(a._length))
                    r[i] = [];
                  else {
                    a._input_range = a.range.slice(), a.range[0] = u[i].lo / A.dataScale[i], a.range[1] = u[i].hi / A.dataScale[i], a._m = 1 / (A.dataScale[i] * u[i].pixelsPerDataUnit), a.range[0] === a.range[1] && (a.range[0] -= 1, a.range[1] += 1);
                    var l = a.tickmode;
                    if (a.tickmode === "auto") {
                      a.tickmode = "linear";
                      var o = a.nticks || P.constrain(a._length / 40, 4, 9);
                      b.autoTicks(a, Math.abs(a.range[1] - a.range[0]) / o);
                    }
                    for (var y = b.calcTicks(a, {
                      msUTC: !0
                    }), g = 0; g < y.length; ++g)
                      y[g].x = y[g].x * A.dataScale[i], a.type === "date" && (y[g].text = y[g].text.replace(/\<br\>/g, " "));
                    r[i] = y, a.tickmode = l;
                  }
                }
                p.ticks = r;
                for (var i = 0; i < 3; ++i) {
                  0.5 * (A.glplot.bounds[0][i] + A.glplot.bounds[1][i]);
                  for (var g = 0; g < 2; ++g)
                    p.bounds[g][i] = A.glplot.bounds[g][i];
                }
                A.contourLevels = s(r);
              }
            }
          ),
          /***/
          25802: (
            /***/
            function(Y) {
              function K(b, P) {
                var n = [0, 0, 0, 0], s, T;
                for (s = 0; s < 4; ++s)
                  for (T = 0; T < 4; ++T)
                    n[T] += b[4 * s + T] * P[s];
                return n;
              }
              function e(b, P) {
                var n = K(b.projection, K(b.view, K(b.model, [P[0], P[1], P[2], 1])));
                return n;
              }
              Y.exports = e;
            }
          ),
          /***/
          20299: (
            /***/
            function(Y, K, e) {
              var b = e(99098).gl_plot3d, P = b.createCamera, n = b.createScene, s = e(22248), T = e(74043), A = e(33626), p = e(34809), u = p.preserveDrawingBuffer(), t = e(29714), r = e(32141), i = e(55010), a = e(97464), l = e(25802), o = e(95701), y = e(64087), g = e(32412), x = e(32919).applyAutorangeOptions, c, v, f = !1;
              function _(z, O) {
                var B = document.createElement("div"), V = z.container;
                this.graphDiv = z.graphDiv;
                var U = document.createElementNS("http://www.w3.org/2000/svg", "svg");
                U.style.position = "absolute", U.style.top = U.style.left = "0px", U.style.width = U.style.height = "100%", U.style["z-index"] = 20, U.style["pointer-events"] = "none", B.appendChild(U), this.svgContainer = U, B.id = z.id, B.style.position = "absolute", B.style.top = B.style.left = "0px", B.style.width = B.style.height = "100%", V.appendChild(B), this.fullLayout = O, this.id = z.id || "scene", this.fullSceneLayout = O[this.id], this.plotArgs = [[], {}, {}], this.axesOptions = o(O, O[this.id]), this.spikeOptions = y(O[this.id]), this.container = B, this.staticMode = !!z.staticPlot, this.pixelRatio = this.pixelRatio || z.plotGlPixelRatio || 2, this.dataScale = [1, 1, 1], this.contourLevels = [[], [], []], this.convertAnnotations = A.getComponentMethod("annotations3d", "convert"), this.drawAnnotations = A.getComponentMethod("annotations3d", "draw"), this.initializeGLPlot();
              }
              var S = _.prototype;
              S.prepareOptions = function() {
                var z = this, O = {
                  canvas: z.canvas,
                  gl: z.gl,
                  glOptions: {
                    preserveDrawingBuffer: u,
                    premultipliedAlpha: !0,
                    antialias: !0
                  },
                  container: z.container,
                  axes: z.axesOptions,
                  spikes: z.spikeOptions,
                  pickRadius: 10,
                  snapToData: !0,
                  autoScale: !0,
                  autoBounds: !1,
                  cameraObject: z.camera,
                  pixelRatio: z.pixelRatio
                };
                if (z.staticMode) {
                  if (!v && (c = document.createElement("canvas"), v = s({
                    canvas: c,
                    preserveDrawingBuffer: !0,
                    premultipliedAlpha: !0,
                    antialias: !0
                  }), !v))
                    throw new Error("error creating static canvas/context for image server");
                  O.gl = v, O.canvas = c;
                }
                return O;
              };
              var M = !0;
              S.tryCreatePlot = function() {
                var z = this, O = z.prepareOptions(), B = !0;
                try {
                  z.glplot = n(O);
                } catch {
                  if (z.staticMode || !M || u)
                    B = !1;
                  else {
                    p.warn(["webgl setup failed possibly due to", "false preserveDrawingBuffer config.", "The mobile/tablet device may not be detected by is-mobile module.", "Enabling preserveDrawingBuffer in second attempt to create webgl scene..."].join(" "));
                    try {
                      u = O.glOptions.preserveDrawingBuffer = !0, z.glplot = n(O);
                    } catch {
                      u = O.glOptions.preserveDrawingBuffer = !1, B = !1;
                    }
                  }
                }
                return M = !1, B;
              }, S.initializeGLCamera = function() {
                var z = this, O = z.fullSceneLayout.camera, B = O.projection.type === "orthographic";
                z.camera = P(z.container, {
                  center: [O.center.x, O.center.y, O.center.z],
                  eye: [O.eye.x, O.eye.y, O.eye.z],
                  up: [O.up.x, O.up.y, O.up.z],
                  _ortho: B,
                  zoomMin: 0.01,
                  zoomMax: 100,
                  mode: "orbit"
                });
              }, S.initializeGLPlot = function() {
                var z = this;
                z.initializeGLCamera();
                var O = z.tryCreatePlot();
                if (!O) return a(z);
                z.traces = {}, z.make4thDimension();
                var B = z.graphDiv, V = B.layout, U = function() {
                  var F = {};
                  return z.isCameraChanged(V) && (F[z.id + ".camera"] = z.getCamera()), z.isAspectChanged(V) && (F[z.id + ".aspectratio"] = z.glplot.getAspectratio(), V[z.id].aspectmode !== "manual" && (z.fullSceneLayout.aspectmode = V[z.id].aspectmode = F[z.id + ".aspectmode"] = "manual")), F;
                }, H = function(F) {
                  if (F.fullSceneLayout.dragmode !== !1) {
                    var G = U();
                    F.saveLayout(V), F.graphDiv.emit("plotly_relayout", G);
                  }
                };
                return z.glplot.canvas && (z.glplot.canvas.addEventListener("mouseup", function() {
                  H(z);
                }), z.glplot.canvas.addEventListener("touchstart", function() {
                  f = !0;
                }), z.glplot.canvas.addEventListener("wheel", function(F) {
                  if (B._context._scrollZoom.gl3d) {
                    if (z.camera._ortho) {
                      var G = F.deltaX > F.deltaY ? 1.1 : 0.9090909090909091, q = z.glplot.getAspectratio();
                      z.glplot.setAspectratio({
                        x: G * q.x,
                        y: G * q.y,
                        z: G * q.z
                      });
                    }
                    H(z);
                  }
                }, T ? {
                  passive: !1
                } : !1), z.glplot.canvas.addEventListener("mousemove", function() {
                  if (z.fullSceneLayout.dragmode !== !1 && z.camera.mouseListener.buttons !== 0) {
                    var F = U();
                    z.graphDiv.emit("plotly_relayouting", F);
                  }
                }), z.staticMode || z.glplot.canvas.addEventListener("webglcontextlost", function(F) {
                  B && B.emit && B.emit("plotly_webglcontextlost", {
                    event: F,
                    layer: z.id
                  });
                }, !1)), z.glplot.oncontextloss = function() {
                  z.recoverContext();
                }, z.glplot.onrender = function() {
                  z.render();
                }, !0;
              }, S.render = function() {
                var z = this, O = z.graphDiv, B, V = z.svgContainer, U = z.container.getBoundingClientRect();
                O._fullLayout._calcInverseTransform(O);
                var H = O._fullLayout._invScaleX, F = O._fullLayout._invScaleY, G = U.width * H, q = U.height * F;
                V.setAttributeNS(null, "viewBox", "0 0 " + G + " " + q), V.setAttributeNS(null, "width", G), V.setAttributeNS(null, "height", q), g(z), z.glplot.axes.update(z.axesOptions);
                for (var rt = Object.keys(z.traces), st = null, vt = z.glplot.selection, ht = 0; ht < rt.length; ++ht)
                  B = z.traces[rt[ht]], B.data.hoverinfo !== "skip" && B.handlePick(vt) && (st = B), B.setContourLevels && B.setContourLevels();
                function et(Gt, Jt, Qt) {
                  var Vt = z.fullSceneLayout[Gt + "axis"];
                  return Vt.type !== "log" && (Jt = Vt.d2l(Jt)), t.hoverLabelText(Vt, Jt, Qt);
                }
                if (st !== null) {
                  var Q = l(z.glplot.cameraParams, vt.dataCoordinate);
                  B = st.data;
                  var j = O._fullData[B.index], at = vt.index, ut = {
                    xLabel: et("x", vt.traceCoordinate[0], B.xhoverformat),
                    yLabel: et("y", vt.traceCoordinate[1], B.yhoverformat),
                    zLabel: et("z", vt.traceCoordinate[2], B.zhoverformat)
                  }, nt = r.castHoverinfo(j, z.fullLayout, at), X = (nt || "").split("+"), ct = nt && nt === "all";
                  !j.hovertemplate && !ct && (X.indexOf("x") === -1 && (ut.xLabel = void 0), X.indexOf("y") === -1 && (ut.yLabel = void 0), X.indexOf("z") === -1 && (ut.zLabel = void 0), X.indexOf("text") === -1 && (vt.textLabel = void 0), X.indexOf("name") === -1 && (st.name = void 0));
                  var lt, pt = [];
                  B.type === "cone" || B.type === "streamtube" ? (ut.uLabel = et("x", vt.traceCoordinate[3], B.uhoverformat), (ct || X.indexOf("u") !== -1) && pt.push("u: " + ut.uLabel), ut.vLabel = et("y", vt.traceCoordinate[4], B.vhoverformat), (ct || X.indexOf("v") !== -1) && pt.push("v: " + ut.vLabel), ut.wLabel = et("z", vt.traceCoordinate[5], B.whoverformat), (ct || X.indexOf("w") !== -1) && pt.push("w: " + ut.wLabel), ut.normLabel = vt.traceCoordinate[6].toPrecision(3), (ct || X.indexOf("norm") !== -1) && pt.push("norm: " + ut.normLabel), B.type === "streamtube" && (ut.divergenceLabel = vt.traceCoordinate[7].toPrecision(3), (ct || X.indexOf("divergence") !== -1) && pt.push("divergence: " + ut.divergenceLabel)), vt.textLabel && pt.push(vt.textLabel), lt = pt.join("<br>")) : B.type === "isosurface" || B.type === "volume" ? (ut.valueLabel = t.hoverLabelText(z._mockAxis, z._mockAxis.d2l(vt.traceCoordinate[3]), B.valuehoverformat), pt.push("value: " + ut.valueLabel), vt.textLabel && pt.push(vt.textLabel), lt = pt.join("<br>")) : lt = vt.textLabel;
                  var wt = {
                    x: vt.traceCoordinate[0],
                    y: vt.traceCoordinate[1],
                    z: vt.traceCoordinate[2],
                    data: j._input,
                    fullData: j,
                    curveNumber: j.index,
                    pointNumber: at
                  };
                  r.appendArrayPointValue(wt, j, at), B._module.eventData && (wt = j._module.eventData(wt, vt, j, {}, at));
                  var Et = {
                    points: [wt]
                  };
                  if (z.fullSceneLayout.hovermode) {
                    var Ct = [];
                    r.loneHover({
                      trace: j,
                      x: (0.5 + 0.5 * Q[0] / Q[3]) * G,
                      y: (0.5 - 0.5 * Q[1] / Q[3]) * q,
                      xLabel: ut.xLabel,
                      yLabel: ut.yLabel,
                      zLabel: ut.zLabel,
                      text: lt,
                      name: st.name,
                      color: r.castHoverOption(j, at, "bgcolor") || st.color,
                      borderColor: r.castHoverOption(j, at, "bordercolor"),
                      fontFamily: r.castHoverOption(j, at, "font.family"),
                      fontSize: r.castHoverOption(j, at, "font.size"),
                      fontColor: r.castHoverOption(j, at, "font.color"),
                      nameLength: r.castHoverOption(j, at, "namelength"),
                      textAlign: r.castHoverOption(j, at, "align"),
                      hovertemplate: p.castOption(j, at, "hovertemplate"),
                      hovertemplateLabels: p.extendFlat({}, wt, ut),
                      eventData: [wt]
                    }, {
                      container: V,
                      gd: O,
                      inOut_bbox: Ct
                    }), wt.bbox = Ct[0];
                  }
                  vt.distance < 5 && (vt.buttons || f) ? O.emit("plotly_click", Et) : O.emit("plotly_hover", Et), this.oldEventData = Et;
                } else
                  r.loneUnhover(V), this.oldEventData && O.emit("plotly_unhover", this.oldEventData), this.oldEventData = void 0;
                z.drawAnnotations(z);
              }, S.recoverContext = function() {
                var z = this;
                z.glplot.dispose();
                var O = function() {
                  if (z.glplot.gl.isContextLost()) {
                    requestAnimationFrame(O);
                    return;
                  }
                  if (!z.initializeGLPlot()) {
                    p.error("Catastrophic and unrecoverable WebGL error. Context lost.");
                    return;
                  }
                  z.plot.apply(z, z.plotArgs);
                };
                requestAnimationFrame(O);
              };
              var C = ["xaxis", "yaxis", "zaxis"];
              function m(z, O, B) {
                for (var V = z.fullSceneLayout, U = 0; U < 3; U++) {
                  var H = C[U], F = H.charAt(0), G = V[H], q = O[F], rt = O[F + "calendar"], st = O["_" + F + "length"];
                  if (!p.isArrayOrTypedArray(q))
                    B[0][U] = Math.min(B[0][U], 0), B[1][U] = Math.max(B[1][U], st - 1);
                  else
                    for (var vt, ht = 0; ht < (st || q.length); ht++)
                      if (p.isArrayOrTypedArray(q[ht]))
                        for (var et = 0; et < q[ht].length; ++et)
                          vt = G.d2l(q[ht][et], 0, rt), !isNaN(vt) && isFinite(vt) && (B[0][U] = Math.min(B[0][U], vt), B[1][U] = Math.max(B[1][U], vt));
                      else
                        vt = G.d2l(q[ht], 0, rt), !isNaN(vt) && isFinite(vt) && (B[0][U] = Math.min(B[0][U], vt), B[1][U] = Math.max(B[1][U], vt));
                }
              }
              function L(z, O) {
                for (var B = z.fullSceneLayout, V = B.annotations || [], U = 0; U < 3; U++)
                  for (var H = C[U], F = H.charAt(0), G = B[H], q = 0; q < V.length; q++) {
                    var rt = V[q];
                    if (rt.visible) {
                      var st = G.r2l(rt[F]);
                      !isNaN(st) && isFinite(st) && (O[0][U] = Math.min(O[0][U], st), O[1][U] = Math.max(O[1][U], st));
                    }
                  }
              }
              S.plot = function(z, O, B) {
                var V = this;
                if (V.plotArgs = [z, O, B], !V.glplot.contextLost) {
                  var U, H, F, G, q, rt, st = O[V.id], vt = B[V.id];
                  V.fullLayout = O, V.fullSceneLayout = st, V.axesOptions.merge(O, st), V.spikeOptions.merge(st), V.setViewport(st), V.updateFx(st.dragmode, st.hovermode), V.camera.enableWheel = V.graphDiv._context._scrollZoom.gl3d, V.glplot.setClearColor(i(st.bgcolor)), V.setConvert(q), z ? Array.isArray(z) || (z = [z]) : z = [];
                  var ht = [[1 / 0, 1 / 0, 1 / 0], [-1 / 0, -1 / 0, -1 / 0]];
                  for (F = 0; F < z.length; ++F)
                    U = z[F], !(U.visible !== !0 || U._length === 0) && m(this, U, ht);
                  L(this, ht);
                  var et = [1, 1, 1];
                  for (G = 0; G < 3; ++G)
                    ht[1][G] === ht[0][G] ? et[G] = 1 : et[G] = 1 / (ht[1][G] - ht[0][G]);
                  for (V.dataScale = et, V.convertAnnotations(this), F = 0; F < z.length; ++F)
                    U = z[F], !(U.visible !== !0 || U._length === 0) && (H = V.traces[U.uid], H ? H.data.type === U.type ? H.update(U) : (H.dispose(), H = U._module.plot(this, U), V.traces[U.uid] = H) : (H = U._module.plot(this, U), V.traces[U.uid] = H), H.name = U.name);
                  var Q = Object.keys(V.traces);
                  t: for (F = 0; F < Q.length; ++F) {
                    for (G = 0; G < z.length; ++G)
                      if (z[G].uid === Q[F] && z[G].visible === !0 && z[G]._length !== 0)
                        continue t;
                    H = V.traces[Q[F]], H.dispose(), delete V.traces[Q[F]];
                  }
                  V.glplot.objects.sort(function(_e, ce) {
                    return _e._trace.data.index - ce._trace.data.index;
                  });
                  var j = [[0, 0, 0], [0, 0, 0]], at = {};
                  for (F = 0; F < 3; ++F) {
                    q = st[C[F]], rt = q.type, rt in at ? (at[rt].acc *= et[F], at[rt].count += 1) : at[rt] = {
                      acc: et[F],
                      count: 1
                    };
                    var ut;
                    if (q.autorange) {
                      j[0][F] = 1 / 0, j[1][F] = -1 / 0;
                      var nt = V.glplot.objects, X = V.fullSceneLayout.annotations || [], ct = q._name.charAt(0);
                      for (G = 0; G < nt.length; G++) {
                        var lt = nt[G], pt = lt.bounds, wt = lt._trace.data._pad || 0;
                        lt.constructor.name === "ErrorBars" && q._lowerLogErrorBound ? j[0][F] = Math.min(j[0][F], q._lowerLogErrorBound) : j[0][F] = Math.min(j[0][F], pt[0][F] / et[F] - wt), j[1][F] = Math.max(j[1][F], pt[1][F] / et[F] + wt);
                      }
                      for (G = 0; G < X.length; G++) {
                        var Et = X[G];
                        if (Et.visible) {
                          var Ct = q.r2l(Et[ct]);
                          j[0][F] = Math.min(j[0][F], Ct), j[1][F] = Math.max(j[1][F], Ct);
                        }
                      }
                      if ("rangemode" in q && q.rangemode === "tozero" && (j[0][F] = Math.min(j[0][F], 0), j[1][F] = Math.max(j[1][F], 0)), j[0][F] > j[1][F])
                        j[0][F] = -1, j[1][F] = 1;
                      else {
                        var Gt = j[1][F] - j[0][F];
                        j[0][F] -= Gt / 32, j[1][F] += Gt / 32;
                      }
                      if (ut = [j[0][F], j[1][F]], ut = x(ut, q), j[0][F] = ut[0], j[1][F] = ut[1], q.isReversed()) {
                        var Jt = j[0][F];
                        j[0][F] = j[1][F], j[1][F] = Jt;
                      }
                    } else
                      ut = q.range, j[0][F] = q.r2l(ut[0]), j[1][F] = q.r2l(ut[1]);
                    j[0][F] === j[1][F] && (j[0][F] -= 1, j[1][F] += 1), q.range = [j[0][F], j[1][F]], q.limitRange(), V.glplot.setBounds(F, {
                      min: q.range[0] * et[F],
                      max: q.range[1] * et[F]
                    });
                  }
                  var Qt, Vt = st.aspectmode;
                  if (Vt === "cube")
                    Qt = [1, 1, 1];
                  else if (Vt === "manual") {
                    var zt = st.aspectratio;
                    Qt = [zt.x, zt.y, zt.z];
                  } else if (Vt === "auto" || Vt === "data") {
                    var Rt = [1, 1, 1];
                    for (F = 0; F < 3; ++F) {
                      q = st[C[F]], rt = q.type;
                      var Wt = at[rt];
                      Rt[F] = Math.pow(Wt.acc, 1 / Wt.count) / et[F];
                    }
                    Vt === "data" || Math.max.apply(null, Rt) / Math.min.apply(null, Rt) <= 4 ? Qt = Rt : Qt = [1, 1, 1];
                  } else
                    throw new Error("scene.js aspectRatio was not one of the enumerated types");
                  st.aspectratio.x = vt.aspectratio.x = Qt[0], st.aspectratio.y = vt.aspectratio.y = Qt[1], st.aspectratio.z = vt.aspectratio.z = Qt[2], V.glplot.setAspectratio(st.aspectratio), V.viewInitial.aspectratio || (V.viewInitial.aspectratio = {
                    x: st.aspectratio.x,
                    y: st.aspectratio.y,
                    z: st.aspectratio.z
                  }), V.viewInitial.aspectmode || (V.viewInitial.aspectmode = st.aspectmode);
                  var kt = st.domain || null, re = O._size || null;
                  if (kt && re) {
                    var ge = V.container.style;
                    ge.position = "absolute", ge.left = re.l + kt.x[0] * re.w + "px", ge.top = re.t + (1 - kt.y[1]) * re.h + "px", ge.width = re.w * (kt.x[1] - kt.x[0]) + "px", ge.height = re.h * (kt.y[1] - kt.y[0]) + "px";
                  }
                  V.glplot.redraw();
                }
              }, S.destroy = function() {
                var z = this;
                z.glplot && (z.camera.mouseListener.enabled = !1, z.container.removeEventListener("wheel", z.camera.wheelListener), z.camera = null, z.glplot.dispose(), z.container.parentNode.removeChild(z.container), z.glplot = null);
              };
              function d(z) {
                return [[z.eye.x, z.eye.y, z.eye.z], [z.center.x, z.center.y, z.center.z], [z.up.x, z.up.y, z.up.z]];
              }
              function h(z) {
                return {
                  up: {
                    x: z.up[0],
                    y: z.up[1],
                    z: z.up[2]
                  },
                  center: {
                    x: z.center[0],
                    y: z.center[1],
                    z: z.center[2]
                  },
                  eye: {
                    x: z.eye[0],
                    y: z.eye[1],
                    z: z.eye[2]
                  },
                  projection: {
                    type: z._ortho === !0 ? "orthographic" : "perspective"
                  }
                };
              }
              S.getCamera = function() {
                var z = this;
                return z.camera.view.recalcMatrix(z.camera.view.lastT()), h(z.camera);
              }, S.setViewport = function(z) {
                var O = this, B = z.camera;
                O.camera.lookAt.apply(this, d(B)), O.glplot.setAspectratio(z.aspectratio);
                var V = B.projection.type === "orthographic", U = O.camera._ortho;
                V !== U && (O.glplot.redraw(), O.glplot.clearRGBA(), O.glplot.dispose(), O.initializeGLPlot());
              }, S.isCameraChanged = function(z) {
                var O = this, B = O.getCamera(), V = p.nestedProperty(z, O.id + ".camera"), U = V.get();
                function H(rt, st, vt, ht) {
                  var et = ["up", "center", "eye"], Q = ["x", "y", "z"];
                  return st[et[vt]] && rt[et[vt]][Q[ht]] === st[et[vt]][Q[ht]];
                }
                var F = !1;
                if (U === void 0)
                  F = !0;
                else {
                  for (var G = 0; G < 3; G++)
                    for (var q = 0; q < 3; q++)
                      if (!H(B, U, G, q)) {
                        F = !0;
                        break;
                      }
                  (!U.projection || B.projection && B.projection.type !== U.projection.type) && (F = !0);
                }
                return F;
              }, S.isAspectChanged = function(z) {
                var O = this, B = O.glplot.getAspectratio(), V = p.nestedProperty(z, O.id + ".aspectratio"), U = V.get();
                return U === void 0 || U.x !== B.x || U.y !== B.y || U.z !== B.z;
              }, S.saveLayout = function(z) {
                var O = this, B = O.fullLayout, V, U, H, F, G, q, rt = O.isCameraChanged(z), st = O.isAspectChanged(z), vt = rt || st;
                if (vt) {
                  var ht = {};
                  if (rt && (V = O.getCamera(), U = p.nestedProperty(z, O.id + ".camera"), H = U.get(), ht[O.id + ".camera"] = H), st && (F = O.glplot.getAspectratio(), G = p.nestedProperty(z, O.id + ".aspectratio"), q = G.get(), ht[O.id + ".aspectratio"] = q), A.call("_storeDirectGUIEdit", z, B._preGUI, ht), rt) {
                    U.set(V);
                    var et = p.nestedProperty(B, O.id + ".camera");
                    et.set(V);
                  }
                  if (st) {
                    G.set(F);
                    var Q = p.nestedProperty(B, O.id + ".aspectratio");
                    Q.set(F), O.glplot.redraw();
                  }
                }
                return vt;
              }, S.updateFx = function(z, O) {
                var B = this, V = B.camera;
                if (V)
                  if (z === "orbit")
                    V.mode = "orbit", V.keyBindingMode = "rotate";
                  else if (z === "turntable") {
                    V.up = [0, 0, 1], V.mode = "turntable", V.keyBindingMode = "rotate";
                    var U = B.graphDiv, H = U._fullLayout, F = B.fullSceneLayout.camera, G = F.up.x, q = F.up.y, rt = F.up.z;
                    if (rt / Math.sqrt(G * G + q * q + rt * rt) < 0.999) {
                      var st = B.id + ".camera.up", vt = {
                        x: 0,
                        y: 0,
                        z: 1
                      }, ht = {};
                      ht[st] = vt;
                      var et = U.layout;
                      A.call("_storeDirectGUIEdit", et, H._preGUI, ht), F.up = vt, p.nestedProperty(et, st).set(vt);
                    }
                  } else
                    V.keyBindingMode = z;
                B.fullSceneLayout.hovermode = O;
              };
              function E(z, O, B) {
                for (var V = 0, U = B - 1; V < U; ++V, --U)
                  for (var H = 0; H < O; ++H)
                    for (var F = 0; F < 4; ++F) {
                      var G = 4 * (O * V + H) + F, q = 4 * (O * U + H) + F, rt = z[G];
                      z[G] = z[q], z[q] = rt;
                    }
              }
              function w(z, O, B) {
                for (var V = 0; V < B; ++V)
                  for (var U = 0; U < O; ++U) {
                    var H = 4 * (O * V + U), F = z[H + 3];
                    if (F > 0)
                      for (var G = 255 / F, q = 0; q < 3; ++q)
                        z[H + q] = Math.min(G * z[H + q], 255);
                  }
              }
              S.toImage = function(z) {
                var O = this;
                z || (z = "png"), O.staticMode && O.container.appendChild(c), O.glplot.redraw();
                var B = O.glplot.gl, V = B.drawingBufferWidth, U = B.drawingBufferHeight;
                B.bindFramebuffer(B.FRAMEBUFFER, null);
                var H = new Uint8Array(V * U * 4);
                B.readPixels(0, 0, V, U, B.RGBA, B.UNSIGNED_BYTE, H), E(H, V, U), w(H, V, U);
                var F = document.createElement("canvas");
                F.width = V, F.height = U;
                var G = F.getContext("2d", {
                  willReadFrequently: !0
                }), q = G.createImageData(V, U);
                q.data.set(H), G.putImageData(q, 0, 0);
                var rt;
                switch (z) {
                  case "jpeg":
                    rt = F.toDataURL("image/jpeg");
                    break;
                  case "webp":
                    rt = F.toDataURL("image/webp");
                    break;
                  default:
                    rt = F.toDataURL("image/png");
                }
                return O.staticMode && O.container.removeChild(c), rt;
              }, S.setConvert = function() {
                for (var z = this, O = 0; O < 3; O++) {
                  var B = z.fullSceneLayout[C[O]];
                  t.setConvert(B, z.fullLayout), B.setScale = p.noop;
                }
              }, S.make4thDimension = function() {
                var z = this, O = z.graphDiv, B = O._fullLayout;
                z._mockAxis = {
                  type: "linear",
                  showexponent: "all",
                  exponentformat: "B"
                }, t.setConvert(z._mockAxis, B);
              }, Y.exports = _;
            }
          ),
          /***/
          88239: (
            /***/
            function(Y) {
              Y.exports = function(e, b, P, n) {
                n = n || e.length;
                for (var s = new Array(n), T = 0; T < n; T++)
                  s[T] = [e[T], b[T], P[T]];
                return s;
              };
            }
          ),
          /***/
          6704: (
            /***/
            function(Y, K, e) {
              var b = e(80337), P = e(49722), n = e(10229), s = e(64101), T = e(52307), A = e(57891), p = e(93049).extendFlat, u = b({
                editType: "calc"
              });
              u.family.dflt = '"Open Sans", verdana, arial, sans-serif', u.size.dflt = 12, u.color.dflt = n.defaultLine, Y.exports = {
                font: u,
                title: {
                  text: {
                    valType: "string",
                    editType: "layoutstyle"
                  },
                  font: b({
                    editType: "layoutstyle"
                  }),
                  subtitle: {
                    text: {
                      valType: "string",
                      editType: "layoutstyle"
                    },
                    font: b({
                      editType: "layoutstyle"
                    }),
                    editType: "layoutstyle"
                  },
                  xref: {
                    valType: "enumerated",
                    dflt: "container",
                    values: ["container", "paper"],
                    editType: "layoutstyle"
                  },
                  yref: {
                    valType: "enumerated",
                    dflt: "container",
                    values: ["container", "paper"],
                    editType: "layoutstyle"
                  },
                  x: {
                    valType: "number",
                    min: 0,
                    max: 1,
                    dflt: 0.5,
                    editType: "layoutstyle"
                  },
                  y: {
                    valType: "number",
                    min: 0,
                    max: 1,
                    dflt: "auto",
                    editType: "layoutstyle"
                  },
                  xanchor: {
                    valType: "enumerated",
                    dflt: "auto",
                    values: ["auto", "left", "center", "right"],
                    editType: "layoutstyle"
                  },
                  yanchor: {
                    valType: "enumerated",
                    dflt: "auto",
                    values: ["auto", "top", "middle", "bottom"],
                    editType: "layoutstyle"
                  },
                  pad: p(A({
                    editType: "layoutstyle"
                  }), {}),
                  automargin: {
                    valType: "boolean",
                    dflt: !1,
                    editType: "plot"
                  },
                  editType: "layoutstyle"
                },
                uniformtext: {
                  mode: {
                    valType: "enumerated",
                    values: [!1, "hide", "show"],
                    dflt: !1,
                    editType: "plot"
                  },
                  minsize: {
                    valType: "number",
                    min: 0,
                    dflt: 0,
                    editType: "plot"
                  },
                  editType: "plot"
                },
                autosize: {
                  valType: "boolean",
                  dflt: !1,
                  // autosize, width, and height get special editType treatment in _relayout
                  // so we can handle noop resizes more efficiently
                  editType: "none"
                },
                width: {
                  valType: "number",
                  min: 10,
                  dflt: 700,
                  editType: "plot"
                },
                height: {
                  valType: "number",
                  min: 10,
                  dflt: 450,
                  editType: "plot"
                },
                minreducedwidth: {
                  valType: "number",
                  min: 2,
                  dflt: 64,
                  editType: "plot"
                },
                minreducedheight: {
                  valType: "number",
                  min: 2,
                  dflt: 64,
                  editType: "plot"
                },
                margin: {
                  l: {
                    valType: "number",
                    min: 0,
                    dflt: 80,
                    editType: "plot"
                  },
                  r: {
                    valType: "number",
                    min: 0,
                    dflt: 80,
                    editType: "plot"
                  },
                  t: {
                    valType: "number",
                    min: 0,
                    dflt: 100,
                    editType: "plot"
                  },
                  b: {
                    valType: "number",
                    min: 0,
                    dflt: 80,
                    editType: "plot"
                  },
                  pad: {
                    valType: "number",
                    min: 0,
                    dflt: 0,
                    editType: "plot"
                  },
                  autoexpand: {
                    valType: "boolean",
                    dflt: !0,
                    editType: "plot"
                  },
                  editType: "plot"
                },
                computed: {
                  valType: "any",
                  editType: "none"
                },
                paper_bgcolor: {
                  valType: "color",
                  dflt: n.background,
                  editType: "plot"
                },
                plot_bgcolor: {
                  // defined here, but set in cartesian.supplyLayoutDefaults
                  // because it needs to know if there are (2D) axes or not
                  valType: "color",
                  dflt: n.background,
                  editType: "layoutstyle"
                },
                autotypenumbers: {
                  valType: "enumerated",
                  values: ["convert types", "strict"],
                  dflt: "convert types",
                  editType: "calc"
                },
                separators: {
                  valType: "string",
                  editType: "plot"
                },
                hidesources: {
                  valType: "boolean",
                  dflt: !1,
                  editType: "plot"
                },
                showlegend: {
                  // handled in legend.supplyLayoutDefaults
                  // but included here because it's not in the legend object
                  valType: "boolean",
                  editType: "legend"
                },
                colorway: {
                  valType: "colorlist",
                  dflt: n.defaults,
                  editType: "calc"
                },
                datarevision: {
                  valType: "any",
                  editType: "calc"
                },
                uirevision: {
                  valType: "any",
                  editType: "none"
                },
                editrevision: {
                  valType: "any",
                  editType: "none"
                },
                selectionrevision: {
                  valType: "any",
                  editType: "none"
                },
                template: {
                  valType: "any",
                  editType: "calc"
                },
                newshape: s.newshape,
                activeshape: s.activeshape,
                newselection: T.newselection,
                activeselection: T.activeselection,
                meta: {
                  valType: "any",
                  arrayOk: !0,
                  editType: "plot"
                },
                transition: p({}, P.transition, {
                  editType: "none"
                }),
                _deprecated: {
                  title: {
                    valType: "string",
                    editType: "layoutstyle"
                  },
                  titlefont: b({
                    editType: "layoutstyle"
                  })
                }
              };
            }
          ),
          /***/
          8814: (
            /***/
            function(Y, K, e) {
              var b = e(62994), P = e(37071), n = e(51962), s = '© <a target="_blank" href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors', T = "https://basemaps.cartocdn.com/gl/positron-gl-style/style.json", A = "https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json", p = "https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json", u = "https://basemaps.cartocdn.com/gl/positron-nolabels-gl-style/style.json", t = "https://basemaps.cartocdn.com/gl/dark-matter-nolabels-gl-style/style.json", r = "https://basemaps.cartocdn.com/gl/voyager-nolabels-gl-style/style.json", i = {
                basic: p,
                streets: p,
                outdoors: p,
                light: T,
                dark: A,
                satellite: n,
                "satellite-streets": P,
                "open-street-map": {
                  id: "osm",
                  version: 8,
                  sources: {
                    "plotly-osm-tiles": {
                      type: "raster",
                      attribution: s,
                      tiles: ["https://tile.openstreetmap.org/{z}/{x}/{y}.png"],
                      tileSize: 256
                    }
                  },
                  layers: [{
                    id: "plotly-osm-tiles",
                    type: "raster",
                    source: "plotly-osm-tiles",
                    minzoom: 0,
                    maxzoom: 22
                  }],
                  glyphs: "https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"
                },
                "white-bg": {
                  id: "white-bg",
                  version: 8,
                  sources: {},
                  layers: [{
                    id: "white-bg",
                    type: "background",
                    paint: {
                      "background-color": "#FFFFFF"
                    },
                    minzoom: 0,
                    maxzoom: 22
                  }],
                  glyphs: "https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"
                },
                "carto-positron": T,
                "carto-darkmatter": A,
                "carto-voyager": p,
                "carto-positron-nolabels": u,
                "carto-darkmatter-nolabels": t,
                "carto-voyager-nolabels": r
              }, a = b(i);
              Y.exports = {
                styleValueDflt: "basic",
                stylesMap: i,
                styleValuesMap: a,
                traceLayerPrefix: "plotly-trace-layer-",
                layoutLayerPrefix: "plotly-layout-layer-",
                missingStyleErrorMsg: ["No valid maplibre style found, please set `map.style` to one of:", a.join(", "), "or use a tile service."].join(`
`),
                mapOnErrorMsg: "Map error."
              };
            }
          ),
          /***/
          4657: (
            /***/
            function(Y, K, e) {
              var b = e(34809);
              Y.exports = function(n, s) {
                var T = n.split(" "), A = T[0], p = T[1], u = b.isArrayOrTypedArray(s) ? b.mean(s) : s, t = 0.5 + u / 100, r = 1.5 + u / 100, i = ["", ""], a = [0, 0];
                switch (A) {
                  case "top":
                    i[0] = "top", a[1] = -r;
                    break;
                  case "bottom":
                    i[0] = "bottom", a[1] = r;
                    break;
                }
                switch (p) {
                  case "left":
                    i[1] = "right", a[0] = -t;
                    break;
                  case "right":
                    i[1] = "left", a[0] = t;
                    break;
                }
                var l;
                return i[0] && i[1] ? l = i.join("-") : i[0] ? l = i[0] : i[1] ? l = i[1] : l = "center", {
                  anchor: l,
                  offset: a
                };
              };
            }
          ),
          /***/
          34091: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = b.strTranslate, n = b.strScale, s = e(4173).fX, T = e(62972), A = e(45568), p = e(62203), u = e(30635), t = e(38793), r = "map";
              K.name = r, K.attr = "subplot", K.idRoot = r, K.idRegex = K.attrRegex = b.counterRegex(r), K.attributes = {
                subplot: {
                  valType: "subplotid",
                  dflt: "map",
                  editType: "calc"
                }
              }, K.layoutAttributes = e(8257), K.supplyLayoutDefaults = e(97446), K.plot = function(a) {
                for (var l = a._fullLayout, o = a.calcdata, y = l._subplots[r], g = 0; g < y.length; g++) {
                  var x = y[g], c = s(o, r, x), v = l[x], f = v._subplot;
                  f || (f = new t(a, x), l[x]._subplot = f), f.viewInitial || (f.viewInitial = {
                    center: b.extendFlat({}, v.center),
                    zoom: v.zoom,
                    bearing: v.bearing,
                    pitch: v.pitch
                  }), f.plot(c, l, a._promises);
                }
              }, K.clean = function(i, a, l, o) {
                for (var y = o._subplots[r] || [], g = 0; g < y.length; g++) {
                  var x = y[g];
                  !a[x] && o[x]._subplot && o[x]._subplot.destroy();
                }
              }, K.toSVG = function(i) {
                for (var a = i._fullLayout, l = a._subplots[r], o = a._size, y = 0; y < l.length; y++) {
                  var g = a[l[y]], x = g.domain, c = g._subplot, v = c.toImage("png"), f = a._glimages.append("svg:image");
                  f.attr({
                    xmlns: T.svg,
                    "xlink:href": v,
                    x: o.l + o.w * x.x[0],
                    y: o.t + o.h * (1 - x.y[1]),
                    width: o.w * (x.x[1] - x.x[0]),
                    height: o.h * (x.y[1] - x.y[0]),
                    preserveAspectRatio: "none"
                  });
                  var _ = A.select(g._subplot.div), S = _.select(".maplibregl-ctrl-attrib").text().replace("Improve this map", ""), M = a._glimages.append("g"), C = M.append("text");
                  C.text(S).classed("static-attribution", !0).attr({
                    "font-size": 12,
                    "font-family": "Arial",
                    color: "rgba(0, 0, 0, 0.75)",
                    "text-anchor": "end",
                    "data-unformatted": S
                  });
                  var m = p.bBox(C.node()), L = o.w * (x.x[1] - x.x[0]);
                  if (m.width > L / 2) {
                    var d = S.split("|").join("<br>");
                    C.text(d).attr("data-unformatted", d).call(u.convertToTspans, i), m = p.bBox(C.node());
                  }
                  C.attr("transform", P(-3, -m.height + 8)), M.insert("rect", ".static-attribution").attr({
                    x: -m.width - 6,
                    y: -m.height - 3,
                    width: m.width + 6,
                    height: m.height + 3,
                    fill: "rgba(255, 255, 255, 0.75)"
                  });
                  var h = 1;
                  m.width + 6 > L && (h = L / (m.width + 6));
                  var E = [o.l + o.w * x.x[1], o.t + o.h * (1 - x.y[0])];
                  M.attr("transform", P(E[0], E[1]) + n(h));
                }
              }, K.updateFx = function(i) {
                for (var a = i._fullLayout, l = a._subplots[r], o = 0; o < l.length; o++) {
                  var y = a[l[o]]._subplot;
                  y.updateFx(a);
                }
              };
            }
          ),
          /***/
          33389: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(30635).sanitizeHTML, n = e(4657), s = e(8814);
              function T(r, i) {
                this.subplot = r, this.uid = r.uid + "-" + i, this.index = i, this.idSource = "source-" + this.uid, this.idLayer = s.layoutLayerPrefix + this.uid, this.sourceType = null, this.source = null, this.layerType = null, this.below = null, this.visible = !1;
              }
              var A = T.prototype;
              A.update = function(i) {
                this.visible ? this.needsNewImage(i) ? this.updateImage(i) : this.needsNewSource(i) ? (this.removeLayer(), this.updateSource(i), this.updateLayer(i)) : this.needsNewLayer(i) ? this.updateLayer(i) : this.updateStyle(i) : (this.updateSource(i), this.updateLayer(i)), this.visible = p(i);
              }, A.needsNewImage = function(r) {
                var i = this.subplot.map;
                return i.getSource(this.idSource) && this.sourceType === "image" && r.sourcetype === "image" && (this.source !== r.source || JSON.stringify(this.coordinates) !== JSON.stringify(r.coordinates));
              }, A.needsNewSource = function(r) {
                return this.sourceType !== r.sourcetype || JSON.stringify(this.source) !== JSON.stringify(r.source) || this.layerType !== r.type;
              }, A.needsNewLayer = function(r) {
                return this.layerType !== r.type || this.below !== this.subplot.belowLookup["layout-" + this.index];
              }, A.lookupBelow = function() {
                return this.subplot.belowLookup["layout-" + this.index];
              }, A.updateImage = function(r) {
                var i = this.subplot.map;
                i.getSource(this.idSource).updateImage({
                  url: r.source,
                  coordinates: r.coordinates
                });
                var a = this.findFollowingMapLayerId(this.lookupBelow());
                a !== null && this.subplot.map.moveLayer(this.idLayer, a);
              }, A.updateSource = function(r) {
                var i = this.subplot.map;
                if (i.getSource(this.idSource) && i.removeSource(this.idSource), this.sourceType = r.sourcetype, this.source = r.source, !!p(r)) {
                  var a = t(r);
                  i.addSource(this.idSource, a);
                }
              }, A.findFollowingMapLayerId = function(r) {
                if (r === "traces")
                  for (var i = this.subplot.getMapLayers(), a = 0; a < i.length; a++) {
                    var l = i[a].id;
                    if (typeof l == "string" && l.indexOf(s.traceLayerPrefix) === 0) {
                      r = l;
                      break;
                    }
                  }
                return r;
              }, A.updateLayer = function(r) {
                var i = this.subplot, a = u(r), l = this.lookupBelow(), o = this.findFollowingMapLayerId(l);
                this.removeLayer(), p(r) && i.addLayer({
                  id: this.idLayer,
                  source: this.idSource,
                  "source-layer": r.sourcelayer || "",
                  type: r.type,
                  minzoom: r.minzoom,
                  maxzoom: r.maxzoom,
                  layout: a.layout,
                  paint: a.paint
                }, o), this.layerType = r.type, this.below = l;
              }, A.updateStyle = function(r) {
                if (p(r)) {
                  var i = u(r);
                  this.subplot.setOptions(this.idLayer, "setLayoutProperty", i.layout), this.subplot.setOptions(this.idLayer, "setPaintProperty", i.paint);
                }
              }, A.removeLayer = function() {
                var r = this.subplot.map;
                r.getLayer(this.idLayer) && r.removeLayer(this.idLayer);
              }, A.dispose = function() {
                var r = this.subplot.map;
                r.getLayer(this.idLayer) && r.removeLayer(this.idLayer), r.getSource(this.idSource) && r.removeSource(this.idSource);
              };
              function p(r) {
                if (!r.visible) return !1;
                var i = r.source;
                if (Array.isArray(i) && i.length > 0) {
                  for (var a = 0; a < i.length; a++)
                    if (typeof i[a] != "string" || i[a].length === 0)
                      return !1;
                  return !0;
                }
                return b.isPlainObject(i) || typeof i == "string" && i.length > 0;
              }
              function u(r) {
                var i = {}, a = {};
                switch (r.type) {
                  case "circle":
                    b.extendFlat(a, {
                      "circle-radius": r.circle.radius,
                      "circle-color": r.color,
                      "circle-opacity": r.opacity
                    });
                    break;
                  case "line":
                    b.extendFlat(a, {
                      "line-width": r.line.width,
                      "line-color": r.color,
                      "line-opacity": r.opacity,
                      "line-dasharray": r.line.dash
                    });
                    break;
                  case "fill":
                    b.extendFlat(a, {
                      "fill-color": r.color,
                      "fill-outline-color": r.fill.outlinecolor,
                      "fill-opacity": r.opacity
                      // no way to pass specify outline width at the moment
                    });
                    break;
                  case "symbol":
                    var l = r.symbol, o = n(l.textposition, l.iconsize);
                    b.extendFlat(i, {
                      "icon-image": l.icon + "-15",
                      "icon-size": l.iconsize / 10,
                      "text-field": l.text,
                      "text-size": l.textfont.size,
                      "text-anchor": o.anchor,
                      "text-offset": o.offset,
                      "symbol-placement": l.placement
                      // TODO font family
                      // 'text-font': symbol.textfont.family.split(', '),
                    }), b.extendFlat(a, {
                      "icon-color": r.color,
                      "text-color": l.textfont.color,
                      "text-opacity": r.opacity
                    });
                    break;
                  case "raster":
                    b.extendFlat(a, {
                      "raster-fade-duration": 0,
                      "raster-opacity": r.opacity
                    });
                    break;
                }
                return {
                  layout: i,
                  paint: a
                };
              }
              function t(r) {
                var i = r.sourcetype, a = r.source, l = {
                  type: i
                }, o;
                return i === "geojson" ? o = "data" : i === "vector" ? o = typeof a == "string" ? "url" : "tiles" : i === "raster" ? (o = "tiles", l.tileSize = 256) : i === "image" && (o = "url", l.coordinates = r.coordinates), l[o] = a, r.sourceattribution && (l.attribution = P(r.sourceattribution)), l;
              }
              Y.exports = function(i, a, l) {
                var o = new T(i, a);
                return o.update(l), o;
              };
            }
          ),
          /***/
          8257: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(78766).defaultLine, n = e(13792).u, s = e(80337), T = e(36640).textposition, A = e(13582).overrideAll, p = e(78032).templatedArray, u = e(8814), t = s({
                noFontVariant: !0,
                noFontShadow: !0,
                noFontLineposition: !0,
                noFontTextcase: !0
              });
              t.family.dflt = "Open Sans Regular, Arial Unicode MS Regular";
              var r = Y.exports = A({
                _arrayAttrRegexps: [b.counterRegex("map", ".layers", !0)],
                domain: n({
                  name: "map"
                }),
                style: {
                  valType: "any",
                  values: u.styleValuesMap,
                  dflt: u.styleValueDflt
                },
                center: {
                  lon: {
                    valType: "number",
                    dflt: 0
                  },
                  lat: {
                    valType: "number",
                    dflt: 0
                  }
                },
                zoom: {
                  valType: "number",
                  dflt: 1
                },
                bearing: {
                  valType: "number",
                  dflt: 0
                },
                pitch: {
                  valType: "number",
                  dflt: 0
                },
                bounds: {
                  west: {
                    valType: "number"
                  },
                  east: {
                    valType: "number"
                  },
                  south: {
                    valType: "number"
                  },
                  north: {
                    valType: "number"
                  }
                },
                layers: p("layer", {
                  visible: {
                    valType: "boolean",
                    dflt: !0
                  },
                  sourcetype: {
                    valType: "enumerated",
                    values: ["geojson", "vector", "raster", "image"],
                    dflt: "geojson"
                  },
                  source: {
                    valType: "any"
                  },
                  sourcelayer: {
                    valType: "string",
                    dflt: ""
                  },
                  sourceattribution: {
                    valType: "string"
                  },
                  type: {
                    valType: "enumerated",
                    values: ["circle", "line", "fill", "symbol", "raster"],
                    dflt: "circle"
                  },
                  coordinates: {
                    valType: "any"
                  },
                  // attributes shared between all types
                  below: {
                    valType: "string"
                  },
                  color: {
                    valType: "color",
                    dflt: P
                  },
                  opacity: {
                    valType: "number",
                    min: 0,
                    max: 1,
                    dflt: 1
                  },
                  minzoom: {
                    valType: "number",
                    min: 0,
                    max: 24,
                    dflt: 0
                  },
                  maxzoom: {
                    valType: "number",
                    min: 0,
                    max: 24,
                    dflt: 24
                  },
                  // type-specific style attributes
                  circle: {
                    radius: {
                      valType: "number",
                      dflt: 15
                    }
                  },
                  line: {
                    width: {
                      valType: "number",
                      dflt: 2
                    },
                    dash: {
                      valType: "data_array"
                    }
                  },
                  fill: {
                    outlinecolor: {
                      valType: "color",
                      dflt: P
                    }
                  },
                  symbol: {
                    icon: {
                      valType: "string",
                      dflt: "marker"
                    },
                    iconsize: {
                      valType: "number",
                      dflt: 10
                    },
                    text: {
                      valType: "string",
                      dflt: ""
                    },
                    placement: {
                      valType: "enumerated",
                      values: ["point", "line", "line-center"],
                      dflt: "point"
                    },
                    textfont: t,
                    textposition: b.extendFlat({}, T, {
                      arrayOk: !1
                    })
                  }
                })
              }, "plot", "from-root");
              r.uirevision = {
                valType: "any",
                editType: "none"
              };
            }
          ),
          /***/
          97446: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(4448), n = e(59008), s = e(8257);
              Y.exports = function(u, t, r) {
                P(u, t, r, {
                  type: "map",
                  attributes: s,
                  handleDefaults: T,
                  partition: "y"
                });
              };
              function T(p, u, t) {
                t("style"), t("center.lon"), t("center.lat"), t("zoom"), t("bearing"), t("pitch");
                var r = t("bounds.west"), i = t("bounds.east"), a = t("bounds.south"), l = t("bounds.north");
                (r === void 0 || i === void 0 || a === void 0 || l === void 0) && delete u.bounds, n(p, u, {
                  name: "layers",
                  handleItemDefaults: A
                }), u._input = p;
              }
              function A(p, u) {
                function t(y, g) {
                  return b.coerce(p, u, s.layers, y, g);
                }
                var r = t("visible");
                if (r) {
                  var i = t("sourcetype"), a = i === "raster" || i === "image";
                  t("source"), t("sourceattribution"), i === "vector" && t("sourcelayer"), i === "image" && t("coordinates");
                  var l;
                  a && (l = "raster");
                  var o = t("type", l);
                  a && o !== "raster" && (o = u.type = "raster", b.log("Source types *raster* and *image* must drawn *raster* layer type.")), t("below"), t("color"), t("opacity"), t("minzoom"), t("maxzoom"), o === "circle" && t("circle.radius"), o === "line" && (t("line.width"), t("line.dash")), o === "fill" && t("fill.outlinecolor"), o === "symbol" && (t("symbol.icon"), t("symbol.iconsize"), t("symbol.text"), b.coerceFont(t, "symbol.textfont", void 0, {
                    noFontVariant: !0,
                    noFontShadow: !0,
                    noFontLineposition: !0,
                    noFontTextcase: !0
                  }), t("symbol.textposition"), t("symbol.placement"));
                }
              }
            }
          ),
          /***/
          38793: (
            /***/
            function(Y, K, e) {
              var b = e(89380), P = e(34809), n = e(3994), s = e(33626), T = e(29714), A = e(14751), p = e(32141), u = e(70414), t = u.drawMode, r = u.selectMode, i = e(44844).prepSelect, a = e(44844).clearOutline, l = e(44844).clearSelectionsCache, o = e(44844).selectOnClick, y = e(8814), g = e(33389);
              function x(M, C) {
                this.id = C, this.gd = M;
                var m = M._fullLayout, L = M._context;
                this.container = m._glcontainer.node(), this.isStatic = L.staticPlot, this.uid = m._uid + "-" + this.id, this.div = null, this.xaxis = null, this.yaxis = null, this.createFramework(m), this.map = null, this.styleObj = null, this.traceHash = {}, this.layerList = [], this.belowLookup = {}, this.dragging = !1, this.wheeling = !1;
              }
              var c = x.prototype;
              c.plot = function(M, C, m) {
                var L = this, d;
                L.map ? d = new Promise(function(h, E) {
                  L.updateMap(M, C, h, E);
                }) : d = new Promise(function(h, E) {
                  L.createMap(M, C, h, E);
                }), m.push(d);
              }, c.createMap = function(M, C, m, L) {
                var d = this, h = C[d.id], E = d.styleObj = f(h.style), w = h.bounds, z = w ? [[w.west, w.south], [w.east, w.north]] : null, O = d.map = new b.Map({
                  container: d.div,
                  style: E.style,
                  center: S(h.center),
                  zoom: h.zoom,
                  bearing: h.bearing,
                  pitch: h.pitch,
                  maxBounds: z,
                  interactive: !d.isStatic,
                  preserveDrawingBuffer: d.isStatic,
                  doubleClickZoom: !1,
                  boxZoom: !1,
                  attributionControl: !1
                }).addControl(new b.AttributionControl({
                  compact: !0
                })), B = {};
                O.on("styleimagemissing", function(U) {
                  var H = U.id;
                  if (!B[H] && H.includes("-15")) {
                    B[H] = !0;
                    var F = new Image(15, 15);
                    F.onload = function() {
                      O.addImage(H, F);
                    }, F.crossOrigin = "Anonymous", F.src = "https://unpkg.com/maki@2.1.0/icons/" + H + ".svg";
                  }
                }), O.setTransformRequest(function(U) {
                  return U = U.replace("https://fonts.openmaptiles.org/Open Sans Extrabold", "https://fonts.openmaptiles.org/Open Sans Extra Bold"), U = U.replace("https://tiles.basemaps.cartocdn.com/fonts/Open Sans Extrabold", "https://fonts.openmaptiles.org/Open Sans Extra Bold"), U = U.replace("https://fonts.openmaptiles.org/Open Sans Regular,Arial Unicode MS Regular", "https://fonts.openmaptiles.org/Klokantech Noto Sans Regular"), {
                    url: U
                  };
                }), O._canvas.style.left = "0px", O._canvas.style.top = "0px", d.rejectOnError(L), d.isStatic || d.initFx(M, C);
                var V = [];
                V.push(new Promise(function(U) {
                  O.once("load", U);
                })), V = V.concat(n.fetchTraceGeoData(M)), Promise.all(V).then(function() {
                  d.fillBelowLookup(M, C), d.updateData(M), d.updateLayout(C), d.resolveOnRender(m);
                }).catch(L);
              }, c.updateMap = function(M, C, m, L) {
                var d = this, h = d.map, E = C[this.id];
                d.rejectOnError(L);
                var w = [], z = f(E.style);
                JSON.stringify(d.styleObj) !== JSON.stringify(z) && (d.styleObj = z, h.setStyle(z.style), d.traceHash = {}, w.push(new Promise(function(O) {
                  h.once("styledata", O);
                }))), w = w.concat(n.fetchTraceGeoData(M)), Promise.all(w).then(function() {
                  d.fillBelowLookup(M, C), d.updateData(M), d.updateLayout(C), d.resolveOnRender(m);
                }).catch(L);
              }, c.fillBelowLookup = function(M, C) {
                var m = C[this.id], L = m.layers, d, h, E = this.belowLookup = {}, w = !1;
                for (d = 0; d < M.length; d++) {
                  var z = M[d][0].trace, O = z._module;
                  typeof z.below == "string" ? h = z.below : O.getBelow && (h = O.getBelow(z, this)), h === "" && (w = !0), E["trace-" + z.uid] = h || "";
                }
                for (d = 0; d < L.length; d++) {
                  var B = L[d];
                  typeof B.below == "string" ? h = B.below : w ? h = "traces" : h = "", E["layout-" + d] = h;
                }
                var V = {}, U, H;
                for (U in E)
                  h = E[U], V[h] ? V[h].push(U) : V[h] = [U];
                for (h in V) {
                  var F = V[h];
                  if (F.length > 1)
                    for (d = 0; d < F.length; d++)
                      U = F[d], U.indexOf("trace-") === 0 ? (H = U.split("trace-")[1], this.traceHash[H] && (this.traceHash[H].below = null)) : U.indexOf("layout-") === 0 && (H = U.split("layout-")[1], this.layerList[H] && (this.layerList[H].below = null));
                }
              };
              var v = {
                choroplethmap: 0,
                densitymap: 1,
                scattermap: 2
              };
              c.updateData = function(M) {
                var C = this.traceHash, m, L, d, h, E = M.slice().sort(function(V, U) {
                  return v[V[0].trace.type] - v[U[0].trace.type];
                });
                for (d = 0; d < E.length; d++) {
                  var w = E[d];
                  L = w[0].trace, m = C[L.uid];
                  var z = !1;
                  m && (m.type === L.type ? (m.update(w), z = !0) : m.dispose()), !z && L._module && (C[L.uid] = L._module.plot(this, w));
                }
                var O = Object.keys(C);
                t: for (d = 0; d < O.length; d++) {
                  var B = O[d];
                  for (h = 0; h < M.length; h++)
                    if (L = M[h][0].trace, B === L.uid) continue t;
                  m = C[B], m.dispose(), delete C[B];
                }
              }, c.updateLayout = function(M) {
                var C = this.map, m = M[this.id];
                !this.dragging && !this.wheeling && (C.setCenter(S(m.center)), C.setZoom(m.zoom), C.setBearing(m.bearing), C.setPitch(m.pitch)), this.updateLayers(M), this.updateFramework(M), this.updateFx(M), this.map.resize(), this.gd._context._scrollZoom.map ? C.scrollZoom.enable() : C.scrollZoom.disable();
              }, c.resolveOnRender = function(M) {
                var C = this.map;
                C.on("render", function m() {
                  C.loaded() && (C.off("render", m), setTimeout(M, 10));
                });
              }, c.rejectOnError = function(M) {
                var C = this.map;
                function m() {
                  M(new Error(y.mapOnErrorMsg));
                }
                C.once("error", m), C.once("style.error", m), C.once("source.error", m), C.once("tile.error", m), C.once("layer.error", m);
              }, c.createFramework = function(M) {
                var C = this, m = C.div = document.createElement("div");
                m.id = C.uid, m.style.position = "absolute", C.container.appendChild(m), C.xaxis = {
                  _id: "x",
                  c2p: function(L) {
                    return C.project(L).x;
                  }
                }, C.yaxis = {
                  _id: "y",
                  c2p: function(L) {
                    return C.project(L).y;
                  }
                }, C.updateFramework(M), C.mockAxis = {
                  type: "linear",
                  showexponent: "all",
                  exponentformat: "B"
                }, T.setConvert(C.mockAxis, M);
              }, c.initFx = function(M, C) {
                var m = this, L = m.gd, d = m.map;
                d.on("moveend", function(w) {
                  if (m.map) {
                    var z = L._fullLayout;
                    if (w.originalEvent || m.wheeling) {
                      var O = z[m.id];
                      s.call("_storeDirectGUIEdit", L.layout, z._preGUI, m.getViewEdits(O));
                      var B = m.getView();
                      O._input.center = O.center = B.center, O._input.zoom = O.zoom = B.zoom, O._input.bearing = O.bearing = B.bearing, O._input.pitch = O.pitch = B.pitch, L.emit("plotly_relayout", m.getViewEditsWithDerived(B));
                    }
                    w.originalEvent && w.originalEvent.type === "mouseup" ? m.dragging = !1 : m.wheeling && (m.wheeling = !1), z && z._rehover && z._rehover();
                  }
                }), d.on("wheel", function() {
                  m.wheeling = !0;
                }), d.on("mousemove", function(w) {
                  var z = m.div.getBoundingClientRect(), O = [w.originalEvent.offsetX, w.originalEvent.offsetY];
                  w.target.getBoundingClientRect = function() {
                    return z;
                  }, m.xaxis.p2c = function() {
                    return d.unproject(O).lng;
                  }, m.yaxis.p2c = function() {
                    return d.unproject(O).lat;
                  }, L._fullLayout._rehover = function() {
                    L._fullLayout._hoversubplot === m.id && L._fullLayout[m.id] && p.hover(L, w, m.id);
                  }, p.hover(L, w, m.id), L._fullLayout._hoversubplot = m.id;
                });
                function h() {
                  p.loneUnhover(C._hoverlayer);
                }
                d.on("dragstart", function() {
                  m.dragging = !0, h();
                }), d.on("zoomstart", h), d.on("mouseout", function() {
                  L._fullLayout._hoversubplot = null;
                });
                function E() {
                  var w = m.getView();
                  L.emit("plotly_relayouting", m.getViewEditsWithDerived(w));
                }
                d.on("drag", E), d.on("zoom", E), d.on("dblclick", function() {
                  var w = L._fullLayout[m.id];
                  s.call("_storeDirectGUIEdit", L.layout, L._fullLayout._preGUI, m.getViewEdits(w));
                  var z = m.viewInitial;
                  d.setCenter(S(z.center)), d.setZoom(z.zoom), d.setBearing(z.bearing), d.setPitch(z.pitch);
                  var O = m.getView();
                  w._input.center = w.center = O.center, w._input.zoom = w.zoom = O.zoom, w._input.bearing = w.bearing = O.bearing, w._input.pitch = w.pitch = O.pitch, L.emit("plotly_doubleclick", null), L.emit("plotly_relayout", m.getViewEditsWithDerived(O));
                }), m.clearOutline = function() {
                  l(m.dragOptions), a(m.dragOptions.gd);
                }, m.onClickInPanFn = function(w) {
                  return function(z) {
                    var O = L._fullLayout.clickmode;
                    O.indexOf("select") > -1 && o(z.originalEvent, L, [m.xaxis], [m.yaxis], m.id, w), O.indexOf("event") > -1 && p.click(L, z.originalEvent);
                  };
                };
              }, c.updateFx = function(M) {
                var C = this, m = C.map, L = C.gd;
                if (C.isStatic) return;
                function d(z) {
                  var O = C.map.unproject(z);
                  return [O.lng, O.lat];
                }
                var h = M.dragmode, E;
                E = function(z, O) {
                  if (O.isRect) {
                    var B = z.range = {};
                    B[C.id] = [d([O.xmin, O.ymin]), d([O.xmax, O.ymax])];
                  } else {
                    var V = z.lassoPoints = {};
                    V[C.id] = O.map(d);
                  }
                };
                var w = C.dragOptions;
                C.dragOptions = P.extendDeep(w || {}, {
                  dragmode: M.dragmode,
                  element: C.div,
                  gd: L,
                  plotinfo: {
                    id: C.id,
                    domain: M[C.id].domain,
                    xaxis: C.xaxis,
                    yaxis: C.yaxis,
                    fillRangeItems: E
                  },
                  xaxes: [C.xaxis],
                  yaxes: [C.yaxis],
                  subplot: C.id
                }), m.off("click", C.onClickInPanHandler), r(h) || t(h) ? (m.dragPan.disable(), m.on("zoomstart", C.clearOutline), C.dragOptions.prepFn = function(z, O, B) {
                  i(z, O, B, C.dragOptions, h);
                }, A.init(C.dragOptions)) : (m.dragPan.enable(), m.off("zoomstart", C.clearOutline), C.div.onmousedown = null, C.div.ontouchstart = null, C.div.removeEventListener("touchstart", C.div._ontouchstart), C.onClickInPanHandler = C.onClickInPanFn(C.dragOptions), m.on("click", C.onClickInPanHandler));
              }, c.updateFramework = function(M) {
                var C = M[this.id].domain, m = M._size, L = this.div.style;
                L.width = m.w * (C.x[1] - C.x[0]) + "px", L.height = m.h * (C.y[1] - C.y[0]) + "px", L.left = m.l + C.x[0] * m.w + "px", L.top = m.t + (1 - C.y[1]) * m.h + "px", this.xaxis._offset = m.l + C.x[0] * m.w, this.xaxis._length = m.w * (C.x[1] - C.x[0]), this.yaxis._offset = m.t + (1 - C.y[1]) * m.h, this.yaxis._length = m.h * (C.y[1] - C.y[0]);
              }, c.updateLayers = function(M) {
                var C = M[this.id], m = C.layers, L = this.layerList, d;
                if (m.length !== L.length) {
                  for (d = 0; d < L.length; d++)
                    L[d].dispose();
                  for (L = this.layerList = [], d = 0; d < m.length; d++)
                    L.push(g(this, d, m[d]));
                } else
                  for (d = 0; d < m.length; d++)
                    L[d].update(m[d]);
              }, c.destroy = function() {
                this.map && (this.map.remove(), this.map = null, this.container.removeChild(this.div));
              }, c.toImage = function() {
                return this.map.stop(), this.map.getCanvas().toDataURL();
              }, c.setOptions = function(M, C, m) {
                for (var L in m)
                  this.map[C](M, L, m[L]);
              }, c.getMapLayers = function() {
                return this.map.getStyle().layers;
              }, c.addLayer = function(M, C) {
                var m = this.map;
                if (typeof C == "string") {
                  if (C === "") {
                    m.addLayer(M, C);
                    return;
                  }
                  for (var L = this.getMapLayers(), d = 0; d < L.length; d++)
                    if (C === L[d].id) {
                      m.addLayer(M, C);
                      return;
                    }
                  P.warn(["Trying to add layer with *below* value", C, "referencing a layer that does not exist", "or that does not yet exist."].join(" "));
                }
                m.addLayer(M);
              }, c.project = function(M) {
                return this.map.project(new b.LngLat(M[0], M[1]));
              }, c.getView = function() {
                var M = this.map, C = M.getCenter(), m = C.lng, L = C.lat, d = {
                  lon: m,
                  lat: L
                }, h = M.getCanvas(), E = parseInt(h.style.width), w = parseInt(h.style.height);
                return {
                  center: d,
                  zoom: M.getZoom(),
                  bearing: M.getBearing(),
                  pitch: M.getPitch(),
                  _derived: {
                    coordinates: [M.unproject([0, 0]).toArray(), M.unproject([E, 0]).toArray(), M.unproject([E, w]).toArray(), M.unproject([0, w]).toArray()]
                  }
                };
              }, c.getViewEdits = function(M) {
                for (var C = this.id, m = ["center", "zoom", "bearing", "pitch"], L = {}, d = 0; d < m.length; d++) {
                  var h = m[d];
                  L[C + "." + h] = M[h];
                }
                return L;
              }, c.getViewEditsWithDerived = function(M) {
                var C = this.id, m = this.getViewEdits(M);
                return m[C + "._derived"] = M._derived, m;
              };
              function f(M) {
                var C = {};
                return P.isPlainObject(M) ? (C.id = M.id, C.style = M) : typeof M == "string" ? (C.id = M, y.stylesMap[M] ? C.style = y.stylesMap[M] : C.style = M) : (C.id = y.styleValueDflt, C.style = _(y.styleValueDflt)), C.transition = {
                  duration: 0,
                  delay: 0
                }, C;
              }
              function _(M) {
                return y.styleUrlPrefix + M + "-" + y.styleUrlSuffix;
              }
              function S(M) {
                return [M.lon, M.lat];
              }
              Y.exports = x;
            }
          ),
          /***/
          44245: (
            /***/
            function(Y, K, e) {
              var b = e(62994), P = "1.13.4", n = '© <a target="_blank" href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors', s = ['© <a target="_blank" href="https://carto.com/">Carto</a>', n].join(" "), T = ['Map tiles by <a target="_blank" href="https://stamen.com">Stamen Design</a>', 'under <a target="_blank" href="https://creativecommons.org/licenses/by/3.0">CC BY 3.0</a>', "|", 'Data by <a target="_blank" href="https://openstreetmap.org">OpenStreetMap</a> contributors', 'under <a target="_blank" href="https://www.openstreetmap.org/copyright">ODbL</a>'].join(" "), A = ['Map tiles by <a target="_blank" href="https://stamen.com">Stamen Design</a>', 'under <a target="_blank" href="https://creativecommons.org/licenses/by/3.0">CC BY 3.0</a>', "|", 'Data by <a target="_blank" href="https://openstreetmap.org">OpenStreetMap</a> contributors', 'under <a target="_blank" href="https://creativecommons.org/licenses/by-sa/3.0">CC BY SA</a>'].join(" "), p = {
                "open-street-map": {
                  id: "osm",
                  version: 8,
                  sources: {
                    "plotly-osm-tiles": {
                      type: "raster",
                      attribution: n,
                      tiles: ["https://a.tile.openstreetmap.org/{z}/{x}/{y}.png", "https://b.tile.openstreetmap.org/{z}/{x}/{y}.png"],
                      tileSize: 256
                    }
                  },
                  layers: [{
                    id: "plotly-osm-tiles",
                    type: "raster",
                    source: "plotly-osm-tiles",
                    minzoom: 0,
                    maxzoom: 22
                  }],
                  glyphs: "https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"
                },
                "white-bg": {
                  id: "white-bg",
                  version: 8,
                  sources: {},
                  layers: [{
                    id: "white-bg",
                    type: "background",
                    paint: {
                      "background-color": "#FFFFFF"
                    },
                    minzoom: 0,
                    maxzoom: 22
                  }],
                  glyphs: "https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"
                },
                "carto-positron": {
                  id: "carto-positron",
                  version: 8,
                  sources: {
                    "plotly-carto-positron": {
                      type: "raster",
                      attribution: s,
                      tiles: ["https://cartodb-basemaps-c.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png"],
                      tileSize: 256
                    }
                  },
                  layers: [{
                    id: "plotly-carto-positron",
                    type: "raster",
                    source: "plotly-carto-positron",
                    minzoom: 0,
                    maxzoom: 22
                  }],
                  glyphs: "https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"
                },
                "carto-darkmatter": {
                  id: "carto-darkmatter",
                  version: 8,
                  sources: {
                    "plotly-carto-darkmatter": {
                      type: "raster",
                      attribution: s,
                      tiles: ["https://cartodb-basemaps-c.global.ssl.fastly.net/dark_all/{z}/{x}/{y}.png"],
                      tileSize: 256
                    }
                  },
                  layers: [{
                    id: "plotly-carto-darkmatter",
                    type: "raster",
                    source: "plotly-carto-darkmatter",
                    minzoom: 0,
                    maxzoom: 22
                  }],
                  glyphs: "https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"
                },
                "stamen-terrain": {
                  id: "stamen-terrain",
                  version: 8,
                  sources: {
                    "plotly-stamen-terrain": {
                      type: "raster",
                      attribution: T,
                      tiles: ["https://tiles.stadiamaps.com/tiles/stamen_terrain/{z}/{x}/{y}.png?api_key="],
                      tileSize: 256
                    }
                  },
                  layers: [{
                    id: "plotly-stamen-terrain",
                    type: "raster",
                    source: "plotly-stamen-terrain",
                    minzoom: 0,
                    maxzoom: 22
                  }],
                  glyphs: "https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"
                },
                "stamen-toner": {
                  id: "stamen-toner",
                  version: 8,
                  sources: {
                    "plotly-stamen-toner": {
                      type: "raster",
                      attribution: T,
                      tiles: ["https://tiles.stadiamaps.com/tiles/stamen_toner/{z}/{x}/{y}.png?api_key="],
                      tileSize: 256
                    }
                  },
                  layers: [{
                    id: "plotly-stamen-toner",
                    type: "raster",
                    source: "plotly-stamen-toner",
                    minzoom: 0,
                    maxzoom: 22
                  }],
                  glyphs: "https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"
                },
                "stamen-watercolor": {
                  id: "stamen-watercolor",
                  version: 8,
                  sources: {
                    "plotly-stamen-watercolor": {
                      type: "raster",
                      attribution: A,
                      tiles: ["https://tiles.stadiamaps.com/tiles/stamen_watercolor/{z}/{x}/{y}.jpg?api_key="],
                      tileSize: 256
                    }
                  },
                  layers: [{
                    id: "plotly-stamen-watercolor",
                    type: "raster",
                    source: "plotly-stamen-watercolor",
                    minzoom: 0,
                    maxzoom: 22
                  }],
                  glyphs: "https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"
                }
              }, u = b(p);
              Y.exports = {
                requiredVersion: P,
                styleUrlPrefix: "mapbox://styles/mapbox/",
                styleUrlSuffix: "v9",
                styleValuesMapbox: ["basic", "streets", "outdoors", "light", "dark", "satellite", "satellite-streets"],
                styleValueDflt: "basic",
                stylesNonMapbox: p,
                styleValuesNonMapbox: u,
                traceLayerPrefix: "plotly-trace-layer-",
                layoutLayerPrefix: "plotly-layout-layer-",
                wrongVersionErrorMsg: ["Your custom plotly.js bundle is not using the correct mapbox-gl version", "Please install @plotly/mapbox-gl@" + P + "."].join(`
`),
                noAccessTokenErrorMsg: ["Missing Mapbox access token.", "Mapbox trace type require a Mapbox access token to be registered.", "For example:", "  Plotly.newPlot(gd, data, layout, { mapboxAccessToken: 'my-access-token' });", "More info here: https://www.mapbox.com/help/define-access-token/"].join(`
`),
                missingStyleErrorMsg: ["No valid mapbox style found, please set `mapbox.style` to one of:", u.join(", "), "or register a Mapbox access token to use a Mapbox-served style."].join(`
`),
                multipleTokensErrorMsg: ["Set multiple mapbox access token across different mapbox subplot,", "using first token found as mapbox-gl does not allow multipleaccess tokens on the same page."].join(`
`),
                mapOnErrorMsg: "Mapbox error.",
                // Mapbox logo for static export
                mapboxLogo: {
                  path0: "m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z",
                  path1: "M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z",
                  path2: "M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z",
                  polygon: "11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34"
                },
                // a subset of node_modules/mapbox-gl/dist/mapbox-gl.css
                styleRules: {
                  map: "overflow:hidden;position:relative;",
                  "missing-css": "display:none;",
                  canary: "background-color:salmon;",
                  // Reusing CSS directives from: https://api.tiles.mapbox.com/mapbox-gl-js/v1.1.1/mapbox-gl.css
                  "ctrl-bottom-left": "position: absolute; pointer-events: none; z-index: 2; bottom: 0; left: 0;",
                  "ctrl-bottom-right": "position: absolute; pointer-events: none; z-index: 2; right: 0; bottom: 0;",
                  ctrl: "clear: both; pointer-events: auto; transform: translate(0, 0);",
                  // Compact ctrl
                  "ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner": "display: none;",
                  "ctrl-attrib.mapboxgl-compact:hover .mapboxgl-ctrl-attrib-inner": "display: block; margin-top:2px",
                  "ctrl-attrib.mapboxgl-compact:hover": "padding: 2px 24px 2px 4px; visibility: visible; margin-top: 6px;",
                  "ctrl-attrib.mapboxgl-compact::after": `content: ""; cursor: pointer; position: absolute; background-image: url('data:image/svg+xml;charset=utf-8,%3Csvg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"%3E %3Cpath fill="%23333333" fill-rule="evenodd" d="M4,10a6,6 0 1,0 12,0a6,6 0 1,0 -12,0 M9,7a1,1 0 1,0 2,0a1,1 0 1,0 -2,0 M9,10a1,1 0 1,1 2,0l0,3a1,1 0 1,1 -2,0"/%3E %3C/svg%3E'); background-color: rgba(255, 255, 255, 0.5); width: 24px; height: 24px; box-sizing: border-box; border-radius: 12px;`,
                  "ctrl-attrib.mapboxgl-compact": "min-height: 20px; padding: 0; margin: 10px; position: relative; background-color: #fff; border-radius: 3px 12px 12px 3px;",
                  "ctrl-bottom-right > .mapboxgl-ctrl-attrib.mapboxgl-compact::after": "bottom: 0; right: 0",
                  "ctrl-bottom-left > .mapboxgl-ctrl-attrib.mapboxgl-compact::after": "bottom: 0; left: 0",
                  "ctrl-bottom-left .mapboxgl-ctrl": "margin: 0 0 10px 10px; float: left;",
                  "ctrl-bottom-right .mapboxgl-ctrl": "margin: 0 10px 10px 0; float: right;",
                  "ctrl-attrib": "color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px",
                  "ctrl-attrib a": "color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px",
                  "ctrl-attrib a:hover": "color: inherit; text-decoration: underline;",
                  "ctrl-attrib .mapbox-improve-map": "font-weight: bold; margin-left: 2px;",
                  "attrib-empty": "display: none;",
                  // Compact Mapbox logo without text
                  "ctrl-logo": `display:block; width: 21px; height: 21px; background-image: url('data:image/svg+xml;charset=utf-8,%3C?xml version="1.0" encoding="utf-8"?%3E %3Csvg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 21 21" style="enable-background:new 0 0 21 21;" xml:space="preserve"%3E%3Cg transform="translate(0,0.01)"%3E%3Cpath d="m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z" style="opacity:0.9;fill:%23ffffff;enable-background:new" class="st0"/%3E%3Cpath d="M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z" style="opacity:0.35;enable-background:new" class="st1"/%3E%3Cpath d="M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z" style="opacity:0.35;enable-background:new" class="st1"/%3E%3Cpolygon points="11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34 " style="opacity:0.9;fill:%23ffffff;enable-background:new" class="st0"/%3E%3C/g%3E%3C/svg%3E')`
                  // Mapbox logo WITH text below (commented out for now)
                  // 'ctrl-logo': 'width: 85px; height: 21px; margin: 0 0 -3px -3px; display: block; background-repeat: no-repeat; cursor: pointer; background-image: url(\'data:image/svg+xml;charset=utf-8,%3C?xml version="1.0" encoding="utf-8"?%3E%3Csvg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 84.49 21" style="enable-background:new 0 0 84.49 21;" xml:space="preserve"%3E%3Cg%3E %3Cpath class="st0" style="opacity:0.9; fill: %23FFFFFF; enable-background: new;" d="M83.25,14.26c0,0.12-0.09,0.21-0.21,0.21h-1.61c-0.13,0-0.24-0.06-0.3-0.17l-1.44-2.39l-1.44,2.39 c-0.06,0.11-0.18,0.17-0.3,0.17h-1.61c-0.04,0-0.08-0.01-0.12-0.03c-0.09-0.06-0.13-0.19-0.06-0.28l0,0l2.43-3.68L76.2,6.84 c-0.02-0.03-0.03-0.07-0.03-0.12c0-0.12,0.09-0.21,0.21-0.21h1.61c0.13,0,0.24,0.06,0.3,0.17l1.41,2.36l1.4-2.35 c0.06-0.11,0.18-0.17,0.3-0.17H83c0.04,0,0.08,0.01,0.12,0.03c0.09,0.06,0.13,0.19,0.06,0.28l0,0l-2.37,3.63l2.43,3.67 C83.24,14.18,83.25,14.22,83.25,14.26z"/%3E %3Cpath class="st0" style="opacity:0.9; fill: %23FFFFFF; enable-background: new;" d="M66.24,9.59c-0.39-1.88-1.96-3.28-3.84-3.28c-1.03,0-2.03,0.42-2.73,1.18V3.51c0-0.13-0.1-0.23-0.23-0.23h-1.4 c-0.13,0-0.23,0.11-0.23,0.23v10.72c0,0.13,0.1,0.23,0.23,0.23h1.4c0.13,0,0.23-0.11,0.23-0.23V13.5c0.71,0.75,1.7,1.18,2.73,1.18 c1.88,0,3.45-1.41,3.84-3.29C66.37,10.79,66.37,10.18,66.24,9.59L66.24,9.59z M62.08,13c-1.32,0-2.39-1.11-2.41-2.48v-0.06 c0.02-1.38,1.09-2.48,2.41-2.48s2.42,1.12,2.42,2.51S63.41,13,62.08,13z"/%3E %3Cpath class="st0" style="opacity:0.9; fill: %23FFFFFF; enable-background: new;" d="M71.67,6.32c-1.98-0.01-3.72,1.35-4.16,3.29c-0.13,0.59-0.13,1.19,0,1.77c0.44,1.94,2.17,3.32,4.17,3.3 c2.35,0,4.26-1.87,4.26-4.19S74.04,6.32,71.67,6.32z M71.65,13.01c-1.33,0-2.42-1.12-2.42-2.51s1.08-2.52,2.42-2.52 c1.33,0,2.42,1.12,2.42,2.51S72.99,13,71.65,13.01L71.65,13.01z"/%3E %3Cpath class="st1" style="opacity:0.35; enable-background:new;" d="M62.08,7.98c-1.32,0-2.39,1.11-2.41,2.48v0.06C59.68,11.9,60.75,13,62.08,13s2.42-1.12,2.42-2.51 S63.41,7.98,62.08,7.98z M62.08,11.76c-0.63,0-1.14-0.56-1.17-1.25v-0.04c0.01-0.69,0.54-1.25,1.17-1.25 c0.63,0,1.17,0.57,1.17,1.27C63.24,11.2,62.73,11.76,62.08,11.76z"/%3E %3Cpath class="st1" style="opacity:0.35; enable-background:new;" d="M71.65,7.98c-1.33,0-2.42,1.12-2.42,2.51S70.32,13,71.65,13s2.42-1.12,2.42-2.51S72.99,7.98,71.65,7.98z M71.65,11.76c-0.64,0-1.17-0.57-1.17-1.27c0-0.7,0.53-1.26,1.17-1.26s1.17,0.57,1.17,1.27C72.82,11.21,72.29,11.76,71.65,11.76z"/%3E %3Cpath class="st0" style="opacity:0.9; fill: %23FFFFFF; enable-background: new;" d="M45.74,6.53h-1.4c-0.13,0-0.23,0.11-0.23,0.23v0.73c-0.71-0.75-1.7-1.18-2.73-1.18 c-2.17,0-3.94,1.87-3.94,4.19s1.77,4.19,3.94,4.19c1.04,0,2.03-0.43,2.73-1.19v0.73c0,0.13,0.1,0.23,0.23,0.23h1.4 c0.13,0,0.23-0.11,0.23-0.23V6.74c0-0.12-0.09-0.22-0.22-0.22C45.75,6.53,45.75,6.53,45.74,6.53z M44.12,10.53 C44.11,11.9,43.03,13,41.71,13s-2.42-1.12-2.42-2.51s1.08-2.52,2.4-2.52c1.33,0,2.39,1.11,2.41,2.48L44.12,10.53z"/%3E %3Cpath class="st1" style="opacity:0.35; enable-background:new;" d="M41.71,7.98c-1.33,0-2.42,1.12-2.42,2.51S40.37,13,41.71,13s2.39-1.11,2.41-2.48v-0.06 C44.1,9.09,43.03,7.98,41.71,7.98z M40.55,10.49c0-0.7,0.52-1.27,1.17-1.27c0.64,0,1.14,0.56,1.17,1.25v0.04 c-0.01,0.68-0.53,1.24-1.17,1.24C41.08,11.75,40.55,11.19,40.55,10.49z"/%3E %3Cpath class="st0" style="opacity:0.9; fill: %23FFFFFF; enable-background: new;" d="M52.41,6.32c-1.03,0-2.03,0.42-2.73,1.18V6.75c0-0.13-0.1-0.23-0.23-0.23h-1.4c-0.13,0-0.23,0.11-0.23,0.23 v10.72c0,0.13,0.1,0.23,0.23,0.23h1.4c0.13,0,0.23-0.1,0.23-0.23V13.5c0.71,0.75,1.7,1.18,2.74,1.18c2.17,0,3.94-1.87,3.94-4.19 S54.58,6.32,52.41,6.32z M52.08,13.01c-1.32,0-2.39-1.11-2.42-2.48v-0.07c0.02-1.38,1.09-2.49,2.4-2.49c1.32,0,2.41,1.12,2.41,2.51 S53.4,13,52.08,13.01L52.08,13.01z"/%3E %3Cpath class="st1" style="opacity:0.35; enable-background:new;" d="M52.08,7.98c-1.32,0-2.39,1.11-2.42,2.48v0.06c0.03,1.38,1.1,2.48,2.42,2.48s2.41-1.12,2.41-2.51 S53.4,7.98,52.08,7.98z M52.08,11.76c-0.63,0-1.14-0.56-1.17-1.25v-0.04c0.01-0.69,0.54-1.25,1.17-1.25c0.63,0,1.17,0.58,1.17,1.27 S52.72,11.76,52.08,11.76z"/%3E %3Cpath class="st0" style="opacity:0.9; fill: %23FFFFFF; enable-background: new;" d="M36.08,14.24c0,0.13-0.1,0.23-0.23,0.23h-1.41c-0.13,0-0.23-0.11-0.23-0.23V9.68c0-0.98-0.74-1.71-1.62-1.71 c-0.8,0-1.46,0.7-1.59,1.62l0.01,4.66c0,0.13-0.11,0.23-0.23,0.23h-1.41c-0.13,0-0.23-0.11-0.23-0.23V9.68 c0-0.98-0.74-1.71-1.62-1.71c-0.85,0-1.54,0.79-1.6,1.8v4.48c0,0.13-0.1,0.23-0.23,0.23h-1.4c-0.13,0-0.23-0.11-0.23-0.23V6.74 c0.01-0.13,0.1-0.22,0.23-0.22h1.4c0.13,0,0.22,0.11,0.23,0.22V7.4c0.5-0.68,1.3-1.09,2.16-1.1h0.03c1.09,0,2.09,0.6,2.6,1.55 c0.45-0.95,1.4-1.55,2.44-1.56c1.62,0,2.93,1.25,2.9,2.78L36.08,14.24z"/%3E %3Cpath class="st1" style="opacity:0.35; enable-background:new;" d="M84.34,13.59l-0.07-0.13l-1.96-2.99l1.94-2.95c0.44-0.67,0.26-1.56-0.41-2.02c-0.02,0-0.03,0-0.04-0.01 c-0.23-0.15-0.5-0.22-0.78-0.22h-1.61c-0.56,0-1.08,0.29-1.37,0.78L79.72,6.6l-0.34-0.56C79.09,5.56,78.57,5.27,78,5.27h-1.6 c-0.6,0-1.13,0.37-1.35,0.92c-2.19-1.66-5.28-1.47-7.26,0.45c-0.35,0.34-0.65,0.72-0.89,1.14c-0.9-1.62-2.58-2.72-4.5-2.72 c-0.5,0-1.01,0.07-1.48,0.23V3.51c0-0.82-0.66-1.48-1.47-1.48h-1.4c-0.81,0-1.47,0.66-1.47,1.47v3.75 c-0.95-1.36-2.5-2.18-4.17-2.19c-0.74,0-1.46,0.16-2.12,0.47c-0.24-0.17-0.54-0.26-0.84-0.26h-1.4c-0.45,0-0.87,0.21-1.15,0.56 c-0.02-0.03-0.04-0.05-0.07-0.08c-0.28-0.3-0.68-0.47-1.09-0.47h-1.39c-0.3,0-0.6,0.09-0.84,0.26c-0.67-0.3-1.39-0.46-2.12-0.46 c-1.83,0-3.43,1-4.37,2.5c-0.2-0.46-0.48-0.89-0.83-1.25c-0.8-0.81-1.89-1.25-3.02-1.25h-0.01c-0.89,0.01-1.75,0.33-2.46,0.88 c-0.74-0.57-1.64-0.88-2.57-0.88H28.1c-0.29,0-0.58,0.03-0.86,0.11c-0.28,0.06-0.56,0.16-0.82,0.28c-0.21-0.12-0.45-0.18-0.7-0.18 h-1.4c-0.82,0-1.47,0.66-1.47,1.47v7.5c0,0.82,0.66,1.47,1.47,1.47h1.4c0.82,0,1.48-0.66,1.48-1.48l0,0V9.79 c0.03-0.36,0.23-0.59,0.36-0.59c0.18,0,0.38,0.18,0.38,0.47v4.57c0,0.82,0.66,1.47,1.47,1.47h1.41c0.82,0,1.47-0.66,1.47-1.47 l-0.01-4.57c0.06-0.32,0.25-0.47,0.35-0.47c0.18,0,0.38,0.18,0.38,0.47v4.57c0,0.82,0.66,1.47,1.47,1.47h1.41 c0.82,0,1.47-0.66,1.47-1.47v-0.38c0.96,1.29,2.46,2.06,4.06,2.06c0.74,0,1.46-0.16,2.12-0.47c0.24,0.17,0.54,0.26,0.84,0.26h1.39 c0.3,0,0.6-0.09,0.84-0.26v2.01c0,0.82,0.66,1.47,1.47,1.47h1.4c0.82,0,1.47-0.66,1.47-1.47v-1.77c0.48,0.15,0.99,0.23,1.49,0.22 c1.7,0,3.22-0.87,4.17-2.2v0.52c0,0.82,0.66,1.47,1.47,1.47h1.4c0.3,0,0.6-0.09,0.84-0.26c0.66,0.31,1.39,0.47,2.12,0.47 c1.92,0,3.6-1.1,4.49-2.73c1.54,2.65,4.95,3.53,7.58,1.98c0.18-0.11,0.36-0.22,0.53-0.36c0.22,0.55,0.76,0.91,1.35,0.9H78 c0.56,0,1.08-0.29,1.37-0.78l0.37-0.61l0.37,0.61c0.29,0.48,0.81,0.78,1.38,0.78h1.6c0.81,0,1.46-0.66,1.45-1.46 C84.49,14.02,84.44,13.8,84.34,13.59L84.34,13.59z M35.86,14.47h-1.41c-0.13,0-0.23-0.11-0.23-0.23V9.68 c0-0.98-0.74-1.71-1.62-1.71c-0.8,0-1.46,0.7-1.59,1.62l0.01,4.66c0,0.13-0.1,0.23-0.23,0.23h-1.41c-0.13,0-0.23-0.11-0.23-0.23 V9.68c0-0.98-0.74-1.71-1.62-1.71c-0.85,0-1.54,0.79-1.6,1.8v4.48c0,0.13-0.1,0.23-0.23,0.23h-1.4c-0.13,0-0.23-0.11-0.23-0.23 V6.74c0.01-0.13,0.11-0.22,0.23-0.22h1.4c0.13,0,0.22,0.11,0.23,0.22V7.4c0.5-0.68,1.3-1.09,2.16-1.1h0.03 c1.09,0,2.09,0.6,2.6,1.55c0.45-0.95,1.4-1.55,2.44-1.56c1.62,0,2.93,1.25,2.9,2.78l0.01,5.16C36.09,14.36,35.98,14.46,35.86,14.47 L35.86,14.47z M45.97,14.24c0,0.13-0.1,0.23-0.23,0.23h-1.4c-0.13,0-0.23-0.11-0.23-0.23V13.5c-0.7,0.76-1.69,1.18-2.72,1.18 c-2.17,0-3.94-1.87-3.94-4.19s1.77-4.19,3.94-4.19c1.03,0,2.02,0.43,2.73,1.18V6.74c0-0.13,0.1-0.23,0.23-0.23h1.4 c0.12-0.01,0.22,0.08,0.23,0.21c0,0.01,0,0.01,0,0.02v7.51h-0.01V14.24z M52.41,14.67c-1.03,0-2.02-0.43-2.73-1.18v3.97 c0,0.13-0.1,0.23-0.23,0.23h-1.4c-0.13,0-0.23-0.1-0.23-0.23V6.75c0-0.13,0.1-0.22,0.23-0.22h1.4c0.13,0,0.23,0.11,0.23,0.23v0.73 c0.71-0.76,1.7-1.18,2.73-1.18c2.17,0,3.94,1.86,3.94,4.18S54.58,14.67,52.41,14.67z M66.24,11.39c-0.39,1.87-1.96,3.29-3.84,3.29 c-1.03,0-2.02-0.43-2.73-1.18v0.73c0,0.13-0.1,0.23-0.23,0.23h-1.4c-0.13,0-0.23-0.11-0.23-0.23V3.51c0-0.13,0.1-0.23,0.23-0.23 h1.4c0.13,0,0.23,0.11,0.23,0.23v3.97c0.71-0.75,1.7-1.18,2.73-1.17c1.88,0,3.45,1.4,3.84,3.28C66.37,10.19,66.37,10.8,66.24,11.39 L66.24,11.39L66.24,11.39z M71.67,14.68c-2,0.01-3.73-1.35-4.17-3.3c-0.13-0.59-0.13-1.19,0-1.77c0.44-1.94,2.17-3.31,4.17-3.3 c2.36,0,4.26,1.87,4.26,4.19S74.03,14.68,71.67,14.68L71.67,14.68z M83.04,14.47h-1.61c-0.13,0-0.24-0.06-0.3-0.17l-1.44-2.39 l-1.44,2.39c-0.06,0.11-0.18,0.17-0.3,0.17h-1.61c-0.04,0-0.08-0.01-0.12-0.03c-0.09-0.06-0.13-0.19-0.06-0.28l0,0l2.43-3.68 L76.2,6.84c-0.02-0.03-0.03-0.07-0.03-0.12c0-0.12,0.09-0.21,0.21-0.21h1.61c0.13,0,0.24,0.06,0.3,0.17l1.41,2.36l1.41-2.36 c0.06-0.11,0.18-0.17,0.3-0.17h1.61c0.04,0,0.08,0.01,0.12,0.03c0.09,0.06,0.13,0.19,0.06,0.28l0,0l-2.38,3.64l2.43,3.67 c0.02,0.03,0.03,0.07,0.03,0.12C83.25,14.38,83.16,14.47,83.04,14.47L83.04,14.47L83.04,14.47z"/%3E %3Cpath class="st0" style="opacity:0.9; fill: %23FFFFFF; enable-background: new;" d="M10.5,1.24c-5.11,0-9.25,4.15-9.25,9.25s4.15,9.25,9.25,9.25s9.25-4.15,9.25-9.25 C19.75,5.38,15.61,1.24,10.5,1.24z M14.89,12.77c-1.93,1.93-4.78,2.31-6.7,2.31c-0.7,0-1.41-0.05-2.1-0.16c0,0-1.02-5.64,2.14-8.81 c0.83-0.83,1.95-1.28,3.13-1.28c1.27,0,2.49,0.51,3.39,1.42C16.59,8.09,16.64,11,14.89,12.77z"/%3E %3Cpath class="st1" style="opacity:0.35; enable-background:new;" d="M10.5-0.01C4.7-0.01,0,4.7,0,10.49s4.7,10.5,10.5,10.5S21,16.29,21,10.49C20.99,4.7,16.3-0.01,10.5-0.01z M10.5,19.74c-5.11,0-9.25-4.15-9.25-9.25s4.14-9.26,9.25-9.26s9.25,4.15,9.25,9.25C19.75,15.61,15.61,19.74,10.5,19.74z"/%3E %3Cpath class="st1" style="opacity:0.35; enable-background:new;" d="M14.74,6.25C12.9,4.41,9.98,4.35,8.23,6.1c-3.16,3.17-2.14,8.81-2.14,8.81s5.64,1.02,8.81-2.14 C16.64,11,16.59,8.09,14.74,6.25z M12.47,10.34l-0.91,1.87l-0.9-1.87L8.8,9.43l1.86-0.9l0.9-1.87l0.91,1.87l1.86,0.9L12.47,10.34z"/%3E %3Cpolygon class="st0" style="opacity:0.9; fill: %23FFFFFF; enable-background: new;" points="14.33,9.43 12.47,10.34 11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 "/%3E%3C/g%3E%3C/svg%3E\');'
                }
              };
            }
          ),
          /***/
          2178: (
            /***/
            function(Y, K, e) {
              var b = e(34809);
              Y.exports = function(n, s) {
                var T = n.split(" "), A = T[0], p = T[1], u = b.isArrayOrTypedArray(s) ? b.mean(s) : s, t = 0.5 + u / 100, r = 1.5 + u / 100, i = ["", ""], a = [0, 0];
                switch (A) {
                  case "top":
                    i[0] = "top", a[1] = -r;
                    break;
                  case "bottom":
                    i[0] = "bottom", a[1] = r;
                    break;
                }
                switch (p) {
                  case "left":
                    i[1] = "right", a[0] = -t;
                    break;
                  case "right":
                    i[1] = "left", a[0] = t;
                    break;
                }
                var l;
                return i[0] && i[1] ? l = i.join("-") : i[0] ? l = i[0] : i[1] ? l = i[1] : l = "center", {
                  anchor: l,
                  offset: a
                };
              };
            }
          ),
          /***/
          68192: (
            /***/
            function(Y, K, e) {
              var b = e(32280), P = e(34809), n = P.strTranslate, s = P.strScale, T = e(4173).fX, A = e(62972), p = e(45568), u = e(62203), t = e(30635), r = e(5417), i = "mapbox", a = K.constants = e(44245);
              K.name = i, K.attr = "subplot", K.idRoot = i, K.idRegex = K.attrRegex = P.counterRegex(i);
              var l = ["mapbox subplots and traces are deprecated!", "Please consider switching to `map` subplots and traces.", "Learn more at: https://plotly.com/javascript/maplibre-migration/"].join(" ");
              K.attributes = {
                subplot: {
                  valType: "subplotid",
                  dflt: "mapbox",
                  editType: "calc"
                }
              }, K.layoutAttributes = e(67514), K.supplyLayoutDefaults = e(86989);
              var o = !0;
              K.plot = function(c) {
                o && (o = !1, P.warn(l));
                var v = c._fullLayout, f = c.calcdata, _ = v._subplots[i];
                if (b.version !== a.requiredVersion)
                  throw new Error(a.wrongVersionErrorMsg);
                var S = y(c, _);
                b.accessToken = S;
                for (var M = 0; M < _.length; M++) {
                  var C = _[M], m = T(f, i, C), L = v[C], d = L._subplot;
                  d || (d = new r(c, C), v[C]._subplot = d), d.viewInitial || (d.viewInitial = {
                    center: P.extendFlat({}, L.center),
                    zoom: L.zoom,
                    bearing: L.bearing,
                    pitch: L.pitch
                  }), d.plot(m, v, c._promises);
                }
              }, K.clean = function(x, c, v, f) {
                for (var _ = f._subplots[i] || [], S = 0; S < _.length; S++) {
                  var M = _[S];
                  !c[M] && f[M]._subplot && f[M]._subplot.destroy();
                }
              }, K.toSVG = function(x) {
                for (var c = x._fullLayout, v = c._subplots[i], f = c._size, _ = 0; _ < v.length; _++) {
                  var S = c[v[_]], M = S.domain, C = S._subplot, m = C.toImage("png"), L = c._glimages.append("svg:image");
                  L.attr({
                    xmlns: A.svg,
                    "xlink:href": m,
                    x: f.l + f.w * M.x[0],
                    y: f.t + f.h * (1 - M.y[1]),
                    width: f.w * (M.x[1] - M.x[0]),
                    height: f.h * (M.y[1] - M.y[0]),
                    preserveAspectRatio: "none"
                  });
                  var d = p.select(S._subplot.div), h = d.select(".mapboxgl-ctrl-logo").node().offsetParent === null;
                  if (!h) {
                    var E = c._glimages.append("g");
                    E.attr("transform", n(f.l + f.w * M.x[0] + 10, f.t + f.h * (1 - M.y[0]) - 31)), E.append("path").attr("d", a.mapboxLogo.path0).style({
                      opacity: 0.9,
                      fill: "#ffffff",
                      "enable-background": "new"
                    }), E.append("path").attr("d", a.mapboxLogo.path1).style("opacity", 0.35).style("enable-background", "new"), E.append("path").attr("d", a.mapboxLogo.path2).style("opacity", 0.35).style("enable-background", "new"), E.append("polygon").attr("points", a.mapboxLogo.polygon).style({
                      opacity: 0.9,
                      fill: "#ffffff",
                      "enable-background": "new"
                    });
                  }
                  var w = d.select(".mapboxgl-ctrl-attrib").text().replace("Improve this map", ""), z = c._glimages.append("g"), O = z.append("text");
                  O.text(w).classed("static-attribution", !0).attr({
                    "font-size": 12,
                    "font-family": "Arial",
                    color: "rgba(0, 0, 0, 0.75)",
                    "text-anchor": "end",
                    "data-unformatted": w
                  });
                  var B = u.bBox(O.node()), V = f.w * (M.x[1] - M.x[0]);
                  if (B.width > V / 2) {
                    var U = w.split("|").join("<br>");
                    O.text(U).attr("data-unformatted", U).call(t.convertToTspans, x), B = u.bBox(O.node());
                  }
                  O.attr("transform", n(-3, -B.height + 8)), z.insert("rect", ".static-attribution").attr({
                    x: -B.width - 6,
                    y: -B.height - 3,
                    width: B.width + 6,
                    height: B.height + 3,
                    fill: "rgba(255, 255, 255, 0.75)"
                  });
                  var H = 1;
                  B.width + 6 > V && (H = V / (B.width + 6));
                  var F = [f.l + f.w * M.x[1], f.t + f.h * (1 - M.y[0])];
                  z.attr("transform", n(F[0], F[1]) + s(H));
                }
              };
              function y(x, c) {
                var v = x._fullLayout, f = x._context;
                if (f.mapboxAccessToken === "") return "";
                for (var _ = [], S = [], M = !1, C = !1, m = 0; m < c.length; m++) {
                  var L = v[c[m]], d = L.accesstoken;
                  g(L.style) && (d ? P.pushUnique(_, d) : (g(L._input.style) && (P.error("Uses Mapbox map style, but did not set an access token."), M = !0), C = !0)), d && P.pushUnique(S, d);
                }
                if (C) {
                  var h = M ? a.noAccessTokenErrorMsg : a.missingStyleErrorMsg;
                  throw P.error(h), new Error(h);
                }
                return _.length ? (_.length > 1 && P.warn(a.multipleTokensErrorMsg), _[0]) : (S.length && P.log(["Listed mapbox access token(s)", S.join(","), "but did not use a Mapbox map style, ignoring token(s)."].join(" ")), "");
              }
              function g(x) {
                return typeof x == "string" && (a.styleValuesMapbox.indexOf(x) !== -1 || x.indexOf("mapbox://") === 0 || x.indexOf("stamen") === 0);
              }
              K.updateFx = function(x) {
                for (var c = x._fullLayout, v = c._subplots[i], f = 0; f < v.length; f++) {
                  var _ = c[v[f]]._subplot;
                  _.updateFx(c);
                }
              };
            }
          ),
          /***/
          51276: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(30635).sanitizeHTML, n = e(2178), s = e(44245);
              function T(r, i) {
                this.subplot = r, this.uid = r.uid + "-" + i, this.index = i, this.idSource = "source-" + this.uid, this.idLayer = s.layoutLayerPrefix + this.uid, this.sourceType = null, this.source = null, this.layerType = null, this.below = null, this.visible = !1;
              }
              var A = T.prototype;
              A.update = function(i) {
                this.visible ? this.needsNewImage(i) ? this.updateImage(i) : this.needsNewSource(i) ? (this.removeLayer(), this.updateSource(i), this.updateLayer(i)) : this.needsNewLayer(i) ? this.updateLayer(i) : this.updateStyle(i) : (this.updateSource(i), this.updateLayer(i)), this.visible = p(i);
              }, A.needsNewImage = function(r) {
                var i = this.subplot.map;
                return i.getSource(this.idSource) && this.sourceType === "image" && r.sourcetype === "image" && (this.source !== r.source || JSON.stringify(this.coordinates) !== JSON.stringify(r.coordinates));
              }, A.needsNewSource = function(r) {
                return this.sourceType !== r.sourcetype || JSON.stringify(this.source) !== JSON.stringify(r.source) || this.layerType !== r.type;
              }, A.needsNewLayer = function(r) {
                return this.layerType !== r.type || this.below !== this.subplot.belowLookup["layout-" + this.index];
              }, A.lookupBelow = function() {
                return this.subplot.belowLookup["layout-" + this.index];
              }, A.updateImage = function(r) {
                var i = this.subplot.map;
                i.getSource(this.idSource).updateImage({
                  url: r.source,
                  coordinates: r.coordinates
                });
                var a = this.findFollowingMapboxLayerId(this.lookupBelow());
                a !== null && this.subplot.map.moveLayer(this.idLayer, a);
              }, A.updateSource = function(r) {
                var i = this.subplot.map;
                if (i.getSource(this.idSource) && i.removeSource(this.idSource), this.sourceType = r.sourcetype, this.source = r.source, !!p(r)) {
                  var a = t(r);
                  i.addSource(this.idSource, a);
                }
              }, A.findFollowingMapboxLayerId = function(r) {
                if (r === "traces")
                  for (var i = this.subplot.getMapLayers(), a = 0; a < i.length; a++) {
                    var l = i[a].id;
                    if (typeof l == "string" && l.indexOf(s.traceLayerPrefix) === 0) {
                      r = l;
                      break;
                    }
                  }
                return r;
              }, A.updateLayer = function(r) {
                var i = this.subplot, a = u(r), l = this.lookupBelow(), o = this.findFollowingMapboxLayerId(l);
                this.removeLayer(), p(r) && i.addLayer({
                  id: this.idLayer,
                  source: this.idSource,
                  "source-layer": r.sourcelayer || "",
                  type: r.type,
                  minzoom: r.minzoom,
                  maxzoom: r.maxzoom,
                  layout: a.layout,
                  paint: a.paint
                }, o), this.layerType = r.type, this.below = l;
              }, A.updateStyle = function(r) {
                if (p(r)) {
                  var i = u(r);
                  this.subplot.setOptions(this.idLayer, "setLayoutProperty", i.layout), this.subplot.setOptions(this.idLayer, "setPaintProperty", i.paint);
                }
              }, A.removeLayer = function() {
                var r = this.subplot.map;
                r.getLayer(this.idLayer) && r.removeLayer(this.idLayer);
              }, A.dispose = function() {
                var r = this.subplot.map;
                r.getLayer(this.idLayer) && r.removeLayer(this.idLayer), r.getSource(this.idSource) && r.removeSource(this.idSource);
              };
              function p(r) {
                if (!r.visible) return !1;
                var i = r.source;
                if (Array.isArray(i) && i.length > 0) {
                  for (var a = 0; a < i.length; a++)
                    if (typeof i[a] != "string" || i[a].length === 0)
                      return !1;
                  return !0;
                }
                return b.isPlainObject(i) || typeof i == "string" && i.length > 0;
              }
              function u(r) {
                var i = {}, a = {};
                switch (r.type) {
                  case "circle":
                    b.extendFlat(a, {
                      "circle-radius": r.circle.radius,
                      "circle-color": r.color,
                      "circle-opacity": r.opacity
                    });
                    break;
                  case "line":
                    b.extendFlat(a, {
                      "line-width": r.line.width,
                      "line-color": r.color,
                      "line-opacity": r.opacity,
                      "line-dasharray": r.line.dash
                    });
                    break;
                  case "fill":
                    b.extendFlat(a, {
                      "fill-color": r.color,
                      "fill-outline-color": r.fill.outlinecolor,
                      "fill-opacity": r.opacity
                      // no way to pass specify outline width at the moment
                    });
                    break;
                  case "symbol":
                    var l = r.symbol, o = n(l.textposition, l.iconsize);
                    b.extendFlat(i, {
                      "icon-image": l.icon + "-15",
                      "icon-size": l.iconsize / 10,
                      "text-field": l.text,
                      "text-size": l.textfont.size,
                      "text-anchor": o.anchor,
                      "text-offset": o.offset,
                      "symbol-placement": l.placement
                      // TODO font family
                      // 'text-font': symbol.textfont.family.split(', '),
                    }), b.extendFlat(a, {
                      "icon-color": r.color,
                      "text-color": l.textfont.color,
                      "text-opacity": r.opacity
                    });
                    break;
                  case "raster":
                    b.extendFlat(a, {
                      "raster-fade-duration": 0,
                      "raster-opacity": r.opacity
                    });
                    break;
                }
                return {
                  layout: i,
                  paint: a
                };
              }
              function t(r) {
                var i = r.sourcetype, a = r.source, l = {
                  type: i
                }, o;
                return i === "geojson" ? o = "data" : i === "vector" ? o = typeof a == "string" ? "url" : "tiles" : i === "raster" ? (o = "tiles", l.tileSize = 256) : i === "image" && (o = "url", l.coordinates = r.coordinates), l[o] = a, r.sourceattribution && (l.attribution = P(r.sourceattribution)), l;
              }
              Y.exports = function(i, a, l) {
                var o = new T(i, a);
                return o.update(l), o;
              };
            }
          ),
          /***/
          67514: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(78766).defaultLine, n = e(13792).u, s = e(80337), T = e(36640).textposition, A = e(13582).overrideAll, p = e(78032).templatedArray, u = e(44245), t = s({
                noFontVariant: !0,
                noFontShadow: !0,
                noFontLineposition: !0,
                noFontTextcase: !0
              });
              t.family.dflt = "Open Sans Regular, Arial Unicode MS Regular";
              var r = Y.exports = A({
                _arrayAttrRegexps: [b.counterRegex("mapbox", ".layers", !0)],
                domain: n({
                  name: "mapbox"
                }),
                accesstoken: {
                  valType: "string",
                  noBlank: !0,
                  strict: !0
                },
                style: {
                  valType: "any",
                  values: u.styleValuesMapbox.concat(u.styleValuesNonMapbox),
                  dflt: u.styleValueDflt
                },
                center: {
                  lon: {
                    valType: "number",
                    dflt: 0
                  },
                  lat: {
                    valType: "number",
                    dflt: 0
                  }
                },
                zoom: {
                  valType: "number",
                  dflt: 1
                },
                bearing: {
                  valType: "number",
                  dflt: 0
                },
                pitch: {
                  valType: "number",
                  dflt: 0
                },
                bounds: {
                  west: {
                    valType: "number"
                  },
                  east: {
                    valType: "number"
                  },
                  south: {
                    valType: "number"
                  },
                  north: {
                    valType: "number"
                  }
                },
                layers: p("layer", {
                  visible: {
                    valType: "boolean",
                    dflt: !0
                  },
                  sourcetype: {
                    valType: "enumerated",
                    values: ["geojson", "vector", "raster", "image"],
                    dflt: "geojson"
                  },
                  source: {
                    valType: "any"
                  },
                  sourcelayer: {
                    valType: "string",
                    dflt: ""
                  },
                  sourceattribution: {
                    valType: "string"
                  },
                  type: {
                    valType: "enumerated",
                    values: ["circle", "line", "fill", "symbol", "raster"],
                    dflt: "circle"
                  },
                  coordinates: {
                    valType: "any"
                  },
                  // attributes shared between all types
                  below: {
                    valType: "string"
                  },
                  color: {
                    valType: "color",
                    dflt: P
                  },
                  opacity: {
                    valType: "number",
                    min: 0,
                    max: 1,
                    dflt: 1
                  },
                  minzoom: {
                    valType: "number",
                    min: 0,
                    max: 24,
                    dflt: 0
                  },
                  maxzoom: {
                    valType: "number",
                    min: 0,
                    max: 24,
                    dflt: 24
                  },
                  // type-specific style attributes
                  circle: {
                    radius: {
                      valType: "number",
                      dflt: 15
                    }
                  },
                  line: {
                    width: {
                      valType: "number",
                      dflt: 2
                    },
                    dash: {
                      valType: "data_array"
                    }
                  },
                  fill: {
                    outlinecolor: {
                      valType: "color",
                      dflt: P
                    }
                  },
                  symbol: {
                    icon: {
                      valType: "string",
                      dflt: "marker"
                    },
                    iconsize: {
                      valType: "number",
                      dflt: 10
                    },
                    text: {
                      valType: "string",
                      dflt: ""
                    },
                    placement: {
                      valType: "enumerated",
                      values: ["point", "line", "line-center"],
                      dflt: "point"
                    },
                    textfont: t,
                    textposition: b.extendFlat({}, T, {
                      arrayOk: !1
                    })
                  }
                })
              }, "plot", "from-root");
              r.uirevision = {
                valType: "any",
                editType: "none"
              };
            }
          ),
          /***/
          86989: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(4448), n = e(59008), s = e(67514);
              Y.exports = function(u, t, r) {
                P(u, t, r, {
                  type: "mapbox",
                  attributes: s,
                  handleDefaults: T,
                  partition: "y",
                  accessToken: t._mapboxAccessToken
                });
              };
              function T(p, u, t, r) {
                t("accesstoken", r.accessToken), t("style"), t("center.lon"), t("center.lat"), t("zoom"), t("bearing"), t("pitch");
                var i = t("bounds.west"), a = t("bounds.east"), l = t("bounds.south"), o = t("bounds.north");
                (i === void 0 || a === void 0 || l === void 0 || o === void 0) && delete u.bounds, n(p, u, {
                  name: "layers",
                  handleItemDefaults: A
                }), u._input = p;
              }
              function A(p, u) {
                function t(y, g) {
                  return b.coerce(p, u, s.layers, y, g);
                }
                var r = t("visible");
                if (r) {
                  var i = t("sourcetype"), a = i === "raster" || i === "image";
                  t("source"), t("sourceattribution"), i === "vector" && t("sourcelayer"), i === "image" && t("coordinates");
                  var l;
                  a && (l = "raster");
                  var o = t("type", l);
                  a && o !== "raster" && (o = u.type = "raster", b.log("Source types *raster* and *image* must drawn *raster* layer type.")), t("below"), t("color"), t("opacity"), t("minzoom"), t("maxzoom"), o === "circle" && t("circle.radius"), o === "line" && (t("line.width"), t("line.dash")), o === "fill" && t("fill.outlinecolor"), o === "symbol" && (t("symbol.icon"), t("symbol.iconsize"), t("symbol.text"), b.coerceFont(t, "symbol.textfont", void 0, {
                    noFontVariant: !0,
                    noFontShadow: !0,
                    noFontLineposition: !0,
                    noFontTextcase: !0
                  }), t("symbol.textposition"), t("symbol.placement"));
                }
              }
            }
          ),
          /***/
          5417: (
            /***/
            function(Y, K, e) {
              var b = e(32280), P = e(34809), n = e(3994), s = e(33626), T = e(29714), A = e(14751), p = e(32141), u = e(70414), t = u.drawMode, r = u.selectMode, i = e(44844).prepSelect, a = e(44844).clearOutline, l = e(44844).clearSelectionsCache, o = e(44844).selectOnClick, y = e(44245), g = e(51276);
              function x(M, C) {
                this.id = C, this.gd = M;
                var m = M._fullLayout, L = M._context;
                this.container = m._glcontainer.node(), this.isStatic = L.staticPlot, this.uid = m._uid + "-" + this.id, this.div = null, this.xaxis = null, this.yaxis = null, this.createFramework(m), this.map = null, this.accessToken = null, this.styleObj = null, this.traceHash = {}, this.layerList = [], this.belowLookup = {}, this.dragging = !1, this.wheeling = !1;
              }
              var c = x.prototype;
              c.plot = function(M, C, m) {
                var L = this, d = C[L.id];
                L.map && d.accesstoken !== L.accessToken && (L.map.remove(), L.map = null, L.styleObj = null, L.traceHash = {}, L.layerList = []);
                var h;
                L.map ? h = new Promise(function(E, w) {
                  L.updateMap(M, C, E, w);
                }) : h = new Promise(function(E, w) {
                  L.createMap(M, C, E, w);
                }), m.push(h);
              }, c.createMap = function(M, C, m, L) {
                var d = this, h = C[d.id], E = d.styleObj = f(h.style, C);
                d.accessToken = h.accesstoken;
                var w = h.bounds, z = w ? [[w.west, w.south], [w.east, w.north]] : null, O = d.map = new b.Map({
                  container: d.div,
                  style: E.style,
                  center: S(h.center),
                  zoom: h.zoom,
                  bearing: h.bearing,
                  pitch: h.pitch,
                  maxBounds: z,
                  interactive: !d.isStatic,
                  preserveDrawingBuffer: d.isStatic,
                  doubleClickZoom: !1,
                  boxZoom: !1,
                  attributionControl: !1
                }).addControl(new b.AttributionControl({
                  compact: !0
                }));
                O._canvas.style.left = "0px", O._canvas.style.top = "0px", d.rejectOnError(L), d.isStatic || d.initFx(M, C);
                var B = [];
                B.push(new Promise(function(V) {
                  O.once("load", V);
                })), B = B.concat(n.fetchTraceGeoData(M)), Promise.all(B).then(function() {
                  d.fillBelowLookup(M, C), d.updateData(M), d.updateLayout(C), d.resolveOnRender(m);
                }).catch(L);
              }, c.updateMap = function(M, C, m, L) {
                var d = this, h = d.map, E = C[this.id];
                d.rejectOnError(L);
                var w = [], z = f(E.style, C);
                JSON.stringify(d.styleObj) !== JSON.stringify(z) && (d.styleObj = z, h.setStyle(z.style), d.traceHash = {}, w.push(new Promise(function(O) {
                  h.once("styledata", O);
                }))), w = w.concat(n.fetchTraceGeoData(M)), Promise.all(w).then(function() {
                  d.fillBelowLookup(M, C), d.updateData(M), d.updateLayout(C), d.resolveOnRender(m);
                }).catch(L);
              }, c.fillBelowLookup = function(M, C) {
                var m = C[this.id], L = m.layers, d, h, E = this.belowLookup = {}, w = !1;
                for (d = 0; d < M.length; d++) {
                  var z = M[d][0].trace, O = z._module;
                  typeof z.below == "string" ? h = z.below : O.getBelow && (h = O.getBelow(z, this)), h === "" && (w = !0), E["trace-" + z.uid] = h || "";
                }
                for (d = 0; d < L.length; d++) {
                  var B = L[d];
                  typeof B.below == "string" ? h = B.below : w ? h = "traces" : h = "", E["layout-" + d] = h;
                }
                var V = {}, U, H;
                for (U in E)
                  h = E[U], V[h] ? V[h].push(U) : V[h] = [U];
                for (h in V) {
                  var F = V[h];
                  if (F.length > 1)
                    for (d = 0; d < F.length; d++)
                      U = F[d], U.indexOf("trace-") === 0 ? (H = U.split("trace-")[1], this.traceHash[H] && (this.traceHash[H].below = null)) : U.indexOf("layout-") === 0 && (H = U.split("layout-")[1], this.layerList[H] && (this.layerList[H].below = null));
                }
              };
              var v = {
                choroplethmapbox: 0,
                densitymapbox: 1,
                scattermapbox: 2
              };
              c.updateData = function(M) {
                var C = this.traceHash, m, L, d, h, E = M.slice().sort(function(V, U) {
                  return v[V[0].trace.type] - v[U[0].trace.type];
                });
                for (d = 0; d < E.length; d++) {
                  var w = E[d];
                  L = w[0].trace, m = C[L.uid];
                  var z = !1;
                  m && (m.type === L.type ? (m.update(w), z = !0) : m.dispose()), !z && L._module && (C[L.uid] = L._module.plot(this, w));
                }
                var O = Object.keys(C);
                t: for (d = 0; d < O.length; d++) {
                  var B = O[d];
                  for (h = 0; h < M.length; h++)
                    if (L = M[h][0].trace, B === L.uid) continue t;
                  m = C[B], m.dispose(), delete C[B];
                }
              }, c.updateLayout = function(M) {
                var C = this.map, m = M[this.id];
                !this.dragging && !this.wheeling && (C.setCenter(S(m.center)), C.setZoom(m.zoom), C.setBearing(m.bearing), C.setPitch(m.pitch)), this.updateLayers(M), this.updateFramework(M), this.updateFx(M), this.map.resize(), this.gd._context._scrollZoom.mapbox ? C.scrollZoom.enable() : C.scrollZoom.disable();
              }, c.resolveOnRender = function(M) {
                var C = this.map;
                C.on("render", function m() {
                  C.loaded() && (C.off("render", m), setTimeout(M, 10));
                });
              }, c.rejectOnError = function(M) {
                var C = this.map;
                function m() {
                  M(new Error(y.mapOnErrorMsg));
                }
                C.once("error", m), C.once("style.error", m), C.once("source.error", m), C.once("tile.error", m), C.once("layer.error", m);
              }, c.createFramework = function(M) {
                var C = this, m = C.div = document.createElement("div");
                m.id = C.uid, m.style.position = "absolute", C.container.appendChild(m), C.xaxis = {
                  _id: "x",
                  c2p: function(L) {
                    return C.project(L).x;
                  }
                }, C.yaxis = {
                  _id: "y",
                  c2p: function(L) {
                    return C.project(L).y;
                  }
                }, C.updateFramework(M), C.mockAxis = {
                  type: "linear",
                  showexponent: "all",
                  exponentformat: "B"
                }, T.setConvert(C.mockAxis, M);
              }, c.initFx = function(M, C) {
                var m = this, L = m.gd, d = m.map;
                d.on("moveend", function(w) {
                  if (m.map) {
                    var z = L._fullLayout;
                    if (w.originalEvent || m.wheeling) {
                      var O = z[m.id];
                      s.call("_storeDirectGUIEdit", L.layout, z._preGUI, m.getViewEdits(O));
                      var B = m.getView();
                      O._input.center = O.center = B.center, O._input.zoom = O.zoom = B.zoom, O._input.bearing = O.bearing = B.bearing, O._input.pitch = O.pitch = B.pitch, L.emit("plotly_relayout", m.getViewEditsWithDerived(B));
                    }
                    w.originalEvent && w.originalEvent.type === "mouseup" ? m.dragging = !1 : m.wheeling && (m.wheeling = !1), z._rehover && z._rehover();
                  }
                }), d.on("wheel", function() {
                  m.wheeling = !0;
                }), d.on("mousemove", function(w) {
                  var z = m.div.getBoundingClientRect(), O = [w.originalEvent.offsetX, w.originalEvent.offsetY];
                  w.target.getBoundingClientRect = function() {
                    return z;
                  }, m.xaxis.p2c = function() {
                    return d.unproject(O).lng;
                  }, m.yaxis.p2c = function() {
                    return d.unproject(O).lat;
                  }, L._fullLayout._rehover = function() {
                    L._fullLayout._hoversubplot === m.id && L._fullLayout[m.id] && p.hover(L, w, m.id);
                  }, p.hover(L, w, m.id), L._fullLayout._hoversubplot = m.id;
                });
                function h() {
                  p.loneUnhover(C._hoverlayer);
                }
                d.on("dragstart", function() {
                  m.dragging = !0, h();
                }), d.on("zoomstart", h), d.on("mouseout", function() {
                  L._fullLayout._hoversubplot = null;
                });
                function E() {
                  var w = m.getView();
                  L.emit("plotly_relayouting", m.getViewEditsWithDerived(w));
                }
                d.on("drag", E), d.on("zoom", E), d.on("dblclick", function() {
                  var w = L._fullLayout[m.id];
                  s.call("_storeDirectGUIEdit", L.layout, L._fullLayout._preGUI, m.getViewEdits(w));
                  var z = m.viewInitial;
                  d.setCenter(S(z.center)), d.setZoom(z.zoom), d.setBearing(z.bearing), d.setPitch(z.pitch);
                  var O = m.getView();
                  w._input.center = w.center = O.center, w._input.zoom = w.zoom = O.zoom, w._input.bearing = w.bearing = O.bearing, w._input.pitch = w.pitch = O.pitch, L.emit("plotly_doubleclick", null), L.emit("plotly_relayout", m.getViewEditsWithDerived(O));
                }), m.clearOutline = function() {
                  l(m.dragOptions), a(m.dragOptions.gd);
                }, m.onClickInPanFn = function(w) {
                  return function(z) {
                    var O = L._fullLayout.clickmode;
                    O.indexOf("select") > -1 && o(z.originalEvent, L, [m.xaxis], [m.yaxis], m.id, w), O.indexOf("event") > -1 && p.click(L, z.originalEvent);
                  };
                };
              }, c.updateFx = function(M) {
                var C = this, m = C.map, L = C.gd;
                if (C.isStatic) return;
                function d(z) {
                  var O = C.map.unproject(z);
                  return [O.lng, O.lat];
                }
                var h = M.dragmode, E;
                E = function(z, O) {
                  if (O.isRect) {
                    var B = z.range = {};
                    B[C.id] = [d([O.xmin, O.ymin]), d([O.xmax, O.ymax])];
                  } else {
                    var V = z.lassoPoints = {};
                    V[C.id] = O.map(d);
                  }
                };
                var w = C.dragOptions;
                C.dragOptions = P.extendDeep(w || {}, {
                  dragmode: M.dragmode,
                  element: C.div,
                  gd: L,
                  plotinfo: {
                    id: C.id,
                    domain: M[C.id].domain,
                    xaxis: C.xaxis,
                    yaxis: C.yaxis,
                    fillRangeItems: E
                  },
                  xaxes: [C.xaxis],
                  yaxes: [C.yaxis],
                  subplot: C.id
                }), m.off("click", C.onClickInPanHandler), r(h) || t(h) ? (m.dragPan.disable(), m.on("zoomstart", C.clearOutline), C.dragOptions.prepFn = function(z, O, B) {
                  i(z, O, B, C.dragOptions, h);
                }, A.init(C.dragOptions)) : (m.dragPan.enable(), m.off("zoomstart", C.clearOutline), C.div.onmousedown = null, C.div.ontouchstart = null, C.div.removeEventListener("touchstart", C.div._ontouchstart), C.onClickInPanHandler = C.onClickInPanFn(C.dragOptions), m.on("click", C.onClickInPanHandler));
              }, c.updateFramework = function(M) {
                var C = M[this.id].domain, m = M._size, L = this.div.style;
                L.width = m.w * (C.x[1] - C.x[0]) + "px", L.height = m.h * (C.y[1] - C.y[0]) + "px", L.left = m.l + C.x[0] * m.w + "px", L.top = m.t + (1 - C.y[1]) * m.h + "px", this.xaxis._offset = m.l + C.x[0] * m.w, this.xaxis._length = m.w * (C.x[1] - C.x[0]), this.yaxis._offset = m.t + (1 - C.y[1]) * m.h, this.yaxis._length = m.h * (C.y[1] - C.y[0]);
              }, c.updateLayers = function(M) {
                var C = M[this.id], m = C.layers, L = this.layerList, d;
                if (m.length !== L.length) {
                  for (d = 0; d < L.length; d++)
                    L[d].dispose();
                  for (L = this.layerList = [], d = 0; d < m.length; d++)
                    L.push(g(this, d, m[d]));
                } else
                  for (d = 0; d < m.length; d++)
                    L[d].update(m[d]);
              }, c.destroy = function() {
                this.map && (this.map.remove(), this.map = null, this.container.removeChild(this.div));
              }, c.toImage = function() {
                return this.map.stop(), this.map.getCanvas().toDataURL();
              }, c.setOptions = function(M, C, m) {
                for (var L in m)
                  this.map[C](M, L, m[L]);
              }, c.getMapLayers = function() {
                return this.map.getStyle().layers;
              }, c.addLayer = function(M, C) {
                var m = this.map;
                if (typeof C == "string") {
                  if (C === "") {
                    m.addLayer(M, C);
                    return;
                  }
                  for (var L = this.getMapLayers(), d = 0; d < L.length; d++)
                    if (C === L[d].id) {
                      m.addLayer(M, C);
                      return;
                    }
                  P.warn(["Trying to add layer with *below* value", C, "referencing a layer that does not exist", "or that does not yet exist."].join(" "));
                }
                m.addLayer(M);
              }, c.project = function(M) {
                return this.map.project(new b.LngLat(M[0], M[1]));
              }, c.getView = function() {
                var M = this.map, C = M.getCenter(), m = C.lng, L = C.lat, d = {
                  lon: m,
                  lat: L
                }, h = M.getCanvas(), E = parseInt(h.style.width), w = parseInt(h.style.height);
                return {
                  center: d,
                  zoom: M.getZoom(),
                  bearing: M.getBearing(),
                  pitch: M.getPitch(),
                  _derived: {
                    coordinates: [M.unproject([0, 0]).toArray(), M.unproject([E, 0]).toArray(), M.unproject([E, w]).toArray(), M.unproject([0, w]).toArray()]
                  }
                };
              }, c.getViewEdits = function(M) {
                for (var C = this.id, m = ["center", "zoom", "bearing", "pitch"], L = {}, d = 0; d < m.length; d++) {
                  var h = m[d];
                  L[C + "." + h] = M[h];
                }
                return L;
              }, c.getViewEditsWithDerived = function(M) {
                var C = this.id, m = this.getViewEdits(M);
                return m[C + "._derived"] = M._derived, m;
              };
              function f(M, C) {
                var m = {};
                if (P.isPlainObject(M))
                  m.id = M.id, m.style = M;
                else if (typeof M == "string")
                  if (m.id = M, y.styleValuesMapbox.indexOf(M) !== -1)
                    m.style = _(M);
                  else if (y.stylesNonMapbox[M]) {
                    m.style = y.stylesNonMapbox[M];
                    var L = m.style.sources["plotly-" + M], d = L ? L.tiles : void 0;
                    d && d[0] && d[0].slice(-9) === "?api_key=" && (d[0] += C._mapboxAccessToken);
                  } else
                    m.style = M;
                else
                  m.id = y.styleValueDflt, m.style = _(y.styleValueDflt);
                return m.transition = {
                  duration: 0,
                  delay: 0
                }, m;
              }
              function _(M) {
                return y.styleUrlPrefix + M + "-" + y.styleUrlSuffix;
              }
              function S(M) {
                return [M.lon, M.lat];
              }
              Y.exports = x;
            }
          ),
          /***/
          57891: (
            /***/
            function(Y) {
              Y.exports = function(K) {
                var e = K.editType;
                return {
                  t: {
                    valType: "number",
                    dflt: 0,
                    editType: e
                  },
                  r: {
                    valType: "number",
                    dflt: 0,
                    editType: e
                  },
                  b: {
                    valType: "number",
                    dflt: 0,
                    editType: e
                  },
                  l: {
                    valType: "number",
                    dflt: 0,
                    editType: e
                  },
                  editType: e
                };
              };
            }
          ),
          /***/
          44122: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(42696).de, n = e(36464).OE, s = e(10721), T = e(93229), A = e(33626), p = e(57297), u = e(78032), t = e(34809), r = e(78766), i = e(63821).BADNUM, a = e(5975), l = e(78534).clearOutline, o = e(26667), y = e(49722), g = e(58935), x = e(4173).eV, c = t.relinkPrivateKeys, v = t._, f = Y.exports = {};
              t.extendFlat(f, A), f.attributes = e(9829), f.attributes.type.values = f.allTypes, f.fontAttrs = e(80337), f.layoutAttributes = e(6704);
              var _ = f.transformsRegistry, S = e(90251);
              f.executeAPICommand = S.executeAPICommand, f.computeAPICommandBindings = S.computeAPICommandBindings, f.manageCommandObserver = S.manageCommandObserver, f.hasSimpleAPICommandBindings = S.hasSimpleAPICommandBindings, f.redrawText = function(j) {
                return j = t.getGraphDiv(j), new Promise(function(at) {
                  setTimeout(function() {
                    j._fullLayout && (A.getComponentMethod("annotations", "draw")(j), A.getComponentMethod("legend", "draw")(j), A.getComponentMethod("colorbar", "draw")(j), at(f.previousPromises(j)));
                  }, 300);
                });
              }, f.resize = function(j) {
                j = t.getGraphDiv(j);
                var at, ut = new Promise(function(nt, X) {
                  (!j || t.isHidden(j)) && X(new Error("Resize must be passed a displayed plot div element.")), j._redrawTimer && clearTimeout(j._redrawTimer), j._resolveResize && (at = j._resolveResize), j._resolveResize = nt, j._redrawTimer = setTimeout(function() {
                    if (!j.layout || j.layout.width && j.layout.height || t.isHidden(j)) {
                      nt(j);
                      return;
                    }
                    delete j.layout.width, delete j.layout.height;
                    var ct = j.changed;
                    j.autoplay = !0, A.call("relayout", j, {
                      autosize: !0
                    }).then(function() {
                      j.changed = ct, j._resolveResize === nt && (delete j._resolveResize, nt(j));
                    });
                  }, 100);
                });
                return at && at(ut), ut;
              }, f.previousPromises = function(j) {
                if ((j._promises || []).length)
                  return Promise.all(j._promises).then(function() {
                    j._promises = [];
                  });
              }, f.addLinks = function(j) {
                if (!(!j._context.showLink && !j._context.showSources)) {
                  var at = j._fullLayout, ut = t.ensureSingle(at._paper, "text", "js-plot-link-container", function(wt) {
                    wt.style({
                      "font-family": '"Open Sans", Arial, sans-serif',
                      "font-size": "12px",
                      fill: r.defaultLine,
                      "pointer-events": "all"
                    }).each(function() {
                      var Et = b.select(this);
                      Et.append("tspan").classed("js-link-to-tool", !0), Et.append("tspan").classed("js-link-spacer", !0), Et.append("tspan").classed("js-sourcelinks", !0);
                    });
                  }), nt = ut.node(), X = {
                    y: at._paper.attr("height") - 9
                  };
                  document.body.contains(nt) && nt.getComputedTextLength() >= at.width - 20 ? (X["text-anchor"] = "start", X.x = 5) : (X["text-anchor"] = "end", X.x = at._paper.attr("width") - 7), ut.attr(X);
                  var ct = ut.select(".js-link-to-tool"), lt = ut.select(".js-link-spacer"), pt = ut.select(".js-sourcelinks");
                  j._context.showSources && j._context.showSources(j), j._context.showLink && M(j, ct), lt.text(ct.text() && pt.text() ? " - " : "");
                }
              };
              function M(j, at) {
                at.text("");
                var ut = at.append("a").attr({
                  "xlink:xlink:href": "#",
                  class: "link--impt link--embedview",
                  "font-weight": "bold"
                }).text(j._context.linkText + " »");
                if (j._context.sendData)
                  ut.on("click", function() {
                    f.sendDataToCloud(j);
                  });
                else {
                  var nt = window.location.pathname.split("/"), X = window.location.search;
                  ut.attr({
                    "xlink:xlink:show": "new",
                    "xlink:xlink:href": "/" + nt[2].split(".")[0] + "/" + nt[1] + X
                  });
                }
              }
              f.sendDataToCloud = function(j) {
                var at = (window.PLOTLYENV || {}).BASE_URL || j._context.plotlyServerURL;
                if (at) {
                  j.emit("plotly_beforeexport");
                  var ut = b.select(j).append("div").attr("id", "hiddenform").style("display", "none"), nt = ut.append("form").attr({
                    action: at + "/external",
                    method: "post",
                    target: "_blank"
                  }), X = nt.append("input").attr({
                    type: "text",
                    name: "data"
                  });
                  return X.node().value = f.graphJson(j, !1, "keepdata"), nt.node().submit(), ut.remove(), j.emit("plotly_afterexport"), !1;
                }
              };
              var C = ["days", "shortDays", "months", "shortMonths", "periods", "dateTime", "date", "time", "decimal", "thousands", "grouping", "currency"], m = ["year", "month", "dayMonth", "dayMonthYear"];
              f.supplyDefaults = function(j, at) {
                var ut = at && at.skipUpdateCalc, nt = j._fullLayout || {};
                if (nt._skipDefaults) {
                  delete nt._skipDefaults;
                  return;
                }
                var X = j._fullLayout = {}, ct = j.layout || {}, lt = j._fullData || [], pt = j._fullData = [], wt = j.data || [], Et = j.calcdata || [], Ct = j._context || {}, Gt;
                j._transitionData || f.createTransitionData(j), X._dfltTitle = {
                  plot: v(j, "Click to enter Plot title"),
                  subtitle: v(j, "Click to enter Plot subtitle"),
                  x: v(j, "Click to enter X axis title"),
                  y: v(j, "Click to enter Y axis title"),
                  colorbar: v(j, "Click to enter Colorscale title"),
                  annotation: v(j, "new text")
                }, X._traceWord = v(j, "trace");
                var Jt = h(j, C);
                if (X._mapboxAccessToken = Ct.mapboxAccessToken, nt._initialAutoSizeIsDone) {
                  var Qt = nt.width, Vt = nt.height;
                  f.supplyLayoutGlobalDefaults(ct, X, Jt), ct.width || (X.width = Qt), ct.height || (X.height = Vt), f.sanitizeMargins(X);
                } else {
                  f.supplyLayoutGlobalDefaults(ct, X, Jt);
                  var zt = !ct.width || !ct.height, Rt = X.autosize, Wt = Ct.autosizable, kt = zt && (Rt || Wt);
                  kt ? f.plotAutoSize(j, ct, X) : zt && f.sanitizeMargins(X), !Rt && zt && (ct.width = X.width, ct.height = X.height);
                }
                X._d3locale = E(Jt, X.separators), X._extraFormat = h(j, m), X._initialAutoSizeIsDone = !0, X._dataLength = wt.length, X._modules = [], X._visibleModules = [], X._basePlotModules = [];
                var re = X._subplots = d(), ge = X._splomAxes = {
                  x: {},
                  y: {}
                }, _e = X._splomSubplots = {};
                X._splomGridDflt = {}, X._scatterStackOpts = {}, X._firstScatter = {}, X._alignmentOpts = {}, X._colorAxes = {}, X._requestRangeslider = {}, X._traceUids = L(lt, wt), X._globalTransforms = (j._context || {}).globalTransforms, f.supplyDataDefaults(wt, pt, ct, X);
                var ce = Object.keys(ge.x), ae = Object.keys(ge.y);
                if (ce.length > 1 && ae.length > 1) {
                  for (A.getComponentMethod("grid", "sizeDefaults")(ct, X), Gt = 0; Gt < ce.length; Gt++)
                    t.pushUnique(re.xaxis, ce[Gt]);
                  for (Gt = 0; Gt < ae.length; Gt++)
                    t.pushUnique(re.yaxis, ae[Gt]);
                  for (var Se in _e)
                    t.pushUnique(re.cartesian, Se);
                }
                if (X._has = f._hasPlotType.bind(X), lt.length === pt.length)
                  for (Gt = 0; Gt < pt.length; Gt++)
                    c(pt[Gt], lt[Gt]);
                f.supplyLayoutModuleDefaults(ct, X, pt, j._transitionData);
                var ze = X._visibleModules, Ne = [];
                for (Gt = 0; Gt < ze.length; Gt++) {
                  var Ve = ze[Gt].crossTraceDefaults;
                  Ve && t.pushUnique(Ne, Ve);
                }
                for (Gt = 0; Gt < Ne.length; Gt++)
                  Ne[Gt](pt, X);
                X._hasOnlyLargeSploms = X._basePlotModules.length === 1 && X._basePlotModules[0].name === "splom" && ce.length > 15 && ae.length > 15 && X.shapes.length === 0 && X.images.length === 0, f.linkSubplots(pt, X, lt, nt), f.cleanPlot(pt, X, lt, nt);
                var Oe = !!(nt._has && nt._has("gl2d")), ur = !!(X._has && X._has("gl2d")), ie = !!(nt._has && nt._has("cartesian")), $t = !!(X._has && X._has("cartesian")), jt = ie || Oe, ee = $t || ur;
                jt && !ee ? nt._bgLayer.remove() : ee && !jt && (X._shouldCreateBgLayer = !0), nt._zoomlayer && !j._dragging && l({
                  // mock old gd
                  _fullLayout: nt
                }), w(pt, X), c(X, nt), A.getComponentMethod("colorscale", "crossTraceDefaults")(pt, X), X._preGUI || (X._preGUI = {}), X._tracePreGUI || (X._tracePreGUI = {});
                var Bt = X._tracePreGUI, Xt = {}, Zt;
                for (Zt in Bt) Xt[Zt] = "old";
                for (Gt = 0; Gt < pt.length; Gt++)
                  Zt = pt[Gt]._fullInput.uid, Xt[Zt] || (Bt[Zt] = {}), Xt[Zt] = "new";
                for (Zt in Xt)
                  Xt[Zt] === "old" && delete Bt[Zt];
                U(X), A.getComponentMethod("rangeslider", "makeData")(X), !ut && Et.length === pt.length && f.supplyDefaultsUpdateCalc(Et, pt);
              }, f.supplyDefaultsUpdateCalc = function(j, at) {
                for (var ut = 0; ut < at.length; ut++) {
                  var nt = at[ut], X = (j[ut] || [])[0];
                  if (X && X.trace) {
                    var ct = X.trace;
                    if (ct._hasCalcTransform) {
                      var lt = ct._arrayAttrs, pt, wt, Et;
                      for (pt = 0; pt < lt.length; pt++)
                        wt = lt[pt], Et = t.nestedProperty(ct, wt).get().slice(), t.nestedProperty(nt, wt).set(Et);
                    }
                    X.trace = nt;
                  }
                }
              };
              function L(j, at) {
                var ut = at.length, nt = [], X, ct;
                for (X = 0; X < j.length; X++) {
                  var lt = j[X]._fullInput;
                  lt !== ct && nt.push(lt), ct = lt;
                }
                var pt = nt.length, wt = new Array(ut), Et = {};
                function Ct(Qt, Vt) {
                  wt[Vt] = Qt, Et[Qt] = 1;
                }
                function Gt(Qt, Vt) {
                  if (Qt && typeof Qt == "string" && !Et[Qt])
                    return Ct(Qt, Vt), !0;
                }
                for (X = 0; X < ut; X++) {
                  var Jt = at[X].uid;
                  typeof Jt == "number" && (Jt = String(Jt)), !Gt(Jt, X) && (X < pt && Gt(nt[X].uid, X) || Ct(t.randstr(Et), X));
                }
                return wt;
              }
              function d() {
                var j = A.collectableSubplotTypes, at = {}, ut, nt;
                if (!j) {
                  j = [];
                  var X = A.subplotsRegistry;
                  for (var ct in X) {
                    var lt = X[ct], pt = lt.attr;
                    if (pt && (j.push(ct), Array.isArray(pt)))
                      for (nt = 0; nt < pt.length; nt++)
                        t.pushUnique(j, pt[nt]);
                  }
                }
                for (ut = 0; ut < j.length; ut++)
                  at[j[ut]] = [];
                return at;
              }
              function h(j, at) {
                var ut = j._context.locale;
                ut || (ut = "en-US");
                var nt = !1, X = {};
                function ct(Gt) {
                  for (var Jt = !0, Qt = 0; Qt < at.length; Qt++) {
                    var Vt = at[Qt];
                    X[Vt] || (Gt[Vt] ? X[Vt] = Gt[Vt] : Jt = !1);
                  }
                  Jt && (nt = !0);
                }
                for (var lt = 0; lt < 2; lt++) {
                  for (var pt = j._context.locales, wt = 0; wt < 2; wt++) {
                    var Et = (pt[ut] || {}).format;
                    if (Et && (ct(Et), nt))
                      break;
                    pt = A.localeRegistry;
                  }
                  var Ct = ut.split("-")[0];
                  if (nt || Ct === ut) break;
                  ut = Ct;
                }
                return nt || ct(A.localeRegistry.en.format), X;
              }
              function E(j, at) {
                return j.decimal = at.charAt(0), j.thousands = at.charAt(1), {
                  numberFormat: function(ut) {
                    try {
                      ut = n(j).format(t.adjustFormat(ut));
                    } catch {
                      return t.warnBadFormat(ut), t.noFormat;
                    }
                    return ut;
                  },
                  timeFormat: P(j).utcFormat
                };
              }
              function w(j, at) {
                var ut, nt = [];
                at.meta && (ut = at._meta = {
                  meta: at.meta,
                  layout: {
                    meta: at.meta
                  }
                });
                for (var X = 0; X < j.length; X++) {
                  var ct = j[X];
                  ct.meta ? nt[ct.index] = ct._meta = {
                    meta: ct.meta
                  } : at.meta && (ct._meta = {
                    meta: at.meta
                  }), at.meta && (ct._meta.layout = {
                    meta: at.meta
                  });
                }
                nt.length && (ut || (ut = at._meta = {}), ut.data = nt);
              }
              f.createTransitionData = function(j) {
                j._transitionData || (j._transitionData = {}), j._transitionData._frames || (j._transitionData._frames = []), j._transitionData._frameHash || (j._transitionData._frameHash = {}), j._transitionData._counter || (j._transitionData._counter = 0), j._transitionData._interruptCallbacks || (j._transitionData._interruptCallbacks = []);
              }, f._hasPlotType = function(j) {
                var at, ut = this._basePlotModules || [];
                for (at = 0; at < ut.length; at++)
                  if (ut[at].name === j) return !0;
                var nt = this._modules || [];
                for (at = 0; at < nt.length; at++) {
                  var X = nt[at].name;
                  if (X === j) return !0;
                  var ct = A.modules[X];
                  if (ct && ct.categories[j]) return !0;
                }
                return !1;
              }, f.cleanPlot = function(j, at, ut, nt) {
                var X, ct, lt = nt._basePlotModules || [];
                for (X = 0; X < lt.length; X++) {
                  var pt = lt[X];
                  pt.clean && pt.clean(j, at, ut, nt);
                }
                var wt = nt._has && nt._has("gl"), Et = at._has && at._has("gl");
                wt && !Et && nt._glcontainer !== void 0 && (nt._glcontainer.selectAll(".gl-canvas").remove(), nt._glcontainer.selectAll(".no-webgl").remove(), nt._glcanvas = null);
                var Ct = !!nt._infolayer;
                t: for (X = 0; X < ut.length; X++) {
                  var Gt = ut[X], Jt = Gt.uid;
                  for (ct = 0; ct < j.length; ct++) {
                    var Qt = j[ct];
                    if (Jt === Qt.uid) continue t;
                  }
                  Ct && nt._infolayer.select(".cb" + Jt).remove();
                }
              }, f.linkSubplots = function(j, at, ut, nt) {
                var X, ct, lt = nt._plots || {}, pt = at._plots = {}, wt = at._subplots, Et = {
                  _fullData: j,
                  _fullLayout: at
                }, Ct = wt.cartesian.concat(wt.gl2d || []);
                for (X = 0; X < Ct.length; X++) {
                  var Gt = Ct[X], Jt = lt[Gt], Qt = a.getFromId(Et, Gt, "x"), Vt = a.getFromId(Et, Gt, "y"), zt;
                  for (Jt ? zt = pt[Gt] = Jt : (zt = pt[Gt] = {}, zt.id = Gt), Qt._counterAxes.push(Vt._id), Vt._counterAxes.push(Qt._id), Qt._subplotsWith.push(Gt), Vt._subplotsWith.push(Gt), zt.xaxis = Qt, zt.yaxis = Vt, zt._hasClipOnAxisFalse = !1, ct = 0; ct < j.length; ct++) {
                    var Rt = j[ct];
                    if (Rt.xaxis === zt.xaxis._id && Rt.yaxis === zt.yaxis._id && Rt.cliponaxis === !1) {
                      zt._hasClipOnAxisFalse = !0;
                      break;
                    }
                  }
                }
                var Wt = a.list(Et, null, !0), kt;
                for (X = 0; X < Wt.length; X++) {
                  kt = Wt[X];
                  var re = null;
                  kt.overlaying && (re = a.getFromId(Et, kt.overlaying), re && re.overlaying && (kt.overlaying = !1, re = null)), kt._mainAxis = re || kt, re && (kt.domain = re.domain.slice()), kt._anchorAxis = kt.anchor === "free" ? null : a.getFromId(Et, kt.anchor);
                }
                for (X = 0; X < Wt.length; X++)
                  if (kt = Wt[X], kt._counterAxes.sort(a.idSort), kt._subplotsWith.sort(t.subplotSort), kt._mainSubplot = z(kt, at), kt._counterAxes.length && (kt.spikemode && kt.spikemode.indexOf("across") !== -1 || kt.automargin && kt.mirror && kt.anchor !== "free" || A.getComponentMethod("rangeslider", "isVisible")(kt))) {
                    var ge = 1, _e = 0;
                    for (ct = 0; ct < kt._counterAxes.length; ct++) {
                      var ce = a.getFromId(Et, kt._counterAxes[ct]);
                      ge = Math.min(ge, ce.domain[0]), _e = Math.max(_e, ce.domain[1]);
                    }
                    ge < _e && (kt._counterDomainMin = ge, kt._counterDomainMax = _e);
                  }
              };
              function z(j, at) {
                var ut = {
                  _fullLayout: at
                }, nt = j._id.charAt(0) === "x", X = j._mainAxis._anchorAxis, ct = "", lt = "", pt = "";
                if (X && (pt = X._mainAxis._id, ct = nt ? j._id + pt : pt + j._id), !ct || !at._plots[ct]) {
                  ct = "";
                  for (var wt = j._counterAxes, Et = 0; Et < wt.length; Et++) {
                    var Ct = wt[Et], Gt = nt ? j._id + Ct : Ct + j._id;
                    lt || (lt = Gt);
                    var Jt = a.getFromId(ut, Ct);
                    if (pt && Jt.overlaying === pt) {
                      ct = Gt;
                      break;
                    }
                  }
                }
                return ct || lt;
              }
              f.clearExpandedTraceDefaultColors = function(j) {
                var at, ut, nt;
                function X(lt, pt, wt, Et) {
                  ut[Et] = pt, ut.length = Et + 1, lt.valType === "color" && lt.dflt === void 0 && at.push(ut.join("."));
                }
                for (ut = [], at = j._module._colorAttrs, at || (j._module._colorAttrs = at = [], p.crawl(j._module.attributes, X)), nt = 0; nt < at.length; nt++) {
                  var ct = t.nestedProperty(j, "_input." + at[nt]);
                  ct.get() || t.nestedProperty(j, at[nt]).set(null);
                }
              }, f.supplyDataDefaults = function(j, at, ut, nt) {
                var X = nt._modules, ct = nt._visibleModules, lt = nt._basePlotModules, pt = 0, wt = 0, Et, Ct, Gt;
                nt._transformModules = [];
                function Jt(ae) {
                  at.push(ae);
                  var Se = ae._module;
                  Se && (t.pushUnique(X, Se), ae.visible === !0 && t.pushUnique(ct, Se), t.pushUnique(lt, ae._module.basePlotModule), pt++, ae._input.visible !== !1 && wt++);
                }
                var Qt = {}, Vt = [], zt = (ut.template || {}).data || {}, Rt = u.traceTemplater(zt);
                for (Et = 0; Et < j.length; Et++) {
                  if (Gt = j[Et], Ct = Rt.newTrace(Gt), Ct.uid = nt._traceUids[Et], f.supplyTraceDefaults(Gt, Ct, wt, nt, Et), Ct.index = Et, Ct._input = Gt, Ct._expandedIndex = pt, Ct.transforms && Ct.transforms.length)
                    for (var Wt = Gt.visible !== !1 && Ct.visible === !1, kt = B(Ct, at, ut, nt), re = 0; re < kt.length; re++) {
                      var ge = kt[re], _e = {
                        _template: Ct._template,
                        type: Ct.type,
                        // set uid using parent uid and expanded index
                        // to promote consistency between update calls
                        uid: Ct.uid + re
                      };
                      Wt && ge.visible === !1 && delete ge.visible, f.supplyTraceDefaults(ge, _e, pt, nt, Et), c(_e, ge), _e.index = Et, _e._input = Gt, _e._fullInput = Ct, _e._expandedIndex = pt, _e._expandedInput = ge, Jt(_e);
                    }
                  else
                    Ct._fullInput = Ct, Ct._expandedInput = Ct, Jt(Ct);
                  A.traceIs(Ct, "carpetAxis") && (Qt[Ct.carpet] = Ct), A.traceIs(Ct, "carpetDependent") && Vt.push(Et);
                }
                for (Et = 0; Et < Vt.length; Et++)
                  if (Ct = at[Vt[Et]], !!Ct.visible) {
                    var ce = Qt[Ct.carpet];
                    if (Ct._carpet = ce, !ce || !ce.visible) {
                      Ct.visible = !1;
                      continue;
                    }
                    Ct.xaxis = ce.xaxis, Ct.yaxis = ce.yaxis;
                  }
              }, f.supplyAnimationDefaults = function(j) {
                j = j || {};
                var at, ut = {};
                function nt(X, ct) {
                  return t.coerce(j || {}, ut, y, X, ct);
                }
                if (nt("mode"), nt("direction"), nt("fromcurrent"), Array.isArray(j.frame))
                  for (ut.frame = [], at = 0; at < j.frame.length; at++)
                    ut.frame[at] = f.supplyAnimationFrameDefaults(j.frame[at] || {});
                else
                  ut.frame = f.supplyAnimationFrameDefaults(j.frame || {});
                if (Array.isArray(j.transition))
                  for (ut.transition = [], at = 0; at < j.transition.length; at++)
                    ut.transition[at] = f.supplyAnimationTransitionDefaults(j.transition[at] || {});
                else
                  ut.transition = f.supplyAnimationTransitionDefaults(j.transition || {});
                return ut;
              }, f.supplyAnimationFrameDefaults = function(j) {
                var at = {};
                function ut(nt, X) {
                  return t.coerce(j || {}, at, y.frame, nt, X);
                }
                return ut("duration"), ut("redraw"), at;
              }, f.supplyAnimationTransitionDefaults = function(j) {
                var at = {};
                function ut(nt, X) {
                  return t.coerce(j || {}, at, y.transition, nt, X);
                }
                return ut("duration"), ut("easing"), at;
              }, f.supplyFrameDefaults = function(j) {
                var at = {};
                function ut(nt, X) {
                  return t.coerce(j, at, g, nt, X);
                }
                return ut("group"), ut("name"), ut("traces"), ut("baseframe"), ut("data"), ut("layout"), at;
              }, f.supplyTraceDefaults = function(j, at, ut, nt, X) {
                var ct = nt.colorway || r.defaults, lt = ct[ut % ct.length], pt;
                function wt(re, ge) {
                  return t.coerce(j, at, f.attributes, re, ge);
                }
                var Et = wt("visible");
                wt("type"), wt("name", nt._traceWord + " " + X), wt("uirevision", nt.uirevision);
                var Ct = f.getModule(at);
                if (at._module = Ct, Ct) {
                  var Gt = Ct.basePlotModule, Jt = Gt.attr, Qt = Gt.attributes;
                  if (Jt && Qt) {
                    var Vt = nt._subplots, zt = "";
                    if (Et || Gt.name !== "gl2d") {
                      if (Array.isArray(Jt))
                        for (pt = 0; pt < Jt.length; pt++) {
                          var Rt = Jt[pt], Wt = t.coerce(j, at, Qt, Rt);
                          Vt[Rt] && t.pushUnique(Vt[Rt], Wt), zt += Wt;
                        }
                      else
                        zt = t.coerce(j, at, Qt, Jt);
                      Vt[Gt.name] && t.pushUnique(Vt[Gt.name], zt);
                    }
                  }
                }
                if (Et) {
                  if (wt("customdata"), wt("ids"), wt("meta"), A.traceIs(at, "showLegend") ? (t.coerce(j, at, Ct.attributes.showlegend ? Ct.attributes : f.attributes, "showlegend"), wt("legend"), wt("legendwidth"), wt("legendgroup"), wt("legendgrouptitle.text"), wt("legendrank"), at._dfltShowLegend = !0) : at._dfltShowLegend = !1, Ct && Ct.supplyDefaults(j, at, lt, nt), A.traceIs(at, "noOpacity") || wt("opacity"), A.traceIs(at, "notLegendIsolatable") && (at.visible = !!at.visible), A.traceIs(at, "noHover") || (at.hovertemplate || t.coerceHoverinfo(j, at, nt), at.type !== "parcats" && A.getComponentMethod("fx", "supplyDefaults")(j, at, lt, nt)), Ct && Ct.selectPoints) {
                    var kt = wt("selectedpoints");
                    t.isTypedArray(kt) && (at.selectedpoints = Array.from(kt));
                  }
                  f.supplyTransformDefaults(j, at, nt);
                }
                return at;
              };
              function O(j) {
                var at = j.transforms;
                if (Array.isArray(at) && at.length)
                  for (var ut = 0; ut < at.length; ut++) {
                    var nt = at[ut], X = nt._module || _[nt.type];
                    if (X && X.makesData) return !0;
                  }
                return !1;
              }
              f.hasMakesDataTransform = O, f.supplyTransformDefaults = function(j, at, ut) {
                if (at._length || O(j)) {
                  var nt = ut._globalTransforms || [], X = ut._transformModules || [];
                  if (!(!Array.isArray(j.transforms) && nt.length === 0))
                    for (var ct = j.transforms || [], lt = nt.concat(ct), pt = at.transforms = [], wt = 0; wt < lt.length; wt++) {
                      var Et = lt[wt], Ct = Et.type, Gt = _[Ct], Jt, Qt = !(Et._module && Et._module === Gt), Vt = Gt && typeof Gt.transform == "function";
                      Gt || t.warn("Unrecognized transform type " + Ct + "."), Gt && Gt.supplyDefaults && (Qt || Vt) ? (Jt = Gt.supplyDefaults(Et, at, ut, j), Jt.type = Ct, Jt._module = Gt, t.pushUnique(X, Gt)) : Jt = t.extendFlat({}, Et), pt.push(Jt);
                    }
                }
              };
              function B(j, at, ut, nt) {
                for (var X = j.transforms, ct = [j], lt = 0; lt < X.length; lt++) {
                  var pt = X[lt], wt = _[pt.type];
                  wt && wt.transform && (ct = wt.transform(ct, {
                    transform: pt,
                    fullTrace: j,
                    fullData: at,
                    layout: ut,
                    fullLayout: nt,
                    transformIndex: lt
                  }));
                }
                return ct;
              }
              f.supplyLayoutGlobalDefaults = function(j, at, ut) {
                function nt(Gt, Jt) {
                  return t.coerce(j, at, f.layoutAttributes, Gt, Jt);
                }
                var X = j.template;
                t.isPlainObject(X) && (at.template = X, at._template = X.layout, at._dataTemplate = X.data), nt("autotypenumbers");
                var ct = t.coerceFont(nt, "font"), lt = ct.size;
                t.coerceFont(nt, "title.font", ct, {
                  overrideDflt: {
                    size: Math.round(lt * 1.4)
                  }
                }), nt("title.text", at._dfltTitle.plot), nt("title.xref");
                var pt = nt("title.yref");
                nt("title.pad.t"), nt("title.pad.r"), nt("title.pad.b"), nt("title.pad.l");
                var wt = nt("title.automargin");
                nt("title.x"), nt("title.xanchor"), nt("title.y"), nt("title.yanchor"), nt("title.subtitle.text", at._dfltTitle.subtitle), t.coerceFont(nt, "title.subtitle.font", ct, {
                  overrideDflt: {
                    size: Math.round(at.title.font.size * 0.7)
                  }
                }), wt && (pt === "paper" && (at.title.y !== 0 && (at.title.y = 1), at.title.yanchor === "auto" && (at.title.yanchor = at.title.y === 0 ? "top" : "bottom")), pt === "container" && (at.title.y === "auto" && (at.title.y = 1), at.title.yanchor === "auto" && (at.title.yanchor = at.title.y < 0.5 ? "bottom" : "top")));
                var Et = nt("uniformtext.mode");
                Et && nt("uniformtext.minsize"), nt("autosize", !(j.width && j.height)), nt("width"), nt("height"), nt("minreducedwidth"), nt("minreducedheight"), nt("margin.l"), nt("margin.r"), nt("margin.t"), nt("margin.b"), nt("margin.pad"), nt("margin.autoexpand"), j.width && j.height && f.sanitizeMargins(at), A.getComponentMethod("grid", "sizeDefaults")(j, at), nt("paper_bgcolor"), nt("separators", ut.decimal + ut.thousands), nt("hidesources"), nt("colorway"), nt("datarevision");
                var Ct = nt("uirevision");
                nt("editrevision", Ct), nt("selectionrevision", Ct), A.getComponentMethod("modebar", "supplyLayoutDefaults")(j, at), A.getComponentMethod("shapes", "supplyDrawNewShapeDefaults")(j, at, nt), A.getComponentMethod("selections", "supplyDrawNewSelectionDefaults")(j, at, nt), nt("meta"), t.isPlainObject(j.transition) && (nt("transition.duration"), nt("transition.easing"), nt("transition.ordering")), A.getComponentMethod("calendars", "handleDefaults")(j, at, "calendar"), A.getComponentMethod("fx", "supplyLayoutGlobalDefaults")(j, at, nt), t.coerce(j, at, o, "scattermode");
              };
              function V(j) {
                return typeof j == "string" && j.substr(j.length - 2) === "px" && parseFloat(j);
              }
              f.plotAutoSize = function(at, ut, nt) {
                var X = at._context || {}, ct = X.frameMargins, lt, pt, wt = t.isPlotDiv(at);
                if (wt && at.emit("plotly_autosize"), X.fillFrame)
                  lt = window.innerWidth, pt = window.innerHeight, document.body.style.overflow = "hidden";
                else {
                  var Et = wt ? window.getComputedStyle(at) : {};
                  if (lt = V(Et.width) || V(Et.maxWidth) || nt.width, pt = V(Et.height) || V(Et.maxHeight) || nt.height, s(ct) && ct > 0) {
                    var Ct = 1 - 2 * ct;
                    lt = Math.round(Ct * lt), pt = Math.round(Ct * pt);
                  }
                }
                var Gt = f.layoutAttributes.width.min, Jt = f.layoutAttributes.height.min;
                lt < Gt && (lt = Gt), pt < Jt && (pt = Jt);
                var Qt = !ut.width && Math.abs(nt.width - lt) > 1, Vt = !ut.height && Math.abs(nt.height - pt) > 1;
                (Vt || Qt) && (Qt && (nt.width = lt), Vt && (nt.height = pt)), at._initialAutoSize || (at._initialAutoSize = {
                  width: lt,
                  height: pt
                }), f.sanitizeMargins(nt);
              }, f.supplyLayoutModuleDefaults = function(j, at, ut, nt) {
                var X = A.componentsRegistry, ct = at._basePlotModules, lt, pt, wt, Et = A.subplotsRegistry.cartesian;
                for (lt in X)
                  wt = X[lt], wt.includeBasePlot && wt.includeBasePlot(j, at);
                ct.length || ct.push(Et), at._has("cartesian") && (A.getComponentMethod("grid", "contentDefaults")(j, at), Et.finalizeSubplots(j, at));
                for (var Ct in at._subplots)
                  at._subplots[Ct].sort(t.subplotSort);
                for (pt = 0; pt < ct.length; pt++)
                  wt = ct[pt], wt.supplyLayoutDefaults && wt.supplyLayoutDefaults(j, at, ut);
                var Gt = at._modules;
                for (pt = 0; pt < Gt.length; pt++)
                  wt = Gt[pt], wt.supplyLayoutDefaults && wt.supplyLayoutDefaults(j, at, ut);
                var Jt = at._transformModules;
                for (pt = 0; pt < Jt.length; pt++)
                  wt = Jt[pt], wt.supplyLayoutDefaults && wt.supplyLayoutDefaults(j, at, ut, nt);
                for (lt in X)
                  wt = X[lt], wt.supplyLayoutDefaults && wt.supplyLayoutDefaults(j, at, ut);
              }, f.purge = function(j) {
                var at = j._fullLayout || {};
                at._glcontainer !== void 0 && (at._glcontainer.selectAll(".gl-canvas").remove(), at._glcontainer.remove(), at._glcanvas = null), at._modeBar && at._modeBar.destroy(), j._transitionData && (j._transitionData._interruptCallbacks && (j._transitionData._interruptCallbacks.length = 0), j._transitionData._animationRaf && window.cancelAnimationFrame(j._transitionData._animationRaf)), t.clearThrottle(), t.clearResponsive(j), delete j.data, delete j.layout, delete j._fullData, delete j._fullLayout, delete j.calcdata, delete j.empty, delete j.fid, delete j.undoqueue, delete j.undonum, delete j.autoplay, delete j.changed, delete j._promises, delete j._redrawTimer, delete j._hmlumcount, delete j._hmpixcount, delete j._transitionData, delete j._transitioning, delete j._initialAutoSize, delete j._transitioningWithDuration, delete j._dragging, delete j._dragged, delete j._dragdata, delete j._hoverdata, delete j._snapshotInProgress, delete j._editing, delete j._mouseDownTime, delete j._legendMouseDownTime, j.removeAllListeners && j.removeAllListeners();
              }, f.style = function(j) {
                var at = j._fullLayout._visibleModules, ut = [], nt;
                for (nt = 0; nt < at.length; nt++) {
                  var X = at[nt];
                  X.style && t.pushUnique(ut, X.style);
                }
                for (nt = 0; nt < ut.length; nt++)
                  ut[nt](j);
              }, f.sanitizeMargins = function(j) {
                if (!(!j || !j.margin)) {
                  var at = j.width, ut = j.height, nt = j.margin, X = at - (nt.l + nt.r), ct = ut - (nt.t + nt.b), lt;
                  X < 0 && (lt = (at - 1) / (nt.l + nt.r), nt.l = Math.floor(lt * nt.l), nt.r = Math.floor(lt * nt.r)), ct < 0 && (lt = (ut - 1) / (nt.t + nt.b), nt.t = Math.floor(lt * nt.t), nt.b = Math.floor(lt * nt.b));
                }
              }, f.clearAutoMarginIds = function(j) {
                j._fullLayout._pushmarginIds = {};
              }, f.allowAutoMargin = function(j, at) {
                j._fullLayout._pushmarginIds[at] = 1;
              };
              function U(j) {
                var at = j.margin;
                if (!j._size) {
                  var ut = j._size = {
                    l: Math.round(at.l),
                    r: Math.round(at.r),
                    t: Math.round(at.t),
                    b: Math.round(at.b),
                    p: Math.round(at.pad)
                  };
                  ut.w = Math.round(j.width) - ut.l - ut.r, ut.h = Math.round(j.height) - ut.t - ut.b;
                }
                j._pushmargin || (j._pushmargin = {}), j._pushmarginIds || (j._pushmarginIds = {}), j._reservedMargin || (j._reservedMargin = {});
              }
              var H = 2, F = 2;
              f.autoMargin = function(j, at, ut) {
                var nt = j._fullLayout, X = nt.width, ct = nt.height, lt = nt.margin, pt = nt.minreducedwidth, wt = nt.minreducedheight, Et = t.constrain(X - lt.l - lt.r, H, pt), Ct = t.constrain(ct - lt.t - lt.b, F, wt), Gt = Math.max(0, X - Et), Jt = Math.max(0, ct - Ct), Qt = nt._pushmargin, Vt = nt._pushmarginIds;
                if (lt.autoexpand !== !1) {
                  if (!ut)
                    delete Qt[at], delete Vt[at];
                  else {
                    var zt = ut.pad;
                    if (zt === void 0 && (zt = Math.min(12, lt.l, lt.r, lt.t, lt.b)), Gt) {
                      var Rt = (ut.l + ut.r) / Gt;
                      Rt > 1 && (ut.l /= Rt, ut.r /= Rt);
                    }
                    if (Jt) {
                      var Wt = (ut.t + ut.b) / Jt;
                      Wt > 1 && (ut.t /= Wt, ut.b /= Wt);
                    }
                    var kt = ut.xl !== void 0 ? ut.xl : ut.x, re = ut.xr !== void 0 ? ut.xr : ut.x, ge = ut.yt !== void 0 ? ut.yt : ut.y, _e = ut.yb !== void 0 ? ut.yb : ut.y;
                    Qt[at] = {
                      l: {
                        val: kt,
                        size: ut.l + zt
                      },
                      r: {
                        val: re,
                        size: ut.r + zt
                      },
                      b: {
                        val: _e,
                        size: ut.b + zt
                      },
                      t: {
                        val: ge,
                        size: ut.t + zt
                      }
                    }, Vt[at] = 1;
                  }
                  if (!nt._replotting)
                    return f.doAutoMargin(j);
                }
              };
              function G(j) {
                if ("_redrawFromAutoMarginCount" in j._fullLayout)
                  return !1;
                var at = a.list(j, "", !0);
                for (var ut in at)
                  if (at[ut].autoshift || at[ut].shift) return !0;
                return !1;
              }
              f.doAutoMargin = function(j) {
                var at = j._fullLayout, ut = at.width, nt = at.height;
                at._size || (at._size = {}), U(at);
                var X = at._size, ct = at.margin, lt = {
                  t: 0,
                  b: 0,
                  l: 0,
                  r: 0
                }, pt = t.extendFlat({}, X), wt = ct.l, Et = ct.r, Ct = ct.t, Gt = ct.b, Jt = at._pushmargin, Qt = at._pushmarginIds, Vt = at.minreducedwidth, zt = at.minreducedheight;
                if (ct.autoexpand !== !1) {
                  for (var Rt in Jt)
                    Qt[Rt] || delete Jt[Rt];
                  var Wt = j._fullLayout._reservedMargin;
                  for (var kt in Wt)
                    for (var re in Wt[kt]) {
                      var ge = Wt[kt][re];
                      lt[re] = Math.max(lt[re], ge);
                    }
                  Jt.base = {
                    l: {
                      val: 0,
                      size: wt
                    },
                    r: {
                      val: 1,
                      size: Et
                    },
                    t: {
                      val: 1,
                      size: Ct
                    },
                    b: {
                      val: 0,
                      size: Gt
                    }
                  };
                  for (var _e in lt) {
                    var ce = 0;
                    for (var ae in Jt)
                      ae !== "base" && s(Jt[ae][_e].size) && (ce = Jt[ae][_e].size > ce ? Jt[ae][_e].size : ce);
                    var Se = Math.max(0, ct[_e] - ce);
                    lt[_e] = Math.max(0, lt[_e] - Se);
                  }
                  for (var ze in Jt) {
                    var Ne = Jt[ze].l || {}, Ve = Jt[ze].b || {}, Oe = Ne.val, ur = Ne.size, ie = Ve.val, $t = Ve.size, jt = ut - lt.r - lt.l, ee = nt - lt.t - lt.b;
                    for (var Bt in Jt) {
                      if (s(ur) && Jt[Bt].r) {
                        var Xt = Jt[Bt].r.val, Zt = Jt[Bt].r.size;
                        if (Xt > Oe) {
                          var ye = (ur * Xt + (Zt - jt) * Oe) / (Xt - Oe), Mt = (Zt * (1 - Oe) + (ur - jt) * (1 - Xt)) / (Xt - Oe);
                          ye + Mt > wt + Et && (wt = ye, Et = Mt);
                        }
                      }
                      if (s($t) && Jt[Bt].t) {
                        var St = Jt[Bt].t.val, Lt = Jt[Bt].t.size;
                        if (St > ie) {
                          var te = ($t * St + (Lt - ee) * ie) / (St - ie), fe = (Lt * (1 - ie) + ($t - ee) * (1 - St)) / (St - ie);
                          te + fe > Gt + Ct && (Gt = te, Ct = fe);
                        }
                      }
                    }
                  }
                }
                var Me = t.constrain(ut - ct.l - ct.r, H, Vt), ir = t.constrain(nt - ct.t - ct.b, F, zt), mr = Math.max(0, ut - Me), Xe = Math.max(0, nt - ir);
                if (mr) {
                  var xe = (wt + Et) / mr;
                  xe > 1 && (wt /= xe, Et /= xe);
                }
                if (Xe) {
                  var me = (Gt + Ct) / Xe;
                  me > 1 && (Gt /= me, Ct /= me);
                }
                if (X.l = Math.round(wt) + lt.l, X.r = Math.round(Et) + lt.r, X.t = Math.round(Ct) + lt.t, X.b = Math.round(Gt) + lt.b, X.p = Math.round(ct.pad), X.w = Math.round(ut) - X.l - X.r, X.h = Math.round(nt) - X.t - X.b, !at._replotting && (f.didMarginChange(pt, X) || G(j))) {
                  "_redrawFromAutoMarginCount" in at ? at._redrawFromAutoMarginCount++ : at._redrawFromAutoMarginCount = 1;
                  var Le = 3 * (1 + Object.keys(Qt).length);
                  if (at._redrawFromAutoMarginCount < Le)
                    return A.call("_doPlot", j);
                  at._size = pt, t.warn("Too many auto-margin redraws.");
                }
                q(j);
              };
              function q(j) {
                var at = a.list(j, "", !0);
                ["_adjustTickLabelsOverflow", "_hideCounterAxisInsideTickLabels"].forEach(function(ut) {
                  for (var nt = 0; nt < at.length; nt++) {
                    var X = at[nt][ut];
                    X && X();
                  }
                });
              }
              var rt = ["l", "r", "t", "b", "p", "w", "h"];
              f.didMarginChange = function(j, at) {
                for (var ut = 0; ut < rt.length; ut++) {
                  var nt = rt[ut], X = j[nt], ct = at[nt];
                  if (!s(X) || Math.abs(ct - X) > 1)
                    return !0;
                }
                return !1;
              }, f.graphJson = function(j, at, ut, nt, X, ct) {
                (X && at && !j._fullData || X && !at && !j._fullLayout) && f.supplyDefaults(j);
                var lt = X ? j._fullData : j.data, pt = X ? j._fullLayout : j.layout, wt = (j._transitionData || {})._frames;
                function Et(Jt, Qt) {
                  if (typeof Jt == "function")
                    return Qt ? "_function_" : null;
                  if (t.isPlainObject(Jt)) {
                    var Vt = {}, zt;
                    return Object.keys(Jt).sort().forEach(function(re) {
                      if (["_", "["].indexOf(re.charAt(0)) === -1) {
                        if (typeof Jt[re] == "function") {
                          Qt && (Vt[re] = "_function");
                          return;
                        }
                        if (ut === "keepdata") {
                          if (re.substr(re.length - 3) === "src")
                            return;
                        } else if (ut === "keepstream") {
                          if (zt = Jt[re + "src"], typeof zt == "string" && zt.indexOf(":") > 0 && !t.isPlainObject(Jt.stream))
                            return;
                        } else if (ut !== "keepall" && (zt = Jt[re + "src"], typeof zt == "string" && zt.indexOf(":") > 0))
                          return;
                        Vt[re] = Et(Jt[re], Qt);
                      }
                    }), Vt;
                  }
                  var Rt = Array.isArray(Jt), Wt = t.isTypedArray(Jt);
                  if ((Rt || Wt) && Jt.dtype && Jt.shape) {
                    var kt = Jt.bdata;
                    return Et({
                      dtype: Jt.dtype,
                      shape: Jt.shape,
                      bdata: (
                        // case of ArrayBuffer
                        t.isArrayBuffer(kt) ? T.encode(kt) : (
                          // case of b64 string
                          kt
                        )
                      )
                    }, Qt);
                  }
                  return Rt ? Jt.map(function(re) {
                    return Et(re, Qt);
                  }) : Wt ? t.simpleMap(Jt, t.identity) : t.isJSDate(Jt) ? t.ms2DateTimeLocal(+Jt) : Jt;
                }
                var Ct = {
                  data: (lt || []).map(function(Jt) {
                    var Qt = Et(Jt);
                    return at && delete Qt.fit, Qt;
                  })
                };
                if (!at && (Ct.layout = Et(pt), X)) {
                  var Gt = pt._size;
                  Ct.layout.computed = {
                    margin: {
                      b: Gt.b,
                      l: Gt.l,
                      r: Gt.r,
                      t: Gt.t
                    }
                  };
                }
                return wt && (Ct.frames = Et(wt)), ct && (Ct.config = Et(j._context, !0)), nt === "object" ? Ct : JSON.stringify(Ct);
              }, f.modifyFrames = function(j, at) {
                var ut, nt, X, ct = j._transitionData._frames, lt = j._transitionData._frameHash;
                for (ut = 0; ut < at.length; ut++)
                  switch (nt = at[ut], nt.type) {
                    case "replace":
                      X = nt.value;
                      var pt = (ct[nt.index] || {}).name, wt = X.name;
                      ct[nt.index] = lt[wt] = X, wt !== pt && (delete lt[pt], lt[wt] = X);
                      break;
                    case "insert":
                      X = nt.value, lt[X.name] = X, ct.splice(nt.index, 0, X);
                      break;
                    case "delete":
                      X = ct[nt.index], delete lt[X.name], ct.splice(nt.index, 1);
                      break;
                  }
                return Promise.resolve();
              }, f.computeFrame = function(j, at) {
                var ut = j._transitionData._frameHash, nt, X, ct, lt;
                if (!at)
                  throw new Error("computeFrame must be given a string frame name");
                var pt = ut[at.toString()];
                if (!pt)
                  return !1;
                for (var wt = [pt], Et = [pt.name]; pt.baseframe && (pt = ut[pt.baseframe.toString()]) && Et.indexOf(pt.name) === -1; )
                  wt.push(pt), Et.push(pt.name);
                for (var Ct = {}; pt = wt.pop(); )
                  if (pt.layout && (Ct.layout = f.extendLayout(Ct.layout, pt.layout)), pt.data) {
                    if (Ct.data || (Ct.data = []), X = pt.traces, !X)
                      for (X = [], nt = 0; nt < pt.data.length; nt++)
                        X[nt] = nt;
                    for (Ct.traces || (Ct.traces = []), nt = 0; nt < pt.data.length; nt++)
                      ct = X[nt], ct != null && (lt = Ct.traces.indexOf(ct), lt === -1 && (lt = Ct.data.length, Ct.traces[lt] = ct), Ct.data[lt] = f.extendTrace(Ct.data[lt], pt.data[nt]));
                  }
                return Ct;
              }, f.recomputeFrameHash = function(j) {
                for (var at = j._transitionData._frameHash = {}, ut = j._transitionData._frames, nt = 0; nt < ut.length; nt++) {
                  var X = ut[nt];
                  X && X.name && (at[X.name] = X);
                }
              }, f.extendObjectWithContainers = function(j, at, ut) {
                var nt, X, ct, lt, pt, wt, Et, Ct, Gt = t.extendDeepNoArrays({}, at || {}), Jt = t.expandObjectPaths(Gt), Qt = {};
                if (ut && ut.length)
                  for (ct = 0; ct < ut.length; ct++)
                    nt = t.nestedProperty(Jt, ut[ct]), X = nt.get(), X === void 0 ? t.nestedProperty(Qt, ut[ct]).set(null) : (nt.set(null), t.nestedProperty(Qt, ut[ct]).set(X));
                if (j = t.extendDeepNoArrays(j || {}, Jt), ut && ut.length) {
                  for (ct = 0; ct < ut.length; ct++)
                    if (pt = t.nestedProperty(Qt, ut[ct]), Et = pt.get(), !!Et) {
                      for (wt = t.nestedProperty(j, ut[ct]), Ct = wt.get(), Array.isArray(Ct) || (Ct = [], wt.set(Ct)), lt = 0; lt < Et.length; lt++) {
                        var Vt = Et[lt];
                        Vt === null ? Ct[lt] = null : Ct[lt] = f.extendObjectWithContainers(Ct[lt], Vt);
                      }
                      wt.set(Ct);
                    }
                }
                return j;
              }, f.dataArrayContainers = ["transforms", "dimensions"], f.layoutArrayContainers = A.layoutArrayContainers, f.extendTrace = function(j, at) {
                return f.extendObjectWithContainers(j, at, f.dataArrayContainers);
              }, f.extendLayout = function(j, at) {
                return f.extendObjectWithContainers(j, at, f.layoutArrayContainers);
              }, f.transition = function(j, at, ut, nt, X, ct) {
                var lt = {
                  redraw: X.redraw
                }, pt = {}, wt = [];
                return lt.prepareFn = function() {
                  for (var Et = Array.isArray(at) ? at.length : 0, Ct = nt.slice(0, Et), Gt = 0; Gt < Ct.length; Gt++) {
                    var Jt = Ct[Gt], Qt = j._fullData[Jt], Vt = Qt._module;
                    if (Vt) {
                      if (Vt.animatable) {
                        var zt = Vt.basePlotModule.name;
                        pt[zt] || (pt[zt] = []), pt[zt].push(Jt);
                      }
                      j.data[Ct[Gt]] = f.extendTrace(j.data[Ct[Gt]], at[Gt]);
                    }
                  }
                  var Rt = t.expandObjectPaths(t.extendDeepNoArrays({}, ut)), Wt = /^[xy]axis[0-9]*$/;
                  for (var kt in Rt)
                    Wt.test(kt) && delete Rt[kt].range;
                  f.extendLayout(j.layout, Rt), delete j.calcdata, f.supplyDefaults(j), f.doCalcdata(j);
                  var re = t.expandObjectPaths(ut);
                  if (re) {
                    var ge = j._fullLayout._plots;
                    for (var _e in ge) {
                      var ce = ge[_e], ae = ce.xaxis, Se = ce.yaxis, ze = ae.range.slice(), Ne = Se.range.slice(), Ve = null, Oe = null, ur = null, ie = null;
                      Array.isArray(re[ae._name + ".range"]) ? Ve = re[ae._name + ".range"].slice() : Array.isArray((re[ae._name] || {}).range) && (Ve = re[ae._name].range.slice()), Array.isArray(re[Se._name + ".range"]) ? Oe = re[Se._name + ".range"].slice() : Array.isArray((re[Se._name] || {}).range) && (Oe = re[Se._name].range.slice()), ze && Ve && (ae.r2l(ze[0]) !== ae.r2l(Ve[0]) || ae.r2l(ze[1]) !== ae.r2l(Ve[1])) && (ur = {
                        xr0: ze,
                        xr1: Ve
                      }), Ne && Oe && (Se.r2l(Ne[0]) !== Se.r2l(Oe[0]) || Se.r2l(Ne[1]) !== Se.r2l(Oe[1])) && (ie = {
                        yr0: Ne,
                        yr1: Oe
                      }), (ur || ie) && wt.push(t.extendFlat({
                        plotinfo: ce
                      }, ur, ie));
                    }
                  }
                  return Promise.resolve();
                }, lt.runFn = function(Et) {
                  var Ct, Gt = j._fullLayout._basePlotModules, Jt = wt.length, Qt;
                  if (ut)
                    for (Qt = 0; Qt < Gt.length; Qt++)
                      Gt[Qt].transitionAxes && Gt[Qt].transitionAxes(j, wt, ct, Et);
                  Jt ? (Ct = t.extendFlat({}, ct), Ct.duration = 0, delete pt.cartesian) : Ct = ct;
                  for (var Vt in pt) {
                    var zt = pt[Vt], Rt = j._fullData[zt[0]]._module;
                    Rt.basePlotModule.plot(j, zt, Ct, Et);
                  }
                }, st(j, ct, lt);
              }, f.transitionFromReact = function(j, at, ut, nt) {
                var X = j._fullLayout, ct = X.transition, lt = {}, pt = [];
                return lt.prepareFn = function() {
                  var wt = X._plots;
                  lt.redraw = !1, at.anim === "some" && (lt.redraw = !0), ut.anim === "some" && (lt.redraw = !0);
                  for (var Et in wt) {
                    var Ct = wt[Et], Gt = Ct.xaxis, Jt = Ct.yaxis, Qt = nt[Gt._name].range.slice(), Vt = nt[Jt._name].range.slice(), zt = Gt.range.slice(), Rt = Jt.range.slice();
                    Gt.setScale(), Jt.setScale();
                    var Wt = null, kt = null;
                    (Gt.r2l(Qt[0]) !== Gt.r2l(zt[0]) || Gt.r2l(Qt[1]) !== Gt.r2l(zt[1])) && (Wt = {
                      xr0: Qt,
                      xr1: zt
                    }), (Jt.r2l(Vt[0]) !== Jt.r2l(Rt[0]) || Jt.r2l(Vt[1]) !== Jt.r2l(Rt[1])) && (kt = {
                      yr0: Vt,
                      yr1: Rt
                    }), (Wt || kt) && pt.push(t.extendFlat({
                      plotinfo: Ct
                    }, Wt, kt));
                  }
                  return Promise.resolve();
                }, lt.runFn = function(wt) {
                  for (var Et = j._fullData, Ct = j._fullLayout, Gt = Ct._basePlotModules, Jt, Qt, Vt, zt = [], Rt = 0; Rt < Et.length; Rt++)
                    zt.push(Rt);
                  function Wt() {
                    if (j._fullLayout)
                      for (var re = 0; re < Gt.length; re++)
                        Gt[re].transitionAxes && Gt[re].transitionAxes(j, pt, Jt, wt);
                  }
                  function kt() {
                    if (j._fullLayout)
                      for (var re = 0; re < Gt.length; re++)
                        Gt[re].plot(j, Vt, Qt, wt);
                  }
                  pt.length && at.anim ? ct.ordering === "traces first" ? (Jt = t.extendFlat({}, ct, {
                    duration: 0
                  }), Vt = zt, Qt = ct, setTimeout(Wt, ct.duration), kt()) : (Jt = ct, Vt = null, Qt = t.extendFlat({}, ct, {
                    duration: 0
                  }), setTimeout(kt, Jt.duration), Wt()) : pt.length ? (Jt = ct, Wt()) : at.anim && (Vt = zt, Qt = ct, kt());
                }, st(j, ct, lt);
              };
              function st(j, at, ut) {
                var nt = !1;
                function X(Gt) {
                  var Jt = Promise.resolve();
                  if (!Gt) return Jt;
                  for (; Gt.length; )
                    Jt = Jt.then(Gt.shift());
                  return Jt;
                }
                function ct(Gt) {
                  if (Gt)
                    for (; Gt.length; )
                      Gt.shift();
                }
                function lt() {
                  return j.emit("plotly_transitioning", []), new Promise(function(Gt) {
                    j._transitioning = !0, at.duration > 0 && (j._transitioningWithDuration = !0), j._transitionData._interruptCallbacks.push(function() {
                      nt = !0;
                    }), ut.redraw && j._transitionData._interruptCallbacks.push(function() {
                      return A.call("redraw", j);
                    }), j._transitionData._interruptCallbacks.push(function() {
                      j.emit("plotly_transitioninterrupted", []);
                    });
                    var Jt = 0, Qt = 0;
                    function Vt() {
                      return Jt++, function() {
                        Qt++, !nt && Qt === Jt && pt(Gt);
                      };
                    }
                    ut.runFn(Vt), setTimeout(Vt());
                  });
                }
                function pt(Gt) {
                  if (j._transitionData)
                    return ct(j._transitionData._interruptCallbacks), Promise.resolve().then(function() {
                      if (ut.redraw)
                        return A.call("redraw", j);
                    }).then(function() {
                      j._transitioning = !1, j._transitioningWithDuration = !1, j.emit("plotly_transitioned", []);
                    }).then(Gt);
                }
                function wt() {
                  if (j._transitionData)
                    return j._transitioning = !1, X(j._transitionData._interruptCallbacks);
                }
                var Et = [f.previousPromises, wt, ut.prepareFn, f.rehover, f.reselect, lt], Ct = t.syncOrAsync(Et, j);
                return (!Ct || !Ct.then) && (Ct = Promise.resolve()), Ct.then(function() {
                  return j;
                });
              }
              f.doCalcdata = function(j, at) {
                var ut = a.list(j), nt = j._fullData, X = j._fullLayout, ct, lt, pt, wt, Et = new Array(nt.length), Ct = (j.calcdata || []).slice();
                for (j.calcdata = Et, X._numBoxes = 0, X._numViolins = 0, X._violinScaleGroupStats = {}, j._hmpixcount = 0, j._hmlumcount = 0, X._piecolormap = {}, X._sunburstcolormap = {}, X._treemapcolormap = {}, X._iciclecolormap = {}, X._funnelareacolormap = {}, pt = 0; pt < nt.length; pt++)
                  if (Array.isArray(at) && at.indexOf(pt) === -1) {
                    Et[pt] = Ct[pt];
                    continue;
                  }
                for (pt = 0; pt < nt.length; pt++)
                  ct = nt[pt], ct._arrayAttrs = p.findArrayAttributes(ct), ct._extremes = {};
                var Gt = X._subplots.polar || [];
                for (pt = 0; pt < Gt.length; pt++)
                  ut.push(X[Gt[pt]].radialaxis, X[Gt[pt]].angularaxis);
                for (var Jt in X._colorAxes) {
                  var Qt = X[Jt];
                  Qt.cauto !== !1 && (delete Qt.cmin, delete Qt.cmax);
                }
                var Vt = !1;
                function zt(kt) {
                  if (ct = nt[kt], lt = ct._module, ct.visible === !0 && ct.transforms) {
                    if (lt && lt.calc) {
                      var re = lt.calc(j, ct);
                      re[0] && re[0].t && re[0].t._scene && delete re[0].t._scene.dirty;
                    }
                    for (wt = 0; wt < ct.transforms.length; wt++) {
                      var ge = ct.transforms[wt];
                      lt = _[ge.type], lt && lt.calcTransform && (ct._hasCalcTransform = !0, Vt = !0, lt.calcTransform(j, ct, ge));
                    }
                  }
                }
                function Rt(kt, re) {
                  if (ct = nt[kt], lt = ct._module, !!lt.isContainer === re) {
                    var ge = [];
                    if (ct.visible === !0 && ct._length !== 0) {
                      delete ct._indexToPoints;
                      var _e = ct.transforms || [];
                      for (wt = _e.length - 1; wt >= 0; wt--)
                        if (_e[wt].enabled) {
                          ct._indexToPoints = _e[wt]._indexToPoints;
                          break;
                        }
                      lt && lt.calc && (ge = lt.calc(j, ct));
                    }
                    (!Array.isArray(ge) || !ge[0]) && (ge = [{
                      x: i,
                      y: i
                    }]), ge[0].t || (ge[0].t = {}), ge[0].trace = ct, Et[kt] = ge;
                  }
                }
                for (et(ut, nt, X), pt = 0; pt < nt.length; pt++) Rt(pt, !0);
                for (pt = 0; pt < nt.length; pt++) zt(pt);
                for (Vt && et(ut, nt, X), pt = 0; pt < nt.length; pt++) Rt(pt, !0);
                for (pt = 0; pt < nt.length; pt++) Rt(pt, !1);
                Q(j);
                var Wt = ht(ut, j);
                if (Wt.length) {
                  for (X._numBoxes = 0, X._numViolins = 0, pt = 0; pt < Wt.length; pt++) Rt(Wt[pt], !0);
                  for (pt = 0; pt < Wt.length; pt++) Rt(Wt[pt], !1);
                  Q(j);
                }
                A.getComponentMethod("fx", "calc")(j), A.getComponentMethod("errorbars", "calc")(j);
              };
              var vt = /(total|sum|min|max|mean|geometric mean|median) (ascending|descending)/;
              function ht(j, at) {
                var ut = [], nt, X, ct, lt, pt;
                function wt(Bt, Xt, Zt) {
                  var ye = Xt._id.charAt(0);
                  if (Bt === "histogram2dcontour") {
                    var Mt = Xt._counterAxes[0], St = a.getFromId(at, Mt), Lt = ye === "x" || Mt === "x" && St.type === "category", te = ye === "y" || Mt === "y" && St.type === "category";
                    return function(fe, Me) {
                      return fe === 0 || Me === 0 || Lt && fe === Zt[Me].length - 1 || te && Me === Zt.length - 1 ? -1 : (ye === "y" ? Me : fe) - 1;
                    };
                  } else
                    return function(fe, Me) {
                      return ye === "y" ? Me : fe;
                    };
                }
                var Et = {
                  min: function(Bt) {
                    return t.aggNums(Math.min, null, Bt);
                  },
                  max: function(Bt) {
                    return t.aggNums(Math.max, null, Bt);
                  },
                  sum: function(Bt) {
                    return t.aggNums(function(Xt, Zt) {
                      return Xt + Zt;
                    }, null, Bt);
                  },
                  total: function(Bt) {
                    return t.aggNums(function(Xt, Zt) {
                      return Xt + Zt;
                    }, null, Bt);
                  },
                  mean: function(Bt) {
                    return t.mean(Bt);
                  },
                  "geometric mean": function(Bt) {
                    return t.geometricMean(Bt);
                  },
                  median: function(Bt) {
                    return t.median(Bt);
                  }
                };
                function Ct(Bt, Xt) {
                  return Bt[1] - Xt[1];
                }
                function Gt(Bt, Xt) {
                  return Xt[1] - Bt[1];
                }
                for (nt = 0; nt < j.length; nt++) {
                  var Jt = j[nt];
                  if (Jt.type === "category") {
                    var Qt = Jt.categoryorder.match(vt);
                    if (Qt) {
                      var Vt = Qt[1], zt = Qt[2], Rt = Jt._id.charAt(0), Wt = Rt === "x", kt = [];
                      for (X = 0; X < Jt._categories.length; X++)
                        kt.push([Jt._categories[X], []]);
                      for (X = 0; X < Jt._traceIndices.length; X++) {
                        var re = Jt._traceIndices[X], ge = at._fullData[re];
                        if (ge.visible === !0) {
                          var _e = ge.type;
                          A.traceIs(ge, "histogram") && (delete ge._xautoBinFinished, delete ge._yautoBinFinished);
                          var ce = _e === "splom", ae = _e === "scattergl", Se = at.calcdata[re];
                          for (ct = 0; ct < Se.length; ct++) {
                            var ze = Se[ct], Ne, Ve;
                            if (ce) {
                              var Oe = ge._axesDim[Jt._id];
                              if (!Wt) {
                                var ur = ge._diag[Oe][0];
                                ur && (Jt = at._fullLayout[a.id2name(ur)]);
                              }
                              var ie = ze.trace.dimensions[Oe].values;
                              for (lt = 0; lt < ie.length; lt++)
                                for (Ne = Jt._categoriesMap[ie[lt]], pt = 0; pt < ze.trace.dimensions.length; pt++)
                                  if (pt !== Oe) {
                                    var $t = ze.trace.dimensions[pt];
                                    kt[Ne][1].push($t.values[lt]);
                                  }
                            } else if (ae) {
                              for (lt = 0; lt < ze.t.x.length; lt++)
                                Wt ? (Ne = ze.t.x[lt], Ve = ze.t.y[lt]) : (Ne = ze.t.y[lt], Ve = ze.t.x[lt]), kt[Ne][1].push(Ve);
                              ze.t && ze.t._scene && delete ze.t._scene.dirty;
                            } else if (ze.hasOwnProperty("z")) {
                              Ve = ze.z;
                              var jt = wt(ge.type, Jt, Ve);
                              for (lt = 0; lt < Ve.length; lt++)
                                for (pt = 0; pt < Ve[lt].length; pt++)
                                  Ne = jt(pt, lt), Ne + 1 && kt[Ne][1].push(Ve[lt][pt]);
                            } else
                              for (Ne = ze.p, Ne === void 0 && (Ne = ze[Rt]), Ve = ze.s, Ve === void 0 && (Ve = ze.v), Ve === void 0 && (Ve = Wt ? ze.y : ze.x), Array.isArray(Ve) || (Ve === void 0 ? Ve = [] : Ve = [Ve]), lt = 0; lt < Ve.length; lt++)
                                kt[Ne][1].push(Ve[lt]);
                          }
                        }
                      }
                      Jt._categoriesValue = kt;
                      var ee = [];
                      for (X = 0; X < kt.length; X++)
                        ee.push([kt[X][0], Et[Vt](kt[X][1])]);
                      ee.sort(zt === "descending" ? Gt : Ct), Jt._categoriesAggregatedValue = ee, Jt._initialCategories = ee.map(function(Bt) {
                        return Bt[0];
                      }), ut = ut.concat(Jt.sortByInitialCategories());
                    }
                  }
                }
                return ut;
              }
              function et(j, at, ut) {
                var nt = {};
                function X(wt) {
                  wt.clearCalc(), wt.type === "multicategory" && wt.setupMultiCategory(at), nt[wt._id] = 1;
                }
                t.simpleMap(j, X);
                for (var ct = ut._axisMatchGroups || [], lt = 0; lt < ct.length; lt++)
                  for (var pt in ct[lt])
                    nt[pt] || X(ut[a.id2name(pt)]);
              }
              function Q(j) {
                var at = j._fullLayout, ut = at._visibleModules, nt = {}, X, ct, lt;
                for (ct = 0; ct < ut.length; ct++) {
                  var pt = ut[ct], wt = pt.crossTraceCalc;
                  if (wt) {
                    var Et = pt.basePlotModule.name;
                    nt[Et] ? t.pushUnique(nt[Et], wt) : nt[Et] = [wt];
                  }
                }
                for (lt in nt) {
                  var Ct = nt[lt], Gt = at._subplots[lt];
                  if (Array.isArray(Gt))
                    for (X = 0; X < Gt.length; X++) {
                      var Jt = Gt[X], Qt = lt === "cartesian" ? at._plots[Jt] : at[Jt];
                      for (ct = 0; ct < Ct.length; ct++)
                        Ct[ct](j, Qt, Jt);
                    }
                  else
                    for (ct = 0; ct < Ct.length; ct++)
                      Ct[ct](j);
                }
              }
              f.rehover = function(j) {
                j._fullLayout._rehover && j._fullLayout._rehover();
              }, f.redrag = function(j) {
                j._fullLayout._redrag && j._fullLayout._redrag();
              }, f.reselect = function(j) {
                var at = j._fullLayout, ut = (j.layout || {}).selections, nt = at._previousSelections;
                at._previousSelections = ut;
                var X = at._reselect || JSON.stringify(ut) !== JSON.stringify(nt);
                A.getComponentMethod("selections", "reselect")(j, X);
              }, f.generalUpdatePerTraceModule = function(j, at, ut, nt) {
                var X = at.traceHash, ct = {}, lt;
                for (lt = 0; lt < ut.length; lt++) {
                  var pt = ut[lt], wt = pt[0].trace;
                  wt.visible && (ct[wt.type] = ct[wt.type] || [], ct[wt.type].push(pt));
                }
                for (var Et in X)
                  if (!ct[Et]) {
                    var Ct = X[Et][0], Gt = Ct[0].trace;
                    Gt.visible = !1, ct[Et] = [Ct];
                  }
                for (var Jt in ct) {
                  var Qt = ct[Jt], Vt = Qt[0][0].trace._module;
                  Vt.plot(j, at, t.filterVisible(Qt), nt);
                }
                at.traceHash = ct;
              }, f.plotBasePlot = function(j, at, ut, nt, X) {
                var ct = A.getModule(j), lt = x(at.calcdata, ct)[0];
                ct.plot(at, lt, nt, X);
              }, f.cleanBasePlot = function(j, at, ut, nt, X) {
                var ct = X._has && X._has(j), lt = ut._has && ut._has(j);
                ct && !lt && X["_" + j + "layer"].selectAll("g.trace").remove();
              };
            }
          ),
          /***/
          26484: (
            /***/
            function(Y) {
              Y.exports = {
                attr: "subplot",
                name: "polar",
                axisNames: ["angularaxis", "radialaxis"],
                axisName2dataArray: {
                  angularaxis: "theta",
                  radialaxis: "r"
                },
                layerNames: ["draglayer", "plotbg", "backplot", "angular-grid", "radial-grid", "frontplot", "angular-line", "radial-line", "angular-axis", "radial-axis"],
                radialDragBoxSize: 50,
                angularDragBoxSize: 30,
                cornerLen: 25,
                cornerHalfWidth: 2,
                // pixels to move mouse before you stop clamping to starting point
                MINDRAG: 8,
                // smallest radial distance [px] allowed for a zoombox
                MINZOOM: 20,
                // distance [px] off (r=0) or (r=radius) where we transition
                // from single-sided to two-sided radial zoom
                OFFEDGE: 20
              };
            }
          ),
          /***/
          95928: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(80899).tester, n = b.findIndexOfMin, s = b.isAngleInsideSector, T = b.angleDelta, A = b.angleDist;
              function p(v, f, _, S, M) {
                if (!s(f, S)) return !1;
                var C, m;
                _[0] < _[1] ? (C = _[0], m = _[1]) : (C = _[1], m = _[0]);
                var L = P(a(C, S[0], S[1], M)), d = P(a(m, S[0], S[1], M)), h = [v * Math.cos(f), v * Math.sin(f)];
                return d.contains(h) && !L.contains(h);
              }
              function u(v, f, _, S) {
                var M, C, m = S[0], L = S[1], d = y(Math.sin(f) - Math.sin(v)), h = y(Math.cos(f) - Math.cos(v)), E = Math.tan(_), w = y(1 / E), z = d / h, O = L - z * m;
                return w ? d && h ? (M = O / (E - z), C = E * M) : h ? (M = L * w, C = L) : (M = m, C = m * E) : d && h ? (M = 0, C = O) : h ? (M = 0, C = L) : M = C = NaN, [M, C];
              }
              function t(v, f, _, S) {
                var M = -f * _, C = f * f + 1, m = 2 * (f * M - _), L = M * M + _ * _ - v * v, d = Math.sqrt(m * m - 4 * C * L), h = (-m + d) / (2 * C), E = (-m - d) / (2 * C);
                return [[h, f * h + M + S], [E, f * E + M + S]];
              }
              function r(v, f) {
                var _ = f.length, S = new Array(_ + 1), M;
                for (M = 0; M < _; M++) {
                  var C = f[M];
                  S[M] = [v * Math.cos(C), v * Math.sin(C)];
                }
                return S[M] = S[0].slice(), S;
              }
              function i(v, f, _, S) {
                var M = S.length, C = [], m, L;
                function d(H) {
                  return [v * Math.cos(H), v * Math.sin(H)];
                }
                function h(H, F, G) {
                  return u(H, F, G, d(H));
                }
                function E(H) {
                  return b.mod(H, M);
                }
                function w(H) {
                  return s(H, [f, _]);
                }
                var z = n(S, function(H) {
                  return w(H) ? A(H, f) : 1 / 0;
                }), O = h(S[z], S[E(z - 1)], f);
                for (C.push(O), m = z, L = 0; L < M; m++, L++) {
                  var B = S[E(m)];
                  if (!w(B)) break;
                  C.push(d(B));
                }
                var V = n(S, function(H) {
                  return w(H) ? A(H, _) : 1 / 0;
                }), U = h(S[V], S[E(V + 1)], _);
                return C.push(U), C.push([0, 0]), C.push(C[0].slice()), C;
              }
              function a(v, f, _, S) {
                return b.isFullCircle([f, _]) ? r(v, S) : i(v, f, _, S);
              }
              function l(v, f, _, S) {
                for (var M = 1 / 0, C = 1 / 0, m = a(v, f, _, S), L = 0; L < m.length; L++) {
                  var d = m[L];
                  M = Math.min(M, d[0]), C = Math.min(C, -d[1]);
                }
                return [M, C];
              }
              function o(v, f) {
                var _ = function(C) {
                  var m = T(C, v);
                  return m > 0 ? m : 1 / 0;
                }, S = n(f, _), M = b.mod(S + 1, f.length);
                return [f[S], f[M]];
              }
              function y(v) {
                return Math.abs(v) > 1e-10 ? v : 0;
              }
              function g(v, f, _) {
                f = f || 0, _ = _ || 0;
                for (var S = v.length, M = new Array(S), C = 0; C < S; C++) {
                  var m = v[C];
                  M[C] = [f + m[0], _ - m[1]];
                }
                return M;
              }
              function x(v, f, _, S, M, C) {
                var m = a(v, f, _, S);
                return "M" + g(m, M, C).join("L");
              }
              function c(v, f, _, S, M, C, m) {
                var L, d;
                v < f ? (L = v, d = f) : (L = f, d = v);
                var h = g(a(L, _, S, M), C, m), E = g(a(d, _, S, M), C, m);
                return "M" + E.reverse().join("L") + "M" + h.join("L");
              }
              Y.exports = {
                isPtInsidePolygon: p,
                findPolygonOffset: l,
                findEnclosingVertexAngles: o,
                findIntersectionXY: u,
                findXYatLength: t,
                clampTiny: y,
                pathPolygon: x,
                pathPolygonAnnulus: c
              };
            }
          ),
          /***/
          31645: (
            /***/
            function(Y, K, e) {
              var b = e(4173).fX, P = e(34809).counterRegex, n = e(35785), s = e(26484), T = s.attr, A = s.name, p = P(A), u = {};
              u[T] = {
                valType: "subplotid",
                dflt: A,
                editType: "calc"
              };
              function t(i) {
                for (var a = i._fullLayout, l = i.calcdata, o = a._subplots[A], y = 0; y < o.length; y++) {
                  var g = o[y], x = b(l, A, g), c = a[g]._subplot;
                  c || (c = n(i, g), a[g]._subplot = c), c.plot(x, a, i._promises);
                }
              }
              function r(i, a, l, o) {
                for (var y = o._subplots[A] || [], g = o._has && o._has("gl"), x = a._has && a._has("gl"), c = g && !x, v = 0; v < y.length; v++) {
                  var f = y[v], _ = o[f]._subplot;
                  if (!a[f] && _) {
                    _.framework.remove(), _.layers["radial-axis-title"].remove();
                    for (var S in _.clipPaths)
                      _.clipPaths[S].remove();
                  }
                  c && _._scene && (_._scene.destroy(), _._scene = null);
                }
              }
              Y.exports = {
                attr: T,
                name: A,
                idRoot: A,
                idRegex: p,
                attrRegex: p,
                attributes: u,
                layoutAttributes: e(42219),
                supplyLayoutDefaults: e(84588),
                plot: t,
                clean: r,
                toSVG: e(37703).toSVG
              };
            }
          ),
          /***/
          42219: (
            /***/
            function(Y, K, e) {
              var b = e(10229), P = e(25829), n = e(13792).u, s = e(34809).extendFlat, T = e(13582).overrideAll, A = T({
                color: P.color,
                showline: s({}, P.showline, {
                  dflt: !0
                }),
                linecolor: P.linecolor,
                linewidth: P.linewidth,
                showgrid: s({}, P.showgrid, {
                  dflt: !0
                }),
                gridcolor: P.gridcolor,
                gridwidth: P.gridwidth,
                griddash: P.griddash
                // TODO add spike* attributes down the road
                // should we add zeroline* attributes?
              }, "plot", "from-root"), p = T({
                tickmode: P.minor.tickmode,
                nticks: P.nticks,
                tick0: P.tick0,
                dtick: P.dtick,
                tickvals: P.tickvals,
                ticktext: P.ticktext,
                ticks: P.ticks,
                ticklen: P.ticklen,
                tickwidth: P.tickwidth,
                tickcolor: P.tickcolor,
                ticklabelstep: P.ticklabelstep,
                showticklabels: P.showticklabels,
                labelalias: P.labelalias,
                showtickprefix: P.showtickprefix,
                tickprefix: P.tickprefix,
                showticksuffix: P.showticksuffix,
                ticksuffix: P.ticksuffix,
                showexponent: P.showexponent,
                exponentformat: P.exponentformat,
                minexponent: P.minexponent,
                separatethousands: P.separatethousands,
                tickfont: P.tickfont,
                tickangle: P.tickangle,
                tickformat: P.tickformat,
                tickformatstops: P.tickformatstops,
                layer: P.layer
              }, "plot", "from-root"), u = {
                visible: s({}, P.visible, {
                  dflt: !0
                }),
                type: s({}, P.type, {
                  values: ["-", "linear", "log", "date", "category"]
                }),
                autotypenumbers: P.autotypenumbers,
                autorangeoptions: {
                  minallowed: P.autorangeoptions.minallowed,
                  maxallowed: P.autorangeoptions.maxallowed,
                  clipmin: P.autorangeoptions.clipmin,
                  clipmax: P.autorangeoptions.clipmax,
                  include: P.autorangeoptions.include,
                  editType: "plot"
                },
                autorange: s({}, P.autorange, {
                  editType: "plot"
                }),
                rangemode: {
                  valType: "enumerated",
                  values: ["tozero", "nonnegative", "normal"],
                  dflt: "tozero",
                  editType: "calc"
                },
                minallowed: s({}, P.minallowed, {
                  editType: "plot"
                }),
                maxallowed: s({}, P.maxallowed, {
                  editType: "plot"
                }),
                range: s({}, P.range, {
                  items: [{
                    valType: "any",
                    editType: "plot",
                    impliedEdits: {
                      "^autorange": !1
                    }
                  }, {
                    valType: "any",
                    editType: "plot",
                    impliedEdits: {
                      "^autorange": !1
                    }
                  }],
                  editType: "plot"
                }),
                categoryorder: P.categoryorder,
                categoryarray: P.categoryarray,
                angle: {
                  valType: "angle",
                  editType: "plot"
                },
                autotickangles: P.autotickangles,
                side: {
                  valType: "enumerated",
                  // TODO add 'center' for `showline: false` radial axes
                  values: ["clockwise", "counterclockwise"],
                  dflt: "clockwise",
                  editType: "plot"
                },
                title: {
                  // radial title is not gui-editable at the moment,
                  // so it needs dflt: '', similar to carpet axes.
                  text: s({}, P.title.text, {
                    editType: "plot",
                    dflt: ""
                  }),
                  font: s({}, P.title.font, {
                    editType: "plot"
                  }),
                  // TODO
                  // - might need a 'titleside' and even 'titledirection' down the road
                  // - what about standoff ??
                  editType: "plot"
                },
                hoverformat: P.hoverformat,
                uirevision: {
                  valType: "any",
                  editType: "none"
                },
                editType: "calc",
                _deprecated: {
                  title: P._deprecated.title,
                  titlefont: P._deprecated.titlefont
                }
              };
              s(
                u,
                // N.B. radialaxis grid lines are circular,
                // but radialaxis lines are straight from circle center to outer bound
                A,
                p
              );
              var t = {
                visible: s({}, P.visible, {
                  dflt: !0
                }),
                type: {
                  valType: "enumerated",
                  // 'linear' should maybe be called 'angle' or 'angular' here
                  // to make clear that axis here is periodic and more tightly match
                  // `thetaunit`?
                  //
                  // skip 'date' for first push
                  // no 'log' for now
                  values: ["-", "linear", "category"],
                  dflt: "-",
                  editType: "calc",
                  _noTemplating: !0
                },
                autotypenumbers: P.autotypenumbers,
                categoryorder: P.categoryorder,
                categoryarray: P.categoryarray,
                thetaunit: {
                  valType: "enumerated",
                  values: ["radians", "degrees"],
                  dflt: "degrees",
                  editType: "calc"
                },
                period: {
                  valType: "number",
                  editType: "calc",
                  min: 0
                  // Examples for date axes:
                  //
                  // - period that equals the timeseries length
                  //  http://flowingdata.com/2017/01/24/one-dataset-visualized-25-ways/18-polar-coordinates/
                  // - and 1-year periods (focusing on seasonal change0
                  //  http://otexts.org/fpp2/seasonal-plots.html
                  //  https://blogs.scientificamerican.com/sa-visual/why-are-so-many-babies-born-around-8-00-a-m/
                  //  http://www.seasonaladjustment.com/2012/09/05/clock-plot-visualising-seasonality-using-r-and-ggplot2-part-3/
                  //  https://i.pinimg.com/736x/49/b9/72/49b972ccb3206a1a6d6f870dac543280.jpg
                  //  https://www.climate-lab-book.ac.uk/spirals/
                },
                direction: {
                  valType: "enumerated",
                  values: ["counterclockwise", "clockwise"],
                  dflt: "counterclockwise",
                  editType: "calc"
                },
                rotation: {
                  valType: "angle",
                  editType: "calc"
                },
                hoverformat: P.hoverformat,
                uirevision: {
                  valType: "any",
                  editType: "none"
                },
                editType: "calc"
              };
              s(
                t,
                // N.B. angular grid lines are straight lines from circle center to outer bound
                // the angular line is circular bounding the polar plot area.
                A,
                // N.B. ticksuffix defaults to '°' for angular axes with `thetaunit: 'degrees'`
                p
              ), Y.exports = {
                // TODO for x/y/zoom system for paper-based zooming:
                // x: {},
                // y: {},
                // zoom: {},
                domain: n({
                  name: "polar",
                  editType: "plot"
                }),
                sector: {
                  valType: "info_array",
                  items: [{
                    valType: "number",
                    editType: "plot"
                  }, {
                    valType: "number",
                    editType: "plot"
                  }],
                  dflt: [0, 360],
                  editType: "plot"
                },
                hole: {
                  valType: "number",
                  min: 0,
                  max: 1,
                  dflt: 0,
                  editType: "plot"
                },
                bgcolor: {
                  valType: "color",
                  editType: "plot",
                  dflt: b.background
                },
                radialaxis: u,
                angularaxis: t,
                gridshape: {
                  valType: "enumerated",
                  values: ["circular", "linear"],
                  dflt: "circular",
                  editType: "plot"
                },
                // TODO maybe?
                // annotations:
                uirevision: {
                  valType: "any",
                  editType: "none"
                },
                editType: "calc"
              };
            }
          ),
          /***/
          84588: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(78766), n = e(78032), s = e(4448), T = e(4173).KO, A = e(22777), p = e(87433), u = e(12036), t = e(54616), r = e(46473), i = e(97405), a = e(75511), l = e(9666), o = e(42219), y = e(51937), g = e(26484), x = g.axisNames;
              function c(f, _, S, M) {
                var C = S("bgcolor");
                M.bgColor = P.combine(C, M.paper_bgcolor);
                var m = S("sector");
                S("hole");
                var L = T(M.fullData, g.name, M.id), d = M.layoutOut, h;
                function E(pt, wt) {
                  return S(h + "." + pt, wt);
                }
                for (var w = 0; w < x.length; w++) {
                  h = x[w], b.isPlainObject(f[h]) || (f[h] = {});
                  var z = f[h], O = n.newContainer(_, h);
                  O._id = O._name = h, O._attr = M.id + "." + h, O._traceIndices = L.map(function(pt) {
                    return pt._expandedIndex;
                  });
                  var B = g.axisName2dataArray[h], V = v(z, O, E, L, B, M);
                  r(z, O, E, {
                    axData: L,
                    dataAttr: B
                  });
                  var U = E("visible");
                  switch (y(O, _, d), E("uirevision", _.uirevision), O._m = 1, h) {
                    case "radialaxis":
                      E("minallowed"), E("maxallowed");
                      var H = E("range"), F = O.getAutorangeDflt(H), G = E("autorange", F), q;
                      H && (H[0] === null && H[1] === null || (H[0] === null || H[1] === null) && (G === "reversed" || G === !0) || H[0] !== null && (G === "min" || G === "max reversed") || H[1] !== null && (G === "max" || G === "min reversed")) && (H = void 0, delete O.range, O.autorange = !0, q = !0), q || (F = O.getAutorangeDflt(H), G = E("autorange", F)), z.autorange = G, G && (a(E, G, H), (V === "linear" || V === "-") && E("rangemode"), O.isReversed() && (O._m = -1)), O.cleanRange("range", {
                        dfltRange: [0, 1]
                      });
                      break;
                    case "angularaxis":
                      if (V === "date") {
                        b.log("Polar plots do not support date angular axes yet.");
                        for (var rt = 0; rt < L.length; rt++)
                          L[rt].visible = !1;
                        V = z.type = O.type = "linear";
                      }
                      E(V === "linear" ? "thetaunit" : "period");
                      var st = E("direction");
                      E("rotation", {
                        counterclockwise: 0,
                        clockwise: 90
                      }[st]);
                      break;
                  }
                  if (t(z, O, E, O.type, {
                    tickSuffixDflt: O.thetaunit === "degrees" ? "°" : void 0
                  }), U) {
                    var vt, ht, et, Q, j, at, ut, nt, X, ct, lt = M.font || {};
                    vt = E("color"), ht = vt === z.color ? vt : lt.color, et = lt.size, Q = lt.family, j = lt.weight, at = lt.style, ut = lt.variant, nt = lt.textcase, X = lt.lineposition, ct = lt.shadow, A(z, O, E, O.type), u(z, O, E, O.type, {
                      font: {
                        weight: j,
                        style: at,
                        variant: ut,
                        textcase: nt,
                        lineposition: X,
                        shadow: ct,
                        color: ht,
                        size: et,
                        family: Q
                      },
                      noAutotickangles: h === "angularaxis",
                      noTicklabelshift: !0,
                      noTicklabelstandoff: !0
                    }), p(z, O, E, {
                      outerTicks: !0
                    }), i(z, O, E, {
                      dfltColor: vt,
                      bgColor: M.bgColor,
                      // default grid color is darker here (60%, vs cartesian default ~91%)
                      // because the grid is not square so the eye needs heavier cues to follow
                      blend: 60,
                      showLine: !0,
                      showGrid: !0,
                      noZeroLine: !0,
                      attributes: o[h]
                    }), E("layer"), h === "radialaxis" && (E("side"), E("angle", m[0]), E("title.text"), b.coerceFont(E, "title.font", {
                      weight: j,
                      style: at,
                      variant: ut,
                      textcase: nt,
                      lineposition: X,
                      shadow: ct,
                      color: ht,
                      size: b.bigFont(et),
                      family: Q
                    }));
                  }
                  V !== "category" && E("hoverformat"), O._input = z;
                }
                _.angularaxis.type === "category" && S("gridshape");
              }
              function v(f, _, S, M, C, m) {
                var L = S("autotypenumbers", m.autotypenumbersDflt), d = S("type");
                if (d === "-") {
                  for (var h, E = 0; E < M.length; E++)
                    if (M[E].visible) {
                      h = M[E];
                      break;
                    }
                  h && h[C] && (_.type = l(h[C], "gregorian", {
                    noMultiCategory: !0,
                    autotypenumbers: L
                  })), _.type === "-" ? _.type = "linear" : f.type = _.type;
                }
                return _.type;
              }
              Y.exports = function(_, S, M) {
                s(_, S, M, {
                  type: g.name,
                  attributes: o,
                  handleDefaults: c,
                  font: S.font,
                  autotypenumbersDflt: S.autotypenumbers,
                  paper_bgcolor: S.paper_bgcolor,
                  fullData: M,
                  layoutOut: S
                });
              };
            }
          ),
          /***/
          35785: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(65657), n = e(33626), s = e(34809), T = s.strRotate, A = s.strTranslate, p = e(78766), u = e(62203), t = e(44122), r = e(29714), i = e(19091), a = e(51937), l = e(32919).doAutoRange, o = e(51680), y = e(14751), g = e(32141), x = e(17240), c = e(44844).prepSelect, v = e(44844).selectOnClick, f = e(44844).clearOutline, _ = e(27983), S = e(34823), M = e(71817).redrawReglTraces, C = e(4530).MID_SHIFT, m = e(26484), L = e(95928), d = e(52007), h = d.smith, E = d.reactanceArc, w = d.resistanceArc, z = d.smithTransform, O = s._, B = s.mod, V = s.deg2rad, U = s.rad2deg;
              function H(vt, ht, et) {
                this.isSmith = et || !1, this.id = ht, this.gd = vt, this._hasClipOnAxisFalse = null, this.vangles = null, this.radialAxisAngle = null, this.traceHash = {}, this.layers = {}, this.clipPaths = {}, this.clipIds = {}, this.viewInitial = {};
                var Q = vt._fullLayout, j = "clip" + Q._uid + ht;
                this.clipIds.forTraces = j + "-for-traces", this.clipPaths.forTraces = Q._clips.append("clipPath").attr("id", this.clipIds.forTraces), this.clipPaths.forTraces.append("path"), this.framework = Q["_" + (et ? "smith" : "polar") + "layer"].append("g").attr("class", ht), this.getHole = function(at) {
                  return this.isSmith ? 0 : at.hole;
                }, this.getSector = function(at) {
                  return this.isSmith ? [0, 360] : at.sector;
                }, this.getRadial = function(at) {
                  return this.isSmith ? at.realaxis : at.radialaxis;
                }, this.getAngular = function(at) {
                  return this.isSmith ? at.imaginaryaxis : at.angularaxis;
                }, et || (this.radialTickLayout = null, this.angularTickLayout = null);
              }
              var F = H.prototype;
              Y.exports = function(ht, et, Q) {
                return new H(ht, et, Q);
              }, F.plot = function(vt, ht) {
                for (var et = this, Q = ht[et.id], j = !1, at = 0; at < vt.length; at++) {
                  var ut = vt[at][0].trace;
                  if (ut.cliponaxis === !1) {
                    j = !0;
                    break;
                  }
                }
                et._hasClipOnAxisFalse = j, et.updateLayers(ht, Q), et.updateLayout(ht, Q), t.generalUpdatePerTraceModule(et.gd, et, vt, Q), et.updateFx(ht, Q), et.isSmith && (delete Q.realaxis.range, delete Q.imaginaryaxis.range);
              }, F.updateLayers = function(vt, ht) {
                var et = this, Q = et.isSmith, j = et.layers, at = et.getRadial(ht), ut = et.getAngular(ht), nt = m.layerNames, X = nt.indexOf("frontplot"), ct = nt.slice(0, X), lt = ut.layer === "below traces", pt = at.layer === "below traces";
                lt && ct.push("angular-line"), pt && ct.push("radial-line"), lt && ct.push("angular-axis"), pt && ct.push("radial-axis"), ct.push("frontplot"), lt || ct.push("angular-line"), pt || ct.push("radial-line"), lt || ct.push("angular-axis"), pt || ct.push("radial-axis");
                var wt = (Q ? "smith" : "polar") + "sublayer", Et = et.framework.selectAll("." + wt).data(ct, String);
                Et.enter().append("g").attr("class", function(Ct) {
                  return wt + " " + Ct;
                }).each(function(Ct) {
                  var Gt = j[Ct] = b.select(this);
                  switch (Ct) {
                    case "frontplot":
                      Q || Gt.append("g").classed("barlayer", !0), Gt.append("g").classed("scatterlayer", !0);
                      break;
                    case "backplot":
                      Gt.append("g").classed("maplayer", !0);
                      break;
                    case "plotbg":
                      j.bg = Gt.append("path");
                      break;
                    case "radial-grid":
                      Gt.style("fill", "none");
                      break;
                    case "angular-grid":
                      Gt.style("fill", "none");
                      break;
                    case "radial-line":
                      Gt.append("line").style("fill", "none");
                      break;
                    case "angular-line":
                      Gt.append("path").style("fill", "none");
                      break;
                  }
                }), Et.order();
              }, F.updateLayout = function(vt, ht) {
                var et = this, Q = et.layers, j = vt._size, at = et.getRadial(ht), ut = et.getAngular(ht), nt = ht.domain.x, X = ht.domain.y;
                et.xOffset = j.l + j.w * nt[0], et.yOffset = j.t + j.h * (1 - X[1]);
                var ct = et.xLength = j.w * (nt[1] - nt[0]), lt = et.yLength = j.h * (X[1] - X[0]), pt = et.getSector(ht);
                et.sectorInRad = pt.map(V);
                var wt = et.sectorBBox = q(pt), Et = wt[2] - wt[0], Ct = wt[3] - wt[1], Gt = lt / ct, Jt = Math.abs(Ct / Et), Qt, Vt, zt, Rt, Wt;
                Gt > Jt ? (Qt = ct, Vt = ct * Jt, Wt = (lt - Vt) / j.h / 2, zt = [nt[0], nt[1]], Rt = [X[0] + Wt, X[1] - Wt]) : (Qt = lt / Jt, Vt = lt, Wt = (ct - Qt) / j.w / 2, zt = [nt[0] + Wt, nt[1] - Wt], Rt = [X[0], X[1]]), et.xLength2 = Qt, et.yLength2 = Vt, et.xDomain2 = zt, et.yDomain2 = Rt;
                var kt = et.xOffset2 = j.l + j.w * zt[0], re = et.yOffset2 = j.t + j.h * (1 - Rt[1]), ge = et.radius = Qt / Et, _e = et.innerRadius = et.getHole(ht) * ge, ce = et.cx = kt - ge * wt[0], ae = et.cy = re + ge * wt[3], Se = et.cxx = ce - kt, ze = et.cyy = ae - re, Ne = at.side, Ve;
                Ne === "counterclockwise" ? (Ve = Ne, Ne = "top") : Ne === "clockwise" && (Ve = Ne, Ne = "bottom"), et.radialAxis = et.mockAxis(vt, ht, at, {
                  // make this an 'x' axis to make positioning (especially rotation) easier
                  _id: "x",
                  // convert to 'x' axis equivalent
                  side: Ne,
                  // keep track of real side
                  _trueSide: Ve,
                  // spans length 1 radius
                  domain: [_e / j.w, ge / j.w]
                }), et.angularAxis = et.mockAxis(vt, ht, ut, {
                  side: "right",
                  // to get auto nticks right
                  domain: [0, Math.PI],
                  // don't pass through autorange logic
                  autorange: !1
                }), et.doAutoRange(vt, ht), et.updateAngularAxis(vt, ht), et.updateRadialAxis(vt, ht), et.updateRadialAxisTitle(vt, ht), et.xaxis = et.mockCartesianAxis(vt, ht, {
                  _id: "x",
                  domain: zt
                }), et.yaxis = et.mockCartesianAxis(vt, ht, {
                  _id: "y",
                  domain: Rt
                });
                var Oe = et.pathSubplot();
                et.clipPaths.forTraces.select("path").attr("d", Oe).attr("transform", A(Se, ze)), Q.frontplot.attr("transform", A(kt, re)).call(u.setClipUrl, et._hasClipOnAxisFalse ? null : et.clipIds.forTraces, et.gd), Q.bg.attr("d", Oe).attr("transform", A(ce, ae)).call(p.fill, ht.bgcolor);
              }, F.mockAxis = function(vt, ht, et, Q) {
                var j = s.extendFlat({}, et, Q);
                return a(j, ht, vt), j;
              }, F.mockCartesianAxis = function(vt, ht, et) {
                var Q = this, j = Q.isSmith, at = et._id, ut = s.extendFlat({
                  type: "linear"
                }, et);
                i(ut, vt);
                var nt = {
                  x: [0, 2],
                  y: [1, 3]
                };
                return ut.setRange = function() {
                  var X = Q.sectorBBox, ct = nt[at], lt = Q.radialAxis._rl, pt = (lt[1] - lt[0]) / (1 - Q.getHole(ht));
                  ut.range = [X[ct[0]] * pt, X[ct[1]] * pt];
                }, ut.isPtWithinRange = at === "x" && !j ? function(X) {
                  return Q.isPtInside(X);
                } : function() {
                  return !0;
                }, ut.setRange(), ut.setScale(), ut;
              }, F.doAutoRange = function(vt, ht) {
                var et = this, Q = et.gd, j = et.radialAxis, at = et.getRadial(ht);
                l(Q, j);
                var ut = j.range;
                if (at.range = ut.slice(), at._input.range = ut.slice(), j._rl = [j.r2l(ut[0], null, "gregorian"), j.r2l(ut[1], null, "gregorian")], j.minallowed !== void 0) {
                  var nt = j.r2l(j.minallowed);
                  j._rl[0] > j._rl[1] ? j._rl[1] = Math.max(j._rl[1], nt) : j._rl[0] = Math.max(j._rl[0], nt);
                }
                if (j.maxallowed !== void 0) {
                  var X = j.r2l(j.maxallowed);
                  j._rl[0] < j._rl[1] ? j._rl[1] = Math.min(j._rl[1], X) : j._rl[0] = Math.min(j._rl[0], X);
                }
              }, F.updateRadialAxis = function(vt, ht) {
                var et = this, Q = et.gd, j = et.layers, at = et.radius, ut = et.innerRadius, nt = et.cx, X = et.cy, ct = et.getRadial(ht), lt = B(et.getSector(ht)[0], 360), pt = et.radialAxis, wt = ut < at, Et = et.isSmith;
                Et || (et.fillViewInitialKey("radialaxis.angle", ct.angle), et.fillViewInitialKey("radialaxis.range", pt.range.slice()), pt.setGeometry()), pt.tickangle === "auto" && lt > 90 && lt <= 270 && (pt.tickangle = 180);
                var Ct = Et ? function(ge) {
                  var _e = z(et, h([ge.x, 0]));
                  return A(_e[0] - nt, _e[1] - X);
                } : function(ge) {
                  return A(pt.l2p(ge.x) + ut, 0);
                }, Gt = Et ? function(ge) {
                  return w(et, ge.x, -1 / 0, 1 / 0);
                } : function(ge) {
                  return et.pathArc(pt.r2p(ge.x) + ut);
                }, Jt = G(ct);
                if (et.radialTickLayout !== Jt && (j["radial-axis"].selectAll(".xtick").remove(), et.radialTickLayout = Jt), wt) {
                  pt.setScale();
                  var Qt = 0, Vt = Et ? (pt.tickvals || []).filter(function(ge) {
                    return ge >= 0;
                  }).map(function(ge) {
                    return r.tickText(pt, ge, !0, !1);
                  }) : r.calcTicks(pt), zt = Et ? Vt : r.clipEnds(pt, Vt), Rt = r.getTickSigns(pt)[2];
                  Et && ((pt.ticks === "top" && pt.side === "bottom" || pt.ticks === "bottom" && pt.side === "top") && (Rt = -Rt), pt.ticks === "top" && pt.side === "top" && (Qt = -pt.ticklen), pt.ticks === "bottom" && pt.side === "bottom" && (Qt = pt.ticklen)), r.drawTicks(Q, pt, {
                    vals: Vt,
                    layer: j["radial-axis"],
                    path: r.makeTickPath(pt, 0, Rt),
                    transFn: Ct,
                    crisp: !1
                  }), r.drawGrid(Q, pt, {
                    vals: zt,
                    layer: j["radial-grid"],
                    path: Gt,
                    transFn: s.noop,
                    crisp: !1
                  }), r.drawLabels(Q, pt, {
                    vals: Vt,
                    layer: j["radial-axis"],
                    transFn: Ct,
                    labelFns: r.makeLabelFns(pt, Qt)
                  });
                }
                var Wt = et.radialAxisAngle = et.vangles ? U(rt(V(ct.angle), et.vangles)) : ct.angle, kt = A(nt, X), re = kt + T(-Wt);
                st(j["radial-axis"], wt && (ct.showticklabels || ct.ticks), {
                  transform: re
                }), st(j["radial-grid"], wt && ct.showgrid, {
                  transform: Et ? "" : kt
                }), st(j["radial-line"].select("line"), wt && ct.showline, {
                  x1: Et ? -at : ut,
                  y1: 0,
                  x2: at,
                  y2: 0,
                  transform: re
                }).attr("stroke-width", ct.linewidth).call(p.stroke, ct.linecolor);
              }, F.updateRadialAxisTitle = function(vt, ht, et) {
                if (!this.isSmith) {
                  var Q = this, j = Q.gd, at = Q.radius, ut = Q.cx, nt = Q.cy, X = Q.getRadial(ht), ct = Q.id + "title", lt = 0;
                  if (X.title) {
                    var pt = u.bBox(Q.layers["radial-axis"].node()).height, wt = X.title.font.size, Et = X.side;
                    lt = Et === "top" ? wt : Et === "counterclockwise" ? -(pt + wt * 0.4) : pt + wt * 0.8;
                  }
                  var Ct = et !== void 0 ? et : Q.radialAxisAngle, Gt = V(Ct), Jt = Math.cos(Gt), Qt = Math.sin(Gt), Vt = ut + at / 2 * Jt + lt * Qt, zt = nt - at / 2 * Qt + lt * Jt;
                  Q.layers["radial-axis-title"] = x.draw(j, ct, {
                    propContainer: X,
                    propName: Q.id + ".radialaxis.title",
                    placeholder: O(j, "Click to enter radial axis title"),
                    attributes: {
                      x: Vt,
                      y: zt,
                      "text-anchor": "middle"
                    },
                    transform: {
                      rotate: -Ct
                    }
                  });
                }
              }, F.updateAngularAxis = function(vt, ht) {
                var et = this, Q = et.gd, j = et.layers, at = et.radius, ut = et.innerRadius, nt = et.cx, X = et.cy, ct = et.getAngular(ht), lt = et.angularAxis, pt = et.isSmith;
                pt || (et.fillViewInitialKey("angularaxis.rotation", ct.rotation), lt.setGeometry(), lt.setScale());
                var wt = pt ? function(_e) {
                  var ce = z(et, h([0, _e.x]));
                  return Math.atan2(ce[0] - nt, ce[1] - X) - Math.PI / 2;
                } : function(_e) {
                  return lt.t2g(_e.x);
                };
                lt.type === "linear" && lt.thetaunit === "radians" && (lt.tick0 = U(lt.tick0), lt.dtick = U(lt.dtick));
                var Et = function(_e) {
                  return A(nt + at * Math.cos(_e), X - at * Math.sin(_e));
                }, Ct = pt ? function(_e) {
                  var ce = z(et, h([0, _e.x]));
                  return A(ce[0], ce[1]);
                } : function(_e) {
                  return Et(wt(_e));
                }, Gt = pt ? function(_e) {
                  var ce = z(et, h([0, _e.x])), ae = Math.atan2(ce[0] - nt, ce[1] - X) - Math.PI / 2;
                  return A(ce[0], ce[1]) + T(-U(ae));
                } : function(_e) {
                  var ce = wt(_e);
                  return Et(ce) + T(-U(ce));
                }, Jt = pt ? function(_e) {
                  return E(et, _e.x, 0, 1 / 0);
                } : function(_e) {
                  var ce = wt(_e), ae = Math.cos(ce), Se = Math.sin(ce);
                  return "M" + [nt + ut * ae, X - ut * Se] + "L" + [nt + at * ae, X - at * Se];
                }, Qt = r.makeLabelFns(lt, 0), Vt = Qt.labelStandoff, zt = {};
                zt.xFn = function(_e) {
                  var ce = wt(_e);
                  return Math.cos(ce) * Vt;
                }, zt.yFn = function(_e) {
                  var ce = wt(_e), ae = Math.sin(ce) > 0 ? 0.2 : 1;
                  return -Math.sin(ce) * (Vt + _e.fontSize * ae) + Math.abs(Math.cos(ce)) * (_e.fontSize * C);
                }, zt.anchorFn = function(_e) {
                  var ce = wt(_e), ae = Math.cos(ce);
                  return Math.abs(ae) < 0.1 ? "middle" : ae > 0 ? "start" : "end";
                }, zt.heightFn = function(_e, ce, ae) {
                  var Se = wt(_e);
                  return -0.5 * (1 + Math.sin(Se)) * ae;
                };
                var Rt = G(ct);
                et.angularTickLayout !== Rt && (j["angular-axis"].selectAll("." + lt._id + "tick").remove(), et.angularTickLayout = Rt);
                var Wt = pt ? [1 / 0].concat(lt.tickvals || []).map(function(_e) {
                  return r.tickText(lt, _e, !0, !1);
                }) : r.calcTicks(lt);
                pt && (Wt[0].text = "∞", Wt[0].fontSize *= 1.75);
                var kt;
                if (ht.gridshape === "linear" ? (kt = Wt.map(wt), s.angleDelta(kt[0], kt[1]) < 0 && (kt = kt.slice().reverse())) : kt = null, et.vangles = kt, lt.type === "category" && (Wt = Wt.filter(function(_e) {
                  return s.isAngleInsideSector(wt(_e), et.sectorInRad);
                })), lt.visible) {
                  var re = lt.ticks === "inside" ? -1 : 1, ge = (lt.linewidth || 1) / 2;
                  r.drawTicks(Q, lt, {
                    vals: Wt,
                    layer: j["angular-axis"],
                    path: "M" + re * ge + ",0h" + re * lt.ticklen,
                    transFn: Gt,
                    crisp: !1
                  }), r.drawGrid(Q, lt, {
                    vals: Wt,
                    layer: j["angular-grid"],
                    path: Jt,
                    transFn: s.noop,
                    crisp: !1
                  }), r.drawLabels(Q, lt, {
                    vals: Wt,
                    layer: j["angular-axis"],
                    repositionOnUpdate: !0,
                    transFn: Ct,
                    labelFns: zt
                  });
                }
                st(j["angular-line"].select("path"), ct.showline, {
                  d: et.pathSubplot(),
                  transform: A(nt, X)
                }).attr("stroke-width", ct.linewidth).call(p.stroke, ct.linecolor);
              }, F.updateFx = function(vt, ht) {
                if (!this.gd._context.staticPlot) {
                  var et = !this.isSmith;
                  et && (this.updateAngularDrag(vt), this.updateRadialDrag(vt, ht, 0), this.updateRadialDrag(vt, ht, 1)), this.updateHoverAndMainDrag(vt);
                }
              }, F.updateHoverAndMainDrag = function(vt) {
                var ht = this, et = ht.isSmith, Q = ht.gd, j = ht.layers, at = vt._zoomlayer, ut = m.MINZOOM, nt = m.OFFEDGE, X = ht.radius, ct = ht.innerRadius, lt = ht.cx, pt = ht.cy, wt = ht.cxx, Et = ht.cyy, Ct = ht.sectorInRad, Gt = ht.vangles, Jt = ht.radialAxis, Qt = L.clampTiny, Vt = L.findXYatLength, zt = L.findEnclosingVertexAngles, Rt = m.cornerHalfWidth, Wt = m.cornerLen / 2, kt, re, ge = o.makeDragger(j, "path", "maindrag", vt.dragmode === !1 ? "none" : "crosshair");
                b.select(ge).attr("d", ht.pathSubplot()).attr("transform", A(lt, pt)), ge.onmousemove = function(Xe) {
                  g.hover(Q, Xe, ht.id), Q._fullLayout._lasthover = ge, Q._fullLayout._hoversubplot = ht.id;
                }, ge.onmouseout = function(Xe) {
                  Q._dragging || y.unhover(Q, Xe);
                };
                var _e = {
                  element: ge,
                  gd: Q,
                  subplot: ht.id,
                  plotinfo: {
                    id: ht.id,
                    xaxis: ht.xaxis,
                    yaxis: ht.yaxis
                  },
                  xaxes: [ht.xaxis],
                  yaxes: [ht.yaxis]
                }, ce, ae, Se, ze, Ne, Ve, Oe, ur, ie;
                function $t(Xe, xe) {
                  return Math.sqrt(Xe * Xe + xe * xe);
                }
                function jt(Xe, xe) {
                  return $t(Xe - wt, xe - Et);
                }
                function ee(Xe, xe) {
                  return Math.atan2(Et - xe, Xe - wt);
                }
                function Bt(Xe, xe) {
                  return [Xe * Math.cos(xe), Xe * Math.sin(-xe)];
                }
                function Xt(Xe, xe) {
                  if (Xe === 0) return ht.pathSector(2 * Rt);
                  var me = Wt / Xe, Le = xe - me, qt = xe + me, De = Math.max(0, Math.min(Xe, X)), Je = De - Rt, dr = De + Rt;
                  return "M" + Bt(Je, Le) + "A" + [Je, Je] + " 0,0,0 " + Bt(Je, qt) + "L" + Bt(dr, qt) + "A" + [dr, dr] + " 0,0,1 " + Bt(dr, Le) + "Z";
                }
                function Zt(Xe, xe, me) {
                  if (Xe === 0) return ht.pathSector(2 * Rt);
                  var Le = Bt(Xe, xe), qt = Bt(Xe, me), De = Qt((Le[0] + qt[0]) / 2), Je = Qt((Le[1] + qt[1]) / 2), dr, qe;
                  if (De && Je) {
                    var we = Je / De, ue = -1 / we, Pe = Vt(Rt, we, De, Je);
                    dr = Vt(Wt, ue, Pe[0][0], Pe[0][1]), qe = Vt(Wt, ue, Pe[1][0], Pe[1][1]);
                  } else {
                    var Ue, Ye;
                    Je ? (Ue = Wt, Ye = Rt) : (Ue = Rt, Ye = Wt), dr = [[De - Ue, Je - Ye], [De + Ue, Je - Ye]], qe = [[De - Ue, Je + Ye], [De + Ue, Je + Ye]];
                  }
                  return "M" + dr.join("L") + "L" + qe.reverse().join("L") + "Z";
                }
                function ye() {
                  Se = null, ze = null, Ne = ht.pathSubplot(), Ve = !1;
                  var Xe = Q._fullLayout[ht.id];
                  Oe = P(Xe.bgcolor).getLuminance(), ur = o.makeZoombox(at, Oe, lt, pt, Ne), ur.attr("fill-rule", "evenodd"), ie = o.makeCorners(at, lt, pt), f(Q);
                }
                function Mt(Xe, xe) {
                  return xe = Math.max(Math.min(xe, X), ct), Xe < nt ? Xe = 0 : X - Xe < nt ? Xe = X : xe < nt ? xe = 0 : X - xe < nt && (xe = X), Math.abs(xe - Xe) > ut ? (Xe < xe ? (Se = Xe, ze = xe) : (Se = xe, ze = Xe), !0) : (Se = null, ze = null, !1);
                }
                function St(Xe, xe) {
                  Xe = Xe || Ne, xe = xe || "M0,0Z", ur.attr("d", Xe), ie.attr("d", xe), o.transitionZoombox(ur, ie, Ve, Oe), Ve = !0;
                  var me = {};
                  ir(me), Q.emit("plotly_relayouting", me);
                }
                function Lt(Xe, xe) {
                  Xe = Xe * kt, xe = xe * re;
                  var me = ce + Xe, Le = ae + xe, qt = jt(ce, ae), De = Math.min(jt(me, Le), X), Je = ee(ce, ae), dr, qe;
                  Mt(qt, De) && (dr = Ne + ht.pathSector(ze), Se && (dr += ht.pathSector(Se)), qe = Xt(Se, Je) + Xt(ze, Je)), St(dr, qe);
                }
                function te(Xe, xe, me, Le) {
                  var qt = L.findIntersectionXY(me, Le, me, [Xe - wt, Et - xe]);
                  return $t(qt[0], qt[1]);
                }
                function fe(Xe, xe) {
                  var me = ce + Xe, Le = ae + xe, qt = ee(ce, ae), De = ee(me, Le), Je = zt(qt, Gt), dr = zt(De, Gt), qe = te(ce, ae, Je[0], Je[1]), we = Math.min(te(me, Le, dr[0], dr[1]), X), ue, Pe;
                  Mt(qe, we) && (ue = Ne + ht.pathSector(ze), Se && (ue += ht.pathSector(Se)), Pe = [Zt(Se, Je[0], Je[1]), Zt(ze, Je[0], Je[1])].join(" ")), St(ue, Pe);
                }
                function Me() {
                  if (o.removeZoombox(Q), !(Se === null || ze === null)) {
                    var Xe = {};
                    ir(Xe), o.showDoubleClickNotifier(Q), n.call("_guiRelayout", Q, Xe);
                  }
                }
                function ir(Xe) {
                  var xe = Jt._rl, me = (xe[1] - xe[0]) / (1 - ct / X) / X, Le = [xe[0] + (Se - ct) * me, xe[0] + (ze - ct) * me];
                  Xe[ht.id + ".radialaxis.range"] = Le;
                }
                function mr(Xe, xe) {
                  var me = Q._fullLayout.clickmode;
                  if (o.removeZoombox(Q), Xe === 2) {
                    var Le = {};
                    for (var qt in ht.viewInitial)
                      Le[ht.id + "." + qt] = ht.viewInitial[qt];
                    Q.emit("plotly_doubleclick", null), n.call("_guiRelayout", Q, Le);
                  }
                  me.indexOf("select") > -1 && Xe === 1 && v(xe, Q, [ht.xaxis], [ht.yaxis], ht.id, _e), me.indexOf("event") > -1 && g.click(Q, xe, ht.id);
                }
                _e.prepFn = function(Xe, xe, me) {
                  var Le = Q._fullLayout.dragmode, qt = ge.getBoundingClientRect();
                  Q._fullLayout._calcInverseTransform(Q);
                  var De = Q._fullLayout._invTransform;
                  kt = Q._fullLayout._invScaleX, re = Q._fullLayout._invScaleY;
                  var Je = s.apply3DTransform(De)(xe - qt.left, me - qt.top);
                  if (ce = Je[0], ae = Je[1], Gt) {
                    var dr = L.findPolygonOffset(X, Ct[0], Ct[1], Gt);
                    ce += wt + dr[0], ae += Et + dr[1];
                  }
                  switch (Le) {
                    case "zoom":
                      _e.clickFn = mr, et || (Gt ? _e.moveFn = fe : _e.moveFn = Lt, _e.doneFn = Me, ye());
                      break;
                    case "select":
                    case "lasso":
                      c(Xe, xe, me, _e, Le);
                      break;
                  }
                }, y.init(_e);
              }, F.updateRadialDrag = function(vt, ht, et) {
                var Q = this, j = Q.gd, at = Q.layers, ut = Q.radius, nt = Q.innerRadius, X = Q.cx, ct = Q.cy, lt = Q.radialAxis, pt = m.radialDragBoxSize, wt = pt / 2;
                if (!lt.visible) return;
                var Et = V(Q.radialAxisAngle), Ct = lt._rl, Gt = Ct[0], Jt = Ct[1], Qt = Ct[et], Vt = 0.75 * (Ct[1] - Ct[0]) / (1 - Q.getHole(ht)) / ut, zt, Rt, Wt;
                et ? (zt = X + (ut + wt) * Math.cos(Et), Rt = ct - (ut + wt) * Math.sin(Et), Wt = "radialdrag") : (zt = X + (nt - wt) * Math.cos(Et), Rt = ct - (nt - wt) * Math.sin(Et), Wt = "radialdrag-inner");
                var kt = o.makeRectDragger(at, Wt, "crosshair", -wt, -wt, pt, pt), re = {
                  element: kt,
                  gd: j
                };
                vt.dragmode === !1 && (re.dragmode = !1), st(b.select(kt), lt.visible && nt < ut, {
                  transform: A(zt, Rt)
                });
                var ge, _e, ce;
                function ae(Oe, ur) {
                  if (ge)
                    ge(Oe, ur);
                  else {
                    var ie = [Oe, -ur], $t = [Math.cos(Et), Math.sin(Et)], jt = Math.abs(s.dot(ie, $t) / Math.sqrt(s.dot(ie, ie)));
                    isNaN(jt) || (ge = jt < 0.5 ? Ne : Ve);
                  }
                  var ee = {};
                  Se(ee), j.emit("plotly_relayouting", ee);
                }
                function Se(Oe) {
                  _e !== null ? Oe[Q.id + ".radialaxis.angle"] = _e : ce !== null && (Oe[Q.id + ".radialaxis.range[" + et + "]"] = ce);
                }
                function ze() {
                  _e !== null ? n.call("_guiRelayout", j, Q.id + ".radialaxis.angle", _e) : ce !== null && n.call("_guiRelayout", j, Q.id + ".radialaxis.range[" + et + "]", ce);
                }
                function Ne(Oe, ur) {
                  if (et !== 0) {
                    var ie = zt + Oe, $t = Rt + ur;
                    _e = Math.atan2(ct - $t, ie - X), Q.vangles && (_e = rt(_e, Q.vangles)), _e = U(_e);
                    var jt = A(X, ct) + T(-_e);
                    at["radial-axis"].attr("transform", jt), at["radial-line"].select("line").attr("transform", jt);
                    var ee = Q.gd._fullLayout, Bt = ee[Q.id];
                    Q.updateRadialAxisTitle(ee, Bt, _e);
                  }
                }
                function Ve(Oe, ur) {
                  var ie = s.dot([Oe, -ur], [Math.cos(Et), Math.sin(Et)]);
                  if (ce = Qt - Vt * ie, Vt > 0 != (et ? ce > Gt : ce < Jt)) {
                    ce = null;
                    return;
                  }
                  var $t = j._fullLayout, jt = $t[Q.id];
                  lt.range[et] = ce, lt._rl[et] = ce, Q.updateRadialAxis($t, jt), Q.xaxis.setRange(), Q.xaxis.setScale(), Q.yaxis.setRange(), Q.yaxis.setScale();
                  var ee = !1;
                  for (var Bt in Q.traceHash) {
                    var Xt = Q.traceHash[Bt], Zt = s.filterVisible(Xt), ye = Xt[0][0].trace._module;
                    ye.plot(j, Q, Zt, jt), n.traceIs(Bt, "gl") && Zt.length && (ee = !0);
                  }
                  ee && (S(j), M(j));
                }
                re.prepFn = function() {
                  ge = null, _e = null, ce = null, re.moveFn = ae, re.doneFn = ze, f(j);
                }, re.clampFn = function(Oe, ur) {
                  return Math.sqrt(Oe * Oe + ur * ur) < m.MINDRAG && (Oe = 0, ur = 0), [Oe, ur];
                }, y.init(re);
              }, F.updateAngularDrag = function(vt) {
                var ht = this, et = ht.gd, Q = ht.layers, j = ht.radius, at = ht.angularAxis, ut = ht.cx, nt = ht.cy, X = ht.cxx, ct = ht.cyy, lt = m.angularDragBoxSize, pt = o.makeDragger(Q, "path", "angulardrag", vt.dragmode === !1 ? "none" : "move"), wt = {
                  element: pt,
                  gd: et
                };
                vt.dragmode === !1 ? wt.dragmode = !1 : b.select(pt).attr("d", ht.pathAnnulus(j, j + lt)).attr("transform", A(ut, nt)).call(_, "move");
                function Et(ce, ae) {
                  return Math.atan2(ct + lt - ae, ce - X - lt);
                }
                var Ct = Q.frontplot.select(".scatterlayer").selectAll(".trace"), Gt = Ct.selectAll(".point"), Jt = Ct.selectAll(".textpoint"), Qt, Vt, zt, Rt, Wt, kt;
                function re(ce, ae) {
                  var Se = ht.gd._fullLayout, ze = Se[ht.id], Ne = Qt + ce * vt._invScaleX, Ve = Vt + ae * vt._invScaleY, Oe = Et(Ne, Ve), ur = U(Oe - kt);
                  if (Rt = zt + ur, Q.frontplot.attr("transform", A(ht.xOffset2, ht.yOffset2) + T([-ur, X, ct])), ht.vangles) {
                    Wt = ht.radialAxisAngle + ur;
                    var ie = A(ut, nt) + T(-ur), $t = A(ut, nt) + T(-Wt);
                    Q.bg.attr("transform", ie), Q["radial-grid"].attr("transform", ie), Q["radial-axis"].attr("transform", $t), Q["radial-line"].select("line").attr("transform", $t), ht.updateRadialAxisTitle(Se, ze, Wt);
                  } else
                    ht.clipPaths.forTraces.select("path").attr("transform", A(X, ct) + T(ur));
                  Gt.each(function() {
                    var Mt = b.select(this), St = u.getTranslate(Mt);
                    Mt.attr("transform", A(St.x, St.y) + T([ur]));
                  }), Jt.each(function() {
                    var Mt = b.select(this), St = Mt.select("text"), Lt = u.getTranslate(Mt);
                    Mt.attr("transform", T([ur, St.attr("x"), St.attr("y")]) + A(Lt.x, Lt.y));
                  }), at.rotation = s.modHalf(Rt, 360), ht.updateAngularAxis(Se, ze), ht._hasClipOnAxisFalse && !s.isFullCircle(ht.sectorInRad) && Ct.call(u.hideOutsideRangePoints, ht);
                  var jt = !1;
                  for (var ee in ht.traceHash)
                    if (n.traceIs(ee, "gl")) {
                      var Bt = ht.traceHash[ee], Xt = s.filterVisible(Bt), Zt = Bt[0][0].trace._module;
                      Zt.plot(et, ht, Xt, ze), Xt.length && (jt = !0);
                    }
                  jt && (S(et), M(et));
                  var ye = {};
                  ge(ye), et.emit("plotly_relayouting", ye);
                }
                function ge(ce) {
                  ce[ht.id + ".angularaxis.rotation"] = Rt, ht.vangles && (ce[ht.id + ".radialaxis.angle"] = Wt);
                }
                function _e() {
                  Jt.select("text").attr("transform", null);
                  var ce = {};
                  ge(ce), n.call("_guiRelayout", et, ce);
                }
                wt.prepFn = function(ce, ae, Se) {
                  var ze = vt[ht.id];
                  zt = ze.angularaxis.rotation;
                  var Ne = pt.getBoundingClientRect();
                  Qt = ae - Ne.left, Vt = Se - Ne.top, et._fullLayout._calcInverseTransform(et);
                  var Ve = s.apply3DTransform(vt._invTransform)(Qt, Vt);
                  Qt = Ve[0], Vt = Ve[1], kt = Et(Qt, Vt), wt.moveFn = re, wt.doneFn = _e, f(et);
                }, ht.vangles && !s.isFullCircle(ht.sectorInRad) && (wt.prepFn = s.noop, _(b.select(pt), null)), y.init(wt);
              }, F.isPtInside = function(vt) {
                if (this.isSmith) return !0;
                var ht = this.sectorInRad, et = this.vangles, Q = this.angularAxis.c2g(vt.theta), j = this.radialAxis, at = j.c2l(vt.r), ut = j._rl, nt = et ? L.isPtInsidePolygon : s.isPtInsideSector;
                return nt(at, Q, ut, ht, et);
              }, F.pathArc = function(vt) {
                var ht = this.sectorInRad, et = this.vangles, Q = et ? L.pathPolygon : s.pathArc;
                return Q(vt, ht[0], ht[1], et);
              }, F.pathSector = function(vt) {
                var ht = this.sectorInRad, et = this.vangles, Q = et ? L.pathPolygon : s.pathSector;
                return Q(vt, ht[0], ht[1], et);
              }, F.pathAnnulus = function(vt, ht) {
                var et = this.sectorInRad, Q = this.vangles, j = Q ? L.pathPolygonAnnulus : s.pathAnnulus;
                return j(vt, ht, et[0], et[1], Q);
              }, F.pathSubplot = function() {
                var vt = this.innerRadius, ht = this.radius;
                return vt ? this.pathAnnulus(vt, ht) : this.pathSector(ht);
              }, F.fillViewInitialKey = function(vt, ht) {
                vt in this.viewInitial || (this.viewInitial[vt] = ht);
              };
              function G(vt) {
                var ht = vt.ticks + String(vt.ticklen) + String(vt.showticklabels);
                return "side" in vt && (ht += vt.side), ht;
              }
              function q(vt) {
                var ht = vt[0], et = vt[1], Q = et - ht, j = B(ht, 360), at = j + Q, ut = Math.cos(V(j)), nt = Math.sin(V(j)), X = Math.cos(V(at)), ct = Math.sin(V(at)), lt, pt, wt, Et;
                return j <= 90 && at >= 90 || j > 90 && at >= 450 ? Et = 1 : nt <= 0 && ct <= 0 ? Et = 0 : Et = Math.max(nt, ct), j <= 180 && at >= 180 || j > 180 && at >= 540 ? lt = -1 : ut >= 0 && X >= 0 ? lt = 0 : lt = Math.min(ut, X), j <= 270 && at >= 270 || j > 270 && at >= 630 ? pt = -1 : nt >= 0 && ct >= 0 ? pt = 0 : pt = Math.min(nt, ct), at >= 360 ? wt = 1 : ut <= 0 && X <= 0 ? wt = 0 : wt = Math.max(ut, X), [lt, pt, wt, Et];
              }
              function rt(vt, ht) {
                var et = function(j) {
                  return s.angleDist(vt, j);
                }, Q = s.findIndexOfMin(ht, et);
                return ht[Q];
              }
              function st(vt, ht, et) {
                return ht ? (vt.attr("display", null), vt.attr(et)) : vt && vt.attr("display", "none"), vt;
              }
            }
          ),
          /***/
          51937: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(19091), n = b.deg2rad, s = b.rad2deg;
              Y.exports = function(r, i, a) {
                switch (P(r, a), r._id) {
                  case "x":
                  case "radialaxis":
                    T(r, i);
                    break;
                  case "angularaxis":
                    u(r, i);
                    break;
                }
              };
              function T(t, r) {
                var i = r._subplot;
                t.setGeometry = function() {
                  var a = t._rl[0], l = t._rl[1], o = i.innerRadius, y = (i.radius - o) / (l - a), g = o / y, x = a > l ? function(c) {
                    return c <= 0;
                  } : function(c) {
                    return c >= 0;
                  };
                  t.c2g = function(c) {
                    var v = t.c2l(c) - a;
                    return (x(v) ? v : 0) + g;
                  }, t.g2c = function(c) {
                    return t.l2c(c + a - g);
                  }, t.g2p = function(c) {
                    return c * y;
                  }, t.c2p = function(c) {
                    return t.g2p(t.c2g(c));
                  };
                };
              }
              function A(t, r) {
                return r === "degrees" ? n(t) : t;
              }
              function p(t, r) {
                return r === "degrees" ? s(t) : t;
              }
              function u(t, r) {
                var i = t.type;
                if (i === "linear") {
                  var a = t.d2c, l = t.c2d;
                  t.d2c = function(o, y) {
                    return A(a(o), y);
                  }, t.c2d = function(o, y) {
                    return l(p(o, y));
                  };
                }
                t.makeCalcdata = function(o, y) {
                  var g = o[y], x = o._length, c, v, f = function(m) {
                    return t.d2c(m, o.thetaunit);
                  };
                  if (g)
                    for (c = new Array(x), v = 0; v < x; v++)
                      c[v] = f(g[v]);
                  else {
                    var _ = y + "0", S = "d" + y, M = _ in o ? f(o[_]) : 0, C = o[S] ? f(o[S]) : (t.period || 2 * Math.PI) / x;
                    for (c = new Array(x), v = 0; v < x; v++)
                      c[v] = M + v * C;
                  }
                  return c;
                }, t.setGeometry = function() {
                  var o = r.sector, y = o.map(n), g = {
                    clockwise: -1,
                    counterclockwise: 1
                  }[t.direction], x = n(t.rotation), c = function(L) {
                    return g * L + x;
                  }, v = function(L) {
                    return (L - x) / g;
                  }, f, _, S, M;
                  switch (i) {
                    case "linear":
                      _ = f = b.identity, M = n, S = s, t.range = b.isFullCircle(y) ? [o[0], o[0] + 360] : y.map(v).map(s);
                      break;
                    case "category":
                      var C = t._categories.length, m = t.period ? Math.max(t.period, C) : C;
                      m === 0 && (m = 1), _ = M = function(L) {
                        return L * 2 * Math.PI / m;
                      }, f = S = function(L) {
                        return L * m / Math.PI / 2;
                      }, t.range = [0, m];
                      break;
                  }
                  t.c2g = function(L) {
                    return c(_(L));
                  }, t.g2c = function(L) {
                    return f(v(L));
                  }, t.t2g = function(L) {
                    return c(M(L));
                  }, t.g2t = function(L) {
                    return S(v(L));
                  };
                };
              }
            }
          ),
          /***/
          70951: (
            /***/
            function(Y) {
              Y.exports = {
                attr: "subplot",
                name: "smith",
                axisNames: [
                  "realaxis",
                  "imaginaryaxis"
                  // imaginary axis should be second here so that the `tickvals` defaults could be inherited from realaxis
                ],
                axisName2dataArray: {
                  imaginaryaxis: "imag",
                  realaxis: "real"
                }
              };
            }
          ),
          /***/
          52007: (
            /***/
            function(Y) {
              function K(T) {
                return T < 0 ? -1 : T > 0 ? 1 : 0;
              }
              function e(T) {
                var A = T[0], p = T[1];
                if (!isFinite(A) || !isFinite(p)) return [1, 0];
                var u = (A + 1) * (A + 1) + p * p;
                return [(A * A + p * p - 1) / u, 2 * p / u];
              }
              function b(T, A) {
                var p = A[0], u = A[1];
                return [p * T.radius + T.cx, -u * T.radius + T.cy];
              }
              function P(T, A) {
                return A * T.radius;
              }
              function n(T, A, p, u) {
                var t = b(T, e([p, A])), r = t[0], i = t[1], a = b(T, e([u, A])), l = a[0], o = a[1];
                if (A === 0)
                  return ["M" + r + "," + i, "L" + l + "," + o].join(" ");
                var y = P(T, 1 / Math.abs(A));
                return ["M" + r + "," + i, "A" + y + "," + y + " 0 0," + (A < 0 ? 1 : 0) + " " + l + "," + o].join(" ");
              }
              function s(T, A, p, u) {
                var t = P(T, 1 / (A + 1)), r = b(T, e([A, p])), i = r[0], a = r[1], l = b(T, e([A, u])), o = l[0], y = l[1];
                if (K(p) !== K(u)) {
                  var g = b(T, e([A, 0])), x = g[0], c = g[1];
                  return ["M" + i + "," + a, "A" + t + "," + t + " 0 0," + (0 < p ? 0 : 1) + " " + x + "," + c, "A" + t + "," + t + " 0 0," + (u < 0 ? 0 : 1) + o + "," + y].join(" ");
                }
                return ["M" + i + "," + a, "A" + t + "," + t + " 0 0," + (u < p ? 0 : 1) + " " + o + "," + y].join(" ");
              }
              Y.exports = {
                smith: e,
                reactanceArc: n,
                resistanceArc: s,
                smithTransform: b
              };
            }
          ),
          /***/
          50358: (
            /***/
            function(Y, K, e) {
              var b = e(4173).fX, P = e(34809).counterRegex, n = e(35785), s = e(70951), T = s.attr, A = s.name, p = P(A), u = {};
              u[T] = {
                valType: "subplotid",
                dflt: A,
                editType: "calc"
              };
              function t(i) {
                for (var a = i._fullLayout, l = i.calcdata, o = a._subplots[A], y = 0; y < o.length; y++) {
                  var g = o[y], x = b(l, A, g), c = a[g]._subplot;
                  c || (c = n(i, g, !0), a[g]._subplot = c), c.plot(x, a, i._promises);
                }
              }
              function r(i, a, l, o) {
                for (var y = o._subplots[A] || [], g = 0; g < y.length; g++) {
                  var x = y[g], c = o[x]._subplot;
                  if (!a[x] && c) {
                    c.framework.remove();
                    for (var v in c.clipPaths)
                      c.clipPaths[v].remove();
                  }
                }
              }
              Y.exports = {
                attr: T,
                name: A,
                idRoot: A,
                idRegex: p,
                attrRegex: p,
                attributes: u,
                layoutAttributes: e(93288),
                supplyLayoutDefaults: e(31359),
                plot: t,
                clean: r,
                toSVG: e(37703).toSVG
              };
            }
          ),
          /***/
          93288: (
            /***/
            function(Y, K, e) {
              var b = e(10229), P = e(25829), n = e(13792).u, s = e(34809).extendFlat, T = e(13582).overrideAll, A = T({
                color: P.color,
                showline: s({}, P.showline, {
                  dflt: !0
                }),
                linecolor: P.linecolor,
                linewidth: P.linewidth,
                showgrid: s({}, P.showgrid, {
                  dflt: !0
                }),
                gridcolor: P.gridcolor,
                gridwidth: P.gridwidth,
                griddash: P.griddash
              }, "plot", "from-root"), p = T({
                ticklen: P.ticklen,
                tickwidth: s({}, P.tickwidth, {
                  dflt: 2
                }),
                tickcolor: P.tickcolor,
                showticklabels: P.showticklabels,
                labelalias: P.labelalias,
                showtickprefix: P.showtickprefix,
                tickprefix: P.tickprefix,
                showticksuffix: P.showticksuffix,
                ticksuffix: P.ticksuffix,
                tickfont: P.tickfont,
                tickformat: P.tickformat,
                hoverformat: P.hoverformat,
                layer: P.layer
              }, "plot", "from-root"), u = s({
                visible: s({}, P.visible, {
                  dflt: !0
                }),
                tickvals: {
                  dflt: [0.2, 0.5, 1, 2, 5],
                  valType: "data_array",
                  editType: "plot"
                },
                tickangle: s({}, P.tickangle, {
                  dflt: 90
                }),
                ticks: {
                  valType: "enumerated",
                  values: ["top", "bottom", ""],
                  editType: "ticks"
                },
                side: {
                  valType: "enumerated",
                  values: ["top", "bottom"],
                  dflt: "top",
                  editType: "plot"
                },
                editType: "calc"
              }, A, p), t = s({
                visible: s({}, P.visible, {
                  dflt: !0
                }),
                tickvals: {
                  valType: "data_array",
                  editType: "plot"
                },
                ticks: P.ticks,
                editType: "calc"
              }, A, p);
              Y.exports = {
                domain: n({
                  name: "smith",
                  editType: "plot"
                }),
                bgcolor: {
                  valType: "color",
                  editType: "plot",
                  dflt: b.background
                },
                realaxis: u,
                imaginaryaxis: t,
                editType: "calc"
              };
            }
          ),
          /***/
          31359: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(78766), n = e(78032), s = e(4448), T = e(4173).KO, A = e(54616), p = e(12036), u = e(97405), t = e(19091), r = e(93288), i = e(70951), a = i.axisNames, l = y(function(g) {
                return b.isTypedArray(g) && (g = Array.from(g)), g.slice().reverse().map(function(x) {
                  return -x;
                }).concat([0]).concat(g);
              }, String);
              function o(g, x, c, v) {
                var f = c("bgcolor");
                v.bgColor = P.combine(f, v.paper_bgcolor);
                var _ = T(v.fullData, i.name, v.id), S = v.layoutOut, M;
                function C(F, G) {
                  return c(M + "." + F, G);
                }
                for (var m = 0; m < a.length; m++) {
                  M = a[m], b.isPlainObject(g[M]) || (g[M] = {});
                  var L = g[M], d = n.newContainer(x, M);
                  d._id = d._name = M, d._attr = v.id + "." + M, d._traceIndices = _.map(function(F) {
                    return F._expandedIndex;
                  });
                  var h = C("visible");
                  if (d.type = "linear", t(d, S), A(L, d, C, d.type), h) {
                    var E = M === "realaxis";
                    if (E && C("side"), E)
                      C("tickvals");
                    else {
                      var w = l(x.realaxis.tickvals || r.realaxis.tickvals.dflt);
                      C("tickvals", w);
                    }
                    b.isTypedArray(d.tickvals) && (d.tickvals = Array.from(d.tickvals));
                    var z, O, B, V, U = v.font || {};
                    h && (z = C("color"), O = z === L.color ? z : U.color, B = U.size, V = U.family), p(L, d, C, d.type, {
                      noAutotickangles: !0,
                      noTicklabelshift: !0,
                      noTicklabelstandoff: !0,
                      noTicklabelstep: !0,
                      noAng: !E,
                      noExp: !0,
                      font: {
                        color: O,
                        size: B,
                        family: V
                      }
                    }), b.coerce2(g, x, r, M + ".ticklen"), b.coerce2(g, x, r, M + ".tickwidth"), b.coerce2(g, x, r, M + ".tickcolor", x.color);
                    var H = C("ticks");
                    H || (delete x[M].ticklen, delete x[M].tickwidth, delete x[M].tickcolor), u(L, d, C, {
                      dfltColor: z,
                      bgColor: v.bgColor,
                      // default grid color is darker here (60%, vs cartesian default ~91%)
                      // because the grid is not square so the eye needs heavier cues to follow
                      blend: 60,
                      showLine: !0,
                      showGrid: !0,
                      noZeroLine: !0,
                      attributes: r[M]
                    }), C("layer");
                  }
                  C("hoverformat"), delete d.type, d._input = L;
                }
              }
              Y.exports = function(x, c, v) {
                s(x, c, v, {
                  noUirevision: !0,
                  type: i.name,
                  attributes: r,
                  handleDefaults: o,
                  font: c.font,
                  paper_bgcolor: c.paper_bgcolor,
                  fullData: v,
                  layoutOut: c
                });
              };
              function y(g, x) {
                var c = {};
                return function(v) {
                  var f = x ? x(v) : v;
                  if (f in c)
                    return c[f];
                  var _ = g(v);
                  return c[f] = _, _;
                };
              }
            }
          ),
          /***/
          4448: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(78032), n = e(13792).N;
              Y.exports = function(T, A, p, u) {
                var t = u.type, r = u.attributes, i = u.handleDefaults, a = u.partition || "x", l = A._subplots[t], o = l.length, y = o && l[0].replace(/\d+$/, ""), g, x;
                function c(S, M) {
                  return b.coerce(g, x, r, S, M);
                }
                for (var v = 0; v < o; v++) {
                  var f = l[v];
                  T[f] ? g = T[f] : g = T[f] = {}, x = P.newContainer(A, f, y), u.noUirevision || c("uirevision", A.uirevision);
                  var _ = {};
                  _[a] = [v / o, (v + 1) / o], n(x, A, c, _), u.id = f, i(g, x, c, u);
                }
              };
            }
          ),
          /***/
          3208: (
            /***/
            function(Y, K, e) {
              var b = e(87296);
              b.FORMAT_LINK, b.DATE_FORMAT_LINK;
              function P(n) {
                var s = n.description ? " " + n.description : "", T = n.keys || [];
                if (T.length > 0) {
                  for (var A = [], p = 0; p < T.length; p++)
                    A[p] = "`" + T[p] + "`";
                  s = s + "Finally, the template string has access to ", T.length === 1 ? s = s + "variable " + A[0] : s = s + "variables " + A.slice(0, -1).join(", ") + " and " + A.slice(-1) + ".";
                }
                return s;
              }
              K.rb = function(n, s) {
                n = n || {}, s = s || {}, P(s);
                var T = {
                  valType: "string",
                  dflt: "",
                  editType: n.editType || "none"
                };
                return n.arrayOk !== !1 && (T.arrayOk = !0), T;
              }, K.ay = function(n, s) {
                n = n || {}, s = s || {}, P(s);
                var T = {
                  valType: "string",
                  dflt: "",
                  editType: n.editType || "calc"
                };
                return n.arrayOk !== !1 && (T.arrayOk = !0), T;
              }, K.LF = function(n, s) {
                n = n || {}, s = s || {}, n.newshape, P(s);
                var T = {
                  valType: "string",
                  dflt: "",
                  editType: n.editType || "arraydraw"
                };
                return T;
              };
            }
          ),
          /***/
          7638: (
            /***/
            function(Y, K, e) {
              var b = e(83637), P = e(4173).fX, n = e(34809).counterRegex, s = "ternary";
              K.name = s;
              var T = K.attr = "subplot";
              K.idRoot = s, K.idRegex = K.attrRegex = n(s);
              var A = K.attributes = {};
              A[T] = {
                valType: "subplotid",
                dflt: "ternary",
                editType: "calc"
              }, K.layoutAttributes = e(77416), K.supplyLayoutDefaults = e(25247), K.plot = function(u) {
                for (var t = u._fullLayout, r = u.calcdata, i = t._subplots[s], a = 0; a < i.length; a++) {
                  var l = i[a], o = P(r, s, l), y = t[l]._subplot;
                  y || (y = new b({
                    id: l,
                    graphDiv: u,
                    container: t._ternarylayer.node()
                  }, t), t[l]._subplot = y), y.plot(o, t, u._promises);
                }
              }, K.clean = function(p, u, t, r) {
                for (var i = r._subplots[s] || [], a = 0; a < i.length; a++) {
                  var l = i[a], o = r[l]._subplot;
                  !u[l] && o && (o.plotContainer.remove(), o.clipDef.remove(), o.clipDefRelative.remove(), o.layers["a-title"].remove(), o.layers["b-title"].remove(), o.layers["c-title"].remove());
                }
              }, K.updateFx = function(p) {
                var u = p._fullLayout;
                u._ternarylayer.selectAll("g.toplevel").style("cursor", u.dragmode === "pan" ? "move" : "crosshair");
              };
            }
          ),
          /***/
          77416: (
            /***/
            function(Y, K, e) {
              var b = e(10229), P = e(13792).u, n = e(25829), s = e(13582).overrideAll, T = e(93049).extendFlat, A = {
                title: {
                  text: n.title.text,
                  font: n.title.font
                  // TODO does standoff here make sense?
                },
                color: n.color,
                // ticks
                tickmode: n.minor.tickmode,
                nticks: T({}, n.nticks, {
                  dflt: 6,
                  min: 1
                }),
                tick0: n.tick0,
                dtick: n.dtick,
                tickvals: n.tickvals,
                ticktext: n.ticktext,
                ticks: n.ticks,
                ticklen: n.ticklen,
                tickwidth: n.tickwidth,
                tickcolor: n.tickcolor,
                ticklabelstep: n.ticklabelstep,
                showticklabels: n.showticklabels,
                labelalias: n.labelalias,
                showtickprefix: n.showtickprefix,
                tickprefix: n.tickprefix,
                showticksuffix: n.showticksuffix,
                ticksuffix: n.ticksuffix,
                showexponent: n.showexponent,
                exponentformat: n.exponentformat,
                minexponent: n.minexponent,
                separatethousands: n.separatethousands,
                tickfont: n.tickfont,
                tickangle: n.tickangle,
                tickformat: n.tickformat,
                tickformatstops: n.tickformatstops,
                hoverformat: n.hoverformat,
                // lines and grids
                showline: T({}, n.showline, {
                  dflt: !0
                }),
                linecolor: n.linecolor,
                linewidth: n.linewidth,
                showgrid: T({}, n.showgrid, {
                  dflt: !0
                }),
                gridcolor: n.gridcolor,
                gridwidth: n.gridwidth,
                griddash: n.griddash,
                layer: n.layer,
                // range
                min: {
                  valType: "number",
                  dflt: 0,
                  min: 0
                },
                _deprecated: {
                  title: n._deprecated.title,
                  titlefont: n._deprecated.titlefont
                }
              }, p = Y.exports = s({
                domain: P({
                  name: "ternary"
                }),
                bgcolor: {
                  valType: "color",
                  dflt: b.background
                },
                sum: {
                  valType: "number",
                  dflt: 1,
                  min: 0
                },
                aaxis: A,
                baxis: A,
                caxis: A
              }, "plot", "from-root");
              p.uirevision = {
                valType: "any",
                editType: "none"
              }, p.aaxis.uirevision = p.baxis.uirevision = p.caxis.uirevision = {
                valType: "any",
                editType: "none"
              };
            }
          ),
          /***/
          25247: (
            /***/
            function(Y, K, e) {
              var b = e(78766), P = e(78032), n = e(34809), s = e(4448), T = e(12036), A = e(54616), p = e(87433), u = e(22777), t = e(97405), r = e(77416), i = ["aaxis", "baxis", "caxis"];
              Y.exports = function(y, g, x) {
                s(y, g, x, {
                  type: "ternary",
                  attributes: r,
                  handleDefaults: a,
                  font: g.font,
                  paper_bgcolor: g.paper_bgcolor
                });
              };
              function a(o, y, g, x) {
                var c = g("bgcolor"), v = g("sum");
                x.bgColor = b.combine(c, x.paper_bgcolor);
                for (var f, _, S, M = 0; M < i.length; M++)
                  f = i[M], _ = o[f] || {}, S = P.newContainer(y, f), S._name = f, l(_, S, x, y);
                var C = y.aaxis, m = y.baxis, L = y.caxis;
                C.min + m.min + L.min >= v && (C.min = 0, m.min = 0, L.min = 0, o.aaxis && delete o.aaxis.min, o.baxis && delete o.baxis.min, o.caxis && delete o.caxis.min);
              }
              function l(o, y, g, x) {
                var c = r[y._name];
                function v(d, h) {
                  return n.coerce(o, y, c, d, h);
                }
                v("uirevision", x.uirevision), y.type = "linear";
                var f = v("color"), _ = f !== c.color.dflt ? f : g.font.color, S = y._name, M = S.charAt(0).toUpperCase(), C = "Component " + M, m = v("title.text", C);
                y._hovertitle = m === C ? m : M, n.coerceFont(v, "title.font", g.font, {
                  overrideDflt: {
                    size: n.bigFont(g.font.size),
                    color: _
                  }
                }), v("min"), u(o, y, v, "linear"), A(o, y, v, "linear"), T(o, y, v, "linear", {
                  noAutotickangles: !0,
                  noTicklabelshift: !0,
                  noTicklabelstandoff: !0
                }), p(o, y, v, {
                  outerTicks: !0
                });
                var L = v("showticklabels");
                L && (n.coerceFont(v, "tickfont", g.font, {
                  overrideDflt: {
                    color: _
                  }
                }), v("tickangle"), v("tickformat")), t(o, y, v, {
                  dfltColor: f,
                  bgColor: g.bgColor,
                  // default grid color is darker here (60%, vs cartesian default ~91%)
                  // because the grid is not square so the eye needs heavier cues to follow
                  blend: 60,
                  showLine: !0,
                  showGrid: !0,
                  noZeroLine: !0,
                  attributes: c
                }), v("hoverformat"), v("layer");
              }
            }
          ),
          /***/
          83637: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(65657), n = e(33626), s = e(34809), T = s.strTranslate, A = s._, p = e(78766), u = e(62203), t = e(19091), r = e(93049).extendFlat, i = e(44122), a = e(29714), l = e(14751), o = e(32141), y = e(70414), g = y.freeMode, x = y.rectMode, c = e(17240), v = e(44844).prepSelect, f = e(44844).selectOnClick, _ = e(44844).clearOutline, S = e(44844).clearSelectionsCache, M = e(54826);
              function C(U, H) {
                this.id = U.id, this.graphDiv = U.graphDiv, this.init(H), this.makeFramework(H), this.updateFx(H), this.aTickLayout = null, this.bTickLayout = null, this.cTickLayout = null;
              }
              Y.exports = C;
              var m = C.prototype;
              m.init = function(U) {
                this.container = U._ternarylayer, this.defs = U._defs, this.layoutId = U._uid, this.traceHash = {}, this.layers = {};
              }, m.plot = function(U, H) {
                var F = this, G = H[F.id], q = H._size;
                F._hasClipOnAxisFalse = !1;
                for (var rt = 0; rt < U.length; rt++) {
                  var st = U[rt][0].trace;
                  if (st.cliponaxis === !1) {
                    F._hasClipOnAxisFalse = !0;
                    break;
                  }
                }
                F.updateLayers(G), F.adjustLayout(G, q), i.generalUpdatePerTraceModule(F.graphDiv, F, U, G), F.layers.plotbg.select("path").call(p.fill, G.bgcolor);
              }, m.makeFramework = function(U) {
                var H = this, F = H.graphDiv, G = U[H.id], q = H.clipId = "clip" + H.layoutId + H.id, rt = H.clipIdRelative = "clip-relative" + H.layoutId + H.id;
                H.clipDef = s.ensureSingleById(U._clips, "clipPath", q, function(st) {
                  st.append("path").attr("d", "M0,0Z");
                }), H.clipDefRelative = s.ensureSingleById(U._clips, "clipPath", rt, function(st) {
                  st.append("path").attr("d", "M0,0Z");
                }), H.plotContainer = s.ensureSingle(H.container, "g", H.id), H.updateLayers(G), u.setClipUrl(H.layers.backplot, q, F), u.setClipUrl(H.layers.grids, q, F);
              }, m.updateFx = function(U) {
                U._ternarylayer.selectAll("g.toplevel").style("cursor", U.dragmode === "pan" ? "move" : "crosshair");
              }, m.updateLayers = function(U) {
                var H = this, F = H.layers, G = ["draglayer", "plotbg", "backplot", "grids"];
                U.aaxis.layer === "below traces" && G.push("aaxis", "aline"), U.baxis.layer === "below traces" && G.push("baxis", "bline"), U.caxis.layer === "below traces" && G.push("caxis", "cline"), G.push("frontplot"), U.aaxis.layer === "above traces" && G.push("aaxis", "aline"), U.baxis.layer === "above traces" && G.push("baxis", "bline"), U.caxis.layer === "above traces" && G.push("caxis", "cline");
                var q = H.plotContainer.selectAll("g.toplevel").data(G, String), rt = ["agrid", "bgrid", "cgrid"];
                q.enter().append("g").attr("class", function(st) {
                  return "toplevel " + st;
                }).each(function(st) {
                  var vt = b.select(this);
                  F[st] = vt, st === "frontplot" ? vt.append("g").classed("scatterlayer", !0) : st === "backplot" ? vt.append("g").classed("maplayer", !0) : st === "plotbg" ? vt.append("path").attr("d", "M0,0Z") : st === "aline" || st === "bline" || st === "cline" ? vt.append("path") : st === "grids" && rt.forEach(function(ht) {
                    F[ht] = vt.append("g").classed("grid " + ht, !0);
                  });
                }), q.order();
              };
              var L = Math.sqrt(4 / 3);
              m.adjustLayout = function(U, H) {
                var F = this, G = U.domain, q = (G.x[0] + G.x[1]) / 2, rt = (G.y[0] + G.y[1]) / 2, st = G.x[1] - G.x[0], vt = G.y[1] - G.y[0], ht = st * H.w, et = vt * H.h, Q = U.sum, j = U.aaxis.min, at = U.baxis.min, ut = U.caxis.min, nt, X, ct, lt, pt, wt;
                ht > L * et ? (lt = et, ct = lt * L) : (ct = ht, lt = ct / L), pt = st * ct / ht, wt = vt * lt / et, nt = H.l + H.w * q - ct / 2, X = H.t + H.h * (1 - rt) - lt / 2, F.x0 = nt, F.y0 = X, F.w = ct, F.h = lt, F.sum = Q, F.xaxis = {
                  type: "linear",
                  range: [j + 2 * ut - Q, Q - j - 2 * at],
                  domain: [q - pt / 2, q + pt / 2],
                  _id: "x"
                }, t(F.xaxis, F.graphDiv._fullLayout), F.xaxis.setScale(), F.xaxis.isPtWithinRange = function(re) {
                  return re.a >= F.aaxis.range[0] && re.a <= F.aaxis.range[1] && re.b >= F.baxis.range[1] && re.b <= F.baxis.range[0] && re.c >= F.caxis.range[1] && re.c <= F.caxis.range[0];
                }, F.yaxis = {
                  type: "linear",
                  range: [j, Q - at - ut],
                  domain: [rt - wt / 2, rt + wt / 2],
                  _id: "y"
                }, t(F.yaxis, F.graphDiv._fullLayout), F.yaxis.setScale(), F.yaxis.isPtWithinRange = function() {
                  return !0;
                };
                var Et = F.yaxis.domain[0], Ct = F.aaxis = r({}, U.aaxis, {
                  range: [j, Q - at - ut],
                  side: "left",
                  // tickangle = 'auto' means 0 anyway for a y axis, need to coerce to 0 here
                  // so we can shift by 30.
                  tickangle: (+U.aaxis.tickangle || 0) - 30,
                  domain: [Et, Et + wt * L],
                  anchor: "free",
                  position: 0,
                  _id: "y",
                  _length: ct
                });
                t(Ct, F.graphDiv._fullLayout), Ct.setScale();
                var Gt = F.baxis = r({}, U.baxis, {
                  range: [Q - j - ut, at],
                  side: "bottom",
                  domain: F.xaxis.domain,
                  anchor: "free",
                  position: 0,
                  _id: "x",
                  _length: ct
                });
                t(Gt, F.graphDiv._fullLayout), Gt.setScale();
                var Jt = F.caxis = r({}, U.caxis, {
                  range: [Q - j - at, ut],
                  side: "right",
                  tickangle: (+U.caxis.tickangle || 0) + 30,
                  domain: [Et, Et + wt * L],
                  anchor: "free",
                  position: 0,
                  _id: "y",
                  _length: ct
                });
                t(Jt, F.graphDiv._fullLayout), Jt.setScale();
                var Qt = "M" + nt + "," + (X + lt) + "h" + ct + "l-" + ct / 2 + ",-" + lt + "Z";
                F.clipDef.select("path").attr("d", Qt), F.layers.plotbg.select("path").attr("d", Qt);
                var Vt = "M0," + lt + "h" + ct + "l-" + ct / 2 + ",-" + lt + "Z";
                F.clipDefRelative.select("path").attr("d", Vt);
                var zt = T(nt, X);
                F.plotContainer.selectAll(".scatterlayer,.maplayer").attr("transform", zt), F.clipDefRelative.select("path").attr("transform", null);
                var Rt = T(nt - Gt._offset, X + lt);
                F.layers.baxis.attr("transform", Rt), F.layers.bgrid.attr("transform", Rt);
                var Wt = T(nt + ct / 2, X) + "rotate(30)" + T(0, -Ct._offset);
                F.layers.aaxis.attr("transform", Wt), F.layers.agrid.attr("transform", Wt);
                var kt = T(nt + ct / 2, X) + "rotate(-30)" + T(0, -Jt._offset);
                F.layers.caxis.attr("transform", kt), F.layers.cgrid.attr("transform", kt), F.drawAxes(!0), F.layers.aline.select("path").attr("d", Ct.showline ? "M" + nt + "," + (X + lt) + "l" + ct / 2 + ",-" + lt : "M0,0").call(p.stroke, Ct.linecolor || "#000").style("stroke-width", (Ct.linewidth || 0) + "px"), F.layers.bline.select("path").attr("d", Gt.showline ? "M" + nt + "," + (X + lt) + "h" + ct : "M0,0").call(p.stroke, Gt.linecolor || "#000").style("stroke-width", (Gt.linewidth || 0) + "px"), F.layers.cline.select("path").attr("d", Jt.showline ? "M" + (nt + ct / 2) + "," + X + "l" + ct / 2 + "," + lt : "M0,0").call(p.stroke, Jt.linecolor || "#000").style("stroke-width", (Jt.linewidth || 0) + "px"), F.graphDiv._context.staticPlot || F.initInteractions(), u.setClipUrl(F.layers.frontplot, F._hasClipOnAxisFalse ? null : F.clipId, F.graphDiv);
              }, m.drawAxes = function(U) {
                var H = this, F = H.graphDiv, G = H.id.substr(7) + "title", q = H.layers, rt = H.aaxis, st = H.baxis, vt = H.caxis;
                if (H.drawAx(rt), H.drawAx(st), H.drawAx(vt), U) {
                  var ht = Math.max(rt.showticklabels ? rt.tickfont.size / 2 : 0, (vt.showticklabels ? vt.tickfont.size * 0.75 : 0) + (vt.ticks === "outside" ? vt.ticklen * 0.87 : 0)), et = (st.showticklabels ? st.tickfont.size : 0) + (st.ticks === "outside" ? st.ticklen : 0) + 3;
                  q["a-title"] = c.draw(F, "a" + G, {
                    propContainer: rt,
                    propName: H.id + ".aaxis.title",
                    placeholder: A(F, "Click to enter Component A title"),
                    attributes: {
                      x: H.x0 + H.w / 2,
                      y: H.y0 - rt.title.font.size / 3 - ht,
                      "text-anchor": "middle"
                    }
                  }), q["b-title"] = c.draw(F, "b" + G, {
                    propContainer: st,
                    propName: H.id + ".baxis.title",
                    placeholder: A(F, "Click to enter Component B title"),
                    attributes: {
                      x: H.x0 - et,
                      y: H.y0 + H.h + st.title.font.size * 0.83 + et,
                      "text-anchor": "middle"
                    }
                  }), q["c-title"] = c.draw(F, "c" + G, {
                    propContainer: vt,
                    propName: H.id + ".caxis.title",
                    placeholder: A(F, "Click to enter Component C title"),
                    attributes: {
                      x: H.x0 + H.w + et,
                      y: H.y0 + H.h + vt.title.font.size * 0.83 + et,
                      "text-anchor": "middle"
                    }
                  });
                }
              }, m.drawAx = function(U) {
                var H = this, F = H.graphDiv, G = U._name, q = G.charAt(0), rt = U._id, st = H.layers[G], vt = 30, ht = q + "tickLayout", et = d(U);
                H[ht] !== et && (st.selectAll("." + rt + "tick").remove(), H[ht] = et), U.setScale();
                var Q = a.calcTicks(U), j = a.clipEnds(U, Q), at = a.makeTransTickFn(U), ut = a.getTickSigns(U)[2], nt = s.deg2rad(vt), X = ut * (U.linewidth || 1) / 2, ct = ut * U.ticklen, lt = H.w, pt = H.h, wt = q === "b" ? "M0," + X + "l" + Math.sin(nt) * ct + "," + Math.cos(nt) * ct : "M" + X + ",0l" + Math.cos(nt) * ct + "," + -Math.sin(nt) * ct, Et = {
                  a: "M0,0l" + pt + ",-" + lt / 2,
                  b: "M0,0l-" + lt / 2 + ",-" + pt,
                  c: "M0,0l-" + pt + "," + lt / 2
                }[q];
                a.drawTicks(F, U, {
                  vals: U.ticks === "inside" ? j : Q,
                  layer: st,
                  path: wt,
                  transFn: at,
                  crisp: !1
                }), a.drawGrid(F, U, {
                  vals: j,
                  layer: H.layers[q + "grid"],
                  path: Et,
                  transFn: at,
                  crisp: !1
                }), a.drawLabels(F, U, {
                  vals: Q,
                  layer: st,
                  transFn: at,
                  labelFns: a.makeLabelFns(U, 0, vt)
                });
              };
              function d(U) {
                return U.ticks + String(U.ticklen) + String(U.showticklabels);
              }
              var h = M.MINZOOM / 2 + 0.87, E = "m-0.87,.5h" + h + "v3h-" + (h + 5.2) + "l" + (h / 2 + 2.6) + ",-" + (h * 0.87 + 4.5) + "l2.6,1.5l-" + h / 2 + "," + h * 0.87 + "Z", w = "m0.87,.5h-" + h + "v3h" + (h + 5.2) + "l-" + (h / 2 + 2.6) + ",-" + (h * 0.87 + 4.5) + "l-2.6,1.5l" + h / 2 + "," + h * 0.87 + "Z", z = "m0,1l" + h / 2 + "," + h * 0.87 + "l2.6,-1.5l-" + (h / 2 + 2.6) + ",-" + (h * 0.87 + 4.5) + "l-" + (h / 2 + 2.6) + "," + (h * 0.87 + 4.5) + "l2.6,1.5l" + h / 2 + ",-" + h * 0.87 + "Z", O = "m0.5,0.5h5v-2h-5v-5h-2v5h-5v2h5v5h2Z", B = !0;
              m.clearOutline = function() {
                S(this.dragOptions), _(this.dragOptions.gd);
              }, m.initInteractions = function() {
                var U = this, H = U.layers.plotbg.select("path").node(), F = U.graphDiv, G = F._fullLayout._zoomlayer, q, rt;
                this.dragOptions = {
                  element: H,
                  gd: F,
                  plotinfo: {
                    id: U.id,
                    domain: F._fullLayout[U.id].domain,
                    xaxis: U.xaxis,
                    yaxis: U.yaxis
                  },
                  subplot: U.id,
                  prepFn: function(Rt, Wt, kt) {
                    U.dragOptions.xaxes = [U.xaxis], U.dragOptions.yaxes = [U.yaxis], q = F._fullLayout._invScaleX, rt = F._fullLayout._invScaleY;
                    var re = U.dragOptions.dragmode = F._fullLayout.dragmode;
                    g(re) ? U.dragOptions.minDrag = 1 : U.dragOptions.minDrag = void 0, re === "zoom" ? (U.dragOptions.moveFn = Gt, U.dragOptions.clickFn = lt, U.dragOptions.doneFn = Jt, pt(Rt, Wt, kt)) : re === "pan" ? (U.dragOptions.moveFn = Vt, U.dragOptions.clickFn = lt, U.dragOptions.doneFn = zt, Qt(), U.clearOutline(F)) : (x(re) || g(re)) && v(Rt, Wt, kt, U.dragOptions, re);
                  }
                };
                var st, vt, ht, et, Q, j, at, ut, nt, X;
                function ct(Rt) {
                  var Wt = {};
                  return Wt[U.id + ".aaxis.min"] = Rt.a, Wt[U.id + ".baxis.min"] = Rt.b, Wt[U.id + ".caxis.min"] = Rt.c, Wt;
                }
                function lt(Rt, Wt) {
                  var kt = F._fullLayout.clickmode;
                  V(F), Rt === 2 && (F.emit("plotly_doubleclick", null), n.call("_guiRelayout", F, ct({
                    a: 0,
                    b: 0,
                    c: 0
                  }))), kt.indexOf("select") > -1 && Rt === 1 && f(Wt, F, [U.xaxis], [U.yaxis], U.id, U.dragOptions), kt.indexOf("event") > -1 && o.click(F, Wt, U.id);
                }
                function pt(Rt, Wt, kt) {
                  var re = H.getBoundingClientRect();
                  st = Wt - re.left, vt = kt - re.top, F._fullLayout._calcInverseTransform(F);
                  var ge = F._fullLayout._invTransform, _e = s.apply3DTransform(ge)(st, vt);
                  st = _e[0], vt = _e[1], ht = {
                    a: U.aaxis.range[0],
                    b: U.baxis.range[1],
                    c: U.caxis.range[1]
                  }, Q = ht, et = U.aaxis.range[1] - ht.a, j = P(U.graphDiv._fullLayout[U.id].bgcolor).getLuminance(), at = "M0," + U.h + "L" + U.w / 2 + ", 0L" + U.w + "," + U.h + "Z", ut = !1, nt = G.append("path").attr("class", "zoombox").attr("transform", T(U.x0, U.y0)).style({
                    fill: j > 0.2 ? "rgba(0,0,0,0)" : "rgba(255,255,255,0)",
                    "stroke-width": 0
                  }).attr("d", at), X = G.append("path").attr("class", "zoombox-corners").attr("transform", T(U.x0, U.y0)).style({
                    fill: p.background,
                    stroke: p.defaultLine,
                    "stroke-width": 1,
                    opacity: 0
                  }).attr("d", "M0,0Z"), U.clearOutline(F);
                }
                function wt(Rt, Wt) {
                  return 1 - Wt / U.h;
                }
                function Et(Rt, Wt) {
                  return 1 - (Rt + (U.h - Wt) / Math.sqrt(3)) / U.w;
                }
                function Ct(Rt, Wt) {
                  return (Rt - (U.h - Wt) / Math.sqrt(3)) / U.w;
                }
                function Gt(Rt, Wt) {
                  var kt = st + Rt * q, re = vt + Wt * rt, ge = Math.max(0, Math.min(1, wt(st, vt), wt(kt, re))), _e = Math.max(0, Math.min(1, Et(st, vt), Et(kt, re))), ce = Math.max(0, Math.min(1, Ct(st, vt), Ct(kt, re))), ae = (ge / 2 + ce) * U.w, Se = (1 - ge / 2 - _e) * U.w, ze = (ae + Se) / 2, Ne = Se - ae, Ve = (1 - ge) * U.h, Oe = Ve - Ne / L;
                  Ne < M.MINZOOM ? (Q = ht, nt.attr("d", at), X.attr("d", "M0,0Z")) : (Q = {
                    a: ht.a + ge * et,
                    b: ht.b + _e * et,
                    c: ht.c + ce * et
                  }, nt.attr("d", at + "M" + ae + "," + Ve + "H" + Se + "L" + ze + "," + Oe + "L" + ae + "," + Ve + "Z"), X.attr("d", "M" + st + "," + vt + O + "M" + ae + "," + Ve + E + "M" + Se + "," + Ve + w + "M" + ze + "," + Oe + z)), ut || (nt.transition().style("fill", j > 0.2 ? "rgba(0,0,0,0.4)" : "rgba(255,255,255,0.3)").duration(200), X.transition().style("opacity", 1).duration(200), ut = !0), F.emit("plotly_relayouting", ct(Q));
                }
                function Jt() {
                  V(F), Q !== ht && (n.call("_guiRelayout", F, ct(Q)), B && F.data && F._context.showTips && (s.notifier(A(F, "Double-click to zoom back out"), "long"), B = !1));
                }
                function Qt() {
                  ht = {
                    a: U.aaxis.range[0],
                    b: U.baxis.range[1],
                    c: U.caxis.range[1]
                  }, Q = ht;
                }
                function Vt(Rt, Wt) {
                  var kt = Rt / U.xaxis._m, re = Wt / U.yaxis._m;
                  Q = {
                    a: ht.a - re,
                    b: ht.b + (kt + re) / 2,
                    c: ht.c - (kt - re) / 2
                  };
                  var ge = [Q.a, Q.b, Q.c].sort(s.sorterAsc), _e = {
                    a: ge.indexOf(Q.a),
                    b: ge.indexOf(Q.b),
                    c: ge.indexOf(Q.c)
                  };
                  ge[0] < 0 && (ge[1] + ge[0] / 2 < 0 ? (ge[2] += ge[0] + ge[1], ge[0] = ge[1] = 0) : (ge[2] += ge[0] / 2, ge[1] += ge[0] / 2, ge[0] = 0), Q = {
                    a: ge[_e.a],
                    b: ge[_e.b],
                    c: ge[_e.c]
                  }, Wt = (ht.a - Q.a) * U.yaxis._m, Rt = (ht.c - Q.c - ht.b + Q.b) * U.xaxis._m);
                  var ce = T(U.x0 + Rt, U.y0 + Wt);
                  U.plotContainer.selectAll(".scatterlayer,.maplayer").attr("transform", ce);
                  var ae = T(-Rt, -Wt);
                  U.clipDefRelative.select("path").attr("transform", ae), U.aaxis.range = [Q.a, U.sum - Q.b - Q.c], U.baxis.range = [U.sum - Q.a - Q.c, Q.b], U.caxis.range = [U.sum - Q.a - Q.b, Q.c], U.drawAxes(!1), U._hasClipOnAxisFalse && U.plotContainer.select(".scatterlayer").selectAll(".trace").call(u.hideOutsideRangePoints, U), F.emit("plotly_relayouting", ct(Q));
                }
                function zt() {
                  n.call("_guiRelayout", F, ct(Q));
                }
                H.onmousemove = function(Rt) {
                  o.hover(F, Rt, U.id), F._fullLayout._lasthover = H, F._fullLayout._hoversubplot = U.id;
                }, H.onmouseout = function(Rt) {
                  F._dragging || l.unhover(F, Rt);
                }, l.init(this.dragOptions);
              };
              function V(U) {
                b.select(U).selectAll(".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners").remove();
              }
            }
          ),
          /***/
          33626: (
            /***/
            function(Y, K, e) {
              var b = e(48636), P = e(4969), n = e(36539), s = e(56174), T = e(95425).addStyleRule, A = e(93049), p = e(9829), u = e(6704), t = A.extendFlat, r = A.extendDeepAll;
              K.modules = {}, K.allCategories = {}, K.allTypes = [], K.subplotsRegistry = {}, K.transformsRegistry = {}, K.componentsRegistry = {}, K.layoutArrayContainers = [], K.layoutArrayRegexes = [], K.traceLayoutAttributes = {}, K.localeRegistry = {}, K.apiMethodRegistry = {}, K.collectableSubplotTypes = null, K.register = function(S) {
                if (K.collectableSubplotTypes = null, S)
                  S && !Array.isArray(S) && (S = [S]);
                else throw new Error("No argument passed to Plotly.register.");
                for (var M = 0; M < S.length; M++) {
                  var C = S[M];
                  if (!C)
                    throw new Error("Invalid module was attempted to be registered!");
                  switch (C.moduleType) {
                    case "trace":
                      i(C);
                      break;
                    case "transform":
                      o(C);
                      break;
                    case "component":
                      l(C);
                      break;
                    case "locale":
                      y(C);
                      break;
                    case "apiMethod":
                      var m = C.name;
                      K.apiMethodRegistry[m] = C.fn;
                      break;
                    default:
                      throw new Error("Invalid module was attempted to be registered!");
                  }
                }
              }, K.getModule = function(_) {
                var S = K.modules[f(_)];
                return S ? S._module : !1;
              }, K.traceIs = function(_, S) {
                if (_ = f(_), _ === "various") return !1;
                var M = K.modules[_];
                return M || (_ && b.log("Unrecognized trace type " + _ + "."), M = K.modules[p.type.dflt]), !!M.categories[S];
              }, K.getTransformIndices = function(_, S) {
                for (var M = [], C = _.transforms || [], m = 0; m < C.length; m++)
                  C[m].type === S && M.push(m);
                return M;
              }, K.hasTransform = function(_, S) {
                for (var M = _.transforms || [], C = 0; C < M.length; C++)
                  if (M[C].type === S)
                    return !0;
                return !1;
              }, K.getComponentMethod = function(_, S) {
                var M = K.componentsRegistry[_];
                return M && M[S] || P;
              }, K.call = function() {
                var _ = arguments[0], S = [].slice.call(arguments, 1);
                return K.apiMethodRegistry[_].apply(null, S);
              };
              function i(_) {
                var S = _.name, M = _.categories, C = _.meta;
                if (K.modules[S]) {
                  b.log("Type " + S + " already registered");
                  return;
                }
                K.subplotsRegistry[_.basePlotModule.name] || a(_.basePlotModule);
                for (var m = {}, L = 0; L < M.length; L++)
                  m[M[L]] = !0, K.allCategories[M[L]] = !0;
                K.modules[S] = {
                  _module: _,
                  categories: m
                }, C && Object.keys(C).length && (K.modules[S].meta = C), K.allTypes.push(S);
                for (var d in K.componentsRegistry)
                  x(d, S);
                _.layoutAttributes && t(K.traceLayoutAttributes, _.layoutAttributes);
                var h = _.basePlotModule, E = h.name;
                if (E === "mapbox") {
                  var w = h.constants.styleRules;
                  for (var z in w)
                    T(".js-plotly-plot .plotly .mapboxgl-" + z, w[z]);
                }
                E === "map" && e(96144), (E === "geo" || E === "mapbox" || E === "map") && window.PlotlyGeoAssets === void 0 && (window.PlotlyGeoAssets = {
                  topojson: {}
                });
              }
              function a(_) {
                var S = _.name;
                if (K.subplotsRegistry[S]) {
                  b.log("Plot type " + S + " already registered.");
                  return;
                }
                g(_), K.subplotsRegistry[S] = _;
                for (var M in K.componentsRegistry)
                  v(M, _.name);
              }
              function l(_) {
                if (typeof _.name != "string")
                  throw new Error("Component module *name* must be a string.");
                var S = _.name;
                K.componentsRegistry[S] = _, _.layoutAttributes && (_.layoutAttributes._isLinkedToArray && n(K.layoutArrayContainers, S), g(_));
                for (var M in K.modules)
                  x(S, M);
                for (var C in K.subplotsRegistry)
                  v(S, C);
                for (var m in K.transformsRegistry)
                  c(S, m);
                _.schema && _.schema.layout && r(u, _.schema.layout);
              }
              function o(_) {
                if (typeof _.name != "string")
                  throw new Error("Transform module *name* must be a string.");
                var S = "Transform module " + _.name, M = typeof _.transform == "function", C = typeof _.calcTransform == "function";
                if (!M && !C)
                  throw new Error(S + " is missing a *transform* or *calcTransform* method.");
                M && C && b.log([S + " has both a *transform* and *calcTransform* methods.", "Please note that all *transform* methods are executed", "before all *calcTransform* methods."].join(" ")), s(_.attributes) || b.log(S + " registered without an *attributes* object."), typeof _.supplyDefaults != "function" && b.log(S + " registered without a *supplyDefaults* method."), K.transformsRegistry[_.name] = _;
                for (var m in K.componentsRegistry)
                  c(m, _.name);
              }
              function y(_) {
                var S = _.name, M = S.split("-")[0], C = _.dictionary, m = _.format, L = C && Object.keys(C).length, d = m && Object.keys(m).length, h = K.localeRegistry, E = h[S];
                if (E || (h[S] = E = {}), M !== S) {
                  var w = h[M];
                  w || (h[M] = w = {}), L && w.dictionary === E.dictionary && (w.dictionary = C), d && w.format === E.format && (w.format = m);
                }
                L && (E.dictionary = C), d && (E.format = m);
              }
              function g(_) {
                if (_.layoutAttributes) {
                  var S = _.layoutAttributes._arrayAttrRegexps;
                  if (S)
                    for (var M = 0; M < S.length; M++)
                      n(K.layoutArrayRegexes, S[M]);
                }
              }
              function x(_, S) {
                var M = K.componentsRegistry[_].schema;
                if (!(!M || !M.traces)) {
                  var C = M.traces[S];
                  C && r(K.modules[S]._module.attributes, C);
                }
              }
              function c(_, S) {
                var M = K.componentsRegistry[_].schema;
                if (!(!M || !M.transforms)) {
                  var C = M.transforms[S];
                  C && r(K.transformsRegistry[S].attributes, C);
                }
              }
              function v(_, S) {
                var M = K.componentsRegistry[_].schema;
                if (!(!M || !M.subplots)) {
                  var C = K.subplotsRegistry[S], m = C.layoutAttributes, L = C.attr === "subplot" ? C.name : C.attr;
                  Array.isArray(L) && (L = L[0]);
                  var d = M.subplots[L];
                  m && d && r(m, d);
                }
              }
              function f(_) {
                return typeof _ == "object" && (_ = _.type), _;
              }
            }
          ),
          /***/
          3164: (
            /***/
            function(Y, K, e) {
              var b = e(33626), P = e(34809), n = P.extendFlat, s = P.extendDeep;
              function T(p) {
                var u;
                switch (p) {
                  case "themes__thumb":
                    u = {
                      autosize: !0,
                      width: 150,
                      height: 150,
                      title: {
                        text: ""
                      },
                      showlegend: !1,
                      margin: {
                        l: 5,
                        r: 5,
                        t: 5,
                        b: 5,
                        pad: 0
                      },
                      annotations: []
                    };
                    break;
                  case "thumbnail":
                    u = {
                      title: {
                        text: ""
                      },
                      hidesources: !0,
                      showlegend: !1,
                      borderwidth: 0,
                      bordercolor: "",
                      margin: {
                        l: 1,
                        r: 1,
                        t: 1,
                        b: 1,
                        pad: 0
                      },
                      annotations: []
                    };
                    break;
                  default:
                    u = {};
                }
                return u;
              }
              function A(p) {
                var u = ["xaxis", "yaxis", "zaxis"];
                return u.indexOf(p.slice(0, 5)) > -1;
              }
              Y.exports = function(u, t) {
                var r, i = u.data, a = u.layout, l = s([], i), o = s({}, a, T(t.tileClass)), y = u._context || {};
                if (t.width && (o.width = t.width), t.height && (o.height = t.height), t.tileClass === "thumbnail" || t.tileClass === "themes__thumb") {
                  o.annotations = [];
                  var g = Object.keys(o);
                  for (r = 0; r < g.length; r++)
                    A(g[r]) && (o[g[r]].title = {
                      text: ""
                    });
                  for (r = 0; r < l.length; r++) {
                    var x = l[r];
                    x.showscale = !1, x.marker && (x.marker.showscale = !1), b.traceIs(x, "pie-like") && (x.textposition = "none");
                  }
                }
                if (Array.isArray(t.annotations))
                  for (r = 0; r < t.annotations.length; r++)
                    o.annotations.push(t.annotations[r]);
                var c = Object.keys(o).filter(function(M) {
                  return M.match(/^scene\d*$/);
                });
                if (c.length) {
                  var v = {};
                  for (t.tileClass === "thumbnail" && (v = {
                    title: {
                      text: ""
                    },
                    showaxeslabels: !1,
                    showticklabels: !1,
                    linetickenable: !1
                  }), r = 0; r < c.length; r++) {
                    var f = o[c[r]];
                    f.xaxis || (f.xaxis = {}), f.yaxis || (f.yaxis = {}), f.zaxis || (f.zaxis = {}), n(f.xaxis, v), n(f.yaxis, v), n(f.zaxis, v), f._scene = null;
                  }
                }
                var _ = document.createElement("div");
                t.tileClass && (_.className = t.tileClass);
                var S = {
                  gd: _,
                  td: _,
                  // for external (image server) compatibility
                  layout: o,
                  data: l,
                  config: {
                    staticPlot: t.staticPlot === void 0 ? !0 : t.staticPlot,
                    plotGlPixelRatio: t.plotGlPixelRatio === void 0 ? 2 : t.plotGlPixelRatio,
                    displaylogo: t.displaylogo || !1,
                    showLink: t.showLink || !1,
                    showTips: t.showTips || !1,
                    mapboxAccessToken: y.mapboxAccessToken
                  }
                };
                return t.setBackground !== "transparent" && (S.config.setBackground = t.setBackground || "opaque"), S.gd.defaultLayout = T(t.tileClass), S;
              };
            }
          ),
          /***/
          26452: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(80491), n = e(33353), s = e(84619);
              function T(A, p) {
                var u;
                return b.isPlainObject(A) || (u = b.getGraphDiv(A)), p = p || {}, p.format = p.format || "png", p.width = p.width || null, p.height = p.height || null, p.imageDataOnly = !0, new Promise(function(t, r) {
                  u && u._snapshotInProgress && r(new Error("Snapshotting already in progress.")), b.isIE() && p.format !== "svg" && r(new Error(s.MSG_IE_BAD_FORMAT)), u && (u._snapshotInProgress = !0);
                  var i = P(A, p), a = p.filename || A.fn || "newplot";
                  a += "." + p.format.replace("-", "."), i.then(function(l) {
                    return u && (u._snapshotInProgress = !1), n(l, a, p.format);
                  }).then(function(l) {
                    t(l);
                  }).catch(function(l) {
                    u && (u._snapshotInProgress = !1), r(l);
                  });
                });
              }
              Y.exports = T;
            }
          ),
          /***/
          33353: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(84619);
              function n(s, T, A) {
                var p = document.createElement("a"), u = "download" in p, t = new Promise(function(r, i) {
                  var a, l;
                  if (b.isIE())
                    return a = P.createBlob(s, "svg"), window.navigator.msSaveBlob(a, T), a = null, r(T);
                  if (u)
                    return a = P.createBlob(s, A), l = P.createObjectURL(a), p.href = l, p.download = T, document.body.appendChild(p), p.click(), document.body.removeChild(p), P.revokeObjectURL(l), a = null, r(T);
                  if (b.isSafari()) {
                    var o = A === "svg" ? "," : ";base64,";
                    return P.octetStream(o + encodeURIComponent(s)), r(T);
                  }
                  i(new Error("download error"));
                });
                return t;
              }
              Y.exports = n;
            }
          ),
          /***/
          84619: (
            /***/
            function(Y, K, e) {
              var b = e(33626);
              K.getDelay = function(s) {
                return s._has && (s._has("gl3d") || s._has("gl2d") || s._has("mapbox") || s._has("map")) ? 500 : 0;
              }, K.getRedrawFunc = function(s) {
                return function() {
                  b.getComponentMethod("colorbar", "draw")(s);
                };
              }, K.encodeSVG = function(s) {
                return "data:image/svg+xml," + encodeURIComponent(s);
              }, K.encodeJSON = function(s) {
                return "data:application/json," + encodeURIComponent(s);
              };
              var P = window.URL || window.webkitURL;
              K.createObjectURL = function(s) {
                return P.createObjectURL(s);
              }, K.revokeObjectURL = function(s) {
                return P.revokeObjectURL(s);
              }, K.createBlob = function(s, T) {
                if (T === "svg")
                  return new window.Blob([s], {
                    type: "image/svg+xml;charset=utf-8"
                  });
                if (T === "full-json")
                  return new window.Blob([s], {
                    type: "application/json;charset=utf-8"
                  });
                var A = n(window.atob(s));
                return new window.Blob([A], {
                  type: "image/" + T
                });
              }, K.octetStream = function(s) {
                document.location.href = "data:application/octet-stream" + s;
              };
              function n(s) {
                for (var T = s.length, A = new ArrayBuffer(T), p = new Uint8Array(A), u = 0; u < T; u++)
                  p[u] = s.charCodeAt(u);
                return A;
              }
              K.IMAGE_URL_PREFIX = /^data:image\/\w+;base64,/, K.MSG_IE_BAD_FORMAT = "Sorry IE does not support downloading from canvas. Try {format:'svg'} instead.";
            }
          ),
          /***/
          6170: (
            /***/
            function(Y, K, e) {
              var b = e(84619), P = {
                getDelay: b.getDelay,
                getRedrawFunc: b.getRedrawFunc,
                clone: e(3164),
                toSVG: e(6243),
                svgToImg: e(72914),
                toImage: e(76896),
                downloadImage: e(26452)
              };
              Y.exports = P;
            }
          ),
          /***/
          72914: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(7683).EventEmitter, n = e(84619);
              function s(T) {
                var A = T.emitter || new P(), p = new Promise(function(u, t) {
                  var r = window.Image, i = T.svg, a = T.format || "png";
                  if (b.isIE() && a !== "svg") {
                    var l = new Error(n.MSG_IE_BAD_FORMAT);
                    return t(l), T.promise ? p : A.emit("error", l);
                  }
                  var o = T.canvas, y = T.scale || 1, g = T.width || 300, x = T.height || 150, c = y * g, v = y * x, f = o.getContext("2d", {
                    willReadFrequently: !0
                  }), _ = new r(), S, M;
                  a === "svg" || b.isSafari() ? M = n.encodeSVG(i) : (S = n.createBlob(i, "svg"), M = n.createObjectURL(S)), o.width = c, o.height = v, _.onload = function() {
                    var C;
                    switch (S = null, n.revokeObjectURL(M), a !== "svg" && f.drawImage(_, 0, 0, c, v), a) {
                      case "jpeg":
                        C = o.toDataURL("image/jpeg");
                        break;
                      case "png":
                        C = o.toDataURL("image/png");
                        break;
                      case "webp":
                        C = o.toDataURL("image/webp");
                        break;
                      case "svg":
                        C = M;
                        break;
                      default:
                        var m = "Image format is not jpeg, png, svg or webp.";
                        if (t(new Error(m)), !T.promise)
                          return A.emit("error", m);
                    }
                    u(C), T.promise || A.emit("success", C);
                  }, _.onerror = function(C) {
                    if (S = null, n.revokeObjectURL(M), t(C), !T.promise)
                      return A.emit("error", C);
                  }, _.src = M;
                });
                return T.promise ? p : A;
              }
              Y.exports = s;
            }
          ),
          /***/
          76896: (
            /***/
            function(Y, K, e) {
              var b = e(7683).EventEmitter, P = e(33626), n = e(34809), s = e(84619), T = e(3164), A = e(6243), p = e(72914);
              function u(t, r) {
                var i = new b(), a = T(t, {
                  format: "png"
                }), l = a.gd;
                l.style.position = "absolute", l.style.left = "-5000px", document.body.appendChild(l);
                function o() {
                  var g = s.getDelay(l._fullLayout);
                  setTimeout(function() {
                    var x = A(l), c = document.createElement("canvas");
                    c.id = n.randstr(), i = p({
                      format: r.format,
                      width: l._fullLayout.width,
                      height: l._fullLayout.height,
                      canvas: c,
                      emitter: i,
                      svg: x
                    }), i.clean = function() {
                      l && document.body.removeChild(l);
                    };
                  }, g);
                }
                var y = s.getRedrawFunc(l);
                return P.call("_doPlot", l, a.data, a.layout, a.config).then(y).then(o).catch(function(g) {
                  i.emit("error", g);
                }), i;
              }
              Y.exports = u;
            }
          ),
          /***/
          6243: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(34809), n = e(62203), s = e(78766), T = e(62972), A = /"/g, p = "TOBESTRIPPED", u = new RegExp('("' + p + ")|(" + p + '")', "g");
              function t(i) {
                var a = b.select("body").append("div").style({
                  display: "none"
                }).html(""), l = i.replace(/(&[^;]*;)/gi, function(o) {
                  return o === "&lt;" ? "&#60;" : o === "&rt;" ? "&#62;" : o.indexOf("<") !== -1 || o.indexOf(">") !== -1 ? "" : a.html(o).text();
                });
                return a.remove(), l;
              }
              function r(i) {
                return i.replace(/&(?!\w+;|\#[0-9]+;| \#x[0-9A-F]+;)/g, "&amp;");
              }
              Y.exports = function(a, l, o) {
                var y = a._fullLayout, g = y._paper, x = y._toppaper, c = y.width, v = y.height, f;
                g.insert("rect", ":first-child").call(n.setRect, 0, 0, c, v).call(s.fill, y.paper_bgcolor);
                var _ = y._basePlotModules || [];
                for (f = 0; f < _.length; f++) {
                  var S = _[f];
                  S.toSVG && S.toSVG(a);
                }
                if (x) {
                  var M = x.node().childNodes, C = Array.prototype.slice.call(M);
                  for (f = 0; f < C.length; f++) {
                    var m = C[f];
                    m.childNodes.length && g.node().appendChild(m);
                  }
                }
                y._draggers && y._draggers.remove(), g.node().style.background = "", g.selectAll("text").attr({
                  "data-unformatted": null,
                  "data-math": null
                }).each(function() {
                  var d = b.select(this);
                  if (this.style.visibility === "hidden" || this.style.display === "none") {
                    d.remove();
                    return;
                  } else
                    d.style({
                      visibility: null,
                      display: null
                    });
                  var h = this.style.fontFamily;
                  h && h.indexOf('"') !== -1 && d.style("font-family", h.replace(A, p));
                  var E = this.style.fontWeight;
                  E && (E === "normal" || E === "400") && d.style("font-weight", void 0);
                  var w = this.style.fontStyle;
                  w && w === "normal" && d.style("font-style", void 0);
                  var z = this.style.fontVariant;
                  z && z === "normal" && d.style("font-variant", void 0);
                }), g.selectAll(".gradient_filled,.pattern_filled").each(function() {
                  var d = b.select(this), h = this.style.fill;
                  h && h.indexOf("url(") !== -1 && d.style("fill", h.replace(A, p));
                  var E = this.style.stroke;
                  E && E.indexOf("url(") !== -1 && d.style("stroke", E.replace(A, p));
                }), (l === "pdf" || l === "eps") && g.selectAll("#MathJax_SVG_glyphs path").attr("stroke-width", 0), g.node().setAttributeNS(T.xmlns, "xmlns", T.svg), g.node().setAttributeNS(T.xmlns, "xmlns:xlink", T.xlink), l === "svg" && o && (g.attr("width", o * c), g.attr("height", o * v), g.attr("viewBox", "0 0 " + c + " " + v));
                var L = new window.XMLSerializer().serializeToString(g.node());
                return L = t(L), L = r(L), L = L.replace(u, "'"), P.isIE() && (L = L.replace(/"/gi, "'"), L = L.replace(/(\('#)([^']*)('\))/gi, '("#$2")'), L = L.replace(/(\\')/gi, '"')), L;
              };
            }
          ),
          /***/
          35374: (
            /***/
            function(Y, K, e) {
              var b = e(34809);
              Y.exports = function(n, s) {
                for (var T = 0; T < n.length; T++) n[T].i = T;
                b.mergeArray(s.text, n, "tx"), b.mergeArray(s.hovertext, n, "htx");
                var A = s.marker;
                if (A) {
                  b.mergeArray(A.opacity, n, "mo", !0), b.mergeArray(A.color, n, "mc");
                  var p = A.line;
                  p && (b.mergeArray(p.color, n, "mlc"), b.mergeArrayCastPositive(p.width, n, "mlw"));
                }
              };
            }
          ),
          /***/
          81481: (
            /***/
            function(Y, K, e) {
              var b = e(36640), P = e(80712).axisHoverFormat, n = e(3208).rb, s = e(3208).ay, T = e(87163), A = e(80337), p = e(56155), u = e(94850).k, t = e(93049).extendFlat, r = A({
                editType: "calc",
                arrayOk: !0,
                colorEditType: "style"
              }), i = b.marker, a = i.line, l = t({}, a.width, {
                dflt: 0
              }), o = t({
                width: l,
                editType: "calc"
              }, T("marker.line")), y = t({
                line: o,
                editType: "calc"
              }, T("marker"), {
                opacity: {
                  valType: "number",
                  arrayOk: !0,
                  dflt: 1,
                  min: 0,
                  max: 1,
                  editType: "style"
                },
                pattern: u,
                cornerradius: {
                  valType: "any",
                  editType: "calc"
                }
              });
              Y.exports = {
                x: b.x,
                x0: b.x0,
                dx: b.dx,
                y: b.y,
                y0: b.y0,
                dy: b.dy,
                xperiod: b.xperiod,
                yperiod: b.yperiod,
                xperiod0: b.xperiod0,
                yperiod0: b.yperiod0,
                xperiodalignment: b.xperiodalignment,
                yperiodalignment: b.yperiodalignment,
                xhoverformat: P("x"),
                yhoverformat: P("y"),
                text: b.text,
                texttemplate: s({
                  editType: "plot"
                }, {
                  keys: p.eventDataKeys
                }),
                hovertext: b.hovertext,
                hovertemplate: n({}, {
                  keys: p.eventDataKeys
                }),
                textposition: {
                  valType: "enumerated",
                  values: ["inside", "outside", "auto", "none"],
                  dflt: "auto",
                  arrayOk: !0,
                  editType: "calc"
                },
                insidetextanchor: {
                  valType: "enumerated",
                  values: ["end", "middle", "start"],
                  dflt: "end",
                  editType: "plot"
                },
                textangle: {
                  valType: "angle",
                  dflt: "auto",
                  editType: "plot"
                },
                textfont: t({}, r, {}),
                insidetextfont: t({}, r, {}),
                outsidetextfont: t({}, r, {}),
                constraintext: {
                  valType: "enumerated",
                  values: ["inside", "outside", "both", "none"],
                  dflt: "both",
                  editType: "calc"
                },
                cliponaxis: t({}, b.cliponaxis, {}),
                orientation: {
                  valType: "enumerated",
                  values: ["v", "h"],
                  editType: "calc+clearAxisTypes"
                },
                base: {
                  valType: "any",
                  dflt: null,
                  arrayOk: !0,
                  editType: "calc"
                },
                offset: {
                  valType: "number",
                  dflt: null,
                  arrayOk: !0,
                  editType: "calc"
                },
                width: {
                  valType: "number",
                  dflt: null,
                  min: 0,
                  arrayOk: !0,
                  editType: "calc"
                },
                marker: y,
                offsetgroup: b.offsetgroup,
                alignmentgroup: b.alignmentgroup,
                selected: {
                  marker: {
                    opacity: b.selected.marker.opacity,
                    color: b.selected.marker.color,
                    editType: "style"
                  },
                  textfont: b.selected.textfont,
                  editType: "style"
                },
                unselected: {
                  marker: {
                    opacity: b.unselected.marker.opacity,
                    color: b.unselected.marker.color,
                    editType: "style"
                  },
                  textfont: b.unselected.textfont,
                  editType: "style"
                },
                zorder: b.zorder,
                _deprecated: {
                  bardir: {
                    valType: "enumerated",
                    editType: "calc",
                    values: ["v", "h"]
                  }
                }
              };
            }
          ),
          /***/
          67565: (
            /***/
            function(Y, K, e) {
              var b = e(29714), P = e(40528), n = e(65477).hasColorscale, s = e(28379), T = e(35374), A = e(48861);
              Y.exports = function(u, t) {
                var r = b.getFromId(u, t.xaxis || "x"), i = b.getFromId(u, t.yaxis || "y"), a, l, o, y, g, x, c = {
                  msUTC: !!(t.base || t.base === 0)
                };
                t.orientation === "h" ? (a = r.makeCalcdata(t, "x", c), o = i.makeCalcdata(t, "y"), y = P(t, i, "y", o), g = !!t.yperiodalignment, x = "y") : (a = i.makeCalcdata(t, "y", c), o = r.makeCalcdata(t, "x"), y = P(t, r, "x", o), g = !!t.xperiodalignment, x = "x"), l = y.vals;
                for (var v = Math.min(l.length, a.length), f = new Array(v), _ = 0; _ < v; _++)
                  f[_] = {
                    p: l[_],
                    s: a[_]
                  }, g && (f[_].orig_p = o[_], f[_][x + "End"] = y.ends[_], f[_][x + "Start"] = y.starts[_]), t.ids && (f[_].id = String(t.ids[_]));
                return n(t, "marker") && s(u, t, {
                  vals: t.marker.color,
                  containerStr: "marker",
                  cLetter: "c"
                }), n(t, "marker.line") && s(u, t, {
                  vals: t.marker.line.color,
                  containerStr: "marker.line",
                  cLetter: "c"
                }), T(f, t), A(f, t), f;
              };
            }
          ),
          /***/
          56155: (
            /***/
            function(Y) {
              Y.exports = {
                // padding in pixels around text
                TEXTPAD: 3,
                // 'value' and 'label' are not really necessary for bar traces,
                // but they were made available to `texttemplate` (maybe by accident)
                // via tokens `%{value}` and `%{label}` starting in 1.50.0,
                // so let's include them in the event data also.
                eventDataKeys: ["value", "label"]
              };
            }
          ),
          /***/
          24782: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(34809).isArrayOrTypedArray, n = e(63821).BADNUM, s = e(33626), T = e(29714), A = e(84391).getAxisGroup, p = e(2880);
              function u(E, w) {
                for (var z = w.xaxis, O = w.yaxis, B = E._fullLayout, V = E._fullData, U = E.calcdata, H = [], F = [], G = 0; G < V.length; G++) {
                  var q = V[G];
                  if (q.visible === !0 && s.traceIs(q, "bar") && q.xaxis === z._id && q.yaxis === O._id && (q.orientation === "h" ? H.push(U[G]) : F.push(U[G]), q._computePh))
                    for (var rt = E.calcdata[G], st = 0; st < rt.length; st++)
                      typeof rt[st].ph0 == "function" && (rt[st].ph0 = rt[st].ph0()), typeof rt[st].ph1 == "function" && (rt[st].ph1 = rt[st].ph1());
                }
                var vt = {
                  xCat: z.type === "category" || z.type === "multicategory",
                  yCat: O.type === "category" || O.type === "multicategory",
                  mode: B.barmode,
                  norm: B.barnorm,
                  gap: B.bargap,
                  groupgap: B.bargroupgap
                };
                t(E, z, O, F, vt), t(E, O, z, H, vt);
              }
              function t(E, w, z, O, B) {
                if (O.length) {
                  var V, U, H, F, G;
                  switch (a(z, O), B.mode) {
                    case "overlay":
                      l(w, z, O, B);
                      break;
                    case "group":
                      for (V = [], U = [], H = 0; H < O.length; H++)
                        F = O[H], G = F[0].trace, G.offset === void 0 ? U.push(F) : V.push(F);
                      U.length && o(E, w, z, U, B), V.length && l(w, z, V, B);
                      break;
                    case "stack":
                    case "relative":
                      for (V = [], U = [], H = 0; H < O.length; H++)
                        F = O[H], G = F[0].trace, G.base === void 0 ? U.push(F) : V.push(F);
                      i(U), U.length && y(E, w, z, U, B), V.length && l(w, z, V, B);
                      break;
                  }
                  r(O), d(O, w);
                }
              }
              function r(E) {
                var w, z, O, B, V, U, H;
                for (w = 0; w < E.length; w++)
                  z = E[w], O = z[0].trace, B = z[0].t, B.cornerradiusvalue === void 0 && (V = O.marker ? O.marker.cornerradius : void 0, V !== void 0 && (U = b(V) ? +V : +V.slice(0, -1), H = b(V) ? "px" : "%", B.cornerradiusvalue = U, B.cornerradiusform = H));
              }
              function i(E) {
                if (!(E.length < 2)) {
                  var w, z, O, B, V, U, H;
                  for (w = 0; w < E.length && (z = E[w], O = z[0].trace, V = O.marker ? O.marker.cornerradius : void 0, V === void 0); w++)
                    ;
                  if (V !== void 0)
                    for (U = b(V) ? +V : +V.slice(0, -1), H = b(V) ? "px" : "%", w = 0; w < E.length; w++)
                      z = E[w], B = z[0].t, B.cornerradiusvalue = U, B.cornerradiusform = H;
                }
              }
              function a(E, w) {
                var z, O;
                for (z = 0; z < w.length; z++) {
                  var B = w[z], V = B[0].trace, U = V.type === "funnel" ? V._base : V.base, H, F = V.orientation === "h" ? V.xcalendar : V.ycalendar, G = E.type === "category" || E.type === "multicategory" ? function() {
                    return null;
                  } : E.d2c;
                  if (P(U)) {
                    for (O = 0; O < Math.min(U.length, B.length); O++)
                      H = G(U[O], 0, F), b(H) ? (B[O].b = +H, B[O].hasB = 1) : B[O].b = 0;
                    for (; O < B.length; O++)
                      B[O].b = 0;
                  } else {
                    H = G(U, 0, F);
                    var q = b(H);
                    for (H = q ? H : 0, O = 0; O < B.length; O++)
                      B[O].b = H, q && (B[O].hasB = 1);
                  }
                }
              }
              function l(E, w, z, O) {
                for (var B = 0; B < z.length; B++) {
                  var V = z[B], U = new p([V], {
                    posAxis: E,
                    sepNegVal: !1,
                    overlapNoMerge: !O.norm
                  });
                  g(E, U, O), O.norm ? (M(U), m(w, U, O)) : _(w, U);
                }
              }
              function o(E, w, z, O, B) {
                var V = new p(O, {
                  posAxis: w,
                  sepNegVal: !1,
                  overlapNoMerge: !B.norm
                });
                x(E, w, V, B), C(V, w), B.norm ? (M(V), m(z, V, B)) : _(z, V);
              }
              function y(E, w, z, O, B) {
                var V = new p(O, {
                  posAxis: w,
                  sepNegVal: B.mode === "relative",
                  overlapNoMerge: !(B.norm || B.mode === "stack" || B.mode === "relative")
                });
                g(w, V, B), S(z, V, B);
                for (var U = 0; U < O.length; U++)
                  for (var H = O[U], F = 0; F < H.length; F++) {
                    var G = H[F];
                    if (G.s !== n) {
                      var q = G.b + G.s === V.get(G.p, G.s);
                      q && (G._outmost = !0);
                    }
                  }
                B.norm && m(z, V, B);
              }
              function g(E, w, z) {
                for (var O = w.minDiff, B = w.traces, V = O * (1 - z.gap), U = V, H = U * (1 - (z.groupgap || 0)), F = -H / 2, G = 0; G < B.length; G++) {
                  var q = B[G], rt = q[0].t;
                  rt.barwidth = H, rt.poffset = F, rt.bargroupwidth = V, rt.bardelta = O;
                }
                w.binWidth = B[0][0].t.barwidth / 100, c(w), v(E, w), f(E, w);
              }
              function x(E, w, z, O) {
                for (var B = E._fullLayout, V = z.positions, U = z.distinctPositions, H = z.minDiff, F = z.traces, G = F.length, q = V.length !== U.length, rt = H * (1 - O.gap), st = A(B, w._id) + F[0][0].trace.orientation, vt = B._alignmentOpts[st] || {}, ht = 0; ht < G; ht++) {
                  var et = F[ht], Q = et[0].trace, j = vt[Q.alignmentgroup] || {}, at = Object.keys(j.offsetGroups || {}).length, ut;
                  at ? ut = rt / at : ut = q ? rt / G : rt;
                  var nt = ut * (1 - (O.groupgap || 0)), X;
                  at ? X = ((2 * Q._offsetIndex + 1 - at) * ut - nt) / 2 : X = q ? ((2 * ht + 1 - G) * ut - nt) / 2 : -nt / 2;
                  var ct = et[0].t;
                  ct.barwidth = nt, ct.poffset = X, ct.bargroupwidth = rt, ct.bardelta = H;
                }
                z.binWidth = F[0][0].t.barwidth / 100, c(z), v(w, z), f(w, z, q);
              }
              function c(E) {
                var w = E.traces, z, O;
                for (z = 0; z < w.length; z++) {
                  var B = w[z], V = B[0], U = V.trace, H = V.t, F = U._offset || U.offset, G = H.poffset, q;
                  if (P(F)) {
                    for (q = Array.prototype.slice.call(F, 0, B.length), O = 0; O < q.length; O++)
                      b(q[O]) || (q[O] = G);
                    for (O = q.length; O < B.length; O++)
                      q.push(G);
                    H.poffset = q;
                  } else F !== void 0 && (H.poffset = F);
                  var rt = U._width || U.width, st = H.barwidth;
                  if (P(rt)) {
                    var vt = Array.prototype.slice.call(rt, 0, B.length);
                    for (O = 0; O < vt.length; O++)
                      b(vt[O]) || (vt[O] = st);
                    for (O = vt.length; O < B.length; O++)
                      vt.push(st);
                    if (H.barwidth = vt, F === void 0) {
                      for (q = [], O = 0; O < B.length; O++)
                        q.push(G + (st - vt[O]) / 2);
                      H.poffset = q;
                    }
                  } else rt !== void 0 && (H.barwidth = rt, F === void 0 && (H.poffset = G + (st - rt) / 2));
                }
              }
              function v(E, w) {
                for (var z = w.traces, O = h(E), B = 0; B < z.length; B++)
                  for (var V = z[B], U = V[0].t, H = U.poffset, F = P(H), G = U.barwidth, q = P(G), rt = 0; rt < V.length; rt++) {
                    var st = V[rt], vt = st.w = q ? G[rt] : G;
                    st.p === void 0 && (st.p = st[O], st["orig_" + O] = st[O]);
                    var ht = (F ? H[rt] : H) + vt / 2;
                    st[O] = st.p + ht;
                  }
              }
              function f(E, w, z) {
                var O = w.traces, B = w.minDiff, V = B / 2;
                T.minDtick(E, w.minDiff, w.distinctPositions[0], z);
                for (var U = 0; U < O.length; U++) {
                  var H = O[U], F = H[0], G = F.trace, q = [], rt, st, vt, ht;
                  for (ht = 0; ht < H.length; ht++)
                    rt = H[ht], st = rt.p - V, vt = rt.p + V, q.push(st, vt);
                  if (G.width || G.offset) {
                    var et = F.t, Q = et.poffset, j = et.barwidth, at = P(Q), ut = P(j);
                    for (ht = 0; ht < H.length; ht++) {
                      rt = H[ht];
                      var nt = at ? Q[ht] : Q, X = ut ? j[ht] : j;
                      st = rt.p + nt, vt = st + X, q.push(st, vt);
                    }
                  }
                  G._extremes[E._id] = T.findExtremes(E, q, {
                    padded: !1
                  });
                }
              }
              function _(E, w) {
                for (var z = w.traces, O = h(E), B = 0; B < z.length; B++) {
                  for (var V = z[B], U = V[0].trace, H = U.type === "scatter", F = U.orientation === "v", G = [], q = !1, rt = 0; rt < V.length; rt++) {
                    var st = V[rt], vt = H ? 0 : st.b, ht = H ? F ? st.y : st.x : vt + st.s;
                    st[O] = ht, G.push(ht), st.hasB && G.push(vt), (!st.hasB || !st.b) && (q = !0);
                  }
                  U._extremes[E._id] = T.findExtremes(E, G, {
                    tozero: q,
                    padded: !0
                  });
                }
              }
              function S(E, w, z) {
                var O = h(E), B = w.traces, V, U, H, F, G, q;
                for (F = 0; F < B.length; F++)
                  if (V = B[F], U = V[0].trace, U.type === "funnel")
                    for (G = 0; G < V.length; G++)
                      q = V[G], q.s !== n && w.put(q.p, -0.5 * q.s);
                for (F = 0; F < B.length; F++) {
                  V = B[F], U = V[0].trace, H = U.type === "funnel";
                  var rt = [];
                  for (G = 0; G < V.length; G++)
                    if (q = V[G], q.s !== n) {
                      var st;
                      H ? st = q.s : st = q.s + q.b;
                      var vt = w.put(q.p, st), ht = vt + st;
                      q.b = vt, q[O] = ht, z.norm || (rt.push(ht), q.hasB && rt.push(vt));
                    }
                  z.norm || (U._extremes[E._id] = T.findExtremes(E, rt, {
                    // N.B. we don't stack base with 'base',
                    // so set tozero:true always!
                    tozero: !0,
                    padded: !0
                  }));
                }
              }
              function M(E) {
                for (var w = E.traces, z = 0; z < w.length; z++)
                  for (var O = w[z], B = 0; B < O.length; B++) {
                    var V = O[B];
                    V.s !== n && E.put(V.p, V.b + V.s);
                  }
              }
              function C(E, w) {
                for (var z = E.traces, O = 0; O < z.length; O++) {
                  var B = z[O], V = B[0].trace;
                  if (V.base === void 0)
                    for (var U = new p([B], {
                      posAxis: w,
                      sepNegVal: !0,
                      overlapNoMerge: !0
                    }), H = 0; H < B.length; H++) {
                      var F = B[H];
                      if (F.p !== n) {
                        var G = U.put(F.p, F.b + F.s);
                        G && (F.b = G);
                      }
                    }
                }
              }
              function m(E, w, z) {
                var O = w.traces, B = h(E), V = z.norm === "fraction" ? 1 : 100, U = V / 1e9, H = E.l2c(E.c2l(0)), F = z.mode === "stack" ? V : H;
                function G(X) {
                  return b(E.c2l(X)) && (X < H - U || X > F + U || !b(H));
                }
                for (var q = 0; q < O.length; q++) {
                  for (var rt = O[q], st = rt[0].trace, vt = [], ht = !1, et = !1, Q = 0; Q < rt.length; Q++) {
                    var j = rt[Q];
                    if (j.s !== n) {
                      var at = Math.abs(V / w.get(j.p, j.s));
                      j.b *= at, j.s *= at;
                      var ut = j.b, nt = ut + j.s;
                      j[B] = nt, vt.push(nt), et = et || G(nt), j.hasB && (vt.push(ut), et = et || G(ut)), (!j.hasB || !j.b) && (ht = !0);
                    }
                  }
                  st._extremes[E._id] = T.findExtremes(E, vt, {
                    tozero: ht,
                    padded: et
                  });
                }
              }
              function L(E, w, z, O) {
                for (var B = h(O), V = 0; V < E.length; V++)
                  for (var U = E[V], H = 0; H < U.length; H++) {
                    var F = U[H], G = F[B];
                    F._sMin = w[G], F._sMax = z[G];
                  }
              }
              function d(E, w) {
                var z = h(w), O = {}, B, V, U, H = 1 / 0, F = -1 / 0;
                for (B = 0; B < E.length; B++)
                  for (U = E[B], V = 0; V < U.length; V++) {
                    var G = U[V].p;
                    b(G) && (H = Math.min(H, G), F = Math.max(F, G));
                  }
                var q = 1e4 / (F - H), rt = O.round = function(pt) {
                  return String(Math.round(q * (pt - H)));
                }, st = {}, vt = {}, ht = E.some(function(pt) {
                  var wt = pt[0].trace;
                  return "marker" in wt && wt.marker.cornerradius;
                });
                for (B = 0; B < E.length; B++) {
                  U = E[B], U[0].t.extents = O;
                  var et = U[0].t.poffset, Q = P(et);
                  for (V = 0; V < U.length; V++) {
                    var j = U[V], at = j[z] - j.w / 2;
                    if (b(at)) {
                      var ut = j[z] + j.w / 2, nt = rt(j.p);
                      O[nt] ? O[nt] = [Math.min(at, O[nt][0]), Math.max(ut, O[nt][1])] : O[nt] = [at, ut];
                    }
                    if (j.p0 = j.p + (Q ? et[V] : et), j.p1 = j.p0 + j.w, j.s0 = j.b, j.s1 = j.s0 + j.s, ht) {
                      var X = Math.min(j.s0, j.s1) || 0, ct = Math.max(j.s0, j.s1) || 0, lt = j[z];
                      st[lt] = lt in st ? Math.min(st[lt], X) : X, vt[lt] = lt in vt ? Math.max(vt[lt], ct) : ct;
                    }
                  }
                }
                ht && L(E, st, vt, w);
              }
              function h(E) {
                return E._id.charAt(0);
              }
              Y.exports = {
                crossTraceCalc: u,
                setGroupPositions: t
              };
            }
          ),
          /***/
          17550: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(34809), n = e(78766), s = e(33626), T = e(99867), A = e(99669), p = e(59760), u = e(36301), t = e(81481), r = P.coerceFont;
              function i(y, g, x, c) {
                function v(C, m) {
                  return P.coerce(y, g, t, C, m);
                }
                var f = T(y, g, c, v);
                if (!f) {
                  g.visible = !1;
                  return;
                }
                A(y, g, c, v), v("xhoverformat"), v("yhoverformat"), v("zorder"), v("orientation", g.x && !g.y ? "h" : "v"), v("base"), v("offset"), v("width"), v("text"), v("hovertext"), v("hovertemplate");
                var _ = v("textposition");
                o(y, g, c, v, _, {
                  moduleHasSelected: !0,
                  moduleHasUnselected: !0,
                  moduleHasConstrain: !0,
                  moduleHasCliponaxis: !0,
                  moduleHasTextangle: !0,
                  moduleHasInsideanchor: !0
                }), p(y, g, v, x, c);
                var S = (g.marker.line || {}).color, M = s.getComponentMethod("errorbars", "supplyDefaults");
                M(y, g, S || n.defaultLine, {
                  axis: "y"
                }), M(y, g, S || n.defaultLine, {
                  axis: "x",
                  inherit: "y"
                }), P.coerceSelectionMarkerOpacity(g, v);
              }
              function a(y, g) {
                var x, c;
                function v(S, M) {
                  return P.coerce(c._input, c, t, S, M);
                }
                for (var f = 0; f < y.length; f++)
                  if (c = y[f], c.type === "bar") {
                    x = c._input;
                    var _ = v("marker.cornerradius", g.barcornerradius);
                    c.marker && (c.marker.cornerradius = l(_)), g.barmode === "group" && u(x, c, g, v);
                  }
              }
              function l(y) {
                if (b(y)) {
                  if (y = +y, y >= 0) return y;
                } else if (typeof y == "string" && (y = y.trim(), y.slice(-1) === "%" && b(y.slice(0, -1)) && (y = +y.slice(0, -1), y >= 0)))
                  return y + "%";
              }
              function o(y, g, x, c, v, f) {
                f = f || {};
                var _ = f.moduleHasSelected !== !1, S = f.moduleHasUnselected !== !1, M = f.moduleHasConstrain !== !1, C = f.moduleHasCliponaxis !== !1, m = f.moduleHasTextangle !== !1, L = f.moduleHasInsideanchor !== !1, d = !!f.hasPathbar, h = Array.isArray(v) || v === "auto", E = h || v === "inside", w = h || v === "outside";
                if (E || w) {
                  var z = r(c, "textfont", x.font), O = P.extendFlat({}, z), B = y.textfont && y.textfont.color, V = !B;
                  if (V && delete O.color, r(c, "insidetextfont", O), d) {
                    var U = P.extendFlat({}, z);
                    V && delete U.color, r(c, "pathbar.textfont", U);
                  }
                  w && r(c, "outsidetextfont", z), _ && c("selected.textfont.color"), S && c("unselected.textfont.color"), M && c("constraintext"), C && c("cliponaxis"), m && c("textangle"), c("texttemplate");
                }
                E && L && c("insidetextanchor");
              }
              Y.exports = {
                supplyDefaults: i,
                crossTraceDefaults: a,
                handleText: o,
                validateCornerradius: l
              };
            }
          ),
          /***/
          59541: (
            /***/
            function(Y) {
              Y.exports = function(e, b, P) {
                return e.x = "xVal" in b ? b.xVal : b.x, e.y = "yVal" in b ? b.yVal : b.y, b.xa && (e.xaxis = b.xa), b.ya && (e.yaxis = b.ya), P.orientation === "h" ? (e.label = e.y, e.value = e.x) : (e.label = e.x, e.value = e.y), e;
              };
            }
          ),
          /***/
          42843: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(65657), n = e(34809).isArrayOrTypedArray;
              K.coerceString = function(s, T, A) {
                if (typeof T == "string") {
                  if (T || !s.noBlank) return T;
                } else if ((typeof T == "number" || T === !0) && !s.strict)
                  return String(T);
                return A !== void 0 ? A : s.dflt;
              }, K.coerceNumber = function(s, T, A) {
                if (b(T)) {
                  T = +T;
                  var p = s.min, u = s.max, t = p !== void 0 && T < p || u !== void 0 && T > u;
                  if (!t) return T;
                }
                return A !== void 0 ? A : s.dflt;
              }, K.coerceColor = function(s, T, A) {
                return P(T).isValid() ? T : A !== void 0 ? A : s.dflt;
              }, K.coerceEnumerated = function(s, T, A) {
                return s.coerceNumber && (T = +T), s.values.indexOf(T) !== -1 ? T : A !== void 0 ? A : s.dflt;
              }, K.getValue = function(s, T) {
                var A;
                return n(s) ? T < s.length && (A = s[T]) : A = s, A;
              }, K.getLineWidth = function(s, T) {
                var A = 0 < T.mlw ? T.mlw : n(s.marker.line.width) ? 0 : s.marker.line.width;
                return A;
              };
            }
          ),
          /***/
          91664: (
            /***/
            function(Y, K, e) {
              var b = e(32141), P = e(33626), n = e(78766), s = e(34809).fillText, T = e(42843).getLineWidth, A = e(29714).hoverLabelText, p = e(63821).BADNUM;
              function u(i, a, l, o, y) {
                var g = t(i, a, l, o, y);
                if (g) {
                  var x = g.cd, c = x[0].trace, v = x[g.index];
                  return g.color = r(c, v), P.getComponentMethod("errorbars", "hoverInfo")(v, c, g), [g];
                }
              }
              function t(i, a, l, o, y) {
                var g = i.cd, x = g[0].trace, c = g[0].t, v = o === "closest", f = x.type === "waterfall", _ = i.maxHoverDistance, S = i.maxSpikeDistance, M, C, m, L, d, h, E;
                x.orientation === "h" ? (M = l, C = a, m = "y", L = "x", d = vt, h = q) : (M = a, C = l, m = "x", L = "y", h = vt, d = q);
                var w = x[m + "period"], z = v || w;
                function O(pt) {
                  return V(pt, -1);
                }
                function B(pt) {
                  return V(pt, 1);
                }
                function V(pt, wt) {
                  var Et = pt.w;
                  return pt[m] + wt * Et / 2;
                }
                function U(pt) {
                  return pt[m + "End"] - pt[m + "Start"];
                }
                var H = v ? O : w ? function(pt) {
                  return pt.p - U(pt) / 2;
                } : function(pt) {
                  return Math.min(O(pt), pt.p - c.bardelta / 2);
                }, F = v ? B : w ? function(pt) {
                  return pt.p + U(pt) / 2;
                } : function(pt) {
                  return Math.max(B(pt), pt.p + c.bardelta / 2);
                };
                function G(pt, wt, Et) {
                  return y.finiteRange && (Et = 0), b.inbox(pt - M, wt - M, Et + Math.min(1, Math.abs(wt - pt) / E) - 1);
                }
                function q(pt) {
                  return G(H(pt), F(pt), _);
                }
                function rt(pt) {
                  return G(O(pt), B(pt), S);
                }
                function st(pt) {
                  var wt = pt[L];
                  if (f) {
                    var Et = Math.abs(pt.rawS) || 0;
                    C > 0 ? wt += Et : C < 0 && (wt -= Et);
                  }
                  return wt;
                }
                function vt(pt) {
                  var wt = C, Et = pt.b, Ct = st(pt);
                  return b.inbox(Et - wt, Ct - wt, _ + (Ct - wt) / (Ct - Et) - 1);
                }
                function ht(pt) {
                  var wt = C, Et = pt.b, Ct = st(pt);
                  return b.inbox(Et - wt, Ct - wt, S + (Ct - wt) / (Ct - Et) - 1);
                }
                var et = i[m + "a"], Q = i[L + "a"];
                E = Math.abs(et.r2c(et.range[1]) - et.r2c(et.range[0]));
                function j(pt) {
                  return (d(pt) + h(pt)) / 2;
                }
                var at = b.getDistanceFunction(o, d, h, j);
                if (b.getClosest(g, at, i), i.index !== !1 && g[i.index].p !== p) {
                  z || (H = function(pt) {
                    return Math.min(O(pt), pt.p - c.bargroupwidth / 2);
                  }, F = function(pt) {
                    return Math.max(B(pt), pt.p + c.bargroupwidth / 2);
                  });
                  var ut = i.index, nt = g[ut], X = x.base ? nt.b + nt.s : nt.s;
                  i[L + "0"] = i[L + "1"] = Q.c2p(nt[L], !0), i[L + "LabelVal"] = X;
                  var ct = c.extents[c.extents.round(nt.p)];
                  i[m + "0"] = et.c2p(v ? H(nt) : ct[0], !0), i[m + "1"] = et.c2p(v ? F(nt) : ct[1], !0);
                  var lt = nt.orig_p !== void 0;
                  return i[m + "LabelVal"] = lt ? nt.orig_p : nt.p, i.labelLabel = A(et, i[m + "LabelVal"], x[m + "hoverformat"]), i.valueLabel = A(Q, i[L + "LabelVal"], x[L + "hoverformat"]), i.baseLabel = A(Q, nt.b, x[L + "hoverformat"]), i.spikeDistance = (ht(nt) + rt(nt)) / 2, i[m + "Spike"] = et.c2p(nt.p, !0), s(nt, x, i), i.hovertemplate = x.hovertemplate, i;
                }
              }
              function r(i, a) {
                var l = a.mcc || i.marker.color, o = a.mlcc || i.marker.line.color, y = T(i, a);
                if (n.opacity(l)) return l;
                if (n.opacity(o) && y) return o;
              }
              Y.exports = {
                hoverPoints: u,
                hoverOnBars: t,
                getTraceColor: r
              };
            }
          ),
          /***/
          58218: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(81481),
                layoutAttributes: e(25412),
                supplyDefaults: e(17550).supplyDefaults,
                crossTraceDefaults: e(17550).crossTraceDefaults,
                supplyLayoutDefaults: e(78931),
                calc: e(67565),
                crossTraceCalc: e(24782).crossTraceCalc,
                colorbar: e(21146),
                arraysToCalcdata: e(35374),
                plot: e(32995).plot,
                style: e(6851).style,
                styleOnSelect: e(6851).styleOnSelect,
                hoverPoints: e(91664).hoverPoints,
                eventData: e(59541),
                selectPoints: e(88384),
                moduleType: "trace",
                name: "bar",
                basePlotModule: e(37703),
                categories: ["bar-like", "cartesian", "svg", "bar", "oriented", "errorBarsOK", "showLegend", "zoomScale"],
                animatable: !0,
                meta: {}
              };
            }
          ),
          /***/
          25412: (
            /***/
            function(Y) {
              Y.exports = {
                barmode: {
                  valType: "enumerated",
                  values: ["stack", "group", "overlay", "relative"],
                  dflt: "group",
                  editType: "calc"
                },
                barnorm: {
                  valType: "enumerated",
                  values: ["", "fraction", "percent"],
                  dflt: "",
                  editType: "calc"
                },
                bargap: {
                  valType: "number",
                  min: 0,
                  max: 1,
                  editType: "calc"
                },
                bargroupgap: {
                  valType: "number",
                  min: 0,
                  max: 1,
                  dflt: 0,
                  editType: "calc"
                },
                barcornerradius: {
                  valType: "any",
                  editType: "calc"
                }
              };
            }
          ),
          /***/
          78931: (
            /***/
            function(Y, K, e) {
              var b = e(33626), P = e(29714), n = e(34809), s = e(25412), T = e(17550).validateCornerradius;
              Y.exports = function(A, p, u) {
                function t(f, _) {
                  return n.coerce(A, p, s, f, _);
                }
                for (var r = !1, i = !1, a = !1, l = {}, o = t("barmode"), y = 0; y < u.length; y++) {
                  var g = u[y];
                  if (b.traceIs(g, "bar") && g.visible) r = !0;
                  else continue;
                  if (o === "group") {
                    var x = g.xaxis + g.yaxis;
                    l[x] && (a = !0), l[x] = !0;
                  }
                  if (g.visible && g.type === "histogram") {
                    var c = P.getFromId({
                      _fullLayout: p
                    }, g[g.orientation === "v" ? "xaxis" : "yaxis"]);
                    c.type !== "category" && (i = !0);
                  }
                }
                if (!r) {
                  delete p.barmode;
                  return;
                }
                o !== "overlay" && t("barnorm"), t("bargap", i && !a ? 0 : 0.2), t("bargroupgap");
                var v = t("barcornerradius");
                p.barcornerradius = T(v);
              };
            }
          ),
          /***/
          32995: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(10721), n = e(34809), s = e(30635), T = e(78766), A = e(62203), p = e(33626), u = e(29714).tickText, t = e(84102), r = t.recordMinTextSize, i = t.clearMinTextSize, a = e(6851), l = e(42843), o = e(56155), y = e(81481), g = y.text, x = y.textposition, c = e(36040).appendArrayPointValue, v = o.TEXTPAD;
              function f(q) {
                return q.id;
              }
              function _(q) {
                if (q.ids)
                  return f;
              }
              function S(q) {
                return (q > 0) - (q < 0);
              }
              function M(q, rt) {
                return q < rt ? 1 : -1;
              }
              function C(q, rt, st, vt) {
                var ht = [], et = [], Q = vt ? rt : st, j = vt ? st : rt;
                return ht[0] = Q.c2p(q.s0, !0), et[0] = j.c2p(q.p0, !0), ht[1] = Q.c2p(q.s1, !0), et[1] = j.c2p(q.p1, !0), vt ? [ht, et] : [et, ht];
              }
              function m(q, rt, st, vt) {
                if (!rt.uniformtext.mode && L(st)) {
                  var ht;
                  return vt && (ht = vt()), q.transition().duration(st.duration).ease(st.easing).each("end", function() {
                    ht && ht();
                  }).each("interrupt", function() {
                    ht && ht();
                  });
                } else
                  return q;
              }
              function L(q) {
                return q && q.duration > 0;
              }
              function d(q, rt, st, vt, ht, et) {
                var Q = rt.xaxis, j = rt.yaxis, at = q._fullLayout, ut = q._context.staticPlot;
                ht || (ht = {
                  mode: at.barmode,
                  norm: at.barmode,
                  gap: at.bargap,
                  groupgap: at.bargroupgap
                }, i("bar", at));
                var nt = n.makeTraceGroups(vt, st, "trace bars").each(function(X) {
                  var ct = b.select(this), lt = X[0].trace, pt = X[0].t, wt = lt.type === "waterfall", Et = lt.type === "funnel", Ct = lt.type === "histogram", Gt = lt.type === "bar", Jt = Gt || Et, Qt = 0;
                  wt && lt.connector.visible && lt.connector.mode === "between" && (Qt = lt.connector.line.width / 2);
                  var Vt = lt.orientation === "h", zt = L(ht), Rt = n.ensureSingle(ct, "g", "points"), Wt = _(lt), kt = Rt.selectAll("g.point").data(n.identity, Wt);
                  kt.enter().append("g").classed("point", !0), kt.exit().remove(), kt.each(function(ge, _e) {
                    var ce = b.select(this), ae = C(ge, Q, j, Vt), Se = ae[0][0], ze = ae[0][1], Ne = ae[1][0], Ve = ae[1][1], Oe = (Vt ? ze - Se : Ve - Ne) === 0;
                    Oe && Jt && l.getLineWidth(lt, ge) && (Oe = !1), Oe || (Oe = !P(Se) || !P(ze) || !P(Ne) || !P(Ve)), ge.isBlank = Oe, Oe && (Vt ? ze = Se : Ve = Ne), Qt && !Oe && (Vt ? (Se -= M(Se, ze) * Qt, ze += M(Se, ze) * Qt) : (Ne -= M(Ne, Ve) * Qt, Ve += M(Ne, Ve) * Qt));
                    var ur, ie;
                    if (lt.type === "waterfall") {
                      if (!Oe) {
                        var $t = lt[ge.dir].marker;
                        ur = $t.line.width, ie = $t.color;
                      }
                    } else
                      ur = l.getLineWidth(lt, ge), ie = ge.mc || lt.marker.color;
                    function jt(ue) {
                      var Pe = b.round(ur / 2 % 1, 2);
                      return ht.gap === 0 && ht.groupgap === 0 ? b.round(Math.round(ue) - Pe, 2) : ue;
                    }
                    function ee(ue, Pe, Ue) {
                      return Ue && ue === Pe ? ue : Math.abs(ue - Pe) >= 2 ? jt(ue) : (
                        // but if it's very thin, expand it so it's
                        // necessarily visible, even if it might overlap
                        // its neighbor
                        ue > Pe ? Math.ceil(ue) : Math.floor(ue)
                      );
                    }
                    var Bt = T.opacity(ie), Xt = Bt < 1 || ur > 0.01 ? jt : ee;
                    q._context.staticPlot || (Se = Xt(Se, ze, Vt), ze = Xt(ze, Se, Vt), Ne = Xt(Ne, Ve, !Vt), Ve = Xt(Ve, Ne, !Vt));
                    var Zt = Vt ? Q.c2p : j.c2p, ye;
                    ge.s0 > 0 ? ye = ge._sMax : ge.s0 < 0 ? ye = ge._sMin : ye = ge.s1 > 0 ? ge._sMax : ge._sMin;
                    function Mt(ue, Pe) {
                      if (!ue) return 0;
                      var Ue = Math.abs(Vt ? Ve - Ne : ze - Se), Ye = Math.abs(Vt ? ze - Se : Ve - Ne), rr = Xt(Math.abs(Zt(ye, !0) - Zt(0, !0))), lr = ge.hasB ? Math.min(Ue / 2, Ye / 2) : Math.min(Ue / 2, rr), hr;
                      if (Pe === "%") {
                        var Sr = Math.min(50, ue);
                        hr = Ue * (Sr / 100);
                      } else
                        hr = ue;
                      return Xt(Math.max(Math.min(hr, lr), 0));
                    }
                    var St = Gt || Ct ? Mt(pt.cornerradiusvalue, pt.cornerradiusform) : 0, Lt, te, fe = "M" + Se + "," + Ne + "V" + Ve + "H" + ze + "V" + Ne + "Z", Me = 0;
                    if (St && ge.s) {
                      var ir = S(ge.s0) === 0 || S(ge.s) === S(ge.s0) ? ge.s1 : ge.s0;
                      if (Me = Xt(ge.hasB ? 0 : Math.abs(Zt(ye, !0) - Zt(ir, !0))), Me < St) {
                        var mr = M(Se, ze), Xe = M(Ne, Ve), xe = mr === -Xe ? 1 : 0;
                        if (Vt)
                          if (ge.hasB)
                            Lt = "M" + (Se + St * mr) + "," + Ne + "A " + St + "," + St + " 0 0 " + xe + " " + Se + "," + (Ne + St * Xe) + "V" + (Ve - St * Xe) + "A " + St + "," + St + " 0 0 " + xe + " " + (Se + St * mr) + "," + Ve + "H" + (ze - St * mr) + "A " + St + "," + St + " 0 0 " + xe + " " + ze + "," + (Ve - St * Xe) + "V" + (Ne + St * Xe) + "A " + St + "," + St + " 0 0 " + xe + " " + (ze - St * mr) + "," + Ne + "Z";
                          else {
                            te = Math.abs(ze - Se) + Me;
                            var me = te < St ? St - Math.sqrt(te * (2 * St - te)) : 0, Le = Me > 0 ? Math.sqrt(Me * (2 * St - Me)) : 0, qt = mr > 0 ? Math.max : Math.min;
                            Lt = "M" + Se + "," + Ne + "V" + (Ve - me * Xe) + "H" + qt(ze - (St - Me) * mr, Se) + "A " + St + "," + St + " 0 0 " + xe + " " + ze + "," + (Ve - St * Xe - Le) + "V" + (Ne + St * Xe + Le) + "A " + St + "," + St + " 0 0 " + xe + " " + qt(ze - (St - Me) * mr, Se) + "," + (Ne + me * Xe) + "Z";
                          }
                        else if (ge.hasB)
                          Lt = "M" + (Se + St * mr) + "," + Ne + "A " + St + "," + St + " 0 0 " + xe + " " + Se + "," + (Ne + St * Xe) + "V" + (Ve - St * Xe) + "A " + St + "," + St + " 0 0 " + xe + " " + (Se + St * mr) + "," + Ve + "H" + (ze - St * mr) + "A " + St + "," + St + " 0 0 " + xe + " " + ze + "," + (Ve - St * Xe) + "V" + (Ne + St * Xe) + "A " + St + "," + St + " 0 0 " + xe + " " + (ze - St * mr) + "," + Ne + "Z";
                        else {
                          te = Math.abs(Ve - Ne) + Me;
                          var De = te < St ? St - Math.sqrt(te * (2 * St - te)) : 0, Je = Me > 0 ? Math.sqrt(Me * (2 * St - Me)) : 0, dr = Xe > 0 ? Math.max : Math.min;
                          Lt = "M" + (Se + De * mr) + "," + Ne + "V" + dr(Ve - (St - Me) * Xe, Ne) + "A " + St + "," + St + " 0 0 " + xe + " " + (Se + St * mr - Je) + "," + Ve + "H" + (ze - St * mr + Je) + "A " + St + "," + St + " 0 0 " + xe + " " + (ze - De * mr) + "," + dr(Ve - (St - Me) * Xe, Ne) + "V" + Ne + "Z";
                        }
                      } else
                        Lt = fe;
                    } else
                      Lt = fe;
                    var qe = m(n.ensureSingle(ce, "path"), at, ht, et);
                    if (qe.style("vector-effect", ut ? "none" : "non-scaling-stroke").attr("d", isNaN((ze - Se) * (Ve - Ne)) || Oe && q._context.staticPlot ? "M0,0Z" : Lt).call(A.setClipUrl, rt.layerClipId, q), !at.uniformtext.mode && zt) {
                      var we = A.makePointStyleFns(lt);
                      A.singlePointStyle(ge, qe, lt, we, q);
                    }
                    h(q, rt, ce, X, _e, Se, ze, Ne, Ve, St, Me, ht, et), rt.layerClipId && A.hideOutsideRangePoint(ge, ce.select("text"), Q, j, lt.xcalendar, lt.ycalendar);
                  });
                  var re = lt.cliponaxis === !1;
                  A.setClipUrl(ct, re ? null : rt.layerClipId, q);
                });
                p.getComponentMethod("errorbars", "plot")(q, nt, rt, ht);
              }
              function h(q, rt, st, vt, ht, et, Q, j, at, ut, nt, X, ct) {
                var lt = rt.xaxis, pt = rt.yaxis, wt = q._fullLayout, Et;
                function Ct(te, fe, Me) {
                  var ir = n.ensureSingle(te, "text").text(fe).attr({
                    class: "bartext bartext-" + Et,
                    "text-anchor": "middle",
                    // prohibit tex interpretation until we can handle
                    // tex and regular text together
                    "data-notex": 1
                  }).call(A.font, Me).call(s.convertToTspans, q);
                  return ir;
                }
                var Gt = vt[0].trace, Jt = Gt.orientation === "h", Qt = U(wt, vt, ht, lt, pt);
                Et = H(Gt, ht);
                var Vt = X.mode === "stack" || X.mode === "relative", zt = vt[ht], Rt = !Vt || zt._outmost, Wt = zt.hasB, kt = ut && ut - nt > v;
                if (!Qt || Et === "none" || (zt.isBlank || et === Q || j === at) && (Et === "auto" || Et === "inside")) {
                  st.select("text").remove();
                  return;
                }
                var re = wt.font, ge = a.getBarColor(vt[ht], Gt), _e = a.getInsideTextFont(Gt, ht, re, ge), ce = a.getOutsideTextFont(Gt, ht, re), ae = Gt.insidetextanchor || "end", Se = st.datum();
                Jt ? lt.type === "log" && Se.s0 <= 0 && (lt.range[0] < lt.range[1] ? et = 0 : et = lt._length) : pt.type === "log" && Se.s0 <= 0 && (pt.range[0] < pt.range[1] ? j = pt._length : j = 0);
                var ze = Math.abs(Q - et), Ne = Math.abs(at - j), Ve = ze - 2 * v, Oe = Ne - 2 * v, ur, ie, $t, jt, ee;
                if (Et === "outside" && !Rt && !zt.hasB && (Et = "inside"), Et === "auto")
                  if (Rt) {
                    Et = "inside", ee = n.ensureUniformFontSize(q, _e), ur = Ct(st, Qt, ee), ie = A.bBox(ur.node()), $t = ie.width, jt = ie.height;
                    var Bt = $t > 0 && jt > 0, Xt;
                    kt ? Wt ? Xt = E(Ve - 2 * ut, Oe, $t, jt, Jt) || E(Ve, Oe - 2 * ut, $t, jt, Jt) : Jt ? Xt = E(Ve - (ut - nt), Oe, $t, jt, Jt) || E(Ve, Oe - 2 * (ut - nt), $t, jt, Jt) : Xt = E(Ve, Oe - (ut - nt), $t, jt, Jt) || E(Ve - 2 * (ut - nt), Oe, $t, jt, Jt) : Xt = E(Ve, Oe, $t, jt, Jt), Bt && Xt ? Et = "inside" : (Et = "outside", ur.remove(), ur = null);
                  } else
                    Et = "inside";
                if (!ur) {
                  ee = n.ensureUniformFontSize(q, Et === "outside" ? ce : _e), ur = Ct(st, Qt, ee);
                  var Zt = ur.attr("transform");
                  if (ur.attr("transform", ""), ie = A.bBox(ur.node()), $t = ie.width, jt = ie.height, ur.attr("transform", Zt), $t <= 0 || jt <= 0) {
                    ur.remove();
                    return;
                  }
                }
                var ye = Gt.textangle, Mt, St;
                Et === "outside" ? (St = Gt.constraintext === "both" || Gt.constraintext === "outside", Mt = V(et, Q, j, at, ie, {
                  isHorizontal: Jt,
                  constrained: St,
                  angle: ye
                })) : (St = Gt.constraintext === "both" || Gt.constraintext === "inside", Mt = O(et, Q, j, at, ie, {
                  isHorizontal: Jt,
                  constrained: St,
                  angle: ye,
                  anchor: ae,
                  hasB: Wt,
                  r: ut,
                  overhead: nt
                })), Mt.fontSize = ee.size, r(Gt.type === "histogram" ? "bar" : Gt.type, Mt, wt), zt.transform = Mt;
                var Lt = m(ur, wt, X, ct);
                n.setTransormAndDisplay(Lt, Mt);
              }
              function E(q, rt, st, vt, ht) {
                if (q < 0 || rt < 0) return !1;
                var et = st <= q && vt <= rt, Q = st <= rt && vt <= q, j = ht ? q >= st * (rt / vt) : rt >= vt * (q / st);
                return et || Q || j;
              }
              function w(q) {
                return q === "auto" ? 0 : q;
              }
              function z(q, rt) {
                var st = Math.PI / 180 * rt, vt = Math.abs(Math.sin(st)), ht = Math.abs(Math.cos(st));
                return {
                  x: q.width * ht + q.height * vt,
                  y: q.width * vt + q.height * ht
                };
              }
              function O(q, rt, st, vt, ht, et) {
                var Q = !!et.isHorizontal, j = !!et.constrained, at = et.angle || 0, ut = et.anchor, nt = ut === "end", X = ut === "start", ct = et.leftToRight || 0, lt = (ct + 1) / 2, pt = 1 - lt, wt = et.hasB, Et = et.r, Ct = et.overhead, Gt = ht.width, Jt = ht.height, Qt = Math.abs(rt - q), Vt = Math.abs(vt - st), zt = Qt > 2 * v && Vt > 2 * v ? v : 0;
                Qt -= 2 * zt, Vt -= 2 * zt;
                var Rt = w(at);
                at === "auto" && !(Gt <= Qt && Jt <= Vt) && (Gt > Qt || Jt > Vt) && (!(Gt > Vt || Jt > Qt) || Gt < Jt != Qt < Vt) && (Rt += 90);
                var Wt = z(ht, Rt), kt, re;
                if (Et && Et - Ct > v) {
                  var ge = B(q, rt, st, vt, Wt, Et, Ct, Q, wt);
                  kt = ge.scale, re = ge.pad;
                } else
                  kt = 1, j && (kt = Math.min(1, Qt / Wt.x, Vt / Wt.y)), re = 0;
                var _e = ht.left * pt + ht.right * lt, ce = (ht.top + ht.bottom) / 2, ae = (q + v) * pt + (rt - v) * lt, Se = (st + vt) / 2, ze = 0, Ne = 0;
                if (X || nt) {
                  var Ve = (Q ? Wt.x : Wt.y) / 2;
                  Et && (nt || wt) && (zt += re);
                  var Oe = Q ? M(q, rt) : M(st, vt);
                  Q ? X ? (ae = q + Oe * zt, ze = -Oe * Ve) : (ae = rt - Oe * zt, ze = Oe * Ve) : X ? (Se = st + Oe * zt, Ne = -Oe * Ve) : (Se = vt - Oe * zt, Ne = Oe * Ve);
                }
                return {
                  textX: _e,
                  textY: ce,
                  targetX: ae,
                  targetY: Se,
                  anchorX: ze,
                  anchorY: Ne,
                  scale: kt,
                  rotate: Rt
                };
              }
              function B(q, rt, st, vt, ht, et, Q, j, at) {
                var ut = Math.max(0, Math.abs(rt - q) - 2 * v), nt = Math.max(0, Math.abs(vt - st) - 2 * v), X = et - v, ct = Q ? X - Math.sqrt(X * X - (X - Q) * (X - Q)) : X, lt = at ? X * 2 : j ? X - Q : 2 * ct, pt = at ? X * 2 : j ? 2 * ct : X - Q, wt, Et, Ct, Gt, Jt;
                return ht.y / ht.x >= nt / (ut - lt) ? Gt = nt / ht.y : ht.y / ht.x <= (nt - pt) / ut ? Gt = ut / ht.x : !at && j ? (wt = ht.x * ht.x + ht.y * ht.y / 4, Et = -2 * ht.x * (ut - X) - ht.y * (nt / 2 - X), Ct = (ut - X) * (ut - X) + (nt / 2 - X) * (nt / 2 - X) - X * X, Gt = (-Et + Math.sqrt(Et * Et - 4 * wt * Ct)) / (2 * wt)) : at ? (wt = (ht.x * ht.x + ht.y * ht.y) / 4, Et = -ht.x * (ut / 2 - X) - ht.y * (nt / 2 - X), Ct = (ut / 2 - X) * (ut / 2 - X) + (nt / 2 - X) * (nt / 2 - X) - X * X, Gt = (-Et + Math.sqrt(Et * Et - 4 * wt * Ct)) / (2 * wt)) : (wt = ht.x * ht.x / 4 + ht.y * ht.y, Et = -ht.x * (ut / 2 - X) - 2 * ht.y * (nt - X), Ct = (ut / 2 - X) * (ut / 2 - X) + (nt - X) * (nt - X) - X * X, Gt = (-Et + Math.sqrt(Et * Et - 4 * wt * Ct)) / (2 * wt)), Gt = Math.min(1, Gt), j ? Jt = Math.max(0, X - Math.sqrt(Math.max(0, X * X - (X - (nt - ht.y * Gt) / 2) * (X - (nt - ht.y * Gt) / 2))) - Q) : Jt = Math.max(0, X - Math.sqrt(Math.max(0, X * X - (X - (ut - ht.x * Gt) / 2) * (X - (ut - ht.x * Gt) / 2))) - Q), {
                  scale: Gt,
                  pad: Jt
                };
              }
              function V(q, rt, st, vt, ht, et) {
                var Q = !!et.isHorizontal, j = !!et.constrained, at = et.angle || 0, ut = ht.width, nt = ht.height, X = Math.abs(rt - q), ct = Math.abs(vt - st), lt;
                Q ? lt = ct > 2 * v ? v : 0 : lt = X > 2 * v ? v : 0;
                var pt = 1;
                j && (pt = Q ? Math.min(1, ct / nt) : Math.min(1, X / ut));
                var wt = w(at), Et = z(ht, wt), Ct = (Q ? Et.x : Et.y) / 2, Gt = (ht.left + ht.right) / 2, Jt = (ht.top + ht.bottom) / 2, Qt = (q + rt) / 2, Vt = (st + vt) / 2, zt = 0, Rt = 0, Wt = Q ? M(rt, q) : M(st, vt);
                return Q ? (Qt = rt - Wt * lt, zt = Wt * Ct) : (Vt = vt + Wt * lt, Rt = -Wt * Ct), {
                  textX: Gt,
                  textY: Jt,
                  targetX: Qt,
                  targetY: Vt,
                  anchorX: zt,
                  anchorY: Rt,
                  scale: pt,
                  rotate: wt
                };
              }
              function U(q, rt, st, vt, ht) {
                var et = rt[0].trace, Q = et.texttemplate, j;
                return Q ? j = F(q, rt, st, vt, ht) : et.textinfo ? j = G(rt, st, vt, ht) : j = l.getValue(et.text, st), l.coerceString(g, j);
              }
              function H(q, rt) {
                var st = l.getValue(q.textposition, rt);
                return l.coerceEnumerated(x, st);
              }
              function F(q, rt, st, vt, ht) {
                var et = rt[0].trace, Q = n.castOption(et, st, "texttemplate");
                if (!Q) return "";
                var j = et.type === "histogram", at = et.type === "waterfall", ut = et.type === "funnel", nt = et.orientation === "h", X, ct, lt, pt;
                nt ? (X = "y", ct = ht, lt = "x", pt = vt) : (X = "x", ct = vt, lt = "y", pt = ht);
                function wt(zt) {
                  return u(ct, ct.c2l(zt), !0).text;
                }
                function Et(zt) {
                  return u(pt, pt.c2l(zt), !0).text;
                }
                var Ct = rt[st], Gt = {};
                Gt.label = Ct.p, Gt.labelLabel = Gt[X + "Label"] = wt(Ct.p);
                var Jt = n.castOption(et, Ct.i, "text");
                (Jt === 0 || Jt) && (Gt.text = Jt), Gt.value = Ct.s, Gt.valueLabel = Gt[lt + "Label"] = Et(Ct.s);
                var Qt = {};
                c(Qt, et, Ct.i), (j || Qt.x === void 0) && (Qt.x = nt ? Gt.value : Gt.label), (j || Qt.y === void 0) && (Qt.y = nt ? Gt.label : Gt.value), (j || Qt.xLabel === void 0) && (Qt.xLabel = nt ? Gt.valueLabel : Gt.labelLabel), (j || Qt.yLabel === void 0) && (Qt.yLabel = nt ? Gt.labelLabel : Gt.valueLabel), at && (Gt.delta = +Ct.rawS || Ct.s, Gt.deltaLabel = Et(Gt.delta), Gt.final = Ct.v, Gt.finalLabel = Et(Gt.final), Gt.initial = Gt.final - Gt.delta, Gt.initialLabel = Et(Gt.initial)), ut && (Gt.value = Ct.s, Gt.valueLabel = Et(Gt.value), Gt.percentInitial = Ct.begR, Gt.percentInitialLabel = n.formatPercent(Ct.begR), Gt.percentPrevious = Ct.difR, Gt.percentPreviousLabel = n.formatPercent(Ct.difR), Gt.percentTotal = Ct.sumR, Gt.percenTotalLabel = n.formatPercent(Ct.sumR));
                var Vt = n.castOption(et, Ct.i, "customdata");
                return Vt && (Gt.customdata = Vt), n.texttemplateString(Q, Gt, q._d3locale, Qt, Gt, et._meta || {});
              }
              function G(q, rt, st, vt) {
                var ht = q[0].trace, et = ht.orientation === "h", Q = ht.type === "waterfall", j = ht.type === "funnel";
                function at(Vt) {
                  var zt = et ? vt : st;
                  return u(zt, Vt, !0).text;
                }
                function ut(Vt) {
                  var zt = et ? st : vt;
                  return u(zt, +Vt, !0).text;
                }
                var nt = ht.textinfo, X = q[rt], ct = nt.split("+"), lt = [], pt, wt = function(Vt) {
                  return ct.indexOf(Vt) !== -1;
                };
                if (wt("label") && lt.push(at(q[rt].p)), wt("text") && (pt = n.castOption(ht, X.i, "text"), (pt === 0 || pt) && lt.push(pt)), Q) {
                  var Et = +X.rawS || X.s, Ct = X.v, Gt = Ct - Et;
                  wt("initial") && lt.push(ut(Gt)), wt("delta") && lt.push(ut(Et)), wt("final") && lt.push(ut(Ct));
                }
                if (j) {
                  wt("value") && lt.push(ut(X.s));
                  var Jt = 0;
                  wt("percent initial") && Jt++, wt("percent previous") && Jt++, wt("percent total") && Jt++;
                  var Qt = Jt > 1;
                  wt("percent initial") && (pt = n.formatPercent(X.begR), Qt && (pt += " of initial"), lt.push(pt)), wt("percent previous") && (pt = n.formatPercent(X.difR), Qt && (pt += " of previous"), lt.push(pt)), wt("percent total") && (pt = n.formatPercent(X.sumR), Qt && (pt += " of total"), lt.push(pt));
                }
                return lt.join("<br>");
              }
              Y.exports = {
                plot: d,
                toMoveInsideBar: O
              };
            }
          ),
          /***/
          88384: (
            /***/
            function(Y) {
              Y.exports = function(b, P) {
                var n = b.cd, s = b.xaxis, T = b.yaxis, A = n[0].trace, p = A.type === "funnel", u = A.orientation === "h", t = [], r;
                if (P === !1)
                  for (r = 0; r < n.length; r++)
                    n[r].selected = 0;
                else
                  for (r = 0; r < n.length; r++) {
                    var i = n[r], a = "ct" in i ? i.ct : K(i, s, T, u, p);
                    P.contains(a, !1, r, b) ? (t.push({
                      pointNumber: r,
                      x: s.c2d(i.x),
                      y: T.c2d(i.y)
                    }), i.selected = 1) : i.selected = 0;
                  }
                return t;
              };
              function K(e, b, P, n, s) {
                var T = b.c2p(n ? e.s0 : e.p0, !0), A = b.c2p(n ? e.s1 : e.p1, !0), p = P.c2p(n ? e.p0 : e.s0, !0), u = P.c2p(n ? e.p1 : e.s1, !0);
                return s ? [(T + A) / 2, (p + u) / 2] : n ? [A, (p + u) / 2] : [(T + A) / 2, u];
              }
            }
          ),
          /***/
          2880: (
            /***/
            function(Y, K, e) {
              Y.exports = P;
              var b = e(34809).distinctVals;
              function P(n, s) {
                this.traces = n, this.sepNegVal = s.sepNegVal, this.overlapNoMerge = s.overlapNoMerge;
                for (var T = 1 / 0, A = s.posAxis._id.charAt(0), p = [], u = 0; u < n.length; u++) {
                  for (var t = n[u], r = 0; r < t.length; r++) {
                    var i = t[r], a = i.p;
                    a === void 0 && (a = i[A]), a !== void 0 && p.push(a);
                  }
                  t[0] && t[0].width1 && (T = Math.min(t[0].width1, T));
                }
                this.positions = p;
                var l = b(p);
                this.distinctPositions = l.vals, l.vals.length === 1 && T !== 1 / 0 ? this.minDiff = T : this.minDiff = Math.min(l.minDiff, T);
                var o = (s.posAxis || {}).type;
                (o === "category" || o === "multicategory") && (this.minDiff = 1), this.binWidth = this.minDiff, this.bins = {};
              }
              P.prototype.put = function(s, T) {
                var A = this.getLabel(s, T), p = this.bins[A] || 0;
                return this.bins[A] = p + T, p;
              }, P.prototype.get = function(s, T) {
                var A = this.getLabel(s, T);
                return this.bins[A] || 0;
              }, P.prototype.getLabel = function(s, T) {
                var A = T < 0 && this.sepNegVal ? "v" : "^", p = this.overlapNoMerge ? s : Math.round(s / this.binWidth);
                return A + p;
              };
            }
          ),
          /***/
          6851: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(78766), n = e(62203), s = e(34809), T = e(33626), A = e(84102).resizeText, p = e(81481), u = p.textfont, t = p.insidetextfont, r = p.outsidetextfont, i = e(42843);
              function a(C) {
                var m = b.select(C).selectAll('g[class^="barlayer"]').selectAll("g.trace");
                A(C, m, "bar");
                var L = m.size(), d = C._fullLayout;
                m.style("opacity", function(h) {
                  return h[0].trace.opacity;
                }).each(function(h) {
                  (d.barmode === "stack" && L > 1 || d.bargap === 0 && d.bargroupgap === 0 && !h[0].trace.marker.line.width) && b.select(this).attr("shape-rendering", "crispEdges");
                }), m.selectAll("g.points").each(function(h) {
                  var E = b.select(this), w = h[0].trace;
                  l(E, w, C);
                }), T.getComponentMethod("errorbars", "style")(m);
              }
              function l(C, m, L) {
                n.pointStyle(C.selectAll("path"), m, L), o(C, m, L);
              }
              function o(C, m, L) {
                C.selectAll("text").each(function(d) {
                  var h = b.select(this), E = s.ensureUniformFontSize(L, c(h, d, m, L));
                  n.font(h, E);
                });
              }
              function y(C, m, L) {
                var d = m[0].trace;
                d.selectedpoints ? g(L, d, C) : (l(L, d, C), T.getComponentMethod("errorbars", "style")(L));
              }
              function g(C, m, L) {
                n.selectedPointStyle(C.selectAll("path"), m), x(C.selectAll("text"), m, L);
              }
              function x(C, m, L) {
                C.each(function(d) {
                  var h = b.select(this), E;
                  if (d.selected) {
                    E = s.ensureUniformFontSize(L, c(h, d, m, L));
                    var w = m.selected.textfont && m.selected.textfont.color;
                    w && (E.color = w), n.font(h, E);
                  } else
                    n.selectedTextStyle(h, m);
                });
              }
              function c(C, m, L, d) {
                var h = d._fullLayout.font, E = L.textfont;
                if (C.classed("bartext-inside")) {
                  var w = M(m, L);
                  E = f(L, m.i, h, w);
                } else C.classed("bartext-outside") && (E = _(L, m.i, h));
                return E;
              }
              function v(C, m, L) {
                return S(u, C.textfont, m, L);
              }
              function f(C, m, L, d) {
                var h = v(C, m, L), E = C._input.textfont === void 0 || C._input.textfont.color === void 0 || Array.isArray(C.textfont.color) && C.textfont.color[m] === void 0;
                return E && (h = {
                  color: P.contrast(d),
                  family: h.family,
                  size: h.size,
                  weight: h.weight,
                  style: h.style,
                  variant: h.variant,
                  textcase: h.textcase,
                  lineposition: h.lineposition,
                  shadow: h.shadow
                }), S(t, C.insidetextfont, m, h);
              }
              function _(C, m, L) {
                var d = v(C, m, L);
                return S(r, C.outsidetextfont, m, d);
              }
              function S(C, m, L, d) {
                m = m || {};
                var h = i.getValue(m.family, L), E = i.getValue(m.size, L), w = i.getValue(m.color, L), z = i.getValue(m.weight, L), O = i.getValue(m.style, L), B = i.getValue(m.variant, L), V = i.getValue(m.textcase, L), U = i.getValue(m.lineposition, L), H = i.getValue(m.shadow, L);
                return {
                  family: i.coerceString(C.family, h, d.family),
                  size: i.coerceNumber(C.size, E, d.size),
                  color: i.coerceColor(C.color, w, d.color),
                  weight: i.coerceString(C.weight, z, d.weight),
                  style: i.coerceString(C.style, O, d.style),
                  variant: i.coerceString(C.variant, B, d.variant),
                  textcase: i.coerceString(C.variant, V, d.textcase),
                  lineposition: i.coerceString(C.variant, U, d.lineposition),
                  shadow: i.coerceString(C.variant, H, d.shadow)
                };
              }
              function M(C, m) {
                return m.type === "waterfall" ? m[C.dir].marker.color : C.mcc || C.mc || m.marker.color;
              }
              Y.exports = {
                style: a,
                styleTextPoints: o,
                styleOnSelect: y,
                getInsideTextFont: f,
                getOutsideTextFont: _,
                getBarColor: M,
                resizeText: A
              };
            }
          ),
          /***/
          59760: (
            /***/
            function(Y, K, e) {
              var b = e(78766), P = e(65477).hasColorscale, n = e(39356), s = e(34809).coercePattern;
              Y.exports = function(A, p, u, t, r) {
                var i = u("marker.color", t), a = P(A, "marker");
                a && n(A, p, r, u, {
                  prefix: "marker.",
                  cLetter: "c"
                }), u("marker.line.color", b.defaultLine), P(A, "marker.line") && n(A, p, r, u, {
                  prefix: "marker.line.",
                  cLetter: "c"
                }), u("marker.line.width"), u("marker.opacity"), s(u, "marker.pattern", i, a), u("selected.marker.color"), u("unselected.marker.color");
              };
            }
          ),
          /***/
          84102: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(34809);
              function n(p, u, t) {
                var r = p._fullLayout, i = r["_" + t + "Text_minsize"];
                if (i) {
                  var a = r.uniformtext.mode === "hide", l;
                  switch (t) {
                    case "funnelarea":
                    case "pie":
                    case "sunburst":
                      l = "g.slice";
                      break;
                    case "treemap":
                    case "icicle":
                      l = "g.slice, g.pathbar";
                      break;
                    default:
                      l = "g.points > g.point";
                  }
                  u.selectAll(l).each(function(o) {
                    var y = o.transform;
                    if (y) {
                      y.scale = a && y.hide ? 0 : i / y.fontSize;
                      var g = b.select(this).select("text");
                      P.setTransormAndDisplay(g, y);
                    }
                  });
                }
              }
              function s(p, u, t) {
                if (t.uniformtext.mode) {
                  var r = A(p), i = t.uniformtext.minsize, a = u.scale * u.fontSize;
                  u.hide = a < i, t[r] = t[r] || 1 / 0, u.hide || (t[r] = Math.min(t[r], Math.max(a, i)));
                }
              }
              function T(p, u) {
                var t = A(p);
                u[t] = void 0;
              }
              function A(p) {
                return "_" + p + "Text_minsize";
              }
              Y.exports = {
                recordMinTextSize: s,
                clearMinTextSize: T,
                resizeText: n
              };
            }
          ),
          /***/
          32225: (
            /***/
            function(Y, K, e) {
              var b = e(3208).rb, P = e(93049).extendFlat, n = e(8738), s = e(81481);
              Y.exports = {
                r: n.r,
                theta: n.theta,
                r0: n.r0,
                dr: n.dr,
                theta0: n.theta0,
                dtheta: n.dtheta,
                thetaunit: n.thetaunit,
                // orientation: {
                //     valType: 'enumerated',
                //     values: ['radial', 'angular'],
                //     editType: 'calc+clearAxisTypes',
                //
                // },
                base: P({}, s.base, {}),
                offset: P({}, s.offset, {}),
                width: P({}, s.width, {}),
                text: P({}, s.text, {}),
                hovertext: P({}, s.hovertext, {}),
                // textposition: {},
                // textfont: {},
                // insidetextfont: {},
                // outsidetextfont: {},
                // constraintext: {},
                // cliponaxis: extendFlat({}, barAttrs.cliponaxis, {dflt: false}),
                marker: T(),
                hoverinfo: n.hoverinfo,
                hovertemplate: b(),
                selected: s.selected,
                unselected: s.unselected
                // error_x (error_r, error_theta)
                // error_y
              };
              function T() {
                var A = P({}, s.marker);
                return delete A.cornerradius, A;
              }
            }
          ),
          /***/
          27941: (
            /***/
            function(Y, K, e) {
              var b = e(65477).hasColorscale, P = e(28379), n = e(34809).isArrayOrTypedArray, s = e(35374), T = e(24782).setGroupPositions, A = e(48861), p = e(33626).traceIs, u = e(34809).extendFlat;
              function t(i, a) {
                for (var l = i._fullLayout, o = a.subplot, y = l[o].radialaxis, g = l[o].angularaxis, x = y.makeCalcdata(a, "r"), c = g.makeCalcdata(a, "theta"), v = a._length, f = new Array(v), _ = x, S = c, M = 0; M < v; M++)
                  f[M] = {
                    p: S[M],
                    s: _[M]
                  };
                function C(m) {
                  var L = a[m];
                  L !== void 0 && (a["_" + m] = n(L) ? g.makeCalcdata(a, m) : g.d2c(L, a.thetaunit));
                }
                return g.type === "linear" && (C("width"), C("offset")), b(a, "marker") && P(i, a, {
                  vals: a.marker.color,
                  containerStr: "marker",
                  cLetter: "c"
                }), b(a, "marker.line") && P(i, a, {
                  vals: a.marker.line.color,
                  containerStr: "marker.line",
                  cLetter: "c"
                }), s(f, a), A(f, a), f;
              }
              function r(i, a, l) {
                for (var o = i.calcdata, y = [], g = 0; g < o.length; g++) {
                  var x = o[g], c = x[0].trace;
                  c.visible === !0 && p(c, "bar") && c.subplot === l && y.push(x);
                }
                var v = u({}, a.radialaxis, {
                  _id: "x"
                }), f = a.angularaxis;
                T(i, f, v, y, {
                  mode: a.barmode,
                  norm: a.barnorm,
                  gap: a.bargap,
                  groupgap: a.bargroupgap
                });
              }
              Y.exports = {
                calc: t,
                crossTraceCalc: r
              };
            }
          ),
          /***/
          77318: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(73749).handleRThetaDefaults, n = e(59760), s = e(32225);
              Y.exports = function(A, p, u, t) {
                function r(a, l) {
                  return b.coerce(A, p, s, a, l);
                }
                var i = P(A, p, t, r);
                if (!i) {
                  p.visible = !1;
                  return;
                }
                r("thetaunit"), r("base"), r("offset"), r("width"), r("text"), r("hovertext"), r("hovertemplate"), n(A, p, r, u, t), b.coerceSelectionMarkerOpacity(p, r);
              };
            }
          ),
          /***/
          83080: (
            /***/
            function(Y, K, e) {
              var b = e(32141), P = e(34809), n = e(91664).getTraceColor, s = P.fillText, T = e(29709).makeHoverPointText, A = e(95928).isPtInsidePolygon;
              Y.exports = function(u, t, r) {
                var i = u.cd, a = i[0].trace, l = u.subplot, o = l.radialAxis, y = l.angularAxis, g = l.vangles, x = g ? A : P.isPtInsideSector, c = u.maxHoverDistance, v = y._period || 2 * Math.PI, f = Math.abs(o.g2p(Math.sqrt(t * t + r * r))), _ = Math.atan2(r, t);
                o.range[0] > o.range[1] && (_ += Math.PI);
                var S = function(L) {
                  return x(f, _, [L.rp0, L.rp1], [L.thetag0, L.thetag1], g) ? c + // add a little to the pseudo-distance for wider bars, so that like scatter,
                  // if you are over two overlapping bars, the narrower one wins.
                  Math.min(1, Math.abs(L.thetag1 - L.thetag0) / v) - 1 + // add a gradient so hovering near the end of a
                  // bar makes it a little closer match
                  (L.rp1 - f) / (L.rp1 - L.rp0) - 1 : 1 / 0;
                };
                if (b.getClosest(i, S, u), u.index !== !1) {
                  var M = u.index, C = i[M];
                  u.x0 = u.x1 = C.ct[0], u.y0 = u.y1 = C.ct[1];
                  var m = P.extendFlat({}, C, {
                    r: C.s,
                    theta: C.p
                  });
                  return s(C, a, u), T(m, a, l, u), u.hovertemplate = a.hovertemplate, u.color = n(a, C), u.xLabelVal = u.yLabelVal = void 0, C.s < 0 && (u.idealAlign = "left"), [u];
                }
              };
            }
          ),
          /***/
          89362: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                moduleType: "trace",
                name: "barpolar",
                basePlotModule: e(31645),
                categories: ["polar", "bar", "showLegend"],
                attributes: e(32225),
                layoutAttributes: e(42956),
                supplyDefaults: e(77318),
                supplyLayoutDefaults: e(60507),
                calc: e(27941).calc,
                crossTraceCalc: e(27941).crossTraceCalc,
                plot: e(11627),
                colorbar: e(21146),
                formatLabels: e(33368),
                style: e(6851).style,
                styleOnSelect: e(6851).styleOnSelect,
                hoverPoints: e(83080),
                selectPoints: e(88384),
                meta: {}
              };
            }
          ),
          /***/
          42956: (
            /***/
            function(Y) {
              Y.exports = {
                barmode: {
                  valType: "enumerated",
                  values: ["stack", "overlay"],
                  dflt: "stack",
                  editType: "calc"
                },
                bargap: {
                  valType: "number",
                  dflt: 0.1,
                  min: 0,
                  max: 1,
                  editType: "calc"
                }
              };
            }
          ),
          /***/
          60507: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(42956);
              Y.exports = function(n, s, T) {
                var A = {}, p;
                function u(i, a) {
                  return b.coerce(n[p] || {}, s[p], P, i, a);
                }
                for (var t = 0; t < T.length; t++) {
                  var r = T[t];
                  r.type === "barpolar" && r.visible === !0 && (p = r.subplot, A[p] || (u("barmode"), u("bargap"), A[p] = 1));
                }
              };
            }
          ),
          /***/
          11627: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(10721), n = e(34809), s = e(62203), T = e(95928);
              Y.exports = function(u, t, r) {
                var i = u._context.staticPlot, a = t.xaxis, l = t.yaxis, o = t.radialAxis, y = t.angularAxis, g = A(t), x = t.layers.frontplot.select("g.barlayer");
                n.makeTraceGroups(x, r, "trace bars").each(function() {
                  var c = b.select(this), v = n.ensureSingle(c, "g", "points"), f = v.selectAll("g.point").data(n.identity);
                  f.enter().append("g").style("vector-effect", i ? "none" : "non-scaling-stroke").style("stroke-miterlimit", 2).classed("point", !0), f.exit().remove(), f.each(function(_) {
                    var S = b.select(this), M = _.rp0 = o.c2p(_.s0), C = _.rp1 = o.c2p(_.s1), m = _.thetag0 = y.c2g(_.p0), L = _.thetag1 = y.c2g(_.p1), d;
                    if (!P(M) || !P(C) || !P(m) || !P(L) || M === C || m === L)
                      d = "M0,0Z";
                    else {
                      var h = o.c2g(_.s1), E = (m + L) / 2;
                      _.ct = [a.c2p(h * Math.cos(E)), l.c2p(h * Math.sin(E))], d = g(M, C, m, L);
                    }
                    n.ensureSingle(S, "path").attr("d", d);
                  }), s.setClipUrl(c, t._hasClipOnAxisFalse ? t.clipIds.forTraces : null, u);
                });
              };
              function A(p) {
                var u = p.cxx, t = p.cyy;
                return p.vangles ? function(r, i, a, l) {
                  var o, y;
                  n.angleDelta(a, l) > 0 ? (o = a, y = l) : (o = l, y = a);
                  var g = T.findEnclosingVertexAngles(o, p.vangles)[0], x = T.findEnclosingVertexAngles(y, p.vangles)[1], c = [g, (o + y) / 2, x];
                  return T.pathPolygonAnnulus(r, i, o, y, c, u, t);
                } : function(r, i, a, l) {
                  return n.pathAnnulus(r, i, a, l, u, t);
                };
              }
            }
          ),
          /***/
          64625: (
            /***/
            function(Y, K, e) {
              var b = e(19326), P = e(36640), n = e(81481), s = e(10229), T = e(80712).axisHoverFormat, A = e(3208).rb, p = e(93049).extendFlat, u = P.marker, t = u.line;
              Y.exports = {
                y: {
                  valType: "data_array",
                  editType: "calc+clearAxisTypes"
                },
                x: {
                  valType: "data_array",
                  editType: "calc+clearAxisTypes"
                },
                x0: {
                  valType: "any",
                  editType: "calc+clearAxisTypes"
                },
                y0: {
                  valType: "any",
                  editType: "calc+clearAxisTypes"
                },
                dx: {
                  valType: "number",
                  editType: "calc"
                },
                dy: {
                  valType: "number",
                  editType: "calc"
                },
                xperiod: P.xperiod,
                yperiod: P.yperiod,
                xperiod0: P.xperiod0,
                yperiod0: P.yperiod0,
                xperiodalignment: P.xperiodalignment,
                yperiodalignment: P.yperiodalignment,
                xhoverformat: T("x"),
                yhoverformat: T("y"),
                name: {
                  valType: "string",
                  editType: "calc+clearAxisTypes"
                },
                q1: {
                  valType: "data_array",
                  editType: "calc+clearAxisTypes"
                },
                median: {
                  valType: "data_array",
                  editType: "calc+clearAxisTypes"
                },
                q3: {
                  valType: "data_array",
                  editType: "calc+clearAxisTypes"
                },
                lowerfence: {
                  valType: "data_array",
                  editType: "calc"
                },
                upperfence: {
                  valType: "data_array",
                  editType: "calc"
                },
                notched: {
                  valType: "boolean",
                  editType: "calc"
                },
                notchwidth: {
                  valType: "number",
                  min: 0,
                  max: 0.5,
                  dflt: 0.25,
                  editType: "calc"
                },
                notchspan: {
                  valType: "data_array",
                  editType: "calc"
                },
                // TODO
                // maybe add
                // - loweroutlierbound / upperoutlierbound
                // - lowersuspectedoutlierbound / uppersuspectedoutlierbound
                boxpoints: {
                  valType: "enumerated",
                  values: ["all", "outliers", "suspectedoutliers", !1],
                  editType: "calc"
                },
                jitter: {
                  valType: "number",
                  min: 0,
                  max: 1,
                  editType: "calc"
                },
                pointpos: {
                  valType: "number",
                  min: -2,
                  max: 2,
                  editType: "calc"
                },
                sdmultiple: {
                  valType: "number",
                  min: 0,
                  editType: "calc",
                  dflt: 1
                },
                sizemode: {
                  valType: "enumerated",
                  values: ["quartiles", "sd"],
                  editType: "calc",
                  dflt: "quartiles"
                },
                boxmean: {
                  valType: "enumerated",
                  values: [!0, "sd", !1],
                  editType: "calc"
                },
                mean: {
                  valType: "data_array",
                  editType: "calc"
                },
                sd: {
                  valType: "data_array",
                  editType: "calc"
                },
                orientation: {
                  valType: "enumerated",
                  values: ["v", "h"],
                  editType: "calc+clearAxisTypes"
                },
                quartilemethod: {
                  valType: "enumerated",
                  values: ["linear", "exclusive", "inclusive"],
                  dflt: "linear",
                  editType: "calc"
                },
                width: {
                  valType: "number",
                  min: 0,
                  dflt: 0,
                  editType: "calc"
                },
                marker: {
                  outliercolor: {
                    valType: "color",
                    dflt: "rgba(0, 0, 0, 0)",
                    editType: "style"
                  },
                  symbol: p({}, u.symbol, {
                    arrayOk: !1,
                    editType: "plot"
                  }),
                  opacity: p({}, u.opacity, {
                    arrayOk: !1,
                    dflt: 1,
                    editType: "style"
                  }),
                  angle: p({}, u.angle, {
                    arrayOk: !1,
                    editType: "calc"
                  }),
                  size: p({}, u.size, {
                    arrayOk: !1,
                    editType: "calc"
                  }),
                  color: p({}, u.color, {
                    arrayOk: !1,
                    editType: "style"
                  }),
                  line: {
                    color: p({}, t.color, {
                      arrayOk: !1,
                      dflt: s.defaultLine,
                      editType: "style"
                    }),
                    width: p({}, t.width, {
                      arrayOk: !1,
                      dflt: 0,
                      editType: "style"
                    }),
                    outliercolor: {
                      valType: "color",
                      editType: "style"
                    },
                    outlierwidth: {
                      valType: "number",
                      min: 0,
                      dflt: 1,
                      editType: "style"
                    },
                    editType: "style"
                  },
                  editType: "plot"
                },
                line: {
                  color: {
                    valType: "color",
                    editType: "style"
                  },
                  width: {
                    valType: "number",
                    min: 0,
                    dflt: 2,
                    editType: "style"
                  },
                  editType: "plot"
                },
                fillcolor: b(),
                whiskerwidth: {
                  valType: "number",
                  min: 0,
                  max: 1,
                  dflt: 0.5,
                  editType: "calc"
                },
                showwhiskers: {
                  valType: "boolean",
                  editType: "calc"
                },
                offsetgroup: n.offsetgroup,
                alignmentgroup: n.alignmentgroup,
                selected: {
                  marker: P.selected.marker,
                  editType: "style"
                },
                unselected: {
                  marker: P.unselected.marker,
                  editType: "style"
                },
                text: p({}, P.text, {}),
                hovertext: p({}, P.hovertext, {}),
                hovertemplate: A({}),
                hoveron: {
                  valType: "flaglist",
                  flags: ["boxes", "points"],
                  dflt: "boxes+points",
                  editType: "style"
                },
                zorder: P.zorder
              };
            }
          ),
          /***/
          89429: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(29714), n = e(40528), s = e(34809), T = e(63821).BADNUM, A = s._;
              Y.exports = function(_, S) {
                var M = _._fullLayout, C = P.getFromId(_, S.xaxis || "x"), m = P.getFromId(_, S.yaxis || "y"), L = [], d = S.type === "violin" ? "_numViolins" : "_numBoxes", h, E, w, z, O, B, V;
                S.orientation === "h" ? (w = C, z = "x", O = m, B = "y", V = !!S.yperiodalignment) : (w = m, z = "y", O = C, B = "x", V = !!S.xperiodalignment);
                var U = p(S, B, O, M[d]), H = U[0], F = U[1], G = s.distinctVals(H, O), q = G.vals, rt = G.minDiff / 2, st, vt, ht, et, Q, j, at = (S.boxpoints || S.points) === "all" ? s.identity : function(Oe) {
                  return Oe.v < st.lf || Oe.v > st.uf;
                };
                if (S._hasPreCompStats) {
                  var ut = S[z], nt = function(Oe) {
                    return w.d2c((S[Oe] || [])[h]);
                  }, X = 1 / 0, ct = -1 / 0;
                  for (h = 0; h < S._length; h++) {
                    var lt = H[h];
                    if (b(lt)) {
                      if (st = {}, st.pos = st[B] = lt, V && F && (st.orig_p = F[h]), st.q1 = nt("q1"), st.med = nt("median"), st.q3 = nt("q3"), vt = [], ut && s.isArrayOrTypedArray(ut[h]))
                        for (E = 0; E < ut[h].length; E++)
                          j = w.d2c(ut[h][E]), j !== T && (Q = {
                            v: j,
                            i: [h, E]
                          }, i(Q, S, [h, E]), vt.push(Q));
                      if (st.pts = vt.sort(l), ht = st[z] = vt.map(o), et = ht.length, st.med !== T && st.q1 !== T && st.q3 !== T && st.med >= st.q1 && st.q3 >= st.med) {
                        var pt = nt("lowerfence");
                        st.lf = pt !== T && pt <= st.q1 ? pt : y(st, ht, et);
                        var wt = nt("upperfence");
                        st.uf = wt !== T && wt >= st.q3 ? wt : g(st, ht, et);
                        var Et = nt("mean");
                        st.mean = Et !== T ? Et : et ? s.mean(ht, et) : (st.q1 + st.q3) / 2;
                        var Ct = nt("sd");
                        st.sd = Et !== T && Ct >= 0 ? Ct : et ? s.stdev(ht, et, st.mean) : st.q3 - st.q1, st.lo = x(st), st.uo = c(st);
                        var Gt = nt("notchspan");
                        Gt = Gt !== T && Gt > 0 ? Gt : v(st, et), st.ln = st.med - Gt, st.un = st.med + Gt;
                        var Jt = st.lf, Qt = st.uf;
                        S.boxpoints && ht.length && (Jt = Math.min(Jt, ht[0]), Qt = Math.max(Qt, ht[et - 1])), S.notched && (Jt = Math.min(Jt, st.ln), Qt = Math.max(Qt, st.un)), st.min = Jt, st.max = Qt;
                      } else {
                        s.warn(["Invalid input - make sure that q1 <= median <= q3", "q1 = " + st.q1, "median = " + st.med, "q3 = " + st.q3].join(`
`));
                        var Vt;
                        st.med !== T ? Vt = st.med : st.q1 !== T ? st.q3 !== T ? Vt = (st.q1 + st.q3) / 2 : Vt = st.q1 : st.q3 !== T ? Vt = st.q3 : Vt = 0, st.med = Vt, st.q1 = st.q3 = Vt, st.lf = st.uf = Vt, st.mean = st.sd = Vt, st.ln = st.un = Vt, st.min = st.max = Vt;
                      }
                      X = Math.min(X, st.min), ct = Math.max(ct, st.max), st.pts2 = vt.filter(at), L.push(st);
                    }
                  }
                  S._extremes[w._id] = P.findExtremes(w, [X, ct], {
                    padded: !0
                  });
                } else {
                  var zt = w.makeCalcdata(S, z), Rt = u(q, rt), Wt = q.length, kt = t(Wt);
                  for (h = 0; h < S._length; h++)
                    if (j = zt[h], !!b(j)) {
                      var re = s.findBin(H[h], Rt);
                      re >= 0 && re < Wt && (Q = {
                        v: j,
                        i: h
                      }, i(Q, S, h), kt[re].push(Q));
                    }
                  var ge = 1 / 0, _e = -1 / 0, ce = S.quartilemethod, ae = ce === "exclusive", Se = ce === "inclusive";
                  for (h = 0; h < Wt; h++)
                    if (kt[h].length > 0) {
                      if (st = {}, st.pos = st[B] = q[h], vt = st.pts = kt[h].sort(l), ht = st[z] = vt.map(o), et = ht.length, st.min = ht[0], st.max = ht[et - 1], st.mean = s.mean(ht, et), st.sd = s.stdev(ht, et, st.mean) * S.sdmultiple, st.med = s.interp(ht, 0.5), et % 2 && (ae || Se)) {
                        var ze, Ne;
                        ae ? (ze = ht.slice(0, et / 2), Ne = ht.slice(et / 2 + 1)) : Se && (ze = ht.slice(0, et / 2 + 1), Ne = ht.slice(et / 2)), st.q1 = s.interp(ze, 0.5), st.q3 = s.interp(Ne, 0.5);
                      } else
                        st.q1 = s.interp(ht, 0.25), st.q3 = s.interp(ht, 0.75);
                      st.lf = y(st, ht, et), st.uf = g(st, ht, et), st.lo = x(st), st.uo = c(st);
                      var Ve = v(st, et);
                      st.ln = st.med - Ve, st.un = st.med + Ve, ge = Math.min(ge, st.ln), _e = Math.max(_e, st.un), st.pts2 = vt.filter(at), L.push(st);
                    }
                  S.notched && s.isTypedArray(zt) && (zt = Array.from(zt)), S._extremes[w._id] = P.findExtremes(w, S.notched ? zt.concat([ge, _e]) : zt, {
                    padded: !0
                  });
                }
                return a(L, S), L.length > 0 ? (L[0].t = {
                  num: M[d],
                  dPos: rt,
                  posLetter: B,
                  valLetter: z,
                  labels: {
                    med: A(_, "median:"),
                    min: A(_, "min:"),
                    q1: A(_, "q1:"),
                    q3: A(_, "q3:"),
                    max: A(_, "max:"),
                    mean: S.boxmean === "sd" || S.sizemode === "sd" ? A(_, "mean ± σ:").replace("σ", S.sdmultiple === 1 ? "σ" : S.sdmultiple + "σ") : (
                      // displaying mean +- Nσ whilst supporting translations
                      A(_, "mean:")
                    ),
                    lf: A(_, "lower fence:"),
                    uf: A(_, "upper fence:")
                  }
                }, M[d]++, L) : [{
                  t: {
                    empty: !0
                  }
                }];
              };
              function p(f, _, S, M) {
                var C = _ in f, m = _ + "0" in f, L = "d" + _ in f;
                if (C || m && L) {
                  var d = S.makeCalcdata(f, _), h = n(f, S, _, d).vals;
                  return [h, d];
                }
                var E;
                m ? E = f[_ + "0"] : "name" in f && (S.type === "category" || b(f.name) && ["linear", "log"].indexOf(S.type) !== -1 || s.isDateTime(f.name) && S.type === "date") ? E = f.name : E = M;
                for (var w = S.type === "multicategory" ? S.r2c_just_indices(E) : S.d2c(E, 0, f[_ + "calendar"]), z = f._length, O = new Array(z), B = 0; B < z; B++) O[B] = w;
                return [O];
              }
              function u(f, _) {
                for (var S = f.length, M = new Array(S + 1), C = 0; C < S; C++)
                  M[C] = f[C] - _;
                return M[S] = f[S - 1] + _, M;
              }
              function t(f) {
                for (var _ = new Array(f), S = 0; S < f; S++)
                  _[S] = [];
                return _;
              }
              var r = {
                text: "tx",
                hovertext: "htx"
              };
              function i(f, _, S) {
                for (var M in r)
                  s.isArrayOrTypedArray(_[M]) && (Array.isArray(S) ? s.isArrayOrTypedArray(_[M][S[0]]) && (f[r[M]] = _[M][S[0]][S[1]]) : f[r[M]] = _[M][S]);
              }
              function a(f, _) {
                if (s.isArrayOrTypedArray(_.selectedpoints))
                  for (var S = 0; S < f.length; S++) {
                    for (var M = f[S].pts || [], C = {}, m = 0; m < M.length; m++)
                      C[M[m].i] = m;
                    s.tagSelected(M, _, C);
                  }
              }
              function l(f, _) {
                return f.v - _.v;
              }
              function o(f) {
                return f.v;
              }
              function y(f, _, S) {
                return S === 0 ? f.q1 : Math.min(f.q1, _[Math.min(s.findBin(2.5 * f.q1 - 1.5 * f.q3, _, !0) + 1, S - 1)]);
              }
              function g(f, _, S) {
                return S === 0 ? f.q3 : Math.max(f.q3, _[Math.max(s.findBin(2.5 * f.q3 - 1.5 * f.q1, _), 0)]);
              }
              function x(f) {
                return 4 * f.q1 - 3 * f.q3;
              }
              function c(f) {
                return 4 * f.q3 - 3 * f.q1;
              }
              function v(f, _) {
                return _ === 0 ? 0 : 1.57 * (f.q3 - f.q1) / Math.sqrt(_);
              }
            }
          ),
          /***/
          81606: (
            /***/
            function(Y, K, e) {
              var b = e(29714), P = e(34809), n = e(84391).getAxisGroup, s = ["v", "h"];
              function T(p, u) {
                for (var t = p.calcdata, r = u.xaxis, i = u.yaxis, a = 0; a < s.length; a++) {
                  for (var l = s[a], o = l === "h" ? i : r, y = [], g = 0; g < t.length; g++) {
                    var x = t[g], c = x[0].t, v = x[0].trace;
                    v.visible === !0 && (v.type === "box" || v.type === "candlestick") && !c.empty && (v.orientation || "v") === l && v.xaxis === r._id && v.yaxis === i._id && y.push(g);
                  }
                  A("box", p, y, o);
                }
              }
              function A(p, u, t, r) {
                var i = u.calcdata, a = u._fullLayout, l = r._id, o = l.charAt(0), y, g, x, c = [], v = 0;
                for (y = 0; y < t.length; y++)
                  for (x = i[t[y]], g = 0; g < x.length; g++)
                    c.push(r.c2l(x[g].pos, !0)), v += (x[g].pts2 || []).length;
                if (c.length) {
                  var f = P.distinctVals(c);
                  (r.type === "category" || r.type === "multicategory") && (f.minDiff = 1);
                  var _ = f.minDiff / 2;
                  b.minDtick(r, f.minDiff, f.vals[0], !0);
                  var S = p === "violin" ? "_numViolins" : "_numBoxes", M = a[S], C = a[p + "mode"] === "group" && M > 1, m = 1 - a[p + "gap"], L = 1 - a[p + "groupgap"];
                  for (y = 0; y < t.length; y++) {
                    x = i[t[y]];
                    var d = x[0].trace, h = x[0].t, E = d.width, w = d.side, z, O, B, V;
                    if (E)
                      z = O = V = E / 2, B = 0;
                    else if (z = _, C) {
                      var U = n(a, r._id) + d.orientation, H = a._alignmentOpts[U] || {}, F = H[d.alignmentgroup] || {}, G = Object.keys(F.offsetGroups || {}).length, q = G || M, rt = G ? d._offsetIndex : h.num;
                      O = z * m * L / q, B = 2 * z * (-0.5 + (rt + 0.5) / q) * m, V = z * m / q;
                    } else
                      O = z * m * L, B = 0, V = z;
                    h.dPos = z, h.bPos = B, h.bdPos = O, h.wHover = V;
                    var st, vt, ht = B + O, et, Q, j, at, ut, nt, X = !!E, ct = (d.boxpoints || d.points) && v > 0;
                    if (w === "positive" ? (st = z * (E ? 1 : 0.5), et = ht, vt = et = B) : w === "negative" ? (st = et = B, vt = z * (E ? 1 : 0.5), Q = ht) : (st = vt = z, et = Q = ht), ct) {
                      var lt = d.pointpos, pt = d.jitter, wt = d.marker.size / 2, Et = 0;
                      lt + pt >= 0 && (Et = ht * (lt + pt), Et > st ? (X = !0, ut = wt, j = Et) : Et > et && (ut = wt, j = st)), Et <= st && (j = st);
                      var Ct = 0;
                      lt - pt <= 0 && (Ct = -ht * (lt - pt), Ct > vt ? (X = !0, nt = wt, at = Ct) : Ct > Q && (nt = wt, at = vt)), Ct <= vt && (at = vt);
                    } else
                      j = st, at = vt;
                    var Gt = new Array(x.length);
                    for (g = 0; g < x.length; g++)
                      Gt[g] = x[g].pos;
                    d._extremes[l] = b.findExtremes(r, Gt, {
                      padded: X,
                      vpadminus: at,
                      vpadplus: j,
                      vpadLinearized: !0,
                      // N.B. SVG px-space positive/negative
                      ppadminus: {
                        x: nt,
                        y: ut
                      }[o],
                      ppadplus: {
                        x: ut,
                        y: nt
                      }[o]
                    });
                  }
                }
              }
              Y.exports = {
                crossTraceCalc: T,
                setPositionOffset: A
              };
            }
          ),
          /***/
          62294: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(33626), n = e(78766), s = e(99669), T = e(36301), A = e(9666), p = e(64625);
              function u(a, l, o, y) {
                function g(L, d) {
                  return b.coerce(a, l, p, L, d);
                }
                if (t(a, l, g, y), l.visible !== !1) {
                  s(a, l, y, g), g("xhoverformat"), g("yhoverformat");
                  var x = l._hasPreCompStats;
                  x && (g("lowerfence"), g("upperfence")), g("line.color", (a.marker || {}).color || o), g("line.width"), g("fillcolor", n.addOpacity(l.line.color, 0.5));
                  var c = !1;
                  if (x) {
                    var v = g("mean"), f = g("sd");
                    v && v.length && (c = !0, f && f.length && (c = "sd"));
                  }
                  g("whiskerwidth");
                  var _ = g("sizemode"), S;
                  _ === "quartiles" && (S = g("boxmean", c)), g("showwhiskers", _ === "quartiles"), (_ === "sd" || S === "sd") && g("sdmultiple"), g("width"), g("quartilemethod");
                  var M = !1;
                  if (x) {
                    var C = g("notchspan");
                    C && C.length && (M = !0);
                  } else b.validate(a.notchwidth, p.notchwidth) && (M = !0);
                  var m = g("notched", M);
                  m && g("notchwidth"), r(a, l, g, {
                    prefix: "box"
                  }), g("zorder");
                }
              }
              function t(a, l, o, y) {
                function g(G) {
                  var q = 0;
                  return G && G.length && (q += 1, b.isArrayOrTypedArray(G[0]) && G[0].length && (q += 1)), q;
                }
                function x(G) {
                  return b.validate(a[G], p[G]);
                }
                var c = o("y"), v = o("x"), f;
                if (l.type === "box") {
                  var _ = o("q1"), S = o("median"), M = o("q3");
                  l._hasPreCompStats = _ && _.length && S && S.length && M && M.length, f = Math.min(b.minRowLength(_), b.minRowLength(S), b.minRowLength(M));
                }
                var C = g(c), m = g(v), L = C && b.minRowLength(c), d = m && b.minRowLength(v), h = y.calendar, E = {
                  autotypenumbers: y.autotypenumbers
                }, w, z;
                if (l._hasPreCompStats)
                  switch (String(m) + String(C)) {
                    case "00":
                      var O = x("x0") || x("dx"), B = x("y0") || x("dy");
                      B && !O ? w = "h" : w = "v", z = f;
                      break;
                    case "10":
                      w = "v", z = Math.min(f, d);
                      break;
                    case "20":
                      w = "h", z = Math.min(f, v.length);
                      break;
                    case "01":
                      w = "h", z = Math.min(f, L);
                      break;
                    case "02":
                      w = "v", z = Math.min(f, c.length);
                      break;
                    case "12":
                      w = "v", z = Math.min(f, d, c.length);
                      break;
                    case "21":
                      w = "h", z = Math.min(f, v.length, L);
                      break;
                    case "11":
                      z = 0;
                      break;
                    case "22":
                      var V = !1, U;
                      for (U = 0; U < v.length; U++)
                        if (A(v[U], h, E) === "category") {
                          V = !0;
                          break;
                        }
                      if (V)
                        w = "v", z = Math.min(f, d, c.length);
                      else {
                        for (U = 0; U < c.length; U++)
                          if (A(c[U], h, E) === "category") {
                            V = !0;
                            break;
                          }
                        V ? (w = "h", z = Math.min(f, v.length, L)) : (w = "v", z = Math.min(f, d, c.length));
                      }
                      break;
                  }
                else C > 0 ? (w = "v", m > 0 ? z = Math.min(d, L) : z = Math.min(L)) : m > 0 ? (w = "h", z = Math.min(d)) : z = 0;
                if (!z) {
                  l.visible = !1;
                  return;
                }
                l._length = z;
                var H = o("orientation", w);
                l._hasPreCompStats ? H === "v" && m === 0 ? (o("x0", 0), o("dx", 1)) : H === "h" && C === 0 && (o("y0", 0), o("dy", 1)) : H === "v" && m === 0 ? o("x0") : H === "h" && C === 0 && o("y0");
                var F = P.getComponentMethod("calendars", "handleTraceDefaults");
                F(a, l, ["x", "y"], y);
              }
              function r(a, l, o, y) {
                var g = y.prefix, x = b.coerce2(a, l, p, "marker.outliercolor"), c = o("marker.line.outliercolor"), v = "outliers";
                l._hasPreCompStats ? v = "all" : (x || c) && (v = "suspectedoutliers");
                var f = o(g + "points", v);
                f ? (o("jitter", f === "all" ? 0.3 : 0), o("pointpos", f === "all" ? -1.5 : 0), o("marker.symbol"), o("marker.opacity"), o("marker.size"), o("marker.angle"), o("marker.color", l.line.color), o("marker.line.color"), o("marker.line.width"), f === "suspectedoutliers" && (o("marker.line.outliercolor", l.marker.color), o("marker.line.outlierwidth")), o("selected.marker.color"), o("unselected.marker.color"), o("selected.marker.size"), o("unselected.marker.size"), o("text"), o("hovertext")) : delete l.marker;
                var _ = o("hoveron");
                (_ === "all" || _.indexOf("points") !== -1) && o("hovertemplate"), b.coerceSelectionMarkerOpacity(l, o);
              }
              function i(a, l) {
                var o, y;
                function g(v) {
                  return b.coerce(y._input, y, p, v);
                }
                for (var x = 0; x < a.length; x++) {
                  y = a[x];
                  var c = y.type;
                  (c === "box" || c === "violin") && (o = y._input, l[c + "mode"] === "group" && T(o, y, l, g));
                }
              }
              Y.exports = {
                supplyDefaults: u,
                crossTraceDefaults: i,
                handleSampleDefaults: t,
                handlePointsDefaults: r
              };
            }
          ),
          /***/
          76429: (
            /***/
            function(Y) {
              Y.exports = function(e, b) {
                return b.hoverOnBox && (e.hoverOnBox = b.hoverOnBox), "xVal" in b && (e.x = b.xVal), "yVal" in b && (e.y = b.yVal), b.xa && (e.xaxis = b.xa), b.ya && (e.yaxis = b.ya), e;
              };
            }
          ),
          /***/
          11448: (
            /***/
            function(Y, K, e) {
              var b = e(29714), P = e(34809), n = e(32141), s = e(78766), T = P.fillText;
              function A(t, r, i, a) {
                var l = t.cd, o = l[0].trace, y = o.hoveron, g = [], x;
                return y.indexOf("boxes") !== -1 && (g = g.concat(p(t, r, i, a))), y.indexOf("points") !== -1 && (x = u(t, r, i)), a === "closest" ? x ? [x] : g : (x && g.push(x), g);
              }
              function p(t, r, i, a) {
                var l = t.cd, o = t.xa, y = t.ya, g = l[0].trace, x = l[0].t, c = g.type === "violin", v, f, _, S, M, C, m, L, d, h, E, w = x.bdPos, z, O, B = x.wHover, V = function(Ct) {
                  return _.c2l(Ct.pos) + x.bPos - _.c2l(C);
                };
                c && g.side !== "both" ? (g.side === "positive" && (d = function(Ct) {
                  var Gt = V(Ct);
                  return n.inbox(Gt, Gt + B, h);
                }, z = w, O = 0), g.side === "negative" && (d = function(Ct) {
                  var Gt = V(Ct);
                  return n.inbox(Gt - B, Gt, h);
                }, z = 0, O = w)) : (d = function(Ct) {
                  var Gt = V(Ct);
                  return n.inbox(Gt - B, Gt + B, h);
                }, z = O = w);
                var U;
                c ? U = function(Ct) {
                  return n.inbox(Ct.span[0] - M, Ct.span[1] - M, h);
                } : U = function(Ct) {
                  return n.inbox(Ct.min - M, Ct.max - M, h);
                }, g.orientation === "h" ? (M = r, C = i, m = U, L = d, v = "y", _ = y, f = "x", S = o) : (M = i, C = r, m = d, L = U, v = "x", _ = o, f = "y", S = y);
                var H = Math.min(1, w / Math.abs(_.r2c(_.range[1]) - _.r2c(_.range[0])));
                h = t.maxHoverDistance - H, E = t.maxSpikeDistance - H;
                function F(Ct) {
                  return (m(Ct) + L(Ct)) / 2;
                }
                var G = n.getDistanceFunction(a, m, L, F);
                if (n.getClosest(l, G, t), t.index === !1) return [];
                var q = l[t.index], rt = g.line.color, st = (g.marker || {}).color;
                s.opacity(rt) && g.line.width ? t.color = rt : s.opacity(st) && g.boxpoints ? t.color = st : t.color = g.fillcolor, t[v + "0"] = _.c2p(q.pos + x.bPos - O, !0), t[v + "1"] = _.c2p(q.pos + x.bPos + z, !0), t[v + "LabelVal"] = q.orig_p !== void 0 ? q.orig_p : q.pos;
                var vt = v + "Spike";
                t.spikeDistance = F(q) * E / h, t[vt] = _.c2p(q.pos, !0);
                var ht = g.boxmean || g.sizemode === "sd" || (g.meanline || {}).visible, et = g.boxpoints || g.points, Q = et && ht ? ["max", "uf", "q3", "med", "mean", "q1", "lf", "min"] : et && !ht ? ["max", "uf", "q3", "med", "q1", "lf", "min"] : !et && ht ? ["max", "q3", "med", "mean", "q1", "min"] : ["max", "q3", "med", "q1", "min"], j = S.range[1] < S.range[0];
                g.orientation === (j ? "v" : "h") && Q.reverse();
                for (var at = t.spikeDistance, ut = t[vt], nt = [], X = 0; X < Q.length; X++) {
                  var ct = Q[X];
                  if (ct in q) {
                    var lt = q[ct], pt = S.c2p(lt, !0), wt = P.extendFlat({}, t);
                    wt.attr = ct, wt[f + "0"] = wt[f + "1"] = pt, wt[f + "LabelVal"] = lt, wt[f + "Label"] = (x.labels ? x.labels[ct] + " " : "") + b.hoverLabelText(S, lt, g[f + "hoverformat"]), wt.hoverOnBox = !0, ct === "mean" && "sd" in q && (g.boxmean === "sd" || g.sizemode === "sd") && (wt[f + "err"] = q.sd), wt.hovertemplate = !1, nt.push(wt);
                  }
                }
                t.name = "", t.spikeDistance = void 0, t[vt] = void 0;
                for (var Et = 0; Et < nt.length; Et++)
                  nt[Et].attr !== "med" ? (nt[Et].name = "", nt[Et].spikeDistance = void 0, nt[Et][vt] = void 0) : (nt[Et].spikeDistance = at, nt[Et][vt] = ut);
                return nt;
              }
              function u(t, r, i) {
                for (var a = t.cd, l = t.xa, o = t.ya, y = a[0].trace, g = l.c2p(r), x = o.c2p(i), c, v = function(U) {
                  var H = Math.max(3, U.mrc || 0);
                  return Math.max(Math.abs(l.c2p(U.x) - g) - H, 1 - 3 / H);
                }, f = function(U) {
                  var H = Math.max(3, U.mrc || 0);
                  return Math.max(Math.abs(o.c2p(U.y) - x) - H, 1 - 3 / H);
                }, _ = n.quadrature(v, f), S = !1, M, C, m = 0; m < a.length; m++) {
                  M = a[m];
                  for (var L = 0; L < (M.pts || []).length; L++) {
                    C = M.pts[L];
                    var d = _(C);
                    d <= t.distance && (t.distance = d, S = [m, L]);
                  }
                }
                if (!S) return !1;
                M = a[S[0]], C = M.pts[S[1]];
                var h = l.c2p(C.x, !0), E = o.c2p(C.y, !0), w = C.mrc || 1;
                c = P.extendFlat({}, t, {
                  // corresponds to index in x/y input data array
                  index: C.i,
                  color: (y.marker || {}).color,
                  name: y.name,
                  x0: h - w,
                  x1: h + w,
                  y0: E - w,
                  y1: E + w,
                  spikeDistance: t.distance,
                  hovertemplate: y.hovertemplate
                });
                var z = M.orig_p, O = z !== void 0 ? z : M.pos, B;
                y.orientation === "h" ? (B = o, c.xLabelVal = C.x, c.yLabelVal = O) : (B = l, c.xLabelVal = O, c.yLabelVal = C.y);
                var V = B._id.charAt(0);
                return c[V + "Spike"] = B.c2p(M.pos, !0), T(C, y, c), c;
              }
              Y.exports = {
                hoverPoints: A,
                hoverOnBoxes: p,
                hoverOnPoints: u
              };
            }
          ),
          /***/
          53794: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(64625),
                layoutAttributes: e(64636),
                supplyDefaults: e(62294).supplyDefaults,
                crossTraceDefaults: e(62294).crossTraceDefaults,
                supplyLayoutDefaults: e(65067).supplyLayoutDefaults,
                calc: e(89429),
                crossTraceCalc: e(81606).crossTraceCalc,
                plot: e(95419).plot,
                style: e(59979).style,
                styleOnSelect: e(59979).styleOnSelect,
                hoverPoints: e(11448).hoverPoints,
                eventData: e(76429),
                selectPoints: e(72488),
                moduleType: "trace",
                name: "box",
                basePlotModule: e(37703),
                categories: ["cartesian", "svg", "symbols", "oriented", "box-violin", "showLegend", "boxLayout", "zoomScale"],
                meta: {}
              };
            }
          ),
          /***/
          64636: (
            /***/
            function(Y) {
              Y.exports = {
                boxmode: {
                  valType: "enumerated",
                  values: ["group", "overlay"],
                  dflt: "overlay",
                  editType: "calc"
                },
                boxgap: {
                  valType: "number",
                  min: 0,
                  max: 1,
                  dflt: 0.3,
                  editType: "calc"
                },
                boxgroupgap: {
                  valType: "number",
                  min: 0,
                  max: 1,
                  dflt: 0.3,
                  editType: "calc"
                }
              };
            }
          ),
          /***/
          65067: (
            /***/
            function(Y, K, e) {
              var b = e(33626), P = e(34809), n = e(64636);
              function s(A, p, u, t, r) {
                for (var i = r + "Layout", a = !1, l = 0; l < u.length; l++) {
                  var o = u[l];
                  if (b.traceIs(o, i)) {
                    a = !0;
                    break;
                  }
                }
                a && (t(r + "mode"), t(r + "gap"), t(r + "groupgap"));
              }
              function T(A, p, u) {
                function t(r, i) {
                  return P.coerce(A, p, n, r, i);
                }
                s(A, p, u, t, "box");
              }
              Y.exports = {
                supplyLayoutDefaults: T,
                _supply: s
              };
            }
          ),
          /***/
          95419: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(34809), n = e(62203), s = 5, T = 0.01;
              function A(r, i, a, l) {
                var o = r._context.staticPlot, y = i.xaxis, g = i.yaxis;
                P.makeTraceGroups(l, a, "trace boxes").each(function(x) {
                  var c = b.select(this), v = x[0], f = v.t, _ = v.trace;
                  if (f.wdPos = f.bdPos * _.whiskerwidth, _.visible !== !0 || f.empty) {
                    c.remove();
                    return;
                  }
                  var S, M;
                  _.orientation === "h" ? (S = g, M = y) : (S = y, M = g), p(c, {
                    pos: S,
                    val: M
                  }, _, f, o), u(c, {
                    x: y,
                    y: g
                  }, _, f), t(c, {
                    pos: S,
                    val: M
                  }, _, f);
                });
              }
              function p(r, i, a, l, o) {
                var y = a.orientation === "h", g = i.val, x = i.pos, c = !!x.rangebreaks, v = l.bPos, f = l.wdPos || 0, _ = l.bPosPxOffset || 0, S = a.whiskerwidth || 0, M = a.showwhiskers !== !1, C = a.notched || !1, m = C ? 1 - 2 * a.notchwidth : 1, L, d;
                Array.isArray(l.bdPos) ? (L = l.bdPos[0], d = l.bdPos[1]) : (L = l.bdPos, d = l.bdPos);
                var h = r.selectAll("path.box").data(a.type !== "violin" || a.box.visible ? P.identity : []);
                h.enter().append("path").style("vector-effect", o ? "none" : "non-scaling-stroke").attr("class", "box"), h.exit().remove(), h.each(function(E) {
                  if (E.empty) return b.select(this).attr("d", "M0,0Z");
                  var w = x.c2l(E.pos + v, !0), z = x.l2p(w - L) + _, O = x.l2p(w + d) + _, B = c ? (z + O) / 2 : x.l2p(w) + _, V = a.whiskerwidth, U = c ? z * V + (1 - V) * B : x.l2p(w - f) + _, H = c ? O * V + (1 - V) * B : x.l2p(w + f) + _, F = x.l2p(w - L * m) + _, G = x.l2p(w + d * m) + _, q = a.sizemode === "sd", rt = g.c2p(q ? E.mean - E.sd : E.q1, !0), st = q ? g.c2p(E.mean + E.sd, !0) : g.c2p(E.q3, !0), vt = P.constrain(q ? g.c2p(E.mean, !0) : g.c2p(E.med, !0), Math.min(rt, st) + 1, Math.max(rt, st) - 1), ht = E.lf === void 0 || a.boxpoints === !1 || q, et = g.c2p(ht ? E.min : E.lf, !0), Q = g.c2p(ht ? E.max : E.uf, !0), j = g.c2p(E.ln, !0), at = g.c2p(E.un, !0);
                  y ? b.select(this).attr("d", "M" + vt + "," + F + "V" + G + // median line
                  "M" + rt + "," + z + "V" + O + // left edge
                  (C ? "H" + j + "L" + vt + "," + G + "L" + at + "," + O : "") + // top notched edge
                  "H" + st + // end of the top edge
                  "V" + z + // right edge
                  (C ? "H" + at + "L" + vt + "," + F + "L" + j + "," + z : "") + // bottom notched edge
                  "Z" + // end of the box
                  (M ? "M" + rt + "," + B + "H" + et + "M" + st + "," + B + "H" + Q + // whiskers
                  (S === 0 ? "" : (
                    // whisker caps
                    "M" + et + "," + U + "V" + H + "M" + Q + "," + U + "V" + H
                  )) : "")) : b.select(this).attr("d", "M" + F + "," + vt + "H" + G + // median line
                  "M" + z + "," + rt + "H" + O + // top of the box
                  (C ? "V" + j + "L" + G + "," + vt + "L" + O + "," + at : "") + // notched right edge
                  "V" + st + // end of the right edge
                  "H" + z + // bottom of the box
                  (C ? "V" + at + "L" + F + "," + vt + "L" + z + "," + j : "") + // notched left edge
                  "Z" + // end of the box
                  (M ? "M" + B + "," + rt + "V" + et + "M" + B + "," + st + "V" + Q + // whiskers
                  (S === 0 ? "" : (
                    // whisker caps
                    "M" + U + "," + et + "H" + H + "M" + U + "," + Q + "H" + H
                  )) : ""));
                });
              }
              function u(r, i, a, l) {
                var o = i.x, y = i.y, g = l.bdPos, x = l.bPos, c = a.boxpoints || a.points;
                P.seedPseudoRandom();
                var v = function(S) {
                  return S.forEach(function(M) {
                    M.t = l, M.trace = a;
                  }), S;
                }, f = r.selectAll("g.points").data(c ? v : []);
                f.enter().append("g").attr("class", "points"), f.exit().remove();
                var _ = f.selectAll("path").data(function(S) {
                  var M, C = S.pts2, m = Math.max((S.max - S.min) / 10, S.q3 - S.q1), L = m * 1e-9, d = m * T, h = [], E = 0, w;
                  if (a.jitter) {
                    if (m === 0)
                      for (E = 1, h = new Array(C.length), M = 0; M < C.length; M++)
                        h[M] = 1;
                    else
                      for (M = 0; M < C.length; M++) {
                        var z = Math.max(0, M - s), O = C[z].v, B = Math.min(C.length - 1, M + s), V = C[B].v;
                        c !== "all" && (C[M].v < S.lf ? V = Math.min(V, S.lf) : O = Math.max(O, S.uf));
                        var U = Math.sqrt(d * (B - z) / (V - O + L)) || 0;
                        U = P.constrain(Math.abs(U), 0, 1), h.push(U), E = Math.max(U, E);
                      }
                    w = a.jitter * 2 / (E || 1);
                  }
                  for (M = 0; M < C.length; M++) {
                    var H = C[M], F = H.v, G = a.jitter ? w * h[M] * (P.pseudoRandom() - 0.5) : 0, q = S.pos + x + g * (a.pointpos + G);
                    a.orientation === "h" ? (H.y = q, H.x = F) : (H.x = q, H.y = F), c === "suspectedoutliers" && F < S.uo && F > S.lo && (H.so = !0);
                  }
                  return C;
                });
                _.enter().append("path").classed("point", !0), _.exit().remove(), _.call(n.translatePoints, o, y);
              }
              function t(r, i, a, l) {
                var o = i.val, y = i.pos, g = !!y.rangebreaks, x = l.bPos, c = l.bPosPxOffset || 0, v = a.boxmean || (a.meanline || {}).visible, f, _;
                Array.isArray(l.bdPos) ? (f = l.bdPos[0], _ = l.bdPos[1]) : (f = l.bdPos, _ = l.bdPos);
                var S = r.selectAll("path.mean").data(a.type === "box" && a.boxmean || a.type === "violin" && a.box.visible && a.meanline.visible ? P.identity : []);
                S.enter().append("path").attr("class", "mean").style({
                  fill: "none",
                  "vector-effect": "non-scaling-stroke"
                }), S.exit().remove(), S.each(function(M) {
                  var C = y.c2l(M.pos + x, !0), m = y.l2p(C - f) + c, L = y.l2p(C + _) + c, d = g ? (m + L) / 2 : y.l2p(C) + c, h = o.c2p(M.mean, !0), E = o.c2p(M.mean - M.sd, !0), w = o.c2p(M.mean + M.sd, !0);
                  a.orientation === "h" ? b.select(this).attr("d", "M" + h + "," + m + "V" + L + (v === "sd" ? "m0,0L" + E + "," + d + "L" + h + "," + m + "L" + w + "," + d + "Z" : "")) : b.select(this).attr("d", "M" + m + "," + h + "H" + L + (v === "sd" ? "m0,0L" + d + "," + E + "L" + m + "," + h + "L" + d + "," + w + "Z" : ""));
                });
              }
              Y.exports = {
                plot: A,
                plotBoxAndWhiskers: p,
                plotPoints: u,
                plotBoxMean: t
              };
            }
          ),
          /***/
          72488: (
            /***/
            function(Y) {
              Y.exports = function(e, b) {
                var P = e.cd, n = e.xaxis, s = e.yaxis, T = [], A, p;
                if (b === !1)
                  for (A = 0; A < P.length; A++)
                    for (p = 0; p < (P[A].pts || []).length; p++)
                      P[A].pts[p].selected = 0;
                else
                  for (A = 0; A < P.length; A++)
                    for (p = 0; p < (P[A].pts || []).length; p++) {
                      var u = P[A].pts[p], t = n.c2p(u.x), r = s.c2p(u.y);
                      b.contains([t, r], null, u.i, e) ? (T.push({
                        pointNumber: u.i,
                        x: n.c2d(u.x),
                        y: s.c2d(u.y)
                      }), u.selected = 1) : u.selected = 0;
                    }
                return T;
              };
            }
          ),
          /***/
          59979: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(78766), n = e(62203);
              function s(A, p, u) {
                var t = u || b.select(A).selectAll("g.trace.boxes");
                t.style("opacity", function(r) {
                  return r[0].trace.opacity;
                }), t.each(function(r) {
                  var i = b.select(this), a = r[0].trace, l = a.line.width;
                  function o(x, c, v, f) {
                    x.style("stroke-width", c + "px").call(P.stroke, v).call(P.fill, f);
                  }
                  var y = i.selectAll("path.box");
                  if (a.type === "candlestick")
                    y.each(function(x) {
                      if (!x.empty) {
                        var c = b.select(this), v = a[x.dir];
                        o(c, v.line.width, v.line.color, v.fillcolor), c.style("opacity", a.selectedpoints && !x.selected ? 0.3 : 1);
                      }
                    });
                  else {
                    o(y, l, a.line.color, a.fillcolor), i.selectAll("path.mean").style({
                      "stroke-width": l,
                      "stroke-dasharray": 2 * l + "px," + l + "px"
                    }).call(P.stroke, a.line.color);
                    var g = i.selectAll("path.point");
                    n.pointStyle(g, a, A);
                  }
                });
              }
              function T(A, p, u) {
                var t = p[0].trace, r = u.selectAll("path.point");
                t.selectedpoints ? n.selectedPointStyle(r, t) : n.pointStyle(r, t, A);
              }
              Y.exports = {
                style: s,
                styleOnSelect: T
              };
            }
          ),
          /***/
          24319: (
            /***/
            function(Y, K, e) {
              var b = e(34809).extendFlat, P = e(80712).axisHoverFormat, n = e(86706), s = e(64625);
              function T(A) {
                return {
                  line: {
                    color: b({}, s.line.color, {
                      dflt: A
                    }),
                    width: s.line.width,
                    editType: "style"
                  },
                  fillcolor: s.fillcolor,
                  editType: "style"
                };
              }
              Y.exports = {
                xperiod: n.xperiod,
                xperiod0: n.xperiod0,
                xperiodalignment: n.xperiodalignment,
                xhoverformat: P("x"),
                yhoverformat: P("y"),
                x: n.x,
                open: n.open,
                high: n.high,
                low: n.low,
                close: n.close,
                line: {
                  width: b({}, s.line.width, {}),
                  editType: "style"
                },
                increasing: T(n.increasing.line.color.dflt),
                decreasing: T(n.decreasing.line.color.dflt),
                text: n.text,
                hovertext: n.hovertext,
                whiskerwidth: b({}, s.whiskerwidth, {
                  dflt: 0
                }),
                hoverlabel: n.hoverlabel,
                zorder: s.zorder
              };
            }
          ),
          /***/
          63679: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(29714), n = e(40528), s = e(95694).calcCommon;
              Y.exports = function(A, p) {
                var u = A._fullLayout, t = P.getFromId(A, p.xaxis), r = P.getFromId(A, p.yaxis), i = t.makeCalcdata(p, "x"), a = n(p, t, "x", i).vals, l = s(A, p, i, a, r, T);
                return l.length ? (b.extendFlat(l[0].t, {
                  num: u._numBoxes,
                  dPos: b.distinctVals(a).minDiff / 2,
                  posLetter: "x",
                  valLetter: "y"
                }), u._numBoxes++, l) : [{
                  t: {
                    empty: !0
                  }
                }];
              };
              function T(A, p, u, t) {
                return {
                  min: u,
                  q1: Math.min(A, t),
                  med: t,
                  q3: Math.max(A, t),
                  max: p
                };
              }
            }
          ),
          /***/
          57336: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(78766), n = e(28270), s = e(99669), T = e(24319);
              Y.exports = function(u, t, r, i) {
                function a(o, y) {
                  return b.coerce(u, t, T, o, y);
                }
                var l = n(u, t, a, i);
                if (!l) {
                  t.visible = !1;
                  return;
                }
                s(u, t, i, a, {
                  x: !0
                }), a("xhoverformat"), a("yhoverformat"), a("line.width"), A(u, t, a, "increasing"), A(u, t, a, "decreasing"), a("text"), a("hovertext"), a("whiskerwidth"), i._requestRangeslider[t.xaxis] = !0, a("zorder");
              };
              function A(p, u, t, r) {
                var i = t(r + ".line.color");
                t(r + ".line.width", u.line.width), t(r + ".fillcolor", P.addOpacity(i, 0.5));
              }
            }
          ),
          /***/
          51252: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                moduleType: "trace",
                name: "candlestick",
                basePlotModule: e(37703),
                categories: ["cartesian", "svg", "showLegend", "candlestick", "boxLayout"],
                meta: {},
                attributes: e(24319),
                layoutAttributes: e(64636),
                supplyLayoutDefaults: e(65067).supplyLayoutDefaults,
                crossTraceCalc: e(81606).crossTraceCalc,
                supplyDefaults: e(57336),
                calc: e(63679),
                plot: e(95419).plot,
                layerName: "boxlayer",
                style: e(59979).style,
                hoverPoints: e(93245).hoverPoints,
                selectPoints: e(49343)
              };
            }
          ),
          /***/
          8432: (
            /***/
            function(Y, K, e) {
              var b = e(6038), P = e(78032);
              Y.exports = function(T, A, p, u, t) {
                var r = u("a");
                r || (u("da"), u("a0"));
                var i = u("b");
                i || (u("db"), u("b0")), n(T, A, p, t);
              };
              function n(s, T, A, p) {
                var u = ["aaxis", "baxis"];
                u.forEach(function(t) {
                  var r = t.charAt(0), i = s[t] || {}, a = P.newContainer(T, t), l = {
                    noAutotickangles: !0,
                    noTicklabelshift: !0,
                    noTicklabelstandoff: !0,
                    noTicklabelstep: !0,
                    tickfont: "x",
                    id: r + "axis",
                    letter: r,
                    font: T.font,
                    name: t,
                    data: s[r],
                    calendar: T.calendar,
                    dfltColor: p,
                    bgColor: A.paper_bgcolor,
                    autotypenumbersDflt: A.autotypenumbers,
                    fullLayout: A
                  };
                  b(i, a, l), a._categories = a._categories || [], !s[t] && i.type !== "-" && (s[t] = {
                    type: i.type
                  });
                });
              }
            }
          ),
          /***/
          97052: (
            /***/
            function(Y, K, e) {
              var b = e(34809).isArrayOrTypedArray;
              Y.exports = function(n) {
                return P(n, 0);
              };
              function P(n, s) {
                if (!b(n) || s >= 10)
                  return null;
                for (var T = 1 / 0, A = -1 / 0, p = n.length, u = 0; u < p; u++) {
                  var t = n[u];
                  if (b(t)) {
                    var r = P(t, s + 1);
                    r && (T = Math.min(r[0], T), A = Math.max(r[1], A));
                  } else
                    T = Math.min(t, T), A = Math.max(t, A);
                }
                return [T, A];
              }
            }
          ),
          /***/
          43745: (
            /***/
            function(Y, K, e) {
              var b = e(80337), P = e(86961), n = e(10229), s = b({
                editType: "calc"
              }), T = e(36640).zorder;
              s.family.dflt = '"Open Sans", verdana, arial, sans-serif', s.size.dflt = 12, s.color.dflt = n.defaultLine, Y.exports = {
                carpet: {
                  valType: "string",
                  editType: "calc"
                },
                x: {
                  valType: "data_array",
                  editType: "calc+clearAxisTypes"
                },
                y: {
                  valType: "data_array",
                  editType: "calc+clearAxisTypes"
                },
                a: {
                  valType: "data_array",
                  editType: "calc"
                },
                a0: {
                  valType: "number",
                  dflt: 0,
                  editType: "calc"
                },
                da: {
                  valType: "number",
                  dflt: 1,
                  editType: "calc"
                },
                b: {
                  valType: "data_array",
                  editType: "calc"
                },
                b0: {
                  valType: "number",
                  dflt: 0,
                  editType: "calc"
                },
                db: {
                  valType: "number",
                  dflt: 1,
                  editType: "calc"
                },
                cheaterslope: {
                  valType: "number",
                  dflt: 1,
                  editType: "calc"
                },
                aaxis: P,
                baxis: P,
                font: s,
                color: {
                  valType: "color",
                  dflt: n.defaultLine,
                  editType: "plot"
                },
                transforms: void 0,
                zorder: T
              };
            }
          ),
          /***/
          94903: (
            /***/
            function(Y, K, e) {
              var b = e(34809).isArrayOrTypedArray;
              Y.exports = function(P, n, s, T) {
                var A, p, u, t, r, i, a, l, o, y, g, x, c, v = b(s) ? "a" : "b", f = v === "a" ? P.aaxis : P.baxis, _ = f.smoothing, S = v === "a" ? P.a2i : P.b2j, M = v === "a" ? s : T, C = v === "a" ? T : s, m = v === "a" ? n.a.length : n.b.length, L = v === "a" ? n.b.length : n.a.length, d = Math.floor(v === "a" ? P.b2j(C) : P.a2i(C)), h = v === "a" ? function(rt) {
                  return P.evalxy([], rt, d);
                } : function(rt) {
                  return P.evalxy([], d, rt);
                };
                _ && (u = Math.max(0, Math.min(L - 2, d)), t = d - u, p = v === "a" ? function(rt, st) {
                  return P.dxydi([], rt, u, st, t);
                } : function(rt, st) {
                  return P.dxydj([], u, rt, t, st);
                });
                var E = S(M[0]), w = S(M[1]), z = E < w ? 1 : -1, O = (w - E) * 1e-8, B = z > 0 ? Math.floor : Math.ceil, V = z > 0 ? Math.ceil : Math.floor, U = z > 0 ? Math.min : Math.max, H = z > 0 ? Math.max : Math.min, F = B(E + O), G = V(w - O);
                a = h(E);
                var q = [[a]];
                for (A = F; A * z < G * z; A += z)
                  r = [], g = H(E, A), x = U(w, A + z), c = x - g, i = Math.max(0, Math.min(m - 2, Math.floor(0.5 * (g + x)))), l = h(x), _ && (o = p(i, g - i), y = p(i, x - i), r.push([a[0] + o[0] / 3 * c, a[1] + o[1] / 3 * c]), r.push([l[0] - y[0] / 3 * c, l[1] - y[1] / 3 * c])), r.push(l), q.push(r), a = l;
                return q;
              };
            }
          ),
          /***/
          86961: (
            /***/
            function(Y, K, e) {
              var b = e(80337), P = e(10229), n = e(25829), s = e(80712).descriptionWithDates, T = e(13582).overrideAll, A = e(94850).T, p = e(93049).extendFlat;
              Y.exports = {
                color: {
                  valType: "color",
                  editType: "calc"
                },
                smoothing: {
                  valType: "number",
                  dflt: 1,
                  min: 0,
                  max: 1.3,
                  editType: "calc"
                },
                title: {
                  text: {
                    valType: "string",
                    dflt: "",
                    editType: "calc"
                  },
                  font: b({
                    editType: "calc"
                  }),
                  // TODO how is this different than `title.standoff`
                  offset: {
                    valType: "number",
                    dflt: 10,
                    editType: "calc"
                  },
                  editType: "calc"
                },
                type: {
                  valType: "enumerated",
                  // '-' means we haven't yet run autotype or couldn't find any data
                  // it gets turned into linear in gd._fullLayout but not copied back
                  // to gd.data like the others are.
                  values: ["-", "linear", "date", "category"],
                  dflt: "-",
                  editType: "calc"
                },
                autotypenumbers: n.autotypenumbers,
                autorange: {
                  valType: "enumerated",
                  values: [!0, !1, "reversed"],
                  dflt: !0,
                  editType: "calc"
                },
                rangemode: {
                  valType: "enumerated",
                  values: ["normal", "tozero", "nonnegative"],
                  dflt: "normal",
                  editType: "calc"
                },
                range: {
                  valType: "info_array",
                  editType: "calc",
                  items: [{
                    valType: "any",
                    editType: "calc"
                  }, {
                    valType: "any",
                    editType: "calc"
                  }]
                },
                fixedrange: {
                  valType: "boolean",
                  dflt: !1,
                  editType: "calc"
                },
                cheatertype: {
                  valType: "enumerated",
                  values: ["index", "value"],
                  dflt: "value",
                  editType: "calc"
                },
                tickmode: {
                  valType: "enumerated",
                  values: ["linear", "array"],
                  dflt: "array",
                  editType: "calc"
                },
                nticks: {
                  valType: "integer",
                  min: 0,
                  dflt: 0,
                  editType: "calc"
                },
                tickvals: {
                  valType: "data_array",
                  editType: "calc"
                },
                ticktext: {
                  valType: "data_array",
                  editType: "calc"
                },
                showticklabels: {
                  valType: "enumerated",
                  values: ["start", "end", "both", "none"],
                  dflt: "start",
                  editType: "calc"
                },
                labelalias: p({}, n.labelalias, {
                  editType: "calc"
                }),
                tickfont: b({
                  editType: "calc"
                }),
                tickangle: {
                  valType: "angle",
                  dflt: "auto",
                  editType: "calc"
                },
                tickprefix: {
                  valType: "string",
                  dflt: "",
                  editType: "calc"
                },
                showtickprefix: {
                  valType: "enumerated",
                  values: ["all", "first", "last", "none"],
                  dflt: "all",
                  editType: "calc"
                },
                ticksuffix: {
                  valType: "string",
                  dflt: "",
                  editType: "calc"
                },
                showticksuffix: {
                  valType: "enumerated",
                  values: ["all", "first", "last", "none"],
                  dflt: "all",
                  editType: "calc"
                },
                showexponent: {
                  valType: "enumerated",
                  values: ["all", "first", "last", "none"],
                  dflt: "all",
                  editType: "calc"
                },
                exponentformat: {
                  valType: "enumerated",
                  values: ["none", "e", "E", "power", "SI", "B"],
                  dflt: "B",
                  editType: "calc"
                },
                minexponent: {
                  valType: "number",
                  dflt: 3,
                  min: 0,
                  editType: "calc"
                },
                separatethousands: {
                  valType: "boolean",
                  dflt: !1,
                  editType: "calc"
                },
                tickformat: {
                  valType: "string",
                  dflt: "",
                  editType: "calc",
                  description: s("tick label")
                },
                tickformatstops: T(n.tickformatstops, "calc", "from-root"),
                categoryorder: {
                  valType: "enumerated",
                  values: [
                    "trace",
                    "category ascending",
                    "category descending",
                    "array"
                    /* , 'value ascending', 'value descending'*/
                    // value ascending / descending to be implemented later
                  ],
                  dflt: "trace",
                  editType: "calc"
                },
                categoryarray: {
                  valType: "data_array",
                  editType: "calc"
                },
                labelpadding: {
                  valType: "integer",
                  dflt: 10,
                  editType: "calc"
                },
                labelprefix: {
                  valType: "string",
                  editType: "calc"
                },
                labelsuffix: {
                  valType: "string",
                  dflt: "",
                  editType: "calc"
                },
                // lines and grids
                showline: {
                  valType: "boolean",
                  dflt: !1,
                  editType: "calc"
                },
                linecolor: {
                  valType: "color",
                  dflt: P.defaultLine,
                  editType: "calc"
                },
                linewidth: {
                  valType: "number",
                  min: 0,
                  dflt: 1,
                  editType: "calc"
                },
                gridcolor: {
                  valType: "color",
                  editType: "calc"
                },
                gridwidth: {
                  valType: "number",
                  min: 0,
                  dflt: 1,
                  editType: "calc"
                },
                griddash: p({}, A, {
                  editType: "calc"
                }),
                showgrid: {
                  valType: "boolean",
                  dflt: !0,
                  editType: "calc"
                },
                minorgridcount: {
                  valType: "integer",
                  min: 0,
                  dflt: 0,
                  editType: "calc"
                },
                minorgridwidth: {
                  valType: "number",
                  min: 0,
                  dflt: 1,
                  editType: "calc"
                },
                minorgriddash: p({}, A, {
                  editType: "calc"
                }),
                minorgridcolor: {
                  valType: "color",
                  dflt: P.lightLine,
                  editType: "calc"
                },
                startline: {
                  valType: "boolean",
                  editType: "calc"
                },
                startlinecolor: {
                  valType: "color",
                  editType: "calc"
                },
                startlinewidth: {
                  valType: "number",
                  dflt: 1,
                  editType: "calc"
                },
                endline: {
                  valType: "boolean",
                  editType: "calc"
                },
                endlinewidth: {
                  valType: "number",
                  dflt: 1,
                  editType: "calc"
                },
                endlinecolor: {
                  valType: "color",
                  editType: "calc"
                },
                tick0: {
                  valType: "number",
                  min: 0,
                  dflt: 0,
                  editType: "calc"
                },
                dtick: {
                  valType: "number",
                  min: 0,
                  dflt: 1,
                  editType: "calc"
                },
                arraytick0: {
                  valType: "integer",
                  min: 0,
                  dflt: 0,
                  editType: "calc"
                },
                arraydtick: {
                  valType: "integer",
                  min: 1,
                  dflt: 1,
                  editType: "calc"
                },
                _deprecated: {
                  title: {
                    valType: "string",
                    editType: "calc"
                  },
                  titlefont: b({
                    editType: "calc"
                  }),
                  titleoffset: {
                    valType: "number",
                    dflt: 10,
                    editType: "calc"
                  }
                },
                editType: "calc"
              };
            }
          ),
          /***/
          6038: (
            /***/
            function(Y, K, e) {
              var b = e(43745), P = e(78766).addOpacity, n = e(33626), s = e(34809), T = e(22777), A = e(12036), p = e(54616), u = e(46473), t = e(19091), r = e(9666);
              Y.exports = function(l, o, y) {
                var g = y.letter, x = y.font || {}, c = b[g + "axis"];
                function v(F, G) {
                  return s.coerce(l, o, c, F, G);
                }
                function f(F, G) {
                  return s.coerce2(l, o, c, F, G);
                }
                y.name && (o._name = y.name, o._id = y.name), v("autotypenumbers", y.autotypenumbersDflt);
                var _ = v("type");
                if (_ === "-" && (y.data && i(o, y.data), o.type === "-" ? o.type = "linear" : _ = l.type = o.type), v("smoothing"), v("cheatertype"), v("showticklabels"), v("labelprefix", g + " = "), v("labelsuffix"), v("showtickprefix"), v("showticksuffix"), v("separatethousands"), v("tickformat"), v("exponentformat"), v("minexponent"), v("showexponent"), v("categoryorder"), v("tickmode"), v("tickvals"), v("ticktext"), v("tick0"), v("dtick"), o.tickmode === "array" && (v("arraytick0"), v("arraydtick")), v("labelpadding"), o._hovertitle = g, _ === "date") {
                  var S = n.getComponentMethod("calendars", "handleDefaults");
                  S(l, o, "calendar", y.calendar);
                }
                t(o, y.fullLayout), o.c2p = s.identity;
                var M = v("color", y.dfltColor), C = M === l.color ? M : x.color, m = v("title.text");
                m && (s.coerceFont(v, "title.font", x, {
                  overrideDflt: {
                    size: s.bigFont(x.size),
                    color: C
                  }
                }), v("title.offset")), v("tickangle");
                var L = v("autorange", !o.isValidRange(l.range));
                L && v("rangemode"), v("range"), o.cleanRange(), v("fixedrange"), T(l, o, v, _), p(l, o, v, _, y), A(l, o, v, _, y), u(l, o, v, {
                  data: y.data,
                  dataAttr: g
                });
                var d = f("gridcolor", P(M, 0.3)), h = f("gridwidth"), E = f("griddash"), w = v("showgrid");
                w || (delete o.gridcolor, delete o.gridwidth, delete o.griddash);
                var z = f("startlinecolor", M), O = f("startlinewidth", h), B = v("startline", o.showgrid || !!z || !!O);
                B || (delete o.startlinecolor, delete o.startlinewidth);
                var V = f("endlinecolor", M), U = f("endlinewidth", h), H = v("endline", o.showgrid || !!V || !!U);
                return H || (delete o.endlinecolor, delete o.endlinewidth), w ? (v("minorgridcount"), v("minorgridwidth", h), v("minorgriddash", E), v("minorgridcolor", P(d, 0.06)), o.minorgridcount || (delete o.minorgridwidth, delete o.minorgriddash, delete o.minorgridcolor)) : (delete o.gridcolor, delete o.gridwidth, delete o.griddash), o.showticklabels === "none" && (delete o.tickfont, delete o.tickangle, delete o.showexponent, delete o.exponentformat, delete o.minexponent, delete o.tickformat, delete o.showticksuffix, delete o.showtickprefix), o.showticksuffix || delete o.ticksuffix, o.showtickprefix || delete o.tickprefix, v("tickmode"), o;
              };
              function i(a, l) {
                if (a.type === "-") {
                  var o = a._id, y = o.charAt(0), g = y + "calendar", x = a[g];
                  a.type = r(l, x, {
                    autotypenumbers: a.autotypenumbers
                  });
                }
              }
            }
          ),
          /***/
          67525: (
            /***/
            function(Y, K, e) {
              var b = e(29714), P = e(34809).isArray1D, n = e(89992), s = e(97052), T = e(4753), A = e(93923), p = e(39373), u = e(93877), t = e(13007), r = e(87869), i = e(76842);
              Y.exports = function(l, o) {
                var y = b.getFromId(l, o.xaxis), g = b.getFromId(l, o.yaxis), x = o.aaxis, c = o.baxis, v = o.x, f = o.y, _ = [];
                v && P(v) && _.push("x"), f && P(f) && _.push("y"), _.length && r(o, x, c, "a", "b", _);
                var S = o._a = o._a || o.a, M = o._b = o._b || o.b;
                v = o._x || o.x, f = o._y || o.y;
                var C = {};
                if (o._cheater) {
                  var m = x.cheatertype === "index" ? S.length : S, L = c.cheatertype === "index" ? M.length : M;
                  v = n(m, L, o.cheaterslope);
                }
                o._x = v = u(v), o._y = f = u(f), t(v, S, M), t(f, S, M), i(o), o.setScale();
                var d = s(v), h = s(f), E = 0.5 * (d[1] - d[0]), w = 0.5 * (d[1] + d[0]), z = 0.5 * (h[1] - h[0]), O = 0.5 * (h[1] + h[0]), B = 1.3;
                return d = [w - E * B, w + E * B], h = [O - z * B, O + z * B], o._extremes[y._id] = b.findExtremes(y, d, {
                  padded: !0
                }), o._extremes[g._id] = b.findExtremes(g, h, {
                  padded: !0
                }), T(o, "a", "b"), T(o, "b", "a"), A(o, x), A(o, c), C.clipsegments = p(o._xctrl, o._yctrl, x, c), C.x = v, C.y = f, C.a = S, C.b = M, [C];
              };
            }
          ),
          /***/
          39373: (
            /***/
            function(Y) {
              Y.exports = function(e, b, P, n) {
                var s, T, A, p = [], u = !!P.smoothing, t = !!n.smoothing, r = e[0].length - 1, i = e.length - 1;
                for (s = 0, T = [], A = []; s <= r; s++)
                  T[s] = e[0][s], A[s] = b[0][s];
                for (p.push({
                  x: T,
                  y: A,
                  bicubic: u
                }), s = 0, T = [], A = []; s <= i; s++)
                  T[s] = e[s][r], A[s] = b[s][r];
                for (p.push({
                  x: T,
                  y: A,
                  bicubic: t
                }), s = r, T = [], A = []; s >= 0; s--)
                  T[r - s] = e[i][s], A[r - s] = b[i][s];
                for (p.push({
                  x: T,
                  y: A,
                  bicubic: u
                }), s = i, T = [], A = []; s >= 0; s--)
                  T[i - s] = e[s][0], A[i - s] = b[s][0];
                return p.push({
                  x: T,
                  y: A,
                  bicubic: t
                }), p;
              };
            }
          ),
          /***/
          4753: (
            /***/
            function(Y, K, e) {
              var b = e(29714), P = e(93049).extendFlat;
              Y.exports = function(s, T, A) {
                var p, u, t, r, i, a, l, o, y, g, x, c, v, f, _ = s["_" + T], S = s[T + "axis"], M = S._gridlines = [], C = S._minorgridlines = [], m = S._boundarylines = [], L = s["_" + A], d = s[A + "axis"];
                S.tickmode === "array" && (S.tickvals = _.slice());
                var h = s._xctrl, E = s._yctrl, w = h[0].length, z = h.length, O = s._a.length, B = s._b.length;
                b.prepTicks(S), S.tickmode === "array" && delete S.tickvals;
                var V = S.smoothing ? 3 : 1;
                function U(F) {
                  var G, q, rt, st, vt, ht, et, Q, j, at, ut, nt, X = [], ct = [], lt = {};
                  if (T === "b")
                    for (q = s.b2j(F), rt = Math.floor(Math.max(0, Math.min(B - 2, q))), st = q - rt, lt.length = B, lt.crossLength = O, lt.xy = function(pt) {
                      return s.evalxy([], pt, q);
                    }, lt.dxy = function(pt, wt) {
                      return s.dxydi([], pt, rt, wt, st);
                    }, G = 0; G < O; G++)
                      ht = Math.min(O - 2, G), et = G - ht, Q = s.evalxy([], G, q), d.smoothing && G > 0 && (j = s.dxydi([], G - 1, rt, 0, st), X.push(vt[0] + j[0] / 3), ct.push(vt[1] + j[1] / 3), at = s.dxydi([], G - 1, rt, 1, st), X.push(Q[0] - at[0] / 3), ct.push(Q[1] - at[1] / 3)), X.push(Q[0]), ct.push(Q[1]), vt = Q;
                  else
                    for (G = s.a2i(F), ht = Math.floor(Math.max(0, Math.min(O - 2, G))), et = G - ht, lt.length = O, lt.crossLength = B, lt.xy = function(pt) {
                      return s.evalxy([], G, pt);
                    }, lt.dxy = function(pt, wt) {
                      return s.dxydj([], ht, pt, et, wt);
                    }, q = 0; q < B; q++)
                      rt = Math.min(B - 2, q), st = q - rt, Q = s.evalxy([], G, q), d.smoothing && q > 0 && (ut = s.dxydj([], ht, q - 1, et, 0), X.push(vt[0] + ut[0] / 3), ct.push(vt[1] + ut[1] / 3), nt = s.dxydj([], ht, q - 1, et, 1), X.push(Q[0] - nt[0] / 3), ct.push(Q[1] - nt[1] / 3)), X.push(Q[0]), ct.push(Q[1]), vt = Q;
                  return lt.axisLetter = T, lt.axis = S, lt.crossAxis = d, lt.value = F, lt.constvar = A, lt.index = o, lt.x = X, lt.y = ct, lt.smoothing = d.smoothing, lt;
                }
                function H(F) {
                  var G, q, rt, st, vt, ht = [], et = [], Q = {};
                  if (Q.length = _.length, Q.crossLength = L.length, T === "b")
                    for (rt = Math.max(0, Math.min(B - 2, F)), vt = Math.min(1, Math.max(0, F - rt)), Q.xy = function(j) {
                      return s.evalxy([], j, F);
                    }, Q.dxy = function(j, at) {
                      return s.dxydi([], j, rt, at, vt);
                    }, G = 0; G < w; G++)
                      ht[G] = h[F * V][G], et[G] = E[F * V][G];
                  else
                    for (q = Math.max(0, Math.min(O - 2, F)), st = Math.min(1, Math.max(0, F - q)), Q.xy = function(j) {
                      return s.evalxy([], F, j);
                    }, Q.dxy = function(j, at) {
                      return s.dxydj([], q, j, st, at);
                    }, G = 0; G < z; G++)
                      ht[G] = h[G][F * V], et[G] = E[G][F * V];
                  return Q.axisLetter = T, Q.axis = S, Q.crossAxis = d, Q.value = _[F], Q.constvar = A, Q.index = F, Q.x = ht, Q.y = et, Q.smoothing = d.smoothing, Q;
                }
                if (S.tickmode === "array") {
                  for (r = 5e-15, i = [Math.floor((_.length - 1 - S.arraytick0) / S.arraydtick * (1 + r)), Math.ceil(-S.arraytick0 / S.arraydtick / (1 + r))].sort(function(F, G) {
                    return F - G;
                  }), a = i[0] - 1, l = i[1] + 1, o = a; o < l; o++)
                    u = S.arraytick0 + S.arraydtick * o, !(u < 0 || u > _.length - 1) && M.push(P(H(u), {
                      color: S.gridcolor,
                      width: S.gridwidth,
                      dash: S.griddash
                    }));
                  for (o = a; o < l; o++)
                    if (t = S.arraytick0 + S.arraydtick * o, x = Math.min(t + S.arraydtick, _.length - 1), !(t < 0 || t > _.length - 1) && !(x < 0 || x > _.length - 1))
                      for (c = _[t], v = _[x], p = 0; p < S.minorgridcount; p++)
                        f = x - t, !(f <= 0) && (g = c + (v - c) * (p + 1) / (S.minorgridcount + 1) * (S.arraydtick / f), !(g < _[0] || g > _[_.length - 1]) && C.push(P(U(g), {
                          color: S.minorgridcolor,
                          width: S.minorgridwidth,
                          dash: S.minorgriddash
                        })));
                  S.startline && m.push(P(H(0), {
                    color: S.startlinecolor,
                    width: S.startlinewidth
                  })), S.endline && m.push(P(H(_.length - 1), {
                    color: S.endlinecolor,
                    width: S.endlinewidth
                  }));
                } else {
                  for (r = 5e-15, i = [Math.floor((_[_.length - 1] - S.tick0) / S.dtick * (1 + r)), Math.ceil((_[0] - S.tick0) / S.dtick / (1 + r))].sort(function(F, G) {
                    return F - G;
                  }), a = i[0], l = i[1], o = a; o <= l; o++)
                    y = S.tick0 + S.dtick * o, M.push(P(U(y), {
                      color: S.gridcolor,
                      width: S.gridwidth,
                      dash: S.griddash
                    }));
                  for (o = a - 1; o < l + 1; o++)
                    for (y = S.tick0 + S.dtick * o, p = 0; p < S.minorgridcount; p++)
                      g = y + S.dtick * (p + 1) / (S.minorgridcount + 1), !(g < _[0] || g > _[_.length - 1]) && C.push(P(U(g), {
                        color: S.minorgridcolor,
                        width: S.minorgridwidth,
                        dash: S.minorgriddash
                      }));
                  S.startline && m.push(P(U(_[0]), {
                    color: S.startlinecolor,
                    width: S.startlinewidth
                  })), S.endline && m.push(P(U(_[_.length - 1]), {
                    color: S.endlinecolor,
                    width: S.endlinewidth
                  }));
                }
              };
            }
          ),
          /***/
          93923: (
            /***/
            function(Y, K, e) {
              var b = e(29714), P = e(93049).extendFlat;
              Y.exports = function(s, T) {
                var A, p, u, t, r, i = T._labels = [], a = T._gridlines;
                for (A = 0; A < a.length; A++)
                  r = a[A], ["start", "both"].indexOf(T.showticklabels) !== -1 && (p = b.tickText(T, r.value), P(p, {
                    prefix: u,
                    suffix: t,
                    endAnchor: !0,
                    xy: r.xy(0),
                    dxy: r.dxy(0, 0),
                    axis: r.axis,
                    length: r.crossAxis.length,
                    font: r.axis.tickfont,
                    isFirst: A === 0,
                    isLast: A === a.length - 1
                  }), i.push(p)), ["end", "both"].indexOf(T.showticklabels) !== -1 && (p = b.tickText(T, r.value), P(p, {
                    endAnchor: !1,
                    xy: r.xy(r.crossLength - 1),
                    dxy: r.dxy(r.crossLength - 2, 1),
                    axis: r.axis,
                    length: r.crossAxis.length,
                    font: r.axis.tickfont,
                    isFirst: A === 0,
                    isLast: A === a.length - 1
                  }), i.push(p));
              };
            }
          ),
          /***/
          49109: (
            /***/
            function(Y) {
              var K = 0.5;
              Y.exports = function(b, P, n, s) {
                var T = b[0] - P[0], A = b[1] - P[1], p = n[0] - P[0], u = n[1] - P[1], t = Math.pow(T * T + A * A, K / 2), r = Math.pow(p * p + u * u, K / 2), i = (r * r * T - t * t * p) * s, a = (r * r * A - t * t * u) * s, l = r * (t + r) * 3, o = t * (t + r) * 3;
                return [[P[0] + (l && i / l), P[1] + (l && a / l)], [P[0] - (o && i / o), P[1] - (o && a / o)]];
              };
            }
          ),
          /***/
          89992: (
            /***/
            function(Y, K, e) {
              var b = e(34809).isArrayOrTypedArray;
              Y.exports = function(P, n, s) {
                var T, A, p, u, t, r, i = [], a = b(P) ? P.length : P, l = b(n) ? n.length : n, o = b(P) ? P : null, y = b(n) ? n : null;
                o && (p = (o.length - 1) / (o[o.length - 1] - o[0]) / (a - 1)), y && (u = (y.length - 1) / (y[y.length - 1] - y[0]) / (l - 1));
                var g, x = 1 / 0, c = -1 / 0;
                for (A = 0; A < l; A++)
                  for (i[A] = [], r = y ? (y[A] - y[0]) * u : A / (l - 1), T = 0; T < a; T++)
                    t = o ? (o[T] - o[0]) * p : T / (a - 1), g = t - r * s, x = Math.min(g, x), c = Math.max(g, c), i[A][T] = g;
                var v = 1 / (c - x), f = -x * v;
                for (A = 0; A < l; A++)
                  for (T = 0; T < a; T++)
                    i[A][T] = v * i[A][T] + f;
                return i;
              };
            }
          ),
          /***/
          57075: (
            /***/
            function(Y, K, e) {
              var b = e(49109), P = e(34809).ensureArray;
              function n(s, T, A) {
                var p = -0.5 * A[0] + 1.5 * T[0], u = -0.5 * A[1] + 1.5 * T[1];
                return [(2 * p + s[0]) / 3, (2 * u + s[1]) / 3];
              }
              Y.exports = function(T, A, p, u, t, r) {
                var i, a, l, o, y, g, x, c, v, f, _ = p[0].length, S = p.length, M = t ? 3 * _ - 2 : _, C = r ? 3 * S - 2 : S;
                for (T = P(T, C), A = P(A, C), l = 0; l < C; l++)
                  T[l] = P(T[l], M), A[l] = P(A[l], M);
                for (a = 0, o = 0; a < S; a++, o += r ? 3 : 1)
                  for (y = T[o], g = A[o], x = p[a], c = u[a], i = 0, l = 0; i < _; i++, l += t ? 3 : 1)
                    y[l] = x[i], g[l] = c[i];
                if (t)
                  for (a = 0, o = 0; a < S; a++, o += r ? 3 : 1) {
                    for (i = 1, l = 3; i < _ - 1; i++, l += 3)
                      v = b([p[a][i - 1], u[a][i - 1]], [p[a][i], u[a][i]], [p[a][i + 1], u[a][i + 1]], t), T[o][l - 1] = v[0][0], A[o][l - 1] = v[0][1], T[o][l + 1] = v[1][0], A[o][l + 1] = v[1][1];
                    f = n([T[o][0], A[o][0]], [T[o][2], A[o][2]], [T[o][3], A[o][3]]), T[o][1] = f[0], A[o][1] = f[1], f = n([T[o][M - 1], A[o][M - 1]], [T[o][M - 3], A[o][M - 3]], [T[o][M - 4], A[o][M - 4]]), T[o][M - 2] = f[0], A[o][M - 2] = f[1];
                  }
                if (r)
                  for (l = 0; l < M; l++) {
                    for (o = 3; o < C - 3; o += 3)
                      v = b([T[o - 3][l], A[o - 3][l]], [T[o][l], A[o][l]], [T[o + 3][l], A[o + 3][l]], r), T[o - 1][l] = v[0][0], A[o - 1][l] = v[0][1], T[o + 1][l] = v[1][0], A[o + 1][l] = v[1][1];
                    f = n([T[0][l], A[0][l]], [T[2][l], A[2][l]], [T[3][l], A[3][l]]), T[1][l] = f[0], A[1][l] = f[1], f = n([T[C - 1][l], A[C - 1][l]], [T[C - 3][l], A[C - 3][l]], [T[C - 4][l], A[C - 4][l]]), T[C - 2][l] = f[0], A[C - 2][l] = f[1];
                  }
                if (t && r)
                  for (o = 1; o < C; o += (o + 1) % 3 === 0 ? 2 : 1) {
                    for (l = 3; l < M - 3; l += 3)
                      v = b([T[o][l - 3], A[o][l - 3]], [T[o][l], A[o][l]], [T[o][l + 3], A[o][l + 3]], t), T[o][l - 1] = 0.5 * (T[o][l - 1] + v[0][0]), A[o][l - 1] = 0.5 * (A[o][l - 1] + v[0][1]), T[o][l + 1] = 0.5 * (T[o][l + 1] + v[1][0]), A[o][l + 1] = 0.5 * (A[o][l + 1] + v[1][1]);
                    f = n([T[o][0], A[o][0]], [T[o][2], A[o][2]], [T[o][3], A[o][3]]), T[o][1] = 0.5 * (T[o][1] + f[0]), A[o][1] = 0.5 * (A[o][1] + f[1]), f = n([T[o][M - 1], A[o][M - 1]], [T[o][M - 3], A[o][M - 3]], [T[o][M - 4], A[o][M - 4]]), T[o][M - 2] = 0.5 * (T[o][M - 2] + f[0]), A[o][M - 2] = 0.5 * (A[o][M - 2] + f[1]);
                  }
                return [T, A];
              };
            }
          ),
          /***/
          45923: (
            /***/
            function(Y) {
              Y.exports = {
                RELATIVE_CULL_TOLERANCE: 1e-6
              };
            }
          ),
          /***/
          39848: (
            /***/
            function(Y) {
              Y.exports = function(K, e, b) {
                return e && b ? function(P, n, s, T, A) {
                  P || (P = []);
                  var p, u, t, r, i, a;
                  n *= 3, s *= 3;
                  var l = T * T, o = 1 - T, y = o * o, g = o * T * 2, x = -3 * y, c = 3 * (y - g), v = 3 * (g - l), f = 3 * l, _ = A * A, S = _ * A, M = 1 - A, C = M * M, m = C * M;
                  for (a = 0; a < K.length; a++)
                    i = K[a], p = x * i[s][n] + c * i[s][n + 1] + v * i[s][n + 2] + f * i[s][n + 3], u = x * i[s + 1][n] + c * i[s + 1][n + 1] + v * i[s + 1][n + 2] + f * i[s + 1][n + 3], t = x * i[s + 2][n] + c * i[s + 2][n + 1] + v * i[s + 2][n + 2] + f * i[s + 2][n + 3], r = x * i[s + 3][n] + c * i[s + 3][n + 1] + v * i[s + 3][n + 2] + f * i[s + 3][n + 3], P[a] = m * p + 3 * (C * A * u + M * _ * t) + S * r;
                  return P;
                } : e ? function(P, n, s, T, A) {
                  P || (P = []);
                  var p, u, t, r;
                  n *= 3;
                  var i = T * T, a = 1 - T, l = a * a, o = a * T * 2, y = -3 * l, g = 3 * (l - o), x = 3 * (o - i), c = 3 * i, v = 1 - A;
                  for (t = 0; t < K.length; t++)
                    r = K[t], p = y * r[s][n] + g * r[s][n + 1] + x * r[s][n + 2] + c * r[s][n + 3], u = y * r[s + 1][n] + g * r[s + 1][n + 1] + x * r[s + 1][n + 2] + c * r[s + 1][n + 3], P[t] = v * p + A * u;
                  return P;
                } : b ? function(P, n, s, T, A) {
                  P || (P = []);
                  var p, u, t, r, i, a;
                  s *= 3;
                  var l = A * A, o = l * A, y = 1 - A, g = y * y, x = g * y;
                  for (i = 0; i < K.length; i++)
                    a = K[i], p = a[s][n + 1] - a[s][n], u = a[s + 1][n + 1] - a[s + 1][n], t = a[s + 2][n + 1] - a[s + 2][n], r = a[s + 3][n + 1] - a[s + 3][n], P[i] = x * p + 3 * (g * A * u + y * l * t) + o * r;
                  return P;
                } : function(P, n, s, T, A) {
                  P || (P = []);
                  var p, u, t, r, i = 1 - A;
                  for (t = 0; t < K.length; t++)
                    r = K[t], p = r[s][n + 1] - r[s][n], u = r[s + 1][n + 1] - r[s + 1][n], P[t] = i * p + A * u;
                  return P;
                };
              };
            }
          ),
          /***/
          41839: (
            /***/
            function(Y) {
              Y.exports = function(K, e, b) {
                return e && b ? function(P, n, s, T, A) {
                  P || (P = []);
                  var p, u, t, r, i, a;
                  n *= 3, s *= 3;
                  var l = T * T, o = l * T, y = 1 - T, g = y * y, x = g * y, c = A * A, v = 1 - A, f = v * v, _ = v * A * 2, S = -3 * f, M = 3 * (f - _), C = 3 * (_ - c), m = 3 * c;
                  for (a = 0; a < K.length; a++)
                    i = K[a], p = S * i[s][n] + M * i[s + 1][n] + C * i[s + 2][n] + m * i[s + 3][n], u = S * i[s][n + 1] + M * i[s + 1][n + 1] + C * i[s + 2][n + 1] + m * i[s + 3][n + 1], t = S * i[s][n + 2] + M * i[s + 1][n + 2] + C * i[s + 2][n + 2] + m * i[s + 3][n + 2], r = S * i[s][n + 3] + M * i[s + 1][n + 3] + C * i[s + 2][n + 3] + m * i[s + 3][n + 3], P[a] = x * p + 3 * (g * T * u + y * l * t) + o * r;
                  return P;
                } : e ? function(P, n, s, T, A) {
                  P || (P = []);
                  var p, u, t, r, i, a;
                  n *= 3;
                  var l = A * A, o = l * A, y = 1 - A, g = y * y, x = g * y;
                  for (i = 0; i < K.length; i++)
                    a = K[i], p = a[s + 1][n] - a[s][n], u = a[s + 1][n + 1] - a[s][n + 1], t = a[s + 1][n + 2] - a[s][n + 2], r = a[s + 1][n + 3] - a[s][n + 3], P[i] = x * p + 3 * (g * A * u + y * l * t) + o * r;
                  return P;
                } : b ? function(P, n, s, T, A) {
                  P || (P = []);
                  var p, u, t, r;
                  s *= 3;
                  var i = 1 - T, a = A * A, l = 1 - A, o = l * l, y = l * A * 2, g = -3 * o, x = 3 * (o - y), c = 3 * (y - a), v = 3 * a;
                  for (t = 0; t < K.length; t++)
                    r = K[t], p = g * r[s][n] + x * r[s + 1][n] + c * r[s + 2][n] + v * r[s + 3][n], u = g * r[s][n + 1] + x * r[s + 1][n + 1] + c * r[s + 2][n + 1] + v * r[s + 3][n + 1], P[t] = i * p + T * u;
                  return P;
                } : function(P, n, s, T, A) {
                  P || (P = []);
                  var p, u, t, r, i = 1 - T;
                  for (t = 0; t < K.length; t++)
                    r = K[t], p = r[s + 1][n] - r[s][n], u = r[s + 1][n + 1] - r[s][n + 1], P[t] = i * p + T * u;
                  return P;
                };
              };
            }
          ),
          /***/
          13828: (
            /***/
            function(Y) {
              Y.exports = function(K, e, b, P, n) {
                var s = e - 2, T = b - 2;
                return P && n ? function(A, p, u) {
                  A || (A = []);
                  var t, r, i, a, l, o, y = Math.max(0, Math.min(Math.floor(p), s)), g = Math.max(0, Math.min(Math.floor(u), T)), x = Math.max(0, Math.min(1, p - y)), c = Math.max(0, Math.min(1, u - g));
                  y *= 3, g *= 3;
                  var v = x * x, f = v * x, _ = 1 - x, S = _ * _, M = S * _, C = c * c, m = C * c, L = 1 - c, d = L * L, h = d * L;
                  for (o = 0; o < K.length; o++)
                    l = K[o], t = M * l[g][y] + 3 * (S * x * l[g][y + 1] + _ * v * l[g][y + 2]) + f * l[g][y + 3], r = M * l[g + 1][y] + 3 * (S * x * l[g + 1][y + 1] + _ * v * l[g + 1][y + 2]) + f * l[g + 1][y + 3], i = M * l[g + 2][y] + 3 * (S * x * l[g + 2][y + 1] + _ * v * l[g + 2][y + 2]) + f * l[g + 2][y + 3], a = M * l[g + 3][y] + 3 * (S * x * l[g + 3][y + 1] + _ * v * l[g + 3][y + 2]) + f * l[g + 3][y + 3], A[o] = h * t + 3 * (d * c * r + L * C * i) + m * a;
                  return A;
                } : P ? function(A, p, u) {
                  A || (A = []);
                  var t = Math.max(0, Math.min(Math.floor(p), s)), r = Math.max(0, Math.min(Math.floor(u), T)), i = Math.max(0, Math.min(1, p - t)), a = Math.max(0, Math.min(1, u - r)), l, o, y, g, x, c;
                  t *= 3;
                  var v = i * i, f = v * i, _ = 1 - i, S = _ * _, M = S * _, C = 1 - a;
                  for (x = 0; x < K.length; x++)
                    c = K[x], l = C * c[r][t] + a * c[r + 1][t], o = C * c[r][t + 1] + a * c[r + 1][t + 1], y = C * c[r][t + 2] + a * c[r + 1][t + 1], g = C * c[r][t + 3] + a * c[r + 1][t + 1], A[x] = M * l + 3 * (S * i * o + _ * v * y) + f * g;
                  return A;
                } : n ? function(A, p, u) {
                  A || (A = []);
                  var t = Math.max(0, Math.min(Math.floor(p), s)), r = Math.max(0, Math.min(Math.floor(u), T)), i = Math.max(0, Math.min(1, p - t)), a = Math.max(0, Math.min(1, u - r)), l, o, y, g, x, c;
                  r *= 3;
                  var v = a * a, f = v * a, _ = 1 - a, S = _ * _, M = S * _, C = 1 - i;
                  for (x = 0; x < K.length; x++)
                    c = K[x], l = C * c[r][t] + i * c[r][t + 1], o = C * c[r + 1][t] + i * c[r + 1][t + 1], y = C * c[r + 2][t] + i * c[r + 2][t + 1], g = C * c[r + 3][t] + i * c[r + 3][t + 1], A[x] = M * l + 3 * (S * a * o + _ * v * y) + f * g;
                  return A;
                } : function(A, p, u) {
                  A || (A = []);
                  var t = Math.max(0, Math.min(Math.floor(p), s)), r = Math.max(0, Math.min(Math.floor(u), T)), i = Math.max(0, Math.min(1, p - t)), a = Math.max(0, Math.min(1, u - r)), l, o, y, g, x = 1 - a, c = 1 - i;
                  for (y = 0; y < K.length; y++)
                    g = K[y], l = c * g[r][t] + i * g[r][t + 1], o = c * g[r + 1][t] + i * g[r + 1][t + 1], A[y] = x * l + a * o;
                  return A;
                };
              };
            }
          ),
          /***/
          13254: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(10820), n = e(8432), s = e(43745), T = e(10229);
              Y.exports = function(p, u, t, r) {
                function i(o, y) {
                  return b.coerce(p, u, s, o, y);
                }
                u._clipPathId = "clip" + u.uid + "carpet";
                var a = i("color", T.defaultLine);
                if (b.coerceFont(i, "font", r.font), i("carpet"), n(p, u, r, i, a), !u.a || !u.b) {
                  u.visible = !1;
                  return;
                }
                u.a.length < 3 && (u.aaxis.smoothing = 0), u.b.length < 3 && (u.baxis.smoothing = 0);
                var l = P(p, u, i);
                l || (u.visible = !1), u._cheater && i("cheaterslope"), i("zorder");
              };
            }
          ),
          /***/
          48050: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(43745),
                supplyDefaults: e(13254),
                plot: e(87947),
                calc: e(67525),
                animatable: !0,
                isContainer: !0,
                // so carpet traces get `calc` before other traces
                moduleType: "trace",
                name: "carpet",
                basePlotModule: e(37703),
                categories: ["cartesian", "svg", "carpet", "carpetAxis", "notLegendIsolatable", "noMultiCategory", "noHover", "noSortingByValue"],
                meta: {}
              };
            }
          ),
          /***/
          26571: (
            /***/
            function(Y) {
              Y.exports = function(K, e) {
                for (var b = K._fullData.length, P, n = 0; n < b; n++) {
                  var s = K._fullData[n];
                  if (s.index !== e.index && s.type === "carpet" && (P || (P = s), s.carpet === e.carpet))
                    return s;
                }
                return P;
              };
            }
          ),
          /***/
          3685: (
            /***/
            function(Y) {
              Y.exports = function(e, b, P) {
                if (e.length === 0) return "";
                var n, s = [], T = P ? 3 : 1;
                for (n = 0; n < e.length; n += T)
                  s.push(e[n] + "," + b[n]), P && n < e.length - T && (s.push("C"), s.push([e[n + 1] + "," + b[n + 1], e[n + 2] + "," + b[n + 2] + " "].join(" ")));
                return s.join(P ? "" : "L");
              };
            }
          ),
          /***/
          6720: (
            /***/
            function(Y, K, e) {
              var b = e(34809).isArrayOrTypedArray;
              Y.exports = function(n, s, T) {
                var A;
                for (b(n) ? n.length > s.length && (n = n.slice(0, s.length)) : n = [], A = 0; A < s.length; A++)
                  n[A] = T(s[A]);
                return n;
              };
            }
          ),
          /***/
          33163: (
            /***/
            function(Y) {
              Y.exports = function(e, b, P, n, s, T) {
                var A = s[0] * e.dpdx(b), p = s[1] * e.dpdy(P), u = 1, t = 1;
                if (T) {
                  var r = Math.sqrt(s[0] * s[0] + s[1] * s[1]), i = Math.sqrt(T[0] * T[0] + T[1] * T[1]), a = (s[0] * T[0] + s[1] * T[1]) / r / i;
                  t = Math.max(0, a);
                }
                var l = Math.atan2(p, A) * 180 / Math.PI;
                return l < -90 ? (l += 180, u = -u) : l > 90 && (l -= 180, u = -u), {
                  angle: l,
                  flip: u,
                  p: e.c2p(n, b, P),
                  offsetMultplier: t
                };
              };
            }
          ),
          /***/
          87947: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(62203), n = e(6720), s = e(3685), T = e(33163), A = e(30635), p = e(34809), u = p.strRotate, t = p.strTranslate, r = e(4530);
              Y.exports = function(v, f, _, S) {
                var M = v._context.staticPlot, C = f.xaxis, m = f.yaxis, L = v._fullLayout, d = L._clips;
                p.makeTraceGroups(S, _, "trace").each(function(h) {
                  var E = b.select(this), w = h[0], z = w.trace, O = z.aaxis, B = z.baxis, V = p.ensureSingle(E, "g", "minorlayer"), U = p.ensureSingle(E, "g", "majorlayer"), H = p.ensureSingle(E, "g", "boundarylayer"), F = p.ensureSingle(E, "g", "labellayer");
                  E.style("opacity", z.opacity), a(C, m, U, O, "a", O._gridlines, !0), a(C, m, U, B, "b", B._gridlines, !0), a(C, m, V, O, "a", O._minorgridlines, !0), a(C, m, V, B, "b", B._minorgridlines, !0), a(C, m, H, O, "a-boundary", O._boundarylines, M), a(C, m, H, B, "b-boundary", B._boundarylines, M);
                  var G = l(v, C, m, z, w, F, O._labels, "a-label"), q = l(v, C, m, z, w, F, B._labels, "b-label");
                  o(v, F, z, w, C, m, G, q), i(z, w, d, C, m);
                });
              };
              function i(c, v, f, _, S) {
                var M, C, m, L, d = f.select("#" + c._clipPathId);
                d.size() || (d = f.append("clipPath").classed("carpetclip", !0));
                var h = p.ensureSingle(d, "path", "carpetboundary"), E = v.clipsegments, w = [];
                for (L = 0; L < E.length; L++)
                  M = E[L], C = n([], M.x, _.c2p), m = n([], M.y, S.c2p), w.push(s(C, m, M.bicubic));
                var z = "M" + w.join("L") + "Z";
                d.attr("id", c._clipPathId), h.attr("d", z);
              }
              function a(c, v, f, _, S, M, C) {
                var m = "const-" + S + "-lines", L = f.selectAll("." + m).data(M);
                L.enter().append("path").classed(m, !0).style("vector-effect", C ? "none" : "non-scaling-stroke"), L.each(function(d) {
                  var h = d, E = h.x, w = h.y, z = n([], E, c.c2p), O = n([], w, v.c2p), B = "M" + s(z, O, h.smoothing), V = b.select(this);
                  V.attr("d", B).style("stroke-width", h.width).style("stroke", h.color).style("stroke-dasharray", P.dashStyle(h.dash, h.width)).style("fill", "none");
                }), L.exit().remove();
              }
              function l(c, v, f, _, S, M, C, m) {
                var L = M.selectAll("text." + m).data(C);
                L.enter().append("text").classed(m, !0);
                var d = 0, h = {};
                return L.each(function(E, w) {
                  var z;
                  if (E.axis.tickangle === "auto")
                    z = T(_, v, f, E.xy, E.dxy);
                  else {
                    var O = (E.axis.tickangle + 180) * Math.PI / 180;
                    z = T(_, v, f, E.xy, [Math.cos(O), Math.sin(O)]);
                  }
                  w || (h = {
                    angle: z.angle,
                    flip: z.flip
                  });
                  var B = (E.endAnchor ? -1 : 1) * z.flip, V = b.select(this).attr({
                    "text-anchor": B > 0 ? "start" : "end",
                    "data-notex": 1
                  }).call(P.font, E.font).text(E.text).call(A.convertToTspans, c), U = P.bBox(this);
                  V.attr(
                    "transform",
                    // Translate to the correct point:
                    t(z.p[0], z.p[1]) + // Rotate to line up with grid line tangent:
                    u(z.angle) + // Adjust the baseline and indentation:
                    t(E.axis.labelpadding * B, U.height * 0.3)
                  ), d = Math.max(d, U.width + E.axis.labelpadding);
                }), L.exit().remove(), h.maxExtent = d, h;
              }
              function o(c, v, f, _, S, M, C, m) {
                var L, d, h, E, w = p.aggNums(Math.min, null, f.a), z = p.aggNums(Math.max, null, f.a), O = p.aggNums(Math.min, null, f.b), B = p.aggNums(Math.max, null, f.b);
                L = 0.5 * (w + z), d = O, h = f.ab2xy(L, d, !0), E = f.dxyda_rough(L, d), C.angle === void 0 && p.extendFlat(C, T(f, S, M, h, f.dxydb_rough(L, d))), x(c, v, f, _, h, E, f.aaxis, S, M, C, "a-title"), L = w, d = 0.5 * (O + B), h = f.ab2xy(L, d, !0), E = f.dxydb_rough(L, d), m.angle === void 0 && p.extendFlat(m, T(f, S, M, h, f.dxyda_rough(L, d))), x(c, v, f, _, h, E, f.baxis, S, M, m, "b-title");
              }
              var y = r.LINE_SPACING, g = (1 - r.MID_SHIFT) / y + 1;
              function x(c, v, f, _, S, M, C, m, L, d, h) {
                var E = [];
                C.title.text && E.push(C.title.text);
                var w = v.selectAll("text." + h).data(E), z = d.maxExtent;
                w.enter().append("text").classed(h, !0), w.each(function() {
                  var O = T(f, m, L, S, M);
                  ["start", "both"].indexOf(C.showticklabels) === -1 && (z = 0);
                  var B = C.title.font.size;
                  z += B + C.title.offset;
                  var V = d.angle + (d.flip < 0 ? 180 : 0), U = (V - O.angle + 450) % 360, H = U > 90 && U < 270, F = b.select(this);
                  F.text(C.title.text).call(A.convertToTspans, c), H && (z = (-A.lineCount(F) + g) * y * B - z), F.attr("transform", t(O.p[0], O.p[1]) + u(O.angle) + t(0, z)).attr("text-anchor", "middle").call(P.font, C.title.font);
                }), w.exit().remove();
              }
            }
          ),
          /***/
          76842: (
            /***/
            function(Y, K, e) {
              var b = e(45923), P = e(98813).findBin, n = e(57075), s = e(13828), T = e(39848), A = e(41839);
              Y.exports = function(u) {
                var t = u._a, r = u._b, i = t.length, a = r.length, l = u.aaxis, o = u.baxis, y = t[0], g = t[i - 1], x = r[0], c = r[a - 1], v = t[t.length - 1] - t[0], f = r[r.length - 1] - r[0], _ = v * b.RELATIVE_CULL_TOLERANCE, S = f * b.RELATIVE_CULL_TOLERANCE;
                y -= _, g += _, x -= S, c += S, u.isVisible = function(M, C) {
                  return M > y && M < g && C > x && C < c;
                }, u.isOccluded = function(M, C) {
                  return M < y || M > g || C < x || C > c;
                }, u.setScale = function() {
                  var M = u._x, C = u._y, m = n(u._xctrl, u._yctrl, M, C, l.smoothing, o.smoothing);
                  u._xctrl = m[0], u._yctrl = m[1], u.evalxy = s([u._xctrl, u._yctrl], i, a, l.smoothing, o.smoothing), u.dxydi = T([u._xctrl, u._yctrl], l.smoothing, o.smoothing), u.dxydj = A([u._xctrl, u._yctrl], l.smoothing, o.smoothing);
                }, u.i2a = function(M) {
                  var C = Math.max(0, Math.floor(M[0]), i - 2), m = M[0] - C;
                  return (1 - m) * t[C] + m * t[C + 1];
                }, u.j2b = function(M) {
                  var C = Math.max(0, Math.floor(M[1]), i - 2), m = M[1] - C;
                  return (1 - m) * r[C] + m * r[C + 1];
                }, u.ij2ab = function(M) {
                  return [u.i2a(M[0]), u.j2b(M[1])];
                }, u.a2i = function(M) {
                  var C = Math.max(0, Math.min(P(M, t), i - 2)), m = t[C], L = t[C + 1];
                  return Math.max(0, Math.min(i - 1, C + (M - m) / (L - m)));
                }, u.b2j = function(M) {
                  var C = Math.max(0, Math.min(P(M, r), a - 2)), m = r[C], L = r[C + 1];
                  return Math.max(0, Math.min(a - 1, C + (M - m) / (L - m)));
                }, u.ab2ij = function(M) {
                  return [u.a2i(M[0]), u.b2j(M[1])];
                }, u.i2c = function(M, C) {
                  return u.evalxy([], M, C);
                }, u.ab2xy = function(M, C, m) {
                  if (!m && (M < t[0] || M > t[i - 1] | C < r[0] || C > r[a - 1]))
                    return [!1, !1];
                  var L = u.a2i(M), d = u.b2j(C), h = u.evalxy([], L, d);
                  if (m) {
                    var E = 0, w = 0, z = [], O, B, V, U;
                    M < t[0] ? (O = 0, B = 0, E = (M - t[0]) / (t[1] - t[0])) : M > t[i - 1] ? (O = i - 2, B = 1, E = (M - t[i - 1]) / (t[i - 1] - t[i - 2])) : (O = Math.max(0, Math.min(i - 2, Math.floor(L))), B = L - O), C < r[0] ? (V = 0, U = 0, w = (C - r[0]) / (r[1] - r[0])) : C > r[a - 1] ? (V = a - 2, U = 1, w = (C - r[a - 1]) / (r[a - 1] - r[a - 2])) : (V = Math.max(0, Math.min(a - 2, Math.floor(d))), U = d - V), E && (u.dxydi(z, O, V, B, U), h[0] += z[0] * E, h[1] += z[1] * E), w && (u.dxydj(z, O, V, B, U), h[0] += z[0] * w, h[1] += z[1] * w);
                  }
                  return h;
                }, u.c2p = function(M, C, m) {
                  return [C.c2p(M[0]), m.c2p(M[1])];
                }, u.p2x = function(M, C, m) {
                  return [C.p2c(M[0]), m.p2c(M[1])];
                }, u.dadi = function(M) {
                  var C = Math.max(0, Math.min(t.length - 2, M));
                  return t[C + 1] - t[C];
                }, u.dbdj = function(M) {
                  var C = Math.max(0, Math.min(r.length - 2, M));
                  return r[C + 1] - r[C];
                }, u.dxyda = function(M, C, m, L) {
                  var d = u.dxydi(null, M, C, m, L), h = u.dadi(M, m);
                  return [d[0] / h, d[1] / h];
                }, u.dxydb = function(M, C, m, L) {
                  var d = u.dxydj(null, M, C, m, L), h = u.dbdj(C, L);
                  return [d[0] / h, d[1] / h];
                }, u.dxyda_rough = function(M, C, m) {
                  var L = v * (m || 0.1), d = u.ab2xy(M + L, C, !0), h = u.ab2xy(M - L, C, !0);
                  return [(d[0] - h[0]) * 0.5 / L, (d[1] - h[1]) * 0.5 / L];
                }, u.dxydb_rough = function(M, C, m) {
                  var L = f * (m || 0.1), d = u.ab2xy(M, C + L, !0), h = u.ab2xy(M, C - L, !0);
                  return [(d[0] - h[0]) * 0.5 / L, (d[1] - h[1]) * 0.5 / L];
                }, u.dpdx = function(M) {
                  return M._m;
                }, u.dpdy = function(M) {
                  return M._m;
                };
              };
            }
          ),
          /***/
          13007: (
            /***/
            function(Y, K, e) {
              var b = e(34809);
              Y.exports = function(n, s, T) {
                var A, p, u, t = [], r = [], i = n[0].length, a = n.length;
                function l(q, rt) {
                  var st = 0, vt, ht = 0;
                  return q > 0 && (vt = n[rt][q - 1]) !== void 0 && (ht++, st += vt), q < i - 1 && (vt = n[rt][q + 1]) !== void 0 && (ht++, st += vt), rt > 0 && (vt = n[rt - 1][q]) !== void 0 && (ht++, st += vt), rt < a - 1 && (vt = n[rt + 1][q]) !== void 0 && (ht++, st += vt), st / Math.max(1, ht);
                }
                var o = 0;
                for (A = 0; A < i; A++)
                  for (p = 0; p < a; p++)
                    n[p][A] === void 0 && (t.push(A), r.push(p), n[p][A] = l(A, p)), o = Math.max(o, Math.abs(n[p][A]));
                if (!t.length) return n;
                var y, g, x, c, v, f, _, S, M, C, m, L = 1e-5, d = 0, h = 100, E = 0, w = t.length;
                do {
                  for (d = 0, u = 0; u < w; u++) {
                    A = t[u], p = r[u];
                    var z = 0, O = 0, B, V, U, H, F, G;
                    A === 0 ? (F = Math.min(i - 1, 2), U = s[F], H = s[1], B = n[p][F], V = n[p][1], O += V + (V - B) * (s[0] - H) / (H - U), z++) : A === i - 1 && (F = Math.max(0, i - 3), U = s[F], H = s[i - 2], B = n[p][F], V = n[p][i - 2], O += V + (V - B) * (s[i - 1] - H) / (H - U), z++), (A === 0 || A === i - 1) && p > 0 && p < a - 1 && (y = T[p + 1] - T[p], g = T[p] - T[p - 1], O += (g * n[p + 1][A] + y * n[p - 1][A]) / (g + y), z++), p === 0 ? (G = Math.min(a - 1, 2), U = T[G], H = T[1], B = n[G][A], V = n[1][A], O += V + (V - B) * (T[0] - H) / (H - U), z++) : p === a - 1 && (G = Math.max(0, a - 3), U = T[G], H = T[a - 2], B = n[G][A], V = n[a - 2][A], O += V + (V - B) * (T[a - 1] - H) / (H - U), z++), (p === 0 || p === a - 1) && A > 0 && A < i - 1 && (y = s[A + 1] - s[A], g = s[A] - s[A - 1], O += (g * n[p][A + 1] + y * n[p][A - 1]) / (g + y), z++), z ? O /= z : (x = s[A + 1] - s[A], c = s[A] - s[A - 1], v = T[p + 1] - T[p], f = T[p] - T[p - 1], _ = x * c * (x + c), S = v * f * (v + f), O = (_ * (f * n[p + 1][A] + v * n[p - 1][A]) + S * (c * n[p][A + 1] + x * n[p][A - 1])) / (S * (c + x) + _ * (f + v))), M = O - n[p][A], C = M / o, d += C * C, m = z ? 0 : 0.85, n[p][A] += M * (1 + m);
                  }
                  d = Math.sqrt(d);
                } while (E++ < h && d > L);
                return b.log("Smoother converged to", d, "after", E, "iterations"), n;
              };
            }
          ),
          /***/
          10820: (
            /***/
            function(Y, K, e) {
              var b = e(34809).isArray1D;
              Y.exports = function(n, s, T) {
                var A = T("x"), p = A && A.length, u = T("y"), t = u && u.length;
                if (!p && !t) return !1;
                if (s._cheater = !A, (!p || b(A)) && (!t || b(u))) {
                  var r = p ? A.length : 1 / 0;
                  t && (r = Math.min(r, u.length)), s.a && s.a.length && (r = Math.min(r, s.a.length)), s.b && s.b.length && (r = Math.min(r, s.b.length)), s._length = r;
                } else s._length = null;
                return !0;
              };
            }
          ),
          /***/
          92802: (
            /***/
            function(Y, K, e) {
              var b = e(3208).rb, P = e(6893), n = e(87163), s = e(9829), T = e(10229).defaultLine, A = e(93049).extendFlat, p = P.marker.line;
              Y.exports = A({
                locations: {
                  valType: "data_array",
                  editType: "calc"
                },
                locationmode: P.locationmode,
                z: {
                  valType: "data_array",
                  editType: "calc"
                },
                geojson: A({}, P.geojson, {}),
                featureidkey: P.featureidkey,
                text: A({}, P.text, {}),
                hovertext: A({}, P.hovertext, {}),
                marker: {
                  line: {
                    color: A({}, p.color, {
                      dflt: T
                    }),
                    width: A({}, p.width, {
                      dflt: 1
                    }),
                    editType: "calc"
                  },
                  opacity: {
                    valType: "number",
                    arrayOk: !0,
                    min: 0,
                    max: 1,
                    dflt: 1,
                    editType: "style"
                  },
                  editType: "calc"
                },
                selected: {
                  marker: {
                    opacity: P.selected.marker.opacity,
                    editType: "plot"
                  },
                  editType: "plot"
                },
                unselected: {
                  marker: {
                    opacity: P.unselected.marker.opacity,
                    editType: "plot"
                  },
                  editType: "plot"
                },
                hoverinfo: A({}, s.hoverinfo, {
                  editType: "calc",
                  flags: ["location", "z", "text", "name"]
                }),
                hovertemplate: b(),
                showlegend: A({}, s.showlegend, {
                  dflt: !1
                })
              }, n("", {
                cLetter: "z",
                editTypeOverride: "calc"
              }));
            }
          ),
          /***/
          12702: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(63821).BADNUM, n = e(28379), s = e(99203), T = e(48861);
              function A(p) {
                return p && typeof p == "string";
              }
              Y.exports = function(u, t) {
                var r = t._length, i = new Array(r), a;
                t.geojson ? a = function(x) {
                  return A(x) || b(x);
                } : a = A;
                for (var l = 0; l < r; l++) {
                  var o = i[l] = {}, y = t.locations[l], g = t.z[l];
                  a(y) && b(g) ? (o.loc = y, o.z = g) : (o.loc = null, o.z = P), o.index = l;
                }
                return s(i, t), n(u, t, {
                  vals: t.z,
                  containerStr: "",
                  cLetter: "z"
                }), T(i, t), i;
              };
            }
          ),
          /***/
          51893: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(39356), n = e(92802);
              Y.exports = function(T, A, p, u) {
                function t(g, x) {
                  return b.coerce(T, A, n, g, x);
                }
                var r = t("locations"), i = t("z");
                if (!(r && r.length && b.isArrayOrTypedArray(i) && i.length)) {
                  A.visible = !1;
                  return;
                }
                A._length = Math.min(r.length, i.length);
                var a = t("geojson"), l;
                (typeof a == "string" && a !== "" || b.isPlainObject(a)) && (l = "geojson-id");
                var o = t("locationmode", l);
                o === "geojson-id" && t("featureidkey"), t("text"), t("hovertext"), t("hovertemplate");
                var y = t("marker.line.width");
                y && t("marker.line.color"), t("marker.opacity"), P(T, A, u, t, {
                  prefix: "",
                  cLetter: "z"
                }), b.coerceSelectionMarkerOpacity(A, t);
              };
            }
          ),
          /***/
          38414: (
            /***/
            function(Y) {
              Y.exports = function(e, b, P, n, s) {
                e.location = b.location, e.z = b.z;
                var T = n[s];
                return T.fIn && T.fIn.properties && (e.properties = T.fIn.properties), e.ct = T.ct, e;
              };
            }
          ),
          /***/
          94125: (
            /***/
            function(Y, K, e) {
              var b = e(29714), P = e(92802), n = e(34809).fillText;
              Y.exports = function(A, p, u) {
                var t = A.cd, r = t[0].trace, i = A.subplot, a, l, o, y, g = [p, u], x = [p + 360, u];
                for (l = 0; l < t.length; l++)
                  if (a = t[l], y = !1, a._polygons) {
                    for (o = 0; o < a._polygons.length; o++)
                      a._polygons[o].contains(g) && (y = !y), a._polygons[o].contains(x) && (y = !y);
                    if (y) break;
                  }
                if (!(!y || !a))
                  return A.x0 = A.x1 = A.xa.c2p(a.ct), A.y0 = A.y1 = A.ya.c2p(a.ct), A.index = a.index, A.location = a.loc, A.z = a.z, A.zLabel = b.tickText(i.mockAxis, i.mockAxis.c2l(a.z), "hover").text, A.hovertemplate = a.hovertemplate, s(A, r, a), [A];
              };
              function s(T, A, p) {
                if (!A.hovertemplate) {
                  var u = p.hi || A.hoverinfo, t = String(p.loc), r = u === "all" ? P.hoverinfo.flags : u.split("+"), i = r.indexOf("name") !== -1, a = r.indexOf("location") !== -1, l = r.indexOf("z") !== -1, o = r.indexOf("text") !== -1, y = !i && a, g = [];
                  y ? T.nameOverride = t : (i && (T.nameOverride = A.name), a && g.push(t)), l && g.push(T.zLabel), o && n(p, A, g), T.extraText = g.join("<br>");
                }
              }
            }
          ),
          /***/
          58075: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(92802),
                supplyDefaults: e(51893),
                colorbar: e(12431),
                calc: e(12702),
                calcGeoJSON: e(4700).calcGeoJSON,
                plot: e(4700).plot,
                style: e(59342).style,
                styleOnSelect: e(59342).styleOnSelect,
                hoverPoints: e(94125),
                eventData: e(38414),
                selectPoints: e(43727),
                moduleType: "trace",
                name: "choropleth",
                basePlotModule: e(47544),
                categories: ["geo", "noOpacity", "showLegend"],
                meta: {}
              };
            }
          ),
          /***/
          4700: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(34809), n = e(3994), s = e(11577).getTopojsonFeatures, T = e(32919).findExtremes, A = e(59342).style;
              function p(t, r, i) {
                var a = r.layers.backplot.select(".choroplethlayer");
                P.makeTraceGroups(a, i, "trace choropleth").each(function(l) {
                  var o = b.select(this), y = o.selectAll("path.choroplethlocation").data(P.identity);
                  y.enter().append("path").classed("choroplethlocation", !0), y.exit().remove(), A(t, l);
                });
              }
              function u(t, r) {
                for (var i = t[0].trace, a = r[i.geo], l = a._subplot, o = i.locationmode, y = i._length, g = o === "geojson-id" ? n.extractTraceFeature(t) : s(i, l.topojson), x = [], c = [], v = 0; v < y; v++) {
                  var f = t[v], _ = o === "geojson-id" ? f.fOut : n.locationToFeature(o, f.loc, g);
                  if (_) {
                    f.geojson = _, f.ct = _.properties.ct, f._polygons = n.feature2polygons(_);
                    var S = n.computeBbox(_);
                    x.push(S[0], S[2]), c.push(S[1], S[3]);
                  } else
                    f.geojson = null;
                }
                if (a.fitbounds === "geojson" && o === "geojson-id") {
                  var M = n.computeBbox(n.getTraceGeojson(i));
                  x = [M[0], M[2]], c = [M[1], M[3]];
                }
                var C = {
                  padded: !0
                };
                i._extremes.lon = T(a.lonaxis._ax, x, C), i._extremes.lat = T(a.lataxis._ax, c, C);
              }
              Y.exports = {
                calcGeoJSON: u,
                plot: p
              };
            }
          ),
          /***/
          43727: (
            /***/
            function(Y) {
              Y.exports = function(e, b) {
                var P = e.cd, n = e.xaxis, s = e.yaxis, T = [], A, p, u, t, r;
                if (b === !1)
                  for (A = 0; A < P.length; A++)
                    P[A].selected = 0;
                else
                  for (A = 0; A < P.length; A++)
                    p = P[A], u = p.ct, u && (t = n.c2p(u), r = s.c2p(u), b.contains([t, r], null, A, e) ? (T.push({
                      pointNumber: A,
                      lon: u[0],
                      lat: u[1]
                    }), p.selected = 1) : p.selected = 0);
                return T;
              };
            }
          ),
          /***/
          59342: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(78766), n = e(62203), s = e(88856);
              function T(u, t) {
                t && A(u, t);
              }
              function A(u, t) {
                var r = t[0].trace, i = t[0].node3, a = i.selectAll(".choroplethlocation"), l = r.marker || {}, o = l.line || {}, y = s.makeColorScaleFuncFromTrace(r);
                a.each(function(g) {
                  b.select(this).attr("fill", y(g.z)).call(P.stroke, g.mlc || o.color).call(n.dashLine, "", g.mlw || o.width || 0).style("opacity", l.opacity);
                }), n.selectedPointStyle(a, r);
              }
              function p(u, t) {
                var r = t[0].node3, i = t[0].trace;
                i.selectedpoints ? n.selectedPointStyle(r.selectAll(".choroplethlocation"), i) : A(u, t);
              }
              Y.exports = {
                style: T,
                styleOnSelect: p
              };
            }
          ),
          /***/
          34770: (
            /***/
            function(Y, K, e) {
              var b = e(92802), P = e(87163), n = e(3208).rb, s = e(9829), T = e(93049).extendFlat;
              Y.exports = T({
                locations: {
                  valType: "data_array",
                  editType: "calc"
                },
                // TODO
                // Maybe start with only one value (that we could name e.g. 'geojson-id'),
                // but eventually:
                // - we could also support for our own dist/topojson/*
                //   .. and locationmode: choroplethAttrs.locationmode,
                z: {
                  valType: "data_array",
                  editType: "calc"
                },
                // TODO maybe we could also set a "key" to dig out values out of the
                // GeoJSON feature `properties` fields?
                geojson: {
                  valType: "any",
                  editType: "calc"
                },
                featureidkey: T({}, b.featureidkey, {}),
                // TODO agree on name / behaviour
                //
                // 'below' is used currently for layout.map.layers,
                // even though it's not very plotly-esque.
                //
                // Note also, that the map-gl style don't all have the same layers,
                // see https://codepen.io/etpinard/pen/ydVMwM for full list
                below: {
                  valType: "string",
                  editType: "plot"
                },
                text: b.text,
                hovertext: b.hovertext,
                marker: {
                  line: {
                    color: T({}, b.marker.line.color, {
                      editType: "plot"
                    }),
                    width: T({}, b.marker.line.width, {
                      editType: "plot"
                    }),
                    editType: "calc"
                  },
                  // TODO maybe having a dflt less than 1, together with `below:''` would be better?
                  opacity: T({}, b.marker.opacity, {
                    editType: "plot"
                  }),
                  editType: "calc"
                },
                selected: {
                  marker: {
                    opacity: T({}, b.selected.marker.opacity, {
                      editType: "plot"
                    }),
                    editType: "plot"
                  },
                  editType: "plot"
                },
                unselected: {
                  marker: {
                    opacity: T({}, b.unselected.marker.opacity, {
                      editType: "plot"
                    }),
                    editType: "plot"
                  },
                  editType: "plot"
                },
                hoverinfo: b.hoverinfo,
                hovertemplate: n({}, {
                  keys: ["properties"]
                }),
                showlegend: T({}, s.showlegend, {
                  dflt: !1
                })
              }, P("", {
                cLetter: "z",
                editTypeOverride: "calc"
              }));
            }
          ),
          /***/
          40980: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(34809), n = e(88856), s = e(62203), T = e(39532).makeBlank, A = e(3994);
              function p(t) {
                var r = t[0].trace, i = r.visible === !0 && r._length !== 0, a = {
                  layout: {
                    visibility: "none"
                  },
                  paint: {}
                }, l = {
                  layout: {
                    visibility: "none"
                  },
                  paint: {}
                }, o = r._opts = {
                  fill: a,
                  line: l,
                  geojson: T()
                };
                if (!i) return o;
                var y = A.extractTraceFeature(t);
                if (!y) return o;
                var g = n.makeColorScaleFuncFromTrace(r), x = r.marker, c = x.line || {}, v;
                P.isArrayOrTypedArray(x.opacity) && (v = function(d) {
                  var h = d.mo;
                  return b(h) ? +P.constrain(h, 0, 1) : 0;
                });
                var f;
                P.isArrayOrTypedArray(c.color) && (f = function(d) {
                  return d.mlc;
                });
                var _;
                P.isArrayOrTypedArray(c.width) && (_ = function(d) {
                  return d.mlw;
                });
                for (var S = 0; S < t.length; S++) {
                  var M = t[S], C = M.fOut;
                  if (C) {
                    var m = C.properties;
                    m.fc = g(M.z), v && (m.mo = v(M)), f && (m.mlc = f(M)), _ && (m.mlw = _(M)), M.ct = m.ct, M._polygons = A.feature2polygons(C);
                  }
                }
                var L = v ? {
                  type: "identity",
                  property: "mo"
                } : x.opacity;
                return P.extendFlat(a.paint, {
                  "fill-color": {
                    type: "identity",
                    property: "fc"
                  },
                  "fill-opacity": L
                }), P.extendFlat(l.paint, {
                  "line-color": f ? {
                    type: "identity",
                    property: "mlc"
                  } : c.color,
                  "line-width": _ ? {
                    type: "identity",
                    property: "mlw"
                  } : c.width,
                  "line-opacity": L
                }), a.layout.visibility = "visible", l.layout.visibility = "visible", o.geojson = {
                  type: "FeatureCollection",
                  features: y
                }, u(t), o;
              }
              function u(t) {
                var r = t[0].trace, i = r._opts, a;
                if (r.selectedpoints) {
                  for (var l = s.makeSelectedPointStyleFns(r), o = 0; o < t.length; o++) {
                    var y = t[o];
                    y.fOut && (y.fOut.properties.mo2 = l.selectedOpacityFn(y));
                  }
                  a = {
                    type: "identity",
                    property: "mo2"
                  };
                } else
                  a = P.isArrayOrTypedArray(r.marker.opacity) ? {
                    type: "identity",
                    property: "mo"
                  } : r.marker.opacity;
                return P.extendFlat(i.fill.paint, {
                  "fill-opacity": a
                }), P.extendFlat(i.line.paint, {
                  "line-opacity": a
                }), i;
              }
              Y.exports = {
                convert: p,
                convertOnSelect: u
              };
            }
          ),
          /***/
          94149: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(39356), n = e(34770);
              Y.exports = function(T, A, p, u) {
                function t(o, y) {
                  return b.coerce(T, A, n, o, y);
                }
                var r = t("locations"), i = t("z"), a = t("geojson");
                if (!b.isArrayOrTypedArray(r) || !r.length || !b.isArrayOrTypedArray(i) || !i.length || !(typeof a == "string" && a !== "" || b.isPlainObject(a))) {
                  A.visible = !1;
                  return;
                }
                t("featureidkey"), A._length = Math.min(r.length, i.length), t("below"), t("text"), t("hovertext"), t("hovertemplate");
                var l = t("marker.line.width");
                l && t("marker.line.color"), t("marker.opacity"), P(T, A, u, t, {
                  prefix: "",
                  cLetter: "z"
                }), b.coerceSelectionMarkerOpacity(A, t);
              };
            }
          ),
          /***/
          9419: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(34770),
                supplyDefaults: e(94149),
                colorbar: e(12431),
                calc: e(12702),
                plot: e(30316),
                hoverPoints: e(94125),
                eventData: e(38414),
                selectPoints: e(43727),
                styleOnSelect: function(b, P) {
                  if (P) {
                    var n = P[0].trace;
                    n._glTrace.updateOnSelect(P);
                  }
                },
                getBelow: function(b, P) {
                  for (var n = P.getMapLayers(), s = n.length - 2; s >= 0; s--) {
                    var T = n[s].id;
                    if (typeof T == "string" && T.indexOf("water") === 0) {
                      for (var A = s + 1; A < n.length; A++)
                        if (T = n[A].id, typeof T == "string" && T.indexOf("plotly-") === -1)
                          return T;
                    }
                  }
                },
                moduleType: "trace",
                name: "choroplethmap",
                basePlotModule: e(34091),
                categories: ["map", "gl", "noOpacity", "showLegend"],
                meta: {
                  hr_name: "choropleth_map"
                }
              };
            }
          ),
          /***/
          30316: (
            /***/
            function(Y, K, e) {
              var b = e(40980).convert, P = e(40980).convertOnSelect, n = e(8814).traceLayerPrefix;
              function s(A, p) {
                this.type = "choroplethmap", this.subplot = A, this.uid = p, this.sourceId = "source-" + p, this.layerList = [["fill", n + p + "-fill"], ["line", n + p + "-line"]], this.below = null;
              }
              var T = s.prototype;
              T.update = function(A) {
                this._update(b(A)), A[0].trace._glTrace = this;
              }, T.updateOnSelect = function(A) {
                this._update(P(A));
              }, T._update = function(A) {
                var p = this.subplot, u = this.layerList, t = p.belowLookup["trace-" + this.uid];
                p.map.getSource(this.sourceId).setData(A.geojson), t !== this.below && (this._removeLayers(), this._addLayers(A, t), this.below = t);
                for (var r = 0; r < u.length; r++) {
                  var i = u[r], a = i[0], l = i[1], o = A[a];
                  p.setOptions(l, "setLayoutProperty", o.layout), o.layout.visibility === "visible" && p.setOptions(l, "setPaintProperty", o.paint);
                }
              }, T._addLayers = function(A, p) {
                for (var u = this.subplot, t = this.layerList, r = this.sourceId, i = 0; i < t.length; i++) {
                  var a = t[i], l = a[0], o = A[l];
                  u.addLayer({
                    type: l,
                    id: a[1],
                    source: r,
                    layout: o.layout,
                    paint: o.paint
                  }, p);
                }
              }, T._removeLayers = function() {
                for (var A = this.subplot.map, p = this.layerList, u = p.length - 1; u >= 0; u--)
                  A.removeLayer(p[u][1]);
              }, T.dispose = function() {
                var A = this.subplot.map;
                this._removeLayers(), A.removeSource(this.sourceId);
              }, Y.exports = function(p, u) {
                var t = u[0].trace, r = new s(p, t.uid), i = r.sourceId, a = b(u), l = r.below = p.belowLookup["trace-" + t.uid];
                return p.map.addSource(i, {
                  type: "geojson",
                  data: a.geojson
                }), r._addLayers(a, l), u[0].trace._glTrace = r, r;
              };
            }
          ),
          /***/
          86227: (
            /***/
            function(Y, K, e) {
              var b = e(92802), P = e(87163), n = e(3208).rb, s = e(9829), T = e(93049).extendFlat;
              Y.exports = T({
                locations: {
                  valType: "data_array",
                  editType: "calc"
                },
                // TODO
                // Maybe start with only one value (that we could name e.g. 'geojson-id'),
                // but eventually:
                // - we could also support for our own dist/topojson/*
                //   .. and locationmode: choroplethAttrs.locationmode,
                z: {
                  valType: "data_array",
                  editType: "calc"
                },
                // TODO maybe we could also set a "key" to dig out values out of the
                // GeoJSON feature `properties` fields?
                geojson: {
                  valType: "any",
                  editType: "calc"
                },
                featureidkey: T({}, b.featureidkey, {}),
                // TODO agree on name / behaviour
                //
                // 'below' is used currently for layout.mapbox.layers,
                // even though it's not very plotly-esque.
                //
                // Note also, that the mapbox-gl style don't all have the same layers,
                // see https://codepen.io/etpinard/pen/ydVMwM for full list
                below: {
                  valType: "string",
                  editType: "plot"
                },
                text: b.text,
                hovertext: b.hovertext,
                marker: {
                  line: {
                    color: T({}, b.marker.line.color, {
                      editType: "plot"
                    }),
                    width: T({}, b.marker.line.width, {
                      editType: "plot"
                    }),
                    editType: "calc"
                  },
                  // TODO maybe having a dflt less than 1, together with `below:''` would be better?
                  opacity: T({}, b.marker.opacity, {
                    editType: "plot"
                  }),
                  editType: "calc"
                },
                selected: {
                  marker: {
                    opacity: T({}, b.selected.marker.opacity, {
                      editType: "plot"
                    }),
                    editType: "plot"
                  },
                  editType: "plot"
                },
                unselected: {
                  marker: {
                    opacity: T({}, b.unselected.marker.opacity, {
                      editType: "plot"
                    }),
                    editType: "plot"
                  },
                  editType: "plot"
                },
                hoverinfo: b.hoverinfo,
                hovertemplate: n({}, {
                  keys: ["properties"]
                }),
                showlegend: T({}, s.showlegend, {
                  dflt: !1
                })
              }, P("", {
                cLetter: "z",
                editTypeOverride: "calc"
              }));
            }
          ),
          /***/
          51335: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(34809), n = e(88856), s = e(62203), T = e(39532).makeBlank, A = e(3994);
              function p(t) {
                var r = t[0].trace, i = r.visible === !0 && r._length !== 0, a = {
                  layout: {
                    visibility: "none"
                  },
                  paint: {}
                }, l = {
                  layout: {
                    visibility: "none"
                  },
                  paint: {}
                }, o = r._opts = {
                  fill: a,
                  line: l,
                  geojson: T()
                };
                if (!i) return o;
                var y = A.extractTraceFeature(t);
                if (!y) return o;
                var g = n.makeColorScaleFuncFromTrace(r), x = r.marker, c = x.line || {}, v;
                P.isArrayOrTypedArray(x.opacity) && (v = function(d) {
                  var h = d.mo;
                  return b(h) ? +P.constrain(h, 0, 1) : 0;
                });
                var f;
                P.isArrayOrTypedArray(c.color) && (f = function(d) {
                  return d.mlc;
                });
                var _;
                P.isArrayOrTypedArray(c.width) && (_ = function(d) {
                  return d.mlw;
                });
                for (var S = 0; S < t.length; S++) {
                  var M = t[S], C = M.fOut;
                  if (C) {
                    var m = C.properties;
                    m.fc = g(M.z), v && (m.mo = v(M)), f && (m.mlc = f(M)), _ && (m.mlw = _(M)), M.ct = m.ct, M._polygons = A.feature2polygons(C);
                  }
                }
                var L = v ? {
                  type: "identity",
                  property: "mo"
                } : x.opacity;
                return P.extendFlat(a.paint, {
                  "fill-color": {
                    type: "identity",
                    property: "fc"
                  },
                  "fill-opacity": L
                }), P.extendFlat(l.paint, {
                  "line-color": f ? {
                    type: "identity",
                    property: "mlc"
                  } : c.color,
                  "line-width": _ ? {
                    type: "identity",
                    property: "mlw"
                  } : c.width,
                  "line-opacity": L
                }), a.layout.visibility = "visible", l.layout.visibility = "visible", o.geojson = {
                  type: "FeatureCollection",
                  features: y
                }, u(t), o;
              }
              function u(t) {
                var r = t[0].trace, i = r._opts, a;
                if (r.selectedpoints) {
                  for (var l = s.makeSelectedPointStyleFns(r), o = 0; o < t.length; o++) {
                    var y = t[o];
                    y.fOut && (y.fOut.properties.mo2 = l.selectedOpacityFn(y));
                  }
                  a = {
                    type: "identity",
                    property: "mo2"
                  };
                } else
                  a = P.isArrayOrTypedArray(r.marker.opacity) ? {
                    type: "identity",
                    property: "mo"
                  } : r.marker.opacity;
                return P.extendFlat(i.fill.paint, {
                  "fill-opacity": a
                }), P.extendFlat(i.line.paint, {
                  "line-opacity": a
                }), i;
              }
              Y.exports = {
                convert: p,
                convertOnSelect: u
              };
            }
          ),
          /***/
          8244: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(39356), n = e(86227);
              Y.exports = function(T, A, p, u) {
                function t(o, y) {
                  return b.coerce(T, A, n, o, y);
                }
                var r = t("locations"), i = t("z"), a = t("geojson");
                if (!b.isArrayOrTypedArray(r) || !r.length || !b.isArrayOrTypedArray(i) || !i.length || !(typeof a == "string" && a !== "" || b.isPlainObject(a))) {
                  A.visible = !1;
                  return;
                }
                t("featureidkey"), A._length = Math.min(r.length, i.length), t("below"), t("text"), t("hovertext"), t("hovertemplate");
                var l = t("marker.line.width");
                l && t("marker.line.color"), t("marker.opacity"), P(T, A, u, t, {
                  prefix: "",
                  cLetter: "z"
                }), b.coerceSelectionMarkerOpacity(A, t);
              };
            }
          ),
          /***/
          28128: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(86227),
                supplyDefaults: e(8244),
                colorbar: e(12431),
                calc: e(12702),
                plot: e(33501),
                hoverPoints: e(94125),
                eventData: e(38414),
                selectPoints: e(43727),
                styleOnSelect: function(b, P) {
                  if (P) {
                    var n = P[0].trace;
                    n._glTrace.updateOnSelect(P);
                  }
                },
                getBelow: function(b, P) {
                  for (var n = P.getMapLayers(), s = n.length - 2; s >= 0; s--) {
                    var T = n[s].id;
                    if (typeof T == "string" && T.indexOf("water") === 0) {
                      for (var A = s + 1; A < n.length; A++)
                        if (T = n[A].id, typeof T == "string" && T.indexOf("plotly-") === -1)
                          return T;
                    }
                  }
                },
                moduleType: "trace",
                name: "choroplethmapbox",
                basePlotModule: e(68192),
                categories: ["mapbox", "gl", "noOpacity", "showLegend"],
                meta: {
                  hr_name: "choropleth_mapbox"
                }
              };
            }
          ),
          /***/
          33501: (
            /***/
            function(Y, K, e) {
              var b = e(51335).convert, P = e(51335).convertOnSelect, n = e(44245).traceLayerPrefix;
              function s(A, p) {
                this.type = "choroplethmapbox", this.subplot = A, this.uid = p, this.sourceId = "source-" + p, this.layerList = [["fill", n + p + "-fill"], ["line", n + p + "-line"]], this.below = null;
              }
              var T = s.prototype;
              T.update = function(A) {
                this._update(b(A)), A[0].trace._glTrace = this;
              }, T.updateOnSelect = function(A) {
                this._update(P(A));
              }, T._update = function(A) {
                var p = this.subplot, u = this.layerList, t = p.belowLookup["trace-" + this.uid];
                p.map.getSource(this.sourceId).setData(A.geojson), t !== this.below && (this._removeLayers(), this._addLayers(A, t), this.below = t);
                for (var r = 0; r < u.length; r++) {
                  var i = u[r], a = i[0], l = i[1], o = A[a];
                  p.setOptions(l, "setLayoutProperty", o.layout), o.layout.visibility === "visible" && p.setOptions(l, "setPaintProperty", o.paint);
                }
              }, T._addLayers = function(A, p) {
                for (var u = this.subplot, t = this.layerList, r = this.sourceId, i = 0; i < t.length; i++) {
                  var a = t[i], l = a[0], o = A[l];
                  u.addLayer({
                    type: l,
                    id: a[1],
                    source: r,
                    layout: o.layout,
                    paint: o.paint
                  }, p);
                }
              }, T._removeLayers = function() {
                for (var A = this.subplot.map, p = this.layerList, u = p.length - 1; u >= 0; u--)
                  A.removeLayer(p[u][1]);
              }, T.dispose = function() {
                var A = this.subplot.map;
                this._removeLayers(), A.removeSource(this.sourceId);
              }, Y.exports = function(p, u) {
                var t = u[0].trace, r = new s(p, t.uid), i = r.sourceId, a = b(u), l = r.below = p.belowLookup["trace-" + t.uid];
                return p.map.addSource(i, {
                  type: "geojson",
                  data: a.geojson
                }), r._addLayers(a, l), u[0].trace._glTrace = r, r;
              };
            }
          ),
          /***/
          49865: (
            /***/
            function(Y, K, e) {
              var b = e(87163), P = e(80712).axisHoverFormat, n = e(3208).rb, s = e(42450), T = e(9829), A = e(93049).extendFlat, p = {
                x: {
                  valType: "data_array",
                  editType: "calc+clearAxisTypes"
                },
                y: {
                  valType: "data_array",
                  editType: "calc+clearAxisTypes"
                },
                z: {
                  valType: "data_array",
                  editType: "calc+clearAxisTypes"
                },
                u: {
                  valType: "data_array",
                  editType: "calc"
                },
                v: {
                  valType: "data_array",
                  editType: "calc"
                },
                w: {
                  valType: "data_array",
                  editType: "calc"
                },
                // TODO add way to specify cone positions independently of the vector field
                // provided, similar to MATLAB's coneplot Cx/Cy/Cz meshgrids,
                // see https://www.mathworks.com/help/matlab/ref/coneplot.html
                //
                // Alternatively, if our goal is only to 'fill in gaps' in the vector data,
                // we could try to extend the heatmap 'connectgaps' algorithm to 3D.
                // From AJ: this particular algorithm which amounts to a Poisson equation,
                // both for interpolation and extrapolation - is the right one to use for
                // cones too.  It makes a field with zero divergence, which is a good
                // baseline assumption for vector fields.
                //
                // cones: {
                //     // potential attributes to add:
                //     //
                //     // - meshmode: 'cartesian-product', 'pts', 'grid'
                //     //
                //     // under `meshmode: 'grid'`
                //     // - (x|y|z)grid.start
                //     // - (x|y|z)grid.end
                //     // - (x|y|z)grid.size
                //
                //     x: {
                //         valType: 'data_array',
                //         editType: 'calc',
                //
                //     },
                //     y: {
                //         valType: 'data_array',
                //         editType: 'calc',
                //
                //     },
                //     z: {
                //         valType: 'data_array',
                //         editType: 'calc',
                //
                //     },
                //
                //     editType: 'calc',
                //
                // },
                sizemode: {
                  valType: "enumerated",
                  values: ["scaled", "absolute", "raw"],
                  editType: "calc",
                  dflt: "scaled"
                },
                sizeref: {
                  valType: "number",
                  editType: "calc",
                  min: 0
                },
                anchor: {
                  valType: "enumerated",
                  editType: "calc",
                  values: ["tip", "tail", "cm", "center"],
                  dflt: "cm"
                },
                text: {
                  valType: "string",
                  dflt: "",
                  arrayOk: !0,
                  editType: "calc"
                },
                hovertext: {
                  valType: "string",
                  dflt: "",
                  arrayOk: !0,
                  editType: "calc"
                },
                hovertemplate: n({
                  editType: "calc"
                }, {
                  keys: ["norm"]
                }),
                uhoverformat: P("u", 1),
                vhoverformat: P("v", 1),
                whoverformat: P("w", 1),
                xhoverformat: P("x"),
                yhoverformat: P("y"),
                zhoverformat: P("z"),
                showlegend: A({}, T.showlegend, {
                  dflt: !1
                })
              };
              A(p, b("", {
                colorAttr: "u/v/w norm",
                showScaleDflt: !0,
                editTypeOverride: "calc"
              }));
              var u = ["opacity", "lightposition", "lighting"];
              u.forEach(function(t) {
                p[t] = s[t];
              }), p.hoverinfo = A({}, T.hoverinfo, {
                editType: "calc",
                flags: ["x", "y", "z", "u", "v", "w", "norm", "text", "name"],
                dflt: "x+y+z+norm+text+name"
              }), p.transforms = void 0, Y.exports = p;
            }
          ),
          /***/
          93805: (
            /***/
            function(Y, K, e) {
              var b = e(28379);
              Y.exports = function(n, s) {
                for (var T = s.u, A = s.v, p = s.w, u = Math.min(s.x.length, s.y.length, s.z.length, T.length, A.length, p.length), t = -1 / 0, r = 1 / 0, i = 0; i < u; i++) {
                  var a = T[i], l = A[i], o = p[i], y = Math.sqrt(a * a + l * l + o * o);
                  t = Math.max(t, y), r = Math.min(r, y);
                }
                s._len = u, s._normMax = t, b(n, s, {
                  vals: [r, t],
                  containerStr: "",
                  cLetter: "c"
                });
              };
            }
          ),
          /***/
          49393: (
            /***/
            function(Y, K, e) {
              var b = e(99098).gl_cone3d, P = e(99098).gl_cone3d.createConeMesh, n = e(34809).simpleMap, s = e(46998).parseColorScale, T = e(88856).extractOpts, A = e(34809).isArrayOrTypedArray, p = e(88239);
              function u(y, g) {
                this.scene = y, this.uid = g, this.mesh = null, this.data = null;
              }
              var t = u.prototype;
              t.handlePick = function(y) {
                if (y.object === this.mesh) {
                  var g = y.index = y.data.index, x = this.data.x[g], c = this.data.y[g], v = this.data.z[g], f = this.data.u[g], _ = this.data.v[g], S = this.data.w[g];
                  y.traceCoordinate = [x, c, v, f, _, S, Math.sqrt(f * f + _ * _ + S * S)];
                  var M = this.data.hovertext || this.data.text;
                  return A(M) && M[g] !== void 0 ? y.textLabel = M[g] : M && (y.textLabel = M), !0;
                }
              };
              var r = {
                xaxis: 0,
                yaxis: 1,
                zaxis: 2
              }, i = {
                tip: 1,
                tail: 0,
                cm: 0.25,
                center: 0.5
              }, a = {
                tip: 1,
                tail: 1,
                cm: 0.75,
                center: 0.5
              };
              function l(y, g) {
                var x = y.fullSceneLayout, c = y.dataScale, v = {};
                function f(m, L) {
                  var d = x[L], h = c[r[L]];
                  return n(m, function(E) {
                    return d.d2l(E) * h;
                  });
                }
                v.vectors = p(f(g.u, "xaxis"), f(g.v, "yaxis"), f(g.w, "zaxis"), g._len), v.positions = p(f(g.x, "xaxis"), f(g.y, "yaxis"), f(g.z, "zaxis"), g._len);
                var _ = T(g);
                v.colormap = s(g), v.vertexIntensityBounds = [_.min / g._normMax, _.max / g._normMax], v.coneOffset = i[g.anchor];
                var S = g.sizemode;
                S === "scaled" ? v.coneSize = g.sizeref || 0.5 : S === "absolute" ? v.coneSize = g.sizeref && g._normMax ? g.sizeref / g._normMax : 0.5 : S === "raw" && (v.coneSize = g.sizeref), v.coneSizemode = S;
                var M = b(v), C = g.lightposition;
                return M.lightPosition = [C.x, C.y, C.z], M.ambient = g.lighting.ambient, M.diffuse = g.lighting.diffuse, M.specular = g.lighting.specular, M.roughness = g.lighting.roughness, M.fresnel = g.lighting.fresnel, M.opacity = g.opacity, g._pad = a[g.anchor] * M.vectorScale * M.coneScale * g._normMax, M;
              }
              t.update = function(y) {
                this.data = y;
                var g = l(this.scene, y);
                this.mesh.update(g);
              }, t.dispose = function() {
                this.scene.glplot.remove(this.mesh), this.mesh.dispose();
              };
              function o(y, g) {
                var x = y.glplot.gl, c = l(y, g), v = P(x, c), f = new u(y, g.uid);
                return f.mesh = v, f.data = g, v._trace = f, y.glplot.add(v), f;
              }
              Y.exports = o;
            }
          ),
          /***/
          17326: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(39356), n = e(49865);
              Y.exports = function(T, A, p, u) {
                function t(x, c) {
                  return b.coerce(T, A, n, x, c);
                }
                var r = t("u"), i = t("v"), a = t("w"), l = t("x"), o = t("y"), y = t("z");
                if (!r || !r.length || !i || !i.length || !a || !a.length || !l || !l.length || !o || !o.length || !y || !y.length) {
                  A.visible = !1;
                  return;
                }
                var g = t("sizemode");
                t("sizeref", g === "raw" ? 1 : 0.5), t("anchor"), t("lighting.ambient"), t("lighting.diffuse"), t("lighting.specular"), t("lighting.roughness"), t("lighting.fresnel"), t("lightposition.x"), t("lightposition.y"), t("lightposition.z"), P(T, A, u, t, {
                  prefix: "",
                  cLetter: "c"
                }), t("text"), t("hovertext"), t("hovertemplate"), t("uhoverformat"), t("vhoverformat"), t("whoverformat"), t("xhoverformat"), t("yhoverformat"), t("zhoverformat"), A._length = null;
              };
            }
          ),
          /***/
          47050: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                moduleType: "trace",
                name: "cone",
                basePlotModule: e(2487),
                categories: ["gl3d", "showLegend"],
                attributes: e(49865),
                supplyDefaults: e(17326),
                colorbar: {
                  min: "cmin",
                  max: "cmax"
                },
                calc: e(93805),
                plot: e(49393),
                eventData: function(b, P) {
                  return b.norm = P.traceCoordinate[6], b;
                },
                meta: {}
              };
            }
          ),
          /***/
          52240: (
            /***/
            function(Y, K, e) {
              var b = e(81658), P = e(36640), n = e(80712), s = n.axisHoverFormat, T = n.descriptionOnlyNumbers, A = e(87163), p = e(94850).T, u = e(80337), t = e(93049).extendFlat, r = e(20726), i = r.COMPARISON_OPS2, a = r.INTERVAL_OPS, l = P.line;
              Y.exports = t({
                z: b.z,
                x: b.x,
                x0: b.x0,
                dx: b.dx,
                y: b.y,
                y0: b.y0,
                dy: b.dy,
                xperiod: b.xperiod,
                yperiod: b.yperiod,
                xperiod0: P.xperiod0,
                yperiod0: P.yperiod0,
                xperiodalignment: b.xperiodalignment,
                yperiodalignment: b.yperiodalignment,
                text: b.text,
                hovertext: b.hovertext,
                transpose: b.transpose,
                xtype: b.xtype,
                ytype: b.ytype,
                xhoverformat: s("x"),
                yhoverformat: s("y"),
                zhoverformat: s("z", 1),
                hovertemplate: b.hovertemplate,
                texttemplate: t({}, b.texttemplate, {}),
                textfont: t({}, b.textfont, {}),
                hoverongaps: b.hoverongaps,
                connectgaps: t({}, b.connectgaps, {}),
                fillcolor: {
                  valType: "color",
                  editType: "calc"
                },
                autocontour: {
                  valType: "boolean",
                  dflt: !0,
                  editType: "calc",
                  impliedEdits: {
                    "contours.start": void 0,
                    "contours.end": void 0,
                    "contours.size": void 0
                  }
                },
                ncontours: {
                  valType: "integer",
                  dflt: 15,
                  min: 1,
                  editType: "calc"
                },
                contours: {
                  type: {
                    valType: "enumerated",
                    values: ["levels", "constraint"],
                    dflt: "levels",
                    editType: "calc"
                  },
                  start: {
                    valType: "number",
                    dflt: null,
                    editType: "plot",
                    impliedEdits: {
                      "^autocontour": !1
                    }
                  },
                  end: {
                    valType: "number",
                    dflt: null,
                    editType: "plot",
                    impliedEdits: {
                      "^autocontour": !1
                    }
                  },
                  size: {
                    valType: "number",
                    dflt: null,
                    min: 0,
                    editType: "plot",
                    impliedEdits: {
                      "^autocontour": !1
                    }
                  },
                  coloring: {
                    valType: "enumerated",
                    values: ["fill", "heatmap", "lines", "none"],
                    dflt: "fill",
                    editType: "calc"
                  },
                  showlines: {
                    valType: "boolean",
                    dflt: !0,
                    editType: "plot"
                  },
                  showlabels: {
                    valType: "boolean",
                    dflt: !1,
                    editType: "plot"
                  },
                  labelfont: u({
                    editType: "plot",
                    colorEditType: "style"
                  }),
                  labelformat: {
                    valType: "string",
                    dflt: "",
                    editType: "plot",
                    description: T("contour label")
                  },
                  operation: {
                    valType: "enumerated",
                    values: [].concat(i).concat(a),
                    dflt: "=",
                    editType: "calc"
                  },
                  value: {
                    valType: "any",
                    dflt: 0,
                    editType: "calc"
                  },
                  editType: "calc",
                  impliedEdits: {
                    autocontour: !1
                  }
                },
                line: {
                  color: t({}, l.color, {
                    editType: "style+colorbars"
                  }),
                  width: {
                    valType: "number",
                    min: 0,
                    editType: "style+colorbars"
                  },
                  dash: p,
                  smoothing: t({}, l.smoothing, {}),
                  editType: "plot"
                },
                zorder: P.zorder
              }, A("", {
                cLetter: "z",
                autoColorDflt: !1,
                editTypeOverride: "calc"
              }));
            }
          ),
          /***/
          40352: (
            /***/
            function(Y, K, e) {
              var b = e(88856), P = e(51670), n = e(62475), s = e(48715);
              Y.exports = function(A, p) {
                var u = P(A, p), t = u[0].z;
                n(p, t);
                var r = p.contours, i = b.extractOpts(p), a;
                if (r.coloring === "heatmap" && i.auto && p.autocontour === !1) {
                  var l = r.start, o = s(r), y = r.size || 1, g = Math.floor((o - l) / y) + 1;
                  isFinite(y) || (y = 1, g = 1);
                  var x = l - y / 2, c = x + g * y;
                  a = [x, c];
                } else
                  a = t;
                return b.calc(A, p, {
                  vals: a,
                  cLetter: "z"
                }), u;
              };
            }
          ),
          /***/
          49886: (
            /***/
            function(Y) {
              Y.exports = function(K, e) {
                var b = K[0], P = b.z, n;
                switch (e.type) {
                  case "levels":
                    var s = Math.min(P[0][0], P[0][1]);
                    for (n = 0; n < K.length; n++) {
                      var T = K[n];
                      T.prefixBoundary = !T.edgepaths.length && (s > T.level || T.starts.length && s === T.level);
                    }
                    break;
                  case "constraint":
                    if (b.prefixBoundary = !1, b.edgepaths.length) return;
                    var A = b.x.length, p = b.y.length, u = -1 / 0, t = 1 / 0;
                    for (n = 0; n < p; n++)
                      t = Math.min(t, P[n][0]), t = Math.min(t, P[n][A - 1]), u = Math.max(u, P[n][0]), u = Math.max(u, P[n][A - 1]);
                    for (n = 1; n < A - 1; n++)
                      t = Math.min(t, P[0][n]), t = Math.min(t, P[p - 1][n]), u = Math.max(u, P[0][n]), u = Math.max(u, P[p - 1][n]);
                    var r = e.value, i, a;
                    switch (e._operation) {
                      case ">":
                        r > u && (b.prefixBoundary = !0);
                        break;
                      case "<":
                        (r < t || b.starts.length && r === t) && (b.prefixBoundary = !0);
                        break;
                      case "[]":
                        i = Math.min(r[0], r[1]), a = Math.max(r[0], r[1]), (a < t || i > u || b.starts.length && a === t) && (b.prefixBoundary = !0);
                        break;
                      case "][":
                        i = Math.min(r[0], r[1]), a = Math.max(r[0], r[1]), i < t && a > u && (b.prefixBoundary = !0);
                        break;
                    }
                    break;
                }
              };
            }
          ),
          /***/
          92697: (
            /***/
            function(Y, K, e) {
              var b = e(88856), P = e(16438), n = e(48715);
              function s(T, A, p) {
                var u = A.contours, t = A.line, r = u.size || 1, i = u.coloring, a = P(A, {
                  isColorbar: !0
                });
                if (i === "heatmap") {
                  var l = b.extractOpts(A);
                  p._fillgradient = l.reversescale ? b.flipScale(l.colorscale) : l.colorscale, p._zrange = [l.min, l.max];
                } else i === "fill" && (p._fillcolor = a);
                p._line = {
                  color: i === "lines" ? a : t.color,
                  width: u.showlines !== !1 ? t.width : 0,
                  dash: t.dash
                }, p._levels = {
                  start: u.start,
                  end: n(u),
                  size: r
                };
              }
              Y.exports = {
                min: "zmin",
                max: "zmax",
                calc: s
              };
            }
          ),
          /***/
          53156: (
            /***/
            function(Y) {
              Y.exports = {
                // some constants to help with marching squares algorithm
                // where does the path start for each index?
                BOTTOMSTART: [1, 9, 13, 104, 713],
                TOPSTART: [4, 6, 7, 104, 713],
                LEFTSTART: [8, 12, 14, 208, 1114],
                RIGHTSTART: [2, 3, 11, 208, 1114],
                // which way [dx,dy] do we leave a given index?
                // saddles are already disambiguated
                NEWDELTA: [null, [-1, 0], [0, -1], [-1, 0], [1, 0], null, [0, -1], [-1, 0], [0, 1], [0, 1], null, [0, 1], [1, 0], [1, 0], [0, -1]],
                // for each saddle, the first index here is used
                // for dx||dy<0, the second for dx||dy>0
                CHOOSESADDLE: {
                  104: [4, 1],
                  208: [2, 8],
                  713: [7, 13],
                  1114: [11, 14]
                },
                // after one index has been used for a saddle, which do we
                // substitute to be used up later?
                SADDLEREMAINDER: {
                  1: 4,
                  2: 8,
                  4: 1,
                  7: 13,
                  8: 2,
                  11: 14,
                  13: 7,
                  14: 11
                },
                // length of a contour, as a multiple of the plot area diagonal, per label
                LABELDISTANCE: 2,
                // number of contour levels after which we start increasing the number of
                // labels we draw. Many contours means they will generally be close
                // together, so it will be harder to follow a long way to find a label
                LABELINCREASE: 10,
                // minimum length of a contour line, as a multiple of the label length,
                // at which we draw *any* labels
                LABELMIN: 3,
                // max number of labels to draw on a single contour path, no matter how long
                LABELMAX: 10,
                // constants for the label position cost function
                LABELOPTIMIZER: {
                  // weight given to edge proximity
                  EDGECOST: 1,
                  // weight given to the angle off horizontal
                  ANGLECOST: 1,
                  // weight given to distance from already-placed labels
                  NEIGHBORCOST: 5,
                  // cost multiplier for labels on the same level
                  SAMELEVELFACTOR: 10,
                  // minimum distance (as a multiple of the label length)
                  // for labels on the same level
                  SAMELEVELDISTANCE: 5,
                  // maximum cost before we won't even place the label
                  MAXCOST: 100,
                  // number of evenly spaced points to look at in the first
                  // iteration of the search
                  INITIALSEARCHPOINTS: 10,
                  // number of binary search iterations after the initial wide search
                  ITERATIONS: 5
                }
              };
            }
          ),
          /***/
          29503: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(20576), n = e(78766), s = n.addOpacity, T = n.opacity, A = e(20726), p = e(34809).isArrayOrTypedArray, u = A.CONSTRAINT_REDUCTION, t = A.COMPARISON_OPS2;
              Y.exports = function(a, l, o, y, g, x) {
                var c = l.contours, v, f, _, S = o("contours.operation");
                if (c._operation = u[S], r(o, c), S === "=" ? v = c.showlines = !0 : (v = o("contours.showlines"), _ = o("fillcolor", s((a.line || {}).color || g, 0.5))), v) {
                  var M = _ && T(_) ? s(l.fillcolor, 1) : g;
                  f = o("line.color", M), o("line.width", 2), o("line.dash");
                }
                o("line.smoothing"), P(o, y, f, x);
              };
              function r(i, a) {
                var l;
                t.indexOf(a.operation) === -1 ? (i("contours.value", [0, 1]), p(a.value) ? a.value.length > 2 ? a.value = a.value.slice(2) : a.length === 0 ? a.value = [0, 1] : a.length < 2 ? (l = parseFloat(a.value[0]), a.value = [l, l + 1]) : a.value = [parseFloat(a.value[0]), parseFloat(a.value[1])] : b(a.value) && (l = parseFloat(a.value), a.value = [l, l + 1])) : (i("contours.value", 0), b(a.value) || (p(a.value) ? a.value = parseFloat(a.value[0]) : a.value = 0));
              }
            }
          ),
          /***/
          22783: (
            /***/
            function(Y, K, e) {
              var b = e(20726), P = e(10721);
              Y.exports = {
                "[]": s("[]"),
                "][": s("]["),
                ">": T(">"),
                "<": T("<"),
                "=": T("=")
              };
              function n(A, p) {
                var u = Array.isArray(p), t;
                function r(i) {
                  return P(i) ? +i : null;
                }
                return b.COMPARISON_OPS2.indexOf(A) !== -1 ? t = r(u ? p[0] : p) : b.INTERVAL_OPS.indexOf(A) !== -1 ? t = u ? [r(p[0]), r(p[1])] : [r(p), r(p)] : b.SET_OPS.indexOf(A) !== -1 && (t = u ? p.map(r) : [r(p)]), t;
              }
              function s(A) {
                return function(p) {
                  p = n(A, p);
                  var u = Math.min(p[0], p[1]), t = Math.max(p[0], p[1]);
                  return {
                    start: u,
                    end: t,
                    size: t - u
                  };
                };
              }
              function T(A) {
                return function(p) {
                  return p = n(A, p), {
                    start: p,
                    end: 1 / 0,
                    size: 1 / 0
                  };
                };
              }
            }
          ),
          /***/
          47495: (
            /***/
            function(Y) {
              Y.exports = function(e, b, P, n) {
                var s = n("contours.start"), T = n("contours.end"), A = s === !1 || T === !1, p = P("contours.size"), u;
                A ? u = b.autocontour = !0 : u = P("autocontour", !1), (u || !p) && P("ncontours");
              };
            }
          ),
          /***/
          1999: (
            /***/
            function(Y, K, e) {
              var b = e(34809);
              Y.exports = function(n, s) {
                var T, A, p, u = function(i) {
                  return i.reverse();
                }, t = function(i) {
                  return i;
                };
                switch (s) {
                  case "=":
                  case "<":
                    return n;
                  case ">":
                    for (n.length !== 1 && b.warn("Contour data invalid for the specified inequality operation."), A = n[0], T = 0; T < A.edgepaths.length; T++)
                      A.edgepaths[T] = u(A.edgepaths[T]);
                    for (T = 0; T < A.paths.length; T++)
                      A.paths[T] = u(A.paths[T]);
                    for (T = 0; T < A.starts.length; T++)
                      A.starts[T] = u(A.starts[T]);
                    return n;
                  case "][":
                    var r = u;
                    u = t, t = r;
                  case "[]":
                    for (n.length !== 2 && b.warn("Contour data invalid for the specified inequality range operation."), A = P(n[0]), p = P(n[1]), T = 0; T < A.edgepaths.length; T++)
                      A.edgepaths[T] = u(A.edgepaths[T]);
                    for (T = 0; T < A.paths.length; T++)
                      A.paths[T] = u(A.paths[T]);
                    for (T = 0; T < A.starts.length; T++)
                      A.starts[T] = u(A.starts[T]);
                    for (; p.edgepaths.length; )
                      A.edgepaths.push(t(p.edgepaths.shift()));
                    for (; p.paths.length; )
                      A.paths.push(t(p.paths.shift()));
                    for (; p.starts.length; )
                      A.starts.push(t(p.starts.shift()));
                    return [A];
                }
              };
              function P(n) {
                return b.extendFlat({}, n, {
                  edgepaths: b.extendDeep([], n.edgepaths),
                  paths: b.extendDeep([], n.paths),
                  starts: b.extendDeep([], n.starts)
                });
              }
            }
          ),
          /***/
          57543: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(86073), n = e(99669), s = e(29503), T = e(47495), A = e(39889), p = e(63814), u = e(52240);
              Y.exports = function(r, i, a, l) {
                function o(c, v) {
                  return b.coerce(r, i, u, c, v);
                }
                function y(c) {
                  return b.coerce2(r, i, u, c);
                }
                var g = P(r, i, o, l);
                if (!g) {
                  i.visible = !1;
                  return;
                }
                n(r, i, l, o), o("xhoverformat"), o("yhoverformat"), o("text"), o("hovertext"), o("hoverongaps"), o("hovertemplate");
                var x = o("contours.type") === "constraint";
                o("connectgaps", b.isArray1D(i.z)), x ? s(r, i, o, l, a) : (T(r, i, o, y), A(r, i, o, l)), i.contours && i.contours.coloring === "heatmap" && p(o, l), o("zorder");
              };
            }
          ),
          /***/
          86828: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(22783), n = e(48715);
              Y.exports = function(T, A, p) {
                for (var u = T.type === "constraint" ? P[T._operation](T.value) : T, t = u.size, r = [], i = n(u), a = p.trace._carpetTrace, l = a ? {
                  // store axes so we can convert to px
                  xaxis: a.aaxis,
                  yaxis: a.baxis,
                  // full data arrays to use for interpolation
                  x: p.a,
                  y: p.b
                } : {
                  xaxis: A.xaxis,
                  yaxis: A.yaxis,
                  x: p.x,
                  y: p.y
                }, o = u.start; o < i; o += t)
                  if (r.push(b.extendFlat({
                    level: o,
                    // all the cells with nontrivial marching index
                    crossings: {},
                    // starting points on the edges of the lattice for each contour
                    starts: [],
                    // all unclosed paths (may have less items than starts,
                    // if a path is closed by rounding)
                    edgepaths: [],
                    // all closed paths
                    paths: [],
                    z: p.z,
                    smoothing: p.trace.line.smoothing
                  }, l)), r.length > 1e3) {
                    b.warn("Too many contours, clipping at 1000", T);
                    break;
                  }
                return r;
              };
            }
          ),
          /***/
          48715: (
            /***/
            function(Y) {
              Y.exports = function(e) {
                return e.end + e.size / 1e6;
              };
            }
          ),
          /***/
          27657: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(53156);
              Y.exports = function(t, r, i) {
                var a, l, o, y, g;
                for (r = r || 0.01, i = i || 0.01, o = 0; o < t.length; o++) {
                  for (y = t[o], g = 0; g < y.starts.length; g++)
                    l = y.starts[g], T(y, l, "edge", r, i);
                  for (a = 0; Object.keys(y.crossings).length && a < 1e4; )
                    a++, l = Object.keys(y.crossings)[0].split(",").map(Number), T(y, l, void 0, r, i);
                  a === 1e4 && b.log("Infinite loop in contour?");
                }
              };
              function n(u, t, r, i) {
                return Math.abs(u[0] - t[0]) < r && Math.abs(u[1] - t[1]) < i;
              }
              function s(u, t) {
                var r = u[2] - t[2], i = u[3] - t[3];
                return Math.sqrt(r * r + i * i);
              }
              function T(u, t, r, i, a) {
                var l = t.join(","), o = u.crossings[l], y = A(o, r, t), g = [p(u, t, [-y[0], -y[1]])], x = u.z.length, c = u.z[0].length, v = t.slice(), f = y.slice(), _;
                for (_ = 0; _ < 1e4; _++) {
                  if (o > 20 ? (o = P.CHOOSESADDLE[o][(y[0] || y[1]) < 0 ? 0 : 1], u.crossings[l] = P.SADDLEREMAINDER[o]) : delete u.crossings[l], y = P.NEWDELTA[o], !y) {
                    b.log("Found bad marching index:", o, t, u.level);
                    break;
                  }
                  g.push(p(u, t, y)), t[0] += y[0], t[1] += y[1], l = t.join(","), n(g[g.length - 1], g[g.length - 2], i, a) && g.pop();
                  var S = y[0] && (t[0] < 0 || t[0] > c - 2) || y[1] && (t[1] < 0 || t[1] > x - 2), M = t[0] === v[0] && t[1] === v[1] && y[0] === f[0] && y[1] === f[1];
                  if (M || r && S) break;
                  o = u.crossings[l];
                }
                _ === 1e4 && b.log("Infinite loop in contour?");
                var C = n(g[0], g[g.length - 1], i, a), m = 0, L = 0.2 * u.smoothing, d = [], h = 0, E, w, z, O, B, V, U, H, F, G, q;
                for (_ = 1; _ < g.length; _++)
                  U = s(g[_], g[_ - 1]), m += U, d.push(U);
                var rt = m / d.length * L;
                function st(et) {
                  return g[et % g.length];
                }
                for (_ = g.length - 2; _ >= h; _--)
                  if (E = d[_], E < rt) {
                    for (z = 0, w = _ - 1; w >= h && E + d[w] < rt; w--)
                      E += d[w];
                    if (C && _ === g.length - 2)
                      for (z = 0; z < w && E + d[z] < rt; z++)
                        E += d[z];
                    B = _ - w + z + 1, V = Math.floor((_ + w + z + 2) / 2), !C && _ === g.length - 2 ? O = g[g.length - 1] : !C && w === -1 ? O = g[0] : B % 2 ? O = st(V) : O = [(st(V)[0] + st(V + 1)[0]) / 2, (st(V)[1] + st(V + 1)[1]) / 2], g.splice(w + 1, _ - w + 1, O), _ = w + 1, z && (h = z), C && (_ === g.length - 2 ? g[z] = g[g.length - 1] : _ === 0 && (g[g.length - 1] = g[0]));
                  }
                for (g.splice(0, h), _ = 0; _ < g.length; _++) g[_].length = 2;
                if (!(g.length < 2))
                  if (C)
                    g.pop(), u.paths.push(g);
                  else {
                    r || b.log("Unclosed interior contour?", u.level, v.join(","), g.join("L"));
                    var vt = !1;
                    for (H = 0; H < u.edgepaths.length; H++)
                      if (G = u.edgepaths[H], !vt && n(G[0], g[g.length - 1], i, a)) {
                        g.pop(), vt = !0;
                        var ht = !1;
                        for (F = 0; F < u.edgepaths.length; F++)
                          if (q = u.edgepaths[F], n(q[q.length - 1], g[0], i, a)) {
                            ht = !0, g.shift(), u.edgepaths.splice(H, 1), F === H ? u.paths.push(g.concat(q)) : (F > H && F--, u.edgepaths[F] = q.concat(g, G));
                            break;
                          }
                        ht || (u.edgepaths[H] = g.concat(G));
                      }
                    for (H = 0; H < u.edgepaths.length && !vt; H++)
                      G = u.edgepaths[H], n(G[G.length - 1], g[0], i, a) && (g.shift(), u.edgepaths[H] = G.concat(g), vt = !0);
                    vt || u.edgepaths.push(g);
                  }
              }
              function A(u, t, r) {
                var i = 0, a = 0;
                return u > 20 && t ? u === 208 || u === 1114 ? i = r[0] === 0 ? 1 : -1 : a = r[1] === 0 ? 1 : -1 : P.BOTTOMSTART.indexOf(u) !== -1 ? a = 1 : P.LEFTSTART.indexOf(u) !== -1 ? i = 1 : P.TOPSTART.indexOf(u) !== -1 ? a = -1 : i = -1, [i, a];
              }
              function p(u, t, r) {
                var i = t[0] + Math.max(r[0], 0), a = t[1] + Math.max(r[1], 0), l = u.z[a][i], o = u.xaxis, y = u.yaxis;
                if (r[1]) {
                  var g = (u.level - l) / (u.z[a][i + 1] - l), x = (g !== 1 ? (1 - g) * o.c2l(u.x[i]) : 0) + (g !== 0 ? g * o.c2l(u.x[i + 1]) : 0);
                  return [o.c2p(o.l2c(x), !0), y.c2p(u.y[a], !0), i + g, a];
                } else {
                  var c = (u.level - l) / (u.z[a + 1][i] - l), v = (c !== 1 ? (1 - c) * y.c2l(u.y[a]) : 0) + (c !== 0 ? c * y.c2l(u.y[a + 1]) : 0);
                  return [o.c2p(u.x[i], !0), y.c2p(y.l2c(v), !0), i, a + c];
                }
              }
            }
          ),
          /***/
          29815: (
            /***/
            function(Y, K, e) {
              var b = e(78766), P = e(93125);
              Y.exports = function(s, T, A, p, u) {
                u || (u = {}), u.isContour = !0;
                var t = P(s, T, A, p, u);
                return t && t.forEach(function(r) {
                  var i = r.trace;
                  i.contours.type === "constraint" && (i.fillcolor && b.opacity(i.fillcolor) ? r.color = b.addOpacity(i.fillcolor, 1) : i.contours.showlines && b.opacity(i.line.color) && (r.color = b.addOpacity(i.line.color, 1)));
                }), t;
              };
            }
          ),
          /***/
          91405: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(52240),
                supplyDefaults: e(57543),
                calc: e(40352),
                plot: e(8850).plot,
                style: e(1328),
                colorbar: e(92697),
                hoverPoints: e(29815),
                moduleType: "trace",
                name: "contour",
                basePlotModule: e(37703),
                categories: ["cartesian", "svg", "2dMap", "contour", "showLegend"],
                meta: {}
              };
            }
          ),
          /***/
          20576: (
            /***/
            function(Y, K, e) {
              var b = e(34809);
              Y.exports = function(n, s, T, A) {
                A || (A = {});
                var p = n("contours.showlabels");
                if (p) {
                  var u = s.font;
                  b.coerceFont(n, "contours.labelfont", u, {
                    overrideDflt: {
                      color: T
                    }
                  }), n("contours.labelformat");
                }
                A.hasHover !== !1 && n("zhoverformat");
              };
            }
          ),
          /***/
          16438: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(88856), n = e(48715);
              Y.exports = function(T) {
                var A = T.contours, p = A.start, u = n(A), t = A.size || 1, r = Math.floor((u - p) / t) + 1, i = A.coloring === "lines" ? 0 : 1, a = P.extractOpts(T);
                isFinite(t) || (t = 1, r = 1);
                var l = a.reversescale ? P.flipScale(a.colorscale) : a.colorscale, o = l.length, y = new Array(o), g = new Array(o), x, c, v = a.min, f = a.max;
                if (A.coloring === "heatmap") {
                  for (c = 0; c < o; c++)
                    x = l[c], y[c] = x[0] * (f - v) + v, g[c] = x[1];
                  var _ = b.extent([v, f, A.start, A.start + t * (r - 1)]), S = _[v < f ? 0 : 1], M = _[v < f ? 1 : 0];
                  S !== v && (y.splice(0, 0, S), g.splice(0, 0, g[0])), M !== f && (y.push(M), g.push(g[g.length - 1]));
                } else {
                  var C = T._input && typeof T._input.zmin == "number" && typeof T._input.zmax == "number";
                  for (C && (p <= v || u >= f) && (p <= v && (p = v), u >= f && (u = f), r = Math.floor((u - p) / t) + 1, i = 0), c = 0; c < o; c++)
                    x = l[c], y[c] = (x[0] * (r + i - 1) - i / 2) * t + p, g[c] = x[1];
                  (C || T.autocontour) && (y[0] > v && (y.unshift(v), g.unshift(g[0])), y[y.length - 1] < f && (y.push(f), g.push(g[g.length - 1])));
                }
                return P.makeColorScaleFunc({
                  domain: y,
                  range: g
                }, {
                  noNumericCheck: !0
                });
              };
            }
          ),
          /***/
          83545: (
            /***/
            function(Y, K, e) {
              var b = e(53156);
              Y.exports = function(s) {
                var T = s[0].z, A = T.length, p = T[0].length, u = A === 2 || p === 2, t, r, i, a, l, o, y, g, x;
                for (r = 0; r < A - 1; r++)
                  for (a = [], r === 0 && (a = a.concat(b.BOTTOMSTART)), r === A - 2 && (a = a.concat(b.TOPSTART)), t = 0; t < p - 1; t++)
                    for (i = a.slice(), t === 0 && (i = i.concat(b.LEFTSTART)), t === p - 2 && (i = i.concat(b.RIGHTSTART)), l = t + "," + r, o = [[T[r][t], T[r][t + 1]], [T[r + 1][t], T[r + 1][t + 1]]], x = 0; x < s.length; x++)
                      g = s[x], y = P(g.level, o), y && (g.crossings[l] = y, i.indexOf(y) !== -1 && (g.starts.push([t, r]), u && i.indexOf(y, i.indexOf(y) + 1) !== -1 && g.starts.push([t, r])));
              };
              function P(n, s) {
                var T = (s[0][0] > n ? 0 : 1) + (s[0][1] > n ? 0 : 2) + (s[1][1] > n ? 0 : 4) + (s[1][0] > n ? 0 : 8);
                if (T === 5 || T === 10) {
                  var A = (s[0][0] + s[0][1] + s[1][0] + s[1][1]) / 4;
                  return n > A ? T === 5 ? 713 : 1114 : T === 5 ? 104 : 208;
                }
                return T === 15 ? 0 : T;
              }
            }
          ),
          /***/
          8850: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(34809), n = e(62203), s = e(88856), T = e(30635), A = e(29714), p = e(19091), u = e(19236), t = e(83545), r = e(27657), i = e(86828), a = e(1999), l = e(49886), o = e(53156), y = o.LABELOPTIMIZER;
              K.plot = function(C, m, L, d) {
                var h = m.xaxis, E = m.yaxis;
                P.makeTraceGroups(d, L, "contour").each(function(w) {
                  var z = b.select(this), O = w[0], B = O.trace, V = O.x, U = O.y, H = B.contours, F = i(H, m, O), G = P.ensureSingle(z, "g", "heatmapcoloring"), q = [];
                  H.coloring === "heatmap" && (q = [w]), u(C, m, q, G), t(F), r(F);
                  var rt = h.c2p(V[0], !0), st = h.c2p(V[V.length - 1], !0), vt = E.c2p(U[0], !0), ht = E.c2p(U[U.length - 1], !0), et = [[rt, ht], [st, ht], [st, vt], [rt, vt]], Q = F;
                  H.type === "constraint" && (Q = a(F, H._operation)), g(z, et, H), x(z, Q, et, H), v(z, F, C, O, H), _(z, m, C, O, et);
                });
              };
              function g(M, C, m) {
                var L = P.ensureSingle(M, "g", "contourbg"), d = L.selectAll("path").data(m.coloring === "fill" ? [0] : []);
                d.enter().append("path"), d.exit().remove(), d.attr("d", "M" + C.join("L") + "Z").style("stroke", "none");
              }
              function x(M, C, m, L) {
                var d = L.coloring === "fill" || L.type === "constraint" && L._operation !== "=", h = "M" + m.join("L") + "Z";
                d && l(C, L);
                var E = P.ensureSingle(M, "g", "contourfill"), w = E.selectAll("path").data(d ? C : []);
                w.enter().append("path"), w.exit().remove(), w.each(function(z) {
                  var O = (z.prefixBoundary ? h : "") + c(z, m);
                  O ? b.select(this).attr("d", O).style("stroke", "none") : b.select(this).remove();
                });
              }
              function c(M, C) {
                var m = "", L = 0, d = M.edgepaths.map(function(rt, st) {
                  return st;
                }), h = !0, E, w, z, O, B, V;
                function U(rt) {
                  return Math.abs(rt[1] - C[0][1]) < 0.01;
                }
                function H(rt) {
                  return Math.abs(rt[1] - C[2][1]) < 0.01;
                }
                function F(rt) {
                  return Math.abs(rt[0] - C[0][0]) < 0.01;
                }
                function G(rt) {
                  return Math.abs(rt[0] - C[2][0]) < 0.01;
                }
                for (; d.length; ) {
                  for (V = n.smoothopen(M.edgepaths[L], M.smoothing), m += h ? V : V.replace(/^M/, "L"), d.splice(d.indexOf(L), 1), E = M.edgepaths[L][M.edgepaths[L].length - 1], O = -1, z = 0; z < 4; z++) {
                    if (!E) {
                      P.log("Missing end?", L, M);
                      break;
                    }
                    for (U(E) && !G(E) ? w = C[1] : F(E) ? w = C[0] : H(E) ? w = C[3] : G(E) && (w = C[2]), B = 0; B < M.edgepaths.length; B++) {
                      var q = M.edgepaths[B][0];
                      Math.abs(E[0] - w[0]) < 0.01 ? Math.abs(E[0] - q[0]) < 0.01 && (q[1] - E[1]) * (w[1] - q[1]) >= 0 && (w = q, O = B) : Math.abs(E[1] - w[1]) < 0.01 ? Math.abs(E[1] - q[1]) < 0.01 && (q[0] - E[0]) * (w[0] - q[0]) >= 0 && (w = q, O = B) : P.log("endpt to newendpt is not vert. or horz.", E, w, q);
                    }
                    if (E = w, O >= 0) break;
                    m += "L" + w;
                  }
                  if (O === M.edgepaths.length) {
                    P.log("unclosed perimeter path");
                    break;
                  }
                  L = O, h = d.indexOf(L) === -1, h && (L = d[0], m += "Z");
                }
                for (L = 0; L < M.paths.length; L++)
                  m += n.smoothclosed(M.paths[L], M.smoothing);
                return m;
              }
              function v(M, C, m, L, d) {
                var h = m._context.staticPlot, E = P.ensureSingle(M, "g", "contourlines"), w = d.showlines !== !1, z = d.showlabels, O = w && z, B = K.createLines(E, w || z, C, h), V = K.createLineClip(E, O, m, L.trace.uid), U = M.selectAll("g.contourlabels").data(z ? [0] : []);
                if (U.exit().remove(), U.enter().append("g").classed("contourlabels", !0), z) {
                  var H = [], F = [];
                  P.clearLocationCache();
                  var G = K.labelFormatter(m, L), q = n.tester.append("text").attr("data-notex", 1).call(n.font, d.labelfont), rt = C[0].xaxis, st = C[0].yaxis, vt = rt._length, ht = st._length, et = rt.range, Q = st.range, j = P.aggNums(Math.min, null, L.x), at = P.aggNums(Math.max, null, L.x), ut = P.aggNums(Math.min, null, L.y), nt = P.aggNums(Math.max, null, L.y), X = Math.max(rt.c2p(j, !0), 0), ct = Math.min(rt.c2p(at, !0), vt), lt = Math.max(st.c2p(nt, !0), 0), pt = Math.min(st.c2p(ut, !0), ht), wt = {};
                  et[0] < et[1] ? (wt.left = X, wt.right = ct) : (wt.left = ct, wt.right = X), Q[0] < Q[1] ? (wt.top = lt, wt.bottom = pt) : (wt.top = pt, wt.bottom = lt), wt.middle = (wt.top + wt.bottom) / 2, wt.center = (wt.left + wt.right) / 2, H.push([[wt.left, wt.top], [wt.right, wt.top], [wt.right, wt.bottom], [wt.left, wt.bottom]]);
                  var Et = Math.sqrt(vt * vt + ht * ht), Ct = o.LABELDISTANCE * Et / Math.max(1, C.length / o.LABELINCREASE);
                  B.each(function(Gt) {
                    var Jt = K.calcTextOpts(Gt.level, G, q, m);
                    b.select(this).selectAll("path").each(function() {
                      var Qt = this, Vt = P.getVisibleSegment(Qt, wt, Jt.height / 2);
                      if (Vt && !(Vt.len < (Jt.width + Jt.height) * o.LABELMIN))
                        for (var zt = Math.min(Math.ceil(Vt.len / Ct), o.LABELMAX), Rt = 0; Rt < zt; Rt++) {
                          var Wt = K.findBestTextLocation(Qt, Vt, Jt, F, wt);
                          if (!Wt) break;
                          K.addLabelData(Wt, Jt, F, H);
                        }
                    });
                  }), q.remove(), K.drawLabels(U, F, m, V, O ? H : null);
                }
                z && !w && B.remove();
              }
              K.createLines = function(M, C, m, L) {
                var d = m[0].smoothing, h = M.selectAll("g.contourlevel").data(C ? m : []);
                if (h.exit().remove(), h.enter().append("g").classed("contourlevel", !0), C) {
                  var E = h.selectAll("path.openline").data(function(z) {
                    return z.pedgepaths || z.edgepaths;
                  });
                  E.exit().remove(), E.enter().append("path").classed("openline", !0), E.attr("d", function(z) {
                    return n.smoothopen(z, d);
                  }).style("stroke-miterlimit", 1).style("vector-effect", L ? "none" : "non-scaling-stroke");
                  var w = h.selectAll("path.closedline").data(function(z) {
                    return z.ppaths || z.paths;
                  });
                  w.exit().remove(), w.enter().append("path").classed("closedline", !0), w.attr("d", function(z) {
                    return n.smoothclosed(z, d);
                  }).style("stroke-miterlimit", 1).style("vector-effect", L ? "none" : "non-scaling-stroke");
                }
                return h;
              }, K.createLineClip = function(M, C, m, L) {
                var d = m._fullLayout._clips, h = C ? "clipline" + L : null, E = d.selectAll("#" + h).data(C ? [0] : []);
                return E.exit().remove(), E.enter().append("clipPath").classed("contourlineclip", !0).attr("id", h), n.setClipUrl(M, h, m), E;
              }, K.labelFormatter = function(M, C) {
                var m = M._fullLayout, L = C.trace, d = L.contours, h = {
                  type: "linear",
                  _id: "ycontour",
                  showexponent: "all",
                  exponentformat: "B"
                };
                if (d.labelformat)
                  h.tickformat = d.labelformat, p(h, m);
                else {
                  var E = s.extractOpts(L);
                  if (E && E.colorbar && E.colorbar._axis)
                    h = E.colorbar._axis;
                  else {
                    if (d.type === "constraint") {
                      var w = d.value;
                      P.isArrayOrTypedArray(w) ? h.range = [w[0], w[w.length - 1]] : h.range = [w, w];
                    } else
                      h.range = [d.start, d.end], h.nticks = (d.end - d.start) / d.size;
                    h.range[0] === h.range[1] && (h.range[1] += h.range[0] || 1), h.nticks || (h.nticks = 1e3), p(h, m), A.prepTicks(h), h._tmin = null, h._tmax = null;
                  }
                }
                return function(z) {
                  return A.tickText(h, z).text;
                };
              }, K.calcTextOpts = function(M, C, m, L) {
                var d = C(M);
                m.text(d).call(T.convertToTspans, L);
                var h = m.node(), E = n.bBox(h, !0);
                return {
                  text: d,
                  width: E.width,
                  height: E.height,
                  fontSize: +h.style["font-size"].replace("px", ""),
                  level: M,
                  dy: (E.top + E.bottom) / 2
                };
              }, K.findBestTextLocation = function(M, C, m, L, d) {
                var h = m.width, E, w, z, O, B;
                C.isClosed ? (w = C.len / y.INITIALSEARCHPOINTS, E = C.min + w / 2, z = C.max) : (w = (C.len - h) / (y.INITIALSEARCHPOINTS + 1), E = C.min + w + h / 2, z = C.max - (w + h) / 2);
                for (var V = 1 / 0, U = 0; U < y.ITERATIONS; U++) {
                  for (var H = E; H < z; H += w) {
                    var F = P.getTextLocation(M, C.total, H, h), G = f(F, m, L, d);
                    G < V && (V = G, B = F, O = H);
                  }
                  if (V > y.MAXCOST * 2) break;
                  U && (w /= 2), E = O - w / 2, z = E + w * 1.5;
                }
                if (V <= y.MAXCOST) return B;
              };
              function f(M, C, m, L) {
                var d = C.width / 2, h = C.height / 2, E = M.x, w = M.y, z = M.theta, O = Math.cos(z) * d, B = Math.sin(z) * d, V = (E > L.center ? L.right - E : E - L.left) / (O + Math.abs(Math.sin(z) * h)), U = (w > L.middle ? L.bottom - w : w - L.top) / (Math.abs(B) + Math.cos(z) * h);
                if (V < 1 || U < 1) return 1 / 0;
                var H = y.EDGECOST * (1 / (V - 1) + 1 / (U - 1));
                H += y.ANGLECOST * z * z;
                for (var F = E - O, G = w - B, q = E + O, rt = w + B, st = 0; st < m.length; st++) {
                  var vt = m[st], ht = Math.cos(vt.theta) * vt.width / 2, et = Math.sin(vt.theta) * vt.width / 2, Q = P.segmentDistance(F, G, q, rt, vt.x - ht, vt.y - et, vt.x + ht, vt.y + et) * 2 / (C.height + vt.height), j = vt.level === C.level, at = j ? y.SAMELEVELDISTANCE : 1;
                  if (Q <= at) return 1 / 0;
                  var ut = y.NEIGHBORCOST * (j ? y.SAMELEVELFACTOR : 1);
                  H += ut / (Q - at);
                }
                return H;
              }
              K.addLabelData = function(M, C, m, L) {
                var d = C.fontSize, h = C.width + d / 3, E = Math.max(0, C.height - d / 3), w = M.x, z = M.y, O = M.theta, B = Math.sin(O), V = Math.cos(O), U = function(F, G) {
                  return [w + F * V - G * B, z + F * B + G * V];
                }, H = [U(-h / 2, -E / 2), U(-h / 2, E / 2), U(h / 2, E / 2), U(h / 2, -E / 2)];
                m.push({
                  text: C.text,
                  x: w,
                  y: z,
                  dy: C.dy,
                  theta: O,
                  level: C.level,
                  width: h,
                  height: E
                }), L.push(H);
              }, K.drawLabels = function(M, C, m, L, d) {
                var h = M.selectAll("text").data(C, function(O) {
                  return O.text + "," + O.x + "," + O.y + "," + O.theta;
                });
                if (h.exit().remove(), h.enter().append("text").attr({
                  "data-notex": 1,
                  "text-anchor": "middle"
                }).each(function(O) {
                  var B = O.x + Math.sin(O.theta) * O.dy, V = O.y - Math.cos(O.theta) * O.dy;
                  b.select(this).text(O.text).attr({
                    x: B,
                    y: V,
                    transform: "rotate(" + 180 * O.theta / Math.PI + " " + B + " " + V + ")"
                  }).call(T.convertToTspans, m);
                }), d) {
                  for (var E = "", w = 0; w < d.length; w++)
                    E += "M" + d[w].join("L") + "Z";
                  var z = P.ensureSingle(L, "path", "");
                  z.attr("d", E);
                }
              };
              function _(M, C, m, L, d) {
                var h = L.trace, E = m._fullLayout._clips, w = "clip" + h.uid, z = E.selectAll("#" + w).data(h.connectgaps ? [] : [0]);
                if (z.enter().append("clipPath").classed("contourclip", !0).attr("id", w), z.exit().remove(), h.connectgaps === !1) {
                  var O = {
                    // fraction of the way from missing to present point
                    // to draw the boundary.
                    // if you make this 1 (or 1-epsilon) then a point in
                    // a sea of missing data will disappear entirely.
                    level: 0.9,
                    crossings: {},
                    starts: [],
                    edgepaths: [],
                    paths: [],
                    xaxis: C.xaxis,
                    yaxis: C.yaxis,
                    x: L.x,
                    y: L.y,
                    // 0 = no data, 1 = data
                    z: S(L),
                    smoothing: 0
                  };
                  t([O]), r([O]), l([O], {
                    type: "levels"
                  });
                  var B = P.ensureSingle(z, "path", "");
                  B.attr("d", (O.prefixBoundary ? "M" + d.join("L") + "Z" : "") + c(O, d));
                } else w = null;
                n.setClipUrl(M, w, m);
              }
              function S(M) {
                var C = M.trace._emptypoints, m = [], L = M.z.length, d = M.z[0].length, h, E = [], w;
                for (h = 0; h < d; h++) E.push(1);
                for (h = 0; h < L; h++) m.push(E.slice());
                for (h = 0; h < C.length; h++)
                  w = C[h], m[w[0]][w[1]] = 0;
                return M.zmask = m, m;
              }
            }
          ),
          /***/
          62475: (
            /***/
            function(Y, K, e) {
              var b = e(29714), P = e(34809);
              Y.exports = function(T, A) {
                var p = T.contours;
                if (T.autocontour) {
                  var u = T.zmin, t = T.zmax;
                  (T.zauto || u === void 0) && (u = P.aggNums(Math.min, null, A)), (T.zauto || t === void 0) && (t = P.aggNums(Math.max, null, A));
                  var r = n(u, t, T.ncontours);
                  p.size = r.dtick, p.start = b.tickFirst(r), r.range.reverse(), p.end = b.tickFirst(r), p.start === u && (p.start += p.size), p.end === t && (p.end -= p.size), p.start > p.end && (p.start = p.end = (p.start + p.end) / 2), T._input.contours || (T._input.contours = {}), P.extendFlat(T._input.contours, {
                    start: p.start,
                    end: p.end,
                    size: p.size
                  }), T._input.autocontour = !0;
                } else if (p.type !== "constraint") {
                  var i = p.start, a = p.end, l = T._input.contours;
                  if (i > a && (p.start = l.start = a, a = p.end = l.end = i, i = p.start), !(p.size > 0)) {
                    var o;
                    i === a ? o = 1 : o = n(i, a, T.ncontours).dtick, l.size = p.size = o;
                  }
                }
              };
              function n(s, T, A) {
                var p = {
                  type: "linear",
                  range: [s, T]
                };
                return b.autoTicks(p, (T - s) / (A || 15)), p;
              }
            }
          ),
          /***/
          1328: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(62203), n = e(12774), s = e(16438);
              Y.exports = function(A) {
                var p = b.select(A).selectAll("g.contour");
                p.style("opacity", function(u) {
                  return u[0].trace.opacity;
                }), p.each(function(u) {
                  var t = b.select(this), r = u[0].trace, i = r.contours, a = r.line, l = i.size || 1, o = i.start, y = i.type === "constraint", g = !y && i.coloring === "lines", x = !y && i.coloring === "fill", c = g || x ? s(r) : null;
                  t.selectAll("g.contourlevel").each(function(_) {
                    b.select(this).selectAll("path").call(P.lineGroupStyle, a.width, g ? c(_.level) : a.color, a.dash);
                  });
                  var v = i.labelfont;
                  if (t.selectAll("g.contourlabels text").each(function(_) {
                    P.font(b.select(this), {
                      weight: v.weight,
                      style: v.style,
                      variant: v.variant,
                      textcase: v.textcase,
                      lineposition: v.lineposition,
                      shadow: v.shadow,
                      family: v.family,
                      size: v.size,
                      color: v.color || (g ? c(_.level) : a.color)
                    });
                  }), y)
                    t.selectAll("g.contourfill path").style("fill", r.fillcolor);
                  else if (x) {
                    var f;
                    t.selectAll("g.contourfill path").style("fill", function(_) {
                      return f === void 0 && (f = _.level), c(_.level + 0.5 * l);
                    }), f === void 0 && (f = o), t.selectAll("g.contourbg path").style("fill", c(f - 0.5 * l));
                  }
                }), n(A);
              };
            }
          ),
          /***/
          39889: (
            /***/
            function(Y, K, e) {
              var b = e(39356), P = e(20576);
              Y.exports = function(s, T, A, p, u) {
                var t = A("contours.coloring"), r, i = "";
                t === "fill" && (r = A("contours.showlines")), r !== !1 && (t !== "lines" && (i = A("line.color", "#000")), A("line.width", 0.5), A("line.dash")), t !== "none" && (s.showlegend !== !0 && (T.showlegend = !1), T._dfltShowLegend = !1, b(s, T, p, A, {
                  prefix: "",
                  cLetter: "z"
                })), A("line.smoothing"), P(A, p, i, u);
              };
            }
          ),
          /***/
          66365: (
            /***/
            function(Y, K, e) {
              var b = e(81658), P = e(52240), n = e(87163), s = e(93049).extendFlat, T = P.contours;
              Y.exports = s({
                carpet: {
                  valType: "string",
                  editType: "calc"
                },
                z: b.z,
                a: b.x,
                a0: b.x0,
                da: b.dx,
                b: b.y,
                b0: b.y0,
                db: b.dy,
                text: b.text,
                hovertext: b.hovertext,
                transpose: b.transpose,
                atype: b.xtype,
                btype: b.ytype,
                fillcolor: P.fillcolor,
                autocontour: P.autocontour,
                ncontours: P.ncontours,
                contours: {
                  type: T.type,
                  start: T.start,
                  end: T.end,
                  size: T.size,
                  coloring: {
                    // from contourAttrs.contours.coloring but no 'heatmap' option
                    valType: "enumerated",
                    values: ["fill", "lines", "none"],
                    dflt: "fill",
                    editType: "calc"
                  },
                  showlines: T.showlines,
                  showlabels: T.showlabels,
                  labelfont: T.labelfont,
                  labelformat: T.labelformat,
                  operation: T.operation,
                  value: T.value,
                  editType: "calc",
                  impliedEdits: {
                    autocontour: !1
                  }
                },
                line: {
                  color: P.line.color,
                  width: P.line.width,
                  dash: P.line.dash,
                  smoothing: P.line.smoothing,
                  editType: "plot"
                },
                zorder: P.zorder,
                transforms: void 0
              }, n("", {
                cLetter: "z",
                autoColorDflt: !1
              }));
            }
          ),
          /***/
          80849: (
            /***/
            function(Y, K, e) {
              var b = e(28379), P = e(34809), n = e(87869), s = e(93877), T = e(69295), A = e(78106), p = e(80924), u = e(50538), t = e(26571), r = e(62475);
              Y.exports = function(l, o) {
                var y = o._carpetTrace = t(l, o);
                if (!(!y || !y.visible || y.visible === "legendonly")) {
                  if (!o.a || !o.b) {
                    var g = l.data[y.index], x = l.data[o.index];
                    x.a || (x.a = g.a), x.b || (x.b = g.b), u(x, o, o._defaultColor, l._fullLayout);
                  }
                  var c = i(l, o);
                  return r(o, o._z), c;
                }
              };
              function i(a, l) {
                var o = l._carpetTrace, y = o.aaxis, g = o.baxis, x, c, v, f, _, S, M;
                y._minDtick = 0, g._minDtick = 0, P.isArray1D(l.z) && n(l, y, g, "a", "b", ["z"]), x = l._a = l._a || l.a, f = l._b = l._b || l.b, x = x ? y.makeCalcdata(l, "_a") : [], f = f ? g.makeCalcdata(l, "_b") : [], c = l.a0 || 0, v = l.da || 1, _ = l.b0 || 0, S = l.db || 1, M = l._z = s(l._z || l.z, l.transpose), l._emptypoints = A(M), T(M, l._emptypoints);
                var C = P.maxRowLength(M), m = l.xtype === "scaled" ? "" : x, L = p(l, m, c, v, C, y), d = l.ytype === "scaled" ? "" : f, h = p(l, d, _, S, M.length, g), E = {
                  a: L,
                  b: h,
                  z: M
                };
                return l.contours.type === "levels" && l.contours.coloring !== "none" && b(a, l, {
                  vals: M,
                  containerStr: "",
                  cLetter: "z"
                }), [E];
              }
            }
          ),
          /***/
          50538: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(86073), n = e(66365), s = e(29503), T = e(47495), A = e(39889);
              Y.exports = function(u, t, r, i) {
                function a(g, x) {
                  return b.coerce(u, t, n, g, x);
                }
                function l(g) {
                  return b.coerce2(u, t, n, g);
                }
                if (a("carpet"), u.a && u.b) {
                  var o = P(u, t, a, i, "a", "b");
                  if (!o) {
                    t.visible = !1;
                    return;
                  }
                  a("text");
                  var y = a("contours.type") === "constraint";
                  y ? s(u, t, a, i, r, {
                    hasHover: !1
                  }) : (T(u, t, a, l), A(u, t, a, i, {
                    hasHover: !1
                  }));
                } else
                  t._defaultColor = r, t._length = null;
                a("zorder");
              };
            }
          ),
          /***/
          34406: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(66365),
                supplyDefaults: e(50538),
                colorbar: e(92697),
                calc: e(80849),
                plot: e(71815),
                style: e(1328),
                moduleType: "trace",
                name: "contourcarpet",
                basePlotModule: e(37703),
                categories: ["cartesian", "svg", "carpet", "contour", "symbols", "showLegend", "hasLines", "carpetDependent", "noHover", "noSortingByValue"],
                meta: {}
              };
            }
          ),
          /***/
          71815: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(6720), n = e(3685), s = e(62203), T = e(34809), A = e(83545), p = e(27657), u = e(8850), t = e(53156), r = e(1999), i = e(86828), a = e(49886), l = e(26571), o = e(94903);
              Y.exports = function(m, L, d, h) {
                var E = L.xaxis, w = L.yaxis;
                T.makeTraceGroups(h, d, "contour").each(function(z) {
                  var O = b.select(this), B = z[0], V = B.trace, U = V._carpetTrace = l(m, V), H = m.calcdata[U.index][0];
                  if (!U.visible || U.visible === "legendonly") return;
                  var F = B.a, G = B.b, q = V.contours, rt = i(q, L, B), st = q.type === "constraint", vt = q._operation, ht = st ? vt === "=" ? "lines" : "fill" : q.coloring;
                  function et(Et) {
                    var Ct = U.ab2xy(Et[0], Et[1], !0);
                    return [E.c2p(Ct[0]), w.c2p(Ct[1])];
                  }
                  var Q = [[F[0], G[G.length - 1]], [F[F.length - 1], G[G.length - 1]], [F[F.length - 1], G[0]], [F[0], G[0]]];
                  A(rt);
                  var j = (F[F.length - 1] - F[0]) * 1e-8, at = (G[G.length - 1] - G[0]) * 1e-8;
                  p(rt, j, at);
                  var ut = rt;
                  q.type === "constraint" && (ut = r(rt, vt)), y(rt, et);
                  var nt, X, ct, lt, pt = [];
                  for (lt = H.clipsegments.length - 1; lt >= 0; lt--)
                    nt = H.clipsegments[lt], X = P([], nt.x, E.c2p), ct = P([], nt.y, w.c2p), X.reverse(), ct.reverse(), pt.push(n(X, ct, nt.bicubic));
                  var wt = "M" + pt.join("L") + "Z";
                  _(O, H.clipsegments, E, w, st, ht), S(V, O, E, w, ut, Q, et, U, H, ht, wt), g(O, rt, m, B, q, L, U), s.setClipUrl(O, U._clipPathId, m);
                });
              };
              function y(C, m) {
                var L, d, h, E, w, z, O, B, V;
                for (L = 0; L < C.length; L++) {
                  for (E = C[L], w = E.pedgepaths = [], z = E.ppaths = [], d = 0; d < E.edgepaths.length; d++) {
                    for (V = E.edgepaths[d], O = [], h = 0; h < V.length; h++)
                      O[h] = m(V[h]);
                    w.push(O);
                  }
                  for (d = 0; d < E.paths.length; d++) {
                    for (V = E.paths[d], B = [], h = 0; h < V.length; h++)
                      B[h] = m(V[h]);
                    z.push(B);
                  }
                }
              }
              function g(C, m, L, d, h, E, w) {
                var z = L._context.staticPlot, O = T.ensureSingle(C, "g", "contourlines"), B = h.showlines !== !1, V = h.showlabels, U = B && V, H = u.createLines(O, B || V, m, z), F = u.createLineClip(O, U, L, d.trace.uid), G = C.selectAll("g.contourlabels").data(V ? [0] : []);
                if (G.exit().remove(), G.enter().append("g").classed("contourlabels", !0), V) {
                  var q = E.xaxis, rt = E.yaxis, st = q._length, vt = rt._length, ht = [[[0, 0], [st, 0], [st, vt], [0, vt]]], et = [];
                  T.clearLocationCache();
                  var Q = u.labelFormatter(L, d), j = s.tester.append("text").attr("data-notex", 1).call(s.font, h.labelfont), at = {
                    left: 0,
                    right: st,
                    center: st / 2,
                    top: 0,
                    bottom: vt,
                    middle: vt / 2
                  }, ut = Math.sqrt(st * st + vt * vt), nt = t.LABELDISTANCE * ut / Math.max(1, m.length / t.LABELINCREASE);
                  H.each(function(X) {
                    var ct = u.calcTextOpts(X.level, Q, j, L);
                    b.select(this).selectAll("path").each(function(lt) {
                      var pt = this, wt = T.getVisibleSegment(pt, at, ct.height / 2);
                      if (wt && (x(pt, lt, X, wt, w, ct.height), !(wt.len < (ct.width + ct.height) * t.LABELMIN)))
                        for (var Et = Math.min(Math.ceil(wt.len / nt), t.LABELMAX), Ct = 0; Ct < Et; Ct++) {
                          var Gt = u.findBestTextLocation(pt, wt, ct, et, at);
                          if (!Gt) break;
                          u.addLabelData(Gt, ct, et, ht);
                        }
                    });
                  }), j.remove(), u.drawLabels(G, et, L, F, U ? ht : null);
                }
                V && !B && H.remove();
              }
              function x(C, m, L, d, h, E) {
                for (var w, z = 0; z < L.pedgepaths.length; z++)
                  m === L.pedgepaths[z] && (w = L.edgepaths[z]);
                if (!w) return;
                var O = h.a[0], B = h.a[h.a.length - 1], V = h.b[0], U = h.b[h.b.length - 1];
                function H(st, vt) {
                  var ht = 0, et, Q = 0.1;
                  return (Math.abs(st[0] - O) < Q || Math.abs(st[0] - B) < Q) && (et = v(h.dxydb_rough(st[0], st[1], Q)), ht = Math.max(ht, E * f(vt, et) / 2)), (Math.abs(st[1] - V) < Q || Math.abs(st[1] - U) < Q) && (et = v(h.dxyda_rough(st[0], st[1], Q)), ht = Math.max(ht, E * f(vt, et) / 2)), ht;
                }
                var F = c(C, 0, 1), G = c(C, d.total, d.total - 1), q = H(w[0], F), rt = d.total - H(w[w.length - 1], G);
                d.min < q && (d.min = q), d.max > rt && (d.max = rt), d.len = d.max - d.min;
              }
              function c(C, m, L) {
                var d = C.getPointAtLength(m), h = C.getPointAtLength(L), E = h.x - d.x, w = h.y - d.y, z = Math.sqrt(E * E + w * w);
                return [E / z, w / z];
              }
              function v(C) {
                var m = Math.sqrt(C[0] * C[0] + C[1] * C[1]);
                return [C[0] / m, C[1] / m];
              }
              function f(C, m) {
                var L = Math.abs(C[0] * m[0] + C[1] * m[1]), d = Math.sqrt(1 - L * L);
                return d / L;
              }
              function _(C, m, L, d, h, E) {
                var w, z, O, B, V = T.ensureSingle(C, "g", "contourbg"), U = V.selectAll("path").data(E === "fill" && !h ? [0] : []);
                U.enter().append("path"), U.exit().remove();
                var H = [];
                for (B = 0; B < m.length; B++)
                  w = m[B], z = P([], w.x, L.c2p), O = P([], w.y, d.c2p), H.push(n(z, O, w.bicubic));
                U.attr("d", "M" + H.join("L") + "Z").style("stroke", "none");
              }
              function S(C, m, L, d, h, E, w, z, O, B, V) {
                var U = B === "fill";
                U && a(h, C.contours);
                var H = T.ensureSingle(m, "g", "contourfill"), F = H.selectAll("path").data(U ? h : []);
                F.enter().append("path"), F.exit().remove(), F.each(function(G) {
                  var q = (G.prefixBoundary ? V : "") + M(C, G, E, w, z, O, L, d);
                  q ? b.select(this).attr("d", q).style("stroke", "none") : b.select(this).remove();
                });
              }
              function M(C, m, L, d, h, E, w, z) {
                var O, B = "", V = m.edgepaths.map(function(ct, lt) {
                  return lt;
                }), U = !0, H, F, G, q, rt, st, vt = Math.abs(L[0][0] - L[2][0]) * 1e-4, ht = Math.abs(L[0][1] - L[2][1]) * 1e-4;
                function et(ct) {
                  return Math.abs(ct[1] - L[0][1]) < ht;
                }
                function Q(ct) {
                  return Math.abs(ct[1] - L[2][1]) < ht;
                }
                function j(ct) {
                  return Math.abs(ct[0] - L[0][0]) < vt;
                }
                function at(ct) {
                  return Math.abs(ct[0] - L[2][0]) < vt;
                }
                function ut(ct, lt) {
                  var pt, wt, Et, Ct, Gt = "";
                  for (et(ct) && !at(ct) || Q(ct) && !j(ct) ? (Ct = h.aaxis, Et = o(h, E, [ct[0], lt[0]], 0.5 * (ct[1] + lt[1]))) : (Ct = h.baxis, Et = o(h, E, 0.5 * (ct[0] + lt[0]), [ct[1], lt[1]])), pt = 1; pt < Et.length; pt++)
                    for (Gt += Ct.smoothing ? "C" : "L", wt = 0; wt < Et[pt].length; wt++) {
                      var Jt = Et[pt][wt];
                      Gt += [w.c2p(Jt[0]), z.c2p(Jt[1])] + " ";
                    }
                  return Gt;
                }
                for (O = 0, H = null; V.length; ) {
                  var nt = m.edgepaths[O][0];
                  for (H && (B += ut(H, nt)), st = s.smoothopen(m.edgepaths[O].map(d), m.smoothing), B += U ? st : st.replace(/^M/, "L"), V.splice(V.indexOf(O), 1), H = m.edgepaths[O][m.edgepaths[O].length - 1], q = -1, G = 0; G < 4; G++) {
                    if (!H) {
                      T.log("Missing end?", O, m);
                      break;
                    }
                    for (et(H) && !at(H) ? F = L[1] : j(H) ? F = L[0] : Q(H) ? F = L[3] : at(H) && (F = L[2]), rt = 0; rt < m.edgepaths.length; rt++) {
                      var X = m.edgepaths[rt][0];
                      Math.abs(H[0] - F[0]) < vt ? Math.abs(H[0] - X[0]) < vt && (X[1] - H[1]) * (F[1] - X[1]) >= 0 && (F = X, q = rt) : Math.abs(H[1] - F[1]) < ht ? Math.abs(H[1] - X[1]) < ht && (X[0] - H[0]) * (F[0] - X[0]) >= 0 && (F = X, q = rt) : T.log("endpt to newendpt is not vert. or horz.", H, F, X);
                    }
                    if (q >= 0) break;
                    B += ut(H, F), H = F;
                  }
                  if (q === m.edgepaths.length) {
                    T.log("unclosed perimeter path");
                    break;
                  }
                  O = q, U = V.indexOf(O) === -1, U && (O = V[0], B += ut(H, F) + "Z", H = null);
                }
                for (O = 0; O < m.paths.length; O++)
                  B += s.smoothclosed(m.paths[O].map(d), m.smoothing);
                return B;
              }
            }
          ),
          /***/
          70690: (
            /***/
            function(Y, K, e) {
              var b = e(87163), P = e(3208).rb, n = e(9829), s = e(71388), T = e(93049).extendFlat;
              Y.exports = T({
                lon: s.lon,
                lat: s.lat,
                z: {
                  valType: "data_array",
                  editType: "calc"
                },
                radius: {
                  valType: "number",
                  editType: "plot",
                  arrayOk: !0,
                  min: 1,
                  dflt: 30
                },
                below: {
                  valType: "string",
                  editType: "plot"
                },
                text: s.text,
                hovertext: s.hovertext,
                hoverinfo: T({}, n.hoverinfo, {
                  flags: ["lon", "lat", "z", "text", "name"]
                }),
                hovertemplate: P(),
                showlegend: T({}, n.showlegend, {
                  dflt: !1
                })
              }, b("", {
                cLetter: "z",
                editTypeOverride: "calc"
              }));
            }
          ),
          /***/
          91582: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(34809).isArrayOrTypedArray, n = e(63821).BADNUM, s = e(28379), T = e(34809)._;
              Y.exports = function(p, u) {
                for (var t = u._length, r = new Array(t), i = u.z, a = P(i) && i.length, l = 0; l < t; l++) {
                  var o = r[l] = {}, y = u.lon[l], g = u.lat[l];
                  if (o.lonlat = b(y) && b(g) ? [+y, +g] : [n, n], a) {
                    var x = i[l];
                    o.z = b(x) ? x : n;
                  }
                }
                return s(p, u, {
                  vals: a ? i : [0, 1],
                  containerStr: "",
                  cLetter: "z"
                }), t && (r[0].t = {
                  labels: {
                    lat: T(p, "lat:") + " ",
                    lon: T(p, "lon:") + " "
                  }
                }), r;
              };
            }
          ),
          /***/
          95012: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(34809), n = e(78766), s = e(88856), T = e(63821).BADNUM, A = e(39532).makeBlank;
              Y.exports = function(u) {
                var t = u[0].trace, r = t.visible === !0 && t._length !== 0, i = {
                  layout: {
                    visibility: "none"
                  },
                  paint: {}
                }, a = t._opts = {
                  heatmap: i,
                  geojson: A()
                };
                if (!r) return a;
                var l = [], o, y = t.z, g = t.radius, x = P.isArrayOrTypedArray(y) && y.length, c = P.isArrayOrTypedArray(g);
                for (o = 0; o < u.length; o++) {
                  var v = u[o], f = v.lonlat;
                  if (f[0] !== T) {
                    var _ = {};
                    if (x) {
                      var S = v.z;
                      _.z = S !== T ? S : 0;
                    }
                    c && (_.r = b(g[o]) && g[o] > 0 ? +g[o] : 0), l.push({
                      type: "Feature",
                      geometry: {
                        type: "Point",
                        coordinates: f
                      },
                      properties: _
                    });
                  }
                }
                var M = s.extractOpts(t), C = M.reversescale ? s.flipScale(M.colorscale) : M.colorscale, m = C[0][1], L = n.opacity(m) < 1 ? m : n.addOpacity(m, 0), d = ["interpolate", ["linear"], ["heatmap-density"], 0, L];
                for (o = 1; o < C.length; o++)
                  d.push(C[o][0], C[o][1]);
                var h = ["interpolate", ["linear"], ["get", "z"], M.min, 0, M.max, 1];
                return P.extendFlat(a.heatmap.paint, {
                  "heatmap-weight": x ? h : 1 / (M.max - M.min),
                  "heatmap-color": d,
                  "heatmap-radius": c ? {
                    type: "identity",
                    property: "r"
                  } : t.radius,
                  "heatmap-opacity": t.opacity
                }), a.geojson = {
                  type: "FeatureCollection",
                  features: l
                }, a.heatmap.layout.visibility = "visible", a;
              };
            }
          ),
          /***/
          9653: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(39356), n = e(70690);
              Y.exports = function(T, A, p, u) {
                function t(l, o) {
                  return b.coerce(T, A, n, l, o);
                }
                var r = t("lon") || [], i = t("lat") || [], a = Math.min(r.length, i.length);
                if (!a) {
                  A.visible = !1;
                  return;
                }
                A._length = a, t("z"), t("radius"), t("below"), t("text"), t("hovertext"), t("hovertemplate"), P(T, A, u, t, {
                  prefix: "",
                  cLetter: "z"
                });
              };
            }
          ),
          /***/
          16302: (
            /***/
            function(Y) {
              Y.exports = function(e, b) {
                return e.lon = b.lon, e.lat = b.lat, e.z = b.z, e;
              };
            }
          ),
          /***/
          28045: (
            /***/
            function(Y, K, e) {
              var b = e(29714), P = e(67275).hoverPoints, n = e(67275).getExtraText;
              Y.exports = function(T, A, p) {
                var u = P(T, A, p);
                if (u) {
                  var t = u[0], r = t.cd, i = r[0].trace, a = r[t.index];
                  if (delete t.color, "z" in a) {
                    var l = t.subplot.mockAxis;
                    t.z = a.z, t.zLabel = b.tickText(l, l.c2l(a.z), "hover").text;
                  }
                  return t.extraText = n(i, a, r[0].t.labels), [t];
                }
              };
            }
          ),
          /***/
          91995: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(70690),
                supplyDefaults: e(9653),
                colorbar: e(12431),
                formatLabels: e(66762),
                calc: e(91582),
                plot: e(99932),
                hoverPoints: e(28045),
                eventData: e(16302),
                getBelow: function(b, P) {
                  for (var n = P.getMapLayers(), s = 0; s < n.length; s++) {
                    var T = n[s], A = T.id;
                    if (T.type === "symbol" && typeof A == "string" && A.indexOf("plotly-") === -1)
                      return A;
                  }
                },
                moduleType: "trace",
                name: "densitymap",
                basePlotModule: e(34091),
                categories: ["map", "gl", "showLegend"],
                meta: {
                  hr_name: "density_map"
                }
              };
            }
          ),
          /***/
          99932: (
            /***/
            function(Y, K, e) {
              var b = e(95012), P = e(8814).traceLayerPrefix;
              function n(T, A) {
                this.type = "densitymap", this.subplot = T, this.uid = A, this.sourceId = "source-" + A, this.layerList = [["heatmap", P + A + "-heatmap"]], this.below = null;
              }
              var s = n.prototype;
              s.update = function(T) {
                var A = this.subplot, p = this.layerList, u = b(T), t = A.belowLookup["trace-" + this.uid];
                A.map.getSource(this.sourceId).setData(u.geojson), t !== this.below && (this._removeLayers(), this._addLayers(u, t), this.below = t);
                for (var r = 0; r < p.length; r++) {
                  var i = p[r], a = i[0], l = i[1], o = u[a];
                  A.setOptions(l, "setLayoutProperty", o.layout), o.layout.visibility === "visible" && A.setOptions(l, "setPaintProperty", o.paint);
                }
              }, s._addLayers = function(T, A) {
                for (var p = this.subplot, u = this.layerList, t = this.sourceId, r = 0; r < u.length; r++) {
                  var i = u[r], a = i[0], l = T[a];
                  p.addLayer({
                    type: a,
                    id: i[1],
                    source: t,
                    layout: l.layout,
                    paint: l.paint
                  }, A);
                }
              }, s._removeLayers = function() {
                for (var T = this.subplot.map, A = this.layerList, p = A.length - 1; p >= 0; p--)
                  T.removeLayer(A[p][1]);
              }, s.dispose = function() {
                var T = this.subplot.map;
                this._removeLayers(), T.removeSource(this.sourceId);
              }, Y.exports = function(A, p) {
                var u = p[0].trace, t = new n(A, u.uid), r = t.sourceId, i = b(p), a = t.below = A.belowLookup["trace-" + u.uid];
                return A.map.addSource(r, {
                  type: "geojson",
                  data: i.geojson
                }), t._addLayers(i, a), t;
              };
            }
          ),
          /***/
          17347: (
            /***/
            function(Y, K, e) {
              var b = e(87163), P = e(3208).rb, n = e(9829), s = e(95833), T = e(93049).extendFlat;
              Y.exports = T({
                lon: s.lon,
                lat: s.lat,
                z: {
                  valType: "data_array",
                  editType: "calc"
                },
                radius: {
                  valType: "number",
                  editType: "plot",
                  arrayOk: !0,
                  min: 1,
                  dflt: 30
                },
                below: {
                  valType: "string",
                  editType: "plot"
                },
                text: s.text,
                hovertext: s.hovertext,
                hoverinfo: T({}, n.hoverinfo, {
                  flags: ["lon", "lat", "z", "text", "name"]
                }),
                hovertemplate: P(),
                showlegend: T({}, n.showlegend, {
                  dflt: !1
                })
              }, b("", {
                cLetter: "z",
                editTypeOverride: "calc"
              }));
            }
          ),
          /***/
          60675: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(34809).isArrayOrTypedArray, n = e(63821).BADNUM, s = e(28379), T = e(34809)._;
              Y.exports = function(p, u) {
                for (var t = u._length, r = new Array(t), i = u.z, a = P(i) && i.length, l = 0; l < t; l++) {
                  var o = r[l] = {}, y = u.lon[l], g = u.lat[l];
                  if (o.lonlat = b(y) && b(g) ? [+y, +g] : [n, n], a) {
                    var x = i[l];
                    o.z = b(x) ? x : n;
                  }
                }
                return s(p, u, {
                  vals: a ? i : [0, 1],
                  containerStr: "",
                  cLetter: "z"
                }), t && (r[0].t = {
                  labels: {
                    lat: T(p, "lat:") + " ",
                    lon: T(p, "lon:") + " "
                  }
                }), r;
              };
            }
          ),
          /***/
          78391: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(34809), n = e(78766), s = e(88856), T = e(63821).BADNUM, A = e(39532).makeBlank;
              Y.exports = function(u) {
                var t = u[0].trace, r = t.visible === !0 && t._length !== 0, i = {
                  layout: {
                    visibility: "none"
                  },
                  paint: {}
                }, a = t._opts = {
                  heatmap: i,
                  geojson: A()
                };
                if (!r) return a;
                var l = [], o, y = t.z, g = t.radius, x = P.isArrayOrTypedArray(y) && y.length, c = P.isArrayOrTypedArray(g);
                for (o = 0; o < u.length; o++) {
                  var v = u[o], f = v.lonlat;
                  if (f[0] !== T) {
                    var _ = {};
                    if (x) {
                      var S = v.z;
                      _.z = S !== T ? S : 0;
                    }
                    c && (_.r = b(g[o]) && g[o] > 0 ? +g[o] : 0), l.push({
                      type: "Feature",
                      geometry: {
                        type: "Point",
                        coordinates: f
                      },
                      properties: _
                    });
                  }
                }
                var M = s.extractOpts(t), C = M.reversescale ? s.flipScale(M.colorscale) : M.colorscale, m = C[0][1], L = n.opacity(m) < 1 ? m : n.addOpacity(m, 0), d = ["interpolate", ["linear"], ["heatmap-density"], 0, L];
                for (o = 1; o < C.length; o++)
                  d.push(C[o][0], C[o][1]);
                var h = ["interpolate", ["linear"], ["get", "z"], M.min, 0, M.max, 1];
                return P.extendFlat(a.heatmap.paint, {
                  "heatmap-weight": x ? h : 1 / (M.max - M.min),
                  "heatmap-color": d,
                  "heatmap-radius": c ? {
                    type: "identity",
                    property: "r"
                  } : t.radius,
                  "heatmap-opacity": t.opacity
                }), a.geojson = {
                  type: "FeatureCollection",
                  features: l
                }, a.heatmap.layout.visibility = "visible", a;
              };
            }
          ),
          /***/
          1892: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(39356), n = e(17347);
              Y.exports = function(T, A, p, u) {
                function t(l, o) {
                  return b.coerce(T, A, n, l, o);
                }
                var r = t("lon") || [], i = t("lat") || [], a = Math.min(r.length, i.length);
                if (!a) {
                  A.visible = !1;
                  return;
                }
                A._length = a, t("z"), t("radius"), t("below"), t("text"), t("hovertext"), t("hovertemplate"), P(T, A, u, t, {
                  prefix: "",
                  cLetter: "z"
                });
              };
            }
          ),
          /***/
          8919: (
            /***/
            function(Y) {
              Y.exports = function(e, b) {
                return e.lon = b.lon, e.lat = b.lat, e.z = b.z, e;
              };
            }
          ),
          /***/
          54478: (
            /***/
            function(Y, K, e) {
              var b = e(29714), P = e(18016).hoverPoints, n = e(18016).getExtraText;
              Y.exports = function(T, A, p) {
                var u = P(T, A, p);
                if (u) {
                  var t = u[0], r = t.cd, i = r[0].trace, a = r[t.index];
                  if (delete t.color, "z" in a) {
                    var l = t.subplot.mockAxis;
                    t.z = a.z, t.zLabel = b.tickText(l, l.c2l(a.z), "hover").text;
                  }
                  return t.extraText = n(i, a, r[0].t.labels), [t];
                }
              };
            }
          ),
          /***/
          81264: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(17347),
                supplyDefaults: e(1892),
                colorbar: e(12431),
                formatLabels: e(69009),
                calc: e(60675),
                plot: e(5165),
                hoverPoints: e(54478),
                eventData: e(8919),
                getBelow: function(b, P) {
                  for (var n = P.getMapLayers(), s = 0; s < n.length; s++) {
                    var T = n[s], A = T.id;
                    if (T.type === "symbol" && typeof A == "string" && A.indexOf("plotly-") === -1)
                      return A;
                  }
                },
                moduleType: "trace",
                name: "densitymapbox",
                basePlotModule: e(68192),
                categories: ["mapbox", "gl", "showLegend"],
                meta: {
                  hr_name: "density_mapbox"
                }
              };
            }
          ),
          /***/
          5165: (
            /***/
            function(Y, K, e) {
              var b = e(78391), P = e(44245).traceLayerPrefix;
              function n(T, A) {
                this.type = "densitymapbox", this.subplot = T, this.uid = A, this.sourceId = "source-" + A, this.layerList = [["heatmap", P + A + "-heatmap"]], this.below = null;
              }
              var s = n.prototype;
              s.update = function(T) {
                var A = this.subplot, p = this.layerList, u = b(T), t = A.belowLookup["trace-" + this.uid];
                A.map.getSource(this.sourceId).setData(u.geojson), t !== this.below && (this._removeLayers(), this._addLayers(u, t), this.below = t);
                for (var r = 0; r < p.length; r++) {
                  var i = p[r], a = i[0], l = i[1], o = u[a];
                  A.setOptions(l, "setLayoutProperty", o.layout), o.layout.visibility === "visible" && A.setOptions(l, "setPaintProperty", o.paint);
                }
              }, s._addLayers = function(T, A) {
                for (var p = this.subplot, u = this.layerList, t = this.sourceId, r = 0; r < u.length; r++) {
                  var i = u[r], a = i[0], l = T[a];
                  p.addLayer({
                    type: a,
                    id: i[1],
                    source: t,
                    layout: l.layout,
                    paint: l.paint
                  }, A);
                }
              }, s._removeLayers = function() {
                for (var T = this.subplot.map, A = this.layerList, p = A.length - 1; p >= 0; p--)
                  T.removeLayer(A[p][1]);
              }, s.dispose = function() {
                var T = this.subplot.map;
                this._removeLayers(), T.removeSource(this.sourceId);
              }, Y.exports = function(A, p) {
                var u = p[0].trace, t = new n(A, u.uid), r = t.sourceId, i = b(p), a = t.below = A.belowLookup["trace-" + u.uid];
                return A.map.addSource(r, {
                  type: "geojson",
                  data: i.geojson
                }), t._addLayers(i, a), t;
              };
            }
          ),
          /***/
          43179: (
            /***/
            function(Y, K, e) {
              var b = e(34809);
              Y.exports = function(n, s) {
                for (var T = 0; T < n.length; T++) n[T].i = T;
                b.mergeArray(s.text, n, "tx"), b.mergeArray(s.hovertext, n, "htx");
                var A = s.marker;
                if (A) {
                  b.mergeArray(A.opacity, n, "mo"), b.mergeArray(A.color, n, "mc");
                  var p = A.line;
                  p && (b.mergeArray(p.color, n, "mlc"), b.mergeArrayCastPositive(p.width, n, "mlw"));
                }
              };
            }
          ),
          /***/
          62824: (
            /***/
            function(Y, K, e) {
              var b = e(81481), P = e(36640).line, n = e(9829), s = e(80712).axisHoverFormat, T = e(3208).rb, A = e(3208).ay, p = e(87948), u = e(93049).extendFlat, t = e(78766);
              Y.exports = {
                x: b.x,
                x0: b.x0,
                dx: b.dx,
                y: b.y,
                y0: b.y0,
                dy: b.dy,
                xperiod: b.xperiod,
                yperiod: b.yperiod,
                xperiod0: b.xperiod0,
                yperiod0: b.yperiod0,
                xperiodalignment: b.xperiodalignment,
                yperiodalignment: b.yperiodalignment,
                xhoverformat: s("x"),
                yhoverformat: s("y"),
                hovertext: b.hovertext,
                hovertemplate: T({}, {
                  keys: p.eventDataKeys
                }),
                hoverinfo: u({}, n.hoverinfo, {
                  flags: ["name", "x", "y", "text", "percent initial", "percent previous", "percent total"]
                }),
                textinfo: {
                  valType: "flaglist",
                  flags: ["label", "text", "percent initial", "percent previous", "percent total", "value"],
                  extras: ["none"],
                  editType: "plot",
                  arrayOk: !1
                },
                // TODO: incorporate `label` and `value` in the eventData
                texttemplate: A({
                  editType: "plot"
                }, {
                  keys: p.eventDataKeys.concat(["label", "value"])
                }),
                text: b.text,
                textposition: b.textposition,
                insidetextanchor: u({}, b.insidetextanchor, {
                  dflt: "middle"
                }),
                textangle: u({}, b.textangle, {
                  dflt: 0
                }),
                textfont: b.textfont,
                insidetextfont: b.insidetextfont,
                outsidetextfont: b.outsidetextfont,
                constraintext: b.constraintext,
                cliponaxis: b.cliponaxis,
                orientation: u({}, b.orientation, {}),
                offset: u({}, b.offset, {
                  arrayOk: !1
                }),
                width: u({}, b.width, {
                  arrayOk: !1
                }),
                marker: r(),
                connector: {
                  fillcolor: {
                    valType: "color",
                    editType: "style"
                  },
                  line: {
                    color: u({}, P.color, {
                      dflt: t.defaultLine
                    }),
                    width: u({}, P.width, {
                      dflt: 0,
                      editType: "plot"
                    }),
                    dash: P.dash,
                    editType: "style"
                  },
                  visible: {
                    valType: "boolean",
                    dflt: !0,
                    editType: "plot"
                  },
                  editType: "plot"
                },
                offsetgroup: b.offsetgroup,
                alignmentgroup: b.alignmentgroup,
                zorder: b.zorder
              };
              function r() {
                var i = u({}, b.marker);
                return delete i.pattern, delete i.cornerradius, i;
              }
            }
          ),
          /***/
          28152: (
            /***/
            function(Y, K, e) {
              var b = e(29714), P = e(40528), n = e(43179), s = e(48861), T = e(63821).BADNUM;
              Y.exports = function(u, t) {
                var r = b.getFromId(u, t.xaxis || "x"), i = b.getFromId(u, t.yaxis || "y"), a, l, o, y, g, x, c, v;
                t.orientation === "h" ? (a = r.makeCalcdata(t, "x"), o = i.makeCalcdata(t, "y"), y = P(t, i, "y", o), g = !!t.yperiodalignment, x = "y") : (a = i.makeCalcdata(t, "y"), o = r.makeCalcdata(t, "x"), y = P(t, r, "x", o), g = !!t.xperiodalignment, x = "x"), l = y.vals;
                var f = Math.min(l.length, a.length), _ = new Array(f);
                for (t._base = [], c = 0; c < f; c++) {
                  a[c] < 0 && (a[c] = T);
                  var S = !1;
                  a[c] !== T && c + 1 < f && a[c + 1] !== T && (S = !0), v = _[c] = {
                    p: l[c],
                    s: a[c],
                    cNext: S
                  }, t._base[c] = -0.5 * v.s, g && (_[c].orig_p = o[c], _[c][x + "End"] = y.ends[c], _[c][x + "Start"] = y.starts[c]), t.ids && (v.id = String(t.ids[c])), c === 0 && (_[0].vTotal = 0), _[0].vTotal += A(v.s), v.begR = A(v.s) / A(_[0].s);
                }
                var M;
                for (c = 0; c < f; c++)
                  v = _[c], v.s !== T && (v.sumR = v.s / _[0].vTotal, v.difR = M !== void 0 ? v.s / M : 1, M = v.s);
                return n(_, t), s(_, t), _;
              };
              function A(p) {
                return p === T ? 0 : p;
              }
            }
          ),
          /***/
          87948: (
            /***/
            function(Y) {
              Y.exports = {
                eventDataKeys: ["percentInitial", "percentPrevious", "percentTotal"]
              };
            }
          ),
          /***/
          82539: (
            /***/
            function(Y, K, e) {
              var b = e(24782).setGroupPositions;
              Y.exports = function(n, s) {
                var T = n._fullLayout, A = n._fullData, p = n.calcdata, u = s.xaxis, t = s.yaxis, r = [], i = [], a = [], l, o;
                for (o = 0; o < A.length; o++) {
                  var y = A[o], g = y.orientation === "h";
                  y.visible === !0 && y.xaxis === u._id && y.yaxis === t._id && y.type === "funnel" && (l = p[o], g ? a.push(l) : i.push(l), r.push(l));
                }
                var x = {
                  mode: T.funnelmode,
                  norm: T.funnelnorm,
                  gap: T.funnelgap,
                  groupgap: T.funnelgroupgap
                };
                for (b(n, u, t, i, x), b(n, t, u, a, x), o = 0; o < r.length; o++) {
                  l = r[o];
                  for (var c = 0; c < l.length; c++)
                    c + 1 < l.length && (l[c].nextP0 = l[c + 1].p0, l[c].nextS0 = l[c + 1].s0, l[c].nextP1 = l[c + 1].p1, l[c].nextS1 = l[c + 1].s1);
                }
              };
            }
          ),
          /***/
          30495: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(36301), n = e(17550).handleText, s = e(99867), T = e(99669), A = e(62824), p = e(78766);
              function u(i, a, l, o) {
                function y(S, M) {
                  return b.coerce(i, a, A, S, M);
                }
                var g = s(i, a, o, y);
                if (!g) {
                  a.visible = !1;
                  return;
                }
                T(i, a, o, y), y("xhoverformat"), y("yhoverformat"), y("orientation", a.y && !a.x ? "v" : "h"), y("offset"), y("width");
                var x = y("text");
                y("hovertext"), y("hovertemplate");
                var c = y("textposition");
                n(i, a, o, y, c, {
                  moduleHasSelected: !1,
                  moduleHasUnselected: !1,
                  moduleHasConstrain: !0,
                  moduleHasCliponaxis: !0,
                  moduleHasTextangle: !0,
                  moduleHasInsideanchor: !0
                }), a.textposition !== "none" && !a.texttemplate && y("textinfo", b.isArrayOrTypedArray(x) ? "text+value" : "value");
                var v = y("marker.color", l);
                y("marker.line.color", p.defaultLine), y("marker.line.width");
                var f = y("connector.visible");
                if (f) {
                  y("connector.fillcolor", t(v));
                  var _ = y("connector.line.width");
                  _ && (y("connector.line.color"), y("connector.line.dash"));
                }
                y("zorder");
              }
              function t(i) {
                var a = b.isArrayOrTypedArray(i) ? "#000" : i;
                return p.addOpacity(a, 0.5 * p.opacity(a));
              }
              function r(i, a) {
                var l, o;
                function y(x) {
                  return b.coerce(o._input, o, A, x);
                }
                if (a.funnelmode === "group")
                  for (var g = 0; g < i.length; g++)
                    o = i[g], l = o._input, P(l, o, a, y);
              }
              Y.exports = {
                supplyDefaults: u,
                crossTraceDefaults: r
              };
            }
          ),
          /***/
          29412: (
            /***/
            function(Y) {
              Y.exports = function(e, b) {
                return e.x = "xVal" in b ? b.xVal : b.x, e.y = "yVal" in b ? b.yVal : b.y, "percentInitial" in b && (e.percentInitial = b.percentInitial), "percentPrevious" in b && (e.percentPrevious = b.percentPrevious), "percentTotal" in b && (e.percentTotal = b.percentTotal), b.xa && (e.xaxis = b.xa), b.ya && (e.yaxis = b.ya), e;
              };
            }
          ),
          /***/
          27759: (
            /***/
            function(Y, K, e) {
              var b = e(78766).opacity, P = e(91664).hoverOnBars, n = e(34809).formatPercent;
              Y.exports = function(A, p, u, t, r) {
                var i = P(A, p, u, t, r);
                if (i) {
                  var a = i.cd, l = a[0].trace, o = l.orientation === "h", y = i.index, g = a[y], x = o ? "x" : "y";
                  i[x + "LabelVal"] = g.s, i.percentInitial = g.begR, i.percentInitialLabel = n(g.begR, 1), i.percentPrevious = g.difR, i.percentPreviousLabel = n(g.difR, 1), i.percentTotal = g.sumR, i.percentTotalLabel = n(g.sumR, 1);
                  var c = g.hi || l.hoverinfo, v = [];
                  if (c && c !== "none" && c !== "skip") {
                    var f = c === "all", _ = c.split("+"), S = function(M) {
                      return f || _.indexOf(M) !== -1;
                    };
                    S("percent initial") && v.push(i.percentInitialLabel + " of initial"), S("percent previous") && v.push(i.percentPreviousLabel + " of previous"), S("percent total") && v.push(i.percentTotalLabel + " of total");
                  }
                  return i.extraText = v.join("<br>"), i.color = s(l, g), [i];
                }
              };
              function s(T, A) {
                var p = T.marker, u = A.mc || p.color, t = A.mlc || p.line.color, r = A.mlw || p.line.width;
                if (b(u)) return u;
                if (b(t) && r) return t;
              }
            }
          ),
          /***/
          52213: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(62824),
                layoutAttributes: e(93795),
                supplyDefaults: e(30495).supplyDefaults,
                crossTraceDefaults: e(30495).crossTraceDefaults,
                supplyLayoutDefaults: e(34980),
                calc: e(28152),
                crossTraceCalc: e(82539),
                plot: e(83482),
                style: e(7240).style,
                hoverPoints: e(27759),
                eventData: e(29412),
                selectPoints: e(88384),
                moduleType: "trace",
                name: "funnel",
                basePlotModule: e(37703),
                categories: ["bar-like", "cartesian", "svg", "oriented", "showLegend", "zoomScale"],
                meta: {}
              };
            }
          ),
          /***/
          93795: (
            /***/
            function(Y) {
              Y.exports = {
                funnelmode: {
                  valType: "enumerated",
                  values: ["stack", "group", "overlay"],
                  dflt: "stack",
                  editType: "calc"
                },
                funnelgap: {
                  valType: "number",
                  min: 0,
                  max: 1,
                  editType: "calc"
                },
                funnelgroupgap: {
                  valType: "number",
                  min: 0,
                  max: 1,
                  dflt: 0,
                  editType: "calc"
                }
              };
            }
          ),
          /***/
          34980: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(93795);
              Y.exports = function(n, s, T) {
                var A = !1;
                function p(r, i) {
                  return b.coerce(n, s, P, r, i);
                }
                for (var u = 0; u < T.length; u++) {
                  var t = T[u];
                  if (t.visible && t.type === "funnel") {
                    A = !0;
                    break;
                  }
                }
                A && (p("funnelmode"), p("funnelgap", 0.2), p("funnelgroupgap"));
              };
            }
          ),
          /***/
          83482: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(34809), n = e(62203), s = e(63821).BADNUM, T = e(32995), A = e(84102).clearMinTextSize;
              Y.exports = function(i, a, l, o) {
                var y = i._fullLayout;
                A("funnel", y), p(i, a, l, o), u(i, a, l, o), T.plot(i, a, l, o, {
                  mode: y.funnelmode,
                  norm: y.funnelmode,
                  gap: y.funnelgap,
                  groupgap: y.funnelgroupgap
                });
              };
              function p(r, i, a, l) {
                var o = i.xaxis, y = i.yaxis;
                P.makeTraceGroups(l, a, "trace bars").each(function(g) {
                  var x = b.select(this), c = g[0].trace, v = P.ensureSingle(x, "g", "regions");
                  if (!c.connector || !c.connector.visible) {
                    v.remove();
                    return;
                  }
                  var f = c.orientation === "h", _ = v.selectAll("g.region").data(P.identity);
                  _.enter().append("g").classed("region", !0), _.exit().remove();
                  var S = _.size();
                  _.each(function(M, C) {
                    if (!(C !== S - 1 && !M.cNext)) {
                      var m = t(M, o, y, f), L = m[0], d = m[1], h = "";
                      L[0] !== s && d[0] !== s && L[1] !== s && d[1] !== s && L[2] !== s && d[2] !== s && L[3] !== s && d[3] !== s && (f ? h += "M" + L[0] + "," + d[1] + "L" + L[2] + "," + d[2] + "H" + L[3] + "L" + L[1] + "," + d[1] + "Z" : h += "M" + L[1] + "," + d[1] + "L" + L[2] + "," + d[3] + "V" + d[2] + "L" + L[1] + "," + d[0] + "Z"), h === "" && (h = "M0,0Z"), P.ensureSingle(b.select(this), "path").attr("d", h).call(n.setClipUrl, i.layerClipId, r);
                    }
                  });
                });
              }
              function u(r, i, a, l) {
                var o = i.xaxis, y = i.yaxis;
                P.makeTraceGroups(l, a, "trace bars").each(function(g) {
                  var x = b.select(this), c = g[0].trace, v = P.ensureSingle(x, "g", "lines");
                  if (!c.connector || !c.connector.visible || !c.connector.line.width) {
                    v.remove();
                    return;
                  }
                  var f = c.orientation === "h", _ = v.selectAll("g.line").data(P.identity);
                  _.enter().append("g").classed("line", !0), _.exit().remove();
                  var S = _.size();
                  _.each(function(M, C) {
                    if (!(C !== S - 1 && !M.cNext)) {
                      var m = t(M, o, y, f), L = m[0], d = m[1], h = "";
                      L[3] !== void 0 && d[3] !== void 0 && (f ? (h += "M" + L[0] + "," + d[1] + "L" + L[2] + "," + d[2], h += "M" + L[1] + "," + d[1] + "L" + L[3] + "," + d[2]) : (h += "M" + L[1] + "," + d[1] + "L" + L[2] + "," + d[3], h += "M" + L[1] + "," + d[0] + "L" + L[2] + "," + d[2])), h === "" && (h = "M0,0Z"), P.ensureSingle(b.select(this), "path").attr("d", h).call(n.setClipUrl, i.layerClipId, r);
                    }
                  });
                });
              }
              function t(r, i, a, l) {
                var o = [], y = [], g = l ? i : a, x = l ? a : i;
                return o[0] = g.c2p(r.s0, !0), y[0] = x.c2p(r.p0, !0), o[1] = g.c2p(r.s1, !0), y[1] = x.c2p(r.p1, !0), o[2] = g.c2p(r.nextS0, !0), y[2] = x.c2p(r.nextP0, !0), o[3] = g.c2p(r.nextS1, !0), y[3] = x.c2p(r.nextP1, !0), l ? [o, y] : [y, o];
              }
            }
          ),
          /***/
          7240: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(62203), n = e(78766), s = e(20438).DESELECTDIM, T = e(6851), A = e(84102).resizeText, p = T.styleTextPoints;
              function u(t, r, i) {
                var a = i || b.select(t).selectAll('g[class^="funnellayer"]').selectAll("g.trace");
                A(t, a, "funnel"), a.style("opacity", function(l) {
                  return l[0].trace.opacity;
                }), a.each(function(l) {
                  var o = b.select(this), y = l[0].trace;
                  o.selectAll(".point > path").each(function(g) {
                    if (!g.isBlank) {
                      var x = y.marker;
                      b.select(this).call(n.fill, g.mc || x.color).call(n.stroke, g.mlc || x.line.color).call(P.dashLine, x.line.dash, g.mlw || x.line.width).style("opacity", y.selectedpoints && !g.selected ? s : 1);
                    }
                  }), p(o, y, t), o.selectAll(".regions").each(function() {
                    b.select(this).selectAll("path").style("stroke-width", 0).call(n.fill, y.connector.fillcolor);
                  }), o.selectAll(".lines").each(function() {
                    var g = y.connector.line;
                    P.lineGroupStyle(b.select(this).selectAll("path"), g.width, g.color, g.dash);
                  });
                });
              }
              Y.exports = {
                style: u
              };
            }
          ),
          /***/
          63447: (
            /***/
            function(Y, K, e) {
              var b = e(55412), P = e(9829), n = e(13792).u, s = e(3208).rb, T = e(3208).ay, A = e(93049).extendFlat;
              Y.exports = {
                labels: b.labels,
                // equivalent of x0 and dx, if label is missing
                label0: b.label0,
                dlabel: b.dlabel,
                values: b.values,
                marker: {
                  colors: b.marker.colors,
                  line: {
                    color: A({}, b.marker.line.color, {
                      dflt: null
                    }),
                    width: A({}, b.marker.line.width, {
                      dflt: 1
                    }),
                    editType: "calc"
                  },
                  pattern: b.marker.pattern,
                  editType: "calc"
                },
                text: b.text,
                hovertext: b.hovertext,
                scalegroup: A({}, b.scalegroup, {}),
                textinfo: A({}, b.textinfo, {
                  flags: ["label", "text", "value", "percent"]
                }),
                texttemplate: T({
                  editType: "plot"
                }, {
                  keys: ["label", "color", "value", "text", "percent"]
                }),
                hoverinfo: A({}, P.hoverinfo, {
                  flags: ["label", "text", "value", "percent", "name"]
                }),
                hovertemplate: s({}, {
                  keys: ["label", "color", "value", "text", "percent"]
                }),
                textposition: A({}, b.textposition, {
                  values: ["inside", "none"],
                  dflt: "inside"
                }),
                textfont: b.textfont,
                insidetextfont: b.insidetextfont,
                title: {
                  text: b.title.text,
                  font: b.title.font,
                  position: A({}, b.title.position, {
                    values: ["top left", "top center", "top right"],
                    dflt: "top center"
                  }),
                  editType: "plot"
                },
                domain: n({
                  name: "funnelarea",
                  trace: !0,
                  editType: "calc"
                }),
                aspectratio: {
                  valType: "number",
                  min: 0,
                  dflt: 1,
                  editType: "plot"
                },
                baseratio: {
                  valType: "number",
                  min: 0,
                  max: 1,
                  dflt: 0.333,
                  editType: "plot"
                }
              };
            }
          ),
          /***/
          86817: (
            /***/
            function(Y, K, e) {
              var b = e(44122);
              K.name = "funnelarea", K.plot = function(P, n, s, T) {
                b.plotBasePlot(K.name, P, n, s, T);
              }, K.clean = function(P, n, s, T) {
                b.cleanBasePlot(K.name, P, n, s, T);
              };
            }
          ),
          /***/
          2807: (
            /***/
            function(Y, K, e) {
              var b = e(44148);
              function P(s, T) {
                return b.calc(s, T);
              }
              function n(s) {
                b.crossTraceCalc(s, {
                  type: "funnelarea"
                });
              }
              Y.exports = {
                calc: P,
                crossTraceCalc: n
              };
            }
          ),
          /***/
          79824: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(63447), n = e(13792).N, s = e(17550).handleText, T = e(46979).handleLabelsAndValues, A = e(46979).handleMarkerDefaults;
              Y.exports = function(u, t, r, i) {
                function a(S, M) {
                  return b.coerce(u, t, P, S, M);
                }
                var l = a("labels"), o = a("values"), y = T(l, o), g = y.len;
                if (t._hasLabels = y.hasLabels, t._hasValues = y.hasValues, !t._hasLabels && t._hasValues && (a("label0"), a("dlabel")), !g) {
                  t.visible = !1;
                  return;
                }
                t._length = g, A(u, t, i, a), a("scalegroup");
                var x = a("text"), c = a("texttemplate"), v;
                if (c || (v = a("textinfo", Array.isArray(x) ? "text+percent" : "percent")), a("hovertext"), a("hovertemplate"), c || v && v !== "none") {
                  var f = a("textposition");
                  s(u, t, i, a, f, {
                    moduleHasSelected: !1,
                    moduleHasUnselected: !1,
                    moduleHasConstrain: !1,
                    moduleHasCliponaxis: !1,
                    moduleHasTextangle: !1,
                    moduleHasInsideanchor: !1
                  });
                } else v === "none" && a("textposition", "none");
                n(t, i, a);
                var _ = a("title.text");
                _ && (a("title.position"), b.coerceFont(a, "title.font", i.font)), a("aspectratio"), a("baseratio");
              };
            }
          ),
          /***/
          91132: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                moduleType: "trace",
                name: "funnelarea",
                basePlotModule: e(86817),
                categories: ["pie-like", "funnelarea", "showLegend"],
                attributes: e(63447),
                layoutAttributes: e(10270),
                supplyDefaults: e(79824),
                supplyLayoutDefaults: e(69161),
                calc: e(2807).calc,
                crossTraceCalc: e(2807).crossTraceCalc,
                plot: e(96673),
                style: e(13757),
                styleOne: e(32891),
                meta: {}
              };
            }
          ),
          /***/
          10270: (
            /***/
            function(Y, K, e) {
              var b = e(4031).hiddenlabels;
              Y.exports = {
                hiddenlabels: b,
                funnelareacolorway: {
                  valType: "colorlist",
                  editType: "calc"
                },
                extendfunnelareacolors: {
                  valType: "boolean",
                  dflt: !0,
                  editType: "calc"
                }
              };
            }
          ),
          /***/
          69161: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(10270);
              Y.exports = function(s, T) {
                function A(p, u) {
                  return b.coerce(s, T, P, p, u);
                }
                A("hiddenlabels"), A("funnelareacolorway", T.colorway), A("extendfunnelareacolors");
              };
            }
          ),
          /***/
          96673: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(62203), n = e(34809), s = n.strScale, T = n.strTranslate, A = e(30635), p = e(32995), u = p.toMoveInsideBar, t = e(84102), r = t.recordMinTextSize, i = t.clearMinTextSize, a = e(37252), l = e(35734), o = l.attachFxHandlers, y = l.determineInsideTextFont, g = l.layoutAreas, x = l.prerenderTitles, c = l.positionTitleOutside, v = l.formatSliceLabel;
              Y.exports = function(C, m) {
                var L = C._context.staticPlot, d = C._fullLayout;
                i("funnelarea", d), x(m, C), g(m, d._size), n.makeTraceGroups(d._funnelarealayer, m, "trace").each(function(h) {
                  var E = b.select(this), w = h[0], z = w.trace;
                  S(h), E.each(function() {
                    var O = b.select(this).selectAll("g.slice").data(h);
                    O.enter().append("g").classed("slice", !0), O.exit().remove(), O.each(function(V, U) {
                      if (V.hidden) {
                        b.select(this).selectAll("path,g").remove();
                        return;
                      }
                      V.pointNumber = V.i, V.curveNumber = z.index;
                      var H = w.cx, F = w.cy, G = b.select(this), q = G.selectAll("path.surface").data([V]);
                      q.enter().append("path").classed("surface", !0).style({
                        "pointer-events": L ? "none" : "all"
                      }), G.call(o, C, h);
                      var rt = "M" + (H + V.TR[0]) + "," + (F + V.TR[1]) + f(V.TR, V.BR) + f(V.BR, V.BL) + f(V.BL, V.TL) + "Z";
                      q.attr("d", rt), v(C, V, w);
                      var st = a.castOption(z.textposition, V.pts), vt = G.selectAll("g.slicetext").data(V.text && st !== "none" ? [0] : []);
                      vt.enter().append("g").classed("slicetext", !0), vt.exit().remove(), vt.each(function() {
                        var ht = n.ensureSingle(b.select(this), "text", "", function(ct) {
                          ct.attr("data-notex", 1);
                        }), et = n.ensureUniformFontSize(C, y(z, V, d.font));
                        ht.text(V.text).attr({
                          class: "slicetext",
                          transform: "",
                          "text-anchor": "middle"
                        }).call(P.font, et).call(A.convertToTspans, C);
                        var Q = P.bBox(ht.node()), j, at, ut, nt = Math.min(V.BL[1], V.BR[1]) + F, X = Math.max(V.TL[1], V.TR[1]) + F;
                        at = Math.max(V.TL[0], V.BL[0]) + H, ut = Math.min(V.TR[0], V.BR[0]) + H, j = u(at, ut, nt, X, Q, {
                          isHorizontal: !0,
                          constrained: !0,
                          angle: 0,
                          anchor: "middle"
                        }), j.fontSize = et.size, r(z.type, j, d), h[U].transform = j, n.setTransormAndDisplay(ht, j);
                      });
                    });
                    var B = b.select(this).selectAll("g.titletext").data(z.title.text ? [0] : []);
                    B.enter().append("g").classed("titletext", !0), B.exit().remove(), B.each(function() {
                      var V = n.ensureSingle(b.select(this), "text", "", function(F) {
                        F.attr("data-notex", 1);
                      }), U = z.title.text;
                      z._meta && (U = n.templateString(U, z._meta)), V.text(U).attr({
                        class: "titletext",
                        transform: "",
                        "text-anchor": "middle"
                      }).call(P.font, z.title.font).call(A.convertToTspans, C);
                      var H = c(w, d._size);
                      V.attr("transform", T(H.x, H.y) + s(Math.min(1, H.scale)) + T(H.tx, H.ty));
                    });
                  });
                });
              };
              function f(M, C) {
                var m = C[0] - M[0], L = C[1] - M[1];
                return "l" + m + "," + L;
              }
              function _(M, C) {
                return [0.5 * (M[0] + C[0]), 0.5 * (M[1] + C[1])];
              }
              function S(M) {
                if (!M.length) return;
                var C = M[0], m = C.trace, L = m.aspectratio, d = m.baseratio;
                d > 0.999 && (d = 0.999);
                var h = Math.pow(d, 2), E = C.vTotal, w = E * h / (1 - h), z = E, O = w / E;
                function B() {
                  var lt = Math.sqrt(O);
                  return {
                    x: lt,
                    y: -lt
                  };
                }
                function V() {
                  var lt = B();
                  return [lt.x, lt.y];
                }
                var U, H = [];
                H.push(V());
                var F, G;
                for (F = M.length - 1; F > -1; F--)
                  if (G = M[F], !G.hidden) {
                    var q = G.v / z;
                    O += q, H.push(V());
                  }
                var rt = 1 / 0, st = -1 / 0;
                for (F = 0; F < H.length; F++)
                  U = H[F], rt = Math.min(rt, U[1]), st = Math.max(st, U[1]);
                for (F = 0; F < H.length; F++)
                  H[F][1] -= (st + rt) / 2;
                var vt = H[H.length - 1][0], ht = C.r, et = (st - rt) / 2, Q = ht / vt, j = ht / et * L;
                for (C.r = j * et, F = 0; F < H.length; F++)
                  H[F][0] *= Q, H[F][1] *= j;
                U = H[0];
                var at = [-U[0], U[1]], ut = [U[0], U[1]], nt = 0;
                for (F = M.length - 1; F > -1; F--)
                  if (G = M[F], !G.hidden) {
                    nt += 1;
                    var X = H[nt][0], ct = H[nt][1];
                    G.TL = [-X, ct], G.TR = [X, ct], G.BL = at, G.BR = ut, G.pxmid = _(G.TR, G.BR), at = G.TL, ut = G.TR;
                  }
              }
            }
          ),
          /***/
          13757: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(32891), n = e(84102).resizeText;
              Y.exports = function(T) {
                var A = T._fullLayout._funnelarealayer.selectAll(".trace");
                n(T, A, "funnelarea"), A.each(function(p) {
                  var u = p[0], t = u.trace, r = b.select(this);
                  r.style({
                    opacity: t.opacity
                  }), r.selectAll("path.surface").each(function(i) {
                    b.select(this).call(P, i, t, T);
                  });
                });
              };
            }
          ),
          /***/
          81658: (
            /***/
            function(Y, K, e) {
              var b = e(36640), P = e(9829), n = e(80337), s = e(80712).axisHoverFormat, T = e(3208).rb, A = e(3208).ay, p = e(87163), u = e(93049).extendFlat;
              Y.exports = u({
                z: {
                  valType: "data_array",
                  editType: "calc"
                },
                x: u({}, b.x, {
                  impliedEdits: {
                    xtype: "array"
                  }
                }),
                x0: u({}, b.x0, {
                  impliedEdits: {
                    xtype: "scaled"
                  }
                }),
                dx: u({}, b.dx, {
                  impliedEdits: {
                    xtype: "scaled"
                  }
                }),
                y: u({}, b.y, {
                  impliedEdits: {
                    ytype: "array"
                  }
                }),
                y0: u({}, b.y0, {
                  impliedEdits: {
                    ytype: "scaled"
                  }
                }),
                dy: u({}, b.dy, {
                  impliedEdits: {
                    ytype: "scaled"
                  }
                }),
                xperiod: u({}, b.xperiod, {
                  impliedEdits: {
                    xtype: "scaled"
                  }
                }),
                yperiod: u({}, b.yperiod, {
                  impliedEdits: {
                    ytype: "scaled"
                  }
                }),
                xperiod0: u({}, b.xperiod0, {
                  impliedEdits: {
                    xtype: "scaled"
                  }
                }),
                yperiod0: u({}, b.yperiod0, {
                  impliedEdits: {
                    ytype: "scaled"
                  }
                }),
                xperiodalignment: u({}, b.xperiodalignment, {
                  impliedEdits: {
                    xtype: "scaled"
                  }
                }),
                yperiodalignment: u({}, b.yperiodalignment, {
                  impliedEdits: {
                    ytype: "scaled"
                  }
                }),
                text: {
                  valType: "data_array",
                  editType: "calc"
                },
                hovertext: {
                  valType: "data_array",
                  editType: "calc"
                },
                transpose: {
                  valType: "boolean",
                  dflt: !1,
                  editType: "calc"
                },
                xtype: {
                  valType: "enumerated",
                  values: ["array", "scaled"],
                  editType: "calc+clearAxisTypes"
                },
                ytype: {
                  valType: "enumerated",
                  values: ["array", "scaled"],
                  editType: "calc+clearAxisTypes"
                },
                zsmooth: {
                  valType: "enumerated",
                  values: ["fast", "best", !1],
                  dflt: !1,
                  editType: "calc"
                },
                hoverongaps: {
                  valType: "boolean",
                  dflt: !0,
                  editType: "none"
                },
                connectgaps: {
                  valType: "boolean",
                  editType: "calc"
                },
                xgap: {
                  valType: "number",
                  dflt: 0,
                  min: 0,
                  editType: "plot"
                },
                ygap: {
                  valType: "number",
                  dflt: 0,
                  min: 0,
                  editType: "plot"
                },
                xhoverformat: s("x"),
                yhoverformat: s("y"),
                zhoverformat: s("z", 1),
                hovertemplate: T(),
                texttemplate: A({
                  arrayOk: !1,
                  editType: "plot"
                }, {
                  keys: ["x", "y", "z", "text"]
                }),
                textfont: n({
                  editType: "plot",
                  autoSize: !0,
                  autoColor: !0,
                  colorEditType: "style"
                }),
                showlegend: u({}, P.showlegend, {
                  dflt: !1
                }),
                zorder: b.zorder
              }, {
                transforms: void 0
              }, p("", {
                cLetter: "z",
                autoColorDflt: !1
              }));
            }
          ),
          /***/
          51670: (
            /***/
            function(Y, K, e) {
              var b = e(33626), P = e(34809), n = e(29714), s = e(40528), T = e(19226), A = e(28379), p = e(87869), u = e(93877), t = e(69295), r = e(78106), i = e(80924), a = e(63821).BADNUM;
              Y.exports = function(g, x) {
                var c = n.getFromId(g, x.xaxis || "x"), v = n.getFromId(g, x.yaxis || "y"), f = b.traceIs(x, "contour"), _ = b.traceIs(x, "histogram"), S = b.traceIs(x, "gl2d"), M = f ? "best" : x.zsmooth, C, m, L, d, h, E, w, z, O, B, V;
                if (c._minDtick = 0, v._minDtick = 0, _)
                  V = T(g, x), d = V.orig_x, C = V.x, m = V.x0, L = V.dx, z = V.orig_y, h = V.y, E = V.y0, w = V.dy, O = V.z;
                else {
                  var U = x.z;
                  P.isArray1D(U) ? (p(x, c, v, "x", "y", ["z"]), C = x._x, h = x._y, U = x._z) : (d = x.x ? c.makeCalcdata(x, "x") : [], z = x.y ? v.makeCalcdata(x, "y") : [], C = s(x, c, "x", d).vals, h = s(x, v, "y", z).vals, x._x = C, x._y = h), m = x.x0, L = x.dx, E = x.y0, w = x.dy, O = u(U, x, c, v);
                }
                (c.rangebreaks || v.rangebreaks) && (O = o(C, h, O), _ || (C = l(C), h = l(h), x._x = C, x._y = h)), !_ && (f || x.connectgaps) && (x._emptypoints = r(O), t(O, x._emptypoints));
                function H(Q) {
                  M = x._input.zsmooth = x.zsmooth = !1, P.warn('cannot use zsmooth: "fast": ' + Q);
                }
                function F(Q) {
                  if (Q.length > 1) {
                    var j = (Q[Q.length - 1] - Q[0]) / (Q.length - 1), at = Math.abs(j / 100);
                    for (B = 0; B < Q.length - 1; B++)
                      if (Math.abs(Q[B + 1] - Q[B] - j) > at)
                        return !1;
                  }
                  return !0;
                }
                x._islinear = !1, c.type === "log" || v.type === "log" ? M === "fast" && H("log axis found") : F(C) ? F(h) ? x._islinear = !0 : M === "fast" && H("y scale is not linear") : M === "fast" && H("x scale is not linear");
                var G = P.maxRowLength(O), q = x.xtype === "scaled" ? "" : C, rt = i(x, q, m, L, G, c), st = x.ytype === "scaled" ? "" : h, vt = i(x, st, E, w, O.length, v);
                S || (x._extremes[c._id] = n.findExtremes(c, rt), x._extremes[v._id] = n.findExtremes(v, vt));
                var ht = {
                  x: rt,
                  y: vt,
                  z: O,
                  text: x._text || x.text,
                  hovertext: x._hovertext || x.hovertext
                };
                if (x.xperiodalignment && d && (ht.orig_x = d), x.yperiodalignment && z && (ht.orig_y = z), q && q.length === rt.length - 1 && (ht.xCenter = q), st && st.length === vt.length - 1 && (ht.yCenter = st), _ && (ht.xRanges = V.xRanges, ht.yRanges = V.yRanges, ht.pts = V.pts), f || A(g, x, {
                  vals: O,
                  cLetter: "z"
                }), f && x.contours && x.contours.coloring === "heatmap") {
                  var et = {
                    type: x.type === "contour" ? "heatmap" : "histogram2d",
                    xcalendar: x.xcalendar,
                    ycalendar: x.ycalendar
                  };
                  ht.xfill = i(et, q, m, L, G, c), ht.yfill = i(et, st, E, w, O.length, v);
                }
                return [ht];
              };
              function l(y) {
                for (var g = [], x = y.length, c = 0; c < x; c++) {
                  var v = y[c];
                  v !== a && g.push(v);
                }
                return g;
              }
              function o(y, g, x) {
                for (var c = [], v = -1, f = 0; f < x.length; f++)
                  if (g[f] !== a) {
                    v++, c[v] = [];
                    for (var _ = 0; _ < x[f].length; _++)
                      y[_] !== a && c[v].push(x[f][_]);
                  }
                return c;
              }
            }
          ),
          /***/
          93877: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(34809), n = e(63821).BADNUM;
              Y.exports = function(T, A, p, u) {
                var t, r, i, a, l, o;
                function y(_) {
                  if (b(_))
                    return +_;
                }
                if (A && A.transpose) {
                  for (t = 0, l = 0; l < T.length; l++) t = Math.max(t, T[l].length);
                  if (t === 0) return !1;
                  i = function(_) {
                    return _.length;
                  }, a = function(_, S, M) {
                    return (_[M] || [])[S];
                  };
                } else
                  t = T.length, i = function(_, S) {
                    return _[S].length;
                  }, a = function(_, S, M) {
                    return (_[S] || [])[M];
                  };
                var g = function(_, S, M) {
                  return S === n || M === n ? n : a(_, S, M);
                };
                function x(_) {
                  if (A && A.type !== "carpet" && A.type !== "contourcarpet" && _ && _.type === "category" && A["_" + _._id.charAt(0)].length) {
                    var S = _._id.charAt(0), M = {}, C = A["_" + S + "CategoryMap"] || A[S];
                    for (l = 0; l < C.length; l++)
                      M[C[l]] = l;
                    return function(m) {
                      var L = M[_._categories[m]];
                      return L + 1 ? L : n;
                    };
                  } else
                    return P.identity;
                }
                var c = x(p), v = x(u);
                u && u.type === "category" && (t = u._categories.length);
                var f = new Array(t);
                for (l = 0; l < t; l++)
                  for (p && p.type === "category" ? r = p._categories.length : r = i(T, l), f[l] = new Array(r), o = 0; o < r; o++) f[l][o] = y(g(T, v(l), c(o)));
                return f;
              };
            }
          ),
          /***/
          12431: (
            /***/
            function(Y) {
              Y.exports = {
                min: "zmin",
                max: "zmax"
              };
            }
          ),
          /***/
          87869: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(63821).BADNUM, n = e(40528);
              Y.exports = function(T, A, p, u, t, r) {
                var i = T._length, a = A.makeCalcdata(T, u), l = p.makeCalcdata(T, t);
                a = n(T, A, u, a).vals, l = n(T, p, t, l).vals;
                var o = T.text, y = o !== void 0 && b.isArray1D(o), g = T.hovertext, x = g !== void 0 && b.isArray1D(g), c, v, f = b.distinctVals(a), _ = f.vals, S = b.distinctVals(l), M = S.vals, C = [], m, L, d = M.length, h = _.length;
                for (c = 0; c < r.length; c++)
                  C[c] = b.init2dArray(d, h);
                y && (m = b.init2dArray(d, h)), x && (L = b.init2dArray(d, h));
                var E = b.init2dArray(d, h);
                for (c = 0; c < i; c++)
                  if (a[c] !== P && l[c] !== P) {
                    var w = b.findBin(a[c] + f.minDiff / 2, _), z = b.findBin(l[c] + S.minDiff / 2, M);
                    for (v = 0; v < r.length; v++) {
                      var O = r[v], B = T[O], V = C[v];
                      V[z][w] = B[c], E[z][w] = c;
                    }
                    y && (m[z][w] = o[c]), x && (L[z][w] = g[c]);
                  }
                for (T["_" + u] = _, T["_" + t] = M, v = 0; v < r.length; v++)
                  T["_" + r[v]] = C[v];
                y && (T._text = m), x && (T._hovertext = L), A && A.type === "category" && (T["_" + u + "CategoryMap"] = _.map(function(U) {
                  return A._categories[U];
                })), p && p.type === "category" && (T["_" + t + "CategoryMap"] = M.map(function(U) {
                  return p._categories[U];
                })), T._after2before = E;
              };
            }
          ),
          /***/
          52813: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(86073), n = e(63814), s = e(99669), T = e(44143), A = e(39356), p = e(81658);
              Y.exports = function(t, r, i, a) {
                function l(y, g) {
                  return b.coerce(t, r, p, y, g);
                }
                var o = P(t, r, l, a);
                if (!o) {
                  r.visible = !1;
                  return;
                }
                s(t, r, a, l), l("xhoverformat"), l("yhoverformat"), l("text"), l("hovertext"), l("hovertemplate"), n(l, a), T(t, r, l, a), l("hoverongaps"), l("connectgaps", b.isArray1D(r.z) && r.zsmooth !== !1), A(t, r, a, l, {
                  prefix: "",
                  cLetter: "z"
                }), l("zorder");
              };
            }
          ),
          /***/
          78106: (
            /***/
            function(Y, K, e) {
              var b = e(34809).maxRowLength;
              Y.exports = function(n) {
                var s = [], T = {}, A = [], p = n[0], u = [], t = [0, 0, 0], r = b(n), i, a, l, o, y, g, x, c;
                for (a = 0; a < n.length; a++)
                  for (i = u, u = p, p = n[a + 1] || [], l = 0; l < r; l++)
                    u[l] === void 0 && (g = (u[l - 1] !== void 0 ? 1 : 0) + (u[l + 1] !== void 0 ? 1 : 0) + (i[l] !== void 0 ? 1 : 0) + (p[l] !== void 0 ? 1 : 0), g ? (a === 0 && g++, l === 0 && g++, a === n.length - 1 && g++, l === u.length - 1 && g++, g < 4 && (T[[a, l]] = [a, l, g]), s.push([a, l, g])) : A.push([a, l]));
                for (; A.length; ) {
                  for (x = {}, c = !1, y = A.length - 1; y >= 0; y--)
                    o = A[y], a = o[0], l = o[1], g = ((T[[a - 1, l]] || t)[2] + (T[[a + 1, l]] || t)[2] + (T[[a, l - 1]] || t)[2] + (T[[a, l + 1]] || t)[2]) / 20, g && (x[o] = [a, l, g], A.splice(y, 1), c = !0);
                  if (!c)
                    throw "findEmpties iterated with no new neighbors";
                  for (o in x)
                    T[o] = x[o], s.push(x[o]);
                }
                return s.sort(function(v, f) {
                  return f[2] - v[2];
                });
              };
            }
          ),
          /***/
          93125: (
            /***/
            function(Y, K, e) {
              var b = e(32141), P = e(34809), n = P.isArrayOrTypedArray, s = e(29714), T = e(88856).extractOpts;
              Y.exports = function(p, u, t, r, i) {
                i || (i = {});
                var a = i.isContour, l = p.cd[0], o = l.trace, y = p.xa, g = p.ya, x = l.x, c = l.y, v = l.z, f = l.xCenter, _ = l.yCenter, S = l.zmask, M = o.zhoverformat, C = x, m = c, L, d, h, E;
                if (p.index !== !1) {
                  try {
                    h = Math.round(p.index[1]), E = Math.round(p.index[0]);
                  } catch {
                    P.error("Error hovering on heatmap, pointNumber must be [row,col], found:", p.index);
                    return;
                  }
                  if (h < 0 || h >= v[0].length || E < 0 || E > v.length)
                    return;
                } else {
                  if (b.inbox(u - x[0], u - x[x.length - 1], 0) > 0 || b.inbox(t - c[0], t - c[c.length - 1], 0) > 0)
                    return;
                  if (a) {
                    var w;
                    for (C = [2 * x[0] - x[1]], w = 1; w < x.length; w++)
                      C.push((x[w] + x[w - 1]) / 2);
                    for (C.push([2 * x[x.length - 1] - x[x.length - 2]]), m = [2 * c[0] - c[1]], w = 1; w < c.length; w++)
                      m.push((c[w] + c[w - 1]) / 2);
                    m.push([2 * c[c.length - 1] - c[c.length - 2]]);
                  }
                  h = Math.max(0, Math.min(C.length - 2, P.findBin(u, C))), E = Math.max(0, Math.min(m.length - 2, P.findBin(t, m)));
                }
                var z = y.c2p(x[h]), O = y.c2p(x[h + 1]), B = g.c2p(c[E]), V = g.c2p(c[E + 1]), U, H;
                a ? (U = l.orig_x || x, H = l.orig_y || c, O = z, L = U[h], V = B, d = H[E]) : (U = l.orig_x || f || x, H = l.orig_y || _ || c, L = f ? U[h] : (U[h] + U[h + 1]) / 2, d = _ ? H[E] : (H[E] + H[E + 1]) / 2, y && y.type === "category" && (L = x[h]), g && g.type === "category" && (d = c[E]), o.zsmooth && (z = O = y.c2p(L), B = V = g.c2p(d)));
                var F = v[E][h];
                if (S && !S[E][h] && (F = void 0), !(F === void 0 && !o.hoverongaps)) {
                  var G;
                  n(l.hovertext) && n(l.hovertext[E]) ? G = l.hovertext[E][h] : n(l.text) && n(l.text[E]) && (G = l.text[E][h]);
                  var q = T(o), rt = {
                    type: "linear",
                    range: [q.min, q.max],
                    hoverformat: M,
                    _separators: y._separators,
                    _numFormat: y._numFormat
                  }, st = s.tickText(rt, F, "hover").text;
                  return [P.extendFlat(p, {
                    index: o._after2before ? o._after2before[E][h] : [E, h],
                    // never let a 2D override 1D type as closest point
                    distance: p.maxHoverDistance,
                    spikeDistance: p.maxSpikeDistance,
                    x0: z,
                    x1: O,
                    y0: B,
                    y1: V,
                    xLabelVal: L,
                    yLabelVal: d,
                    zLabelVal: F,
                    zLabel: st,
                    text: G
                  })];
                }
              };
            }
          ),
          /***/
          29251: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(81658),
                supplyDefaults: e(52813),
                calc: e(51670),
                plot: e(19236),
                colorbar: e(12431),
                style: e(12774),
                hoverPoints: e(93125),
                moduleType: "trace",
                name: "heatmap",
                basePlotModule: e(37703),
                categories: ["cartesian", "svg", "2dMap", "showLegend"],
                meta: {}
              };
            }
          ),
          /***/
          69295: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = 0.01, n = [[-1, 0], [1, 0], [0, -1], [0, 1]];
              function s(A) {
                return 0.5 - 0.25 * Math.min(1, A * 0.5);
              }
              Y.exports = function(p, u) {
                var t = 1, r;
                for (T(p, u), r = 0; r < u.length && !(u[r][2] < 4); r++)
                  ;
                for (u = u.slice(r), r = 0; r < 100 && t > P; r++)
                  t = T(p, u, s(t));
                return t > P && b.log("interp2d didn't converge quickly", t), p;
              };
              function T(A, p, u) {
                var t = 0, r, i, a, l, o, y, g, x, c, v, f, _, S;
                for (l = 0; l < p.length; l++) {
                  for (r = p[l], i = r[0], a = r[1], f = A[i][a], v = 0, c = 0, o = 0; o < 4; o++)
                    y = n[o], g = A[i + y[0]], g && (x = g[a + y[1]], x !== void 0 && (v === 0 ? _ = S = x : (_ = Math.min(_, x), S = Math.max(S, x)), c++, v += x));
                  if (c === 0)
                    throw "iterateInterp2d order is wrong: no defined neighbors";
                  A[i][a] = v / c, f === void 0 ? c < 4 && (t = 1) : (A[i][a] = (1 + u) * A[i][a] - u * f, S > _ && (t = Math.max(t, Math.abs(A[i][a] - f) / (S - _))));
                }
                return t;
              }
            }
          ),
          /***/
          63814: (
            /***/
            function(Y, K, e) {
              var b = e(34809);
              Y.exports = function(n, s) {
                n("texttemplate");
                var T = b.extendFlat({}, s.font, {
                  color: "auto",
                  size: "auto"
                });
                b.coerceFont(n, "textfont", T);
              };
            }
          ),
          /***/
          80924: (
            /***/
            function(Y, K, e) {
              var b = e(33626), P = e(34809).isArrayOrTypedArray;
              Y.exports = function(s, T, A, p, u, t) {
                var r = [], i = b.traceIs(s, "contour"), a = b.traceIs(s, "histogram"), l = b.traceIs(s, "gl2d"), o, y, g, x = P(T) && T.length > 1;
                if (x && !a && t.type !== "category") {
                  var c = T.length;
                  if (c <= u) {
                    if (i || l) r = Array.from(T).slice(0, u);
                    else if (u === 1)
                      t.type === "log" ? r = [0.5 * T[0], 2 * T[0]] : r = [T[0] - 0.5, T[0] + 0.5];
                    else if (t.type === "log") {
                      for (r = [Math.pow(T[0], 1.5) / Math.pow(T[1], 0.5)], g = 1; g < c; g++)
                        r.push(Math.sqrt(T[g - 1] * T[g]));
                      r.push(Math.pow(T[c - 1], 1.5) / Math.pow(T[c - 2], 0.5));
                    } else {
                      for (r = [1.5 * T[0] - 0.5 * T[1]], g = 1; g < c; g++)
                        r.push((T[g - 1] + T[g]) * 0.5);
                      r.push(1.5 * T[c - 1] - 0.5 * T[c - 2]);
                    }
                    if (c < u) {
                      var v = r[r.length - 1], f;
                      if (t.type === "log")
                        for (f = v / r[r.length - 2], g = c; g < u; g++)
                          v *= f, r.push(v);
                      else
                        for (f = v - r[r.length - 2], g = c; g < u; g++)
                          v += f, r.push(v);
                    }
                  } else
                    return i ? T.slice(0, u) : (
                      // we must be strict for contours
                      T.slice(0, u + 1)
                    );
                } else {
                  var _ = s[t._id.charAt(0) + "calendar"];
                  if (a)
                    o = t.r2c(A, 0, _);
                  else if (P(T) && T.length === 1)
                    o = T[0];
                  else if (A === void 0)
                    o = 0;
                  else {
                    var S = t.type === "log" ? t.d2c : t.r2c;
                    o = S(A, 0, _);
                  }
                  for (y = p || 1, g = i || l ? 0 : -0.5; g < u; g++)
                    r.push(o + y * g);
                }
                return r;
              };
            }
          ),
          /***/
          19236: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(65657), n = e(33626), s = e(62203), T = e(29714), A = e(34809), p = e(30635), u = e(15294), t = e(78766), r = e(88856).extractOpts, i = e(88856).makeColorScaleFuncFromTrace, a = e(62972), l = e(4530), o = l.LINE_SPACING, y = e(95544), g = e(1837).STYLE, x = "heatmap-label";
              function c(M) {
                return M.selectAll("g." + x);
              }
              function v(M) {
                c(M).remove();
              }
              Y.exports = function(M, C, m, L) {
                var d = C.xaxis, h = C.yaxis;
                A.makeTraceGroups(L, m, "hm").each(function(E) {
                  var w = b.select(this), z = E[0], O = z.trace, B = O.xgap || 0, V = O.ygap || 0, U = z.z, H = z.x, F = z.y, G = z.xCenter, q = z.yCenter, rt = n.traceIs(O, "contour"), st = rt ? "best" : O.zsmooth, vt = U.length, ht = A.maxRowLength(U), et = !1, Q = !1, j, at, ut, nt, X, ct, lt, pt;
                  for (ct = 0; j === void 0 && ct < H.length - 1; )
                    j = d.c2p(H[ct]), ct++;
                  for (ct = H.length - 1; at === void 0 && ct > 0; )
                    at = d.c2p(H[ct]), ct--;
                  for (at < j && (ut = at, at = j, j = ut, et = !0), ct = 0; nt === void 0 && ct < F.length - 1; )
                    nt = h.c2p(F[ct]), ct++;
                  for (ct = F.length - 1; X === void 0 && ct > 0; )
                    X = h.c2p(F[ct]), ct--;
                  X < nt && (ut = nt, nt = X, X = ut, Q = !0), rt && (G = H, q = F, H = z.xfill, F = z.yfill);
                  var wt = "default";
                  if (st ? wt = st === "best" ? "smooth" : "fast" : O._islinear && B === 0 && V === 0 && y() && (wt = "fast"), wt !== "fast") {
                    var Et = st === "best" ? 0 : 0.5;
                    j = Math.max(-Et * d._length, j), at = Math.min((1 + Et) * d._length, at), nt = Math.max(-Et * h._length, nt), X = Math.min((1 + Et) * h._length, X);
                  }
                  var Ct = Math.round(at - j), Gt = Math.round(X - nt), Jt = j >= d._length || at <= 0 || nt >= h._length || X <= 0;
                  if (Jt) {
                    var Qt = w.selectAll("image").data([]);
                    Qt.exit().remove(), v(w);
                    return;
                  }
                  var Vt, zt;
                  wt === "fast" ? (Vt = ht, zt = vt) : (Vt = Ct, zt = Gt);
                  var Rt = document.createElement("canvas");
                  Rt.width = Vt, Rt.height = zt;
                  var Wt = Rt.getContext("2d", {
                    willReadFrequently: !0
                  }), kt = i(O, {
                    noNumericCheck: !0,
                    returnArray: !0
                  }), re, ge;
                  wt === "fast" ? (re = et ? function(sn) {
                    return ht - 1 - sn;
                  } : A.identity, ge = Q ? function(sn) {
                    return vt - 1 - sn;
                  } : A.identity) : (re = function(sn) {
                    return A.constrain(Math.round(d.c2p(H[sn]) - j), 0, Ct);
                  }, ge = function(sn) {
                    return A.constrain(Math.round(h.c2p(F[sn]) - nt), 0, Gt);
                  });
                  var _e = ge(0), ce = [_e, _e], ae = et ? 0 : 1, Se = Q ? 0 : 1, ze = 0, Ne = 0, Ve = 0, Oe = 0, ur, ie, $t, jt, ee;
                  function Bt(sn, $n) {
                    if (sn !== void 0) {
                      var kn = kt(sn);
                      return kn[0] = Math.round(kn[0]), kn[1] = Math.round(kn[1]), kn[2] = Math.round(kn[2]), ze += $n, Ne += kn[0] * $n, Ve += kn[1] * $n, Oe += kn[2] * $n, kn;
                    }
                    return [0, 0, 0, 0];
                  }
                  function Xt(sn, $n, kn, An) {
                    var qn = sn[kn.bin0];
                    if (qn === void 0) return Bt(void 0, 1);
                    var si = sn[kn.bin1], qi = $n[kn.bin0], ha = $n[kn.bin1], Mi = si - qn || 0, Ji = qi - qn || 0, ci;
                    return si === void 0 ? ha === void 0 ? ci = 0 : qi === void 0 ? ci = 2 * (ha - qn) : ci = (2 * ha - qi - qn) * 2 / 3 : ha === void 0 ? qi === void 0 ? ci = 0 : ci = (2 * qn - si - qi) * 2 / 3 : qi === void 0 ? ci = (2 * ha - si - qn) * 2 / 3 : ci = ha + qn - si - qi, Bt(qn + kn.frac * Mi + An.frac * (Ji + kn.frac * ci));
                  }
                  if (wt !== "default") {
                    var Zt = 0, ye;
                    try {
                      ye = new Uint8Array(Vt * zt * 4);
                    } catch {
                      ye = new Array(Vt * zt * 4);
                    }
                    if (wt === "smooth") {
                      var Mt = G || H, St = q || F, Lt = new Array(Mt.length), te = new Array(St.length), fe = new Array(Ct), Me = G ? _ : f, ir = q ? _ : f, mr, Xe, xe;
                      for (ct = 0; ct < Mt.length; ct++) Lt[ct] = Math.round(d.c2p(Mt[ct]) - j);
                      for (ct = 0; ct < St.length; ct++) te[ct] = Math.round(h.c2p(St[ct]) - nt);
                      for (ct = 0; ct < Ct; ct++) fe[ct] = Me(ct, Lt);
                      for (lt = 0; lt < Gt; lt++)
                        for (mr = ir(lt, te), Xe = U[mr.bin0], xe = U[mr.bin1], ct = 0; ct < Ct; ct++, Zt += 4)
                          ee = Xt(Xe, xe, fe[ct], mr), S(ye, Zt, ee);
                    } else
                      for (lt = 0; lt < vt; lt++)
                        for (jt = U[lt], ce = ge(lt), ct = 0; ct < ht; ct++)
                          ee = Bt(jt[ct], 1), Zt = (ce * ht + re(ct)) * 4, S(ye, Zt, ee);
                    var me = Wt.createImageData(Vt, zt);
                    try {
                      me.data.set(ye);
                    } catch {
                      var Le = me.data, qt = Le.length;
                      for (lt = 0; lt < qt; lt++)
                        Le[lt] = ye[lt];
                    }
                    Wt.putImageData(me, 0, 0);
                  } else {
                    var De = Math.floor(B / 2), Je = Math.floor(V / 2);
                    for (lt = 0; lt < vt; lt++)
                      if (jt = U[lt], ce.reverse(), ce[Se] = ge(lt + 1), !(ce[0] === ce[1] || ce[0] === void 0 || ce[1] === void 0))
                        for (ie = re(0), ur = [ie, ie], ct = 0; ct < ht; ct++)
                          ur.reverse(), ur[ae] = re(ct + 1), !(ur[0] === ur[1] || ur[0] === void 0 || ur[1] === void 0) && ($t = jt[ct], ee = Bt($t, (ur[1] - ur[0]) * (ce[1] - ce[0])), Wt.fillStyle = "rgba(" + ee.join(",") + ")", Wt.fillRect(ur[0] + De, ce[0] + Je, ur[1] - ur[0] - B, ce[1] - ce[0] - V));
                  }
                  Ne = Math.round(Ne / ze), Ve = Math.round(Ve / ze), Oe = Math.round(Oe / ze);
                  var dr = P("rgb(" + Ne + "," + Ve + "," + Oe + ")");
                  M._hmpixcount = (M._hmpixcount || 0) + ze, M._hmlumcount = (M._hmlumcount || 0) + ze * dr.getLuminance();
                  var qe = w.selectAll("image").data(E);
                  qe.enter().append("svg:image").attr({
                    xmlns: a.svg,
                    preserveAspectRatio: "none"
                  }), qe.attr({
                    height: Gt,
                    width: Ct,
                    x: j,
                    y: nt,
                    "xlink:href": Rt.toDataURL("image/png")
                  }), wt === "fast" && !st && qe.attr("style", g), v(w);
                  var we = O.texttemplate;
                  if (we) {
                    var ue = r(O), Pe = {
                      type: "linear",
                      range: [ue.min, ue.max],
                      _separators: d._separators,
                      _numFormat: d._numFormat
                    }, Ue = O.type === "histogram2dcontour", Ye = O.type === "contour", rr = Ye ? 1 : 0, lr = Ye ? vt - 1 : vt, hr = Ye ? 1 : 0, Sr = Ye ? ht - 1 : ht, Dr = [];
                    for (ct = rr; ct < lr; ct++) {
                      var Or;
                      if (Ye)
                        Or = z.y[ct];
                      else if (Ue) {
                        if (ct === 0 || ct === vt - 1) continue;
                        Or = z.y[ct];
                      } else if (z.yCenter)
                        Or = z.yCenter[ct];
                      else {
                        if (ct + 1 === vt && z.y[ct + 1] === void 0) continue;
                        Or = (z.y[ct] + z.y[ct + 1]) / 2;
                      }
                      var Br = Math.round(h.c2p(Or));
                      if (!(0 > Br || Br > h._length))
                        for (lt = hr; lt < Sr; lt++) {
                          var Nr;
                          if (Ye)
                            Nr = z.x[lt];
                          else if (Ue) {
                            if (lt === 0 || lt === ht - 1) continue;
                            Nr = z.x[lt];
                          } else if (z.xCenter)
                            Nr = z.xCenter[lt];
                          else {
                            if (lt + 1 === ht && z.x[lt + 1] === void 0) continue;
                            Nr = (z.x[lt] + z.x[lt + 1]) / 2;
                          }
                          var Xr = Math.round(d.c2p(Nr));
                          if (!(0 > Xr || Xr > d._length)) {
                            var Gr = u({
                              x: Nr,
                              y: Or
                            }, O, M._fullLayout);
                            Gr.x = Nr, Gr.y = Or;
                            var oe = z.z[ct][lt];
                            oe === void 0 ? (Gr.z = "", Gr.zLabel = "") : (Gr.z = oe, Gr.zLabel = T.tickText(Pe, oe, "hover").text);
                            var de = z.text && z.text[ct] && z.text[ct][lt];
                            (de === void 0 || de === !1) && (de = ""), Gr.text = de;
                            var or = A.texttemplateString(we, Gr, M._fullLayout._d3locale, Gr, O._meta || {});
                            if (or) {
                              var Er = or.split("<br>"), Tr = Er.length, tr = 0;
                              for (pt = 0; pt < Tr; pt++)
                                tr = Math.max(tr, Er[pt].length);
                              Dr.push({
                                l: Tr,
                                // number of lines
                                c: tr,
                                // maximum number of chars in a line
                                t: or,
                                // text
                                x: Xr,
                                y: Br,
                                z: oe
                              });
                            }
                          }
                        }
                    }
                    var yr = O.textfont, Ir = yr.size, Cr = M._fullLayout.font.size;
                    if (!Ir || Ir === "auto") {
                      var _r = 1 / 0, Zr = 1 / 0, ln = 0, Jr = 0;
                      for (pt = 0; pt < Dr.length; pt++) {
                        var Zn = Dr[pt];
                        if (ln = Math.max(ln, Zn.l), Jr = Math.max(Jr, Zn.c), pt < Dr.length - 1) {
                          var fn = Dr[pt + 1], hi = Math.abs(fn.x - Zn.x), Vn = Math.abs(fn.y - Zn.y);
                          hi && (_r = Math.min(_r, hi)), Vn && (Zr = Math.min(Zr, Vn));
                        }
                      }
                      !isFinite(_r) || !isFinite(Zr) ? Ir = Cr : (_r -= B, Zr -= V, _r /= Jr, Zr /= ln, _r /= o / 2, Zr /= o, Ir = Math.min(Math.floor(_r), Math.floor(Zr), Cr));
                    }
                    if (Ir <= 0 || !isFinite(Ir)) return;
                    var jr = function(sn) {
                      return sn.x;
                    }, zr = function(sn) {
                      return sn.y - Ir * (sn.l * o / 2 - 1);
                    }, Tn = c(w).data(Dr);
                    Tn.enter().append("g").classed(x, 1).append("text").attr("text-anchor", "middle").each(function(sn) {
                      var $n = b.select(this), kn = yr.color;
                      (!kn || kn === "auto") && (kn = t.contrast(sn.z === void 0 ? M._fullLayout.plot_bgcolor : "rgba(" + kt(sn.z).join() + ")")), $n.attr("data-notex", 1).call(p.positionText, jr(sn), zr(sn)).call(s.font, {
                        family: yr.family,
                        size: Ir,
                        color: kn,
                        weight: yr.weight,
                        style: yr.style,
                        variant: yr.variant,
                        textcase: yr.textcase,
                        lineposition: yr.lineposition,
                        shadow: yr.shadow
                      }).text(sn.t).call(p.convertToTspans, M);
                    });
                  }
                });
              };
              function f(M, C) {
                var m = C.length - 2, L = A.constrain(A.findBin(M, C), 0, m), d = C[L], h = C[L + 1], E = A.constrain(L + (M - d) / (h - d) - 0.5, 0, m), w = Math.round(E), z = Math.abs(E - w);
                return !E || E === m || !z ? {
                  bin0: w,
                  bin1: w,
                  frac: 0
                } : {
                  bin0: w,
                  frac: z,
                  bin1: Math.round(w + z / (E - w))
                };
              }
              function _(M, C) {
                var m = C.length - 1, L = A.constrain(A.findBin(M, C), 0, m), d = C[L], h = C[L + 1], E = (M - d) / (h - d) || 0;
                return E <= 0 ? {
                  bin0: L,
                  bin1: L,
                  frac: 0
                } : E < 0.5 ? {
                  bin0: L,
                  bin1: L + 1,
                  frac: E
                } : {
                  bin0: L + 1,
                  bin1: L,
                  frac: 1 - E
                };
              }
              function S(M, C, m) {
                M[C] = m[0], M[C + 1] = m[1], M[C + 2] = m[2], M[C + 3] = Math.round(m[3] * 255);
              }
            }
          ),
          /***/
          12774: (
            /***/
            function(Y, K, e) {
              var b = e(45568);
              Y.exports = function(n) {
                b.select(n).selectAll(".hm image").style("opacity", function(s) {
                  return s.trace.opacity;
                });
              };
            }
          ),
          /***/
          44143: (
            /***/
            function(Y) {
              Y.exports = function(e, b, P) {
                var n = P("zsmooth");
                n === !1 && (P("xgap"), P("ygap")), P("zhoverformat");
              };
            }
          ),
          /***/
          86073: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(34809), n = e(33626);
              Y.exports = function(p, u, t, r, i, a) {
                var l = t("z");
                i = i || "x", a = a || "y";
                var o, y;
                if (l === void 0 || !l.length) return 0;
                if (P.isArray1D(l)) {
                  o = t(i), y = t(a);
                  var g = P.minRowLength(o), x = P.minRowLength(y);
                  if (g === 0 || x === 0) return 0;
                  u._length = Math.min(g, x, l.length);
                } else {
                  if (o = s(i, t), y = s(a, t), !T(l)) return 0;
                  t("transpose"), u._length = null;
                }
                if (p.type === "heatmapgl") return !0;
                var c = n.getComponentMethod("calendars", "handleTraceDefaults");
                return c(p, u, [i, a], r), !0;
              };
              function s(A, p) {
                var u = p(A), t = u ? p(A + "type", "array") : "scaled";
                return t === "scaled" && (p(A + "0"), p("d" + A)), u;
              }
              function T(A) {
                for (var p = !0, u = !1, t = !1, r, i = 0; i < A.length; i++) {
                  if (r = A[i], !P.isArrayOrTypedArray(r)) {
                    p = !1;
                    break;
                  }
                  r.length > 0 && (u = !0);
                  for (var a = 0; a < r.length; a++)
                    if (b(r[a])) {
                      t = !0;
                      break;
                    }
                }
                return p && u && t;
              }
            }
          ),
          /***/
          29751: (
            /***/
            function(Y, K, e) {
              for (var b = e(81658), P = e(87163), n = e(93049).extendFlat, s = e(13582).overrideAll, T = ["z", "x", "x0", "dx", "y", "y0", "dy", "text", "transpose", "xtype", "ytype"], A = {}, p = 0; p < T.length; p++) {
                var u = T[p];
                A[u] = b[u];
              }
              A.zsmooth = {
                valType: "enumerated",
                values: ["fast", !1],
                dflt: "fast",
                editType: "calc"
              }, n(A, P("", {
                cLetter: "z",
                autoColorDflt: !1
              })), Y.exports = s(A, "calc", "nested");
            }
          ),
          /***/
          89987: (
            /***/
            function(Y, K, e) {
              var b = e(99098).gl_heatmap2d, P = e(29714), n = e(55010);
              function s(u, t) {
                this.scene = u, this.uid = t, this.type = "heatmapgl", this.name = "", this.hoverinfo = "all", this.xData = [], this.yData = [], this.zData = [], this.textLabels = [], this.idToIndex = [], this.bounds = [0, 0, 0, 0], this.options = {
                  zsmooth: "fast",
                  z: [],
                  x: [],
                  y: [],
                  shape: [0, 0],
                  colorLevels: [0],
                  colorValues: [0, 0, 0, 1]
                }, this.heatmap = b(u.glplot, this.options), this.heatmap._trace = this;
              }
              var T = s.prototype;
              T.handlePick = function(u) {
                var t = this.options, r = t.shape, i = u.pointId, a = i % r[0], l = Math.floor(i / r[0]), o = i;
                return {
                  trace: this,
                  dataCoord: u.dataCoord,
                  traceCoord: [t.x[a], t.y[l], t.z[o]],
                  textLabel: this.textLabels[i],
                  name: this.name,
                  pointIndex: [l, a],
                  hoverinfo: this.hoverinfo
                };
              }, T.update = function(u, t) {
                var r = t[0];
                this.index = u.index, this.name = u.name, this.hoverinfo = u.hoverinfo;
                var i = r.z;
                this.options.z = [].concat.apply([], i);
                var a = i[0].length, l = i.length;
                this.options.shape = [a, l], this.options.x = r.x, this.options.y = r.y, this.options.zsmooth = u.zsmooth;
                var o = A(u);
                this.options.colorLevels = o.colorLevels, this.options.colorValues = o.colorValues, this.textLabels = [].concat.apply([], u.text), this.heatmap.update(this.options);
                var y = this.scene.xaxis, g = this.scene.yaxis, x, c;
                u.zsmooth === !1 && (x = {
                  ppad: r.x[1] - r.x[0]
                }, c = {
                  ppad: r.y[1] - r.y[0]
                }), u._extremes[y._id] = P.findExtremes(y, r.x, x), u._extremes[g._id] = P.findExtremes(g, r.y, c);
              }, T.dispose = function() {
                this.heatmap.dispose();
              };
              function A(u) {
                for (var t = u.colorscale, r = u.zmin, i = u.zmax, a = t.length, l = new Array(a), o = new Array(4 * a), y = 0; y < a; y++) {
                  var g = t[y], x = n(g[1]);
                  l[y] = r + g[0] * (i - r);
                  for (var c = 0; c < 4; c++)
                    o[4 * y + c] = x[c];
                }
                return {
                  colorLevels: l,
                  colorValues: o
                };
              }
              function p(u, t, r) {
                var i = new s(u, t.uid);
                return i.update(t, r), i;
              }
              Y.exports = p;
            }
          ),
          /***/
          51312: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(86073), n = e(39356), s = e(29751);
              Y.exports = function(A, p, u, t) {
                function r(a, l) {
                  return b.coerce(A, p, s, a, l);
                }
                var i = P(A, p, r, t);
                if (!i) {
                  p.visible = !1;
                  return;
                }
                r("text"), r("zsmooth"), n(A, p, t, r, {
                  prefix: "",
                  cLetter: "z"
                });
              };
            }
          ),
          /***/
          72892: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(29751),
                supplyDefaults: e(51312),
                colorbar: e(12431),
                calc: e(51670),
                plot: e(89987),
                moduleType: "trace",
                name: "heatmapgl",
                basePlotModule: e(24585),
                categories: ["gl", "gl2d", "2dMap"],
                meta: {}
              };
            }
          ),
          /***/
          16160: (
            /***/
            function(Y, K, e) {
              var b = e(81481), P = e(80712).axisHoverFormat, n = e(3208).rb, s = e(3208).ay, T = e(80337), A = e(64766), p = e(39732), u = e(93049).extendFlat;
              Y.exports = {
                x: {
                  valType: "data_array",
                  editType: "calc+clearAxisTypes"
                },
                y: {
                  valType: "data_array",
                  editType: "calc+clearAxisTypes"
                },
                xhoverformat: P("x"),
                yhoverformat: P("y"),
                text: u({}, b.text, {}),
                hovertext: u({}, b.hovertext, {}),
                orientation: b.orientation,
                histfunc: {
                  valType: "enumerated",
                  values: ["count", "sum", "avg", "min", "max"],
                  dflt: "count",
                  editType: "calc"
                },
                histnorm: {
                  valType: "enumerated",
                  values: ["", "percent", "probability", "density", "probability density"],
                  dflt: "",
                  editType: "calc"
                },
                cumulative: {
                  enabled: {
                    valType: "boolean",
                    dflt: !1,
                    editType: "calc"
                  },
                  direction: {
                    valType: "enumerated",
                    values: ["increasing", "decreasing"],
                    dflt: "increasing",
                    editType: "calc"
                  },
                  currentbin: {
                    valType: "enumerated",
                    values: ["include", "exclude", "half"],
                    dflt: "include",
                    editType: "calc"
                  },
                  editType: "calc"
                },
                nbinsx: {
                  valType: "integer",
                  min: 0,
                  dflt: 0,
                  editType: "calc"
                },
                xbins: A("x", !0),
                nbinsy: {
                  valType: "integer",
                  min: 0,
                  dflt: 0,
                  editType: "calc"
                },
                ybins: A("y", !0),
                autobinx: {
                  valType: "boolean",
                  dflt: null,
                  editType: "calc"
                },
                autobiny: {
                  valType: "boolean",
                  dflt: null,
                  editType: "calc"
                },
                bingroup: {
                  valType: "string",
                  dflt: "",
                  editType: "calc"
                },
                hovertemplate: n({}, {
                  keys: p.eventDataKeys
                }),
                texttemplate: s({
                  arrayOk: !1,
                  editType: "plot"
                }, {
                  keys: ["label", "value"]
                }),
                textposition: u({}, b.textposition, {
                  arrayOk: !1
                }),
                textfont: T({
                  arrayOk: !1,
                  editType: "plot",
                  colorEditType: "style"
                }),
                outsidetextfont: T({
                  arrayOk: !1,
                  editType: "plot",
                  colorEditType: "style"
                }),
                insidetextfont: T({
                  arrayOk: !1,
                  editType: "plot",
                  colorEditType: "style"
                }),
                insidetextanchor: b.insidetextanchor,
                textangle: b.textangle,
                cliponaxis: b.cliponaxis,
                constraintext: b.constraintext,
                marker: b.marker,
                offsetgroup: b.offsetgroup,
                alignmentgroup: b.alignmentgroup,
                selected: b.selected,
                unselected: b.unselected,
                _deprecated: {
                  bardir: b._deprecated.bardir
                },
                zorder: b.zorder
              };
            }
          ),
          /***/
          48198: (
            /***/
            function(Y) {
              Y.exports = function(e, b) {
                for (var P = e.length, n = 0, s = 0; s < P; s++)
                  b[s] ? (e[s] /= b[s], n += e[s]) : e[s] = null;
                return n;
              };
            }
          ),
          /***/
          64766: (
            /***/
            function(Y) {
              Y.exports = function(e, b) {
                return {
                  start: {
                    valType: "any",
                    // for date axes
                    editType: "calc"
                  },
                  end: {
                    valType: "any",
                    // for date axes
                    editType: "calc"
                  },
                  size: {
                    valType: "any",
                    // for date axes
                    editType: "calc"
                  },
                  editType: "calc"
                };
              };
            }
          ),
          /***/
          34870: (
            /***/
            function(Y, K, e) {
              var b = e(10721);
              Y.exports = {
                count: function(P, n, s) {
                  return s[P]++, 1;
                },
                sum: function(P, n, s, T) {
                  var A = T[n];
                  return b(A) ? (A = Number(A), s[P] += A, A) : 0;
                },
                avg: function(P, n, s, T, A) {
                  var p = T[n];
                  return b(p) && (p = Number(p), s[P] += p, A[P]++), 0;
                },
                min: function(P, n, s, T) {
                  var A = T[n];
                  if (b(A))
                    if (A = Number(A), b(s[P])) {
                      if (s[P] > A) {
                        var p = A - s[P];
                        return s[P] = A, p;
                      }
                    } else return s[P] = A, A;
                  return 0;
                },
                max: function(P, n, s, T) {
                  var A = T[n];
                  if (b(A))
                    if (A = Number(A), b(s[P])) {
                      if (s[P] < A) {
                        var p = A - s[P];
                        return s[P] = A, p;
                      }
                    } else return s[P] = A, A;
                  return 0;
                }
              };
            }
          ),
          /***/
          64852: (
            /***/
            function(Y, K, e) {
              var b = e(63821), P = b.ONEAVGYEAR, n = b.ONEAVGMONTH, s = b.ONEDAY, T = b.ONEHOUR, A = b.ONEMIN, p = b.ONESEC, u = e(29714).tickIncrement;
              Y.exports = function(o, y, g, x, c) {
                var v = -1.1 * y, f = -0.1 * y, _ = o - f, S = g[0], M = g[1], C = Math.min(t(S + f, S + _, x, c), t(M + f, M + _, x, c)), m = Math.min(t(S + v, S + f, x, c), t(M + v, M + f, x, c)), L, d;
                if (C > m && m < Math.abs(M - S) / 4e3 ? (L = C, d = !1) : (L = Math.min(C, m), d = !0), x.type === "date" && L > s) {
                  var h = L === P ? 1 : 6, E = L === P ? "M12" : "M1";
                  return function(w, z) {
                    var O = x.c2d(w, P, c), B = O.indexOf("-", h);
                    B > 0 && (O = O.substr(0, B));
                    var V = x.d2c(O, 0, c);
                    if (V < w) {
                      var U = u(V, E, !1, c);
                      (V + U) / 2 < w + o && (V = U);
                    }
                    return z && d ? u(V, E, !0, c) : V;
                  };
                }
                return function(w, z) {
                  var O = L * Math.round(w / L);
                  return O + L / 10 < w && O + L * 0.9 < w + o && (O += L), z && d && (O -= L), O;
                };
              };
              function t(l, o, y, g) {
                if (l * o <= 0) return 1 / 0;
                for (var x = Math.abs(o - l), c = y.type === "date", v = r(x, c), f = 0; f < 10; f++) {
                  var _ = r(v * 80, c);
                  if (v === _) break;
                  if (i(_, l, o, c, y, g)) v = _;
                  else break;
                }
                return v;
              }
              function r(l, o) {
                return o && l > p ? l > s ? l > P * 1.1 ? P : l > n * 1.1 ? n : s : l > T ? T : l > A ? A : p : Math.pow(10, Math.floor(Math.log(l) / Math.LN10));
              }
              function i(l, o, y, g, x, c) {
                if (g && l > s) {
                  var v = a(o, x, c), f = a(y, x, c), _ = l === P ? 0 : 1;
                  return v[_] !== f[_];
                }
                return Math.floor(y / l) - Math.floor(o / l) > 0.1;
              }
              function a(l, o, y) {
                var g = o.c2d(l, P, y).split("-");
                return g[0] === "" && (g.unshift(), g[0] = "-" + g[0]), g;
              }
            }
          ),
          /***/
          53616: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(34809), n = e(33626), s = e(29714), T = e(35374), A = e(34870), p = e(58665), u = e(48198), t = e(64852);
              function r(y, g) {
                var x = [], c = [], v = g.orientation === "h", f = s.getFromId(y, v ? g.yaxis : g.xaxis), _ = v ? "y" : "x", S = {
                  x: "y",
                  y: "x"
                }[_], M = g[_ + "calendar"], C = g.cumulative, m, L = i(y, g, f, _), d = L[0], h = L[1], E = typeof d.size == "string", w = [], z = E ? w : d, O = [], B = [], V = [], U = 0, H = g.histnorm, F = g.histfunc, G = H.indexOf("density") !== -1, q, rt, st;
                C.enabled && G && (H = H.replace(/ ?density$/, ""), G = !1);
                var vt = F === "max" || F === "min", ht = vt ? null : 0, et = A.count, Q = p[H], j = !1, at = function(Wt) {
                  return f.r2c(Wt, 0, M);
                }, ut;
                for (P.isArrayOrTypedArray(g[S]) && F !== "count" && (ut = g[S], j = F === "avg", et = A[F]), m = at(d.start), rt = at(d.end) + (m - s.tickIncrement(m, d.size, !1, M)) / 1e6; m < rt && x.length < 1e6 && (q = s.tickIncrement(m, d.size, !1, M), x.push((m + q) / 2), c.push(ht), V.push([]), w.push(m), G && O.push(1 / (q - m)), j && B.push(0), !(q <= m)); )
                  m = q;
                w.push(m), !E && f.type === "date" && (z = {
                  start: at(z.start),
                  end: at(z.end),
                  size: z.size
                }), y._fullLayout._roundFnOpts || (y._fullLayout._roundFnOpts = {});
                var nt = g["_" + _ + "bingroup"], X = {
                  leftGap: 1 / 0,
                  rightGap: 1 / 0
                };
                nt && (y._fullLayout._roundFnOpts[nt] || (y._fullLayout._roundFnOpts[nt] = X), X = y._fullLayout._roundFnOpts[nt]);
                var ct = c.length, lt = !0, pt = X.leftGap, wt = X.rightGap, Et = {};
                for (m = 0; m < h.length; m++) {
                  var Ct = h[m];
                  st = P.findBin(Ct, z), st >= 0 && st < ct && (U += et(st, m, c, ut, B), lt && V[st].length && Ct !== h[V[st][0]] && (lt = !1), V[st].push(m), Et[m] = st, pt = Math.min(pt, Ct - w[st]), wt = Math.min(wt, w[st + 1] - Ct));
                }
                X.leftGap = pt, X.rightGap = wt;
                var Gt;
                lt || (Gt = function(Wt, kt) {
                  return function() {
                    var re = y._fullLayout._roundFnOpts[nt];
                    return t(re.leftGap, re.rightGap, w, f, M)(Wt, kt);
                  };
                }), j && (U = u(c, B)), Q && Q(c, U, O), C.enabled && o(c, C.direction, C.currentbin);
                var Jt = Math.min(x.length, c.length), Qt = [], Vt = 0, zt = Jt - 1;
                for (m = 0; m < Jt; m++)
                  if (c[m]) {
                    Vt = m;
                    break;
                  }
                for (m = Jt - 1; m >= Vt; m--)
                  if (c[m]) {
                    zt = m;
                    break;
                  }
                for (m = Vt; m <= zt; m++)
                  if (b(x[m]) && b(c[m])) {
                    var Rt = {
                      p: x[m],
                      s: c[m],
                      b: 0
                    };
                    C.enabled || (Rt.pts = V[m], lt ? Rt.ph0 = Rt.ph1 = V[m].length ? h[V[m][0]] : x[m] : (g._computePh = !0, Rt.ph0 = Gt(w[m]), Rt.ph1 = Gt(w[m + 1], !0))), Qt.push(Rt);
                  }
                return Qt.length === 1 && (Qt[0].width1 = s.tickIncrement(Qt[0].p, d.size, !1, M) - Qt[0].p), T(Qt, g), P.isArrayOrTypedArray(g.selectedpoints) && P.tagSelected(Qt, g, Et), Qt;
              }
              function i(y, g, x, c, v) {
                var f = c + "bins", _ = y._fullLayout, S = g["_" + c + "bingroup"], M = _._histogramBinOpts[S], C = _.barmode === "overlay", m, L, d, h, E, w, z, O = function(Ct) {
                  return x.r2c(Ct, 0, h);
                }, B = function(Ct) {
                  return x.c2r(Ct, 0, h);
                }, V = x.type === "date" ? function(Ct) {
                  return Ct || Ct === 0 ? P.cleanDate(Ct, null, h) : null;
                } : function(Ct) {
                  return b(Ct) ? Number(Ct) : null;
                };
                function U(Ct, Gt, Jt) {
                  Gt[Ct + "Found"] ? (Gt[Ct] = V(Gt[Ct]), Gt[Ct] === null && (Gt[Ct] = Jt[Ct])) : (w[Ct] = Gt[Ct] = Jt[Ct], P.nestedProperty(L[0], f + "." + Ct).set(Jt[Ct]));
                }
                if (g["_" + c + "autoBinFinished"])
                  delete g["_" + c + "autoBinFinished"];
                else {
                  L = M.traces;
                  var H = [], F = !0, G = !1, q = !1;
                  for (m = 0; m < L.length; m++)
                    if (d = L[m], d.visible) {
                      var rt = M.dirs[m];
                      E = d["_" + rt + "pos0"] = x.makeCalcdata(d, rt), H = P.concat(H, E), delete d["_" + c + "autoBinFinished"], g.visible === !0 && (F ? F = !1 : (delete d._autoBin, d["_" + c + "autoBinFinished"] = 1), n.traceIs(d, "2dMap") && (G = !0), d.type === "histogram2dcontour" && (q = !0));
                    }
                  h = L[0][c + "calendar"];
                  var st = s.autoBin(H, x, M.nbins, G, h, M.sizeFound && M.size), vt = L[0]._autoBin = {};
                  if (w = vt[M.dirs[0]] = {}, q && (M.size || (st.start = B(s.tickIncrement(O(st.start), st.size, !0, h))), M.end === void 0 && (st.end = B(s.tickIncrement(O(st.end), st.size, !1, h)))), C && !n.traceIs(g, "2dMap") && st._dataSpan === 0 && x.type !== "category" && x.type !== "multicategory" && g.bingroup === "" && typeof g.xbins > "u") {
                    if (v) return [st, E, !0];
                    st = a(y, g, x, c, f);
                  }
                  z = d.cumulative || {}, z.enabled && z.currentbin !== "include" && (z.direction === "decreasing" ? st.start = B(s.tickIncrement(O(st.start), st.size, !0, h)) : st.end = B(s.tickIncrement(O(st.end), st.size, !1, h))), M.size = st.size, M.sizeFound || (w.size = st.size, P.nestedProperty(L[0], f + ".size").set(st.size)), U("start", M, st), U("end", M, st);
                }
                E = g["_" + c + "pos0"], delete g["_" + c + "pos0"];
                var ht = g._input[f] || {}, et = P.extendFlat({}, M), Q = M.start, j = x.r2l(ht.start), at = j !== void 0;
                if ((M.startFound || at) && j !== x.r2l(Q)) {
                  var ut = at ? j : P.aggNums(Math.min, null, E), nt = {
                    type: x.type === "category" || x.type === "multicategory" ? "linear" : x.type,
                    r2l: x.r2l,
                    dtick: M.size,
                    tick0: Q,
                    calendar: h,
                    range: [ut, s.tickIncrement(ut, M.size, !1, h)].map(x.l2r)
                  }, X = s.tickFirst(nt);
                  X > x.r2l(ut) && (X = s.tickIncrement(X, M.size, !0, h)), et.start = x.l2r(X), at || P.nestedProperty(g, f + ".start").set(et.start);
                }
                var ct = M.end, lt = x.r2l(ht.end), pt = lt !== void 0;
                if ((M.endFound || pt) && lt !== x.r2l(ct)) {
                  var wt = pt ? lt : P.aggNums(Math.max, null, E);
                  et.end = x.l2r(wt), pt || P.nestedProperty(g, f + ".start").set(et.end);
                }
                var Et = "autobin" + c;
                return g._input[Et] === !1 && (g._input[f] = P.extendFlat({}, g[f] || {}), delete g._input[Et], delete g[Et]), [et, E];
              }
              function a(y, g, x, c, v) {
                var f = y._fullLayout, _ = l(y, g), S = !1, M = 1 / 0, C = [g], m, L, d;
                for (m = 0; m < _.length; m++)
                  if (L = _[m], L === g)
                    S = !0;
                  else if (!S)
                    d = f._histogramBinOpts[L["_" + c + "bingroup"]], M = Math.min(M, d.size || L[v].size);
                  else {
                    var h = i(y, L, x, c, !0), E = h[0], w = h[2];
                    L["_" + c + "autoBinFinished"] = 1, L["_" + c + "pos0"] = h[1], w ? C.push(L) : M = Math.min(M, E.size);
                  }
                var z = new Array(C.length);
                for (m = 0; m < C.length; m++)
                  for (var O = C[m]["_" + c + "pos0"], B = 0; B < O.length; B++)
                    if (O[B] !== void 0) {
                      z[m] = O[B];
                      break;
                    }
                for (isFinite(M) || (M = P.distinctVals(z).minDiff), m = 0; m < C.length; m++) {
                  L = C[m];
                  var V = L[c + "calendar"], U = {
                    start: x.c2r(z[m] - M / 2, 0, V),
                    end: x.c2r(z[m] + M / 2, 0, V),
                    size: M
                  };
                  L._input[v] = L[v] = U, d = f._histogramBinOpts[L["_" + c + "bingroup"]], d && P.extendFlat(d, U);
                }
                return g[v];
              }
              function l(y, g) {
                for (var x = g.xaxis, c = g.yaxis, v = g.orientation, f = [], _ = y._fullData, S = 0; S < _.length; S++) {
                  var M = _[S];
                  M.type === "histogram" && M.visible === !0 && M.orientation === v && M.xaxis === x && M.yaxis === c && f.push(M);
                }
                return f;
              }
              function o(y, g, x) {
                var c, v, f;
                function _(M) {
                  f = y[M], y[M] /= 2;
                }
                function S(M) {
                  v = y[M], y[M] = f + v / 2, f += v;
                }
                if (x === "half")
                  if (g === "increasing")
                    for (_(0), c = 1; c < y.length; c++)
                      S(c);
                  else
                    for (_(y.length - 1), c = y.length - 2; c >= 0; c--)
                      S(c);
                else if (g === "increasing") {
                  for (c = 1; c < y.length; c++)
                    y[c] += y[c - 1];
                  x === "exclude" && (y.unshift(0), y.pop());
                } else {
                  for (c = y.length - 2; c >= 0; c--)
                    y[c] += y[c + 1];
                  x === "exclude" && (y.push(0), y.shift());
                }
              }
              Y.exports = {
                calc: r,
                calcAllAutoBins: i
              };
            }
          ),
          /***/
          39732: (
            /***/
            function(Y) {
              Y.exports = {
                eventDataKeys: ["binNumber"]
              };
            }
          ),
          /***/
          83380: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(5975), n = e(33626).traceIs, s = e(36301), T = e(17550).validateCornerradius, A = b.nestedProperty, p = e(84391).getAxisGroup, u = [{
                aStr: {
                  x: "xbins.start",
                  y: "ybins.start"
                },
                name: "start"
              }, {
                aStr: {
                  x: "xbins.end",
                  y: "ybins.end"
                },
                name: "end"
              }, {
                aStr: {
                  x: "xbins.size",
                  y: "ybins.size"
                },
                name: "size"
              }, {
                aStr: {
                  x: "nbinsx",
                  y: "nbinsy"
                },
                name: "nbins"
              }], t = ["x", "y"];
              Y.exports = function(i, a) {
                var l = a._histogramBinOpts = {}, o = [], y = {}, g = [], x, c, v, f, _, S, M;
                function C(st, vt) {
                  return b.coerce(x._input, x, x._module.attributes, st, vt);
                }
                function m(st) {
                  return st.orientation === "v" ? "x" : "y";
                }
                function L(st, vt) {
                  var ht = P.getFromTrace({
                    _fullLayout: a
                  }, st, vt);
                  return ht.type;
                }
                function d(st, vt, ht) {
                  var et = st.uid + "__" + ht;
                  vt || (vt = et);
                  var Q = L(st, ht), j = st[ht + "calendar"] || "", at = l[vt], ut = !0;
                  at && (Q === at.axType && j === at.calendar ? (ut = !1, at.traces.push(st), at.dirs.push(ht)) : (vt = et, Q !== at.axType && b.warn(["Attempted to group the bins of trace", st.index, "set on a", "type:" + Q, "axis", "with bins on", "type:" + at.axType, "axis."].join(" ")), j !== at.calendar && b.warn(["Attempted to group the bins of trace", st.index, "set with a", j, "calendar", "with bins", at.calendar ? "on a " + at.calendar + " calendar" : "w/o a set calendar"].join(" ")))), ut && (l[vt] = {
                    traces: [st],
                    dirs: [ht],
                    axType: Q,
                    calendar: st[ht + "calendar"] || ""
                  }), st["_" + ht + "bingroup"] = vt;
                }
                for (_ = 0; _ < i.length; _++)
                  if (x = i[_], n(x, "histogram")) {
                    if (o.push(x), delete x._xautoBinFinished, delete x._yautoBinFinished, x.type === "histogram") {
                      var h = C("marker.cornerradius", a.barcornerradius);
                      x.marker && (x.marker.cornerradius = T(h));
                    }
                    n(x, "2dMap") || s(x._input, x, a, C);
                  }
                var E = a._alignmentOpts || {};
                for (_ = 0; _ < o.length; _++) {
                  if (x = o[_], v = "", !n(x, "2dMap")) {
                    if (f = m(x), a.barmode === "group" && x.alignmentgroup) {
                      var w = x[f + "axis"], z = p(a, w) + x.orientation;
                      (E[z] || {})[x.alignmentgroup] && (v = z);
                    }
                    !v && a.barmode !== "overlay" && (v = p(a, x.xaxis) + p(a, x.yaxis) + m(x));
                  }
                  v ? (y[v] || (y[v] = []), y[v].push(x)) : g.push(x);
                }
                for (v in y) {
                  if (c = y[v], c.length === 1) {
                    g.push(c[0]);
                    continue;
                  }
                  var O = !1;
                  for (c.length && (x = c[0], O = C("bingroup")), v = O || v, _ = 0; _ < c.length; _++) {
                    x = c[_];
                    var B = x._input.bingroup;
                    B && B !== v && b.warn(["Trace", x.index, "must match", "within bingroup", v + ".", "Ignoring its bingroup:", B, "setting."].join(" ")), x.bingroup = v, d(x, v, m(x));
                  }
                }
                for (_ = 0; _ < g.length; _++) {
                  x = g[_];
                  var V = C("bingroup");
                  if (n(x, "2dMap"))
                    for (M = 0; M < 2; M++) {
                      f = t[M];
                      var U = C(f + "bingroup", V ? V + "__" + f : null);
                      d(x, U, f);
                    }
                  else
                    d(x, V, m(x));
                }
                for (v in l) {
                  var H = l[v];
                  for (c = H.traces, S = 0; S < u.length; S++) {
                    var F = u[S], G = F.name, q, rt;
                    if (!(G === "nbins" && H.sizeFound)) {
                      for (_ = 0; _ < c.length; _++) {
                        if (x = c[_], f = H.dirs[_], q = F.aStr[f], A(x._input, q).get() !== void 0) {
                          H[G] = C(q), H[G + "Found"] = !0;
                          break;
                        }
                        rt = (x._autoBin || {})[f] || {}, rt[G] && A(x, q).set(rt[G]);
                      }
                      if (G === "start" || G === "end")
                        for (; _ < c.length; _++)
                          x = c[_], x["_" + f + "bingroup"] && (rt = (x._autoBin || {})[f] || {}, C(q, rt[G]));
                      G === "nbins" && !H.sizeFound && !H.nbinsFound && (x = c[0], H[G] = C(q));
                    }
                  }
                }
              };
            }
          ),
          /***/
          85079: (
            /***/
            function(Y, K, e) {
              var b = e(33626), P = e(34809), n = e(78766), s = e(17550).handleText, T = e(59760), A = e(16160);
              Y.exports = function(u, t, r, i) {
                function a(m, L) {
                  return P.coerce(u, t, A, m, L);
                }
                var l = a("x"), o = a("y"), y = a("cumulative.enabled");
                y && (a("cumulative.direction"), a("cumulative.currentbin")), a("text");
                var g = a("textposition");
                s(u, t, i, a, g, {
                  moduleHasSelected: !0,
                  moduleHasUnselected: !0,
                  moduleHasConstrain: !0,
                  moduleHasCliponaxis: !0,
                  moduleHasTextangle: !0,
                  moduleHasInsideanchor: !0
                }), a("hovertext"), a("hovertemplate"), a("xhoverformat"), a("yhoverformat");
                var x = a("orientation", o && !l ? "h" : "v"), c = x === "v" ? "x" : "y", v = x === "v" ? "y" : "x", f = l && o ? Math.min(P.minRowLength(l) && P.minRowLength(o)) : P.minRowLength(t[c] || []);
                if (!f) {
                  t.visible = !1;
                  return;
                }
                t._length = f;
                var _ = b.getComponentMethod("calendars", "handleTraceDefaults");
                _(u, t, ["x", "y"], i);
                var S = t[v];
                S && a("histfunc"), a("histnorm"), a("autobin" + c), T(u, t, a, r, i), P.coerceSelectionMarkerOpacity(t, a);
                var M = (t.marker.line || {}).color, C = b.getComponentMethod("errorbars", "supplyDefaults");
                C(u, t, M || n.defaultLine, {
                  axis: "y"
                }), C(u, t, M || n.defaultLine, {
                  axis: "x",
                  inherit: "y"
                }), a("zorder");
              };
            }
          ),
          /***/
          82604: (
            /***/
            function(Y) {
              Y.exports = function(e, b, P, n, s) {
                if (e.x = "xVal" in b ? b.xVal : b.x, e.y = "yVal" in b ? b.yVal : b.y, "zLabelVal" in b && (e.z = b.zLabelVal), b.xa && (e.xaxis = b.xa), b.ya && (e.yaxis = b.ya), !(P.cumulative || {}).enabled) {
                  var T = Array.isArray(s) ? n[0].pts[s[0]][s[1]] : n[s].pts;
                  e.pointNumbers = T, e.binNumber = e.pointNumber, delete e.pointNumber, delete e.pointIndex;
                  var A;
                  if (P._indexToPoints) {
                    A = [];
                    for (var p = 0; p < T.length; p++)
                      A = A.concat(P._indexToPoints[T[p]]);
                  } else
                    A = T;
                  e.pointIndices = A;
                }
                return e;
              };
            }
          ),
          /***/
          20487: (
            /***/
            function(Y, K, e) {
              var b = e(91664).hoverPoints, P = e(29714).hoverLabelText;
              Y.exports = function(s, T, A, p, u) {
                var t = b(s, T, A, p, u);
                if (t) {
                  s = t[0];
                  var r = s.cd[s.index], i = s.cd[0].trace;
                  if (!i.cumulative.enabled) {
                    var a = i.orientation === "h" ? "y" : "x";
                    s[a + "Label"] = P(s[a + "a"], [r.ph0, r.ph1], i[a + "hoverformat"]);
                  }
                  return t;
                }
              };
            }
          ),
          /***/
          74461: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(16160),
                layoutAttributes: e(25412),
                supplyDefaults: e(85079),
                crossTraceDefaults: e(83380),
                supplyLayoutDefaults: e(78931),
                calc: e(53616).calc,
                crossTraceCalc: e(24782).crossTraceCalc,
                plot: e(32995).plot,
                layerName: "barlayer",
                style: e(6851).style,
                styleOnSelect: e(6851).styleOnSelect,
                colorbar: e(21146),
                hoverPoints: e(20487),
                selectPoints: e(88384),
                eventData: e(82604),
                moduleType: "trace",
                name: "histogram",
                basePlotModule: e(37703),
                categories: ["bar-like", "cartesian", "svg", "bar", "histogram", "oriented", "errorBarsOK", "showLegend"],
                meta: {}
              };
            }
          ),
          /***/
          58665: (
            /***/
            function(Y) {
              Y.exports = {
                percent: function(K, e) {
                  for (var b = K.length, P = 100 / e, n = 0; n < b; n++) K[n] *= P;
                },
                probability: function(K, e) {
                  for (var b = K.length, P = 0; P < b; P++) K[P] /= e;
                },
                density: function(K, e, b, P) {
                  var n = K.length;
                  P = P || 1;
                  for (var s = 0; s < n; s++) K[s] *= b[s] * P;
                },
                "probability density": function(K, e, b, P) {
                  var n = K.length;
                  P && (e /= P);
                  for (var s = 0; s < n; s++) K[s] *= b[s] / e;
                }
              };
            }
          ),
          /***/
          9310: (
            /***/
            function(Y, K, e) {
              var b = e(16160), P = e(64766), n = e(81658), s = e(9829), T = e(80712).axisHoverFormat, A = e(3208).rb, p = e(3208).ay, u = e(87163), t = e(93049).extendFlat;
              Y.exports = t({
                x: b.x,
                y: b.y,
                z: {
                  valType: "data_array",
                  editType: "calc"
                },
                marker: {
                  color: {
                    valType: "data_array",
                    editType: "calc"
                  },
                  editType: "calc"
                },
                histnorm: b.histnorm,
                histfunc: b.histfunc,
                nbinsx: b.nbinsx,
                xbins: P("x"),
                nbinsy: b.nbinsy,
                ybins: P("y"),
                autobinx: b.autobinx,
                autobiny: b.autobiny,
                bingroup: t({}, b.bingroup, {}),
                xbingroup: t({}, b.bingroup, {}),
                ybingroup: t({}, b.bingroup, {}),
                xgap: n.xgap,
                ygap: n.ygap,
                zsmooth: n.zsmooth,
                xhoverformat: T("x"),
                yhoverformat: T("y"),
                zhoverformat: T("z", 1),
                hovertemplate: A({}, {
                  keys: "z"
                }),
                texttemplate: p({
                  arrayOk: !1,
                  editType: "plot"
                }, {
                  keys: "z"
                }),
                textfont: n.textfont,
                showlegend: t({}, s.showlegend, {
                  dflt: !1
                })
              }, u("", {
                cLetter: "z",
                autoColorDflt: !1
              }));
            }
          ),
          /***/
          19226: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(29714), n = e(34870), s = e(58665), T = e(48198), A = e(64852), p = e(53616).calcAllAutoBins;
              Y.exports = function(a, l) {
                var o = P.getFromId(a, l.xaxis), y = P.getFromId(a, l.yaxis), g = l.xcalendar, x = l.ycalendar, c = function(ee) {
                  return o.r2c(ee, 0, g);
                }, v = function(ee) {
                  return y.r2c(ee, 0, x);
                }, f = function(ee) {
                  return o.c2r(ee, 0, g);
                }, _ = function(ee) {
                  return y.c2r(ee, 0, x);
                }, S, M, C, m, L = p(a, l, o, "x"), d = L[0], h = L[1], E = p(a, l, y, "y"), w = E[0], z = E[1], O = l._length;
                h.length > O && h.splice(O, h.length - O), z.length > O && z.splice(O, z.length - O);
                var B = [], V = [], U = [], H = typeof d.size == "string", F = typeof w.size == "string", G = [], q = [], rt = H ? G : d, st = F ? q : w, vt = 0, ht = [], et = [], Q = l.histnorm, j = l.histfunc, at = Q.indexOf("density") !== -1, ut = j === "max" || j === "min", nt = ut ? null : 0, X = n.count, ct = s[Q], lt = !1, pt = [], wt = [], Et = "z" in l ? l.z : "marker" in l && Array.isArray(l.marker.color) ? l.marker.color : "";
                Et && j !== "count" && (lt = j === "avg", X = n[j]);
                var Ct = d.size, Gt = c(d.start), Jt = c(d.end) + (Gt - P.tickIncrement(Gt, Ct, !1, g)) / 1e6;
                for (S = Gt; S < Jt; S = P.tickIncrement(S, Ct, !1, g))
                  V.push(nt), G.push(S), lt && U.push(0);
                G.push(S);
                var Qt = V.length, Vt = (S - Gt) / Qt, zt = f(Gt + Vt / 2), Rt = w.size, Wt = v(w.start), kt = v(w.end) + (Wt - P.tickIncrement(Wt, Rt, !1, x)) / 1e6;
                for (S = Wt; S < kt; S = P.tickIncrement(S, Rt, !1, x)) {
                  B.push(V.slice()), q.push(S);
                  var re = new Array(Qt);
                  for (M = 0; M < Qt; M++) re[M] = [];
                  et.push(re), lt && ht.push(U.slice());
                }
                q.push(S);
                var ge = B.length, _e = (S - Wt) / ge, ce = _(Wt + _e / 2);
                at && (pt = u(V.length, rt, Vt, H), wt = u(B.length, st, _e, F)), !H && o.type === "date" && (rt = t(c, rt)), !F && y.type === "date" && (st = t(v, st));
                var ae = !0, Se = !0, ze = new Array(Qt), Ne = new Array(ge), Ve = 1 / 0, Oe = 1 / 0, ur = 1 / 0, ie = 1 / 0;
                for (S = 0; S < O; S++) {
                  var $t = h[S], jt = z[S];
                  C = b.findBin($t, rt), m = b.findBin(jt, st), C >= 0 && C < Qt && m >= 0 && m < ge && (vt += X(C, S, B[m], Et, ht[m]), et[m][C].push(S), ae && (ze[C] === void 0 ? ze[C] = $t : ze[C] !== $t && (ae = !1)), Se && (Ne[m] === void 0 ? Ne[m] = jt : Ne[m] !== jt && (Se = !1)), Ve = Math.min(Ve, $t - G[C]), Oe = Math.min(Oe, G[C + 1] - $t), ur = Math.min(ur, jt - q[m]), ie = Math.min(ie, q[m + 1] - jt));
                }
                if (lt)
                  for (m = 0; m < ge; m++) vt += T(B[m], ht[m]);
                if (ct)
                  for (m = 0; m < ge; m++) ct(B[m], vt, pt, wt[m]);
                return {
                  x: h,
                  xRanges: r(G, ae && ze, Ve, Oe, o, g),
                  x0: zt,
                  dx: Vt,
                  y: z,
                  yRanges: r(q, Se && Ne, ur, ie, y, x),
                  y0: ce,
                  dy: _e,
                  z: B,
                  pts: et
                };
              };
              function u(i, a, l, o) {
                var y = new Array(i), g;
                if (o)
                  for (g = 0; g < i; g++) y[g] = 1 / (a[g + 1] - a[g]);
                else {
                  var x = 1 / l;
                  for (g = 0; g < i; g++) y[g] = x;
                }
                return y;
              }
              function t(i, a) {
                return {
                  start: i(a.start),
                  end: i(a.end),
                  size: a.size
                };
              }
              function r(i, a, l, o, y, g) {
                var x, c = i.length - 1, v = new Array(c), f = A(l, o, i, y, g);
                for (x = 0; x < c; x++) {
                  var _ = (a || [])[x];
                  v[x] = _ === void 0 ? [f(i[x]), f(i[x + 1], !0)] : [_, _];
                }
                return v;
              }
            }
          ),
          /***/
          29097: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(77134), n = e(44143), s = e(39356), T = e(63814), A = e(9310);
              Y.exports = function(u, t, r, i) {
                function a(l, o) {
                  return b.coerce(u, t, A, l, o);
                }
                P(u, t, a, i), t.visible !== !1 && (n(u, t, a, i), s(u, t, i, a, {
                  prefix: "",
                  cLetter: "z"
                }), a("hovertemplate"), T(a, i), a("xhoverformat"), a("yhoverformat"));
              };
            }
          ),
          /***/
          1873: (
            /***/
            function(Y, K, e) {
              var b = e(93125), P = e(29714).hoverLabelText;
              Y.exports = function(s, T, A, p, u) {
                var t = b(s, T, A, p, u);
                if (t) {
                  s = t[0];
                  var r = s.index, i = r[0], a = r[1], l = s.cd[0], o = l.trace, y = l.xRanges[a], g = l.yRanges[i];
                  return s.xLabel = P(s.xa, [y[0], y[1]], o.xhoverformat), s.yLabel = P(s.ya, [g[0], g[1]], o.yhoverformat), t;
                }
              };
            }
          ),
          /***/
          66143: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(9310),
                supplyDefaults: e(29097),
                crossTraceDefaults: e(83380),
                calc: e(51670),
                plot: e(19236),
                layerName: "heatmaplayer",
                colorbar: e(12431),
                style: e(12774),
                hoverPoints: e(1873),
                eventData: e(82604),
                moduleType: "trace",
                name: "histogram2d",
                basePlotModule: e(37703),
                categories: ["cartesian", "svg", "2dMap", "histogram", "showLegend"],
                meta: {}
              };
            }
          ),
          /***/
          77134: (
            /***/
            function(Y, K, e) {
              var b = e(33626), P = e(34809);
              Y.exports = function(s, T, A, p) {
                var u = A("x"), t = A("y"), r = P.minRowLength(u), i = P.minRowLength(t);
                if (!r || !i) {
                  T.visible = !1;
                  return;
                }
                T._length = Math.min(r, i);
                var a = b.getComponentMethod("calendars", "handleTraceDefaults");
                a(s, T, ["x", "y"], p);
                var l = A("z") || A("marker.color");
                l && A("histfunc"), A("histnorm"), A("autobinx"), A("autobiny");
              };
            }
          ),
          /***/
          85018: (
            /***/
            function(Y, K, e) {
              var b = e(9310), P = e(52240), n = e(87163), s = e(80712).axisHoverFormat, T = e(93049).extendFlat;
              Y.exports = T({
                x: b.x,
                y: b.y,
                z: b.z,
                marker: b.marker,
                histnorm: b.histnorm,
                histfunc: b.histfunc,
                nbinsx: b.nbinsx,
                xbins: b.xbins,
                nbinsy: b.nbinsy,
                ybins: b.ybins,
                autobinx: b.autobinx,
                autobiny: b.autobiny,
                bingroup: b.bingroup,
                xbingroup: b.xbingroup,
                ybingroup: b.ybingroup,
                autocontour: P.autocontour,
                ncontours: P.ncontours,
                contours: P.contours,
                line: {
                  color: P.line.color,
                  width: T({}, P.line.width, {
                    dflt: 0.5
                  }),
                  dash: P.line.dash,
                  smoothing: P.line.smoothing,
                  editType: "plot"
                },
                xhoverformat: s("x"),
                yhoverformat: s("y"),
                zhoverformat: s("z", 1),
                hovertemplate: b.hovertemplate,
                texttemplate: P.texttemplate,
                textfont: P.textfont
              }, n("", {
                cLetter: "z",
                editTypeOverride: "calc"
              }));
            }
          ),
          /***/
          49389: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(77134), n = e(47495), s = e(39889), T = e(63814), A = e(85018);
              Y.exports = function(u, t, r, i) {
                function a(o, y) {
                  return b.coerce(u, t, A, o, y);
                }
                function l(o) {
                  return b.coerce2(u, t, A, o);
                }
                P(u, t, a, i), t.visible !== !1 && (n(u, t, a, l), s(u, t, a, i), a("xhoverformat"), a("yhoverformat"), a("hovertemplate"), t.contours && t.contours.coloring === "heatmap" && T(a, i));
              };
            }
          ),
          /***/
          81955: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(85018),
                supplyDefaults: e(49389),
                crossTraceDefaults: e(83380),
                calc: e(40352),
                plot: e(8850).plot,
                layerName: "contourlayer",
                style: e(1328),
                colorbar: e(92697),
                hoverPoints: e(29815),
                moduleType: "trace",
                name: "histogram2dcontour",
                basePlotModule: e(37703),
                categories: ["cartesian", "svg", "2dMap", "contour", "histogram", "showLegend"],
                meta: {}
              };
            }
          ),
          /***/
          12505: (
            /***/
            function(Y, K, e) {
              var b = e(3208).rb, P = e(3208).ay, n = e(87163), s = e(13792).u, T = e(55412), A = e(56708), p = e(71856), u = e(43236), t = e(93049).extendFlat, r = e(94850).k;
              Y.exports = {
                labels: A.labels,
                parents: A.parents,
                values: A.values,
                branchvalues: A.branchvalues,
                count: A.count,
                level: A.level,
                maxdepth: A.maxdepth,
                tiling: {
                  orientation: {
                    valType: "enumerated",
                    values: ["v", "h"],
                    dflt: "h",
                    editType: "plot"
                  },
                  flip: p.tiling.flip,
                  pad: {
                    valType: "number",
                    min: 0,
                    dflt: 0,
                    editType: "plot"
                  },
                  editType: "calc"
                },
                marker: t({
                  colors: A.marker.colors,
                  line: A.marker.line,
                  pattern: r,
                  editType: "calc"
                }, n("marker", {
                  colorAttr: "colors",
                  anim: !1
                  // TODO: set to anim: true?
                })),
                leaf: A.leaf,
                pathbar: p.pathbar,
                text: T.text,
                textinfo: A.textinfo,
                // TODO: incorporate `label` and `value` in the eventData
                texttemplate: P({
                  editType: "plot"
                }, {
                  keys: u.eventDataKeys.concat(["label", "value"])
                }),
                hovertext: T.hovertext,
                hoverinfo: A.hoverinfo,
                hovertemplate: b({}, {
                  keys: u.eventDataKeys
                }),
                textfont: T.textfont,
                insidetextfont: T.insidetextfont,
                outsidetextfont: p.outsidetextfont,
                textposition: p.textposition,
                sort: T.sort,
                root: A.root,
                domain: s({
                  name: "icicle",
                  trace: !0,
                  editType: "calc"
                })
              };
            }
          ),
          /***/
          63387: (
            /***/
            function(Y, K, e) {
              var b = e(44122);
              K.name = "icicle", K.plot = function(P, n, s, T) {
                b.plotBasePlot(K.name, P, n, s, T);
              }, K.clean = function(P, n, s, T) {
                b.cleanBasePlot(K.name, P, n, s, T);
              };
            }
          ),
          /***/
          36349: (
            /***/
            function(Y, K, e) {
              var b = e(14852);
              K._ = function(P, n) {
                return b.calc(P, n);
              }, K.t = function(P) {
                return b._runCrossTraceCalc("icicle", P);
              };
            }
          ),
          /***/
          17918: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(12505), n = e(78766), s = e(13792).N, T = e(17550).handleText, A = e(56155).TEXTPAD, p = e(46979).handleMarkerDefaults, u = e(88856), t = u.hasColorscale, r = u.handleDefaults;
              Y.exports = function(a, l, o, y) {
                function g(C, m) {
                  return b.coerce(a, l, P, C, m);
                }
                var x = g("labels"), c = g("parents");
                if (!x || !x.length || !c || !c.length) {
                  l.visible = !1;
                  return;
                }
                var v = g("values");
                v && v.length ? g("branchvalues") : g("count"), g("level"), g("maxdepth"), g("tiling.orientation"), g("tiling.flip"), g("tiling.pad");
                var f = g("text");
                g("texttemplate"), l.texttemplate || g("textinfo", b.isArrayOrTypedArray(f) ? "text+label" : "label"), g("hovertext"), g("hovertemplate");
                var _ = g("pathbar.visible"), S = "auto";
                T(a, l, y, g, S, {
                  hasPathbar: _,
                  moduleHasSelected: !1,
                  moduleHasUnselected: !1,
                  moduleHasConstrain: !1,
                  moduleHasCliponaxis: !1,
                  moduleHasTextangle: !1,
                  moduleHasInsideanchor: !1
                }), g("textposition"), p(a, l, y, g);
                var M = l._hasColorscale = t(a, "marker", "colors") || (a.marker || {}).coloraxis;
                M && r(a, l, y, g, {
                  prefix: "marker.",
                  cLetter: "c"
                }), g("leaf.opacity", M ? 1 : 0.7), l._hovered = {
                  marker: {
                    line: {
                      width: 2,
                      color: n.contrast(y.paper_bgcolor)
                    }
                  }
                }, _ && (g("pathbar.thickness", l.pathbar.textfont.size + 2 * A), g("pathbar.side"), g("pathbar.edgeshape")), g("sort"), g("root.color"), s(l, y, g), l._length = null;
              };
            }
          ),
          /***/
          23593: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(34809), n = e(62203), s = e(30635), T = e(29316), A = e(50579).styleOne, p = e(43236), u = e(33108), t = e(44691), r = e(19718).formatSliceLabel, i = !1;
              Y.exports = function(l, o, y, g, x) {
                var c = x.width, v = x.height, f = x.viewX, _ = x.viewY, S = x.pathSlice, M = x.toMoveInsideSlice, C = x.strTransform, m = x.hasTransition, L = x.handleSlicesExit, d = x.makeUpdateSliceInterpolator, h = x.makeUpdateTextInterpolator, E = x.prevEntry, w = {}, z = l._context.staticPlot, O = l._fullLayout, B = o[0], V = B.trace, U = V.textposition.indexOf("left") !== -1, H = V.textposition.indexOf("right") !== -1, F = V.textposition.indexOf("bottom") !== -1, G = T(y, [c, v], {
                  flipX: V.tiling.flip.indexOf("x") > -1,
                  flipY: V.tiling.flip.indexOf("y") > -1,
                  orientation: V.tiling.orientation,
                  pad: {
                    inner: V.tiling.pad
                  },
                  maxDepth: V._maxDepth
                }), q = G.descendants(), rt = 1 / 0, st = -1 / 0;
                q.forEach(function(j) {
                  var at = j.depth;
                  at >= V._maxDepth ? (j.x0 = j.x1 = (j.x0 + j.x1) / 2, j.y0 = j.y1 = (j.y0 + j.y1) / 2) : (rt = Math.min(rt, at), st = Math.max(st, at));
                }), g = g.data(q, u.getPtId), V._maxVisibleLayers = isFinite(st) ? st - rt + 1 : 0, g.enter().append("g").classed("slice", !0), L(g, i, w, [c, v], S), g.order();
                var vt = null;
                if (m && E) {
                  var ht = u.getPtId(E);
                  g.each(function(j) {
                    vt === null && u.getPtId(j) === ht && (vt = {
                      x0: j.x0,
                      x1: j.x1,
                      y0: j.y0,
                      y1: j.y1
                    });
                  });
                }
                var et = function() {
                  return vt || {
                    x0: 0,
                    x1: c,
                    y0: 0,
                    y1: v
                  };
                }, Q = g;
                return m && (Q = Q.transition().each("end", function() {
                  var j = b.select(this);
                  u.setSliceCursor(j, l, {
                    hideOnRoot: !0,
                    hideOnLeaves: !1,
                    isTransitioning: !1
                  });
                })), Q.each(function(j) {
                  j._x0 = f(j.x0), j._x1 = f(j.x1), j._y0 = _(j.y0), j._y1 = _(j.y1), j._hoverX = f(j.x1 - V.tiling.pad), j._hoverY = _(F ? j.y1 - V.tiling.pad / 2 : j.y0 + V.tiling.pad / 2);
                  var at = b.select(this), ut = P.ensureSingle(at, "path", "surface", function(lt) {
                    lt.style("pointer-events", z ? "none" : "all");
                  });
                  m ? ut.transition().attrTween("d", function(lt) {
                    var pt = d(lt, i, et(), [c, v], {
                      orientation: V.tiling.orientation,
                      flipX: V.tiling.flip.indexOf("x") > -1,
                      flipY: V.tiling.flip.indexOf("y") > -1
                    });
                    return function(wt) {
                      return S(pt(wt));
                    };
                  }) : ut.attr("d", S), at.call(t, y, l, o, {
                    styleOne: A,
                    eventDataKeys: p.eventDataKeys,
                    transitionTime: p.CLICK_TRANSITION_TIME,
                    transitionEasing: p.CLICK_TRANSITION_EASING
                  }).call(u.setSliceCursor, l, {
                    isTransitioning: l._transitioning
                  }), ut.call(A, j, V, l, {
                    hovered: !1
                  }), j.x0 === j.x1 || j.y0 === j.y1 ? j._text = "" : j._text = r(j, y, V, o, O) || "";
                  var nt = P.ensureSingle(at, "g", "slicetext"), X = P.ensureSingle(nt, "text", "", function(lt) {
                    lt.attr("data-notex", 1);
                  }), ct = P.ensureUniformFontSize(l, u.determineTextFont(V, j, O.font));
                  X.text(j._text || " ").classed("slicetext", !0).attr("text-anchor", H ? "end" : U ? "start" : "middle").call(n.font, ct).call(s.convertToTspans, l), j.textBB = n.bBox(X.node()), j.transform = M(j, {
                    fontSize: ct.size
                  }), j.transform.fontSize = ct.size, m ? X.transition().attrTween("transform", function(lt) {
                    var pt = h(lt, i, et(), [c, v]);
                    return function(wt) {
                      return C(pt(wt));
                    };
                  }) : X.attr("transform", C(j));
                }), vt;
              };
            }
          ),
          /***/
          36858: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                moduleType: "trace",
                name: "icicle",
                basePlotModule: e(63387),
                categories: [],
                animatable: !0,
                attributes: e(12505),
                layoutAttributes: e(60052),
                supplyDefaults: e(17918),
                supplyLayoutDefaults: e(11747),
                calc: e(36349)._,
                crossTraceCalc: e(36349).t,
                plot: e(1395),
                style: e(50579).style,
                colorbar: e(21146),
                meta: {}
              };
            }
          ),
          /***/
          60052: (
            /***/
            function(Y) {
              Y.exports = {
                iciclecolorway: {
                  valType: "colorlist",
                  editType: "calc"
                },
                extendiciclecolors: {
                  valType: "boolean",
                  dflt: !0,
                  editType: "calc"
                }
              };
            }
          ),
          /***/
          11747: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(60052);
              Y.exports = function(s, T) {
                function A(p, u) {
                  return b.coerce(s, T, P, p, u);
                }
                A("iciclecolorway", T.colorway), A("extendiciclecolors");
              };
            }
          ),
          /***/
          29316: (
            /***/
            function(Y, K, e) {
              var b = e(92264), P = e(36141);
              Y.exports = function(s, T, A) {
                var p = A.flipX, u = A.flipY, t = A.orientation === "h", r = A.maxDepth, i = T[0], a = T[1];
                r && (i = (s.height + 1) * T[0] / Math.min(s.height + 1, r), a = (s.height + 1) * T[1] / Math.min(s.height + 1, r));
                var l = b.partition().padding(A.pad.inner).size(t ? [T[1], i] : [T[0], a])(s);
                return (t || p || u) && P(l, T, {
                  swapXY: t,
                  flipX: p,
                  flipY: u
                }), l;
              };
            }
          ),
          /***/
          1395: (
            /***/
            function(Y, K, e) {
              var b = e(41567), P = e(23593);
              Y.exports = function(s, T, A, p) {
                return b(s, T, A, p, {
                  type: "icicle",
                  drawDescendants: P
                });
              };
            }
          ),
          /***/
          50579: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(78766), n = e(34809), s = e(84102).resizeText, T = e(72043);
              function A(u) {
                var t = u._fullLayout._iciclelayer.selectAll(".trace");
                s(u, t, "icicle"), t.each(function(r) {
                  var i = b.select(this), a = r[0], l = a.trace;
                  i.style("opacity", l.opacity), i.selectAll("path.surface").each(function(o) {
                    b.select(this).call(p, o, l, u);
                  });
                });
              }
              function p(u, t, r, i) {
                var a = t.data.data, l = !t.children, o = a.i, y = n.castOption(r, o, "marker.line.color") || P.defaultLine, g = n.castOption(r, o, "marker.line.width") || 0;
                u.call(T, t, r, i).style("stroke-width", g).call(P.stroke, y).style("opacity", l ? r.leaf.opacity : null);
              }
              Y.exports = {
                style: A,
                styleOne: p
              };
            }
          ),
          /***/
          22153: (
            /***/
            function(Y, K, e) {
              for (var b = e(9829), P = e(36640).zorder, n = e(3208).rb, s = e(93049).extendFlat, T = e(42939).colormodel, A = ["rgb", "rgba", "rgba256", "hsl", "hsla"], p = [], u = [], t = 0; t < A.length; t++) {
                var r = T[A[t]];
                p.push("For the `" + A[t] + "` colormodel, it is [" + (r.zminDflt || r.min).join(", ") + "]."), u.push("For the `" + A[t] + "` colormodel, it is [" + (r.zmaxDflt || r.max).join(", ") + "].");
              }
              Y.exports = s({
                source: {
                  valType: "string",
                  editType: "calc"
                },
                z: {
                  valType: "data_array",
                  editType: "calc"
                },
                colormodel: {
                  valType: "enumerated",
                  values: A,
                  editType: "calc"
                },
                zsmooth: {
                  valType: "enumerated",
                  values: ["fast", !1],
                  dflt: !1,
                  editType: "plot"
                },
                zmin: {
                  valType: "info_array",
                  items: [{
                    valType: "number",
                    editType: "calc"
                  }, {
                    valType: "number",
                    editType: "calc"
                  }, {
                    valType: "number",
                    editType: "calc"
                  }, {
                    valType: "number",
                    editType: "calc"
                  }],
                  editType: "calc"
                },
                zmax: {
                  valType: "info_array",
                  items: [{
                    valType: "number",
                    editType: "calc"
                  }, {
                    valType: "number",
                    editType: "calc"
                  }, {
                    valType: "number",
                    editType: "calc"
                  }, {
                    valType: "number",
                    editType: "calc"
                  }],
                  editType: "calc"
                },
                x0: {
                  valType: "any",
                  dflt: 0,
                  editType: "calc+clearAxisTypes"
                },
                y0: {
                  valType: "any",
                  dflt: 0,
                  editType: "calc+clearAxisTypes"
                },
                dx: {
                  valType: "number",
                  dflt: 1,
                  editType: "calc"
                },
                dy: {
                  valType: "number",
                  dflt: 1,
                  editType: "calc"
                },
                text: {
                  valType: "data_array",
                  editType: "plot"
                },
                hovertext: {
                  valType: "data_array",
                  editType: "plot"
                },
                hoverinfo: s({}, b.hoverinfo, {
                  flags: ["x", "y", "z", "color", "name", "text"],
                  dflt: "x+y+z+text+name"
                }),
                hovertemplate: n({}, {
                  keys: ["z", "color", "colormodel"]
                }),
                zorder: P,
                transforms: void 0
              });
            }
          ),
          /***/
          31181: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(42939), n = e(10721), s = e(29714), T = e(34809).maxRowLength, A = e(96315).p;
              Y.exports = function(i, a) {
                var l, o;
                if (a._hasZ)
                  l = a.z.length, o = T(a.z);
                else if (a._hasSource) {
                  var y = A(a.source);
                  l = y.height, o = y.width;
                }
                var g = s.getFromId(i, a.xaxis || "x"), x = s.getFromId(i, a.yaxis || "y"), c = g.d2c(a.x0) - a.dx / 2, v = x.d2c(a.y0) - a.dy / 2, f, _ = [c, c + o * a.dx], S = [v, v + l * a.dy];
                if (g && g.type === "log") for (f = 0; f < o; f++) _.push(c + f * a.dx);
                if (x && x.type === "log") for (f = 0; f < l; f++) S.push(v + f * a.dy);
                a._extremes[g._id] = s.findExtremes(g, _), a._extremes[x._id] = s.findExtremes(x, S), a._scaler = t(a);
                var M = {
                  x0: c,
                  y0: v,
                  z: a.z,
                  w: o,
                  h: l
                };
                return [M];
              };
              function p(r, i, a, l) {
                return function(o) {
                  return b.constrain((o - r) * i, a, l);
                };
              }
              function u(r, i) {
                return function(a) {
                  return b.constrain(a, r, i);
                };
              }
              function t(r) {
                var i = P.colormodel[r.colormodel], a = i.colormodel || r.colormodel, l = a.length;
                r._sArray = [];
                for (var o = 0; o < l; o++)
                  i.min[o] !== r.zmin[o] || i.max[o] !== r.zmax[o] ? r._sArray.push(p(r.zmin[o], (i.max[o] - i.min[o]) / (r.zmax[o] - r.zmin[o]), i.min[o], i.max[o])) : r._sArray.push(u(i.min[o], i.max[o]));
                return function(y) {
                  for (var g = y.slice(0, l), x = 0; x < l; x++) {
                    var c = g[x];
                    if (!n(c)) return !1;
                    g[x] = r._sArray[x](c);
                  }
                  return g;
                };
              }
            }
          ),
          /***/
          42939: (
            /***/
            function(Y) {
              Y.exports = {
                colormodel: {
                  // min and max define the numerical range accepted in CSS
                  // If z(min|max)Dflt are not defined, z(min|max) will default to min/max
                  rgb: {
                    min: [0, 0, 0],
                    max: [255, 255, 255],
                    fmt: function(K) {
                      return K.slice(0, 3);
                    },
                    suffix: ["", "", ""]
                  },
                  rgba: {
                    min: [0, 0, 0, 0],
                    max: [255, 255, 255, 1],
                    fmt: function(K) {
                      return K.slice(0, 4);
                    },
                    suffix: ["", "", "", ""]
                  },
                  rgba256: {
                    colormodel: "rgba",
                    // because rgba256 is not an accept colormodel in CSS
                    zminDflt: [0, 0, 0, 0],
                    zmaxDflt: [255, 255, 255, 255],
                    min: [0, 0, 0, 0],
                    max: [255, 255, 255, 1],
                    fmt: function(K) {
                      return K.slice(0, 4);
                    },
                    suffix: ["", "", "", ""]
                  },
                  hsl: {
                    min: [0, 0, 0],
                    max: [360, 100, 100],
                    fmt: function(K) {
                      var e = K.slice(0, 3);
                      return e[1] = e[1] + "%", e[2] = e[2] + "%", e;
                    },
                    suffix: ["°", "%", "%"]
                  },
                  hsla: {
                    min: [0, 0, 0, 0],
                    max: [360, 100, 100, 1],
                    fmt: function(K) {
                      var e = K.slice(0, 4);
                      return e[1] = e[1] + "%", e[2] = e[2] + "%", e;
                    },
                    suffix: ["°", "%", "%", ""]
                  }
                }
              };
            }
          ),
          /***/
          82766: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(22153), n = e(42939), s = e(84619).IMAGE_URL_PREFIX;
              Y.exports = function(A, p) {
                function u(i, a) {
                  return b.coerce(A, p, P, i, a);
                }
                u("source"), p.source && !p.source.match(s) && delete p.source, p._hasSource = !!p.source;
                var t = u("z");
                if (p._hasZ = !(t === void 0 || !t.length || !t[0] || !t[0].length), !p._hasZ && !p._hasSource) {
                  p.visible = !1;
                  return;
                }
                u("x0"), u("y0"), u("dx"), u("dy");
                var r;
                p._hasZ ? (u("colormodel", "rgb"), r = n.colormodel[p.colormodel], u("zmin", r.zminDflt || r.min), u("zmax", r.zmaxDflt || r.max)) : p._hasSource && (p.colormodel = "rgba256", r = n.colormodel[p.colormodel], p.zmin = r.zminDflt, p.zmax = r.zmaxDflt), u("zsmooth"), u("text"), u("hovertext"), u("hovertemplate"), p._length = null, u("zorder");
              };
            }
          ),
          /***/
          45461: (
            /***/
            function(Y) {
              Y.exports = function(e, b) {
                return "xVal" in b && (e.x = b.xVal), "yVal" in b && (e.y = b.yVal), b.xa && (e.xaxis = b.xa), b.ya && (e.yaxis = b.ya), e.color = b.color, e.colormodel = b.trace.colormodel, e.z || (e.z = b.color), e;
              };
            }
          ),
          /***/
          96315: (
            /***/
            function(Y, K, e) {
              var b = e(19490), P = e(84619).IMAGE_URL_PREFIX, n = e(45708).Buffer;
              K.p = function(s) {
                var T = s.replace(P, ""), A = new n(T, "base64");
                return b(A);
              };
            }
          ),
          /***/
          57328: (
            /***/
            function(Y, K, e) {
              var b = e(32141), P = e(34809), n = P.isArrayOrTypedArray, s = e(42939);
              Y.exports = function(A, p, u) {
                var t = A.cd[0], r = t.trace, i = A.xa, a = A.ya;
                if (!(b.inbox(p - t.x0, p - (t.x0 + t.w * r.dx), 0) > 0 || b.inbox(u - t.y0, u - (t.y0 + t.h * r.dy), 0) > 0)) {
                  var l = Math.floor((p - t.x0) / r.dx), o = Math.floor(Math.abs(u - t.y0) / r.dy), y;
                  if (r._hasZ ? y = t.z[o][l] : r._hasSource && (y = r._canvas.el.getContext("2d", {
                    willReadFrequently: !0
                  }).getImageData(l, o, 1, 1).data), !!y) {
                    var g = t.hi || r.hoverinfo, x;
                    if (g) {
                      var c = g.split("+");
                      c.indexOf("all") !== -1 && (c = ["color"]), c.indexOf("color") !== -1 && (x = !0);
                    }
                    var v = s.colormodel[r.colormodel], f = v.colormodel || r.colormodel, _ = f.length, S = r._scaler(y), M = v.suffix, C = [];
                    (r.hovertemplate || x) && (C.push("[" + [S[0] + M[0], S[1] + M[1], S[2] + M[2]].join(", ")), _ === 4 && C.push(", " + S[3] + M[3]), C.push("]"), C = C.join(""), A.extraText = f.toUpperCase() + ": " + C);
                    var m;
                    n(r.hovertext) && n(r.hovertext[o]) ? m = r.hovertext[o][l] : n(r.text) && n(r.text[o]) && (m = r.text[o][l]);
                    var L = a.c2p(t.y0 + (o + 0.5) * r.dy), d = t.x0 + (l + 0.5) * r.dx, h = t.y0 + (o + 0.5) * r.dy, E = "[" + y.slice(0, r.colormodel.length).join(", ") + "]";
                    return [P.extendFlat(A, {
                      index: [o, l],
                      x0: i.c2p(t.x0 + l * r.dx),
                      x1: i.c2p(t.x0 + (l + 1) * r.dx),
                      y0: L,
                      y1: L,
                      color: S,
                      xVal: d,
                      xLabelVal: d,
                      yVal: h,
                      yLabelVal: h,
                      zLabelVal: E,
                      text: m,
                      hovertemplateLabels: {
                        zLabel: E,
                        colorLabel: C,
                        "color[0]Label": S[0] + M[0],
                        "color[1]Label": S[1] + M[1],
                        "color[2]Label": S[2] + M[2],
                        "color[3]Label": S[3] + M[3]
                      }
                    })];
                  }
                }
              };
            }
          ),
          /***/
          92106: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(22153),
                supplyDefaults: e(82766),
                calc: e(31181),
                plot: e(36899),
                style: e(67555),
                hoverPoints: e(57328),
                eventData: e(45461),
                moduleType: "trace",
                name: "image",
                basePlotModule: e(37703),
                categories: ["cartesian", "svg", "2dMap", "noSortingByValue"],
                animatable: !1,
                meta: {}
              };
            }
          ),
          /***/
          36899: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(34809), n = P.strTranslate, s = e(62972), T = e(42939), A = e(95544), p = e(1837).STYLE;
              Y.exports = function(t, r, i, a) {
                var l = r.xaxis, o = r.yaxis, y = !t._context._exportedPlot && A();
                P.makeTraceGroups(a, i, "im").each(function(g) {
                  var x = b.select(this), c = g[0], v = c.trace, f = (v.zsmooth === "fast" || v.zsmooth === !1 && y) && !v._hasZ && v._hasSource && l.type === "linear" && o.type === "linear";
                  v._realImage = f;
                  var _ = c.z, S = c.x0, M = c.y0, C = c.w, m = c.h, L = v.dx, d = v.dy, h, E, w, z, O, B;
                  for (B = 0; h === void 0 && B < C; )
                    h = l.c2p(S + B * L), B++;
                  for (B = C; E === void 0 && B > 0; )
                    E = l.c2p(S + B * L), B--;
                  for (B = 0; z === void 0 && B < m; )
                    z = o.c2p(M + B * d), B++;
                  for (B = m; O === void 0 && B > 0; )
                    O = o.c2p(M + B * d), B--;
                  if (E < h && (w = E, E = h, h = w), O < z && (w = z, z = O, O = w), !f) {
                    var V = 0.5;
                    h = Math.max(-V * l._length, h), E = Math.min((1 + V) * l._length, E), z = Math.max(-V * o._length, z), O = Math.min((1 + V) * o._length, O);
                  }
                  var U = Math.round(E - h), H = Math.round(O - z), F = U <= 0 || H <= 0;
                  if (F) {
                    var G = x.selectAll("image").data([]);
                    G.exit().remove();
                    return;
                  }
                  function q(nt) {
                    var X = document.createElement("canvas");
                    X.width = U, X.height = H;
                    var ct = X.getContext("2d", {
                      willReadFrequently: !0
                    }), lt = function(Wt) {
                      return P.constrain(Math.round(l.c2p(S + Wt * L) - h), 0, U);
                    }, pt = function(Wt) {
                      return P.constrain(Math.round(o.c2p(M + Wt * d) - z), 0, H);
                    }, wt = T.colormodel[v.colormodel], Et = wt.colormodel || v.colormodel, Ct = wt.fmt, Gt;
                    for (B = 0; B < c.w; B++) {
                      var Jt = lt(B), Qt = lt(B + 1);
                      if (!(Qt === Jt || isNaN(Qt) || isNaN(Jt)))
                        for (var Vt = 0; Vt < c.h; Vt++) {
                          var zt = pt(Vt), Rt = pt(Vt + 1);
                          Rt === zt || isNaN(Rt) || isNaN(zt) || !nt(B, Vt) || (Gt = v._scaler(nt(B, Vt)), Gt ? ct.fillStyle = Et + "(" + Ct(Gt).join(",") + ")" : ct.fillStyle = "rgba(0,0,0,0)", ct.fillRect(Jt, zt, Qt - Jt, Rt - zt));
                        }
                    }
                    return X;
                  }
                  var rt = x.selectAll("image").data([g]);
                  rt.enter().append("svg:image").attr({
                    xmlns: s.svg,
                    preserveAspectRatio: "none"
                  }), rt.exit().remove();
                  var st = v.zsmooth === !1 ? p : "";
                  if (f) {
                    var vt = P.simpleMap(l.range, l.r2l), ht = P.simpleMap(o.range, o.r2l), et = vt[1] < vt[0], Q = ht[1] > ht[0];
                    if (et || Q) {
                      var j = h + U / 2, at = z + H / 2;
                      st += "transform:" + n(j + "px", at + "px") + "scale(" + (et ? -1 : 1) + "," + (Q ? -1 : 1) + ")" + n(-j + "px", -at + "px") + ";";
                    }
                  }
                  rt.attr("style", st);
                  var ut = new Promise(function(nt) {
                    if (v._hasZ)
                      nt();
                    else if (v._hasSource)
                      if (v._canvas && v._canvas.el.width === C && v._canvas.el.height === m && v._canvas.source === v.source)
                        nt();
                      else {
                        var X = document.createElement("canvas");
                        X.width = C, X.height = m;
                        var ct = X.getContext("2d", {
                          willReadFrequently: !0
                        });
                        v._image = v._image || new Image();
                        var lt = v._image;
                        lt.onload = function() {
                          ct.drawImage(lt, 0, 0), v._canvas = {
                            el: X,
                            source: v.source
                          }, nt();
                        }, lt.setAttribute("src", v.source);
                      }
                  }).then(function() {
                    var nt, X;
                    if (v._hasZ)
                      X = q(function(pt, wt) {
                        var Et = _[wt][pt];
                        return P.isTypedArray(Et) && (Et = Array.from(Et)), Et;
                      }), nt = X.toDataURL("image/png");
                    else if (v._hasSource)
                      if (f)
                        nt = v.source;
                      else {
                        var ct = v._canvas.el.getContext("2d", {
                          willReadFrequently: !0
                        }), lt = ct.getImageData(0, 0, C, m).data;
                        X = q(function(pt, wt) {
                          var Et = 4 * (wt * C + pt);
                          return [lt[Et], lt[Et + 1], lt[Et + 2], lt[Et + 3]];
                        }), nt = X.toDataURL("image/png");
                      }
                    rt.attr({
                      "xlink:href": nt,
                      height: H,
                      width: U,
                      x: h,
                      y: z
                    });
                  });
                  t._promises.push(ut);
                });
              };
            }
          ),
          /***/
          67555: (
            /***/
            function(Y, K, e) {
              var b = e(45568);
              Y.exports = function(n) {
                b.select(n).selectAll(".im image").style("opacity", function(s) {
                  return s[0].trace.opacity;
                });
              };
            }
          ),
          /***/
          95485: (
            /***/
            function(Y, K, e) {
              var b = e(93049).extendFlat, P = e(93049).extendDeep, n = e(13582).overrideAll, s = e(80337), T = e(10229), A = e(13792).u, p = e(25829), u = e(78032).templatedArray, t = e(20909), r = e(80712).descriptionOnlyNumbers, i = s({
                editType: "plot",
                colorEditType: "plot"
              }), a = {
                color: {
                  valType: "color",
                  editType: "plot"
                },
                line: {
                  color: {
                    valType: "color",
                    dflt: T.defaultLine,
                    editType: "plot"
                  },
                  width: {
                    valType: "number",
                    min: 0,
                    dflt: 0,
                    editType: "plot"
                  },
                  editType: "calc"
                },
                thickness: {
                  valType: "number",
                  min: 0,
                  max: 1,
                  dflt: 1,
                  editType: "plot"
                },
                editType: "calc"
              }, l = {
                valType: "info_array",
                items: [{
                  valType: "number",
                  editType: "plot"
                }, {
                  valType: "number",
                  editType: "plot"
                }],
                editType: "plot"
              }, o = u("step", P({}, a, {
                range: l
              }));
              Y.exports = {
                mode: {
                  valType: "flaglist",
                  editType: "calc",
                  flags: ["number", "delta", "gauge"],
                  dflt: "number"
                },
                value: {
                  valType: "number",
                  editType: "calc",
                  anim: !0
                },
                align: {
                  valType: "enumerated",
                  values: ["left", "center", "right"],
                  editType: "plot"
                },
                // position
                domain: A({
                  name: "indicator",
                  trace: !0,
                  editType: "calc"
                }),
                title: {
                  text: {
                    valType: "string",
                    editType: "plot"
                  },
                  align: {
                    valType: "enumerated",
                    values: ["left", "center", "right"],
                    editType: "plot"
                  },
                  font: b({}, i, {}),
                  editType: "plot"
                },
                number: {
                  valueformat: {
                    valType: "string",
                    dflt: "",
                    editType: "plot",
                    description: r("value")
                  },
                  font: b({}, i, {}),
                  prefix: {
                    valType: "string",
                    dflt: "",
                    editType: "plot"
                  },
                  suffix: {
                    valType: "string",
                    dflt: "",
                    editType: "plot"
                  },
                  editType: "plot"
                },
                delta: {
                  reference: {
                    valType: "number",
                    editType: "calc"
                  },
                  position: {
                    valType: "enumerated",
                    values: ["top", "bottom", "left", "right"],
                    dflt: "bottom",
                    editType: "plot"
                  },
                  relative: {
                    valType: "boolean",
                    editType: "plot",
                    dflt: !1
                  },
                  valueformat: {
                    valType: "string",
                    editType: "plot",
                    description: r("value")
                  },
                  increasing: {
                    symbol: {
                      valType: "string",
                      dflt: t.INCREASING.SYMBOL,
                      editType: "plot"
                    },
                    color: {
                      valType: "color",
                      dflt: t.INCREASING.COLOR,
                      editType: "plot"
                    },
                    // TODO: add attribute to show sign
                    editType: "plot"
                  },
                  decreasing: {
                    symbol: {
                      valType: "string",
                      dflt: t.DECREASING.SYMBOL,
                      editType: "plot"
                    },
                    color: {
                      valType: "color",
                      dflt: t.DECREASING.COLOR,
                      editType: "plot"
                    },
                    // TODO: add attribute to hide sign
                    editType: "plot"
                  },
                  font: b({}, i, {}),
                  prefix: {
                    valType: "string",
                    dflt: "",
                    editType: "plot"
                  },
                  suffix: {
                    valType: "string",
                    dflt: "",
                    editType: "plot"
                  },
                  editType: "calc"
                },
                gauge: {
                  shape: {
                    valType: "enumerated",
                    editType: "plot",
                    dflt: "angular",
                    values: ["angular", "bullet"]
                  },
                  bar: P({}, a, {
                    color: {
                      dflt: "green"
                    }
                  }),
                  // Background of the gauge
                  bgcolor: {
                    valType: "color",
                    editType: "plot"
                  },
                  bordercolor: {
                    valType: "color",
                    dflt: T.defaultLine,
                    editType: "plot"
                  },
                  borderwidth: {
                    valType: "number",
                    min: 0,
                    dflt: 1,
                    editType: "plot"
                  },
                  axis: n({
                    range: l,
                    visible: b({}, p.visible, {
                      dflt: !0
                    }),
                    // tick and title properties named and function exactly as in axes
                    tickmode: p.minor.tickmode,
                    nticks: p.nticks,
                    tick0: p.tick0,
                    dtick: p.dtick,
                    tickvals: p.tickvals,
                    ticktext: p.ticktext,
                    ticks: b({}, p.ticks, {
                      dflt: "outside"
                    }),
                    ticklen: p.ticklen,
                    tickwidth: p.tickwidth,
                    tickcolor: p.tickcolor,
                    ticklabelstep: p.ticklabelstep,
                    showticklabels: p.showticklabels,
                    labelalias: p.labelalias,
                    tickfont: s({}),
                    tickangle: p.tickangle,
                    tickformat: p.tickformat,
                    tickformatstops: p.tickformatstops,
                    tickprefix: p.tickprefix,
                    showtickprefix: p.showtickprefix,
                    ticksuffix: p.ticksuffix,
                    showticksuffix: p.showticksuffix,
                    separatethousands: p.separatethousands,
                    exponentformat: p.exponentformat,
                    minexponent: p.minexponent,
                    showexponent: p.showexponent,
                    editType: "plot"
                  }, "plot"),
                  // Steps (or ranges) and thresholds
                  steps: o,
                  threshold: {
                    line: {
                      color: b({}, a.line.color, {}),
                      width: b({}, a.line.width, {
                        dflt: 1
                      }),
                      editType: "plot"
                    },
                    thickness: b({}, a.thickness, {
                      dflt: 0.85
                    }),
                    value: {
                      valType: "number",
                      editType: "calc",
                      dflt: !1
                    },
                    editType: "plot"
                  },
                  editType: "plot"
                  // TODO: in future version, add marker: (bar|needle)
                }
              };
            }
          ),
          /***/
          47751: (
            /***/
            function(Y, K, e) {
              var b = e(44122);
              K.name = "indicator", K.plot = function(P, n, s, T) {
                b.plotBasePlot(K.name, P, n, s, T);
              }, K.clean = function(P, n, s, T) {
                b.cleanBasePlot(K.name, P, n, s, T);
              };
            }
          ),
          /***/
          98385: (
            /***/
            function(Y) {
              function K(e, b) {
                var P = [], n = b.value;
                typeof b._lastValue != "number" && (b._lastValue = b.value);
                var s = b._lastValue, T = s;
                return b._hasDelta && typeof b.delta.reference == "number" && (T = b.delta.reference), P[0] = {
                  y: n,
                  lastY: s,
                  delta: n - T,
                  relativeDelta: (n - T) / T
                }, P;
              }
              Y.exports = {
                calc: K
              };
            }
          ),
          /***/
          74807: (
            /***/
            function(Y) {
              Y.exports = {
                // Defaults for delta
                defaultNumberFontSize: 80,
                bulletNumberDomainSize: 0.25,
                bulletPadding: 0.025,
                innerRadius: 0.75,
                valueThickness: 0.5,
                // thickness of value bars relative to full thickness,
                titlePadding: 5,
                horizontalPadding: 10
              };
            }
          ),
          /***/
          79306: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(95485), n = e(13792).N, s = e(78032), T = e(59008), A = e(74807), p = e(22777), u = e(87433), t = e(12036), r = e(54616);
              function i(l, o, y, g) {
                function x(U, H) {
                  return b.coerce(l, o, P, U, H);
                }
                n(o, g, x), x("mode"), o._hasNumber = o.mode.indexOf("number") !== -1, o._hasDelta = o.mode.indexOf("delta") !== -1, o._hasGauge = o.mode.indexOf("gauge") !== -1;
                var c = x("value");
                o._range = [0, typeof c == "number" ? 1.5 * c : 1];
                var v = new Array(2), f;
                if (o._hasNumber) {
                  x("number.valueformat");
                  var _ = b.extendFlat({}, g.font);
                  _.size = void 0, b.coerceFont(x, "number.font", _), o.number.font.size === void 0 && (o.number.font.size = A.defaultNumberFontSize, v[0] = !0), x("number.prefix"), x("number.suffix"), f = o.number.font.size;
                }
                var S;
                if (o._hasDelta) {
                  var M = b.extendFlat({}, g.font);
                  M.size = void 0, b.coerceFont(x, "delta.font", M), o.delta.font.size === void 0 && (o.delta.font.size = (o._hasNumber ? 0.5 : 1) * (f || A.defaultNumberFontSize), v[1] = !0), x("delta.reference", o.value), x("delta.relative"), x("delta.valueformat", o.delta.relative ? "2%" : ""), x("delta.increasing.symbol"), x("delta.increasing.color"), x("delta.decreasing.symbol"), x("delta.decreasing.color"), x("delta.position"), x("delta.prefix"), x("delta.suffix"), S = o.delta.font.size;
                }
                o._scaleNumbers = (!o._hasNumber || v[0]) && (!o._hasDelta || v[1]) || !1;
                var C = b.extendFlat({}, g.font);
                C.size = 0.25 * (f || S || A.defaultNumberFontSize), b.coerceFont(x, "title.font", C), x("title.text");
                var m, L, d, h;
                function E(U, H) {
                  return b.coerce(m, L, P.gauge, U, H);
                }
                function w(U, H) {
                  return b.coerce(d, h, P.gauge.axis, U, H);
                }
                if (o._hasGauge) {
                  m = l.gauge, m || (m = {}), L = s.newContainer(o, "gauge"), E("shape");
                  var z = o._isBullet = o.gauge.shape === "bullet";
                  z || x("title.align", "center");
                  var O = o._isAngular = o.gauge.shape === "angular";
                  O || x("align", "center"), E("bgcolor", g.paper_bgcolor), E("borderwidth"), E("bordercolor"), E("bar.color"), E("bar.line.color"), E("bar.line.width");
                  var B = A.valueThickness * (o.gauge.shape === "bullet" ? 0.5 : 1);
                  E("bar.thickness", B), T(m, L, {
                    name: "steps",
                    handleItemDefaults: a
                  }), E("threshold.value"), E("threshold.thickness"), E("threshold.line.width"), E("threshold.line.color"), d = {}, m && (d = m.axis || {}), h = s.newContainer(L, "axis"), w("visible"), o._range = w("range", o._range);
                  var V = {
                    font: g.font,
                    noAutotickangles: !0,
                    outerTicks: !0,
                    noTicklabelshift: !0,
                    noTicklabelstandoff: !0
                  };
                  p(d, h, w, "linear"), r(d, h, w, "linear", V), t(d, h, w, "linear", V), u(d, h, w, V);
                } else
                  x("title.align", "center"), x("align", "center"), o._isAngular = o._isBullet = !1;
                o._length = null;
              }
              function a(l, o) {
                function y(g, x) {
                  return b.coerce(l, o, P.gauge.steps, g, x);
                }
                y("color"), y("line.color"), y("line.width"), y("range"), y("thickness");
              }
              Y.exports = {
                supplyDefaults: i
              };
            }
          ),
          /***/
          25638: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                moduleType: "trace",
                name: "indicator",
                basePlotModule: e(47751),
                categories: ["svg", "noOpacity", "noHover"],
                animatable: !0,
                attributes: e(95485),
                supplyDefaults: e(79306).supplyDefaults,
                calc: e(98385).calc,
                plot: e(37095),
                meta: {}
              };
            }
          ),
          /***/
          37095: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(88640).GW, n = e(88640).Dj, s = e(34809), T = s.strScale, A = s.strTranslate, p = s.rad2deg, u = e(4530).MID_SHIFT, t = e(62203), r = e(74807), i = e(30635), a = e(29714), l = e(97655), o = e(40957), y = e(25829), g = e(78766), x = {
                left: "start",
                center: "middle",
                right: "end"
              }, c = {
                left: 0,
                center: 0.5,
                right: 1
              }, v = /[yzafpnµmkMGTPEZY]/;
              function f(z) {
                return z && z.duration > 0;
              }
              Y.exports = function(O, B, V, U) {
                var H = O._fullLayout, F;
                f(V) && U && (F = U()), s.makeTraceGroups(H._indicatorlayer, B, "trace").each(function(G) {
                  var q = G[0], rt = q.trace, st = b.select(this), vt = rt._hasGauge, ht = rt._isAngular, et = rt._isBullet, Q = rt.domain, j = {
                    w: H._size.w * (Q.x[1] - Q.x[0]),
                    h: H._size.h * (Q.y[1] - Q.y[0]),
                    l: H._size.l + H._size.w * Q.x[0],
                    r: H._size.r + H._size.w * (1 - Q.x[1]),
                    t: H._size.t + H._size.h * (1 - Q.y[1]),
                    b: H._size.b + H._size.h * Q.y[0]
                  }, at = j.l + j.w / 2, ut = j.t + j.h / 2, nt = Math.min(j.w / 2, j.h), X = r.innerRadius * nt, ct, lt, pt, wt = rt.align || "center";
                  if (lt = ut, !vt)
                    ct = j.l + c[wt] * j.w, pt = function(kt) {
                      return d(kt, j.w, j.h);
                    };
                  else if (ht && (ct = at, lt = ut + nt / 2, pt = function(kt) {
                    return h(kt, 0.9 * X);
                  }), et) {
                    var Et = r.bulletPadding, Ct = 1 - r.bulletNumberDomainSize + Et;
                    ct = j.l + (Ct + (1 - Ct) * c[wt]) * j.w, pt = function(kt) {
                      return d(kt, (r.bulletNumberDomainSize - Et) * j.w, j.h);
                    };
                  }
                  M(O, st, G, {
                    numbersX: ct,
                    numbersY: lt,
                    numbersScaler: pt,
                    transitionOpts: V,
                    onComplete: F
                  });
                  var Gt, Jt;
                  vt && (Gt = {
                    range: rt.gauge.axis.range,
                    color: rt.gauge.bgcolor,
                    line: {
                      color: rt.gauge.bordercolor,
                      width: 0
                    },
                    thickness: 1
                  }, Jt = {
                    range: rt.gauge.axis.range,
                    color: "rgba(0, 0, 0, 0)",
                    line: {
                      color: rt.gauge.bordercolor,
                      width: rt.gauge.borderwidth
                    },
                    thickness: 1
                  });
                  var Qt = st.selectAll("g.angular").data(ht ? G : []);
                  Qt.exit().remove();
                  var Vt = st.selectAll("g.angularaxis").data(ht ? G : []);
                  Vt.exit().remove(), ht && S(O, st, G, {
                    radius: nt,
                    innerRadius: X,
                    gauge: Qt,
                    layer: Vt,
                    size: j,
                    gaugeBg: Gt,
                    gaugeOutline: Jt,
                    transitionOpts: V,
                    onComplete: F
                  });
                  var zt = st.selectAll("g.bullet").data(et ? G : []);
                  zt.exit().remove();
                  var Rt = st.selectAll("g.bulletaxis").data(et ? G : []);
                  Rt.exit().remove(), et && _(O, st, G, {
                    gauge: zt,
                    layer: Rt,
                    size: j,
                    gaugeBg: Gt,
                    gaugeOutline: Jt,
                    transitionOpts: V,
                    onComplete: F
                  });
                  var Wt = st.selectAll("text.title").data(G);
                  Wt.exit().remove(), Wt.enter().append("text").classed("title", !0), Wt.attr("text-anchor", function() {
                    return et ? x.right : x[rt.title.align];
                  }).text(rt.title.text).call(t.font, rt.title.font).call(i.convertToTspans, O), Wt.attr("transform", function() {
                    var kt = j.l + j.w * c[rt.title.align], re, ge = r.titlePadding, _e = t.bBox(Wt.node());
                    if (vt) {
                      if (ht)
                        if (rt.gauge.axis.visible) {
                          var ce = t.bBox(Vt.node());
                          re = ce.top - ge - _e.bottom;
                        } else
                          re = j.t + j.h / 2 - nt / 2 - _e.bottom - ge;
                      et && (re = lt - (_e.top + _e.bottom) / 2, kt = j.l - r.bulletPadding * j.w);
                    } else
                      re = rt._numbersTop - ge - _e.bottom;
                    return A(kt, re);
                  });
                });
              };
              function _(z, O, B, V) {
                var U = B[0].trace, H = V.gauge, F = V.layer, G = V.gaugeBg, q = V.gaugeOutline, rt = V.size, st = U.domain, vt = V.transitionOpts, ht = V.onComplete, et, Q, j, at, ut;
                H.enter().append("g").classed("bullet", !0), H.attr("transform", A(rt.l, rt.t)), F.enter().append("g").classed("bulletaxis", !0).classed("crisp", !0), F.selectAll("g.xbulletaxistick,path,text").remove();
                var nt = rt.h, X = U.gauge.bar.thickness * nt, ct = st.x[0], lt = st.x[0] + (st.x[1] - st.x[0]) * (U._hasNumber || U._hasDelta ? 1 - r.bulletNumberDomainSize : 1);
                et = L(z, U.gauge.axis), et._id = "xbulletaxis", et.domain = [ct, lt], et.setScale(), Q = a.calcTicks(et), j = a.makeTransTickFn(et), at = a.getTickSigns(et)[2], ut = rt.t + rt.h, et.visible && (a.drawTicks(z, et, {
                  vals: et.ticks === "inside" ? a.clipEnds(et, Q) : Q,
                  layer: F,
                  path: a.makeTickPath(et, ut, at),
                  transFn: j
                }), a.drawLabels(z, et, {
                  vals: Q,
                  layer: F,
                  transFn: j,
                  labelFns: a.makeLabelFns(et, ut)
                }));
                function pt(Vt) {
                  Vt.attr("width", function(zt) {
                    return Math.max(0, et.c2p(zt.range[1]) - et.c2p(zt.range[0]));
                  }).attr("x", function(zt) {
                    return et.c2p(zt.range[0]);
                  }).attr("y", function(zt) {
                    return 0.5 * (1 - zt.thickness) * nt;
                  }).attr("height", function(zt) {
                    return zt.thickness * nt;
                  });
                }
                var wt = [G].concat(U.gauge.steps), Et = H.selectAll("g.bg-bullet").data(wt);
                Et.enter().append("g").classed("bg-bullet", !0).append("rect"), Et.select("rect").call(pt).call(C), Et.exit().remove();
                var Ct = H.selectAll("g.value-bullet").data([U.gauge.bar]);
                Ct.enter().append("g").classed("value-bullet", !0).append("rect"), Ct.select("rect").attr("height", X).attr("y", (nt - X) / 2).call(C), f(vt) ? Ct.select("rect").transition().duration(vt.duration).ease(vt.easing).each("end", function() {
                  ht && ht();
                }).each("interrupt", function() {
                  ht && ht();
                }).attr("width", Math.max(0, et.c2p(Math.min(U.gauge.axis.range[1], B[0].y)))) : Ct.select("rect").attr("width", typeof B[0].y == "number" ? Math.max(0, et.c2p(Math.min(U.gauge.axis.range[1], B[0].y))) : 0), Ct.exit().remove();
                var Gt = B.filter(function() {
                  return U.gauge.threshold.value || U.gauge.threshold.value === 0;
                }), Jt = H.selectAll("g.threshold-bullet").data(Gt);
                Jt.enter().append("g").classed("threshold-bullet", !0).append("line"), Jt.select("line").attr("x1", et.c2p(U.gauge.threshold.value)).attr("x2", et.c2p(U.gauge.threshold.value)).attr("y1", (1 - U.gauge.threshold.thickness) / 2 * nt).attr("y2", (1 - (1 - U.gauge.threshold.thickness) / 2) * nt).call(g.stroke, U.gauge.threshold.line.color).style("stroke-width", U.gauge.threshold.line.width), Jt.exit().remove();
                var Qt = H.selectAll("g.gauge-outline").data([q]);
                Qt.enter().append("g").classed("gauge-outline", !0).append("rect"), Qt.select("rect").call(pt).call(C), Qt.exit().remove();
              }
              function S(z, O, B, V) {
                var U = B[0].trace, H = V.size, F = V.radius, G = V.innerRadius, q = V.gaugeBg, rt = V.gaugeOutline, st = [H.l + H.w / 2, H.t + H.h / 2 + F / 2], vt = V.gauge, ht = V.layer, et = V.transitionOpts, Q = V.onComplete, j = Math.PI / 2;
                function at(ae) {
                  var Se = U.gauge.axis.range[0], ze = U.gauge.axis.range[1], Ne = (ae - Se) / (ze - Se) * Math.PI - j;
                  return Ne < -j ? -j : Ne > j ? j : Ne;
                }
                function ut(ae) {
                  return b.svg.arc().innerRadius((G + F) / 2 - ae / 2 * (F - G)).outerRadius((G + F) / 2 + ae / 2 * (F - G)).startAngle(-j);
                }
                function nt(ae) {
                  ae.attr("d", function(Se) {
                    return ut(Se.thickness).startAngle(at(Se.range[0])).endAngle(at(Se.range[1]))();
                  });
                }
                var X, ct, lt, pt;
                vt.enter().append("g").classed("angular", !0), vt.attr("transform", A(st[0], st[1])), ht.enter().append("g").classed("angularaxis", !0).classed("crisp", !0), ht.selectAll("g.xangularaxistick,path,text").remove(), X = L(z, U.gauge.axis), X.type = "linear", X.range = U.gauge.axis.range, X._id = "xangularaxis", X.ticklabeloverflow = "allow", X.setScale();
                var wt = function(ae) {
                  return (X.range[0] - ae.x) / (X.range[1] - X.range[0]) * Math.PI + Math.PI;
                }, Et = {}, Ct = a.makeLabelFns(X, 0), Gt = Ct.labelStandoff;
                Et.xFn = function(ae) {
                  var Se = wt(ae);
                  return Math.cos(Se) * Gt;
                }, Et.yFn = function(ae) {
                  var Se = wt(ae), ze = Math.sin(Se) > 0 ? 0.2 : 1;
                  return -Math.sin(Se) * (Gt + ae.fontSize * ze) + Math.abs(Math.cos(Se)) * (ae.fontSize * u);
                }, Et.anchorFn = function(ae) {
                  var Se = wt(ae), ze = Math.cos(Se);
                  return Math.abs(ze) < 0.1 ? "middle" : ze > 0 ? "start" : "end";
                }, Et.heightFn = function(ae, Se, ze) {
                  var Ne = wt(ae);
                  return -0.5 * (1 + Math.sin(Ne)) * ze;
                };
                var Jt = function(ae) {
                  return A(st[0] + F * Math.cos(ae), st[1] - F * Math.sin(ae));
                };
                lt = function(ae) {
                  return Jt(wt(ae));
                };
                var Qt = function(ae) {
                  var Se = wt(ae);
                  return Jt(Se) + "rotate(" + -p(Se) + ")";
                };
                if (ct = a.calcTicks(X), pt = a.getTickSigns(X)[2], X.visible) {
                  pt = X.ticks === "inside" ? -1 : 1;
                  var Vt = (X.linewidth || 1) / 2;
                  a.drawTicks(z, X, {
                    vals: ct,
                    layer: ht,
                    path: "M" + pt * Vt + ",0h" + pt * X.ticklen,
                    transFn: Qt
                  }), a.drawLabels(z, X, {
                    vals: ct,
                    layer: ht,
                    transFn: lt,
                    labelFns: Et
                  });
                }
                var zt = [q].concat(U.gauge.steps), Rt = vt.selectAll("g.bg-arc").data(zt);
                Rt.enter().append("g").classed("bg-arc", !0).append("path"), Rt.select("path").call(nt).call(C), Rt.exit().remove();
                var Wt = ut(U.gauge.bar.thickness), kt = vt.selectAll("g.value-arc").data([U.gauge.bar]);
                kt.enter().append("g").classed("value-arc", !0).append("path");
                var re = kt.select("path");
                f(et) ? (re.transition().duration(et.duration).ease(et.easing).each("end", function() {
                  Q && Q();
                }).each("interrupt", function() {
                  Q && Q();
                }).attrTween("d", m(Wt, at(B[0].lastY), at(B[0].y))), U._lastValue = B[0].y) : re.attr("d", typeof B[0].y == "number" ? Wt.endAngle(at(B[0].y)) : "M0,0Z"), re.call(C), kt.exit().remove(), zt = [];
                var ge = U.gauge.threshold.value;
                (ge || ge === 0) && zt.push({
                  range: [ge, ge],
                  color: U.gauge.threshold.color,
                  line: {
                    color: U.gauge.threshold.line.color,
                    width: U.gauge.threshold.line.width
                  },
                  thickness: U.gauge.threshold.thickness
                });
                var _e = vt.selectAll("g.threshold-arc").data(zt);
                _e.enter().append("g").classed("threshold-arc", !0).append("path"), _e.select("path").call(nt).call(C), _e.exit().remove();
                var ce = vt.selectAll("g.gauge-outline").data([rt]);
                ce.enter().append("g").classed("gauge-outline", !0).append("path"), ce.select("path").call(nt).call(C), ce.exit().remove();
              }
              function M(z, O, B, V) {
                var U = B[0].trace, H = V.numbersX, F = V.numbersY, G = U.align || "center", q = x[G], rt = V.transitionOpts, st = V.onComplete, vt = s.ensureSingle(O, "g", "numbers"), ht, et, Q, j = [];
                U._hasNumber && j.push("number"), U._hasDelta && (j.push("delta"), U.delta.position === "left" && j.reverse());
                var at = vt.selectAll("text").data(j);
                at.enter().append("text"), at.attr("text-anchor", function() {
                  return q;
                }).attr("class", function(Jt) {
                  return Jt;
                }).attr("x", null).attr("y", null).attr("dx", null).attr("dy", null), at.exit().remove();
                function ut(Jt, Qt, Vt, zt) {
                  if (Jt.match("s") && // If using SI prefix
                  Vt >= 0 != zt >= 0 && // If sign change
                  !Qt(Vt).slice(-1).match(v) && !Qt(zt).slice(-1).match(v)) {
                    var Rt = Jt.slice().replace("s", "f").replace(/\d+/, function(kt) {
                      return parseInt(kt) - 1;
                    }), Wt = L(z, {
                      tickformat: Rt
                    });
                    return function(kt) {
                      return Math.abs(kt) < 1 ? a.tickText(Wt, kt).text : Qt(kt);
                    };
                  } else
                    return Qt;
                }
                function nt() {
                  var Jt = L(z, {
                    tickformat: U.number.valueformat
                  }, U._range);
                  Jt.setScale(), a.prepTicks(Jt);
                  var Qt = function(kt) {
                    return a.tickText(Jt, kt).text;
                  }, Vt = U.number.suffix, zt = U.number.prefix, Rt = vt.select("text.number");
                  function Wt() {
                    var kt = typeof B[0].y == "number" ? zt + Qt(B[0].y) + Vt : "-";
                    Rt.text(kt).call(t.font, U.number.font).call(i.convertToTspans, z);
                  }
                  return f(rt) ? Rt.transition().duration(rt.duration).ease(rt.easing).each("end", function() {
                    Wt(), st && st();
                  }).each("interrupt", function() {
                    Wt(), st && st();
                  }).attrTween("text", function() {
                    var kt = b.select(this), re = n(B[0].lastY, B[0].y);
                    U._lastValue = B[0].y;
                    var ge = ut(U.number.valueformat, Qt, B[0].lastY, B[0].y);
                    return function(_e) {
                      kt.text(zt + ge(re(_e)) + Vt);
                    };
                  }) : Wt(), ht = E(zt + Qt(B[0].y) + Vt, U.number.font, q, z), Rt;
                }
                function X() {
                  var Jt = L(z, {
                    tickformat: U.delta.valueformat
                  }, U._range);
                  Jt.setScale(), a.prepTicks(Jt);
                  var Qt = function(_e) {
                    return a.tickText(Jt, _e).text;
                  }, Vt = U.delta.suffix, zt = U.delta.prefix, Rt = function(_e) {
                    var ce = U.delta.relative ? _e.relativeDelta : _e.delta;
                    return ce;
                  }, Wt = function(_e, ce) {
                    return _e === 0 || typeof _e != "number" || isNaN(_e) ? "-" : (_e > 0 ? U.delta.increasing.symbol : U.delta.decreasing.symbol) + zt + ce(_e) + Vt;
                  }, kt = function(_e) {
                    return _e.delta >= 0 ? U.delta.increasing.color : U.delta.decreasing.color;
                  };
                  U._deltaLastValue === void 0 && (U._deltaLastValue = Rt(B[0]));
                  var re = vt.select("text.delta");
                  re.call(t.font, U.delta.font).call(g.fill, kt({
                    delta: U._deltaLastValue
                  }));
                  function ge() {
                    re.text(Wt(Rt(B[0]), Qt)).call(g.fill, kt(B[0])).call(i.convertToTspans, z);
                  }
                  return f(rt) ? re.transition().duration(rt.duration).ease(rt.easing).tween("text", function() {
                    var _e = b.select(this), ce = Rt(B[0]), ae = U._deltaLastValue, Se = ut(U.delta.valueformat, Qt, ae, ce), ze = n(ae, ce);
                    return U._deltaLastValue = ce, function(Ne) {
                      _e.text(Wt(ze(Ne), Se)), _e.call(g.fill, kt({
                        delta: ze(Ne)
                      }));
                    };
                  }).each("end", function() {
                    ge(), st && st();
                  }).each("interrupt", function() {
                    ge(), st && st();
                  }) : ge(), et = E(Wt(Rt(B[0]), Qt), U.delta.font, q, z), re;
                }
                var ct = U.mode + U.align, lt;
                if (U._hasDelta && (lt = X(), ct += U.delta.position + U.delta.font.size + U.delta.font.family + U.delta.valueformat, ct += U.delta.increasing.symbol + U.delta.decreasing.symbol, Q = et), U._hasNumber && (nt(), ct += U.number.font.size + U.number.font.family + U.number.valueformat + U.number.suffix + U.number.prefix, Q = ht), U._hasDelta && U._hasNumber) {
                  var pt = [(ht.left + ht.right) / 2, (ht.top + ht.bottom) / 2], wt = [(et.left + et.right) / 2, (et.top + et.bottom) / 2], Et, Ct, Gt = 0.75 * U.delta.font.size;
                  U.delta.position === "left" && (Et = w(U, "deltaPos", 0, -1 * (ht.width * c[U.align] + et.width * (1 - c[U.align]) + Gt), ct, Math.min), Ct = pt[1] - wt[1], Q = {
                    width: ht.width + et.width + Gt,
                    height: Math.max(ht.height, et.height),
                    left: et.left + Et,
                    right: ht.right,
                    top: Math.min(ht.top, et.top + Ct),
                    bottom: Math.max(ht.bottom, et.bottom + Ct)
                  }), U.delta.position === "right" && (Et = w(U, "deltaPos", 0, ht.width * (1 - c[U.align]) + et.width * c[U.align] + Gt, ct, Math.max), Ct = pt[1] - wt[1], Q = {
                    width: ht.width + et.width + Gt,
                    height: Math.max(ht.height, et.height),
                    left: ht.left,
                    right: et.right + Et,
                    top: Math.min(ht.top, et.top + Ct),
                    bottom: Math.max(ht.bottom, et.bottom + Ct)
                  }), U.delta.position === "bottom" && (Et = null, Ct = et.height, Q = {
                    width: Math.max(ht.width, et.width),
                    height: ht.height + et.height,
                    left: Math.min(ht.left, et.left),
                    right: Math.max(ht.right, et.right),
                    top: ht.bottom - ht.height,
                    bottom: ht.bottom + et.height
                  }), U.delta.position === "top" && (Et = null, Ct = ht.top, Q = {
                    width: Math.max(ht.width, et.width),
                    height: ht.height + et.height,
                    left: Math.min(ht.left, et.left),
                    right: Math.max(ht.right, et.right),
                    top: ht.bottom - ht.height - et.height,
                    bottom: ht.bottom
                  }), lt.attr({
                    dx: Et,
                    dy: Ct
                  });
                }
                (U._hasNumber || U._hasDelta) && vt.attr("transform", function() {
                  var Jt = V.numbersScaler(Q);
                  ct += Jt[2];
                  var Qt = w(U, "numbersScale", 1, Jt[0], ct, Math.min), Vt;
                  U._scaleNumbers || (Qt = 1), U._isAngular ? Vt = F - Qt * Q.bottom : Vt = F - Qt * (Q.top + Q.bottom) / 2, U._numbersTop = Qt * Q.top + Vt;
                  var zt = Q[G];
                  G === "center" && (zt = (Q.left + Q.right) / 2);
                  var Rt = H - Qt * zt;
                  return Rt = w(U, "numbersTranslate", 0, Rt, ct, Math.max), A(Rt, Vt) + T(Qt);
                });
              }
              function C(z) {
                z.each(function(O) {
                  g.stroke(b.select(this), O.line.color);
                }).each(function(O) {
                  g.fill(b.select(this), O.color);
                }).style("stroke-width", function(O) {
                  return O.line.width;
                });
              }
              function m(z, O, B) {
                return function() {
                  var V = P(O, B);
                  return function(U) {
                    return z.endAngle(V(U))();
                  };
                };
              }
              function L(z, O, B) {
                var V = z._fullLayout, U = s.extendFlat({
                  type: "linear",
                  ticks: "outside",
                  range: B,
                  showline: !0
                }, O), H = {
                  type: "linear",
                  _id: "x" + O._id
                }, F = {
                  letter: "x",
                  font: V.font,
                  noAutotickangles: !0,
                  noHover: !0,
                  noTickson: !0
                };
                function G(q, rt) {
                  return s.coerce(U, H, y, q, rt);
                }
                return l(U, H, G, F, V), o(U, H, G, F), H;
              }
              function d(z, O, B) {
                var V = Math.min(O / z.width, B / z.height);
                return [V, z, O + "x" + B];
              }
              function h(z, O) {
                var B = Math.sqrt(z.width / 2 * (z.width / 2) + z.height * z.height), V = O / B;
                return [V, z, O];
              }
              function E(z, O, B, V) {
                var U = document.createElementNS("http://www.w3.org/2000/svg", "text"), H = b.select(U);
                return H.text(z).attr("x", 0).attr("y", 0).attr("text-anchor", B).attr("data-unformatted", z).call(i.convertToTspans, V).call(t.font, O), t.bBox(H.node());
              }
              function w(z, O, B, V, U, H) {
                var F = "_cache" + O;
                z[F] && z[F].key === U || (z[F] = {
                  key: U,
                  value: B
                });
                var G = s.aggNums(H, null, [z[F].value, V], 2);
                return z[F].value = G, G;
              }
            }
          ),
          /***/
          70252: (
            /***/
            function(Y, K, e) {
              var b = e(87163), P = e(80712).axisHoverFormat, n = e(3208).rb, s = e(42450), T = e(9829), A = e(93049).extendFlat, p = e(13582).overrideAll;
              function u(i) {
                return {
                  show: {
                    valType: "boolean",
                    dflt: !1
                  },
                  locations: {
                    valType: "data_array",
                    dflt: []
                  },
                  fill: {
                    valType: "number",
                    min: 0,
                    max: 1,
                    dflt: 1
                  }
                };
              }
              function t(i) {
                return {
                  show: {
                    valType: "boolean",
                    dflt: !0
                  },
                  fill: {
                    valType: "number",
                    min: 0,
                    max: 1,
                    dflt: 1
                  }
                };
              }
              var r = Y.exports = p(A({
                x: {
                  valType: "data_array"
                },
                y: {
                  valType: "data_array"
                },
                z: {
                  valType: "data_array"
                },
                value: {
                  valType: "data_array"
                },
                isomin: {
                  valType: "number"
                },
                isomax: {
                  valType: "number"
                },
                surface: {
                  show: {
                    valType: "boolean",
                    dflt: !0
                  },
                  count: {
                    valType: "integer",
                    dflt: 2,
                    min: 1
                  },
                  fill: {
                    valType: "number",
                    min: 0,
                    max: 1,
                    dflt: 1
                  },
                  pattern: {
                    valType: "flaglist",
                    flags: ["A", "B", "C", "D", "E"],
                    extras: ["all", "odd", "even"],
                    dflt: "all"
                  }
                },
                spaceframe: {
                  show: {
                    valType: "boolean",
                    dflt: !1
                  },
                  fill: {
                    valType: "number",
                    min: 0,
                    max: 1,
                    dflt: 0.15
                  }
                },
                slices: {
                  x: u(),
                  y: u(),
                  z: u()
                },
                caps: {
                  x: t(),
                  y: t(),
                  z: t()
                },
                text: {
                  valType: "string",
                  dflt: "",
                  arrayOk: !0
                },
                hovertext: {
                  valType: "string",
                  dflt: "",
                  arrayOk: !0
                },
                hovertemplate: n(),
                xhoverformat: P("x"),
                yhoverformat: P("y"),
                zhoverformat: P("z"),
                valuehoverformat: P("value", 1),
                showlegend: A({}, T.showlegend, {
                  dflt: !1
                })
              }, b("", {
                colorAttr: "`value`",
                showScaleDflt: !0,
                editTypeOverride: "calc"
              }), {
                opacity: s.opacity,
                lightposition: s.lightposition,
                lighting: s.lighting,
                flatshading: s.flatshading,
                contour: s.contour,
                hoverinfo: A({}, T.hoverinfo)
              }), "calc", "nested");
              r.flatshading.dflt = !0, r.lighting.facenormalsepsilon.dflt = 0, r.x.editType = r.y.editType = r.z.editType = r.value.editType = "calc+clearAxisTypes", r.transforms = void 0;
            }
          ),
          /***/
          58988: (
            /***/
            function(Y, K, e) {
              var b = e(28379), P = e(36402).processGrid, n = e(36402).filter;
              Y.exports = function(T, A) {
                A._len = Math.min(A.x.length, A.y.length, A.z.length, A.value.length), A._x = n(A.x, A._len), A._y = n(A.y, A._len), A._z = n(A.z, A._len), A._value = n(A.value, A._len);
                var p = P(A);
                A._gridFill = p.fill, A._Xs = p.Xs, A._Ys = p.Ys, A._Zs = p.Zs, A._len = p.len;
                for (var u = 1 / 0, t = -1 / 0, r = 0; r < A._len; r++) {
                  var i = A._value[r];
                  u = Math.min(u, i), t = Math.max(t, i);
                }
                A._minValues = u, A._maxValues = t, A._vMin = A.isomin === void 0 || A.isomin === null ? u : A.isomin, A._vMax = A.isomax === void 0 || A.isomax === null ? t : A.isomax, b(T, A, {
                  vals: [A._vMin, A._vMax],
                  containerStr: "",
                  cLetter: "c"
                });
              };
            }
          ),
          /***/
          91370: (
            /***/
            function(Y, K, e) {
              var b = e(99098).gl_mesh3d, P = e(46998).parseColorScale, n = e(34809).isArrayOrTypedArray, s = e(55010), T = e(88856).extractOpts, A = e(88239), p = function(l, o) {
                for (var y = o.length - 1; y > 0; y--) {
                  var g = Math.min(o[y], o[y - 1]), x = Math.max(o[y], o[y - 1]);
                  if (x > g && g < l && l <= x)
                    return {
                      id: y,
                      distRatio: (x - l) / (x - g)
                    };
                }
                return {
                  id: 0,
                  distRatio: 0
                };
              };
              function u(l, o, y) {
                this.scene = l, this.uid = y, this.mesh = o, this.name = "", this.data = null, this.showContour = !1;
              }
              var t = u.prototype;
              t.handlePick = function(l) {
                if (l.object === this.mesh) {
                  var o = l.data.index, y = this.data._meshX[o], g = this.data._meshY[o], x = this.data._meshZ[o], c = this.data._Ys.length, v = this.data._Zs.length, f = p(y, this.data._Xs).id, _ = p(g, this.data._Ys).id, S = p(x, this.data._Zs).id, M = l.index = S + v * _ + v * c * f;
                  l.traceCoordinate = [this.data._meshX[M], this.data._meshY[M], this.data._meshZ[M], this.data._value[M]];
                  var C = this.data.hovertext || this.data.text;
                  return n(C) && C[M] !== void 0 ? l.textLabel = C[M] : C && (l.textLabel = C), !0;
                }
              }, t.update = function(l) {
                var o = this.scene, y = o.fullSceneLayout;
                this.data = i(l);
                function g(_, S, M, C) {
                  return S.map(function(m) {
                    return _.d2l(m, 0, C) * M;
                  });
                }
                var x = A(g(y.xaxis, l._meshX, o.dataScale[0], l.xcalendar), g(y.yaxis, l._meshY, o.dataScale[1], l.ycalendar), g(y.zaxis, l._meshZ, o.dataScale[2], l.zcalendar)), c = A(l._meshI, l._meshJ, l._meshK), v = {
                  positions: x,
                  cells: c,
                  lightPosition: [l.lightposition.x, l.lightposition.y, l.lightposition.z],
                  ambient: l.lighting.ambient,
                  diffuse: l.lighting.diffuse,
                  specular: l.lighting.specular,
                  roughness: l.lighting.roughness,
                  fresnel: l.lighting.fresnel,
                  vertexNormalsEpsilon: l.lighting.vertexnormalsepsilon,
                  faceNormalsEpsilon: l.lighting.facenormalsepsilon,
                  opacity: l.opacity,
                  contourEnable: l.contour.show,
                  contourColor: s(l.contour.color).slice(0, 3),
                  contourWidth: l.contour.width,
                  useFacetNormals: l.flatshading
                }, f = T(l);
                v.vertexIntensity = l._meshIntensity, v.vertexIntensityBounds = [f.min, f.max], v.colormap = P(l), this.mesh.update(v);
              }, t.dispose = function() {
                this.scene.glplot.remove(this.mesh), this.mesh.dispose();
              };
              var r = ["xyz", "xzy", "yxz", "yzx", "zxy", "zyx"];
              function i(l) {
                l._meshI = [], l._meshJ = [], l._meshK = [];
                var o = l.surface.show, y = l.spaceframe.show, g = l.surface.fill, x = l.spaceframe.fill, c = !1, v = !1, f = 0, _, S, M = l._Xs, C = l._Ys, m = l._Zs, L = M.length, d = C.length, h = m.length, E = r.indexOf(l._gridFill.replace(/-/g, "").replace(/\+/g, "")), w = function(jt, ee, Bt) {
                  switch (E) {
                    case 5:
                      return Bt + h * ee + h * d * jt;
                    case 4:
                      return Bt + h * jt + h * L * ee;
                    case 3:
                      return ee + d * Bt + d * h * jt;
                    case 2:
                      return ee + d * jt + d * L * Bt;
                    case 1:
                      return jt + L * Bt + L * h * ee;
                    default:
                      return jt + L * ee + L * d * Bt;
                  }
                }, z = l._minValues, O = l._maxValues, B = l._vMin, V = l._vMax, U, H, F, G;
                function q(jt, ee, Bt) {
                  for (var Xt = G.length, Zt = S; Zt < Xt; Zt++)
                    if (jt === U[Zt] && ee === H[Zt] && Bt === F[Zt])
                      return Zt;
                  return -1;
                }
                function rt() {
                  S = _;
                }
                function st() {
                  U = [], H = [], F = [], G = [], _ = 0, rt();
                }
                function vt(jt, ee, Bt, Xt) {
                  return U.push(jt), H.push(ee), F.push(Bt), G.push(Xt), _++, _ - 1;
                }
                function ht(jt, ee, Bt) {
                  return l._meshI.push(jt), l._meshJ.push(ee), l._meshK.push(Bt), f++, f - 1;
                }
                function et(jt, ee, Bt) {
                  for (var Xt = [], Zt = 0; Zt < jt.length; Zt++)
                    Xt[Zt] = (jt[Zt] + ee[Zt] + Bt[Zt]) / 3;
                  return Xt;
                }
                function Q(jt, ee, Bt) {
                  for (var Xt = [], Zt = 0; Zt < jt.length; Zt++)
                    Xt[Zt] = jt[Zt] * (1 - Bt) + Bt * ee[Zt];
                  return Xt;
                }
                var j;
                function at(jt) {
                  j = jt;
                }
                function ut(jt, ee) {
                  var Bt = jt[0], Xt = jt[1], Zt = jt[2], ye = et(Bt, Xt, Zt), Mt = Math.sqrt(1 - j), St = Q(ye, Bt, Mt), Lt = Q(ye, Xt, Mt), te = Q(ye, Zt, Mt), fe = ee[0], Me = ee[1], ir = ee[2];
                  return {
                    xyzv: [[Bt, Xt, Lt], [Lt, St, Bt], [Xt, Zt, te], [te, Lt, Xt], [Zt, Bt, St], [St, te, Zt]],
                    abc: [[fe, Me, -1], [-1, -1, fe], [Me, ir, -1], [-1, -1, Me], [ir, fe, -1], [-1, -1, ir]]
                  };
                }
                function nt(jt, ee) {
                  return jt === "all" || jt === null ? !0 : jt.indexOf(ee) > -1;
                }
                function X(jt, ee) {
                  return jt === null ? ee : jt;
                }
                function ct(jt, ee, Bt) {
                  rt();
                  var Xt = [ee], Zt = [Bt];
                  if (j >= 1)
                    Xt = [ee], Zt = [Bt];
                  else if (j > 0) {
                    var ye = ut(ee, Bt);
                    Xt = ye.xyzv, Zt = ye.abc;
                  }
                  for (var Mt = 0; Mt < Xt.length; Mt++) {
                    ee = Xt[Mt], Bt = Zt[Mt];
                    for (var St = [], Lt = 0; Lt < 3; Lt++) {
                      var te = ee[Lt][0], fe = ee[Lt][1], Me = ee[Lt][2], ir = ee[Lt][3], mr = Bt[Lt] > -1 ? Bt[Lt] : q(te, fe, Me);
                      mr > -1 ? St[Lt] = mr : St[Lt] = vt(te, fe, Me, X(jt, ir));
                    }
                    ht(St[0], St[1], St[2]);
                  }
                }
                function lt(jt, ee, Bt) {
                  var Xt = function(Zt, ye, Mt) {
                    ct(jt, [ee[Zt], ee[ye], ee[Mt]], [Bt[Zt], Bt[ye], Bt[Mt]]);
                  };
                  Xt(0, 1, 2), Xt(2, 3, 0);
                }
                function pt(jt, ee, Bt) {
                  var Xt = function(Zt, ye, Mt) {
                    ct(jt, [ee[Zt], ee[ye], ee[Mt]], [Bt[Zt], Bt[ye], Bt[Mt]]);
                  };
                  Xt(0, 1, 2), Xt(3, 0, 1), Xt(2, 3, 0), Xt(1, 2, 3);
                }
                function wt(jt, ee, Bt, Xt) {
                  var Zt = jt[3];
                  Zt < Bt && (Zt = Bt), Zt > Xt && (Zt = Xt);
                  for (var ye = (jt[3] - Zt) / (jt[3] - ee[3] + 1e-9), Mt = [], St = 0; St < 4; St++)
                    Mt[St] = (1 - ye) * jt[St] + ye * ee[St];
                  return Mt;
                }
                function Et(jt, ee, Bt) {
                  return jt >= ee && jt <= Bt;
                }
                function Ct(jt) {
                  var ee = 1e-3 * (V - B);
                  return jt >= B - ee && jt <= V + ee;
                }
                function Gt(jt) {
                  for (var ee = [], Bt = 0; Bt < 4; Bt++) {
                    var Xt = jt[Bt];
                    ee.push([l._x[Xt], l._y[Xt], l._z[Xt], l._value[Xt]]);
                  }
                  return ee;
                }
                var Jt = 3;
                function Qt(jt, ee, Bt, Xt, Zt, ye) {
                  ye || (ye = 1), Bt = [-1, -1, -1];
                  var Mt = !1, St = [Et(ee[0][3], Xt, Zt), Et(ee[1][3], Xt, Zt), Et(ee[2][3], Xt, Zt)];
                  if (!St[0] && !St[1] && !St[2])
                    return !1;
                  var Lt = function(fe, Me, ir) {
                    return (
                      // we check here if the points are in `real` iso-min/max range
                      Ct(Me[0][3]) && Ct(Me[1][3]) && Ct(Me[2][3]) ? (ct(fe, Me, ir), !0) : ye < Jt ? Qt(fe, Me, ir, B, V, ++ye) : !1
                    );
                  };
                  if (St[0] && St[1] && St[2])
                    return Lt(jt, ee, Bt) || Mt;
                  var te = !1;
                  return [[0, 1, 2], [2, 0, 1], [1, 2, 0]].forEach(function(fe) {
                    if (St[fe[0]] && St[fe[1]] && !St[fe[2]]) {
                      var Me = ee[fe[0]], ir = ee[fe[1]], mr = ee[fe[2]], Xe = wt(mr, Me, Xt, Zt), xe = wt(mr, ir, Xt, Zt);
                      Mt = Lt(jt, [xe, Xe, Me], [-1, -1, Bt[fe[0]]]) || Mt, Mt = Lt(jt, [Me, ir, xe], [Bt[fe[0]], Bt[fe[1]], -1]) || Mt, te = !0;
                    }
                  }), te || [[0, 1, 2], [1, 2, 0], [2, 0, 1]].forEach(function(fe) {
                    if (St[fe[0]] && !St[fe[1]] && !St[fe[2]]) {
                      var Me = ee[fe[0]], ir = ee[fe[1]], mr = ee[fe[2]], Xe = wt(ir, Me, Xt, Zt), xe = wt(mr, Me, Xt, Zt);
                      Mt = Lt(jt, [xe, Xe, Me], [-1, -1, Bt[fe[0]]]) || Mt, te = !0;
                    }
                  }), Mt;
                }
                function Vt(jt, ee, Bt, Xt) {
                  var Zt = !1, ye = Gt(ee), Mt = [Et(ye[0][3], Bt, Xt), Et(ye[1][3], Bt, Xt), Et(ye[2][3], Bt, Xt), Et(ye[3][3], Bt, Xt)];
                  if (!Mt[0] && !Mt[1] && !Mt[2] && !Mt[3])
                    return Zt;
                  if (Mt[0] && Mt[1] && Mt[2] && Mt[3])
                    return v && (Zt = pt(jt, ye, ee) || Zt), Zt;
                  var St = !1;
                  return [[0, 1, 2, 3], [3, 0, 1, 2], [2, 3, 0, 1], [1, 2, 3, 0]].forEach(function(Lt) {
                    if (Mt[Lt[0]] && Mt[Lt[1]] && Mt[Lt[2]] && !Mt[Lt[3]]) {
                      var te = ye[Lt[0]], fe = ye[Lt[1]], Me = ye[Lt[2]], ir = ye[Lt[3]];
                      if (v)
                        Zt = ct(jt, [te, fe, Me], [ee[Lt[0]], ee[Lt[1]], ee[Lt[2]]]) || Zt;
                      else {
                        var mr = wt(ir, te, Bt, Xt), Xe = wt(ir, fe, Bt, Xt), xe = wt(ir, Me, Bt, Xt);
                        Zt = ct(null, [mr, Xe, xe], [-1, -1, -1]) || Zt;
                      }
                      St = !0;
                    }
                  }), St || ([[0, 1, 2, 3], [1, 2, 3, 0], [2, 3, 0, 1], [3, 0, 1, 2], [0, 2, 3, 1], [1, 3, 2, 0]].forEach(function(Lt) {
                    if (Mt[Lt[0]] && Mt[Lt[1]] && !Mt[Lt[2]] && !Mt[Lt[3]]) {
                      var te = ye[Lt[0]], fe = ye[Lt[1]], Me = ye[Lt[2]], ir = ye[Lt[3]], mr = wt(Me, te, Bt, Xt), Xe = wt(Me, fe, Bt, Xt), xe = wt(ir, fe, Bt, Xt), me = wt(ir, te, Bt, Xt);
                      v ? (Zt = ct(jt, [te, me, mr], [ee[Lt[0]], -1, -1]) || Zt, Zt = ct(jt, [fe, Xe, xe], [ee[Lt[1]], -1, -1]) || Zt) : Zt = lt(null, [mr, Xe, xe, me], [-1, -1, -1, -1]) || Zt, St = !0;
                    }
                  }), St) || [[0, 1, 2, 3], [1, 2, 3, 0], [2, 3, 0, 1], [3, 0, 1, 2]].forEach(function(Lt) {
                    if (Mt[Lt[0]] && !Mt[Lt[1]] && !Mt[Lt[2]] && !Mt[Lt[3]]) {
                      var te = ye[Lt[0]], fe = ye[Lt[1]], Me = ye[Lt[2]], ir = ye[Lt[3]], mr = wt(fe, te, Bt, Xt), Xe = wt(Me, te, Bt, Xt), xe = wt(ir, te, Bt, Xt);
                      v ? (Zt = ct(jt, [te, mr, Xe], [ee[Lt[0]], -1, -1]) || Zt, Zt = ct(jt, [te, Xe, xe], [ee[Lt[0]], -1, -1]) || Zt, Zt = ct(jt, [te, xe, mr], [ee[Lt[0]], -1, -1]) || Zt) : Zt = ct(null, [mr, Xe, xe], [-1, -1, -1]) || Zt, St = !0;
                    }
                  }), Zt;
                }
                function zt(jt, ee, Bt, Xt, Zt, ye, Mt, St, Lt, te, fe) {
                  var Me = !1;
                  return c && (nt(jt, "A") && (Me = Vt(null, [ee, Bt, Xt, ye], te, fe) || Me), nt(jt, "B") && (Me = Vt(null, [Bt, Xt, Zt, Lt], te, fe) || Me), nt(jt, "C") && (Me = Vt(null, [Bt, ye, Mt, Lt], te, fe) || Me), nt(jt, "D") && (Me = Vt(null, [Xt, ye, St, Lt], te, fe) || Me), nt(jt, "E") && (Me = Vt(null, [Bt, Xt, ye, Lt], te, fe) || Me)), v && (Me = Vt(jt, [Bt, Xt, ye, Lt], te, fe) || Me), Me;
                }
                function Rt(jt, ee, Bt, Xt, Zt, ye, Mt, St) {
                  return [St[0] === !0 ? !0 : Qt(jt, Gt([ee, Bt, Xt]), [ee, Bt, Xt], ye, Mt), St[1] === !0 ? !0 : Qt(jt, Gt([Xt, Zt, ee]), [Xt, Zt, ee], ye, Mt)];
                }
                function Wt(jt, ee, Bt, Xt, Zt, ye, Mt, St, Lt) {
                  return St ? Rt(jt, ee, Bt, Zt, Xt, ye, Mt, Lt) : Rt(jt, Bt, Zt, Xt, ee, ye, Mt, Lt);
                }
                function kt(jt, ee, Bt, Xt, Zt, ye, Mt) {
                  var St = !1, Lt, te, fe, Me, ir = function() {
                    St = Qt(jt, [Lt, te, fe], [-1, -1, -1], Zt, ye) || St, St = Qt(jt, [fe, Me, Lt], [-1, -1, -1], Zt, ye) || St;
                  }, mr = Mt[0], Xe = Mt[1], xe = Mt[2];
                  return mr && (Lt = Q(Gt([w(ee, Bt - 0, Xt - 0)])[0], Gt([w(ee - 1, Bt - 0, Xt - 0)])[0], mr), te = Q(Gt([w(ee, Bt - 0, Xt - 1)])[0], Gt([w(ee - 1, Bt - 0, Xt - 1)])[0], mr), fe = Q(Gt([w(ee, Bt - 1, Xt - 1)])[0], Gt([w(ee - 1, Bt - 1, Xt - 1)])[0], mr), Me = Q(Gt([w(ee, Bt - 1, Xt - 0)])[0], Gt([w(ee - 1, Bt - 1, Xt - 0)])[0], mr), ir()), Xe && (Lt = Q(Gt([w(ee - 0, Bt, Xt - 0)])[0], Gt([w(ee - 0, Bt - 1, Xt - 0)])[0], Xe), te = Q(Gt([w(ee - 0, Bt, Xt - 1)])[0], Gt([w(ee - 0, Bt - 1, Xt - 1)])[0], Xe), fe = Q(Gt([w(ee - 1, Bt, Xt - 1)])[0], Gt([w(ee - 1, Bt - 1, Xt - 1)])[0], Xe), Me = Q(Gt([w(ee - 1, Bt, Xt - 0)])[0], Gt([w(ee - 1, Bt - 1, Xt - 0)])[0], Xe), ir()), xe && (Lt = Q(Gt([w(ee - 0, Bt - 0, Xt)])[0], Gt([w(ee - 0, Bt - 0, Xt - 1)])[0], xe), te = Q(Gt([w(ee - 0, Bt - 1, Xt)])[0], Gt([w(ee - 0, Bt - 1, Xt - 1)])[0], xe), fe = Q(Gt([w(ee - 1, Bt - 1, Xt)])[0], Gt([w(ee - 1, Bt - 1, Xt - 1)])[0], xe), Me = Q(Gt([w(ee - 1, Bt - 0, Xt)])[0], Gt([w(ee - 1, Bt - 0, Xt - 1)])[0], xe), ir()), St;
                }
                function re(jt, ee, Bt, Xt, Zt, ye, Mt, St, Lt, te, fe, Me) {
                  var ir = jt;
                  return Me ? (c && jt === "even" && (ir = null), zt(ir, ee, Bt, Xt, Zt, ye, Mt, St, Lt, te, fe)) : (c && jt === "odd" && (ir = null), zt(ir, Lt, St, Mt, ye, Zt, Xt, Bt, ee, te, fe));
                }
                function ge(jt, ee, Bt, Xt, Zt) {
                  for (var ye = [], Mt = 0, St = 0; St < ee.length; St++)
                    for (var Lt = ee[St], te = 1; te < h; te++)
                      for (var fe = 1; fe < d; fe++)
                        ye.push(Wt(jt, w(Lt, fe - 1, te - 1), w(Lt, fe - 1, te), w(Lt, fe, te - 1), w(Lt, fe, te), Bt, Xt, (Lt + fe + te) % 2, Zt && Zt[Mt] ? Zt[Mt] : [])), Mt++;
                  return ye;
                }
                function _e(jt, ee, Bt, Xt, Zt) {
                  for (var ye = [], Mt = 0, St = 0; St < ee.length; St++)
                    for (var Lt = ee[St], te = 1; te < L; te++)
                      for (var fe = 1; fe < h; fe++)
                        ye.push(Wt(jt, w(te - 1, Lt, fe - 1), w(te, Lt, fe - 1), w(te - 1, Lt, fe), w(te, Lt, fe), Bt, Xt, (te + Lt + fe) % 2, Zt && Zt[Mt] ? Zt[Mt] : [])), Mt++;
                  return ye;
                }
                function ce(jt, ee, Bt, Xt, Zt) {
                  for (var ye = [], Mt = 0, St = 0; St < ee.length; St++)
                    for (var Lt = ee[St], te = 1; te < d; te++)
                      for (var fe = 1; fe < L; fe++)
                        ye.push(Wt(jt, w(fe - 1, te - 1, Lt), w(fe - 1, te, Lt), w(fe, te - 1, Lt), w(fe, te, Lt), Bt, Xt, (fe + te + Lt) % 2, Zt && Zt[Mt] ? Zt[Mt] : [])), Mt++;
                  return ye;
                }
                function ae(jt, ee, Bt) {
                  for (var Xt = 1; Xt < h; Xt++)
                    for (var Zt = 1; Zt < d; Zt++)
                      for (var ye = 1; ye < L; ye++)
                        re(jt, w(ye - 1, Zt - 1, Xt - 1), w(ye - 1, Zt - 1, Xt), w(ye - 1, Zt, Xt - 1), w(ye - 1, Zt, Xt), w(ye, Zt - 1, Xt - 1), w(ye, Zt - 1, Xt), w(ye, Zt, Xt - 1), w(ye, Zt, Xt), ee, Bt, (ye + Zt + Xt) % 2);
                }
                function Se(jt, ee, Bt) {
                  v = !0, ae(jt, ee, Bt), v = !1;
                }
                function ze(jt, ee, Bt) {
                  c = !0, ae(jt, ee, Bt), c = !1;
                }
                function Ne(jt, ee, Bt, Xt, Zt, ye) {
                  for (var Mt = [], St = 0, Lt = 0; Lt < ee.length; Lt++)
                    for (var te = ee[Lt], fe = 1; fe < h; fe++)
                      for (var Me = 1; Me < d; Me++)
                        Mt.push(kt(jt, te, Me, fe, Bt, Xt, Zt[Lt], ye && ye[St] ? ye[St] : [])), St++;
                  return Mt;
                }
                function Ve(jt, ee, Bt, Xt, Zt, ye) {
                  for (var Mt = [], St = 0, Lt = 0; Lt < ee.length; Lt++)
                    for (var te = ee[Lt], fe = 1; fe < L; fe++)
                      for (var Me = 1; Me < h; Me++)
                        Mt.push(kt(jt, fe, te, Me, Bt, Xt, Zt[Lt], ye && ye[St] ? ye[St] : [])), St++;
                  return Mt;
                }
                function Oe(jt, ee, Bt, Xt, Zt, ye) {
                  for (var Mt = [], St = 0, Lt = 0; Lt < ee.length; Lt++)
                    for (var te = ee[Lt], fe = 1; fe < d; fe++)
                      for (var Me = 1; Me < L; Me++)
                        Mt.push(kt(jt, Me, fe, te, Bt, Xt, Zt[Lt], ye && ye[St] ? ye[St] : [])), St++;
                  return Mt;
                }
                function ur(jt, ee) {
                  for (var Bt = [], Xt = jt; Xt < ee; Xt++)
                    Bt.push(Xt);
                  return Bt;
                }
                function ie() {
                  for (var jt = 0; jt < L; jt++)
                    for (var ee = 0; ee < d; ee++)
                      for (var Bt = 0; Bt < h; Bt++) {
                        var Xt = w(jt, ee, Bt);
                        vt(l._x[Xt], l._y[Xt], l._z[Xt], l._value[Xt]);
                      }
                }
                function $t() {
                  st(), ie();
                  var jt = null;
                  if (y && x && (at(x), Se(jt, B, V)), o && g) {
                    at(g);
                    for (var ee = l.surface.pattern, Bt = l.surface.count, Xt = 0; Xt < Bt; Xt++) {
                      var Zt = Bt === 1 ? 0.5 : Xt / (Bt - 1), ye = (1 - Zt) * B + Zt * V, Mt = Math.abs(ye - z), St = Math.abs(ye - O), Lt = Mt > St ? [z, ye] : [ye, O];
                      ze(ee, Lt[0], Lt[1]);
                    }
                  }
                  var te = [[Math.min(B, O), Math.max(B, O)], [Math.min(z, V), Math.max(z, V)]];
                  ["x", "y", "z"].forEach(function(fe) {
                    for (var Me = [], ir = 0; ir < te.length; ir++) {
                      var mr = 0, Xe = te[ir][0], xe = te[ir][1], me = l.slices[fe];
                      if (me.show && me.fill) {
                        at(me.fill);
                        var Le = [], qt = [], De = [];
                        if (me.locations.length)
                          for (var Je = 0; Je < me.locations.length; Je++) {
                            var dr = p(me.locations[Je], fe === "x" ? M : fe === "y" ? C : m);
                            dr.distRatio === 0 ? Le.push(dr.id) : dr.id > 0 && (qt.push(dr.id), fe === "x" ? De.push([dr.distRatio, 0, 0]) : fe === "y" ? De.push([0, dr.distRatio, 0]) : De.push([0, 0, dr.distRatio]));
                          }
                        else
                          fe === "x" ? Le = ur(1, L - 1) : fe === "y" ? Le = ur(1, d - 1) : Le = ur(1, h - 1);
                        qt.length > 0 && (fe === "x" ? Me[mr] = Ne(jt, qt, Xe, xe, De, Me[mr]) : fe === "y" ? Me[mr] = Ve(jt, qt, Xe, xe, De, Me[mr]) : Me[mr] = Oe(jt, qt, Xe, xe, De, Me[mr]), mr++), Le.length > 0 && (fe === "x" ? Me[mr] = ge(jt, Le, Xe, xe, Me[mr]) : fe === "y" ? Me[mr] = _e(jt, Le, Xe, xe, Me[mr]) : Me[mr] = ce(jt, Le, Xe, xe, Me[mr]), mr++);
                      }
                      var qe = l.caps[fe];
                      qe.show && qe.fill && (at(qe.fill), fe === "x" ? Me[mr] = ge(jt, [0, L - 1], Xe, xe, Me[mr]) : fe === "y" ? Me[mr] = _e(jt, [0, d - 1], Xe, xe, Me[mr]) : Me[mr] = ce(jt, [0, h - 1], Xe, xe, Me[mr]), mr++);
                    }
                  }), f === 0 && st(), l._meshX = U, l._meshY = H, l._meshZ = F, l._meshIntensity = G, l._Xs = M, l._Ys = C, l._Zs = m;
                }
                return $t(), l;
              }
              function a(l, o) {
                var y = l.glplot.gl, g = b({
                  gl: y
                }), x = new u(l, g, o.uid);
                return g._trace = x, x.update(o), l.glplot.add(g), x;
              }
              Y.exports = {
                findNearestOnAxis: p,
                generateIsoMeshes: i,
                createIsosurfaceTrace: a
              };
            }
          ),
          /***/
          44731: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(33626), n = e(70252), s = e(39356);
              function T(p, u, t, r) {
                function i(a, l) {
                  return b.coerce(p, u, n, a, l);
                }
                A(p, u, t, r, i);
              }
              function A(p, u, t, r, i) {
                var a = i("isomin"), l = i("isomax");
                l != null && a !== void 0 && a !== null && a > l && (u.isomin = null, u.isomax = null);
                var o = i("x"), y = i("y"), g = i("z"), x = i("value");
                if (!o || !o.length || !y || !y.length || !g || !g.length || !x || !x.length) {
                  u.visible = !1;
                  return;
                }
                var c = P.getComponentMethod("calendars", "handleTraceDefaults");
                c(p, u, ["x", "y", "z"], r), i("valuehoverformat"), ["x", "y", "z"].forEach(function(S) {
                  i(S + "hoverformat");
                  var M = "caps." + S, C = i(M + ".show");
                  C && i(M + ".fill");
                  var m = "slices." + S, L = i(m + ".show");
                  L && (i(m + ".fill"), i(m + ".locations"));
                });
                var v = i("spaceframe.show");
                v && i("spaceframe.fill");
                var f = i("surface.show");
                f && (i("surface.count"), i("surface.fill"), i("surface.pattern"));
                var _ = i("contour.show");
                _ && (i("contour.color"), i("contour.width")), ["text", "hovertext", "hovertemplate", "lighting.ambient", "lighting.diffuse", "lighting.specular", "lighting.roughness", "lighting.fresnel", "lighting.vertexnormalsepsilon", "lighting.facenormalsepsilon", "lightposition.x", "lightposition.y", "lightposition.z", "flatshading", "opacity"].forEach(function(S) {
                  i(S);
                }), s(p, u, r, i, {
                  prefix: "",
                  cLetter: "c"
                }), u._length = null;
              }
              Y.exports = {
                supplyDefaults: T,
                supplyIsoDefaults: A
              };
            }
          ),
          /***/
          75297: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(70252),
                supplyDefaults: e(44731).supplyDefaults,
                calc: e(58988),
                colorbar: {
                  min: "cmin",
                  max: "cmax"
                },
                plot: e(91370).createIsosurfaceTrace,
                moduleType: "trace",
                name: "isosurface",
                basePlotModule: e(2487),
                categories: ["gl3d", "showLegend"],
                meta: {}
              };
            }
          ),
          /***/
          42450: (
            /***/
            function(Y, K, e) {
              var b = e(87163), P = e(80712).axisHoverFormat, n = e(3208).rb, s = e(16131), T = e(9829), A = e(93049).extendFlat;
              Y.exports = A({
                x: {
                  valType: "data_array",
                  editType: "calc+clearAxisTypes"
                },
                y: {
                  valType: "data_array",
                  editType: "calc+clearAxisTypes"
                },
                z: {
                  valType: "data_array",
                  editType: "calc+clearAxisTypes"
                },
                i: {
                  valType: "data_array",
                  editType: "calc"
                },
                j: {
                  valType: "data_array",
                  editType: "calc"
                },
                k: {
                  valType: "data_array",
                  editType: "calc"
                },
                text: {
                  valType: "string",
                  dflt: "",
                  arrayOk: !0,
                  editType: "calc"
                },
                hovertext: {
                  valType: "string",
                  dflt: "",
                  arrayOk: !0,
                  editType: "calc"
                },
                hovertemplate: n({
                  editType: "calc"
                }),
                xhoverformat: P("x"),
                yhoverformat: P("y"),
                zhoverformat: P("z"),
                delaunayaxis: {
                  valType: "enumerated",
                  values: ["x", "y", "z"],
                  dflt: "z",
                  editType: "calc"
                },
                alphahull: {
                  valType: "number",
                  dflt: -1,
                  editType: "calc"
                },
                intensity: {
                  valType: "data_array",
                  editType: "calc"
                },
                intensitymode: {
                  valType: "enumerated",
                  values: ["vertex", "cell"],
                  dflt: "vertex",
                  editType: "calc"
                },
                // Color field
                color: {
                  valType: "color",
                  editType: "calc"
                },
                vertexcolor: {
                  valType: "data_array",
                  editType: "calc"
                },
                facecolor: {
                  valType: "data_array",
                  editType: "calc"
                },
                transforms: void 0
              }, b("", {
                colorAttr: "`intensity`",
                showScaleDflt: !0,
                editTypeOverride: "calc"
              }), {
                opacity: s.opacity,
                // Flat shaded mode
                flatshading: {
                  valType: "boolean",
                  dflt: !1,
                  editType: "calc"
                },
                contour: {
                  show: A({}, s.contours.x.show, {}),
                  color: s.contours.x.color,
                  width: s.contours.x.width,
                  editType: "calc"
                },
                lightposition: {
                  x: A({}, s.lightposition.x, {
                    dflt: 1e5
                  }),
                  y: A({}, s.lightposition.y, {
                    dflt: 1e5
                  }),
                  z: A({}, s.lightposition.z, {
                    dflt: 0
                  }),
                  editType: "calc"
                },
                lighting: A({
                  vertexnormalsepsilon: {
                    valType: "number",
                    min: 0,
                    max: 1,
                    dflt: 1e-12,
                    // otherwise finely tessellated things eg. the brain will have no specular light reflection
                    editType: "calc"
                  },
                  facenormalsepsilon: {
                    valType: "number",
                    min: 0,
                    max: 1,
                    dflt: 1e-6,
                    // even the brain model doesn't appear to need finer than this
                    editType: "calc"
                  },
                  editType: "calc"
                }, s.lighting),
                hoverinfo: A({}, T.hoverinfo, {
                  editType: "calc"
                }),
                showlegend: A({}, T.showlegend, {
                  dflt: !1
                })
              });
            }
          ),
          /***/
          44878: (
            /***/
            function(Y, K, e) {
              var b = e(28379);
              Y.exports = function(n, s) {
                s.intensity && b(n, s, {
                  vals: s.intensity,
                  containerStr: "",
                  cLetter: "c"
                });
              };
            }
          ),
          /***/
          82836: (
            /***/
            function(Y, K, e) {
              var b = e(99098).gl_mesh3d, P = e(99098).delaunay_triangulate, n = e(99098).alpha_shape, s = e(99098).convex_hull, T = e(46998).parseColorScale, A = e(34809).isArrayOrTypedArray, p = e(55010), u = e(88856).extractOpts, t = e(88239);
              function r(c, v, f) {
                this.scene = c, this.uid = f, this.mesh = v, this.name = "", this.color = "#fff", this.data = null, this.showContour = !1;
              }
              var i = r.prototype;
              i.handlePick = function(c) {
                if (c.object === this.mesh) {
                  var v = c.index = c.data.index;
                  c.data._cellCenter ? c.traceCoordinate = c.data.dataCoordinate : c.traceCoordinate = [this.data.x[v], this.data.y[v], this.data.z[v]];
                  var f = this.data.hovertext || this.data.text;
                  return A(f) && f[v] !== void 0 ? c.textLabel = f[v] : f && (c.textLabel = f), !0;
                }
              };
              function a(c) {
                for (var v = [], f = c.length, _ = 0; _ < f; _++)
                  v[_] = p(c[_]);
                return v;
              }
              function l(c, v, f, _) {
                for (var S = [], M = v.length, C = 0; C < M; C++)
                  S[C] = c.d2l(v[C], 0, _) * f;
                return S;
              }
              function o(c) {
                for (var v = [], f = c.length, _ = 0; _ < f; _++)
                  v[_] = Math.round(c[_]);
                return v;
              }
              function y(c, v) {
                for (var f = ["x", "y", "z"].indexOf(c), _ = [], S = v.length, M = 0; M < S; M++)
                  _[M] = [v[M][(f + 1) % 3], v[M][(f + 2) % 3]];
                return P(_);
              }
              function g(c, v) {
                for (var f = c.length, _ = 0; _ < f; _++)
                  if (c[_] <= -0.5 || c[_] >= v - 0.5)
                    return !1;
                return !0;
              }
              i.update = function(c) {
                var v = this.scene, f = v.fullSceneLayout;
                this.data = c;
                var _ = c.x.length, S = t(l(f.xaxis, c.x, v.dataScale[0], c.xcalendar), l(f.yaxis, c.y, v.dataScale[1], c.ycalendar), l(f.zaxis, c.z, v.dataScale[2], c.zcalendar)), M;
                if (c.i && c.j && c.k) {
                  if (c.i.length !== c.j.length || c.j.length !== c.k.length || !g(c.i, _) || !g(c.j, _) || !g(c.k, _))
                    return;
                  M = t(o(c.i), o(c.j), o(c.k));
                } else c.alphahull === 0 ? M = s(S) : c.alphahull > 0 ? M = n(c.alphahull, S) : M = y(c.delaunayaxis, S);
                var C = {
                  positions: S,
                  cells: M,
                  lightPosition: [c.lightposition.x, c.lightposition.y, c.lightposition.z],
                  ambient: c.lighting.ambient,
                  diffuse: c.lighting.diffuse,
                  specular: c.lighting.specular,
                  roughness: c.lighting.roughness,
                  fresnel: c.lighting.fresnel,
                  vertexNormalsEpsilon: c.lighting.vertexnormalsepsilon,
                  faceNormalsEpsilon: c.lighting.facenormalsepsilon,
                  opacity: c.opacity,
                  contourEnable: c.contour.show,
                  contourColor: p(c.contour.color).slice(0, 3),
                  contourWidth: c.contour.width,
                  useFacetNormals: c.flatshading
                };
                if (c.intensity) {
                  var m = u(c);
                  this.color = "#fff";
                  var L = c.intensitymode;
                  C[L + "Intensity"] = c.intensity, C[L + "IntensityBounds"] = [m.min, m.max], C.colormap = T(c);
                } else c.vertexcolor ? (this.color = c.vertexcolor[0], C.vertexColors = a(c.vertexcolor)) : c.facecolor ? (this.color = c.facecolor[0], C.cellColors = a(c.facecolor)) : (this.color = c.color, C.meshColor = p(c.color));
                this.mesh.update(C);
              }, i.dispose = function() {
                this.scene.glplot.remove(this.mesh), this.mesh.dispose();
              };
              function x(c, v) {
                var f = c.glplot.gl, _ = b({
                  gl: f
                }), S = new r(c, _, v.uid);
                return _._trace = S, S.update(v), c.glplot.add(_), S;
              }
              Y.exports = x;
            }
          ),
          /***/
          13573: (
            /***/
            function(Y, K, e) {
              var b = e(33626), P = e(34809), n = e(39356), s = e(42450);
              Y.exports = function(A, p, u, t) {
                function r(y, g) {
                  return P.coerce(A, p, s, y, g);
                }
                function i(y) {
                  var g = y.map(function(x) {
                    var c = r(x);
                    return c && P.isArrayOrTypedArray(c) ? c : null;
                  });
                  return g.every(function(x) {
                    return x && x.length === g[0].length;
                  }) && g;
                }
                var a = i(["x", "y", "z"]);
                if (!a) {
                  p.visible = !1;
                  return;
                }
                if (i(["i", "j", "k"]), p.i && (!p.j || !p.k) || p.j && (!p.k || !p.i) || p.k && (!p.i || !p.j)) {
                  p.visible = !1;
                  return;
                }
                var l = b.getComponentMethod("calendars", "handleTraceDefaults");
                l(A, p, ["x", "y", "z"], t), ["lighting.ambient", "lighting.diffuse", "lighting.specular", "lighting.roughness", "lighting.fresnel", "lighting.vertexnormalsepsilon", "lighting.facenormalsepsilon", "lightposition.x", "lightposition.y", "lightposition.z", "flatshading", "alphahull", "delaunayaxis", "opacity"].forEach(function(y) {
                  r(y);
                });
                var o = r("contour.show");
                o && (r("contour.color"), r("contour.width")), "intensity" in A ? (r("intensity"), r("intensitymode"), n(A, p, t, r, {
                  prefix: "",
                  cLetter: "c"
                })) : (p.showscale = !1, "facecolor" in A ? r("facecolor") : "vertexcolor" in A ? r("vertexcolor") : r("color", u)), r("text"), r("hovertext"), r("hovertemplate"), r("xhoverformat"), r("yhoverformat"), r("zhoverformat"), p._length = null;
              };
            }
          ),
          /***/
          58859: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(42450),
                supplyDefaults: e(13573),
                calc: e(44878),
                colorbar: {
                  min: "cmin",
                  max: "cmax"
                },
                plot: e(82836),
                moduleType: "trace",
                name: "mesh3d",
                basePlotModule: e(2487),
                categories: ["gl3d", "showLegend"],
                meta: {}
              };
            }
          ),
          /***/
          86706: (
            /***/
            function(Y, K, e) {
              var b = e(34809).extendFlat, P = e(36640), n = e(80712).axisHoverFormat, s = e(94850).T, T = e(70192), A = e(20909), p = A.INCREASING.COLOR, u = A.DECREASING.COLOR, t = P.line;
              function r(i) {
                return {
                  line: {
                    color: b({}, t.color, {
                      dflt: i
                    }),
                    width: t.width,
                    dash: s,
                    editType: "style"
                  },
                  editType: "style"
                };
              }
              Y.exports = {
                xperiod: P.xperiod,
                xperiod0: P.xperiod0,
                xperiodalignment: P.xperiodalignment,
                xhoverformat: n("x"),
                yhoverformat: n("y"),
                x: {
                  valType: "data_array",
                  editType: "calc+clearAxisTypes"
                },
                open: {
                  valType: "data_array",
                  editType: "calc"
                },
                high: {
                  valType: "data_array",
                  editType: "calc"
                },
                low: {
                  valType: "data_array",
                  editType: "calc"
                },
                close: {
                  valType: "data_array",
                  editType: "calc"
                },
                line: {
                  width: b({}, t.width, {}),
                  dash: b({}, s, {}),
                  editType: "style"
                },
                increasing: r(p),
                decreasing: r(u),
                text: {
                  valType: "string",
                  dflt: "",
                  arrayOk: !0,
                  editType: "calc"
                },
                hovertext: {
                  valType: "string",
                  dflt: "",
                  arrayOk: !0,
                  editType: "calc"
                },
                tickwidth: {
                  valType: "number",
                  min: 0,
                  max: 0.5,
                  dflt: 0.3,
                  editType: "calc"
                },
                hoverlabel: b({}, T.hoverlabel, {
                  split: {
                    valType: "boolean",
                    dflt: !1,
                    editType: "style"
                  }
                }),
                zorder: P.zorder
              };
            }
          ),
          /***/
          95694: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = b._, n = e(29714), s = e(40528), T = e(63821).BADNUM;
              function A(r, i) {
                var a = n.getFromId(r, i.xaxis), l = n.getFromId(r, i.yaxis), o = t(r, a, i), y = i._minDiff;
                i._minDiff = null;
                var g = i._origX;
                i._origX = null;
                var x = i._xcalc;
                i._xcalc = null;
                var c = u(r, i, g, x, l, p);
                return i._extremes[a._id] = n.findExtremes(a, x, {
                  vpad: y / 2
                }), c.length ? (b.extendFlat(c[0].t, {
                  wHover: y / 2,
                  tickLen: o
                }), c) : [{
                  t: {
                    empty: !0
                  }
                }];
              }
              function p(r, i, a, l) {
                return {
                  o: r,
                  h: i,
                  l: a,
                  c: l
                };
              }
              function u(r, i, a, l, o, y) {
                for (var g = o.makeCalcdata(i, "open"), x = o.makeCalcdata(i, "high"), c = o.makeCalcdata(i, "low"), v = o.makeCalcdata(i, "close"), f = b.isArrayOrTypedArray(i.text), _ = b.isArrayOrTypedArray(i.hovertext), S = !0, M = null, C = !!i.xperiodalignment, m = [], L = 0; L < l.length; L++) {
                  var d = l[L], h = g[L], E = x[L], w = c[L], z = v[L];
                  if (d !== T && h !== T && E !== T && w !== T && z !== T) {
                    z === h ? M !== null && z !== M && (S = z > M) : S = z > h, M = z;
                    var O = y(h, E, w, z);
                    O.pos = d, O.yc = (h + z) / 2, O.i = L, O.dir = S ? "increasing" : "decreasing", O.x = O.pos, O.y = [w, E], C && (O.orig_p = a[L]), f && (O.tx = i.text[L]), _ && (O.htx = i.hovertext[L]), m.push(O);
                  } else
                    m.push({
                      pos: d,
                      empty: !0
                    });
                }
                return i._extremes[o._id] = n.findExtremes(o, b.concat(c, x), {
                  padded: !0
                }), m.length && (m[0].t = {
                  labels: {
                    open: P(r, "open:") + " ",
                    high: P(r, "high:") + " ",
                    low: P(r, "low:") + " ",
                    close: P(r, "close:") + " "
                  }
                }), m;
              }
              function t(r, i, a) {
                var l = a._minDiff;
                if (!l) {
                  var o = r._fullData, y = [];
                  l = 1 / 0;
                  var g;
                  for (g = 0; g < o.length; g++) {
                    var x = o[g];
                    if (x.type === "ohlc" && x.visible === !0 && x.xaxis === i._id) {
                      y.push(x);
                      var c = i.makeCalcdata(x, "x");
                      x._origX = c;
                      var v = s(a, i, "x", c).vals;
                      x._xcalc = v;
                      var f = b.distinctVals(v).minDiff;
                      f && isFinite(f) && (l = Math.min(l, f));
                    }
                  }
                  for (l === 1 / 0 && (l = 1), g = 0; g < y.length; g++)
                    y[g]._minDiff = l;
                }
                return l * a.tickwidth;
              }
              Y.exports = {
                calc: A,
                calcCommon: u
              };
            }
          ),
          /***/
          22629: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(28270), n = e(99669), s = e(86706);
              Y.exports = function(p, u, t, r) {
                function i(l, o) {
                  return b.coerce(p, u, s, l, o);
                }
                var a = P(p, u, i, r);
                if (!a) {
                  u.visible = !1;
                  return;
                }
                n(p, u, r, i, {
                  x: !0
                }), i("xhoverformat"), i("yhoverformat"), i("line.width"), i("line.dash"), T(p, u, i, "increasing"), T(p, u, i, "decreasing"), i("text"), i("hovertext"), i("tickwidth"), r._requestRangeslider[u.xaxis] = !0, i("zorder");
              };
              function T(A, p, u, t) {
                u(t + ".line.color"), u(t + ".line.width", p.line.width), u(t + ".line.dash", p.line.dash);
              }
            }
          ),
          /***/
          93245: (
            /***/
            function(Y, K, e) {
              var b = e(29714), P = e(34809), n = e(32141), s = e(78766), T = e(34809).fillText, A = e(20909), p = {
                increasing: A.INCREASING.SYMBOL,
                decreasing: A.DECREASING.SYMBOL
              };
              function u(a, l, o, y) {
                var g = a.cd, x = g[0].trace;
                return x.hoverlabel.split ? r(a, l, o, y) : i(a, l, o, y);
              }
              function t(a, l, o, y) {
                var g = a.cd, x = a.xa, c = g[0].trace, v = g[0].t, f = c.type, _ = f === "ohlc" ? "l" : "min", S = f === "ohlc" ? "h" : "max", M, C, m = v.bPos || 0, L = function(G) {
                  return G.pos + m - l;
                }, d = v.bdPos || v.tickLen, h = v.wHover, E = Math.min(1, d / Math.abs(x.r2c(x.range[1]) - x.r2c(x.range[0])));
                M = a.maxHoverDistance - E, C = a.maxSpikeDistance - E;
                function w(G) {
                  var q = L(G);
                  return n.inbox(q - h, q + h, M);
                }
                function z(G) {
                  var q = G[_], rt = G[S];
                  return q === rt || n.inbox(q - o, rt - o, M);
                }
                function O(G) {
                  return (w(G) + z(G)) / 2;
                }
                var B = n.getDistanceFunction(y, w, z, O);
                if (n.getClosest(g, B, a), a.index === !1) return null;
                var V = g[a.index];
                if (V.empty) return null;
                var U = V.dir, H = c[U], F = H.line.color;
                return s.opacity(F) && H.line.width ? a.color = F : a.color = H.fillcolor, a.x0 = x.c2p(V.pos + m - d, !0), a.x1 = x.c2p(V.pos + m + d, !0), a.xLabelVal = V.orig_p !== void 0 ? V.orig_p : V.pos, a.spikeDistance = O(V) * C / M, a.xSpike = x.c2p(V.pos, !0), a;
              }
              function r(a, l, o, y) {
                var g = a.cd, x = a.ya, c = g[0].trace, v = g[0].t, f = [], _ = t(a, l, o, y);
                if (!_) return [];
                var S = _.index, M = g[S], C = M.hi || c.hoverinfo, m = C.split("+"), L = C === "all", d = L || m.indexOf("y") !== -1;
                if (!d) return [];
                for (var h = ["high", "open", "close", "low"], E = {}, w = 0; w < h.length; w++) {
                  var z = h[w], O = c[z][_.index], B = x.c2p(O, !0), V;
                  O in E ? (V = E[O], V.yLabel += "<br>" + v.labels[z] + b.hoverLabelText(x, O, c.yhoverformat)) : (V = P.extendFlat({}, _), V.y0 = V.y1 = B, V.yLabelVal = O, V.yLabel = v.labels[z] + b.hoverLabelText(x, O, c.yhoverformat), V.name = "", f.push(V), E[O] = V);
                }
                return f;
              }
              function i(a, l, o, y) {
                var g = a.cd, x = a.ya, c = g[0].trace, v = g[0].t, f = t(a, l, o, y);
                if (!f) return [];
                var _ = f.index, S = g[_], M = f.index = S.i, C = S.dir;
                function m(O) {
                  return v.labels[O] + b.hoverLabelText(x, c[O][M], c.yhoverformat);
                }
                var L = S.hi || c.hoverinfo, d = L.split("+"), h = L === "all", E = h || d.indexOf("y") !== -1, w = h || d.indexOf("text") !== -1, z = E ? [m("open"), m("high"), m("low"), m("close") + "  " + p[C]] : [];
                return w && T(S, c, z), f.extraText = z.join("<br>"), f.y0 = f.y1 = x.c2p(S.yc, !0), [f];
              }
              Y.exports = {
                hoverPoints: u,
                hoverSplit: r,
                hoverOnPoints: i
              };
            }
          ),
          /***/
          12683: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                moduleType: "trace",
                name: "ohlc",
                basePlotModule: e(37703),
                categories: ["cartesian", "svg", "showLegend"],
                meta: {},
                attributes: e(86706),
                supplyDefaults: e(22629),
                calc: e(95694).calc,
                plot: e(38956),
                style: e(57406),
                hoverPoints: e(93245).hoverPoints,
                selectPoints: e(49343)
              };
            }
          ),
          /***/
          28270: (
            /***/
            function(Y, K, e) {
              var b = e(33626), P = e(34809);
              Y.exports = function(s, T, A, p) {
                var u = A("x"), t = A("open"), r = A("high"), i = A("low"), a = A("close");
                A("hoverlabel.split");
                var l = b.getComponentMethod("calendars", "handleTraceDefaults");
                if (l(s, T, ["x"], p), !!(t && r && i && a)) {
                  var o = Math.min(t.length, r.length, i.length, a.length);
                  return u && (o = Math.min(o, P.minRowLength(u))), T._length = o, o;
                }
              };
            }
          ),
          /***/
          38956: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(34809);
              Y.exports = function(s, T, A, p) {
                var u = T.yaxis, t = T.xaxis, r = !!t.rangebreaks;
                P.makeTraceGroups(p, A, "trace ohlc").each(function(i) {
                  var a = b.select(this), l = i[0], o = l.t, y = l.trace;
                  if (y.visible !== !0 || o.empty) {
                    a.remove();
                    return;
                  }
                  var g = o.tickLen, x = a.selectAll("path").data(P.identity);
                  x.enter().append("path"), x.exit().remove(), x.attr("d", function(c) {
                    if (c.empty) return "M0,0Z";
                    var v = t.c2p(c.pos - g, !0), f = t.c2p(c.pos + g, !0), _ = r ? (v + f) / 2 : t.c2p(c.pos, !0), S = u.c2p(c.o, !0), M = u.c2p(c.h, !0), C = u.c2p(c.l, !0), m = u.c2p(c.c, !0);
                    return "M" + v + "," + S + "H" + _ + "M" + _ + "," + M + "V" + C + "M" + f + "," + m + "H" + _;
                  });
                });
              };
            }
          ),
          /***/
          49343: (
            /***/
            function(Y) {
              Y.exports = function(e, b) {
                var P = e.cd, n = e.xaxis, s = e.yaxis, T = [], A, p = P[0].t.bPos || 0;
                if (b === !1)
                  for (A = 0; A < P.length; A++)
                    P[A].selected = 0;
                else
                  for (A = 0; A < P.length; A++) {
                    var u = P[A];
                    b.contains([n.c2p(u.pos + p), s.c2p(u.yc)], null, u.i, e) ? (T.push({
                      pointNumber: u.i,
                      x: n.c2d(u.pos),
                      y: s.c2d(u.yc)
                    }), u.selected = 1) : u.selected = 0;
                  }
                return T;
              };
            }
          ),
          /***/
          57406: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(62203), n = e(78766);
              Y.exports = function(T, A, p) {
                var u = p || b.select(T).selectAll("g.ohlclayer").selectAll("g.trace");
                u.style("opacity", function(t) {
                  return t[0].trace.opacity;
                }), u.each(function(t) {
                  var r = t[0].trace;
                  b.select(this).selectAll("path").each(function(i) {
                    if (!i.empty) {
                      var a = r[i.dir].line;
                      b.select(this).style("fill", "none").call(n.stroke, a.color).call(P.dashLine, a.dash, a.width).style("opacity", r.selectedpoints && !i.selected ? 0.3 : 1);
                    }
                  });
                });
              };
            }
          ),
          /***/
          11660: (
            /***/
            function(Y, K, e) {
              var b = e(93049).extendFlat, P = e(9829), n = e(80337), s = e(87163), T = e(3208).rb, A = e(13792).u, p = b({
                editType: "calc"
              }, s("line", {
                editTypeOverride: "calc"
              }), {
                shape: {
                  valType: "enumerated",
                  values: ["linear", "hspline"],
                  dflt: "linear",
                  editType: "plot"
                },
                hovertemplate: T({
                  editType: "plot",
                  arrayOk: !1
                }, {
                  keys: ["count", "probability"]
                })
              });
              Y.exports = {
                domain: A({
                  name: "parcats",
                  trace: !0,
                  editType: "calc"
                }),
                hoverinfo: b({}, P.hoverinfo, {
                  flags: ["count", "probability"],
                  editType: "plot",
                  arrayOk: !1
                }),
                hoveron: {
                  valType: "enumerated",
                  values: ["category", "color", "dimension"],
                  dflt: "category",
                  editType: "plot"
                },
                hovertemplate: T({
                  editType: "plot",
                  arrayOk: !1
                }, {
                  keys: ["count", "probability", "category", "categorycount", "colorcount", "bandcolorcount"]
                }),
                arrangement: {
                  valType: "enumerated",
                  values: ["perpendicular", "freeform", "fixed"],
                  dflt: "perpendicular",
                  editType: "plot"
                },
                bundlecolors: {
                  valType: "boolean",
                  dflt: !0,
                  editType: "plot"
                },
                sortpaths: {
                  valType: "enumerated",
                  values: ["forward", "backward"],
                  dflt: "forward",
                  editType: "plot"
                },
                labelfont: n({
                  editType: "calc"
                }),
                tickfont: n({
                  autoShadowDflt: !0,
                  editType: "calc"
                }),
                dimensions: {
                  _isLinkedToArray: "dimension",
                  label: {
                    valType: "string",
                    editType: "calc"
                  },
                  categoryorder: {
                    valType: "enumerated",
                    values: ["trace", "category ascending", "category descending", "array"],
                    dflt: "trace",
                    editType: "calc"
                  },
                  categoryarray: {
                    valType: "data_array",
                    editType: "calc"
                  },
                  ticktext: {
                    valType: "data_array",
                    editType: "calc"
                  },
                  values: {
                    valType: "data_array",
                    dflt: [],
                    editType: "calc"
                  },
                  displayindex: {
                    valType: "integer",
                    editType: "calc"
                  },
                  editType: "calc",
                  visible: {
                    valType: "boolean",
                    dflt: !0,
                    editType: "calc"
                  }
                },
                line: p,
                counts: {
                  valType: "number",
                  min: 0,
                  dflt: 1,
                  arrayOk: !0,
                  editType: "calc"
                },
                // Hide unsupported top-level properties from plot-schema
                customdata: void 0,
                hoverlabel: void 0,
                ids: void 0,
                legend: void 0,
                legendgroup: void 0,
                legendrank: void 0,
                opacity: void 0,
                selectedpoints: void 0,
                showlegend: void 0
              };
            }
          ),
          /***/
          83260: (
            /***/
            function(Y, K, e) {
              var b = e(4173).eV, P = e(37822), n = "parcats";
              K.name = n, K.plot = function(s, T, A, p) {
                var u = b(s.calcdata, n);
                if (u.length) {
                  var t = u[0];
                  P(s, t, A, p);
                }
              }, K.clean = function(s, T, A, p) {
                var u = p._has && p._has("parcats"), t = T._has && T._has("parcats");
                u && !t && p._paperdiv.selectAll(".parcats").remove();
              };
            }
          ),
          /***/
          95564: (
            /***/
            function(Y, K, e) {
              var b = e(71293).wrap, P = e(65477).hasColorscale, n = e(28379), s = e(48965), T = e(62203), A = e(34809), p = e(10721);
              Y.exports = function(v, f) {
                var _ = A.filterVisible(f.dimensions);
                if (_.length === 0) return [];
                var S = _.map(function(ht) {
                  var et;
                  if (ht.categoryorder === "trace")
                    et = null;
                  else if (ht.categoryorder === "array")
                    et = ht.categoryarray;
                  else {
                    et = s(ht.values);
                    for (var Q = !0, j = 0; j < et.length; j++)
                      if (!p(et[j])) {
                        Q = !1;
                        break;
                      }
                    et.sort(Q ? A.sorterAsc : void 0), ht.categoryorder === "category descending" && (et = et.reverse());
                  }
                  return o(ht.values, et);
                }), M, C, m;
                A.isArrayOrTypedArray(f.counts) ? M = f.counts : M = [f.counts], y(_), _.forEach(function(ht, et) {
                  g(ht, S[et]);
                });
                var L = f.line, d;
                L ? (P(f, "line") && n(v, f, {
                  vals: f.line.color,
                  containerStr: "line",
                  cLetter: "c"
                }), d = T.tryColorscale(L)) : d = A.identity;
                function h(ht) {
                  var et, Q;
                  return A.isArrayOrTypedArray(L.color) ? (et = L.color[ht % L.color.length], Q = et) : et = L.color, {
                    color: d(et),
                    rawColor: Q
                  };
                }
                var E = _[0].values.length, w = {}, z = S.map(function(ht) {
                  return ht.inds;
                });
                m = 0;
                var O, B;
                for (O = 0; O < E; O++) {
                  var V = [];
                  for (B = 0; B < z.length; B++)
                    V.push(z[B][O]);
                  C = M[O % M.length], m += C;
                  var U = h(O), H = V + "-" + U.rawColor;
                  w[H] === void 0 && (w[H] = a(V, U.color, U.rawColor)), l(w[H], O, C);
                }
                var F = _.map(function(ht, et) {
                  return t(et, ht._index, ht._displayindex, ht.label, m);
                });
                for (O = 0; O < E; O++)
                  for (C = M[O % M.length], B = 0; B < F.length; B++) {
                    var G = F[B].containerInd, q = S[B].inds[O], rt = F[B].categories;
                    if (rt[q] === void 0) {
                      var st = f.dimensions[G]._categoryarray[q], vt = f.dimensions[G]._ticktext[q];
                      rt[q] = r(B, q, st, vt);
                    }
                    i(rt[q], O, C);
                  }
                return b(u(F, w, m));
              };
              function u(c, v, f) {
                var _ = c.map(function(S) {
                  return S.categories.length;
                }).reduce(function(S, M) {
                  return Math.max(S, M);
                });
                return {
                  dimensions: c,
                  paths: v,
                  trace: void 0,
                  maxCats: _,
                  count: f
                };
              }
              function t(c, v, f, _, S) {
                return {
                  dimensionInd: c,
                  containerInd: v,
                  displayInd: f,
                  dimensionLabel: _,
                  count: S,
                  categories: [],
                  dragX: null
                };
              }
              function r(c, v, f, _) {
                return {
                  dimensionInd: c,
                  categoryInd: v,
                  categoryValue: f,
                  displayInd: v,
                  categoryLabel: _,
                  valueInds: [],
                  count: 0,
                  dragY: null
                };
              }
              function i(c, v, f) {
                c.valueInds.push(v), c.count += f;
              }
              function a(c, v, f) {
                return {
                  categoryInds: c,
                  color: v,
                  rawColor: f,
                  valueInds: [],
                  count: 0
                };
              }
              function l(c, v, f) {
                c.valueInds.push(v), c.count += f;
              }
              function o(c, v) {
                v == null ? v = [] : v = v.map(function(d) {
                  return d;
                });
                var f = {}, _ = {}, S = [];
                v.forEach(function(d, h) {
                  f[d] = 0, _[d] = h;
                });
                for (var M = 0; M < c.length; M++) {
                  var C = c[M], m;
                  f[C] === void 0 ? (f[C] = 1, m = v.push(C) - 1, _[C] = m) : (f[C]++, m = _[C]), S.push(m);
                }
                var L = v.map(function(d) {
                  return f[d];
                });
                return {
                  uniqueValues: v,
                  uniqueCounts: L,
                  inds: S
                };
              }
              function y(c) {
                var v = c.map(function(_) {
                  return _.displayindex;
                }), f;
                if (x(v))
                  for (f = 0; f < c.length; f++)
                    c[f]._displayindex = c[f].displayindex;
                else
                  for (f = 0; f < c.length; f++)
                    c[f]._displayindex = f;
              }
              function g(c, v) {
                c._categoryarray = v.uniqueValues, c.ticktext === null || c.ticktext === void 0 ? c._ticktext = [] : c._ticktext = c.ticktext.slice();
                for (var f = c._ticktext.length; f < v.uniqueValues.length; f++)
                  c._ticktext.push(v.uniqueValues[f]);
              }
              function x(c) {
                for (var v = new Array(c.length), f = 0; f < c.length; f++) {
                  if (c[f] < 0 || c[f] >= c.length || v[c[f]] !== void 0)
                    return !1;
                  v[c[f]] = !0;
                }
                return !0;
              }
            }
          ),
          /***/
          62651: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(65477).hasColorscale, n = e(39356), s = e(13792).N, T = e(59008), A = e(11660), p = e(63197), u = e(87800).isTypedArraySpec;
              function t(i, a, l, o, y) {
                y("line.shape"), y("line.hovertemplate");
                var g = y("line.color", o.colorway[0]);
                if (P(i, "line") && b.isArrayOrTypedArray(g)) {
                  if (g.length)
                    return y("line.colorscale"), n(i, a, o, y, {
                      prefix: "line.",
                      cLetter: "c"
                    }), g.length;
                  a.line.color = l;
                }
                return 1 / 0;
              }
              function r(i, a) {
                function l(f, _) {
                  return b.coerce(i, a, A.dimensions, f, _);
                }
                var o = l("values"), y = l("visible");
                if (o && o.length || (y = a.visible = !1), y) {
                  l("label"), l("displayindex", a._index);
                  var g = i.categoryarray, x = b.isArrayOrTypedArray(g) && g.length > 0 || u(g), c;
                  x && (c = "array");
                  var v = l("categoryorder", c);
                  v === "array" ? (l("categoryarray"), l("ticktext")) : (delete i.categoryarray, delete i.ticktext), !x && v === "array" && (a.categoryorder = "trace");
                }
              }
              Y.exports = function(a, l, o, y) {
                function g(f, _) {
                  return b.coerce(a, l, A, f, _);
                }
                var x = T(a, l, {
                  name: "dimensions",
                  handleItemDefaults: r
                }), c = t(a, l, o, y, g);
                s(l, y, g), (!Array.isArray(x) || !x.length) && (l.visible = !1), p(l, x, "values", c), g("hoveron"), g("hovertemplate"), g("arrangement"), g("bundlecolors"), g("sortpaths"), g("counts");
                var v = y.font;
                b.coerceFont(g, "labelfont", v, {
                  overrideDflt: {
                    size: Math.round(v.size)
                  }
                }), b.coerceFont(g, "tickfont", v, {
                  autoShadowDflt: !0,
                  overrideDflt: {
                    size: Math.round(v.size / 1.2)
                  }
                });
              };
            }
          ),
          /***/
          6305: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(11660),
                supplyDefaults: e(62651),
                calc: e(95564),
                plot: e(37822),
                colorbar: {
                  container: "line",
                  min: "cmin",
                  max: "cmax"
                },
                moduleType: "trace",
                name: "parcats",
                basePlotModule: e(83260),
                categories: ["noOpacity"],
                meta: {}
              };
            }
          ),
          /***/
          27219: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(88640).Dj, n = e(31420), s = e(32141), T = e(34809), A = T.strTranslate, p = e(62203), u = e(65657), t = e(30635);
              function r(j, at, ut, nt) {
                var X = at._context.staticPlot, ct = j.map(st.bind(0, at, ut)), lt = nt.selectAll("g.parcatslayer").data([null]);
                lt.enter().append("g").attr("class", "parcatslayer").style("pointer-events", X ? "none" : "all");
                var pt = lt.selectAll("g.trace.parcats").data(ct, i), wt = pt.enter().append("g").attr("class", "trace parcats");
                pt.attr("transform", function(kt) {
                  return A(kt.x, kt.y);
                }), wt.append("g").attr("class", "paths");
                var Et = pt.select("g.paths"), Ct = Et.selectAll("path.path").data(function(kt) {
                  return kt.paths;
                }, i);
                Ct.attr("fill", function(kt) {
                  return kt.model.color;
                });
                var Gt = Ct.enter().append("path").attr("class", "path").attr("stroke-opacity", 0).attr("fill", function(kt) {
                  return kt.model.color;
                }).attr("fill-opacity", 0);
                v(Gt), Ct.attr("d", function(kt) {
                  return kt.svgD;
                }), Gt.empty() || Ct.sort(l), Ct.exit().remove(), Ct.on("mouseover", o).on("mouseout", y).on("click", c), wt.append("g").attr("class", "dimensions");
                var Jt = pt.select("g.dimensions"), Qt = Jt.selectAll("g.dimension").data(function(kt) {
                  return kt.dimensions;
                }, i);
                Qt.enter().append("g").attr("class", "dimension"), Qt.attr("transform", function(kt) {
                  return A(kt.x, 0);
                }), Qt.exit().remove();
                var Vt = Qt.selectAll("g.category").data(function(kt) {
                  return kt.categories;
                }, i), zt = Vt.enter().append("g").attr("class", "category");
                Vt.attr("transform", function(kt) {
                  return A(0, kt.y);
                }), zt.append("rect").attr("class", "catrect").attr("pointer-events", "none"), Vt.select("rect.catrect").attr("fill", "none").attr("width", function(kt) {
                  return kt.width;
                }).attr("height", function(kt) {
                  return kt.height;
                }), S(zt);
                var Rt = Vt.selectAll("rect.bandrect").data(
                  /** @param {CategoryViewModel} catViewModel*/
                  function(kt) {
                    return kt.bands;
                  },
                  i
                );
                Rt.each(function() {
                  T.raiseToTop(this);
                }), Rt.attr("fill", function(kt) {
                  return kt.color;
                });
                var Wt = Rt.enter().append("rect").attr("class", "bandrect").attr("stroke-opacity", 0).attr("fill", function(kt) {
                  return kt.color;
                }).attr("fill-opacity", 0);
                Rt.attr("fill", function(kt) {
                  return kt.color;
                }).attr("width", function(kt) {
                  return kt.width;
                }).attr("height", function(kt) {
                  return kt.height;
                }).attr("y", function(kt) {
                  return kt.y;
                }).attr(
                  "cursor",
                  /** @param {CategoryBandViewModel} bandModel*/
                  function(kt) {
                    return kt.parcatsViewModel.arrangement === "fixed" ? "default" : kt.parcatsViewModel.arrangement === "perpendicular" ? "ns-resize" : "move";
                  }
                ), C(Wt), Rt.exit().remove(), zt.append("text").attr("class", "catlabel").attr("pointer-events", "none"), Vt.select("text.catlabel").attr("text-anchor", function(kt) {
                  return a(kt) ? "start" : "end";
                }).attr("alignment-baseline", "middle").style("fill", "rgb(0, 0, 0)").attr("x", function(kt) {
                  return a(kt) ? kt.width + 5 : -5;
                }).attr("y", function(kt) {
                  return kt.height / 2;
                }).text(function(kt) {
                  return kt.model.categoryLabel;
                }).each(
                  /** @param {CategoryViewModel} catModel*/
                  function(kt) {
                    p.font(b.select(this), kt.parcatsViewModel.categorylabelfont), t.convertToTspans(b.select(this), at);
                  }
                ), zt.append("text").attr("class", "dimlabel"), Vt.select("text.dimlabel").attr("text-anchor", "middle").attr("alignment-baseline", "baseline").attr(
                  "cursor",
                  /** @param {CategoryViewModel} catModel*/
                  function(kt) {
                    return kt.parcatsViewModel.arrangement === "fixed" ? "default" : "ew-resize";
                  }
                ).attr("x", function(kt) {
                  return kt.width / 2;
                }).attr("y", -5).text(function(kt, re) {
                  return re === 0 ? kt.parcatsViewModel.model.dimensions[kt.model.dimensionInd].dimensionLabel : null;
                }).each(
                  /** @param {CategoryViewModel} catModel*/
                  function(kt) {
                    p.font(b.select(this), kt.parcatsViewModel.labelfont);
                  }
                ), Vt.selectAll("rect.bandrect").on("mouseover", B).on("mouseout", V), Vt.exit().remove(), Qt.call(b.behavior.drag().origin(function(kt) {
                  return {
                    x: kt.x,
                    y: 0
                  };
                }).on("dragstart", U).on("drag", H).on("dragend", F)), pt.each(function(kt) {
                  kt.traceSelection = b.select(this), kt.pathSelection = b.select(this).selectAll("g.paths").selectAll("path.path"), kt.dimensionSelection = b.select(this).selectAll("g.dimensions").selectAll("g.dimension");
                }), pt.exit().remove();
              }
              Y.exports = function(j, at, ut, nt) {
                r(ut, j, nt, at);
              };
              function i(j) {
                return j.key;
              }
              function a(j) {
                var at = j.parcatsViewModel.dimensions.length, ut = j.parcatsViewModel.dimensions[at - 1].model.dimensionInd;
                return j.model.dimensionInd === ut;
              }
              function l(j, at) {
                return j.model.rawColor > at.model.rawColor ? 1 : j.model.rawColor < at.model.rawColor ? -1 : 0;
              }
              function o(j) {
                if (!j.parcatsViewModel.dragDimension && j.parcatsViewModel.hoverinfoItems.indexOf("skip") === -1) {
                  T.raiseToTop(this), f(b.select(this));
                  var at = g(j), ut = x(j);
                  if (j.parcatsViewModel.graphDiv.emit("plotly_hover", {
                    points: at,
                    event: b.event,
                    constraints: ut
                  }), j.parcatsViewModel.hoverinfoItems.indexOf("none") === -1) {
                    var nt = b.mouse(this)[0], X = j.parcatsViewModel.graphDiv, ct = j.parcatsViewModel.trace, lt = X._fullLayout, pt = lt._paperdiv.node().getBoundingClientRect(), wt = j.parcatsViewModel.graphDiv.getBoundingClientRect(), Et, Ct, Gt;
                    for (Gt = 0; Gt < j.leftXs.length - 1; Gt++)
                      if (j.leftXs[Gt] + j.dimWidths[Gt] - 2 <= nt && nt <= j.leftXs[Gt + 1] + 2) {
                        var Jt = j.parcatsViewModel.dimensions[Gt], Qt = j.parcatsViewModel.dimensions[Gt + 1];
                        Et = (Jt.x + Jt.width + Qt.x) / 2, Ct = (j.topYs[Gt] + j.topYs[Gt + 1] + j.height) / 2;
                        break;
                      }
                    var Vt = j.parcatsViewModel.x + Et, zt = j.parcatsViewModel.y + Ct, Rt = u.mostReadable(j.model.color, ["black", "white"]), Wt = j.model.count, kt = Wt / j.parcatsViewModel.model.count, re = {
                      countLabel: Wt,
                      probabilityLabel: kt.toFixed(3)
                    }, ge = [];
                    j.parcatsViewModel.hoverinfoItems.indexOf("count") !== -1 && ge.push(["Count:", re.countLabel].join(" ")), j.parcatsViewModel.hoverinfoItems.indexOf("probability") !== -1 && ge.push(["P:", re.probabilityLabel].join(" "));
                    var _e = ge.join("<br>"), ce = b.mouse(X)[0];
                    s.loneHover({
                      trace: ct,
                      x: Vt - pt.left + wt.left,
                      y: zt - pt.top + wt.top,
                      text: _e,
                      color: j.model.color,
                      borderColor: "black",
                      fontFamily: 'Monaco, "Courier New", monospace',
                      fontSize: 10,
                      fontColor: Rt,
                      idealAlign: ce < Vt ? "right" : "left",
                      hovertemplate: (ct.line || {}).hovertemplate,
                      hovertemplateLabels: re,
                      eventData: [{
                        data: ct._input,
                        fullData: ct,
                        count: Wt,
                        probability: kt
                      }]
                    }, {
                      container: lt._hoverlayer.node(),
                      outerContainer: lt._paper.node(),
                      gd: X
                    });
                  }
                }
              }
              function y(j) {
                if (!j.parcatsViewModel.dragDimension && (v(b.select(this)), s.loneUnhover(j.parcatsViewModel.graphDiv._fullLayout._hoverlayer.node()), j.parcatsViewModel.pathSelection.sort(l), j.parcatsViewModel.hoverinfoItems.indexOf("skip") === -1)) {
                  var at = g(j), ut = x(j);
                  j.parcatsViewModel.graphDiv.emit("plotly_unhover", {
                    points: at,
                    event: b.event,
                    constraints: ut
                  });
                }
              }
              function g(j) {
                for (var at = [], ut = G(j.parcatsViewModel), nt = 0; nt < j.model.valueInds.length; nt++) {
                  var X = j.model.valueInds[nt];
                  at.push({
                    curveNumber: ut,
                    pointNumber: X
                  });
                }
                return at;
              }
              function x(j) {
                for (var at = {}, ut = j.parcatsViewModel.model.dimensions, nt = 0; nt < ut.length; nt++) {
                  var X = ut[nt], ct = X.categories[j.model.categoryInds[nt]];
                  at[X.containerInd] = ct.categoryValue;
                }
                return j.model.rawColor !== void 0 && (at.color = j.model.rawColor), at;
              }
              function c(j) {
                if (j.parcatsViewModel.hoverinfoItems.indexOf("skip") === -1) {
                  var at = g(j), ut = x(j);
                  j.parcatsViewModel.graphDiv.emit("plotly_click", {
                    points: at,
                    event: b.event,
                    constraints: ut
                  });
                }
              }
              function v(j) {
                j.attr("fill", function(at) {
                  return at.model.color;
                }).attr("fill-opacity", 0.6).attr("stroke", "lightgray").attr("stroke-width", 0.2).attr("stroke-opacity", 1);
              }
              function f(j) {
                j.attr("fill-opacity", 0.8).attr("stroke", function(at) {
                  return u.mostReadable(at.model.color, ["black", "white"]);
                }).attr("stroke-width", 0.3);
              }
              function _(j) {
                j.select("rect.catrect").attr("stroke", "black").attr("stroke-width", 2.5);
              }
              function S(j) {
                j.select("rect.catrect").attr("stroke", "black").attr("stroke-width", 1).attr("stroke-opacity", 1);
              }
              function M(j) {
                j.attr("stroke", "black").attr("stroke-width", 1.5);
              }
              function C(j) {
                j.attr("stroke", "black").attr("stroke-width", 0.2).attr("stroke-opacity", 1).attr("fill-opacity", 1);
              }
              function m(j) {
                var at = j.parcatsViewModel.pathSelection, ut = j.categoryViewModel.model.dimensionInd, nt = j.categoryViewModel.model.categoryInd;
                return at.filter(
                  /** @param {PathViewModel} pathViewModel */
                  function(X) {
                    return X.model.categoryInds[ut] === nt && X.model.color === j.color;
                  }
                );
              }
              function L(j) {
                var at = b.select(j.parentNode).selectAll("rect.bandrect");
                at.each(function(ut) {
                  var nt = m(ut);
                  f(nt), nt.each(function() {
                    T.raiseToTop(this);
                  });
                }), _(b.select(j.parentNode));
              }
              function d(j) {
                var at = b.select(j).datum(), ut = m(at);
                f(ut), ut.each(function() {
                  T.raiseToTop(this);
                }), b.select(j.parentNode).selectAll("rect.bandrect").filter(function(nt) {
                  return nt.color === at.color;
                }).each(function() {
                  T.raiseToTop(this), M(b.select(this));
                });
              }
              function h(j, at, ut) {
                var nt = b.select(j).datum(), X = nt.categoryViewModel.model, ct = nt.parcatsViewModel.graphDiv, lt = b.select(j.parentNode).selectAll("rect.bandrect"), pt = [];
                lt.each(function(Et) {
                  var Ct = m(Et);
                  Ct.each(function(Gt) {
                    Array.prototype.push.apply(pt, g(Gt));
                  });
                });
                var wt = {};
                wt[X.dimensionInd] = X.categoryValue, ct.emit(at, {
                  points: pt,
                  event: ut,
                  constraints: wt
                });
              }
              function E(j, at, ut) {
                var nt = b.select(j).datum(), X = nt.categoryViewModel.model, ct = nt.parcatsViewModel.graphDiv, lt = m(nt), pt = [];
                lt.each(function(Et) {
                  Array.prototype.push.apply(pt, g(Et));
                });
                var wt = {};
                wt[X.dimensionInd] = X.categoryValue, nt.rawColor !== void 0 && (wt.color = nt.rawColor), ct.emit(at, {
                  points: pt,
                  event: ut,
                  constraints: wt
                });
              }
              function w(j, at, ut) {
                j._fullLayout._calcInverseTransform(j);
                var nt = j._fullLayout._invScaleX, X = j._fullLayout._invScaleY, ct = b.select(ut.parentNode).select("rect.catrect"), lt = ct.node().getBoundingClientRect(), pt = ct.datum(), wt = pt.parcatsViewModel, Et = wt.model.dimensions[pt.model.dimensionInd], Ct = wt.trace, Gt = lt.top + lt.height / 2, Jt, Qt;
                wt.dimensions.length > 1 && Et.displayInd === wt.dimensions.length - 1 ? (Jt = lt.left, Qt = "left") : (Jt = lt.left + lt.width, Qt = "right");
                var Vt = pt.model.count, zt = pt.model.categoryLabel, Rt = Vt / pt.parcatsViewModel.model.count, Wt = {
                  countLabel: Vt,
                  categoryLabel: zt,
                  probabilityLabel: Rt.toFixed(3)
                }, kt = [];
                pt.parcatsViewModel.hoverinfoItems.indexOf("count") !== -1 && kt.push(["Count:", Wt.countLabel].join(" ")), pt.parcatsViewModel.hoverinfoItems.indexOf("probability") !== -1 && kt.push(["P(" + Wt.categoryLabel + "):", Wt.probabilityLabel].join(" "));
                var re = kt.join("<br>");
                return {
                  trace: Ct,
                  x: nt * (Jt - at.left),
                  y: X * (Gt - at.top),
                  text: re,
                  color: "lightgray",
                  borderColor: "black",
                  fontFamily: 'Monaco, "Courier New", monospace',
                  fontSize: 12,
                  fontColor: "black",
                  idealAlign: Qt,
                  hovertemplate: Ct.hovertemplate,
                  hovertemplateLabels: Wt,
                  eventData: [{
                    data: Ct._input,
                    fullData: Ct,
                    count: Vt,
                    category: zt,
                    probability: Rt
                  }]
                };
              }
              function z(j, at, ut) {
                var nt = [];
                return b.select(ut.parentNode.parentNode).selectAll("g.category").select("rect.catrect").each(function() {
                  var X = this;
                  nt.push(w(j, at, X));
                }), nt;
              }
              function O(j, at, ut) {
                j._fullLayout._calcInverseTransform(j);
                var nt = j._fullLayout._invScaleX, X = j._fullLayout._invScaleY, ct = ut.getBoundingClientRect(), lt = b.select(ut).datum(), pt = lt.categoryViewModel, wt = pt.parcatsViewModel, Et = wt.model.dimensions[pt.model.dimensionInd], Ct = wt.trace, Gt = ct.y + ct.height / 2, Jt, Qt;
                wt.dimensions.length > 1 && Et.displayInd === wt.dimensions.length - 1 ? (Jt = ct.left, Qt = "left") : (Jt = ct.left + ct.width, Qt = "right");
                var Vt = pt.model.categoryLabel, zt = lt.parcatsViewModel.model.count, Rt = 0;
                lt.categoryViewModel.bands.forEach(function(Ne) {
                  Ne.color === lt.color && (Rt += Ne.count);
                });
                var Wt = pt.model.count, kt = 0;
                wt.pathSelection.each(
                  /** @param {PathViewModel} pathViewModel */
                  function(Ne) {
                    Ne.model.color === lt.color && (kt += Ne.model.count);
                  }
                );
                var re = Rt / zt, ge = Rt / kt, _e = Rt / Wt, ce = {
                  countLabel: Rt,
                  categoryLabel: Vt,
                  probabilityLabel: re.toFixed(3)
                }, ae = [];
                pt.parcatsViewModel.hoverinfoItems.indexOf("count") !== -1 && ae.push(["Count:", ce.countLabel].join(" ")), pt.parcatsViewModel.hoverinfoItems.indexOf("probability") !== -1 && (ae.push("P(color ∩ " + Vt + "): " + ce.probabilityLabel), ae.push("P(" + Vt + " | color): " + ge.toFixed(3)), ae.push("P(color | " + Vt + "): " + _e.toFixed(3)));
                var Se = ae.join("<br>"), ze = u.mostReadable(lt.color, ["black", "white"]);
                return {
                  trace: Ct,
                  x: nt * (Jt - at.left),
                  y: X * (Gt - at.top),
                  // name: 'NAME',
                  text: Se,
                  color: lt.color,
                  borderColor: "black",
                  fontFamily: 'Monaco, "Courier New", monospace',
                  fontColor: ze,
                  fontSize: 10,
                  idealAlign: Qt,
                  hovertemplate: Ct.hovertemplate,
                  hovertemplateLabels: ce,
                  eventData: [{
                    data: Ct._input,
                    fullData: Ct,
                    category: Vt,
                    count: zt,
                    probability: re,
                    categorycount: Wt,
                    colorcount: kt,
                    bandcolorcount: Rt
                  }]
                };
              }
              function B(j) {
                if (!j.parcatsViewModel.dragDimension && j.parcatsViewModel.hoverinfoItems.indexOf("skip") === -1) {
                  var at = b.mouse(this)[1];
                  if (at < -1)
                    return;
                  var ut = j.parcatsViewModel.graphDiv, nt = ut._fullLayout, X = nt._paperdiv.node().getBoundingClientRect(), ct = j.parcatsViewModel.hoveron, lt = this;
                  if (ct === "color" ? (d(lt), E(lt, "plotly_hover", b.event)) : (L(lt), h(lt, "plotly_hover", b.event)), j.parcatsViewModel.hoverinfoItems.indexOf("none") === -1) {
                    var pt;
                    ct === "category" ? pt = w(ut, X, lt) : ct === "color" ? pt = O(ut, X, lt) : ct === "dimension" && (pt = z(ut, X, lt)), pt && s.loneHover(pt, {
                      container: nt._hoverlayer.node(),
                      outerContainer: nt._paper.node(),
                      gd: ut
                    });
                  }
                }
              }
              function V(j) {
                var at = j.parcatsViewModel;
                if (!at.dragDimension && (v(at.pathSelection), S(at.dimensionSelection.selectAll("g.category")), C(at.dimensionSelection.selectAll("g.category").selectAll("rect.bandrect")), s.loneUnhover(at.graphDiv._fullLayout._hoverlayer.node()), at.pathSelection.sort(l), at.hoverinfoItems.indexOf("skip") === -1)) {
                  var ut = j.parcatsViewModel.hoveron, nt = this;
                  ut === "color" ? E(nt, "plotly_unhover", b.event) : h(nt, "plotly_unhover", b.event);
                }
              }
              function U(j) {
                j.parcatsViewModel.arrangement !== "fixed" && (j.dragDimensionDisplayInd = j.model.displayInd, j.initialDragDimensionDisplayInds = j.parcatsViewModel.model.dimensions.map(function(at) {
                  return at.displayInd;
                }), j.dragHasMoved = !1, j.dragCategoryDisplayInd = null, b.select(this).selectAll("g.category").select("rect.catrect").each(
                  /** @param {CategoryViewModel} catViewModel */
                  function(at) {
                    var ut = b.mouse(this)[0], nt = b.mouse(this)[1];
                    -2 <= ut && ut <= at.width + 2 && -2 <= nt && nt <= at.height + 2 && (j.dragCategoryDisplayInd = at.model.displayInd, j.initialDragCategoryDisplayInds = j.model.categories.map(function(X) {
                      return X.displayInd;
                    }), at.model.dragY = at.y, T.raiseToTop(this.parentNode), b.select(this.parentNode).selectAll("rect.bandrect").each(function(X) {
                      X.y < nt && nt <= X.y + X.height && (j.potentialClickBand = this);
                    }));
                  }
                ), j.parcatsViewModel.dragDimension = j, s.loneUnhover(j.parcatsViewModel.graphDiv._fullLayout._hoverlayer.node()));
              }
              function H(j) {
                if (j.parcatsViewModel.arrangement !== "fixed" && (j.dragHasMoved = !0, j.dragDimensionDisplayInd !== null)) {
                  var at = j.dragDimensionDisplayInd, ut = at - 1, nt = at + 1, X = j.parcatsViewModel.dimensions[at];
                  if (j.dragCategoryDisplayInd !== null) {
                    var ct = X.categories[j.dragCategoryDisplayInd];
                    ct.model.dragY += b.event.dy;
                    var lt = ct.model.dragY, pt = ct.model.displayInd, wt = X.categories, Et = wt[pt - 1], Ct = wt[pt + 1];
                    Et !== void 0 && lt < Et.y + Et.height / 2 && (ct.model.displayInd = Et.model.displayInd, Et.model.displayInd = pt), Ct !== void 0 && lt + ct.height > Ct.y + Ct.height / 2 && (ct.model.displayInd = Ct.model.displayInd, Ct.model.displayInd = pt), j.dragCategoryDisplayInd = ct.model.displayInd;
                  }
                  if (j.dragCategoryDisplayInd === null || j.parcatsViewModel.arrangement === "freeform") {
                    X.model.dragX = b.event.x;
                    var Gt = j.parcatsViewModel.dimensions[ut], Jt = j.parcatsViewModel.dimensions[nt];
                    Gt !== void 0 && X.model.dragX < Gt.x + Gt.width && (X.model.displayInd = Gt.model.displayInd, Gt.model.displayInd = at), Jt !== void 0 && X.model.dragX + X.width > Jt.x && (X.model.displayInd = Jt.model.displayInd, Jt.model.displayInd = j.dragDimensionDisplayInd), j.dragDimensionDisplayInd = X.model.displayInd;
                  }
                  et(j.parcatsViewModel), ht(j.parcatsViewModel), rt(j.parcatsViewModel), q(j.parcatsViewModel);
                }
              }
              function F(j) {
                if (j.parcatsViewModel.arrangement !== "fixed" && j.dragDimensionDisplayInd !== null) {
                  b.select(this).selectAll("text").attr("font-weight", "normal");
                  var at = {}, ut = G(j.parcatsViewModel), nt = j.parcatsViewModel.model.dimensions.map(function(Jt) {
                    return Jt.displayInd;
                  }), X = j.initialDragDimensionDisplayInds.some(function(Jt, Qt) {
                    return Jt !== nt[Qt];
                  });
                  X && nt.forEach(function(Jt, Qt) {
                    var Vt = j.parcatsViewModel.model.dimensions[Qt].containerInd;
                    at["dimensions[" + Vt + "].displayindex"] = Jt;
                  });
                  var ct = !1;
                  if (j.dragCategoryDisplayInd !== null) {
                    var lt = j.model.categories.map(function(Jt) {
                      return Jt.displayInd;
                    });
                    if (ct = j.initialDragCategoryDisplayInds.some(function(Jt, Qt) {
                      return Jt !== lt[Qt];
                    }), ct) {
                      var pt = j.model.categories.slice().sort(function(Jt, Qt) {
                        return Jt.displayInd - Qt.displayInd;
                      }), wt = pt.map(function(Jt) {
                        return Jt.categoryValue;
                      }), Et = pt.map(function(Jt) {
                        return Jt.categoryLabel;
                      });
                      at["dimensions[" + j.model.containerInd + "].categoryarray"] = [wt], at["dimensions[" + j.model.containerInd + "].ticktext"] = [Et], at["dimensions[" + j.model.containerInd + "].categoryorder"] = "array";
                    }
                  }
                  if (j.parcatsViewModel.hoverinfoItems.indexOf("skip") === -1 && !j.dragHasMoved && j.potentialClickBand && (j.parcatsViewModel.hoveron === "color" ? E(j.potentialClickBand, "plotly_click", b.event.sourceEvent) : h(j.potentialClickBand, "plotly_click", b.event.sourceEvent)), j.model.dragX = null, j.dragCategoryDisplayInd !== null) {
                    var Ct = j.parcatsViewModel.dimensions[j.dragDimensionDisplayInd].categories[j.dragCategoryDisplayInd];
                    Ct.model.dragY = null, j.dragCategoryDisplayInd = null;
                  }
                  j.dragDimensionDisplayInd = null, j.parcatsViewModel.dragDimension = null, j.dragHasMoved = null, j.potentialClickBand = null, et(j.parcatsViewModel), ht(j.parcatsViewModel);
                  var Gt = b.transition().duration(300).ease("cubic-in-out");
                  Gt.each(function() {
                    rt(j.parcatsViewModel, !0), q(j.parcatsViewModel, !0);
                  }).each("end", function() {
                    (X || ct) && n.restyle(j.parcatsViewModel.graphDiv, at, [ut]);
                  });
                }
              }
              function G(j) {
                for (var at, ut = j.graphDiv._fullData, nt = 0; nt < ut.length; nt++)
                  if (j.key === ut[nt].uid) {
                    at = nt;
                    break;
                  }
                return at;
              }
              function q(j, at) {
                at === void 0 && (at = !1);
                function ut(nt) {
                  return at ? nt.transition() : nt;
                }
                j.pathSelection.data(function(nt) {
                  return nt.paths;
                }, i), ut(j.pathSelection).attr("d", function(nt) {
                  return nt.svgD;
                });
              }
              function rt(j, at) {
                at === void 0 && (at = !1);
                function ut(wt) {
                  return at ? wt.transition() : wt;
                }
                j.dimensionSelection.data(function(wt) {
                  return wt.dimensions;
                }, i);
                var nt = j.dimensionSelection.selectAll("g.category").data(function(wt) {
                  return wt.categories;
                }, i);
                ut(j.dimensionSelection).attr("transform", function(wt) {
                  return A(wt.x, 0);
                }), ut(nt).attr("transform", function(wt) {
                  return A(0, wt.y);
                });
                var X = nt.select(".dimlabel");
                X.text(function(wt, Et) {
                  return Et === 0 ? wt.parcatsViewModel.model.dimensions[wt.model.dimensionInd].dimensionLabel : null;
                });
                var ct = nt.select(".catlabel");
                ct.attr("text-anchor", function(wt) {
                  return a(wt) ? "start" : "end";
                }).attr("x", function(wt) {
                  return a(wt) ? wt.width + 5 : -5;
                }).each(function(wt) {
                  var Et, Ct;
                  a(wt) ? (Et = wt.width + 5, Ct = "start") : (Et = -5, Ct = "end"), b.select(this).selectAll("tspan").attr("x", Et).attr("text-anchor", Ct);
                });
                var lt = nt.selectAll("rect.bandrect").data(
                  /** @param {CategoryViewModel} catViewModel*/
                  function(wt) {
                    return wt.bands;
                  },
                  i
                ), pt = lt.enter().append("rect").attr("class", "bandrect").attr("cursor", "move").attr("stroke-opacity", 0).attr("fill", function(wt) {
                  return wt.color;
                }).attr("fill-opacity", 0);
                lt.attr("fill", function(wt) {
                  return wt.color;
                }).attr("width", function(wt) {
                  return wt.width;
                }).attr("height", function(wt) {
                  return wt.height;
                }).attr("y", function(wt) {
                  return wt.y;
                }), C(pt), lt.each(function() {
                  T.raiseToTop(this);
                }), lt.exit().remove();
              }
              function st(j, at, ut) {
                var nt = ut[0], X = at.margin || {
                  l: 80,
                  r: 80,
                  t: 100,
                  b: 80
                }, ct = nt.trace, lt = ct.domain, pt = at.width, wt = at.height, Et = Math.floor(pt * (lt.x[1] - lt.x[0])), Ct = Math.floor(wt * (lt.y[1] - lt.y[0])), Gt = lt.x[0] * pt + X.l, Jt = at.height - lt.y[1] * at.height + X.t, Qt = ct.line.shape, Vt;
                ct.hoverinfo === "all" ? Vt = ["count", "probability"] : Vt = (ct.hoverinfo || "").split("+");
                var zt = {
                  trace: ct,
                  key: ct.uid,
                  model: nt,
                  x: Gt,
                  y: Jt,
                  width: Et,
                  height: Ct,
                  hoveron: ct.hoveron,
                  hoverinfoItems: Vt,
                  arrangement: ct.arrangement,
                  bundlecolors: ct.bundlecolors,
                  sortpaths: ct.sortpaths,
                  labelfont: ct.labelfont,
                  categorylabelfont: ct.tickfont,
                  pathShape: Qt,
                  dragDimension: null,
                  margin: X,
                  paths: [],
                  dimensions: [],
                  graphDiv: j,
                  traceSelection: null,
                  pathSelection: null,
                  dimensionSelection: null
                };
                return nt.dimensions && (et(zt), ht(zt)), zt;
              }
              function vt(j, at, ut, nt, X) {
                var ct = [], lt = [], pt, wt;
                for (wt = 0; wt < ut.length - 1; wt++)
                  pt = P(ut[wt] + j[wt], j[wt + 1]), ct.push(pt(X)), lt.push(pt(1 - X));
                var Et = "M " + j[0] + "," + at[0];
                for (Et += "l" + ut[0] + ",0 ", wt = 1; wt < ut.length; wt++)
                  Et += "C" + ct[wt - 1] + "," + at[wt - 1] + " " + lt[wt - 1] + "," + at[wt] + " " + j[wt] + "," + at[wt], Et += "l" + ut[wt] + ",0 ";
                for (Et += "l0," + nt + " ", Et += "l -" + ut[ut.length - 1] + ",0 ", wt = ut.length - 2; wt >= 0; wt--)
                  Et += "C" + lt[wt] + "," + (at[wt + 1] + nt) + " " + ct[wt] + "," + (at[wt] + nt) + " " + (j[wt] + ut[wt]) + "," + (at[wt] + nt), Et += "l-" + ut[wt] + ",0 ";
                return Et += "Z", Et;
              }
              function ht(j) {
                var at = j.dimensions, ut = j.model, nt = at.map(function(ur) {
                  return ur.categories.map(function(ie) {
                    return ie.y;
                  });
                }), X = j.model.dimensions.map(function(ur) {
                  return ur.categories.map(function(ie) {
                    return ie.displayInd;
                  });
                }), ct = j.model.dimensions.map(function(ur) {
                  return ur.displayInd;
                }), lt = j.dimensions.map(function(ur) {
                  return ur.model.dimensionInd;
                }), pt = at.map(function(ur) {
                  return ur.x;
                }), wt = at.map(function(ur) {
                  return ur.width;
                }), Et = [];
                for (var Ct in ut.paths)
                  ut.paths.hasOwnProperty(Ct) && Et.push(ut.paths[Ct]);
                function Gt(ur) {
                  var ie = ur.categoryInds.map(function(jt, ee) {
                    return X[ee][jt];
                  }), $t = lt.map(function(jt) {
                    return ie[jt];
                  });
                  return $t;
                }
                Et.sort(function(ur, ie) {
                  var $t = Gt(ur), jt = Gt(ie);
                  return j.sortpaths === "backward" && ($t.reverse(), jt.reverse()), $t.push(ur.valueInds[0]), jt.push(ie.valueInds[0]), j.bundlecolors && ($t.unshift(ur.rawColor), jt.unshift(ie.rawColor)), $t < jt ? -1 : $t > jt ? 1 : 0;
                });
                for (var Jt = new Array(Et.length), Qt = at[0].model.count, Vt = at[0].categories.map(function(ur) {
                  return ur.height;
                }).reduce(function(ur, ie) {
                  return ur + ie;
                }), zt = 0; zt < Et.length; zt++) {
                  var Rt = Et[zt], Wt;
                  Qt > 0 ? Wt = Vt * (Rt.count / Qt) : Wt = 0;
                  for (var kt = new Array(nt.length), re = 0; re < Rt.categoryInds.length; re++) {
                    var ge = Rt.categoryInds[re], _e = X[re][ge], ce = ct[re];
                    kt[ce] = nt[ce][_e], nt[ce][_e] += Wt;
                    var ae = j.dimensions[ce].categories[_e], Se = ae.bands.length, ze = ae.bands[Se - 1];
                    if (ze === void 0 || Rt.rawColor !== ze.rawColor) {
                      var Ne = ze === void 0 ? 0 : ze.y + ze.height;
                      ae.bands.push({
                        key: Ne,
                        color: Rt.color,
                        rawColor: Rt.rawColor,
                        height: Wt,
                        width: ae.width,
                        count: Rt.count,
                        y: Ne,
                        categoryViewModel: ae,
                        parcatsViewModel: j
                      });
                    } else {
                      var Ve = ae.bands[Se - 1];
                      Ve.height += Wt, Ve.count += Rt.count;
                    }
                  }
                  var Oe;
                  j.pathShape === "hspline" ? Oe = vt(pt, kt, wt, Wt, 0.5) : Oe = vt(pt, kt, wt, Wt, 0), Jt[zt] = {
                    key: Rt.valueInds[0],
                    model: Rt,
                    height: Wt,
                    leftXs: pt,
                    topYs: kt,
                    dimWidths: wt,
                    svgD: Oe,
                    parcatsViewModel: j
                  };
                }
                j.paths = Jt;
              }
              function et(j) {
                var at = j.model.dimensions.map(function(lt) {
                  return {
                    displayInd: lt.displayInd,
                    dimensionInd: lt.dimensionInd
                  };
                });
                at.sort(function(lt, pt) {
                  return lt.displayInd - pt.displayInd;
                });
                var ut = [];
                for (var nt in at) {
                  var X = at[nt].dimensionInd, ct = j.model.dimensions[X];
                  ut.push(Q(j, ct));
                }
                j.dimensions = ut;
              }
              function Q(j, at) {
                var ut = 40, nt = 16, X = j.model.dimensions.length, ct = at.displayInd, lt, pt, wt;
                X > 1 ? lt = (j.width - 2 * ut - nt) / (X - 1) : lt = 0, pt = ut, wt = pt + lt * ct;
                var Et = [], Ct = j.model.maxCats, Gt = at.categories.length, Jt = 8, Qt = at.count, Vt = j.height - Jt * (Ct - 1), zt, Rt, Wt, kt, re, ge = (Ct - Gt) * Jt / 2, _e = at.categories.map(function(ce) {
                  return {
                    displayInd: ce.displayInd,
                    categoryInd: ce.categoryInd
                  };
                });
                for (_e.sort(function(ce, ae) {
                  return ce.displayInd - ae.displayInd;
                }), re = 0; re < Gt; re++)
                  kt = _e[re].categoryInd, Rt = at.categories[kt], Qt > 0 ? zt = Rt.count / Qt * Vt : zt = 0, Wt = {
                    key: Rt.valueInds[0],
                    model: Rt,
                    width: nt,
                    height: zt,
                    y: Rt.dragY !== null ? Rt.dragY : ge,
                    bands: [],
                    parcatsViewModel: j
                  }, ge = ge + zt + Jt, Et.push(Wt);
                return {
                  key: at.dimensionInd,
                  x: at.dragX !== null ? at.dragX : wt,
                  y: 0,
                  width: nt,
                  model: at,
                  categories: Et,
                  parcatsViewModel: j,
                  dragCategoryDisplayInd: null,
                  dragDimensionDisplayInd: null,
                  initialDragDimensionDisplayInds: null,
                  initialDragCategoryDisplayInds: null,
                  dragHasMoved: null,
                  potentialClickBand: null
                };
              }
            }
          ),
          /***/
          37822: (
            /***/
            function(Y, K, e) {
              var b = e(27219);
              Y.exports = function(n, s, T, A) {
                var p = n._fullLayout, u = p._paper, t = p._size;
                b(n, u, s, {
                  width: t.w,
                  height: t.h,
                  margin: {
                    t: t.t,
                    r: t.r,
                    b: t.b,
                    l: t.l
                  }
                }, T, A);
              };
            }
          ),
          /***/
          59549: (
            /***/
            function(Y, K, e) {
              var b = e(87163), P = e(25829), n = e(80337), s = e(13792).u, T = e(93049).extendFlat, A = e(78032).templatedArray;
              Y.exports = {
                domain: s({
                  name: "parcoords",
                  trace: !0,
                  editType: "plot"
                }),
                labelangle: {
                  valType: "angle",
                  dflt: 0,
                  editType: "plot"
                },
                labelside: {
                  valType: "enumerated",
                  values: ["top", "bottom"],
                  dflt: "top",
                  editType: "plot"
                },
                labelfont: n({
                  editType: "plot"
                }),
                tickfont: n({
                  autoShadowDflt: !0,
                  editType: "plot"
                }),
                rangefont: n({
                  editType: "plot"
                }),
                dimensions: A("dimension", {
                  label: {
                    valType: "string",
                    editType: "plot"
                  },
                  // TODO: better way to determine ordinal vs continuous axes,
                  // so users can use tickvals/ticktext with a continuous axis.
                  tickvals: T({}, P.tickvals, {
                    editType: "plot"
                  }),
                  ticktext: T({}, P.ticktext, {
                    editType: "plot"
                  }),
                  tickformat: T({}, P.tickformat, {
                    editType: "plot"
                  }),
                  visible: {
                    valType: "boolean",
                    dflt: !0,
                    editType: "plot"
                  },
                  range: {
                    valType: "info_array",
                    items: [{
                      valType: "number",
                      editType: "plot"
                    }, {
                      valType: "number",
                      editType: "plot"
                    }],
                    editType: "plot"
                  },
                  constraintrange: {
                    valType: "info_array",
                    freeLength: !0,
                    dimensions: "1-2",
                    items: [{
                      valType: "any",
                      editType: "plot"
                    }, {
                      valType: "any",
                      editType: "plot"
                    }],
                    editType: "plot"
                  },
                  multiselect: {
                    valType: "boolean",
                    dflt: !0,
                    editType: "plot"
                  },
                  values: {
                    valType: "data_array",
                    editType: "calc"
                  },
                  editType: "calc"
                }),
                line: T({
                  editType: "calc"
                }, b("line", {
                  // the default autocolorscale isn't quite usable for parcoords due to context ambiguity around 0 (grey, off-white)
                  // autocolorscale therefore defaults to false too, to avoid being overridden by the blue-white-red autocolor palette
                  colorscaleDflt: "Viridis",
                  autoColorDflt: !1,
                  editTypeOverride: "calc"
                })),
                unselected: {
                  line: {
                    color: {
                      valType: "color",
                      dflt: "#7f7f7f",
                      editType: "plot"
                    },
                    opacity: {
                      valType: "number",
                      min: 0,
                      max: 1,
                      dflt: "auto",
                      editType: "plot"
                    },
                    editType: "plot"
                  },
                  editType: "plot"
                }
              };
            }
          ),
          /***/
          23245: (
            /***/
            function(Y, K, e) {
              var b = e(77911), P = e(45568), n = e(71293).keyFun, s = e(71293).repeat, T = e(34809).sorterAsc, A = e(34809).strTranslate, p = b.bar.snapRatio;
              function u(F, G) {
                return F * (1 - p) + G * p;
              }
              var t = b.bar.snapClose;
              function r(F, G) {
                return F * (1 - t) + G * t;
              }
              function i(F, G, q, rt) {
                if (a(q, rt)) return q;
                var st = F ? -1 : 1, vt = 0, ht = G.length - 1;
                if (st < 0) {
                  var et = vt;
                  vt = ht, ht = et;
                }
                for (var Q = G[vt], j = Q, at = vt; st * at < st * ht; at += st) {
                  var ut = at + st, nt = G[ut];
                  if (st * q < st * r(Q, nt)) return u(Q, j);
                  if (st * q < st * nt || ut === ht) return u(nt, Q);
                  j = Q, Q = nt;
                }
              }
              function a(F, G) {
                for (var q = 0; q < G.length; q++)
                  if (F >= G[q][0] && F <= G[q][1]) return !0;
                return !1;
              }
              function l(F) {
                F.attr("x", -b.bar.captureWidth / 2).attr("width", b.bar.captureWidth);
              }
              function o(F) {
                F.attr("visibility", "visible").style("visibility", "visible").attr("fill", "yellow").attr("opacity", 0);
              }
              function y(F) {
                if (!F.brush.filterSpecified)
                  return "0," + F.height;
                for (var G = g(F.brush.filter.getConsolidated(), F.height), q = [0], rt, st, vt, ht = G.length ? G[0][0] : null, et = 0; et < G.length; et++)
                  rt = G[et], st = rt[1] - rt[0], q.push(ht), q.push(st), vt = et + 1, vt < G.length && (ht = G[vt][0] - rt[1]);
                return q.push(F.height), q;
              }
              function g(F, G) {
                return F.map(function(q) {
                  return q.map(function(rt) {
                    return Math.max(0, rt * G);
                  }).sort(T);
                });
              }
              function x(F, G) {
                var q = b.bar.handleHeight;
                if (!(G > F[1] + q || G < F[0] - q))
                  return G >= 0.9 * F[1] + 0.1 * F[0] ? "n" : G <= 0.9 * F[0] + 0.1 * F[1] ? "s" : "ns";
              }
              function c() {
                P.select(document.body).style("cursor", null);
              }
              function v(F) {
                F.attr("stroke-dasharray", y);
              }
              function f(F, G) {
                var q = P.select(F).selectAll(".highlight, .highlight-shadow"), rt = G ? q.transition().duration(b.bar.snapDuration).each("end", G) : q;
                v(rt);
              }
              function _(F, G) {
                var q = F.brush, rt = q.filterSpecified, st = NaN, vt = {}, ht;
                if (rt) {
                  var et = F.height, Q = q.filter.getConsolidated(), j = g(Q, et), at = NaN, ut = NaN, nt = NaN;
                  for (ht = 0; ht <= j.length; ht++) {
                    var X = j[ht];
                    if (X && X[0] <= G && G <= X[1]) {
                      at = ht;
                      break;
                    } else if (ut = ht ? ht - 1 : NaN, X && X[0] > G) {
                      nt = ht;
                      break;
                    }
                  }
                  if (st = at, isNaN(st) && (isNaN(ut) || isNaN(nt) ? st = isNaN(ut) ? nt : ut : st = G - j[ut][1] < j[nt][0] - G ? ut : nt), !isNaN(st)) {
                    var ct = j[st], lt = x(ct, G);
                    lt && (vt.interval = Q[st], vt.intervalPix = ct, vt.region = lt);
                  }
                }
                if (F.ordinal && !vt.region) {
                  var pt = F.unitTickvals, wt = F.unitToPaddedPx.invert(G);
                  for (ht = 0; ht < pt.length; ht++) {
                    var Et = [pt[Math.max(ht - 1, 0)] * 0.25 + pt[ht] * 0.75, pt[Math.min(ht + 1, pt.length - 1)] * 0.25 + pt[ht] * 0.75];
                    if (wt >= Et[0] && wt <= Et[1]) {
                      vt.clickableOrdinalRange = Et;
                      break;
                    }
                  }
                }
                return vt;
              }
              function S(F, G) {
                P.event.sourceEvent.stopPropagation();
                var q = G.height - P.mouse(F)[1] - 2 * b.verticalPadding, rt = G.unitToPaddedPx.invert(q), st = G.brush, vt = _(G, q), ht = vt.interval, et = st.svgBrush;
                if (et.wasDragged = !1, et.grabbingBar = vt.region === "ns", et.grabbingBar) {
                  var Q = ht.map(G.unitToPaddedPx);
                  et.grabPoint = q - Q[0] - b.verticalPadding, et.barLength = Q[1] - Q[0];
                }
                et.clickableOrdinalRange = vt.clickableOrdinalRange, et.stayingIntervals = G.multiselect && st.filterSpecified ? st.filter.getConsolidated() : [], ht && (et.stayingIntervals = et.stayingIntervals.filter(function(j) {
                  return j[0] !== ht[0] && j[1] !== ht[1];
                })), et.startExtent = vt.region ? ht[vt.region === "s" ? 1 : 0] : rt, G.parent.inBrushDrag = !0, et.brushStartCallback();
              }
              function M(F, G) {
                P.event.sourceEvent.stopPropagation();
                var q = G.height - P.mouse(F)[1] - 2 * b.verticalPadding, rt = G.brush.svgBrush;
                rt.wasDragged = !0, rt._dragging = !0, rt.grabbingBar ? rt.newExtent = [q - rt.grabPoint, q + rt.barLength - rt.grabPoint].map(G.unitToPaddedPx.invert) : rt.newExtent = [rt.startExtent, G.unitToPaddedPx.invert(q)].sort(T), G.brush.filterSpecified = !0, rt.extent = rt.stayingIntervals.concat([rt.newExtent]), rt.brushCallback(G), f(F.parentNode);
              }
              function C(F, G) {
                var q = G.brush, rt = q.filter, st = q.svgBrush;
                st._dragging || (m(F, G), M(F, G), G.brush.svgBrush.wasDragged = !1), st._dragging = !1;
                var vt = P.event;
                vt.sourceEvent.stopPropagation();
                var ht = st.grabbingBar;
                if (st.grabbingBar = !1, st.grabLocation = void 0, G.parent.inBrushDrag = !1, c(), !st.wasDragged) {
                  st.wasDragged = void 0, st.clickableOrdinalRange ? q.filterSpecified && G.multiselect ? st.extent.push(st.clickableOrdinalRange) : (st.extent = [st.clickableOrdinalRange], q.filterSpecified = !0) : ht ? (st.extent = st.stayingIntervals, st.extent.length === 0 && z(q)) : z(q), st.brushCallback(G), f(F.parentNode), st.brushEndCallback(q.filterSpecified ? rt.getConsolidated() : []);
                  return;
                }
                var et = function() {
                  rt.set(rt.getConsolidated());
                };
                if (G.ordinal) {
                  var Q = G.unitTickvals;
                  Q[Q.length - 1] < Q[0] && Q.reverse(), st.newExtent = [i(0, Q, st.newExtent[0], st.stayingIntervals), i(1, Q, st.newExtent[1], st.stayingIntervals)];
                  var j = st.newExtent[1] > st.newExtent[0];
                  st.extent = st.stayingIntervals.concat(j ? [st.newExtent] : []), st.extent.length || z(q), st.brushCallback(G), j ? f(F.parentNode, et) : (et(), f(F.parentNode));
                } else
                  et();
                st.brushEndCallback(q.filterSpecified ? rt.getConsolidated() : []);
              }
              function m(F, G) {
                var q = G.height - P.mouse(F)[1] - 2 * b.verticalPadding, rt = _(G, q), st = "crosshair";
                rt.clickableOrdinalRange ? st = "pointer" : rt.region && (st = rt.region + "-resize"), P.select(document.body).style("cursor", st);
              }
              function L(F) {
                F.on("mousemove", function(G) {
                  P.event.preventDefault(), G.parent.inBrushDrag || m(this, G);
                }).on("mouseleave", function(G) {
                  G.parent.inBrushDrag || c();
                }).call(P.behavior.drag().on("dragstart", function(G) {
                  S(this, G);
                }).on("drag", function(G) {
                  M(this, G);
                }).on("dragend", function(G) {
                  C(this, G);
                }));
              }
              function d(F, G) {
                return F[0] - G[0];
              }
              function h(F, G, q) {
                var rt = q._context.staticPlot, st = F.selectAll(".background").data(s);
                st.enter().append("rect").classed("background", !0).call(l).call(o).style("pointer-events", rt ? "none" : "auto").attr("transform", A(0, b.verticalPadding)), st.call(L).attr("height", function(et) {
                  return et.height - b.verticalPadding;
                });
                var vt = F.selectAll(".highlight-shadow").data(s);
                vt.enter().append("line").classed("highlight-shadow", !0).attr("x", -b.bar.width / 2).attr("stroke-width", b.bar.width + b.bar.strokeWidth).attr("stroke", G).attr("opacity", b.bar.strokeOpacity).attr("stroke-linecap", "butt"), vt.attr("y1", function(et) {
                  return et.height;
                }).call(v);
                var ht = F.selectAll(".highlight").data(s);
                ht.enter().append("line").classed("highlight", !0).attr("x", -b.bar.width / 2).attr("stroke-width", b.bar.width - b.bar.strokeWidth).attr("stroke", b.bar.fillColor).attr("opacity", b.bar.fillOpacity).attr("stroke-linecap", "butt"), ht.attr("y1", function(et) {
                  return et.height;
                }).call(v);
              }
              function E(F, G, q) {
                var rt = F.selectAll("." + b.cn.axisBrush).data(s, n);
                rt.enter().append("g").classed(b.cn.axisBrush, !0), h(rt, G, q);
              }
              function w(F) {
                return F.svgBrush.extent.map(function(G) {
                  return G.slice();
                });
              }
              function z(F) {
                F.filterSpecified = !1, F.svgBrush.extent = [[-1 / 0, 1 / 0]];
              }
              function O(F) {
                return function(q) {
                  var rt = q.brush, st = w(rt), vt = st.slice();
                  rt.filter.set(vt), F();
                };
              }
              function B(F) {
                for (var G = F.slice(), q = [], rt, st = G.shift(); st; ) {
                  for (rt = st.slice(); (st = G.shift()) && st[0] <= /* right-open interval would need `<` */
                  rt[1]; )
                    rt[1] = Math.max(rt[1], st[1]);
                  q.push(rt);
                }
                return q.length === 1 && q[0][0] > q[0][1] && (q = []), q;
              }
              function V() {
                var F = [], G, q;
                return {
                  set: function(rt) {
                    F = rt.map(function(st) {
                      return st.slice().sort(T);
                    }).sort(d), F.length === 1 && F[0][0] === -1 / 0 && F[0][1] === 1 / 0 && (F = [[0, -1]]), G = B(F), q = F.reduce(function(st, vt) {
                      return [Math.min(st[0], vt[0]), Math.max(st[1], vt[1])];
                    }, [1 / 0, -1 / 0]);
                  },
                  get: function() {
                    return F.slice();
                  },
                  getConsolidated: function() {
                    return G;
                  },
                  getBounds: function() {
                    return q;
                  }
                };
              }
              function U(F, G, q, rt, st, vt) {
                var ht = V();
                return ht.set(q), {
                  filter: ht,
                  filterSpecified: G,
                  // there's a difference between not filtering and filtering a non-proper subset
                  svgBrush: {
                    extent: [],
                    // this is where the svgBrush writes contents into
                    brushStartCallback: rt,
                    brushCallback: O(st),
                    brushEndCallback: vt
                  }
                };
              }
              function H(F, G) {
                if (Array.isArray(F[0]) ? (F = F.map(function(rt) {
                  return rt.sort(T);
                }), G.multiselect ? F = B(F.sort(d)) : F = [F[0]]) : F = [F.sort(T)], G.tickvals) {
                  var q = G.tickvals.slice().sort(T);
                  if (F = F.map(function(rt) {
                    var st = [i(0, q, rt[0], []), i(1, q, rt[1], [])];
                    if (st[1] > st[0]) return st;
                  }).filter(function(rt) {
                    return rt;
                  }), !F.length) return;
                }
                return F.length > 1 ? F : F[0];
              }
              Y.exports = {
                makeBrush: U,
                ensureAxisBrush: E,
                cleanRanges: H
              };
            }
          ),
          /***/
          79846: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(59549),
                supplyDefaults: e(12842),
                calc: e(20113),
                colorbar: {
                  container: "line",
                  min: "cmin",
                  max: "cmax"
                },
                moduleType: "trace",
                name: "parcoords",
                basePlotModule: e(67207),
                categories: ["gl", "regl", "noOpacity", "noHover"],
                meta: {}
              };
            }
          ),
          /***/
          67207: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(4173).eV, n = e(58823), s = e(62972);
              K.name = "parcoords", K.plot = function(T) {
                var A = P(T.calcdata, "parcoords")[0];
                A.length && n(T, A);
              }, K.clean = function(T, A, p, u) {
                var t = u._has && u._has("parcoords"), r = A._has && A._has("parcoords");
                t && !r && (u._paperdiv.selectAll(".parcoords").remove(), u._glimages.selectAll("*").remove());
              }, K.toSVG = function(T) {
                var A = T._fullLayout._glimages, p = b.select(T).selectAll(".svg-container"), u = p.filter(function(r, i) {
                  return i === p.size() - 1;
                }).selectAll(".gl-canvas-context, .gl-canvas-focus");
                function t() {
                  var r = this, i = r.toDataURL("image/png"), a = A.append("svg:image");
                  a.attr({
                    xmlns: s.svg,
                    "xlink:href": i,
                    preserveAspectRatio: "none",
                    x: 0,
                    y: 0,
                    width: r.style.width,
                    height: r.style.height
                  });
                }
                u.each(t), window.setTimeout(function() {
                  b.selectAll("#filterBarPattern").attr("id", "filterBarPattern");
                }, 60);
              };
            }
          ),
          /***/
          20113: (
            /***/
            function(Y, K, e) {
              var b = e(34809).isArrayOrTypedArray, P = e(88856), n = e(71293).wrap;
              Y.exports = function(A, p) {
                var u, t;
                return P.hasColorscale(p, "line") && b(p.line.color) ? (u = p.line.color, t = P.extractOpts(p.line).colorscale, P.calc(A, p, {
                  vals: u,
                  containerStr: "line",
                  cLetter: "c"
                })) : (u = s(p._length), t = [[0, p.line.color], [1, p.line.color]]), n({
                  lineColor: u,
                  cscale: t
                });
              };
              function s(T) {
                for (var A = new Array(T), p = 0; p < T; p++)
                  A[p] = 0.5;
                return A;
              }
            }
          ),
          /***/
          77911: (
            /***/
            function(Y) {
              Y.exports = {
                maxDimensionCount: 60,
                // this cannot be increased without WebGL code refactoring
                overdrag: 45,
                verticalPadding: 2,
                // otherwise, horizontal lines on top or bottom are of lower width
                tickDistance: 50,
                canvasPixelRatio: 1,
                blockLineCount: 5e3,
                layers: ["contextLineLayer", "focusLineLayer", "pickLineLayer"],
                axisTitleOffset: 28,
                axisExtentOffset: 10,
                bar: {
                  width: 4,
                  // Visible width of the filter bar
                  captureWidth: 10,
                  // Mouse-sensitive width for interaction (Fitts law)
                  fillColor: "magenta",
                  // Color of the filter bar fill
                  fillOpacity: 1,
                  // Filter bar fill opacity
                  snapDuration: 150,
                  // tween duration in ms for brush snap for ordinal axes
                  snapRatio: 0.25,
                  // ratio of bar extension relative to the distance between two adjacent ordinal values
                  snapClose: 0.01,
                  // fraction of inter-value distance to snap to the closer one, even if you're not over it
                  strokeOpacity: 1,
                  // Filter bar side stroke opacity
                  strokeWidth: 1,
                  // Filter bar side stroke width in pixels
                  handleHeight: 8,
                  // Height of the filter bar vertical resize areas on top and bottom
                  handleOpacity: 1,
                  // Opacity of the filter bar vertical resize areas on top and bottom
                  handleOverlap: 0
                  // A larger than 0 value causes overlaps with the filter bar, represented as pixels
                },
                cn: {
                  axisExtentText: "axis-extent-text",
                  parcoordsLineLayers: "parcoords-line-layers",
                  parcoordsLineLayer: "parcoords-lines",
                  parcoords: "parcoords",
                  parcoordsControlView: "parcoords-control-view",
                  yAxis: "y-axis",
                  axisOverlays: "axis-overlays",
                  axis: "axis",
                  axisHeading: "axis-heading",
                  axisTitle: "axis-title",
                  axisExtent: "axis-extent",
                  axisExtentTop: "axis-extent-top",
                  axisExtentTopText: "axis-extent-top-text",
                  axisExtentBottom: "axis-extent-bottom",
                  axisExtentBottomText: "axis-extent-bottom-text",
                  axisBrush: "axis-brush"
                },
                id: {
                  filterBarPattern: "filter-bar-pattern"
                }
              };
            }
          ),
          /***/
          12842: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(65477).hasColorscale, n = e(39356), s = e(13792).N, T = e(59008), A = e(29714), p = e(59549), u = e(23245), t = e(77911).maxDimensionCount, r = e(63197);
              function i(l, o, y, g, x) {
                var c = x("line.color", y);
                if (P(l, "line") && b.isArrayOrTypedArray(c)) {
                  if (c.length)
                    return x("line.colorscale"), n(l, o, g, x, {
                      prefix: "line.",
                      cLetter: "c"
                    }), c.length;
                  o.line.color = y;
                }
                return 1 / 0;
              }
              function a(l, o, y, g) {
                function x(S, M) {
                  return b.coerce(l, o, p.dimensions, S, M);
                }
                var c = x("values"), v = x("visible");
                if (c && c.length || (v = o.visible = !1), v) {
                  x("label"), x("tickvals"), x("ticktext"), x("tickformat");
                  var f = x("range");
                  o._ax = {
                    _id: "y",
                    type: "linear",
                    showexponent: "all",
                    exponentformat: "B",
                    range: f
                  }, A.setConvert(o._ax, g.layout), x("multiselect");
                  var _ = x("constraintrange");
                  _ && (o.constraintrange = u.cleanRanges(_, o));
                }
              }
              Y.exports = function(o, y, g, x) {
                function c(M, C) {
                  return b.coerce(o, y, p, M, C);
                }
                var v = o.dimensions;
                Array.isArray(v) && v.length > t && (b.log("parcoords traces support up to " + t + " dimensions at the moment"), v.splice(t));
                var f = T(o, y, {
                  name: "dimensions",
                  layout: x,
                  handleItemDefaults: a
                }), _ = i(o, y, g, x, c);
                s(y, x, c), (!Array.isArray(f) || !f.length) && (y.visible = !1), r(y, f, "values", _);
                var S = b.extendFlat({}, x.font, {
                  size: Math.round(x.font.size / 1.2)
                });
                b.coerceFont(c, "labelfont", S), b.coerceFont(c, "tickfont", S, {
                  autoShadowDflt: !0
                }), b.coerceFont(c, "rangefont", S), c("labelangle"), c("labelside"), c("unselected.line.color"), c("unselected.line.opacity");
              };
            }
          ),
          /***/
          62935: (
            /***/
            function(Y, K, e) {
              var b = e(34809).isTypedArray;
              K.convertTypedArray = function(P) {
                return b(P) ? Array.prototype.slice.call(P) : P;
              }, K.isOrdinal = function(P) {
                return !!P.tickvals;
              }, K.isVisible = function(P) {
                return P.visible || !("visible" in P);
              };
            }
          ),
          /***/
          83910: (
            /***/
            function(Y, K, e) {
              var b = e(79846);
              b.plot = e(58823), Y.exports = b;
            }
          ),
          /***/
          1293: (
            /***/
            function(Y, K, e) {
              var b = ["precision highp float;", "", "varying vec4 fragColor;", "", "attribute vec4 p01_04, p05_08, p09_12, p13_16,", "               p17_20, p21_24, p25_28, p29_32,", "               p33_36, p37_40, p41_44, p45_48,", "               p49_52, p53_56, p57_60, colors;", "", "uniform mat4 dim0A, dim1A, dim0B, dim1B, dim0C, dim1C, dim0D, dim1D,", "             loA, hiA, loB, hiB, loC, hiC, loD, hiD;", "", "uniform vec2 resolution, viewBoxPos, viewBoxSize;", "uniform float maskHeight;", "uniform float drwLayer; // 0: context, 1: focus, 2: pick", "uniform vec4 contextColor;", "uniform sampler2D maskTexture, palette;", "", "bool isPick    = (drwLayer > 1.5);", "bool isContext = (drwLayer < 0.5);", "", "const vec4 ZEROS = vec4(0.0, 0.0, 0.0, 0.0);", "const vec4 UNITS = vec4(1.0, 1.0, 1.0, 1.0);", "", "float val(mat4 p, mat4 v) {", "    return dot(matrixCompMult(p, v) * UNITS, UNITS);", "}", "", "float axisY(float ratio, mat4 A, mat4 B, mat4 C, mat4 D) {", "    float y1 = val(A, dim0A) + val(B, dim0B) + val(C, dim0C) + val(D, dim0D);", "    float y2 = val(A, dim1A) + val(B, dim1B) + val(C, dim1C) + val(D, dim1D);", "    return y1 * (1.0 - ratio) + y2 * ratio;", "}", "", "int iMod(int a, int b) {", "    return a - b * (a / b);", "}", "", "bool fOutside(float p, float lo, float hi) {", "    return (lo < hi) && (lo > p || p > hi);", "}", "", "bool vOutside(vec4 p, vec4 lo, vec4 hi) {", "    return (", "        fOutside(p[0], lo[0], hi[0]) ||", "        fOutside(p[1], lo[1], hi[1]) ||", "        fOutside(p[2], lo[2], hi[2]) ||", "        fOutside(p[3], lo[3], hi[3])", "    );", "}", "", "bool mOutside(mat4 p, mat4 lo, mat4 hi) {", "    return (", "        vOutside(p[0], lo[0], hi[0]) ||", "        vOutside(p[1], lo[1], hi[1]) ||", "        vOutside(p[2], lo[2], hi[2]) ||", "        vOutside(p[3], lo[3], hi[3])", "    );", "}", "", "bool outsideBoundingBox(mat4 A, mat4 B, mat4 C, mat4 D) {", "    return mOutside(A, loA, hiA) ||", "           mOutside(B, loB, hiB) ||", "           mOutside(C, loC, hiC) ||", "           mOutside(D, loD, hiD);", "}", "", "bool outsideRasterMask(mat4 A, mat4 B, mat4 C, mat4 D) {", "    mat4 pnts[4];", "    pnts[0] = A;", "    pnts[1] = B;", "    pnts[2] = C;", "    pnts[3] = D;", "", "    for(int i = 0; i < 4; ++i) {", "        for(int j = 0; j < 4; ++j) {", "            for(int k = 0; k < 4; ++k) {", "                if(0 == iMod(", "                    int(255.0 * texture2D(maskTexture,", "                        vec2(", "                            (float(i * 2 + j / 2) + 0.5) / 8.0,", "                            (pnts[i][j][k] * (maskHeight - 1.0) + 1.0) / maskHeight", "                        ))[3]", "                    ) / int(pow(2.0, float(iMod(j * 4 + k, 8)))),", "                    2", "                )) return true;", "            }", "        }", "    }", "    return false;", "}", "", "vec4 position(bool isContext, float v, mat4 A, mat4 B, mat4 C, mat4 D) {", "    float x = 0.5 * sign(v) + 0.5;", "    float y = axisY(x, A, B, C, D);", "    float z = 1.0 - abs(v);", "", "    z += isContext ? 0.0 : 2.0 * float(", "        outsideBoundingBox(A, B, C, D) ||", "        outsideRasterMask(A, B, C, D)", "    );", "", "    return vec4(", "        2.0 * (vec2(x, y) * viewBoxSize + viewBoxPos) / resolution - 1.0,", "        z,", "        1.0", "    );", "}", "", "void main() {", "    mat4 A = mat4(p01_04, p05_08, p09_12, p13_16);", "    mat4 B = mat4(p17_20, p21_24, p25_28, p29_32);", "    mat4 C = mat4(p33_36, p37_40, p41_44, p45_48);", "    mat4 D = mat4(p49_52, p53_56, p57_60, ZEROS);", "", "    float v = colors[3];", "", "    gl_Position = position(isContext, v, A, B, C, D);", "", "    fragColor =", "        isContext ? vec4(contextColor) :", "        isPick ? vec4(colors.rgb, 1.0) : texture2D(palette, vec2(abs(v), 0.5));", "}"].join(`
`), P = ["precision highp float;", "", "varying vec4 fragColor;", "", "void main() {", "    gl_FragColor = fragColor;", "}"].join(`
`), n = e(77911).maxDimensionCount, s = e(34809), T = 1e-6, A = 2048, p = new Uint8Array(4), u = new Uint8Array(4), t = {
                shape: [256, 1],
                format: "rgba",
                type: "uint8",
                mag: "nearest",
                min: "nearest"
              };
              function r(C) {
                C.read({
                  x: 0,
                  y: 0,
                  width: 1,
                  height: 1,
                  data: p
                });
              }
              function i(C, m, L, d, h) {
                var E = C._gl;
                E.enable(E.SCISSOR_TEST), E.scissor(m, L, d, h), C.clear({
                  color: [0, 0, 0, 0],
                  depth: 1
                });
              }
              function a(C, m, L, d, h, E) {
                var w = E.key;
                function z(O) {
                  var B = Math.min(d, h - O * d);
                  O === 0 && (window.cancelAnimationFrame(L.currentRafs[w]), delete L.currentRafs[w], i(C, E.scissorX, E.scissorY, E.scissorWidth, E.viewBoxSize[1])), !L.clearOnly && (E.count = 2 * B, E.offset = 2 * O * d, m(E), O * d + B < h && (L.currentRafs[w] = window.requestAnimationFrame(function() {
                    z(O + 1);
                  })), L.drawCompleted = !1);
                }
                L.drawCompleted || (r(C), L.drawCompleted = !0), z(0);
              }
              function l(C) {
                return Math.max(T, Math.min(1 - T, C));
              }
              function o(C, m) {
                for (var L = new Array(256), d = 0; d < 256; d++)
                  L[d] = C(d / 255).concat(m);
                return L;
              }
              function y(C, m) {
                return (C >>> 8 * m) % 256 / 255;
              }
              function g(C, m, L) {
                for (var d = new Array(C * (n + 4)), h = 0, E = 0; E < C; E++) {
                  for (var w = 0; w < n; w++)
                    d[h++] = w < m.length ? m[w].paddedUnitValues[E] : 0.5;
                  d[h++] = y(E, 2), d[h++] = y(E, 1), d[h++] = y(E, 0), d[h++] = l(L[E]);
                }
                return d;
              }
              function x(C, m, L) {
                for (var d = new Array(m * 8), h = 0, E = 0; E < m; E++)
                  for (var w = 0; w < 2; w++)
                    for (var z = 0; z < 4; z++) {
                      var O = C * 4 + z, B = L[E * 64 + O];
                      O === 63 && w === 0 && (B *= -1), d[h++] = B;
                    }
                return d;
              }
              function c(C) {
                var m = "0" + C;
                return m.substr(m.length - 2);
              }
              function v(C) {
                return C < n ? "p" + c(C + 1) + "_" + c(C + 4) : "colors";
              }
              function f(C, m, L) {
                for (var d = 0; d <= n; d += 4)
                  C[v(d)](x(d / 4, m, L));
              }
              function _(C) {
                for (var m = {}, L = 0; L <= n; L += 4)
                  m[v(L)] = C.buffer({
                    usage: "dynamic",
                    type: "float",
                    data: new Uint8Array(0)
                  });
                return m;
              }
              function S(C, m, L, d, h, E, w, z, O, B, V, U, H, F) {
                for (var G = [[], []], q = 0; q < 64; q++)
                  G[0][q] = q === h ? 1 : 0, G[1][q] = q === E ? 1 : 0;
                w *= F, z *= F, O *= F, B *= F;
                var rt = C.lines.canvasOverdrag * F, st = C.domain, vt = C.canvasWidth * F, ht = C.canvasHeight * F, et = C.pad.l * F, Q = C.pad.b * F, j = C.layoutHeight * F, at = C.layoutWidth * F, ut = C.deselectedLines.color, nt = C.deselectedLines.opacity, X = s.extendFlat({
                  key: V,
                  resolution: [vt, ht],
                  viewBoxPos: [w + rt, z],
                  viewBoxSize: [O, B],
                  i0: h,
                  i1: E,
                  dim0A: G[0].slice(0, 16),
                  dim0B: G[0].slice(16, 32),
                  dim0C: G[0].slice(32, 48),
                  dim0D: G[0].slice(48, 64),
                  dim1A: G[1].slice(0, 16),
                  dim1B: G[1].slice(16, 32),
                  dim1C: G[1].slice(32, 48),
                  dim1D: G[1].slice(48, 64),
                  drwLayer: U,
                  contextColor: [ut[0] / 255, ut[1] / 255, ut[2] / 255, nt !== "auto" ? ut[3] * nt : Math.max(1 / 255, Math.pow(1 / C.lines.color.length, 1 / 3))],
                  scissorX: (d === m ? 0 : w + rt) + (et - rt) + at * st.x[0],
                  scissorWidth: (d === L ? vt - w + rt : O + 0.5) + (d === m ? w + rt : 0),
                  scissorY: z + Q + j * st.y[0],
                  scissorHeight: B,
                  viewportX: et - rt + at * st.x[0],
                  viewportY: Q + j * st.y[0],
                  viewportWidth: vt,
                  viewportHeight: ht
                }, H);
                return X;
              }
              function M(C) {
                var m = A - 1, L = Math.max(0, Math.floor(C[0] * m), 0), d = Math.min(m, Math.ceil(C[1] * m), m);
                return [Math.min(L, d), Math.max(L, d)];
              }
              Y.exports = function(C, m) {
                var L = m.context, d = m.pick, h = m.regl, E = h._gl, w = E.getParameter(E.ALIASED_LINE_WIDTH_RANGE), z = Math.max(w[0], Math.min(w[1], m.viewModel.plotGlPixelRatio)), O = {
                  currentRafs: {},
                  drawCompleted: !0,
                  clearOnly: !1
                }, B, V, U, H, F = _(h), G, q = h.texture(t), rt = [];
                vt(m);
                var st = h({
                  profile: !1,
                  blend: {
                    enable: L,
                    func: {
                      srcRGB: "src alpha",
                      dstRGB: "one minus src alpha",
                      srcAlpha: 1,
                      dstAlpha: 1
                      // 'one minus src alpha'
                    },
                    equation: {
                      rgb: "add",
                      alpha: "add"
                    },
                    color: [0, 0, 0, 0]
                  },
                  depth: {
                    enable: !L,
                    mask: !0,
                    func: "less",
                    range: [0, 1]
                  },
                  // for polygons
                  cull: {
                    enable: !0,
                    face: "back"
                  },
                  scissor: {
                    enable: !0,
                    box: {
                      x: h.prop("scissorX"),
                      y: h.prop("scissorY"),
                      width: h.prop("scissorWidth"),
                      height: h.prop("scissorHeight")
                    }
                  },
                  viewport: {
                    x: h.prop("viewportX"),
                    y: h.prop("viewportY"),
                    width: h.prop("viewportWidth"),
                    height: h.prop("viewportHeight")
                  },
                  dither: !1,
                  vert: b,
                  frag: P,
                  primitive: "lines",
                  lineWidth: z,
                  attributes: F,
                  uniforms: {
                    resolution: h.prop("resolution"),
                    viewBoxPos: h.prop("viewBoxPos"),
                    viewBoxSize: h.prop("viewBoxSize"),
                    dim0A: h.prop("dim0A"),
                    dim1A: h.prop("dim1A"),
                    dim0B: h.prop("dim0B"),
                    dim1B: h.prop("dim1B"),
                    dim0C: h.prop("dim0C"),
                    dim1C: h.prop("dim1C"),
                    dim0D: h.prop("dim0D"),
                    dim1D: h.prop("dim1D"),
                    loA: h.prop("loA"),
                    hiA: h.prop("hiA"),
                    loB: h.prop("loB"),
                    hiB: h.prop("hiB"),
                    loC: h.prop("loC"),
                    hiC: h.prop("hiC"),
                    loD: h.prop("loD"),
                    hiD: h.prop("hiD"),
                    palette: q,
                    contextColor: h.prop("contextColor"),
                    maskTexture: h.prop("maskTexture"),
                    drwLayer: h.prop("drwLayer"),
                    maskHeight: h.prop("maskHeight")
                  },
                  offset: h.prop("offset"),
                  count: h.prop("count")
                });
                function vt(ut) {
                  B = ut.model, V = ut.viewModel, U = V.dimensions.slice(), H = U[0] ? U[0].values.length : 0;
                  var nt = B.lines, X = d ? nt.color.map(function(lt, pt) {
                    return pt / nt.color.length;
                  }) : nt.color, ct = g(H, U, X);
                  f(F, H, ct), !L && !d && (q = h.texture(s.extendFlat({
                    data: o(B.unitToColor, 255)
                  }, t)));
                }
                function ht(ut) {
                  var nt, X, ct, lt = [[], []];
                  for (ct = 0; ct < 64; ct++) {
                    var pt = !ut && ct < U.length ? U[ct].brush.filter.getBounds() : [-1 / 0, 1 / 0];
                    lt[0][ct] = pt[0], lt[1][ct] = pt[1];
                  }
                  var wt = A * 8, Et = new Array(wt);
                  for (nt = 0; nt < wt; nt++)
                    Et[nt] = 255;
                  if (!ut)
                    for (nt = 0; nt < U.length; nt++) {
                      var Ct = nt % 8, Gt = (nt - Ct) / 8, Jt = Math.pow(2, Ct), Qt = U[nt], Vt = Qt.brush.filter.get();
                      if (!(Vt.length < 2)) {
                        var zt = M(Vt[0])[1];
                        for (X = 1; X < Vt.length; X++) {
                          var Rt = M(Vt[X]);
                          for (ct = zt + 1; ct < Rt[0]; ct++)
                            Et[ct * 8 + Gt] &= ~Jt;
                          zt = Math.max(zt, Rt[1]);
                        }
                      }
                    }
                  var Wt = {
                    // 8 units x 8 bits = 64 bits, just sufficient for the almost 64 dimensions we support
                    shape: [8, A],
                    format: "alpha",
                    type: "uint8",
                    mag: "nearest",
                    min: "nearest",
                    data: Et
                  };
                  return G ? G(Wt) : G = h.texture(Wt), {
                    maskTexture: G,
                    maskHeight: A,
                    loA: lt[0].slice(0, 16),
                    loB: lt[0].slice(16, 32),
                    loC: lt[0].slice(32, 48),
                    loD: lt[0].slice(48, 64),
                    hiA: lt[1].slice(0, 16),
                    hiB: lt[1].slice(16, 32),
                    hiC: lt[1].slice(32, 48),
                    hiD: lt[1].slice(48, 64)
                  };
                }
                function et(ut, nt, X) {
                  var ct = ut.length, lt, pt, wt, Et = 1 / 0, Ct = -1 / 0;
                  for (lt = 0; lt < ct; lt++)
                    ut[lt].dim0.canvasX < Et && (Et = ut[lt].dim0.canvasX, pt = lt), ut[lt].dim1.canvasX > Ct && (Ct = ut[lt].dim1.canvasX, wt = lt);
                  ct === 0 && i(h, 0, 0, B.canvasWidth, B.canvasHeight);
                  var Gt = ht(L);
                  for (lt = 0; lt < ct; lt++) {
                    var Jt = ut[lt], Qt = Jt.dim0.crossfilterDimensionIndex, Vt = Jt.dim1.crossfilterDimensionIndex, zt = Jt.canvasX, Rt = Jt.canvasY, Wt = zt + Jt.panelSizeX, kt = Jt.plotGlPixelRatio;
                    if (nt || !rt[Qt] || rt[Qt][0] !== zt || rt[Qt][1] !== Wt) {
                      rt[Qt] = [zt, Wt];
                      var re = S(B, pt, wt, lt, Qt, Vt, zt, Rt, Jt.panelSizeX, Jt.panelSizeY, Jt.dim0.crossfilterDimensionIndex, L ? 0 : d ? 2 : 1, Gt, kt);
                      O.clearOnly = X;
                      var ge = nt ? B.lines.blockLineCount : H;
                      a(h, st, O, ge, H, re);
                    }
                  }
                }
                function Q(ut, nt) {
                  return h.read({
                    x: ut,
                    y: nt,
                    width: 1,
                    height: 1,
                    data: u
                  }), u;
                }
                function j(ut, nt, X, ct) {
                  var lt = new Uint8Array(4 * X * ct);
                  return h.read({
                    x: ut,
                    y: nt,
                    width: X,
                    height: ct,
                    data: lt
                  }), lt;
                }
                function at() {
                  C.style["pointer-events"] = "none", q.destroy(), G && G.destroy();
                  for (var ut in F) F[ut].destroy();
                }
                return {
                  render: et,
                  readPixel: Q,
                  readPixels: j,
                  destroy: at,
                  update: vt
                };
              };
            }
          ),
          /***/
          63197: (
            /***/
            function(Y) {
              Y.exports = function(K, e, b, P) {
                P || (P = 1 / 0);
                var n, s;
                for (n = 0; n < e.length; n++)
                  s = e[n], s.visible && (P = Math.min(P, s[b].length));
                for (P === 1 / 0 && (P = 0), K._length = P, n = 0; n < e.length; n++)
                  s = e[n], s.visible && (s._length = P);
                return P;
              };
            }
          ),
          /***/
          16019: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(34809), n = P.isArrayOrTypedArray, s = P.numberFormat, T = e(16401), A = e(29714), p = P.strRotate, u = P.strTranslate, t = e(30635), r = e(62203), i = e(88856), a = e(71293), l = a.keyFun, o = a.repeat, y = a.unwrap, g = e(62935), x = e(77911), c = e(23245), v = e(1293);
              function f(rt, st, vt) {
                return P.aggNums(rt, null, st, vt);
              }
              function _(rt, st) {
                return M(f(Math.min, rt, st), f(Math.max, rt, st));
              }
              function S(rt) {
                var st = rt.range;
                return st ? M(st[0], st[1]) : _(rt.values, rt._length);
              }
              function M(rt, st) {
                return (isNaN(rt) || !isFinite(rt)) && (rt = 0), (isNaN(st) || !isFinite(st)) && (st = 0), rt === st && (rt === 0 ? (rt -= 1, st += 1) : (rt *= 0.9, st *= 1.1)), [rt, st];
              }
              function C(rt, st) {
                return st ? function(vt, ht) {
                  var et = st[ht];
                  return et ?? rt(vt);
                } : rt;
              }
              function m(rt, st, vt, ht, et) {
                var Q = S(vt);
                return ht ? b.scale.ordinal().domain(ht.map(C(s(vt.tickformat), et))).range(ht.map(function(j) {
                  var at = (j - Q[0]) / (Q[1] - Q[0]);
                  return rt - st + at * (2 * st - rt);
                })) : b.scale.linear().domain(Q).range([rt - st, st]);
              }
              function L(rt, st) {
                return b.scale.linear().range([st, rt - st]);
              }
              function d(rt, st) {
                return b.scale.linear().domain(S(rt)).range([st, 1 - st]);
              }
              function h(rt) {
                if (rt.tickvals) {
                  var st = S(rt);
                  return b.scale.ordinal().domain(rt.tickvals).range(rt.tickvals.map(function(vt) {
                    return (vt - st[0]) / (st[1] - st[0]);
                  }));
                }
              }
              function E(rt) {
                var st = rt.map(function(Q) {
                  return Q[0];
                }), vt = rt.map(function(Q) {
                  var j = T(Q[1]);
                  return b.rgb("rgb(" + j[0] + "," + j[1] + "," + j[2] + ")");
                }), ht = function(Q) {
                  return function(j) {
                    return j[Q];
                  };
                }, et = "rgb".split("").map(function(Q) {
                  return b.scale.linear().clamp(!0).domain(st).range(vt.map(ht(Q)));
                });
                return function(Q) {
                  return et.map(function(j) {
                    return j(Q);
                  });
                };
              }
              function w(rt) {
                return rt.dimensions.some(function(st) {
                  return st.brush.filterSpecified;
                });
              }
              function z(rt, st, vt) {
                var ht = y(st), et = ht.trace, Q = g.convertTypedArray(ht.lineColor), j = et.line, at = {
                  color: T(et.unselected.line.color),
                  opacity: et.unselected.line.opacity
                }, ut = i.extractOpts(j), nt = ut.reversescale ? i.flipScale(ht.cscale) : ht.cscale, X = et.domain, ct = et.dimensions, lt = rt.width, pt = et.labelangle, wt = et.labelside, Et = et.labelfont, Ct = et.tickfont, Gt = et.rangefont, Jt = P.extendDeepNoArrays({}, j, {
                  color: Q.map(b.scale.linear().domain(S({
                    values: Q,
                    range: [ut.min, ut.max],
                    _length: et._length
                  }))),
                  blockLineCount: x.blockLineCount,
                  canvasOverdrag: x.overdrag * x.canvasPixelRatio
                }), Qt = Math.floor(lt * (X.x[1] - X.x[0])), Vt = Math.floor(rt.height * (X.y[1] - X.y[0])), zt = rt.margin || {
                  l: 80,
                  r: 80,
                  t: 100,
                  b: 80
                }, Rt = Qt, Wt = Vt;
                return {
                  key: vt,
                  colCount: ct.filter(g.isVisible).length,
                  dimensions: ct,
                  tickDistance: x.tickDistance,
                  unitToColor: E(nt),
                  lines: Jt,
                  deselectedLines: at,
                  labelAngle: pt,
                  labelSide: wt,
                  labelFont: Et,
                  tickFont: Ct,
                  rangeFont: Gt,
                  layoutWidth: lt,
                  layoutHeight: rt.height,
                  domain: X,
                  translateX: X.x[0] * lt,
                  translateY: rt.height - X.y[1] * rt.height,
                  pad: zt,
                  canvasWidth: Rt * x.canvasPixelRatio + 2 * Jt.canvasOverdrag,
                  canvasHeight: Wt * x.canvasPixelRatio,
                  width: Rt,
                  height: Wt,
                  canvasPixelRatio: x.canvasPixelRatio
                };
              }
              function O(rt, st, vt) {
                var ht = vt.width, et = vt.height, Q = vt.dimensions, j = vt.canvasPixelRatio, at = function(lt) {
                  return ht * lt / Math.max(1, vt.colCount - 1);
                }, ut = x.verticalPadding / et, nt = L(et, x.verticalPadding), X = {
                  key: vt.key,
                  xScale: at,
                  model: vt,
                  inBrushDrag: !1
                  // consider factoring it out and putting it in a centralized global-ish gesture state object
                }, ct = {};
                return X.dimensions = Q.filter(g.isVisible).map(function(lt, pt) {
                  var wt = d(lt, ut), Et = ct[lt.label];
                  ct[lt.label] = (Et || 0) + 1;
                  var Ct = lt.label + (Et ? "__" + Et : ""), Gt = lt.constraintrange, Jt = Gt && Gt.length;
                  Jt && !n(Gt[0]) && (Gt = [Gt]);
                  var Qt = Jt ? Gt.map(function(ae) {
                    return ae.map(wt);
                  }) : [[-1 / 0, 1 / 0]], Vt = function() {
                    var ae = X;
                    ae.focusLayer && ae.focusLayer.render(ae.panels, !0);
                    var Se = w(ae);
                    !rt.contextShown() && Se ? (ae.contextLayer && ae.contextLayer.render(ae.panels, !0), rt.contextShown(!0)) : rt.contextShown() && !Se && (ae.contextLayer && ae.contextLayer.render(ae.panels, !0, !0), rt.contextShown(!1));
                  }, zt = lt.values;
                  zt.length > lt._length && (zt = zt.slice(0, lt._length));
                  var Rt = lt.tickvals, Wt;
                  function kt(ae, Se) {
                    return {
                      val: ae,
                      text: Wt[Se]
                    };
                  }
                  function re(ae, Se) {
                    return ae.val - Se.val;
                  }
                  if (n(Rt) && Rt.length) {
                    P.isTypedArray(Rt) && (Rt = Array.from(Rt)), Wt = lt.ticktext, !n(Wt) || !Wt.length ? Wt = Rt.map(s(lt.tickformat)) : Wt.length > Rt.length ? Wt = Wt.slice(0, Rt.length) : Rt.length > Wt.length && (Rt = Rt.slice(0, Wt.length));
                    for (var ge = 1; ge < Rt.length; ge++)
                      if (Rt[ge] < Rt[ge - 1]) {
                        for (var _e = Rt.map(kt).sort(re), ce = 0; ce < Rt.length; ce++)
                          Rt[ce] = _e[ce].val, Wt[ce] = _e[ce].text;
                        break;
                      }
                  } else Rt = void 0;
                  return zt = g.convertTypedArray(zt), {
                    key: Ct,
                    label: lt.label,
                    tickFormat: lt.tickformat,
                    tickvals: Rt,
                    ticktext: Wt,
                    ordinal: g.isOrdinal(lt),
                    multiselect: lt.multiselect,
                    xIndex: pt,
                    crossfilterDimensionIndex: pt,
                    visibleIndex: lt._index,
                    height: et,
                    values: zt,
                    paddedUnitValues: zt.map(wt),
                    unitTickvals: Rt && Rt.map(wt),
                    xScale: at,
                    x: at(pt),
                    canvasX: at(pt) * j,
                    unitToPaddedPx: nt,
                    domainScale: m(et, x.verticalPadding, lt, Rt, Wt),
                    ordinalScale: h(lt),
                    parent: X,
                    model: vt,
                    brush: c.makeBrush(rt, Jt, Qt, function() {
                      rt.linePickActive(!1);
                    }, Vt, function(ae) {
                      if (X.focusLayer.render(X.panels, !0), X.pickLayer && X.pickLayer.render(X.panels, !0), rt.linePickActive(!0), st && st.filterChanged) {
                        var Se = wt.invert, ze = ae.map(function(Ne) {
                          return Ne.map(Se).sort(P.sorterAsc);
                        }).sort(function(Ne, Ve) {
                          return Ne[0] - Ve[0];
                        });
                        st.filterChanged(X.key, lt._index, ze);
                      }
                    })
                  };
                }), X;
              }
              function B(rt) {
                rt.classed(x.cn.axisExtentText, !0).attr("text-anchor", "middle").style("cursor", "default");
              }
              function V() {
                var rt = !0, st = !1;
                return {
                  linePickActive: function(vt) {
                    return arguments.length ? rt = !!vt : rt;
                  },
                  contextShown: function(vt) {
                    return arguments.length ? st = !!vt : st;
                  }
                };
              }
              function U(rt, st) {
                var vt = st === "top" ? 1 : -1, ht = rt * Math.PI / 180, et = Math.sin(ht), Q = Math.cos(ht);
                return {
                  dir: vt,
                  dx: et,
                  dy: Q,
                  degrees: rt
                };
              }
              function H(rt, st, vt) {
                for (var ht = st.panels || (st.panels = []), et = rt.data(), Q = 0; Q < et.length - 1; Q++) {
                  var j = ht[Q] || (ht[Q] = {}), at = et[Q], ut = et[Q + 1];
                  j.dim0 = at, j.dim1 = ut, j.canvasX = at.canvasX, j.panelSizeX = ut.canvasX - at.canvasX, j.panelSizeY = st.model.canvasHeight, j.y = 0, j.canvasY = 0, j.plotGlPixelRatio = vt;
                }
              }
              function F(rt) {
                for (var st = 0; st < rt.length; st++)
                  for (var vt = 0; vt < rt[st].length; vt++)
                    for (var ht = rt[st][vt].trace, et = ht.dimensions, Q = 0; Q < et.length; Q++) {
                      var j = et[Q].values, at = et[Q]._ax;
                      at && (at.range ? at.range = M(at.range[0], at.range[1]) : at.range = _(j, ht._length), at.dtick || (at.dtick = 0.01 * (Math.abs(at.range[1] - at.range[0]) || 1)), at.tickformat = et[Q].tickformat, A.calcTicks(at), at.cleanRange());
                    }
              }
              function G(rt, st) {
                return A.tickText(rt._ax, st, !1).text;
              }
              function q(rt, st) {
                if (rt.ordinal) return "";
                var vt = rt.domainScale.domain(), ht = vt[st ? vt.length - 1 : 0];
                return G(rt.model.dimensions[rt.visibleIndex], ht);
              }
              Y.exports = function(st, vt, ht, et) {
                var Q = st._context.staticPlot, j = st._fullLayout, at = j._toppaper, ut = j._glcontainer, nt = st._context.plotGlPixelRatio, X = st._fullLayout.paper_bgcolor;
                F(vt);
                var ct = V(), lt = vt.filter(function(ce) {
                  return y(ce).trace.visible;
                }).map(z.bind(0, ht)).map(O.bind(0, ct, et));
                ut.each(function(ce, ae) {
                  return P.extendFlat(ce, lt[ae]);
                });
                var pt = ut.selectAll(".gl-canvas").each(function(ce) {
                  ce.viewModel = lt[0], ce.viewModel.plotGlPixelRatio = nt, ce.viewModel.paperColor = X, ce.model = ce.viewModel ? ce.viewModel.model : null;
                }), wt = null, Et = pt.filter(function(ce) {
                  return ce.pick;
                });
                Et.style("pointer-events", Q ? "none" : "auto").on("mousemove", function(ce) {
                  if (ct.linePickActive() && ce.lineLayer && et && et.hover) {
                    var ae = b.event, Se = this.width, ze = this.height, Ne = b.mouse(this), Ve = Ne[0], Oe = Ne[1];
                    if (Ve < 0 || Oe < 0 || Ve >= Se || Oe >= ze)
                      return;
                    var ur = ce.lineLayer.readPixel(Ve, ze - 1 - Oe), ie = ur[3] !== 0, $t = ie ? ur[2] + 256 * (ur[1] + 256 * ur[0]) : null, jt = {
                      x: Ve,
                      y: Oe,
                      clientX: ae.clientX,
                      clientY: ae.clientY,
                      dataIndex: ce.model.key,
                      curveNumber: $t
                    };
                    $t !== wt && (ie ? et.hover(jt) : et.unhover && et.unhover(jt), wt = $t);
                  }
                }), pt.style("opacity", function(ce) {
                  return ce.pick ? 0 : 1;
                }), at.style("background", "rgba(255, 255, 255, 0)");
                var Ct = at.selectAll("." + x.cn.parcoords).data(lt, l);
                Ct.exit().remove(), Ct.enter().append("g").classed(x.cn.parcoords, !0).style("shape-rendering", "crispEdges").style("pointer-events", "none"), Ct.attr("transform", function(ce) {
                  return u(ce.model.translateX, ce.model.translateY);
                });
                var Gt = Ct.selectAll("." + x.cn.parcoordsControlView).data(o, l);
                Gt.enter().append("g").classed(x.cn.parcoordsControlView, !0), Gt.attr("transform", function(ce) {
                  return u(ce.model.pad.l, ce.model.pad.t);
                });
                var Jt = Gt.selectAll("." + x.cn.yAxis).data(function(ce) {
                  return ce.dimensions;
                }, l);
                Jt.enter().append("g").classed(x.cn.yAxis, !0), Gt.each(function(ce) {
                  H(Jt, ce, nt);
                }), pt.each(function(ce) {
                  if (ce.viewModel) {
                    !ce.lineLayer || et ? ce.lineLayer = v(this, ce) : ce.lineLayer.update(ce), (ce.key || ce.key === 0) && (ce.viewModel[ce.key] = ce.lineLayer);
                    var ae = !ce.context || // don't update background
                    et;
                    ce.lineLayer.render(ce.viewModel.panels, ae);
                  }
                }), Jt.attr("transform", function(ce) {
                  return u(ce.xScale(ce.xIndex), 0);
                }), Jt.call(b.behavior.drag().origin(function(ce) {
                  return ce;
                }).on("drag", function(ce) {
                  var ae = ce.parent;
                  ct.linePickActive(!1), ce.x = Math.max(-x.overdrag, Math.min(ce.model.width + x.overdrag, b.event.x)), ce.canvasX = ce.x * ce.model.canvasPixelRatio, Jt.sort(function(Se, ze) {
                    return Se.x - ze.x;
                  }).each(function(Se, ze) {
                    Se.xIndex = ze, Se.x = ce === Se ? Se.x : Se.xScale(Se.xIndex), Se.canvasX = Se.x * Se.model.canvasPixelRatio;
                  }), H(Jt, ae, nt), Jt.filter(function(Se) {
                    return Math.abs(ce.xIndex - Se.xIndex) !== 0;
                  }).attr("transform", function(Se) {
                    return u(Se.xScale(Se.xIndex), 0);
                  }), b.select(this).attr("transform", u(ce.x, 0)), Jt.each(function(Se, ze, Ne) {
                    Ne === ce.parent.key && (ae.dimensions[ze] = Se);
                  }), ae.contextLayer && ae.contextLayer.render(ae.panels, !1, !w(ae)), ae.focusLayer.render && ae.focusLayer.render(ae.panels);
                }).on("dragend", function(ce) {
                  var ae = ce.parent;
                  ce.x = ce.xScale(ce.xIndex), ce.canvasX = ce.x * ce.model.canvasPixelRatio, H(Jt, ae, nt), b.select(this).attr("transform", function(Se) {
                    return u(Se.x, 0);
                  }), ae.contextLayer && ae.contextLayer.render(ae.panels, !1, !w(ae)), ae.focusLayer && ae.focusLayer.render(ae.panels), ae.pickLayer && ae.pickLayer.render(ae.panels, !0), ct.linePickActive(!0), et && et.axesMoved && et.axesMoved(ae.key, ae.dimensions.map(function(Se) {
                    return Se.crossfilterDimensionIndex;
                  }));
                })), Jt.exit().remove();
                var Qt = Jt.selectAll("." + x.cn.axisOverlays).data(o, l);
                Qt.enter().append("g").classed(x.cn.axisOverlays, !0), Qt.selectAll("." + x.cn.axis).remove();
                var Vt = Qt.selectAll("." + x.cn.axis).data(o, l);
                Vt.enter().append("g").classed(x.cn.axis, !0), Vt.each(function(ce) {
                  var ae = ce.model.height / ce.model.tickDistance, Se = ce.domainScale, ze = Se.domain();
                  b.select(this).call(b.svg.axis().orient("left").tickSize(4).outerTickSize(2).ticks(ae, ce.tickFormat).tickValues(ce.ordinal ? (
                    // and this works for ordinal scales
                    ze
                  ) : null).tickFormat(function(Ne) {
                    return g.isOrdinal(ce) ? Ne : G(ce.model.dimensions[ce.visibleIndex], Ne);
                  }).scale(Se)), r.font(Vt.selectAll("text"), ce.model.tickFont);
                }), Vt.selectAll(".domain, .tick>line").attr("fill", "none").attr("stroke", "black").attr("stroke-opacity", 0.25).attr("stroke-width", "1px"), Vt.selectAll("text").style("cursor", "default");
                var zt = Qt.selectAll("." + x.cn.axisHeading).data(o, l);
                zt.enter().append("g").classed(x.cn.axisHeading, !0);
                var Rt = zt.selectAll("." + x.cn.axisTitle).data(o, l);
                Rt.enter().append("text").classed(x.cn.axisTitle, !0).attr("text-anchor", "middle").style("cursor", "ew-resize").style("pointer-events", Q ? "none" : "auto"), Rt.text(function(ce) {
                  return ce.label;
                }).each(function(ce) {
                  var ae = b.select(this);
                  r.font(ae, ce.model.labelFont), t.convertToTspans(ae, st);
                }).attr("transform", function(ce) {
                  var ae = U(ce.model.labelAngle, ce.model.labelSide), Se = x.axisTitleOffset;
                  return (ae.dir > 0 ? "" : u(0, 2 * Se + ce.model.height)) + p(ae.degrees) + u(-Se * ae.dx, -Se * ae.dy);
                }).attr("text-anchor", function(ce) {
                  var ae = U(ce.model.labelAngle, ce.model.labelSide), Se = Math.abs(ae.dx), ze = Math.abs(ae.dy);
                  return 2 * Se > ze ? ae.dir * ae.dx < 0 ? "start" : "end" : "middle";
                });
                var Wt = Qt.selectAll("." + x.cn.axisExtent).data(o, l);
                Wt.enter().append("g").classed(x.cn.axisExtent, !0);
                var kt = Wt.selectAll("." + x.cn.axisExtentTop).data(o, l);
                kt.enter().append("g").classed(x.cn.axisExtentTop, !0), kt.attr("transform", u(0, -x.axisExtentOffset));
                var re = kt.selectAll("." + x.cn.axisExtentTopText).data(o, l);
                re.enter().append("text").classed(x.cn.axisExtentTopText, !0).call(B), re.text(function(ce) {
                  return q(ce, !0);
                }).each(function(ce) {
                  r.font(b.select(this), ce.model.rangeFont);
                });
                var ge = Wt.selectAll("." + x.cn.axisExtentBottom).data(o, l);
                ge.enter().append("g").classed(x.cn.axisExtentBottom, !0), ge.attr("transform", function(ce) {
                  return u(0, ce.model.height + x.axisExtentOffset);
                });
                var _e = ge.selectAll("." + x.cn.axisExtentBottomText).data(o, l);
                _e.enter().append("text").classed(x.cn.axisExtentBottomText, !0).attr("dy", "0.75em").call(B), _e.text(function(ce) {
                  return q(ce, !1);
                }).each(function(ce) {
                  r.font(b.select(this), ce.model.rangeFont);
                }), c.ensureAxisBrush(Qt, X, st);
              };
            }
          ),
          /***/
          58823: (
            /***/
            function(Y, K, e) {
              var b = e(16019), P = e(22459), n = e(62935).isVisible, s = {};
              function T(u, t, r) {
                var i = t.indexOf(r), a = u.indexOf(i);
                return a === -1 && (a += t.length), a;
              }
              function A(u, t) {
                return function(i, a) {
                  return T(u, t, i) - T(u, t, a);
                };
              }
              var p = Y.exports = function(t, r) {
                var i = t._fullLayout, a = P(t, [], s);
                if (a) {
                  var l = {}, o = {}, y = {}, g = {}, x = i._size;
                  r.forEach(function(S, M) {
                    var C = S[0].trace;
                    y[M] = C.index;
                    var m = g[M] = C._fullInput.index;
                    l[M] = t.data[m].dimensions, o[M] = t.data[m].dimensions.slice();
                  });
                  var c = function(S, M, C) {
                    var m = o[S][M], L = C.map(function(O) {
                      return O.slice();
                    }), d = "dimensions[" + M + "].constraintrange", h = i._tracePreGUI[t._fullData[y[S]]._fullInput.uid];
                    if (h[d] === void 0) {
                      var E = m.constraintrange;
                      h[d] = E || null;
                    }
                    var w = t._fullData[y[S]].dimensions[M];
                    L.length ? (L.length === 1 && (L = L[0]), m.constraintrange = L, w.constraintrange = L.slice(), L = [L]) : (delete m.constraintrange, delete w.constraintrange, L = null);
                    var z = {};
                    z[d] = L, t.emit("plotly_restyle", [z, [g[S]]]);
                  }, v = function(S) {
                    t.emit("plotly_hover", S);
                  }, f = function(S) {
                    t.emit("plotly_unhover", S);
                  }, _ = function(S, M) {
                    var C = A(M, o[S].filter(n));
                    l[S].sort(C), o[S].filter(function(m) {
                      return !n(m);
                    }).sort(function(m) {
                      return o[S].indexOf(m);
                    }).forEach(function(m) {
                      l[S].splice(l[S].indexOf(m), 1), l[S].splice(o[S].indexOf(m), 0, m);
                    }), t.emit("plotly_restyle", [{
                      dimensions: [l[S]]
                    }, [g[S]]]);
                  };
                  b(t, r, {
                    // layout
                    width: x.w,
                    height: x.h,
                    margin: {
                      t: x.t,
                      r: x.r,
                      b: x.b,
                      l: x.l
                    }
                  }, {
                    // callbacks
                    filterChanged: c,
                    hover: v,
                    unhover: f,
                    axesMoved: _
                  });
                }
              };
              p.reglPrecompiled = s;
            }
          ),
          /***/
          55412: (
            /***/
            function(Y, K, e) {
              var b = e(9829), P = e(13792).u, n = e(80337), s = e(10229), T = e(3208).rb, A = e(3208).ay, p = e(93049).extendFlat, u = e(94850).k, t = n({
                editType: "plot",
                arrayOk: !0,
                colorEditType: "plot"
              });
              Y.exports = {
                labels: {
                  valType: "data_array",
                  editType: "calc"
                },
                // equivalent of x0 and dx, if label is missing
                label0: {
                  valType: "number",
                  dflt: 0,
                  editType: "calc"
                },
                dlabel: {
                  valType: "number",
                  dflt: 1,
                  editType: "calc"
                },
                values: {
                  valType: "data_array",
                  editType: "calc"
                },
                marker: {
                  colors: {
                    valType: "data_array",
                    // TODO 'color_array' ?
                    editType: "calc"
                  },
                  line: {
                    color: {
                      valType: "color",
                      dflt: s.defaultLine,
                      arrayOk: !0,
                      editType: "style"
                    },
                    width: {
                      valType: "number",
                      min: 0,
                      dflt: 0,
                      arrayOk: !0,
                      editType: "style"
                    },
                    editType: "calc"
                  },
                  pattern: u,
                  editType: "calc"
                },
                text: {
                  valType: "data_array",
                  editType: "plot"
                },
                hovertext: {
                  valType: "string",
                  dflt: "",
                  arrayOk: !0,
                  editType: "style"
                },
                // 'see eg:'
                // 'https://www.e-education.psu.edu/natureofgeoinfo/sites/www.e-education.psu.edu.natureofgeoinfo/files/image/hisp_pies.gif',
                // '(this example involves a map too - may someday be a whole trace type',
                // 'of its own. but the point is the size of the whole pie is important.)'
                scalegroup: {
                  valType: "string",
                  dflt: "",
                  editType: "calc"
                },
                // labels (legend is handled by plots.attributes.showlegend and layout.hiddenlabels)
                textinfo: {
                  valType: "flaglist",
                  flags: ["label", "text", "value", "percent"],
                  extras: ["none"],
                  editType: "calc"
                },
                hoverinfo: p({}, b.hoverinfo, {
                  flags: ["label", "text", "value", "percent", "name"]
                }),
                hovertemplate: T({}, {
                  keys: ["label", "color", "value", "percent", "text"]
                }),
                texttemplate: A({
                  editType: "plot"
                }, {
                  keys: ["label", "color", "value", "percent", "text"]
                }),
                textposition: {
                  valType: "enumerated",
                  values: ["inside", "outside", "auto", "none"],
                  dflt: "auto",
                  arrayOk: !0,
                  editType: "plot"
                },
                textfont: p({}, t, {}),
                insidetextorientation: {
                  valType: "enumerated",
                  values: ["horizontal", "radial", "tangential", "auto"],
                  dflt: "auto",
                  editType: "plot"
                },
                insidetextfont: p({}, t, {}),
                outsidetextfont: p({}, t, {}),
                automargin: {
                  valType: "boolean",
                  dflt: !1,
                  editType: "plot"
                },
                title: {
                  text: {
                    valType: "string",
                    dflt: "",
                    editType: "plot"
                  },
                  font: p({}, t, {}),
                  position: {
                    valType: "enumerated",
                    values: ["top left", "top center", "top right", "middle center", "bottom left", "bottom center", "bottom right"],
                    editType: "plot"
                  },
                  editType: "plot"
                },
                // position and shape
                domain: P({
                  name: "pie",
                  trace: !0,
                  editType: "calc"
                }),
                hole: {
                  valType: "number",
                  min: 0,
                  max: 1,
                  dflt: 0,
                  editType: "calc"
                },
                // ordering and direction
                sort: {
                  valType: "boolean",
                  dflt: !0,
                  editType: "calc"
                },
                direction: {
                  /**
                   * there are two common conventions, both of which place the first
                   * (largest, if sorted) slice with its left edge at 12 o'clock but
                   * succeeding slices follow either cw or ccw from there.
                   *
                   * see http://visage.co/data-visualization-101-pie-charts/
                   */
                  valType: "enumerated",
                  values: ["clockwise", "counterclockwise"],
                  dflt: "counterclockwise",
                  editType: "calc"
                },
                rotation: {
                  valType: "angle",
                  dflt: 0,
                  editType: "calc"
                },
                pull: {
                  valType: "number",
                  min: 0,
                  max: 1,
                  dflt: 0,
                  arrayOk: !0,
                  editType: "calc"
                },
                _deprecated: {
                  title: {
                    valType: "string",
                    dflt: "",
                    editType: "calc"
                  },
                  titlefont: p({}, t, {}),
                  titleposition: {
                    valType: "enumerated",
                    values: ["top left", "top center", "top right", "middle center", "bottom left", "bottom center", "bottom right"],
                    editType: "calc"
                  }
                }
              };
            }
          ),
          /***/
          96052: (
            /***/
            function(Y, K, e) {
              var b = e(44122);
              K.name = "pie", K.plot = function(P, n, s, T) {
                b.plotBasePlot(K.name, P, n, s, T);
              }, K.clean = function(P, n, s, T) {
                b.cleanBasePlot(K.name, P, n, s, T);
              };
            }
          ),
          /***/
          44148: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(65657), n = e(78766), s = {};
              function T(t, r) {
                var i = [], a = t._fullLayout, l = a.hiddenlabels || [], o = r.labels, y = r.marker.colors || [], g = r.values, x = r._length, c = r._hasValues && x, v, f;
                if (r.dlabel)
                  for (o = new Array(x), v = 0; v < x; v++)
                    o[v] = String(r.label0 + v * r.dlabel);
                var _ = {}, S = A(a["_" + r.type + "colormap"]), M = 0, C = !1;
                for (v = 0; v < x; v++) {
                  var m, L, d;
                  if (c) {
                    if (m = g[v], !b(m)) continue;
                    m = +m;
                  } else m = 1;
                  L = o[v], (L === void 0 || L === "") && (L = v), L = String(L);
                  var h = _[L];
                  h === void 0 ? (_[L] = i.length, d = l.indexOf(L) !== -1, d || (M += m), i.push({
                    v: m,
                    label: L,
                    color: S(y[v], L),
                    i: v,
                    pts: [v],
                    hidden: d
                  })) : (C = !0, f = i[h], f.v += m, f.pts.push(v), f.hidden || (M += m), f.color === !1 && y[v] && (f.color = S(y[v], L)));
                }
                i = i.filter(function(w) {
                  return w.v >= 0;
                });
                var E = r.type === "funnelarea" ? C : r.sort;
                return E && i.sort(function(w, z) {
                  return z.v - w.v;
                }), i[0] && (i[0].vTotal = M), i;
              }
              function A(t) {
                return function(i, a) {
                  return !i || (i = P(i), !i.isValid()) ? !1 : (i = n.addOpacity(i, i.getAlpha()), t[a] || (t[a] = i), i);
                };
              }
              function p(t, r) {
                var i = (r || {}).type;
                i || (i = "pie");
                var a = t._fullLayout, l = t.calcdata, o = a[i + "colorway"], y = a["_" + i + "colormap"];
                a["extend" + i + "colors"] && (o = u(o, s));
                for (var g = 0, x = 0; x < l.length; x++) {
                  var c = l[x], v = c[0].trace.type;
                  if (v === i)
                    for (var f = 0; f < c.length; f++) {
                      var _ = c[f];
                      _.color === !1 && (y[_.label] ? _.color = y[_.label] : (y[_.label] = _.color = o[g % o.length], g++));
                    }
                }
              }
              function u(t, r) {
                var i, a = JSON.stringify(t), l = r[a];
                if (!l) {
                  for (l = t.slice(), i = 0; i < t.length; i++)
                    l.push(P(t[i]).lighten(20).toHexString());
                  for (i = 0; i < t.length; i++)
                    l.push(P(t[i]).darken(20).toHexString());
                  r[a] = l;
                }
                return l;
              }
              Y.exports = {
                calc: T,
                crossTraceCalc: p,
                makePullColorFn: A,
                generateExtendedColors: u
              };
            }
          ),
          /***/
          46979: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(34809), n = e(55412), s = e(13792).N, T = e(17550).handleText, A = e(34809).coercePattern;
              function p(r, i) {
                var a = P.isArrayOrTypedArray(r), l = P.isArrayOrTypedArray(i), o = Math.min(a ? r.length : 1 / 0, l ? i.length : 1 / 0);
                if (isFinite(o) || (o = 0), o && l) {
                  for (var y, g = 0; g < o; g++) {
                    var x = i[g];
                    if (b(x) && x > 0) {
                      y = !0;
                      break;
                    }
                  }
                  y || (o = 0);
                }
                return {
                  hasLabels: a,
                  hasValues: l,
                  len: o
                };
              }
              function u(r, i, a, l, o) {
                var y = l("marker.line.width");
                y && l(
                  "marker.line.color",
                  o ? void 0 : a.paper_bgcolor
                  // case of funnelarea, sunburst, icicle, treemap
                );
                var g = l("marker.colors");
                A(l, "marker.pattern", g), r.marker && !i.marker.pattern.fgcolor && (i.marker.pattern.fgcolor = r.marker.colors), i.marker.pattern.bgcolor || (i.marker.pattern.bgcolor = a.paper_bgcolor);
              }
              function t(r, i, a, l) {
                function o(h, E) {
                  return P.coerce(r, i, n, h, E);
                }
                var y = o("labels"), g = o("values"), x = p(y, g), c = x.len;
                if (i._hasLabels = x.hasLabels, i._hasValues = x.hasValues, !i._hasLabels && i._hasValues && (o("label0"), o("dlabel")), !c) {
                  i.visible = !1;
                  return;
                }
                i._length = c, u(r, i, l, o, !0), o("scalegroup");
                var v = o("text"), f = o("texttemplate"), _;
                if (f || (_ = o("textinfo", P.isArrayOrTypedArray(v) ? "text+percent" : "percent")), o("hovertext"), o("hovertemplate"), f || _ && _ !== "none") {
                  var S = o("textposition");
                  T(r, i, l, o, S, {
                    moduleHasSelected: !1,
                    moduleHasUnselected: !1,
                    moduleHasConstrain: !1,
                    moduleHasCliponaxis: !1,
                    moduleHasTextangle: !1,
                    moduleHasInsideanchor: !1
                  });
                  var M = Array.isArray(S) || S === "auto", C = M || S === "outside";
                  C && o("automargin"), (S === "inside" || S === "auto" || Array.isArray(S)) && o("insidetextorientation");
                } else _ === "none" && o("textposition", "none");
                s(i, l, o);
                var m = o("hole"), L = o("title.text");
                if (L) {
                  var d = o("title.position", m ? "middle center" : "top center");
                  !m && d === "middle center" && (i.title.position = "top center"), P.coerceFont(o, "title.font", l.font);
                }
                o("sort"), o("direction"), o("rotation"), o("pull");
              }
              Y.exports = {
                handleLabelsAndValues: p,
                handleMarkerDefaults: u,
                supplyDefaults: t
              };
            }
          ),
          /***/
          50568: (
            /***/
            function(Y, K, e) {
              var b = e(36040).appendArrayMultiPointValues;
              Y.exports = function(n, s) {
                var T = {
                  curveNumber: s.index,
                  pointNumbers: n.pts,
                  data: s._input,
                  fullData: s,
                  label: n.label,
                  color: n.color,
                  value: n.v,
                  percent: n.percent,
                  text: n.text,
                  bbox: n.bbox,
                  // pt.v (and pt.i below) for backward compatibility
                  v: n.v
                };
                return n.pts.length === 1 && (T.pointNumber = T.i = n.pts[0]), b(T, s, n.pts), s.type === "funnelarea" && (delete T.v, delete T.i), T;
              };
            }
          ),
          /***/
          75067: (
            /***/
            function(Y, K, e) {
              var b = e(62203), P = e(78766);
              Y.exports = function(s, T, A, p) {
                var u = A.marker.pattern;
                u && u.shape ? b.pointStyle(s, A, p, T) : P.fill(s, T.color);
              };
            }
          ),
          /***/
          37252: (
            /***/
            function(Y, K, e) {
              var b = e(34809);
              function P(n) {
                return n.indexOf("e") !== -1 ? n.replace(/[.]?0+e/, "e") : n.indexOf(".") !== -1 ? n.replace(/[.]?0+$/, "") : n;
              }
              K.formatPiePercent = function(s, T) {
                var A = P((s * 100).toPrecision(3));
                return b.numSeparate(A, T) + "%";
              }, K.formatPieValue = function(s, T) {
                var A = P(s.toPrecision(10));
                return b.numSeparate(A, T);
              }, K.getFirstFilled = function(s, T) {
                if (b.isArrayOrTypedArray(s))
                  for (var A = 0; A < T.length; A++) {
                    var p = s[T[A]];
                    if (p || p === 0 || p === "") return p;
                  }
              }, K.castOption = function(s, T) {
                if (b.isArrayOrTypedArray(s)) return K.getFirstFilled(s, T);
                if (s) return s;
              }, K.getRotationAngle = function(n) {
                return (n === "auto" ? 0 : n) * Math.PI / 180;
              };
            }
          ),
          /***/
          49913: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(55412),
                supplyDefaults: e(46979).supplyDefaults,
                supplyLayoutDefaults: e(13464),
                layoutAttributes: e(4031),
                calc: e(44148).calc,
                crossTraceCalc: e(44148).crossTraceCalc,
                plot: e(35734).plot,
                style: e(140),
                styleOne: e(32891),
                moduleType: "trace",
                name: "pie",
                basePlotModule: e(96052),
                categories: ["pie-like", "pie", "showLegend"],
                meta: {}
              };
            }
          ),
          /***/
          4031: (
            /***/
            function(Y) {
              Y.exports = {
                hiddenlabels: {
                  valType: "data_array",
                  editType: "calc"
                },
                piecolorway: {
                  valType: "colorlist",
                  editType: "calc"
                },
                extendpiecolors: {
                  valType: "boolean",
                  dflt: !0,
                  editType: "calc"
                }
              };
            }
          ),
          /***/
          13464: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(4031);
              Y.exports = function(s, T) {
                function A(p, u) {
                  return b.coerce(s, T, P, p, u);
                }
                A("hiddenlabels"), A("piecolorway", T.colorway), A("extendpiecolors");
              };
            }
          ),
          /***/
          35734: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(44122), n = e(32141), s = e(78766), T = e(62203), A = e(34809), p = A.strScale, u = A.strTranslate, t = e(30635), r = e(84102), i = r.recordMinTextSize, a = r.clearMinTextSize, l = e(56155).TEXTPAD, o = e(37252), y = e(50568), g = e(34809).isValidTextValue;
              function x(et, Q) {
                var j = et._context.staticPlot, at = et._fullLayout, ut = at._size;
                a("pie", at), S(Q, et), G(Q, ut);
                var nt = A.makeTraceGroups(at._pielayer, Q, "trace").each(function(X) {
                  var ct = b.select(this), lt = X[0], pt = lt.trace;
                  rt(X), ct.attr("stroke-linejoin", "round"), ct.each(function() {
                    var wt = b.select(this).selectAll("g.slice").data(X);
                    wt.enter().append("g").classed("slice", !0), wt.exit().remove();
                    var Et = [
                      [[], []],
                      // y<0: x<0, x>=0
                      [[], []]
                      // y>=0: x<0, x>=0
                    ], Ct = !1;
                    wt.each(function(kt, re) {
                      if (kt.hidden) {
                        b.select(this).selectAll("path,g").remove();
                        return;
                      }
                      kt.pointNumber = kt.i, kt.curveNumber = pt.index, Et[kt.pxmid[1] < 0 ? 0 : 1][kt.pxmid[0] < 0 ? 0 : 1].push(kt);
                      var ge = lt.cx, _e = lt.cy, ce = b.select(this), ae = ce.selectAll("path.surface").data([kt]);
                      if (ae.enter().append("path").classed("surface", !0).style({
                        "pointer-events": j ? "none" : "all"
                      }), ce.call(v, et, X), pt.pull) {
                        var Se = +o.castOption(pt.pull, kt.pts) || 0;
                        Se > 0 && (ge += Se * kt.pxmid[0], _e += Se * kt.pxmid[1]);
                      }
                      kt.cxFinal = ge, kt.cyFinal = _e;
                      function ze(jt, ee, Bt, Xt) {
                        var Zt = Xt * (ee[0] - jt[0]), ye = Xt * (ee[1] - jt[1]);
                        return "a" + Xt * lt.r + "," + Xt * lt.r + " 0 " + kt.largeArc + (Bt ? " 1 " : " 0 ") + Zt + "," + ye;
                      }
                      var Ne = pt.hole;
                      if (kt.v === lt.vTotal) {
                        var Ve = "M" + (ge + kt.px0[0]) + "," + (_e + kt.px0[1]) + ze(kt.px0, kt.pxmid, !0, 1) + ze(kt.pxmid, kt.px0, !0, 1) + "Z";
                        Ne ? ae.attr("d", "M" + (ge + Ne * kt.px0[0]) + "," + (_e + Ne * kt.px0[1]) + ze(kt.px0, kt.pxmid, !1, Ne) + ze(kt.pxmid, kt.px0, !1, Ne) + "Z" + Ve) : ae.attr("d", Ve);
                      } else {
                        var Oe = ze(kt.px0, kt.px1, !0, 1);
                        if (Ne) {
                          var ur = 1 - Ne;
                          ae.attr("d", "M" + (ge + Ne * kt.px1[0]) + "," + (_e + Ne * kt.px1[1]) + ze(kt.px1, kt.px0, !1, Ne) + "l" + ur * kt.px0[0] + "," + ur * kt.px0[1] + Oe + "Z");
                        } else
                          ae.attr("d", "M" + ge + "," + _e + "l" + kt.px0[0] + "," + kt.px0[1] + Oe + "Z");
                      }
                      vt(et, kt, lt);
                      var ie = o.castOption(pt.textposition, kt.pts), $t = ce.selectAll("g.slicetext").data(kt.text && ie !== "none" ? [0] : []);
                      $t.enter().append("g").classed("slicetext", !0), $t.exit().remove(), $t.each(function() {
                        var jt = A.ensureSingle(b.select(this), "text", "", function(Lt) {
                          Lt.attr("data-notex", 1);
                        }), ee = A.ensureUniformFontSize(et, ie === "outside" ? f(pt, kt, at.font) : _(pt, kt, at.font));
                        jt.text(kt.text).attr({
                          class: "slicetext",
                          transform: "",
                          "text-anchor": "middle"
                        }).call(T.font, ee).call(t.convertToTspans, et);
                        var Bt = T.bBox(jt.node()), Xt;
                        if (ie === "outside")
                          Xt = z(Bt, kt);
                        else if (Xt = M(Bt, kt, lt), ie === "auto" && Xt.scale < 1) {
                          var Zt = A.ensureUniformFontSize(et, pt.outsidetextfont);
                          jt.call(T.font, Zt), Bt = T.bBox(jt.node()), Xt = z(Bt, kt);
                        }
                        var ye = Xt.textPosAngle, Mt = ye === void 0 ? kt.pxmid : st(lt.r, ye);
                        if (Xt.targetX = ge + Mt[0] * Xt.rCenter + (Xt.x || 0), Xt.targetY = _e + Mt[1] * Xt.rCenter + (Xt.y || 0), ht(Xt, Bt), Xt.outside) {
                          var St = Xt.targetY;
                          kt.yLabelMin = St - Bt.height / 2, kt.yLabelMid = St, kt.yLabelMax = St + Bt.height / 2, kt.labelExtraX = 0, kt.labelExtraY = 0, Ct = !0;
                        }
                        Xt.fontSize = ee.size, i(pt.type, Xt, at), X[re].transform = Xt, A.setTransormAndDisplay(jt, Xt);
                      });
                    });
                    var Gt = b.select(this).selectAll("g.titletext").data(pt.title.text ? [0] : []);
                    if (Gt.enter().append("g").classed("titletext", !0), Gt.exit().remove(), Gt.each(function() {
                      var kt = A.ensureSingle(b.select(this), "text", "", function(_e) {
                        _e.attr("data-notex", 1);
                      }), re = pt.title.text;
                      pt._meta && (re = A.templateString(re, pt._meta)), kt.text(re).attr({
                        class: "titletext",
                        transform: "",
                        "text-anchor": "middle"
                      }).call(T.font, pt.title.font).call(t.convertToTspans, et);
                      var ge;
                      pt.title.position === "middle center" ? ge = O(lt) : ge = B(lt, ut), kt.attr("transform", u(ge.x, ge.y) + p(Math.min(1, ge.scale)) + u(ge.tx, ge.ty));
                    }), Ct && F(Et, pt), c(wt, pt), Ct && pt.automargin) {
                      var Jt = T.bBox(ct.node()), Qt = pt.domain, Vt = ut.w * (Qt.x[1] - Qt.x[0]), zt = ut.h * (Qt.y[1] - Qt.y[0]), Rt = (0.5 * Vt - lt.r) / ut.w, Wt = (0.5 * zt - lt.r) / ut.h;
                      P.autoMargin(et, "pie." + pt.uid + ".automargin", {
                        xl: Qt.x[0] - Rt,
                        xr: Qt.x[1] + Rt,
                        yb: Qt.y[0] - Wt,
                        yt: Qt.y[1] + Wt,
                        l: Math.max(lt.cx - lt.r - Jt.left, 0),
                        r: Math.max(Jt.right - (lt.cx + lt.r), 0),
                        b: Math.max(Jt.bottom - (lt.cy + lt.r), 0),
                        t: Math.max(lt.cy - lt.r - Jt.top, 0),
                        pad: 5
                      });
                    }
                  });
                });
                setTimeout(function() {
                  nt.selectAll("tspan").each(function() {
                    var X = b.select(this);
                    X.attr("dy") && X.attr("dy", X.attr("dy"));
                  });
                }, 0);
              }
              function c(et, Q) {
                et.each(function(j) {
                  var at = b.select(this);
                  if (!j.labelExtraX && !j.labelExtraY) {
                    at.select("path.textline").remove();
                    return;
                  }
                  var ut = at.select("g.slicetext text");
                  j.transform.targetX += j.labelExtraX, j.transform.targetY += j.labelExtraY, A.setTransormAndDisplay(ut, j.transform);
                  var nt = j.cxFinal + j.pxmid[0], X = j.cyFinal + j.pxmid[1], ct = "M" + nt + "," + X, lt = (j.yLabelMax - j.yLabelMin) * (j.pxmid[0] < 0 ? -1 : 1) / 4;
                  if (j.labelExtraX) {
                    var pt = j.labelExtraX * j.pxmid[1] / j.pxmid[0], wt = j.yLabelMid + j.labelExtraY - (j.cyFinal + j.pxmid[1]);
                    Math.abs(pt) > Math.abs(wt) ? ct += "l" + wt * j.pxmid[0] / j.pxmid[1] + "," + wt + "H" + (nt + j.labelExtraX + lt) : ct += "l" + j.labelExtraX + "," + pt + "v" + (wt - pt) + "h" + lt;
                  } else
                    ct += "V" + (j.yLabelMid + j.labelExtraY) + "h" + lt;
                  A.ensureSingle(at, "path", "textline").call(s.stroke, Q.outsidetextfont.color).attr({
                    "stroke-width": Math.min(2, Q.outsidetextfont.size / 8),
                    d: ct,
                    fill: "none"
                  });
                });
              }
              function v(et, Q, j) {
                var at = j[0], ut = at.cx, nt = at.cy, X = at.trace, ct = X.type === "funnelarea";
                "_hasHoverLabel" in X || (X._hasHoverLabel = !1), "_hasHoverEvent" in X || (X._hasHoverEvent = !1), et.on("mouseover", function(lt) {
                  var pt = Q._fullLayout, wt = Q._fullData[X.index];
                  if (!(Q._dragging || pt.hovermode === !1)) {
                    var Et = wt.hoverinfo;
                    if (Array.isArray(Et) && (Et = n.castHoverinfo({
                      hoverinfo: [o.castOption(Et, lt.pts)],
                      _module: X._module
                    }, pt, 0)), Et === "all" && (Et = "label+text+value+percent+name"), wt.hovertemplate || Et !== "none" && Et !== "skip" && Et) {
                      var Ct = lt.rInscribed || 0, Gt = ut + lt.pxmid[0] * (1 - Ct), Jt = nt + lt.pxmid[1] * (1 - Ct), Qt = pt.separators, Vt = [];
                      if (Et && Et.indexOf("label") !== -1 && Vt.push(lt.label), lt.text = o.castOption(wt.hovertext || wt.text, lt.pts), Et && Et.indexOf("text") !== -1) {
                        var zt = lt.text;
                        A.isValidTextValue(zt) && Vt.push(zt);
                      }
                      lt.value = lt.v, lt.valueLabel = o.formatPieValue(lt.v, Qt), Et && Et.indexOf("value") !== -1 && Vt.push(lt.valueLabel), lt.percent = lt.v / at.vTotal, lt.percentLabel = o.formatPiePercent(lt.percent, Qt), Et && Et.indexOf("percent") !== -1 && Vt.push(lt.percentLabel);
                      var Rt = wt.hoverlabel, Wt = Rt.font, kt = [];
                      n.loneHover({
                        trace: X,
                        x0: Gt - Ct * at.r,
                        x1: Gt + Ct * at.r,
                        y: Jt,
                        _x0: ct ? ut + lt.TL[0] : Gt - Ct * at.r,
                        _x1: ct ? ut + lt.TR[0] : Gt + Ct * at.r,
                        _y0: ct ? nt + lt.TL[1] : Jt - Ct * at.r,
                        _y1: ct ? nt + lt.BL[1] : Jt + Ct * at.r,
                        text: Vt.join("<br>"),
                        name: wt.hovertemplate || Et.indexOf("name") !== -1 ? wt.name : void 0,
                        idealAlign: lt.pxmid[0] < 0 ? "left" : "right",
                        color: o.castOption(Rt.bgcolor, lt.pts) || lt.color,
                        borderColor: o.castOption(Rt.bordercolor, lt.pts),
                        fontFamily: o.castOption(Wt.family, lt.pts),
                        fontSize: o.castOption(Wt.size, lt.pts),
                        fontColor: o.castOption(Wt.color, lt.pts),
                        nameLength: o.castOption(Rt.namelength, lt.pts),
                        textAlign: o.castOption(Rt.align, lt.pts),
                        hovertemplate: o.castOption(wt.hovertemplate, lt.pts),
                        hovertemplateLabels: lt,
                        eventData: [y(lt, wt)]
                      }, {
                        container: pt._hoverlayer.node(),
                        outerContainer: pt._paper.node(),
                        gd: Q,
                        inOut_bbox: kt
                      }), lt.bbox = kt[0], X._hasHoverLabel = !0;
                    }
                    X._hasHoverEvent = !0, Q.emit("plotly_hover", {
                      points: [y(lt, wt)],
                      event: b.event
                    });
                  }
                }), et.on("mouseout", function(lt) {
                  var pt = Q._fullLayout, wt = Q._fullData[X.index], Et = b.select(this).datum();
                  X._hasHoverEvent && (lt.originalEvent = b.event, Q.emit("plotly_unhover", {
                    points: [y(Et, wt)],
                    event: b.event
                  }), X._hasHoverEvent = !1), X._hasHoverLabel && (n.loneUnhover(pt._hoverlayer.node()), X._hasHoverLabel = !1);
                }), et.on("click", function(lt) {
                  var pt = Q._fullLayout, wt = Q._fullData[X.index];
                  Q._dragging || pt.hovermode === !1 || (Q._hoverdata = [y(lt, wt)], n.click(Q, b.event));
                });
              }
              function f(et, Q, j) {
                var at = o.castOption(et.outsidetextfont.color, Q.pts) || o.castOption(et.textfont.color, Q.pts) || j.color, ut = o.castOption(et.outsidetextfont.family, Q.pts) || o.castOption(et.textfont.family, Q.pts) || j.family, nt = o.castOption(et.outsidetextfont.size, Q.pts) || o.castOption(et.textfont.size, Q.pts) || j.size, X = o.castOption(et.outsidetextfont.weight, Q.pts) || o.castOption(et.textfont.weight, Q.pts) || j.weight, ct = o.castOption(et.outsidetextfont.style, Q.pts) || o.castOption(et.textfont.style, Q.pts) || j.style, lt = o.castOption(et.outsidetextfont.variant, Q.pts) || o.castOption(et.textfont.variant, Q.pts) || j.variant, pt = o.castOption(et.outsidetextfont.textcase, Q.pts) || o.castOption(et.textfont.textcase, Q.pts) || j.textcase, wt = o.castOption(et.outsidetextfont.lineposition, Q.pts) || o.castOption(et.textfont.lineposition, Q.pts) || j.lineposition, Et = o.castOption(et.outsidetextfont.shadow, Q.pts) || o.castOption(et.textfont.shadow, Q.pts) || j.shadow;
                return {
                  color: at,
                  family: ut,
                  size: nt,
                  weight: X,
                  style: ct,
                  variant: lt,
                  textcase: pt,
                  lineposition: wt,
                  shadow: Et
                };
              }
              function _(et, Q, j) {
                var at = o.castOption(et.insidetextfont.color, Q.pts);
                !at && et._input.textfont && (at = o.castOption(et._input.textfont.color, Q.pts));
                var ut = o.castOption(et.insidetextfont.family, Q.pts) || o.castOption(et.textfont.family, Q.pts) || j.family, nt = o.castOption(et.insidetextfont.size, Q.pts) || o.castOption(et.textfont.size, Q.pts) || j.size, X = o.castOption(et.insidetextfont.weight, Q.pts) || o.castOption(et.textfont.weight, Q.pts) || j.weight, ct = o.castOption(et.insidetextfont.style, Q.pts) || o.castOption(et.textfont.style, Q.pts) || j.style, lt = o.castOption(et.insidetextfont.variant, Q.pts) || o.castOption(et.textfont.variant, Q.pts) || j.variant, pt = o.castOption(et.insidetextfont.textcase, Q.pts) || o.castOption(et.textfont.textcase, Q.pts) || j.textcase, wt = o.castOption(et.insidetextfont.lineposition, Q.pts) || o.castOption(et.textfont.lineposition, Q.pts) || j.lineposition, Et = o.castOption(et.insidetextfont.shadow, Q.pts) || o.castOption(et.textfont.shadow, Q.pts) || j.shadow;
                return {
                  color: at || s.contrast(Q.color),
                  family: ut,
                  size: nt,
                  weight: X,
                  style: ct,
                  variant: lt,
                  textcase: pt,
                  lineposition: wt,
                  shadow: Et
                };
              }
              function S(et, Q) {
                for (var j, at, ut = 0; ut < et.length; ut++)
                  if (j = et[ut][0], at = j.trace, at.title.text) {
                    var nt = at.title.text;
                    at._meta && (nt = A.templateString(nt, at._meta));
                    var X = T.tester.append("text").attr("data-notex", 1).text(nt).call(T.font, at.title.font).call(t.convertToTspans, Q), ct = T.bBox(X.node(), !0);
                    j.titleBox = {
                      width: ct.width,
                      height: ct.height
                    }, X.remove();
                  }
              }
              function M(et, Q, j) {
                var at = j.r || Q.rpx1, ut = Q.rInscribed, nt = Q.startangle === Q.stopangle;
                if (nt)
                  return {
                    rCenter: 1 - ut,
                    scale: 0,
                    rotate: 0,
                    textPosAngle: 0
                  };
                var X = Q.ring, ct = X === 1 && Math.abs(Q.startangle - Q.stopangle) === Math.PI * 2, lt = Q.halfangle, pt = Q.midangle, wt = j.trace.insidetextorientation, Et = wt === "horizontal", Ct = wt === "tangential", Gt = wt === "radial", Jt = wt === "auto", Qt = [], Vt;
                if (!Jt) {
                  var zt = function(ce, ae) {
                    if (C(Q, ce)) {
                      var Se = Math.abs(ce - Q.startangle), ze = Math.abs(ce - Q.stopangle), Ne = Se < ze ? Se : ze;
                      ae === "tan" ? Vt = L(et, at, X, Ne, 0) : Vt = m(et, at, X, Ne, Math.PI / 2), Vt.textPosAngle = ce, Qt.push(Vt);
                    }
                  }, Rt;
                  if (Et || Ct) {
                    for (Rt = 4; Rt >= -4; Rt -= 2) zt(Math.PI * Rt, "tan");
                    for (Rt = 4; Rt >= -4; Rt -= 2) zt(Math.PI * (Rt + 1), "tan");
                  }
                  if (Et || Gt) {
                    for (Rt = 4; Rt >= -4; Rt -= 2) zt(Math.PI * (Rt + 1.5), "rad");
                    for (Rt = 4; Rt >= -4; Rt -= 2) zt(Math.PI * (Rt + 0.5), "rad");
                  }
                }
                if (ct || Jt || Et) {
                  var Wt = Math.sqrt(et.width * et.width + et.height * et.height);
                  if (Vt = {
                    scale: ut * at * 2 / Wt,
                    // and the center position and rotation in this case
                    rCenter: 1 - ut,
                    rotate: 0
                  }, Vt.textPosAngle = (Q.startangle + Q.stopangle) / 2, Vt.scale >= 1) return Vt;
                  Qt.push(Vt);
                }
                (Jt || Gt) && (Vt = m(et, at, X, lt, pt), Vt.textPosAngle = (Q.startangle + Q.stopangle) / 2, Qt.push(Vt)), (Jt || Ct) && (Vt = L(et, at, X, lt, pt), Vt.textPosAngle = (Q.startangle + Q.stopangle) / 2, Qt.push(Vt));
                for (var kt = 0, re = 0, ge = 0; ge < Qt.length; ge++) {
                  var _e = Qt[ge].scale;
                  if (re < _e && (re = _e, kt = ge), !Jt && re >= 1)
                    break;
                }
                return Qt[kt];
              }
              function C(et, Q) {
                var j = et.startangle, at = et.stopangle;
                return j > Q && Q > at || j < Q && Q < at;
              }
              function m(et, Q, j, at, ut) {
                Q = Math.max(0, Q - 2 * l);
                var nt = et.width / et.height, X = E(nt, at, Q, j);
                return {
                  scale: X * 2 / et.height,
                  rCenter: d(nt, X / Q),
                  rotate: h(ut)
                };
              }
              function L(et, Q, j, at, ut) {
                Q = Math.max(0, Q - 2 * l);
                var nt = et.height / et.width, X = E(nt, at, Q, j);
                return {
                  scale: X * 2 / et.width,
                  rCenter: d(nt, X / Q),
                  rotate: h(ut + Math.PI / 2)
                };
              }
              function d(et, Q) {
                return Math.cos(Q) - et * Q;
              }
              function h(et) {
                return (180 / Math.PI * et + 720) % 180 - 90;
              }
              function E(et, Q, j, at) {
                var ut = et + 1 / (2 * Math.tan(Q));
                return j * Math.min(1 / (Math.sqrt(ut * ut + 0.5) + ut), at / (Math.sqrt(et * et + at / 2) + et));
              }
              function w(et, Q) {
                return et.v === Q.vTotal && !Q.trace.hole ? 1 : Math.min(1 / (1 + 1 / Math.sin(et.halfangle)), et.ring / 2);
              }
              function z(et, Q) {
                var j = Q.pxmid[0], at = Q.pxmid[1], ut = et.width / 2, nt = et.height / 2;
                return j < 0 && (ut *= -1), at < 0 && (nt *= -1), {
                  scale: 1,
                  rCenter: 1,
                  rotate: 0,
                  x: ut + Math.abs(nt) * (ut > 0 ? 1 : -1) / 2,
                  y: nt / (1 + j * j / (at * at)),
                  outside: !0
                };
              }
              function O(et) {
                var Q = Math.sqrt(et.titleBox.width * et.titleBox.width + et.titleBox.height * et.titleBox.height);
                return {
                  x: et.cx,
                  y: et.cy,
                  scale: et.trace.hole * et.r * 2 / Q,
                  tx: 0,
                  ty: -et.titleBox.height / 2 + et.trace.title.font.size
                };
              }
              function B(et, Q) {
                var j = 1, at = 1, ut, nt = et.trace, X = {
                  x: et.cx,
                  y: et.cy
                }, ct = {
                  tx: 0,
                  ty: 0
                };
                ct.ty += nt.title.font.size, ut = H(nt), nt.title.position.indexOf("top") !== -1 ? (X.y -= (1 + ut) * et.r, ct.ty -= et.titleBox.height) : nt.title.position.indexOf("bottom") !== -1 && (X.y += (1 + ut) * et.r);
                var lt = V(et.r, et.trace.aspectratio), pt = Q.w * (nt.domain.x[1] - nt.domain.x[0]) / 2;
                return nt.title.position.indexOf("left") !== -1 ? (pt = pt + lt, X.x -= (1 + ut) * lt, ct.tx += et.titleBox.width / 2) : nt.title.position.indexOf("center") !== -1 ? pt *= 2 : nt.title.position.indexOf("right") !== -1 && (pt = pt + lt, X.x += (1 + ut) * lt, ct.tx -= et.titleBox.width / 2), j = pt / et.titleBox.width, at = U(et, Q) / et.titleBox.height, {
                  x: X.x,
                  y: X.y,
                  scale: Math.min(j, at),
                  tx: ct.tx,
                  ty: ct.ty
                };
              }
              function V(et, Q) {
                return et / (Q === void 0 ? 1 : Q);
              }
              function U(et, Q) {
                var j = et.trace, at = Q.h * (j.domain.y[1] - j.domain.y[0]);
                return Math.min(et.titleBox.height, at / 2);
              }
              function H(et) {
                var Q = et.pull;
                if (!Q) return 0;
                var j;
                if (A.isArrayOrTypedArray(Q))
                  for (Q = 0, j = 0; j < et.pull.length; j++)
                    et.pull[j] > Q && (Q = et.pull[j]);
                return Q;
              }
              function F(et, Q) {
                var j, at, ut, nt, X, ct, lt, pt, wt, Et, Ct, Gt, Jt;
                function Qt(Wt, kt) {
                  return Wt.pxmid[1] - kt.pxmid[1];
                }
                function Vt(Wt, kt) {
                  return kt.pxmid[1] - Wt.pxmid[1];
                }
                function zt(Wt, kt) {
                  kt || (kt = {});
                  var re = kt.labelExtraY + (at ? kt.yLabelMax : kt.yLabelMin), ge = at ? Wt.yLabelMin : Wt.yLabelMax, _e = at ? Wt.yLabelMax : Wt.yLabelMin, ce = Wt.cyFinal + X(Wt.px0[1], Wt.px1[1]), ae = re - ge, Se, ze, Ne, Ve, Oe, ur;
                  if (ae * lt > 0 && (Wt.labelExtraY = ae), !!A.isArrayOrTypedArray(Q.pull))
                    for (ze = 0; ze < Et.length; ze++)
                      Ne = Et[ze], !(Ne === Wt || (o.castOption(Q.pull, Wt.pts) || 0) >= (o.castOption(Q.pull, Ne.pts) || 0)) && ((Wt.pxmid[1] - Ne.pxmid[1]) * lt > 0 ? (Ve = Ne.cyFinal + X(Ne.px0[1], Ne.px1[1]), ae = Ve - ge - Wt.labelExtraY, ae * lt > 0 && (Wt.labelExtraY += ae)) : (_e + Wt.labelExtraY - ce) * lt > 0 && (Se = 3 * ct * Math.abs(ze - Et.indexOf(Wt)), Oe = Ne.cxFinal + nt(Ne.px0[0], Ne.px1[0]), ur = Oe + Se - (Wt.cxFinal + Wt.pxmid[0]) - Wt.labelExtraX, ur * ct > 0 && (Wt.labelExtraX += ur)));
                }
                for (at = 0; at < 2; at++)
                  for (ut = at ? Qt : Vt, X = at ? Math.max : Math.min, lt = at ? 1 : -1, j = 0; j < 2; j++) {
                    for (nt = j ? Math.max : Math.min, ct = j ? 1 : -1, pt = et[at][j], pt.sort(ut), wt = et[1 - at][j], Et = wt.concat(pt), Gt = [], Ct = 0; Ct < pt.length; Ct++)
                      pt[Ct].yLabelMid !== void 0 && Gt.push(pt[Ct]);
                    for (Jt = !1, Ct = 0; at && Ct < wt.length; Ct++)
                      if (wt[Ct].yLabelMid !== void 0) {
                        Jt = wt[Ct];
                        break;
                      }
                    for (Ct = 0; Ct < Gt.length; Ct++) {
                      var Rt = Ct && Gt[Ct - 1];
                      Jt && !Ct && (Rt = Jt), zt(Gt[Ct], Rt);
                    }
                  }
              }
              function G(et, Q) {
                for (var j = [], at = 0; at < et.length; at++) {
                  var ut = et[at][0], nt = ut.trace, X = nt.domain, ct = Q.w * (X.x[1] - X.x[0]), lt = Q.h * (X.y[1] - X.y[0]);
                  nt.title.text && nt.title.position !== "middle center" && (lt -= U(ut, Q));
                  var pt = ct / 2, wt = lt / 2;
                  nt.type === "funnelarea" && !nt.scalegroup && (wt /= nt.aspectratio), ut.r = Math.min(pt, wt) / (1 + H(nt)), ut.cx = Q.l + Q.w * (nt.domain.x[1] + nt.domain.x[0]) / 2, ut.cy = Q.t + Q.h * (1 - nt.domain.y[0]) - lt / 2, nt.title.text && nt.title.position.indexOf("bottom") !== -1 && (ut.cy -= U(ut, Q)), nt.scalegroup && j.indexOf(nt.scalegroup) === -1 && j.push(nt.scalegroup);
                }
                q(et, j);
              }
              function q(et, Q) {
                for (var j, at, ut, nt = 0; nt < Q.length; nt++) {
                  var X = 1 / 0, ct = Q[nt];
                  for (at = 0; at < et.length; at++)
                    if (j = et[at][0], ut = j.trace, ut.scalegroup === ct) {
                      var lt;
                      if (ut.type === "pie")
                        lt = j.r * j.r;
                      else if (ut.type === "funnelarea") {
                        var pt, wt;
                        ut.aspectratio > 1 ? (pt = j.r, wt = pt / ut.aspectratio) : (wt = j.r, pt = wt * ut.aspectratio), pt *= (1 + ut.baseratio) / 2, lt = pt * wt;
                      }
                      X = Math.min(X, lt / j.vTotal);
                    }
                  for (at = 0; at < et.length; at++)
                    if (j = et[at][0], ut = j.trace, ut.scalegroup === ct) {
                      var Et = X * j.vTotal;
                      ut.type === "funnelarea" && (Et /= (1 + ut.baseratio) / 2, Et /= ut.aspectratio), j.r = Math.sqrt(Et);
                    }
                }
              }
              function rt(et) {
                var Q = et[0], j = Q.r, at = Q.trace, ut = o.getRotationAngle(at.rotation), nt = 2 * Math.PI / Q.vTotal, X = "px0", ct = "px1", lt, pt, wt;
                if (at.direction === "counterclockwise") {
                  for (lt = 0; lt < et.length && et[lt].hidden; lt++)
                    ;
                  if (lt === et.length) return;
                  ut += nt * et[lt].v, nt *= -1, X = "px1", ct = "px0";
                }
                for (wt = st(j, ut), lt = 0; lt < et.length; lt++)
                  pt = et[lt], !pt.hidden && (pt[X] = wt, pt.startangle = ut, ut += nt * pt.v / 2, pt.pxmid = st(j, ut), pt.midangle = ut, ut += nt * pt.v / 2, wt = st(j, ut), pt.stopangle = ut, pt[ct] = wt, pt.largeArc = pt.v > Q.vTotal / 2 ? 1 : 0, pt.halfangle = Math.PI * Math.min(pt.v / Q.vTotal, 0.5), pt.ring = 1 - at.hole, pt.rInscribed = w(pt, Q));
              }
              function st(et, Q) {
                return [et * Math.sin(Q), -et * Math.cos(Q)];
              }
              function vt(et, Q, j) {
                var at = et._fullLayout, ut = j.trace, nt = ut.texttemplate, X = ut.textinfo;
                if (!nt && X && X !== "none") {
                  var ct = X.split("+"), lt = function(kt) {
                    return ct.indexOf(kt) !== -1;
                  }, pt = lt("label"), wt = lt("text"), Et = lt("value"), Ct = lt("percent"), Gt = at.separators, Jt;
                  if (Jt = pt ? [Q.label] : [], wt) {
                    var Qt = o.getFirstFilled(ut.text, Q.pts);
                    g(Qt) && Jt.push(Qt);
                  }
                  Et && Jt.push(o.formatPieValue(Q.v, Gt)), Ct && Jt.push(o.formatPiePercent(Q.v / j.vTotal, Gt)), Q.text = Jt.join("<br>");
                }
                function Vt(kt) {
                  return {
                    label: kt.label,
                    value: kt.v,
                    valueLabel: o.formatPieValue(kt.v, at.separators),
                    percent: kt.v / j.vTotal,
                    percentLabel: o.formatPiePercent(kt.v / j.vTotal, at.separators),
                    color: kt.color,
                    text: kt.text,
                    customdata: A.castOption(ut, kt.i, "customdata")
                  };
                }
                if (nt) {
                  var zt = A.castOption(ut, Q.i, "texttemplate");
                  if (!zt)
                    Q.text = "";
                  else {
                    var Rt = Vt(Q), Wt = o.getFirstFilled(ut.text, Q.pts);
                    (g(Wt) || Wt === "") && (Rt.text = Wt), Q.text = A.texttemplateString(zt, Rt, et._fullLayout._d3locale, Rt, ut._meta || {});
                  }
                }
              }
              function ht(et, Q) {
                var j = et.rotate * Math.PI / 180, at = Math.cos(j), ut = Math.sin(j), nt = (Q.left + Q.right) / 2, X = (Q.top + Q.bottom) / 2;
                et.textX = nt * at - X * ut, et.textY = nt * ut + X * at, et.noCenter = !0;
              }
              Y.exports = {
                plot: x,
                formatSliceLabel: vt,
                transformInsideText: M,
                determineInsideTextFont: _,
                positionTitleOutside: B,
                prerenderTitles: S,
                layoutAreas: G,
                attachFxHandlers: v,
                computeTransform: ht
              };
            }
          ),
          /***/
          140: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(32891), n = e(84102).resizeText;
              Y.exports = function(T) {
                var A = T._fullLayout._pielayer.selectAll(".trace");
                n(T, A, "pie"), A.each(function(p) {
                  var u = p[0], t = u.trace, r = b.select(this);
                  r.style({
                    opacity: t.opacity
                  }), r.selectAll("path.surface").each(function(i) {
                    b.select(this).call(P, i, t, T);
                  });
                });
              };
            }
          ),
          /***/
          32891: (
            /***/
            function(Y, K, e) {
              var b = e(78766), P = e(37252).castOption, n = e(75067);
              Y.exports = function(T, A, p, u) {
                var t = p.marker.line, r = P(t.color, A.pts) || b.defaultLine, i = P(t.width, A.pts) || 0;
                T.call(n, A, p, u).style("stroke-width", i).call(b.stroke, r);
              };
            }
          ),
          /***/
          36961: (
            /***/
            function(Y, K, e) {
              var b = e(36640);
              Y.exports = {
                x: b.x,
                y: b.y,
                xy: {
                  valType: "data_array",
                  editType: "calc"
                },
                indices: {
                  valType: "data_array",
                  editType: "calc"
                },
                xbounds: {
                  valType: "data_array",
                  editType: "calc"
                },
                ybounds: {
                  valType: "data_array",
                  editType: "calc"
                },
                text: b.text,
                marker: {
                  color: {
                    valType: "color",
                    arrayOk: !1,
                    editType: "calc"
                  },
                  opacity: {
                    valType: "number",
                    min: 0,
                    max: 1,
                    dflt: 1,
                    arrayOk: !1,
                    editType: "calc"
                  },
                  blend: {
                    valType: "boolean",
                    dflt: null,
                    editType: "calc"
                  },
                  sizemin: {
                    valType: "number",
                    min: 0.1,
                    max: 2,
                    dflt: 0.5,
                    editType: "calc"
                  },
                  sizemax: {
                    valType: "number",
                    min: 0.1,
                    dflt: 20,
                    editType: "calc"
                  },
                  border: {
                    color: {
                      valType: "color",
                      arrayOk: !1,
                      editType: "calc"
                    },
                    arearatio: {
                      valType: "number",
                      min: 0,
                      max: 1,
                      dflt: 0,
                      editType: "calc"
                    },
                    editType: "calc"
                  },
                  editType: "calc"
                },
                transforms: void 0
              };
            }
          ),
          /***/
          71593: (
            /***/
            function(Y, K, e) {
              var b = e(99098).gl_pointcloud2d, P = e(34809).isArrayOrTypedArray, n = e(55010), s = e(32919).findExtremes, T = e(11539);
              function A(t, r) {
                this.scene = t, this.uid = r, this.type = "pointcloud", this.pickXData = [], this.pickYData = [], this.xData = [], this.yData = [], this.textLabels = [], this.color = "rgb(0, 0, 0)", this.name = "", this.hoverinfo = "all", this.idToIndex = new Int32Array(0), this.bounds = [0, 0, 0, 0], this.pointcloudOptions = {
                  positions: new Float32Array(0),
                  idToIndex: this.idToIndex,
                  sizemin: 0.5,
                  sizemax: 12,
                  color: [0, 0, 0, 1],
                  areaRatio: 1,
                  borderColor: [0, 0, 0, 1]
                }, this.pointcloud = b(t.glplot, this.pointcloudOptions), this.pointcloud._trace = this;
              }
              var p = A.prototype;
              p.handlePick = function(t) {
                var r = this.idToIndex[t.pointId];
                return {
                  trace: this,
                  dataCoord: t.dataCoord,
                  traceCoord: this.pickXYData ? [this.pickXYData[r * 2], this.pickXYData[r * 2 + 1]] : [this.pickXData[r], this.pickYData[r]],
                  textLabel: P(this.textLabels) ? this.textLabels[r] : this.textLabels,
                  color: this.color,
                  name: this.name,
                  pointIndex: r,
                  hoverinfo: this.hoverinfo
                };
              }, p.update = function(t) {
                this.index = t.index, this.textLabels = t.text, this.name = t.name, this.hoverinfo = t.hoverinfo, this.bounds = [1 / 0, 1 / 0, -1 / 0, -1 / 0], this.updateFast(t), this.color = T(t, {});
              }, p.updateFast = function(t) {
                var r = this.xData = this.pickXData = t.x, i = this.yData = this.pickYData = t.y, a = this.pickXYData = t.xy, l = t.xbounds && t.ybounds, o = t.indices, y, g, x, c = this.bounds, v, f, _;
                if (a) {
                  if (x = a, y = a.length >>> 1, l)
                    c[0] = t.xbounds[0], c[2] = t.xbounds[1], c[1] = t.ybounds[0], c[3] = t.ybounds[1];
                  else
                    for (_ = 0; _ < y; _++)
                      v = x[_ * 2], f = x[_ * 2 + 1], v < c[0] && (c[0] = v), v > c[2] && (c[2] = v), f < c[1] && (c[1] = f), f > c[3] && (c[3] = f);
                  if (o)
                    g = o;
                  else
                    for (g = new Int32Array(y), _ = 0; _ < y; _++)
                      g[_] = _;
                } else
                  for (y = r.length, x = new Float32Array(2 * y), g = new Int32Array(y), _ = 0; _ < y; _++)
                    v = r[_], f = i[_], g[_] = _, x[_ * 2] = v, x[_ * 2 + 1] = f, v < c[0] && (c[0] = v), v > c[2] && (c[2] = v), f < c[1] && (c[1] = f), f > c[3] && (c[3] = f);
                this.idToIndex = g, this.pointcloudOptions.idToIndex = g, this.pointcloudOptions.positions = x;
                var S = n(t.marker.color), M = n(t.marker.border.color), C = t.opacity * t.marker.opacity;
                S[3] *= C, this.pointcloudOptions.color = S;
                var m = t.marker.blend;
                if (m === null) {
                  var L = 100;
                  m = r.length < L || i.length < L;
                }
                this.pointcloudOptions.blend = m, M[3] *= C, this.pointcloudOptions.borderColor = M;
                var d = t.marker.sizemin, h = Math.max(t.marker.sizemax, t.marker.sizemin);
                this.pointcloudOptions.sizeMin = d, this.pointcloudOptions.sizeMax = h, this.pointcloudOptions.areaRatio = t.marker.border.arearatio, this.pointcloud.update(this.pointcloudOptions);
                var E = this.scene.xaxis, w = this.scene.yaxis, z = h / 2 || 0.5;
                t._extremes[E._id] = s(E, [c[0], c[2]], {
                  ppad: z
                }), t._extremes[w._id] = s(w, [c[1], c[3]], {
                  ppad: z
                });
              }, p.dispose = function() {
                this.pointcloud.dispose();
              };
              function u(t, r) {
                var i = new A(t, r.uid);
                return i.update(r), i;
              }
              Y.exports = u;
            }
          ),
          /***/
          75526: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(36961);
              Y.exports = function(s, T, A) {
                function p(u, t) {
                  return b.coerce(s, T, P, u, t);
                }
                p("x"), p("y"), p("xbounds"), p("ybounds"), s.xy && s.xy instanceof Float32Array && (T.xy = s.xy), s.indices && s.indices instanceof Int32Array && (T.indices = s.indices), p("text"), p("marker.color", A), p("marker.opacity"), p("marker.blend"), p("marker.sizemin"), p("marker.sizemax"), p("marker.border.color", A), p("marker.border.arearatio"), T._length = null;
              };
            }
          ),
          /***/
          15186: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(36961),
                supplyDefaults: e(75526),
                // reuse the Scatter3D 'dummy' calc step so that legends know what to do
                calc: e(37593),
                plot: e(71593),
                moduleType: "trace",
                name: "pointcloud",
                basePlotModule: e(24585),
                categories: ["gl", "gl2d", "showLegend"],
                meta: {}
              };
            }
          ),
          /***/
          33795: (
            /***/
            function(Y, K, e) {
              var b = e(80337), P = e(9829), n = e(10229), s = e(70192), T = e(13792).u, A = e(3208).rb, p = e(87163), u = e(78032).templatedArray, t = e(80712).descriptionOnlyNumbers, r = e(93049).extendFlat, i = e(13582).overrideAll, a = Y.exports = i({
                hoverinfo: r({}, P.hoverinfo, {
                  flags: [],
                  arrayOk: !1
                }),
                hoverlabel: s.hoverlabel,
                domain: T({
                  name: "sankey",
                  trace: !0
                }),
                orientation: {
                  valType: "enumerated",
                  values: ["v", "h"],
                  dflt: "h"
                },
                valueformat: {
                  valType: "string",
                  dflt: ".3s",
                  description: t("value")
                },
                valuesuffix: {
                  valType: "string",
                  dflt: ""
                },
                arrangement: {
                  valType: "enumerated",
                  values: ["snap", "perpendicular", "freeform", "fixed"],
                  dflt: "snap"
                },
                textfont: b({
                  autoShadowDflt: !0
                }),
                // Remove top-level customdata
                customdata: void 0,
                node: {
                  label: {
                    valType: "data_array",
                    dflt: []
                  },
                  groups: {
                    valType: "info_array",
                    impliedEdits: {
                      x: [],
                      y: []
                    },
                    dimensions: 2,
                    freeLength: !0,
                    dflt: [],
                    items: {
                      valType: "number",
                      editType: "calc"
                    }
                  },
                  x: {
                    valType: "data_array",
                    dflt: []
                  },
                  y: {
                    valType: "data_array",
                    dflt: []
                  },
                  color: {
                    valType: "color",
                    arrayOk: !0
                  },
                  customdata: {
                    valType: "data_array",
                    editType: "calc"
                  },
                  line: {
                    color: {
                      valType: "color",
                      dflt: n.defaultLine,
                      arrayOk: !0
                    },
                    width: {
                      valType: "number",
                      min: 0,
                      dflt: 0.5,
                      arrayOk: !0
                    }
                  },
                  pad: {
                    valType: "number",
                    arrayOk: !1,
                    min: 0,
                    dflt: 20
                  },
                  thickness: {
                    valType: "number",
                    arrayOk: !1,
                    min: 1,
                    dflt: 20
                  },
                  hoverinfo: {
                    valType: "enumerated",
                    values: ["all", "none", "skip"],
                    dflt: "all"
                  },
                  hoverlabel: s.hoverlabel,
                  // needs editType override,
                  hovertemplate: A({}, {
                    keys: ["value", "label"]
                  }),
                  align: {
                    valType: "enumerated",
                    values: ["justify", "left", "right", "center"],
                    dflt: "justify"
                  }
                },
                link: {
                  arrowlen: {
                    valType: "number",
                    min: 0,
                    dflt: 0
                  },
                  label: {
                    valType: "data_array",
                    dflt: []
                  },
                  color: {
                    valType: "color",
                    arrayOk: !0
                  },
                  hovercolor: {
                    valType: "color",
                    arrayOk: !0
                  },
                  customdata: {
                    valType: "data_array",
                    editType: "calc"
                  },
                  line: {
                    color: {
                      valType: "color",
                      dflt: n.defaultLine,
                      arrayOk: !0
                    },
                    width: {
                      valType: "number",
                      min: 0,
                      dflt: 0,
                      arrayOk: !0
                    }
                  },
                  source: {
                    valType: "data_array",
                    dflt: []
                  },
                  target: {
                    valType: "data_array",
                    dflt: []
                  },
                  value: {
                    valType: "data_array",
                    dflt: []
                  },
                  hoverinfo: {
                    valType: "enumerated",
                    values: ["all", "none", "skip"],
                    dflt: "all"
                  },
                  hoverlabel: s.hoverlabel,
                  // needs editType override,
                  hovertemplate: A({}, {
                    keys: ["value", "label"]
                  }),
                  colorscales: u("concentrationscales", {
                    editType: "calc",
                    label: {
                      valType: "string",
                      editType: "calc",
                      dflt: ""
                    },
                    cmax: {
                      valType: "number",
                      editType: "calc",
                      dflt: 1
                    },
                    cmin: {
                      valType: "number",
                      editType: "calc",
                      dflt: 0
                    },
                    colorscale: r(p().colorscale, {
                      dflt: [[0, "white"], [1, "black"]]
                    })
                  })
                }
              }, "calc", "nested");
              a.transforms = void 0;
            }
          ),
          /***/
          42229: (
            /***/
            function(Y, K, e) {
              var b = e(13582).overrideAll, P = e(4173).eV, n = e(16506), s = e(6811), T = e(27983), A = e(14751), p = e(44844).prepSelect, u = e(34809), t = e(33626), r = "sankey";
              K.name = r, K.baseLayoutAttrOverrides = b({
                hoverlabel: s.hoverlabel
              }, "plot", "nested"), K.plot = function(a) {
                var l = P(a.calcdata, r)[0];
                n(a, l), K.updateFx(a);
              }, K.clean = function(a, l, o, y) {
                var g = y._has && y._has(r), x = l._has && l._has(r);
                g && !x && (y._paperdiv.selectAll(".sankey").remove(), y._paperdiv.selectAll(".bgsankey").remove());
              }, K.updateFx = function(a) {
                for (var l = 0; l < a._fullData.length; l++)
                  i(a, l);
              };
              function i(a, l) {
                var o = a._fullData[l], y = a._fullLayout, g = y.dragmode, x = y.dragmode === "pan" ? "move" : "crosshair", c = o._bgRect;
                if (c && !(g === "pan" || g === "zoom")) {
                  T(c, x);
                  var v = {
                    _id: "x",
                    c2p: u.identity,
                    _offset: o._sankey.translateX,
                    _length: o._sankey.width
                  }, f = {
                    _id: "y",
                    c2p: u.identity,
                    _offset: o._sankey.translateY,
                    _length: o._sankey.height
                  }, _ = {
                    gd: a,
                    element: c.node(),
                    plotinfo: {
                      id: l,
                      xaxis: v,
                      yaxis: f,
                      fillRangeItems: u.noop
                    },
                    subplot: l,
                    // create mock x/y axes for hover routine
                    xaxes: [v],
                    yaxes: [f],
                    doneFnCompleted: function(S) {
                      var M = a._fullData[l], C, m = M.node.groups.slice(), L = [];
                      function d(z) {
                        for (var O = M._sankey.graph.nodes, B = 0; B < O.length; B++)
                          if (O[B].pointNumber === z) return O[B];
                      }
                      for (var h = 0; h < S.length; h++) {
                        var E = d(S[h].pointNumber);
                        if (E)
                          if (E.group) {
                            for (var w = 0; w < E.childrenNodes.length; w++)
                              L.push(E.childrenNodes[w].pointNumber);
                            m[E.pointNumber - M.node._count] = !1;
                          } else
                            L.push(E.pointNumber);
                      }
                      C = m.filter(Boolean).concat([L]), t.call("_guiRestyle", a, {
                        "node.groups": [C]
                      }, l);
                    }
                  };
                  _.prepFn = function(S, M, C) {
                    p(S, M, C, _, g);
                  }, A.init(_);
                }
              }
            }
          ),
          /***/
          22915: (
            /***/
            function(Y, K, e) {
              var b = e(26381), P = e(34809), n = e(71293).wrap, s = P.isArrayOrTypedArray, T = P.isIndex, A = e(88856);
              function p(t) {
                var r = t.node, i = t.link, a = [], l = s(i.color), o = s(i.hovercolor), y = s(i.customdata), g = {}, x = {}, c = i.colorscales.length, v;
                for (v = 0; v < c; v++) {
                  var f = i.colorscales[v], _ = A.extractScale(f, {
                    cLetter: "c"
                  }), S = A.makeColorScaleFunc(_);
                  x[f.label] = S;
                }
                var M = 0;
                for (v = 0; v < i.value.length; v++)
                  i.source[v] > M && (M = i.source[v]), i.target[v] > M && (M = i.target[v]);
                var C = M + 1;
                t.node._count = C;
                var m, L = t.node.groups, d = {};
                for (v = 0; v < L.length; v++) {
                  var h = L[v];
                  for (m = 0; m < h.length; m++) {
                    var E = h[m], w = C + v;
                    d.hasOwnProperty(E) ? P.warn("Node " + E + " is already part of a group.") : d[E] = w;
                  }
                }
                var z = {
                  source: [],
                  target: []
                };
                for (v = 0; v < i.value.length; v++) {
                  var O = i.value[v], B = i.source[v], V = i.target[v];
                  if (O > 0 && T(B, C) && T(V, C) && !(d.hasOwnProperty(B) && d.hasOwnProperty(V) && d[B] === d[V])) {
                    d.hasOwnProperty(V) && (V = d[V]), d.hasOwnProperty(B) && (B = d[B]), B = +B, V = +V, g[B] = g[V] = !0;
                    var U = "";
                    i.label && i.label[v] && (U = i.label[v]);
                    var H = null;
                    U && x.hasOwnProperty(U) && (H = x[U]), a.push({
                      pointNumber: v,
                      label: U,
                      color: l ? i.color[v] : i.color,
                      hovercolor: o ? i.hovercolor[v] : i.hovercolor,
                      customdata: y ? i.customdata[v] : i.customdata,
                      concentrationscale: H,
                      source: B,
                      target: V,
                      value: +O
                    }), z.source.push(B), z.target.push(V);
                  }
                }
                var F = C + L.length, G = s(r.color), q = s(r.customdata), rt = [];
                for (v = 0; v < F; v++)
                  if (g[v]) {
                    var st = r.label[v];
                    rt.push({
                      group: v > C - 1,
                      childrenNodes: [],
                      pointNumber: v,
                      label: st,
                      color: G ? r.color[v] : r.color,
                      customdata: q ? r.customdata[v] : r.customdata
                    });
                  }
                var vt = !1;
                return u(F, z.source, z.target) && (vt = !0), {
                  circular: vt,
                  links: a,
                  nodes: rt,
                  // Data structure for groups
                  groups: L,
                  groupLookup: d
                };
              }
              function u(t, r, i) {
                for (var a = P.init2dArray(t, 0), l = 0; l < Math.min(r.length, i.length); l++)
                  if (P.isIndex(r[l], t) && P.isIndex(i[l], t)) {
                    if (r[l] === i[l])
                      return !0;
                    a[r[l]].push(i[l]);
                  }
                var o = b(a);
                return o.components.some(function(y) {
                  return y.length > 1;
                });
              }
              Y.exports = function(r, i) {
                var a = p(i);
                return n({
                  circular: a.circular,
                  _nodes: a.nodes,
                  _links: a.links,
                  // Data structure for grouping
                  _groups: a.groups,
                  _groupLookup: a.groupLookup
                });
              };
            }
          ),
          /***/
          21541: (
            /***/
            function(Y) {
              Y.exports = {
                nodeTextOffsetHorizontal: 4,
                nodeTextOffsetVertical: 3,
                nodePadAcross: 10,
                sankeyIterations: 50,
                forceIterations: 5,
                forceTicksPerFrame: 10,
                duration: 500,
                ease: "linear",
                cn: {
                  sankey: "sankey",
                  sankeyLinks: "sankey-links",
                  sankeyLink: "sankey-link",
                  sankeyNodeSet: "sankey-node-set",
                  sankeyNode: "sankey-node",
                  nodeRect: "node-rect",
                  nodeLabel: "node-label"
                }
              };
            }
          ),
          /***/
          67940: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(33795), n = e(78766), s = e(65657), T = e(13792).N, A = e(26430), p = e(78032), u = e(59008);
              Y.exports = function(i, a, l, o) {
                function y(w, z) {
                  return b.coerce(i, a, P, w, z);
                }
                var g = b.extendDeep(o.hoverlabel, i.hoverlabel), x = i.node, c = p.newContainer(a, "node");
                function v(w, z) {
                  return b.coerce(x, c, P.node, w, z);
                }
                v("label"), v("groups"), v("x"), v("y"), v("pad"), v("thickness"), v("line.color"), v("line.width"), v("hoverinfo", i.hoverinfo), A(x, c, v, g), v("hovertemplate"), v("align");
                var f = o.colorway, _ = function(w) {
                  return f[w % f.length];
                };
                v("color", c.label.map(function(w, z) {
                  return n.addOpacity(_(z), 0.8);
                })), v("customdata");
                var S = i.link || {}, M = p.newContainer(a, "link");
                function C(w, z) {
                  return b.coerce(S, M, P.link, w, z);
                }
                C("label"), C("arrowlen"), C("source"), C("target"), C("value"), C("line.color"), C("line.width"), C("hoverinfo", i.hoverinfo), A(S, M, C, g), C("hovertemplate");
                var m = s(o.paper_bgcolor).getLuminance() < 0.333, L = m ? "rgba(255, 255, 255, 0.6)" : "rgba(0, 0, 0, 0.2)", d = C("color", L);
                function h(w) {
                  var z = s(w);
                  if (!z.isValid())
                    return w;
                  var O = z.getAlpha();
                  return O <= 0.8 ? z.setAlpha(O + 0.2) : z = m ? z.brighten() : z.darken(), z.toRgbString();
                }
                C("hovercolor", Array.isArray(d) ? d.map(h) : h(d)), C("customdata"), u(S, M, {
                  name: "colorscales",
                  handleItemDefaults: t
                }), T(a, o, y), y("orientation"), y("valueformat"), y("valuesuffix");
                var E;
                c.x.length && c.y.length && (E = "freeform"), y("arrangement", E), b.coerceFont(y, "textfont", o.font, {
                  autoShadowDflt: !0
                }), a._length = null;
              };
              function t(r, i) {
                function a(l, o) {
                  return b.coerce(r, i, P.link.colorscales, l, o);
                }
                a("label"), a("cmin"), a("cmax"), a("colorscale");
              }
            }
          ),
          /***/
          71760: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(33795),
                supplyDefaults: e(67940),
                calc: e(22915),
                plot: e(16506),
                moduleType: "trace",
                name: "sankey",
                basePlotModule: e(42229),
                selectPoints: e(74670),
                categories: ["noOpacity"],
                meta: {}
              };
            }
          ),
          /***/
          16506: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(34809), n = P.numberFormat, s = e(90958), T = e(32141), A = e(78766), p = e(21541).cn, u = P._;
              function t(f) {
                return f !== "";
              }
              function r(f, _) {
                return f.filter(function(S) {
                  return S.key === _.traceId;
                });
              }
              function i(f, _) {
                b.select(f).select("path").style("fill-opacity", _), b.select(f).select("rect").style("fill-opacity", _);
              }
              function a(f) {
                b.select(f).select("text.name").style("fill", "black");
              }
              function l(f) {
                return function(_) {
                  return f.node.sourceLinks.indexOf(_.link) !== -1 || f.node.targetLinks.indexOf(_.link) !== -1;
                };
              }
              function o(f) {
                return function(_) {
                  return _.node.sourceLinks.indexOf(f.link) !== -1 || _.node.targetLinks.indexOf(f.link) !== -1;
                };
              }
              function y(f, _, S) {
                _ && S && r(S, _).selectAll("." + p.sankeyLink).filter(l(_)).call(x.bind(0, _, S, !1));
              }
              function g(f, _, S) {
                _ && S && r(S, _).selectAll("." + p.sankeyLink).filter(l(_)).call(c.bind(0, _, S, !1));
              }
              function x(f, _, S, M) {
                M.style("fill", function(C) {
                  if (!C.link.concentrationscale)
                    return C.tinyColorHoverHue;
                }).style("fill-opacity", function(C) {
                  if (!C.link.concentrationscale)
                    return C.tinyColorHoverAlpha;
                }), M.each(function(C) {
                  var m = C.link.label;
                  m !== "" && r(_, f).selectAll("." + p.sankeyLink).filter(function(L) {
                    return L.link.label === m;
                  }).style("fill", function(L) {
                    if (!L.link.concentrationscale)
                      return L.tinyColorHoverHue;
                  }).style("fill-opacity", function(L) {
                    if (!L.link.concentrationscale)
                      return L.tinyColorHoverAlpha;
                  });
                }), S && r(_, f).selectAll("." + p.sankeyNode).filter(o(f)).call(y);
              }
              function c(f, _, S, M) {
                M.style("fill", function(C) {
                  return C.tinyColorHue;
                }).style("fill-opacity", function(C) {
                  return C.tinyColorAlpha;
                }), M.each(function(C) {
                  var m = C.link.label;
                  m !== "" && r(_, f).selectAll("." + p.sankeyLink).filter(function(L) {
                    return L.link.label === m;
                  }).style("fill", function(L) {
                    return L.tinyColorHue;
                  }).style("fill-opacity", function(L) {
                    return L.tinyColorAlpha;
                  });
                }), S && r(_, f).selectAll(p.sankeyNode).filter(o(f)).call(g);
              }
              function v(f, _) {
                var S = f.hoverlabel || {}, M = P.nestedProperty(S, _).get();
                return Array.isArray(M) ? !1 : M;
              }
              Y.exports = function(_, S) {
                for (var M = _._fullLayout, C = M._paper, m = M._size, L = 0; L < _._fullData.length; L++)
                  if (_._fullData[L].visible && _._fullData[L].type === p.sankey && !_._fullData[L]._viewInitial) {
                    var d = _._fullData[L].node;
                    _._fullData[L]._viewInitial = {
                      node: {
                        groups: d.groups.slice(),
                        x: d.x.slice(),
                        y: d.y.slice()
                      }
                    };
                  }
                var h = function(st, vt) {
                  var ht = vt.link;
                  ht.originalEvent = b.event, _._hoverdata = [ht], T.click(_, {
                    target: !0
                  });
                }, E = function(st, vt, ht) {
                  _._fullLayout.hovermode !== !1 && (b.select(st).call(x.bind(0, vt, ht, !0)), vt.link.trace.link.hoverinfo !== "skip" && (vt.link.fullData = vt.link.trace, _.emit("plotly_hover", {
                    event: b.event,
                    points: [vt.link]
                  })));
                }, w = u(_, "source:") + " ", z = u(_, "target:") + " ", O = u(_, "concentration:") + " ", B = u(_, "incoming flow count:") + " ", V = u(_, "outgoing flow count:") + " ", U = function(st, vt) {
                  if (_._fullLayout.hovermode === !1) return;
                  var ht = vt.link.trace.link;
                  if (ht.hoverinfo === "none" || ht.hoverinfo === "skip") return;
                  var et = [];
                  function Q(lt) {
                    var pt, wt;
                    lt.circular ? (pt = (lt.circularPathData.leftInnerExtent + lt.circularPathData.rightInnerExtent) / 2, wt = lt.circularPathData.verticalFullExtent) : (pt = (lt.source.x1 + lt.target.x0) / 2, wt = (lt.y0 + lt.y1) / 2);
                    var Et = [pt, wt];
                    return lt.trace.orientation === "v" && Et.reverse(), Et[0] += vt.parent.translateX, Et[1] += vt.parent.translateY, Et;
                  }
                  for (var j = 0, at = 0; at < vt.flow.links.length; at++) {
                    var ut = vt.flow.links[at];
                    if (!(_._fullLayout.hovermode === "closest" && vt.link.pointNumber !== ut.pointNumber)) {
                      vt.link.pointNumber === ut.pointNumber && (j = at), ut.fullData = ut.trace, ht = vt.link.trace.link;
                      var nt = Q(ut), X = {
                        valueLabel: n(vt.valueFormat)(ut.value) + vt.valueSuffix
                      };
                      et.push({
                        x: nt[0],
                        y: nt[1],
                        name: X.valueLabel,
                        text: [ut.label || "", w + ut.source.label, z + ut.target.label, ut.concentrationscale ? O + n("%0.2f")(ut.flow.labelConcentration) : ""].filter(t).join("<br>"),
                        color: v(ht, "bgcolor") || A.addOpacity(ut.color, 1),
                        borderColor: v(ht, "bordercolor"),
                        fontFamily: v(ht, "font.family"),
                        fontSize: v(ht, "font.size"),
                        fontColor: v(ht, "font.color"),
                        fontWeight: v(ht, "font.weight"),
                        fontStyle: v(ht, "font.style"),
                        fontVariant: v(ht, "font.variant"),
                        fontTextcase: v(ht, "font.textcase"),
                        fontLineposition: v(ht, "font.lineposition"),
                        fontShadow: v(ht, "font.shadow"),
                        nameLength: v(ht, "namelength"),
                        textAlign: v(ht, "align"),
                        idealAlign: b.event.x < nt[0] ? "right" : "left",
                        hovertemplate: ht.hovertemplate,
                        hovertemplateLabels: X,
                        eventData: [ut]
                      });
                    }
                  }
                  var ct = T.loneHover(et, {
                    container: M._hoverlayer.node(),
                    outerContainer: M._paper.node(),
                    gd: _,
                    anchorIndex: j
                  });
                  ct.each(function() {
                    var lt = this;
                    vt.link.concentrationscale || i(lt, 0.65), a(lt);
                  });
                }, H = function(st, vt, ht) {
                  _._fullLayout.hovermode !== !1 && (b.select(st).call(c.bind(0, vt, ht, !0)), vt.link.trace.link.hoverinfo !== "skip" && (vt.link.fullData = vt.link.trace, _.emit("plotly_unhover", {
                    event: b.event,
                    points: [vt.link]
                  })), T.loneUnhover(M._hoverlayer.node()));
                }, F = function(st, vt, ht) {
                  var et = vt.node;
                  et.originalEvent = b.event, _._hoverdata = [et], b.select(st).call(g, vt, ht), T.click(_, {
                    target: !0
                  });
                }, G = function(st, vt, ht) {
                  _._fullLayout.hovermode !== !1 && (b.select(st).call(y, vt, ht), vt.node.trace.node.hoverinfo !== "skip" && (vt.node.fullData = vt.node.trace, _.emit("plotly_hover", {
                    event: b.event,
                    points: [vt.node]
                  })));
                }, q = function(st, vt) {
                  if (_._fullLayout.hovermode !== !1) {
                    var ht = vt.node.trace.node;
                    if (!(ht.hoverinfo === "none" || ht.hoverinfo === "skip")) {
                      var et = b.select(st).select("." + p.nodeRect), Q = _._fullLayout._paperdiv.node().getBoundingClientRect(), j = et.node().getBoundingClientRect(), at = j.left - 2 - Q.left, ut = j.right + 2 - Q.left, nt = j.top + j.height / 4 - Q.top, X = {
                        valueLabel: n(vt.valueFormat)(vt.node.value) + vt.valueSuffix
                      };
                      vt.node.fullData = vt.node.trace, _._fullLayout._calcInverseTransform(_);
                      var ct = _._fullLayout._invScaleX, lt = _._fullLayout._invScaleY, pt = T.loneHover({
                        x0: ct * at,
                        x1: ct * ut,
                        y: lt * nt,
                        name: n(vt.valueFormat)(vt.node.value) + vt.valueSuffix,
                        text: [vt.node.label, B + vt.node.targetLinks.length, V + vt.node.sourceLinks.length].filter(t).join("<br>"),
                        color: v(ht, "bgcolor") || vt.tinyColorHue,
                        borderColor: v(ht, "bordercolor"),
                        fontFamily: v(ht, "font.family"),
                        fontSize: v(ht, "font.size"),
                        fontColor: v(ht, "font.color"),
                        fontWeight: v(ht, "font.weight"),
                        fontStyle: v(ht, "font.style"),
                        fontVariant: v(ht, "font.variant"),
                        fontTextcase: v(ht, "font.textcase"),
                        fontLineposition: v(ht, "font.lineposition"),
                        fontShadow: v(ht, "font.shadow"),
                        nameLength: v(ht, "namelength"),
                        textAlign: v(ht, "align"),
                        idealAlign: "left",
                        hovertemplate: ht.hovertemplate,
                        hovertemplateLabels: X,
                        eventData: [vt.node]
                      }, {
                        container: M._hoverlayer.node(),
                        outerContainer: M._paper.node(),
                        gd: _
                      });
                      i(pt, 0.85), a(pt);
                    }
                  }
                }, rt = function(st, vt, ht) {
                  _._fullLayout.hovermode !== !1 && (b.select(st).call(g, vt, ht), vt.node.trace.node.hoverinfo !== "skip" && (vt.node.fullData = vt.node.trace, _.emit("plotly_unhover", {
                    event: b.event,
                    points: [vt.node]
                  })), T.loneUnhover(M._hoverlayer.node()));
                };
                s(_, C, S, {
                  width: m.w,
                  height: m.h,
                  margin: {
                    t: m.t,
                    r: m.r,
                    b: m.b,
                    l: m.l
                  }
                }, {
                  linkEvents: {
                    hover: E,
                    follow: U,
                    unhover: H,
                    select: h
                  },
                  nodeEvents: {
                    hover: G,
                    follow: q,
                    unhover: rt,
                    select: F
                  }
                });
              };
            }
          ),
          /***/
          90958: (
            /***/
            function(Y, K, e) {
              var b = e(32702), P = e(88640).Dj, n = e(45568), s = e(62369), T = e(68735), A = e(21541), p = e(65657), u = e(78766), t = e(62203), r = e(34809), i = r.strTranslate, a = r.strRotate, l = e(71293), o = l.keyFun, y = l.repeat, g = l.unwrap, x = e(30635), c = e(33626), v = e(4530), f = v.CAP_SHIFT, _ = v.LINE_SPACING, S = 3;
              function M(Q, j, at) {
                var ut = g(j), nt = ut.trace, X = nt.domain, ct = nt.orientation === "h", lt = nt.node.pad, pt = nt.node.thickness, wt = {
                  justify: s.sankeyJustify,
                  left: s.sankeyLeft,
                  right: s.sankeyRight,
                  center: s.sankeyCenter
                }[nt.node.align], Et = Q.width * (X.x[1] - X.x[0]), Ct = Q.height * (X.y[1] - X.y[0]), Gt = ut._nodes, Jt = ut._links, Qt = ut.circular, Vt;
                Qt ? Vt = T.sankeyCircular().circularLinkGap(0) : Vt = s.sankey(), Vt.iterations(A.sankeyIterations).size(ct ? [Et, Ct] : [Ct, Et]).nodeWidth(pt).nodePadding(lt).nodeId(function(ur) {
                  return ur.pointNumber;
                }).nodeAlign(wt).nodes(Gt).links(Jt);
                var zt = Vt();
                Vt.nodePadding() < lt && r.warn("node.pad was reduced to ", Vt.nodePadding(), " to fit within the figure.");
                var Rt, Wt, kt;
                for (var re in ut._groupLookup) {
                  var ge = parseInt(ut._groupLookup[re]), _e;
                  for (Rt = 0; Rt < zt.nodes.length; Rt++)
                    if (zt.nodes[Rt].pointNumber === ge) {
                      _e = zt.nodes[Rt];
                      break;
                    }
                  if (_e) {
                    var ce = {
                      pointNumber: parseInt(re),
                      x0: _e.x0,
                      x1: _e.x1,
                      y0: _e.y0,
                      y1: _e.y1,
                      partOfGroup: !0,
                      sourceLinks: [],
                      targetLinks: []
                    };
                    zt.nodes.unshift(ce), _e.childrenNodes.unshift(ce);
                  }
                }
                function ae() {
                  for (Rt = 0; Rt < zt.nodes.length; Rt++) {
                    var ur = zt.nodes[Rt], ie = {}, $t, jt;
                    for (Wt = 0; Wt < ur.targetLinks.length; Wt++)
                      jt = ur.targetLinks[Wt], $t = jt.source.pointNumber + ":" + jt.target.pointNumber, ie.hasOwnProperty($t) || (ie[$t] = []), ie[$t].push(jt);
                    var ee = Object.keys(ie);
                    for (Wt = 0; Wt < ee.length; Wt++) {
                      $t = ee[Wt];
                      var Bt = ie[$t], Xt = 0, Zt = {};
                      for (kt = 0; kt < Bt.length; kt++)
                        jt = Bt[kt], Zt[jt.label] || (Zt[jt.label] = 0), Zt[jt.label] += jt.value, Xt += jt.value;
                      for (kt = 0; kt < Bt.length; kt++)
                        jt = Bt[kt], jt.flow = {
                          value: Xt,
                          labelConcentration: Zt[jt.label] / Xt,
                          concentration: jt.value / Xt,
                          links: Bt
                        }, jt.concentrationscale && (jt.color = p(jt.concentrationscale(jt.flow.labelConcentration)));
                    }
                    var ye = 0;
                    for (Wt = 0; Wt < ur.sourceLinks.length; Wt++)
                      ye += ur.sourceLinks[Wt].value;
                    for (Wt = 0; Wt < ur.sourceLinks.length; Wt++)
                      jt = ur.sourceLinks[Wt], jt.concentrationOut = jt.value / ye;
                    var Mt = 0;
                    for (Wt = 0; Wt < ur.targetLinks.length; Wt++)
                      Mt += ur.targetLinks[Wt].value;
                    for (Wt = 0; Wt < ur.targetLinks.length; Wt++)
                      jt = ur.targetLinks[Wt], jt.concenrationIn = jt.value / Mt;
                  }
                }
                ae();
                function Se(ur) {
                  ur.forEach(function(ie) {
                    var $t, jt, ee = 0, Bt = ie.length, Xt;
                    for (ie.sort(function(Zt, ye) {
                      return Zt.y0 - ye.y0;
                    }), Xt = 0; Xt < Bt; ++Xt)
                      $t = ie[Xt], $t.y0 >= ee || (jt = ee - $t.y0, jt > 1e-6 && ($t.y0 += jt, $t.y1 += jt)), ee = $t.y1 + lt;
                  });
                }
                function ze(ur) {
                  var ie = ur.map(function(ye, Mt) {
                    return {
                      x0: ye.x0,
                      index: Mt
                    };
                  }).sort(function(ye, Mt) {
                    return ye.x0 - Mt.x0;
                  }), $t = [], jt = -1, ee, Bt = -1 / 0, Xt;
                  for (Rt = 0; Rt < ie.length; Rt++) {
                    var Zt = ur[ie[Rt].index];
                    Zt.x0 > Bt + pt && (jt += 1, ee = Zt.x0), Bt = Zt.x0, $t[jt] || ($t[jt] = []), $t[jt].push(Zt), Xt = ee - Zt.x0, Zt.x0 += Xt, Zt.x1 += Xt;
                  }
                  return $t;
                }
                if (nt.node.x.length && nt.node.y.length) {
                  for (Rt = 0; Rt < Math.min(nt.node.x.length, nt.node.y.length, zt.nodes.length); Rt++)
                    if (nt.node.x[Rt] && nt.node.y[Rt]) {
                      var Ne = [nt.node.x[Rt] * Et, nt.node.y[Rt] * Ct];
                      zt.nodes[Rt].x0 = Ne[0] - pt / 2, zt.nodes[Rt].x1 = Ne[0] + pt / 2;
                      var Ve = zt.nodes[Rt].y1 - zt.nodes[Rt].y0;
                      zt.nodes[Rt].y0 = Ne[1] - Ve / 2, zt.nodes[Rt].y1 = Ne[1] + Ve / 2;
                    }
                  if (nt.arrangement === "snap") {
                    Gt = zt.nodes;
                    var Oe = ze(Gt);
                    Se(Oe);
                  }
                  Vt.update(zt);
                }
                return {
                  circular: Qt,
                  key: at,
                  trace: nt,
                  guid: r.randstr(),
                  horizontal: ct,
                  width: Et,
                  height: Ct,
                  nodePad: nt.node.pad,
                  nodeLineColor: nt.node.line.color,
                  nodeLineWidth: nt.node.line.width,
                  linkLineColor: nt.link.line.color,
                  linkLineWidth: nt.link.line.width,
                  linkArrowLength: nt.link.arrowlen,
                  valueFormat: nt.valueformat,
                  valueSuffix: nt.valuesuffix,
                  textFont: nt.textfont,
                  translateX: X.x[0] * Q.width + Q.margin.l,
                  translateY: Q.height - X.y[1] * Q.height + Q.margin.t,
                  dragParallel: ct ? Ct : Et,
                  dragPerpendicular: ct ? Et : Ct,
                  arrangement: nt.arrangement,
                  sankey: Vt,
                  graph: zt,
                  forceLayouts: {},
                  interactionState: {
                    dragInProgress: !1,
                    hovered: !1
                  }
                };
              }
              function C(Q, j, at) {
                var ut = p(j.color), nt = p(j.hovercolor), X = j.source.label + "|" + j.target.label, ct = X + "__" + at;
                return j.trace = Q.trace, j.curveNumber = Q.trace.index, {
                  circular: Q.circular,
                  key: ct,
                  traceId: Q.key,
                  pointNumber: j.pointNumber,
                  link: j,
                  tinyColorHue: u.tinyRGB(ut),
                  tinyColorAlpha: ut.getAlpha(),
                  tinyColorHoverHue: u.tinyRGB(nt),
                  tinyColorHoverAlpha: nt.getAlpha(),
                  linkPath: L,
                  linkLineColor: Q.linkLineColor,
                  linkLineWidth: Q.linkLineWidth,
                  linkArrowLength: Q.linkArrowLength,
                  valueFormat: Q.valueFormat,
                  valueSuffix: Q.valueSuffix,
                  sankey: Q.sankey,
                  parent: Q,
                  interactionState: Q.interactionState,
                  flow: j.flow
                };
              }
              function m(Q, j) {
                var at = "", ut = Q.width / 2, nt = Q.circularPathData;
                return Q.circularLinkType === "top" ? at = // start at the left of the target node
                "M " + (nt.targetX - j) + " " + (nt.targetY + ut) + " L" + (nt.rightInnerExtent - j) + " " + (nt.targetY + ut) + "A" + (nt.rightLargeArcRadius + ut) + " " + (nt.rightSmallArcRadius + ut) + " 0 0 1 " + (nt.rightFullExtent - ut - j) + " " + (nt.targetY - nt.rightSmallArcRadius) + "L" + (nt.rightFullExtent - ut - j) + " " + nt.verticalRightInnerExtent + "A" + (nt.rightLargeArcRadius + ut) + " " + (nt.rightLargeArcRadius + ut) + " 0 0 1 " + (nt.rightInnerExtent - j) + " " + (nt.verticalFullExtent - ut) + "L" + nt.leftInnerExtent + " " + (nt.verticalFullExtent - ut) + "A" + (nt.leftLargeArcRadius + ut) + " " + (nt.leftLargeArcRadius + ut) + " 0 0 1 " + (nt.leftFullExtent + ut) + " " + nt.verticalLeftInnerExtent + "L" + (nt.leftFullExtent + ut) + " " + (nt.sourceY - nt.leftSmallArcRadius) + "A" + (nt.leftLargeArcRadius + ut) + " " + (nt.leftSmallArcRadius + ut) + " 0 0 1 " + nt.leftInnerExtent + " " + (nt.sourceY + ut) + "L" + nt.sourceX + " " + (nt.sourceY + ut) + // Walking back
                "L" + nt.sourceX + " " + (nt.sourceY - ut) + "L" + nt.leftInnerExtent + " " + (nt.sourceY - ut) + "A" + (nt.leftLargeArcRadius - ut) + " " + (nt.leftSmallArcRadius - ut) + " 0 0 0 " + (nt.leftFullExtent - ut) + " " + (nt.sourceY - nt.leftSmallArcRadius) + "L" + (nt.leftFullExtent - ut) + " " + nt.verticalLeftInnerExtent + "A" + (nt.leftLargeArcRadius - ut) + " " + (nt.leftLargeArcRadius - ut) + " 0 0 0 " + nt.leftInnerExtent + " " + (nt.verticalFullExtent + ut) + "L" + (nt.rightInnerExtent - j) + " " + (nt.verticalFullExtent + ut) + "A" + (nt.rightLargeArcRadius - ut) + " " + (nt.rightLargeArcRadius - ut) + " 0 0 0 " + (nt.rightFullExtent + ut - j) + " " + nt.verticalRightInnerExtent + "L" + (nt.rightFullExtent + ut - j) + " " + (nt.targetY - nt.rightSmallArcRadius) + "A" + (nt.rightLargeArcRadius - ut) + " " + (nt.rightSmallArcRadius - ut) + " 0 0 0 " + (nt.rightInnerExtent - j) + " " + (nt.targetY - ut) + "L" + (nt.targetX - j) + " " + (nt.targetY - ut) + (j > 0 ? "L" + nt.targetX + " " + nt.targetY : "") + "Z" : at = // start at the left of the target node
                "M " + (nt.targetX - j) + " " + (nt.targetY - ut) + " L" + (nt.rightInnerExtent - j) + " " + (nt.targetY - ut) + "A" + (nt.rightLargeArcRadius + ut) + " " + (nt.rightSmallArcRadius + ut) + " 0 0 0 " + (nt.rightFullExtent - ut - j) + " " + (nt.targetY + nt.rightSmallArcRadius) + "L" + (nt.rightFullExtent - ut - j) + " " + nt.verticalRightInnerExtent + "A" + (nt.rightLargeArcRadius + ut) + " " + (nt.rightLargeArcRadius + ut) + " 0 0 0 " + (nt.rightInnerExtent - j) + " " + (nt.verticalFullExtent + ut) + "L" + nt.leftInnerExtent + " " + (nt.verticalFullExtent + ut) + "A" + (nt.leftLargeArcRadius + ut) + " " + (nt.leftLargeArcRadius + ut) + " 0 0 0 " + (nt.leftFullExtent + ut) + " " + nt.verticalLeftInnerExtent + "L" + (nt.leftFullExtent + ut) + " " + (nt.sourceY + nt.leftSmallArcRadius) + "A" + (nt.leftLargeArcRadius + ut) + " " + (nt.leftSmallArcRadius + ut) + " 0 0 0 " + nt.leftInnerExtent + " " + (nt.sourceY - ut) + "L" + nt.sourceX + " " + (nt.sourceY - ut) + // Walking back
                "L" + nt.sourceX + " " + (nt.sourceY + ut) + "L" + nt.leftInnerExtent + " " + (nt.sourceY + ut) + "A" + (nt.leftLargeArcRadius - ut) + " " + (nt.leftSmallArcRadius - ut) + " 0 0 1 " + (nt.leftFullExtent - ut) + " " + (nt.sourceY + nt.leftSmallArcRadius) + "L" + (nt.leftFullExtent - ut) + " " + nt.verticalLeftInnerExtent + "A" + (nt.leftLargeArcRadius - ut) + " " + (nt.leftLargeArcRadius - ut) + " 0 0 1 " + nt.leftInnerExtent + " " + (nt.verticalFullExtent - ut) + "L" + (nt.rightInnerExtent - j) + " " + (nt.verticalFullExtent - ut) + "A" + (nt.rightLargeArcRadius - ut) + " " + (nt.rightLargeArcRadius - ut) + " 0 0 1 " + (nt.rightFullExtent + ut - j) + " " + nt.verticalRightInnerExtent + "L" + (nt.rightFullExtent + ut - j) + " " + (nt.targetY + nt.rightSmallArcRadius) + "A" + (nt.rightLargeArcRadius - ut) + " " + (nt.rightSmallArcRadius - ut) + " 0 0 1 " + (nt.rightInnerExtent - j) + " " + (nt.targetY + ut) + "L" + (nt.targetX - j) + " " + (nt.targetY + ut) + (j > 0 ? "L" + nt.targetX + " " + nt.targetY : "") + "Z", at;
              }
              function L() {
                var Q = 0.5;
                function j(at) {
                  var ut = at.linkArrowLength;
                  if (at.link.circular)
                    return m(at.link, ut);
                  var nt = Math.abs((at.link.target.x0 - at.link.source.x1) / 2);
                  ut > nt && (ut = nt);
                  var X = at.link.source.x1, ct = at.link.target.x0 - ut, lt = P(X, ct), pt = lt(Q), wt = lt(1 - Q), Et = at.link.y0 - at.link.width / 2, Ct = at.link.y0 + at.link.width / 2, Gt = at.link.y1 - at.link.width / 2, Jt = at.link.y1 + at.link.width / 2, Qt = "M" + X + "," + Et, Vt = "C" + pt + "," + Et + " " + wt + "," + Gt + " " + ct + "," + Gt, zt = "C" + wt + "," + Jt + " " + pt + "," + Ct + " " + X + "," + Ct, Rt = ut > 0 ? "L" + (ct + ut) + "," + (Gt + at.link.width / 2) : "";
                  return Rt += "L" + ct + "," + Jt, Qt + Vt + Rt + zt + "Z";
                }
                return j;
              }
              function d(Q, j) {
                var at = p(j.color), ut = A.nodePadAcross, nt = Q.nodePad / 2;
                j.dx = j.x1 - j.x0, j.dy = j.y1 - j.y0;
                var X = j.dx, ct = Math.max(0.5, j.dy), lt = "node_" + j.pointNumber;
                return j.group && (lt = r.randstr()), j.trace = Q.trace, j.curveNumber = Q.trace.index, {
                  index: j.pointNumber,
                  key: lt,
                  partOfGroup: j.partOfGroup || !1,
                  group: j.group,
                  traceId: Q.key,
                  trace: Q.trace,
                  node: j,
                  nodePad: Q.nodePad,
                  nodeLineColor: Q.nodeLineColor,
                  nodeLineWidth: Q.nodeLineWidth,
                  textFont: Q.textFont,
                  size: Q.horizontal ? Q.height : Q.width,
                  visibleWidth: Math.ceil(X),
                  visibleHeight: ct,
                  zoneX: -ut,
                  zoneY: -nt,
                  zoneWidth: X + 2 * ut,
                  zoneHeight: ct + 2 * nt,
                  labelY: Q.horizontal ? j.dy / 2 + 1 : j.dx / 2 + 1,
                  left: j.originalLayer === 1,
                  sizeAcross: Q.width,
                  forceLayouts: Q.forceLayouts,
                  horizontal: Q.horizontal,
                  darkBackground: at.getBrightness() <= 128,
                  tinyColorHue: u.tinyRGB(at),
                  tinyColorAlpha: at.getAlpha(),
                  valueFormat: Q.valueFormat,
                  valueSuffix: Q.valueSuffix,
                  sankey: Q.sankey,
                  graph: Q.graph,
                  arrangement: Q.arrangement,
                  uniqueNodeLabelPathId: [Q.guid, Q.key, lt].join("_"),
                  interactionState: Q.interactionState,
                  figure: Q
                };
              }
              function h(Q) {
                Q.attr("transform", function(j) {
                  return i(j.node.x0.toFixed(3), j.node.y0.toFixed(3));
                });
              }
              function E(Q) {
                Q.call(h);
              }
              function w(Q, j) {
                Q.call(E), j.attr("d", L());
              }
              function z(Q) {
                Q.attr("width", function(j) {
                  return j.node.x1 - j.node.x0;
                }).attr("height", function(j) {
                  return j.visibleHeight;
                });
              }
              function O(Q) {
                return Q.link.width > 1 || Q.linkLineWidth > 0;
              }
              function B(Q) {
                var j = i(Q.translateX, Q.translateY);
                return j + (Q.horizontal ? "matrix(1 0 0 1 0 0)" : "matrix(0 1 1 0 0 0)");
              }
              function V(Q, j, at) {
                Q.on(".basic", null).on("mouseover.basic", function(ut) {
                  !ut.interactionState.dragInProgress && !ut.partOfGroup && (at.hover(this, ut, j), ut.interactionState.hovered = [this, ut]);
                }).on("mousemove.basic", function(ut) {
                  !ut.interactionState.dragInProgress && !ut.partOfGroup && (at.follow(this, ut), ut.interactionState.hovered = [this, ut]);
                }).on("mouseout.basic", function(ut) {
                  !ut.interactionState.dragInProgress && !ut.partOfGroup && (at.unhover(this, ut, j), ut.interactionState.hovered = !1);
                }).on("click.basic", function(ut) {
                  ut.interactionState.hovered && (at.unhover(this, ut, j), ut.interactionState.hovered = !1), !ut.interactionState.dragInProgress && !ut.partOfGroup && at.select(this, ut, j);
                });
              }
              function U(Q, j, at, ut) {
                var nt = n.behavior.drag().origin(function(X) {
                  return {
                    x: X.node.x0 + X.visibleWidth / 2,
                    y: X.node.y0 + X.visibleHeight / 2
                  };
                }).on("dragstart", function(X) {
                  if (X.arrangement !== "fixed" && (r.ensureSingle(ut._fullLayout._infolayer, "g", "dragcover", function(lt) {
                    ut._fullLayout._dragCover = lt;
                  }), r.raiseToTop(this), X.interactionState.dragInProgress = X.node, st(X.node), X.interactionState.hovered && (at.nodeEvents.unhover.apply(0, X.interactionState.hovered), X.interactionState.hovered = !1), X.arrangement === "snap")) {
                    var ct = X.traceId + "|" + X.key;
                    X.forceLayouts[ct] ? X.forceLayouts[ct].alpha(1) : H(Q, ct, X), F(Q, j, X, ct, ut);
                  }
                }).on("drag", function(X) {
                  if (X.arrangement !== "fixed") {
                    var ct = n.event.x, lt = n.event.y;
                    X.arrangement === "snap" ? (X.node.x0 = ct - X.visibleWidth / 2, X.node.x1 = ct + X.visibleWidth / 2, X.node.y0 = lt - X.visibleHeight / 2, X.node.y1 = lt + X.visibleHeight / 2) : (X.arrangement === "freeform" && (X.node.x0 = ct - X.visibleWidth / 2, X.node.x1 = ct + X.visibleWidth / 2), lt = Math.max(0, Math.min(X.size - X.visibleHeight / 2, lt)), X.node.y0 = lt - X.visibleHeight / 2, X.node.y1 = lt + X.visibleHeight / 2), st(X.node), X.arrangement !== "snap" && (X.sankey.update(X.graph), w(Q.filter(vt(X)), j));
                  }
                }).on("dragend", function(X) {
                  if (X.arrangement !== "fixed") {
                    X.interactionState.dragInProgress = !1;
                    for (var ct = 0; ct < X.node.childrenNodes.length; ct++)
                      X.node.childrenNodes[ct].x = X.node.x, X.node.childrenNodes[ct].y = X.node.y;
                    X.arrangement !== "snap" && q(X, ut);
                  }
                });
                Q.on(".drag", null).call(nt);
              }
              function H(Q, j, at, ut) {
                ht(at.graph.nodes);
                var nt = at.graph.nodes.filter(function(X) {
                  return X.originalX === at.node.originalX;
                }).filter(function(X) {
                  return !X.partOfGroup;
                });
                at.forceLayouts[j] = b.forceSimulation(nt).alphaDecay(0).force("collide", b.forceCollide().radius(function(X) {
                  return X.dy / 2 + at.nodePad / 2;
                }).strength(1).iterations(A.forceIterations)).force("constrain", G(Q, j, nt, at)).stop();
              }
              function F(Q, j, at, ut, nt) {
                window.requestAnimationFrame(function X() {
                  var ct;
                  for (ct = 0; ct < A.forceTicksPerFrame; ct++)
                    at.forceLayouts[ut].tick();
                  var lt = at.graph.nodes;
                  if (et(lt), at.sankey.update(at.graph), w(Q.filter(vt(at)), j), at.forceLayouts[ut].alpha() > 0)
                    window.requestAnimationFrame(X);
                  else {
                    var pt = at.node.originalX;
                    at.node.x0 = pt - at.visibleWidth / 2, at.node.x1 = pt + at.visibleWidth / 2, q(at, nt);
                  }
                });
              }
              function G(Q, j, at, ut) {
                return function() {
                  for (var X = 0, ct = 0; ct < at.length; ct++) {
                    var lt = at[ct];
                    lt === ut.interactionState.dragInProgress ? (lt.x = lt.lastDraggedX, lt.y = lt.lastDraggedY) : (lt.vx = (lt.originalX - lt.x) / A.forceTicksPerFrame, lt.y = Math.min(ut.size - lt.dy / 2, Math.max(lt.dy / 2, lt.y))), X = Math.max(X, Math.abs(lt.vx), Math.abs(lt.vy));
                  }
                  !ut.interactionState.dragInProgress && X < 0.1 && ut.forceLayouts[j].alpha() > 0 && ut.forceLayouts[j].alpha(0);
                };
              }
              function q(Q, j) {
                for (var at = [], ut = [], nt = 0; nt < Q.graph.nodes.length; nt++) {
                  var X = (Q.graph.nodes[nt].x0 + Q.graph.nodes[nt].x1) / 2, ct = (Q.graph.nodes[nt].y0 + Q.graph.nodes[nt].y1) / 2;
                  at.push(X / Q.figure.width), ut.push(ct / Q.figure.height);
                }
                c.call("_guiRestyle", j, {
                  "node.x": [at],
                  "node.y": [ut]
                }, Q.trace.index).then(function() {
                  j._fullLayout._dragCover && j._fullLayout._dragCover.remove();
                });
              }
              function rt(Q) {
                var j = [], at;
                for (at = 0; at < Q.length; at++)
                  Q[at].originalX = (Q[at].x0 + Q[at].x1) / 2, Q[at].originalY = (Q[at].y0 + Q[at].y1) / 2, j.indexOf(Q[at].originalX) === -1 && j.push(Q[at].originalX);
                for (j.sort(function(ut, nt) {
                  return ut - nt;
                }), at = 0; at < Q.length; at++)
                  Q[at].originalLayerIndex = j.indexOf(Q[at].originalX), Q[at].originalLayer = Q[at].originalLayerIndex / (j.length - 1);
              }
              function st(Q) {
                Q.lastDraggedX = Q.x0 + Q.dx / 2, Q.lastDraggedY = Q.y0 + Q.dy / 2;
              }
              function vt(Q) {
                return function(j) {
                  return j.node.originalX === Q.node.originalX;
                };
              }
              function ht(Q) {
                for (var j = 0; j < Q.length; j++)
                  Q[j].y = (Q[j].y0 + Q[j].y1) / 2, Q[j].x = (Q[j].x0 + Q[j].x1) / 2;
              }
              function et(Q) {
                for (var j = 0; j < Q.length; j++)
                  Q[j].y0 = Q[j].y - Q[j].dy / 2, Q[j].y1 = Q[j].y0 + Q[j].dy, Q[j].x0 = Q[j].x - Q[j].dx / 2, Q[j].x1 = Q[j].x0 + Q[j].dx;
              }
              Y.exports = function(Q, j, at, ut, nt) {
                var X = Q._context.staticPlot, ct = !1;
                r.ensureSingle(Q._fullLayout._infolayer, "g", "first-render", function() {
                  ct = !0;
                });
                var lt = Q._fullLayout._dragCover, pt = at.filter(function(zt) {
                  return g(zt).trace.visible;
                }).map(M.bind(null, ut)), wt = j.selectAll("." + A.cn.sankey).data(pt, o);
                wt.exit().remove(), wt.enter().append("g").classed(A.cn.sankey, !0).style("box-sizing", "content-box").style("position", "absolute").style("left", 0).style("shape-rendering", "geometricPrecision").style("pointer-events", X ? "none" : "auto").attr("transform", B), wt.each(function(zt, Rt) {
                  Q._fullData[Rt]._sankey = zt;
                  var Wt = "bgsankey-" + zt.trace.uid + "-" + Rt;
                  r.ensureSingle(Q._fullLayout._draggers, "rect", Wt), Q._fullData[Rt]._bgRect = n.select("." + Wt), Q._fullData[Rt]._bgRect.style("pointer-events", X ? "none" : "all").attr("width", zt.width).attr("height", zt.height).attr("x", zt.translateX).attr("y", zt.translateY).classed("bgsankey", !0).style({
                    fill: "transparent",
                    "stroke-width": 0
                  });
                }), wt.transition().ease(A.ease).duration(A.duration).attr("transform", B);
                var Et = wt.selectAll("." + A.cn.sankeyLinks).data(y, o);
                Et.enter().append("g").classed(A.cn.sankeyLinks, !0).style("fill", "none");
                var Ct = Et.selectAll("." + A.cn.sankeyLink).data(function(zt) {
                  var Rt = zt.graph.links;
                  return Rt.filter(function(Wt) {
                    return Wt.value;
                  }).map(C.bind(null, zt));
                }, o);
                Ct.enter().append("path").classed(A.cn.sankeyLink, !0).call(V, wt, nt.linkEvents), Ct.style("stroke", function(zt) {
                  return O(zt) ? u.tinyRGB(p(zt.linkLineColor)) : zt.tinyColorHue;
                }).style("stroke-opacity", function(zt) {
                  return O(zt) ? u.opacity(zt.linkLineColor) : zt.tinyColorAlpha;
                }).style("fill", function(zt) {
                  return zt.tinyColorHue;
                }).style("fill-opacity", function(zt) {
                  return zt.tinyColorAlpha;
                }).style("stroke-width", function(zt) {
                  return O(zt) ? zt.linkLineWidth : 1;
                }).attr("d", L()), Ct.style("opacity", function() {
                  return Q._context.staticPlot || ct || lt ? 1 : 0;
                }).transition().ease(A.ease).duration(A.duration).style("opacity", 1), Ct.exit().transition().ease(A.ease).duration(A.duration).style("opacity", 0).remove();
                var Gt = wt.selectAll("." + A.cn.sankeyNodeSet).data(y, o);
                Gt.enter().append("g").classed(A.cn.sankeyNodeSet, !0), Gt.style("cursor", function(zt) {
                  switch (zt.arrangement) {
                    case "fixed":
                      return "default";
                    case "perpendicular":
                      return "ns-resize";
                    default:
                      return "move";
                  }
                });
                var Jt = Gt.selectAll("." + A.cn.sankeyNode).data(function(zt) {
                  var Rt = zt.graph.nodes;
                  return rt(Rt), Rt.map(d.bind(null, zt));
                }, o);
                Jt.enter().append("g").classed(A.cn.sankeyNode, !0).call(h).style("opacity", function(zt) {
                  return (Q._context.staticPlot || ct) && !zt.partOfGroup ? 1 : 0;
                }), Jt.call(V, wt, nt.nodeEvents).call(U, Ct, nt, Q), Jt.transition().ease(A.ease).duration(A.duration).call(h).style("opacity", function(zt) {
                  return zt.partOfGroup ? 0 : 1;
                }), Jt.exit().transition().ease(A.ease).duration(A.duration).style("opacity", 0).remove();
                var Qt = Jt.selectAll("." + A.cn.nodeRect).data(y);
                Qt.enter().append("rect").classed(A.cn.nodeRect, !0).call(z), Qt.style("stroke-width", function(zt) {
                  return zt.nodeLineWidth;
                }).style("stroke", function(zt) {
                  return u.tinyRGB(p(zt.nodeLineColor));
                }).style("stroke-opacity", function(zt) {
                  return u.opacity(zt.nodeLineColor);
                }).style("fill", function(zt) {
                  return zt.tinyColorHue;
                }).style("fill-opacity", function(zt) {
                  return zt.tinyColorAlpha;
                }), Qt.transition().ease(A.ease).duration(A.duration).call(z);
                var Vt = Jt.selectAll("." + A.cn.nodeLabel).data(y);
                Vt.enter().append("text").classed(A.cn.nodeLabel, !0).style("cursor", "default"), Vt.attr("data-notex", 1).text(function(zt) {
                  return zt.node.label;
                }).each(function(zt) {
                  var Rt = n.select(this);
                  t.font(Rt, zt.textFont), x.convertToTspans(Rt, Q);
                }).attr("text-anchor", function(zt) {
                  return zt.horizontal && zt.left ? "end" : "start";
                }).attr("transform", function(zt) {
                  var Rt = n.select(this), Wt = x.lineCount(Rt), kt = zt.textFont.size * ((Wt - 1) * _ - f), re = zt.nodeLineWidth / 2 + S, ge = ((zt.horizontal ? zt.visibleHeight : zt.visibleWidth) - kt) / 2;
                  zt.horizontal && (zt.left ? re = -re : re += zt.visibleWidth);
                  var _e = zt.horizontal ? "" : "scale(-1,1)" + a(90);
                  return i(zt.horizontal ? re : ge, zt.horizontal ? ge : re) + _e;
                }), Vt.transition().ease(A.ease).duration(A.duration);
              };
            }
          ),
          /***/
          74670: (
            /***/
            function(Y) {
              Y.exports = function(e, b) {
                for (var P = e.cd, n = [], s = P[0].trace, T = s._sankey.graph.nodes, A = 0; A < T.length; A++) {
                  var p = T[A];
                  if (!p.partOfGroup) {
                    var u = [(p.x0 + p.x1) / 2, (p.y0 + p.y1) / 2];
                    s.orientation === "v" && u.reverse(), b && b.contains(u, !1, A, e) && n.push({
                      pointNumber: p.pointNumber
                      // TODO: add eventData
                    });
                  }
                }
                return n;
              };
            }
          ),
          /***/
          99203: (
            /***/
            function(Y, K, e) {
              var b = e(34809);
              Y.exports = function(n, s) {
                for (var T = 0; T < n.length; T++) n[T].i = T;
                b.mergeArray(s.text, n, "tx"), b.mergeArray(s.texttemplate, n, "txt"), b.mergeArray(s.hovertext, n, "htx"), b.mergeArray(s.customdata, n, "data"), b.mergeArray(s.textposition, n, "tp"), s.textfont && (b.mergeArrayCastPositive(s.textfont.size, n, "ts"), b.mergeArray(s.textfont.color, n, "tc"), b.mergeArray(s.textfont.family, n, "tf"), b.mergeArray(s.textfont.weight, n, "tw"), b.mergeArray(s.textfont.style, n, "ty"), b.mergeArray(s.textfont.variant, n, "tv"), b.mergeArray(s.textfont.textcase, n, "tC"), b.mergeArray(s.textfont.lineposition, n, "tE"), b.mergeArray(s.textfont.shadow, n, "tS"));
                var A = s.marker;
                if (A) {
                  b.mergeArrayCastPositive(A.size, n, "ms"), b.mergeArrayCastPositive(A.opacity, n, "mo"), b.mergeArray(A.symbol, n, "mx"), b.mergeArray(A.angle, n, "ma"), b.mergeArray(A.standoff, n, "mf"), b.mergeArray(A.color, n, "mc");
                  var p = A.line;
                  A.line && (b.mergeArray(p.color, n, "mlc"), b.mergeArrayCastPositive(p.width, n, "mlw"));
                  var u = A.gradient;
                  u && u.type !== "none" && (b.mergeArray(u.type, n, "mgt"), b.mergeArray(u.color, n, "mgc"));
                }
              };
            }
          ),
          /***/
          36640: (
            /***/
            function(Y, K, e) {
              var b = e(80712).axisHoverFormat, P = e(3208).ay, n = e(3208).rb, s = e(87163), T = e(80337), A = e(94850).T, p = e(94850).k, u = e(62203), t = e(32660), r = e(93049).extendFlat, i = e(19326);
              function a(y) {
                return {
                  valType: "any",
                  dflt: 0,
                  editType: "calc"
                };
              }
              function l(y) {
                return {
                  valType: "any",
                  editType: "calc"
                };
              }
              function o(y) {
                return {
                  valType: "enumerated",
                  values: ["start", "middle", "end"],
                  dflt: "middle",
                  editType: "calc"
                };
              }
              Y.exports = {
                x: {
                  valType: "data_array",
                  editType: "calc+clearAxisTypes",
                  anim: !0
                },
                x0: {
                  valType: "any",
                  dflt: 0,
                  editType: "calc+clearAxisTypes",
                  anim: !0
                },
                dx: {
                  valType: "number",
                  dflt: 1,
                  editType: "calc",
                  anim: !0
                },
                y: {
                  valType: "data_array",
                  editType: "calc+clearAxisTypes",
                  anim: !0
                },
                y0: {
                  valType: "any",
                  dflt: 0,
                  editType: "calc+clearAxisTypes",
                  anim: !0
                },
                dy: {
                  valType: "number",
                  dflt: 1,
                  editType: "calc",
                  anim: !0
                },
                xperiod: a(),
                yperiod: a(),
                xperiod0: l(),
                yperiod0: l(),
                xperiodalignment: o(),
                yperiodalignment: o(),
                xhoverformat: b("x"),
                yhoverformat: b("y"),
                offsetgroup: {
                  valType: "string",
                  dflt: "",
                  editType: "calc"
                },
                alignmentgroup: {
                  valType: "string",
                  dflt: "",
                  editType: "calc"
                },
                stackgroup: {
                  valType: "string",
                  dflt: "",
                  editType: "calc"
                },
                orientation: {
                  valType: "enumerated",
                  values: ["v", "h"],
                  editType: "calc"
                },
                groupnorm: {
                  valType: "enumerated",
                  values: ["", "fraction", "percent"],
                  dflt: "",
                  editType: "calc"
                },
                stackgaps: {
                  valType: "enumerated",
                  values: ["infer zero", "interpolate"],
                  dflt: "infer zero",
                  editType: "calc"
                },
                text: {
                  valType: "string",
                  dflt: "",
                  arrayOk: !0,
                  editType: "calc"
                },
                texttemplate: P({}, {}),
                hovertext: {
                  valType: "string",
                  dflt: "",
                  arrayOk: !0,
                  editType: "style"
                },
                mode: {
                  valType: "flaglist",
                  flags: ["lines", "markers", "text"],
                  extras: ["none"],
                  editType: "calc"
                },
                hoveron: {
                  valType: "flaglist",
                  flags: ["points", "fills"],
                  editType: "style"
                },
                hovertemplate: n({}, {
                  keys: t.eventDataKeys
                }),
                line: {
                  color: {
                    valType: "color",
                    editType: "style",
                    anim: !0
                  },
                  width: {
                    valType: "number",
                    min: 0,
                    dflt: 2,
                    editType: "style",
                    anim: !0
                  },
                  shape: {
                    valType: "enumerated",
                    values: ["linear", "spline", "hv", "vh", "hvh", "vhv"],
                    dflt: "linear",
                    editType: "plot"
                  },
                  smoothing: {
                    valType: "number",
                    min: 0,
                    max: 1.3,
                    dflt: 1,
                    editType: "plot"
                  },
                  dash: r({}, A, {
                    editType: "style"
                  }),
                  backoff: {
                    // we want to have a similar option for the start of the line
                    valType: "number",
                    min: 0,
                    dflt: "auto",
                    arrayOk: !0,
                    editType: "plot"
                  },
                  simplify: {
                    valType: "boolean",
                    dflt: !0,
                    editType: "plot"
                  },
                  editType: "plot"
                },
                connectgaps: {
                  valType: "boolean",
                  dflt: !1,
                  editType: "calc"
                },
                cliponaxis: {
                  valType: "boolean",
                  dflt: !0,
                  editType: "plot"
                },
                fill: {
                  valType: "enumerated",
                  values: ["none", "tozeroy", "tozerox", "tonexty", "tonextx", "toself", "tonext"],
                  editType: "calc"
                },
                fillcolor: i(!0),
                fillgradient: r({
                  type: {
                    valType: "enumerated",
                    values: ["radial", "horizontal", "vertical", "none"],
                    dflt: "none",
                    editType: "calc"
                  },
                  start: {
                    valType: "number",
                    editType: "calc"
                  },
                  stop: {
                    valType: "number",
                    editType: "calc"
                  },
                  colorscale: {
                    valType: "colorscale",
                    editType: "style"
                  },
                  editType: "calc"
                }),
                fillpattern: p,
                marker: r({
                  symbol: {
                    valType: "enumerated",
                    values: u.symbolList,
                    dflt: "circle",
                    arrayOk: !0,
                    editType: "style"
                  },
                  opacity: {
                    valType: "number",
                    min: 0,
                    max: 1,
                    arrayOk: !0,
                    editType: "style",
                    anim: !0
                  },
                  angle: {
                    valType: "angle",
                    dflt: 0,
                    arrayOk: !0,
                    editType: "plot",
                    anim: !1
                    // TODO: possibly set to true in future
                  },
                  angleref: {
                    valType: "enumerated",
                    values: ["previous", "up"],
                    dflt: "up",
                    editType: "plot",
                    anim: !1
                  },
                  standoff: {
                    valType: "number",
                    min: 0,
                    dflt: 0,
                    arrayOk: !0,
                    editType: "plot",
                    anim: !0
                  },
                  size: {
                    valType: "number",
                    min: 0,
                    dflt: 6,
                    arrayOk: !0,
                    editType: "calc",
                    anim: !0
                  },
                  maxdisplayed: {
                    valType: "number",
                    min: 0,
                    dflt: 0,
                    editType: "plot"
                  },
                  sizeref: {
                    valType: "number",
                    dflt: 1,
                    editType: "calc"
                  },
                  sizemin: {
                    valType: "number",
                    min: 0,
                    dflt: 0,
                    editType: "calc"
                  },
                  sizemode: {
                    valType: "enumerated",
                    values: ["diameter", "area"],
                    dflt: "diameter",
                    editType: "calc"
                  },
                  line: r({
                    width: {
                      valType: "number",
                      min: 0,
                      arrayOk: !0,
                      editType: "style",
                      anim: !0
                    },
                    editType: "calc"
                  }, s("marker.line", {
                    anim: !0
                  })),
                  gradient: {
                    type: {
                      valType: "enumerated",
                      values: ["radial", "horizontal", "vertical", "none"],
                      arrayOk: !0,
                      dflt: "none",
                      editType: "calc"
                    },
                    color: {
                      valType: "color",
                      arrayOk: !0,
                      editType: "calc"
                    },
                    editType: "calc"
                  },
                  editType: "calc"
                }, s("marker", {
                  anim: !0
                })),
                selected: {
                  marker: {
                    opacity: {
                      valType: "number",
                      min: 0,
                      max: 1,
                      editType: "style"
                    },
                    color: {
                      valType: "color",
                      editType: "style"
                    },
                    size: {
                      valType: "number",
                      min: 0,
                      editType: "style"
                    },
                    editType: "style"
                  },
                  textfont: {
                    color: {
                      valType: "color",
                      editType: "style"
                    },
                    editType: "style"
                  },
                  editType: "style"
                },
                unselected: {
                  marker: {
                    opacity: {
                      valType: "number",
                      min: 0,
                      max: 1,
                      editType: "style"
                    },
                    color: {
                      valType: "color",
                      editType: "style"
                    },
                    size: {
                      valType: "number",
                      min: 0,
                      editType: "style"
                    },
                    editType: "style"
                  },
                  textfont: {
                    color: {
                      valType: "color",
                      editType: "style"
                    },
                    editType: "style"
                  },
                  editType: "style"
                },
                textposition: {
                  valType: "enumerated",
                  values: ["top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right"],
                  dflt: "middle center",
                  arrayOk: !0,
                  editType: "calc"
                },
                textfont: T({
                  editType: "calc",
                  colorEditType: "style",
                  arrayOk: !0
                }),
                zorder: {
                  valType: "integer",
                  dflt: 0,
                  editType: "plot"
                }
              };
            }
          ),
          /***/
          26544: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(34809), n = e(29714), s = e(40528), T = e(63821).BADNUM, A = e(64726), p = e(77272), u = e(99203), t = e(48861);
              function r(g, x) {
                var c = g._fullLayout, v = x._xA = n.getFromId(g, x.xaxis || "x", "x"), f = x._yA = n.getFromId(g, x.yaxis || "y", "y"), _ = v.makeCalcdata(x, "x"), S = f.makeCalcdata(x, "y"), M = s(x, v, "x", _), C = s(x, f, "y", S), m = M.vals, L = C.vals, d = x._length, h = new Array(d), E = x.ids, w = y(x, c, v, f), z = !1, O, B, V, U, H, F;
                l(c, x);
                var G = "x", q = "y", rt;
                if (w)
                  P.pushUnique(w.traceIndices, x._expandedIndex), O = w.orientation === "v", O ? (q = "s", rt = "x") : (G = "s", rt = "y"), H = w.stackgaps === "interpolate";
                else {
                  var st = a(x, d);
                  i(g, x, v, f, m, L, st);
                }
                var vt = !!x.xperiodalignment, ht = !!x.yperiodalignment;
                for (B = 0; B < d; B++) {
                  var et = h[B] = {}, Q = b(m[B]), j = b(L[B]);
                  Q && j ? (et[G] = m[B], et[q] = L[B], vt && (et.orig_x = _[B], et.xEnd = M.ends[B], et.xStart = M.starts[B]), ht && (et.orig_y = S[B], et.yEnd = C.ends[B], et.yStart = C.starts[B])) : w && (O ? Q : j) ? (et[rt] = O ? m[B] : L[B], et.gap = !0, H ? (et.s = T, z = !0) : et.s = 0) : et[G] = et[q] = T, E && (et.id = String(E[B]));
                }
                if (u(h, x), p(g, x), t(h, x), w) {
                  for (B = 0; B < h.length; )
                    h[B][rt] === T ? h.splice(B, 1) : B++;
                  if (P.sort(h, function(X, ct) {
                    return X[rt] - ct[rt] || X.i - ct.i;
                  }), z) {
                    for (B = 0; B < h.length - 1 && h[B].gap; )
                      B++;
                    for (F = h[B].s, F || (F = h[B].s = 0), V = 0; V < B; V++)
                      h[V].s = F;
                    for (U = h.length - 1; U > B && h[U].gap; )
                      U--;
                    for (F = h[U].s, V = h.length - 1; V > U; V--)
                      h[V].s = F;
                    for (; B < U; )
                      if (B++, h[B].gap) {
                        for (V = B + 1; h[V].gap; )
                          V++;
                        for (var at = h[B - 1][rt], ut = h[B - 1].s, nt = (h[V].s - ut) / (h[V][rt] - at); B < V; )
                          h[B].s = ut + (h[B][rt] - at) * nt, B++;
                      }
                  }
                }
                return h;
              }
              function i(g, x, c, v, f, _, S) {
                var M = x._length, C = g._fullLayout, m = c._id, L = v._id, d = C._firstScatter[o(x)] === x.uid, h = (y(x, C, c, v) || {}).orientation, E = x.fill;
                c._minDtick = 0, v._minDtick = 0;
                var w = {
                  padded: !0
                }, z = {
                  padded: !0
                };
                S && (w.ppad = z.ppad = S);
                var O = M < 2 || f[0] !== f[M - 1] || _[0] !== _[M - 1];
                O && (E === "tozerox" || E === "tonextx" && (d || h === "h")) ? w.tozero = !0 : !(x.error_y || {}).visible && // if no error bars, markers or text, or fill to y=0 remove x padding
                (E === "tonexty" || E === "tozeroy" || !A.hasMarkers(x) && !A.hasText(x)) && (w.padded = !1, w.ppad = 0), O && (E === "tozeroy" || E === "tonexty" && (d || h === "v")) ? z.tozero = !0 : (E === "tonextx" || E === "tozerox") && (z.padded = !1), m && (x._extremes[m] = n.findExtremes(c, f, w)), L && (x._extremes[L] = n.findExtremes(v, _, z));
              }
              function a(g, x) {
                if (A.hasMarkers(g)) {
                  var c = g.marker, v = 1.6 * (g.marker.sizeref || 1), f;
                  if (g.marker.sizemode === "area" ? f = function(m) {
                    return Math.max(Math.sqrt((m || 0) / v), 3);
                  } : f = function(m) {
                    return Math.max((m || 0) / v, 3);
                  }, P.isArrayOrTypedArray(c.size)) {
                    var _ = {
                      type: "linear"
                    };
                    n.setConvert(_);
                    for (var S = _.makeCalcdata(g.marker, "size"), M = new Array(x), C = 0; C < x; C++)
                      M[C] = f(S[C]);
                    return M;
                  } else
                    return f(c.size);
                }
              }
              function l(g, x) {
                var c = o(x), v = g._firstScatter;
                v[c] || (v[c] = x.uid);
              }
              function o(g) {
                var x = g.stackgroup;
                return g.xaxis + g.yaxis + g.type + (x ? "-" + x : "");
              }
              function y(g, x, c, v) {
                var f = g.stackgroup;
                if (f) {
                  var _ = x._scatterStackOpts[c._id + v._id][f], S = _.orientation === "v" ? v : c;
                  if (S.type === "linear" || S.type === "log") return _;
                }
              }
              Y.exports = {
                calc: r,
                calcMarkerSize: a,
                calcAxisExpansion: i,
                setFirstScatter: l,
                getStackOpts: y
              };
            }
          ),
          /***/
          48861: (
            /***/
            function(Y, K, e) {
              var b = e(34809);
              Y.exports = function(n, s) {
                b.isArrayOrTypedArray(s.selectedpoints) && b.tagSelected(n, s);
              };
            }
          ),
          /***/
          77272: (
            /***/
            function(Y, K, e) {
              var b = e(65477).hasColorscale, P = e(28379), n = e(64726);
              Y.exports = function(T, A) {
                n.hasLines(A) && b(A, "line") && P(T, A, {
                  vals: A.line.color,
                  containerStr: "line",
                  cLetter: "c"
                }), n.hasMarkers(A) && (b(A, "marker") && P(T, A, {
                  vals: A.marker.color,
                  containerStr: "marker",
                  cLetter: "c"
                }), b(A, "marker.line") && P(T, A, {
                  vals: A.marker.line.color,
                  containerStr: "marker.line",
                  cLetter: "c"
                }));
              };
            }
          ),
          /***/
          32660: (
            /***/
            function(Y) {
              Y.exports = {
                PTS_LINESONLY: 20,
                // fixed parameters of clustering and clipping algorithms
                // fraction of clustering tolerance "so close we don't even consider it a new point"
                minTolerance: 0.2,
                // how fast does clustering tolerance increase as you get away from the visible region
                toleranceGrowth: 10,
                // number of viewport sizes away from the visible region
                // at which we clip all lines to the perimeter
                maxScreensAway: 20,
                eventDataKeys: []
              };
            }
          ),
          /***/
          75603: (
            /***/
            function(Y, K, e) {
              var b = e(26544), P = e(24782).setGroupPositions;
              function n(A, p) {
                for (var u = p.xaxis, t = p.yaxis, r = A._fullLayout, i = A._fullData, a = A.calcdata, l = [], o = [], y = 0; y < i.length; y++) {
                  var g = i[y];
                  g.visible === !0 && g.type === "scatter" && g.xaxis === u._id && g.yaxis === t._id && (g.orientation === "h" ? l.push(a[y]) : g.orientation === "v" && o.push(a[y]));
                }
                var x = {
                  mode: r.scattermode,
                  gap: r.scattergap
                };
                P(A, u, t, o, x), P(A, t, u, l, x);
              }
              Y.exports = function(p, u) {
                p._fullLayout.scattermode === "group" && n(p, u);
                var t = u.xaxis, r = u.yaxis, i = t._id + r._id, a = p._fullLayout._scatterStackOpts[i];
                if (a) {
                  var l = p.calcdata, o, y, g, x, c, v, f, _, S, M, C, m, L, d, h;
                  for (var E in a) {
                    M = a[E];
                    var w = M.traceIndices;
                    if (w.length) {
                      for (C = M.stackgaps === "interpolate", m = M.groupnorm, M.orientation === "v" ? (L = "x", d = "y") : (L = "y", d = "x"), h = new Array(w.length), o = 0; o < h.length; o++)
                        h[o] = !1;
                      v = l[w[0]];
                      var z = new Array(v.length);
                      for (o = 0; o < v.length; o++)
                        z[o] = v[o][L];
                      for (o = 1; o < w.length; o++) {
                        for (c = l[w[o]], y = g = 0; y < c.length; y++) {
                          for (f = c[y][L]; f > z[g] && g < z.length; g++)
                            s(c, y, z[g], o, h, C, L), y++;
                          if (f !== z[g]) {
                            for (x = 0; x < o; x++)
                              s(l[w[x]], g, f, x, h, C, L);
                            z.splice(g, 0, f);
                          }
                          g++;
                        }
                        for (; g < z.length; g++)
                          s(c, y, z[g], o, h, C, L), y++;
                      }
                      var O = z.length;
                      for (y = 0; y < v.length; y++) {
                        for (_ = v[y][d] = v[y].s, o = 1; o < w.length; o++)
                          c = l[w[o]], c[0].trace._rawLength = c[0].trace._length, c[0].trace._length = O, _ += c[y].s, c[y][d] = _;
                        if (m)
                          for (S = (m === "fraction" ? _ : _ / 100) || 1, o = 0; o < w.length; o++) {
                            var B = l[w[o]][y];
                            B[d] /= S, B.sNorm = B.s / S;
                          }
                      }
                      for (o = 0; o < w.length; o++) {
                        c = l[w[o]];
                        var V = c[0].trace, U = b.calcMarkerSize(V, V._rawLength), H = Array.isArray(U);
                        if (U && h[o] || H) {
                          var F = U;
                          for (U = new Array(O), y = 0; y < O; y++)
                            U[y] = c[y].gap ? 0 : H ? F[c[y].i] : F;
                        }
                        var G = new Array(O), q = new Array(O);
                        for (y = 0; y < O; y++)
                          G[y] = c[y].x, q[y] = c[y].y;
                        b.calcAxisExpansion(p, V, t, r, G, q, U), c[0].t.orientation = M.orientation;
                      }
                    }
                  }
                }
              };
              function s(A, p, u, t, r, i, a) {
                r[t] = !0;
                var l = {
                  i: null,
                  gap: !0,
                  s: 0
                };
                if (l[a] = u, A.splice(p, 0, l), p && u === A[p - 1][a]) {
                  var o = A[p - 1];
                  l.s = o.s, l.i = o.i, l.gap = o.gap;
                } else i && (l.s = T(A, p, u, a));
                p || (A[0].t = A[1].t, A[0].trace = A[1].trace, delete A[1].t, delete A[1].trace);
              }
              function T(A, p, u, t) {
                var r = A[p - 1], i = A[p + 1];
                return i ? r ? r.s + (i.s - r.s) * (u - r[t]) / (i[t] - r[t]) : i.s : r.s;
              }
            }
          ),
          /***/
          53044: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(36301), n = e(36640);
              Y.exports = function(T, A) {
                var p, u, t;
                function r(y) {
                  return b.coerce(u._input, u, n, y);
                }
                if (A.scattermode === "group")
                  for (t = 0; t < T.length; t++)
                    u = T[t], u.type === "scatter" && (p = u._input, P(p, u, A, r));
                for (t = 0; t < T.length; t++) {
                  var i = T[t];
                  if (i.type === "scatter") {
                    var a = i.fill;
                    if (!(a === "none" || a === "toself") && (i.opacity = void 0, a === "tonexty" || a === "tonextx"))
                      for (var l = t - 1; l >= 0; l--) {
                        var o = T[l];
                        if (o.type === "scatter" && o.xaxis === i.xaxis && o.yaxis === i.yaxis) {
                          o.opacity = void 0;
                          break;
                        }
                      }
                  }
                }
              };
            }
          ),
          /***/
          40247: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(33626), n = e(36640), s = e(32660), T = e(64726), A = e(99867), p = e(99669), u = e(382), t = e(24272), r = e(98168), i = e(91602), a = e(663), l = e(54114), o = e(34809).coercePattern;
              Y.exports = function(g, x, c, v) {
                function f(h, E) {
                  return b.coerce(g, x, n, h, E);
                }
                var _ = A(g, x, v, f);
                if (_ || (x.visible = !1), !!x.visible) {
                  p(g, x, v, f), f("xhoverformat"), f("yhoverformat"), f("zorder");
                  var S = u(g, x, v, f);
                  v.scattermode === "group" && x.orientation === void 0 && f("orientation", "v");
                  var M = !S && _ < s.PTS_LINESONLY ? "lines+markers" : "lines";
                  f("text"), f("hovertext"), f("mode", M), T.hasMarkers(x) && t(g, x, c, v, f, {
                    gradient: !0
                  }), T.hasLines(x) && (r(g, x, c, v, f, {
                    backoff: !0
                  }), i(g, x, f), f("connectgaps"), f("line.simplify")), T.hasText(x) && (f("texttemplate"), a(g, x, v, f));
                  var C = [];
                  (T.hasMarkers(x) || T.hasText(x)) && (f("cliponaxis"), f("marker.maxdisplayed"), C.push("points")), f("fill", S ? S.fillDflt : "none"), x.fill !== "none" && (l(g, x, c, f, {
                    moduleHasFillgradient: !0
                  }), T.hasLines(x) || i(g, x, f), o(f, "fillpattern", x.fillcolor, !1));
                  var m = (x.line || {}).color, L = (x.marker || {}).color;
                  (x.fill === "tonext" || x.fill === "toself") && C.push("fills"), f("hoveron", C.join("+") || "points"), x.hoveron !== "fills" && f("hovertemplate");
                  var d = P.getComponentMethod("errorbars", "supplyDefaults");
                  d(g, x, m || L || c, {
                    axis: "y"
                  }), d(g, x, m || L || c, {
                    axis: "x",
                    inherit: "y"
                  }), b.coerceSelectionMarkerOpacity(x, f);
                }
              };
            }
          ),
          /***/
          19326: (
            /***/
            function(Y) {
              Y.exports = function(e) {
                return {
                  valType: "color",
                  editType: "style",
                  anim: !0
                };
              };
            }
          ),
          /***/
          54114: (
            /***/
            function(Y, K, e) {
              var b = e(78766), P = e(34809).isArrayOrTypedArray;
              function n(s) {
                for (var T = b.interpolate(s[0][1], s[1][1], 0.5), A = 2; A < s.length; A++) {
                  var p = b.interpolate(s[A - 1][1], s[A][1], 0.5);
                  T = b.interpolate(T, p, s[A - 1][0] / s[A][0]);
                }
                return T;
              }
              Y.exports = function(T, A, p, u, t) {
                t || (t = {});
                var r = !1;
                if (A.marker) {
                  var i = A.marker.color, a = (A.marker.line || {}).color;
                  i && !P(i) ? r = i : a && !P(a) && (r = a);
                }
                var l;
                if (t.moduleHasFillgradient) {
                  var o = u("fillgradient.type");
                  if (o !== "none") {
                    u("fillgradient.start"), u("fillgradient.stop");
                    var y = u("fillgradient.colorscale");
                    y && (l = n(y));
                  }
                }
                u("fillcolor", b.addOpacity((A.line || {}).color || r || l || p, 0.5));
              };
            }
          ),
          /***/
          15294: (
            /***/
            function(Y, K, e) {
              var b = e(29714);
              Y.exports = function(n, s, T) {
                var A = {}, p = {
                  _fullLayout: T
                }, u = b.getFromTrace(p, s, "x"), t = b.getFromTrace(p, s, "y"), r = n.orig_x;
                r === void 0 && (r = n.x);
                var i = n.orig_y;
                return i === void 0 && (i = n.y), A.xLabel = b.tickText(u, u.c2l(r), !0).text, A.yLabel = b.tickText(t, t.c2l(i), !0).text, A;
              };
            }
          ),
          /***/
          11539: (
            /***/
            function(Y, K, e) {
              var b = e(78766), P = e(64726);
              Y.exports = function(s, T) {
                var A, p;
                if (s.mode === "lines")
                  return A = s.line.color, A && b.opacity(A) ? A : s.fillcolor;
                if (s.mode === "none")
                  return s.fill ? s.fillcolor : "";
                var u = T.mcc || (s.marker || {}).color, t = T.mlcc || ((s.marker || {}).line || {}).color;
                return p = u && b.opacity(u) ? u : t && b.opacity(t) && (T.mlw || ((s.marker || {}).line || {}).width) ? t : "", p ? b.opacity(p) < 0.3 ? b.addOpacity(p, 0.3) : p : (A = (s.line || {}).color, A && b.opacity(A) && P.hasLines(s) && s.line.width ? A : s.fillcolor);
              };
            }
          ),
          /***/
          36301: (
            /***/
            function(Y, K, e) {
              var b = e(84391).getAxisGroup;
              Y.exports = function(n, s, T, A) {
                var p = s.orientation, u = s[{
                  v: "x",
                  h: "y"
                }[p] + "axis"], t = b(T, u) + p, r = T._alignmentOpts || {}, i = A("alignmentgroup"), a = r[t];
                a || (a = r[t] = {});
                var l = a[i];
                l ? l.traces.push(s) : l = a[i] = {
                  traces: [s],
                  alignmentIndex: Object.keys(a).length,
                  offsetGroups: {}
                };
                var o = A("offsetgroup"), y = l.offsetGroups, g = y[o];
                o && (g || (g = y[o] = {
                  offsetIndex: Object.keys(y).length
                }), s._offsetIndex = g.offsetIndex);
              };
            }
          ),
          /***/
          37255: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(32141), n = e(33626), s = e(11539), T = e(78766), A = b.fillText;
              Y.exports = function(u, t, r, i) {
                var a = u.cd, l = a[0].trace, o = u.xa, y = u.ya, g = o.c2p(t), x = y.c2p(r), c = [g, x], v = l.hoveron || "", f = l.mode.indexOf("markers") !== -1 ? 3 : 0.5, _ = !!l.xperiodalignment, S = !!l.yperiodalignment;
                if (v.indexOf("points") !== -1) {
                  var M = function(rt) {
                    if (_) {
                      var st = o.c2p(rt.xStart), vt = o.c2p(rt.xEnd);
                      return g >= Math.min(st, vt) && g <= Math.max(st, vt) ? 0 : 1 / 0;
                    }
                    var ht = Math.max(3, rt.mrc || 0), et = 1 - 1 / ht, Q = Math.abs(o.c2p(rt.x) - g);
                    return Q < ht ? et * Q / ht : Q - ht + et;
                  }, C = function(rt) {
                    if (S) {
                      var st = y.c2p(rt.yStart), vt = y.c2p(rt.yEnd);
                      return x >= Math.min(st, vt) && x <= Math.max(st, vt) ? 0 : 1 / 0;
                    }
                    var ht = Math.max(3, rt.mrc || 0), et = 1 - 1 / ht, Q = Math.abs(y.c2p(rt.y) - x);
                    return Q < ht ? et * Q / ht : Q - ht + et;
                  }, m = function(rt) {
                    var st = Math.max(f, rt.mrc || 0), vt = o.c2p(rt.x) - g, ht = y.c2p(rt.y) - x;
                    return Math.max(Math.sqrt(vt * vt + ht * ht) - st, 1 - f / st);
                  }, L = P.getDistanceFunction(i, M, C, m);
                  if (P.getClosest(a, L, u), u.index !== !1) {
                    var d = a[u.index], h = o.c2p(d.x, !0), E = y.c2p(d.y, !0), w = d.mrc || 1;
                    u.index = d.i;
                    var z = a[0].t.orientation, O = z && (d.sNorm || d.s), B = z === "h" ? O : d.orig_x !== void 0 ? d.orig_x : d.x, V = z === "v" ? O : d.orig_y !== void 0 ? d.orig_y : d.y;
                    return b.extendFlat(u, {
                      color: s(l, d),
                      x0: h - w,
                      x1: h + w,
                      xLabelVal: B,
                      y0: E - w,
                      y1: E + w,
                      yLabelVal: V,
                      spikeDistance: m(d),
                      hovertemplate: l.hovertemplate
                    }), A(d, l, u), n.getComponentMethod("errorbars", "hoverInfo")(d, l, u), [u];
                  }
                }
                function U(rt) {
                  if (!rt)
                    return !1;
                  var st = rt.node();
                  try {
                    var vt = new DOMPoint(c[0], c[1]);
                    return st.isPointInFill(vt);
                  } catch {
                    var ht = st.ownerSVGElement.createSVGPoint();
                    return ht.x = c[0], ht.y = c[1], st.isPointInFill(ht);
                  }
                }
                function H(rt) {
                  var st, vt = [], ht = 1 / 0, et = -1 / 0, Q = 1 / 0, j = -1 / 0, at;
                  for (st = 0; st < rt.length; st++) {
                    var ut = rt[st];
                    ut.contains(c) && (vt.push(ut), Q = Math.min(Q, ut.ymin), j = Math.max(j, ut.ymax));
                  }
                  if (vt.length === 0)
                    return null;
                  Q = Math.max(Q, 0), j = Math.min(j, y._length), at = (Q + j) / 2;
                  var nt, X, ct, lt, pt, wt, Et;
                  for (st = 0; st < vt.length; st++)
                    for (X = vt[st].pts, nt = 1; nt < X.length; nt++)
                      wt = X[nt - 1][1], Et = X[nt][1], wt > at != Et >= at && (lt = X[nt - 1][0], pt = X[nt][0], Et - wt && (ct = lt + (pt - lt) * (at - wt) / (Et - wt), ht = Math.min(ht, ct), et = Math.max(et, ct)));
                  return ht = Math.max(ht, 0), et = Math.min(et, o._length), {
                    x0: ht,
                    x1: et,
                    y0: at,
                    y1: at
                  };
                }
                if (v.indexOf("fills") !== -1 && l._fillElement) {
                  var F = U(l._fillElement) && !U(l._fillExclusionElement);
                  if (F) {
                    var G = H(l._polygons);
                    G === null && (G = {
                      x0: c[0],
                      x1: c[0],
                      y0: c[1],
                      y1: c[1]
                    });
                    var q = T.defaultLine;
                    return T.opacity(l.fillcolor) ? q = l.fillcolor : T.opacity((l.line || {}).color) && (q = l.line.color), b.extendFlat(u, {
                      // never let a 2D override 1D type as closest point
                      // also: no spikeDistance, it's not allowed for fills
                      distance: u.maxHoverDistance,
                      x0: G.x0,
                      x1: G.x1,
                      y0: G.y0,
                      y1: G.y1,
                      color: q,
                      hovertemplate: !1
                    }), delete u.index, l.text && !b.isArrayOrTypedArray(l.text) ? u.text = String(l.text) : u.text = l.name, [u];
                  }
                }
              };
            }
          ),
          /***/
          69693: (
            /***/
            function(Y, K, e) {
              var b = e(64726);
              Y.exports = {
                hasLines: b.hasLines,
                hasMarkers: b.hasMarkers,
                hasText: b.hasText,
                isBubble: b.isBubble,
                attributes: e(36640),
                layoutAttributes: e(26667),
                supplyDefaults: e(40247),
                crossTraceDefaults: e(53044),
                supplyLayoutDefaults: e(12332),
                calc: e(26544).calc,
                crossTraceCalc: e(75603),
                arraysToCalcdata: e(99203),
                plot: e(36098),
                colorbar: e(21146),
                formatLabels: e(15294),
                style: e(9408).style,
                styleOnSelect: e(9408).styleOnSelect,
                hoverPoints: e(37255),
                selectPoints: e(32665),
                animatable: !0,
                moduleType: "trace",
                name: "scatter",
                basePlotModule: e(37703),
                categories: ["cartesian", "svg", "symbols", "errorBarsOK", "showLegend", "scatter-like", "zoomScale"],
                meta: {}
              };
            }
          ),
          /***/
          26667: (
            /***/
            function(Y) {
              Y.exports = {
                scattermode: {
                  valType: "enumerated",
                  values: ["group", "overlay"],
                  dflt: "overlay",
                  editType: "calc"
                },
                scattergap: {
                  valType: "number",
                  min: 0,
                  max: 1,
                  editType: "calc"
                }
              };
            }
          ),
          /***/
          12332: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(26667);
              Y.exports = function(n, s) {
                function T(p, u) {
                  return b.coerce(n, s, P, p, u);
                }
                var A = s.barmode === "group";
                s.scattermode === "group" && T("scattergap", A ? s.bargap : 0.2);
              };
            }
          ),
          /***/
          98168: (
            /***/
            function(Y, K, e) {
              var b = e(34809).isArrayOrTypedArray, P = e(65477).hasColorscale, n = e(39356);
              Y.exports = function(T, A, p, u, t, r) {
                r || (r = {});
                var i = (T.marker || {}).color;
                if (i && i._inputArray && (i = i._inputArray), t("line.color", p), P(T, "line"))
                  n(T, A, u, t, {
                    prefix: "line.",
                    cLetter: "c"
                  });
                else {
                  var a = (b(i) ? !1 : i) || p;
                  t("line.color", a);
                }
                t("line.width"), r.noDash || t("line.dash"), r.backoff && t("line.backoff");
              };
            }
          ),
          /***/
          5525: (
            /***/
            function(Y, K, e) {
              var b = e(62203), P = e(63821), n = P.BADNUM, s = P.LOG_CLIP, T = s + 0.5, A = s - 0.5, p = e(34809), u = p.segmentsIntersect, t = p.constrain, r = e(32660);
              Y.exports = function(a, l) {
                var o = l.trace || {}, y = l.xaxis, g = l.yaxis, x = y.type === "log", c = g.type === "log", v = y._length, f = g._length, _ = l.backoff, S = o.marker, M = l.connectGaps, C = l.baseTolerance, m = l.shape, L = m === "linear", d = o.fill && o.fill !== "none", h = [], E = r.minTolerance, w = a.length, z = new Array(w), O = 0, B, V, U, H, F, G, q, rt, st, vt, ht, et, Q, j, at, ut;
                function nt(fe) {
                  var Me = a[fe];
                  if (!Me) return !1;
                  var ir = l.linearized ? y.l2p(Me.x) : y.c2p(Me.x), mr = l.linearized ? g.l2p(Me.y) : g.c2p(Me.y);
                  if (ir === n) {
                    if (x && (ir = y.c2p(Me.x, !0)), ir === n) return !1;
                    c && mr === n && (ir *= Math.abs(y._m * f * (y._m > 0 ? T : A) / (g._m * v * (g._m > 0 ? T : A)))), ir *= 1e3;
                  }
                  if (mr === n) {
                    if (c && (mr = g.c2p(Me.y, !0)), mr === n) return !1;
                    mr *= 1e3;
                  }
                  return [ir, mr];
                }
                function X(fe, Me, ir, mr) {
                  var Xe = ir - fe, xe = mr - Me, me = 0.5 - fe, Le = 0.5 - Me, qt = Xe * Xe + xe * xe, De = Xe * me + xe * Le;
                  if (De > 0 && De < qt) {
                    var Je = me * xe - Le * Xe;
                    if (Je * Je < qt) return !0;
                  }
                }
                var ct, lt;
                function pt(fe, Me) {
                  var ir = fe[0] / v, mr = fe[1] / f, Xe = Math.max(0, -ir, ir - 1, -mr, mr - 1);
                  return Xe && ct !== void 0 && X(ir, mr, ct, lt) && (Xe = 0), Xe && Me && X(ir, mr, Me[0] / v, Me[1] / f) && (Xe = 0), (1 + r.toleranceGrowth * Xe) * C;
                }
                function wt(fe, Me) {
                  var ir = fe[0] - Me[0], mr = fe[1] - Me[1];
                  return Math.sqrt(ir * ir + mr * mr);
                }
                var Et = r.maxScreensAway, Ct = -v * Et, Gt = v * (1 + Et), Jt = -f * Et, Qt = f * (1 + Et), Vt = [[Ct, Jt, Gt, Jt], [Gt, Jt, Gt, Qt], [Gt, Qt, Ct, Qt], [Ct, Qt, Ct, Jt]], zt, Rt, Wt, kt, re, ge;
                function _e(fe, Me) {
                  for (var ir = [], mr = 0, Xe = 0; Xe < 4; Xe++) {
                    var xe = Vt[Xe], me = u(fe[0], fe[1], Me[0], Me[1], xe[0], xe[1], xe[2], xe[3]);
                    me && (!mr || Math.abs(me.x - ir[0][0]) > 1 || Math.abs(me.y - ir[0][1]) > 1) && (me = [me.x, me.y], mr && wt(me, fe) < wt(ir[0], fe) ? ir.unshift(me) : ir.push(me), mr++);
                  }
                  return ir;
                }
                function ce(fe) {
                  if (fe[0] < Ct || fe[0] > Gt || fe[1] < Jt || fe[1] > Qt)
                    return [t(fe[0], Ct, Gt), t(fe[1], Jt, Qt)];
                }
                function ae(fe, Me) {
                  if (fe[0] === Me[0] && (fe[0] === Ct || fe[0] === Gt) || fe[1] === Me[1] && (fe[1] === Jt || fe[1] === Qt)) return !0;
                }
                function Se(fe, Me) {
                  var ir = [], mr = ce(fe), Xe = ce(Me);
                  return mr && Xe && ae(mr, Xe) || (mr && ir.push(mr), Xe && ir.push(Xe)), ir;
                }
                function ze(fe, Me, ir) {
                  return function(mr, Xe) {
                    var xe = ce(mr), me = ce(Xe), Le = [];
                    if (xe && me && ae(xe, me)) return Le;
                    xe && Le.push(xe), me && Le.push(me);
                    var qt = 2 * p.constrain((mr[fe] + Xe[fe]) / 2, Me, ir) - ((xe || mr)[fe] + (me || Xe)[fe]);
                    if (qt) {
                      var De;
                      xe && me ? De = qt > 0 == xe[fe] > me[fe] ? xe : me : De = xe || me, De[fe] += qt;
                    }
                    return Le;
                  };
                }
                var Ne;
                m === "linear" || m === "spline" ? Ne = _e : m === "hv" || m === "vh" ? Ne = Se : m === "hvh" ? Ne = ze(0, Ct, Gt) : m === "vhv" && (Ne = ze(1, Jt, Qt));
                function Ve(fe, Me) {
                  var ir = Me[0] - fe[0], mr = (Me[1] - fe[1]) / ir, Xe = (fe[1] * Me[0] - Me[1] * fe[0]) / ir;
                  return Xe > 0 ? [mr > 0 ? Ct : Gt, Qt] : [mr > 0 ? Gt : Ct, Jt];
                }
                function Oe(fe) {
                  var Me = fe[0], ir = fe[1], mr = Me === z[O - 1][0], Xe = ir === z[O - 1][1];
                  if (!(mr && Xe))
                    if (O > 1) {
                      var xe = Me === z[O - 2][0], me = ir === z[O - 2][1];
                      mr && (Me === Ct || Me === Gt) && xe ? me ? O-- : z[O - 1] = fe : Xe && (ir === Jt || ir === Qt) && me ? xe ? O-- : z[O - 1] = fe : z[O++] = fe;
                    } else z[O++] = fe;
                }
                function ur(fe) {
                  z[O - 1][0] !== fe[0] && z[O - 1][1] !== fe[1] && Oe([Wt, kt]), Oe(fe), re = null, Wt = kt = 0;
                }
                var ie = p.isArrayOrTypedArray(S);
                function $t(fe) {
                  if (fe && _ && (fe.i = B, fe.d = a, fe.trace = o, fe.marker = ie ? S[fe.i] : S, fe.backoff = _), ct = fe[0] / v, lt = fe[1] / f, zt = fe[0] < Ct ? Ct : fe[0] > Gt ? Gt : 0, Rt = fe[1] < Jt ? Jt : fe[1] > Qt ? Qt : 0, zt || Rt) {
                    if (!O)
                      z[O++] = [zt || fe[0], Rt || fe[1]];
                    else if (re) {
                      var Me = Ne(re, fe);
                      Me.length > 1 && (ur(Me[0]), z[O++] = Me[1]);
                    } else
                      ge = Ne(z[O - 1], fe)[0], z[O++] = ge;
                    var ir = z[O - 1];
                    zt && Rt && (ir[0] !== zt || ir[1] !== Rt) ? (re && (Wt !== zt && kt !== Rt ? Oe(Wt && kt ? Ve(re, fe) : [Wt || zt, kt || Rt]) : Wt && kt && Oe([Wt, kt])), Oe([zt, Rt])) : Wt - zt && kt - Rt && Oe([zt || Wt, Rt || kt]), re = fe, Wt = zt, kt = Rt;
                  } else
                    re && ur(Ne(re, fe)[0]), z[O++] = fe;
                }
                for (B = 0; B < w; B++)
                  if (V = nt(B), !!V) {
                    for (O = 0, re = null, $t(V), B++; B < w; B++) {
                      if (H = nt(B), !H) {
                        if (M) continue;
                        break;
                      }
                      if (!L || !l.simplify) {
                        $t(H);
                        continue;
                      }
                      var jt = nt(B + 1);
                      if (vt = wt(H, V), !(!(d && (O === 0 || O === w - 1)) && vt < pt(H, jt) * E)) {
                        for (rt = [(H[0] - V[0]) / vt, (H[1] - V[1]) / vt], F = V, ht = vt, et = j = at = 0, q = !1, U = H, B++; B < a.length; B++) {
                          if (G = jt, jt = nt(B + 1), !G) {
                            if (M) continue;
                            break;
                          }
                          if (st = [G[0] - V[0], G[1] - V[1]], ut = st[0] * rt[1] - st[1] * rt[0], j = Math.min(j, ut), at = Math.max(at, ut), at - j > pt(G, jt)) break;
                          U = G, Q = st[0] * rt[0] + st[1] * rt[1], Q > ht ? (ht = Q, H = G, q = !1) : Q < et && (et = Q, F = G, q = !0);
                        }
                        if (q ? ($t(H), U !== F && $t(F)) : (F !== V && $t(F), U !== H && $t(H)), $t(U), B >= a.length || !G) break;
                        $t(G), V = G;
                      }
                    }
                    re && Oe([Wt || re[0], kt || re[1]]), h.push(z.slice(0, O));
                  }
                var ee = m.slice(m.length - 1);
                if (_ && ee !== "h" && ee !== "v") {
                  for (var Bt = !1, Xt = -1, Zt = [], ye = 0; ye < h.length; ye++)
                    for (var Mt = 0; Mt < h[ye].length - 1; Mt++) {
                      var St = h[ye][Mt], Lt = h[ye][Mt + 1], te = b.applyBackoff(Lt, St);
                      (te[0] !== Lt[0] || te[1] !== Lt[1]) && (Bt = !0), Zt[Xt + 1] || (Xt++, Zt[Xt] = [St, [te[0], te[1]]]);
                    }
                  return Bt ? Zt : h;
                }
                return h;
              };
            }
          ),
          /***/
          91602: (
            /***/
            function(Y) {
              Y.exports = function(e, b, P) {
                var n = P("line.shape");
                n === "spline" && P("line.smoothing");
              };
            }
          ),
          /***/
          17210: (
            /***/
            function(Y) {
              var K = {
                tonextx: 1,
                tonexty: 1,
                tonext: 1
              };
              Y.exports = function(b, P, n) {
                var s, T, A, p, u, t = {}, r = !1, i = -1, a = 0, l = -1;
                for (T = 0; T < n.length; T++)
                  s = n[T][0].trace, A = s.stackgroup || "", A ? A in t ? u = t[A] : (u = t[A] = a, a++) : s.fill in K && l >= 0 ? u = l : (u = l = a, a++), u < i && (r = !0), s._groupIndex = i = u;
                var o = n.slice();
                r && o.sort(function(g, x) {
                  var c = g[0].trace, v = x[0].trace;
                  return c._groupIndex - v._groupIndex || c.index - v.index;
                });
                var y = {};
                for (T = 0; T < o.length; T++)
                  s = o[T][0].trace, A = s.stackgroup || "", s.visible === !0 ? (s._nexttrace = null, s.fill in K && (p = y[A], s._prevtrace = p || null, p && (p._nexttrace = s)), s._ownfill = s.fill && (s.fill.substr(0, 6) === "tozero" || s.fill === "toself" || s.fill.substr(0, 2) === "to" && !s._prevtrace), y[A] = s) : s._prevtrace = s._nexttrace = s._ownfill = null;
                return o;
              };
            }
          ),
          /***/
          92527: (
            /***/
            function(Y, K, e) {
              var b = e(10721);
              Y.exports = function(n, s) {
                s || (s = 2);
                var T = n.marker, A = T.sizeref || 1, p = T.sizemin || 0, u = T.sizemode === "area" ? function(t) {
                  return Math.sqrt(t / A);
                } : function(t) {
                  return t / A;
                };
                return function(t) {
                  var r = u(t / s);
                  return b(r) && r > 0 ? Math.max(r, p) : 0;
                };
              };
            }
          ),
          /***/
          21146: (
            /***/
            function(Y) {
              Y.exports = {
                container: "marker",
                min: "cmin",
                max: "cmax"
              };
            }
          ),
          /***/
          24272: (
            /***/
            function(Y, K, e) {
              var b = e(78766), P = e(65477).hasColorscale, n = e(39356), s = e(64726);
              Y.exports = function(A, p, u, t, r, i) {
                var a = s.isBubble(A), l = (A.line || {}).color, o;
                if (i = i || {}, l && (u = l), r("marker.symbol"), r("marker.opacity", a ? 0.7 : 1), r("marker.size"), i.noAngle || (r("marker.angle"), i.noAngleRef || r("marker.angleref"), i.noStandOff || r("marker.standoff")), r("marker.color", u), P(A, "marker") && n(A, p, t, r, {
                  prefix: "marker.",
                  cLetter: "c"
                }), i.noSelect || (r("selected.marker.color"), r("unselected.marker.color"), r("selected.marker.size"), r("unselected.marker.size")), i.noLine || (l && !Array.isArray(l) && p.marker.color !== l ? o = l : a ? o = b.background : o = b.defaultLine, r("marker.line.color", o), P(A, "marker.line") && n(A, p, t, r, {
                  prefix: "marker.line.",
                  cLetter: "c"
                }), r("marker.line.width", a ? 1 : 0)), a && (r("marker.sizeref"), r("marker.sizemin"), r("marker.sizemode")), i.gradient) {
                  var y = r("marker.gradient.type");
                  y !== "none" && r("marker.gradient.color");
                }
              };
            }
          ),
          /***/
          99669: (
            /***/
            function(Y, K, e) {
              var b = e(34809).dateTick0, P = e(63821), n = P.ONEWEEK;
              function s(T, A) {
                return T % n === 0 ? b(A, 1) : b(A, 0);
              }
              Y.exports = function(A, p, u, t, r) {
                if (r || (r = {
                  x: !0,
                  y: !0
                }), r.x) {
                  var i = t("xperiod");
                  i && (t("xperiod0", s(i, p.xcalendar)), t("xperiodalignment"));
                }
                if (r.y) {
                  var a = t("yperiod");
                  a && (t("yperiod0", s(a, p.ycalendar)), t("yperiodalignment"));
                }
              };
            }
          ),
          /***/
          36098: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(33626), n = e(34809), s = n.ensureSingle, T = n.identity, A = e(62203), p = e(64726), u = e(5525), t = e(17210), r = e(80899).tester;
              Y.exports = function(y, g, x, c, v, f) {
                var _, S, M = !v, C = !!v && v.duration > 0, m = t(y, g, x);
                if (_ = c.selectAll("g.trace").data(m, function(d) {
                  return d[0].trace.uid;
                }), _.enter().append("g").attr("class", function(d) {
                  return "trace scatter trace" + d[0].trace.uid;
                }).style("stroke-miterlimit", 2), _.order(), i(y, _, g), C) {
                  f && (S = f());
                  var L = b.transition().duration(v.duration).ease(v.easing).each("end", function() {
                    S && S();
                  }).each("interrupt", function() {
                    S && S();
                  });
                  L.each(function() {
                    c.selectAll("g.trace").each(function(d, h) {
                      a(y, h, g, d, m, this, v);
                    });
                  });
                } else
                  _.each(function(d, h) {
                    a(y, h, g, d, m, this, v);
                  });
                M && _.exit().remove(), c.selectAll("path:not([d])").remove();
              };
              function i(o, y, g) {
                y.each(function(x) {
                  var c = s(b.select(this), "g", "fills");
                  A.setClipUrl(c, g.layerClipId, o);
                  var v = x[0].trace, f = [];
                  v._ownfill && f.push("_ownFill"), v._nexttrace && f.push("_nextFill");
                  var _ = c.selectAll("g").data(f, T);
                  _.enter().append("g"), _.exit().each(function(S) {
                    v[S] = null;
                  }).remove(), _.order().each(function(S) {
                    v[S] = s(b.select(this), "path", "js-fill");
                  });
                });
              }
              function a(o, y, g, x, c, v, f) {
                var _ = o._context.staticPlot, S;
                l(o, y, g, x, c);
                var M = !!f && f.duration > 0;
                function C(Oe) {
                  return M ? Oe.transition() : Oe;
                }
                var m = g.xaxis, L = g.yaxis, d = x[0].trace, h = d.line, E = b.select(v), w = s(E, "g", "errorbars"), z = s(E, "g", "lines"), O = s(E, "g", "points"), B = s(E, "g", "text");
                if (P.getComponentMethod("errorbars", "plot")(o, w, g, f), d.visible !== !0) return;
                C(E).style("opacity", d.opacity);
                var V, U, H = d.fill.charAt(d.fill.length - 1);
                H !== "x" && H !== "y" && (H = "");
                var F, G;
                H === "y" ? (F = 1, G = L.c2p(0, !0)) : H === "x" && (F = 0, G = m.c2p(0, !0)), x[0][g.isRangePlot ? "nodeRangePlot3" : "node3"] = E;
                var q = "", rt = [], st = d._prevtrace, vt = null, ht = null;
                st && (q = st._prevRevpath || "", U = st._nextFill, rt = st._ownPolygons, vt = st._fillsegments, ht = st._fillElement);
                var et, Q, j = "", at = "", ut, nt, X, ct, lt, pt, wt = [];
                d._polygons = [];
                var Et = [], Ct = [], Gt = n.noop;
                if (V = d._ownFill, p.hasLines(d) || d.fill !== "none") {
                  U && U.datum(x), ["hv", "vh", "hvh", "vhv"].indexOf(h.shape) !== -1 ? (ut = A.steps(h.shape), nt = A.steps(h.shape.split("").reverse().join(""))) : h.shape === "spline" ? ut = nt = function(Oe) {
                    var ur = Oe[Oe.length - 1];
                    return Oe.length > 1 && Oe[0][0] === ur[0] && Oe[0][1] === ur[1] ? A.smoothclosed(Oe.slice(1), h.smoothing) : A.smoothopen(Oe, h.smoothing);
                  } : ut = nt = function(Oe) {
                    return "M" + Oe.join("L");
                  }, X = function(Oe) {
                    return nt(Oe.reverse());
                  }, Ct = u(x, {
                    xaxis: m,
                    yaxis: L,
                    trace: d,
                    connectGaps: d.connectgaps,
                    baseTolerance: Math.max(h.width || 1, 3) / 4,
                    shape: h.shape,
                    backoff: h.backoff,
                    simplify: h.simplify,
                    fill: d.fill
                  }), Et = new Array(Ct.length);
                  var Jt = 0;
                  for (S = 0; S < Ct.length; S++) {
                    var Qt, Vt = Ct[S];
                    !Qt || !H ? (Qt = Vt.slice(), Et[Jt] = Qt, Jt++) : Qt.push.apply(Qt, Vt);
                  }
                  d._fillElement = null, d._fillExclusionElement = ht, d._fillsegments = Et.slice(0, Jt), Et = d._fillsegments, Ct.length && (ct = Ct[0][0].slice(), lt = Ct[Ct.length - 1], pt = lt[lt.length - 1].slice()), Gt = function(Oe) {
                    return function(ur) {
                      if (et = ut(ur), Q = X(ur), j ? H ? (j += "L" + et.substr(1), at = Q + ("L" + at.substr(1))) : (j += "Z" + et, at = Q + "Z" + at) : (j = et, at = Q), p.hasLines(d)) {
                        var ie = b.select(this);
                        if (ie.datum(x), Oe)
                          C(ie.style("opacity", 0).attr("d", et).call(A.lineGroupStyle)).style("opacity", 1);
                        else {
                          var $t = C(ie);
                          $t.attr("d", et), A.singleLineStyle(x, $t);
                        }
                      }
                    };
                  };
                }
                var zt = z.selectAll(".js-line").data(Ct);
                C(zt.exit()).style("opacity", 0).remove(), zt.each(Gt(!1)), zt.enter().append("path").classed("js-line", !0).style("vector-effect", _ ? "none" : "non-scaling-stroke").call(A.lineGroupStyle).each(Gt(!0)), A.setClipUrl(zt, g.layerClipId, o);
                function Rt(Oe) {
                  C(Oe).attr("d", "M0,0Z");
                }
                var Wt = function() {
                  var Oe = new Array(Et.length);
                  for (S = 0; S < Et.length; S++)
                    Oe[S] = r(Et[S]);
                  return Oe;
                }, kt = function(Oe) {
                  var ur, ie;
                  if (!Oe || Oe.length === 0)
                    for (ur = new Array(Et.length), ie = 0; ie < Et.length; ie++) {
                      var $t = Et[ie][0].slice(), jt = Et[ie][Et[ie].length - 1].slice();
                      $t[F] = jt[F] = G;
                      var ee = [jt, $t], Bt = ee.concat(Et[ie]);
                      ur[ie] = r(Bt);
                    }
                  else {
                    for (ur = new Array(Oe.length - 1 + Et.length), ie = 0; ie < Oe.length - 1; ie++)
                      ur[ie] = r(Oe[ie]);
                    var Xt = Oe[Oe.length - 1].slice();
                    for (Xt.reverse(), ie = 0; ie < Et.length; ie++)
                      ur[Oe.length - 1 + ie] = r(Et[ie].concat(Xt));
                  }
                  return ur;
                };
                Ct.length ? (V ? (V.datum(x), ct && pt && (H ? (ct[F] = pt[F] = G, C(V).attr("d", "M" + pt + "L" + ct + "L" + j.substr(1)).call(A.singleFillStyle, o), wt = kt(null)) : (C(V).attr("d", j + "Z").call(A.singleFillStyle, o), wt = Wt())), d._polygons = wt, d._fillElement = V) : U && (d.fill.substr(0, 6) === "tonext" && j && q ? (d.fill === "tonext" ? (C(U).attr("d", j + "Z" + q + "Z").call(A.singleFillStyle, o), wt = Wt(), d._polygons = wt.concat(rt)) : (C(U).attr("d", j + "L" + q.substr(1) + "Z").call(A.singleFillStyle, o), wt = kt(vt), d._polygons = wt), d._fillElement = U) : Rt(U)), d._prevRevpath = at) : (V ? Rt(V) : U && Rt(U), d._prevRevpath = null), d._ownPolygons = wt;
                function re(Oe) {
                  return Oe.filter(function(ur) {
                    return !ur.gap && ur.vis;
                  });
                }
                function ge(Oe) {
                  return Oe.filter(function(ur) {
                    return ur.vis;
                  });
                }
                function _e(Oe) {
                  return Oe.filter(function(ur) {
                    return !ur.gap;
                  });
                }
                function ce(Oe) {
                  return Oe.id;
                }
                function ae(Oe) {
                  if (Oe.ids)
                    return ce;
                }
                function Se() {
                  return !1;
                }
                function ze(Oe, ur, ie) {
                  var $t, jt, ee, Bt = ie[0].trace, Xt = p.hasMarkers(Bt), Zt = p.hasText(Bt), ye = ae(Bt), Mt = Se, St = Se;
                  if (Xt || Zt) {
                    var Lt = T, te = Bt.stackgroup, fe = te && o._fullLayout._scatterStackOpts[m._id + L._id][te].stackgaps === "infer zero";
                    Bt.marker.maxdisplayed || Bt._needsCull ? Lt = fe ? ge : re : te && !fe && (Lt = _e), Xt && (Mt = Lt), Zt && (St = Lt);
                  }
                  jt = Oe.selectAll("path.point"), $t = jt.data(Mt, ye);
                  var Me = $t.enter().append("path").classed("point", !0);
                  M && Me.call(A.pointStyle, Bt, o).call(A.translatePoints, m, L).style("opacity", 0).transition().style("opacity", 1), $t.order();
                  var ir;
                  Xt && (ir = A.makePointStyleFns(Bt)), $t.each(function(mr) {
                    var Xe = b.select(this), xe = C(Xe);
                    ee = A.translatePoint(mr, xe, m, L), ee ? (A.singlePointStyle(mr, xe, Bt, ir, o), g.layerClipId && A.hideOutsideRangePoint(mr, xe, m, L, Bt.xcalendar, Bt.ycalendar), Bt.customdata && Xe.classed("plotly-customdata", mr.data !== null && mr.data !== void 0)) : xe.remove();
                  }), M ? $t.exit().transition().style("opacity", 0).remove() : $t.exit().remove(), jt = ur.selectAll("g"), $t = jt.data(St, ye), $t.enter().append("g").classed("textpoint", !0).append("text"), $t.order(), $t.each(function(mr) {
                    var Xe = b.select(this), xe = C(Xe.select("text"));
                    ee = A.translatePoint(mr, xe, m, L), ee ? g.layerClipId && A.hideOutsideRangePoint(mr, Xe, m, L, Bt.xcalendar, Bt.ycalendar) : Xe.remove();
                  }), $t.selectAll("text").call(A.textPointStyle, Bt, o).each(function(mr) {
                    var Xe = m.c2p(mr.x), xe = L.c2p(mr.y);
                    b.select(this).selectAll("tspan.line").each(function() {
                      C(b.select(this)).attr({
                        x: Xe,
                        y: xe
                      });
                    });
                  }), $t.exit().remove();
                }
                O.datum(x), B.datum(x), ze(O, B, x);
                var Ne = d.cliponaxis === !1, Ve = Ne ? null : g.layerClipId;
                A.setClipUrl(O, Ve, o), A.setClipUrl(B, Ve, o);
              }
              function l(o, y, g, x, c) {
                var v = g.xaxis, f = g.yaxis, _ = b.extent(n.simpleMap(v.range, v.r2c)), S = b.extent(n.simpleMap(f.range, f.r2c)), M = x[0].trace;
                if (p.hasMarkers(M)) {
                  var C = M.marker.maxdisplayed;
                  if (C !== 0) {
                    var m = x.filter(function(E) {
                      return E.x >= _[0] && E.x <= _[1] && E.y >= S[0] && E.y <= S[1];
                    }), L = Math.ceil(m.length / C), d = 0;
                    c.forEach(function(E, w) {
                      var z = E[0].trace;
                      p.hasMarkers(z) && z.marker.maxdisplayed > 0 && w < y && d++;
                    });
                    var h = Math.round(d * L / 3 + Math.floor(d / 3) * L / 7.1);
                    x.forEach(function(E) {
                      delete E.vis;
                    }), m.forEach(function(E, w) {
                      Math.round((w + h) % L) === 0 && (E.vis = !0);
                    });
                  }
                }
              }
            }
          ),
          /***/
          32665: (
            /***/
            function(Y, K, e) {
              var b = e(64726);
              Y.exports = function(n, s) {
                var T = n.cd, A = n.xaxis, p = n.yaxis, u = [], t = T[0].trace, r, i, a, l, o = !b.hasMarkers(t) && !b.hasText(t);
                if (o) return [];
                if (s === !1)
                  for (r = 0; r < T.length; r++)
                    T[r].selected = 0;
                else
                  for (r = 0; r < T.length; r++)
                    i = T[r], a = A.c2p(i.x), l = p.c2p(i.y), i.i !== null && s.contains([a, l], !1, r, n) ? (u.push({
                      pointNumber: i.i,
                      x: A.c2d(i.x),
                      y: p.c2d(i.y)
                    }), i.selected = 1) : i.selected = 0;
                return u;
              };
            }
          ),
          /***/
          382: (
            /***/
            function(Y) {
              var K = ["orientation", "groupnorm", "stackgaps"];
              Y.exports = function(b, P, n, s) {
                var T = n._scatterStackOpts, A = s("stackgroup");
                if (A) {
                  var p = P.xaxis + P.yaxis, u = T[p];
                  u || (u = T[p] = {});
                  var t = u[A], r = !1;
                  t ? t.traces.push(P) : (t = u[A] = {
                    // keep track of trace indices for use during stacking calculations
                    // this will be filled in during `calc` and used during `crossTraceCalc`
                    // so it's OK if we don't recreate it during a non-calc edit
                    traceIndices: [],
                    // Hold on to the whole set of prior traces
                    // First one is most important, so we can clear defaults
                    // there if we find explicit values only in later traces.
                    // We're only going to *use* the values stored in groupOpts,
                    // but for the editor and validate we want things self-consistent
                    // The full set of traces is used only to fix `fill` default if
                    // we find `orientation: 'h'` beyond the first trace
                    traces: [P]
                  }, r = !0);
                  for (var i = {
                    orientation: P.x && !P.y ? "h" : "v"
                  }, a = 0; a < K.length; a++) {
                    var l = K[a], o = l + "Found";
                    if (!t[o]) {
                      var y = b[l] !== void 0, g = l === "orientation";
                      if ((y || r) && (t[l] = s(l, i[l]), g && (t.fillDflt = t[l] === "h" ? "tonextx" : "tonexty"), y && (t[o] = !0, !r && (delete t.traces[0][l], g))))
                        for (var x = 0; x < t.traces.length - 1; x++) {
                          var c = t.traces[x];
                          c._input.fill !== c.fill && (c.fill = t.fillDflt);
                        }
                    }
                  }
                  return t;
                }
              };
            }
          ),
          /***/
          9408: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(62203), n = e(33626);
              function s(u) {
                var t = b.select(u).selectAll("g.trace.scatter");
                t.style("opacity", function(r) {
                  return r[0].trace.opacity;
                }), t.selectAll("g.points").each(function(r) {
                  var i = b.select(this), a = r.trace || r[0].trace;
                  T(i, a, u);
                }), t.selectAll("g.text").each(function(r) {
                  var i = b.select(this), a = r.trace || r[0].trace;
                  A(i, a, u);
                }), t.selectAll("g.trace path.js-line").call(P.lineGroupStyle), t.selectAll("g.trace path.js-fill").call(P.fillGroupStyle, u, !1), n.getComponentMethod("errorbars", "style")(t);
              }
              function T(u, t, r) {
                P.pointStyle(u.selectAll("path.point"), t, r);
              }
              function A(u, t, r) {
                P.textPointStyle(u.selectAll("text"), t, r);
              }
              function p(u, t, r) {
                var i = t[0].trace;
                i.selectedpoints ? (P.selectedPointStyle(r.selectAll("path.point"), i), P.selectedTextStyle(r.selectAll("text"), i)) : (T(r, i, u), A(r, i, u));
              }
              Y.exports = {
                style: s,
                stylePoints: T,
                styleText: A,
                styleOnSelect: p
              };
            }
          ),
          /***/
          64726: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(87800).isTypedArraySpec;
              Y.exports = {
                hasLines: function(n) {
                  return n.visible && n.mode && n.mode.indexOf("lines") !== -1;
                },
                hasMarkers: function(n) {
                  return n.visible && (n.mode && n.mode.indexOf("markers") !== -1 || // until splom implements 'mode'
                  n.type === "splom");
                },
                hasText: function(n) {
                  return n.visible && n.mode && n.mode.indexOf("text") !== -1;
                },
                isBubble: function(n) {
                  var s = n.marker;
                  return b.isPlainObject(s) && (b.isArrayOrTypedArray(s.size) || P(s.size));
                }
              };
            }
          ),
          /***/
          663: (
            /***/
            function(Y, K, e) {
              var b = e(34809);
              Y.exports = function(P, n, s, T, A) {
                A = A || {}, T("textposition"), b.coerceFont(T, "textfont", A.font || s.font, A), A.noSelect || (T("selected.textfont.color"), T("unselected.textfont.color"));
              };
            }
          ),
          /***/
          99867: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(33626);
              Y.exports = function(s, T, A, p) {
                var u = p("x"), t = p("y"), r, i = P.getComponentMethod("calendars", "handleTraceDefaults");
                if (i(s, T, ["x", "y"], A), u) {
                  var a = b.minRowLength(u);
                  t ? r = Math.min(a, b.minRowLength(t)) : (r = a, p("y0"), p("dy"));
                } else {
                  if (!t) return 0;
                  r = b.minRowLength(t), p("x0"), p("dx");
                }
                return T._length = r, r;
              };
            }
          ),
          /***/
          14117: (
            /***/
            function(Y, K, e) {
              var b = e(36640), P = e(80337), n = e(87163), s = e(80712).axisHoverFormat, T = e(3208).rb, A = e(3208).ay, p = e(9829), u = e(84770), t = e(49467), r = e(93049).extendFlat, i = e(13582).overrideAll, a = e(62994), l = b.line, o = b.marker, y = o.line, g = r({
                width: l.width,
                dash: {
                  valType: "enumerated",
                  values: a(u),
                  dflt: "solid"
                }
              }, n("line"));
              function x(v) {
                return {
                  show: {
                    valType: "boolean",
                    dflt: !1
                  },
                  opacity: {
                    valType: "number",
                    min: 0,
                    max: 1,
                    dflt: 1
                  },
                  scale: {
                    valType: "number",
                    min: 0,
                    max: 10,
                    dflt: 0.6666666666666666
                  }
                };
              }
              var c = Y.exports = i({
                x: b.x,
                y: b.y,
                z: {
                  valType: "data_array"
                },
                text: r({}, b.text, {}),
                texttemplate: A({}, {}),
                hovertext: r({}, b.hovertext, {}),
                hovertemplate: T(),
                xhoverformat: s("x"),
                yhoverformat: s("y"),
                zhoverformat: s("z"),
                mode: r(
                  {},
                  b.mode,
                  // shouldn't this be on-par with 2D?
                  {
                    dflt: "lines+markers"
                  }
                ),
                surfaceaxis: {
                  valType: "enumerated",
                  values: [-1, 0, 1, 2],
                  dflt: -1
                },
                surfacecolor: {
                  valType: "color"
                },
                projection: {
                  x: x(),
                  y: x(),
                  z: x()
                },
                connectgaps: b.connectgaps,
                line: g,
                marker: r({
                  // Parity with scatter.js?
                  symbol: {
                    valType: "enumerated",
                    values: a(t),
                    dflt: "circle",
                    arrayOk: !0
                  },
                  size: r({}, o.size, {
                    dflt: 8
                  }),
                  sizeref: o.sizeref,
                  sizemin: o.sizemin,
                  sizemode: o.sizemode,
                  opacity: r({}, o.opacity, {
                    arrayOk: !1
                  }),
                  colorbar: o.colorbar,
                  line: r({
                    width: r({}, y.width, {
                      arrayOk: !1
                    })
                  }, n("marker.line"))
                }, n("marker")),
                textposition: r({}, b.textposition, {
                  dflt: "top center"
                }),
                textfont: P({
                  noFontShadow: !0,
                  noFontLineposition: !0,
                  noFontTextcase: !0,
                  editType: "calc",
                  colorEditType: "style",
                  arrayOk: !0,
                  variantValues: ["normal", "small-caps"]
                }),
                opacity: p.opacity,
                hoverinfo: r({}, p.hoverinfo)
              }, "calc", "nested");
              c.x.editType = c.y.editType = c.z.editType = "calc+clearAxisTypes";
            }
          ),
          /***/
          37593: (
            /***/
            function(Y, K, e) {
              var b = e(99203), P = e(77272);
              Y.exports = function(s, T) {
                var A = [{
                  x: !1,
                  y: !1,
                  trace: T,
                  t: {}
                }];
                return b(A, T), P(s, T), A;
              };
            }
          ),
          /***/
          95447: (
            /***/
            function(Y, K, e) {
              var b = e(33626);
              function P(T, A, p, u) {
                if (!A || !A.visible) return null;
                for (var t = b.getComponentMethod("errorbars", "makeComputeError")(A), r = new Array(T.length), i = 0; i < T.length; i++) {
                  var a = t(+T[i], i);
                  if (u.type === "log") {
                    var l = u.c2l(T[i]), o = T[i] - a[0], y = T[i] + a[1];
                    if (r[i] = [(u.c2l(o, !0) - l) * p, (u.c2l(y, !0) - l) * p], o > 0) {
                      var g = u.c2l(o);
                      u._lowerLogErrorBound || (u._lowerLogErrorBound = g), u._lowerErrorBound = Math.min(u._lowerLogErrorBound, g);
                    }
                  } else
                    r[i] = [-a[0] * p, a[1] * p];
                }
                return r;
              }
              function n(T) {
                for (var A = 0; A < T.length; A++)
                  if (T[A]) return T[A].length;
                return 0;
              }
              function s(T, A, p) {
                var u = [P(T.x, T.error_x, A[0], p.xaxis), P(T.y, T.error_y, A[1], p.yaxis), P(T.z, T.error_z, A[2], p.zaxis)], t = n(u);
                if (t === 0) return null;
                for (var r = new Array(t), i = 0; i < t; i++) {
                  for (var a = [[0, 0, 0], [0, 0, 0]], l = 0; l < 3; l++)
                    if (u[l])
                      for (var o = 0; o < 2; o++)
                        a[o][l] = u[l][i][o];
                  r[i] = a;
                }
                return r;
              }
              Y.exports = s;
            }
          ),
          /***/
          16533: (
            /***/
            function(Y, K, e) {
              var b = e(99098).gl_line3d, P = e(99098).gl_scatter3d, n = e(99098).gl_error3d, s = e(99098).gl_mesh3d, T = e(99098).delaunay_triangulate, A = e(34809), p = e(55010), u = e(46998).formatColor, t = e(92527), r = e(84770), i = e(49467), a = e(29714), l = e(36040).appendArrayPointValue, o = e(95447);
              function y(E, w) {
                this.scene = E, this.uid = w, this.linePlot = null, this.scatterPlot = null, this.errorBars = null, this.textMarkers = null, this.delaunayMesh = null, this.color = null, this.mode = "", this.dataPoints = [], this.axesBounds = [[-1 / 0, -1 / 0, -1 / 0], [1 / 0, 1 / 0, 1 / 0]], this.textLabels = null, this.data = null;
              }
              var g = y.prototype;
              g.handlePick = function(E) {
                if (E.object && (E.object === this.linePlot || E.object === this.delaunayMesh || E.object === this.textMarkers || E.object === this.scatterPlot)) {
                  var w = E.index = E.data.index;
                  return E.object.highlight && E.object.highlight(null), this.scatterPlot && (E.object = this.scatterPlot, this.scatterPlot.highlight(E.data)), E.textLabel = "", this.textLabels && (A.isArrayOrTypedArray(this.textLabels) ? (this.textLabels[w] || this.textLabels[w] === 0) && (E.textLabel = this.textLabels[w]) : E.textLabel = this.textLabels), E.traceCoordinate = [this.data.x[w], this.data.y[w], this.data.z[w]], !0;
                }
              };
              function x(E, w, z) {
                var O = (z + 1) % 3, B = (z + 2) % 3, V = [], U = [], H;
                for (H = 0; H < E.length; ++H) {
                  var F = E[H];
                  isNaN(F[O]) || !isFinite(F[O]) || isNaN(F[B]) || !isFinite(F[B]) || (V.push([F[O], F[B]]), U.push(H));
                }
                var G = T(V);
                for (H = 0; H < G.length; ++H)
                  for (var q = G[H], rt = 0; rt < q.length; ++rt)
                    q[rt] = U[q[rt]];
                return {
                  positions: E,
                  cells: G,
                  meshColor: w
                };
              }
              function c(E) {
                for (var w = [0, 0, 0], z = [[0, 0, 0], [0, 0, 0], [0, 0, 0]], O = [1, 1, 1], B = 0; B < 3; B++) {
                  var V = E[B];
                  V && V.copy_zstyle !== !1 && E[2].visible !== !1 && (V = E[2]), !(!V || !V.visible) && (w[B] = V.width / 2, z[B] = p(V.color), O[B] = V.thickness);
                }
                return {
                  capSize: w,
                  color: z,
                  lineWidth: O
                };
              }
              function v(E) {
                return E == null ? 0 : E.indexOf("left") > -1 ? -1 : E.indexOf("right") > -1 ? 1 : 0;
              }
              function f(E) {
                return E == null ? 0 : E.indexOf("top") > -1 ? -1 : E.indexOf("bottom") > -1 ? 1 : 0;
              }
              function _(E) {
                var w = 0, z = 0, O = [w, z];
                if (Array.isArray(E))
                  for (var B = 0; B < E.length; B++)
                    O[B] = [w, z], E[B] && (O[B][0] = v(E[B]), O[B][1] = f(E[B]));
                else
                  O[0] = v(E), O[1] = f(E);
                return O;
              }
              function S(E, w) {
                return w(E * 4);
              }
              function M(E) {
                return i[E];
              }
              function C(E, w, z, O, B) {
                var V = null;
                if (A.isArrayOrTypedArray(E)) {
                  V = [];
                  for (var U = 0; U < w; U++)
                    E[U] === void 0 ? V[U] = O : V[U] = z(E[U], B);
                } else V = z(E, A.identity);
                return V;
              }
              function m(E, w) {
                var z = [], O = E.fullSceneLayout, B = E.dataScale, V = O.xaxis, U = O.yaxis, H = O.zaxis, F = w.marker, G = w.line, q = w.x || [], rt = w.y || [], st = w.z || [], vt = q.length, ht = w.xcalendar, et = w.ycalendar, Q = w.zcalendar, j, at, ut, nt, X, ct;
                for (X = 0; X < vt; X++)
                  j = V.d2l(q[X], 0, ht) * B[0], at = U.d2l(rt[X], 0, et) * B[1], ut = H.d2l(st[X], 0, Q) * B[2], z[X] = [j, at, ut];
                if (Array.isArray(w.text))
                  ct = w.text;
                else if (A.isTypedArray(w.text))
                  ct = Array.from(w.text);
                else if (w.text !== void 0)
                  for (ct = new Array(vt), X = 0; X < vt; X++) ct[X] = w.text;
                function lt(_e, ce) {
                  var ae = O[_e];
                  return a.tickText(ae, ae.d2l(ce), !0).text;
                }
                var pt = w.texttemplate;
                if (pt) {
                  var wt = E.fullLayout, Et = wt._d3locale, Ct = Array.isArray(pt), Gt = Ct ? Math.min(pt.length, vt) : vt, Jt = Ct ? function(_e) {
                    return pt[_e];
                  } : function() {
                    return pt;
                  };
                  for (ct = new Array(Gt), X = 0; X < Gt; X++) {
                    var Qt = {
                      x: q[X],
                      y: rt[X],
                      z: st[X]
                    }, Vt = {
                      xLabel: lt("xaxis", q[X]),
                      yLabel: lt("yaxis", rt[X]),
                      zLabel: lt("zaxis", st[X])
                    }, zt = {};
                    l(zt, w, X);
                    var Rt = w._meta || {};
                    ct[X] = A.texttemplateString(Jt(X), Vt, Et, zt, Qt, Rt);
                  }
                }
                if (nt = {
                  position: z,
                  mode: w.mode,
                  text: ct
                }, "line" in w && (nt.lineColor = u(G, 1, vt), nt.lineWidth = G.width, nt.lineDashes = G.dash), "marker" in w) {
                  var Wt = t(w);
                  nt.scatterColor = u(F, 1, vt), nt.scatterSize = C(F.size, vt, S, 20, Wt), nt.scatterMarker = C(F.symbol, vt, M, "●"), nt.scatterLineWidth = F.line.width, nt.scatterLineColor = u(F.line, 1, vt), nt.scatterAngle = 0;
                }
                "textposition" in w && (nt.textOffset = _(w.textposition), nt.textColor = u(w.textfont, 1, vt), nt.textSize = C(w.textfont.size, vt, A.identity, 12), nt.textFontFamily = w.textfont.family, nt.textFontWeight = w.textfont.weight, nt.textFontStyle = w.textfont.style, nt.textFontVariant = w.textfont.variant, nt.textAngle = 0);
                var kt = ["x", "y", "z"];
                for (nt.project = [!1, !1, !1], nt.projectScale = [1, 1, 1], nt.projectOpacity = [1, 1, 1], X = 0; X < 3; ++X) {
                  var re = w.projection[kt[X]];
                  (nt.project[X] = re.show) && (nt.projectOpacity[X] = re.opacity, nt.projectScale[X] = re.scale);
                }
                nt.errorBounds = o(w, B, O);
                var ge = c([w.error_x, w.error_y, w.error_z]);
                return nt.errorColor = ge.color, nt.errorLineWidth = ge.lineWidth, nt.errorCapSize = ge.capSize, nt.delaunayAxis = w.surfaceaxis, nt.delaunayColor = p(w.surfacecolor), nt;
              }
              function L(E) {
                if (A.isArrayOrTypedArray(E)) {
                  var w = E[0];
                  return A.isArrayOrTypedArray(w) && (E = w), "rgb(" + E.slice(0, 3).map(function(z) {
                    return Math.round(z * 255);
                  }) + ")";
                }
                return null;
              }
              function d(E) {
                return A.isArrayOrTypedArray(E) ? E.length === 4 && typeof E[0] == "number" ? L(E) : E.map(L) : null;
              }
              g.update = function(E) {
                var w = this.scene.glplot.gl, z, O, B, V, U = r.solid;
                this.data = E;
                var H = m(this.scene, E);
                "mode" in H && (this.mode = H.mode), "lineDashes" in H && H.lineDashes in r && (U = r[H.lineDashes]), this.color = d(H.scatterColor) || d(H.lineColor), this.dataPoints = H.position, z = {
                  gl: this.scene.glplot.gl,
                  position: H.position,
                  color: H.lineColor,
                  lineWidth: H.lineWidth || 1,
                  dashes: U[0],
                  dashScale: U[1],
                  opacity: E.opacity,
                  connectGaps: E.connectgaps
                }, this.mode.indexOf("lines") !== -1 ? this.linePlot ? this.linePlot.update(z) : (this.linePlot = b(z), this.linePlot._trace = this, this.scene.glplot.add(this.linePlot)) : this.linePlot && (this.scene.glplot.remove(this.linePlot), this.linePlot.dispose(), this.linePlot = null);
                var F = E.opacity;
                if (E.marker && E.marker.opacity !== void 0 && (F *= E.marker.opacity), O = {
                  gl: this.scene.glplot.gl,
                  position: H.position,
                  color: H.scatterColor,
                  size: H.scatterSize,
                  glyph: H.scatterMarker,
                  opacity: F,
                  orthographic: !0,
                  lineWidth: H.scatterLineWidth,
                  lineColor: H.scatterLineColor,
                  project: H.project,
                  projectScale: H.projectScale,
                  projectOpacity: H.projectOpacity
                }, this.mode.indexOf("markers") !== -1 ? this.scatterPlot ? this.scatterPlot.update(O) : (this.scatterPlot = P(O), this.scatterPlot._trace = this, this.scatterPlot.highlightScale = 1, this.scene.glplot.add(this.scatterPlot)) : this.scatterPlot && (this.scene.glplot.remove(this.scatterPlot), this.scatterPlot.dispose(), this.scatterPlot = null), V = {
                  gl: this.scene.glplot.gl,
                  position: H.position,
                  glyph: H.text,
                  color: H.textColor,
                  size: H.textSize,
                  angle: H.textAngle,
                  alignment: H.textOffset,
                  font: H.textFontFamily,
                  fontWeight: H.textFontWeight,
                  fontStyle: H.textFontStyle,
                  fontVariant: H.textFontVariant,
                  orthographic: !0,
                  lineWidth: 0,
                  project: !1,
                  opacity: E.opacity
                }, this.textLabels = E.hovertext || E.text, this.mode.indexOf("text") !== -1 ? this.textMarkers ? this.textMarkers.update(V) : (this.textMarkers = P(V), this.textMarkers._trace = this, this.textMarkers.highlightScale = 1, this.scene.glplot.add(this.textMarkers)) : this.textMarkers && (this.scene.glplot.remove(this.textMarkers), this.textMarkers.dispose(), this.textMarkers = null), B = {
                  gl: this.scene.glplot.gl,
                  position: H.position,
                  color: H.errorColor,
                  error: H.errorBounds,
                  lineWidth: H.errorLineWidth,
                  capSize: H.errorCapSize,
                  opacity: E.opacity
                }, this.errorBars ? H.errorBounds ? this.errorBars.update(B) : (this.scene.glplot.remove(this.errorBars), this.errorBars.dispose(), this.errorBars = null) : H.errorBounds && (this.errorBars = n(B), this.errorBars._trace = this, this.scene.glplot.add(this.errorBars)), H.delaunayAxis >= 0) {
                  var G = x(H.position, H.delaunayColor, H.delaunayAxis);
                  G.opacity = E.opacity, this.delaunayMesh ? this.delaunayMesh.update(G) : (G.gl = w, this.delaunayMesh = s(G), this.delaunayMesh._trace = this, this.scene.glplot.add(this.delaunayMesh));
                } else this.delaunayMesh && (this.scene.glplot.remove(this.delaunayMesh), this.delaunayMesh.dispose(), this.delaunayMesh = null);
              }, g.dispose = function() {
                this.linePlot && (this.scene.glplot.remove(this.linePlot), this.linePlot.dispose()), this.scatterPlot && (this.scene.glplot.remove(this.scatterPlot), this.scatterPlot.dispose()), this.errorBars && (this.scene.glplot.remove(this.errorBars), this.errorBars.dispose()), this.textMarkers && (this.scene.glplot.remove(this.textMarkers), this.textMarkers.dispose()), this.delaunayMesh && (this.scene.glplot.remove(this.delaunayMesh), this.delaunayMesh.dispose());
              };
              function h(E, w) {
                var z = new y(E, w.uid);
                return z.update(w), z;
              }
              Y.exports = h;
            }
          ),
          /***/
          82418: (
            /***/
            function(Y, K, e) {
              var b = e(33626), P = e(34809), n = e(64726), s = e(24272), T = e(98168), A = e(663), p = e(14117);
              Y.exports = function(r, i, a, l) {
                function o(S, M) {
                  return P.coerce(r, i, p, S, M);
                }
                var y = u(r, i, o, l);
                if (!y) {
                  i.visible = !1;
                  return;
                }
                o("text"), o("hovertext"), o("hovertemplate"), o("xhoverformat"), o("yhoverformat"), o("zhoverformat"), o("mode"), n.hasMarkers(i) && s(r, i, a, l, o, {
                  noSelect: !0,
                  noAngle: !0
                }), n.hasLines(i) && (o("connectgaps"), T(r, i, a, l, o)), n.hasText(i) && (o("texttemplate"), A(r, i, l, o, {
                  noSelect: !0,
                  noFontShadow: !0,
                  noFontLineposition: !0,
                  noFontTextcase: !0
                }));
                var g = (i.line || {}).color, x = (i.marker || {}).color;
                o("surfaceaxis") >= 0 && o("surfacecolor", g || x);
                for (var c = ["x", "y", "z"], v = 0; v < 3; ++v) {
                  var f = "projection." + c[v];
                  o(f + ".show") && (o(f + ".opacity"), o(f + ".scale"));
                }
                var _ = b.getComponentMethod("errorbars", "supplyDefaults");
                _(r, i, g || x || a, {
                  axis: "z"
                }), _(r, i, g || x || a, {
                  axis: "y",
                  inherit: "z"
                }), _(r, i, g || x || a, {
                  axis: "x",
                  inherit: "z"
                });
              };
              function u(t, r, i, a) {
                var l = 0, o = i("x"), y = i("y"), g = i("z"), x = b.getComponentMethod("calendars", "handleTraceDefaults");
                return x(t, r, ["x", "y", "z"], a), o && y && g && (l = Math.min(o.length, y.length, g.length), r._length = r._xlength = r._ylength = r._zlength = l), l;
              }
            }
          ),
          /***/
          17822: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                plot: e(16533),
                attributes: e(14117),
                markerSymbols: e(49467),
                supplyDefaults: e(82418),
                colorbar: [{
                  container: "marker",
                  min: "cmin",
                  max: "cmax"
                }, {
                  container: "line",
                  min: "cmin",
                  max: "cmax"
                }],
                calc: e(37593),
                moduleType: "trace",
                name: "scatter3d",
                basePlotModule: e(2487),
                categories: ["gl3d", "symbols", "showLegend", "scatter-like"],
                meta: {}
              };
            }
          ),
          /***/
          54637: (
            /***/
            function(Y, K, e) {
              var b = e(19326), P = e(36640), n = e(9829), s = e(3208).rb, T = e(3208).ay, A = e(87163), p = e(93049).extendFlat, u = P.marker, t = P.line, r = u.line;
              Y.exports = {
                carpet: {
                  valType: "string",
                  editType: "calc"
                },
                a: {
                  valType: "data_array",
                  editType: "calc"
                },
                b: {
                  valType: "data_array",
                  editType: "calc"
                },
                mode: p({}, P.mode, {
                  dflt: "markers"
                }),
                text: p({}, P.text, {}),
                texttemplate: T({
                  editType: "plot"
                }, {
                  keys: ["a", "b", "text"]
                }),
                hovertext: p({}, P.hovertext, {}),
                line: {
                  color: t.color,
                  width: t.width,
                  dash: t.dash,
                  backoff: t.backoff,
                  shape: p({}, t.shape, {
                    values: ["linear", "spline"]
                  }),
                  smoothing: t.smoothing,
                  editType: "calc"
                },
                connectgaps: P.connectgaps,
                fill: p({}, P.fill, {
                  values: ["none", "toself", "tonext"],
                  dflt: "none"
                }),
                fillcolor: b(),
                marker: p({
                  symbol: u.symbol,
                  opacity: u.opacity,
                  maxdisplayed: u.maxdisplayed,
                  angle: u.angle,
                  angleref: u.angleref,
                  standoff: u.standoff,
                  size: u.size,
                  sizeref: u.sizeref,
                  sizemin: u.sizemin,
                  sizemode: u.sizemode,
                  line: p({
                    width: r.width,
                    editType: "calc"
                  }, A("marker.line")),
                  gradient: u.gradient,
                  editType: "calc"
                }, A("marker")),
                textfont: P.textfont,
                textposition: P.textposition,
                selected: P.selected,
                unselected: P.unselected,
                hoverinfo: p({}, n.hoverinfo, {
                  flags: ["a", "b", "text", "name"]
                }),
                hoveron: P.hoveron,
                hovertemplate: s(),
                zorder: P.zorder
              };
            }
          ),
          /***/
          68001: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(77272), n = e(99203), s = e(48861), T = e(26544).calcMarkerSize, A = e(26571);
              Y.exports = function(u, t) {
                var r = t._carpetTrace = A(u, t);
                if (!(!r || !r.visible || r.visible === "legendonly")) {
                  var i;
                  t.xaxis = r.xaxis, t.yaxis = r.yaxis;
                  var a = t._length, l = new Array(a), o, y, g = !1;
                  for (i = 0; i < a; i++)
                    if (o = t.a[i], y = t.b[i], b(o) && b(y)) {
                      var x = r.ab2xy(+o, +y, !0), c = r.isVisible(+o, +y);
                      c || (g = !0), l[i] = {
                        x: x[0],
                        y: x[1],
                        a: o,
                        b: y,
                        vis: c
                      };
                    } else l[i] = {
                      x: !1,
                      y: !1
                    };
                  return t._needsCull = g, l[0].carpet = r, l[0].trace = t, T(t, a), P(u, t), n(l, t), s(l, t), l;
                }
              };
            }
          ),
          /***/
          16986: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(32660), n = e(64726), s = e(24272), T = e(98168), A = e(91602), p = e(663), u = e(54114), t = e(54637);
              Y.exports = function(i, a, l, o) {
                function y(S, M) {
                  return b.coerce(i, a, t, S, M);
                }
                y("carpet"), a.xaxis = "x", a.yaxis = "y";
                var g = y("a"), x = y("b"), c = Math.min(g.length, x.length);
                if (!c) {
                  a.visible = !1;
                  return;
                }
                a._length = c, y("text"), y("texttemplate"), y("hovertext");
                var v = c < P.PTS_LINESONLY ? "lines+markers" : "lines";
                y("mode", v), n.hasMarkers(a) && s(i, a, l, o, y, {
                  gradient: !0
                }), n.hasLines(a) && (T(i, a, l, o, y, {
                  backoff: !0
                }), A(i, a, y), y("connectgaps")), n.hasText(a) && p(i, a, o, y);
                var f = [];
                (n.hasMarkers(a) || n.hasText(a)) && (y("marker.maxdisplayed"), f.push("points")), y("fill"), a.fill !== "none" && (u(i, a, l, y), n.hasLines(a) || A(i, a, y)), (a.fill === "tonext" || a.fill === "toself") && f.push("fills");
                var _ = y("hoveron", f.join("+") || "points");
                _ !== "fills" && y("hovertemplate"), y("zorder"), b.coerceSelectionMarkerOpacity(a, y);
              };
            }
          ),
          /***/
          68289: (
            /***/
            function(Y) {
              Y.exports = function(e, b, P, n, s) {
                var T = n[s];
                return e.a = T.a, e.b = T.b, e.y = T.y, e;
              };
            }
          ),
          /***/
          32709: (
            /***/
            function(Y) {
              Y.exports = function(e, b) {
                var P = {}, n = b._carpet, s = n.ab2ij([e.a, e.b]), T = Math.floor(s[0]), A = s[0] - T, p = Math.floor(s[1]), u = s[1] - p, t = n.evalxy([], T, p, A, u);
                return P.yLabel = t[1].toFixed(3), P;
              };
            }
          ),
          /***/
          59420: (
            /***/
            function(Y, K, e) {
              var b = e(37255), P = e(34809).fillText;
              Y.exports = function(s, T, A, p) {
                var u = b(s, T, A, p);
                if (!u || u[0].index === !1) return;
                var t = u[0];
                if (t.index === void 0) {
                  var r = 1 - t.y0 / s.ya._length, i = s.xa._length, a = i * r / 2, l = i - a;
                  return t.x0 = Math.max(Math.min(t.x0, l), a), t.x1 = Math.max(Math.min(t.x1, l), a), u;
                }
                var o = t.cd[t.index];
                t.a = o.a, t.b = o.b, t.xLabelVal = void 0, t.yLabelVal = void 0;
                var y = t.trace, g = y._carpet, x = y._module.formatLabels(o, y);
                t.yLabel = x.yLabel, delete t.text;
                var c = [];
                function v(S, M) {
                  var C;
                  S.labelprefix && S.labelprefix.length > 0 ? C = S.labelprefix.replace(/ = $/, "") : C = S._hovertitle, c.push(C + ": " + M.toFixed(3) + S.labelsuffix);
                }
                if (!y.hovertemplate) {
                  var f = o.hi || y.hoverinfo, _ = f.split("+");
                  _.indexOf("all") !== -1 && (_ = ["a", "b", "text"]), _.indexOf("a") !== -1 && v(g.aaxis, o.a), _.indexOf("b") !== -1 && v(g.baxis, o.b), c.push("y: " + t.yLabel), _.indexOf("text") !== -1 && P(o, y, c), t.extraText = c.join("<br>");
                }
                return u;
              };
            }
          ),
          /***/
          56534: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(54637),
                supplyDefaults: e(16986),
                colorbar: e(21146),
                formatLabels: e(32709),
                calc: e(68001),
                plot: e(64535),
                style: e(9408).style,
                styleOnSelect: e(9408).styleOnSelect,
                hoverPoints: e(59420),
                selectPoints: e(32665),
                eventData: e(68289),
                moduleType: "trace",
                name: "scattercarpet",
                basePlotModule: e(37703),
                categories: ["svg", "carpet", "symbols", "showLegend", "carpetDependent", "zoomScale"],
                meta: {}
              };
            }
          ),
          /***/
          64535: (
            /***/
            function(Y, K, e) {
              var b = e(36098), P = e(29714), n = e(62203);
              Y.exports = function(T, A, p, u) {
                var t, r, i, a = p[0][0].carpet, l = P.getFromId(T, a.xaxis || "x"), o = P.getFromId(T, a.yaxis || "y"), y = {
                  xaxis: l,
                  yaxis: o,
                  plot: A.plot
                };
                for (t = 0; t < p.length; t++)
                  r = p[t][0].trace, r._xA = l, r._yA = o;
                for (b(T, y, p, u), t = 0; t < p.length; t++)
                  r = p[t][0].trace, i = u.selectAll("g.trace" + r.uid + " .js-line"), n.setClipUrl(i, p[t][0].carpet._clipPathId, T);
              };
            }
          ),
          /***/
          6893: (
            /***/
            function(Y, K, e) {
              var b = e(3208).rb, P = e(3208).ay, n = e(19326), s = e(36640), T = e(9829), A = e(87163), p = e(94850).T, u = e(93049).extendFlat, t = e(13582).overrideAll, r = s.marker, i = s.line, a = r.line;
              Y.exports = t({
                lon: {
                  valType: "data_array"
                },
                lat: {
                  valType: "data_array"
                },
                locations: {
                  valType: "data_array"
                },
                locationmode: {
                  valType: "enumerated",
                  values: ["ISO-3", "USA-states", "country names", "geojson-id"],
                  dflt: "ISO-3"
                },
                geojson: {
                  valType: "any",
                  editType: "calc"
                },
                featureidkey: {
                  valType: "string",
                  editType: "calc",
                  dflt: "id"
                },
                mode: u({}, s.mode, {
                  dflt: "markers"
                }),
                text: u({}, s.text, {}),
                texttemplate: P({
                  editType: "plot"
                }, {
                  keys: ["lat", "lon", "location", "text"]
                }),
                hovertext: u({}, s.hovertext, {}),
                textfont: s.textfont,
                textposition: s.textposition,
                line: {
                  color: i.color,
                  width: i.width,
                  dash: p
                },
                connectgaps: s.connectgaps,
                marker: u({
                  symbol: r.symbol,
                  opacity: r.opacity,
                  angle: r.angle,
                  angleref: u({}, r.angleref, {
                    values: ["previous", "up", "north"]
                  }),
                  standoff: r.standoff,
                  size: r.size,
                  sizeref: r.sizeref,
                  sizemin: r.sizemin,
                  sizemode: r.sizemode,
                  colorbar: r.colorbar,
                  line: u({
                    width: a.width
                  }, A("marker.line")),
                  gradient: r.gradient
                }, A("marker")),
                fill: {
                  valType: "enumerated",
                  values: ["none", "toself"],
                  dflt: "none"
                },
                fillcolor: n(),
                selected: s.selected,
                unselected: s.unselected,
                hoverinfo: u({}, T.hoverinfo, {
                  flags: ["lon", "lat", "location", "text", "name"]
                }),
                hovertemplate: b()
              }, "calc", "nested");
            }
          ),
          /***/
          75649: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(63821).BADNUM, n = e(77272), s = e(99203), T = e(48861), A = e(34809).isArrayOrTypedArray, p = e(34809)._;
              function u(t) {
                return t && typeof t == "string";
              }
              Y.exports = function(r, i) {
                var a = A(i.locations), l = a ? i.locations.length : i._length, o = new Array(l), y;
                i.geojson ? y = function(_) {
                  return u(_) || b(_);
                } : y = u;
                for (var g = 0; g < l; g++) {
                  var x = o[g] = {};
                  if (a) {
                    var c = i.locations[g];
                    x.loc = y(c) ? c : null;
                  } else {
                    var v = i.lon[g], f = i.lat[g];
                    b(v) && b(f) ? x.lonlat = [+v, +f] : x.lonlat = [P, P];
                  }
                }
                return s(o, i), n(r, i), T(o, i), l && (o[0].t = {
                  labels: {
                    lat: p(r, "lat:") + " ",
                    lon: p(r, "lon:") + " "
                  }
                }), o;
              };
            }
          ),
          /***/
          27386: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(64726), n = e(24272), s = e(98168), T = e(663), A = e(54114), p = e(6893);
              Y.exports = function(t, r, i, a) {
                function l(_, S) {
                  return b.coerce(t, r, p, _, S);
                }
                var o = l("locations"), y;
                if (o && o.length) {
                  var g = l("geojson"), x;
                  (typeof g == "string" && g !== "" || b.isPlainObject(g)) && (x = "geojson-id");
                  var c = l("locationmode", x);
                  c === "geojson-id" && l("featureidkey"), y = o.length;
                } else {
                  var v = l("lon") || [], f = l("lat") || [];
                  y = Math.min(v.length, f.length);
                }
                if (!y) {
                  r.visible = !1;
                  return;
                }
                r._length = y, l("text"), l("hovertext"), l("hovertemplate"), l("mode"), P.hasMarkers(r) && n(t, r, i, a, l, {
                  gradient: !0
                }), P.hasLines(r) && (s(t, r, i, a, l), l("connectgaps")), P.hasText(r) && (l("texttemplate"), T(t, r, a, l)), l("fill"), r.fill !== "none" && A(t, r, i, l), b.coerceSelectionMarkerOpacity(r, l);
              };
            }
          ),
          /***/
          71873: (
            /***/
            function(Y) {
              Y.exports = function(e, b, P, n, s) {
                e.lon = b.lon, e.lat = b.lat, e.location = b.loc ? b.loc : null;
                var T = n[s];
                return T.fIn && T.fIn.properties && (e.properties = T.fIn.properties), e;
              };
            }
          ),
          /***/
          57413: (
            /***/
            function(Y, K, e) {
              var b = e(29714);
              Y.exports = function(n, s, T) {
                var A = {}, p = T[s.geo]._subplot, u = p.mockAxis, t = n.lonlat;
                return A.lonLabel = b.tickText(u, u.c2l(t[0]), !0).text, A.latLabel = b.tickText(u, u.c2l(t[1]), !0).text, A;
              };
            }
          ),
          /***/
          40636: (
            /***/
            function(Y, K, e) {
              var b = e(32141), P = e(63821).BADNUM, n = e(11539), s = e(34809).fillText, T = e(6893);
              Y.exports = function(u, t, r) {
                var i = u.cd, a = i[0].trace, l = u.xa, o = u.ya, y = u.subplot, g = y.projection.isLonLatOverEdges, x = y.project;
                function c(m) {
                  var L = m.lonlat;
                  if (L[0] === P || g(L)) return 1 / 0;
                  var d = x(L), h = x([t, r]), E = Math.abs(d[0] - h[0]), w = Math.abs(d[1] - h[1]), z = Math.max(3, m.mrc || 0);
                  return Math.max(Math.sqrt(E * E + w * w) - z, 1 - 3 / z);
                }
                if (b.getClosest(i, c, u), u.index !== !1) {
                  var v = i[u.index], f = v.lonlat, _ = [l.c2p(f), o.c2p(f)], S = v.mrc || 1;
                  u.x0 = _[0] - S, u.x1 = _[0] + S, u.y0 = _[1] - S, u.y1 = _[1] + S, u.loc = v.loc, u.lon = f[0], u.lat = f[1];
                  var M = {};
                  M[a.geo] = {
                    _subplot: y
                  };
                  var C = a._module.formatLabels(v, a, M);
                  return u.lonLabel = C.lonLabel, u.latLabel = C.latLabel, u.color = n(a, v), u.extraText = A(a, v, u, i[0].t.labels), u.hovertemplate = a.hovertemplate, [u];
                }
              };
              function A(p, u, t, r) {
                if (p.hovertemplate) return;
                var i = u.hi || p.hoverinfo, a = i === "all" ? T.hoverinfo.flags : i.split("+"), l = a.indexOf("location") !== -1 && Array.isArray(p.locations), o = a.indexOf("lon") !== -1, y = a.indexOf("lat") !== -1, g = a.indexOf("text") !== -1, x = [];
                function c(v) {
                  return v + "°";
                }
                return l ? x.push(u.loc) : o && y ? x.push("(" + c(t.latLabel) + ", " + c(t.lonLabel) + ")") : o ? x.push(r.lon + c(t.lonLabel)) : y && x.push(r.lat + c(t.latLabel)), g && s(u, p, x), x.join("<br>");
              }
            }
          ),
          /***/
          18070: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(6893),
                supplyDefaults: e(27386),
                colorbar: e(21146),
                formatLabels: e(57413),
                calc: e(75649),
                calcGeoJSON: e(48887).calcGeoJSON,
                plot: e(48887).plot,
                style: e(60367),
                styleOnSelect: e(9408).styleOnSelect,
                hoverPoints: e(40636),
                eventData: e(71873),
                selectPoints: e(45852),
                moduleType: "trace",
                name: "scattergeo",
                basePlotModule: e(47544),
                categories: ["geo", "symbols", "showLegend", "scatter-like"],
                meta: {}
              };
            }
          ),
          /***/
          48887: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(34809), n = e(11577).getTopojsonFeatures, s = e(39532), T = e(3994), A = e(32919).findExtremes, p = e(63821).BADNUM, u = e(26544).calcMarkerSize, t = e(64726), r = e(60367);
              function i(l, o, y) {
                var g = o.layers.frontplot.select(".scatterlayer"), x = P.makeTraceGroups(g, y, "trace scattergeo");
                function c(v, f) {
                  v.lonlat[0] === p && b.select(f).remove();
                }
                x.selectAll("*").remove(), x.each(function(v) {
                  var f = b.select(this), _ = v[0].trace;
                  if (t.hasLines(_) || _.fill !== "none") {
                    var S = s.calcTraceToLineCoords(v), M = _.fill !== "none" ? s.makePolygon(S) : s.makeLine(S);
                    f.selectAll("path.js-line").data([{
                      geojson: M,
                      trace: _
                    }]).enter().append("path").classed("js-line", !0).style("stroke-miterlimit", 2);
                  }
                  t.hasMarkers(_) && f.selectAll("path.point").data(P.identity).enter().append("path").classed("point", !0).each(function(C) {
                    c(C, this);
                  }), t.hasText(_) && f.selectAll("g").data(P.identity).enter().append("g").append("text").each(function(C) {
                    c(C, this);
                  }), r(l, v);
                });
              }
              function a(l, o) {
                var y = l[0].trace, g = o[y.geo], x = g._subplot, c = y._length, v, f;
                if (P.isArrayOrTypedArray(y.locations)) {
                  var _ = y.locationmode, S = _ === "geojson-id" ? T.extractTraceFeature(l) : n(y, x.topojson);
                  for (v = 0; v < c; v++) {
                    f = l[v];
                    var M = _ === "geojson-id" ? f.fOut : T.locationToFeature(_, f.loc, S);
                    f.lonlat = M ? M.properties.ct : [p, p];
                  }
                }
                var C = {
                  padded: !0
                }, m, L;
                if (g.fitbounds === "geojson" && y.locationmode === "geojson-id") {
                  var d = T.computeBbox(T.getTraceGeojson(y));
                  m = [d[0], d[2]], L = [d[1], d[3]];
                } else {
                  for (m = new Array(c), L = new Array(c), v = 0; v < c; v++)
                    f = l[v], m[v] = f.lonlat[0], L[v] = f.lonlat[1];
                  C.ppad = u(y, c);
                }
                y._extremes.lon = A(g.lonaxis._ax, m, C), y._extremes.lat = A(g.lataxis._ax, L, C);
              }
              Y.exports = {
                calcGeoJSON: a,
                plot: i
              };
            }
          ),
          /***/
          45852: (
            /***/
            function(Y, K, e) {
              var b = e(64726), P = e(63821).BADNUM;
              Y.exports = function(s, T) {
                var A = s.cd, p = s.xaxis, u = s.yaxis, t = [], r = A[0].trace, i, a, l, o, y, g = !b.hasMarkers(r) && !b.hasText(r);
                if (g) return [];
                if (T === !1)
                  for (y = 0; y < A.length; y++)
                    A[y].selected = 0;
                else
                  for (y = 0; y < A.length; y++)
                    i = A[y], a = i.lonlat, a[0] !== P && (l = p.c2p(a), o = u.c2p(a), T.contains([l, o], null, y, s) ? (t.push({
                      pointNumber: y,
                      lon: a[0],
                      lat: a[1]
                    }), i.selected = 1) : i.selected = 0);
                return t;
              };
            }
          ),
          /***/
          60367: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(62203), n = e(78766), s = e(9408), T = s.stylePoints, A = s.styleText;
              Y.exports = function(t, r) {
                r && p(t, r);
              };
              function p(u, t) {
                var r = t[0].trace, i = t[0].node3;
                i.style("opacity", t[0].trace.opacity), T(i, r, u), A(i, r, u), i.selectAll("path.js-line").style("fill", "none").each(function(a) {
                  var l = b.select(this), o = a.trace, y = o.line || {};
                  l.call(n.stroke, y.color).call(P.dashLine, y.dash || "", y.width || 0), o.fill !== "none" && l.call(n.fill, o.fillcolor);
                });
              }
            }
          ),
          /***/
          92089: (
            /***/
            function(Y, K, e) {
              var b = e(9829), P = e(80337), n = e(19326), s = e(36640), T = e(80712).axisHoverFormat, A = e(87163), p = e(62994), u = e(93049).extendFlat, t = e(13582).overrideAll, r = e(29483).DASHES, i = s.line, a = s.marker, l = a.line, o = Y.exports = t({
                x: s.x,
                x0: s.x0,
                dx: s.dx,
                y: s.y,
                y0: s.y0,
                dy: s.dy,
                xperiod: s.xperiod,
                yperiod: s.yperiod,
                xperiod0: s.xperiod0,
                yperiod0: s.yperiod0,
                xperiodalignment: s.xperiodalignment,
                yperiodalignment: s.yperiodalignment,
                xhoverformat: T("x"),
                yhoverformat: T("y"),
                text: s.text,
                hovertext: s.hovertext,
                textposition: s.textposition,
                textfont: P({
                  noFontShadow: !0,
                  noFontLineposition: !0,
                  noFontTextcase: !0,
                  editType: "calc",
                  colorEditType: "style",
                  arrayOk: !0,
                  noNumericWeightValues: !0,
                  variantValues: ["normal", "small-caps"]
                }),
                mode: {
                  valType: "flaglist",
                  flags: ["lines", "markers", "text"],
                  extras: ["none"]
                },
                line: {
                  color: i.color,
                  width: i.width,
                  shape: {
                    valType: "enumerated",
                    values: ["linear", "hv", "vh", "hvh", "vhv"],
                    dflt: "linear",
                    editType: "plot"
                  },
                  dash: {
                    valType: "enumerated",
                    values: p(r),
                    dflt: "solid"
                  }
                },
                marker: u({}, A("marker"), {
                  symbol: a.symbol,
                  angle: a.angle,
                  size: a.size,
                  sizeref: a.sizeref,
                  sizemin: a.sizemin,
                  sizemode: a.sizemode,
                  opacity: a.opacity,
                  colorbar: a.colorbar,
                  line: u({}, A("marker.line"), {
                    width: l.width
                  })
                }),
                connectgaps: s.connectgaps,
                fill: u({}, s.fill, {
                  dflt: "none"
                }),
                fillcolor: n(),
                // no hoveron
                selected: {
                  marker: s.selected.marker,
                  textfont: s.selected.textfont
                },
                unselected: {
                  marker: s.unselected.marker,
                  textfont: s.unselected.textfont
                },
                opacity: b.opacity
              }, "calc", "nested");
              o.x.editType = o.y.editType = o.x0.editType = o.y0.editType = "calc+clearAxisTypes", o.hovertemplate = s.hovertemplate, o.texttemplate = s.texttemplate;
            }
          ),
          /***/
          68258: (
            /***/
            function(Y, K, e) {
              var b = e(36544);
              Y.exports = {
                moduleType: "trace",
                name: "scattergl",
                basePlotModule: e(37703),
                categories: ["gl", "regl", "cartesian", "symbols", "errorBarsOK", "showLegend", "scatter-like"],
                attributes: e(92089),
                supplyDefaults: e(86590),
                crossTraceDefaults: e(53044),
                colorbar: e(21146),
                formatLabels: e(99185),
                calc: e(15293),
                hoverPoints: b.hoverPoints,
                selectPoints: e(17168),
                meta: {}
              };
            }
          ),
          /***/
          15293: (
            /***/
            function(Y, K, e) {
              var b = e(27549), P = e(34809), n = e(5975), s = e(32919).findExtremes, T = e(40528), A = e(26544), p = A.calcMarkerSize, u = A.calcAxisExpansion, t = A.setFirstScatter, r = e(77272), i = e(19937), a = e(62336), l = e(63821).BADNUM, o = e(29483).TOO_MANY_POINTS;
              Y.exports = function(c, v) {
                var f = c._fullLayout, _ = v._xA = n.getFromId(c, v.xaxis, "x"), S = v._yA = n.getFromId(c, v.yaxis, "y"), M = f._plots[v.xaxis + v.yaxis], C = v._length, m = C >= o, L = C * 2, d = {}, h, E = _.makeCalcdata(v, "x"), w = S.makeCalcdata(v, "y"), z = T(v, _, "x", E), O = T(v, S, "y", w), B = z.vals, V = O.vals;
                v._x = B, v._y = V, v.xperiodalignment && (v._origX = E, v._xStarts = z.starts, v._xEnds = z.ends), v.yperiodalignment && (v._origY = w, v._yStarts = O.starts, v._yEnds = O.ends);
                var U = new Array(L), H = new Array(C);
                for (h = 0; h < C; h++)
                  U[h * 2] = B[h] === l ? NaN : B[h], U[h * 2 + 1] = V[h] === l ? NaN : V[h], H[h] = h;
                if (_.type === "log")
                  for (h = 0; h < L; h += 2)
                    U[h] = _.c2l(U[h]);
                if (S.type === "log")
                  for (h = 1; h < L; h += 2)
                    U[h] = S.c2l(U[h]);
                m && _.type !== "log" && S.type !== "log" ? d.tree = b(U) : d.ids = H, r(c, v);
                var F = g(c, M, v, U, B, V), G = a(c, M);
                t(f, v);
                var q;
                return m ? F.marker && (q = F.marker.sizeAvg || Math.max(F.marker.size, 3)) : q = p(v, C), u(c, v, _, S, B, V, q), F.errorX && y(v, _, F.errorX), F.errorY && y(v, S, F.errorY), F.fill && !G.fill2d && (G.fill2d = !0), F.marker && !G.scatter2d && (G.scatter2d = !0), F.line && !G.line2d && (G.line2d = !0), (F.errorX || F.errorY) && !G.error2d && (G.error2d = !0), F.text && !G.glText && (G.glText = !0), F.marker && (F.marker.snap = C), G.lineOptions.push(F.line), G.errorXOptions.push(F.errorX), G.errorYOptions.push(F.errorY), G.fillOptions.push(F.fill), G.markerOptions.push(F.marker), G.markerSelectedOptions.push(F.markerSel), G.markerUnselectedOptions.push(F.markerUnsel), G.textOptions.push(F.text), G.textSelectedOptions.push(F.textSel), G.textUnselectedOptions.push(F.textUnsel), G.selectBatch.push([]), G.unselectBatch.push([]), d._scene = G, d.index = G.count, d.x = B, d.y = V, d.positions = U, G.count++, [{
                  x: !1,
                  y: !1,
                  t: d,
                  trace: v
                }];
              };
              function y(x, c, v) {
                var f = x._extremes[c._id], _ = s(c, v._bnds, {
                  padded: !0
                });
                f.min = f.min.concat(_.min), f.max = f.max.concat(_.max);
              }
              function g(x, c, v, f, _, S) {
                var M = i.style(x, v);
                if (M.marker && (M.marker.positions = f), M.line && f.length > 1 && P.extendFlat(M.line, i.linePositions(x, v, f)), M.errorX || M.errorY) {
                  var C = i.errorBarPositions(x, v, f, _, S);
                  M.errorX && P.extendFlat(M.errorX, C.x), M.errorY && P.extendFlat(M.errorY, C.y);
                }
                return M.text && (P.extendFlat(M.text, {
                  positions: f
                }, i.textPosition(x, v, M.text, M.marker)), P.extendFlat(M.textSel, {
                  positions: f
                }, i.textPosition(x, v, M.text, M.markerSel)), P.extendFlat(M.textUnsel, {
                  positions: f
                }, i.textPosition(x, v, M.text, M.markerUnsel))), M;
              }
            }
          ),
          /***/
          29483: (
            /***/
            function(Y) {
              var K = 20;
              Y.exports = {
                TOO_MANY_POINTS: 1e5,
                SYMBOL_SDF_SIZE: 200,
                SYMBOL_SIZE: K,
                SYMBOL_STROKE: K / 20,
                DOT_RE: /-dot/,
                OPEN_RE: /-open/,
                DASHES: {
                  solid: [1],
                  dot: [1, 1],
                  dash: [4, 1],
                  longdash: [8, 1],
                  dashdot: [4, 1, 1, 1],
                  longdashdot: [8, 1, 1, 1]
                }
              };
            }
          ),
          /***/
          19937: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(96021), n = e(162), s = e(33626), T = e(34809), A = T.isArrayOrTypedArray, p = e(62203), u = e(5975), t = e(46998).formatColor, r = e(64726), i = e(92527), a = e(4075), l = e(29483), o = e(20438).DESELECTDIM, y = {
                start: 1,
                left: 1,
                end: -1,
                right: -1,
                middle: 0,
                center: 0,
                bottom: 1,
                top: -1
              }, g = e(36040).appendArrayPointValue;
              function x(B, V) {
                var U, H = {
                  marker: void 0,
                  markerSel: void 0,
                  markerUnsel: void 0,
                  line: void 0,
                  fill: void 0,
                  errorX: void 0,
                  errorY: void 0,
                  text: void 0,
                  textSel: void 0,
                  textUnsel: void 0
                }, F = B._context.plotGlPixelRatio;
                if (V.visible !== !0) return H;
                if (r.hasText(V) && (H.text = c(B, V), H.textSel = S(B, V, V.selected), H.textUnsel = S(B, V, V.unselected)), r.hasMarkers(V) && (H.marker = f(B, V), H.markerSel = _(B, V, V.selected), H.markerUnsel = _(B, V, V.unselected), !V.unselected && A(V.marker.opacity))) {
                  var G = V.marker.opacity;
                  for (H.markerUnsel.opacity = new Array(G.length), U = 0; U < G.length; U++)
                    H.markerUnsel.opacity[U] = o * G[U];
                }
                if (r.hasLines(V)) {
                  H.line = {
                    overlay: !0,
                    thickness: V.line.width * F,
                    color: V.line.color,
                    opacity: V.opacity
                  };
                  var q = (l.DASHES[V.line.dash] || [1]).slice();
                  for (U = 0; U < q.length; ++U)
                    q[U] *= V.line.width * F;
                  H.line.dashes = q;
                }
                return V.error_x && V.error_x.visible && (H.errorX = M(V, V.error_x, F)), V.error_y && V.error_y.visible && (H.errorY = M(V, V.error_y, F)), V.fill && V.fill !== "none" && (H.fill = {
                  closed: !0,
                  fill: V.fillcolor,
                  thickness: 0
                }), H;
              }
              function c(B, V) {
                var U = B._fullLayout, H = V._length, F = V.textfont, G = V.textposition, q = A(G) ? G : [G], rt = F.color, st = F.size, vt = F.family, ht = F.weight, et = F.style, Q = F.variant, j = {}, at, ut = B._context.plotGlPixelRatio, nt = V.texttemplate;
                if (nt) {
                  j.text = [];
                  var X = U._d3locale, ct = Array.isArray(nt), lt = ct ? Math.min(nt.length, H) : H, pt = ct ? function(Vt) {
                    return nt[Vt];
                  } : function() {
                    return nt;
                  };
                  for (at = 0; at < lt; at++) {
                    var wt = {
                      i: at
                    }, Et = V._module.formatLabels(wt, V, U), Ct = {};
                    g(Ct, V, at);
                    var Gt = V._meta || {};
                    j.text.push(T.texttemplateString(pt(at), Et, X, Ct, wt, Gt));
                  }
                } else
                  A(V.text) && V.text.length < H ? j.text = V.text.slice() : j.text = V.text;
                if (A(j.text))
                  for (at = j.text.length; at < H; at++)
                    j.text[at] = "";
                for (j.opacity = V.opacity, j.font = {}, j.align = [], j.baseline = [], at = 0; at < q.length; at++) {
                  var Jt = q[at].split(/\s+/);
                  switch (Jt[1]) {
                    case "left":
                      j.align.push("right");
                      break;
                    case "right":
                      j.align.push("left");
                      break;
                    default:
                      j.align.push(Jt[1]);
                  }
                  switch (Jt[0]) {
                    case "top":
                      j.baseline.push("bottom");
                      break;
                    case "bottom":
                      j.baseline.push("top");
                      break;
                    default:
                      j.baseline.push(Jt[0]);
                  }
                }
                if (A(rt))
                  for (j.color = new Array(H), at = 0; at < H; at++)
                    j.color[at] = rt[at];
                else
                  j.color = rt;
                if (A(st) || Array.isArray(vt) || A(ht) || Array.isArray(et) || Array.isArray(Q))
                  for (j.font = new Array(H), at = 0; at < H; at++) {
                    var Qt = j.font[at] = {};
                    Qt.size = (T.isTypedArray(st) ? st[at] : A(st) ? b(st[at]) ? st[at] : 0 : st) * ut, Qt.family = Array.isArray(vt) ? vt[at] : vt, Qt.weight = v(A(ht) ? ht[at] : ht), Qt.style = Array.isArray(et) ? et[at] : et, Qt.variant = Array.isArray(Q) ? Q[at] : Q;
                  }
                else
                  j.font = {
                    size: st * ut,
                    family: vt,
                    weight: v(ht),
                    style: et,
                    variant: Q
                  };
                return j;
              }
              function v(B) {
                return B <= 1e3 ? B > 500 ? "bold" : "normal" : B;
              }
              function f(B, V) {
                var U = V._length, H = V.marker, F = {}, G, q = A(H.symbol), rt = A(H.angle), st = A(H.color), vt = A(H.line.color), ht = A(H.opacity), et = A(H.size), Q = A(H.line.width), j;
                if (q || (j = a.isOpenSymbol(H.symbol)), q || st || vt || ht || rt) {
                  F.symbols = new Array(U), F.angles = new Array(U), F.colors = new Array(U), F.borderColors = new Array(U);
                  var at = H.symbol, ut = H.angle, nt = t(H, H.opacity, U), X = t(H.line, H.opacity, U);
                  if (!A(X[0])) {
                    var ct = X;
                    for (X = Array(U), G = 0; G < U; G++)
                      X[G] = ct;
                  }
                  if (!A(nt[0])) {
                    var lt = nt;
                    for (nt = Array(U), G = 0; G < U; G++)
                      nt[G] = lt;
                  }
                  if (!A(at)) {
                    var pt = at;
                    for (at = Array(U), G = 0; G < U; G++)
                      at[G] = pt;
                  }
                  if (!A(ut)) {
                    var wt = ut;
                    for (ut = Array(U), G = 0; G < U; G++)
                      ut[G] = wt;
                  }
                  for (F.symbols = at, F.angles = ut, F.colors = nt, F.borderColors = X, G = 0; G < U; G++)
                    q && (j = a.isOpenSymbol(H.symbol[G])), j && (X[G] = nt[G].slice(), nt[G] = nt[G].slice(), nt[G][3] = 0);
                  for (F.opacity = V.opacity, F.markers = new Array(U), G = 0; G < U; G++)
                    F.markers[G] = E({
                      mx: F.symbols[G],
                      ma: F.angles[G]
                    }, V);
                } else
                  j ? (F.color = n(H.color, "uint8"), F.color[3] = 0, F.borderColor = n(H.color, "uint8")) : (F.color = n(H.color, "uint8"), F.borderColor = n(H.line.color, "uint8")), F.opacity = V.opacity * H.opacity, F.marker = E({
                    mx: H.symbol,
                    ma: H.angle
                  }, V);
                var Et = 1, Ct = i(V, Et), Gt;
                if (et || Q) {
                  var Jt = F.sizes = new Array(U), Qt = F.borderSizes = new Array(U), Vt = 0, zt;
                  if (et) {
                    for (G = 0; G < U; G++)
                      Jt[G] = Ct(H.size[G]), Vt += Jt[G];
                    zt = Vt / U;
                  } else
                    for (Gt = Ct(H.size), G = 0; G < U; G++)
                      Jt[G] = Gt;
                  if (Q)
                    for (G = 0; G < U; G++)
                      Qt[G] = H.line.width[G];
                  else
                    for (Gt = H.line.width, G = 0; G < U; G++)
                      Qt[G] = Gt;
                  F.sizeAvg = zt;
                } else
                  F.size = Ct(H && H.size || 10), F.borderSizes = Ct(H.line.width);
                return F;
              }
              function _(B, V, U) {
                var H = V.marker, F = {};
                return U && (U.marker && U.marker.symbol ? F = f(B, T.extendFlat({}, H, U.marker)) : U.marker && (U.marker.size && (F.size = U.marker.size), U.marker.color && (F.colors = U.marker.color), U.marker.opacity !== void 0 && (F.opacity = U.marker.opacity))), F;
              }
              function S(B, V, U) {
                var H = {};
                if (!U) return H;
                if (U.textfont) {
                  var F = {
                    opacity: 1,
                    text: V.text,
                    texttemplate: V.texttemplate,
                    textposition: V.textposition,
                    textfont: T.extendFlat({}, V.textfont)
                  };
                  U.textfont && T.extendFlat(F.textfont, U.textfont), H = c(B, F);
                }
                return H;
              }
              function M(B, V, U) {
                var H = {
                  capSize: V.width * 2 * U,
                  lineWidth: V.thickness * U,
                  color: V.color
                };
                return V.copy_ystyle && (H = B.error_y), H;
              }
              var C = l.SYMBOL_SDF_SIZE, m = l.SYMBOL_SIZE, L = l.SYMBOL_STROKE, d = {}, h = p.symbolFuncs[0](m * 0.05);
              function E(B, V) {
                var U = B.mx;
                if (U === "circle") return null;
                var H, F, G = p.symbolNumber(U), q = p.symbolFuncs[G % 100], rt = !!p.symbolNoDot[G % 100], st = !!p.symbolNoFill[G % 100], vt = a.isDotSymbol(U);
                if (B.ma && (U += "_" + B.ma), d[U]) return d[U];
                var ht = p.getMarkerAngle(B, V);
                return vt && !rt ? H = q(m * 1.1, ht) + h : H = q(m, ht), F = P(H, {
                  w: C,
                  h: C,
                  viewBox: [-m, -m, m, m],
                  stroke: st ? L : -L
                }), d[U] = F, F || null;
              }
              function w(B, V, U) {
                var H = U.length, F = H / 2, G, q;
                if (r.hasLines(V) && F)
                  if (V.line.shape === "hv") {
                    for (G = [], q = 0; q < F - 1; q++)
                      isNaN(U[q * 2]) || isNaN(U[q * 2 + 1]) ? G.push(NaN, NaN, NaN, NaN) : (G.push(U[q * 2], U[q * 2 + 1]), !isNaN(U[q * 2 + 2]) && !isNaN(U[q * 2 + 3]) ? G.push(U[q * 2 + 2], U[q * 2 + 1]) : G.push(NaN, NaN));
                    G.push(U[H - 2], U[H - 1]);
                  } else if (V.line.shape === "hvh") {
                    for (G = [], q = 0; q < F - 1; q++)
                      if (isNaN(U[q * 2]) || isNaN(U[q * 2 + 1]) || isNaN(U[q * 2 + 2]) || isNaN(U[q * 2 + 3]))
                        !isNaN(U[q * 2]) && !isNaN(U[q * 2 + 1]) ? G.push(U[q * 2], U[q * 2 + 1]) : G.push(NaN, NaN), G.push(NaN, NaN);
                      else {
                        var rt = (U[q * 2] + U[q * 2 + 2]) / 2;
                        G.push(U[q * 2], U[q * 2 + 1], rt, U[q * 2 + 1], rt, U[q * 2 + 3]);
                      }
                    G.push(U[H - 2], U[H - 1]);
                  } else if (V.line.shape === "vhv") {
                    for (G = [], q = 0; q < F - 1; q++)
                      if (isNaN(U[q * 2]) || isNaN(U[q * 2 + 1]) || isNaN(U[q * 2 + 2]) || isNaN(U[q * 2 + 3]))
                        !isNaN(U[q * 2]) && !isNaN(U[q * 2 + 1]) ? G.push(U[q * 2], U[q * 2 + 1]) : G.push(NaN, NaN), G.push(NaN, NaN);
                      else {
                        var st = (U[q * 2 + 1] + U[q * 2 + 3]) / 2;
                        G.push(U[q * 2], U[q * 2 + 1], U[q * 2], st, U[q * 2 + 2], st);
                      }
                    G.push(U[H - 2], U[H - 1]);
                  } else if (V.line.shape === "vh") {
                    for (G = [], q = 0; q < F - 1; q++)
                      isNaN(U[q * 2]) || isNaN(U[q * 2 + 1]) ? G.push(NaN, NaN, NaN, NaN) : (G.push(U[q * 2], U[q * 2 + 1]), !isNaN(U[q * 2 + 2]) && !isNaN(U[q * 2 + 3]) ? G.push(U[q * 2], U[q * 2 + 3]) : G.push(NaN, NaN));
                    G.push(U[H - 2], U[H - 1]);
                  } else
                    G = U;
                var vt = !1;
                for (q = 0; q < G.length; q++)
                  if (isNaN(G[q])) {
                    vt = !0;
                    break;
                  }
                var ht = vt || G.length > l.TOO_MANY_POINTS || r.hasMarkers(V) ? "rect" : "round";
                if (vt && V.connectgaps) {
                  var et = G[0], Q = G[1];
                  for (q = 0; q < G.length; q += 2)
                    isNaN(G[q]) || isNaN(G[q + 1]) ? (G[q] = et, G[q + 1] = Q) : (et = G[q], Q = G[q + 1]);
                }
                return {
                  join: ht,
                  positions: G
                };
              }
              function z(B, V, U, H, F) {
                var G = s.getComponentMethod("errorbars", "makeComputeError"), q = u.getFromId(B, V.xaxis, "x"), rt = u.getFromId(B, V.yaxis, "y"), st = U.length / 2, vt = {};
                function ht(et, Q) {
                  var j = Q._id.charAt(0), at = V["error_" + j];
                  if (at && at.visible && (Q.type === "linear" || Q.type === "log")) {
                    for (var ut = G(at), nt = {
                      x: 0,
                      y: 1
                    }[j], X = {
                      x: [0, 1, 2, 3],
                      y: [2, 3, 0, 1]
                    }[j], ct = new Float64Array(4 * st), lt = 1 / 0, pt = -1 / 0, wt = 0, Et = 0; wt < st; wt++, Et += 4) {
                      var Ct = et[wt];
                      if (b(Ct)) {
                        var Gt = U[wt * 2 + nt], Jt = ut(Ct, wt), Qt = Jt[0], Vt = Jt[1];
                        if (b(Qt) && b(Vt)) {
                          var zt = Ct - Qt, Rt = Ct + Vt;
                          ct[Et + X[0]] = Gt - Q.c2l(zt), ct[Et + X[1]] = Q.c2l(Rt) - Gt, ct[Et + X[2]] = 0, ct[Et + X[3]] = 0, lt = Math.min(lt, Ct - Qt), pt = Math.max(pt, Ct + Vt);
                        }
                      }
                    }
                    vt[j] = {
                      positions: U,
                      errors: ct,
                      _bnds: [lt, pt]
                    };
                  }
                }
                return ht(H, q), ht(F, rt), vt;
              }
              function O(B, V, U, H) {
                var F = V._length, G = {}, q;
                if (r.hasMarkers(V)) {
                  var rt = U.font, st = U.align, vt = U.baseline;
                  for (G.offset = new Array(F), q = 0; q < F; q++) {
                    var ht = H.sizes ? H.sizes[q] : H.size, et = A(rt) ? rt[q].size : rt.size, Q = A(st) ? st.length > 1 ? st[q] : st[0] : st, j = A(vt) ? vt.length > 1 ? vt[q] : vt[0] : vt, at = y[Q], ut = y[j], nt = ht ? ht / 0.8 + 1 : 0, X = -ut * nt - ut * 0.5;
                    G.offset[q] = [at * nt / et, X / et];
                  }
                }
                return G;
              }
              Y.exports = {
                style: x,
                markerStyle: f,
                markerSelection: _,
                linePositions: w,
                errorBarPositions: z,
                textPosition: O
              };
            }
          ),
          /***/
          86590: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(33626), n = e(4075), s = e(92089), T = e(32660), A = e(64726), p = e(99867), u = e(99669), t = e(24272), r = e(98168), i = e(54114), a = e(663);
              Y.exports = function(o, y, g, x) {
                function c(L, d) {
                  return b.coerce(o, y, s, L, d);
                }
                var v = o.marker ? n.isOpenSymbol(o.marker.symbol) : !1, f = A.isBubble(o), _ = p(o, y, x, c);
                if (!_) {
                  y.visible = !1;
                  return;
                }
                u(o, y, x, c), c("xhoverformat"), c("yhoverformat");
                var S = _ < T.PTS_LINESONLY ? "lines+markers" : "lines";
                c("text"), c("hovertext"), c("hovertemplate"), c("mode", S), A.hasMarkers(y) && (t(o, y, g, x, c, {
                  noAngleRef: !0,
                  noStandOff: !0
                }), c("marker.line.width", v || f ? 1 : 0)), A.hasLines(y) && (c("connectgaps"), r(o, y, g, x, c), c("line.shape")), A.hasText(y) && (c("texttemplate"), a(o, y, x, c, {
                  noFontShadow: !0,
                  noFontLineposition: !0,
                  noFontTextcase: !0
                }));
                var M = (y.line || {}).color, C = (y.marker || {}).color;
                c("fill"), y.fill !== "none" && i(o, y, g, c);
                var m = P.getComponentMethod("errorbars", "supplyDefaults");
                m(o, y, M || C || g, {
                  axis: "y"
                }), m(o, y, M || C || g, {
                  axis: "x",
                  inherit: "y"
                }), b.coerceSelectionMarkerOpacity(y, c);
              };
            }
          ),
          /***/
          85686: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(78766), n = e(20438).DESELECTDIM;
              function s(T) {
                var A = T[0], p = A.trace, u = A.t, t = u._scene, r = u.index, i = t.selectBatch[r], a = t.unselectBatch[r], l = t.textOptions[r], o = t.textSelectedOptions[r] || {}, y = t.textUnselectedOptions[r] || {}, g = b.extendFlat({}, l), x, c;
                if (i.length || a.length) {
                  var v = o.color, f = y.color, _ = l.color, S = b.isArrayOrTypedArray(_);
                  for (g.color = new Array(p._length), x = 0; x < i.length; x++)
                    c = i[x], g.color[c] = v || (S ? _[c] : _);
                  for (x = 0; x < a.length; x++) {
                    c = a[x];
                    var M = S ? _[c] : _;
                    g.color[c] = f || (v ? M : P.addOpacity(M, n));
                  }
                }
                t.glText[r].update(g);
              }
              Y.exports = {
                styleTextSelection: s
              };
            }
          ),
          /***/
          99185: (
            /***/
            function(Y, K, e) {
              var b = e(15294);
              Y.exports = function(n, s, T) {
                var A = n.i;
                return "x" in n || (n.x = s._x[A]), "y" in n || (n.y = s._y[A]), b(n, s, T);
              };
            }
          ),
          /***/
          4075: (
            /***/
            function(Y, K, e) {
              var b = e(29483);
              K.isOpenSymbol = function(P) {
                return typeof P == "string" ? b.OPEN_RE.test(P) : P % 200 > 100;
              }, K.isDotSymbol = function(P) {
                return typeof P == "string" ? b.DOT_RE.test(P) : P > 200;
              };
            }
          ),
          /***/
          36544: (
            /***/
            function(Y, K, e) {
              var b = e(33626), P = e(34809), n = e(11539);
              function s(A, p, u, t) {
                var r = A.cd, i = r[0].t, a = r[0].trace, l = A.xa, o = A.ya, y = i.x, g = i.y, x = l.c2p(p), c = o.c2p(u), v = A.distance, f;
                if (i.tree) {
                  var _ = l.p2c(x - v), S = l.p2c(x + v), M = o.p2c(c - v), C = o.p2c(c + v);
                  t === "x" ? f = i.tree.range(Math.min(_, S), Math.min(o._rl[0], o._rl[1]), Math.max(_, S), Math.max(o._rl[0], o._rl[1])) : f = i.tree.range(Math.min(_, S), Math.min(M, C), Math.max(_, S), Math.max(M, C));
                } else
                  f = i.ids;
                var m, L, d, h, E, w, z, O, B, V = v;
                if (t === "x") {
                  var U = !!a.xperiodalignment, H = !!a.yperiodalignment;
                  for (E = 0; E < f.length; E++) {
                    if (m = f[E], d = y[m], w = Math.abs(l.c2p(d) - x), U) {
                      var F = l.c2p(a._xStarts[m]), G = l.c2p(a._xEnds[m]);
                      w = x >= Math.min(F, G) && x <= Math.max(F, G) ? 0 : 1 / 0;
                    }
                    if (w < V) {
                      if (V = w, h = g[m], z = o.c2p(h) - c, H) {
                        var q = o.c2p(a._yStarts[m]), rt = o.c2p(a._yEnds[m]);
                        z = c >= Math.min(q, rt) && c <= Math.max(q, rt) ? 0 : 1 / 0;
                      }
                      B = Math.sqrt(w * w + z * z), L = f[E];
                    }
                  }
                } else
                  for (E = f.length - 1; E > -1; E--)
                    m = f[E], d = y[m], h = g[m], w = l.c2p(d) - x, z = o.c2p(h) - c, O = Math.sqrt(w * w + z * z), O < V && (V = B = O, L = m);
                return A.index = L, A.distance = V, A.dxy = B, L === void 0 ? [A] : [T(A, y, g, a)];
              }
              function T(A, p, u, t) {
                var r = A.xa, i = A.ya, a = A.distance, l = A.dxy, o = A.index, y = {
                  pointNumber: o,
                  x: p[o],
                  y: u[o]
                };
                y.tx = P.isArrayOrTypedArray(t.text) ? t.text[o] : t.text, y.htx = Array.isArray(t.hovertext) ? t.hovertext[o] : t.hovertext, y.data = Array.isArray(t.customdata) ? t.customdata[o] : t.customdata, y.tp = Array.isArray(t.textposition) ? t.textposition[o] : t.textposition;
                var g = t.textfont;
                g && (y.ts = P.isArrayOrTypedArray(g.size) ? g.size[o] : g.size, y.tc = P.isArrayOrTypedArray(g.color) ? g.color[o] : g.color, y.tf = Array.isArray(g.family) ? g.family[o] : g.family, y.tw = Array.isArray(g.weight) ? g.weight[o] : g.weight, y.ty = Array.isArray(g.style) ? g.style[o] : g.style, y.tv = Array.isArray(g.variant) ? g.variant[o] : g.variant);
                var x = t.marker;
                x && (y.ms = P.isArrayOrTypedArray(x.size) ? x.size[o] : x.size, y.mo = P.isArrayOrTypedArray(x.opacity) ? x.opacity[o] : x.opacity, y.mx = P.isArrayOrTypedArray(x.symbol) ? x.symbol[o] : x.symbol, y.ma = P.isArrayOrTypedArray(x.angle) ? x.angle[o] : x.angle, y.mc = P.isArrayOrTypedArray(x.color) ? x.color[o] : x.color);
                var c = x && x.line;
                c && (y.mlc = Array.isArray(c.color) ? c.color[o] : c.color, y.mlw = P.isArrayOrTypedArray(c.width) ? c.width[o] : c.width);
                var v = x && x.gradient;
                v && v.type !== "none" && (y.mgt = Array.isArray(v.type) ? v.type[o] : v.type, y.mgc = Array.isArray(v.color) ? v.color[o] : v.color);
                var f = r.c2p(y.x, !0), _ = i.c2p(y.y, !0), S = y.mrc || 1, M = t.hoverlabel;
                M && (y.hbg = Array.isArray(M.bgcolor) ? M.bgcolor[o] : M.bgcolor, y.hbc = Array.isArray(M.bordercolor) ? M.bordercolor[o] : M.bordercolor, y.hts = P.isArrayOrTypedArray(M.font.size) ? M.font.size[o] : M.font.size, y.htc = Array.isArray(M.font.color) ? M.font.color[o] : M.font.color, y.htf = Array.isArray(M.font.family) ? M.font.family[o] : M.font.family, y.hnl = P.isArrayOrTypedArray(M.namelength) ? M.namelength[o] : M.namelength);
                var C = t.hoverinfo;
                C && (y.hi = Array.isArray(C) ? C[o] : C);
                var m = t.hovertemplate;
                m && (y.ht = Array.isArray(m) ? m[o] : m);
                var L = {};
                L[A.index] = y;
                var d = t._origX, h = t._origY, E = P.extendFlat({}, A, {
                  color: n(t, y),
                  x0: f - S,
                  x1: f + S,
                  xLabelVal: d ? d[o] : y.x,
                  y0: _ - S,
                  y1: _ + S,
                  yLabelVal: h ? h[o] : y.y,
                  cd: L,
                  distance: a,
                  spikeDistance: l,
                  hovertemplate: y.ht
                });
                return y.htx ? E.text = y.htx : y.tx ? E.text = y.tx : t.text && (E.text = t.text), P.fillText(y, t, E), b.getComponentMethod("errorbars", "hoverInfo")(y, t, E), E;
              }
              Y.exports = {
                hoverPoints: s,
                calcHover: T
              };
            }
          ),
          /***/
          52378: (
            /***/
            function(Y, K, e) {
              var b = e(68258);
              b.plot = e(47731), Y.exports = b;
            }
          ),
          /***/
          47731: (
            /***/
            function(Y, K, e) {
              var b = e(62172), P = e(49478), n = e(29978), s = e(74024), T = e(34809), A = e(70414).selectMode, p = e(22459), u = e(64726), t = e(17210), r = e(85686).styleTextSelection, i = {};
              function a(o, y, g, x) {
                var c = o._size, v = o.width * x, f = o.height * x, _ = c.l * x, S = c.b * x, M = c.r * x, C = c.t * x, m = c.w * x, L = c.h * x;
                return [_ + y.domain[0] * m, S + g.domain[0] * L, v - M - (1 - y.domain[1]) * m, f - C - (1 - g.domain[1]) * L];
              }
              var l = Y.exports = function(y, g, x) {
                if (x.length) {
                  var c = y._fullLayout, v = g._scene, f = g.xaxis, _ = g.yaxis, S, M;
                  if (v) {
                    var C = p(y, ["ANGLE_instanced_arrays", "OES_element_index_uint"], i);
                    if (!C) {
                      v.init();
                      return;
                    }
                    var m = v.count, L = c._glcanvas.data()[0].regl;
                    if (t(y, g, x), v.dirty) {
                      if ((v.line2d || v.error2d) && !(v.scatter2d || v.fill2d || v.glText) && L.clear({}), v.error2d === !0 && (v.error2d = n(L)), v.line2d === !0 && (v.line2d = P(L)), v.scatter2d === !0 && (v.scatter2d = b(L)), v.fill2d === !0 && (v.fill2d = P(L)), v.glText === !0)
                        for (v.glText = new Array(m), S = 0; S < m; S++)
                          v.glText[S] = new s(L);
                      if (v.glText) {
                        if (m > v.glText.length) {
                          var d = m - v.glText.length;
                          for (S = 0; S < d; S++)
                            v.glText.push(new s(L));
                        } else if (m < v.glText.length) {
                          var h = v.glText.length - m, E = v.glText.splice(m, h);
                          E.forEach(function(nt) {
                            nt.destroy();
                          });
                        }
                        for (S = 0; S < m; S++)
                          v.glText[S].update(v.textOptions[S]);
                      }
                      if (v.line2d && (v.line2d.update(v.lineOptions), v.lineOptions = v.lineOptions.map(function(nt) {
                        if (nt && nt.positions) {
                          for (var X = nt.positions, ct = 0; ct < X.length && (isNaN(X[ct]) || isNaN(X[ct + 1])); )
                            ct += 2;
                          for (var lt = X.length - 2; lt > ct && (isNaN(X[lt]) || isNaN(X[lt + 1])); )
                            lt -= 2;
                          nt.positions = X.slice(ct, lt + 2);
                        }
                        return nt;
                      }), v.line2d.update(v.lineOptions)), v.error2d) {
                        var w = (v.errorXOptions || []).concat(v.errorYOptions || []);
                        v.error2d.update(w);
                      }
                      v.scatter2d && v.scatter2d.update(v.markerOptions), v.fillOrder = T.repeat(null, m), v.fill2d && (v.fillOptions = v.fillOptions.map(function(nt, X) {
                        var ct = x[X];
                        if (!(!nt || !ct || !ct[0] || !ct[0].trace)) {
                          var lt = ct[0], pt = lt.trace, wt = lt.t, Et = v.lineOptions[X], Ct, Gt, Jt = [];
                          pt._ownfill && Jt.push(X), pt._nexttrace && Jt.push(X + 1), Jt.length && (v.fillOrder[X] = Jt);
                          var Qt = [], Vt = Et && Et.positions || wt.positions, zt, Rt;
                          if (pt.fill === "tozeroy") {
                            for (zt = 0; zt < Vt.length && isNaN(Vt[zt + 1]); )
                              zt += 2;
                            for (Rt = Vt.length - 2; Rt > zt && isNaN(Vt[Rt + 1]); )
                              Rt -= 2;
                            Vt[zt + 1] !== 0 && (Qt = [Vt[zt], 0]), Qt = Qt.concat(Vt.slice(zt, Rt + 2)), Vt[Rt + 1] !== 0 && (Qt = Qt.concat([Vt[Rt], 0]));
                          } else if (pt.fill === "tozerox") {
                            for (zt = 0; zt < Vt.length && isNaN(Vt[zt]); )
                              zt += 2;
                            for (Rt = Vt.length - 2; Rt > zt && isNaN(Vt[Rt]); )
                              Rt -= 2;
                            Vt[zt] !== 0 && (Qt = [0, Vt[zt + 1]]), Qt = Qt.concat(Vt.slice(zt, Rt + 2)), Vt[Rt] !== 0 && (Qt = Qt.concat([0, Vt[Rt + 1]]));
                          } else if (pt.fill === "toself" || pt.fill === "tonext") {
                            for (Qt = [], Ct = 0, nt.splitNull = !0, Gt = 0; Gt < Vt.length; Gt += 2)
                              (isNaN(Vt[Gt]) || isNaN(Vt[Gt + 1])) && (Qt = Qt.concat(Vt.slice(Ct, Gt)), Qt.push(Vt[Ct], Vt[Ct + 1]), Qt.push(null, null), Ct = Gt + 2);
                            Qt = Qt.concat(Vt.slice(Ct)), Ct && Qt.push(Vt[Ct], Vt[Ct + 1]);
                          } else {
                            var Wt = pt._nexttrace;
                            if (Wt) {
                              var kt = v.lineOptions[X + 1];
                              if (kt) {
                                var re = kt.positions;
                                if (pt.fill === "tonexty") {
                                  for (Qt = Vt.slice(), X = Math.floor(re.length / 2); X--; ) {
                                    var ge = re[X * 2], _e = re[X * 2 + 1];
                                    isNaN(ge) || isNaN(_e) || Qt.push(ge, _e);
                                  }
                                  nt.fill = Wt.fillcolor;
                                }
                              }
                            }
                          }
                          if (pt._prevtrace && pt._prevtrace.fill === "tonext") {
                            var ce = v.lineOptions[X - 1].positions, ae = Qt.length / 2;
                            Ct = ae;
                            var Se = [Ct];
                            for (Gt = 0; Gt < ce.length; Gt += 2)
                              (isNaN(ce[Gt]) || isNaN(ce[Gt + 1])) && (Se.push(Gt / 2 + ae + 1), Ct = Gt + 2);
                            Qt = Qt.concat(ce), nt.hole = Se;
                          }
                          return nt.fillmode = pt.fill, nt.opacity = pt.opacity, nt.positions = Qt, nt;
                        }
                      }), v.fill2d.update(v.fillOptions));
                    }
                    var z = c.dragmode, O = A(z), B = c.clickmode.indexOf("select") > -1;
                    for (S = 0; S < m; S++) {
                      var V = x[S][0], U = V.trace, H = V.t, F = H.index, G = U._length, q = H.x, rt = H.y;
                      if (U.selectedpoints || O || B) {
                        if (O || (O = !0), U.selectedpoints) {
                          var st = v.selectBatch[F] = T.selIndices2selPoints(U), vt = {};
                          for (M = 0; M < st.length; M++)
                            vt[st[M]] = 1;
                          var ht = [];
                          for (M = 0; M < G; M++)
                            vt[M] || ht.push(M);
                          v.unselectBatch[F] = ht;
                        }
                        var et = H.xpx = new Array(G), Q = H.ypx = new Array(G);
                        for (M = 0; M < G; M++)
                          et[M] = f.c2p(q[M]), Q[M] = _.c2p(rt[M]);
                      } else
                        H.xpx = H.ypx = null;
                    }
                    if (O) {
                      if (v.select2d || (v.select2d = b(c._glcanvas.data()[1].regl)), v.scatter2d) {
                        var j = new Array(m);
                        for (S = 0; S < m; S++)
                          j[S] = v.selectBatch[S].length || v.unselectBatch[S].length ? v.markerUnselectedOptions[S] : {};
                        v.scatter2d.update(j);
                      }
                      v.select2d && (v.select2d.update(v.markerOptions), v.select2d.update(v.markerSelectedOptions)), v.glText && x.forEach(function(nt) {
                        var X = ((nt || [])[0] || {}).trace || {};
                        u.hasText(X) && r(nt);
                      });
                    } else
                      v.scatter2d && v.scatter2d.update(v.markerOptions);
                    var at = {
                      viewport: a(c, f, _, y._context.plotGlPixelRatio),
                      // TODO do we need those fallbacks?
                      range: [(f._rl || f.range)[0], (_._rl || _.range)[0], (f._rl || f.range)[1], (_._rl || _.range)[1]]
                    }, ut = T.repeat(at, v.count);
                    v.fill2d && v.fill2d.update(ut), v.line2d && v.line2d.update(ut), v.error2d && v.error2d.update(ut.concat(ut)), v.scatter2d && v.scatter2d.update(ut), v.select2d && v.select2d.update(ut), v.glText && v.glText.forEach(function(nt) {
                      nt.update(at);
                    });
                  }
                }
              };
              l.reglPrecompiled = i;
            }
          ),
          /***/
          62336: (
            /***/
            function(Y, K, e) {
              var b = e(34809);
              Y.exports = function(n, s) {
                var T = s._scene, A = {
                  // number of traces in subplot, since scene:subplot -> 1:1
                  count: 0,
                  // whether scene requires init hook in plot call (dirty plot call)
                  dirty: !0,
                  // last used options
                  lineOptions: [],
                  fillOptions: [],
                  markerOptions: [],
                  markerSelectedOptions: [],
                  markerUnselectedOptions: [],
                  errorXOptions: [],
                  errorYOptions: [],
                  textOptions: [],
                  textSelectedOptions: [],
                  textUnselectedOptions: [],
                  // selection batches
                  selectBatch: [],
                  unselectBatch: []
                }, p = {
                  fill2d: !1,
                  scatter2d: !1,
                  error2d: !1,
                  line2d: !1,
                  glText: !1,
                  select2d: !1
                };
                return s._scene || (T = s._scene = {}, T.init = function() {
                  b.extendFlat(T, p, A);
                }, T.init(), T.update = function(t) {
                  var r = b.repeat(t, T.count);
                  if (T.fill2d && T.fill2d.update(r), T.scatter2d && T.scatter2d.update(r), T.line2d && T.line2d.update(r), T.error2d && T.error2d.update(r.concat(r)), T.select2d && T.select2d.update(r), T.glText)
                    for (var i = 0; i < T.count; i++)
                      T.glText[i].update(t);
                }, T.draw = function() {
                  for (var t = T.count, r = T.fill2d, i = T.error2d, a = T.line2d, l = T.scatter2d, o = T.glText, y = T.select2d, g = T.selectBatch, x = T.unselectBatch, c = 0; c < t; c++) {
                    if (r && T.fillOrder[c] && r.draw(T.fillOrder[c]), a && T.lineOptions[c] && a.draw(c), i && (T.errorXOptions[c] && i.draw(c), T.errorYOptions[c] && i.draw(c + t)), l && T.markerOptions[c])
                      if (x[c].length) {
                        var v = b.repeat([], T.count);
                        v[c] = x[c], l.draw(v);
                      } else g[c].length || l.draw(c);
                    o[c] && T.textOptions[c] && o[c].render();
                  }
                  y && y.draw(g), T.dirty = !1;
                }, T.destroy = function() {
                  T.fill2d && T.fill2d.destroy && T.fill2d.destroy(), T.scatter2d && T.scatter2d.destroy && T.scatter2d.destroy(), T.error2d && T.error2d.destroy && T.error2d.destroy(), T.line2d && T.line2d.destroy && T.line2d.destroy(), T.select2d && T.select2d.destroy && T.select2d.destroy(), T.glText && T.glText.forEach(function(t) {
                    t.destroy && t.destroy();
                  }), T.lineOptions = null, T.fillOptions = null, T.markerOptions = null, T.markerSelectedOptions = null, T.markerUnselectedOptions = null, T.errorXOptions = null, T.errorYOptions = null, T.textOptions = null, T.textSelectedOptions = null, T.textUnselectedOptions = null, T.selectBatch = null, T.unselectBatch = null, s._scene = null;
                }), T.dirty || b.extendFlat(T, A), T;
              };
            }
          ),
          /***/
          17168: (
            /***/
            function(Y, K, e) {
              var b = e(64726), P = e(85686).styleTextSelection;
              Y.exports = function(s, T) {
                var A = s.cd, p = s.xaxis, u = s.yaxis, t = [], r = A[0].trace, i = A[0].t, a = r._length, l = i.x, o = i.y, y = i._scene, g = i.index;
                if (!y) return t;
                var x = b.hasText(r), c = b.hasMarkers(r), v = !c && !x;
                if (r.visible !== !0 || v) return t;
                var f = [], _ = [];
                if (T !== !1 && !T.degenerate)
                  for (var S = 0; S < a; S++)
                    T.contains([i.xpx[S], i.ypx[S]], !1, S, s) ? (f.push(S), t.push({
                      pointNumber: S,
                      x: p.c2d(l[S]),
                      y: u.c2d(o[S])
                    })) : _.push(S);
                if (c) {
                  var M = y.scatter2d;
                  if (!f.length && !_.length) {
                    var C = new Array(y.count);
                    C[g] = y.markerOptions[g], M.update.apply(M, C);
                  } else if (!y.selectBatch[g].length && !y.unselectBatch[g].length) {
                    var m = new Array(y.count);
                    m[g] = y.markerUnselectedOptions[g], M.update.apply(M, m);
                  }
                }
                return y.selectBatch[g] = f, y.unselectBatch[g] = _, x && P(A), t;
              };
            }
          ),
          /***/
          71388: (
            /***/
            function(Y, K, e) {
              var b = e(3208).rb, P = e(3208).ay, n = e(19326), s = e(6893), T = e(36640), A = e(8257), p = e(9829), u = e(87163), t = e(93049).extendFlat, r = e(13582).overrideAll, i = e(8257), a = s.line, l = s.marker;
              Y.exports = r({
                lon: s.lon,
                lat: s.lat,
                cluster: {
                  enabled: {
                    valType: "boolean"
                  },
                  maxzoom: t({}, i.layers.maxzoom, {}),
                  step: {
                    valType: "number",
                    arrayOk: !0,
                    dflt: -1,
                    min: -1
                  },
                  size: {
                    valType: "number",
                    arrayOk: !0,
                    dflt: 20,
                    min: 0
                  },
                  color: {
                    valType: "color",
                    arrayOk: !0
                  },
                  opacity: t({}, l.opacity, {
                    dflt: 1
                  })
                },
                // locations
                // locationmode
                mode: t({}, T.mode, {
                  dflt: "markers"
                }),
                text: t({}, T.text, {}),
                texttemplate: P({
                  editType: "plot"
                }, {
                  keys: ["lat", "lon", "text"]
                }),
                hovertext: t({}, T.hovertext, {}),
                line: {
                  color: a.color,
                  width: a.width
                  // TODO
                  // dash: dash
                },
                connectgaps: T.connectgaps,
                marker: t(
                  {
                    symbol: {
                      valType: "string",
                      dflt: "circle",
                      arrayOk: !0
                    },
                    angle: {
                      valType: "number",
                      dflt: "auto",
                      arrayOk: !0
                    },
                    allowoverlap: {
                      valType: "boolean",
                      dflt: !1
                    },
                    opacity: l.opacity,
                    size: l.size,
                    sizeref: l.sizeref,
                    sizemin: l.sizemin,
                    sizemode: l.sizemode
                  },
                  u("marker")
                  // line
                ),
                fill: s.fill,
                fillcolor: n(),
                textfont: A.layers.symbol.textfont,
                textposition: A.layers.symbol.textposition,
                below: {
                  valType: "string"
                },
                selected: {
                  marker: T.selected.marker
                },
                unselected: {
                  marker: T.unselected.marker
                },
                hoverinfo: t({}, p.hoverinfo, {
                  flags: ["lon", "lat", "text", "name"]
                }),
                hovertemplate: b()
              }, "calc", "nested");
            }
          ),
          /***/
          13624: (
            /***/
            function(Y) {
              var K = ["Metropolis Black Italic", "Metropolis Black", "Metropolis Bold Italic", "Metropolis Bold", "Metropolis Extra Bold Italic", "Metropolis Extra Bold", "Metropolis Extra Light Italic", "Metropolis Extra Light", "Metropolis Light Italic", "Metropolis Light", "Metropolis Medium Italic", "Metropolis Medium", "Metropolis Regular Italic", "Metropolis Regular", "Metropolis Semi Bold Italic", "Metropolis Semi Bold", "Metropolis Thin Italic", "Metropolis Thin", "Open Sans Bold Italic", "Open Sans Bold", "Open Sans Extrabold Italic", "Open Sans Extrabold", "Open Sans Italic", "Open Sans Light Italic", "Open Sans Light", "Open Sans Regular", "Open Sans Semibold Italic", "Open Sans Semibold", "Klokantech Noto Sans Bold", "Klokantech Noto Sans CJK Bold", "Klokantech Noto Sans CJK Regular", "Klokantech Noto Sans Italic", "Klokantech Noto Sans Regular"];
              Y.exports = {
                isSupportedFont: function(e) {
                  return K.indexOf(e) !== -1;
                }
              };
            }
          ),
          /***/
          76717: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(34809), n = e(63821).BADNUM, s = e(39532), T = e(88856), A = e(62203), p = e(92527), u = e(64726), t = e(13624).isSupportedFont, r = e(4657), i = e(36040).appendArrayPointValue, a = e(30635).NEWLINES, l = e(30635).BR_TAG_ALL;
              Y.exports = function(M, C) {
                var m = C[0].trace, L = m.visible === !0 && m._length !== 0, d = m.fill !== "none", h = u.hasLines(m), E = u.hasMarkers(m), w = u.hasText(m), z = E && m.marker.symbol === "circle", O = E && m.marker.symbol !== "circle", B = m.cluster && m.cluster.enabled, V = o("fill"), U = o("line"), H = o("circle"), F = o("symbol"), G = {
                  fill: V,
                  line: U,
                  circle: H,
                  symbol: F
                };
                if (!L) return G;
                var q;
                if ((d || h) && (q = s.calcTraceToLineCoords(C)), d && (V.geojson = s.makePolygon(q), V.layout.visibility = "visible", P.extendFlat(V.paint, {
                  "fill-color": m.fillcolor
                })), h && (U.geojson = s.makeLine(q), U.layout.visibility = "visible", P.extendFlat(U.paint, {
                  "line-width": m.line.width,
                  "line-color": m.line.color,
                  "line-opacity": m.opacity
                })), z) {
                  var rt = y(C);
                  H.geojson = rt.geojson, H.layout.visibility = "visible", B && (H.filter = ["!", ["has", "point_count"]], G.cluster = {
                    type: "circle",
                    filter: ["has", "point_count"],
                    layout: {
                      visibility: "visible"
                    },
                    paint: {
                      "circle-color": f(m.cluster.color, m.cluster.step),
                      "circle-radius": f(m.cluster.size, m.cluster.step),
                      "circle-opacity": f(m.cluster.opacity, m.cluster.step)
                    }
                  }, G.clusterCount = {
                    type: "symbol",
                    filter: ["has", "point_count"],
                    paint: {},
                    layout: {
                      "text-field": "{point_count_abbreviated}",
                      "text-font": _(m),
                      "text-size": 12
                    }
                  }), P.extendFlat(H.paint, {
                    "circle-color": rt.mcc,
                    "circle-radius": rt.mrc,
                    "circle-opacity": rt.mo
                  });
                }
                if (z && B && (H.filter = ["!", ["has", "point_count"]]), (O || w) && (F.geojson = g(C, M), P.extendFlat(F.layout, {
                  visibility: "visible",
                  "icon-image": "{symbol}-15",
                  "text-field": "{text}"
                }), O && (P.extendFlat(F.layout, {
                  "icon-size": m.marker.size / 10
                }), "angle" in m.marker && m.marker.angle !== "auto" && P.extendFlat(F.layout, {
                  // unfortunately cant use {angle} do to this issue:
                  // https://github.com/mapbox/mapbox-gl-js/issues/873
                  "icon-rotate": {
                    type: "identity",
                    property: "angle"
                  },
                  "icon-rotation-alignment": "map"
                }), F.layout["icon-allow-overlap"] = m.marker.allowoverlap, P.extendFlat(F.paint, {
                  "icon-opacity": m.opacity * m.marker.opacity,
                  // TODO does not work ??
                  "icon-color": m.marker.color
                })), w)) {
                  var st = (m.marker || {}).size, vt = r(m.textposition, st);
                  P.extendFlat(F.layout, {
                    "text-size": m.textfont.size,
                    "text-anchor": vt.anchor,
                    "text-offset": vt.offset,
                    "text-font": _(m)
                  }), P.extendFlat(F.paint, {
                    "text-color": m.textfont.color,
                    "text-opacity": m.opacity
                  });
                }
                return G;
              };
              function o(S) {
                return {
                  type: S,
                  geojson: s.makeBlank(),
                  layout: {
                    visibility: "none"
                  },
                  filter: null,
                  paint: {}
                };
              }
              function y(S) {
                var M = S[0].trace, C = M.marker, m = M.selectedpoints, L = P.isArrayOrTypedArray(C.color), d = P.isArrayOrTypedArray(C.size), h = P.isArrayOrTypedArray(C.opacity), E;
                function w(st) {
                  return M.opacity * st;
                }
                function z(st) {
                  return st / 2;
                }
                var O;
                L && (T.hasColorscale(M, "marker") ? O = T.makeColorScaleFuncFromTrace(C) : O = P.identity);
                var B;
                d && (B = p(M));
                var V;
                h && (V = function(st) {
                  var vt = b(st) ? +P.constrain(st, 0, 1) : 0;
                  return w(vt);
                });
                var U = [];
                for (E = 0; E < S.length; E++) {
                  var H = S[E], F = H.lonlat;
                  if (!v(F)) {
                    var G = {};
                    O && (G.mcc = H.mcc = O(H.mc)), B && (G.mrc = H.mrc = B(H.ms)), V && (G.mo = V(H.mo)), m && (G.selected = H.selected || 0), U.push({
                      type: "Feature",
                      id: E + 1,
                      geometry: {
                        type: "Point",
                        coordinates: F
                      },
                      properties: G
                    });
                  }
                }
                var q;
                if (m)
                  for (q = A.makeSelectedPointStyleFns(M), E = 0; E < U.length; E++) {
                    var rt = U[E].properties;
                    q.selectedOpacityFn && (rt.mo = w(q.selectedOpacityFn(rt))), q.selectedColorFn && (rt.mcc = q.selectedColorFn(rt)), q.selectedSizeFn && (rt.mrc = q.selectedSizeFn(rt));
                  }
                return {
                  geojson: {
                    type: "FeatureCollection",
                    features: U
                  },
                  mcc: L || q && q.selectedColorFn ? {
                    type: "identity",
                    property: "mcc"
                  } : C.color,
                  mrc: d || q && q.selectedSizeFn ? {
                    type: "identity",
                    property: "mrc"
                  } : z(C.size),
                  mo: h || q && q.selectedOpacityFn ? {
                    type: "identity",
                    property: "mo"
                  } : w(C.opacity)
                };
              }
              function g(S, M) {
                for (var C = M._fullLayout, m = S[0].trace, L = m.marker || {}, d = L.symbol, h = L.angle, E = d !== "circle" ? x(d) : c, w = h !== "auto" ? x(h, !0) : c, z = u.hasText(m) ? x(m.text) : c, O = [], B = 0; B < S.length; B++) {
                  var V = S[B];
                  if (!v(V.lonlat)) {
                    var U = m.texttemplate, H;
                    if (U) {
                      var F = Array.isArray(U) ? U[B] || "" : U, G = m._module.formatLabels(V, m, C), q = {};
                      i(q, m, V.i);
                      var rt = m._meta || {};
                      H = P.texttemplateString(F, G, C._d3locale, q, V, rt);
                    } else
                      H = z(B);
                    H && (H = H.replace(a, "").replace(l, `
`)), O.push({
                      type: "Feature",
                      geometry: {
                        type: "Point",
                        coordinates: V.lonlat
                      },
                      properties: {
                        symbol: E(B),
                        angle: w(B),
                        text: H
                      }
                    });
                  }
                }
                return {
                  type: "FeatureCollection",
                  features: O
                };
              }
              function x(S, M) {
                return P.isArrayOrTypedArray(S) ? M ? function(C) {
                  return b(S[C]) ? +S[C] : 0;
                } : function(C) {
                  return S[C];
                } : S ? function() {
                  return S;
                } : c;
              }
              function c() {
                return "";
              }
              function v(S) {
                return S[0] === n;
              }
              function f(S, M) {
                var C;
                if (P.isArrayOrTypedArray(S) && P.isArrayOrTypedArray(M)) {
                  C = ["step", ["get", "point_count"], S[0]];
                  for (var m = 1; m < S.length; m++)
                    C.push(M[m - 1], S[m]);
                } else
                  C = S;
                return C;
              }
              function _(S) {
                var M = S.textfont, C = M.family, m = M.style, L = M.weight, d = C.split(" "), h = d[d.length - 1] === "Italic";
                h && d.pop(), h = h || m === "italic";
                var E = d.join(" ");
                L === "bold" && d.indexOf("Bold") === -1 ? E += " Bold" : L <= 1e3 && (d[0] === "Metropolis" ? (E = "Metropolis", L > 850 ? E += " Black" : L > 750 ? E += " Extra Bold" : L > 650 ? E += " Bold" : L > 550 ? E += " Semi Bold" : L > 450 ? E += " Medium" : L > 350 ? E += " Regular" : L > 250 ? E += " Light" : L > 150 ? E += " Extra Light" : E += " Thin") : d.slice(0, 2).join(" ") === "Open Sans" ? (E = "Open Sans", L > 750 ? E += " Extrabold" : L > 650 ? E += " Bold" : L > 550 ? E += " Semibold" : L > 350 ? E += " Regular" : E += " Light") : d.slice(0, 3).join(" ") === "Klokantech Noto Sans" && (E = "Klokantech Noto Sans", d[3] === "CJK" && (E += " CJK"), E += L > 500 ? " Bold" : " Regular")), h && (E += " Italic"), E === "Open Sans Regular Italic" ? E = "Open Sans Italic" : E === "Open Sans Regular Bold" ? E = "Open Sans Bold" : E === "Open Sans Regular Bold Italic" ? E = "Open Sans Bold Italic" : E === "Klokantech Noto Sans Regular Italic" && (E = "Klokantech Noto Sans Italic"), t(E) || (E = C);
                var w = E.split(", ");
                return w;
              }
            }
          ),
          /***/
          57387: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(64726), n = e(24272), s = e(98168), T = e(663), A = e(54114), p = e(71388), u = e(13624).isSupportedFont;
              Y.exports = function(i, a, l, o) {
                function y(d, h) {
                  return b.coerce(i, a, p, d, h);
                }
                function g(d, h) {
                  return b.coerce2(i, a, p, d, h);
                }
                var x = t(i, a, y);
                if (!x) {
                  a.visible = !1;
                  return;
                }
                if (y("text"), y("texttemplate"), y("hovertext"), y("hovertemplate"), y("mode"), y("below"), P.hasMarkers(a)) {
                  n(i, a, l, o, y, {
                    noLine: !0,
                    noAngle: !0
                  }), y("marker.allowoverlap"), y("marker.angle");
                  var c = a.marker;
                  c.symbol !== "circle" && (b.isArrayOrTypedArray(c.size) && (c.size = c.size[0]), b.isArrayOrTypedArray(c.color) && (c.color = c.color[0]));
                }
                P.hasLines(a) && (s(i, a, l, o, y, {
                  noDash: !0
                }), y("connectgaps"));
                var v = g("cluster.maxzoom"), f = g("cluster.step"), _ = g("cluster.color", a.marker && a.marker.color || l), S = g("cluster.size"), M = g("cluster.opacity"), C = v !== !1 || f !== !1 || _ !== !1 || S !== !1 || M !== !1, m = y("cluster.enabled", C);
                if (m || P.hasText(a)) {
                  var L = o.font.family;
                  T(i, a, o, y, {
                    noSelect: !0,
                    noFontVariant: !0,
                    noFontShadow: !0,
                    noFontLineposition: !0,
                    noFontTextcase: !0,
                    font: {
                      family: u(L) ? L : "Open Sans Regular",
                      weight: o.font.weight,
                      style: o.font.style,
                      size: o.font.size,
                      color: o.font.color
                    }
                  });
                }
                y("fill"), a.fill !== "none" && A(i, a, l, y), b.coerceSelectionMarkerOpacity(a, y);
              };
              function t(r, i, a) {
                var l = a("lon") || [], o = a("lat") || [], y = Math.min(l.length, o.length);
                return i._length = y, y;
              }
            }
          ),
          /***/
          58240: (
            /***/
            function(Y) {
              Y.exports = function(e, b) {
                return e.lon = b.lon, e.lat = b.lat, e;
              };
            }
          ),
          /***/
          66762: (
            /***/
            function(Y, K, e) {
              var b = e(29714);
              Y.exports = function(n, s, T) {
                var A = {}, p = T[s.subplot]._subplot, u = p.mockAxis, t = n.lonlat;
                return A.lonLabel = b.tickText(u, u.c2l(t[0]), !0).text, A.latLabel = b.tickText(u, u.c2l(t[1]), !0).text, A;
              };
            }
          ),
          /***/
          67275: (
            /***/
            function(Y, K, e) {
              var b = e(32141), P = e(34809), n = e(11539), s = P.fillText, T = e(63821).BADNUM, A = e(8814).traceLayerPrefix;
              function p(t, r, i) {
                var a = t.cd, l = a[0].trace, o = t.xa, y = t.ya, g = t.subplot, x = [], c = A + l.uid + "-circle", v = l.cluster && l.cluster.enabled;
                if (v) {
                  var f = g.map.queryRenderedFeatures(null, {
                    layers: [c]
                  });
                  x = f.map(function(B) {
                    return B.id;
                  });
                }
                var _ = r >= 0 ? Math.floor((r + 180) / 360) : Math.ceil((r - 180) / 360), S = _ * 360, M = r - S;
                function C(B) {
                  var V = B.lonlat;
                  if (V[0] === T || v && x.indexOf(B.i + 1) === -1) return 1 / 0;
                  var U = P.modHalf(V[0], 360), H = V[1], F = g.project([U, H]), G = F.x - o.c2p([M, H]), q = F.y - y.c2p([U, i]), rt = Math.max(3, B.mrc || 0);
                  return Math.max(Math.sqrt(G * G + q * q) - rt, 1 - 3 / rt);
                }
                if (b.getClosest(a, C, t), t.index !== !1) {
                  var m = a[t.index], L = m.lonlat, d = [P.modHalf(L[0], 360) + S, L[1]], h = o.c2p(d), E = y.c2p(d), w = m.mrc || 1;
                  t.x0 = h - w, t.x1 = h + w, t.y0 = E - w, t.y1 = E + w;
                  var z = {};
                  z[l.subplot] = {
                    _subplot: g
                  };
                  var O = l._module.formatLabels(m, l, z);
                  return t.lonLabel = O.lonLabel, t.latLabel = O.latLabel, t.color = n(l, m), t.extraText = u(l, m, a[0].t.labels), t.hovertemplate = l.hovertemplate, [t];
                }
              }
              function u(t, r, i) {
                if (t.hovertemplate) return;
                var a = r.hi || t.hoverinfo, l = a.split("+"), o = l.indexOf("all") !== -1, y = l.indexOf("lon") !== -1, g = l.indexOf("lat") !== -1, x = r.lonlat, c = [];
                function v(f) {
                  return f + "°";
                }
                return o || y && g ? c.push("(" + v(x[1]) + ", " + v(x[0]) + ")") : y ? c.push(i.lon + v(x[0])) : g && c.push(i.lat + v(x[1])), (o || l.indexOf("text") !== -1) && s(r, t, c), c.join("<br>");
              }
              Y.exports = {
                hoverPoints: p,
                getExtraText: u
              };
            }
          ),
          /***/
          30929: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(71388),
                supplyDefaults: e(57387),
                colorbar: e(21146),
                formatLabels: e(66762),
                calc: e(75649),
                plot: e(26126),
                hoverPoints: e(67275).hoverPoints,
                eventData: e(58240),
                selectPoints: e(21501),
                styleOnSelect: function(b, P) {
                  if (P) {
                    var n = P[0].trace;
                    n._glTrace.update(P);
                  }
                },
                moduleType: "trace",
                name: "scattermap",
                basePlotModule: e(34091),
                categories: ["map", "gl", "symbols", "showLegend", "scatter-like"],
                meta: {}
              };
            }
          ),
          /***/
          26126: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(76717), n = e(8814).traceLayerPrefix, s = {
                cluster: ["cluster", "clusterCount", "circle"],
                nonCluster: ["fill", "line", "circle", "symbol"]
              };
              function T(p, u, t, r) {
                this.type = "scattermap", this.subplot = p, this.uid = u, this.clusterEnabled = t, this.isHidden = r, this.sourceIds = {
                  fill: "source-" + u + "-fill",
                  line: "source-" + u + "-line",
                  circle: "source-" + u + "-circle",
                  symbol: "source-" + u + "-symbol",
                  cluster: "source-" + u + "-circle",
                  clusterCount: "source-" + u + "-circle"
                }, this.layerIds = {
                  fill: n + u + "-fill",
                  line: n + u + "-line",
                  circle: n + u + "-circle",
                  symbol: n + u + "-symbol",
                  cluster: n + u + "-cluster",
                  clusterCount: n + u + "-cluster-count"
                }, this.below = null;
              }
              var A = T.prototype;
              A.addSource = function(p, u, t) {
                var r = {
                  type: "geojson",
                  data: u.geojson
                };
                t && t.enabled && b.extendFlat(r, {
                  cluster: !0,
                  clusterMaxZoom: t.maxzoom
                });
                var i = this.subplot.map.getSource(this.sourceIds[p]);
                i ? i.setData(u.geojson) : this.subplot.map.addSource(this.sourceIds[p], r);
              }, A.setSourceData = function(p, u) {
                this.subplot.map.getSource(this.sourceIds[p]).setData(u.geojson);
              }, A.addLayer = function(p, u, t) {
                var r = {
                  type: u.type,
                  id: this.layerIds[p],
                  source: this.sourceIds[p],
                  layout: u.layout,
                  paint: u.paint
                };
                u.filter && (r.filter = u.filter);
                for (var i = this.layerIds[p], a, l = this.subplot.getMapLayers(), o = 0; o < l.length; o++)
                  if (l[o].id === i) {
                    a = !0;
                    break;
                  }
                a ? (this.subplot.setOptions(i, "setLayoutProperty", r.layout), r.layout.visibility === "visible" && this.subplot.setOptions(i, "setPaintProperty", r.paint)) : this.subplot.addLayer(r, t);
              }, A.update = function(u) {
                var t = u[0].trace, r = this.subplot, i = r.map, a = P(r.gd, u), l = r.belowLookup["trace-" + this.uid], o = !!(t.cluster && t.cluster.enabled), y = !!this.clusterEnabled, g = this;
                function x(L) {
                  L || g.addSource("circle", a.circle, t.cluster);
                  for (var d = s.cluster, h = 0; h < d.length; h++) {
                    var E = d[h], w = a[E];
                    g.addLayer(E, w, l);
                  }
                }
                function c(L) {
                  for (var d = s.cluster, h = d.length - 1; h >= 0; h--) {
                    var E = d[h];
                    i.removeLayer(g.layerIds[E]);
                  }
                  L || i.removeSource(g.sourceIds.circle);
                }
                function v(L) {
                  for (var d = s.nonCluster, h = 0; h < d.length; h++) {
                    var E = d[h], w = a[E];
                    L || g.addSource(E, w), g.addLayer(E, w, l);
                  }
                }
                function f(L) {
                  for (var d = s.nonCluster, h = d.length - 1; h >= 0; h--) {
                    var E = d[h];
                    i.removeLayer(g.layerIds[E]), L || i.removeSource(g.sourceIds[E]);
                  }
                }
                function _(L) {
                  y ? c(L) : f(L);
                }
                function S(L) {
                  o ? x(L) : v(L);
                }
                function M() {
                  for (var L = o ? s.cluster : s.nonCluster, d = 0; d < L.length; d++) {
                    var h = L[d], E = a[h];
                    E && (r.setOptions(g.layerIds[h], "setLayoutProperty", E.layout), E.layout.visibility === "visible" && (h !== "cluster" && g.setSourceData(h, E), r.setOptions(g.layerIds[h], "setPaintProperty", E.paint)));
                  }
                }
                var C = this.isHidden, m = t.visible !== !0;
                m ? C || _() : C ? m || S() : y !== o ? (_(), S()) : (this.below !== l && (_(!0), S(!0)), M()), this.clusterEnabled = o, this.isHidden = m, this.below = l, u[0].trace._glTrace = this;
              }, A.dispose = function() {
                for (var u = this.subplot.map, t = this.clusterEnabled ? s.cluster : s.nonCluster, r = t.length - 1; r >= 0; r--) {
                  var i = t[r];
                  u.removeLayer(this.layerIds[i]), u.removeSource(this.sourceIds[i]);
                }
              }, Y.exports = function(u, t) {
                var r = t[0].trace, i = r.cluster && r.cluster.enabled, a = r.visible !== !0, l = new T(u, r.uid, i, a), o = P(u.gd, t), y = l.below = u.belowLookup["trace-" + r.uid], g, x, c;
                if (i)
                  for (l.addSource("circle", o.circle, r.cluster), g = 0; g < s.cluster.length; g++)
                    x = s.cluster[g], c = o[x], l.addLayer(x, c, y);
                else
                  for (g = 0; g < s.nonCluster.length; g++)
                    x = s.nonCluster[g], c = o[x], l.addSource(x, c, r.cluster), l.addLayer(x, c, y);
                return t[0].trace._glTrace = l, l;
              };
            }
          ),
          /***/
          21501: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(64726), n = e(63821).BADNUM;
              Y.exports = function(T, A) {
                var p = T.cd, u = T.xaxis, t = T.yaxis, r = [], i = p[0].trace, a;
                if (!P.hasMarkers(i)) return [];
                if (A === !1)
                  for (a = 0; a < p.length; a++)
                    p[a].selected = 0;
                else
                  for (a = 0; a < p.length; a++) {
                    var l = p[a], o = l.lonlat;
                    if (o[0] !== n) {
                      var y = [b.modHalf(o[0], 360), o[1]], g = [u.c2p(y), t.c2p(y)];
                      A.contains(g, null, a, T) ? (r.push({
                        pointNumber: a,
                        lon: o[0],
                        lat: o[1]
                      }), l.selected = 1) : l.selected = 0;
                    }
                  }
                return r;
              };
            }
          ),
          /***/
          95833: (
            /***/
            function(Y, K, e) {
              var b = e(3208).rb, P = e(3208).ay, n = e(19326), s = e(6893), T = e(36640), A = e(67514), p = e(9829), u = e(87163), t = e(93049).extendFlat, r = e(13582).overrideAll, i = e(67514), a = s.line, l = s.marker;
              Y.exports = r({
                lon: s.lon,
                lat: s.lat,
                cluster: {
                  enabled: {
                    valType: "boolean"
                  },
                  maxzoom: t({}, i.layers.maxzoom, {}),
                  step: {
                    valType: "number",
                    arrayOk: !0,
                    dflt: -1,
                    min: -1
                  },
                  size: {
                    valType: "number",
                    arrayOk: !0,
                    dflt: 20,
                    min: 0
                  },
                  color: {
                    valType: "color",
                    arrayOk: !0
                  },
                  opacity: t({}, l.opacity, {
                    dflt: 1
                  })
                },
                // locations
                // locationmode
                mode: t({}, T.mode, {
                  dflt: "markers"
                }),
                text: t({}, T.text, {}),
                texttemplate: P({
                  editType: "plot"
                }, {
                  keys: ["lat", "lon", "text"]
                }),
                hovertext: t({}, T.hovertext, {}),
                line: {
                  color: a.color,
                  width: a.width
                  // TODO
                  // dash: dash
                },
                connectgaps: T.connectgaps,
                marker: t(
                  {
                    symbol: {
                      valType: "string",
                      dflt: "circle",
                      arrayOk: !0
                    },
                    angle: {
                      valType: "number",
                      dflt: "auto",
                      arrayOk: !0
                    },
                    allowoverlap: {
                      valType: "boolean",
                      dflt: !1
                    },
                    opacity: l.opacity,
                    size: l.size,
                    sizeref: l.sizeref,
                    sizemin: l.sizemin,
                    sizemode: l.sizemode
                  },
                  u("marker")
                  // line
                ),
                fill: s.fill,
                fillcolor: n(),
                textfont: A.layers.symbol.textfont,
                textposition: A.layers.symbol.textposition,
                below: {
                  valType: "string"
                },
                selected: {
                  marker: T.selected.marker
                },
                unselected: {
                  marker: T.unselected.marker
                },
                hoverinfo: t({}, p.hoverinfo, {
                  flags: ["lon", "lat", "text", "name"]
                }),
                hovertemplate: b()
              }, "calc", "nested");
            }
          ),
          /***/
          2795: (
            /***/
            function(Y) {
              var K = ["Metropolis Black Italic", "Metropolis Black", "Metropolis Bold Italic", "Metropolis Bold", "Metropolis Extra Bold Italic", "Metropolis Extra Bold", "Metropolis Extra Light Italic", "Metropolis Extra Light", "Metropolis Light Italic", "Metropolis Light", "Metropolis Medium Italic", "Metropolis Medium", "Metropolis Regular Italic", "Metropolis Regular", "Metropolis Semi Bold Italic", "Metropolis Semi Bold", "Metropolis Thin Italic", "Metropolis Thin", "Open Sans Bold Italic", "Open Sans Bold", "Open Sans Extrabold Italic", "Open Sans Extrabold", "Open Sans Italic", "Open Sans Light Italic", "Open Sans Light", "Open Sans Regular", "Open Sans Semibold Italic", "Open Sans Semibold", "Klokantech Noto Sans Bold", "Klokantech Noto Sans CJK Bold", "Klokantech Noto Sans CJK Regular", "Klokantech Noto Sans Italic", "Klokantech Noto Sans Regular"];
              Y.exports = {
                isSupportedFont: function(e) {
                  return K.indexOf(e) !== -1;
                }
              };
            }
          ),
          /***/
          27009: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(34809), n = e(63821).BADNUM, s = e(39532), T = e(88856), A = e(62203), p = e(92527), u = e(64726), t = e(2795).isSupportedFont, r = e(2178), i = e(36040).appendArrayPointValue, a = e(30635).NEWLINES, l = e(30635).BR_TAG_ALL;
              Y.exports = function(M, C) {
                var m = C[0].trace, L = m.visible === !0 && m._length !== 0, d = m.fill !== "none", h = u.hasLines(m), E = u.hasMarkers(m), w = u.hasText(m), z = E && m.marker.symbol === "circle", O = E && m.marker.symbol !== "circle", B = m.cluster && m.cluster.enabled, V = o("fill"), U = o("line"), H = o("circle"), F = o("symbol"), G = {
                  fill: V,
                  line: U,
                  circle: H,
                  symbol: F
                };
                if (!L) return G;
                var q;
                if ((d || h) && (q = s.calcTraceToLineCoords(C)), d && (V.geojson = s.makePolygon(q), V.layout.visibility = "visible", P.extendFlat(V.paint, {
                  "fill-color": m.fillcolor
                })), h && (U.geojson = s.makeLine(q), U.layout.visibility = "visible", P.extendFlat(U.paint, {
                  "line-width": m.line.width,
                  "line-color": m.line.color,
                  "line-opacity": m.opacity
                })), z) {
                  var rt = y(C);
                  H.geojson = rt.geojson, H.layout.visibility = "visible", B && (H.filter = ["!", ["has", "point_count"]], G.cluster = {
                    type: "circle",
                    filter: ["has", "point_count"],
                    layout: {
                      visibility: "visible"
                    },
                    paint: {
                      "circle-color": f(m.cluster.color, m.cluster.step),
                      "circle-radius": f(m.cluster.size, m.cluster.step),
                      "circle-opacity": f(m.cluster.opacity, m.cluster.step)
                    }
                  }, G.clusterCount = {
                    type: "symbol",
                    filter: ["has", "point_count"],
                    paint: {},
                    layout: {
                      "text-field": "{point_count_abbreviated}",
                      "text-font": _(m),
                      "text-size": 12
                    }
                  }), P.extendFlat(H.paint, {
                    "circle-color": rt.mcc,
                    "circle-radius": rt.mrc,
                    "circle-opacity": rt.mo
                  });
                }
                if (z && B && (H.filter = ["!", ["has", "point_count"]]), (O || w) && (F.geojson = g(C, M), P.extendFlat(F.layout, {
                  visibility: "visible",
                  "icon-image": "{symbol}-15",
                  "text-field": "{text}"
                }), O && (P.extendFlat(F.layout, {
                  "icon-size": m.marker.size / 10
                }), "angle" in m.marker && m.marker.angle !== "auto" && P.extendFlat(F.layout, {
                  // unfortunately cant use {angle} do to this issue:
                  // https://github.com/mapbox/mapbox-gl-js/issues/873
                  "icon-rotate": {
                    type: "identity",
                    property: "angle"
                  },
                  "icon-rotation-alignment": "map"
                }), F.layout["icon-allow-overlap"] = m.marker.allowoverlap, P.extendFlat(F.paint, {
                  "icon-opacity": m.opacity * m.marker.opacity,
                  // TODO does not work ??
                  "icon-color": m.marker.color
                })), w)) {
                  var st = (m.marker || {}).size, vt = r(m.textposition, st);
                  P.extendFlat(F.layout, {
                    "text-size": m.textfont.size,
                    "text-anchor": vt.anchor,
                    "text-offset": vt.offset,
                    "text-font": _(m)
                  }), P.extendFlat(F.paint, {
                    "text-color": m.textfont.color,
                    "text-opacity": m.opacity
                  });
                }
                return G;
              };
              function o(S) {
                return {
                  type: S,
                  geojson: s.makeBlank(),
                  layout: {
                    visibility: "none"
                  },
                  filter: null,
                  paint: {}
                };
              }
              function y(S) {
                var M = S[0].trace, C = M.marker, m = M.selectedpoints, L = P.isArrayOrTypedArray(C.color), d = P.isArrayOrTypedArray(C.size), h = P.isArrayOrTypedArray(C.opacity), E;
                function w(st) {
                  return M.opacity * st;
                }
                function z(st) {
                  return st / 2;
                }
                var O;
                L && (T.hasColorscale(M, "marker") ? O = T.makeColorScaleFuncFromTrace(C) : O = P.identity);
                var B;
                d && (B = p(M));
                var V;
                h && (V = function(st) {
                  var vt = b(st) ? +P.constrain(st, 0, 1) : 0;
                  return w(vt);
                });
                var U = [];
                for (E = 0; E < S.length; E++) {
                  var H = S[E], F = H.lonlat;
                  if (!v(F)) {
                    var G = {};
                    O && (G.mcc = H.mcc = O(H.mc)), B && (G.mrc = H.mrc = B(H.ms)), V && (G.mo = V(H.mo)), m && (G.selected = H.selected || 0), U.push({
                      type: "Feature",
                      id: E + 1,
                      geometry: {
                        type: "Point",
                        coordinates: F
                      },
                      properties: G
                    });
                  }
                }
                var q;
                if (m)
                  for (q = A.makeSelectedPointStyleFns(M), E = 0; E < U.length; E++) {
                    var rt = U[E].properties;
                    q.selectedOpacityFn && (rt.mo = w(q.selectedOpacityFn(rt))), q.selectedColorFn && (rt.mcc = q.selectedColorFn(rt)), q.selectedSizeFn && (rt.mrc = q.selectedSizeFn(rt));
                  }
                return {
                  geojson: {
                    type: "FeatureCollection",
                    features: U
                  },
                  mcc: L || q && q.selectedColorFn ? {
                    type: "identity",
                    property: "mcc"
                  } : C.color,
                  mrc: d || q && q.selectedSizeFn ? {
                    type: "identity",
                    property: "mrc"
                  } : z(C.size),
                  mo: h || q && q.selectedOpacityFn ? {
                    type: "identity",
                    property: "mo"
                  } : w(C.opacity)
                };
              }
              function g(S, M) {
                for (var C = M._fullLayout, m = S[0].trace, L = m.marker || {}, d = L.symbol, h = L.angle, E = d !== "circle" ? x(d) : c, w = h !== "auto" ? x(h, !0) : c, z = u.hasText(m) ? x(m.text) : c, O = [], B = 0; B < S.length; B++) {
                  var V = S[B];
                  if (!v(V.lonlat)) {
                    var U = m.texttemplate, H;
                    if (U) {
                      var F = Array.isArray(U) ? U[B] || "" : U, G = m._module.formatLabels(V, m, C), q = {};
                      i(q, m, V.i);
                      var rt = m._meta || {};
                      H = P.texttemplateString(F, G, C._d3locale, q, V, rt);
                    } else
                      H = z(B);
                    H && (H = H.replace(a, "").replace(l, `
`)), O.push({
                      type: "Feature",
                      geometry: {
                        type: "Point",
                        coordinates: V.lonlat
                      },
                      properties: {
                        symbol: E(B),
                        angle: w(B),
                        text: H
                      }
                    });
                  }
                }
                return {
                  type: "FeatureCollection",
                  features: O
                };
              }
              function x(S, M) {
                return P.isArrayOrTypedArray(S) ? M ? function(C) {
                  return b(S[C]) ? +S[C] : 0;
                } : function(C) {
                  return S[C];
                } : S ? function() {
                  return S;
                } : c;
              }
              function c() {
                return "";
              }
              function v(S) {
                return S[0] === n;
              }
              function f(S, M) {
                var C;
                if (P.isArrayOrTypedArray(S) && P.isArrayOrTypedArray(M)) {
                  C = ["step", ["get", "point_count"], S[0]];
                  for (var m = 1; m < S.length; m++)
                    C.push(M[m - 1], S[m]);
                } else
                  C = S;
                return C;
              }
              function _(S) {
                var M = S.textfont, C = M.family, m = M.style, L = M.weight, d = C.split(" "), h = d[d.length - 1] === "Italic";
                h && d.pop(), h = h || m === "italic";
                var E = d.join(" ");
                L === "bold" && d.indexOf("Bold") === -1 ? E += " Bold" : L <= 1e3 && (d[0] === "Metropolis" ? (E = "Metropolis", L > 850 ? E += " Black" : L > 750 ? E += " Extra Bold" : L > 650 ? E += " Bold" : L > 550 ? E += " Semi Bold" : L > 450 ? E += " Medium" : L > 350 ? E += " Regular" : L > 250 ? E += " Light" : L > 150 ? E += " Extra Light" : E += " Thin") : d.slice(0, 2).join(" ") === "Open Sans" ? (E = "Open Sans", L > 750 ? E += " Extrabold" : L > 650 ? E += " Bold" : L > 550 ? E += " Semibold" : L > 350 ? E += " Regular" : E += " Light") : d.slice(0, 3).join(" ") === "Klokantech Noto Sans" && (E = "Klokantech Noto Sans", d[3] === "CJK" && (E += " CJK"), E += L > 500 ? " Bold" : " Regular")), h && (E += " Italic"), E === "Open Sans Regular Italic" ? E = "Open Sans Italic" : E === "Open Sans Regular Bold" ? E = "Open Sans Bold" : E === "Open Sans Regular Bold Italic" ? E = "Open Sans Bold Italic" : E === "Klokantech Noto Sans Regular Italic" && (E = "Klokantech Noto Sans Italic"), t(E) || (E = C);
                var w = E.split(", ");
                return w;
              }
            }
          ),
          /***/
          38302: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(64726), n = e(24272), s = e(98168), T = e(663), A = e(54114), p = e(95833), u = e(2795).isSupportedFont;
              Y.exports = function(i, a, l, o) {
                function y(d, h) {
                  return b.coerce(i, a, p, d, h);
                }
                function g(d, h) {
                  return b.coerce2(i, a, p, d, h);
                }
                var x = t(i, a, y);
                if (!x) {
                  a.visible = !1;
                  return;
                }
                if (y("text"), y("texttemplate"), y("hovertext"), y("hovertemplate"), y("mode"), y("below"), P.hasMarkers(a)) {
                  n(i, a, l, o, y, {
                    noLine: !0,
                    noAngle: !0
                  }), y("marker.allowoverlap"), y("marker.angle");
                  var c = a.marker;
                  c.symbol !== "circle" && (b.isArrayOrTypedArray(c.size) && (c.size = c.size[0]), b.isArrayOrTypedArray(c.color) && (c.color = c.color[0]));
                }
                P.hasLines(a) && (s(i, a, l, o, y, {
                  noDash: !0
                }), y("connectgaps"));
                var v = g("cluster.maxzoom"), f = g("cluster.step"), _ = g("cluster.color", a.marker && a.marker.color || l), S = g("cluster.size"), M = g("cluster.opacity"), C = v !== !1 || f !== !1 || _ !== !1 || S !== !1 || M !== !1, m = y("cluster.enabled", C);
                if (m || P.hasText(a)) {
                  var L = o.font.family;
                  T(i, a, o, y, {
                    noSelect: !0,
                    noFontVariant: !0,
                    noFontShadow: !0,
                    noFontLineposition: !0,
                    noFontTextcase: !0,
                    font: {
                      family: u(L) ? L : "Open Sans Regular",
                      weight: o.font.weight,
                      style: o.font.style,
                      size: o.font.size,
                      color: o.font.color
                    }
                  });
                }
                y("fill"), a.fill !== "none" && A(i, a, l, y), b.coerceSelectionMarkerOpacity(a, y);
              };
              function t(r, i, a) {
                var l = a("lon") || [], o = a("lat") || [], y = Math.min(l.length, o.length);
                return i._length = y, y;
              }
            }
          ),
          /***/
          68197: (
            /***/
            function(Y) {
              Y.exports = function(e, b) {
                return e.lon = b.lon, e.lat = b.lat, e;
              };
            }
          ),
          /***/
          69009: (
            /***/
            function(Y, K, e) {
              var b = e(29714);
              Y.exports = function(n, s, T) {
                var A = {}, p = T[s.subplot]._subplot, u = p.mockAxis, t = n.lonlat;
                return A.lonLabel = b.tickText(u, u.c2l(t[0]), !0).text, A.latLabel = b.tickText(u, u.c2l(t[1]), !0).text, A;
              };
            }
          ),
          /***/
          18016: (
            /***/
            function(Y, K, e) {
              var b = e(32141), P = e(34809), n = e(11539), s = P.fillText, T = e(63821).BADNUM, A = e(44245).traceLayerPrefix;
              function p(t, r, i) {
                var a = t.cd, l = a[0].trace, o = t.xa, y = t.ya, g = t.subplot, x = [], c = A + l.uid + "-circle", v = l.cluster && l.cluster.enabled;
                if (v) {
                  var f = g.map.queryRenderedFeatures(null, {
                    layers: [c]
                  });
                  x = f.map(function(B) {
                    return B.id;
                  });
                }
                var _ = r >= 0 ? Math.floor((r + 180) / 360) : Math.ceil((r - 180) / 360), S = _ * 360, M = r - S;
                function C(B) {
                  var V = B.lonlat;
                  if (V[0] === T || v && x.indexOf(B.i + 1) === -1) return 1 / 0;
                  var U = P.modHalf(V[0], 360), H = V[1], F = g.project([U, H]), G = F.x - o.c2p([M, H]), q = F.y - y.c2p([U, i]), rt = Math.max(3, B.mrc || 0);
                  return Math.max(Math.sqrt(G * G + q * q) - rt, 1 - 3 / rt);
                }
                if (b.getClosest(a, C, t), t.index !== !1) {
                  var m = a[t.index], L = m.lonlat, d = [P.modHalf(L[0], 360) + S, L[1]], h = o.c2p(d), E = y.c2p(d), w = m.mrc || 1;
                  t.x0 = h - w, t.x1 = h + w, t.y0 = E - w, t.y1 = E + w;
                  var z = {};
                  z[l.subplot] = {
                    _subplot: g
                  };
                  var O = l._module.formatLabels(m, l, z);
                  return t.lonLabel = O.lonLabel, t.latLabel = O.latLabel, t.color = n(l, m), t.extraText = u(l, m, a[0].t.labels), t.hovertemplate = l.hovertemplate, [t];
                }
              }
              function u(t, r, i) {
                if (t.hovertemplate) return;
                var a = r.hi || t.hoverinfo, l = a.split("+"), o = l.indexOf("all") !== -1, y = l.indexOf("lon") !== -1, g = l.indexOf("lat") !== -1, x = r.lonlat, c = [];
                function v(f) {
                  return f + "°";
                }
                return o || y && g ? c.push("(" + v(x[1]) + ", " + v(x[0]) + ")") : y ? c.push(i.lon + v(x[0])) : g && c.push(i.lat + v(x[1])), (o || l.indexOf("text") !== -1) && s(r, t, c), c.join("<br>");
              }
              Y.exports = {
                hoverPoints: p,
                getExtraText: u
              };
            }
          ),
          /***/
          83866: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(95833),
                supplyDefaults: e(38302),
                colorbar: e(21146),
                formatLabels: e(69009),
                calc: e(75649),
                plot: e(20691),
                hoverPoints: e(18016).hoverPoints,
                eventData: e(68197),
                selectPoints: e(60784),
                styleOnSelect: function(b, P) {
                  if (P) {
                    var n = P[0].trace;
                    n._glTrace.update(P);
                  }
                },
                moduleType: "trace",
                name: "scattermapbox",
                basePlotModule: e(68192),
                categories: ["mapbox", "gl", "symbols", "showLegend", "scatter-like"],
                meta: {}
              };
            }
          ),
          /***/
          20691: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(27009), n = e(44245).traceLayerPrefix, s = {
                cluster: ["cluster", "clusterCount", "circle"],
                nonCluster: ["fill", "line", "circle", "symbol"]
              };
              function T(p, u, t, r) {
                this.type = "scattermapbox", this.subplot = p, this.uid = u, this.clusterEnabled = t, this.isHidden = r, this.sourceIds = {
                  fill: "source-" + u + "-fill",
                  line: "source-" + u + "-line",
                  circle: "source-" + u + "-circle",
                  symbol: "source-" + u + "-symbol",
                  cluster: "source-" + u + "-circle",
                  clusterCount: "source-" + u + "-circle"
                }, this.layerIds = {
                  fill: n + u + "-fill",
                  line: n + u + "-line",
                  circle: n + u + "-circle",
                  symbol: n + u + "-symbol",
                  cluster: n + u + "-cluster",
                  clusterCount: n + u + "-cluster-count"
                }, this.below = null;
              }
              var A = T.prototype;
              A.addSource = function(p, u, t) {
                var r = {
                  type: "geojson",
                  data: u.geojson
                };
                t && t.enabled && b.extendFlat(r, {
                  cluster: !0,
                  clusterMaxZoom: t.maxzoom
                });
                var i = this.subplot.map.getSource(this.sourceIds[p]);
                i ? i.setData(u.geojson) : this.subplot.map.addSource(this.sourceIds[p], r);
              }, A.setSourceData = function(p, u) {
                this.subplot.map.getSource(this.sourceIds[p]).setData(u.geojson);
              }, A.addLayer = function(p, u, t) {
                var r = {
                  type: u.type,
                  id: this.layerIds[p],
                  source: this.sourceIds[p],
                  layout: u.layout,
                  paint: u.paint
                };
                u.filter && (r.filter = u.filter);
                for (var i = this.layerIds[p], a, l = this.subplot.getMapLayers(), o = 0; o < l.length; o++)
                  if (l[o].id === i) {
                    a = !0;
                    break;
                  }
                a ? (this.subplot.setOptions(i, "setLayoutProperty", r.layout), r.layout.visibility === "visible" && this.subplot.setOptions(i, "setPaintProperty", r.paint)) : this.subplot.addLayer(r, t);
              }, A.update = function(u) {
                var t = u[0].trace, r = this.subplot, i = r.map, a = P(r.gd, u), l = r.belowLookup["trace-" + this.uid], o = !!(t.cluster && t.cluster.enabled), y = !!this.clusterEnabled, g = this;
                function x(L) {
                  L || g.addSource("circle", a.circle, t.cluster);
                  for (var d = s.cluster, h = 0; h < d.length; h++) {
                    var E = d[h], w = a[E];
                    g.addLayer(E, w, l);
                  }
                }
                function c(L) {
                  for (var d = s.cluster, h = d.length - 1; h >= 0; h--) {
                    var E = d[h];
                    i.removeLayer(g.layerIds[E]);
                  }
                  L || i.removeSource(g.sourceIds.circle);
                }
                function v(L) {
                  for (var d = s.nonCluster, h = 0; h < d.length; h++) {
                    var E = d[h], w = a[E];
                    L || g.addSource(E, w), g.addLayer(E, w, l);
                  }
                }
                function f(L) {
                  for (var d = s.nonCluster, h = d.length - 1; h >= 0; h--) {
                    var E = d[h];
                    i.removeLayer(g.layerIds[E]), L || i.removeSource(g.sourceIds[E]);
                  }
                }
                function _(L) {
                  y ? c(L) : f(L);
                }
                function S(L) {
                  o ? x(L) : v(L);
                }
                function M() {
                  for (var L = o ? s.cluster : s.nonCluster, d = 0; d < L.length; d++) {
                    var h = L[d], E = a[h];
                    E && (r.setOptions(g.layerIds[h], "setLayoutProperty", E.layout), E.layout.visibility === "visible" && (h !== "cluster" && g.setSourceData(h, E), r.setOptions(g.layerIds[h], "setPaintProperty", E.paint)));
                  }
                }
                var C = this.isHidden, m = t.visible !== !0;
                m ? C || _() : C ? m || S() : y !== o ? (_(), S()) : (this.below !== l && (_(!0), S(!0)), M()), this.clusterEnabled = o, this.isHidden = m, this.below = l, u[0].trace._glTrace = this;
              }, A.dispose = function() {
                for (var u = this.subplot.map, t = this.clusterEnabled ? s.cluster : s.nonCluster, r = t.length - 1; r >= 0; r--) {
                  var i = t[r];
                  u.removeLayer(this.layerIds[i]), u.removeSource(this.sourceIds[i]);
                }
              }, Y.exports = function(u, t) {
                var r = t[0].trace, i = r.cluster && r.cluster.enabled, a = r.visible !== !0, l = new T(u, r.uid, i, a), o = P(u.gd, t), y = l.below = u.belowLookup["trace-" + r.uid], g, x, c;
                if (i)
                  for (l.addSource("circle", o.circle, r.cluster), g = 0; g < s.cluster.length; g++)
                    x = s.cluster[g], c = o[x], l.addLayer(x, c, y);
                else
                  for (g = 0; g < s.nonCluster.length; g++)
                    x = s.nonCluster[g], c = o[x], l.addSource(x, c, r.cluster), l.addLayer(x, c, y);
                return t[0].trace._glTrace = l, l;
              };
            }
          ),
          /***/
          60784: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(64726), n = e(63821).BADNUM;
              Y.exports = function(T, A) {
                var p = T.cd, u = T.xaxis, t = T.yaxis, r = [], i = p[0].trace, a;
                if (!P.hasMarkers(i)) return [];
                if (A === !1)
                  for (a = 0; a < p.length; a++)
                    p[a].selected = 0;
                else
                  for (a = 0; a < p.length; a++) {
                    var l = p[a], o = l.lonlat;
                    if (o[0] !== n) {
                      var y = [b.modHalf(o[0], 360), o[1]], g = [u.c2p(y), t.c2p(y)];
                      A.contains(g, null, a, T) ? (r.push({
                        pointNumber: a,
                        lon: o[0],
                        lat: o[1]
                      }), l.selected = 1) : l.selected = 0;
                    }
                  }
                return r;
              };
            }
          ),
          /***/
          8738: (
            /***/
            function(Y, K, e) {
              var b = e(3208).rb, P = e(3208).ay, n = e(93049).extendFlat, s = e(19326), T = e(36640), A = e(9829), p = T.line;
              Y.exports = {
                mode: T.mode,
                r: {
                  valType: "data_array",
                  editType: "calc+clearAxisTypes"
                },
                theta: {
                  valType: "data_array",
                  editType: "calc+clearAxisTypes"
                },
                r0: {
                  valType: "any",
                  dflt: 0,
                  editType: "calc+clearAxisTypes"
                },
                dr: {
                  valType: "number",
                  dflt: 1,
                  editType: "calc"
                },
                theta0: {
                  valType: "any",
                  dflt: 0,
                  editType: "calc+clearAxisTypes"
                },
                dtheta: {
                  valType: "number",
                  editType: "calc"
                },
                thetaunit: {
                  valType: "enumerated",
                  values: ["radians", "degrees", "gradians"],
                  dflt: "degrees",
                  editType: "calc+clearAxisTypes"
                },
                text: T.text,
                texttemplate: P({
                  editType: "plot"
                }, {
                  keys: ["r", "theta", "text"]
                }),
                hovertext: T.hovertext,
                line: {
                  color: p.color,
                  width: p.width,
                  dash: p.dash,
                  backoff: p.backoff,
                  shape: n({}, p.shape, {
                    values: ["linear", "spline"]
                  }),
                  smoothing: p.smoothing,
                  editType: "calc"
                },
                connectgaps: T.connectgaps,
                marker: T.marker,
                cliponaxis: n({}, T.cliponaxis, {
                  dflt: !1
                }),
                textposition: T.textposition,
                textfont: T.textfont,
                fill: n({}, T.fill, {
                  values: ["none", "toself", "tonext"],
                  dflt: "none"
                }),
                fillcolor: s(),
                // TODO error bars
                // https://stackoverflow.com/a/26597487/4068492
                // error_x (error_r, error_theta)
                // error_y
                hoverinfo: n({}, A.hoverinfo, {
                  flags: ["r", "theta", "text", "name"]
                }),
                hoveron: T.hoveron,
                hovertemplate: b(),
                selected: T.selected,
                unselected: T.unselected
              };
            }
          ),
          /***/
          13246: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(63821).BADNUM, n = e(29714), s = e(77272), T = e(99203), A = e(48861), p = e(26544).calcMarkerSize;
              Y.exports = function(t, r) {
                for (var i = t._fullLayout, a = r.subplot, l = i[a].radialaxis, o = i[a].angularaxis, y = l.makeCalcdata(r, "r"), g = o.makeCalcdata(r, "theta"), x = r._length, c = new Array(x), v = 0; v < x; v++) {
                  var f = y[v], _ = g[v], S = c[v] = {};
                  b(f) && b(_) ? (S.r = f, S.theta = _) : S.r = P;
                }
                var M = p(r, x);
                return r._extremes.x = n.findExtremes(l, y, {
                  ppad: M
                }), s(t, r), T(c, r), A(c, r), c;
              };
            }
          ),
          /***/
          73749: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(64726), n = e(24272), s = e(98168), T = e(91602), A = e(663), p = e(54114), u = e(32660).PTS_LINESONLY, t = e(8738);
              function r(a, l, o, y) {
                function g(v, f) {
                  return b.coerce(a, l, t, v, f);
                }
                var x = i(a, l, y, g);
                if (!x) {
                  l.visible = !1;
                  return;
                }
                g("thetaunit"), g("mode", x < u ? "lines+markers" : "lines"), g("text"), g("hovertext"), l.hoveron !== "fills" && g("hovertemplate"), P.hasMarkers(l) && n(a, l, o, y, g, {
                  gradient: !0
                }), P.hasLines(l) && (s(a, l, o, y, g, {
                  backoff: !0
                }), T(a, l, g), g("connectgaps")), P.hasText(l) && (g("texttemplate"), A(a, l, y, g));
                var c = [];
                (P.hasMarkers(l) || P.hasText(l)) && (g("cliponaxis"), g("marker.maxdisplayed"), c.push("points")), g("fill"), l.fill !== "none" && (p(a, l, o, g), P.hasLines(l) || T(a, l, g)), (l.fill === "tonext" || l.fill === "toself") && c.push("fills"), g("hoveron", c.join("+") || "points"), b.coerceSelectionMarkerOpacity(l, g);
              }
              function i(a, l, o, y) {
                var g = y("r"), x = y("theta");
                b.isTypedArray(g) && (l.r = g = Array.from(g)), b.isTypedArray(x) && (l.theta = x = Array.from(x));
                var c;
                if (g)
                  x ? c = Math.min(g.length, x.length) : (c = g.length, y("theta0"), y("dtheta"));
                else {
                  if (!x) return 0;
                  c = l.theta.length, y("r0"), y("dr");
                }
                return l._length = c, c;
              }
              Y.exports = {
                handleRThetaDefaults: i,
                supplyDefaults: r
              };
            }
          ),
          /***/
          33368: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(29714);
              Y.exports = function(s, T, A) {
                var p = {}, u = A[T.subplot]._subplot, t, r;
                u ? (t = u.radialAxis, r = u.angularAxis) : (u = A[T.subplot], t = u.radialaxis, r = u.angularaxis);
                var i = t.c2l(s.r);
                p.rLabel = P.tickText(t, i, !0).text;
                var a = r.thetaunit === "degrees" ? b.rad2deg(s.theta) : s.theta;
                return p.thetaLabel = P.tickText(r, a, !0).text, p;
              };
            }
          ),
          /***/
          29709: (
            /***/
            function(Y, K, e) {
              var b = e(37255);
              function P(s, T, A, p) {
                var u = b(s, T, A, p);
                if (!(!u || u[0].index === !1)) {
                  var t = u[0];
                  if (t.index === void 0)
                    return u;
                  var r = s.subplot, i = t.cd[t.index], a = t.trace;
                  if (r.isPtInside(i))
                    return t.xLabelVal = void 0, t.yLabelVal = void 0, n(i, a, r, t), t.hovertemplate = a.hovertemplate, u;
                }
              }
              function n(s, T, A, p) {
                var u = A.radialAxis, t = A.angularAxis;
                u._hovertitle = "r", t._hovertitle = "θ";
                var r = {};
                r[T.subplot] = {
                  _subplot: A
                };
                var i = T._module.formatLabels(s, T, r);
                p.rLabel = i.rLabel, p.thetaLabel = i.thetaLabel;
                var a = s.hi || T.hoverinfo, l = [];
                function o(g, x) {
                  l.push(g._hovertitle + ": " + x);
                }
                if (!T.hovertemplate) {
                  var y = a.split("+");
                  y.indexOf("all") !== -1 && (y = ["r", "theta", "text"]), y.indexOf("r") !== -1 && o(u, p.rLabel), y.indexOf("theta") !== -1 && o(t, p.thetaLabel), y.indexOf("text") !== -1 && p.text && (l.push(p.text), delete p.text), p.extraText = l.join("<br>");
                }
              }
              Y.exports = {
                hoverPoints: P,
                makeHoverPointText: n
              };
            }
          ),
          /***/
          66939: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                moduleType: "trace",
                name: "scatterpolar",
                basePlotModule: e(31645),
                categories: ["polar", "symbols", "showLegend", "scatter-like"],
                attributes: e(8738),
                supplyDefaults: e(73749).supplyDefaults,
                colorbar: e(21146),
                formatLabels: e(33368),
                calc: e(13246),
                plot: e(43836),
                style: e(9408).style,
                styleOnSelect: e(9408).styleOnSelect,
                hoverPoints: e(29709).hoverPoints,
                selectPoints: e(32665),
                meta: {}
              };
            }
          ),
          /***/
          43836: (
            /***/
            function(Y, K, e) {
              var b = e(36098), P = e(63821).BADNUM;
              Y.exports = function(s, T, A) {
                for (var p = T.layers.frontplot.select("g.scatterlayer"), u = T.xaxis, t = T.yaxis, r = {
                  xaxis: u,
                  yaxis: t,
                  plot: T.framework,
                  layerClipId: T._hasClipOnAxisFalse ? T.clipIds.forTraces : null
                }, i = T.radialAxis, a = T.angularAxis, l = 0; l < A.length; l++)
                  for (var o = A[l], y = 0; y < o.length; y++) {
                    y === 0 && (o[0].trace._xA = u, o[0].trace._yA = t);
                    var g = o[y], x = g.r;
                    if (x === P)
                      g.x = g.y = P;
                    else {
                      var c = i.c2g(x), v = a.c2g(g.theta);
                      g.x = c * Math.cos(v), g.y = c * Math.sin(v);
                    }
                  }
                b(s, r, A, p);
              };
            }
          ),
          /***/
          58319: (
            /***/
            function(Y, K, e) {
              var b = e(8738), P = e(92089), n = e(3208).ay;
              Y.exports = {
                mode: b.mode,
                r: b.r,
                theta: b.theta,
                r0: b.r0,
                dr: b.dr,
                theta0: b.theta0,
                dtheta: b.dtheta,
                thetaunit: b.thetaunit,
                text: b.text,
                texttemplate: n({
                  editType: "plot"
                }, {
                  keys: ["r", "theta", "text"]
                }),
                hovertext: b.hovertext,
                hovertemplate: b.hovertemplate,
                line: {
                  color: P.line.color,
                  width: P.line.width,
                  dash: P.line.dash,
                  editType: "calc"
                },
                connectgaps: P.connectgaps,
                marker: P.marker,
                // no cliponaxis
                fill: P.fill,
                fillcolor: P.fillcolor,
                textposition: P.textposition,
                textfont: P.textfont,
                hoverinfo: b.hoverinfo,
                // no hoveron
                selected: b.selected,
                unselected: b.unselected
              };
            }
          ),
          /***/
          25796: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                moduleType: "trace",
                name: "scatterpolargl",
                basePlotModule: e(31645),
                categories: ["gl", "regl", "polar", "symbols", "showLegend", "scatter-like"],
                attributes: e(58319),
                supplyDefaults: e(14952),
                colorbar: e(21146),
                formatLabels: e(94015),
                calc: e(71535),
                hoverPoints: e(47522).hoverPoints,
                selectPoints: e(17168),
                meta: {}
              };
            }
          ),
          /***/
          71535: (
            /***/
            function(Y, K, e) {
              var b = e(77272), P = e(26544).calcMarkerSize, n = e(19937), s = e(29714), T = e(29483).TOO_MANY_POINTS;
              Y.exports = function(p, u) {
                var t = p._fullLayout, r = u.subplot, i = t[r].radialaxis, a = t[r].angularaxis, l = u._r = i.makeCalcdata(u, "r"), o = u._theta = a.makeCalcdata(u, "theta"), y = u._length, g = {};
                y < l.length && (l = l.slice(0, y)), y < o.length && (o = o.slice(0, y)), g.r = l, g.theta = o, b(p, u);
                var x = g.opts = n.style(p, u), c;
                return y < T ? c = P(u, y) : x.marker && (c = 2 * (x.marker.sizeAvg || Math.max(x.marker.size, 3))), u._extremes.x = s.findExtremes(i, l, {
                  ppad: c
                }), [{
                  x: !1,
                  y: !1,
                  t: g,
                  trace: u
                }];
              };
            }
          ),
          /***/
          14952: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(64726), n = e(73749).handleRThetaDefaults, s = e(24272), T = e(98168), A = e(663), p = e(54114), u = e(32660).PTS_LINESONLY, t = e(58319);
              Y.exports = function(i, a, l, o) {
                function y(x, c) {
                  return b.coerce(i, a, t, x, c);
                }
                var g = n(i, a, o, y);
                if (!g) {
                  a.visible = !1;
                  return;
                }
                y("thetaunit"), y("mode", g < u ? "lines+markers" : "lines"), y("text"), y("hovertext"), a.hoveron !== "fills" && y("hovertemplate"), P.hasMarkers(a) && s(i, a, l, o, y, {
                  noAngleRef: !0,
                  noStandOff: !0
                }), P.hasLines(a) && (T(i, a, l, o, y), y("connectgaps")), P.hasText(a) && (y("texttemplate"), A(i, a, o, y, {
                  noFontShadow: !0,
                  noFontLineposition: !0,
                  noFontTextcase: !0
                })), y("fill"), a.fill !== "none" && p(i, a, l, y), b.coerceSelectionMarkerOpacity(a, y);
              };
            }
          ),
          /***/
          94015: (
            /***/
            function(Y, K, e) {
              var b = e(33368);
              Y.exports = function(n, s, T) {
                var A = n.i;
                return "r" in n || (n.r = s._r[A]), "theta" in n || (n.theta = s._theta[A]), b(n, s, T);
              };
            }
          ),
          /***/
          47522: (
            /***/
            function(Y, K, e) {
              var b = e(36544), P = e(29709).makeHoverPointText;
              function n(s, T, A, p) {
                var u = s.cd, t = u[0].t, r = t.r, i = t.theta, a = b.hoverPoints(s, T, A, p);
                if (!(!a || a[0].index === !1)) {
                  var l = a[0];
                  if (l.index === void 0)
                    return a;
                  var o = s.subplot, y = l.cd[l.index], g = l.trace;
                  if (y.r = r[l.index], y.theta = i[l.index], !!o.isPtInside(y))
                    return l.xLabelVal = void 0, l.yLabelVal = void 0, P(y, g, o, l), a;
                }
              }
              Y.exports = {
                hoverPoints: n
              };
            }
          ),
          /***/
          23748: (
            /***/
            function(Y, K, e) {
              var b = e(25796);
              b.plot = e(54121), Y.exports = b;
            }
          ),
          /***/
          54121: (
            /***/
            function(Y, K, e) {
              var b = e(27549), P = e(10721), n = e(47731), s = e(62336), T = e(19937), A = e(34809), p = e(29483).TOO_MANY_POINTS, u = {};
              Y.exports = function(r, i, a) {
                if (a.length) {
                  var l = i.radialAxis, o = i.angularAxis, y = s(r, i);
                  return a.forEach(function(g) {
                    if (!(!g || !g[0] || !g[0].trace)) {
                      var x = g[0], c = x.trace, v = x.t, f = c._length, _ = v.r, S = v.theta, M = v.opts, C, m = _.slice(), L = S.slice();
                      for (C = 0; C < _.length; C++)
                        i.isPtInside({
                          r: _[C],
                          theta: S[C]
                        }) || (m[C] = NaN, L[C] = NaN);
                      var d = new Array(f * 2), h = Array(f), E = Array(f);
                      for (C = 0; C < f; C++) {
                        var w = m[C], z, O;
                        if (P(w)) {
                          var B = l.c2g(w), V = o.c2g(L[C], c.thetaunit);
                          z = B * Math.cos(V), O = B * Math.sin(V);
                        } else
                          z = O = NaN;
                        h[C] = d[C * 2] = z, E[C] = d[C * 2 + 1] = O;
                      }
                      v.tree = b(d), M.marker && f >= p && (M.marker.cluster = v.tree), M.marker && (M.markerSel.positions = M.markerUnsel.positions = M.marker.positions = d), M.line && d.length > 1 && A.extendFlat(M.line, T.linePositions(r, c, d)), M.text && (A.extendFlat(M.text, {
                        positions: d
                      }, T.textPosition(r, c, M.text, M.marker)), A.extendFlat(M.textSel, {
                        positions: d
                      }, T.textPosition(r, c, M.text, M.markerSel)), A.extendFlat(M.textUnsel, {
                        positions: d
                      }, T.textPosition(r, c, M.text, M.markerUnsel))), M.fill && !y.fill2d && (y.fill2d = !0), M.marker && !y.scatter2d && (y.scatter2d = !0), M.line && !y.line2d && (y.line2d = !0), M.text && !y.glText && (y.glText = !0), y.lineOptions.push(M.line), y.fillOptions.push(M.fill), y.markerOptions.push(M.marker), y.markerSelectedOptions.push(M.markerSel), y.markerUnselectedOptions.push(M.markerUnsel), y.textOptions.push(M.text), y.textSelectedOptions.push(M.textSel), y.textUnselectedOptions.push(M.textUnsel), y.selectBatch.push([]), y.unselectBatch.push([]), v.x = h, v.y = E, v.rawx = h, v.rawy = E, v.r = _, v.theta = S, v.positions = d, v._scene = y, v.index = y.count, y.count++;
                    }
                  }), n(r, i, a);
                }
              }, Y.exports.reglPrecompiled = u;
            }
          ),
          /***/
          69595: (
            /***/
            function(Y, K, e) {
              var b = e(3208).rb, P = e(3208).ay, n = e(93049).extendFlat, s = e(19326), T = e(36640), A = e(9829), p = T.line;
              Y.exports = {
                mode: T.mode,
                real: {
                  valType: "data_array",
                  editType: "calc+clearAxisTypes"
                },
                imag: {
                  valType: "data_array",
                  editType: "calc+clearAxisTypes"
                },
                text: T.text,
                texttemplate: P({
                  editType: "plot"
                }, {
                  keys: ["real", "imag", "text"]
                }),
                hovertext: T.hovertext,
                line: {
                  color: p.color,
                  width: p.width,
                  dash: p.dash,
                  backoff: p.backoff,
                  shape: n({}, p.shape, {
                    values: ["linear", "spline"]
                  }),
                  smoothing: p.smoothing,
                  editType: "calc"
                },
                connectgaps: T.connectgaps,
                marker: T.marker,
                cliponaxis: n({}, T.cliponaxis, {
                  dflt: !1
                }),
                textposition: T.textposition,
                textfont: T.textfont,
                fill: n({}, T.fill, {
                  values: ["none", "toself", "tonext"],
                  dflt: "none"
                }),
                fillcolor: s(),
                hoverinfo: n({}, A.hoverinfo, {
                  flags: ["real", "imag", "text", "name"]
                }),
                hoveron: T.hoveron,
                hovertemplate: b(),
                selected: T.selected,
                unselected: T.unselected
              };
            }
          ),
          /***/
          44315: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(63821).BADNUM, n = e(77272), s = e(99203), T = e(48861), A = e(26544).calcMarkerSize;
              Y.exports = function(u, t) {
                for (var r = u._fullLayout, i = t.subplot, a = r[i].realaxis, l = r[i].imaginaryaxis, o = a.makeCalcdata(t, "real"), y = l.makeCalcdata(t, "imag"), g = t._length, x = new Array(g), c = 0; c < g; c++) {
                  var v = o[c], f = y[c], _ = x[c] = {};
                  b(v) && b(f) ? (_.real = v, _.imag = f) : _.real = P;
                }
                return A(t, g), n(u, t), s(x, t), T(x, t), x;
              };
            }
          ),
          /***/
          93788: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(64726), n = e(24272), s = e(98168), T = e(91602), A = e(663), p = e(54114), u = e(32660).PTS_LINESONLY, t = e(69595);
              Y.exports = function(a, l, o, y) {
                function g(v, f) {
                  return b.coerce(a, l, t, v, f);
                }
                var x = r(a, l, y, g);
                if (!x) {
                  l.visible = !1;
                  return;
                }
                g("mode", x < u ? "lines+markers" : "lines"), g("text"), g("hovertext"), l.hoveron !== "fills" && g("hovertemplate"), P.hasMarkers(l) && n(a, l, o, y, g, {
                  gradient: !0
                }), P.hasLines(l) && (s(a, l, o, y, g, {
                  backoff: !0
                }), T(a, l, g), g("connectgaps")), P.hasText(l) && (g("texttemplate"), A(a, l, y, g));
                var c = [];
                (P.hasMarkers(l) || P.hasText(l)) && (g("cliponaxis"), g("marker.maxdisplayed"), c.push("points")), g("fill"), l.fill !== "none" && (p(a, l, o, g), P.hasLines(l) || T(a, l, g)), (l.fill === "tonext" || l.fill === "toself") && c.push("fills"), g("hoveron", c.join("+") || "points"), b.coerceSelectionMarkerOpacity(l, g);
              };
              function r(i, a, l, o) {
                var y = o("real"), g = o("imag"), x;
                return y && g && (x = Math.min(y.length, g.length)), b.isTypedArray(y) && (a.real = y = Array.from(y)), b.isTypedArray(g) && (a.imag = g = Array.from(g)), a._length = x, x;
              }
            }
          ),
          /***/
          89419: (
            /***/
            function(Y, K, e) {
              var b = e(29714);
              Y.exports = function(n, s, T) {
                var A = {}, p = T[s.subplot]._subplot;
                return A.realLabel = b.tickText(p.radialAxis, n.real, !0).text, A.imagLabel = b.tickText(p.angularAxis, n.imag, !0).text, A;
              };
            }
          ),
          /***/
          64422: (
            /***/
            function(Y, K, e) {
              var b = e(37255);
              function P(s, T, A, p) {
                var u = b(s, T, A, p);
                if (!(!u || u[0].index === !1)) {
                  var t = u[0];
                  if (t.index === void 0)
                    return u;
                  var r = s.subplot, i = t.cd[t.index], a = t.trace;
                  if (r.isPtInside(i))
                    return t.xLabelVal = void 0, t.yLabelVal = void 0, n(i, a, r, t), t.hovertemplate = a.hovertemplate, u;
                }
              }
              function n(s, T, A, p) {
                var u = A.radialAxis, t = A.angularAxis;
                u._hovertitle = "real", t._hovertitle = "imag";
                var r = {};
                r[T.subplot] = {
                  _subplot: A
                };
                var i = T._module.formatLabels(s, T, r);
                p.realLabel = i.realLabel, p.imagLabel = i.imagLabel;
                var a = s.hi || T.hoverinfo, l = [];
                function o(g, x) {
                  l.push(g._hovertitle + ": " + x);
                }
                if (!T.hovertemplate) {
                  var y = a.split("+");
                  y.indexOf("all") !== -1 && (y = ["real", "imag", "text"]), y.indexOf("real") !== -1 && o(u, p.realLabel), y.indexOf("imag") !== -1 && o(t, p.imagLabel), y.indexOf("text") !== -1 && p.text && (l.push(p.text), delete p.text), p.extraText = l.join("<br>");
                }
              }
              Y.exports = {
                hoverPoints: P,
                makeHoverPointText: n
              };
            }
          ),
          /***/
          73304: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                moduleType: "trace",
                name: "scattersmith",
                basePlotModule: e(50358),
                categories: ["smith", "symbols", "showLegend", "scatter-like"],
                attributes: e(69595),
                supplyDefaults: e(93788),
                colorbar: e(21146),
                formatLabels: e(89419),
                calc: e(44315),
                plot: e(6229),
                style: e(9408).style,
                styleOnSelect: e(9408).styleOnSelect,
                hoverPoints: e(64422).hoverPoints,
                selectPoints: e(32665),
                meta: {}
              };
            }
          ),
          /***/
          6229: (
            /***/
            function(Y, K, e) {
              var b = e(36098), P = e(63821).BADNUM, n = e(52007), s = n.smith;
              Y.exports = function(A, p, u) {
                for (var t = p.layers.frontplot.select("g.scatterlayer"), r = p.xaxis, i = p.yaxis, a = {
                  xaxis: r,
                  yaxis: i,
                  plot: p.framework,
                  layerClipId: p._hasClipOnAxisFalse ? p.clipIds.forTraces : null
                }, l = 0; l < u.length; l++)
                  for (var o = u[l], y = 0; y < o.length; y++) {
                    y === 0 && (o[0].trace._xA = r, o[0].trace._yA = i);
                    var g = o[y], x = g.real;
                    if (x === P)
                      g.x = g.y = P;
                    else {
                      var c = s([x, g.imag]);
                      g.x = c[0], g.y = c[1];
                    }
                  }
                b(A, a, u, t);
              };
            }
          ),
          /***/
          18483: (
            /***/
            function(Y, K, e) {
              var b = e(3208).rb, P = e(3208).ay, n = e(19326), s = e(36640), T = e(9829), A = e(87163), p = e(94850).T, u = e(93049).extendFlat, t = s.marker, r = s.line, i = t.line;
              Y.exports = {
                a: {
                  valType: "data_array",
                  editType: "calc"
                },
                b: {
                  valType: "data_array",
                  editType: "calc"
                },
                c: {
                  valType: "data_array",
                  editType: "calc"
                },
                sum: {
                  valType: "number",
                  dflt: 0,
                  min: 0,
                  editType: "calc"
                },
                mode: u({}, s.mode, {
                  dflt: "markers"
                }),
                text: u({}, s.text, {}),
                texttemplate: P({
                  editType: "plot"
                }, {
                  keys: ["a", "b", "c", "text"]
                }),
                hovertext: u({}, s.hovertext, {}),
                line: {
                  color: r.color,
                  width: r.width,
                  dash: p,
                  backoff: r.backoff,
                  shape: u({}, r.shape, {
                    values: ["linear", "spline"]
                  }),
                  smoothing: r.smoothing,
                  editType: "calc"
                },
                connectgaps: s.connectgaps,
                cliponaxis: s.cliponaxis,
                fill: u({}, s.fill, {
                  values: ["none", "toself", "tonext"],
                  dflt: "none"
                }),
                fillcolor: n(),
                marker: u({
                  symbol: t.symbol,
                  opacity: t.opacity,
                  angle: t.angle,
                  angleref: t.angleref,
                  standoff: t.standoff,
                  maxdisplayed: t.maxdisplayed,
                  size: t.size,
                  sizeref: t.sizeref,
                  sizemin: t.sizemin,
                  sizemode: t.sizemode,
                  line: u({
                    width: i.width,
                    editType: "calc"
                  }, A("marker.line")),
                  gradient: t.gradient,
                  editType: "calc"
                }, A("marker")),
                textfont: s.textfont,
                textposition: s.textposition,
                selected: s.selected,
                unselected: s.unselected,
                hoverinfo: u({}, T.hoverinfo, {
                  flags: ["a", "b", "c", "text", "name"]
                }),
                hoveron: s.hoveron,
                hovertemplate: b()
              };
            }
          ),
          /***/
          67091: (
            /***/
            function(Y, K, e) {
              var b = e(10721), P = e(77272), n = e(99203), s = e(48861), T = e(26544).calcMarkerSize, A = ["a", "b", "c"], p = {
                a: ["b", "c"],
                b: ["a", "c"],
                c: ["a", "b"]
              };
              Y.exports = function(t, r) {
                var i = t._fullLayout[r.subplot], a = i.sum, l = r.sum || a, o = {
                  a: r.a,
                  b: r.b,
                  c: r.c
                }, y, g, x, c, v, f;
                for (y = 0; y < A.length; y++)
                  if (x = A[y], !o[x]) {
                    for (v = o[p[x][0]], f = o[p[x][1]], c = new Array(v.length), g = 0; g < v.length; g++)
                      c[g] = l - v[g] - f[g];
                    o[x] = c;
                  }
                var _ = r._length, S = new Array(_), M, C, m, L, d, h;
                for (y = 0; y < _; y++)
                  M = o.a[y], C = o.b[y], m = o.c[y], b(M) && b(C) && b(m) ? (M = +M, C = +C, m = +m, L = a / (M + C + m), L !== 1 && (M *= L, C *= L, m *= L), h = M, d = m - C, S[y] = {
                    x: d,
                    y: h,
                    a: M,
                    b: C,
                    c: m
                  }) : S[y] = {
                    x: !1,
                    y: !1
                  };
                return T(r, _), P(t, r), n(S, r), s(S, r), S;
              };
            }
          ),
          /***/
          79028: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(32660), n = e(64726), s = e(24272), T = e(98168), A = e(91602), p = e(663), u = e(54114), t = e(18483);
              Y.exports = function(i, a, l, o) {
                function y(S, M) {
                  return b.coerce(i, a, t, S, M);
                }
                var g = y("a"), x = y("b"), c = y("c"), v;
                if (g ? (v = g.length, x ? (v = Math.min(v, x.length), c && (v = Math.min(v, c.length))) : c ? v = Math.min(v, c.length) : v = 0) : x && c && (v = Math.min(x.length, c.length)), !v) {
                  a.visible = !1;
                  return;
                }
                a._length = v, y("sum"), y("text"), y("hovertext"), a.hoveron !== "fills" && y("hovertemplate");
                var f = v < P.PTS_LINESONLY ? "lines+markers" : "lines";
                y("mode", f), n.hasMarkers(a) && s(i, a, l, o, y, {
                  gradient: !0
                }), n.hasLines(a) && (T(i, a, l, o, y, {
                  backoff: !0
                }), A(i, a, y), y("connectgaps")), n.hasText(a) && (y("texttemplate"), p(i, a, o, y));
                var _ = [];
                (n.hasMarkers(a) || n.hasText(a)) && (y("cliponaxis"), y("marker.maxdisplayed"), _.push("points")), y("fill"), a.fill !== "none" && (u(i, a, l, y), n.hasLines(a) || A(i, a, y)), (a.fill === "tonext" || a.fill === "toself") && _.push("fills"), y("hoveron", _.join("+") || "points"), b.coerceSelectionMarkerOpacity(a, y);
              };
            }
          ),
          /***/
          94343: (
            /***/
            function(Y) {
              Y.exports = function(e, b, P, n, s) {
                if (b.xa && (e.xaxis = b.xa), b.ya && (e.yaxis = b.ya), n[s]) {
                  var T = n[s];
                  e.a = T.a, e.b = T.b, e.c = T.c;
                } else
                  e.a = b.a, e.b = b.b, e.c = b.c;
                return e;
              };
            }
          ),
          /***/
          78995: (
            /***/
            function(Y, K, e) {
              var b = e(29714);
              Y.exports = function(n, s, T) {
                var A = {}, p = T[s.subplot]._subplot;
                return A.aLabel = b.tickText(p.aaxis, n.a, !0).text, A.bLabel = b.tickText(p.baxis, n.b, !0).text, A.cLabel = b.tickText(p.caxis, n.c, !0).text, A;
              };
            }
          ),
          /***/
          26558: (
            /***/
            function(Y, K, e) {
              var b = e(37255);
              Y.exports = function(n, s, T, A) {
                var p = b(n, s, T, A);
                if (!p || p[0].index === !1) return;
                var u = p[0];
                if (u.index === void 0) {
                  var t = 1 - u.y0 / n.ya._length, r = n.xa._length, i = r * t / 2, a = r - i;
                  return u.x0 = Math.max(Math.min(u.x0, a), i), u.x1 = Math.max(Math.min(u.x1, a), i), p;
                }
                var l = u.cd[u.index], o = u.trace, y = u.subplot;
                u.a = l.a, u.b = l.b, u.c = l.c, u.xLabelVal = void 0, u.yLabelVal = void 0;
                var g = {};
                g[o.subplot] = {
                  _subplot: y
                };
                var x = o._module.formatLabels(l, o, g);
                u.aLabel = x.aLabel, u.bLabel = x.bLabel, u.cLabel = x.cLabel;
                var c = l.hi || o.hoverinfo, v = [];
                function f(S, M) {
                  v.push(S._hovertitle + ": " + M);
                }
                if (!o.hovertemplate) {
                  var _ = c.split("+");
                  _.indexOf("all") !== -1 && (_ = ["a", "b", "c"]), _.indexOf("a") !== -1 && f(y.aaxis, u.aLabel), _.indexOf("b") !== -1 && f(y.baxis, u.bLabel), _.indexOf("c") !== -1 && f(y.caxis, u.cLabel);
                }
                return u.extraText = v.join("<br>"), u.hovertemplate = o.hovertemplate, p;
              };
            }
          ),
          /***/
          12864: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(18483),
                supplyDefaults: e(79028),
                colorbar: e(21146),
                formatLabels: e(78995),
                calc: e(67091),
                plot: e(79005),
                style: e(9408).style,
                styleOnSelect: e(9408).styleOnSelect,
                hoverPoints: e(26558),
                selectPoints: e(32665),
                eventData: e(94343),
                moduleType: "trace",
                name: "scatterternary",
                basePlotModule: e(7638),
                categories: ["ternary", "symbols", "showLegend", "scatter-like"],
                meta: {}
              };
            }
          ),
          /***/
          79005: (
            /***/
            function(Y, K, e) {
              var b = e(36098);
              Y.exports = function(n, s, T) {
                var A = s.plotContainer;
                A.select(".scatterlayer").selectAll("*").remove();
                for (var p = s.xaxis, u = s.yaxis, t = {
                  xaxis: p,
                  yaxis: u,
                  plot: A,
                  layerClipId: s._hasClipOnAxisFalse ? s.clipIdRelative : null
                }, r = s.layers.frontplot.select("g.scatterlayer"), i = 0; i < T.length; i++) {
                  var a = T[i];
                  a.length && (a[0].trace._xA = p, a[0].trace._yA = u);
                }
                b(n, t, T, r);
              };
            }
          ),
          /***/
          68697: (
            /***/
            function(Y, K, e) {
              var b = e(36640), P = e(87163), n = e(80712).axisHoverFormat, s = e(3208).rb, T = e(92089), A = e(54826).idRegex, p = e(78032).templatedArray, u = e(93049).extendFlat, t = b.marker, r = t.line, i = u(P("marker.line", {
                editTypeOverride: "calc"
              }), {
                width: u({}, r.width, {
                  editType: "calc"
                }),
                editType: "calc"
              }), a = u(P("marker"), {
                symbol: t.symbol,
                angle: t.angle,
                size: u({}, t.size, {
                  editType: "markerSize"
                }),
                sizeref: t.sizeref,
                sizemin: t.sizemin,
                sizemode: t.sizemode,
                opacity: t.opacity,
                colorbar: t.colorbar,
                line: i,
                editType: "calc"
              });
              a.color.editType = a.cmin.editType = a.cmax.editType = "style";
              function l(o) {
                return {
                  valType: "info_array",
                  freeLength: !0,
                  editType: "calc",
                  items: {
                    valType: "subplotid",
                    regex: A[o],
                    editType: "plot"
                  }
                };
              }
              Y.exports = {
                dimensions: p("dimension", {
                  visible: {
                    valType: "boolean",
                    dflt: !0,
                    editType: "calc"
                  },
                  label: {
                    valType: "string",
                    editType: "calc"
                  },
                  values: {
                    valType: "data_array",
                    editType: "calc+clearAxisTypes"
                  },
                  axis: {
                    type: {
                      valType: "enumerated",
                      values: ["linear", "log", "date", "category"],
                      editType: "calc+clearAxisTypes"
                    },
                    // TODO make 'true' the default in v3?
                    matches: {
                      valType: "boolean",
                      dflt: !1,
                      editType: "calc"
                    },
                    editType: "calc+clearAxisTypes"
                  },
                  // TODO should add an attribute to pin down x only vars and y only vars
                  // like https://seaborn.pydata.org/generated/seaborn.pairplot.html
                  // x_vars and y_vars
                  // maybe more axis defaulting option e.g. `showgrid: false`
                  editType: "calc+clearAxisTypes"
                }),
                // mode: {}, (only 'markers' for now)
                text: u({}, T.text, {}),
                hovertext: u({}, T.hovertext, {}),
                hovertemplate: s(),
                xhoverformat: n("x"),
                yhoverformat: n("y"),
                marker: a,
                xaxes: l("x"),
                yaxes: l("y"),
                diagonal: {
                  visible: {
                    valType: "boolean",
                    dflt: !0,
                    editType: "calc"
                  },
                  // type: 'scattergl' | 'histogram' | 'box' | 'violin'
                  // ...
                  // more options
                  editType: "calc"
                },
                showupperhalf: {
                  valType: "boolean",
                  dflt: !0,
                  editType: "calc"
                },
                showlowerhalf: {
                  valType: "boolean",
                  dflt: !0,
                  editType: "calc"
                },
                selected: {
                  marker: T.selected.marker,
                  editType: "calc"
                },
                unselected: {
                  marker: T.unselected.marker,
                  editType: "calc"
                },
                opacity: T.opacity
              };
            }
          ),
          /***/
          86690: (
            /***/
            function(Y, K, e) {
              var b = e(33626), P = e(83595);
              Y.exports = {
                moduleType: "trace",
                name: "splom",
                categories: ["gl", "regl", "cartesian", "symbols", "showLegend", "scatter-like"],
                attributes: e(68697),
                supplyDefaults: e(52542),
                colorbar: e(21146),
                calc: e(55325),
                plot: e(83027),
                hoverPoints: e(25600).hoverPoints,
                selectPoints: e(13392),
                editStyle: e(27926),
                meta: {}
              }, b.register(P);
            }
          ),
          /***/
          571: (
            /***/
            function(Y, K, e) {
              var b = e(49478), P = e(33626), n = e(22459), s = e(4173).eV, T = e(37703), A = e(5975).getFromId, p = e(29714).shouldShowZeroLine, u = "splom", t = {};
              function r(g) {
                var x = g._fullLayout, c = P.getModule(u), v = s(g.calcdata, c)[0], f = n(g, ["ANGLE_instanced_arrays", "OES_element_index_uint"], t);
                f && (x._hasOnlyLargeSploms && l(g), c.plot(g, {}, v));
              }
              function i(g) {
                var x = g.calcdata, c = g._fullLayout;
                c._hasOnlyLargeSploms && l(g);
                for (var v = 0; v < x.length; v++) {
                  var f = x[v][0], _ = f.trace, S = c._splomScenes[_.uid];
                  _.type === "splom" && S && S.matrix && a(g, _, S);
                }
              }
              function a(g, x, c) {
                for (var v = c.matrixOptions.data.length, f = x._visibleDims, _ = c.viewOpts.ranges = new Array(v), S = 0; S < f.length; S++) {
                  var M = f[S], C = _[S] = new Array(4), m = A(g, x._diag[M][0]);
                  m && (C[0] = m.r2l(m.range[0]), C[2] = m.r2l(m.range[1]));
                  var L = A(g, x._diag[M][1]);
                  L && (C[1] = L.r2l(L.range[0]), C[3] = L.r2l(L.range[1]));
                }
                c.selectBatch.length || c.unselectBatch.length ? c.matrix.update({
                  ranges: _
                }, {
                  ranges: _
                }) : c.matrix.update({
                  ranges: _
                });
              }
              function l(g) {
                var x = g._fullLayout, c = x._glcanvas.data()[0].regl, v = x._splomGrid;
                v || (v = x._splomGrid = b(c)), v.update(o(g));
              }
              function o(g) {
                var x = g._context.plotGlPixelRatio, c = g._fullLayout, v = c._size, f = [0, 0, c.width * x, c.height * x], _ = {}, S;
                function M(G, q, rt, st, vt, ht) {
                  rt *= x, st *= x, vt *= x, ht *= x;
                  var et = q[G + "color"], Q = q[G + "width"], j = String(et + Q);
                  j in _ ? _[j].data.push(NaN, NaN, rt, st, vt, ht) : _[j] = {
                    data: [rt, st, vt, ht],
                    join: "rect",
                    thickness: Q * x,
                    color: et,
                    viewport: f,
                    range: f,
                    overlay: !1
                  };
                }
                for (S in c._splomSubplots) {
                  var C = c._plots[S], m = C.xaxis, L = C.yaxis, d = m._gridVals, h = L._gridVals, E = m._offset, w = m._length, z = L._length, O = v.b + L.domain[0] * v.h, B = -L._m, V = -B * L.r2l(L.range[0], L.calendar), U, H;
                  if (m.showgrid)
                    for (S = 0; S < d.length; S++)
                      U = E + m.l2p(d[S].x), M("grid", m, U, O, U, O + z);
                  if (L.showgrid)
                    for (S = 0; S < h.length; S++)
                      H = O + V + B * h[S].x, M("grid", L, E, H, E + w, H);
                  p(g, m, L) && (U = E + m.l2p(0), M("zeroline", m, U, O, U, O + z)), p(g, L, m) && (H = O + V + 0, M("zeroline", L, E, H, E + w, H));
                }
                var F = [];
                for (S in _)
                  F.push(_[S]);
                return F;
              }
              function y(g, x, c, v) {
                var f = {}, _;
                if (v._splomScenes) {
                  for (_ = 0; _ < g.length; _++) {
                    var S = g[_];
                    S.type === "splom" && (f[S.uid] = 1);
                  }
                  for (_ = 0; _ < c.length; _++) {
                    var M = c[_];
                    if (!f[M.uid]) {
                      var C = v._splomScenes[M.uid];
                      C && C.destroy && C.destroy(), v._splomScenes[M.uid] = null, delete v._splomScenes[M.uid];
                    }
                  }
                }
                Object.keys(v._splomScenes || {}).length === 0 && delete v._splomScenes, v._splomGrid && !x._hasOnlyLargeSploms && v._hasOnlyLargeSploms && (v._splomGrid.destroy(), v._splomGrid = null, delete v._splomGrid), T.clean(g, x, c, v);
              }
              Y.exports = {
                name: u,
                attr: T.attr,
                attrRegex: T.attrRegex,
                layoutAttributes: T.layoutAttributes,
                supplyLayoutDefaults: T.supplyLayoutDefaults,
                drawFramework: T.drawFramework,
                plot: r,
                drag: i,
                updateGrid: l,
                clean: y,
                updateFx: T.updateFx,
                toSVG: T.toSVG,
                reglPrecompiled: t
              };
            }
          ),
          /***/
          55325: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(5975), n = e(26544).calcMarkerSize, s = e(26544).calcAxisExpansion, T = e(77272), A = e(19937).markerSelection, p = e(19937).markerStyle, u = e(78880), t = e(63821).BADNUM, r = e(29483).TOO_MANY_POINTS;
              Y.exports = function(a, l) {
                var o = l.dimensions, y = l._length, g = {}, x = g.cdata = [], c = g.data = [], v = l._visibleDims = [], f, _, S, M, C;
                function m(w, z) {
                  for (var O = w.makeCalcdata({
                    v: z.values,
                    vcalendar: l.calendar
                  }, "v"), B = 0; B < O.length; B++)
                    O[B] = O[B] === t ? NaN : O[B];
                  x.push(O), c.push(w.type === "log" ? b.simpleMap(O, w.c2l) : O);
                }
                for (f = 0; f < o.length; f++)
                  if (S = o[f], S.visible) {
                    if (M = P.getFromId(a, l._diag[f][0]), C = P.getFromId(a, l._diag[f][1]), M && C && M.type !== C.type) {
                      b.log("Skipping splom dimension " + f + " with conflicting axis types");
                      continue;
                    }
                    M ? (m(M, S), C && C.type === "category" && (C._categories = M._categories.slice())) : m(C, S), v.push(f);
                  }
                T(a, l), b.extendFlat(g, p(a, l));
                var L = x.length, d = L * y > r, h;
                for (d ? h = g.sizeAvg || Math.max(g.size, 3) : h = n(l, y), _ = 0; _ < v.length; _++)
                  f = v[_], S = o[f], M = P.getFromId(a, l._diag[f][0]) || {}, C = P.getFromId(a, l._diag[f][1]) || {}, s(a, l, M, C, x[_], x[_], h);
                var E = u(a, l);
                return E.matrix || (E.matrix = !0), E.matrixOptions = g, E.selectedOptions = A(a, l, l.selected), E.unselectedOptions = A(a, l, l.unselected), [{
                  x: !1,
                  y: !1,
                  t: {},
                  trace: l
                }];
              };
            }
          ),
          /***/
          52542: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(59008), n = e(68697), s = e(64726), T = e(24272), A = e(63197), p = e(4075).isOpenSymbol;
              Y.exports = function(i, a, l, o) {
                function y(M, C) {
                  return b.coerce(i, a, n, M, C);
                }
                var g = P(i, a, {
                  name: "dimensions",
                  handleItemDefaults: u
                }), x = y("diagonal.visible"), c = y("showupperhalf"), v = y("showlowerhalf"), f = A(a, g, "values");
                if (!f || !x && !c && !v) {
                  a.visible = !1;
                  return;
                }
                y("text"), y("hovertext"), y("hovertemplate"), y("xhoverformat"), y("yhoverformat"), T(i, a, l, o, y, {
                  noAngleRef: !0,
                  noStandOff: !0
                });
                var _ = p(a.marker.symbol), S = s.isBubble(a);
                y("marker.line.width", _ || S ? 1 : 0), t(i, a, o, y), b.coerceSelectionMarkerOpacity(a, y);
              };
              function u(r, i) {
                function a(o, y) {
                  return b.coerce(r, i, n.dimensions, o, y);
                }
                a("label");
                var l = a("values");
                l && l.length ? a("visible") : i.visible = !1, a("axis.type"), a("axis.matches");
              }
              function t(r, i, a, l) {
                var o = i.dimensions, y = o.length, g = i.showupperhalf, x = i.showlowerhalf, c = i.diagonal.visible, v, f, _ = new Array(y), S = new Array(y);
                for (v = 0; v < y; v++) {
                  var M = v ? v + 1 : "";
                  _[v] = "x" + M, S[v] = "y" + M;
                }
                var C = l("xaxes", _), m = l("yaxes", S), L = i._diag = new Array(y);
                i._xaxes = {}, i._yaxes = {};
                var d = [], h = [];
                function E(G, q, rt, st) {
                  if (G) {
                    var vt = G.charAt(0), ht = a._splomAxes[vt];
                    if (i["_" + vt + "axes"][G] = 1, st.push(G), !(G in ht)) {
                      var et = ht[G] = {};
                      rt && (et.label = rt.label || "", rt.visible && rt.axis && (rt.axis.type && (et.type = rt.axis.type), rt.axis.matches && (et.matches = q)));
                    }
                  }
                }
                var w = !c && !x, z = !c && !g;
                for (i._axesDim = {}, v = 0; v < y; v++) {
                  var O = o[v], B = v === 0, V = v === y - 1, U = B && w || V && z ? void 0 : C[v], H = B && z || V && w ? void 0 : m[v];
                  E(U, H, O, d), E(H, U, O, h), L[v] = [U, H], i._axesDim[U] = v, i._axesDim[H] = v;
                }
                for (v = 0; v < d.length; v++)
                  for (f = 0; f < h.length; f++) {
                    var F = d[v] + h[f];
                    (v > f && g || v < f && x || v === f && (c || !x || !g)) && (a._splomSubplots[F] = 1);
                  }
                (!x || !c && g && x) && (a._splomGridDflt.xside = "bottom", a._splomGridDflt.yside = "left");
              }
            }
          ),
          /***/
          27926: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(77272), n = e(19937).markerStyle;
              Y.exports = function(T, A) {
                var p = A.trace, u = T._fullLayout._splomScenes[p.uid];
                if (u) {
                  P(T, p), b.extendFlat(u.matrixOptions, n(T, p));
                  var t = b.extendFlat({}, u.matrixOptions, u.viewOpts);
                  u.matrix.update(t, null);
                }
              };
            }
          ),
          /***/
          52875: (
            /***/
            function(Y, K) {
              K.getDimIndex = function(b, P) {
                for (var n = P._id, s = n.charAt(0), T = {
                  x: 0,
                  y: 1
                }[s], A = b._visibleDims, p = 0; p < A.length; p++) {
                  var u = A[p];
                  if (b._diag[u][T] === n) return p;
                }
                return !1;
              };
            }
          ),
          /***/
          25600: (
            /***/
            function(Y, K, e) {
              var b = e(52875), P = e(36544).calcHover, n = e(29714).getFromId, s = e(93049).extendFlat;
              function T(p, u, t, r, i) {
                i || (i = {});
                var a = (r || "").charAt(0) === "x", l = (r || "").charAt(0) === "y", o = A(p, u, t);
                if ((a || l) && i.hoversubplots === "axis" && o[0])
                  for (var y = (a ? p.xa : p.ya)._subplotsWith, g = i.gd, x = s({}, p), c = 0; c < y.length; c++) {
                    var v = y[c];
                    if (v !== p.xa._id + p.ya._id) {
                      l ? x.xa = n(g, v, "x") : x.ya = n(g, v, "y");
                      var f = a || l, _ = A(x, u, t, f);
                      o = o.concat(_);
                    }
                  }
                return o;
              }
              function A(p, u, t, r) {
                var i = p.cd, a = i[0].trace, l = p.scene, o = l.matrixOptions.cdata, y = p.xa, g = p.ya, x = y.c2p(u), c = g.c2p(t), v = p.distance, f = b.getDimIndex(a, y), _ = b.getDimIndex(a, g);
                if (f === !1 || _ === !1) return [p];
                for (var S = o[f], M = o[_], C, m, L = v, d = 0; d < S.length; d++)
                  if (!(r && d !== p.index)) {
                    var h = S[d], E = M[d], w = y.c2p(h) - x, z = g.c2p(E) - c, O = Math.sqrt(w * w + z * z);
                    (r || O < L) && (L = m = O, C = d);
                  }
                return p.index = C, p.distance = L, p.dxy = m, C === void 0 ? [p] : [P(p, S, M, a)];
              }
              Y.exports = {
                hoverPoints: T
              };
            }
          ),
          /***/
          91450: (
            /***/
            function(Y, K, e) {
              var b = e(86690);
              b.basePlotModule = e(571), Y.exports = b;
            }
          ),
          /***/
          83027: (
            /***/
            function(Y, K, e) {
              var b = e(31239), P = e(34809), n = e(5975), s = e(70414).selectMode;
              Y.exports = function(p, u, t) {
                if (t.length)
                  for (var r = 0; r < t.length; r++)
                    T(p, t[r][0]);
              };
              function T(A, p) {
                var u = A._fullLayout, t = u._size, r = p.trace, i = p.t, a = u._splomScenes[r.uid], l = a.matrixOptions, o = l.cdata, y = u._glcanvas.data()[0].regl, g = u.dragmode, x, c, v, f, _;
                if (o.length !== 0) {
                  l.lower = r.showupperhalf, l.upper = r.showlowerhalf, l.diagonal = r.diagonal.visible;
                  var S = r._visibleDims, M = o.length, C = a.viewOpts = {};
                  for (C.ranges = new Array(M), C.domains = new Array(M), _ = 0; _ < S.length; _++) {
                    v = S[_];
                    var m = C.ranges[_] = new Array(4), L = C.domains[_] = new Array(4);
                    x = n.getFromId(A, r._diag[v][0]), x && (m[0] = x._rl[0], m[2] = x._rl[1], L[0] = x.domain[0], L[2] = x.domain[1]), c = n.getFromId(A, r._diag[v][1]), c && (m[1] = c._rl[0], m[3] = c._rl[1], L[1] = c.domain[0], L[3] = c.domain[1]);
                  }
                  var d = A._context.plotGlPixelRatio, h = t.l * d, E = t.b * d, w = t.w * d, z = t.h * d;
                  C.viewport = [h, E, w + h, z + E], a.matrix === !0 && (a.matrix = b(y));
                  var O = u.clickmode.indexOf("select") > -1, B = s(g) || !!r.selectedpoints || O, V = !0;
                  if (B) {
                    var U = r._length;
                    if (r.selectedpoints) {
                      a.selectBatch = r.selectedpoints;
                      var H = r.selectedpoints, F = {};
                      for (v = 0; v < H.length; v++)
                        F[H[v]] = !0;
                      var G = [];
                      for (v = 0; v < U; v++)
                        F[v] || G.push(v);
                      a.unselectBatch = G;
                    }
                    var q = i.xpx = new Array(M), rt = i.ypx = new Array(M);
                    for (_ = 0; _ < S.length; _++) {
                      if (v = S[_], x = n.getFromId(A, r._diag[v][0]), x)
                        for (q[_] = new Array(U), f = 0; f < U; f++)
                          q[_][f] = x.c2p(o[_][f]);
                      if (c = n.getFromId(A, r._diag[v][1]), c)
                        for (rt[_] = new Array(U), f = 0; f < U; f++)
                          rt[_][f] = c.c2p(o[_][f]);
                    }
                    if (a.selectBatch.length || a.unselectBatch.length) {
                      var st = P.extendFlat({}, l, a.unselectedOptions, C), vt = P.extendFlat({}, l, a.selectedOptions, C);
                      a.matrix.update(st, vt), V = !1;
                    }
                  } else
                    i.xpx = i.ypx = null;
                  if (V) {
                    var ht = P.extendFlat({}, l, C);
                    a.matrix.update(ht, null);
                  }
                }
              }
            }
          ),
          /***/
          78880: (
            /***/
            function(Y, K, e) {
              var b = e(34809);
              Y.exports = function(n, s) {
                var T = n._fullLayout, A = s.uid, p = T._splomScenes;
                p || (p = T._splomScenes = {});
                var u = {
                  dirty: !0,
                  selectBatch: [],
                  unselectBatch: []
                }, t = {
                  matrix: !1,
                  selectBatch: [],
                  unselectBatch: []
                }, r = p[s.uid];
                return r || (r = p[A] = b.extendFlat({}, u, t), r.draw = function() {
                  r.matrix && r.matrix.draw && (r.selectBatch.length || r.unselectBatch.length ? r.matrix.draw(r.unselectBatch, r.selectBatch) : r.matrix.draw()), r.dirty = !1;
                }, r.destroy = function() {
                  r.matrix && r.matrix.destroy && r.matrix.destroy(), r.matrixOptions = null, r.selectBatch = null, r.unselectBatch = null, r = null;
                }), r.dirty || b.extendFlat(r, u), r;
              };
            }
          ),
          /***/
          13392: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = b.pushUnique, n = e(64726), s = e(52875);
              Y.exports = function(A, p) {
                var u = A.cd, t = u[0].trace, r = u[0].t, i = A.scene, a = i.matrixOptions.cdata, l = A.xaxis, o = A.yaxis, y = [];
                if (!i) return y;
                var g = !n.hasMarkers(t) && !n.hasText(t);
                if (t.visible !== !0 || g) return y;
                var x = s.getDimIndex(t, l), c = s.getDimIndex(t, o);
                if (x === !1 || c === !1) return y;
                var v = r.xpx[x], f = r.ypx[c], _ = a[x], S = a[c], M = (A.scene.selectBatch || []).slice(), C = [];
                if (p !== !1 && !p.degenerate)
                  for (var m = 0; m < _.length; m++)
                    p.contains([v[m], f[m]], null, m, A) ? (y.push({
                      pointNumber: m,
                      x: _[m],
                      y: S[m]
                    }), P(M, m)) : M.indexOf(m) !== -1 ? P(M, m) : C.push(m);
                var L = i.matrixOptions;
                return !M.length && !C.length ? i.matrix.update(L, null) : !i.selectBatch.length && !i.unselectBatch.length && i.matrix.update(i.unselectedOptions, b.extendFlat({}, L, i.selectedOptions, i.viewOpts)), i.selectBatch = M, i.unselectBatch = C, y;
              };
            }
          ),
          /***/
          14774: (
            /***/
            function(Y, K, e) {
              var b = e(87163), P = e(80712).axisHoverFormat, n = e(3208).rb, s = e(42450), T = e(9829), A = e(93049).extendFlat, p = {
                x: {
                  valType: "data_array",
                  editType: "calc+clearAxisTypes"
                },
                y: {
                  valType: "data_array",
                  editType: "calc+clearAxisTypes"
                },
                z: {
                  valType: "data_array",
                  editType: "calc+clearAxisTypes"
                },
                u: {
                  valType: "data_array",
                  editType: "calc"
                },
                v: {
                  valType: "data_array",
                  editType: "calc"
                },
                w: {
                  valType: "data_array",
                  editType: "calc"
                },
                starts: {
                  x: {
                    valType: "data_array",
                    editType: "calc"
                  },
                  y: {
                    valType: "data_array",
                    editType: "calc"
                  },
                  z: {
                    valType: "data_array",
                    editType: "calc"
                  },
                  editType: "calc"
                },
                maxdisplayed: {
                  valType: "integer",
                  min: 0,
                  dflt: 1e3,
                  editType: "calc"
                },
                // TODO
                //
                // Should add 'absolute' (like cone traces have), but currently gl-streamtube3d's
                // `absoluteTubeSize` doesn't behave well enough for our needs.
                //
                // 'fixed' would be a nice addition to plot stream 'lines', see
                // https://github.com/plotly/plotly.js/commit/812be20750e21e0a1831975001c248d365850f73#r29129877
                //
                // sizemode: {
                //     valType: 'enumerated',
                //     values: ['scaled', 'absolute', 'fixed'],
                //     dflt: 'scaled',
                //     editType: 'calc',
                //
                // },
                sizeref: {
                  valType: "number",
                  editType: "calc",
                  min: 0,
                  dflt: 1
                },
                text: {
                  valType: "string",
                  dflt: "",
                  editType: "calc"
                },
                hovertext: {
                  valType: "string",
                  dflt: "",
                  editType: "calc"
                },
                hovertemplate: n({
                  editType: "calc"
                }, {
                  keys: ["tubex", "tubey", "tubez", "tubeu", "tubev", "tubew", "norm", "divergence"]
                }),
                uhoverformat: P("u", 1),
                vhoverformat: P("v", 1),
                whoverformat: P("w", 1),
                xhoverformat: P("x"),
                yhoverformat: P("y"),
                zhoverformat: P("z"),
                showlegend: A({}, T.showlegend, {
                  dflt: !1
                })
              };
              A(p, b("", {
                colorAttr: "u/v/w norm",
                showScaleDflt: !0,
                editTypeOverride: "calc"
              }));
              var u = ["opacity", "lightposition", "lighting"];
              u.forEach(function(t) {
                p[t] = s[t];
              }), p.hoverinfo = A({}, T.hoverinfo, {
                editType: "calc",
                flags: ["x", "y", "z", "u", "v", "w", "norm", "divergence", "text", "name"],
                dflt: "x+y+z+norm+text+name"
              }), p.transforms = void 0, Y.exports = p;
            }
          ),
          /***/
          36402: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(28379);
              function n(p, u) {
                u._len = Math.min(u.u.length, u.v.length, u.w.length, u.x.length, u.y.length, u.z.length), u._u = A(u.u, u._len), u._v = A(u.v, u._len), u._w = A(u.w, u._len), u._x = A(u.x, u._len), u._y = A(u.y, u._len), u._z = A(u.z, u._len);
                var t = s(u);
                u._gridFill = t.fill, u._Xs = t.Xs, u._Ys = t.Ys, u._Zs = t.Zs, u._len = t.len;
                var r = 0, i, a, l;
                u.starts && (i = A(u.starts.x || []), a = A(u.starts.y || []), l = A(u.starts.z || []), r = Math.min(i.length, a.length, l.length)), u._startsX = i || [], u._startsY = a || [], u._startsZ = l || [];
                var o = 0, y = 1 / 0, g;
                for (g = 0; g < u._len; g++) {
                  var x = u._u[g], c = u._v[g], v = u._w[g], f = Math.sqrt(x * x + c * c + v * v);
                  o = Math.max(o, f), y = Math.min(y, f);
                }
                for (P(p, u, {
                  vals: [y, o],
                  containerStr: "",
                  cLetter: "c"
                }), g = 0; g < r; g++) {
                  var _ = i[g];
                  t.xMax = Math.max(t.xMax, _), t.xMin = Math.min(t.xMin, _);
                  var S = a[g];
                  t.yMax = Math.max(t.yMax, S), t.yMin = Math.min(t.yMin, S);
                  var M = l[g];
                  t.zMax = Math.max(t.zMax, M), t.zMin = Math.min(t.zMin, M);
                }
                u._slen = r, u._normMax = o, u._xbnds = [t.xMin, t.xMax], u._ybnds = [t.yMin, t.yMax], u._zbnds = [t.zMin, t.zMax];
              }
              function s(p) {
                var u = p._x, t = p._y, r = p._z, i = p._len, a, l, o, y = -1 / 0, g = 1 / 0, x = -1 / 0, c = 1 / 0, v = -1 / 0, f = 1 / 0, _ = "", S, M, C, m, L, d, h, E, w;
                for (i && (m = u[0], d = t[0], E = r[0]), i > 1 && (L = u[i - 1], h = t[i - 1], w = r[i - 1]), a = 0; a < i; a++)
                  y = Math.max(y, u[a]), g = Math.min(g, u[a]), x = Math.max(x, t[a]), c = Math.min(c, t[a]), v = Math.max(v, r[a]), f = Math.min(f, r[a]), !S && u[a] !== m && (S = !0, _ += "x"), !M && t[a] !== d && (M = !0, _ += "y"), !C && r[a] !== E && (C = !0, _ += "z");
                S || (_ += "x"), M || (_ += "y"), C || (_ += "z");
                var z = T(p._x), O = T(p._y), B = T(p._z);
                _ = _.replace("x", (m > L ? "-" : "+") + "x"), _ = _.replace("y", (d > h ? "-" : "+") + "y"), _ = _.replace("z", (E > w ? "-" : "+") + "z");
                var V = function() {
                  i = 0, z = [], O = [], B = [];
                };
                (!i || i < z.length * O.length * B.length) && V();
                var U = function(pt) {
                  return pt === "x" ? u : pt === "y" ? t : r;
                }, H = function(pt) {
                  return pt === "x" ? z : pt === "y" ? O : B;
                }, F = function(pt) {
                  return pt[i - 1] < pt[0] ? -1 : 1;
                }, G = U(_[1]), q = U(_[3]), rt = U(_[5]), st = H(_[1]).length, vt = H(_[3]).length, ht = H(_[5]).length, et = !1, Q = function(pt, wt, Et) {
                  return st * (vt * pt + wt) + Et;
                }, j = F(U(_[1])), at = F(U(_[3])), ut = F(U(_[5]));
                for (a = 0; a < ht - 1; a++) {
                  for (l = 0; l < vt - 1; l++) {
                    for (o = 0; o < st - 1; o++) {
                      var nt = Q(a, l, o), X = Q(a, l, o + 1), ct = Q(a, l + 1, o), lt = Q(a + 1, l, o);
                      if ((!(G[nt] * j < G[X] * j) || !(q[nt] * at < q[ct] * at) || !(rt[nt] * ut < rt[lt] * ut)) && (et = !0), et) break;
                    }
                    if (et) break;
                  }
                  if (et) break;
                }
                return et && (b.warn("Encountered arbitrary coordinates! Unable to input data grid."), V()), {
                  xMin: g,
                  yMin: c,
                  zMin: f,
                  xMax: y,
                  yMax: x,
                  zMax: v,
                  Xs: z,
                  Ys: O,
                  Zs: B,
                  len: i,
                  fill: _
                };
              }
              function T(p) {
                return b.distinctVals(p).vals;
              }
              function A(p, u) {
                if (u === void 0 && (u = p.length), b.isTypedArray(p)) return p.subarray(0, u);
                for (var t = [], r = 0; r < u; r++)
                  t[r] = +p[r];
                return t;
              }
              Y.exports = {
                calc: n,
                filter: A,
                processGrid: s
              };
            }
          ),
          /***/
          49280: (
            /***/
            function(Y, K, e) {
              var b = e(99098).gl_streamtube3d, P = b.createTubeMesh, n = e(34809), s = e(46998).parseColorScale, T = e(88856).extractOpts, A = e(88239), p = {
                xaxis: 0,
                yaxis: 1,
                zaxis: 2
              };
              function u(o, y) {
                this.scene = o, this.uid = y, this.mesh = null, this.data = null;
              }
              var t = u.prototype;
              t.handlePick = function(o) {
                var y = this.scene.fullSceneLayout, g = this.scene.dataScale;
                function x(f, _) {
                  var S = y[_], M = g[p[_]];
                  return S.l2c(f) / M;
                }
                if (o.object === this.mesh) {
                  var c = o.data.position, v = o.data.velocity;
                  return o.traceCoordinate = [
                    x(c[0], "xaxis"),
                    x(c[1], "yaxis"),
                    x(c[2], "zaxis"),
                    x(v[0], "xaxis"),
                    x(v[1], "yaxis"),
                    x(v[2], "zaxis"),
                    // u/v/w norm
                    o.data.intensity * this.data._normMax,
                    // divergence
                    o.data.divergence
                  ], o.textLabel = this.data.hovertext || this.data.text, !0;
                }
              };
              function r(o) {
                var y = o.length, g;
                return y > 2 ? g = o.slice(1, y - 1) : y === 2 ? g = [(o[0] + o[1]) / 2] : g = o, g;
              }
              function i(o) {
                var y = o.length;
                return y === 1 ? [0.5, 0.5] : [o[1] - o[0], o[y - 1] - o[y - 2]];
              }
              function a(o, y) {
                var g = o.fullSceneLayout, x = o.dataScale, c = y._len, v = {};
                function f(vt, ht) {
                  var et = g[ht], Q = x[p[ht]];
                  return n.simpleMap(vt, function(j) {
                    return et.d2l(j) * Q;
                  });
                }
                if (v.vectors = A(f(y._u, "xaxis"), f(y._v, "yaxis"), f(y._w, "zaxis"), c), !c)
                  return {
                    positions: [],
                    cells: []
                  };
                var _ = f(y._Xs, "xaxis"), S = f(y._Ys, "yaxis"), M = f(y._Zs, "zaxis");
                v.meshgrid = [_, S, M], v.gridFill = y._gridFill;
                var C = y._slen;
                if (C)
                  v.startingPositions = A(f(y._startsX, "xaxis"), f(y._startsY, "yaxis"), f(y._startsZ, "zaxis"));
                else {
                  for (var m = S[0], L = r(_), d = r(M), h = new Array(L.length * d.length), E = 0, w = 0; w < L.length; w++)
                    for (var z = 0; z < d.length; z++)
                      h[E++] = [L[w], m, d[z]];
                  v.startingPositions = h;
                }
                v.colormap = s(y), v.tubeSize = y.sizeref, v.maxLength = y.maxdisplayed;
                var O = f(y._xbnds, "xaxis"), B = f(y._ybnds, "yaxis"), V = f(y._zbnds, "zaxis"), U = i(_), H = i(S), F = i(M), G = [[O[0] - U[0], B[0] - H[0], V[0] - F[0]], [O[1] + U[1], B[1] + H[1], V[1] + F[1]]], q = b(v, G), rt = T(y);
                q.vertexIntensityBounds = [rt.min / y._normMax, rt.max / y._normMax];
                var st = y.lightposition;
                return q.lightPosition = [st.x, st.y, st.z], q.ambient = y.lighting.ambient, q.diffuse = y.lighting.diffuse, q.specular = y.lighting.specular, q.roughness = y.lighting.roughness, q.fresnel = y.lighting.fresnel, q.opacity = y.opacity, y._pad = q.tubeScale * y.sizeref * 2, q;
              }
              t.update = function(o) {
                this.data = o;
                var y = a(this.scene, o);
                this.mesh.update(y);
              }, t.dispose = function() {
                this.scene.glplot.remove(this.mesh), this.mesh.dispose();
              };
              function l(o, y) {
                var g = o.glplot.gl, x = a(o, y), c = P(g, x), v = new u(o, y.uid);
                return v.mesh = c, v.data = y, c._trace = v, o.glplot.add(c), v;
              }
              Y.exports = l;
            }
          ),
          /***/
          52737: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(39356), n = e(14774);
              Y.exports = function(T, A, p, u) {
                function t(g, x) {
                  return b.coerce(T, A, n, g, x);
                }
                var r = t("u"), i = t("v"), a = t("w"), l = t("x"), o = t("y"), y = t("z");
                if (!r || !r.length || !i || !i.length || !a || !a.length || !l || !l.length || !o || !o.length || !y || !y.length) {
                  A.visible = !1;
                  return;
                }
                t("starts.x"), t("starts.y"), t("starts.z"), t("maxdisplayed"), t("sizeref"), t("lighting.ambient"), t("lighting.diffuse"), t("lighting.specular"), t("lighting.roughness"), t("lighting.fresnel"), t("lightposition.x"), t("lightposition.y"), t("lightposition.z"), P(T, A, u, t, {
                  prefix: "",
                  cLetter: "c"
                }), t("text"), t("hovertext"), t("hovertemplate"), t("uhoverformat"), t("vhoverformat"), t("whoverformat"), t("xhoverformat"), t("yhoverformat"), t("zhoverformat"), A._length = null;
              };
            }
          ),
          /***/
          51943: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                moduleType: "trace",
                name: "streamtube",
                basePlotModule: e(2487),
                categories: ["gl3d", "showLegend"],
                attributes: e(14774),
                supplyDefaults: e(52737),
                colorbar: {
                  min: "cmin",
                  max: "cmax"
                },
                calc: e(36402).calc,
                plot: e(49280),
                eventData: function(b, P) {
                  return b.tubex = b.x, b.tubey = b.y, b.tubez = b.z, b.tubeu = P.traceCoordinate[3], b.tubev = P.traceCoordinate[4], b.tubew = P.traceCoordinate[5], b.norm = P.traceCoordinate[6], b.divergence = P.traceCoordinate[7], delete b.x, delete b.y, delete b.z, b;
                },
                meta: {}
              };
            }
          ),
          /***/
          56708: (
            /***/
            function(Y, K, e) {
              var b = e(9829), P = e(3208).rb, n = e(3208).ay, s = e(87163), T = e(13792).u, A = e(55412), p = e(2032), u = e(93049).extendFlat, t = e(94850).k;
              Y.exports = {
                labels: {
                  valType: "data_array",
                  editType: "calc"
                },
                parents: {
                  valType: "data_array",
                  editType: "calc"
                },
                values: {
                  valType: "data_array",
                  editType: "calc"
                },
                branchvalues: {
                  valType: "enumerated",
                  values: ["remainder", "total"],
                  dflt: "remainder",
                  editType: "calc"
                },
                count: {
                  valType: "flaglist",
                  flags: ["branches", "leaves"],
                  dflt: "leaves",
                  editType: "calc"
                },
                level: {
                  valType: "any",
                  editType: "plot",
                  anim: !0
                },
                maxdepth: {
                  valType: "integer",
                  editType: "plot",
                  dflt: -1
                },
                marker: u({
                  colors: {
                    valType: "data_array",
                    editType: "calc"
                  },
                  // colorinheritance: {
                  //     valType: 'enumerated',
                  //     values: ['per-branch', 'per-label', false]
                  // },
                  line: {
                    color: u({}, A.marker.line.color, {
                      dflt: null
                    }),
                    width: u({}, A.marker.line.width, {
                      dflt: 1
                    }),
                    editType: "calc"
                  },
                  pattern: t,
                  editType: "calc"
                }, s("marker", {
                  colorAttr: "colors",
                  anim: !1
                  // TODO: set to anim: true?
                })),
                leaf: {
                  opacity: {
                    valType: "number",
                    editType: "style",
                    min: 0,
                    max: 1
                  },
                  editType: "plot"
                },
                text: A.text,
                textinfo: {
                  valType: "flaglist",
                  flags: ["label", "text", "value", "current path", "percent root", "percent entry", "percent parent"],
                  extras: ["none"],
                  editType: "plot"
                },
                // TODO: incorporate `label` and `value` in the eventData
                texttemplate: n({
                  editType: "plot"
                }, {
                  keys: p.eventDataKeys.concat(["label", "value"])
                }),
                hovertext: A.hovertext,
                hoverinfo: u({}, b.hoverinfo, {
                  flags: ["label", "text", "value", "name", "current path", "percent root", "percent entry", "percent parent"],
                  dflt: "label+text+value+name"
                }),
                hovertemplate: P({}, {
                  keys: p.eventDataKeys
                }),
                textfont: A.textfont,
                insidetextorientation: A.insidetextorientation,
                insidetextfont: A.insidetextfont,
                outsidetextfont: u({}, A.outsidetextfont, {}),
                rotation: {
                  valType: "angle",
                  dflt: 0,
                  editType: "plot"
                },
                sort: A.sort,
                root: {
                  color: {
                    valType: "color",
                    editType: "calc",
                    dflt: "rgba(0,0,0,0)"
                  },
                  editType: "calc"
                },
                domain: T({
                  name: "sunburst",
                  trace: !0,
                  editType: "calc"
                })
              };
            }
          ),
          /***/
          14724: (
            /***/
            function(Y, K, e) {
              var b = e(44122);
              K.name = "sunburst", K.plot = function(P, n, s, T) {
                b.plotBasePlot(K.name, P, n, s, T);
              }, K.clean = function(P, n, s, T) {
                b.cleanBasePlot(K.name, P, n, s, T);
              };
            }
          ),
          /***/
          14852: (
            /***/
            function(Y, K, e) {
              var b = e(92264), P = e(10721), n = e(34809), s = e(88856).makeColorScaleFuncFromTrace, T = e(44148).makePullColorFn, A = e(44148).generateExtendedColors, p = e(88856).calc, u = e(63821).ALMOST_EQUAL, t = {}, r = {}, i = {};
              K.calc = function(l, o) {
                var y = l._fullLayout, g = o.ids, x = n.isArrayOrTypedArray(g), c = o.labels, v = o.parents, f = o.values, _ = n.isArrayOrTypedArray(f), S = [], M = {}, C = {}, m = function(j, at) {
                  M[j] ? M[j].push(at) : M[j] = [at], C[at] = 1;
                }, L = function(j) {
                  return j || typeof j == "number";
                }, d = function(j) {
                  return !_ || P(f[j]) && f[j] >= 0;
                }, h, E, w;
                x ? (h = Math.min(g.length, v.length), E = function(j) {
                  return L(g[j]) && d(j);
                }, w = function(j) {
                  return String(g[j]);
                }) : (h = Math.min(c.length, v.length), E = function(j) {
                  return L(c[j]) && d(j);
                }, w = function(j) {
                  return String(c[j]);
                }), _ && (h = Math.min(h, f.length));
                for (var z = 0; z < h; z++)
                  if (E(z)) {
                    var O = w(z), B = L(v[z]) ? String(v[z]) : "", V = {
                      i: z,
                      id: O,
                      pid: B,
                      label: L(c[z]) ? String(c[z]) : ""
                    };
                    _ && (V.v = +f[z]), S.push(V), m(B, O);
                  }
                if (M[""]) {
                  if (M[""].length > 1) {
                    for (var F = n.randstr(), G = 0; G < S.length; G++)
                      S[G].pid === "" && (S[G].pid = F);
                    S.unshift({
                      hasMultipleRoots: !0,
                      id: F,
                      pid: "",
                      label: ""
                    });
                  }
                } else {
                  var U = [], H;
                  for (H in M)
                    C[H] || U.push(H);
                  if (U.length === 1)
                    H = U[0], S.unshift({
                      hasImpliedRoot: !0,
                      id: H,
                      pid: "",
                      label: H
                    });
                  else
                    return n.warn(["Multiple implied roots, cannot build", o.type, "hierarchy of", o.name + ".", "These roots include:", U.join(", ")].join(" "));
                }
                var q;
                try {
                  q = b.stratify().id(function(j) {
                    return j.id;
                  }).parentId(function(j) {
                    return j.pid;
                  })(S);
                } catch (j) {
                  return n.warn(["Failed to build", o.type, "hierarchy of", o.name + ".", "Error:", j.message].join(" "));
                }
                var rt = b.hierarchy(q), st = !1;
                if (_)
                  switch (o.branchvalues) {
                    case "remainder":
                      rt.sum(function(j) {
                        return j.data.v;
                      });
                      break;
                    case "total":
                      rt.each(function(j) {
                        var at = j.data.data, ut = at.v;
                        if (j.children) {
                          var nt = j.children.reduce(function(X, ct) {
                            return X + ct.data.data.v;
                          }, 0);
                          if ((at.hasImpliedRoot || at.hasMultipleRoots) && (ut = nt), ut < nt * u)
                            return st = !0, n.warn(["Total value for node", j.data.data.id, "of", o.name, "is smaller than the sum of its children.", `
parent value =`, ut, `
children sum =`, nt].join(" "));
                        }
                        j.value = ut;
                      });
                      break;
                  }
                else
                  a(rt, o, {
                    branches: o.count.indexOf("branches") !== -1,
                    leaves: o.count.indexOf("leaves") !== -1
                  });
                if (!st) {
                  o.sort && rt.sort(function(j, at) {
                    return at.value - j.value;
                  });
                  var vt, ht, et = o.marker.colors || [], Q = !!et.length;
                  return o._hasColorscale ? (Q || (et = _ ? o.values : o._values), p(l, o, {
                    vals: et,
                    containerStr: "marker",
                    cLetter: "c"
                  }), ht = s(o.marker)) : vt = T(y["_" + o.type + "colormap"]), rt.each(function(j) {
                    var at = j.data.data;
                    at.color = o._hasColorscale ? ht(et[at.i]) : vt(et[at.i], at.id);
                  }), S[0].hierarchy = rt, S;
                }
              }, K._runCrossTraceCalc = function(l, o) {
                var y = o._fullLayout, g = o.calcdata, x = y[l + "colorway"], c = y["_" + l + "colormap"];
                y["extend" + l + "colors"] && (x = A(x, l === "icicle" ? i : l === "treemap" ? r : t));
                var v = 0, f;
                function _(m) {
                  var L = m.data.data, d = L.id;
                  L.color === !1 && (c[d] ? L.color = c[d] : m.parent ? m.parent.parent ? L.color = m.parent.data.data.color : (c[d] = L.color = x[v % x.length], v++) : L.color = f);
                }
                for (var S = 0; S < g.length; S++) {
                  var M = g[S], C = M[0];
                  C.trace.type === l && C.hierarchy && (f = C.trace.root.color, C.hierarchy.each(_));
                }
              }, K.crossTraceCalc = function(l) {
                return K._runCrossTraceCalc("sunburst", l);
              };
              function a(l, o, y) {
                var g = 0, x = l.children;
                if (x) {
                  for (var c = x.length, v = 0; v < c; v++)
                    g += a(x[v], o, y);
                  y.branches && g++;
                } else
                  y.leaves && g++;
                return l.value = l.data.data.value = g, o._values || (o._values = []), o._values[l.data.data.i] = g, g;
              }
            }
          ),
          /***/
          2032: (
            /***/
            function(Y) {
              Y.exports = {
                CLICK_TRANSITION_TIME: 750,
                CLICK_TRANSITION_EASING: "linear",
                eventDataKeys: [
                  // string
                  "currentPath",
                  "root",
                  "entry",
                  // no need to add 'parent' here
                  // percentages i.e. ratios
                  "percentRoot",
                  "percentEntry",
                  "percentParent"
                ]
              };
            }
          ),
          /***/
          33459: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(56708), n = e(13792).N, s = e(17550).handleText, T = e(46979).handleMarkerDefaults, A = e(88856), p = A.hasColorscale, u = A.handleDefaults;
              Y.exports = function(r, i, a, l) {
                function o(_, S) {
                  return b.coerce(r, i, P, _, S);
                }
                var y = o("labels"), g = o("parents");
                if (!y || !y.length || !g || !g.length) {
                  i.visible = !1;
                  return;
                }
                var x = o("values");
                x && x.length ? o("branchvalues") : o("count"), o("level"), o("maxdepth"), T(r, i, l, o);
                var c = i._hasColorscale = p(r, "marker", "colors") || (r.marker || {}).coloraxis;
                c && u(r, i, l, o, {
                  prefix: "marker.",
                  cLetter: "c"
                }), o("leaf.opacity", c ? 1 : 0.7);
                var v = o("text");
                o("texttemplate"), i.texttemplate || o("textinfo", b.isArrayOrTypedArray(v) ? "text+label" : "label"), o("hovertext"), o("hovertemplate");
                var f = "auto";
                s(r, i, l, o, f, {
                  moduleHasSelected: !1,
                  moduleHasUnselected: !1,
                  moduleHasConstrain: !1,
                  moduleHasCliponaxis: !1,
                  moduleHasTextangle: !1,
                  moduleHasInsideanchor: !1
                }), o("insidetextorientation"), o("sort"), o("rotation"), o("root.color"), n(i, l, o), i._length = null;
              };
            }
          ),
          /***/
          72043: (
            /***/
            function(Y, K, e) {
              var b = e(62203), P = e(78766);
              Y.exports = function(s, T, A, p, u) {
                var t = T.data.data, r = t.i, i = u || t.color;
                if (r >= 0) {
                  T.i = t.i;
                  var a = A.marker;
                  a.pattern ? (!a.colors || !a.pattern.shape) && (a.color = i, T.color = i) : (a.color = i, T.color = i), b.pointStyle(s, A, p, T);
                } else
                  P.fill(s, i);
              };
            }
          ),
          /***/
          44691: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(33626), n = e(36040).appendArrayPointValue, s = e(32141), T = e(34809), A = e(68596), p = e(33108), u = e(37252), t = u.formatPieValue;
              Y.exports = function(a, l, o, y, g) {
                var x = y[0], c = x.trace, v = x.hierarchy, f = c.type === "sunburst", _ = c.type === "treemap" || c.type === "icicle";
                "_hasHoverLabel" in c || (c._hasHoverLabel = !1), "_hasHoverEvent" in c || (c._hasHoverEvent = !1);
                var S = function(m) {
                  var L = o._fullLayout;
                  if (!(o._dragging || L.hovermode === !1)) {
                    var d = o._fullData[c.index], h = m.data.data, E = h.i, w = p.isHierarchyRoot(m), z = p.getParent(v, m), O = p.getValue(m), B = function(X) {
                      return T.castOption(d, E, X);
                    }, V = B("hovertemplate"), U = s.castHoverinfo(d, L, E), H = L.separators, F;
                    if (V || U && U !== "none" && U !== "skip") {
                      var G, q;
                      f && (G = x.cx + m.pxmid[0] * (1 - m.rInscribed), q = x.cy + m.pxmid[1] * (1 - m.rInscribed)), _ && (G = m._hoverX, q = m._hoverY);
                      var rt = {}, st = [], vt = [], ht = function(X) {
                        return st.indexOf(X) !== -1;
                      };
                      U && (st = U === "all" ? d._module.attributes.hoverinfo.flags : U.split("+")), rt.label = h.label, ht("label") && rt.label && vt.push(rt.label), h.hasOwnProperty("v") && (rt.value = h.v, rt.valueLabel = t(rt.value, H), ht("value") && vt.push(rt.valueLabel)), rt.currentPath = m.currentPath = p.getPath(m.data), ht("current path") && !w && vt.push(rt.currentPath);
                      var et, Q = [], j = function() {
                        Q.indexOf(et) === -1 && (vt.push(et), Q.push(et));
                      };
                      rt.percentParent = m.percentParent = O / p.getValue(z), rt.parent = m.parentString = p.getPtLabel(z), ht("percent parent") && (et = p.formatPercent(rt.percentParent, H) + " of " + rt.parent, j()), rt.percentEntry = m.percentEntry = O / p.getValue(l), rt.entry = m.entry = p.getPtLabel(l), ht("percent entry") && !w && !m.onPathbar && (et = p.formatPercent(rt.percentEntry, H) + " of " + rt.entry, j()), rt.percentRoot = m.percentRoot = O / p.getValue(v), rt.root = m.root = p.getPtLabel(v), ht("percent root") && !w && (et = p.formatPercent(rt.percentRoot, H) + " of " + rt.root, j()), rt.text = B("hovertext") || B("text"), ht("text") && (et = rt.text, T.isValidTextValue(et) && vt.push(et)), F = [r(m, d, g.eventDataKeys)];
                      var at = {
                        trace: d,
                        y: q,
                        _x0: m._x0,
                        _x1: m._x1,
                        _y0: m._y0,
                        _y1: m._y1,
                        text: vt.join("<br>"),
                        name: V || ht("name") ? d.name : void 0,
                        color: B("hoverlabel.bgcolor") || h.color,
                        borderColor: B("hoverlabel.bordercolor"),
                        fontFamily: B("hoverlabel.font.family"),
                        fontSize: B("hoverlabel.font.size"),
                        fontColor: B("hoverlabel.font.color"),
                        fontWeight: B("hoverlabel.font.weight"),
                        fontStyle: B("hoverlabel.font.style"),
                        fontVariant: B("hoverlabel.font.variant"),
                        nameLength: B("hoverlabel.namelength"),
                        textAlign: B("hoverlabel.align"),
                        hovertemplate: V,
                        hovertemplateLabels: rt,
                        eventData: F
                      };
                      f && (at.x0 = G - m.rInscribed * m.rpx1, at.x1 = G + m.rInscribed * m.rpx1, at.idealAlign = m.pxmid[0] < 0 ? "left" : "right"), _ && (at.x = G, at.idealAlign = G < 0 ? "left" : "right");
                      var ut = [];
                      s.loneHover(at, {
                        container: L._hoverlayer.node(),
                        outerContainer: L._paper.node(),
                        gd: o,
                        inOut_bbox: ut
                      }), F[0].bbox = ut[0], c._hasHoverLabel = !0;
                    }
                    if (_) {
                      var nt = a.select("path.surface");
                      g.styleOne(nt, m, d, o, {
                        hovered: !0
                      });
                    }
                    c._hasHoverEvent = !0, o.emit("plotly_hover", {
                      points: F || [r(m, d, g.eventDataKeys)],
                      event: b.event
                    });
                  }
                }, M = function(m) {
                  var L = o._fullLayout, d = o._fullData[c.index], h = b.select(this).datum();
                  if (c._hasHoverEvent && (m.originalEvent = b.event, o.emit("plotly_unhover", {
                    points: [r(h, d, g.eventDataKeys)],
                    event: b.event
                  }), c._hasHoverEvent = !1), c._hasHoverLabel && (s.loneUnhover(L._hoverlayer.node()), c._hasHoverLabel = !1), _) {
                    var E = a.select("path.surface");
                    g.styleOne(E, h, d, o, {
                      hovered: !1
                    });
                  }
                }, C = function(m) {
                  var L = o._fullLayout, d = o._fullData[c.index], h = f && (p.isHierarchyRoot(m) || p.isLeaf(m)), E = p.getPtId(m), w = p.isEntry(m) ? p.findEntryWithChild(v, E) : p.findEntryWithLevel(v, E), z = p.getPtId(w), O = {
                    points: [r(m, d, g.eventDataKeys)],
                    event: b.event
                  };
                  h || (O.nextLevel = z);
                  var B = A.triggerHandler(o, "plotly_" + c.type + "click", O);
                  if (B !== !1 && L.hovermode && (o._hoverdata = [r(m, d, g.eventDataKeys)], s.click(o, b.event)), !h && B !== !1 && !o._dragging && !o._transitioning) {
                    P.call("_storeDirectGUIEdit", d, L._tracePreGUI[d.uid], {
                      level: d.level
                    });
                    var V = {
                      data: [{
                        level: z
                      }],
                      traces: [c.index]
                    }, U = {
                      frame: {
                        redraw: !1,
                        duration: g.transitionTime
                      },
                      transition: {
                        duration: g.transitionTime,
                        easing: g.transitionEasing
                      },
                      mode: "immediate",
                      fromcurrent: !0
                    };
                    s.loneUnhover(L._hoverlayer.node()), P.call("animate", o, V, U);
                  }
                };
                a.on("mouseover", S), a.on("mouseout", M), a.on("click", C);
              };
              function r(i, a, l) {
                for (var o = i.data.data, y = {
                  curveNumber: a.index,
                  pointNumber: o.i,
                  data: a._input,
                  fullData: a
                  // TODO more things like 'children', 'siblings', 'hierarchy?
                }, g = 0; g < l.length; g++) {
                  var x = l[g];
                  x in i && (y[x] = i[x]);
                }
                return "parentString" in i && !p.isHierarchyRoot(i) && (y.parent = i.parentString), n(y, a, o.i), y;
              }
            }
          ),
          /***/
          33108: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(78766), n = e(27983), s = e(37252);
              K.findEntryWithLevel = function(u, t) {
                var r;
                return t && u.eachAfter(function(i) {
                  if (K.getPtId(i) === t)
                    return r = i.copy();
                }), r || u;
              }, K.findEntryWithChild = function(u, t) {
                var r;
                return u.eachAfter(function(i) {
                  for (var a = i.children || [], l = 0; l < a.length; l++) {
                    var o = a[l];
                    if (K.getPtId(o) === t)
                      return r = i.copy();
                  }
                }), r || u;
              }, K.isEntry = function(u) {
                return !u.parent;
              }, K.isLeaf = function(u) {
                return !u.children;
              }, K.getPtId = function(u) {
                return u.data.data.id;
              }, K.getPtLabel = function(u) {
                return u.data.data.label;
              }, K.getValue = function(u) {
                return u.value;
              }, K.isHierarchyRoot = function(u) {
                return p(u) === "";
              }, K.setSliceCursor = function(u, t, r) {
                var i = r.isTransitioning;
                if (!i) {
                  var a = u.datum();
                  i = r.hideOnRoot && K.isHierarchyRoot(a) || r.hideOnLeaves && K.isLeaf(a);
                }
                n(u, i ? null : "pointer");
              };
              function T(u, t, r) {
                return {
                  color: K.getOutsideTextFontKey("color", u, t, r),
                  family: K.getOutsideTextFontKey("family", u, t, r),
                  size: K.getOutsideTextFontKey("size", u, t, r),
                  weight: K.getOutsideTextFontKey("weight", u, t, r),
                  style: K.getOutsideTextFontKey("style", u, t, r),
                  variant: K.getOutsideTextFontKey("variant", u, t, r),
                  textcase: K.getOutsideTextFontKey("textcase", u, t, r),
                  lineposition: K.getOutsideTextFontKey("lineposition", u, t, r),
                  shadow: K.getOutsideTextFontKey("shadow", u, t, r)
                };
              }
              function A(u, t, r, i) {
                var a = (i || {}).onPathbar, l = t.data.data, o = l.i, y = b.castOption(u, o, (a ? "pathbar.textfont" : "insidetextfont") + ".color");
                return !y && u._input.textfont && (y = b.castOption(u._input, o, "textfont.color")), {
                  color: y || P.contrast(l.color),
                  family: K.getInsideTextFontKey("family", u, t, r, i),
                  size: K.getInsideTextFontKey("size", u, t, r, i),
                  weight: K.getInsideTextFontKey("weight", u, t, r, i),
                  style: K.getInsideTextFontKey("style", u, t, r, i),
                  variant: K.getInsideTextFontKey("variant", u, t, r, i),
                  textcase: K.getInsideTextFontKey("textcase", u, t, r, i),
                  lineposition: K.getInsideTextFontKey("lineposition", u, t, r, i),
                  shadow: K.getInsideTextFontKey("shadow", u, t, r, i)
                };
              }
              K.getInsideTextFontKey = function(u, t, r, i, a) {
                var l = (a || {}).onPathbar, o = l ? "pathbar.textfont" : "insidetextfont", y = r.data.data.i;
                return b.castOption(t, y, o + "." + u) || b.castOption(t, y, "textfont." + u) || i.size;
              }, K.getOutsideTextFontKey = function(u, t, r, i) {
                var a = r.data.data.i;
                return b.castOption(t, a, "outsidetextfont." + u) || b.castOption(t, a, "textfont." + u) || i.size;
              }, K.isOutsideText = function(u, t) {
                return !u._hasColorscale && K.isHierarchyRoot(t);
              }, K.determineTextFont = function(u, t, r, i) {
                return K.isOutsideText(u, t) ? T(u, t, r) : A(u, t, r, i);
              }, K.hasTransition = function(u) {
                return !!(u && u.duration > 0);
              }, K.getMaxDepth = function(u) {
                return u.maxdepth >= 0 ? u.maxdepth : 1 / 0;
              }, K.isHeader = function(u, t) {
                return !(K.isLeaf(u) || u.depth === t._maxDepth - 1);
              };
              function p(u) {
                return u.data.data.pid;
              }
              K.getParent = function(u, t) {
                return K.findEntryWithLevel(u, p(t));
              }, K.listPath = function(u, t) {
                var r = u.parent;
                if (!r) return [];
                var i = t ? [r.data[t]] : [r];
                return K.listPath(r, t).concat(i);
              }, K.getPath = function(u) {
                return K.listPath(u, "label").join("/") + "/";
              }, K.formatValue = s.formatPieValue, K.formatPercent = function(u, t) {
                var r = b.formatPercent(u, 0);
                return r === "0%" && (r = s.formatPiePercent(u, t)), r;
              };
            }
          ),
          /***/
          80809: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                moduleType: "trace",
                name: "sunburst",
                basePlotModule: e(14724),
                categories: [],
                animatable: !0,
                attributes: e(56708),
                layoutAttributes: e(98959),
                supplyDefaults: e(33459),
                supplyLayoutDefaults: e(75816),
                calc: e(14852).calc,
                crossTraceCalc: e(14852).crossTraceCalc,
                plot: e(19718).plot,
                style: e(98972).style,
                colorbar: e(21146),
                meta: {}
              };
            }
          ),
          /***/
          98959: (
            /***/
            function(Y) {
              Y.exports = {
                sunburstcolorway: {
                  valType: "colorlist",
                  editType: "calc"
                },
                extendsunburstcolors: {
                  valType: "boolean",
                  dflt: !0,
                  editType: "calc"
                }
              };
            }
          ),
          /***/
          75816: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(98959);
              Y.exports = function(s, T) {
                function A(p, u) {
                  return b.coerce(s, T, P, p, u);
                }
                A("sunburstcolorway", T.colorway), A("extendsunburstcolors");
              };
            }
          ),
          /***/
          19718: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(92264), n = e(88640).GW, s = e(62203), T = e(34809), A = e(30635), p = e(84102), u = p.recordMinTextSize, t = p.clearMinTextSize, r = e(35734), i = e(37252).getRotationAngle, a = r.computeTransform, l = r.transformInsideText, o = e(98972).styleOne, y = e(6851).resizeText, g = e(44691), x = e(2032), c = e(33108);
              K.plot = function(C, m, L, d) {
                var h = C._fullLayout, E = h._sunburstlayer, w, z, O = !L, B = !h.uniformtext.mode && c.hasTransition(L);
                if (t("sunburst", h), w = E.selectAll("g.trace.sunburst").data(m, function(U) {
                  return U[0].trace.uid;
                }), w.enter().append("g").classed("trace", !0).classed("sunburst", !0).attr("stroke-linejoin", "round"), w.order(), B) {
                  d && (z = d());
                  var V = b.transition().duration(L.duration).ease(L.easing).each("end", function() {
                    z && z();
                  }).each("interrupt", function() {
                    z && z();
                  });
                  V.each(function() {
                    E.selectAll("g.trace").each(function(U) {
                      v(C, U, this, L);
                    });
                  });
                } else
                  w.each(function(U) {
                    v(C, U, this, L);
                  }), h.uniformtext.mode && y(C, h._sunburstlayer.selectAll(".trace"), "sunburst");
                O && w.exit().remove();
              };
              function v(C, m, L, d) {
                var h = C._context.staticPlot, E = C._fullLayout, w = !E.uniformtext.mode && c.hasTransition(d), z = b.select(L), O = z.selectAll("g.slice"), B = m[0], V = B.trace, U = B.hierarchy, H = c.findEntryWithLevel(U, V.level), F = c.getMaxDepth(V), G = E._size, q = V.domain, rt = G.w * (q.x[1] - q.x[0]), st = G.h * (q.y[1] - q.y[0]), vt = 0.5 * Math.min(rt, st), ht = B.cx = G.l + G.w * (q.x[1] + q.x[0]) / 2, et = B.cy = G.t + G.h * (1 - q.y[0]) - st / 2;
                if (!H)
                  return O.remove();
                var Q = null, j = {};
                w && O.each(function(re) {
                  j[c.getPtId(re)] = {
                    rpx0: re.rpx0,
                    rpx1: re.rpx1,
                    x0: re.x0,
                    x1: re.x1,
                    transform: re.transform
                  }, !Q && c.isEntry(re) && (Q = re);
                });
                var at = f(H).descendants(), ut = H.height + 1, nt = 0, X = F;
                B.hasMultipleRoots && c.isHierarchyRoot(H) && (at = at.slice(1), ut -= 1, nt = 1, X += 1), at = at.filter(function(re) {
                  return re.y1 <= X;
                });
                var ct = i(V.rotation);
                ct && at.forEach(function(re) {
                  re.x0 += ct, re.x1 += ct;
                });
                var lt = Math.min(ut, F), pt = function(re) {
                  return (re - nt) / lt * vt;
                }, wt = function(re, ge) {
                  return [re * Math.cos(ge), -re * Math.sin(ge)];
                }, Et = function(re) {
                  return T.pathAnnulus(re.rpx0, re.rpx1, re.x0, re.x1, ht, et);
                }, Ct = function(re) {
                  return ht + S(re)[0] * (re.transform.rCenter || 0) + (re.transform.x || 0);
                }, Gt = function(re) {
                  return et + S(re)[1] * (re.transform.rCenter || 0) + (re.transform.y || 0);
                };
                O = O.data(at, c.getPtId), O.enter().append("g").classed("slice", !0), w ? O.exit().transition().each(function() {
                  var re = b.select(this), ge = re.select("path.surface");
                  ge.transition().attrTween("d", function(ce) {
                    var ae = zt(ce);
                    return function(Se) {
                      return Et(ae(Se));
                    };
                  });
                  var _e = re.select("g.slicetext");
                  _e.attr("opacity", 0);
                }).remove() : O.exit().remove(), O.order();
                var Jt = null;
                if (w && Q) {
                  var Qt = c.getPtId(Q);
                  O.each(function(re) {
                    Jt === null && c.getPtId(re) === Qt && (Jt = re.x1);
                  });
                }
                var Vt = O;
                w && (Vt = Vt.transition().each("end", function() {
                  var re = b.select(this);
                  c.setSliceCursor(re, C, {
                    hideOnRoot: !0,
                    hideOnLeaves: !0,
                    isTransitioning: !1
                  });
                })), Vt.each(function(re) {
                  var ge = b.select(this), _e = T.ensureSingle(ge, "path", "surface", function(Ve) {
                    Ve.style("pointer-events", h ? "none" : "all");
                  });
                  re.rpx0 = pt(re.y0), re.rpx1 = pt(re.y1), re.xmid = (re.x0 + re.x1) / 2, re.pxmid = wt(re.rpx1, re.xmid), re.midangle = -(re.xmid - Math.PI / 2), re.startangle = -(re.x0 - Math.PI / 2), re.stopangle = -(re.x1 - Math.PI / 2), re.halfangle = 0.5 * Math.min(T.angleDelta(re.x0, re.x1) || Math.PI, Math.PI), re.ring = 1 - re.rpx0 / re.rpx1, re.rInscribed = _(re), w ? _e.transition().attrTween("d", function(Ve) {
                    var Oe = Rt(Ve);
                    return function(ur) {
                      return Et(Oe(ur));
                    };
                  }) : _e.attr("d", Et), ge.call(g, H, C, m, {
                    eventDataKeys: x.eventDataKeys,
                    transitionTime: x.CLICK_TRANSITION_TIME,
                    transitionEasing: x.CLICK_TRANSITION_EASING
                  }).call(c.setSliceCursor, C, {
                    hideOnRoot: !0,
                    hideOnLeaves: !0,
                    isTransitioning: C._transitioning
                  }), _e.call(o, re, V, C);
                  var ce = T.ensureSingle(ge, "g", "slicetext"), ae = T.ensureSingle(ce, "text", "", function(Ve) {
                    Ve.attr("data-notex", 1);
                  }), Se = T.ensureUniformFontSize(C, c.determineTextFont(V, re, E.font));
                  ae.text(K.formatSliceLabel(re, H, V, m, E)).classed("slicetext", !0).attr("text-anchor", "middle").call(s.font, Se).call(A.convertToTspans, C);
                  var ze = s.bBox(ae.node());
                  re.transform = l(ze, re, B), re.transform.targetX = Ct(re), re.transform.targetY = Gt(re);
                  var Ne = function(Ve, Oe) {
                    var ur = Ve.transform;
                    return a(ur, Oe), ur.fontSize = Se.size, u(V.type, ur, E), T.getTextTransform(ur);
                  };
                  w ? ae.transition().attrTween("transform", function(Ve) {
                    var Oe = Wt(Ve);
                    return function(ur) {
                      return Ne(Oe(ur), ze);
                    };
                  }) : ae.attr("transform", Ne(re, ze));
                });
                function zt(re) {
                  var ge = c.getPtId(re), _e = j[ge], ce = j[c.getPtId(H)], ae;
                  if (ce) {
                    var Se = (re.x1 > ce.x1 ? 2 * Math.PI : 0) + ct;
                    ae = re.rpx1 < ce.rpx1 ? {
                      x0: re.x0,
                      x1: re.x1,
                      rpx0: 0,
                      rpx1: 0
                    } : {
                      x0: Se,
                      x1: Se,
                      rpx0: re.rpx0,
                      rpx1: re.rpx1
                    };
                  } else {
                    var ze, Ne = c.getPtId(re.parent);
                    O.each(function($t) {
                      if (c.getPtId($t) === Ne)
                        return ze = $t;
                    });
                    var Ve = ze.children, Oe;
                    Ve.forEach(function($t, jt) {
                      if (c.getPtId($t) === ge)
                        return Oe = jt;
                    });
                    var ur = Ve.length, ie = n(ze.x0, ze.x1);
                    ae = {
                      rpx0: vt,
                      rpx1: vt,
                      x0: ie(Oe / ur),
                      x1: ie((Oe + 1) / ur)
                    };
                  }
                  return n(_e, ae);
                }
                function Rt(re) {
                  var ge = j[c.getPtId(re)], _e, ce = {
                    x0: re.x0,
                    x1: re.x1,
                    rpx0: re.rpx0,
                    rpx1: re.rpx1
                  };
                  if (ge)
                    _e = ge;
                  else if (Q)
                    if (re.parent)
                      if (Jt) {
                        var ae = (re.x1 > Jt ? 2 * Math.PI : 0) + ct;
                        _e = {
                          x0: ae,
                          x1: ae
                        };
                      } else
                        _e = {
                          rpx0: vt,
                          rpx1: vt
                        }, T.extendFlat(_e, kt(re));
                    else
                      _e = {
                        rpx0: 0,
                        rpx1: 0
                      };
                  else
                    _e = {
                      x0: ct,
                      x1: ct
                    };
                  return n(_e, ce);
                }
                function Wt(re) {
                  var ge = j[c.getPtId(re)], _e, ce = re.transform;
                  if (ge)
                    _e = ge;
                  else if (_e = {
                    rpx1: re.rpx1,
                    transform: {
                      textPosAngle: ce.textPosAngle,
                      scale: 0,
                      rotate: ce.rotate,
                      rCenter: ce.rCenter,
                      x: ce.x,
                      y: ce.y
                    }
                  }, Q)
                    if (re.parent)
                      if (Jt) {
                        var ae = re.x1 > Jt ? 2 * Math.PI : 0;
                        _e.x0 = _e.x1 = ae;
                      } else
                        T.extendFlat(_e, kt(re));
                    else
                      _e.x0 = _e.x1 = ct;
                  else
                    _e.x0 = _e.x1 = ct;
                  var Se = n(_e.transform.textPosAngle, re.transform.textPosAngle), ze = n(_e.rpx1, re.rpx1), Ne = n(_e.x0, re.x0), Ve = n(_e.x1, re.x1), Oe = n(_e.transform.scale, ce.scale), ur = n(_e.transform.rotate, ce.rotate), ie = ce.rCenter === 0 ? 3 : _e.transform.rCenter === 0 ? 1 / 3 : 1, $t = n(_e.transform.rCenter, ce.rCenter), jt = function(ee) {
                    return $t(Math.pow(ee, ie));
                  };
                  return function(ee) {
                    var Bt = ze(ee), Xt = Ne(ee), Zt = Ve(ee), ye = jt(ee), Mt = wt(Bt, (Xt + Zt) / 2), St = Se(ee), Lt = {
                      pxmid: Mt,
                      rpx1: Bt,
                      transform: {
                        textPosAngle: St,
                        rCenter: ye,
                        x: ce.x,
                        y: ce.y
                      }
                    };
                    return u(V.type, ce, E), {
                      transform: {
                        targetX: Ct(Lt),
                        targetY: Gt(Lt),
                        scale: Oe(ee),
                        rotate: ur(ee),
                        rCenter: ye
                      }
                    };
                  };
                }
                function kt(re) {
                  var ge = re.parent, _e = j[c.getPtId(ge)], ce = {};
                  if (_e) {
                    var ae = ge.children, Se = ae.indexOf(re), ze = ae.length, Ne = n(_e.x0, _e.x1);
                    ce.x0 = Ne(Se / ze), ce.x1 = Ne(Se / ze);
                  } else
                    ce.x0 = ce.x1 = 0;
                  return ce;
                }
              }
              function f(C) {
                return P.partition().size([2 * Math.PI, C.height + 1])(C);
              }
              K.formatSliceLabel = function(C, m, L, d, h) {
                var E = L.texttemplate, w = L.textinfo;
                if (!E && (!w || w === "none"))
                  return "";
                var z = h.separators, O = d[0], B = C.data.data, V = O.hierarchy, U = c.isHierarchyRoot(C), H = c.getParent(V, C), F = c.getValue(C);
                if (!E) {
                  var G = w.split("+"), q = function(nt) {
                    return G.indexOf(nt) !== -1;
                  }, rt = [], st;
                  if (q("label") && B.label && rt.push(B.label), B.hasOwnProperty("v") && q("value") && rt.push(c.formatValue(B.v, z)), !U) {
                    q("current path") && rt.push(c.getPath(C.data));
                    var vt = 0;
                    q("percent parent") && vt++, q("percent entry") && vt++, q("percent root") && vt++;
                    var ht = vt > 1;
                    if (vt) {
                      var et, Q = function(nt) {
                        st = c.formatPercent(et, z), ht && (st += " of " + nt), rt.push(st);
                      };
                      q("percent parent") && !U && (et = F / c.getValue(H), Q("parent")), q("percent entry") && (et = F / c.getValue(m), Q("entry")), q("percent root") && (et = F / c.getValue(V), Q("root"));
                    }
                  }
                  return q("text") && (st = T.castOption(L, B.i, "text"), T.isValidTextValue(st) && rt.push(st)), rt.join("<br>");
                }
                var j = T.castOption(L, B.i, "texttemplate");
                if (!j) return "";
                var at = {};
                B.label && (at.label = B.label), B.hasOwnProperty("v") && (at.value = B.v, at.valueLabel = c.formatValue(B.v, z)), at.currentPath = c.getPath(C.data), U || (at.percentParent = F / c.getValue(H), at.percentParentLabel = c.formatPercent(at.percentParent, z), at.parent = c.getPtLabel(H)), at.percentEntry = F / c.getValue(m), at.percentEntryLabel = c.formatPercent(at.percentEntry, z), at.entry = c.getPtLabel(m), at.percentRoot = F / c.getValue(V), at.percentRootLabel = c.formatPercent(at.percentRoot, z), at.root = c.getPtLabel(V), B.hasOwnProperty("color") && (at.color = B.color);
                var ut = T.castOption(L, B.i, "text");
                return (T.isValidTextValue(ut) || ut === "") && (at.text = ut), at.customdata = T.castOption(L, B.i, "customdata"), T.texttemplateString(j, at, h._d3locale, at, L._meta || {});
              };
              function _(C) {
                return C.rpx0 === 0 && T.isFullCircle([C.x0, C.x1]) ? 1 : Math.max(0, Math.min(1 / (1 + 1 / Math.sin(C.halfangle)), C.ring / 2));
              }
              function S(C) {
                return M(C.rpx1, C.transform.textPosAngle);
              }
              function M(C, m) {
                return [C * Math.sin(m), -C * Math.cos(m)];
              }
            }
          ),
          /***/
          98972: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(78766), n = e(34809), s = e(84102).resizeText, T = e(72043);
              function A(u) {
                var t = u._fullLayout._sunburstlayer.selectAll(".trace");
                s(u, t, "sunburst"), t.each(function(r) {
                  var i = b.select(this), a = r[0], l = a.trace;
                  i.style("opacity", l.opacity), i.selectAll("path.surface").each(function(o) {
                    b.select(this).call(p, o, l, u);
                  });
                });
              }
              function p(u, t, r, i) {
                var a = t.data.data, l = !t.children, o = a.i, y = n.castOption(r, o, "marker.line.color") || P.defaultLine, g = n.castOption(r, o, "marker.line.width") || 0;
                u.call(T, t, r, i).style("stroke-width", g).call(P.stroke, y).style("opacity", l ? r.leaf.opacity : null);
              }
              Y.exports = {
                style: A,
                styleOne: p
              };
            }
          ),
          /***/
          16131: (
            /***/
            function(Y, K, e) {
              var b = e(78766), P = e(87163), n = e(80712).axisHoverFormat, s = e(3208).rb, T = e(9829), A = e(93049).extendFlat, p = e(13582).overrideAll;
              function u(i) {
                return {
                  valType: "boolean",
                  dflt: !1
                };
              }
              function t(i) {
                return {
                  show: {
                    valType: "boolean",
                    dflt: !1
                  },
                  start: {
                    valType: "number",
                    dflt: null,
                    editType: "plot"
                    // impliedEdits: {'^autocontour': false},
                  },
                  end: {
                    valType: "number",
                    dflt: null,
                    editType: "plot"
                    // impliedEdits: {'^autocontour': false},
                  },
                  size: {
                    valType: "number",
                    dflt: null,
                    min: 0,
                    editType: "plot"
                    // impliedEdits: {'^autocontour': false},
                  },
                  project: {
                    x: u(),
                    y: u(),
                    z: u()
                  },
                  color: {
                    valType: "color",
                    dflt: b.defaultLine
                  },
                  usecolormap: {
                    valType: "boolean",
                    dflt: !1
                  },
                  width: {
                    valType: "number",
                    min: 1,
                    max: 16,
                    dflt: 2
                  },
                  highlight: {
                    valType: "boolean",
                    dflt: !0
                  },
                  highlightcolor: {
                    valType: "color",
                    dflt: b.defaultLine
                  },
                  highlightwidth: {
                    valType: "number",
                    min: 1,
                    max: 16,
                    dflt: 2
                  }
                };
              }
              var r = Y.exports = p(A({
                z: {
                  valType: "data_array"
                },
                x: {
                  valType: "data_array"
                },
                y: {
                  valType: "data_array"
                },
                text: {
                  valType: "string",
                  dflt: "",
                  arrayOk: !0
                },
                hovertext: {
                  valType: "string",
                  dflt: "",
                  arrayOk: !0
                },
                hovertemplate: s(),
                xhoverformat: n("x"),
                yhoverformat: n("y"),
                zhoverformat: n("z"),
                connectgaps: {
                  valType: "boolean",
                  dflt: !1,
                  editType: "calc"
                },
                surfacecolor: {
                  valType: "data_array"
                }
              }, P("", {
                colorAttr: "z or surfacecolor",
                showScaleDflt: !0,
                autoColorDflt: !1,
                editTypeOverride: "calc"
              }), {
                contours: {
                  x: t(),
                  y: t(),
                  z: t()
                },
                hidesurface: {
                  valType: "boolean",
                  dflt: !1
                },
                lightposition: {
                  x: {
                    valType: "number",
                    min: -1e5,
                    max: 1e5,
                    dflt: 10
                  },
                  y: {
                    valType: "number",
                    min: -1e5,
                    max: 1e5,
                    dflt: 1e4
                  },
                  z: {
                    valType: "number",
                    min: -1e5,
                    max: 1e5,
                    dflt: 0
                  }
                },
                lighting: {
                  ambient: {
                    valType: "number",
                    min: 0,
                    max: 1,
                    dflt: 0.8
                  },
                  diffuse: {
                    valType: "number",
                    min: 0,
                    max: 1,
                    dflt: 0.8
                  },
                  specular: {
                    valType: "number",
                    min: 0,
                    max: 2,
                    dflt: 0.05
                  },
                  roughness: {
                    valType: "number",
                    min: 0,
                    max: 1,
                    dflt: 0.5
                  },
                  fresnel: {
                    valType: "number",
                    min: 0,
                    max: 5,
                    dflt: 0.2
                  }
                },
                opacity: {
                  valType: "number",
                  min: 0,
                  max: 1,
                  dflt: 1
                },
                opacityscale: {
                  valType: "any",
                  editType: "calc"
                },
                _deprecated: {
                  zauto: A({}, P.zauto, {}),
                  zmin: A({}, P.zmin, {}),
                  zmax: A({}, P.zmax, {})
                },
                hoverinfo: A({}, T.hoverinfo),
                showlegend: A({}, T.showlegend, {
                  dflt: !1
                })
              }), "calc", "nested");
              r.x.editType = r.y.editType = r.z.editType = "calc+clearAxisTypes", r.transforms = void 0;
            }
          ),
          /***/
          53027: (
            /***/
            function(Y, K, e) {
              var b = e(28379);
              Y.exports = function(n, s) {
                s.surfacecolor ? b(n, s, {
                  vals: s.surfacecolor,
                  containerStr: "",
                  cLetter: "c"
                }) : b(n, s, {
                  vals: s.z,
                  containerStr: "",
                  cLetter: "c"
                });
              };
            }
          ),
          /***/
          27159: (
            /***/
            function(Y, K, e) {
              var b = e(99098).gl_surface3d, P = e(99098).ndarray, n = e(99098).ndarray_linear_interpolate.d2, s = e(69295), T = e(78106), A = e(34809).isArrayOrTypedArray, p = e(46998).parseColorScale, u = e(55010), t = e(88856).extractOpts;
              function r(d, h, E) {
                this.scene = d, this.uid = E, this.surface = h, this.data = null, this.showContour = [!1, !1, !1], this.contourStart = [null, null, null], this.contourEnd = [null, null, null], this.contourSize = [0, 0, 0], this.minValues = [1 / 0, 1 / 0, 1 / 0], this.maxValues = [-1 / 0, -1 / 0, -1 / 0], this.dataScaleX = 1, this.dataScaleY = 1, this.refineData = !0, this.objectOffset = [0, 0, 0];
              }
              var i = r.prototype;
              i.getXat = function(d, h, E, w) {
                var z = A(this.data.x) ? A(this.data.x[0]) ? this.data.x[h][d] : this.data.x[d] : d;
                return E === void 0 ? z : w.d2l(z, 0, E);
              }, i.getYat = function(d, h, E, w) {
                var z = A(this.data.y) ? A(this.data.y[0]) ? this.data.y[h][d] : this.data.y[h] : h;
                return E === void 0 ? z : w.d2l(z, 0, E);
              }, i.getZat = function(d, h, E, w) {
                var z = this.data.z[h][d];
                return z === null && this.data.connectgaps && this.data._interpolatedZ && (z = this.data._interpolatedZ[h][d]), E === void 0 ? z : w.d2l(z, 0, E);
              }, i.handlePick = function(d) {
                if (d.object === this.surface) {
                  var h = (d.data.index[0] - 1) / this.dataScaleX - 1, E = (d.data.index[1] - 1) / this.dataScaleY - 1, w = Math.max(Math.min(Math.round(h), this.data.z[0].length - 1), 0), z = Math.max(Math.min(Math.round(E), this.data._ylength - 1), 0);
                  d.index = [w, z], d.traceCoordinate = [this.getXat(w, z), this.getYat(w, z), this.getZat(w, z)], d.dataCoordinate = [this.getXat(w, z, this.data.xcalendar, this.scene.fullSceneLayout.xaxis), this.getYat(w, z, this.data.ycalendar, this.scene.fullSceneLayout.yaxis), this.getZat(w, z, this.data.zcalendar, this.scene.fullSceneLayout.zaxis)];
                  for (var O = 0; O < 3; O++) {
                    var B = d.dataCoordinate[O];
                    B != null && (d.dataCoordinate[O] *= this.scene.dataScale[O]);
                  }
                  var V = this.data.hovertext || this.data.text;
                  return A(V) && V[z] && V[z][w] !== void 0 ? d.textLabel = V[z][w] : V ? d.textLabel = V : d.textLabel = "", d.data.dataCoordinate = d.dataCoordinate.slice(), this.surface.highlight(d.data), this.scene.glplot.spikes.position = d.dataCoordinate, !0;
                }
              };
              function a(d) {
                var h = d[0].rgb, E = d[d.length - 1].rgb;
                return h[0] === E[0] && h[1] === E[1] && h[2] === E[2] && h[3] === E[3];
              }
              var l = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997, 1009, 1013, 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, 1087, 1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, 1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223, 1229, 1231, 1237, 1249, 1259, 1277, 1279, 1283, 1289, 1291, 1297, 1301, 1303, 1307, 1319, 1321, 1327, 1361, 1367, 1373, 1381, 1399, 1409, 1423, 1427, 1429, 1433, 1439, 1447, 1451, 1453, 1459, 1471, 1481, 1483, 1487, 1489, 1493, 1499, 1511, 1523, 1531, 1543, 1549, 1553, 1559, 1567, 1571, 1579, 1583, 1597, 1601, 1607, 1609, 1613, 1619, 1621, 1627, 1637, 1657, 1663, 1667, 1669, 1693, 1697, 1699, 1709, 1721, 1723, 1733, 1741, 1747, 1753, 1759, 1777, 1783, 1787, 1789, 1801, 1811, 1823, 1831, 1847, 1861, 1867, 1871, 1873, 1877, 1879, 1889, 1901, 1907, 1913, 1931, 1933, 1949, 1951, 1973, 1979, 1987, 1993, 1997, 1999, 2003, 2011, 2017, 2027, 2029, 2039, 2053, 2063, 2069, 2081, 2083, 2087, 2089, 2099, 2111, 2113, 2129, 2131, 2137, 2141, 2143, 2153, 2161, 2179, 2203, 2207, 2213, 2221, 2237, 2239, 2243, 2251, 2267, 2269, 2273, 2281, 2287, 2293, 2297, 2309, 2311, 2333, 2339, 2341, 2347, 2351, 2357, 2371, 2377, 2381, 2383, 2389, 2393, 2399, 2411, 2417, 2423, 2437, 2441, 2447, 2459, 2467, 2473, 2477, 2503, 2521, 2531, 2539, 2543, 2549, 2551, 2557, 2579, 2591, 2593, 2609, 2617, 2621, 2633, 2647, 2657, 2659, 2663, 2671, 2677, 2683, 2687, 2689, 2693, 2699, 2707, 2711, 2713, 2719, 2729, 2731, 2741, 2749, 2753, 2767, 2777, 2789, 2791, 2797, 2801, 2803, 2819, 2833, 2837, 2843, 2851, 2857, 2861, 2879, 2887, 2897, 2903, 2909, 2917, 2927, 2939, 2953, 2957, 2963, 2969, 2971, 2999];
              function o(d, h) {
                if (d < h) return 0;
                for (var E = 0; Math.floor(d % h) === 0; )
                  d /= h, E++;
                return E;
              }
              function y(d) {
                for (var h = [], E = 0; E < l.length; E++) {
                  var w = l[E];
                  h.push(o(d, w));
                }
                return h;
              }
              function g(d) {
                for (var h = y(d), E = d, w = 0; w < l.length; w++)
                  if (h[w] > 0) {
                    E = l[w];
                    break;
                  }
                return E;
              }
              function x(d, h) {
                if (!(d < 1 || h < 1)) {
                  for (var E = y(d), w = y(h), z = 1, O = 0; O < l.length; O++)
                    z *= Math.pow(l[O], Math.max(E[O], w[O]));
                  return z;
                }
              }
              function c(d) {
                if (d.length !== 0) {
                  for (var h = 1, E = 0; E < d.length; E++)
                    h = x(h, d[E]);
                  return h;
                }
              }
              i.calcXnums = function(d) {
                var h, E = [];
                for (h = 1; h < d; h++) {
                  var w = this.getXat(h - 1, 0), z = this.getXat(h, 0);
                  z !== w && w !== void 0 && w !== null && z !== void 0 && z !== null ? E[h - 1] = Math.abs(z - w) : E[h - 1] = 0;
                }
                var O = 0;
                for (h = 1; h < d; h++)
                  O += E[h - 1];
                for (h = 1; h < d; h++)
                  E[h - 1] === 0 ? E[h - 1] = 1 : E[h - 1] = Math.round(O / E[h - 1]);
                return E;
              }, i.calcYnums = function(d) {
                var h, E = [];
                for (h = 1; h < d; h++) {
                  var w = this.getYat(0, h - 1), z = this.getYat(0, h);
                  z !== w && w !== void 0 && w !== null && z !== void 0 && z !== null ? E[h - 1] = Math.abs(z - w) : E[h - 1] = 0;
                }
                var O = 0;
                for (h = 1; h < d; h++)
                  O += E[h - 1];
                for (h = 1; h < d; h++)
                  E[h - 1] === 0 ? E[h - 1] = 1 : E[h - 1] = Math.round(O / E[h - 1]);
                return E;
              };
              var v = [1, 2, 4, 6, 12, 24, 36, 48, 60, 120, 180, 240, 360, 720, 840, 1260], f = v[9], _ = v[13];
              i.estimateScale = function(d, h) {
                for (var E = h === 0 ? this.calcXnums(d) : this.calcYnums(d), w = 1 + c(E); w < f; )
                  w *= 2;
                for (; w > _; )
                  w--, w /= g(w), w++, w < f && (w = _);
                var z = Math.round(w / d);
                return z > 1 ? z : 1;
              };
              function S(d, h, E) {
                var w = E[8] + E[2] * h[0] + E[5] * h[1];
                return d[0] = (E[6] + E[0] * h[0] + E[3] * h[1]) / w, d[1] = (E[7] + E[1] * h[0] + E[4] * h[1]) / w, d;
              }
              function M(d, h, E) {
                return C(d, h, S, E), d;
              }
              function C(d, h, E, w) {
                for (var z = [0, 0], O = d.shape[0], B = d.shape[1], V = 0; V < O; V++)
                  for (var U = 0; U < B; U++)
                    E(z, [V, U], w), d.set(V, U, n(h, z[0], z[1]));
                return d;
              }
              i.refineCoords = function(d) {
                for (var h = this.dataScaleX, E = this.dataScaleY, w = d[0].shape[0], z = d[0].shape[1], O = Math.floor(d[0].shape[0] * h + 1) | 0, B = Math.floor(d[0].shape[1] * E + 1) | 0, V = 1 + w + 1, U = 1 + z + 1, H = P(new Float32Array(V * U), [V, U]), F = [1 / h, 0, 0, 0, 1 / E, 0, 0, 0, 1], G = 0; G < d.length; ++G) {
                  this.surface.padField(H, d[G]);
                  var q = P(new Float32Array(O * B), [O, B]);
                  M(q, H, F), d[G] = q;
                }
              };
              function m(d, h) {
                for (var E = !1, w = 0; w < d.length; w++)
                  if (h === d[w]) {
                    E = !0;
                    break;
                  }
                E === !1 && d.push(h);
              }
              i.setContourLevels = function() {
                var d = [[], [], []], h = [!1, !1, !1], E = !1, w, z, O;
                for (w = 0; w < 3; ++w)
                  if (this.showContour[w] && (E = !0, this.contourSize[w] > 0 && this.contourStart[w] !== null && this.contourEnd[w] !== null && this.contourEnd[w] > this.contourStart[w]))
                    for (h[w] = !0, z = this.contourStart[w]; z < this.contourEnd[w]; z += this.contourSize[w])
                      O = z * this.scene.dataScale[w], m(d[w], O);
                if (E) {
                  var B = [[], [], []];
                  for (w = 0; w < 3; ++w)
                    this.showContour[w] && (B[w] = h[w] ? d[w] : this.scene.contourLevels[w]);
                  this.surface.update({
                    levels: B
                  });
                }
              }, i.update = function(d) {
                var h = this.scene, E = h.fullSceneLayout, w = this.surface, z = p(d), O = h.dataScale, B = d.z[0].length, V = d._ylength, U = h.contourLevels;
                this.data = d;
                var H, F, G, q, rt = [];
                for (H = 0; H < 3; H++)
                  for (rt[H] = [], F = 0; F < B; F++)
                    rt[H][F] = [];
                for (F = 0; F < B; F++)
                  for (G = 0; G < V; G++)
                    rt[0][F][G] = this.getXat(F, G, d.xcalendar, E.xaxis), rt[1][F][G] = this.getYat(F, G, d.ycalendar, E.yaxis), rt[2][F][G] = this.getZat(F, G, d.zcalendar, E.zaxis);
                if (d.connectgaps)
                  for (d._emptypoints = T(rt[2]), s(rt[2], d._emptypoints), d._interpolatedZ = [], F = 0; F < B; F++)
                    for (d._interpolatedZ[F] = [], G = 0; G < V; G++)
                      d._interpolatedZ[F][G] = rt[2][F][G];
                for (H = 0; H < 3; H++)
                  for (F = 0; F < B; F++)
                    for (G = 0; G < V; G++)
                      q = rt[H][F][G], q == null ? rt[H][F][G] = NaN : q = rt[H][F][G] *= O[H];
                for (H = 0; H < 3; H++)
                  for (F = 0; F < B; F++)
                    for (G = 0; G < V; G++)
                      q = rt[H][F][G], q != null && (this.minValues[H] > q && (this.minValues[H] = q), this.maxValues[H] < q && (this.maxValues[H] = q));
                for (H = 0; H < 3; H++)
                  this.objectOffset[H] = 0.5 * (this.minValues[H] + this.maxValues[H]);
                for (H = 0; H < 3; H++)
                  for (F = 0; F < B; F++)
                    for (G = 0; G < V; G++)
                      q = rt[H][F][G], q != null && (rt[H][F][G] -= this.objectOffset[H]);
                var st = [P(new Float32Array(B * V), [B, V]), P(new Float32Array(B * V), [B, V]), P(new Float32Array(B * V), [B, V])];
                for (H = 0; H < 3; H++)
                  for (F = 0; F < B; F++)
                    for (G = 0; G < V; G++)
                      st[H].set(F, G, rt[H][F][G]);
                rt = [];
                var vt = {
                  colormap: z,
                  levels: [[], [], []],
                  showContour: [!0, !0, !0],
                  showSurface: !d.hidesurface,
                  contourProject: [[!1, !1, !1], [!1, !1, !1], [!1, !1, !1]],
                  contourWidth: [1, 1, 1],
                  contourColor: [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]],
                  contourTint: [1, 1, 1],
                  dynamicColor: [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]],
                  dynamicWidth: [1, 1, 1],
                  dynamicTint: [1, 1, 1],
                  opacityscale: d.opacityscale,
                  opacity: d.opacity
                }, ht = t(d);
                if (vt.intensityBounds = [ht.min, ht.max], d.surfacecolor) {
                  var et = P(new Float32Array(B * V), [B, V]);
                  for (F = 0; F < B; F++)
                    for (G = 0; G < V; G++)
                      et.set(F, G, d.surfacecolor[G][F]);
                  st.push(et);
                } else
                  vt.intensityBounds[0] *= O[2], vt.intensityBounds[1] *= O[2];
                (_ < st[0].shape[0] || _ < st[0].shape[1]) && (this.refineData = !1), this.refineData === !0 && (this.dataScaleX = this.estimateScale(st[0].shape[0], 0), this.dataScaleY = this.estimateScale(st[0].shape[1], 1), (this.dataScaleX !== 1 || this.dataScaleY !== 1) && this.refineCoords(st)), d.surfacecolor && (vt.intensity = st.pop());
                var Q = [!0, !0, !0], j = ["x", "y", "z"];
                for (H = 0; H < 3; ++H) {
                  var at = d.contours[j[H]];
                  Q[H] = at.highlight, vt.showContour[H] = at.show || at.highlight, vt.showContour[H] && (vt.contourProject[H] = [at.project.x, at.project.y, at.project.z], at.show ? (this.showContour[H] = !0, vt.levels[H] = U[H], w.highlightColor[H] = vt.contourColor[H] = u(at.color), at.usecolormap ? w.highlightTint[H] = vt.contourTint[H] = 0 : w.highlightTint[H] = vt.contourTint[H] = 1, vt.contourWidth[H] = at.width, this.contourStart[H] = at.start, this.contourEnd[H] = at.end, this.contourSize[H] = at.size) : (this.showContour[H] = !1, this.contourStart[H] = null, this.contourEnd[H] = null, this.contourSize[H] = 0), at.highlight && (vt.dynamicColor[H] = u(at.highlightcolor), vt.dynamicWidth[H] = at.highlightwidth));
                }
                a(z) && (vt.vertexColor = !0), vt.objectOffset = this.objectOffset, vt.coords = st, w.update(vt), w.visible = d.visible, w.enableDynamic = Q, w.enableHighlight = Q, w.snapToData = !0, "lighting" in d && (w.ambientLight = d.lighting.ambient, w.diffuseLight = d.lighting.diffuse, w.specularLight = d.lighting.specular, w.roughness = d.lighting.roughness, w.fresnel = d.lighting.fresnel), "lightposition" in d && (w.lightPosition = [d.lightposition.x, d.lightposition.y, d.lightposition.z]);
              }, i.dispose = function() {
                this.scene.glplot.remove(this.surface), this.surface.dispose();
              };
              function L(d, h) {
                var E = d.glplot.gl, w = b({
                  gl: E
                }), z = new r(d, w, h.uid);
                return w._trace = z, z.update(h), d.glplot.add(w), z;
              }
              Y.exports = L;
            }
          ),
          /***/
          65444: (
            /***/
            function(Y, K, e) {
              var b = e(33626), P = e(34809), n = e(39356), s = e(16131), T = 0.1;
              function A(i, a) {
                for (var l = [], o = 32, y = 0; y < o; y++) {
                  var g = y / (o - 1), x = a + (1 - a) * (1 - Math.pow(Math.sin(i * g * Math.PI), 2));
                  l.push([g, Math.max(0, Math.min(1, x))]);
                }
                return l;
              }
              function p(i) {
                var a = 0;
                if (!Array.isArray(i) || i.length < 2 || !i[0] || !i[i.length - 1] || +i[0][0] != 0 || +i[i.length - 1][0] != 1) return !1;
                for (var l = 0; l < i.length; l++) {
                  var o = i[l];
                  if (o.length !== 2 || +o[0] < a)
                    return !1;
                  a = +o[0];
                }
                return !0;
              }
              function u(i, a, l, o) {
                var y, g;
                function x(d, h) {
                  return P.coerce(i, a, s, d, h);
                }
                var c = x("x"), v = x("y"), f = x("z");
                if (!f || !f.length || c && c.length < 1 || v && v.length < 1) {
                  a.visible = !1;
                  return;
                }
                a._xlength = Array.isArray(c) && P.isArrayOrTypedArray(c[0]) ? f.length : f[0].length, a._ylength = f.length;
                var _ = b.getComponentMethod("calendars", "handleTraceDefaults");
                _(i, a, ["x", "y", "z"], o), x("text"), x("hovertext"), x("hovertemplate"), x("xhoverformat"), x("yhoverformat"), x("zhoverformat"), ["lighting.ambient", "lighting.diffuse", "lighting.specular", "lighting.roughness", "lighting.fresnel", "lightposition.x", "lightposition.y", "lightposition.z", "hidesurface", "connectgaps", "opacity"].forEach(function(d) {
                  x(d);
                });
                var S = x("surfacecolor"), M = ["x", "y", "z"];
                for (y = 0; y < 3; ++y) {
                  var C = "contours." + M[y], m = x(C + ".show"), L = x(C + ".highlight");
                  if (m || L)
                    for (g = 0; g < 3; ++g)
                      x(C + ".project." + M[g]);
                  m && (x(C + ".color"), x(C + ".width"), x(C + ".usecolormap")), L && (x(C + ".highlightcolor"), x(C + ".highlightwidth")), x(C + ".start"), x(C + ".end"), x(C + ".size");
                }
                S || (r(i, "zmin", "cmin"), r(i, "zmax", "cmax"), r(i, "zauto", "cauto")), n(i, a, o, x, {
                  prefix: "",
                  cLetter: "c"
                }), t(i, a, o, x), a._length = null;
              }
              function t(i, a, l, o) {
                var y = o("opacityscale");
                y === "max" ? a.opacityscale = [[0, T], [1, 1]] : y === "min" ? a.opacityscale = [[0, 1], [1, T]] : y === "extremes" ? a.opacityscale = A(1, T) : p(y) || (a.opacityscale = void 0);
              }
              function r(i, a, l) {
                a in i && !(l in i) && (i[l] = i[a]);
              }
              Y.exports = {
                supplyDefaults: u,
                opacityscaleDefaults: t
              };
            }
          ),
          /***/
          95984: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(16131),
                supplyDefaults: e(65444).supplyDefaults,
                colorbar: {
                  min: "cmin",
                  max: "cmax"
                },
                calc: e(53027),
                plot: e(27159),
                moduleType: "trace",
                name: "surface",
                basePlotModule: e(2487),
                categories: ["gl3d", "2dMap", "showLegend"],
                meta: {}
              };
            }
          ),
          /***/
          92294: (
            /***/
            function(Y, K, e) {
              var b = e(50222), P = e(93049).extendFlat, n = e(13582).overrideAll, s = e(80337), T = e(13792).u, A = e(80712).descriptionOnlyNumbers, p = Y.exports = n({
                domain: T({
                  name: "table",
                  trace: !0
                }),
                columnwidth: {
                  valType: "number",
                  arrayOk: !0,
                  dflt: null
                },
                columnorder: {
                  valType: "data_array"
                },
                header: {
                  values: {
                    valType: "data_array",
                    dflt: []
                  },
                  format: {
                    valType: "data_array",
                    dflt: [],
                    description: A("cell value")
                  },
                  prefix: {
                    valType: "string",
                    arrayOk: !0,
                    dflt: null
                  },
                  suffix: {
                    valType: "string",
                    arrayOk: !0,
                    dflt: null
                  },
                  height: {
                    valType: "number",
                    dflt: 28
                  },
                  align: P({}, b.align, {
                    arrayOk: !0
                  }),
                  line: {
                    width: {
                      valType: "number",
                      arrayOk: !0,
                      dflt: 1
                    },
                    color: {
                      valType: "color",
                      arrayOk: !0,
                      dflt: "grey"
                    }
                  },
                  fill: {
                    color: {
                      valType: "color",
                      arrayOk: !0,
                      dflt: "white"
                    }
                  },
                  font: P({}, s({
                    arrayOk: !0
                  }))
                },
                cells: {
                  values: {
                    valType: "data_array",
                    dflt: []
                  },
                  format: {
                    valType: "data_array",
                    dflt: [],
                    description: A("cell value")
                  },
                  prefix: {
                    valType: "string",
                    arrayOk: !0,
                    dflt: null
                  },
                  suffix: {
                    valType: "string",
                    arrayOk: !0,
                    dflt: null
                  },
                  height: {
                    valType: "number",
                    dflt: 20
                  },
                  align: P({}, b.align, {
                    arrayOk: !0
                  }),
                  line: {
                    width: {
                      valType: "number",
                      arrayOk: !0,
                      dflt: 1
                    },
                    color: {
                      valType: "color",
                      arrayOk: !0,
                      dflt: "grey"
                    }
                  },
                  fill: {
                    color: {
                      valType: "color",
                      arrayOk: !0,
                      dflt: "white"
                    }
                  },
                  font: P({}, s({
                    arrayOk: !0
                  }))
                }
              }, "calc", "from-root");
              p.transforms = void 0;
            }
          ),
          /***/
          82662: (
            /***/
            function(Y, K, e) {
              var b = e(4173).eV, P = e(84576), n = "table";
              K.name = n, K.plot = function(s) {
                var T = b(s.calcdata, n)[0];
                T.length && P(s, T);
              }, K.clean = function(s, T, A, p) {
                var u = p._has && p._has(n), t = T._has && T._has(n);
                u && !t && p._paperdiv.selectAll(".table").remove();
              };
            }
          ),
          /***/
          87522: (
            /***/
            function(Y, K, e) {
              var b = e(71293).wrap;
              Y.exports = function() {
                return b({});
              };
            }
          ),
          /***/
          18426: (
            /***/
            function(Y) {
              Y.exports = {
                cellPad: 8,
                columnExtentOffset: 10,
                columnTitleOffset: 28,
                emptyHeaderHeight: 16,
                latexCheck: /^\$.*\$$/,
                goldenRatio: 1.618,
                lineBreaker: "<br>",
                maxDimensionCount: 60,
                overdrag: 45,
                releaseTransitionDuration: 120,
                releaseTransitionEase: "cubic-out",
                scrollbarCaptureWidth: 18,
                scrollbarHideDelay: 1e3,
                scrollbarHideDuration: 1e3,
                scrollbarOffset: 5,
                scrollbarWidth: 8,
                transitionDuration: 100,
                transitionEase: "cubic-out",
                uplift: 5,
                wrapSpacer: " ",
                wrapSplitCharacter: " ",
                cn: {
                  // general class names
                  table: "table",
                  tableControlView: "table-control-view",
                  scrollBackground: "scroll-background",
                  yColumn: "y-column",
                  columnBlock: "column-block",
                  scrollAreaClip: "scroll-area-clip",
                  scrollAreaClipRect: "scroll-area-clip-rect",
                  columnBoundary: "column-boundary",
                  columnBoundaryClippath: "column-boundary-clippath",
                  columnBoundaryRect: "column-boundary-rect",
                  columnCells: "column-cells",
                  columnCell: "column-cell",
                  cellRect: "cell-rect",
                  cellText: "cell-text",
                  cellTextHolder: "cell-text-holder",
                  // scroll related class names
                  scrollbarKit: "scrollbar-kit",
                  scrollbar: "scrollbar",
                  scrollbarSlider: "scrollbar-slider",
                  scrollbarGlyph: "scrollbar-glyph",
                  scrollbarCaptureZone: "scrollbar-capture-zone"
                }
              };
            }
          ),
          /***/
          21908: (
            /***/
            function(Y, K, e) {
              var b = e(18426), P = e(93049).extendFlat, n = e(10721), s = e(87800).isTypedArray, T = e(87800).isArrayOrTypedArray;
              Y.exports = function(y, g) {
                var x = u(g.cells.values), c = function(q) {
                  return q.slice(g.header.values.length, q.length);
                }, v = u(g.header.values);
                v.length && !v[0].length && (v[0] = [""], v = u(v));
                var f = v.concat(c(x).map(function() {
                  return t((v[0] || [""]).length);
                })), _ = g.domain, S = Math.floor(y._fullLayout._size.w * (_.x[1] - _.x[0])), M = Math.floor(y._fullLayout._size.h * (_.y[1] - _.y[0])), C = g.header.values.length ? f[0].map(function() {
                  return g.header.height;
                }) : [b.emptyHeaderHeight], m = x.length ? x[0].map(function() {
                  return g.cells.height;
                }) : [], L = C.reduce(p, 0), d = M - L, h = d + b.uplift, E = a(m, h), w = a(C, L), z = i(w, []), O = i(E, z), B = {}, V = g._fullInput.columnorder;
                T(V) && (V = Array.from(V)), V = V.concat(c(x.map(function(q, rt) {
                  return rt;
                })));
                var U = f.map(function(q, rt) {
                  var st = T(g.columnwidth) ? g.columnwidth[Math.min(rt, g.columnwidth.length - 1)] : g.columnwidth;
                  return n(st) ? Number(st) : 1;
                }), H = U.reduce(p, 0);
                U = U.map(function(q) {
                  return q / H * S;
                });
                var F = Math.max(A(g.header.line.width), A(g.cells.line.width)), G = {
                  // include staticPlot in the key so if it changes we delete and redraw
                  key: g.uid + y._context.staticPlot,
                  translateX: _.x[0] * y._fullLayout._size.w,
                  translateY: y._fullLayout._size.h * (1 - _.y[1]),
                  size: y._fullLayout._size,
                  width: S,
                  maxLineWidth: F,
                  height: M,
                  columnOrder: V,
                  // will be mutated on column move, todo use in callback
                  groupHeight: M,
                  rowBlocks: O,
                  headerRowBlocks: z,
                  scrollY: 0,
                  // will be mutated on scroll
                  cells: P({}, g.cells, {
                    values: x
                  }),
                  headerCells: P({}, g.header, {
                    values: f
                  }),
                  gdColumns: f.map(function(q) {
                    return q[0];
                  }),
                  gdColumnsOriginalOrder: f.map(function(q) {
                    return q[0];
                  }),
                  prevPages: [0, 0],
                  scrollbarState: {
                    scrollbarScrollInProgress: !1
                  },
                  columns: f.map(function(q, rt) {
                    var st = B[q];
                    B[q] = (st || 0) + 1;
                    var vt = q + "__" + B[q];
                    return {
                      key: vt,
                      label: q,
                      specIndex: rt,
                      xIndex: V[rt],
                      xScale: r,
                      x: void 0,
                      // initialized below
                      calcdata: void 0,
                      // initialized below
                      columnWidth: U[rt]
                    };
                  })
                };
                return G.columns.forEach(function(q) {
                  q.calcdata = G, q.x = r(q);
                }), G;
              };
              function A(o) {
                if (T(o)) {
                  for (var y = 0, g = 0; g < o.length; g++)
                    y = Math.max(y, A(o[g]));
                  return y;
                }
                return o;
              }
              function p(o, y) {
                return o + y;
              }
              function u(o) {
                var y = o.slice(), g = 1 / 0, x = 0, c;
                for (c = 0; c < y.length; c++)
                  s(y[c]) ? y[c] = Array.from(y[c]) : T(y[c]) || (y[c] = [y[c]]), g = Math.min(g, y[c].length), x = Math.max(x, y[c].length);
                if (g !== x)
                  for (c = 0; c < y.length; c++) {
                    var v = x - y[c].length;
                    v && (y[c] = y[c].concat(t(v)));
                  }
                return y;
              }
              function t(o) {
                for (var y = new Array(o), g = 0; g < o; g++) y[g] = "";
                return y;
              }
              function r(o) {
                return o.calcdata.columns.reduce(function(y, g) {
                  return g.xIndex < o.xIndex ? y + g.columnWidth : y;
                }, 0);
              }
              function i(o, y) {
                var g = Object.keys(o);
                return g.map(function(x) {
                  return P({}, o[x], {
                    auxiliaryBlocks: y
                  });
                });
              }
              function a(o, y) {
                for (var g = {}, x, c = 0, v = 0, f = l(), _ = 0, S = 0, M = 0; M < o.length; M++)
                  x = o[M], f.rows.push({
                    rowIndex: M,
                    rowHeight: x
                  }), v += x, (v >= y || M === o.length - 1) && (g[c] = f, f.key = S++, f.firstRowIndex = _, f.lastRowIndex = M, f = l(), c += v, _ = M + 1, v = 0);
                return g;
              }
              function l() {
                return {
                  firstRowIndex: null,
                  lastRowIndex: null,
                  rows: []
                };
              }
            }
          ),
          /***/
          49618: (
            /***/
            function(Y, K, e) {
              var b = e(93049).extendFlat;
              K.splitToPanels = function(n) {
                var s = [0, 0], T = b({}, n, {
                  key: "header",
                  type: "header",
                  page: 0,
                  prevPages: s,
                  currentRepaint: [null, null],
                  dragHandle: !0,
                  values: n.calcdata.headerCells.values[n.specIndex],
                  rowBlocks: n.calcdata.headerRowBlocks,
                  calcdata: b({}, n.calcdata, {
                    cells: n.calcdata.headerCells
                  })
                }), A = b({}, n, {
                  key: "cells1",
                  type: "cells",
                  page: 0,
                  prevPages: s,
                  currentRepaint: [null, null],
                  dragHandle: !1,
                  values: n.calcdata.cells.values[n.specIndex],
                  rowBlocks: n.calcdata.rowBlocks
                }), p = b({}, n, {
                  key: "cells2",
                  type: "cells",
                  page: 1,
                  prevPages: s,
                  currentRepaint: [null, null],
                  dragHandle: !1,
                  values: n.calcdata.cells.values[n.specIndex],
                  rowBlocks: n.calcdata.rowBlocks
                });
                return [A, p, T];
              }, K.splitToCells = function(n) {
                var s = P(n);
                return (n.values || []).slice(s[0], s[1]).map(function(T, A) {
                  var p = typeof T == "string" && T.match(/[<$&> ]/) ? "_keybuster_" + Math.random() : "";
                  return {
                    // keyWithinBlock: /*fromTo[0] + */i, // optimized future version - no busting
                    // keyWithinBlock: fromTo[0] + i, // initial always-unoptimized version - janky scrolling with 5+ columns
                    keyWithinBlock: A + p,
                    // current compromise: regular content is very fast; async content is possible
                    key: s[0] + A,
                    column: n,
                    calcdata: n.calcdata,
                    page: n.page,
                    rowBlocks: n.rowBlocks,
                    value: T
                  };
                });
              };
              function P(n) {
                var s = n.rowBlocks[n.page], T = s ? s.rows[0].rowIndex : 0, A = s ? T + s.rows.length : 0;
                return [T, A];
              }
            }
          ),
          /***/
          23281: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(92294), n = e(13792).N;
              function s(T, A) {
                for (var p = T.columnorder || [], u = T.header.values.length, t = p.slice(0, u), r = t.slice().sort(function(l, o) {
                  return l - o;
                }), i = t.map(function(l) {
                  return r.indexOf(l);
                }), a = i.length; a < u; a++)
                  i.push(a);
                A("columnorder", i);
              }
              Y.exports = function(A, p, u, t) {
                function r(i, a) {
                  return b.coerce(A, p, P, i, a);
                }
                n(p, t, r), r("columnwidth"), r("header.values"), r("header.format"), r("header.align"), r("header.prefix"), r("header.suffix"), r("header.height"), r("header.line.width"), r("header.line.color"), r("header.fill.color"), b.coerceFont(r, "header.font", t.font), s(p, r), r("cells.values"), r("cells.format"), r("cells.align"), r("cells.prefix"), r("cells.suffix"), r("cells.height"), r("cells.line.width"), r("cells.line.color"), r("cells.fill.color"), b.coerceFont(r, "cells.font", t.font), p._length = null;
              };
            }
          ),
          /***/
          51671: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(92294),
                supplyDefaults: e(23281),
                calc: e(87522),
                plot: e(84576),
                moduleType: "trace",
                name: "table",
                basePlotModule: e(82662),
                categories: ["noOpacity"],
                meta: {}
              };
            }
          ),
          /***/
          84576: (
            /***/
            function(Y, K, e) {
              var b = e(18426), P = e(45568), n = e(34809), s = n.numberFormat, T = e(71293), A = e(62203), p = e(30635), u = e(34809).raiseToTop, t = e(34809).strTranslate, r = e(34809).cancelTransition, i = e(21908), a = e(49618), l = e(78766);
              Y.exports = function(ct, lt) {
                var pt = !ct._context.staticPlot, wt = ct._fullLayout._paper.selectAll("." + b.cn.table).data(lt.map(function(ce) {
                  var ae = T.unwrap(ce), Se = ae.trace;
                  return i(ct, Se);
                }), T.keyFun);
                wt.exit().remove(), wt.enter().append("g").classed(b.cn.table, !0).attr("overflow", "visible").style("box-sizing", "content-box").style("position", "absolute").style("left", 0).style("overflow", "visible").style("shape-rendering", "crispEdges").style("pointer-events", "all"), wt.attr("width", function(ce) {
                  return ce.width + ce.size.l + ce.size.r;
                }).attr("height", function(ce) {
                  return ce.height + ce.size.t + ce.size.b;
                }).attr("transform", function(ce) {
                  return t(ce.translateX, ce.translateY);
                });
                var Et = wt.selectAll("." + b.cn.tableControlView).data(T.repeat, T.keyFun), Ct = Et.enter().append("g").classed(b.cn.tableControlView, !0).style("box-sizing", "content-box");
                if (pt) {
                  var Gt = "onwheel" in document ? "wheel" : "mousewheel";
                  Ct.on("mousemove", function(ce) {
                    Et.filter(function(ae) {
                      return ce === ae;
                    }).call(c, ct);
                  }).on(Gt, function(ce) {
                    if (!ce.scrollbarState.wheeling) {
                      ce.scrollbarState.wheeling = !0;
                      var ae = ce.scrollY + P.event.deltaY, Se = q(ct, Et, null, ae)(ce);
                      Se || (P.event.stopPropagation(), P.event.preventDefault()), ce.scrollbarState.wheeling = !1;
                    }
                  }).call(c, ct, !0);
                }
                Et.attr("transform", function(ce) {
                  return t(ce.size.l, ce.size.t);
                });
                var Jt = Et.selectAll("." + b.cn.scrollBackground).data(T.repeat, T.keyFun);
                Jt.enter().append("rect").classed(b.cn.scrollBackground, !0).attr("fill", "none"), Jt.attr("width", function(ce) {
                  return ce.width;
                }).attr("height", function(ce) {
                  return ce.height;
                }), Et.each(function(ce) {
                  A.setClipUrl(P.select(this), y(ct, ce), ct);
                });
                var Qt = Et.selectAll("." + b.cn.yColumn).data(function(ce) {
                  return ce.columns;
                }, T.keyFun);
                Qt.enter().append("g").classed(b.cn.yColumn, !0), Qt.exit().remove(), Qt.attr("transform", function(ce) {
                  return t(ce.x, 0);
                }), pt && Qt.call(P.behavior.drag().origin(function(ce) {
                  var ae = P.select(this);
                  return B(ae, ce, -b.uplift), u(this), ce.calcdata.columnDragInProgress = !0, c(Et.filter(function(Se) {
                    return ce.calcdata.key === Se.key;
                  }), ct), ce;
                }).on("drag", function(ce) {
                  var ae = P.select(this), Se = function(Ve) {
                    return (ce === Ve ? P.event.x : Ve.x) + Ve.columnWidth / 2;
                  };
                  ce.x = Math.max(-b.overdrag, Math.min(ce.calcdata.width + b.overdrag - ce.columnWidth, P.event.x));
                  var ze = x(Qt).filter(function(Ve) {
                    return Ve.calcdata.key === ce.calcdata.key;
                  }), Ne = ze.sort(function(Ve, Oe) {
                    return Se(Ve) - Se(Oe);
                  });
                  Ne.forEach(function(Ve, Oe) {
                    Ve.xIndex = Oe, Ve.x = ce === Ve ? Ve.x : Ve.xScale(Ve);
                  }), Qt.filter(function(Ve) {
                    return ce !== Ve;
                  }).transition().ease(b.transitionEase).duration(b.transitionDuration).attr("transform", function(Ve) {
                    return t(Ve.x, 0);
                  }), ae.call(r).attr("transform", t(ce.x, -b.uplift));
                }).on("dragend", function(ce) {
                  var ae = P.select(this), Se = ce.calcdata;
                  ce.x = ce.xScale(ce), ce.calcdata.columnDragInProgress = !1, B(ae, ce, 0), z(ct, Se, Se.columns.map(function(ze) {
                    return ze.xIndex;
                  }));
                })), Qt.each(function(ce) {
                  A.setClipUrl(P.select(this), g(ct, ce), ct);
                });
                var Vt = Qt.selectAll("." + b.cn.columnBlock).data(a.splitToPanels, T.keyFun);
                Vt.enter().append("g").classed(b.cn.columnBlock, !0).attr("id", function(ce) {
                  return ce.key;
                }), Vt.style("cursor", function(ce) {
                  return ce.dragHandle ? "ew-resize" : ce.calcdata.scrollbarState.barWiggleRoom ? "ns-resize" : "default";
                });
                var zt = Vt.filter(U), Rt = Vt.filter(V);
                pt && Rt.call(P.behavior.drag().origin(function(ce) {
                  return P.event.stopPropagation(), ce;
                }).on("drag", q(ct, Et, -1)).on("dragend", function() {
                })), v(ct, Et, zt, Vt), v(ct, Et, Rt, Vt);
                var Wt = Et.selectAll("." + b.cn.scrollAreaClip).data(T.repeat, T.keyFun);
                Wt.enter().append("clipPath").classed(b.cn.scrollAreaClip, !0).attr("id", function(ce) {
                  return y(ct, ce);
                });
                var kt = Wt.selectAll("." + b.cn.scrollAreaClipRect).data(T.repeat, T.keyFun);
                kt.enter().append("rect").classed(b.cn.scrollAreaClipRect, !0).attr("x", -b.overdrag).attr("y", -b.uplift).attr("fill", "none"), kt.attr("width", function(ce) {
                  return ce.width + 2 * b.overdrag;
                }).attr("height", function(ce) {
                  return ce.height + b.uplift;
                });
                var re = Qt.selectAll("." + b.cn.columnBoundary).data(T.repeat, T.keyFun);
                re.enter().append("g").classed(b.cn.columnBoundary, !0);
                var ge = Qt.selectAll("." + b.cn.columnBoundaryClippath).data(T.repeat, T.keyFun);
                ge.enter().append("clipPath").classed(b.cn.columnBoundaryClippath, !0), ge.attr("id", function(ce) {
                  return g(ct, ce);
                });
                var _e = ge.selectAll("." + b.cn.columnBoundaryRect).data(T.repeat, T.keyFun);
                _e.enter().append("rect").classed(b.cn.columnBoundaryRect, !0).attr("fill", "none"), _e.attr("width", function(ce) {
                  return ce.columnWidth + 2 * o(ce);
                }).attr("height", function(ce) {
                  return ce.calcdata.height + 2 * o(ce) + b.uplift;
                }).attr("x", function(ce) {
                  return -o(ce);
                }).attr("y", function(ce) {
                  return -o(ce);
                }), G(null, Rt, Et);
              };
              function o(X) {
                return Math.ceil(X.calcdata.maxLineWidth / 2);
              }
              function y(X, ct) {
                return "clip" + X._fullLayout._uid + "_scrollAreaBottomClip_" + ct.key;
              }
              function g(X, ct) {
                return "clip" + X._fullLayout._uid + "_columnBoundaryClippath_" + ct.calcdata.key + "_" + ct.specIndex;
              }
              function x(X) {
                return [].concat.apply([], X.map(function(ct) {
                  return ct;
                })).map(function(ct) {
                  return ct.__data__;
                });
              }
              function c(X, ct, lt) {
                function pt(Qt) {
                  var Vt = Qt.rowBlocks;
                  return Q(Vt, Vt.length - 1) + (Vt.length ? j(Vt[Vt.length - 1], 1 / 0) : 1);
                }
                var wt = X.selectAll("." + b.cn.scrollbarKit).data(T.repeat, T.keyFun);
                wt.enter().append("g").classed(b.cn.scrollbarKit, !0).style("shape-rendering", "geometricPrecision"), wt.each(function(Qt) {
                  var Vt = Qt.scrollbarState;
                  Vt.totalHeight = pt(Qt), Vt.scrollableAreaHeight = Qt.groupHeight - H(Qt), Vt.currentlyVisibleHeight = Math.min(Vt.totalHeight, Vt.scrollableAreaHeight), Vt.ratio = Vt.currentlyVisibleHeight / Vt.totalHeight, Vt.barLength = Math.max(Vt.ratio * Vt.currentlyVisibleHeight, b.goldenRatio * b.scrollbarWidth), Vt.barWiggleRoom = Vt.currentlyVisibleHeight - Vt.barLength, Vt.wiggleRoom = Math.max(0, Vt.totalHeight - Vt.scrollableAreaHeight), Vt.topY = Vt.barWiggleRoom === 0 ? 0 : Qt.scrollY / Vt.wiggleRoom * Vt.barWiggleRoom, Vt.bottomY = Vt.topY + Vt.barLength, Vt.dragMultiplier = Vt.wiggleRoom / Vt.barWiggleRoom;
                }).attr("transform", function(Qt) {
                  var Vt = Qt.width + b.scrollbarWidth / 2 + b.scrollbarOffset;
                  return t(Vt, H(Qt));
                });
                var Et = wt.selectAll("." + b.cn.scrollbar).data(T.repeat, T.keyFun);
                Et.enter().append("g").classed(b.cn.scrollbar, !0);
                var Ct = Et.selectAll("." + b.cn.scrollbarSlider).data(T.repeat, T.keyFun);
                Ct.enter().append("g").classed(b.cn.scrollbarSlider, !0), Ct.attr("transform", function(Qt) {
                  return t(0, Qt.scrollbarState.topY || 0);
                });
                var Gt = Ct.selectAll("." + b.cn.scrollbarGlyph).data(T.repeat, T.keyFun);
                Gt.enter().append("line").classed(b.cn.scrollbarGlyph, !0).attr("stroke", "black").attr("stroke-width", b.scrollbarWidth).attr("stroke-linecap", "round").attr("y1", b.scrollbarWidth / 2), Gt.attr("y2", function(Qt) {
                  return Qt.scrollbarState.barLength - b.scrollbarWidth / 2;
                }).attr("stroke-opacity", function(Qt) {
                  return Qt.columnDragInProgress || !Qt.scrollbarState.barWiggleRoom || lt ? 0 : 0.4;
                }), Gt.transition().delay(0).duration(0), Gt.transition().delay(b.scrollbarHideDelay).duration(b.scrollbarHideDuration).attr("stroke-opacity", 0);
                var Jt = Et.selectAll("." + b.cn.scrollbarCaptureZone).data(T.repeat, T.keyFun);
                Jt.enter().append("line").classed(b.cn.scrollbarCaptureZone, !0).attr("stroke", "white").attr("stroke-opacity", 0.01).attr("stroke-width", b.scrollbarCaptureWidth).attr("stroke-linecap", "butt").attr("y1", 0).on("mousedown", function(Qt) {
                  var Vt = P.event.y, zt = this.getBoundingClientRect(), Rt = Qt.scrollbarState, Wt = Vt - zt.top, kt = P.scale.linear().domain([0, Rt.scrollableAreaHeight]).range([0, Rt.totalHeight]).clamp(!0);
                  Rt.topY <= Wt && Wt <= Rt.bottomY || q(ct, X, null, kt(Wt - Rt.barLength / 2))(Qt);
                }).call(P.behavior.drag().origin(function(Qt) {
                  return P.event.stopPropagation(), Qt.scrollbarState.scrollbarScrollInProgress = !0, Qt;
                }).on("drag", q(ct, X)).on("dragend", function() {
                })), Jt.attr("y2", function(Qt) {
                  return Qt.scrollbarState.scrollableAreaHeight;
                }), ct._context.staticPlot && (Gt.remove(), Jt.remove());
              }
              function v(X, ct, lt, pt) {
                var wt = f(lt), Et = _(wt);
                m(Et);
                var Ct = S(Et);
                d(Ct);
                var Gt = C(Et), Jt = M(Gt);
                L(Jt), h(Jt, ct, pt, X), et(Et);
              }
              function f(X) {
                var ct = X.selectAll("." + b.cn.columnCells).data(T.repeat, T.keyFun);
                return ct.enter().append("g").classed(b.cn.columnCells, !0), ct.exit().remove(), ct;
              }
              function _(X) {
                var ct = X.selectAll("." + b.cn.columnCell).data(a.splitToCells, function(lt) {
                  return lt.keyWithinBlock;
                });
                return ct.enter().append("g").classed(b.cn.columnCell, !0), ct.exit().remove(), ct;
              }
              function S(X) {
                var ct = X.selectAll("." + b.cn.cellRect).data(T.repeat, function(lt) {
                  return lt.keyWithinBlock;
                });
                return ct.enter().append("rect").classed(b.cn.cellRect, !0), ct;
              }
              function M(X) {
                var ct = X.selectAll("." + b.cn.cellText).data(T.repeat, function(lt) {
                  return lt.keyWithinBlock;
                });
                return ct.enter().append("text").classed(b.cn.cellText, !0).style("cursor", function() {
                  return "auto";
                }).on("mousedown", function() {
                  P.event.stopPropagation();
                }), ct;
              }
              function C(X) {
                var ct = X.selectAll("." + b.cn.cellTextHolder).data(T.repeat, function(lt) {
                  return lt.keyWithinBlock;
                });
                return ct.enter().append("g").classed(b.cn.cellTextHolder, !0).style("shape-rendering", "geometricPrecision"), ct;
              }
              function m(X) {
                X.each(function(ct, lt) {
                  var pt = ct.calcdata.cells.font, wt = ct.column.specIndex, Et = {
                    size: O(pt.size, wt, lt),
                    color: O(pt.color, wt, lt),
                    family: O(pt.family, wt, lt),
                    weight: O(pt.weight, wt, lt),
                    style: O(pt.style, wt, lt),
                    variant: O(pt.variant, wt, lt),
                    textcase: O(pt.textcase, wt, lt),
                    lineposition: O(pt.lineposition, wt, lt),
                    shadow: O(pt.shadow, wt, lt)
                  };
                  ct.rowNumber = ct.key, ct.align = O(ct.calcdata.cells.align, wt, lt), ct.cellBorderWidth = O(ct.calcdata.cells.line.width, wt, lt), ct.font = Et;
                });
              }
              function L(X) {
                X.each(function(ct) {
                  A.font(P.select(this), ct.font);
                });
              }
              function d(X) {
                X.attr("width", function(ct) {
                  return ct.column.columnWidth;
                }).attr("stroke-width", function(ct) {
                  return ct.cellBorderWidth;
                }).each(function(ct) {
                  var lt = P.select(this);
                  l.stroke(lt, O(ct.calcdata.cells.line.color, ct.column.specIndex, ct.rowNumber)), l.fill(lt, O(ct.calcdata.cells.fill.color, ct.column.specIndex, ct.rowNumber));
                });
              }
              function h(X, ct, lt, pt) {
                X.text(function(wt) {
                  var Et = wt.column.specIndex, Ct = wt.rowNumber, Gt = wt.value, Jt = typeof Gt == "string", Qt = Jt && Gt.match(/<br>/i), Vt = !Jt || Qt;
                  wt.mayHaveMarkup = Jt && Gt.match(/[<&>]/);
                  var zt = E(Gt);
                  wt.latex = zt;
                  var Rt = zt ? "" : O(wt.calcdata.cells.prefix, Et, Ct) || "", Wt = zt ? "" : O(wt.calcdata.cells.suffix, Et, Ct) || "", kt = zt ? null : O(wt.calcdata.cells.format, Et, Ct) || null, re = Rt + (kt ? s(kt)(wt.value) : wt.value) + Wt, ge;
                  wt.wrappingNeeded = !wt.wrapped && !Vt && !zt && (ge = w(re)), wt.cellHeightMayIncrease = Qt || zt || wt.mayHaveMarkup || (ge === void 0 ? w(re) : ge), wt.needsConvertToTspans = wt.mayHaveMarkup || wt.wrappingNeeded || wt.latex;
                  var _e;
                  if (wt.wrappingNeeded) {
                    var ce = b.wrapSplitCharacter === " " ? re.replace(/<a href=/ig, "<a_href=") : re, ae = ce.split(b.wrapSplitCharacter), Se = b.wrapSplitCharacter === " " ? ae.map(function(ze) {
                      return ze.replace(/<a_href=/ig, "<a href=");
                    }) : ae;
                    wt.fragments = Se.map(function(ze) {
                      return {
                        text: ze,
                        width: null
                      };
                    }), wt.fragments.push({
                      fragment: b.wrapSpacer,
                      width: null
                    }), _e = Se.join(b.lineBreaker) + b.lineBreaker + b.wrapSpacer;
                  } else
                    delete wt.fragments, _e = re;
                  return _e;
                }).attr("dy", function(wt) {
                  return wt.needsConvertToTspans ? 0 : "0.75em";
                }).each(function(wt) {
                  var Et = this, Ct = P.select(Et), Gt = wt.wrappingNeeded ? st : vt;
                  wt.needsConvertToTspans ? p.convertToTspans(Ct, pt, Gt(lt, Et, ct, pt, wt)) : P.select(Et.parentNode).attr("transform", function(Jt) {
                    return t(ht(Jt), b.cellPad);
                  }).attr("text-anchor", function(Jt) {
                    return {
                      left: "start",
                      center: "middle",
                      right: "end"
                    }[Jt.align];
                  });
                });
              }
              function E(X) {
                return typeof X == "string" && X.match(b.latexCheck);
              }
              function w(X) {
                return X.indexOf(b.wrapSplitCharacter) !== -1;
              }
              function z(X, ct, lt) {
                var pt = ct.gdColumnsOriginalOrder;
                ct.gdColumns.sort(function(wt, Et) {
                  return lt[pt.indexOf(wt)] - lt[pt.indexOf(Et)];
                }), ct.columnorder = lt, X.emit("plotly_restyle");
              }
              function O(X, ct, lt) {
                if (n.isArrayOrTypedArray(X)) {
                  var pt = X[Math.min(ct, X.length - 1)];
                  return n.isArrayOrTypedArray(pt) ? pt[Math.min(lt, pt.length - 1)] : pt;
                } else
                  return X;
              }
              function B(X, ct, lt) {
                X.transition().ease(b.releaseTransitionEase).duration(b.releaseTransitionDuration).attr("transform", t(ct.x, lt));
              }
              function V(X) {
                return X.type === "cells";
              }
              function U(X) {
                return X.type === "header";
              }
              function H(X) {
                var ct = X.rowBlocks.length ? X.rowBlocks[0].auxiliaryBlocks : [];
                return ct.reduce(function(lt, pt) {
                  return lt + j(pt, 1 / 0);
                }, 0);
              }
              function F(X, ct, lt) {
                for (var pt = [], wt = 0, Et = 0; Et < X.length; Et++) {
                  for (var Ct = X[Et], Gt = Ct.rows, Jt = 0, Qt = 0; Qt < Gt.length; Qt++)
                    Jt += Gt[Qt].rowHeight;
                  Ct.allRowsHeight = Jt;
                  var Vt = wt + Jt, zt = ct, Rt = zt + lt;
                  zt < Vt && Rt > wt && pt.push(Et), wt += Jt;
                }
                return pt;
              }
              function G(X, ct, lt) {
                var pt = x(ct)[0];
                if (pt !== void 0) {
                  var wt = pt.rowBlocks, Et = pt.calcdata, Ct = Q(wt, wt.length), Gt = pt.calcdata.groupHeight - H(pt), Jt = Et.scrollY = Math.max(0, Math.min(Ct - Gt, Et.scrollY)), Qt = F(wt, Jt, Gt);
                  Qt.length === 1 && (Qt[0] === wt.length - 1 ? Qt.unshift(Qt[0] - 1) : Qt.push(Qt[0] + 1)), Qt[0] % 2 && Qt.reverse(), ct.each(function(Vt, zt) {
                    Vt.page = Qt[zt], Vt.scrollY = Jt;
                  }), ct.attr("transform", function(Vt) {
                    var zt = Q(Vt.rowBlocks, Vt.page) - Vt.scrollY;
                    return t(0, zt);
                  }), X && (rt(X, lt, ct, Qt, pt.prevPages, pt, 0), rt(X, lt, ct, Qt, pt.prevPages, pt, 1), c(lt, X));
                }
              }
              function q(X, ct, lt, pt) {
                return function(Et) {
                  var Ct = Et.calcdata ? Et.calcdata : Et, Gt = ct.filter(function(zt) {
                    return Ct.key === zt.key;
                  }), Jt = lt || Ct.scrollbarState.dragMultiplier, Qt = Ct.scrollY;
                  Ct.scrollY = pt === void 0 ? Ct.scrollY + Jt * P.event.dy : pt;
                  var Vt = Gt.selectAll("." + b.cn.yColumn).selectAll("." + b.cn.columnBlock).filter(V);
                  return G(X, Vt, Gt), Ct.scrollY === Qt;
                };
              }
              function rt(X, ct, lt, pt, wt, Et, Ct) {
                var Gt = pt[Ct] !== wt[Ct];
                Gt && (clearTimeout(Et.currentRepaint[Ct]), Et.currentRepaint[Ct] = setTimeout(function() {
                  var Jt = lt.filter(function(Qt, Vt) {
                    return Vt === Ct && pt[Vt] !== wt[Vt];
                  });
                  v(X, ct, Jt, lt), wt[Ct] = pt[Ct];
                }));
              }
              function st(X, ct, lt, pt) {
                return function() {
                  var Et = P.select(ct.parentNode);
                  Et.each(function(Ct) {
                    var Gt = Ct.fragments;
                    Et.selectAll("tspan.line").each(function(re, ge) {
                      Gt[ge].width = this.getComputedTextLength();
                    });
                    var Jt = Gt[Gt.length - 1].width, Qt = Gt.slice(0, -1), Vt = [], zt, Rt, Wt = 0, kt = Ct.column.columnWidth - 2 * b.cellPad;
                    for (Ct.value = ""; Qt.length; )
                      zt = Qt.shift(), Rt = zt.width + Jt, Wt + Rt > kt && (Ct.value += Vt.join(b.wrapSpacer) + b.lineBreaker, Vt = [], Wt = 0), Vt.push(zt.text), Wt += Rt;
                    Wt && (Ct.value += Vt.join(b.wrapSpacer)), Ct.wrapped = !0;
                  }), Et.selectAll("tspan.line").remove(), h(Et.select("." + b.cn.cellText), lt, X, pt), P.select(ct.parentNode.parentNode).call(et);
                };
              }
              function vt(X, ct, lt, pt, wt) {
                return function() {
                  if (!wt.settledY) {
                    var Ct = P.select(ct.parentNode), Gt = ut(wt), Jt = wt.key - Gt.firstRowIndex, Qt = Gt.rows[Jt].rowHeight, Vt = wt.cellHeightMayIncrease ? ct.parentNode.getBoundingClientRect().height + 2 * b.cellPad : Qt, zt = Math.max(Vt, Qt), Rt = zt - Gt.rows[Jt].rowHeight;
                    Rt && (Gt.rows[Jt].rowHeight = zt, X.selectAll("." + b.cn.columnCell).call(et), G(null, X.filter(V), 0), c(lt, pt, !0)), Ct.attr("transform", function() {
                      var Wt = this, kt = Wt.parentNode, re = kt.getBoundingClientRect(), ge = P.select(Wt.parentNode).select("." + b.cn.cellRect).node().getBoundingClientRect(), _e = Wt.transform.baseVal.consolidate(), ce = ge.top - re.top + (_e ? _e.matrix.f : b.cellPad);
                      return t(ht(wt, P.select(Wt.parentNode).select("." + b.cn.cellTextHolder).node().getBoundingClientRect().width), ce);
                    }), wt.settledY = !0;
                  }
                };
              }
              function ht(X, ct) {
                switch (X.align) {
                  case "left":
                    return b.cellPad;
                  case "right":
                    return X.column.columnWidth - (ct || 0) - b.cellPad;
                  case "center":
                    return (X.column.columnWidth - (ct || 0)) / 2;
                  default:
                    return b.cellPad;
                }
              }
              function et(X) {
                X.attr("transform", function(ct) {
                  var lt = ct.rowBlocks[0].auxiliaryBlocks.reduce(function(Ct, Gt) {
                    return Ct + j(Gt, 1 / 0);
                  }, 0), pt = ut(ct), wt = j(pt, ct.key), Et = wt + lt;
                  return t(0, Et);
                }).selectAll("." + b.cn.cellRect).attr("height", function(ct) {
                  return nt(ut(ct), ct.key).rowHeight;
                });
              }
              function Q(X, ct) {
                for (var lt = 0, pt = ct - 1; pt >= 0; pt--)
                  lt += at(X[pt]);
                return lt;
              }
              function j(X, ct) {
                for (var lt = 0, pt = 0; pt < X.rows.length && X.rows[pt].rowIndex < ct; pt++)
                  lt += X.rows[pt].rowHeight;
                return lt;
              }
              function at(X) {
                var ct = X.allRowsHeight;
                if (ct !== void 0)
                  return ct;
                for (var lt = 0, pt = 0; pt < X.rows.length; pt++)
                  lt += X.rows[pt].rowHeight;
                return X.allRowsHeight = lt, lt;
              }
              function ut(X) {
                return X.rowBlocks[X.page];
              }
              function nt(X, ct) {
                return X.rows[ct - X.firstRowIndex];
              }
            }
          ),
          /***/
          71856: (
            /***/
            function(Y, K, e) {
              var b = e(3208).rb, P = e(3208).ay, n = e(87163), s = e(13792).u, T = e(55412), A = e(56708), p = e(43236), u = e(93049).extendFlat, t = e(94850).k;
              Y.exports = {
                labels: A.labels,
                parents: A.parents,
                values: A.values,
                branchvalues: A.branchvalues,
                count: A.count,
                level: A.level,
                maxdepth: A.maxdepth,
                tiling: {
                  packing: {
                    valType: "enumerated",
                    values: ["squarify", "binary", "dice", "slice", "slice-dice", "dice-slice"],
                    dflt: "squarify",
                    editType: "plot"
                  },
                  squarifyratio: {
                    valType: "number",
                    min: 1,
                    dflt: 1,
                    editType: "plot"
                  },
                  flip: {
                    valType: "flaglist",
                    flags: ["x", "y"],
                    dflt: "",
                    editType: "plot"
                  },
                  pad: {
                    valType: "number",
                    min: 0,
                    dflt: 3,
                    editType: "plot"
                  },
                  editType: "calc"
                },
                marker: u({
                  pad: {
                    t: {
                      valType: "number",
                      min: 0,
                      editType: "plot"
                    },
                    l: {
                      valType: "number",
                      min: 0,
                      editType: "plot"
                    },
                    r: {
                      valType: "number",
                      min: 0,
                      editType: "plot"
                    },
                    b: {
                      valType: "number",
                      min: 0,
                      editType: "plot"
                    },
                    editType: "calc"
                  },
                  colors: A.marker.colors,
                  pattern: t,
                  depthfade: {
                    valType: "enumerated",
                    values: [!0, !1, "reversed"],
                    editType: "style"
                  },
                  line: A.marker.line,
                  cornerradius: {
                    valType: "number",
                    min: 0,
                    dflt: 0,
                    editType: "plot"
                  },
                  editType: "calc"
                }, n("marker", {
                  colorAttr: "colors",
                  anim: !1
                  // TODO: set to anim: true?
                })),
                pathbar: {
                  visible: {
                    valType: "boolean",
                    dflt: !0,
                    editType: "plot"
                  },
                  side: {
                    valType: "enumerated",
                    values: ["top", "bottom"],
                    dflt: "top",
                    editType: "plot"
                  },
                  edgeshape: {
                    valType: "enumerated",
                    values: [">", "<", "|", "/", "\\"],
                    dflt: ">",
                    editType: "plot"
                  },
                  thickness: {
                    valType: "number",
                    min: 12,
                    editType: "plot"
                  },
                  textfont: u({}, T.textfont, {}),
                  editType: "calc"
                },
                text: T.text,
                textinfo: A.textinfo,
                // TODO: incorporate `label` and `value` in the eventData
                texttemplate: P({
                  editType: "plot"
                }, {
                  keys: p.eventDataKeys.concat(["label", "value"])
                }),
                hovertext: T.hovertext,
                hoverinfo: A.hoverinfo,
                hovertemplate: b({}, {
                  keys: p.eventDataKeys
                }),
                textfont: T.textfont,
                insidetextfont: T.insidetextfont,
                outsidetextfont: u({}, T.outsidetextfont, {}),
                textposition: {
                  valType: "enumerated",
                  values: ["top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right"],
                  dflt: "top left",
                  editType: "plot"
                },
                sort: T.sort,
                root: A.root,
                domain: s({
                  name: "treemap",
                  trace: !0,
                  editType: "calc"
                })
              };
            }
          ),
          /***/
          69784: (
            /***/
            function(Y, K, e) {
              var b = e(44122);
              K.name = "treemap", K.plot = function(P, n, s, T) {
                b.plotBasePlot(K.name, P, n, s, T);
              }, K.clean = function(P, n, s, T) {
                b.cleanBasePlot(K.name, P, n, s, T);
              };
            }
          ),
          /***/
          38848: (
            /***/
            function(Y, K, e) {
              var b = e(14852);
              K._ = function(P, n) {
                return b.calc(P, n);
              }, K.t = function(P) {
                return b._runCrossTraceCalc("treemap", P);
              };
            }
          ),
          /***/
          43236: (
            /***/
            function(Y) {
              Y.exports = {
                CLICK_TRANSITION_TIME: 750,
                CLICK_TRANSITION_EASING: "poly",
                eventDataKeys: [
                  // string
                  "currentPath",
                  "root",
                  "entry",
                  // no need to add 'parent' here
                  // percentages i.e. ratios
                  "percentRoot",
                  "percentEntry",
                  "percentParent"
                ],
                gapWithPathbar: 1
                // i.e. one pixel
              };
            }
          ),
          /***/
          95719: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(71856), n = e(78766), s = e(13792).N, T = e(17550).handleText, A = e(56155).TEXTPAD, p = e(46979).handleMarkerDefaults, u = e(88856), t = u.hasColorscale, r = u.handleDefaults;
              Y.exports = function(a, l, o, y) {
                function g(d, h) {
                  return b.coerce(a, l, P, d, h);
                }
                var x = g("labels"), c = g("parents");
                if (!x || !x.length || !c || !c.length) {
                  l.visible = !1;
                  return;
                }
                var v = g("values");
                v && v.length ? g("branchvalues") : g("count"), g("level"), g("maxdepth");
                var f = g("tiling.packing");
                f === "squarify" && g("tiling.squarifyratio"), g("tiling.flip"), g("tiling.pad");
                var _ = g("text");
                g("texttemplate"), l.texttemplate || g("textinfo", b.isArrayOrTypedArray(_) ? "text+label" : "label"), g("hovertext"), g("hovertemplate");
                var S = g("pathbar.visible"), M = "auto";
                T(a, l, y, g, M, {
                  hasPathbar: S,
                  moduleHasSelected: !1,
                  moduleHasUnselected: !1,
                  moduleHasConstrain: !1,
                  moduleHasCliponaxis: !1,
                  moduleHasTextangle: !1,
                  moduleHasInsideanchor: !1
                }), g("textposition");
                var C = l.textposition.indexOf("bottom") !== -1;
                p(a, l, y, g);
                var m = l._hasColorscale = t(a, "marker", "colors") || (a.marker || {}).coloraxis;
                m ? r(a, l, y, g, {
                  prefix: "marker.",
                  cLetter: "c"
                }) : g("marker.depthfade", !(l.marker.colors || []).length);
                var L = l.textfont.size * 2;
                g("marker.pad.t", C ? L / 4 : L), g("marker.pad.l", L / 4), g("marker.pad.r", L / 4), g("marker.pad.b", C ? L : L / 4), g("marker.cornerradius"), l._hovered = {
                  marker: {
                    line: {
                      width: 2,
                      color: n.contrast(y.paper_bgcolor)
                    }
                  }
                }, S && (g("pathbar.thickness", l.pathbar.textfont.size + 2 * A), g("pathbar.side"), g("pathbar.edgeshape")), g("sort"), g("root.color"), s(l, y, g), l._length = null;
              };
            }
          ),
          /***/
          41567: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(33108), n = e(84102), s = n.clearMinTextSize, T = e(6851).resizeText, A = e(95709);
              Y.exports = function(u, t, r, i, a) {
                var l = a.type, o = a.drawDescendants, y = u._fullLayout, g = y["_" + l + "layer"], x, c, v = !r;
                if (s(l, y), x = g.selectAll("g.trace." + l).data(t, function(_) {
                  return _[0].trace.uid;
                }), x.enter().append("g").classed("trace", !0).classed(l, !0), x.order(), !y.uniformtext.mode && P.hasTransition(r)) {
                  i && (c = i());
                  var f = b.transition().duration(r.duration).ease(r.easing).each("end", function() {
                    c && c();
                  }).each("interrupt", function() {
                    c && c();
                  });
                  f.each(function() {
                    g.selectAll("g.trace").each(function(_) {
                      A(u, _, this, r, o);
                    });
                  });
                } else
                  x.each(function(_) {
                    A(u, _, this, r, o);
                  }), y.uniformtext.mode && T(u, g.selectAll(".trace"), l);
                v && x.exit().remove();
              };
            }
          ),
          /***/
          17010: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(34809), n = e(62203), s = e(30635), T = e(11995), A = e(92080).styleOne, p = e(43236), u = e(33108), t = e(44691), r = !0;
              Y.exports = function(a, l, o, y, g) {
                var x = g.barDifY, c = g.width, v = g.height, f = g.viewX, _ = g.viewY, S = g.pathSlice, M = g.toMoveInsideSlice, C = g.strTransform, m = g.hasTransition, L = g.handleSlicesExit, d = g.makeUpdateSliceInterpolator, h = g.makeUpdateTextInterpolator, E = {}, w = a._context.staticPlot, z = a._fullLayout, O = l[0], B = O.trace, V = O.hierarchy, U = c / B._entryDepth, H = u.listPath(o.data, "id"), F = T(V.copy(), [c, v], {
                  packing: "dice",
                  pad: {
                    inner: 0,
                    top: 0,
                    left: 0,
                    right: 0,
                    bottom: 0
                  }
                }).descendants();
                F = F.filter(function(q) {
                  var rt = H.indexOf(q.data.id);
                  return rt === -1 ? !1 : (q.x0 = U * rt, q.x1 = U * (rt + 1), q.y0 = x, q.y1 = x + v, q.onPathbar = !0, !0);
                }), F.reverse(), y = y.data(F, u.getPtId), y.enter().append("g").classed("pathbar", !0), L(y, r, E, [c, v], S), y.order();
                var G = y;
                m && (G = G.transition().each("end", function() {
                  var q = b.select(this);
                  u.setSliceCursor(q, a, {
                    hideOnRoot: !1,
                    hideOnLeaves: !1,
                    isTransitioning: !1
                  });
                })), G.each(function(q) {
                  q._x0 = f(q.x0), q._x1 = f(q.x1), q._y0 = _(q.y0), q._y1 = _(q.y1), q._hoverX = f(q.x1 - Math.min(c, v) / 2), q._hoverY = _(q.y1 - v / 2);
                  var rt = b.select(this), st = P.ensureSingle(rt, "path", "surface", function(Q) {
                    Q.style("pointer-events", w ? "none" : "all");
                  });
                  m ? st.transition().attrTween("d", function(Q) {
                    var j = d(Q, r, E, [c, v]);
                    return function(at) {
                      return S(j(at));
                    };
                  }) : st.attr("d", S), rt.call(t, o, a, l, {
                    styleOne: A,
                    eventDataKeys: p.eventDataKeys,
                    transitionTime: p.CLICK_TRANSITION_TIME,
                    transitionEasing: p.CLICK_TRANSITION_EASING
                  }).call(u.setSliceCursor, a, {
                    hideOnRoot: !1,
                    hideOnLeaves: !1,
                    isTransitioning: a._transitioning
                  }), st.call(A, q, B, a, {
                    hovered: !1
                  }), q._text = (u.getPtLabel(q) || "").split("<br>").join(" ") || "";
                  var vt = P.ensureSingle(rt, "g", "slicetext"), ht = P.ensureSingle(vt, "text", "", function(Q) {
                    Q.attr("data-notex", 1);
                  }), et = P.ensureUniformFontSize(a, u.determineTextFont(B, q, z.font, {
                    onPathbar: !0
                  }));
                  ht.text(q._text || " ").classed("slicetext", !0).attr("text-anchor", "start").call(n.font, et).call(s.convertToTspans, a), q.textBB = n.bBox(ht.node()), q.transform = M(q, {
                    fontSize: et.size,
                    onPathbar: !0
                  }), q.transform.fontSize = et.size, m ? ht.transition().attrTween("transform", function(Q) {
                    var j = h(Q, r, E, [c, v]);
                    return function(at) {
                      return C(j(at));
                    };
                  }) : ht.attr("transform", C(q));
                });
              };
            }
          ),
          /***/
          50916: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(34809), n = e(62203), s = e(30635), T = e(11995), A = e(92080).styleOne, p = e(43236), u = e(33108), t = e(44691), r = e(19718).formatSliceLabel, i = !1;
              Y.exports = function(l, o, y, g, x) {
                var c = x.width, v = x.height, f = x.viewX, _ = x.viewY, S = x.pathSlice, M = x.toMoveInsideSlice, C = x.strTransform, m = x.hasTransition, L = x.handleSlicesExit, d = x.makeUpdateSliceInterpolator, h = x.makeUpdateTextInterpolator, E = x.prevEntry, w = {}, z = l._context.staticPlot, O = l._fullLayout, B = o[0], V = B.trace, U = V.textposition.indexOf("left") !== -1, H = V.textposition.indexOf("right") !== -1, F = V.textposition.indexOf("bottom") !== -1, G = !F && !V.marker.pad.t || F && !V.marker.pad.b, q = T(y, [c, v], {
                  packing: V.tiling.packing,
                  squarifyratio: V.tiling.squarifyratio,
                  flipX: V.tiling.flip.indexOf("x") > -1,
                  flipY: V.tiling.flip.indexOf("y") > -1,
                  pad: {
                    inner: V.tiling.pad,
                    top: V.marker.pad.t,
                    left: V.marker.pad.l,
                    right: V.marker.pad.r,
                    bottom: V.marker.pad.b
                  }
                }), rt = q.descendants(), st = 1 / 0, vt = -1 / 0;
                rt.forEach(function(at) {
                  var ut = at.depth;
                  ut >= V._maxDepth ? (at.x0 = at.x1 = (at.x0 + at.x1) / 2, at.y0 = at.y1 = (at.y0 + at.y1) / 2) : (st = Math.min(st, ut), vt = Math.max(vt, ut));
                }), g = g.data(rt, u.getPtId), V._maxVisibleLayers = isFinite(vt) ? vt - st + 1 : 0, g.enter().append("g").classed("slice", !0), L(g, i, w, [c, v], S), g.order();
                var ht = null;
                if (m && E) {
                  var et = u.getPtId(E);
                  g.each(function(at) {
                    ht === null && u.getPtId(at) === et && (ht = {
                      x0: at.x0,
                      x1: at.x1,
                      y0: at.y0,
                      y1: at.y1
                    });
                  });
                }
                var Q = function() {
                  return ht || {
                    x0: 0,
                    x1: c,
                    y0: 0,
                    y1: v
                  };
                }, j = g;
                return m && (j = j.transition().each("end", function() {
                  var at = b.select(this);
                  u.setSliceCursor(at, l, {
                    hideOnRoot: !0,
                    hideOnLeaves: !1,
                    isTransitioning: !1
                  });
                })), j.each(function(at) {
                  var ut = u.isHeader(at, V);
                  at._x0 = f(at.x0), at._x1 = f(at.x1), at._y0 = _(at.y0), at._y1 = _(at.y1), at._hoverX = f(at.x1 - V.marker.pad.r), at._hoverY = _(F ? at.y1 - V.marker.pad.b / 2 : at.y0 + V.marker.pad.t / 2);
                  var nt = b.select(this), X = P.ensureSingle(nt, "path", "surface", function(Ct) {
                    Ct.style("pointer-events", z ? "none" : "all");
                  });
                  m ? X.transition().attrTween("d", function(Ct) {
                    var Gt = d(Ct, i, Q(), [c, v]);
                    return function(Jt) {
                      return S(Gt(Jt));
                    };
                  }) : X.attr("d", S), nt.call(t, y, l, o, {
                    styleOne: A,
                    eventDataKeys: p.eventDataKeys,
                    transitionTime: p.CLICK_TRANSITION_TIME,
                    transitionEasing: p.CLICK_TRANSITION_EASING
                  }).call(u.setSliceCursor, l, {
                    isTransitioning: l._transitioning
                  }), X.call(A, at, V, l, {
                    hovered: !1
                  }), at.x0 === at.x1 || at.y0 === at.y1 ? at._text = "" : ut ? at._text = G ? "" : u.getPtLabel(at) || "" : at._text = r(at, y, V, o, O) || "";
                  var ct = P.ensureSingle(nt, "g", "slicetext"), lt = P.ensureSingle(ct, "text", "", function(Ct) {
                    Ct.attr("data-notex", 1);
                  }), pt = P.ensureUniformFontSize(l, u.determineTextFont(V, at, O.font)), wt = at._text || " ", Et = ut && wt.indexOf("<br>") === -1;
                  lt.text(wt).classed("slicetext", !0).attr("text-anchor", H ? "end" : U || Et ? "start" : "middle").call(n.font, pt).call(s.convertToTspans, l), at.textBB = n.bBox(lt.node()), at.transform = M(at, {
                    fontSize: pt.size,
                    isHeader: ut
                  }), at.transform.fontSize = pt.size, m ? lt.transition().attrTween("transform", function(Ct) {
                    var Gt = h(Ct, i, Q(), [c, v]);
                    return function(Jt) {
                      return C(Gt(Jt));
                    };
                  }) : lt.attr("transform", C(at));
                }), ht;
              };
            }
          ),
          /***/
          36141: (
            /***/
            function(Y) {
              Y.exports = function K(e, b, P) {
                var n;
                P.swapXY && (n = e.x0, e.x0 = e.y0, e.y0 = n, n = e.x1, e.x1 = e.y1, e.y1 = n), P.flipX && (n = e.x0, e.x0 = b[0] - e.x1, e.x1 = b[0] - n), P.flipY && (n = e.y0, e.y0 = b[1] - e.y1, e.y1 = b[1] - n);
                var s = e.children;
                if (s)
                  for (var T = 0; T < s.length; T++)
                    K(s[T], b, P);
              };
            }
          ),
          /***/
          47181: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                moduleType: "trace",
                name: "treemap",
                basePlotModule: e(69784),
                categories: [],
                animatable: !0,
                attributes: e(71856),
                layoutAttributes: e(4219),
                supplyDefaults: e(95719),
                supplyLayoutDefaults: e(49852),
                calc: e(38848)._,
                crossTraceCalc: e(38848).t,
                plot: e(64274),
                style: e(92080).style,
                colorbar: e(21146),
                meta: {}
              };
            }
          ),
          /***/
          4219: (
            /***/
            function(Y) {
              Y.exports = {
                treemapcolorway: {
                  valType: "colorlist",
                  editType: "calc"
                },
                extendtreemapcolors: {
                  valType: "boolean",
                  dflt: !0,
                  editType: "calc"
                }
              };
            }
          ),
          /***/
          49852: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(4219);
              Y.exports = function(s, T) {
                function A(p, u) {
                  return b.coerce(s, T, P, p, u);
                }
                A("treemapcolorway", T.colorway), A("extendtreemapcolors");
              };
            }
          ),
          /***/
          11995: (
            /***/
            function(Y, K, e) {
              var b = e(92264), P = e(36141);
              Y.exports = function(T, A, p) {
                var u = p.flipX, t = p.flipY, r = p.packing === "dice-slice", i = p.pad[t ? "bottom" : "top"], a = p.pad[u ? "right" : "left"], l = p.pad[u ? "left" : "right"], o = p.pad[t ? "top" : "bottom"], y;
                r && (y = a, a = i, i = y, y = l, l = o, o = y);
                var g = b.treemap().tile(n(p.packing, p.squarifyratio)).paddingInner(p.pad.inner).paddingLeft(a).paddingRight(l).paddingTop(i).paddingBottom(o).size(r ? [A[1], A[0]] : A)(T);
                return (r || u || t) && P(g, A, {
                  swapXY: r,
                  flipX: u,
                  flipY: t
                }), g;
              };
              function n(s, T) {
                switch (s) {
                  case "squarify":
                    return b.treemapSquarify.ratio(T);
                  case "binary":
                    return b.treemapBinary;
                  case "dice":
                    return b.treemapDice;
                  case "slice":
                    return b.treemapSlice;
                  default:
                    return b.treemapSliceDice;
                }
              }
            }
          ),
          /***/
          64274: (
            /***/
            function(Y, K, e) {
              var b = e(41567), P = e(50916);
              Y.exports = function(s, T, A, p) {
                return b(s, T, A, p, {
                  type: "treemap",
                  drawDescendants: P
                });
              };
            }
          ),
          /***/
          95709: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(88640).GW, n = e(33108), s = e(34809), T = e(56155).TEXTPAD, A = e(32995), p = A.toMoveInsideBar, u = e(84102), t = u.recordMinTextSize, r = e(43236), i = e(17010);
              function a(l) {
                return n.isHierarchyRoot(l) ? "" : (
                  // don't use the dummyId
                  n.getPtId(l)
                );
              }
              Y.exports = function(o, y, g, x, c) {
                var v = o._fullLayout, f = y[0], _ = f.trace, S = _.type, M = S === "icicle", C = f.hierarchy, m = n.findEntryWithLevel(C, _.level), L = b.select(g), d = L.selectAll("g.pathbar"), h = L.selectAll("g.slice");
                if (!m) {
                  d.remove(), h.remove();
                  return;
                }
                var E = n.isHierarchyRoot(m), w = !v.uniformtext.mode && n.hasTransition(x), z = n.getMaxDepth(_), O = function(ie) {
                  return ie.data.depth - m.data.depth < z;
                }, B = v._size, V = _.domain, U = B.w * (V.x[1] - V.x[0]), H = B.h * (V.y[1] - V.y[0]), F = U, G = _.pathbar.thickness, q = _.marker.line.width + r.gapWithPathbar, rt = _.pathbar.visible ? _.pathbar.side.indexOf("bottom") > -1 ? H + q : -(G + q) : 0, st = {
                  x0: F,
                  // slide to the right
                  x1: F,
                  y0: rt,
                  y1: rt + G
                }, vt = function(ie, $t, jt) {
                  var ee = _.tiling.pad, Bt = function(Mt) {
                    return Mt - ee <= $t.x0;
                  }, Xt = function(Mt) {
                    return Mt + ee >= $t.x1;
                  }, Zt = function(Mt) {
                    return Mt - ee <= $t.y0;
                  }, ye = function(Mt) {
                    return Mt + ee >= $t.y1;
                  };
                  return ie.x0 === $t.x0 && ie.x1 === $t.x1 && ie.y0 === $t.y0 && ie.y1 === $t.y1 ? {
                    x0: ie.x0,
                    x1: ie.x1,
                    y0: ie.y0,
                    y1: ie.y1
                  } : {
                    x0: Bt(ie.x0 - ee) ? 0 : Xt(ie.x0 - ee) ? jt[0] : ie.x0,
                    x1: Bt(ie.x1 + ee) ? 0 : Xt(ie.x1 + ee) ? jt[0] : ie.x1,
                    y0: Zt(ie.y0 - ee) ? 0 : ye(ie.y0 - ee) ? jt[1] : ie.y0,
                    y1: Zt(ie.y1 + ee) ? 0 : ye(ie.y1 + ee) ? jt[1] : ie.y1
                  };
                }, ht = null, et = {}, Q = {}, j = null, at = function(ie, $t) {
                  return $t ? et[a(ie)] : Q[a(ie)];
                }, ut = function(ie, $t, jt, ee) {
                  if ($t)
                    return et[a(C)] || st;
                  var Bt = Q[_.level] || jt;
                  return O(ie) ? vt(ie, Bt, ee) : {};
                };
                f.hasMultipleRoots && E && z++, _._maxDepth = z, _._backgroundColor = v.paper_bgcolor, _._entryDepth = m.data.depth, _._atRootLevel = E;
                var nt = -U / 2 + B.l + B.w * (V.x[1] + V.x[0]) / 2, X = -H / 2 + B.t + B.h * (1 - (V.y[1] + V.y[0]) / 2), ct = function(ie) {
                  return nt + ie;
                }, lt = function(ie) {
                  return X + ie;
                }, pt = lt(0), wt = ct(0), Et = function(ie) {
                  return wt + ie;
                }, Ct = function(ie) {
                  return pt + ie;
                };
                function Gt(ie, $t) {
                  return ie + "," + $t;
                }
                var Jt = Et(0), Qt = function(ie) {
                  ie.x = Math.max(Jt, ie.x);
                }, Vt = _.pathbar.edgeshape, zt = function(ie) {
                  var $t = Et(Math.max(Math.min(ie.x0, ie.x0), 0)), jt = Et(Math.min(Math.max(ie.x1, ie.x1), F)), ee = Ct(ie.y0), Bt = Ct(ie.y1), Xt = G / 2, Zt = {}, ye = {};
                  Zt.x = $t, ye.x = jt, Zt.y = ye.y = (ee + Bt) / 2;
                  var Mt = {
                    x: $t,
                    y: ee
                  }, St = {
                    x: jt,
                    y: ee
                  }, Lt = {
                    x: jt,
                    y: Bt
                  }, te = {
                    x: $t,
                    y: Bt
                  };
                  return Vt === ">" ? (Mt.x -= Xt, St.x -= Xt, Lt.x -= Xt, te.x -= Xt) : Vt === "/" ? (Lt.x -= Xt, te.x -= Xt, Zt.x -= Xt / 2, ye.x -= Xt / 2) : Vt === "\\" ? (Mt.x -= Xt, St.x -= Xt, Zt.x -= Xt / 2, ye.x -= Xt / 2) : Vt === "<" && (Zt.x -= Xt, ye.x -= Xt), Qt(Mt), Qt(te), Qt(Zt), Qt(St), Qt(Lt), Qt(ye), "M" + Gt(Mt.x, Mt.y) + "L" + Gt(St.x, St.y) + "L" + Gt(ye.x, ye.y) + "L" + Gt(Lt.x, Lt.y) + "L" + Gt(te.x, te.y) + "L" + Gt(Zt.x, Zt.y) + "Z";
                }, Rt = _[M ? "tiling" : "marker"].pad, Wt = function(ie) {
                  return _.textposition.indexOf(ie) !== -1;
                }, kt = Wt("top"), re = Wt("left"), ge = Wt("right"), _e = Wt("bottom"), ce = function(ie) {
                  var $t = ct(ie.x0), jt = ct(ie.x1), ee = lt(ie.y0), Bt = lt(ie.y1), Xt = jt - $t, Zt = Bt - ee;
                  if (!Xt || !Zt) return "";
                  var ye = _.marker.cornerradius || 0, Mt = Math.min(ye, Xt / 2, Zt / 2);
                  Mt && ie.data && ie.data.data && ie.data.data.label && (kt && (Mt = Math.min(Mt, Rt.t)), re && (Mt = Math.min(Mt, Rt.l)), ge && (Mt = Math.min(Mt, Rt.r)), _e && (Mt = Math.min(Mt, Rt.b)));
                  var St = function(Lt, te) {
                    return Mt ? "a" + Gt(Mt, Mt) + " 0 0 1 " + Gt(Lt, te) : "";
                  };
                  return "M" + Gt($t, ee + Mt) + St(Mt, -Mt) + "L" + Gt(jt - Mt, ee) + St(Mt, Mt) + "L" + Gt(jt, Bt - Mt) + St(-Mt, Mt) + "L" + Gt($t + Mt, Bt) + St(-Mt, -Mt) + "Z";
                }, ae = function(ie, $t) {
                  var jt = ie.x0, ee = ie.x1, Bt = ie.y0, Xt = ie.y1, Zt = ie.textBB, ye = kt || $t.isHeader && !_e, Mt = ye ? "start" : _e ? "end" : "middle", St = Wt("right"), Lt = Wt("left") || $t.onPathbar, te = Lt ? -1 : St ? 1 : 0;
                  if ($t.isHeader) {
                    if (jt += (M ? Rt : Rt.l) - T, ee -= (M ? Rt : Rt.r) - T, jt >= ee) {
                      var fe = (jt + ee) / 2;
                      jt = fe, ee = fe;
                    }
                    var Me;
                    _e ? (Me = Xt - (M ? Rt : Rt.b), Bt < Me && Me < Xt && (Bt = Me)) : (Me = Bt + (M ? Rt : Rt.t), Bt < Me && Me < Xt && (Xt = Me));
                  }
                  var ir = p(jt, ee, Bt, Xt, Zt, {
                    isHorizontal: !1,
                    constrained: !0,
                    angle: 0,
                    anchor: Mt,
                    leftToRight: te
                  });
                  return ir.fontSize = $t.fontSize, ir.targetX = ct(ir.targetX), ir.targetY = lt(ir.targetY), isNaN(ir.targetX) || isNaN(ir.targetY) ? {} : (jt !== ee && Bt !== Xt && t(_.type, ir, v), {
                    scale: ir.scale,
                    rotate: ir.rotate,
                    textX: ir.textX,
                    textY: ir.textY,
                    anchorX: ir.anchorX,
                    anchorY: ir.anchorY,
                    targetX: ir.targetX,
                    targetY: ir.targetY
                  });
                }, Se = function(ie, $t) {
                  for (var jt, ee = 0, Bt = ie; !jt && ee < z; )
                    ee++, Bt = Bt.parent, Bt ? jt = at(Bt, $t) : ee = z;
                  return jt || {};
                }, ze = function(ie, $t, jt, ee) {
                  var Bt = at(ie, $t), Xt;
                  if ($t)
                    Xt = st;
                  else {
                    var Zt = at(m, $t);
                    Zt ? Xt = vt(ie, Zt, ee) : Xt = {};
                  }
                  return P(Bt, Xt);
                }, Ne = function(ie, $t, jt, ee, Bt) {
                  var Xt = at(ie, $t), Zt;
                  if (Xt)
                    Zt = Xt;
                  else if ($t)
                    Zt = st;
                  else if (ht)
                    if (ie.parent) {
                      var ye = j || jt;
                      ye && !$t ? Zt = vt(ie, ye, ee) : (Zt = {}, s.extendFlat(Zt, Se(ie, $t)));
                    } else
                      Zt = s.extendFlat({}, ie), M && (Bt.orientation === "h" ? Bt.flipX ? Zt.x0 = ie.x1 : Zt.x1 = 0 : Bt.flipY ? Zt.y0 = ie.y1 : Zt.y1 = 0);
                  else
                    Zt = {};
                  return P(Zt, {
                    x0: ie.x0,
                    x1: ie.x1,
                    y0: ie.y0,
                    y1: ie.y1
                  });
                }, Ve = function(ie, $t, jt, ee) {
                  var Bt = at(ie, $t), Xt = {}, Zt = ut(ie, $t, jt, ee);
                  s.extendFlat(Xt, {
                    transform: ae({
                      x0: Zt.x0,
                      x1: Zt.x1,
                      y0: Zt.y0,
                      y1: Zt.y1,
                      textBB: ie.textBB,
                      _text: ie._text
                    }, {
                      isHeader: n.isHeader(ie, _)
                    })
                  }), Bt ? Xt = Bt : ie.parent && s.extendFlat(Xt, Se(ie, $t));
                  var ye = ie.transform;
                  return ie.x0 !== ie.x1 && ie.y0 !== ie.y1 && t(_.type, ye, v), P(Xt, {
                    transform: {
                      scale: ye.scale,
                      rotate: ye.rotate,
                      textX: ye.textX,
                      textY: ye.textY,
                      anchorX: ye.anchorX,
                      anchorY: ye.anchorY,
                      targetX: ye.targetX,
                      targetY: ye.targetY
                    }
                  });
                }, Oe = function(ie, $t, jt, ee, Bt) {
                  var Xt = ee[0], Zt = ee[1];
                  w ? ie.exit().transition().each(function() {
                    var ye = b.select(this), Mt = ye.select("path.surface");
                    Mt.transition().attrTween("d", function(Lt) {
                      var te = ze(Lt, $t, jt, [Xt, Zt]);
                      return function(fe) {
                        return Bt(te(fe));
                      };
                    });
                    var St = ye.select("g.slicetext");
                    St.attr("opacity", 0);
                  }).remove() : ie.exit().remove();
                }, ur = function(ie) {
                  var $t = ie.transform;
                  return ie.x0 !== ie.x1 && ie.y0 !== ie.y1 && t(_.type, $t, v), s.getTextTransform({
                    textX: $t.textX,
                    textY: $t.textY,
                    anchorX: $t.anchorX,
                    anchorY: $t.anchorY,
                    targetX: $t.targetX,
                    targetY: $t.targetY,
                    scale: $t.scale,
                    rotate: $t.rotate
                  });
                };
                w && (d.each(function(ie) {
                  et[a(ie)] = {
                    x0: ie.x0,
                    x1: ie.x1,
                    y0: ie.y0,
                    y1: ie.y1
                  }, ie.transform && (et[a(ie)].transform = {
                    textX: ie.transform.textX,
                    textY: ie.transform.textY,
                    anchorX: ie.transform.anchorX,
                    anchorY: ie.transform.anchorY,
                    targetX: ie.transform.targetX,
                    targetY: ie.transform.targetY,
                    scale: ie.transform.scale,
                    rotate: ie.transform.rotate
                  });
                }), h.each(function(ie) {
                  Q[a(ie)] = {
                    x0: ie.x0,
                    x1: ie.x1,
                    y0: ie.y0,
                    y1: ie.y1
                  }, ie.transform && (Q[a(ie)].transform = {
                    textX: ie.transform.textX,
                    textY: ie.transform.textY,
                    anchorX: ie.transform.anchorX,
                    anchorY: ie.transform.anchorY,
                    targetX: ie.transform.targetX,
                    targetY: ie.transform.targetY,
                    scale: ie.transform.scale,
                    rotate: ie.transform.rotate
                  }), !ht && n.isEntry(ie) && (ht = ie);
                })), j = c(o, y, m, h, {
                  width: U,
                  height: H,
                  viewX: ct,
                  viewY: lt,
                  pathSlice: ce,
                  toMoveInsideSlice: ae,
                  prevEntry: ht,
                  makeUpdateSliceInterpolator: Ne,
                  makeUpdateTextInterpolator: Ve,
                  handleSlicesExit: Oe,
                  hasTransition: w,
                  strTransform: ur
                }), _.pathbar.visible ? i(o, y, m, d, {
                  barDifY: rt,
                  width: F,
                  height: G,
                  viewX: Et,
                  viewY: Ct,
                  pathSlice: zt,
                  toMoveInsideSlice: ae,
                  makeUpdateSliceInterpolator: Ne,
                  makeUpdateTextInterpolator: Ve,
                  handleSlicesExit: Oe,
                  hasTransition: w,
                  strTransform: ur
                }) : d.remove();
              };
            }
          ),
          /***/
          92080: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(78766), n = e(34809), s = e(33108), T = e(84102).resizeText, A = e(72043);
              function p(t) {
                var r = t._fullLayout._treemaplayer.selectAll(".trace");
                T(t, r, "treemap"), r.each(function(i) {
                  var a = b.select(this), l = i[0], o = l.trace;
                  a.style("opacity", o.opacity), a.selectAll("path.surface").each(function(y) {
                    b.select(this).call(u, y, o, t, {
                      hovered: !1
                    });
                  });
                });
              }
              function u(t, r, i, a, l) {
                var o = (l || {}).hovered, y = r.data.data, g = y.i, x, c, v = y.color, f = s.isHierarchyRoot(r), _ = 1;
                if (o)
                  x = i._hovered.marker.line.color, c = i._hovered.marker.line.width;
                else if (f && v === i.root.color)
                  _ = 100, x = "rgba(0,0,0,0)", c = 0;
                else if (x = n.castOption(i, g, "marker.line.color") || P.defaultLine, c = n.castOption(i, g, "marker.line.width") || 0, !i._hasColorscale && !r.onPathbar) {
                  var S = i.marker.depthfade;
                  if (S) {
                    var M = P.combine(P.addOpacity(i._backgroundColor, 0.75), v), C;
                    if (S === !0) {
                      var m = s.getMaxDepth(i);
                      isFinite(m) ? s.isLeaf(r) ? C = 0 : C = i._maxVisibleLayers - (r.data.depth - i._entryDepth) : C = r.data.height + 1;
                    } else
                      C = r.data.depth - i._entryDepth, i._atRootLevel || C++;
                    if (C > 0)
                      for (var L = 0; L < C; L++) {
                        var d = 0.5 * L / C;
                        v = P.combine(P.addOpacity(M, d), v);
                      }
                  }
                }
                t.call(A, r, i, a, v).style("stroke-width", c).call(P.stroke, x).style("opacity", _);
              }
              Y.exports = {
                style: p,
                styleOne: u
              };
            }
          ),
          /***/
          14711: (
            /***/
            function(Y, K, e) {
              var b = e(64625), P = e(93049).extendFlat, n = e(80712).axisHoverFormat;
              Y.exports = {
                y: b.y,
                x: b.x,
                x0: b.x0,
                y0: b.y0,
                xhoverformat: n("x"),
                yhoverformat: n("y"),
                name: P({}, b.name, {}),
                orientation: P({}, b.orientation, {}),
                bandwidth: {
                  valType: "number",
                  min: 0,
                  editType: "calc"
                },
                scalegroup: {
                  valType: "string",
                  dflt: "",
                  editType: "calc"
                },
                scalemode: {
                  valType: "enumerated",
                  values: ["width", "count"],
                  dflt: "width",
                  editType: "calc"
                },
                spanmode: {
                  valType: "enumerated",
                  values: ["soft", "hard", "manual"],
                  dflt: "soft",
                  editType: "calc"
                },
                span: {
                  valType: "info_array",
                  items: [{
                    valType: "any",
                    editType: "calc"
                  }, {
                    valType: "any",
                    editType: "calc"
                  }],
                  editType: "calc"
                },
                line: {
                  color: {
                    valType: "color",
                    editType: "style"
                  },
                  width: {
                    valType: "number",
                    min: 0,
                    dflt: 2,
                    editType: "style"
                  },
                  editType: "plot"
                },
                fillcolor: b.fillcolor,
                points: P({}, b.boxpoints, {}),
                jitter: P({}, b.jitter, {}),
                pointpos: P({}, b.pointpos, {}),
                width: P({}, b.width, {}),
                marker: b.marker,
                text: b.text,
                hovertext: b.hovertext,
                hovertemplate: b.hovertemplate,
                quartilemethod: b.quartilemethod,
                box: {
                  visible: {
                    valType: "boolean",
                    dflt: !1,
                    editType: "plot"
                  },
                  width: {
                    valType: "number",
                    min: 0,
                    max: 1,
                    dflt: 0.25,
                    editType: "plot"
                  },
                  fillcolor: {
                    valType: "color",
                    editType: "style"
                  },
                  line: {
                    color: {
                      valType: "color",
                      editType: "style"
                    },
                    width: {
                      valType: "number",
                      min: 0,
                      editType: "style"
                    },
                    editType: "style"
                  },
                  editType: "plot"
                },
                meanline: {
                  visible: {
                    valType: "boolean",
                    dflt: !1,
                    editType: "plot"
                  },
                  color: {
                    valType: "color",
                    editType: "style"
                  },
                  width: {
                    valType: "number",
                    min: 0,
                    editType: "style"
                  },
                  editType: "plot"
                },
                side: {
                  valType: "enumerated",
                  values: ["both", "positive", "negative"],
                  dflt: "both",
                  editType: "calc"
                },
                offsetgroup: b.offsetgroup,
                alignmentgroup: b.alignmentgroup,
                selected: b.selected,
                unselected: b.unselected,
                hoveron: {
                  valType: "flaglist",
                  flags: ["violins", "points", "kde"],
                  dflt: "violins+points+kde",
                  extras: ["all"],
                  editType: "style"
                },
                zorder: b.zorder
              };
            }
          ),
          /***/
          88759: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(29714), n = e(89429), s = e(37881), T = e(63821).BADNUM;
              Y.exports = function(r, i) {
                var a = n(r, i);
                if (a[0].t.empty) return a;
                for (var l = r._fullLayout, o = P.getFromId(r, i[i.orientation === "h" ? "xaxis" : "yaxis"]), y = 1 / 0, g = -1 / 0, x = 0, c = 0, v = 0; v < a.length; v++) {
                  var f = a[v], _ = f.pts.map(s.extractVal), S = f.bandwidth = p(i, f, _), M = f.span = u(i, f, o, S);
                  if (f.min === f.max && S === 0)
                    M = f.span = [f.min, f.max], f.density = [{
                      v: 1,
                      t: M[0]
                    }], f.bandwidth = S, x = Math.max(x, 1);
                  else {
                    var C = M[1] - M[0], m = Math.ceil(C / (S / 3)), L = C / m;
                    if (!isFinite(L) || !isFinite(m))
                      return b.error("Something went wrong with computing the violin span"), a[0].t.empty = !0, a;
                    var d = s.makeKDE(f, i, _);
                    f.density = new Array(m);
                    for (var h = 0, E = M[0]; E < M[1] + L / 2; h++, E += L) {
                      var w = d(E);
                      f.density[h] = {
                        v: w,
                        t: E
                      }, x = Math.max(x, w);
                    }
                  }
                  c = Math.max(c, _.length), y = Math.min(y, M[0]), g = Math.max(g, M[1]);
                }
                var z = P.findExtremes(o, [y, g], {
                  padded: !0
                });
                if (i._extremes[o._id] = z, i.width)
                  a[0].t.maxKDE = x;
                else {
                  var O = l._violinScaleGroupStats, B = i.scalegroup, V = O[B];
                  V ? (V.maxKDE = Math.max(V.maxKDE, x), V.maxCount = Math.max(V.maxCount, c)) : O[B] = {
                    maxKDE: x,
                    maxCount: c
                  };
                }
                return a[0].t.labels.kde = b._(r, "kde:"), a;
              };
              function A(t, r, i) {
                var a = Math.min(r, i / 1.349);
                return 1.059 * a * Math.pow(t, -0.2);
              }
              function p(t, r, i) {
                var a = r.max - r.min;
                if (!a)
                  return t.bandwidth ? t.bandwidth : 0;
                if (t.bandwidth)
                  return Math.max(t.bandwidth, a / 1e4);
                var l = i.length, o = b.stdev(i, l - 1, r.mean);
                return Math.max(A(l, o, r.q3 - r.q1), a / 100);
              }
              function u(t, r, i, a) {
                var l = t.spanmode, o = t.span || [], y = [r.min, r.max], g = [r.min - 2 * a, r.max + 2 * a], x;
                function c(f) {
                  var _ = o[f], S = i.type === "multicategory" ? i.r2c(_) : i.d2c(_, 0, t[r.valLetter + "calendar"]);
                  return S === T ? g[f] : S;
                }
                l === "soft" ? x = g : l === "hard" ? x = y : x = [c(0), c(1)];
                var v = {
                  type: "linear",
                  range: x
                };
                return P.setConvert(v), v.cleanRange(), x;
              }
            }
          ),
          /***/
          67316: (
            /***/
            function(Y, K, e) {
              var b = e(81606).setPositionOffset, P = ["v", "h"];
              Y.exports = function(s, T) {
                for (var A = s.calcdata, p = T.xaxis, u = T.yaxis, t = 0; t < P.length; t++) {
                  for (var r = P[t], i = r === "h" ? u : p, a = [], l = 0; l < A.length; l++) {
                    var o = A[l], y = o[0].t, g = o[0].trace;
                    g.visible === !0 && g.type === "violin" && !y.empty && g.orientation === r && g.xaxis === p._id && g.yaxis === u._id && a.push(l);
                  }
                  b("violin", s, a, i);
                }
              };
            }
          ),
          /***/
          10864: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(78766), n = e(62294), s = e(14711);
              Y.exports = function(A, p, u, t) {
                function r(L, d) {
                  return b.coerce(A, p, s, L, d);
                }
                function i(L, d) {
                  return b.coerce2(A, p, s, L, d);
                }
                if (n.handleSampleDefaults(A, p, r, t), p.visible !== !1) {
                  r("bandwidth"), r("side");
                  var a = r("width");
                  a || (r("scalegroup", p.name), r("scalemode"));
                  var l = r("span"), o;
                  Array.isArray(l) && (o = "manual"), r("spanmode", o);
                  var y = r("line.color", (A.marker || {}).color || u), g = r("line.width"), x = r("fillcolor", P.addOpacity(p.line.color, 0.5));
                  n.handlePointsDefaults(A, p, r, {
                    prefix: ""
                  });
                  var c = i("box.width"), v = i("box.fillcolor", x), f = i("box.line.color", y), _ = i("box.line.width", g), S = r("box.visible", !!(c || v || f || _));
                  S || (p.box = {
                    visible: !1
                  });
                  var M = i("meanline.color", y), C = i("meanline.width", g), m = r("meanline.visible", !!(M || C));
                  m || (p.meanline = {
                    visible: !1
                  }), r("quartilemethod"), r("zorder");
                }
              };
            }
          ),
          /***/
          37881: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = {
                gaussian: function(n) {
                  return 1 / Math.sqrt(2 * Math.PI) * Math.exp(-0.5 * n * n);
                }
              };
              K.makeKDE = function(n, s, T) {
                var A = T.length, p = P.gaussian, u = n.bandwidth, t = 1 / (A * u);
                return function(r) {
                  for (var i = 0, a = 0; a < A; a++)
                    i += p((r - T[a]) / u);
                  return t * i;
                };
              }, K.getPositionOnKdePath = function(n, s, T) {
                var A, p;
                s.orientation === "h" ? (A = "y", p = "x") : (A = "x", p = "y");
                var u = b.findPointOnPath(n.path, T, p, {
                  pathLength: n.pathLength
                }), t = n.posCenterPx, r = u[A], i = s.side === "both" ? 2 * t - r : t;
                return [r, i];
              }, K.getKdeValue = function(n, s, T) {
                var A = n.pts.map(K.extractVal), p = K.makeKDE(n, s, A);
                return p(T) / n.posDensityScale;
              }, K.extractVal = function(n) {
                return n.v;
              };
            }
          ),
          /***/
          16842: (
            /***/
            function(Y, K, e) {
              var b = e(78766), P = e(34809), n = e(29714), s = e(11448), T = e(37881);
              Y.exports = function(p, u, t, r, i) {
                i || (i = {});
                var a = i.hoverLayer, l = p.cd, o = l[0].trace, y = o.hoveron, g = y.indexOf("violins") !== -1, x = y.indexOf("kde") !== -1, c = [], v, f;
                if (g || x) {
                  var _ = s.hoverOnBoxes(p, u, t, r);
                  if (x && _.length > 0) {
                    var S = p.xa, M = p.ya, C, m, L, d, h;
                    o.orientation === "h" ? (h = u, C = "y", L = M, m = "x", d = S) : (h = t, C = "x", L = S, m = "y", d = M);
                    var E = l[p.index];
                    if (h >= E.span[0] && h <= E.span[1]) {
                      var w = P.extendFlat({}, p), z = d.c2p(h, !0), O = T.getKdeValue(E, o, h), B = T.getPositionOnKdePath(E, o, z), V = L._offset, U = L._length;
                      w[C + "0"] = B[0], w[C + "1"] = B[1], w[m + "0"] = w[m + "1"] = z, w[m + "Label"] = m + ": " + n.hoverLabelText(d, h, o[m + "hoverformat"]) + ", " + l[0].t.labels.kde + " " + O.toFixed(3);
                      for (var H = 0, F = 0; F < _.length; F++)
                        if (_[F].attr === "med") {
                          H = F;
                          break;
                        }
                      w.spikeDistance = _[H].spikeDistance;
                      var G = C + "Spike";
                      w[G] = _[H][G], _[H].spikeDistance = void 0, _[H][G] = void 0, w.hovertemplate = !1, c.push(w), f = {}, f[C + "1"] = P.constrain(V + B[0], V, V + U), f[C + "2"] = P.constrain(V + B[1], V, V + U), f[m + "1"] = f[m + "2"] = d._offset + z;
                    }
                  }
                  g && (c = c.concat(_));
                }
                y.indexOf("points") !== -1 && (v = s.hoverOnPoints(p, u, t));
                var q = a.selectAll(".violinline-" + o.uid).data(f ? [0] : []);
                return q.enter().append("line").classed("violinline-" + o.uid, !0).attr("stroke-width", 1.5), q.exit().remove(), q.attr(f).call(b.stroke, p.color), r === "closest" ? v ? [v] : c : (v && c.push(v), c);
              };
            }
          ),
          /***/
          37276: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(14711),
                layoutAttributes: e(84734),
                supplyDefaults: e(10864),
                crossTraceDefaults: e(62294).crossTraceDefaults,
                supplyLayoutDefaults: e(55145),
                calc: e(88759),
                crossTraceCalc: e(67316),
                plot: e(36769),
                style: e(25117),
                styleOnSelect: e(9408).styleOnSelect,
                hoverPoints: e(16842),
                selectPoints: e(72488),
                moduleType: "trace",
                name: "violin",
                basePlotModule: e(37703),
                categories: ["cartesian", "svg", "symbols", "oriented", "box-violin", "showLegend", "violinLayout", "zoomScale"],
                meta: {}
              };
            }
          ),
          /***/
          84734: (
            /***/
            function(Y, K, e) {
              var b = e(64636), P = e(34809).extendFlat;
              Y.exports = {
                violinmode: P({}, b.boxmode, {}),
                violingap: P({}, b.boxgap, {}),
                violingroupgap: P({}, b.boxgroupgap, {})
              };
            }
          ),
          /***/
          55145: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(84734), n = e(65067);
              Y.exports = function(T, A, p) {
                function u(t, r) {
                  return b.coerce(T, A, P, t, r);
                }
                n._supply(T, A, p, u, "violin");
              };
            }
          ),
          /***/
          36769: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(34809), n = e(62203), s = e(95419), T = e(5525), A = e(37881);
              Y.exports = function(u, t, r, i) {
                var a = u._context.staticPlot, l = u._fullLayout, o = t.xaxis, y = t.yaxis;
                function g(x, c) {
                  var v = T(x, {
                    xaxis: o,
                    yaxis: y,
                    trace: c,
                    connectGaps: !0,
                    baseTolerance: 0.75,
                    shape: "spline",
                    simplify: !0,
                    linearized: !0
                  });
                  return n.smoothopen(v[0], 1);
                }
                P.makeTraceGroups(i, r, "trace violins").each(function(x) {
                  var c = b.select(this), v = x[0], f = v.t, _ = v.trace;
                  if (_.visible !== !0 || f.empty) {
                    c.remove();
                    return;
                  }
                  var S = f.bPos, M = f.bdPos, C = t[f.valLetter + "axis"], m = t[f.posLetter + "axis"], L = _.side === "both", d = L || _.side === "positive", h = L || _.side === "negative", E = c.selectAll("path.violin").data(P.identity);
                  E.enter().append("path").style("vector-effect", a ? "none" : "non-scaling-stroke").attr("class", "violin"), E.exit().remove(), E.each(function(F) {
                    var G = b.select(this), q = F.density, rt = q.length, st = m.c2l(F.pos + S, !0), vt = m.l2p(st), ht;
                    if (_.width)
                      ht = f.maxKDE / M;
                    else {
                      var et = l._violinScaleGroupStats[_.scalegroup];
                      ht = _.scalemode === "count" ? et.maxKDE / M * (et.maxCount / F.pts.length) : et.maxKDE / M;
                    }
                    var Q, j, at, ut, nt, X, ct;
                    if (d) {
                      for (X = new Array(rt), ut = 0; ut < rt; ut++)
                        ct = X[ut] = {}, ct[f.posLetter] = st + q[ut].v / ht, ct[f.valLetter] = C.c2l(q[ut].t, !0);
                      Q = g(X, _);
                    }
                    if (h) {
                      for (X = new Array(rt), nt = 0, ut = rt - 1; nt < rt; nt++, ut--)
                        ct = X[nt] = {}, ct[f.posLetter] = st - q[ut].v / ht, ct[f.valLetter] = C.c2l(q[ut].t, !0);
                      j = g(X, _);
                    }
                    if (L)
                      at = Q + "L" + j.substr(1) + "Z";
                    else {
                      var lt = [vt, C.c2p(q[0].t)], pt = [vt, C.c2p(q[rt - 1].t)];
                      _.orientation === "h" && (lt.reverse(), pt.reverse()), d ? at = "M" + lt + "L" + Q.substr(1) + "L" + pt : at = "M" + pt + "L" + j.substr(1) + "L" + lt;
                    }
                    G.attr("d", at), F.posCenterPx = vt, F.posDensityScale = ht * M, F.path = G.node(), F.pathLength = F.path.getTotalLength() / (L ? 2 : 1);
                  });
                  var w = _.box, z = w.width, O = (w.line || {}).width, B, V;
                  L ? (B = M * z, V = 0) : d ? (B = [0, M * z / 2], V = O * {
                    x: 1,
                    y: -1
                  }[f.posLetter]) : (B = [M * z / 2, 0], V = O * {
                    x: -1,
                    y: 1
                  }[f.posLetter]), s.plotBoxAndWhiskers(c, {
                    pos: m,
                    val: C
                  }, _, {
                    bPos: S,
                    bdPos: B,
                    bPosPxOffset: V
                  }), s.plotBoxMean(c, {
                    pos: m,
                    val: C
                  }, _, {
                    bPos: S,
                    bdPos: B,
                    bPosPxOffset: V
                  });
                  var U;
                  !_.box.visible && _.meanline.visible && (U = P.identity);
                  var H = c.selectAll("path.meanline").data(U || []);
                  H.enter().append("path").attr("class", "meanline").style("fill", "none").style("vector-effect", a ? "none" : "non-scaling-stroke"), H.exit().remove(), H.each(function(F) {
                    var G = C.c2p(F.mean, !0), q = A.getPositionOnKdePath(F, _, G);
                    b.select(this).attr("d", _.orientation === "h" ? "M" + G + "," + q[0] + "V" + q[1] : "M" + q[0] + "," + G + "H" + q[1]);
                  }), s.plotPoints(c, {
                    x: o,
                    y
                  }, _, f);
                });
              };
            }
          ),
          /***/
          25117: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(78766), n = e(9408).stylePoints;
              Y.exports = function(T) {
                var A = b.select(T).selectAll("g.trace.violins");
                A.style("opacity", function(p) {
                  return p[0].trace.opacity;
                }), A.each(function(p) {
                  var u = p[0].trace, t = b.select(this), r = u.box || {}, i = r.line || {}, a = u.meanline || {}, l = a.width;
                  t.selectAll("path.violin").style("stroke-width", u.line.width + "px").call(P.stroke, u.line.color).call(P.fill, u.fillcolor), t.selectAll("path.box").style("stroke-width", i.width + "px").call(P.stroke, i.color).call(P.fill, r.fillcolor);
                  var o = {
                    "stroke-width": l + "px",
                    "stroke-dasharray": 2 * l + "px," + l + "px"
                  };
                  t.selectAll("path.mean").style(o).call(P.stroke, a.color), t.selectAll("path.meanline").style(o).call(P.stroke, a.color), n(t, u, T);
                });
              };
            }
          ),
          /***/
          51526: (
            /***/
            function(Y, K, e) {
              var b = e(87163), P = e(70252), n = e(16131), s = e(9829), T = e(93049).extendFlat, A = e(13582).overrideAll, p = Y.exports = A(T({
                x: P.x,
                y: P.y,
                z: P.z,
                value: P.value,
                isomin: P.isomin,
                isomax: P.isomax,
                surface: P.surface,
                spaceframe: {
                  show: {
                    valType: "boolean",
                    dflt: !1
                  },
                  fill: {
                    valType: "number",
                    min: 0,
                    max: 1,
                    dflt: 1
                  }
                },
                slices: P.slices,
                caps: P.caps,
                text: P.text,
                hovertext: P.hovertext,
                xhoverformat: P.xhoverformat,
                yhoverformat: P.yhoverformat,
                zhoverformat: P.zhoverformat,
                valuehoverformat: P.valuehoverformat,
                hovertemplate: P.hovertemplate
              }, b("", {
                colorAttr: "`value`",
                showScaleDflt: !0,
                editTypeOverride: "calc"
              }), {
                colorbar: P.colorbar,
                opacity: P.opacity,
                opacityscale: n.opacityscale,
                lightposition: P.lightposition,
                lighting: P.lighting,
                flatshading: P.flatshading,
                contour: P.contour,
                hoverinfo: T({}, s.hoverinfo),
                showlegend: T({}, s.showlegend, {
                  dflt: !1
                })
              }), "calc", "nested");
              p.x.editType = p.y.editType = p.z.editType = p.value.editType = "calc+clearAxisTypes", p.transforms = void 0;
            }
          ),
          /***/
          96496: (
            /***/
            function(Y, K, e) {
              var b = e(99098).gl_mesh3d, P = e(46998).parseColorScale, n = e(34809).isArrayOrTypedArray, s = e(55010), T = e(88856).extractOpts, A = e(88239), p = e(91370).findNearestOnAxis, u = e(91370).generateIsoMeshes;
              function t(a, l, o) {
                this.scene = a, this.uid = o, this.mesh = l, this.name = "", this.data = null, this.showContour = !1;
              }
              var r = t.prototype;
              r.handlePick = function(a) {
                if (a.object === this.mesh) {
                  var l = a.data.index, o = this.data._meshX[l], y = this.data._meshY[l], g = this.data._meshZ[l], x = this.data._Ys.length, c = this.data._Zs.length, v = p(o, this.data._Xs).id, f = p(y, this.data._Ys).id, _ = p(g, this.data._Zs).id, S = a.index = _ + c * f + c * x * v;
                  a.traceCoordinate = [this.data._meshX[S], this.data._meshY[S], this.data._meshZ[S], this.data._value[S]];
                  var M = this.data.hovertext || this.data.text;
                  return n(M) && M[S] !== void 0 ? a.textLabel = M[S] : M && (a.textLabel = M), !0;
                }
              }, r.update = function(a) {
                var l = this.scene, o = l.fullSceneLayout;
                this.data = u(a);
                function y(f, _, S, M) {
                  return _.map(function(C) {
                    return f.d2l(C, 0, M) * S;
                  });
                }
                var g = A(y(o.xaxis, a._meshX, l.dataScale[0], a.xcalendar), y(o.yaxis, a._meshY, l.dataScale[1], a.ycalendar), y(o.zaxis, a._meshZ, l.dataScale[2], a.zcalendar)), x = A(a._meshI, a._meshJ, a._meshK), c = {
                  positions: g,
                  cells: x,
                  lightPosition: [a.lightposition.x, a.lightposition.y, a.lightposition.z],
                  ambient: a.lighting.ambient,
                  diffuse: a.lighting.diffuse,
                  specular: a.lighting.specular,
                  roughness: a.lighting.roughness,
                  fresnel: a.lighting.fresnel,
                  vertexNormalsEpsilon: a.lighting.vertexnormalsepsilon,
                  faceNormalsEpsilon: a.lighting.facenormalsepsilon,
                  opacity: a.opacity,
                  opacityscale: a.opacityscale,
                  contourEnable: a.contour.show,
                  contourColor: s(a.contour.color).slice(0, 3),
                  contourWidth: a.contour.width,
                  useFacetNormals: a.flatshading
                }, v = T(a);
                c.vertexIntensity = a._meshIntensity, c.vertexIntensityBounds = [v.min, v.max], c.colormap = P(a), this.mesh.update(c);
              }, r.dispose = function() {
                this.scene.glplot.remove(this.mesh), this.mesh.dispose();
              };
              function i(a, l) {
                var o = a.glplot.gl, y = b({
                  gl: o
                }), g = new t(a, y, l.uid);
                return y._trace = g, g.update(l), a.glplot.add(y), g;
              }
              Y.exports = i;
            }
          ),
          /***/
          22385: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(51526), n = e(44731).supplyIsoDefaults, s = e(65444).opacityscaleDefaults;
              Y.exports = function(A, p, u, t) {
                function r(i, a) {
                  return b.coerce(A, p, P, i, a);
                }
                n(A, p, u, t, r), s(A, p, t, r);
              };
            }
          ),
          /***/
          75703: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(51526),
                supplyDefaults: e(22385),
                calc: e(58988),
                colorbar: {
                  min: "cmin",
                  max: "cmax"
                },
                plot: e(96496),
                moduleType: "trace",
                name: "volume",
                basePlotModule: e(2487),
                categories: ["gl3d", "showLegend"],
                meta: {}
              };
            }
          ),
          /***/
          37832: (
            /***/
            function(Y, K, e) {
              var b = e(81481), P = e(36640).line, n = e(9829), s = e(80712).axisHoverFormat, T = e(3208).rb, A = e(3208).ay, p = e(82508), u = e(93049).extendFlat, t = e(78766);
              function r(i) {
                return {
                  marker: {
                    color: u({}, b.marker.color, {
                      arrayOk: !1,
                      editType: "style"
                    }),
                    line: {
                      color: u({}, b.marker.line.color, {
                        arrayOk: !1,
                        editType: "style"
                      }),
                      width: u({}, b.marker.line.width, {
                        arrayOk: !1,
                        editType: "style"
                      }),
                      editType: "style"
                    },
                    editType: "style"
                  },
                  editType: "style"
                };
              }
              Y.exports = {
                measure: {
                  valType: "data_array",
                  dflt: [],
                  editType: "calc"
                },
                base: {
                  valType: "number",
                  dflt: null,
                  arrayOk: !1,
                  editType: "calc"
                },
                x: b.x,
                x0: b.x0,
                dx: b.dx,
                y: b.y,
                y0: b.y0,
                dy: b.dy,
                xperiod: b.xperiod,
                yperiod: b.yperiod,
                xperiod0: b.xperiod0,
                yperiod0: b.yperiod0,
                xperiodalignment: b.xperiodalignment,
                yperiodalignment: b.yperiodalignment,
                xhoverformat: s("x"),
                yhoverformat: s("y"),
                hovertext: b.hovertext,
                hovertemplate: T({}, {
                  keys: p.eventDataKeys
                }),
                hoverinfo: u({}, n.hoverinfo, {
                  flags: ["name", "x", "y", "text", "initial", "delta", "final"]
                }),
                textinfo: {
                  valType: "flaglist",
                  flags: ["label", "text", "initial", "delta", "final"],
                  extras: ["none"],
                  editType: "plot",
                  arrayOk: !1
                },
                // TODO: incorporate `label` and `value` in the eventData
                texttemplate: A({
                  editType: "plot"
                }, {
                  keys: p.eventDataKeys.concat(["label"])
                }),
                text: b.text,
                textposition: b.textposition,
                insidetextanchor: b.insidetextanchor,
                textangle: b.textangle,
                textfont: b.textfont,
                insidetextfont: b.insidetextfont,
                outsidetextfont: b.outsidetextfont,
                constraintext: b.constraintext,
                cliponaxis: b.cliponaxis,
                orientation: b.orientation,
                offset: b.offset,
                width: b.width,
                increasing: r(),
                decreasing: r(),
                totals: r(),
                connector: {
                  line: {
                    color: u({}, P.color, {
                      dflt: t.defaultLine
                    }),
                    width: u({}, P.width, {
                      editType: "plot"
                      // i.e. to adjust bars is mode: 'between'. See https://github.com/plotly/plotly.js/issues/3787
                    }),
                    dash: P.dash,
                    editType: "plot"
                  },
                  mode: {
                    valType: "enumerated",
                    values: ["spanning", "between"],
                    dflt: "between",
                    editType: "plot"
                  },
                  visible: {
                    valType: "boolean",
                    dflt: !0,
                    editType: "plot"
                  },
                  editType: "plot"
                },
                offsetgroup: b.offsetgroup,
                alignmentgroup: b.alignmentgroup,
                zorder: b.zorder
              };
            }
          ),
          /***/
          15e3: (
            /***/
            function(Y, K, e) {
              var b = e(29714), P = e(40528), n = e(34809).mergeArray, s = e(48861), T = e(63821).BADNUM;
              function A(u) {
                return u === "a" || u === "absolute";
              }
              function p(u) {
                return u === "t" || u === "total";
              }
              Y.exports = function(t, r) {
                var i = b.getFromId(t, r.xaxis || "x"), a = b.getFromId(t, r.yaxis || "y"), l, o, y, g, x, c;
                r.orientation === "h" ? (l = i.makeCalcdata(r, "x"), y = a.makeCalcdata(r, "y"), g = P(r, a, "y", y), x = !!r.yperiodalignment, c = "y") : (l = a.makeCalcdata(r, "y"), y = i.makeCalcdata(r, "x"), g = P(r, i, "x", y), x = !!r.xperiodalignment, c = "x"), o = g.vals;
                for (var v = Math.min(o.length, l.length), f = new Array(v), _ = 0, S, M = !1, C = 0; C < v; C++) {
                  var m = l[C] || 0, L = !1;
                  (l[C] !== T || p(r.measure[C]) || A(r.measure[C])) && C + 1 < v && (l[C + 1] !== T || p(r.measure[C + 1]) || A(r.measure[C + 1])) && (L = !0);
                  var d = f[C] = {
                    i: C,
                    p: o[C],
                    s: m,
                    rawS: m,
                    cNext: L
                  };
                  A(r.measure[C]) ? (_ = d.s, d.isSum = !0, d.dir = "totals", d.s = _) : p(r.measure[C]) ? (d.isSum = !0, d.dir = "totals", d.s = _) : (d.isSum = !1, d.dir = d.rawS < 0 ? "decreasing" : "increasing", S = d.s, d.s = _ + S, _ += S), d.dir === "totals" && (M = !0), x && (f[C].orig_p = y[C], f[C][c + "End"] = g.ends[C], f[C][c + "Start"] = g.starts[C]), r.ids && (d.id = String(r.ids[C])), d.v = (r.base || 0) + _;
                }
                return f.length && (f[0].hasTotals = M), n(r.text, f, "tx"), n(r.hovertext, f, "htx"), s(f, r), f;
              };
            }
          ),
          /***/
          82508: (
            /***/
            function(Y) {
              Y.exports = {
                eventDataKeys: ["initial", "delta", "final"]
              };
            }
          ),
          /***/
          9963: (
            /***/
            function(Y, K, e) {
              var b = e(24782).setGroupPositions;
              Y.exports = function(n, s) {
                var T = n._fullLayout, A = n._fullData, p = n.calcdata, u = s.xaxis, t = s.yaxis, r = [], i = [], a = [], l, o;
                for (o = 0; o < A.length; o++) {
                  var y = A[o];
                  y.visible === !0 && y.xaxis === u._id && y.yaxis === t._id && y.type === "waterfall" && (l = p[o], y.orientation === "h" ? a.push(l) : i.push(l), r.push(l));
                }
                var g = {
                  mode: T.waterfallmode,
                  norm: T.waterfallnorm,
                  gap: T.waterfallgap,
                  groupgap: T.waterfallgroupgap
                };
                for (b(n, u, t, i, g), b(n, t, u, a, g), o = 0; o < r.length; o++) {
                  l = r[o];
                  for (var x = 0; x < l.length; x++) {
                    var c = l[x];
                    c.isSum === !1 && (c.s0 += x === 0 ? 0 : l[x - 1].s), x + 1 < l.length && (l[x].nextP0 = l[x + 1].p0, l[x].nextS0 = l[x + 1].s0);
                  }
                }
              };
            }
          ),
          /***/
          67199: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(36301), n = e(17550).handleText, s = e(99867), T = e(99669), A = e(37832), p = e(78766), u = e(20909), t = u.INCREASING.COLOR, r = u.DECREASING.COLOR, i = "#4499FF";
              function a(y, g, x) {
                y(g + ".marker.color", x), y(g + ".marker.line.color", p.defaultLine), y(g + ".marker.line.width");
              }
              function l(y, g, x, c) {
                function v(C, m) {
                  return b.coerce(y, g, A, C, m);
                }
                var f = s(y, g, c, v);
                if (!f) {
                  g.visible = !1;
                  return;
                }
                T(y, g, c, v), v("xhoverformat"), v("yhoverformat"), v("measure"), v("orientation", g.x && !g.y ? "h" : "v"), v("base"), v("offset"), v("width"), v("text"), v("hovertext"), v("hovertemplate");
                var _ = v("textposition");
                n(y, g, c, v, _, {
                  moduleHasSelected: !1,
                  moduleHasUnselected: !1,
                  moduleHasConstrain: !0,
                  moduleHasCliponaxis: !0,
                  moduleHasTextangle: !0,
                  moduleHasInsideanchor: !0
                }), g.textposition !== "none" && (v("texttemplate"), g.texttemplate || v("textinfo")), a(v, "increasing", t), a(v, "decreasing", r), a(v, "totals", i);
                var S = v("connector.visible");
                if (S) {
                  v("connector.mode");
                  var M = v("connector.line.width");
                  M && (v("connector.line.color"), v("connector.line.dash"));
                }
                v("zorder");
              }
              function o(y, g) {
                var x, c;
                function v(_) {
                  return b.coerce(c._input, c, A, _);
                }
                if (g.waterfallmode === "group")
                  for (var f = 0; f < y.length; f++)
                    c = y[f], x = c._input, P(x, c, g, v);
              }
              Y.exports = {
                supplyDefaults: l,
                crossTraceDefaults: o
              };
            }
          ),
          /***/
          64932: (
            /***/
            function(Y) {
              Y.exports = function(e, b) {
                return e.x = "xVal" in b ? b.xVal : b.x, e.y = "yVal" in b ? b.yVal : b.y, "initial" in b && (e.initial = b.initial), "delta" in b && (e.delta = b.delta), "final" in b && (e.final = b.final), b.xa && (e.xaxis = b.xa), b.ya && (e.yaxis = b.ya), e;
              };
            }
          ),
          /***/
          40943: (
            /***/
            function(Y, K, e) {
              var b = e(29714).hoverLabelText, P = e(78766).opacity, n = e(91664).hoverOnBars, s = e(20909), T = {
                increasing: s.INCREASING.SYMBOL,
                decreasing: s.DECREASING.SYMBOL
              };
              Y.exports = function(u, t, r, i, a) {
                var l = n(u, t, r, i, a);
                if (!l) return;
                var o = l.cd, y = o[0].trace, g = y.orientation === "h", x = g ? "x" : "y", c = g ? u.xa : u.ya;
                function v(E) {
                  return b(c, E, y[x + "hoverformat"]);
                }
                var f = l.index, _ = o[f], S = _.isSum ? _.b + _.s : _.rawS;
                l.initial = _.b + _.s - S, l.delta = S, l.final = l.initial + l.delta;
                var M = v(Math.abs(l.delta));
                l.deltaLabel = S < 0 ? "(" + M + ")" : M, l.finalLabel = v(l.final), l.initialLabel = v(l.initial);
                var C = _.hi || y.hoverinfo, m = [];
                if (C && C !== "none" && C !== "skip") {
                  var L = C === "all", d = C.split("+"), h = function(E) {
                    return L || d.indexOf(E) !== -1;
                  };
                  _.isSum || (h("final") && (g ? !h("x") : !h("y")) && m.push(l.finalLabel), h("delta") && (S < 0 ? m.push(l.deltaLabel + " " + T.decreasing) : m.push(l.deltaLabel + " " + T.increasing)), h("initial") && m.push("Initial: " + l.initialLabel));
                }
                return m.length && (l.extraText = m.join("<br>")), l.color = A(y, _), [l];
              };
              function A(p, u) {
                var t = p[u.dir].marker, r = t.color, i = t.line.color, a = t.line.width;
                if (P(r)) return r;
                if (P(i) && a) return i;
              }
            }
          ),
          /***/
          38261: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                attributes: e(37832),
                layoutAttributes: e(579),
                supplyDefaults: e(67199).supplyDefaults,
                crossTraceDefaults: e(67199).crossTraceDefaults,
                supplyLayoutDefaults: e(71492),
                calc: e(15e3),
                crossTraceCalc: e(9963),
                plot: e(71130),
                style: e(57256).style,
                hoverPoints: e(40943),
                eventData: e(64932),
                selectPoints: e(88384),
                moduleType: "trace",
                name: "waterfall",
                basePlotModule: e(37703),
                categories: ["bar-like", "cartesian", "svg", "oriented", "showLegend", "zoomScale"],
                meta: {}
              };
            }
          ),
          /***/
          579: (
            /***/
            function(Y) {
              Y.exports = {
                waterfallmode: {
                  valType: "enumerated",
                  values: ["group", "overlay"],
                  dflt: "group",
                  editType: "calc"
                },
                waterfallgap: {
                  valType: "number",
                  min: 0,
                  max: 1,
                  editType: "calc"
                },
                waterfallgroupgap: {
                  valType: "number",
                  min: 0,
                  max: 1,
                  dflt: 0,
                  editType: "calc"
                }
              };
            }
          ),
          /***/
          71492: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(579);
              Y.exports = function(n, s, T) {
                var A = !1;
                function p(r, i) {
                  return b.coerce(n, s, P, r, i);
                }
                for (var u = 0; u < T.length; u++) {
                  var t = T[u];
                  if (t.visible && t.type === "waterfall") {
                    A = !0;
                    break;
                  }
                }
                A && (p("waterfallmode"), p("waterfallgap", 0.2), p("waterfallgroupgap"));
              };
            }
          ),
          /***/
          71130: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(34809), n = e(62203), s = e(63821).BADNUM, T = e(32995), A = e(84102).clearMinTextSize;
              Y.exports = function(r, i, a, l) {
                var o = r._fullLayout;
                A("waterfall", o), T.plot(r, i, a, l, {
                  mode: o.waterfallmode,
                  norm: o.waterfallmode,
                  gap: o.waterfallgap,
                  groupgap: o.waterfallgroupgap
                }), p(r, i, a, l);
              };
              function p(t, r, i, a) {
                var l = r.xaxis, o = r.yaxis;
                P.makeTraceGroups(a, i, "trace bars").each(function(y) {
                  var g = b.select(this), x = y[0].trace, c = P.ensureSingle(g, "g", "lines");
                  if (!x.connector || !x.connector.visible) {
                    c.remove();
                    return;
                  }
                  var v = x.orientation === "h", f = x.connector.mode, _ = c.selectAll("g.line").data(P.identity);
                  _.enter().append("g").classed("line", !0), _.exit().remove();
                  var S = _.size();
                  _.each(function(M, C) {
                    if (!(C !== S - 1 && !M.cNext)) {
                      var m = u(M, l, o, v), L = m[0], d = m[1], h = "";
                      L[0] !== s && d[0] !== s && L[1] !== s && d[1] !== s && (f === "spanning" && !M.isSum && C > 0 && (v ? h += "M" + L[0] + "," + d[1] + "V" + d[0] : h += "M" + L[1] + "," + d[0] + "H" + L[0]), f !== "between" && (M.isSum || C < S - 1) && (v ? h += "M" + L[1] + "," + d[0] + "V" + d[1] : h += "M" + L[0] + "," + d[1] + "H" + L[1]), L[2] !== s && d[2] !== s && (v ? h += "M" + L[1] + "," + d[1] + "V" + d[2] : h += "M" + L[1] + "," + d[1] + "H" + L[2])), h === "" && (h = "M0,0Z"), P.ensureSingle(b.select(this), "path").attr("d", h).call(n.setClipUrl, r.layerClipId, t);
                    }
                  });
                });
              }
              function u(t, r, i, a) {
                var l = [], o = [], y = a ? r : i, g = a ? i : r;
                return l[0] = y.c2p(t.s0, !0), o[0] = g.c2p(t.p0, !0), l[1] = y.c2p(t.s1, !0), o[1] = g.c2p(t.p1, !0), l[2] = y.c2p(t.nextS0, !0), o[2] = g.c2p(t.nextP0, !0), a ? [l, o] : [o, l];
              }
            }
          ),
          /***/
          57256: (
            /***/
            function(Y, K, e) {
              var b = e(45568), P = e(62203), n = e(78766), s = e(20438).DESELECTDIM, T = e(6851), A = e(84102).resizeText, p = T.styleTextPoints;
              function u(t, r, i) {
                var a = i || b.select(t).selectAll('g[class^="waterfalllayer"]').selectAll("g.trace");
                A(t, a, "waterfall"), a.style("opacity", function(l) {
                  return l[0].trace.opacity;
                }), a.each(function(l) {
                  var o = b.select(this), y = l[0].trace;
                  o.selectAll(".point > path").each(function(g) {
                    if (!g.isBlank) {
                      var x = y[g.dir].marker;
                      b.select(this).call(n.fill, x.color).call(n.stroke, x.line.color).call(P.dashLine, x.line.dash, x.line.width).style("opacity", y.selectedpoints && !g.selected ? s : 1);
                    }
                  }), p(o, y, t), o.selectAll(".lines").each(function() {
                    var g = y.connector.line;
                    P.lineGroupStyle(b.select(this).selectAll("path"), g.width, g.color, g.dash);
                  });
                });
              }
              Y.exports = {
                style: u
              };
            }
          ),
          /***/
          47908: (
            /***/
            function(Y, K, e) {
              var b = e(29714), P = e(34809), n = e(57297), s = e(5086).z, T = e(63821).BADNUM;
              K.moduleType = "transform", K.name = "aggregate";
              var A = K.attributes = {
                enabled: {
                  valType: "boolean",
                  dflt: !0,
                  editType: "calc"
                },
                groups: {
                  // TODO: groupby should support string or array grouping this way too
                  // currently groupby only allows a grouping array
                  valType: "string",
                  strict: !0,
                  noBlank: !0,
                  arrayOk: !0,
                  dflt: "x",
                  editType: "calc"
                },
                aggregations: {
                  _isLinkedToArray: "aggregation",
                  target: {
                    valType: "string",
                    editType: "calc"
                  },
                  func: {
                    valType: "enumerated",
                    values: ["count", "sum", "avg", "median", "mode", "rms", "stddev", "min", "max", "first", "last", "change", "range"],
                    dflt: "first",
                    editType: "calc"
                  },
                  funcmode: {
                    valType: "enumerated",
                    values: ["sample", "population"],
                    dflt: "sample",
                    editType: "calc"
                  },
                  enabled: {
                    valType: "boolean",
                    dflt: !0,
                    editType: "calc"
                  },
                  editType: "calc"
                },
                editType: "calc"
              }, p = A.aggregations;
              K.supplyDefaults = function(l, o) {
                var y = {}, g;
                function x(E, w) {
                  return P.coerce(l, y, A, E, w);
                }
                var c = x("enabled");
                if (!c) return y;
                var v = n.findArrayAttributes(o), f = {};
                for (g = 0; g < v.length; g++) f[v[g]] = 1;
                var _ = x("groups");
                if (!Array.isArray(_)) {
                  if (!f[_])
                    return y.enabled = !1, y;
                  f[_] = 0;
                }
                var S = l.aggregations || [], M = y.aggregations = new Array(S.length), C;
                function m(E, w) {
                  return P.coerce(S[g], C, p, E, w);
                }
                for (g = 0; g < S.length; g++) {
                  C = {
                    _index: g
                  };
                  var L = m("target"), d = m("func"), h = m("enabled");
                  h && L && (f[L] || d === "count" && f[L] === void 0) ? (d === "stddev" && m("funcmode"), f[L] = 0, M[g] = C) : M[g] = {
                    enabled: !1,
                    _index: g
                  };
                }
                for (g = 0; g < v.length; g++)
                  f[v[g]] && M.push({
                    target: v[g],
                    func: p.func.dflt,
                    enabled: !0,
                    _index: -1
                  });
                return y;
              }, K.calcTransform = function(l, o, y) {
                if (y.enabled) {
                  var g = y.groups, x = P.getTargetArray(o, {
                    target: g
                  });
                  if (x) {
                    var c, v, f, _, S = {}, M = {}, C = [], m = s(o.transforms, y), L = x.length;
                    for (o._length && (L = Math.min(L, o._length)), c = 0; c < L; c++)
                      v = x[c], f = S[v], f === void 0 ? (S[v] = C.length, _ = [c], C.push(_), M[S[v]] = m(c)) : (C[f].push(c), M[S[v]] = (M[S[v]] || []).concat(m(c)));
                    y._indexToPoints = M;
                    var d = y.aggregations;
                    for (c = 0; c < d.length; c++)
                      u(l, o, C, d[c]);
                    typeof g == "string" && u(l, o, C, {
                      target: g,
                      func: "first",
                      enabled: !0
                    }), o._length = C.length;
                  }
                }
              };
              function u(l, o, y, g) {
                if (g.enabled) {
                  for (var x = g.target, c = P.nestedProperty(o, x), v = c.get(), f = b.getDataConversions(l, o, x, v), _ = t(g, f), S = new Array(y.length), M = 0; M < y.length; M++)
                    S[M] = _(v, y[M]);
                  c.set(S), g.func === "count" && P.pushUnique(o._arrayAttrs, x);
                }
              }
              function t(l, o) {
                var y = l.func, g = o.d2c, x = o.c2d;
                switch (y) {
                  case "count":
                    return r;
                  case "first":
                    return i;
                  case "last":
                    return a;
                  case "sum":
                    return function(c, v) {
                      for (var f = 0, _ = 0; _ < v.length; _++) {
                        var S = g(c[v[_]]);
                        S !== T && (f += S);
                      }
                      return x(f);
                    };
                  case "avg":
                    return function(c, v) {
                      for (var f = 0, _ = 0, S = 0; S < v.length; S++) {
                        var M = g(c[v[S]]);
                        M !== T && (f += M, _++);
                      }
                      return _ ? x(f / _) : T;
                    };
                  case "min":
                    return function(c, v) {
                      for (var f = 1 / 0, _ = 0; _ < v.length; _++) {
                        var S = g(c[v[_]]);
                        S !== T && (f = Math.min(f, S));
                      }
                      return f === 1 / 0 ? T : x(f);
                    };
                  case "max":
                    return function(c, v) {
                      for (var f = -1 / 0, _ = 0; _ < v.length; _++) {
                        var S = g(c[v[_]]);
                        S !== T && (f = Math.max(f, S));
                      }
                      return f === -1 / 0 ? T : x(f);
                    };
                  case "range":
                    return function(c, v) {
                      for (var f = 1 / 0, _ = -1 / 0, S = 0; S < v.length; S++) {
                        var M = g(c[v[S]]);
                        M !== T && (f = Math.min(f, M), _ = Math.max(_, M));
                      }
                      return _ === -1 / 0 || f === 1 / 0 ? T : x(_ - f);
                    };
                  case "change":
                    return function(c, v) {
                      var f = g(c[v[0]]), _ = g(c[v[v.length - 1]]);
                      return f === T || _ === T ? T : x(_ - f);
                    };
                  case "median":
                    return function(c, v) {
                      for (var f = [], _ = 0; _ < v.length; _++) {
                        var S = g(c[v[_]]);
                        S !== T && f.push(S);
                      }
                      if (!f.length) return T;
                      f.sort(P.sorterAsc);
                      var M = (f.length - 1) / 2;
                      return x((f[Math.floor(M)] + f[Math.ceil(M)]) / 2);
                    };
                  case "mode":
                    return function(c, v) {
                      for (var f = {}, _ = 0, S = T, M = 0; M < v.length; M++) {
                        var C = g(c[v[M]]);
                        if (C !== T) {
                          var m = f[C] = (f[C] || 0) + 1;
                          m > _ && (_ = m, S = C);
                        }
                      }
                      return _ ? x(S) : T;
                    };
                  case "rms":
                    return function(c, v) {
                      for (var f = 0, _ = 0, S = 0; S < v.length; S++) {
                        var M = g(c[v[S]]);
                        M !== T && (f += M * M, _++);
                      }
                      return _ ? x(Math.sqrt(f / _)) : T;
                    };
                  case "stddev":
                    return function(c, v) {
                      var f = 0, _ = 0, S = 1, M = T, C;
                      for (C = 0; C < v.length && M === T; C++)
                        M = g(c[v[C]]);
                      if (M === T) return T;
                      for (; C < v.length; C++) {
                        var m = g(c[v[C]]);
                        if (m !== T) {
                          var L = m - M;
                          f += L, _ += L * L, S++;
                        }
                      }
                      var d = l.funcmode === "sample" ? S - 1 : S;
                      return d ? Math.sqrt((_ - f * f / S) / d) : 0;
                    };
                }
              }
              function r(l, o) {
                return o.length;
              }
              function i(l, o) {
                return l[o[0]];
              }
              function a(l, o) {
                return l[o[o.length - 1]];
              }
            }
          ),
          /***/
          42849: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(33626), n = e(29714), s = e(5086).z, T = e(20726), A = T.COMPARISON_OPS, p = T.INTERVAL_OPS, u = T.SET_OPS;
              K.moduleType = "transform", K.name = "filter", K.attributes = {
                enabled: {
                  valType: "boolean",
                  dflt: !0,
                  editType: "calc"
                },
                target: {
                  valType: "string",
                  strict: !0,
                  noBlank: !0,
                  arrayOk: !0,
                  dflt: "x",
                  editType: "calc"
                },
                operation: {
                  valType: "enumerated",
                  values: [].concat(A).concat(p).concat(u),
                  dflt: "=",
                  editType: "calc"
                },
                value: {
                  valType: "any",
                  dflt: 0,
                  editType: "calc"
                },
                preservegaps: {
                  valType: "boolean",
                  dflt: !1,
                  editType: "calc"
                },
                editType: "calc"
              }, K.supplyDefaults = function(r) {
                var i = {};
                function a(g, x) {
                  return b.coerce(r, i, K.attributes, g, x);
                }
                var l = a("enabled");
                if (l) {
                  var o = a("target");
                  if (b.isArrayOrTypedArray(o) && o.length === 0)
                    return i.enabled = !1, i;
                  a("preservegaps"), a("operation"), a("value");
                  var y = P.getComponentMethod("calendars", "handleDefaults");
                  y(r, i, "valuecalendar", null), y(r, i, "targetcalendar", null);
                }
                return i;
              }, K.calcTransform = function(r, i, a) {
                if (!a.enabled) return;
                var l = b.getTargetArray(i, a);
                if (!l) return;
                var o = a.target, y = l.length;
                i._length && (y = Math.min(y, i._length));
                var g = a.targetcalendar, x = i._arrayAttrs, c = a.preservegaps;
                if (typeof o == "string") {
                  var v = b.nestedProperty(i, o + "calendar").get();
                  v && (g = v);
                }
                var f = n.getDataToCoordFunc(r, i, o, l), _ = t(a, f, g), S = {}, M = {}, C = 0;
                function m(z, O) {
                  for (var B = 0; B < x.length; B++) {
                    var V = b.nestedProperty(i, x[B]);
                    z(V, O);
                  }
                }
                var L, d;
                c ? (L = function(z) {
                  S[z.astr] = b.extendDeep([], z.get()), z.set(new Array(y));
                }, d = function(z, O) {
                  var B = S[z.astr][O];
                  z.get()[O] = B;
                }) : (L = function(z) {
                  S[z.astr] = b.extendDeep([], z.get()), z.set([]);
                }, d = function(z, O) {
                  var B = S[z.astr][O];
                  z.get().push(B);
                }), m(L);
                for (var h = s(i.transforms, a), E = 0; E < y; E++) {
                  var w = _(l[E]);
                  w ? (m(d, E), M[C++] = h(E)) : c && C++;
                }
                a._indexToPoints = M, i._length = C;
              };
              function t(r, i, a) {
                var l = r.operation, o = r.value, y = b.isArrayOrTypedArray(o);
                function g(f) {
                  return f.indexOf(l) !== -1;
                }
                var x = function(f) {
                  return i(f, 0, r.valuecalendar);
                }, c = function(f) {
                  return i(f, 0, a);
                }, v;
                switch (g(A) ? v = x(y ? o[0] : o) : g(p) ? v = y ? [x(o[0]), x(o[1])] : [x(o), x(o)] : g(u) && (v = y ? o.map(x) : [x(o)]), l) {
                  case "=":
                    return function(f) {
                      return c(f) === v;
                    };
                  case "!=":
                    return function(f) {
                      return c(f) !== v;
                    };
                  case "<":
                    return function(f) {
                      return c(f) < v;
                    };
                  case "<=":
                    return function(f) {
                      return c(f) <= v;
                    };
                  case ">":
                    return function(f) {
                      return c(f) > v;
                    };
                  case ">=":
                    return function(f) {
                      return c(f) >= v;
                    };
                  case "[]":
                    return function(f) {
                      var _ = c(f);
                      return _ >= v[0] && _ <= v[1];
                    };
                  case "()":
                    return function(f) {
                      var _ = c(f);
                      return _ > v[0] && _ < v[1];
                    };
                  case "[)":
                    return function(f) {
                      var _ = c(f);
                      return _ >= v[0] && _ < v[1];
                    };
                  case "(]":
                    return function(f) {
                      var _ = c(f);
                      return _ > v[0] && _ <= v[1];
                    };
                  case "][":
                    return function(f) {
                      var _ = c(f);
                      return _ <= v[0] || _ >= v[1];
                    };
                  case ")(":
                    return function(f) {
                      var _ = c(f);
                      return _ < v[0] || _ > v[1];
                    };
                  case "](":
                    return function(f) {
                      var _ = c(f);
                      return _ <= v[0] || _ > v[1];
                    };
                  case ")[":
                    return function(f) {
                      var _ = c(f);
                      return _ < v[0] || _ >= v[1];
                    };
                  case "{}":
                    return function(f) {
                      return v.indexOf(c(f)) !== -1;
                    };
                  case "}{":
                    return function(f) {
                      return v.indexOf(c(f)) === -1;
                    };
                }
              }
            }
          ),
          /***/
          50453: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(57297), n = e(44122), s = e(5086).z;
              K.moduleType = "transform", K.name = "groupby", K.attributes = {
                enabled: {
                  valType: "boolean",
                  dflt: !0,
                  editType: "calc"
                },
                groups: {
                  valType: "data_array",
                  dflt: [],
                  editType: "calc"
                },
                nameformat: {
                  valType: "string",
                  editType: "calc"
                },
                styles: {
                  _isLinkedToArray: "style",
                  target: {
                    valType: "string",
                    editType: "calc"
                  },
                  value: {
                    valType: "any",
                    dflt: {},
                    editType: "calc",
                    _compareAsJSON: !0
                  },
                  editType: "calc"
                },
                editType: "calc"
              }, K.supplyDefaults = function(A, p, u) {
                var t, r = {};
                function i(x, c) {
                  return b.coerce(A, r, K.attributes, x, c);
                }
                var a = i("enabled");
                if (!a) return r;
                i("groups"), i("nameformat", u._dataLength > 1 ? "%{group} (%{trace})" : "%{group}");
                var l = A.styles, o = r.styles = [];
                if (l)
                  for (t = 0; t < l.length; t++) {
                    var y = o[t] = {};
                    b.coerce(l[t], o[t], K.attributes.styles, "target");
                    var g = b.coerce(l[t], o[t], K.attributes.styles, "value");
                    b.isPlainObject(g) ? y.value = b.extendDeep({}, g) : g && delete y.value;
                  }
                return r;
              }, K.transform = function(A, p) {
                var u, t, r, i = [];
                for (t = 0; t < A.length; t++)
                  for (u = T(A[t], p), r = 0; r < u.length; r++)
                    i.push(u[r]);
                return i;
              };
              function T(A, p) {
                var u, t, r, i, a, l, o, y, g, x, c = p.transform, v = p.transformIndex, f = A.transforms[v].groups, _ = s(A.transforms, c);
                if (!b.isArrayOrTypedArray(f) || f.length === 0)
                  return [A];
                var S = b.filterUnique(f), M = new Array(S.length), C = f.length, m = P.findArrayAttributes(A), L = c.styles || [], d = {};
                for (u = 0; u < L.length; u++)
                  d[L[u].target] = L[u].value;
                c.styles && (x = b.keyedContainer(c, "styles", "target", "value.name"));
                var h = {}, E = {};
                for (u = 0; u < S.length; u++) {
                  l = S[u], h[l] = u, E[l] = 0, o = M[u] = b.extendDeepNoArrays({}, A), o._group = l, o.transforms[v]._indexToPoints = {};
                  var w = null;
                  for (x && (w = x.get(l)), w || w === "" ? o.name = w : o.name = b.templateString(c.nameformat, {
                    trace: A.name,
                    group: l
                  }), y = o.transforms, o.transforms = [], t = 0; t < y.length; t++)
                    o.transforms[t] = b.extendDeepNoArrays({}, y[t]);
                  for (t = 0; t < m.length; t++)
                    b.nestedProperty(o, m[t]).set([]);
                }
                for (r = 0; r < m.length; r++) {
                  for (i = m[r], t = 0, g = []; t < S.length; t++)
                    g[t] = b.nestedProperty(M[t], i).get();
                  for (a = b.nestedProperty(A, i).get(), t = 0; t < C; t++)
                    g[h[f[t]]].push(a[t]);
                }
                for (t = 0; t < C; t++) {
                  o = M[h[f[t]]];
                  var z = o.transforms[v]._indexToPoints;
                  z[E[f[t]]] = _(t), E[f[t]]++;
                }
                for (u = 0; u < S.length; u++)
                  l = S[u], o = M[u], n.clearExpandedTraceDefaultColors(o), o = b.extendDeepNoArrays(o, d[l] || {});
                return M;
              }
            }
          ),
          /***/
          5086: (
            /***/
            function(Y, K) {
              K.z = function(e, b) {
                for (var P, n, s = 0; s < e.length && (P = e[s], P !== b); s++)
                  !P._indexToPoints || P.enabled === !1 || (n = P._indexToPoints);
                var T = n ? function(A) {
                  return n[A];
                } : function(A) {
                  return [A];
                };
                return T;
              };
            }
          ),
          /***/
          99855: (
            /***/
            function(Y, K, e) {
              var b = e(34809), P = e(29714), n = e(5086).z, s = e(63821).BADNUM;
              K.moduleType = "transform", K.name = "sort", K.attributes = {
                enabled: {
                  valType: "boolean",
                  dflt: !0,
                  editType: "calc"
                },
                target: {
                  valType: "string",
                  strict: !0,
                  noBlank: !0,
                  arrayOk: !0,
                  dflt: "x",
                  editType: "calc"
                },
                order: {
                  valType: "enumerated",
                  values: ["ascending", "descending"],
                  dflt: "ascending",
                  editType: "calc"
                },
                editType: "calc"
              }, K.supplyDefaults = function(p) {
                var u = {};
                function t(i, a) {
                  return b.coerce(p, u, K.attributes, i, a);
                }
                var r = t("enabled");
                return r && (t("target"), t("order")), u;
              }, K.calcTransform = function(p, u, t) {
                if (t.enabled) {
                  var r = b.getTargetArray(u, t);
                  if (r) {
                    var i = t.target, a = r.length;
                    u._length && (a = Math.min(a, u._length));
                    var l = u._arrayAttrs, o = P.getDataToCoordFunc(p, u, i, r), y = T(t, r, o, a), g = n(u.transforms, t), x = {}, c, v;
                    for (c = 0; c < l.length; c++) {
                      var f = b.nestedProperty(u, l[c]), _ = f.get(), S = new Array(a);
                      for (v = 0; v < a; v++)
                        S[v] = _[y[v]];
                      f.set(S);
                    }
                    for (v = 0; v < a; v++)
                      x[v] = g(y[v]);
                    t._indexToPoints = x, u._length = a;
                  }
                }
              };
              function T(p, u, t, r) {
                var i = new Array(r), a = new Array(r), l;
                for (l = 0; l < r; l++)
                  i[l] = {
                    v: u[l],
                    i: l
                  };
                for (i.sort(A(p, t)), l = 0; l < r; l++)
                  a[l] = i[l].i;
                return a;
              }
              function A(p, u) {
                switch (p.order) {
                  case "ascending":
                    return function(t, r) {
                      var i = u(t.v), a = u(r.v);
                      return i === s ? 1 : a === s ? -1 : i - a;
                    };
                  case "descending":
                    return function(t, r) {
                      var i = u(t.v), a = u(r.v);
                      return i === s ? 1 : a === s ? -1 : a - i;
                    };
                }
              }
            }
          ),
          /***/
          29697: (
            /***/
            function(Y, K) {
              K.version = "2.35.2";
            }
          ),
          /***/
          99098: (
            /***/
            function(Y, K, e) {
              var b = e(45708).Buffer, P = e(33282);
              (function() {
                var n = {
                  /***/
                  1964: (
                    /***/
                    function(p, u, t) {
                      p.exports = { alpha_shape: t(3502), convex_hull: t(7352), delaunay_triangulate: t(7642), gl_cone3d: t(6405), gl_error3d: t(9165), gl_heatmap2d: t(2510), gl_line3d: t(5714), gl_mesh3d: t(7201), gl_plot2d: t(1850), gl_plot3d: t(4100), gl_pointcloud2d: t(4696), gl_scatter3d: t(8418), gl_select_box: t(3161), gl_spikes2d: t(4098), gl_streamtube3d: t(7815), gl_surface3d: t(9499), ndarray: t(9618), ndarray_linear_interpolate: t(4317) };
                    }
                  ),
                  /***/
                  4793: (
                    /***/
                    function(p, u, t) {
                      /*!
                      * The buffer module from node.js, for the browser.
                      *
                      * @author   Feross Aboukhadijeh <https://feross.org>
                      * @license  MIT
                      */
                      function r(Mt, St) {
                        if (!(Mt instanceof St)) throw new TypeError("Cannot call a class as a function");
                      }
                      function i(Mt, St) {
                        for (var Lt = 0; Lt < St.length; Lt++) {
                          var te = St[Lt];
                          te.enumerable = te.enumerable || !1, te.configurable = !0, "value" in te && (te.writable = !0), Object.defineProperty(Mt, l(te.key), te);
                        }
                      }
                      function a(Mt, St, Lt) {
                        return St && i(Mt.prototype, St), Object.defineProperty(Mt, "prototype", { writable: !1 }), Mt;
                      }
                      function l(Mt) {
                        var St = o(Mt, "string");
                        return S(St) == "symbol" ? St : St + "";
                      }
                      function o(Mt, St) {
                        if (S(Mt) != "object" || !Mt) return Mt;
                        var Lt = Mt[Symbol.toPrimitive];
                        if (Lt !== void 0) {
                          var te = Lt.call(Mt, St);
                          if (S(te) != "object") return te;
                          throw new TypeError("@@toPrimitive must return a primitive value.");
                        }
                        return String(Mt);
                      }
                      function y(Mt, St, Lt) {
                        return St = v(St), g(Mt, c() ? Reflect.construct(St, [], v(Mt).constructor) : St.apply(Mt, Lt));
                      }
                      function g(Mt, St) {
                        if (St && (S(St) == "object" || typeof St == "function")) return St;
                        if (St !== void 0) throw new TypeError("Derived constructors may only return object or undefined");
                        return x(Mt);
                      }
                      function x(Mt) {
                        if (Mt === void 0) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return Mt;
                      }
                      function c() {
                        try {
                          var Mt = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
                          }));
                        } catch {
                        }
                        return (c = function() {
                          return !!Mt;
                        })();
                      }
                      function v(Mt) {
                        return v = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(St) {
                          return St.__proto__ || Object.getPrototypeOf(St);
                        }, v(Mt);
                      }
                      function f(Mt, St) {
                        if (typeof St != "function" && St !== null) throw new TypeError("Super expression must either be null or a function");
                        Mt.prototype = Object.create(St && St.prototype, { constructor: { value: Mt, writable: !0, configurable: !0 } }), Object.defineProperty(Mt, "prototype", { writable: !1 }), St && _(Mt, St);
                      }
                      function _(Mt, St) {
                        return _ = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(Lt, te) {
                          return Lt.__proto__ = te, Lt;
                        }, _(Mt, St);
                      }
                      function S(Mt) {
                        "@babel/helpers - typeof";
                        return S = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(St) {
                          return typeof St;
                        } : function(St) {
                          return St && typeof Symbol == "function" && St.constructor === Symbol && St !== Symbol.prototype ? "symbol" : typeof St;
                        }, S(Mt);
                      }
                      var M = t(7507), C = t(3778), m = typeof Symbol == "function" && typeof Symbol.for == "function" ? Symbol.for("nodejs.util.inspect.custom") : null;
                      u.hp = E, u.IS = 50;
                      var L = 2147483647;
                      E.TYPED_ARRAY_SUPPORT = d(), !E.TYPED_ARRAY_SUPPORT && typeof console < "u" && typeof console.error == "function" && console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");
                      function d() {
                        try {
                          var Mt = new Uint8Array(1), St = { foo: function() {
                            return 42;
                          } };
                          return Object.setPrototypeOf(St, Uint8Array.prototype), Object.setPrototypeOf(Mt, St), Mt.foo() === 42;
                        } catch {
                          return !1;
                        }
                      }
                      Object.defineProperty(E.prototype, "parent", { enumerable: !0, get: function() {
                        if (E.isBuffer(this))
                          return this.buffer;
                      } }), Object.defineProperty(E.prototype, "offset", { enumerable: !0, get: function() {
                        if (E.isBuffer(this))
                          return this.byteOffset;
                      } });
                      function h(Mt) {
                        if (Mt > L)
                          throw new RangeError('The value "' + Mt + '" is invalid for option "size"');
                        var St = new Uint8Array(Mt);
                        return Object.setPrototypeOf(St, E.prototype), St;
                      }
                      function E(Mt, St, Lt) {
                        if (typeof Mt == "number") {
                          if (typeof St == "string")
                            throw new TypeError('The "string" argument must be of type string. Received type number');
                          return B(Mt);
                        }
                        return w(Mt, St, Lt);
                      }
                      E.poolSize = 8192;
                      function w(Mt, St, Lt) {
                        if (typeof Mt == "string")
                          return V(Mt, St);
                        if (ArrayBuffer.isView(Mt))
                          return H(Mt);
                        if (Mt == null)
                          throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + S(Mt));
                        if (ee(Mt, ArrayBuffer) || Mt && ee(Mt.buffer, ArrayBuffer) || typeof SharedArrayBuffer < "u" && (ee(Mt, SharedArrayBuffer) || Mt && ee(Mt.buffer, SharedArrayBuffer)))
                          return F(Mt, St, Lt);
                        if (typeof Mt == "number")
                          throw new TypeError('The "value" argument must not be of type number. Received type number');
                        var te = Mt.valueOf && Mt.valueOf();
                        if (te != null && te !== Mt)
                          return E.from(te, St, Lt);
                        var fe = G(Mt);
                        if (fe) return fe;
                        if (typeof Symbol < "u" && Symbol.toPrimitive != null && typeof Mt[Symbol.toPrimitive] == "function")
                          return E.from(Mt[Symbol.toPrimitive]("string"), St, Lt);
                        throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + S(Mt));
                      }
                      E.from = function(Mt, St, Lt) {
                        return w(Mt, St, Lt);
                      }, Object.setPrototypeOf(E.prototype, Uint8Array.prototype), Object.setPrototypeOf(E, Uint8Array);
                      function z(Mt) {
                        if (typeof Mt != "number")
                          throw new TypeError('"size" argument must be of type number');
                        if (Mt < 0)
                          throw new RangeError('The value "' + Mt + '" is invalid for option "size"');
                      }
                      function O(Mt, St, Lt) {
                        return z(Mt), Mt <= 0 ? h(Mt) : St !== void 0 ? typeof Lt == "string" ? h(Mt).fill(St, Lt) : h(Mt).fill(St) : h(Mt);
                      }
                      E.alloc = function(Mt, St, Lt) {
                        return O(Mt, St, Lt);
                      };
                      function B(Mt) {
                        return z(Mt), h(Mt < 0 ? 0 : q(Mt) | 0);
                      }
                      E.allocUnsafe = function(Mt) {
                        return B(Mt);
                      }, E.allocUnsafeSlow = function(Mt) {
                        return B(Mt);
                      };
                      function V(Mt, St) {
                        if ((typeof St != "string" || St === "") && (St = "utf8"), !E.isEncoding(St))
                          throw new TypeError("Unknown encoding: " + St);
                        var Lt = rt(Mt, St) | 0, te = h(Lt), fe = te.write(Mt, St);
                        return fe !== Lt && (te = te.slice(0, fe)), te;
                      }
                      function U(Mt) {
                        for (var St = Mt.length < 0 ? 0 : q(Mt.length) | 0, Lt = h(St), te = 0; te < St; te += 1)
                          Lt[te] = Mt[te] & 255;
                        return Lt;
                      }
                      function H(Mt) {
                        if (ee(Mt, Uint8Array)) {
                          var St = new Uint8Array(Mt);
                          return F(St.buffer, St.byteOffset, St.byteLength);
                        }
                        return U(Mt);
                      }
                      function F(Mt, St, Lt) {
                        if (St < 0 || Mt.byteLength < St)
                          throw new RangeError('"offset" is outside of buffer bounds');
                        if (Mt.byteLength < St + (Lt || 0))
                          throw new RangeError('"length" is outside of buffer bounds');
                        var te;
                        return St === void 0 && Lt === void 0 ? te = new Uint8Array(Mt) : Lt === void 0 ? te = new Uint8Array(Mt, St) : te = new Uint8Array(Mt, St, Lt), Object.setPrototypeOf(te, E.prototype), te;
                      }
                      function G(Mt) {
                        if (E.isBuffer(Mt)) {
                          var St = q(Mt.length) | 0, Lt = h(St);
                          return Lt.length === 0 || Mt.copy(Lt, 0, 0, St), Lt;
                        }
                        if (Mt.length !== void 0)
                          return typeof Mt.length != "number" || Bt(Mt.length) ? h(0) : U(Mt);
                        if (Mt.type === "Buffer" && Array.isArray(Mt.data))
                          return U(Mt.data);
                      }
                      function q(Mt) {
                        if (Mt >= L)
                          throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + L.toString(16) + " bytes");
                        return Mt | 0;
                      }
                      E.isBuffer = function(St) {
                        return St != null && St._isBuffer === !0 && St !== E.prototype;
                      }, E.compare = function(St, Lt) {
                        if (ee(St, Uint8Array) && (St = E.from(St, St.offset, St.byteLength)), ee(Lt, Uint8Array) && (Lt = E.from(Lt, Lt.offset, Lt.byteLength)), !E.isBuffer(St) || !E.isBuffer(Lt))
                          throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');
                        if (St === Lt) return 0;
                        for (var te = St.length, fe = Lt.length, Me = 0, ir = Math.min(te, fe); Me < ir; ++Me)
                          if (St[Me] !== Lt[Me]) {
                            te = St[Me], fe = Lt[Me];
                            break;
                          }
                        return te < fe ? -1 : fe < te ? 1 : 0;
                      }, E.isEncoding = function(St) {
                        switch (String(St).toLowerCase()) {
                          case "hex":
                          case "utf8":
                          case "utf-8":
                          case "ascii":
                          case "latin1":
                          case "binary":
                          case "base64":
                          case "ucs2":
                          case "ucs-2":
                          case "utf16le":
                          case "utf-16le":
                            return !0;
                          default:
                            return !1;
                        }
                      }, E.concat = function(St, Lt) {
                        if (!Array.isArray(St))
                          throw new TypeError('"list" argument must be an Array of Buffers');
                        if (St.length === 0)
                          return E.alloc(0);
                        var te;
                        if (Lt === void 0)
                          for (Lt = 0, te = 0; te < St.length; ++te)
                            Lt += St[te].length;
                        var fe = E.allocUnsafe(Lt), Me = 0;
                        for (te = 0; te < St.length; ++te) {
                          var ir = St[te];
                          if (ee(ir, Uint8Array))
                            Me + ir.length > fe.length ? (E.isBuffer(ir) || (ir = E.from(ir)), ir.copy(fe, Me)) : Uint8Array.prototype.set.call(fe, ir, Me);
                          else if (E.isBuffer(ir))
                            ir.copy(fe, Me);
                          else
                            throw new TypeError('"list" argument must be an Array of Buffers');
                          Me += ir.length;
                        }
                        return fe;
                      };
                      function rt(Mt, St) {
                        if (E.isBuffer(Mt))
                          return Mt.length;
                        if (ArrayBuffer.isView(Mt) || ee(Mt, ArrayBuffer))
                          return Mt.byteLength;
                        if (typeof Mt != "string")
                          throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type ' + S(Mt));
                        var Lt = Mt.length, te = arguments.length > 2 && arguments[2] === !0;
                        if (!te && Lt === 0) return 0;
                        for (var fe = !1; ; )
                          switch (St) {
                            case "ascii":
                            case "latin1":
                            case "binary":
                              return Lt;
                            case "utf8":
                            case "utf-8":
                              return Oe(Mt).length;
                            case "ucs2":
                            case "ucs-2":
                            case "utf16le":
                            case "utf-16le":
                              return Lt * 2;
                            case "hex":
                              return Lt >>> 1;
                            case "base64":
                              return $t(Mt).length;
                            default:
                              if (fe)
                                return te ? -1 : Oe(Mt).length;
                              St = ("" + St).toLowerCase(), fe = !0;
                          }
                      }
                      E.byteLength = rt;
                      function st(Mt, St, Lt) {
                        var te = !1;
                        if ((St === void 0 || St < 0) && (St = 0), St > this.length || ((Lt === void 0 || Lt > this.length) && (Lt = this.length), Lt <= 0) || (Lt >>>= 0, St >>>= 0, Lt <= St))
                          return "";
                        for (Mt || (Mt = "utf8"); ; )
                          switch (Mt) {
                            case "hex":
                              return Ct(this, St, Lt);
                            case "utf8":
                            case "utf-8":
                              return ct(this, St, Lt);
                            case "ascii":
                              return wt(this, St, Lt);
                            case "latin1":
                            case "binary":
                              return Et(this, St, Lt);
                            case "base64":
                              return X(this, St, Lt);
                            case "ucs2":
                            case "ucs-2":
                            case "utf16le":
                            case "utf-16le":
                              return Gt(this, St, Lt);
                            default:
                              if (te) throw new TypeError("Unknown encoding: " + Mt);
                              Mt = (Mt + "").toLowerCase(), te = !0;
                          }
                      }
                      E.prototype._isBuffer = !0;
                      function vt(Mt, St, Lt) {
                        var te = Mt[St];
                        Mt[St] = Mt[Lt], Mt[Lt] = te;
                      }
                      E.prototype.swap16 = function() {
                        var St = this.length;
                        if (St % 2 !== 0)
                          throw new RangeError("Buffer size must be a multiple of 16-bits");
                        for (var Lt = 0; Lt < St; Lt += 2)
                          vt(this, Lt, Lt + 1);
                        return this;
                      }, E.prototype.swap32 = function() {
                        var St = this.length;
                        if (St % 4 !== 0)
                          throw new RangeError("Buffer size must be a multiple of 32-bits");
                        for (var Lt = 0; Lt < St; Lt += 4)
                          vt(this, Lt, Lt + 3), vt(this, Lt + 1, Lt + 2);
                        return this;
                      }, E.prototype.swap64 = function() {
                        var St = this.length;
                        if (St % 8 !== 0)
                          throw new RangeError("Buffer size must be a multiple of 64-bits");
                        for (var Lt = 0; Lt < St; Lt += 8)
                          vt(this, Lt, Lt + 7), vt(this, Lt + 1, Lt + 6), vt(this, Lt + 2, Lt + 5), vt(this, Lt + 3, Lt + 4);
                        return this;
                      }, E.prototype.toString = function() {
                        var St = this.length;
                        return St === 0 ? "" : arguments.length === 0 ? ct(this, 0, St) : st.apply(this, arguments);
                      }, E.prototype.toLocaleString = E.prototype.toString, E.prototype.equals = function(St) {
                        if (!E.isBuffer(St)) throw new TypeError("Argument must be a Buffer");
                        return this === St ? !0 : E.compare(this, St) === 0;
                      }, E.prototype.inspect = function() {
                        var St = "", Lt = u.IS;
                        return St = this.toString("hex", 0, Lt).replace(/(.{2})/g, "$1 ").trim(), this.length > Lt && (St += " ... "), "<Buffer " + St + ">";
                      }, m && (E.prototype[m] = E.prototype.inspect), E.prototype.compare = function(St, Lt, te, fe, Me) {
                        if (ee(St, Uint8Array) && (St = E.from(St, St.offset, St.byteLength)), !E.isBuffer(St))
                          throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type ' + S(St));
                        if (Lt === void 0 && (Lt = 0), te === void 0 && (te = St ? St.length : 0), fe === void 0 && (fe = 0), Me === void 0 && (Me = this.length), Lt < 0 || te > St.length || fe < 0 || Me > this.length)
                          throw new RangeError("out of range index");
                        if (fe >= Me && Lt >= te)
                          return 0;
                        if (fe >= Me)
                          return -1;
                        if (Lt >= te)
                          return 1;
                        if (Lt >>>= 0, te >>>= 0, fe >>>= 0, Me >>>= 0, this === St) return 0;
                        for (var ir = Me - fe, mr = te - Lt, Xe = Math.min(ir, mr), xe = this.slice(fe, Me), me = St.slice(Lt, te), Le = 0; Le < Xe; ++Le)
                          if (xe[Le] !== me[Le]) {
                            ir = xe[Le], mr = me[Le];
                            break;
                          }
                        return ir < mr ? -1 : mr < ir ? 1 : 0;
                      };
                      function ht(Mt, St, Lt, te, fe) {
                        if (Mt.length === 0) return -1;
                        if (typeof Lt == "string" ? (te = Lt, Lt = 0) : Lt > 2147483647 ? Lt = 2147483647 : Lt < -2147483648 && (Lt = -2147483648), Lt = +Lt, Bt(Lt) && (Lt = fe ? 0 : Mt.length - 1), Lt < 0 && (Lt = Mt.length + Lt), Lt >= Mt.length) {
                          if (fe) return -1;
                          Lt = Mt.length - 1;
                        } else if (Lt < 0)
                          if (fe) Lt = 0;
                          else return -1;
                        if (typeof St == "string" && (St = E.from(St, te)), E.isBuffer(St))
                          return St.length === 0 ? -1 : et(Mt, St, Lt, te, fe);
                        if (typeof St == "number")
                          return St = St & 255, typeof Uint8Array.prototype.indexOf == "function" ? fe ? Uint8Array.prototype.indexOf.call(Mt, St, Lt) : Uint8Array.prototype.lastIndexOf.call(Mt, St, Lt) : et(Mt, [St], Lt, te, fe);
                        throw new TypeError("val must be string, number or Buffer");
                      }
                      function et(Mt, St, Lt, te, fe) {
                        var Me = 1, ir = Mt.length, mr = St.length;
                        if (te !== void 0 && (te = String(te).toLowerCase(), te === "ucs2" || te === "ucs-2" || te === "utf16le" || te === "utf-16le")) {
                          if (Mt.length < 2 || St.length < 2)
                            return -1;
                          Me = 2, ir /= 2, mr /= 2, Lt /= 2;
                        }
                        function Xe(De, Je) {
                          return Me === 1 ? De[Je] : De.readUInt16BE(Je * Me);
                        }
                        var xe;
                        if (fe) {
                          var me = -1;
                          for (xe = Lt; xe < ir; xe++)
                            if (Xe(Mt, xe) === Xe(St, me === -1 ? 0 : xe - me)) {
                              if (me === -1 && (me = xe), xe - me + 1 === mr) return me * Me;
                            } else
                              me !== -1 && (xe -= xe - me), me = -1;
                        } else
                          for (Lt + mr > ir && (Lt = ir - mr), xe = Lt; xe >= 0; xe--) {
                            for (var Le = !0, qt = 0; qt < mr; qt++)
                              if (Xe(Mt, xe + qt) !== Xe(St, qt)) {
                                Le = !1;
                                break;
                              }
                            if (Le) return xe;
                          }
                        return -1;
                      }
                      E.prototype.includes = function(St, Lt, te) {
                        return this.indexOf(St, Lt, te) !== -1;
                      }, E.prototype.indexOf = function(St, Lt, te) {
                        return ht(this, St, Lt, te, !0);
                      }, E.prototype.lastIndexOf = function(St, Lt, te) {
                        return ht(this, St, Lt, te, !1);
                      };
                      function Q(Mt, St, Lt, te) {
                        Lt = Number(Lt) || 0;
                        var fe = Mt.length - Lt;
                        te ? (te = Number(te), te > fe && (te = fe)) : te = fe;
                        var Me = St.length;
                        te > Me / 2 && (te = Me / 2);
                        var ir;
                        for (ir = 0; ir < te; ++ir) {
                          var mr = parseInt(St.substr(ir * 2, 2), 16);
                          if (Bt(mr)) return ir;
                          Mt[Lt + ir] = mr;
                        }
                        return ir;
                      }
                      function j(Mt, St, Lt, te) {
                        return jt(Oe(St, Mt.length - Lt), Mt, Lt, te);
                      }
                      function at(Mt, St, Lt, te) {
                        return jt(ur(St), Mt, Lt, te);
                      }
                      function ut(Mt, St, Lt, te) {
                        return jt($t(St), Mt, Lt, te);
                      }
                      function nt(Mt, St, Lt, te) {
                        return jt(ie(St, Mt.length - Lt), Mt, Lt, te);
                      }
                      E.prototype.write = function(St, Lt, te, fe) {
                        if (Lt === void 0)
                          fe = "utf8", te = this.length, Lt = 0;
                        else if (te === void 0 && typeof Lt == "string")
                          fe = Lt, te = this.length, Lt = 0;
                        else if (isFinite(Lt))
                          Lt = Lt >>> 0, isFinite(te) ? (te = te >>> 0, fe === void 0 && (fe = "utf8")) : (fe = te, te = void 0);
                        else
                          throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");
                        var Me = this.length - Lt;
                        if ((te === void 0 || te > Me) && (te = Me), St.length > 0 && (te < 0 || Lt < 0) || Lt > this.length)
                          throw new RangeError("Attempt to write outside buffer bounds");
                        fe || (fe = "utf8");
                        for (var ir = !1; ; )
                          switch (fe) {
                            case "hex":
                              return Q(this, St, Lt, te);
                            case "utf8":
                            case "utf-8":
                              return j(this, St, Lt, te);
                            case "ascii":
                            case "latin1":
                            case "binary":
                              return at(this, St, Lt, te);
                            case "base64":
                              return ut(this, St, Lt, te);
                            case "ucs2":
                            case "ucs-2":
                            case "utf16le":
                            case "utf-16le":
                              return nt(this, St, Lt, te);
                            default:
                              if (ir) throw new TypeError("Unknown encoding: " + fe);
                              fe = ("" + fe).toLowerCase(), ir = !0;
                          }
                      }, E.prototype.toJSON = function() {
                        return { type: "Buffer", data: Array.prototype.slice.call(this._arr || this, 0) };
                      };
                      function X(Mt, St, Lt) {
                        return St === 0 && Lt === Mt.length ? M.fromByteArray(Mt) : M.fromByteArray(Mt.slice(St, Lt));
                      }
                      function ct(Mt, St, Lt) {
                        Lt = Math.min(Mt.length, Lt);
                        for (var te = [], fe = St; fe < Lt; ) {
                          var Me = Mt[fe], ir = null, mr = Me > 239 ? 4 : Me > 223 ? 3 : Me > 191 ? 2 : 1;
                          if (fe + mr <= Lt) {
                            var Xe = void 0, xe = void 0, me = void 0, Le = void 0;
                            switch (mr) {
                              case 1:
                                Me < 128 && (ir = Me);
                                break;
                              case 2:
                                Xe = Mt[fe + 1], (Xe & 192) === 128 && (Le = (Me & 31) << 6 | Xe & 63, Le > 127 && (ir = Le));
                                break;
                              case 3:
                                Xe = Mt[fe + 1], xe = Mt[fe + 2], (Xe & 192) === 128 && (xe & 192) === 128 && (Le = (Me & 15) << 12 | (Xe & 63) << 6 | xe & 63, Le > 2047 && (Le < 55296 || Le > 57343) && (ir = Le));
                                break;
                              case 4:
                                Xe = Mt[fe + 1], xe = Mt[fe + 2], me = Mt[fe + 3], (Xe & 192) === 128 && (xe & 192) === 128 && (me & 192) === 128 && (Le = (Me & 15) << 18 | (Xe & 63) << 12 | (xe & 63) << 6 | me & 63, Le > 65535 && Le < 1114112 && (ir = Le));
                            }
                          }
                          ir === null ? (ir = 65533, mr = 1) : ir > 65535 && (ir -= 65536, te.push(ir >>> 10 & 1023 | 55296), ir = 56320 | ir & 1023), te.push(ir), fe += mr;
                        }
                        return pt(te);
                      }
                      var lt = 4096;
                      function pt(Mt) {
                        var St = Mt.length;
                        if (St <= lt)
                          return String.fromCharCode.apply(String, Mt);
                        for (var Lt = "", te = 0; te < St; )
                          Lt += String.fromCharCode.apply(String, Mt.slice(te, te += lt));
                        return Lt;
                      }
                      function wt(Mt, St, Lt) {
                        var te = "";
                        Lt = Math.min(Mt.length, Lt);
                        for (var fe = St; fe < Lt; ++fe)
                          te += String.fromCharCode(Mt[fe] & 127);
                        return te;
                      }
                      function Et(Mt, St, Lt) {
                        var te = "";
                        Lt = Math.min(Mt.length, Lt);
                        for (var fe = St; fe < Lt; ++fe)
                          te += String.fromCharCode(Mt[fe]);
                        return te;
                      }
                      function Ct(Mt, St, Lt) {
                        var te = Mt.length;
                        (!St || St < 0) && (St = 0), (!Lt || Lt < 0 || Lt > te) && (Lt = te);
                        for (var fe = "", Me = St; Me < Lt; ++Me)
                          fe += Xt[Mt[Me]];
                        return fe;
                      }
                      function Gt(Mt, St, Lt) {
                        for (var te = Mt.slice(St, Lt), fe = "", Me = 0; Me < te.length - 1; Me += 2)
                          fe += String.fromCharCode(te[Me] + te[Me + 1] * 256);
                        return fe;
                      }
                      E.prototype.slice = function(St, Lt) {
                        var te = this.length;
                        St = ~~St, Lt = Lt === void 0 ? te : ~~Lt, St < 0 ? (St += te, St < 0 && (St = 0)) : St > te && (St = te), Lt < 0 ? (Lt += te, Lt < 0 && (Lt = 0)) : Lt > te && (Lt = te), Lt < St && (Lt = St);
                        var fe = this.subarray(St, Lt);
                        return Object.setPrototypeOf(fe, E.prototype), fe;
                      };
                      function Jt(Mt, St, Lt) {
                        if (Mt % 1 !== 0 || Mt < 0) throw new RangeError("offset is not uint");
                        if (Mt + St > Lt) throw new RangeError("Trying to access beyond buffer length");
                      }
                      E.prototype.readUintLE = E.prototype.readUIntLE = function(St, Lt, te) {
                        St = St >>> 0, Lt = Lt >>> 0, te || Jt(St, Lt, this.length);
                        for (var fe = this[St], Me = 1, ir = 0; ++ir < Lt && (Me *= 256); )
                          fe += this[St + ir] * Me;
                        return fe;
                      }, E.prototype.readUintBE = E.prototype.readUIntBE = function(St, Lt, te) {
                        St = St >>> 0, Lt = Lt >>> 0, te || Jt(St, Lt, this.length);
                        for (var fe = this[St + --Lt], Me = 1; Lt > 0 && (Me *= 256); )
                          fe += this[St + --Lt] * Me;
                        return fe;
                      }, E.prototype.readUint8 = E.prototype.readUInt8 = function(St, Lt) {
                        return St = St >>> 0, Lt || Jt(St, 1, this.length), this[St];
                      }, E.prototype.readUint16LE = E.prototype.readUInt16LE = function(St, Lt) {
                        return St = St >>> 0, Lt || Jt(St, 2, this.length), this[St] | this[St + 1] << 8;
                      }, E.prototype.readUint16BE = E.prototype.readUInt16BE = function(St, Lt) {
                        return St = St >>> 0, Lt || Jt(St, 2, this.length), this[St] << 8 | this[St + 1];
                      }, E.prototype.readUint32LE = E.prototype.readUInt32LE = function(St, Lt) {
                        return St = St >>> 0, Lt || Jt(St, 4, this.length), (this[St] | this[St + 1] << 8 | this[St + 2] << 16) + this[St + 3] * 16777216;
                      }, E.prototype.readUint32BE = E.prototype.readUInt32BE = function(St, Lt) {
                        return St = St >>> 0, Lt || Jt(St, 4, this.length), this[St] * 16777216 + (this[St + 1] << 16 | this[St + 2] << 8 | this[St + 3]);
                      }, E.prototype.readBigUInt64LE = Zt(function(St) {
                        St = St >>> 0, Se(St, "offset");
                        var Lt = this[St], te = this[St + 7];
                        (Lt === void 0 || te === void 0) && ze(St, this.length - 8);
                        var fe = Lt + this[++St] * Math.pow(2, 8) + this[++St] * Math.pow(2, 16) + this[++St] * Math.pow(2, 24), Me = this[++St] + this[++St] * Math.pow(2, 8) + this[++St] * Math.pow(2, 16) + te * Math.pow(2, 24);
                        return BigInt(fe) + (BigInt(Me) << BigInt(32));
                      }), E.prototype.readBigUInt64BE = Zt(function(St) {
                        St = St >>> 0, Se(St, "offset");
                        var Lt = this[St], te = this[St + 7];
                        (Lt === void 0 || te === void 0) && ze(St, this.length - 8);
                        var fe = Lt * Math.pow(2, 24) + this[++St] * Math.pow(2, 16) + this[++St] * Math.pow(2, 8) + this[++St], Me = this[++St] * Math.pow(2, 24) + this[++St] * Math.pow(2, 16) + this[++St] * Math.pow(2, 8) + te;
                        return (BigInt(fe) << BigInt(32)) + BigInt(Me);
                      }), E.prototype.readIntLE = function(St, Lt, te) {
                        St = St >>> 0, Lt = Lt >>> 0, te || Jt(St, Lt, this.length);
                        for (var fe = this[St], Me = 1, ir = 0; ++ir < Lt && (Me *= 256); )
                          fe += this[St + ir] * Me;
                        return Me *= 128, fe >= Me && (fe -= Math.pow(2, 8 * Lt)), fe;
                      }, E.prototype.readIntBE = function(St, Lt, te) {
                        St = St >>> 0, Lt = Lt >>> 0, te || Jt(St, Lt, this.length);
                        for (var fe = Lt, Me = 1, ir = this[St + --fe]; fe > 0 && (Me *= 256); )
                          ir += this[St + --fe] * Me;
                        return Me *= 128, ir >= Me && (ir -= Math.pow(2, 8 * Lt)), ir;
                      }, E.prototype.readInt8 = function(St, Lt) {
                        return St = St >>> 0, Lt || Jt(St, 1, this.length), this[St] & 128 ? (255 - this[St] + 1) * -1 : this[St];
                      }, E.prototype.readInt16LE = function(St, Lt) {
                        St = St >>> 0, Lt || Jt(St, 2, this.length);
                        var te = this[St] | this[St + 1] << 8;
                        return te & 32768 ? te | 4294901760 : te;
                      }, E.prototype.readInt16BE = function(St, Lt) {
                        St = St >>> 0, Lt || Jt(St, 2, this.length);
                        var te = this[St + 1] | this[St] << 8;
                        return te & 32768 ? te | 4294901760 : te;
                      }, E.prototype.readInt32LE = function(St, Lt) {
                        return St = St >>> 0, Lt || Jt(St, 4, this.length), this[St] | this[St + 1] << 8 | this[St + 2] << 16 | this[St + 3] << 24;
                      }, E.prototype.readInt32BE = function(St, Lt) {
                        return St = St >>> 0, Lt || Jt(St, 4, this.length), this[St] << 24 | this[St + 1] << 16 | this[St + 2] << 8 | this[St + 3];
                      }, E.prototype.readBigInt64LE = Zt(function(St) {
                        St = St >>> 0, Se(St, "offset");
                        var Lt = this[St], te = this[St + 7];
                        (Lt === void 0 || te === void 0) && ze(St, this.length - 8);
                        var fe = this[St + 4] + this[St + 5] * Math.pow(2, 8) + this[St + 6] * Math.pow(2, 16) + (te << 24);
                        return (BigInt(fe) << BigInt(32)) + BigInt(Lt + this[++St] * Math.pow(2, 8) + this[++St] * Math.pow(2, 16) + this[++St] * Math.pow(2, 24));
                      }), E.prototype.readBigInt64BE = Zt(function(St) {
                        St = St >>> 0, Se(St, "offset");
                        var Lt = this[St], te = this[St + 7];
                        (Lt === void 0 || te === void 0) && ze(St, this.length - 8);
                        var fe = (Lt << 24) + // Overflow
                        this[++St] * Math.pow(2, 16) + this[++St] * Math.pow(2, 8) + this[++St];
                        return (BigInt(fe) << BigInt(32)) + BigInt(this[++St] * Math.pow(2, 24) + this[++St] * Math.pow(2, 16) + this[++St] * Math.pow(2, 8) + te);
                      }), E.prototype.readFloatLE = function(St, Lt) {
                        return St = St >>> 0, Lt || Jt(St, 4, this.length), C.read(this, St, !0, 23, 4);
                      }, E.prototype.readFloatBE = function(St, Lt) {
                        return St = St >>> 0, Lt || Jt(St, 4, this.length), C.read(this, St, !1, 23, 4);
                      }, E.prototype.readDoubleLE = function(St, Lt) {
                        return St = St >>> 0, Lt || Jt(St, 8, this.length), C.read(this, St, !0, 52, 8);
                      }, E.prototype.readDoubleBE = function(St, Lt) {
                        return St = St >>> 0, Lt || Jt(St, 8, this.length), C.read(this, St, !1, 52, 8);
                      };
                      function Qt(Mt, St, Lt, te, fe, Me) {
                        if (!E.isBuffer(Mt)) throw new TypeError('"buffer" argument must be a Buffer instance');
                        if (St > fe || St < Me) throw new RangeError('"value" argument is out of bounds');
                        if (Lt + te > Mt.length) throw new RangeError("Index out of range");
                      }
                      E.prototype.writeUintLE = E.prototype.writeUIntLE = function(St, Lt, te, fe) {
                        if (St = +St, Lt = Lt >>> 0, te = te >>> 0, !fe) {
                          var Me = Math.pow(2, 8 * te) - 1;
                          Qt(this, St, Lt, te, Me, 0);
                        }
                        var ir = 1, mr = 0;
                        for (this[Lt] = St & 255; ++mr < te && (ir *= 256); )
                          this[Lt + mr] = St / ir & 255;
                        return Lt + te;
                      }, E.prototype.writeUintBE = E.prototype.writeUIntBE = function(St, Lt, te, fe) {
                        if (St = +St, Lt = Lt >>> 0, te = te >>> 0, !fe) {
                          var Me = Math.pow(2, 8 * te) - 1;
                          Qt(this, St, Lt, te, Me, 0);
                        }
                        var ir = te - 1, mr = 1;
                        for (this[Lt + ir] = St & 255; --ir >= 0 && (mr *= 256); )
                          this[Lt + ir] = St / mr & 255;
                        return Lt + te;
                      }, E.prototype.writeUint8 = E.prototype.writeUInt8 = function(St, Lt, te) {
                        return St = +St, Lt = Lt >>> 0, te || Qt(this, St, Lt, 1, 255, 0), this[Lt] = St & 255, Lt + 1;
                      }, E.prototype.writeUint16LE = E.prototype.writeUInt16LE = function(St, Lt, te) {
                        return St = +St, Lt = Lt >>> 0, te || Qt(this, St, Lt, 2, 65535, 0), this[Lt] = St & 255, this[Lt + 1] = St >>> 8, Lt + 2;
                      }, E.prototype.writeUint16BE = E.prototype.writeUInt16BE = function(St, Lt, te) {
                        return St = +St, Lt = Lt >>> 0, te || Qt(this, St, Lt, 2, 65535, 0), this[Lt] = St >>> 8, this[Lt + 1] = St & 255, Lt + 2;
                      }, E.prototype.writeUint32LE = E.prototype.writeUInt32LE = function(St, Lt, te) {
                        return St = +St, Lt = Lt >>> 0, te || Qt(this, St, Lt, 4, 4294967295, 0), this[Lt + 3] = St >>> 24, this[Lt + 2] = St >>> 16, this[Lt + 1] = St >>> 8, this[Lt] = St & 255, Lt + 4;
                      }, E.prototype.writeUint32BE = E.prototype.writeUInt32BE = function(St, Lt, te) {
                        return St = +St, Lt = Lt >>> 0, te || Qt(this, St, Lt, 4, 4294967295, 0), this[Lt] = St >>> 24, this[Lt + 1] = St >>> 16, this[Lt + 2] = St >>> 8, this[Lt + 3] = St & 255, Lt + 4;
                      };
                      function Vt(Mt, St, Lt, te, fe) {
                        ae(St, te, fe, Mt, Lt, 7);
                        var Me = Number(St & BigInt(4294967295));
                        Mt[Lt++] = Me, Me = Me >> 8, Mt[Lt++] = Me, Me = Me >> 8, Mt[Lt++] = Me, Me = Me >> 8, Mt[Lt++] = Me;
                        var ir = Number(St >> BigInt(32) & BigInt(4294967295));
                        return Mt[Lt++] = ir, ir = ir >> 8, Mt[Lt++] = ir, ir = ir >> 8, Mt[Lt++] = ir, ir = ir >> 8, Mt[Lt++] = ir, Lt;
                      }
                      function zt(Mt, St, Lt, te, fe) {
                        ae(St, te, fe, Mt, Lt, 7);
                        var Me = Number(St & BigInt(4294967295));
                        Mt[Lt + 7] = Me, Me = Me >> 8, Mt[Lt + 6] = Me, Me = Me >> 8, Mt[Lt + 5] = Me, Me = Me >> 8, Mt[Lt + 4] = Me;
                        var ir = Number(St >> BigInt(32) & BigInt(4294967295));
                        return Mt[Lt + 3] = ir, ir = ir >> 8, Mt[Lt + 2] = ir, ir = ir >> 8, Mt[Lt + 1] = ir, ir = ir >> 8, Mt[Lt] = ir, Lt + 8;
                      }
                      E.prototype.writeBigUInt64LE = Zt(function(St) {
                        var Lt = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
                        return Vt(this, St, Lt, BigInt(0), BigInt("0xffffffffffffffff"));
                      }), E.prototype.writeBigUInt64BE = Zt(function(St) {
                        var Lt = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
                        return zt(this, St, Lt, BigInt(0), BigInt("0xffffffffffffffff"));
                      }), E.prototype.writeIntLE = function(St, Lt, te, fe) {
                        if (St = +St, Lt = Lt >>> 0, !fe) {
                          var Me = Math.pow(2, 8 * te - 1);
                          Qt(this, St, Lt, te, Me - 1, -Me);
                        }
                        var ir = 0, mr = 1, Xe = 0;
                        for (this[Lt] = St & 255; ++ir < te && (mr *= 256); )
                          St < 0 && Xe === 0 && this[Lt + ir - 1] !== 0 && (Xe = 1), this[Lt + ir] = (St / mr >> 0) - Xe & 255;
                        return Lt + te;
                      }, E.prototype.writeIntBE = function(St, Lt, te, fe) {
                        if (St = +St, Lt = Lt >>> 0, !fe) {
                          var Me = Math.pow(2, 8 * te - 1);
                          Qt(this, St, Lt, te, Me - 1, -Me);
                        }
                        var ir = te - 1, mr = 1, Xe = 0;
                        for (this[Lt + ir] = St & 255; --ir >= 0 && (mr *= 256); )
                          St < 0 && Xe === 0 && this[Lt + ir + 1] !== 0 && (Xe = 1), this[Lt + ir] = (St / mr >> 0) - Xe & 255;
                        return Lt + te;
                      }, E.prototype.writeInt8 = function(St, Lt, te) {
                        return St = +St, Lt = Lt >>> 0, te || Qt(this, St, Lt, 1, 127, -128), St < 0 && (St = 255 + St + 1), this[Lt] = St & 255, Lt + 1;
                      }, E.prototype.writeInt16LE = function(St, Lt, te) {
                        return St = +St, Lt = Lt >>> 0, te || Qt(this, St, Lt, 2, 32767, -32768), this[Lt] = St & 255, this[Lt + 1] = St >>> 8, Lt + 2;
                      }, E.prototype.writeInt16BE = function(St, Lt, te) {
                        return St = +St, Lt = Lt >>> 0, te || Qt(this, St, Lt, 2, 32767, -32768), this[Lt] = St >>> 8, this[Lt + 1] = St & 255, Lt + 2;
                      }, E.prototype.writeInt32LE = function(St, Lt, te) {
                        return St = +St, Lt = Lt >>> 0, te || Qt(this, St, Lt, 4, 2147483647, -2147483648), this[Lt] = St & 255, this[Lt + 1] = St >>> 8, this[Lt + 2] = St >>> 16, this[Lt + 3] = St >>> 24, Lt + 4;
                      }, E.prototype.writeInt32BE = function(St, Lt, te) {
                        return St = +St, Lt = Lt >>> 0, te || Qt(this, St, Lt, 4, 2147483647, -2147483648), St < 0 && (St = 4294967295 + St + 1), this[Lt] = St >>> 24, this[Lt + 1] = St >>> 16, this[Lt + 2] = St >>> 8, this[Lt + 3] = St & 255, Lt + 4;
                      }, E.prototype.writeBigInt64LE = Zt(function(St) {
                        var Lt = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
                        return Vt(this, St, Lt, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff"));
                      }), E.prototype.writeBigInt64BE = Zt(function(St) {
                        var Lt = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
                        return zt(this, St, Lt, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff"));
                      });
                      function Rt(Mt, St, Lt, te, fe, Me) {
                        if (Lt + te > Mt.length) throw new RangeError("Index out of range");
                        if (Lt < 0) throw new RangeError("Index out of range");
                      }
                      function Wt(Mt, St, Lt, te, fe) {
                        return St = +St, Lt = Lt >>> 0, fe || Rt(Mt, St, Lt, 4), C.write(Mt, St, Lt, te, 23, 4), Lt + 4;
                      }
                      E.prototype.writeFloatLE = function(St, Lt, te) {
                        return Wt(this, St, Lt, !0, te);
                      }, E.prototype.writeFloatBE = function(St, Lt, te) {
                        return Wt(this, St, Lt, !1, te);
                      };
                      function kt(Mt, St, Lt, te, fe) {
                        return St = +St, Lt = Lt >>> 0, fe || Rt(Mt, St, Lt, 8), C.write(Mt, St, Lt, te, 52, 8), Lt + 8;
                      }
                      E.prototype.writeDoubleLE = function(St, Lt, te) {
                        return kt(this, St, Lt, !0, te);
                      }, E.prototype.writeDoubleBE = function(St, Lt, te) {
                        return kt(this, St, Lt, !1, te);
                      }, E.prototype.copy = function(St, Lt, te, fe) {
                        if (!E.isBuffer(St)) throw new TypeError("argument should be a Buffer");
                        if (te || (te = 0), !fe && fe !== 0 && (fe = this.length), Lt >= St.length && (Lt = St.length), Lt || (Lt = 0), fe > 0 && fe < te && (fe = te), fe === te || St.length === 0 || this.length === 0) return 0;
                        if (Lt < 0)
                          throw new RangeError("targetStart out of bounds");
                        if (te < 0 || te >= this.length) throw new RangeError("Index out of range");
                        if (fe < 0) throw new RangeError("sourceEnd out of bounds");
                        fe > this.length && (fe = this.length), St.length - Lt < fe - te && (fe = St.length - Lt + te);
                        var Me = fe - te;
                        return this === St && typeof Uint8Array.prototype.copyWithin == "function" ? this.copyWithin(Lt, te, fe) : Uint8Array.prototype.set.call(St, this.subarray(te, fe), Lt), Me;
                      }, E.prototype.fill = function(St, Lt, te, fe) {
                        if (typeof St == "string") {
                          if (typeof Lt == "string" ? (fe = Lt, Lt = 0, te = this.length) : typeof te == "string" && (fe = te, te = this.length), fe !== void 0 && typeof fe != "string")
                            throw new TypeError("encoding must be a string");
                          if (typeof fe == "string" && !E.isEncoding(fe))
                            throw new TypeError("Unknown encoding: " + fe);
                          if (St.length === 1) {
                            var Me = St.charCodeAt(0);
                            (fe === "utf8" && Me < 128 || fe === "latin1") && (St = Me);
                          }
                        } else typeof St == "number" ? St = St & 255 : typeof St == "boolean" && (St = Number(St));
                        if (Lt < 0 || this.length < Lt || this.length < te)
                          throw new RangeError("Out of range index");
                        if (te <= Lt)
                          return this;
                        Lt = Lt >>> 0, te = te === void 0 ? this.length : te >>> 0, St || (St = 0);
                        var ir;
                        if (typeof St == "number")
                          for (ir = Lt; ir < te; ++ir)
                            this[ir] = St;
                        else {
                          var mr = E.isBuffer(St) ? St : E.from(St, fe), Xe = mr.length;
                          if (Xe === 0)
                            throw new TypeError('The value "' + St + '" is invalid for argument "value"');
                          for (ir = 0; ir < te - Lt; ++ir)
                            this[ir + Lt] = mr[ir % Xe];
                        }
                        return this;
                      };
                      var re = {};
                      function ge(Mt, St, Lt) {
                        re[Mt] = /* @__PURE__ */ function(te) {
                          function fe() {
                            var Me;
                            return r(this, fe), Me = y(this, fe), Object.defineProperty(Me, "message", { value: St.apply(Me, arguments), writable: !0, configurable: !0 }), Me.name = "".concat(Me.name, " [").concat(Mt, "]"), Me.stack, delete Me.name, Me;
                          }
                          return f(fe, te), a(fe, [{ key: "code", get: function() {
                            return Mt;
                          }, set: function(ir) {
                            Object.defineProperty(this, "code", { configurable: !0, enumerable: !0, value: ir, writable: !0 });
                          } }, { key: "toString", value: function() {
                            return "".concat(this.name, " [").concat(Mt, "]: ").concat(this.message);
                          } }]);
                        }(Lt);
                      }
                      ge("ERR_BUFFER_OUT_OF_BOUNDS", function(Mt) {
                        return Mt ? "".concat(Mt, " is outside of buffer bounds") : "Attempt to access memory outside buffer bounds";
                      }, RangeError), ge("ERR_INVALID_ARG_TYPE", function(Mt, St) {
                        return 'The "'.concat(Mt, '" argument must be of type number. Received type ').concat(S(St));
                      }, TypeError), ge("ERR_OUT_OF_RANGE", function(Mt, St, Lt) {
                        var te = 'The value of "'.concat(Mt, '" is out of range.'), fe = Lt;
                        return Number.isInteger(Lt) && Math.abs(Lt) > Math.pow(2, 32) ? fe = _e(String(Lt)) : typeof Lt == "bigint" && (fe = String(Lt), (Lt > Math.pow(BigInt(2), BigInt(32)) || Lt < -Math.pow(BigInt(2), BigInt(32))) && (fe = _e(fe)), fe += "n"), te += " It must be ".concat(St, ". Received ").concat(fe), te;
                      }, RangeError);
                      function _e(Mt) {
                        for (var St = "", Lt = Mt.length, te = Mt[0] === "-" ? 1 : 0; Lt >= te + 4; Lt -= 3)
                          St = "_".concat(Mt.slice(Lt - 3, Lt)).concat(St);
                        return "".concat(Mt.slice(0, Lt)).concat(St);
                      }
                      function ce(Mt, St, Lt) {
                        Se(St, "offset"), (Mt[St] === void 0 || Mt[St + Lt] === void 0) && ze(St, Mt.length - (Lt + 1));
                      }
                      function ae(Mt, St, Lt, te, fe, Me) {
                        if (Mt > Lt || Mt < St) {
                          var ir = typeof St == "bigint" ? "n" : "", mr;
                          throw St === 0 || St === BigInt(0) ? mr = ">= 0".concat(ir, " and < 2").concat(ir, " ** ").concat((Me + 1) * 8).concat(ir) : mr = ">= -(2".concat(ir, " ** ").concat((Me + 1) * 8 - 1).concat(ir, ") and < 2 ** ") + "".concat((Me + 1) * 8 - 1).concat(ir), new re.ERR_OUT_OF_RANGE("value", mr, Mt);
                        }
                        ce(te, fe, Me);
                      }
                      function Se(Mt, St) {
                        if (typeof Mt != "number")
                          throw new re.ERR_INVALID_ARG_TYPE(St, "number", Mt);
                      }
                      function ze(Mt, St, Lt) {
                        throw Math.floor(Mt) !== Mt ? (Se(Mt, Lt), new re.ERR_OUT_OF_RANGE("offset", "an integer", Mt)) : St < 0 ? new re.ERR_BUFFER_OUT_OF_BOUNDS() : new re.ERR_OUT_OF_RANGE("offset", ">= ".concat(0, " and <= ").concat(St), Mt);
                      }
                      var Ne = /[^+/0-9A-Za-z-_]/g;
                      function Ve(Mt) {
                        if (Mt = Mt.split("=")[0], Mt = Mt.trim().replace(Ne, ""), Mt.length < 2) return "";
                        for (; Mt.length % 4 !== 0; )
                          Mt = Mt + "=";
                        return Mt;
                      }
                      function Oe(Mt, St) {
                        St = St || 1 / 0;
                        for (var Lt, te = Mt.length, fe = null, Me = [], ir = 0; ir < te; ++ir) {
                          if (Lt = Mt.charCodeAt(ir), Lt > 55295 && Lt < 57344) {
                            if (!fe) {
                              if (Lt > 56319) {
                                (St -= 3) > -1 && Me.push(239, 191, 189);
                                continue;
                              } else if (ir + 1 === te) {
                                (St -= 3) > -1 && Me.push(239, 191, 189);
                                continue;
                              }
                              fe = Lt;
                              continue;
                            }
                            if (Lt < 56320) {
                              (St -= 3) > -1 && Me.push(239, 191, 189), fe = Lt;
                              continue;
                            }
                            Lt = (fe - 55296 << 10 | Lt - 56320) + 65536;
                          } else fe && (St -= 3) > -1 && Me.push(239, 191, 189);
                          if (fe = null, Lt < 128) {
                            if ((St -= 1) < 0) break;
                            Me.push(Lt);
                          } else if (Lt < 2048) {
                            if ((St -= 2) < 0) break;
                            Me.push(Lt >> 6 | 192, Lt & 63 | 128);
                          } else if (Lt < 65536) {
                            if ((St -= 3) < 0) break;
                            Me.push(Lt >> 12 | 224, Lt >> 6 & 63 | 128, Lt & 63 | 128);
                          } else if (Lt < 1114112) {
                            if ((St -= 4) < 0) break;
                            Me.push(Lt >> 18 | 240, Lt >> 12 & 63 | 128, Lt >> 6 & 63 | 128, Lt & 63 | 128);
                          } else
                            throw new Error("Invalid code point");
                        }
                        return Me;
                      }
                      function ur(Mt) {
                        for (var St = [], Lt = 0; Lt < Mt.length; ++Lt)
                          St.push(Mt.charCodeAt(Lt) & 255);
                        return St;
                      }
                      function ie(Mt, St) {
                        for (var Lt, te, fe, Me = [], ir = 0; ir < Mt.length && !((St -= 2) < 0); ++ir)
                          Lt = Mt.charCodeAt(ir), te = Lt >> 8, fe = Lt % 256, Me.push(fe), Me.push(te);
                        return Me;
                      }
                      function $t(Mt) {
                        return M.toByteArray(Ve(Mt));
                      }
                      function jt(Mt, St, Lt, te) {
                        var fe;
                        for (fe = 0; fe < te && !(fe + Lt >= St.length || fe >= Mt.length); ++fe)
                          St[fe + Lt] = Mt[fe];
                        return fe;
                      }
                      function ee(Mt, St) {
                        return Mt instanceof St || Mt != null && Mt.constructor != null && Mt.constructor.name != null && Mt.constructor.name === St.name;
                      }
                      function Bt(Mt) {
                        return Mt !== Mt;
                      }
                      var Xt = function() {
                        for (var Mt = "0123456789abcdef", St = new Array(256), Lt = 0; Lt < 16; ++Lt)
                          for (var te = Lt * 16, fe = 0; fe < 16; ++fe)
                            St[te + fe] = Mt[Lt] + Mt[fe];
                        return St;
                      }();
                      function Zt(Mt) {
                        return typeof BigInt > "u" ? ye : Mt;
                      }
                      function ye() {
                        throw new Error("BigInt not supported");
                      }
                    }
                  ),
                  /***/
                  9216: (
                    /***/
                    function(p) {
                      p.exports = i, p.exports.isMobile = i, p.exports.default = i;
                      var u = /(android|bb\d+|meego).+mobile|armv7l|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|samsungbrowser.*mobile|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i, t = /CrOS/, r = /android|ipad|playbook|silk/i;
                      function i(a) {
                        a || (a = {});
                        var l = a.ua;
                        if (!l && typeof navigator < "u" && (l = navigator.userAgent), l && l.headers && typeof l.headers["user-agent"] == "string" && (l = l.headers["user-agent"]), typeof l != "string") return !1;
                        var o = u.test(l) && !t.test(l) || !!a.tablet && r.test(l);
                        return !o && a.tablet && a.featureDetect && navigator && navigator.maxTouchPoints > 1 && l.indexOf("Macintosh") !== -1 && l.indexOf("Safari") !== -1 && (o = !0), o;
                      }
                    }
                  ),
                  /***/
                  6296: (
                    /***/
                    function(p, u, t) {
                      p.exports = y;
                      var r = t(7261), i = t(9977), a = t(4192);
                      function l(g, x) {
                        this._controllerNames = Object.keys(g), this._controllerList = this._controllerNames.map(function(c) {
                          return g[c];
                        }), this._mode = x, this._active = g[x], this._active || (this._mode = "turntable", this._active = g.turntable), this.modes = this._controllerNames, this.computedMatrix = this._active.computedMatrix, this.computedEye = this._active.computedEye, this.computedUp = this._active.computedUp, this.computedCenter = this._active.computedCenter, this.computedRadius = this._active.computedRadius;
                      }
                      var o = l.prototype;
                      o.flush = function(g) {
                        for (var x = this._controllerList, c = 0; c < x.length; ++c)
                          x[c].flush(g);
                      }, o.idle = function(g) {
                        for (var x = this._controllerList, c = 0; c < x.length; ++c)
                          x[c].idle(g);
                      }, o.lookAt = function(g, x, c, v) {
                        for (var f = this._controllerList, _ = 0; _ < f.length; ++_)
                          f[_].lookAt(g, x, c, v);
                      }, o.rotate = function(g, x, c, v) {
                        for (var f = this._controllerList, _ = 0; _ < f.length; ++_)
                          f[_].rotate(g, x, c, v);
                      }, o.pan = function(g, x, c, v) {
                        for (var f = this._controllerList, _ = 0; _ < f.length; ++_)
                          f[_].pan(g, x, c, v);
                      }, o.translate = function(g, x, c, v) {
                        for (var f = this._controllerList, _ = 0; _ < f.length; ++_)
                          f[_].translate(g, x, c, v);
                      }, o.setMatrix = function(g, x) {
                        for (var c = this._controllerList, v = 0; v < c.length; ++v)
                          c[v].setMatrix(g, x);
                      }, o.setDistanceLimits = function(g, x) {
                        for (var c = this._controllerList, v = 0; v < c.length; ++v)
                          c[v].setDistanceLimits(g, x);
                      }, o.setDistance = function(g, x) {
                        for (var c = this._controllerList, v = 0; v < c.length; ++v)
                          c[v].setDistance(g, x);
                      }, o.recalcMatrix = function(g) {
                        this._active.recalcMatrix(g);
                      }, o.getDistance = function(g) {
                        return this._active.getDistance(g);
                      }, o.getDistanceLimits = function(g) {
                        return this._active.getDistanceLimits(g);
                      }, o.lastT = function() {
                        return this._active.lastT();
                      }, o.setMode = function(g) {
                        if (g !== this._mode) {
                          var x = this._controllerNames.indexOf(g);
                          if (!(x < 0)) {
                            var c = this._active, v = this._controllerList[x], f = Math.max(c.lastT(), v.lastT());
                            c.recalcMatrix(f), v.setMatrix(f, c.computedMatrix), this._active = v, this._mode = g, this.computedMatrix = this._active.computedMatrix, this.computedEye = this._active.computedEye, this.computedUp = this._active.computedUp, this.computedCenter = this._active.computedCenter, this.computedRadius = this._active.computedRadius;
                          }
                        }
                      }, o.getMode = function() {
                        return this._mode;
                      };
                      function y(g) {
                        g = g || {};
                        var x = g.eye || [0, 0, 1], c = g.center || [0, 0, 0], v = g.up || [0, 1, 0], f = g.distanceLimits || [0, 1 / 0], _ = g.mode || "turntable", S = r(), M = i(), C = a();
                        return S.setDistanceLimits(f[0], f[1]), S.lookAt(0, x, c, v), M.setDistanceLimits(f[0], f[1]), M.lookAt(0, x, c, v), C.setDistanceLimits(f[0], f[1]), C.lookAt(0, x, c, v), new l({ turntable: S, orbit: M, matrix: C }, _);
                      }
                    }
                  ),
                  /***/
                  7169: (
                    /***/
                    function(p, u, t) {
                      var r = typeof WeakMap > "u" ? t(1538) : WeakMap, i = t(2762), a = t(8116), l = new r();
                      function o(y) {
                        var g = l.get(y), x = g && (g._triangleBuffer.handle || g._triangleBuffer.buffer);
                        if (!x || !y.isBuffer(x)) {
                          var c = i(y, new Float32Array([-1, -1, -1, 4, 4, -1]));
                          g = a(y, [{ buffer: c, type: y.FLOAT, size: 2 }]), g._triangleBuffer = c, l.set(y, g);
                        }
                        g.bind(), y.drawArrays(y.TRIANGLES, 0, 3), g.unbind();
                      }
                      p.exports = o;
                    }
                  ),
                  /***/
                  1085: (
                    /***/
                    function(p, u, t) {
                      var r = t(1371);
                      p.exports = i;
                      function i(a, l, o) {
                        l = typeof l == "number" ? l : 1, o = o || ": ";
                        var y = a.split(/\r?\n/), g = String(y.length + l - 1).length;
                        return y.map(function(x, c) {
                          var v = c + l, f = String(v).length, _ = r(v, g - f);
                          return _ + o + x;
                        }).join(`
`);
                      }
                    }
                  ),
                  /***/
                  3952: (
                    /***/
                    function(p, u, t) {
                      p.exports = a;
                      var r = t(3250);
                      function i(l, o) {
                        for (var y = new Array(o + 1), g = 0; g < l.length; ++g)
                          y[g] = l[g];
                        for (var g = 0; g <= l.length; ++g) {
                          for (var x = l.length; x <= o; ++x) {
                            for (var c = new Array(o), v = 0; v < o; ++v)
                              c[v] = Math.pow(x + 1 - g, v);
                            y[x] = c;
                          }
                          var f = r.apply(void 0, y);
                          if (f)
                            return !0;
                        }
                        return !1;
                      }
                      function a(l) {
                        var o = l.length;
                        if (o === 0)
                          return [];
                        if (o === 1)
                          return [0];
                        for (var y = l[0].length, g = [l[0]], x = [0], c = 1; c < o; ++c) {
                          if (g.push(l[c]), !i(g, y)) {
                            g.pop();
                            continue;
                          }
                          if (x.push(c), x.length === y + 1)
                            return x;
                        }
                        return x;
                      }
                    }
                  ),
                  /***/
                  5995: (
                    /***/
                    function(p, u, t) {
                      p.exports = a;
                      var r = t(7642), i = t(6037);
                      function a(l, o) {
                        return r(o).filter(function(y) {
                          for (var g = new Array(y.length), x = 0; x < y.length; ++x)
                            g[x] = o[y[x]];
                          return i(g) * l < 1;
                        });
                      }
                    }
                  ),
                  /***/
                  3502: (
                    /***/
                    function(p, u, t) {
                      p.exports = a;
                      var r = t(5995), i = t(9127);
                      function a(l, o) {
                        return i(r(l, o));
                      }
                    }
                  ),
                  /***/
                  6468: (
                    /***/
                    function(p) {
                      p.exports = function(t) {
                        return atob(t);
                      };
                    }
                  ),
                  /***/
                  2642: (
                    /***/
                    function(p, u, t) {
                      p.exports = a;
                      var r = t(727);
                      function i(l) {
                        for (var o = 0, y = 0; y < l.length; ++y)
                          o += l[y];
                        return o;
                      }
                      function a(l, o) {
                        for (var y = o.length, g = new Array(y + 1), x = 0; x < y; ++x) {
                          for (var c = new Array(y + 1), v = 0; v <= y; ++v)
                            c[v] = l[v][x];
                          g[x] = c;
                        }
                        g[y] = new Array(y + 1);
                        for (var x = 0; x <= y; ++x)
                          g[y][x] = 1;
                        for (var f = new Array(y + 1), x = 0; x < y; ++x)
                          f[x] = o[x];
                        f[y] = 1;
                        var _ = r(g, f), S = i(_[y + 1]);
                        S === 0 && (S = 1);
                        for (var M = new Array(y + 1), x = 0; x <= y; ++x)
                          M[x] = i(_[x]) / S;
                        return M;
                      }
                    }
                  ),
                  /***/
                  7507: (
                    /***/
                    function(p, u) {
                      u.byteLength = g, u.toByteArray = c, u.fromByteArray = _;
                      for (var t = [], r = [], i = typeof Uint8Array < "u" ? Uint8Array : Array, a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", l = 0, o = a.length; l < o; ++l)
                        t[l] = a[l], r[a.charCodeAt(l)] = l;
                      r[45] = 62, r[95] = 63;
                      function y(S) {
                        var M = S.length;
                        if (M % 4 > 0)
                          throw new Error("Invalid string. Length must be a multiple of 4");
                        var C = S.indexOf("=");
                        C === -1 && (C = M);
                        var m = C === M ? 0 : 4 - C % 4;
                        return [C, m];
                      }
                      function g(S) {
                        var M = y(S), C = M[0], m = M[1];
                        return (C + m) * 3 / 4 - m;
                      }
                      function x(S, M, C) {
                        return (M + C) * 3 / 4 - C;
                      }
                      function c(S) {
                        var M, C = y(S), m = C[0], L = C[1], d = new i(x(S, m, L)), h = 0, E = L > 0 ? m - 4 : m, w;
                        for (w = 0; w < E; w += 4)
                          M = r[S.charCodeAt(w)] << 18 | r[S.charCodeAt(w + 1)] << 12 | r[S.charCodeAt(w + 2)] << 6 | r[S.charCodeAt(w + 3)], d[h++] = M >> 16 & 255, d[h++] = M >> 8 & 255, d[h++] = M & 255;
                        return L === 2 && (M = r[S.charCodeAt(w)] << 2 | r[S.charCodeAt(w + 1)] >> 4, d[h++] = M & 255), L === 1 && (M = r[S.charCodeAt(w)] << 10 | r[S.charCodeAt(w + 1)] << 4 | r[S.charCodeAt(w + 2)] >> 2, d[h++] = M >> 8 & 255, d[h++] = M & 255), d;
                      }
                      function v(S) {
                        return t[S >> 18 & 63] + t[S >> 12 & 63] + t[S >> 6 & 63] + t[S & 63];
                      }
                      function f(S, M, C) {
                        for (var m, L = [], d = M; d < C; d += 3)
                          m = (S[d] << 16 & 16711680) + (S[d + 1] << 8 & 65280) + (S[d + 2] & 255), L.push(v(m));
                        return L.join("");
                      }
                      function _(S) {
                        for (var M, C = S.length, m = C % 3, L = [], d = 16383, h = 0, E = C - m; h < E; h += d)
                          L.push(f(S, h, h + d > E ? E : h + d));
                        return m === 1 ? (M = S[C - 1], L.push(t[M >> 2] + t[M << 4 & 63] + "==")) : m === 2 && (M = (S[C - 2] << 8) + S[C - 1], L.push(t[M >> 10] + t[M >> 4 & 63] + t[M << 2 & 63] + "=")), L.join("");
                      }
                    }
                  ),
                  /***/
                  3865: (
                    /***/
                    function(p, u, t) {
                      var r = t(869);
                      p.exports = i;
                      function i(a, l) {
                        return r(a[0].mul(l[1]).add(l[0].mul(a[1])), a[1].mul(l[1]));
                      }
                    }
                  ),
                  /***/
                  1318: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r) {
                        return t[0].mul(r[1]).cmp(r[0].mul(t[1]));
                      }
                    }
                  ),
                  /***/
                  8697: (
                    /***/
                    function(p, u, t) {
                      var r = t(869);
                      p.exports = i;
                      function i(a, l) {
                        return r(a[0].mul(l[1]), a[1].mul(l[0]));
                      }
                    }
                  ),
                  /***/
                  7842: (
                    /***/
                    function(p, u, t) {
                      var r = t(6330), i = t(1533), a = t(2651), l = t(4387), o = t(869), y = t(8697);
                      p.exports = g;
                      function g(x, c) {
                        if (r(x))
                          return c ? y(x, g(c)) : [x[0].clone(), x[1].clone()];
                        var v = 0, f, _;
                        if (i(x))
                          f = x.clone();
                        else if (typeof x == "string")
                          f = l(x);
                        else {
                          if (x === 0)
                            return [a(0), a(1)];
                          if (x === Math.floor(x))
                            f = a(x);
                          else {
                            for (; x !== Math.floor(x); )
                              x = x * Math.pow(2, 256), v -= 256;
                            f = a(x);
                          }
                        }
                        if (r(c))
                          f.mul(c[1]), _ = c[0].clone();
                        else if (i(c))
                          _ = c.clone();
                        else if (typeof c == "string")
                          _ = l(c);
                        else if (!c)
                          _ = a(1);
                        else if (c === Math.floor(c))
                          _ = a(c);
                        else {
                          for (; c !== Math.floor(c); )
                            c = c * Math.pow(2, 256), v += 256;
                          _ = a(c);
                        }
                        return v > 0 ? f = f.ushln(v) : v < 0 && (_ = _.ushln(-v)), o(f, _);
                      }
                    }
                  ),
                  /***/
                  6330: (
                    /***/
                    function(p, u, t) {
                      var r = t(1533);
                      p.exports = i;
                      function i(a) {
                        return Array.isArray(a) && a.length === 2 && r(a[0]) && r(a[1]);
                      }
                    }
                  ),
                  /***/
                  5716: (
                    /***/
                    function(p, u, t) {
                      var r = t(6859);
                      p.exports = i;
                      function i(a) {
                        return a.cmp(new r(0));
                      }
                    }
                  ),
                  /***/
                  1369: (
                    /***/
                    function(p, u, t) {
                      var r = t(5716);
                      p.exports = i;
                      function i(a) {
                        var l = a.length, o = a.words, y = 0;
                        if (l === 1)
                          y = o[0];
                        else if (l === 2)
                          y = o[0] + o[1] * 67108864;
                        else
                          for (var g = 0; g < l; g++) {
                            var x = o[g];
                            y += x * Math.pow(67108864, g);
                          }
                        return r(a) * y;
                      }
                    }
                  ),
                  /***/
                  4025: (
                    /***/
                    function(p, u, t) {
                      var r = t(2361), i = t(8828).countTrailingZeros;
                      p.exports = a;
                      function a(l) {
                        var o = i(r.lo(l));
                        if (o < 32)
                          return o;
                        var y = i(r.hi(l));
                        return y > 20 ? 52 : y + 32;
                      }
                    }
                  ),
                  /***/
                  1533: (
                    /***/
                    function(p, u, t) {
                      t(6859), p.exports = r;
                      function r(i) {
                        return i && typeof i == "object" && !!i.words;
                      }
                    }
                  ),
                  /***/
                  2651: (
                    /***/
                    function(p, u, t) {
                      var r = t(6859), i = t(2361);
                      p.exports = a;
                      function a(l) {
                        var o = i.exponent(l);
                        return o < 52 ? new r(l) : new r(l * Math.pow(2, 52 - o)).ushln(o - 52);
                      }
                    }
                  ),
                  /***/
                  869: (
                    /***/
                    function(p, u, t) {
                      var r = t(2651), i = t(5716);
                      p.exports = a;
                      function a(l, o) {
                        var y = i(l), g = i(o);
                        if (y === 0)
                          return [r(0), r(1)];
                        if (g === 0)
                          return [r(0), r(0)];
                        g < 0 && (l = l.neg(), o = o.neg());
                        var x = l.gcd(o);
                        return x.cmpn(1) ? [l.div(x), o.div(x)] : [l, o];
                      }
                    }
                  ),
                  /***/
                  4387: (
                    /***/
                    function(p, u, t) {
                      var r = t(6859);
                      p.exports = i;
                      function i(a) {
                        return new r(a);
                      }
                    }
                  ),
                  /***/
                  6504: (
                    /***/
                    function(p, u, t) {
                      var r = t(869);
                      p.exports = i;
                      function i(a, l) {
                        return r(a[0].mul(l[0]), a[1].mul(l[1]));
                      }
                    }
                  ),
                  /***/
                  7721: (
                    /***/
                    function(p, u, t) {
                      var r = t(5716);
                      p.exports = i;
                      function i(a) {
                        return r(a[0]) * r(a[1]);
                      }
                    }
                  ),
                  /***/
                  5572: (
                    /***/
                    function(p, u, t) {
                      var r = t(869);
                      p.exports = i;
                      function i(a, l) {
                        return r(a[0].mul(l[1]).sub(a[1].mul(l[0])), a[1].mul(l[1]));
                      }
                    }
                  ),
                  /***/
                  946: (
                    /***/
                    function(p, u, t) {
                      var r = t(1369), i = t(4025);
                      p.exports = a;
                      function a(l) {
                        var o = l[0], y = l[1];
                        if (o.cmpn(0) === 0)
                          return 0;
                        var g = o.abs().divmod(y.abs()), x = g.div, c = r(x), v = g.mod, f = o.negative !== y.negative ? -1 : 1;
                        if (v.cmpn(0) === 0)
                          return f * c;
                        if (c) {
                          var _ = i(c) + 4, S = r(v.ushln(_).divRound(y));
                          return f * (c + S * Math.pow(2, -_));
                        } else {
                          var M = y.bitLength() - v.bitLength() + 53, S = r(v.ushln(M).divRound(y));
                          return M < 1023 ? f * S * Math.pow(2, -M) : (S *= Math.pow(2, -1023), f * S * Math.pow(2, 1023 - M));
                        }
                      }
                    }
                  ),
                  /***/
                  2478: (
                    /***/
                    function(p) {
                      function u(o, y, g, x, c) {
                        for (var v = c + 1; x <= c; ) {
                          var f = x + c >>> 1, _ = o[f], S = g !== void 0 ? g(_, y) : _ - y;
                          S >= 0 ? (v = f, c = f - 1) : x = f + 1;
                        }
                        return v;
                      }
                      function t(o, y, g, x, c) {
                        for (var v = c + 1; x <= c; ) {
                          var f = x + c >>> 1, _ = o[f], S = g !== void 0 ? g(_, y) : _ - y;
                          S > 0 ? (v = f, c = f - 1) : x = f + 1;
                        }
                        return v;
                      }
                      function r(o, y, g, x, c) {
                        for (var v = x - 1; x <= c; ) {
                          var f = x + c >>> 1, _ = o[f], S = g !== void 0 ? g(_, y) : _ - y;
                          S < 0 ? (v = f, x = f + 1) : c = f - 1;
                        }
                        return v;
                      }
                      function i(o, y, g, x, c) {
                        for (var v = x - 1; x <= c; ) {
                          var f = x + c >>> 1, _ = o[f], S = g !== void 0 ? g(_, y) : _ - y;
                          S <= 0 ? (v = f, x = f + 1) : c = f - 1;
                        }
                        return v;
                      }
                      function a(o, y, g, x, c) {
                        for (; x <= c; ) {
                          var v = x + c >>> 1, f = o[v], _ = g !== void 0 ? g(f, y) : f - y;
                          if (_ === 0)
                            return v;
                          _ <= 0 ? x = v + 1 : c = v - 1;
                        }
                        return -1;
                      }
                      function l(o, y, g, x, c, v) {
                        return typeof g == "function" ? v(o, y, g, x === void 0 ? 0 : x | 0, c === void 0 ? o.length - 1 : c | 0) : v(o, y, void 0, g === void 0 ? 0 : g | 0, x === void 0 ? o.length - 1 : x | 0);
                      }
                      p.exports = { ge: function(o, y, g, x, c) {
                        return l(o, y, g, x, c, u);
                      }, gt: function(o, y, g, x, c) {
                        return l(o, y, g, x, c, t);
                      }, lt: function(o, y, g, x, c) {
                        return l(o, y, g, x, c, r);
                      }, le: function(o, y, g, x, c) {
                        return l(o, y, g, x, c, i);
                      }, eq: function(o, y, g, x, c) {
                        return l(o, y, g, x, c, a);
                      } };
                    }
                  ),
                  /***/
                  8828: (
                    /***/
                    function(p, u) {
                      "use restrict";
                      var t = 32;
                      u.INT_BITS = t, u.INT_MAX = 2147483647, u.INT_MIN = -1 << t - 1, u.sign = function(a) {
                        return (a > 0) - (a < 0);
                      }, u.abs = function(a) {
                        var l = a >> t - 1;
                        return (a ^ l) - l;
                      }, u.min = function(a, l) {
                        return l ^ (a ^ l) & -(a < l);
                      }, u.max = function(a, l) {
                        return a ^ (a ^ l) & -(a < l);
                      }, u.isPow2 = function(a) {
                        return !(a & a - 1) && !!a;
                      }, u.log2 = function(a) {
                        var l, o;
                        return l = (a > 65535) << 4, a >>>= l, o = (a > 255) << 3, a >>>= o, l |= o, o = (a > 15) << 2, a >>>= o, l |= o, o = (a > 3) << 1, a >>>= o, l |= o, l | a >> 1;
                      }, u.log10 = function(a) {
                        return a >= 1e9 ? 9 : a >= 1e8 ? 8 : a >= 1e7 ? 7 : a >= 1e6 ? 6 : a >= 1e5 ? 5 : a >= 1e4 ? 4 : a >= 1e3 ? 3 : a >= 100 ? 2 : a >= 10 ? 1 : 0;
                      }, u.popCount = function(a) {
                        return a = a - (a >>> 1 & 1431655765), a = (a & 858993459) + (a >>> 2 & 858993459), (a + (a >>> 4) & 252645135) * 16843009 >>> 24;
                      };
                      function r(a) {
                        var l = 32;
                        return a &= -a, a && l--, a & 65535 && (l -= 16), a & 16711935 && (l -= 8), a & 252645135 && (l -= 4), a & 858993459 && (l -= 2), a & 1431655765 && (l -= 1), l;
                      }
                      u.countTrailingZeros = r, u.nextPow2 = function(a) {
                        return a += a === 0, --a, a |= a >>> 1, a |= a >>> 2, a |= a >>> 4, a |= a >>> 8, a |= a >>> 16, a + 1;
                      }, u.prevPow2 = function(a) {
                        return a |= a >>> 1, a |= a >>> 2, a |= a >>> 4, a |= a >>> 8, a |= a >>> 16, a - (a >>> 1);
                      }, u.parity = function(a) {
                        return a ^= a >>> 16, a ^= a >>> 8, a ^= a >>> 4, a &= 15, 27030 >>> a & 1;
                      };
                      var i = new Array(256);
                      (function(a) {
                        for (var l = 0; l < 256; ++l) {
                          var o = l, y = l, g = 7;
                          for (o >>>= 1; o; o >>>= 1)
                            y <<= 1, y |= o & 1, --g;
                          a[l] = y << g & 255;
                        }
                      })(i), u.reverse = function(a) {
                        return i[a & 255] << 24 | i[a >>> 8 & 255] << 16 | i[a >>> 16 & 255] << 8 | i[a >>> 24 & 255];
                      }, u.interleave2 = function(a, l) {
                        return a &= 65535, a = (a | a << 8) & 16711935, a = (a | a << 4) & 252645135, a = (a | a << 2) & 858993459, a = (a | a << 1) & 1431655765, l &= 65535, l = (l | l << 8) & 16711935, l = (l | l << 4) & 252645135, l = (l | l << 2) & 858993459, l = (l | l << 1) & 1431655765, a | l << 1;
                      }, u.deinterleave2 = function(a, l) {
                        return a = a >>> l & 1431655765, a = (a | a >>> 1) & 858993459, a = (a | a >>> 2) & 252645135, a = (a | a >>> 4) & 16711935, a = (a | a >>> 16) & 65535, a << 16 >> 16;
                      }, u.interleave3 = function(a, l, o) {
                        return a &= 1023, a = (a | a << 16) & 4278190335, a = (a | a << 8) & 251719695, a = (a | a << 4) & 3272356035, a = (a | a << 2) & 1227133513, l &= 1023, l = (l | l << 16) & 4278190335, l = (l | l << 8) & 251719695, l = (l | l << 4) & 3272356035, l = (l | l << 2) & 1227133513, a |= l << 1, o &= 1023, o = (o | o << 16) & 4278190335, o = (o | o << 8) & 251719695, o = (o | o << 4) & 3272356035, o = (o | o << 2) & 1227133513, a | o << 2;
                      }, u.deinterleave3 = function(a, l) {
                        return a = a >>> l & 1227133513, a = (a | a >>> 2) & 3272356035, a = (a | a >>> 4) & 251719695, a = (a | a >>> 8) & 4278190335, a = (a | a >>> 16) & 1023, a << 22 >> 22;
                      }, u.nextCombination = function(a) {
                        var l = a | a - 1;
                        return l + 1 | (~l & -~l) - 1 >>> r(a) + 1;
                      };
                    }
                  ),
                  /***/
                  6859: (
                    /***/
                    function(p, u, t) {
                      p = t.nmd(p), function(r, i) {
                        function a(H, F) {
                          if (!H) throw new Error(F || "Assertion failed");
                        }
                        function l(H, F) {
                          H.super_ = F;
                          var G = function() {
                          };
                          G.prototype = F.prototype, H.prototype = new G(), H.prototype.constructor = H;
                        }
                        function o(H, F, G) {
                          if (o.isBN(H))
                            return H;
                          this.negative = 0, this.words = null, this.length = 0, this.red = null, H !== null && ((F === "le" || F === "be") && (G = F, F = 10), this._init(H || 0, F || 10, G || "be"));
                        }
                        typeof r == "object" ? r.exports = o : i.BN = o, o.BN = o, o.wordSize = 26;
                        var y;
                        try {
                          typeof window < "u" && typeof window.Buffer < "u" ? y = window.Buffer : y = t(7790).Buffer;
                        } catch {
                        }
                        o.isBN = function(F) {
                          return F instanceof o ? !0 : F !== null && typeof F == "object" && F.constructor.wordSize === o.wordSize && Array.isArray(F.words);
                        }, o.max = function(F, G) {
                          return F.cmp(G) > 0 ? F : G;
                        }, o.min = function(F, G) {
                          return F.cmp(G) < 0 ? F : G;
                        }, o.prototype._init = function(F, G, q) {
                          if (typeof F == "number")
                            return this._initNumber(F, G, q);
                          if (typeof F == "object")
                            return this._initArray(F, G, q);
                          G === "hex" && (G = 16), a(G === (G | 0) && G >= 2 && G <= 36), F = F.toString().replace(/\s+/g, "");
                          var rt = 0;
                          F[0] === "-" && (rt++, this.negative = 1), rt < F.length && (G === 16 ? this._parseHex(F, rt, q) : (this._parseBase(F, G, rt), q === "le" && this._initArray(this.toArray(), G, q)));
                        }, o.prototype._initNumber = function(F, G, q) {
                          F < 0 && (this.negative = 1, F = -F), F < 67108864 ? (this.words = [F & 67108863], this.length = 1) : F < 4503599627370496 ? (this.words = [F & 67108863, F / 67108864 & 67108863], this.length = 2) : (a(F < 9007199254740992), this.words = [F & 67108863, F / 67108864 & 67108863, 1], this.length = 3), q === "le" && this._initArray(this.toArray(), G, q);
                        }, o.prototype._initArray = function(F, G, q) {
                          if (a(typeof F.length == "number"), F.length <= 0)
                            return this.words = [0], this.length = 1, this;
                          this.length = Math.ceil(F.length / 3), this.words = new Array(this.length);
                          for (var rt = 0; rt < this.length; rt++)
                            this.words[rt] = 0;
                          var st, vt, ht = 0;
                          if (q === "be")
                            for (rt = F.length - 1, st = 0; rt >= 0; rt -= 3)
                              vt = F[rt] | F[rt - 1] << 8 | F[rt - 2] << 16, this.words[st] |= vt << ht & 67108863, this.words[st + 1] = vt >>> 26 - ht & 67108863, ht += 24, ht >= 26 && (ht -= 26, st++);
                          else if (q === "le")
                            for (rt = 0, st = 0; rt < F.length; rt += 3)
                              vt = F[rt] | F[rt + 1] << 8 | F[rt + 2] << 16, this.words[st] |= vt << ht & 67108863, this.words[st + 1] = vt >>> 26 - ht & 67108863, ht += 24, ht >= 26 && (ht -= 26, st++);
                          return this.strip();
                        };
                        function g(H, F) {
                          var G = H.charCodeAt(F);
                          return G >= 65 && G <= 70 ? G - 55 : G >= 97 && G <= 102 ? G - 87 : G - 48 & 15;
                        }
                        function x(H, F, G) {
                          var q = g(H, G);
                          return G - 1 >= F && (q |= g(H, G - 1) << 4), q;
                        }
                        o.prototype._parseHex = function(F, G, q) {
                          this.length = Math.ceil((F.length - G) / 6), this.words = new Array(this.length);
                          for (var rt = 0; rt < this.length; rt++)
                            this.words[rt] = 0;
                          var st = 0, vt = 0, ht;
                          if (q === "be")
                            for (rt = F.length - 1; rt >= G; rt -= 2)
                              ht = x(F, G, rt) << st, this.words[vt] |= ht & 67108863, st >= 18 ? (st -= 18, vt += 1, this.words[vt] |= ht >>> 26) : st += 8;
                          else {
                            var et = F.length - G;
                            for (rt = et % 2 === 0 ? G + 1 : G; rt < F.length; rt += 2)
                              ht = x(F, G, rt) << st, this.words[vt] |= ht & 67108863, st >= 18 ? (st -= 18, vt += 1, this.words[vt] |= ht >>> 26) : st += 8;
                          }
                          this.strip();
                        };
                        function c(H, F, G, q) {
                          for (var rt = 0, st = Math.min(H.length, G), vt = F; vt < st; vt++) {
                            var ht = H.charCodeAt(vt) - 48;
                            rt *= q, ht >= 49 ? rt += ht - 49 + 10 : ht >= 17 ? rt += ht - 17 + 10 : rt += ht;
                          }
                          return rt;
                        }
                        o.prototype._parseBase = function(F, G, q) {
                          this.words = [0], this.length = 1;
                          for (var rt = 0, st = 1; st <= 67108863; st *= G)
                            rt++;
                          rt--, st = st / G | 0;
                          for (var vt = F.length - q, ht = vt % rt, et = Math.min(vt, vt - ht) + q, Q = 0, j = q; j < et; j += rt)
                            Q = c(F, j, j + rt, G), this.imuln(st), this.words[0] + Q < 67108864 ? this.words[0] += Q : this._iaddn(Q);
                          if (ht !== 0) {
                            var at = 1;
                            for (Q = c(F, j, F.length, G), j = 0; j < ht; j++)
                              at *= G;
                            this.imuln(at), this.words[0] + Q < 67108864 ? this.words[0] += Q : this._iaddn(Q);
                          }
                          this.strip();
                        }, o.prototype.copy = function(F) {
                          F.words = new Array(this.length);
                          for (var G = 0; G < this.length; G++)
                            F.words[G] = this.words[G];
                          F.length = this.length, F.negative = this.negative, F.red = this.red;
                        }, o.prototype.clone = function() {
                          var F = new o(null);
                          return this.copy(F), F;
                        }, o.prototype._expand = function(F) {
                          for (; this.length < F; )
                            this.words[this.length++] = 0;
                          return this;
                        }, o.prototype.strip = function() {
                          for (; this.length > 1 && this.words[this.length - 1] === 0; )
                            this.length--;
                          return this._normSign();
                        }, o.prototype._normSign = function() {
                          return this.length === 1 && this.words[0] === 0 && (this.negative = 0), this;
                        }, o.prototype.inspect = function() {
                          return (this.red ? "<BN-R: " : "<BN: ") + this.toString(16) + ">";
                        };
                        var v = ["", "0", "00", "000", "0000", "00000", "000000", "0000000", "00000000", "000000000", "0000000000", "00000000000", "000000000000", "0000000000000", "00000000000000", "000000000000000", "0000000000000000", "00000000000000000", "000000000000000000", "0000000000000000000", "00000000000000000000", "000000000000000000000", "0000000000000000000000", "00000000000000000000000", "000000000000000000000000", "0000000000000000000000000"], f = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], _ = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];
                        o.prototype.toString = function(F, G) {
                          F = F || 10, G = G | 0 || 1;
                          var q;
                          if (F === 16 || F === "hex") {
                            q = "";
                            for (var rt = 0, st = 0, vt = 0; vt < this.length; vt++) {
                              var ht = this.words[vt], et = ((ht << rt | st) & 16777215).toString(16);
                              st = ht >>> 24 - rt & 16777215, st !== 0 || vt !== this.length - 1 ? q = v[6 - et.length] + et + q : q = et + q, rt += 2, rt >= 26 && (rt -= 26, vt--);
                            }
                            for (st !== 0 && (q = st.toString(16) + q); q.length % G !== 0; )
                              q = "0" + q;
                            return this.negative !== 0 && (q = "-" + q), q;
                          }
                          if (F === (F | 0) && F >= 2 && F <= 36) {
                            var Q = f[F], j = _[F];
                            q = "";
                            var at = this.clone();
                            for (at.negative = 0; !at.isZero(); ) {
                              var ut = at.modn(j).toString(F);
                              at = at.idivn(j), at.isZero() ? q = ut + q : q = v[Q - ut.length] + ut + q;
                            }
                            for (this.isZero() && (q = "0" + q); q.length % G !== 0; )
                              q = "0" + q;
                            return this.negative !== 0 && (q = "-" + q), q;
                          }
                          a(!1, "Base should be between 2 and 36");
                        }, o.prototype.toNumber = function() {
                          var F = this.words[0];
                          return this.length === 2 ? F += this.words[1] * 67108864 : this.length === 3 && this.words[2] === 1 ? F += 4503599627370496 + this.words[1] * 67108864 : this.length > 2 && a(!1, "Number can only safely store up to 53 bits"), this.negative !== 0 ? -F : F;
                        }, o.prototype.toJSON = function() {
                          return this.toString(16);
                        }, o.prototype.toBuffer = function(F, G) {
                          return a(typeof y < "u"), this.toArrayLike(y, F, G);
                        }, o.prototype.toArray = function(F, G) {
                          return this.toArrayLike(Array, F, G);
                        }, o.prototype.toArrayLike = function(F, G, q) {
                          var rt = this.byteLength(), st = q || Math.max(1, rt);
                          a(rt <= st, "byte array longer than desired length"), a(st > 0, "Requested array length <= 0"), this.strip();
                          var vt = G === "le", ht = new F(st), et, Q, j = this.clone();
                          if (vt) {
                            for (Q = 0; !j.isZero(); Q++)
                              et = j.andln(255), j.iushrn(8), ht[Q] = et;
                            for (; Q < st; Q++)
                              ht[Q] = 0;
                          } else {
                            for (Q = 0; Q < st - rt; Q++)
                              ht[Q] = 0;
                            for (Q = 0; !j.isZero(); Q++)
                              et = j.andln(255), j.iushrn(8), ht[st - Q - 1] = et;
                          }
                          return ht;
                        }, Math.clz32 ? o.prototype._countBits = function(F) {
                          return 32 - Math.clz32(F);
                        } : o.prototype._countBits = function(F) {
                          var G = F, q = 0;
                          return G >= 4096 && (q += 13, G >>>= 13), G >= 64 && (q += 7, G >>>= 7), G >= 8 && (q += 4, G >>>= 4), G >= 2 && (q += 2, G >>>= 2), q + G;
                        }, o.prototype._zeroBits = function(F) {
                          if (F === 0) return 26;
                          var G = F, q = 0;
                          return G & 8191 || (q += 13, G >>>= 13), G & 127 || (q += 7, G >>>= 7), G & 15 || (q += 4, G >>>= 4), G & 3 || (q += 2, G >>>= 2), G & 1 || q++, q;
                        }, o.prototype.bitLength = function() {
                          var F = this.words[this.length - 1], G = this._countBits(F);
                          return (this.length - 1) * 26 + G;
                        };
                        function S(H) {
                          for (var F = new Array(H.bitLength()), G = 0; G < F.length; G++) {
                            var q = G / 26 | 0, rt = G % 26;
                            F[G] = (H.words[q] & 1 << rt) >>> rt;
                          }
                          return F;
                        }
                        o.prototype.zeroBits = function() {
                          if (this.isZero()) return 0;
                          for (var F = 0, G = 0; G < this.length; G++) {
                            var q = this._zeroBits(this.words[G]);
                            if (F += q, q !== 26) break;
                          }
                          return F;
                        }, o.prototype.byteLength = function() {
                          return Math.ceil(this.bitLength() / 8);
                        }, o.prototype.toTwos = function(F) {
                          return this.negative !== 0 ? this.abs().inotn(F).iaddn(1) : this.clone();
                        }, o.prototype.fromTwos = function(F) {
                          return this.testn(F - 1) ? this.notn(F).iaddn(1).ineg() : this.clone();
                        }, o.prototype.isNeg = function() {
                          return this.negative !== 0;
                        }, o.prototype.neg = function() {
                          return this.clone().ineg();
                        }, o.prototype.ineg = function() {
                          return this.isZero() || (this.negative ^= 1), this;
                        }, o.prototype.iuor = function(F) {
                          for (; this.length < F.length; )
                            this.words[this.length++] = 0;
                          for (var G = 0; G < F.length; G++)
                            this.words[G] = this.words[G] | F.words[G];
                          return this.strip();
                        }, o.prototype.ior = function(F) {
                          return a((this.negative | F.negative) === 0), this.iuor(F);
                        }, o.prototype.or = function(F) {
                          return this.length > F.length ? this.clone().ior(F) : F.clone().ior(this);
                        }, o.prototype.uor = function(F) {
                          return this.length > F.length ? this.clone().iuor(F) : F.clone().iuor(this);
                        }, o.prototype.iuand = function(F) {
                          var G;
                          this.length > F.length ? G = F : G = this;
                          for (var q = 0; q < G.length; q++)
                            this.words[q] = this.words[q] & F.words[q];
                          return this.length = G.length, this.strip();
                        }, o.prototype.iand = function(F) {
                          return a((this.negative | F.negative) === 0), this.iuand(F);
                        }, o.prototype.and = function(F) {
                          return this.length > F.length ? this.clone().iand(F) : F.clone().iand(this);
                        }, o.prototype.uand = function(F) {
                          return this.length > F.length ? this.clone().iuand(F) : F.clone().iuand(this);
                        }, o.prototype.iuxor = function(F) {
                          var G, q;
                          this.length > F.length ? (G = this, q = F) : (G = F, q = this);
                          for (var rt = 0; rt < q.length; rt++)
                            this.words[rt] = G.words[rt] ^ q.words[rt];
                          if (this !== G)
                            for (; rt < G.length; rt++)
                              this.words[rt] = G.words[rt];
                          return this.length = G.length, this.strip();
                        }, o.prototype.ixor = function(F) {
                          return a((this.negative | F.negative) === 0), this.iuxor(F);
                        }, o.prototype.xor = function(F) {
                          return this.length > F.length ? this.clone().ixor(F) : F.clone().ixor(this);
                        }, o.prototype.uxor = function(F) {
                          return this.length > F.length ? this.clone().iuxor(F) : F.clone().iuxor(this);
                        }, o.prototype.inotn = function(F) {
                          a(typeof F == "number" && F >= 0);
                          var G = Math.ceil(F / 26) | 0, q = F % 26;
                          this._expand(G), q > 0 && G--;
                          for (var rt = 0; rt < G; rt++)
                            this.words[rt] = ~this.words[rt] & 67108863;
                          return q > 0 && (this.words[rt] = ~this.words[rt] & 67108863 >> 26 - q), this.strip();
                        }, o.prototype.notn = function(F) {
                          return this.clone().inotn(F);
                        }, o.prototype.setn = function(F, G) {
                          a(typeof F == "number" && F >= 0);
                          var q = F / 26 | 0, rt = F % 26;
                          return this._expand(q + 1), G ? this.words[q] = this.words[q] | 1 << rt : this.words[q] = this.words[q] & ~(1 << rt), this.strip();
                        }, o.prototype.iadd = function(F) {
                          var G;
                          if (this.negative !== 0 && F.negative === 0)
                            return this.negative = 0, G = this.isub(F), this.negative ^= 1, this._normSign();
                          if (this.negative === 0 && F.negative !== 0)
                            return F.negative = 0, G = this.isub(F), F.negative = 1, G._normSign();
                          var q, rt;
                          this.length > F.length ? (q = this, rt = F) : (q = F, rt = this);
                          for (var st = 0, vt = 0; vt < rt.length; vt++)
                            G = (q.words[vt] | 0) + (rt.words[vt] | 0) + st, this.words[vt] = G & 67108863, st = G >>> 26;
                          for (; st !== 0 && vt < q.length; vt++)
                            G = (q.words[vt] | 0) + st, this.words[vt] = G & 67108863, st = G >>> 26;
                          if (this.length = q.length, st !== 0)
                            this.words[this.length] = st, this.length++;
                          else if (q !== this)
                            for (; vt < q.length; vt++)
                              this.words[vt] = q.words[vt];
                          return this;
                        }, o.prototype.add = function(F) {
                          var G;
                          return F.negative !== 0 && this.negative === 0 ? (F.negative = 0, G = this.sub(F), F.negative ^= 1, G) : F.negative === 0 && this.negative !== 0 ? (this.negative = 0, G = F.sub(this), this.negative = 1, G) : this.length > F.length ? this.clone().iadd(F) : F.clone().iadd(this);
                        }, o.prototype.isub = function(F) {
                          if (F.negative !== 0) {
                            F.negative = 0;
                            var G = this.iadd(F);
                            return F.negative = 1, G._normSign();
                          } else if (this.negative !== 0)
                            return this.negative = 0, this.iadd(F), this.negative = 1, this._normSign();
                          var q = this.cmp(F);
                          if (q === 0)
                            return this.negative = 0, this.length = 1, this.words[0] = 0, this;
                          var rt, st;
                          q > 0 ? (rt = this, st = F) : (rt = F, st = this);
                          for (var vt = 0, ht = 0; ht < st.length; ht++)
                            G = (rt.words[ht] | 0) - (st.words[ht] | 0) + vt, vt = G >> 26, this.words[ht] = G & 67108863;
                          for (; vt !== 0 && ht < rt.length; ht++)
                            G = (rt.words[ht] | 0) + vt, vt = G >> 26, this.words[ht] = G & 67108863;
                          if (vt === 0 && ht < rt.length && rt !== this)
                            for (; ht < rt.length; ht++)
                              this.words[ht] = rt.words[ht];
                          return this.length = Math.max(this.length, ht), rt !== this && (this.negative = 1), this.strip();
                        }, o.prototype.sub = function(F) {
                          return this.clone().isub(F);
                        };
                        function M(H, F, G) {
                          G.negative = F.negative ^ H.negative;
                          var q = H.length + F.length | 0;
                          G.length = q, q = q - 1 | 0;
                          var rt = H.words[0] | 0, st = F.words[0] | 0, vt = rt * st, ht = vt & 67108863, et = vt / 67108864 | 0;
                          G.words[0] = ht;
                          for (var Q = 1; Q < q; Q++) {
                            for (var j = et >>> 26, at = et & 67108863, ut = Math.min(Q, F.length - 1), nt = Math.max(0, Q - H.length + 1); nt <= ut; nt++) {
                              var X = Q - nt | 0;
                              rt = H.words[X] | 0, st = F.words[nt] | 0, vt = rt * st + at, j += vt / 67108864 | 0, at = vt & 67108863;
                            }
                            G.words[Q] = at | 0, et = j | 0;
                          }
                          return et !== 0 ? G.words[Q] = et | 0 : G.length--, G.strip();
                        }
                        var C = function(F, G, q) {
                          var rt = F.words, st = G.words, vt = q.words, ht = 0, et, Q, j, at = rt[0] | 0, ut = at & 8191, nt = at >>> 13, X = rt[1] | 0, ct = X & 8191, lt = X >>> 13, pt = rt[2] | 0, wt = pt & 8191, Et = pt >>> 13, Ct = rt[3] | 0, Gt = Ct & 8191, Jt = Ct >>> 13, Qt = rt[4] | 0, Vt = Qt & 8191, zt = Qt >>> 13, Rt = rt[5] | 0, Wt = Rt & 8191, kt = Rt >>> 13, re = rt[6] | 0, ge = re & 8191, _e = re >>> 13, ce = rt[7] | 0, ae = ce & 8191, Se = ce >>> 13, ze = rt[8] | 0, Ne = ze & 8191, Ve = ze >>> 13, Oe = rt[9] | 0, ur = Oe & 8191, ie = Oe >>> 13, $t = st[0] | 0, jt = $t & 8191, ee = $t >>> 13, Bt = st[1] | 0, Xt = Bt & 8191, Zt = Bt >>> 13, ye = st[2] | 0, Mt = ye & 8191, St = ye >>> 13, Lt = st[3] | 0, te = Lt & 8191, fe = Lt >>> 13, Me = st[4] | 0, ir = Me & 8191, mr = Me >>> 13, Xe = st[5] | 0, xe = Xe & 8191, me = Xe >>> 13, Le = st[6] | 0, qt = Le & 8191, De = Le >>> 13, Je = st[7] | 0, dr = Je & 8191, qe = Je >>> 13, we = st[8] | 0, ue = we & 8191, Pe = we >>> 13, Ue = st[9] | 0, Ye = Ue & 8191, rr = Ue >>> 13;
                          q.negative = F.negative ^ G.negative, q.length = 19, et = Math.imul(ut, jt), Q = Math.imul(ut, ee), Q = Q + Math.imul(nt, jt) | 0, j = Math.imul(nt, ee);
                          var lr = (ht + et | 0) + ((Q & 8191) << 13) | 0;
                          ht = (j + (Q >>> 13) | 0) + (lr >>> 26) | 0, lr &= 67108863, et = Math.imul(ct, jt), Q = Math.imul(ct, ee), Q = Q + Math.imul(lt, jt) | 0, j = Math.imul(lt, ee), et = et + Math.imul(ut, Xt) | 0, Q = Q + Math.imul(ut, Zt) | 0, Q = Q + Math.imul(nt, Xt) | 0, j = j + Math.imul(nt, Zt) | 0;
                          var hr = (ht + et | 0) + ((Q & 8191) << 13) | 0;
                          ht = (j + (Q >>> 13) | 0) + (hr >>> 26) | 0, hr &= 67108863, et = Math.imul(wt, jt), Q = Math.imul(wt, ee), Q = Q + Math.imul(Et, jt) | 0, j = Math.imul(Et, ee), et = et + Math.imul(ct, Xt) | 0, Q = Q + Math.imul(ct, Zt) | 0, Q = Q + Math.imul(lt, Xt) | 0, j = j + Math.imul(lt, Zt) | 0, et = et + Math.imul(ut, Mt) | 0, Q = Q + Math.imul(ut, St) | 0, Q = Q + Math.imul(nt, Mt) | 0, j = j + Math.imul(nt, St) | 0;
                          var Sr = (ht + et | 0) + ((Q & 8191) << 13) | 0;
                          ht = (j + (Q >>> 13) | 0) + (Sr >>> 26) | 0, Sr &= 67108863, et = Math.imul(Gt, jt), Q = Math.imul(Gt, ee), Q = Q + Math.imul(Jt, jt) | 0, j = Math.imul(Jt, ee), et = et + Math.imul(wt, Xt) | 0, Q = Q + Math.imul(wt, Zt) | 0, Q = Q + Math.imul(Et, Xt) | 0, j = j + Math.imul(Et, Zt) | 0, et = et + Math.imul(ct, Mt) | 0, Q = Q + Math.imul(ct, St) | 0, Q = Q + Math.imul(lt, Mt) | 0, j = j + Math.imul(lt, St) | 0, et = et + Math.imul(ut, te) | 0, Q = Q + Math.imul(ut, fe) | 0, Q = Q + Math.imul(nt, te) | 0, j = j + Math.imul(nt, fe) | 0;
                          var Dr = (ht + et | 0) + ((Q & 8191) << 13) | 0;
                          ht = (j + (Q >>> 13) | 0) + (Dr >>> 26) | 0, Dr &= 67108863, et = Math.imul(Vt, jt), Q = Math.imul(Vt, ee), Q = Q + Math.imul(zt, jt) | 0, j = Math.imul(zt, ee), et = et + Math.imul(Gt, Xt) | 0, Q = Q + Math.imul(Gt, Zt) | 0, Q = Q + Math.imul(Jt, Xt) | 0, j = j + Math.imul(Jt, Zt) | 0, et = et + Math.imul(wt, Mt) | 0, Q = Q + Math.imul(wt, St) | 0, Q = Q + Math.imul(Et, Mt) | 0, j = j + Math.imul(Et, St) | 0, et = et + Math.imul(ct, te) | 0, Q = Q + Math.imul(ct, fe) | 0, Q = Q + Math.imul(lt, te) | 0, j = j + Math.imul(lt, fe) | 0, et = et + Math.imul(ut, ir) | 0, Q = Q + Math.imul(ut, mr) | 0, Q = Q + Math.imul(nt, ir) | 0, j = j + Math.imul(nt, mr) | 0;
                          var Or = (ht + et | 0) + ((Q & 8191) << 13) | 0;
                          ht = (j + (Q >>> 13) | 0) + (Or >>> 26) | 0, Or &= 67108863, et = Math.imul(Wt, jt), Q = Math.imul(Wt, ee), Q = Q + Math.imul(kt, jt) | 0, j = Math.imul(kt, ee), et = et + Math.imul(Vt, Xt) | 0, Q = Q + Math.imul(Vt, Zt) | 0, Q = Q + Math.imul(zt, Xt) | 0, j = j + Math.imul(zt, Zt) | 0, et = et + Math.imul(Gt, Mt) | 0, Q = Q + Math.imul(Gt, St) | 0, Q = Q + Math.imul(Jt, Mt) | 0, j = j + Math.imul(Jt, St) | 0, et = et + Math.imul(wt, te) | 0, Q = Q + Math.imul(wt, fe) | 0, Q = Q + Math.imul(Et, te) | 0, j = j + Math.imul(Et, fe) | 0, et = et + Math.imul(ct, ir) | 0, Q = Q + Math.imul(ct, mr) | 0, Q = Q + Math.imul(lt, ir) | 0, j = j + Math.imul(lt, mr) | 0, et = et + Math.imul(ut, xe) | 0, Q = Q + Math.imul(ut, me) | 0, Q = Q + Math.imul(nt, xe) | 0, j = j + Math.imul(nt, me) | 0;
                          var Br = (ht + et | 0) + ((Q & 8191) << 13) | 0;
                          ht = (j + (Q >>> 13) | 0) + (Br >>> 26) | 0, Br &= 67108863, et = Math.imul(ge, jt), Q = Math.imul(ge, ee), Q = Q + Math.imul(_e, jt) | 0, j = Math.imul(_e, ee), et = et + Math.imul(Wt, Xt) | 0, Q = Q + Math.imul(Wt, Zt) | 0, Q = Q + Math.imul(kt, Xt) | 0, j = j + Math.imul(kt, Zt) | 0, et = et + Math.imul(Vt, Mt) | 0, Q = Q + Math.imul(Vt, St) | 0, Q = Q + Math.imul(zt, Mt) | 0, j = j + Math.imul(zt, St) | 0, et = et + Math.imul(Gt, te) | 0, Q = Q + Math.imul(Gt, fe) | 0, Q = Q + Math.imul(Jt, te) | 0, j = j + Math.imul(Jt, fe) | 0, et = et + Math.imul(wt, ir) | 0, Q = Q + Math.imul(wt, mr) | 0, Q = Q + Math.imul(Et, ir) | 0, j = j + Math.imul(Et, mr) | 0, et = et + Math.imul(ct, xe) | 0, Q = Q + Math.imul(ct, me) | 0, Q = Q + Math.imul(lt, xe) | 0, j = j + Math.imul(lt, me) | 0, et = et + Math.imul(ut, qt) | 0, Q = Q + Math.imul(ut, De) | 0, Q = Q + Math.imul(nt, qt) | 0, j = j + Math.imul(nt, De) | 0;
                          var Nr = (ht + et | 0) + ((Q & 8191) << 13) | 0;
                          ht = (j + (Q >>> 13) | 0) + (Nr >>> 26) | 0, Nr &= 67108863, et = Math.imul(ae, jt), Q = Math.imul(ae, ee), Q = Q + Math.imul(Se, jt) | 0, j = Math.imul(Se, ee), et = et + Math.imul(ge, Xt) | 0, Q = Q + Math.imul(ge, Zt) | 0, Q = Q + Math.imul(_e, Xt) | 0, j = j + Math.imul(_e, Zt) | 0, et = et + Math.imul(Wt, Mt) | 0, Q = Q + Math.imul(Wt, St) | 0, Q = Q + Math.imul(kt, Mt) | 0, j = j + Math.imul(kt, St) | 0, et = et + Math.imul(Vt, te) | 0, Q = Q + Math.imul(Vt, fe) | 0, Q = Q + Math.imul(zt, te) | 0, j = j + Math.imul(zt, fe) | 0, et = et + Math.imul(Gt, ir) | 0, Q = Q + Math.imul(Gt, mr) | 0, Q = Q + Math.imul(Jt, ir) | 0, j = j + Math.imul(Jt, mr) | 0, et = et + Math.imul(wt, xe) | 0, Q = Q + Math.imul(wt, me) | 0, Q = Q + Math.imul(Et, xe) | 0, j = j + Math.imul(Et, me) | 0, et = et + Math.imul(ct, qt) | 0, Q = Q + Math.imul(ct, De) | 0, Q = Q + Math.imul(lt, qt) | 0, j = j + Math.imul(lt, De) | 0, et = et + Math.imul(ut, dr) | 0, Q = Q + Math.imul(ut, qe) | 0, Q = Q + Math.imul(nt, dr) | 0, j = j + Math.imul(nt, qe) | 0;
                          var Xr = (ht + et | 0) + ((Q & 8191) << 13) | 0;
                          ht = (j + (Q >>> 13) | 0) + (Xr >>> 26) | 0, Xr &= 67108863, et = Math.imul(Ne, jt), Q = Math.imul(Ne, ee), Q = Q + Math.imul(Ve, jt) | 0, j = Math.imul(Ve, ee), et = et + Math.imul(ae, Xt) | 0, Q = Q + Math.imul(ae, Zt) | 0, Q = Q + Math.imul(Se, Xt) | 0, j = j + Math.imul(Se, Zt) | 0, et = et + Math.imul(ge, Mt) | 0, Q = Q + Math.imul(ge, St) | 0, Q = Q + Math.imul(_e, Mt) | 0, j = j + Math.imul(_e, St) | 0, et = et + Math.imul(Wt, te) | 0, Q = Q + Math.imul(Wt, fe) | 0, Q = Q + Math.imul(kt, te) | 0, j = j + Math.imul(kt, fe) | 0, et = et + Math.imul(Vt, ir) | 0, Q = Q + Math.imul(Vt, mr) | 0, Q = Q + Math.imul(zt, ir) | 0, j = j + Math.imul(zt, mr) | 0, et = et + Math.imul(Gt, xe) | 0, Q = Q + Math.imul(Gt, me) | 0, Q = Q + Math.imul(Jt, xe) | 0, j = j + Math.imul(Jt, me) | 0, et = et + Math.imul(wt, qt) | 0, Q = Q + Math.imul(wt, De) | 0, Q = Q + Math.imul(Et, qt) | 0, j = j + Math.imul(Et, De) | 0, et = et + Math.imul(ct, dr) | 0, Q = Q + Math.imul(ct, qe) | 0, Q = Q + Math.imul(lt, dr) | 0, j = j + Math.imul(lt, qe) | 0, et = et + Math.imul(ut, ue) | 0, Q = Q + Math.imul(ut, Pe) | 0, Q = Q + Math.imul(nt, ue) | 0, j = j + Math.imul(nt, Pe) | 0;
                          var Gr = (ht + et | 0) + ((Q & 8191) << 13) | 0;
                          ht = (j + (Q >>> 13) | 0) + (Gr >>> 26) | 0, Gr &= 67108863, et = Math.imul(ur, jt), Q = Math.imul(ur, ee), Q = Q + Math.imul(ie, jt) | 0, j = Math.imul(ie, ee), et = et + Math.imul(Ne, Xt) | 0, Q = Q + Math.imul(Ne, Zt) | 0, Q = Q + Math.imul(Ve, Xt) | 0, j = j + Math.imul(Ve, Zt) | 0, et = et + Math.imul(ae, Mt) | 0, Q = Q + Math.imul(ae, St) | 0, Q = Q + Math.imul(Se, Mt) | 0, j = j + Math.imul(Se, St) | 0, et = et + Math.imul(ge, te) | 0, Q = Q + Math.imul(ge, fe) | 0, Q = Q + Math.imul(_e, te) | 0, j = j + Math.imul(_e, fe) | 0, et = et + Math.imul(Wt, ir) | 0, Q = Q + Math.imul(Wt, mr) | 0, Q = Q + Math.imul(kt, ir) | 0, j = j + Math.imul(kt, mr) | 0, et = et + Math.imul(Vt, xe) | 0, Q = Q + Math.imul(Vt, me) | 0, Q = Q + Math.imul(zt, xe) | 0, j = j + Math.imul(zt, me) | 0, et = et + Math.imul(Gt, qt) | 0, Q = Q + Math.imul(Gt, De) | 0, Q = Q + Math.imul(Jt, qt) | 0, j = j + Math.imul(Jt, De) | 0, et = et + Math.imul(wt, dr) | 0, Q = Q + Math.imul(wt, qe) | 0, Q = Q + Math.imul(Et, dr) | 0, j = j + Math.imul(Et, qe) | 0, et = et + Math.imul(ct, ue) | 0, Q = Q + Math.imul(ct, Pe) | 0, Q = Q + Math.imul(lt, ue) | 0, j = j + Math.imul(lt, Pe) | 0, et = et + Math.imul(ut, Ye) | 0, Q = Q + Math.imul(ut, rr) | 0, Q = Q + Math.imul(nt, Ye) | 0, j = j + Math.imul(nt, rr) | 0;
                          var oe = (ht + et | 0) + ((Q & 8191) << 13) | 0;
                          ht = (j + (Q >>> 13) | 0) + (oe >>> 26) | 0, oe &= 67108863, et = Math.imul(ur, Xt), Q = Math.imul(ur, Zt), Q = Q + Math.imul(ie, Xt) | 0, j = Math.imul(ie, Zt), et = et + Math.imul(Ne, Mt) | 0, Q = Q + Math.imul(Ne, St) | 0, Q = Q + Math.imul(Ve, Mt) | 0, j = j + Math.imul(Ve, St) | 0, et = et + Math.imul(ae, te) | 0, Q = Q + Math.imul(ae, fe) | 0, Q = Q + Math.imul(Se, te) | 0, j = j + Math.imul(Se, fe) | 0, et = et + Math.imul(ge, ir) | 0, Q = Q + Math.imul(ge, mr) | 0, Q = Q + Math.imul(_e, ir) | 0, j = j + Math.imul(_e, mr) | 0, et = et + Math.imul(Wt, xe) | 0, Q = Q + Math.imul(Wt, me) | 0, Q = Q + Math.imul(kt, xe) | 0, j = j + Math.imul(kt, me) | 0, et = et + Math.imul(Vt, qt) | 0, Q = Q + Math.imul(Vt, De) | 0, Q = Q + Math.imul(zt, qt) | 0, j = j + Math.imul(zt, De) | 0, et = et + Math.imul(Gt, dr) | 0, Q = Q + Math.imul(Gt, qe) | 0, Q = Q + Math.imul(Jt, dr) | 0, j = j + Math.imul(Jt, qe) | 0, et = et + Math.imul(wt, ue) | 0, Q = Q + Math.imul(wt, Pe) | 0, Q = Q + Math.imul(Et, ue) | 0, j = j + Math.imul(Et, Pe) | 0, et = et + Math.imul(ct, Ye) | 0, Q = Q + Math.imul(ct, rr) | 0, Q = Q + Math.imul(lt, Ye) | 0, j = j + Math.imul(lt, rr) | 0;
                          var de = (ht + et | 0) + ((Q & 8191) << 13) | 0;
                          ht = (j + (Q >>> 13) | 0) + (de >>> 26) | 0, de &= 67108863, et = Math.imul(ur, Mt), Q = Math.imul(ur, St), Q = Q + Math.imul(ie, Mt) | 0, j = Math.imul(ie, St), et = et + Math.imul(Ne, te) | 0, Q = Q + Math.imul(Ne, fe) | 0, Q = Q + Math.imul(Ve, te) | 0, j = j + Math.imul(Ve, fe) | 0, et = et + Math.imul(ae, ir) | 0, Q = Q + Math.imul(ae, mr) | 0, Q = Q + Math.imul(Se, ir) | 0, j = j + Math.imul(Se, mr) | 0, et = et + Math.imul(ge, xe) | 0, Q = Q + Math.imul(ge, me) | 0, Q = Q + Math.imul(_e, xe) | 0, j = j + Math.imul(_e, me) | 0, et = et + Math.imul(Wt, qt) | 0, Q = Q + Math.imul(Wt, De) | 0, Q = Q + Math.imul(kt, qt) | 0, j = j + Math.imul(kt, De) | 0, et = et + Math.imul(Vt, dr) | 0, Q = Q + Math.imul(Vt, qe) | 0, Q = Q + Math.imul(zt, dr) | 0, j = j + Math.imul(zt, qe) | 0, et = et + Math.imul(Gt, ue) | 0, Q = Q + Math.imul(Gt, Pe) | 0, Q = Q + Math.imul(Jt, ue) | 0, j = j + Math.imul(Jt, Pe) | 0, et = et + Math.imul(wt, Ye) | 0, Q = Q + Math.imul(wt, rr) | 0, Q = Q + Math.imul(Et, Ye) | 0, j = j + Math.imul(Et, rr) | 0;
                          var or = (ht + et | 0) + ((Q & 8191) << 13) | 0;
                          ht = (j + (Q >>> 13) | 0) + (or >>> 26) | 0, or &= 67108863, et = Math.imul(ur, te), Q = Math.imul(ur, fe), Q = Q + Math.imul(ie, te) | 0, j = Math.imul(ie, fe), et = et + Math.imul(Ne, ir) | 0, Q = Q + Math.imul(Ne, mr) | 0, Q = Q + Math.imul(Ve, ir) | 0, j = j + Math.imul(Ve, mr) | 0, et = et + Math.imul(ae, xe) | 0, Q = Q + Math.imul(ae, me) | 0, Q = Q + Math.imul(Se, xe) | 0, j = j + Math.imul(Se, me) | 0, et = et + Math.imul(ge, qt) | 0, Q = Q + Math.imul(ge, De) | 0, Q = Q + Math.imul(_e, qt) | 0, j = j + Math.imul(_e, De) | 0, et = et + Math.imul(Wt, dr) | 0, Q = Q + Math.imul(Wt, qe) | 0, Q = Q + Math.imul(kt, dr) | 0, j = j + Math.imul(kt, qe) | 0, et = et + Math.imul(Vt, ue) | 0, Q = Q + Math.imul(Vt, Pe) | 0, Q = Q + Math.imul(zt, ue) | 0, j = j + Math.imul(zt, Pe) | 0, et = et + Math.imul(Gt, Ye) | 0, Q = Q + Math.imul(Gt, rr) | 0, Q = Q + Math.imul(Jt, Ye) | 0, j = j + Math.imul(Jt, rr) | 0;
                          var Er = (ht + et | 0) + ((Q & 8191) << 13) | 0;
                          ht = (j + (Q >>> 13) | 0) + (Er >>> 26) | 0, Er &= 67108863, et = Math.imul(ur, ir), Q = Math.imul(ur, mr), Q = Q + Math.imul(ie, ir) | 0, j = Math.imul(ie, mr), et = et + Math.imul(Ne, xe) | 0, Q = Q + Math.imul(Ne, me) | 0, Q = Q + Math.imul(Ve, xe) | 0, j = j + Math.imul(Ve, me) | 0, et = et + Math.imul(ae, qt) | 0, Q = Q + Math.imul(ae, De) | 0, Q = Q + Math.imul(Se, qt) | 0, j = j + Math.imul(Se, De) | 0, et = et + Math.imul(ge, dr) | 0, Q = Q + Math.imul(ge, qe) | 0, Q = Q + Math.imul(_e, dr) | 0, j = j + Math.imul(_e, qe) | 0, et = et + Math.imul(Wt, ue) | 0, Q = Q + Math.imul(Wt, Pe) | 0, Q = Q + Math.imul(kt, ue) | 0, j = j + Math.imul(kt, Pe) | 0, et = et + Math.imul(Vt, Ye) | 0, Q = Q + Math.imul(Vt, rr) | 0, Q = Q + Math.imul(zt, Ye) | 0, j = j + Math.imul(zt, rr) | 0;
                          var Tr = (ht + et | 0) + ((Q & 8191) << 13) | 0;
                          ht = (j + (Q >>> 13) | 0) + (Tr >>> 26) | 0, Tr &= 67108863, et = Math.imul(ur, xe), Q = Math.imul(ur, me), Q = Q + Math.imul(ie, xe) | 0, j = Math.imul(ie, me), et = et + Math.imul(Ne, qt) | 0, Q = Q + Math.imul(Ne, De) | 0, Q = Q + Math.imul(Ve, qt) | 0, j = j + Math.imul(Ve, De) | 0, et = et + Math.imul(ae, dr) | 0, Q = Q + Math.imul(ae, qe) | 0, Q = Q + Math.imul(Se, dr) | 0, j = j + Math.imul(Se, qe) | 0, et = et + Math.imul(ge, ue) | 0, Q = Q + Math.imul(ge, Pe) | 0, Q = Q + Math.imul(_e, ue) | 0, j = j + Math.imul(_e, Pe) | 0, et = et + Math.imul(Wt, Ye) | 0, Q = Q + Math.imul(Wt, rr) | 0, Q = Q + Math.imul(kt, Ye) | 0, j = j + Math.imul(kt, rr) | 0;
                          var tr = (ht + et | 0) + ((Q & 8191) << 13) | 0;
                          ht = (j + (Q >>> 13) | 0) + (tr >>> 26) | 0, tr &= 67108863, et = Math.imul(ur, qt), Q = Math.imul(ur, De), Q = Q + Math.imul(ie, qt) | 0, j = Math.imul(ie, De), et = et + Math.imul(Ne, dr) | 0, Q = Q + Math.imul(Ne, qe) | 0, Q = Q + Math.imul(Ve, dr) | 0, j = j + Math.imul(Ve, qe) | 0, et = et + Math.imul(ae, ue) | 0, Q = Q + Math.imul(ae, Pe) | 0, Q = Q + Math.imul(Se, ue) | 0, j = j + Math.imul(Se, Pe) | 0, et = et + Math.imul(ge, Ye) | 0, Q = Q + Math.imul(ge, rr) | 0, Q = Q + Math.imul(_e, Ye) | 0, j = j + Math.imul(_e, rr) | 0;
                          var yr = (ht + et | 0) + ((Q & 8191) << 13) | 0;
                          ht = (j + (Q >>> 13) | 0) + (yr >>> 26) | 0, yr &= 67108863, et = Math.imul(ur, dr), Q = Math.imul(ur, qe), Q = Q + Math.imul(ie, dr) | 0, j = Math.imul(ie, qe), et = et + Math.imul(Ne, ue) | 0, Q = Q + Math.imul(Ne, Pe) | 0, Q = Q + Math.imul(Ve, ue) | 0, j = j + Math.imul(Ve, Pe) | 0, et = et + Math.imul(ae, Ye) | 0, Q = Q + Math.imul(ae, rr) | 0, Q = Q + Math.imul(Se, Ye) | 0, j = j + Math.imul(Se, rr) | 0;
                          var Ir = (ht + et | 0) + ((Q & 8191) << 13) | 0;
                          ht = (j + (Q >>> 13) | 0) + (Ir >>> 26) | 0, Ir &= 67108863, et = Math.imul(ur, ue), Q = Math.imul(ur, Pe), Q = Q + Math.imul(ie, ue) | 0, j = Math.imul(ie, Pe), et = et + Math.imul(Ne, Ye) | 0, Q = Q + Math.imul(Ne, rr) | 0, Q = Q + Math.imul(Ve, Ye) | 0, j = j + Math.imul(Ve, rr) | 0;
                          var Cr = (ht + et | 0) + ((Q & 8191) << 13) | 0;
                          ht = (j + (Q >>> 13) | 0) + (Cr >>> 26) | 0, Cr &= 67108863, et = Math.imul(ur, Ye), Q = Math.imul(ur, rr), Q = Q + Math.imul(ie, Ye) | 0, j = Math.imul(ie, rr);
                          var _r = (ht + et | 0) + ((Q & 8191) << 13) | 0;
                          return ht = (j + (Q >>> 13) | 0) + (_r >>> 26) | 0, _r &= 67108863, vt[0] = lr, vt[1] = hr, vt[2] = Sr, vt[3] = Dr, vt[4] = Or, vt[5] = Br, vt[6] = Nr, vt[7] = Xr, vt[8] = Gr, vt[9] = oe, vt[10] = de, vt[11] = or, vt[12] = Er, vt[13] = Tr, vt[14] = tr, vt[15] = yr, vt[16] = Ir, vt[17] = Cr, vt[18] = _r, ht !== 0 && (vt[19] = ht, q.length++), q;
                        };
                        Math.imul || (C = M);
                        function m(H, F, G) {
                          G.negative = F.negative ^ H.negative, G.length = H.length + F.length;
                          for (var q = 0, rt = 0, st = 0; st < G.length - 1; st++) {
                            var vt = rt;
                            rt = 0;
                            for (var ht = q & 67108863, et = Math.min(st, F.length - 1), Q = Math.max(0, st - H.length + 1); Q <= et; Q++) {
                              var j = st - Q, at = H.words[j] | 0, ut = F.words[Q] | 0, nt = at * ut, X = nt & 67108863;
                              vt = vt + (nt / 67108864 | 0) | 0, X = X + ht | 0, ht = X & 67108863, vt = vt + (X >>> 26) | 0, rt += vt >>> 26, vt &= 67108863;
                            }
                            G.words[st] = ht, q = vt, vt = rt;
                          }
                          return q !== 0 ? G.words[st] = q : G.length--, G.strip();
                        }
                        function L(H, F, G) {
                          var q = new d();
                          return q.mulp(H, F, G);
                        }
                        o.prototype.mulTo = function(F, G) {
                          var q, rt = this.length + F.length;
                          return this.length === 10 && F.length === 10 ? q = C(this, F, G) : rt < 63 ? q = M(this, F, G) : rt < 1024 ? q = m(this, F, G) : q = L(this, F, G), q;
                        };
                        function d(H, F) {
                          this.x = H, this.y = F;
                        }
                        d.prototype.makeRBT = function(F) {
                          for (var G = new Array(F), q = o.prototype._countBits(F) - 1, rt = 0; rt < F; rt++)
                            G[rt] = this.revBin(rt, q, F);
                          return G;
                        }, d.prototype.revBin = function(F, G, q) {
                          if (F === 0 || F === q - 1) return F;
                          for (var rt = 0, st = 0; st < G; st++)
                            rt |= (F & 1) << G - st - 1, F >>= 1;
                          return rt;
                        }, d.prototype.permute = function(F, G, q, rt, st, vt) {
                          for (var ht = 0; ht < vt; ht++)
                            rt[ht] = G[F[ht]], st[ht] = q[F[ht]];
                        }, d.prototype.transform = function(F, G, q, rt, st, vt) {
                          this.permute(vt, F, G, q, rt, st);
                          for (var ht = 1; ht < st; ht <<= 1)
                            for (var et = ht << 1, Q = Math.cos(2 * Math.PI / et), j = Math.sin(2 * Math.PI / et), at = 0; at < st; at += et)
                              for (var ut = Q, nt = j, X = 0; X < ht; X++) {
                                var ct = q[at + X], lt = rt[at + X], pt = q[at + X + ht], wt = rt[at + X + ht], Et = ut * pt - nt * wt;
                                wt = ut * wt + nt * pt, pt = Et, q[at + X] = ct + pt, rt[at + X] = lt + wt, q[at + X + ht] = ct - pt, rt[at + X + ht] = lt - wt, X !== et && (Et = Q * ut - j * nt, nt = Q * nt + j * ut, ut = Et);
                              }
                        }, d.prototype.guessLen13b = function(F, G) {
                          var q = Math.max(G, F) | 1, rt = q & 1, st = 0;
                          for (q = q / 2 | 0; q; q = q >>> 1)
                            st++;
                          return 1 << st + 1 + rt;
                        }, d.prototype.conjugate = function(F, G, q) {
                          if (!(q <= 1))
                            for (var rt = 0; rt < q / 2; rt++) {
                              var st = F[rt];
                              F[rt] = F[q - rt - 1], F[q - rt - 1] = st, st = G[rt], G[rt] = -G[q - rt - 1], G[q - rt - 1] = -st;
                            }
                        }, d.prototype.normalize13b = function(F, G) {
                          for (var q = 0, rt = 0; rt < G / 2; rt++) {
                            var st = Math.round(F[2 * rt + 1] / G) * 8192 + Math.round(F[2 * rt] / G) + q;
                            F[rt] = st & 67108863, st < 67108864 ? q = 0 : q = st / 67108864 | 0;
                          }
                          return F;
                        }, d.prototype.convert13b = function(F, G, q, rt) {
                          for (var st = 0, vt = 0; vt < G; vt++)
                            st = st + (F[vt] | 0), q[2 * vt] = st & 8191, st = st >>> 13, q[2 * vt + 1] = st & 8191, st = st >>> 13;
                          for (vt = 2 * G; vt < rt; ++vt)
                            q[vt] = 0;
                          a(st === 0), a((st & -8192) === 0);
                        }, d.prototype.stub = function(F) {
                          for (var G = new Array(F), q = 0; q < F; q++)
                            G[q] = 0;
                          return G;
                        }, d.prototype.mulp = function(F, G, q) {
                          var rt = 2 * this.guessLen13b(F.length, G.length), st = this.makeRBT(rt), vt = this.stub(rt), ht = new Array(rt), et = new Array(rt), Q = new Array(rt), j = new Array(rt), at = new Array(rt), ut = new Array(rt), nt = q.words;
                          nt.length = rt, this.convert13b(F.words, F.length, ht, rt), this.convert13b(G.words, G.length, j, rt), this.transform(ht, vt, et, Q, rt, st), this.transform(j, vt, at, ut, rt, st);
                          for (var X = 0; X < rt; X++) {
                            var ct = et[X] * at[X] - Q[X] * ut[X];
                            Q[X] = et[X] * ut[X] + Q[X] * at[X], et[X] = ct;
                          }
                          return this.conjugate(et, Q, rt), this.transform(et, Q, nt, vt, rt, st), this.conjugate(nt, vt, rt), this.normalize13b(nt, rt), q.negative = F.negative ^ G.negative, q.length = F.length + G.length, q.strip();
                        }, o.prototype.mul = function(F) {
                          var G = new o(null);
                          return G.words = new Array(this.length + F.length), this.mulTo(F, G);
                        }, o.prototype.mulf = function(F) {
                          var G = new o(null);
                          return G.words = new Array(this.length + F.length), L(this, F, G);
                        }, o.prototype.imul = function(F) {
                          return this.clone().mulTo(F, this);
                        }, o.prototype.imuln = function(F) {
                          a(typeof F == "number"), a(F < 67108864);
                          for (var G = 0, q = 0; q < this.length; q++) {
                            var rt = (this.words[q] | 0) * F, st = (rt & 67108863) + (G & 67108863);
                            G >>= 26, G += rt / 67108864 | 0, G += st >>> 26, this.words[q] = st & 67108863;
                          }
                          return G !== 0 && (this.words[q] = G, this.length++), this;
                        }, o.prototype.muln = function(F) {
                          return this.clone().imuln(F);
                        }, o.prototype.sqr = function() {
                          return this.mul(this);
                        }, o.prototype.isqr = function() {
                          return this.imul(this.clone());
                        }, o.prototype.pow = function(F) {
                          var G = S(F);
                          if (G.length === 0) return new o(1);
                          for (var q = this, rt = 0; rt < G.length && G[rt] === 0; rt++, q = q.sqr())
                            ;
                          if (++rt < G.length)
                            for (var st = q.sqr(); rt < G.length; rt++, st = st.sqr())
                              G[rt] !== 0 && (q = q.mul(st));
                          return q;
                        }, o.prototype.iushln = function(F) {
                          a(typeof F == "number" && F >= 0);
                          var G = F % 26, q = (F - G) / 26, rt = 67108863 >>> 26 - G << 26 - G, st;
                          if (G !== 0) {
                            var vt = 0;
                            for (st = 0; st < this.length; st++) {
                              var ht = this.words[st] & rt, et = (this.words[st] | 0) - ht << G;
                              this.words[st] = et | vt, vt = ht >>> 26 - G;
                            }
                            vt && (this.words[st] = vt, this.length++);
                          }
                          if (q !== 0) {
                            for (st = this.length - 1; st >= 0; st--)
                              this.words[st + q] = this.words[st];
                            for (st = 0; st < q; st++)
                              this.words[st] = 0;
                            this.length += q;
                          }
                          return this.strip();
                        }, o.prototype.ishln = function(F) {
                          return a(this.negative === 0), this.iushln(F);
                        }, o.prototype.iushrn = function(F, G, q) {
                          a(typeof F == "number" && F >= 0);
                          var rt;
                          G ? rt = (G - G % 26) / 26 : rt = 0;
                          var st = F % 26, vt = Math.min((F - st) / 26, this.length), ht = 67108863 ^ 67108863 >>> st << st, et = q;
                          if (rt -= vt, rt = Math.max(0, rt), et) {
                            for (var Q = 0; Q < vt; Q++)
                              et.words[Q] = this.words[Q];
                            et.length = vt;
                          }
                          if (vt !== 0) if (this.length > vt)
                            for (this.length -= vt, Q = 0; Q < this.length; Q++)
                              this.words[Q] = this.words[Q + vt];
                          else
                            this.words[0] = 0, this.length = 1;
                          var j = 0;
                          for (Q = this.length - 1; Q >= 0 && (j !== 0 || Q >= rt); Q--) {
                            var at = this.words[Q] | 0;
                            this.words[Q] = j << 26 - st | at >>> st, j = at & ht;
                          }
                          return et && j !== 0 && (et.words[et.length++] = j), this.length === 0 && (this.words[0] = 0, this.length = 1), this.strip();
                        }, o.prototype.ishrn = function(F, G, q) {
                          return a(this.negative === 0), this.iushrn(F, G, q);
                        }, o.prototype.shln = function(F) {
                          return this.clone().ishln(F);
                        }, o.prototype.ushln = function(F) {
                          return this.clone().iushln(F);
                        }, o.prototype.shrn = function(F) {
                          return this.clone().ishrn(F);
                        }, o.prototype.ushrn = function(F) {
                          return this.clone().iushrn(F);
                        }, o.prototype.testn = function(F) {
                          a(typeof F == "number" && F >= 0);
                          var G = F % 26, q = (F - G) / 26, rt = 1 << G;
                          if (this.length <= q) return !1;
                          var st = this.words[q];
                          return !!(st & rt);
                        }, o.prototype.imaskn = function(F) {
                          a(typeof F == "number" && F >= 0);
                          var G = F % 26, q = (F - G) / 26;
                          if (a(this.negative === 0, "imaskn works only with positive numbers"), this.length <= q)
                            return this;
                          if (G !== 0 && q++, this.length = Math.min(q, this.length), G !== 0) {
                            var rt = 67108863 ^ 67108863 >>> G << G;
                            this.words[this.length - 1] &= rt;
                          }
                          return this.strip();
                        }, o.prototype.maskn = function(F) {
                          return this.clone().imaskn(F);
                        }, o.prototype.iaddn = function(F) {
                          return a(typeof F == "number"), a(F < 67108864), F < 0 ? this.isubn(-F) : this.negative !== 0 ? this.length === 1 && (this.words[0] | 0) < F ? (this.words[0] = F - (this.words[0] | 0), this.negative = 0, this) : (this.negative = 0, this.isubn(F), this.negative = 1, this) : this._iaddn(F);
                        }, o.prototype._iaddn = function(F) {
                          this.words[0] += F;
                          for (var G = 0; G < this.length && this.words[G] >= 67108864; G++)
                            this.words[G] -= 67108864, G === this.length - 1 ? this.words[G + 1] = 1 : this.words[G + 1]++;
                          return this.length = Math.max(this.length, G + 1), this;
                        }, o.prototype.isubn = function(F) {
                          if (a(typeof F == "number"), a(F < 67108864), F < 0) return this.iaddn(-F);
                          if (this.negative !== 0)
                            return this.negative = 0, this.iaddn(F), this.negative = 1, this;
                          if (this.words[0] -= F, this.length === 1 && this.words[0] < 0)
                            this.words[0] = -this.words[0], this.negative = 1;
                          else
                            for (var G = 0; G < this.length && this.words[G] < 0; G++)
                              this.words[G] += 67108864, this.words[G + 1] -= 1;
                          return this.strip();
                        }, o.prototype.addn = function(F) {
                          return this.clone().iaddn(F);
                        }, o.prototype.subn = function(F) {
                          return this.clone().isubn(F);
                        }, o.prototype.iabs = function() {
                          return this.negative = 0, this;
                        }, o.prototype.abs = function() {
                          return this.clone().iabs();
                        }, o.prototype._ishlnsubmul = function(F, G, q) {
                          var rt = F.length + q, st;
                          this._expand(rt);
                          var vt, ht = 0;
                          for (st = 0; st < F.length; st++) {
                            vt = (this.words[st + q] | 0) + ht;
                            var et = (F.words[st] | 0) * G;
                            vt -= et & 67108863, ht = (vt >> 26) - (et / 67108864 | 0), this.words[st + q] = vt & 67108863;
                          }
                          for (; st < this.length - q; st++)
                            vt = (this.words[st + q] | 0) + ht, ht = vt >> 26, this.words[st + q] = vt & 67108863;
                          if (ht === 0) return this.strip();
                          for (a(ht === -1), ht = 0, st = 0; st < this.length; st++)
                            vt = -(this.words[st] | 0) + ht, ht = vt >> 26, this.words[st] = vt & 67108863;
                          return this.negative = 1, this.strip();
                        }, o.prototype._wordDiv = function(F, G) {
                          var q = this.length - F.length, rt = this.clone(), st = F, vt = st.words[st.length - 1] | 0, ht = this._countBits(vt);
                          q = 26 - ht, q !== 0 && (st = st.ushln(q), rt.iushln(q), vt = st.words[st.length - 1] | 0);
                          var et = rt.length - st.length, Q;
                          if (G !== "mod") {
                            Q = new o(null), Q.length = et + 1, Q.words = new Array(Q.length);
                            for (var j = 0; j < Q.length; j++)
                              Q.words[j] = 0;
                          }
                          var at = rt.clone()._ishlnsubmul(st, 1, et);
                          at.negative === 0 && (rt = at, Q && (Q.words[et] = 1));
                          for (var ut = et - 1; ut >= 0; ut--) {
                            var nt = (rt.words[st.length + ut] | 0) * 67108864 + (rt.words[st.length + ut - 1] | 0);
                            for (nt = Math.min(nt / vt | 0, 67108863), rt._ishlnsubmul(st, nt, ut); rt.negative !== 0; )
                              nt--, rt.negative = 0, rt._ishlnsubmul(st, 1, ut), rt.isZero() || (rt.negative ^= 1);
                            Q && (Q.words[ut] = nt);
                          }
                          return Q && Q.strip(), rt.strip(), G !== "div" && q !== 0 && rt.iushrn(q), { div: Q || null, mod: rt };
                        }, o.prototype.divmod = function(F, G, q) {
                          if (a(!F.isZero()), this.isZero())
                            return { div: new o(0), mod: new o(0) };
                          var rt, st, vt;
                          return this.negative !== 0 && F.negative === 0 ? (vt = this.neg().divmod(F, G), G !== "mod" && (rt = vt.div.neg()), G !== "div" && (st = vt.mod.neg(), q && st.negative !== 0 && st.iadd(F)), { div: rt, mod: st }) : this.negative === 0 && F.negative !== 0 ? (vt = this.divmod(F.neg(), G), G !== "mod" && (rt = vt.div.neg()), { div: rt, mod: vt.mod }) : this.negative & F.negative ? (vt = this.neg().divmod(F.neg(), G), G !== "div" && (st = vt.mod.neg(), q && st.negative !== 0 && st.isub(F)), { div: vt.div, mod: st }) : F.length > this.length || this.cmp(F) < 0 ? { div: new o(0), mod: this } : F.length === 1 ? G === "div" ? { div: this.divn(F.words[0]), mod: null } : G === "mod" ? { div: null, mod: new o(this.modn(F.words[0])) } : { div: this.divn(F.words[0]), mod: new o(this.modn(F.words[0])) } : this._wordDiv(F, G);
                        }, o.prototype.div = function(F) {
                          return this.divmod(F, "div", !1).div;
                        }, o.prototype.mod = function(F) {
                          return this.divmod(F, "mod", !1).mod;
                        }, o.prototype.umod = function(F) {
                          return this.divmod(F, "mod", !0).mod;
                        }, o.prototype.divRound = function(F) {
                          var G = this.divmod(F);
                          if (G.mod.isZero()) return G.div;
                          var q = G.div.negative !== 0 ? G.mod.isub(F) : G.mod, rt = F.ushrn(1), st = F.andln(1), vt = q.cmp(rt);
                          return vt < 0 || st === 1 && vt === 0 ? G.div : G.div.negative !== 0 ? G.div.isubn(1) : G.div.iaddn(1);
                        }, o.prototype.modn = function(F) {
                          a(F <= 67108863);
                          for (var G = (1 << 26) % F, q = 0, rt = this.length - 1; rt >= 0; rt--)
                            q = (G * q + (this.words[rt] | 0)) % F;
                          return q;
                        }, o.prototype.idivn = function(F) {
                          a(F <= 67108863);
                          for (var G = 0, q = this.length - 1; q >= 0; q--) {
                            var rt = (this.words[q] | 0) + G * 67108864;
                            this.words[q] = rt / F | 0, G = rt % F;
                          }
                          return this.strip();
                        }, o.prototype.divn = function(F) {
                          return this.clone().idivn(F);
                        }, o.prototype.egcd = function(F) {
                          a(F.negative === 0), a(!F.isZero());
                          var G = this, q = F.clone();
                          G.negative !== 0 ? G = G.umod(F) : G = G.clone();
                          for (var rt = new o(1), st = new o(0), vt = new o(0), ht = new o(1), et = 0; G.isEven() && q.isEven(); )
                            G.iushrn(1), q.iushrn(1), ++et;
                          for (var Q = q.clone(), j = G.clone(); !G.isZero(); ) {
                            for (var at = 0, ut = 1; !(G.words[0] & ut) && at < 26; ++at, ut <<= 1) ;
                            if (at > 0)
                              for (G.iushrn(at); at-- > 0; )
                                (rt.isOdd() || st.isOdd()) && (rt.iadd(Q), st.isub(j)), rt.iushrn(1), st.iushrn(1);
                            for (var nt = 0, X = 1; !(q.words[0] & X) && nt < 26; ++nt, X <<= 1) ;
                            if (nt > 0)
                              for (q.iushrn(nt); nt-- > 0; )
                                (vt.isOdd() || ht.isOdd()) && (vt.iadd(Q), ht.isub(j)), vt.iushrn(1), ht.iushrn(1);
                            G.cmp(q) >= 0 ? (G.isub(q), rt.isub(vt), st.isub(ht)) : (q.isub(G), vt.isub(rt), ht.isub(st));
                          }
                          return { a: vt, b: ht, gcd: q.iushln(et) };
                        }, o.prototype._invmp = function(F) {
                          a(F.negative === 0), a(!F.isZero());
                          var G = this, q = F.clone();
                          G.negative !== 0 ? G = G.umod(F) : G = G.clone();
                          for (var rt = new o(1), st = new o(0), vt = q.clone(); G.cmpn(1) > 0 && q.cmpn(1) > 0; ) {
                            for (var ht = 0, et = 1; !(G.words[0] & et) && ht < 26; ++ht, et <<= 1) ;
                            if (ht > 0)
                              for (G.iushrn(ht); ht-- > 0; )
                                rt.isOdd() && rt.iadd(vt), rt.iushrn(1);
                            for (var Q = 0, j = 1; !(q.words[0] & j) && Q < 26; ++Q, j <<= 1) ;
                            if (Q > 0)
                              for (q.iushrn(Q); Q-- > 0; )
                                st.isOdd() && st.iadd(vt), st.iushrn(1);
                            G.cmp(q) >= 0 ? (G.isub(q), rt.isub(st)) : (q.isub(G), st.isub(rt));
                          }
                          var at;
                          return G.cmpn(1) === 0 ? at = rt : at = st, at.cmpn(0) < 0 && at.iadd(F), at;
                        }, o.prototype.gcd = function(F) {
                          if (this.isZero()) return F.abs();
                          if (F.isZero()) return this.abs();
                          var G = this.clone(), q = F.clone();
                          G.negative = 0, q.negative = 0;
                          for (var rt = 0; G.isEven() && q.isEven(); rt++)
                            G.iushrn(1), q.iushrn(1);
                          do {
                            for (; G.isEven(); )
                              G.iushrn(1);
                            for (; q.isEven(); )
                              q.iushrn(1);
                            var st = G.cmp(q);
                            if (st < 0) {
                              var vt = G;
                              G = q, q = vt;
                            } else if (st === 0 || q.cmpn(1) === 0)
                              break;
                            G.isub(q);
                          } while (!0);
                          return q.iushln(rt);
                        }, o.prototype.invm = function(F) {
                          return this.egcd(F).a.umod(F);
                        }, o.prototype.isEven = function() {
                          return (this.words[0] & 1) === 0;
                        }, o.prototype.isOdd = function() {
                          return (this.words[0] & 1) === 1;
                        }, o.prototype.andln = function(F) {
                          return this.words[0] & F;
                        }, o.prototype.bincn = function(F) {
                          a(typeof F == "number");
                          var G = F % 26, q = (F - G) / 26, rt = 1 << G;
                          if (this.length <= q)
                            return this._expand(q + 1), this.words[q] |= rt, this;
                          for (var st = rt, vt = q; st !== 0 && vt < this.length; vt++) {
                            var ht = this.words[vt] | 0;
                            ht += st, st = ht >>> 26, ht &= 67108863, this.words[vt] = ht;
                          }
                          return st !== 0 && (this.words[vt] = st, this.length++), this;
                        }, o.prototype.isZero = function() {
                          return this.length === 1 && this.words[0] === 0;
                        }, o.prototype.cmpn = function(F) {
                          var G = F < 0;
                          if (this.negative !== 0 && !G) return -1;
                          if (this.negative === 0 && G) return 1;
                          this.strip();
                          var q;
                          if (this.length > 1)
                            q = 1;
                          else {
                            G && (F = -F), a(F <= 67108863, "Number is too big");
                            var rt = this.words[0] | 0;
                            q = rt === F ? 0 : rt < F ? -1 : 1;
                          }
                          return this.negative !== 0 ? -q | 0 : q;
                        }, o.prototype.cmp = function(F) {
                          if (this.negative !== 0 && F.negative === 0) return -1;
                          if (this.negative === 0 && F.negative !== 0) return 1;
                          var G = this.ucmp(F);
                          return this.negative !== 0 ? -G | 0 : G;
                        }, o.prototype.ucmp = function(F) {
                          if (this.length > F.length) return 1;
                          if (this.length < F.length) return -1;
                          for (var G = 0, q = this.length - 1; q >= 0; q--) {
                            var rt = this.words[q] | 0, st = F.words[q] | 0;
                            if (rt !== st) {
                              rt < st ? G = -1 : rt > st && (G = 1);
                              break;
                            }
                          }
                          return G;
                        }, o.prototype.gtn = function(F) {
                          return this.cmpn(F) === 1;
                        }, o.prototype.gt = function(F) {
                          return this.cmp(F) === 1;
                        }, o.prototype.gten = function(F) {
                          return this.cmpn(F) >= 0;
                        }, o.prototype.gte = function(F) {
                          return this.cmp(F) >= 0;
                        }, o.prototype.ltn = function(F) {
                          return this.cmpn(F) === -1;
                        }, o.prototype.lt = function(F) {
                          return this.cmp(F) === -1;
                        }, o.prototype.lten = function(F) {
                          return this.cmpn(F) <= 0;
                        }, o.prototype.lte = function(F) {
                          return this.cmp(F) <= 0;
                        }, o.prototype.eqn = function(F) {
                          return this.cmpn(F) === 0;
                        }, o.prototype.eq = function(F) {
                          return this.cmp(F) === 0;
                        }, o.red = function(F) {
                          return new V(F);
                        }, o.prototype.toRed = function(F) {
                          return a(!this.red, "Already a number in reduction context"), a(this.negative === 0, "red works only with positives"), F.convertTo(this)._forceRed(F);
                        }, o.prototype.fromRed = function() {
                          return a(this.red, "fromRed works only with numbers in reduction context"), this.red.convertFrom(this);
                        }, o.prototype._forceRed = function(F) {
                          return this.red = F, this;
                        }, o.prototype.forceRed = function(F) {
                          return a(!this.red, "Already a number in reduction context"), this._forceRed(F);
                        }, o.prototype.redAdd = function(F) {
                          return a(this.red, "redAdd works only with red numbers"), this.red.add(this, F);
                        }, o.prototype.redIAdd = function(F) {
                          return a(this.red, "redIAdd works only with red numbers"), this.red.iadd(this, F);
                        }, o.prototype.redSub = function(F) {
                          return a(this.red, "redSub works only with red numbers"), this.red.sub(this, F);
                        }, o.prototype.redISub = function(F) {
                          return a(this.red, "redISub works only with red numbers"), this.red.isub(this, F);
                        }, o.prototype.redShl = function(F) {
                          return a(this.red, "redShl works only with red numbers"), this.red.shl(this, F);
                        }, o.prototype.redMul = function(F) {
                          return a(this.red, "redMul works only with red numbers"), this.red._verify2(this, F), this.red.mul(this, F);
                        }, o.prototype.redIMul = function(F) {
                          return a(this.red, "redMul works only with red numbers"), this.red._verify2(this, F), this.red.imul(this, F);
                        }, o.prototype.redSqr = function() {
                          return a(this.red, "redSqr works only with red numbers"), this.red._verify1(this), this.red.sqr(this);
                        }, o.prototype.redISqr = function() {
                          return a(this.red, "redISqr works only with red numbers"), this.red._verify1(this), this.red.isqr(this);
                        }, o.prototype.redSqrt = function() {
                          return a(this.red, "redSqrt works only with red numbers"), this.red._verify1(this), this.red.sqrt(this);
                        }, o.prototype.redInvm = function() {
                          return a(this.red, "redInvm works only with red numbers"), this.red._verify1(this), this.red.invm(this);
                        }, o.prototype.redNeg = function() {
                          return a(this.red, "redNeg works only with red numbers"), this.red._verify1(this), this.red.neg(this);
                        }, o.prototype.redPow = function(F) {
                          return a(this.red && !F.red, "redPow(normalNum)"), this.red._verify1(this), this.red.pow(this, F);
                        };
                        var h = { k256: null, p224: null, p192: null, p25519: null };
                        function E(H, F) {
                          this.name = H, this.p = new o(F, 16), this.n = this.p.bitLength(), this.k = new o(1).iushln(this.n).isub(this.p), this.tmp = this._tmp();
                        }
                        E.prototype._tmp = function() {
                          var F = new o(null);
                          return F.words = new Array(Math.ceil(this.n / 13)), F;
                        }, E.prototype.ireduce = function(F) {
                          var G = F, q;
                          do
                            this.split(G, this.tmp), G = this.imulK(G), G = G.iadd(this.tmp), q = G.bitLength();
                          while (q > this.n);
                          var rt = q < this.n ? -1 : G.ucmp(this.p);
                          return rt === 0 ? (G.words[0] = 0, G.length = 1) : rt > 0 ? G.isub(this.p) : G.strip !== void 0 ? G.strip() : G._strip(), G;
                        }, E.prototype.split = function(F, G) {
                          F.iushrn(this.n, 0, G);
                        }, E.prototype.imulK = function(F) {
                          return F.imul(this.k);
                        };
                        function w() {
                          E.call(this, "k256", "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f");
                        }
                        l(w, E), w.prototype.split = function(F, G) {
                          for (var q = 4194303, rt = Math.min(F.length, 9), st = 0; st < rt; st++)
                            G.words[st] = F.words[st];
                          if (G.length = rt, F.length <= 9) {
                            F.words[0] = 0, F.length = 1;
                            return;
                          }
                          var vt = F.words[9];
                          for (G.words[G.length++] = vt & q, st = 10; st < F.length; st++) {
                            var ht = F.words[st] | 0;
                            F.words[st - 10] = (ht & q) << 4 | vt >>> 22, vt = ht;
                          }
                          vt >>>= 22, F.words[st - 10] = vt, vt === 0 && F.length > 10 ? F.length -= 10 : F.length -= 9;
                        }, w.prototype.imulK = function(F) {
                          F.words[F.length] = 0, F.words[F.length + 1] = 0, F.length += 2;
                          for (var G = 0, q = 0; q < F.length; q++) {
                            var rt = F.words[q] | 0;
                            G += rt * 977, F.words[q] = G & 67108863, G = rt * 64 + (G / 67108864 | 0);
                          }
                          return F.words[F.length - 1] === 0 && (F.length--, F.words[F.length - 1] === 0 && F.length--), F;
                        };
                        function z() {
                          E.call(this, "p224", "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001");
                        }
                        l(z, E);
                        function O() {
                          E.call(this, "p192", "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff");
                        }
                        l(O, E);
                        function B() {
                          E.call(this, "25519", "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed");
                        }
                        l(B, E), B.prototype.imulK = function(F) {
                          for (var G = 0, q = 0; q < F.length; q++) {
                            var rt = (F.words[q] | 0) * 19 + G, st = rt & 67108863;
                            rt >>>= 26, F.words[q] = st, G = rt;
                          }
                          return G !== 0 && (F.words[F.length++] = G), F;
                        }, o._prime = function(F) {
                          if (h[F]) return h[F];
                          var G;
                          if (F === "k256")
                            G = new w();
                          else if (F === "p224")
                            G = new z();
                          else if (F === "p192")
                            G = new O();
                          else if (F === "p25519")
                            G = new B();
                          else
                            throw new Error("Unknown prime " + F);
                          return h[F] = G, G;
                        };
                        function V(H) {
                          if (typeof H == "string") {
                            var F = o._prime(H);
                            this.m = F.p, this.prime = F;
                          } else
                            a(H.gtn(1), "modulus must be greater than 1"), this.m = H, this.prime = null;
                        }
                        V.prototype._verify1 = function(F) {
                          a(F.negative === 0, "red works only with positives"), a(F.red, "red works only with red numbers");
                        }, V.prototype._verify2 = function(F, G) {
                          a((F.negative | G.negative) === 0, "red works only with positives"), a(F.red && F.red === G.red, "red works only with red numbers");
                        }, V.prototype.imod = function(F) {
                          return this.prime ? this.prime.ireduce(F)._forceRed(this) : F.umod(this.m)._forceRed(this);
                        }, V.prototype.neg = function(F) {
                          return F.isZero() ? F.clone() : this.m.sub(F)._forceRed(this);
                        }, V.prototype.add = function(F, G) {
                          this._verify2(F, G);
                          var q = F.add(G);
                          return q.cmp(this.m) >= 0 && q.isub(this.m), q._forceRed(this);
                        }, V.prototype.iadd = function(F, G) {
                          this._verify2(F, G);
                          var q = F.iadd(G);
                          return q.cmp(this.m) >= 0 && q.isub(this.m), q;
                        }, V.prototype.sub = function(F, G) {
                          this._verify2(F, G);
                          var q = F.sub(G);
                          return q.cmpn(0) < 0 && q.iadd(this.m), q._forceRed(this);
                        }, V.prototype.isub = function(F, G) {
                          this._verify2(F, G);
                          var q = F.isub(G);
                          return q.cmpn(0) < 0 && q.iadd(this.m), q;
                        }, V.prototype.shl = function(F, G) {
                          return this._verify1(F), this.imod(F.ushln(G));
                        }, V.prototype.imul = function(F, G) {
                          return this._verify2(F, G), this.imod(F.imul(G));
                        }, V.prototype.mul = function(F, G) {
                          return this._verify2(F, G), this.imod(F.mul(G));
                        }, V.prototype.isqr = function(F) {
                          return this.imul(F, F.clone());
                        }, V.prototype.sqr = function(F) {
                          return this.mul(F, F);
                        }, V.prototype.sqrt = function(F) {
                          if (F.isZero()) return F.clone();
                          var G = this.m.andln(3);
                          if (a(G % 2 === 1), G === 3) {
                            var q = this.m.add(new o(1)).iushrn(2);
                            return this.pow(F, q);
                          }
                          for (var rt = this.m.subn(1), st = 0; !rt.isZero() && rt.andln(1) === 0; )
                            st++, rt.iushrn(1);
                          a(!rt.isZero());
                          var vt = new o(1).toRed(this), ht = vt.redNeg(), et = this.m.subn(1).iushrn(1), Q = this.m.bitLength();
                          for (Q = new o(2 * Q * Q).toRed(this); this.pow(Q, et).cmp(ht) !== 0; )
                            Q.redIAdd(ht);
                          for (var j = this.pow(Q, rt), at = this.pow(F, rt.addn(1).iushrn(1)), ut = this.pow(F, rt), nt = st; ut.cmp(vt) !== 0; ) {
                            for (var X = ut, ct = 0; X.cmp(vt) !== 0; ct++)
                              X = X.redSqr();
                            a(ct < nt);
                            var lt = this.pow(j, new o(1).iushln(nt - ct - 1));
                            at = at.redMul(lt), j = lt.redSqr(), ut = ut.redMul(j), nt = ct;
                          }
                          return at;
                        }, V.prototype.invm = function(F) {
                          var G = F._invmp(this.m);
                          return G.negative !== 0 ? (G.negative = 0, this.imod(G).redNeg()) : this.imod(G);
                        }, V.prototype.pow = function(F, G) {
                          if (G.isZero()) return new o(1).toRed(this);
                          if (G.cmpn(1) === 0) return F.clone();
                          var q = 4, rt = new Array(1 << q);
                          rt[0] = new o(1).toRed(this), rt[1] = F;
                          for (var st = 2; st < rt.length; st++)
                            rt[st] = this.mul(rt[st - 1], F);
                          var vt = rt[0], ht = 0, et = 0, Q = G.bitLength() % 26;
                          for (Q === 0 && (Q = 26), st = G.length - 1; st >= 0; st--) {
                            for (var j = G.words[st], at = Q - 1; at >= 0; at--) {
                              var ut = j >> at & 1;
                              if (vt !== rt[0] && (vt = this.sqr(vt)), ut === 0 && ht === 0) {
                                et = 0;
                                continue;
                              }
                              ht <<= 1, ht |= ut, et++, !(et !== q && (st !== 0 || at !== 0)) && (vt = this.mul(vt, rt[ht]), et = 0, ht = 0);
                            }
                            Q = 26;
                          }
                          return vt;
                        }, V.prototype.convertTo = function(F) {
                          var G = F.umod(this.m);
                          return G === F ? G.clone() : G;
                        }, V.prototype.convertFrom = function(F) {
                          var G = F.clone();
                          return G.red = null, G;
                        }, o.mont = function(F) {
                          return new U(F);
                        };
                        function U(H) {
                          V.call(this, H), this.shift = this.m.bitLength(), this.shift % 26 !== 0 && (this.shift += 26 - this.shift % 26), this.r = new o(1).iushln(this.shift), this.r2 = this.imod(this.r.sqr()), this.rinv = this.r._invmp(this.m), this.minv = this.rinv.mul(this.r).isubn(1).div(this.m), this.minv = this.minv.umod(this.r), this.minv = this.r.sub(this.minv);
                        }
                        l(U, V), U.prototype.convertTo = function(F) {
                          return this.imod(F.ushln(this.shift));
                        }, U.prototype.convertFrom = function(F) {
                          var G = this.imod(F.mul(this.rinv));
                          return G.red = null, G;
                        }, U.prototype.imul = function(F, G) {
                          if (F.isZero() || G.isZero())
                            return F.words[0] = 0, F.length = 1, F;
                          var q = F.imul(G), rt = q.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m), st = q.isub(rt).iushrn(this.shift), vt = st;
                          return st.cmp(this.m) >= 0 ? vt = st.isub(this.m) : st.cmpn(0) < 0 && (vt = st.iadd(this.m)), vt._forceRed(this);
                        }, U.prototype.mul = function(F, G) {
                          if (F.isZero() || G.isZero()) return new o(0)._forceRed(this);
                          var q = F.mul(G), rt = q.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m), st = q.isub(rt).iushrn(this.shift), vt = st;
                          return st.cmp(this.m) >= 0 ? vt = st.isub(this.m) : st.cmpn(0) < 0 && (vt = st.iadd(this.m)), vt._forceRed(this);
                        }, U.prototype.invm = function(F) {
                          var G = this.imod(F._invmp(this.m).mul(this.r2));
                          return G._forceRed(this);
                        };
                      }(p, this);
                    }
                  ),
                  /***/
                  6204: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t) {
                        var r, i, a, l = t.length, o = 0;
                        for (r = 0; r < l; ++r)
                          o += t[r].length;
                        var y = new Array(o), g = 0;
                        for (r = 0; r < l; ++r) {
                          var x = t[r], c = x.length;
                          for (i = 0; i < c; ++i) {
                            var v = y[g++] = new Array(c - 1), f = 0;
                            for (a = 0; a < c; ++a)
                              a !== i && (v[f++] = x[a]);
                            if (i & 1) {
                              var _ = v[1];
                              v[1] = v[0], v[0] = _;
                            }
                          }
                        }
                        return y;
                      }
                    }
                  ),
                  /***/
                  6867: (
                    /***/
                    function(p, u, t) {
                      p.exports = f;
                      var r = t(1888), i = t(855), a = t(7150);
                      function l(_, S) {
                        for (var M = 0; M < _; ++M)
                          if (!(S[M] <= S[M + _]))
                            return !0;
                        return !1;
                      }
                      function o(_, S, M, C) {
                        for (var m = 0, L = 0, d = 0, h = _.length; d < h; ++d) {
                          var E = _[d];
                          if (!l(S, E)) {
                            for (var w = 0; w < 2 * S; ++w)
                              M[m++] = E[w];
                            C[L++] = d;
                          }
                        }
                        return L;
                      }
                      function y(_, S, M, C) {
                        var m = _.length, L = S.length;
                        if (!(m <= 0 || L <= 0)) {
                          var d = _[0].length >>> 1;
                          if (!(d <= 0)) {
                            var h, E = r.mallocDouble(2 * d * m), w = r.mallocInt32(m);
                            if (m = o(_, d, E, w), m > 0) {
                              if (d === 1 && C)
                                i.init(m), h = i.sweepComplete(d, M, 0, m, E, w, 0, m, E, w);
                              else {
                                var z = r.mallocDouble(2 * d * L), O = r.mallocInt32(L);
                                L = o(S, d, z, O), L > 0 && (i.init(m + L), d === 1 ? h = i.sweepBipartite(d, M, 0, m, E, w, 0, L, z, O) : h = a(d, M, C, m, E, w, L, z, O), r.free(z), r.free(O));
                              }
                              r.free(E), r.free(w);
                            }
                            return h;
                          }
                        }
                      }
                      var g;
                      function x(_, S) {
                        g.push([_, S]);
                      }
                      function c(_) {
                        return g = [], y(_, _, x, !0), g;
                      }
                      function v(_, S) {
                        return g = [], y(_, S, x, !1), g;
                      }
                      function f(_, S, M) {
                        switch (arguments.length) {
                          case 1:
                            return c(_);
                          case 2:
                            return typeof S == "function" ? y(_, _, S, !0) : v(_, S);
                          case 3:
                            return y(_, S, M, !1);
                          default:
                            throw new Error("box-intersect: Invalid arguments");
                        }
                      }
                    }
                  ),
                  /***/
                  2455: (
                    /***/
                    function(p, u) {
                      function t() {
                        function a(y, g, x, c, v, f, _, S, M, C, m) {
                          for (var L = 2 * y, d = c, h = L * c; d < v; ++d, h += L) {
                            var E = f[g + h], w = f[g + h + y], z = _[d];
                            t: for (var O = S, B = L * S; O < M; ++O, B += L) {
                              var V = C[g + B], U = C[g + B + y], H = m[O];
                              if (!(U < E || w < V)) {
                                for (var F = g + 1; F < y; ++F) {
                                  var G = f[F + h], q = f[F + y + h], rt = C[F + B], st = C[F + y + B];
                                  if (q < rt || st < G) continue t;
                                }
                                var vt = x(z, H);
                                if (vt !== void 0) return vt;
                              }
                            }
                          }
                        }
                        function l(y, g, x, c, v, f, _, S, M, C, m) {
                          for (var L = 2 * y, d = S, h = L * S; d < M; ++d, h += L) {
                            var E = C[g + h], w = C[g + h + y], z = m[d];
                            t: for (var O = c, B = L * c; O < v; ++O, B += L) {
                              var V = f[g + B], U = f[g + B + y], H = _[O];
                              if (!(w < V || U < E)) {
                                for (var F = g + 1; F < y; ++F) {
                                  var G = f[F + B], q = f[F + y + B], rt = C[F + h], st = C[F + y + h];
                                  if (q < rt || st < G) continue t;
                                }
                                var vt = x(H, z);
                                if (vt !== void 0) return vt;
                              }
                            }
                          }
                        }
                        function o(y, g, x, c, v, f, _, S, M, C, m) {
                          return v - c > M - S ? a(y, g, x, c, v, f, _, S, M, C, m) : l(y, g, x, c, v, f, _, S, M, C, m);
                        }
                        return o;
                      }
                      function r() {
                        function a(x, c, v, f, _, S, M, C, m, L, d) {
                          for (var h = 2 * x, E = f, w = h * f; E < _; ++E, w += h) {
                            var z = S[c + w], O = S[c + w + x], B = M[E];
                            t: for (var V = C, U = h * C; V < m; ++V, U += h) {
                              var H = L[c + U], F = d[V];
                              if (!(H <= z || O < H)) {
                                for (var G = c + 1; G < x; ++G) {
                                  var q = S[G + w], rt = S[G + x + w], st = L[G + U], vt = L[G + x + U];
                                  if (rt < st || vt < q) continue t;
                                }
                                var ht = v(F, B);
                                if (ht !== void 0) return ht;
                              }
                            }
                          }
                        }
                        function l(x, c, v, f, _, S, M, C, m, L, d) {
                          for (var h = 2 * x, E = f, w = h * f; E < _; ++E, w += h) {
                            var z = S[c + w], O = S[c + w + x], B = M[E];
                            t: for (var V = C, U = h * C; V < m; ++V, U += h) {
                              var H = L[c + U], F = d[V];
                              if (!(H < z || O < H)) {
                                for (var G = c + 1; G < x; ++G) {
                                  var q = S[G + w], rt = S[G + x + w], st = L[G + U], vt = L[G + x + U];
                                  if (rt < st || vt < q) continue t;
                                }
                                var ht = v(B, F);
                                if (ht !== void 0) return ht;
                              }
                            }
                          }
                        }
                        function o(x, c, v, f, _, S, M, C, m, L, d) {
                          for (var h = 2 * x, E = C, w = h * C; E < m; ++E, w += h) {
                            var z = L[c + w], O = d[E];
                            t: for (var B = f, V = h * f; B < _; ++B, V += h) {
                              var U = S[c + V], H = S[c + V + x], F = M[B];
                              if (!(z <= U || H < z)) {
                                for (var G = c + 1; G < x; ++G) {
                                  var q = S[G + V], rt = S[G + x + V], st = L[G + w], vt = L[G + x + w];
                                  if (rt < st || vt < q) continue t;
                                }
                                var ht = v(O, F);
                                if (ht !== void 0) return ht;
                              }
                            }
                          }
                        }
                        function y(x, c, v, f, _, S, M, C, m, L, d) {
                          for (var h = 2 * x, E = C, w = h * C; E < m; ++E, w += h) {
                            var z = L[c + w], O = d[E];
                            t: for (var B = f, V = h * f; B < _; ++B, V += h) {
                              var U = S[c + V], H = S[c + V + x], F = M[B];
                              if (!(z < U || H < z)) {
                                for (var G = c + 1; G < x; ++G) {
                                  var q = S[G + V], rt = S[G + x + V], st = L[G + w], vt = L[G + x + w];
                                  if (rt < st || vt < q) continue t;
                                }
                                var ht = v(F, O);
                                if (ht !== void 0) return ht;
                              }
                            }
                          }
                        }
                        function g(x, c, v, f, _, S, M, C, m, L, d, h) {
                          return S - _ > L - m ? f ? a(x, c, v, _, S, M, C, m, L, d, h) : l(x, c, v, _, S, M, C, m, L, d, h) : f ? o(x, c, v, _, S, M, C, m, L, d, h) : y(x, c, v, _, S, M, C, m, L, d, h);
                        }
                        return g;
                      }
                      function i(a) {
                        return a ? t() : r();
                      }
                      u.partial = i(!1), u.full = i(!0);
                    }
                  ),
                  /***/
                  7150: (
                    /***/
                    function(p, u, t) {
                      p.exports = H;
                      var r = t(1888), i = t(8828), a = t(2455), l = a.partial, o = a.full, y = t(855), g = t(3545), x = t(8105), c = 128, v = 1 << 22, f = 1 << 22, _ = x("!(lo>=p0)&&!(p1>=hi)"), S = x("lo===p0"), M = x("lo<p0"), C = x("hi<=p0"), m = x("lo<=p0&&p0<=hi"), L = x("lo<p0&&p0<=hi"), d = 6, h = 2, E = 1024, w = r.mallocInt32(E), z = r.mallocDouble(E);
                      function O(F, G) {
                        var q = 8 * i.log2(G + 1) * (F + 1) | 0, rt = i.nextPow2(d * q);
                        w.length < rt && (r.free(w), w = r.mallocInt32(rt));
                        var st = i.nextPow2(h * q);
                        z.length < st && (r.free(z), z = r.mallocDouble(st));
                      }
                      function B(F, G, q, rt, st, vt, ht, et, Q) {
                        var j = d * F;
                        w[j] = G, w[j + 1] = q, w[j + 2] = rt, w[j + 3] = st, w[j + 4] = vt, w[j + 5] = ht;
                        var at = h * F;
                        z[at] = et, z[at + 1] = Q;
                      }
                      function V(F, G, q, rt, st, vt, ht, et, Q, j, at) {
                        var ut = 2 * F, nt = Q * ut, X = j[nt + G];
                        t: for (var ct = st, lt = st * ut; ct < vt; ++ct, lt += ut) {
                          var pt = ht[lt + G], wt = ht[lt + G + F];
                          if (!(X < pt || wt < X) && !(rt && X === pt)) {
                            for (var Et = et[ct], Ct = G + 1; Ct < F; ++Ct) {
                              var pt = ht[lt + Ct], wt = ht[lt + Ct + F], Gt = j[nt + Ct], Jt = j[nt + Ct + F];
                              if (wt < Gt || Jt < pt)
                                continue t;
                            }
                            var Qt;
                            if (rt ? Qt = q(at, Et) : Qt = q(Et, at), Qt !== void 0)
                              return Qt;
                          }
                        }
                      }
                      function U(F, G, q, rt, st, vt, ht, et, Q, j) {
                        var at = 2 * F, ut = et * at, nt = Q[ut + G];
                        t: for (var X = rt, ct = rt * at; X < st; ++X, ct += at) {
                          var lt = ht[X];
                          if (lt !== j) {
                            var pt = vt[ct + G], wt = vt[ct + G + F];
                            if (!(nt < pt || wt < nt)) {
                              for (var Et = G + 1; Et < F; ++Et) {
                                var pt = vt[ct + Et], wt = vt[ct + Et + F], Ct = Q[ut + Et], Gt = Q[ut + Et + F];
                                if (wt < Ct || Gt < pt)
                                  continue t;
                              }
                              var Jt = q(lt, j);
                              if (Jt !== void 0)
                                return Jt;
                            }
                          }
                        }
                      }
                      function H(F, G, q, rt, st, vt, ht, et, Q) {
                        O(F, rt + ht);
                        var j = 0, at = 2 * F, ut;
                        for (B(j++, 0, 0, rt, 0, ht, q ? 16 : 0, -1 / 0, 1 / 0), q || B(j++, 0, 0, ht, 0, rt, 1, -1 / 0, 1 / 0); j > 0; ) {
                          j -= 1;
                          var nt = j * d, X = w[nt], ct = w[nt + 1], lt = w[nt + 2], pt = w[nt + 3], wt = w[nt + 4], Et = w[nt + 5], Ct = j * h, Gt = z[Ct], Jt = z[Ct + 1], Qt = Et & 1, Vt = !!(Et & 16), zt = st, Rt = vt, Wt = et, kt = Q;
                          if (Qt && (zt = et, Rt = Q, Wt = st, kt = vt), !(Et & 2 && (lt = M(F, X, ct, lt, zt, Rt, Jt), ct >= lt)) && !(Et & 4 && (ct = C(F, X, ct, lt, zt, Rt, Gt), ct >= lt))) {
                            var re = lt - ct, ge = wt - pt;
                            if (Vt) {
                              if (F * re * (re + ge) < f) {
                                if (ut = y.scanComplete(F, X, G, ct, lt, zt, Rt, pt, wt, Wt, kt), ut !== void 0)
                                  return ut;
                                continue;
                              }
                            } else if (F * Math.min(re, ge) < c) {
                              if (ut = l(F, X, G, Qt, ct, lt, zt, Rt, pt, wt, Wt, kt), ut !== void 0)
                                return ut;
                              continue;
                            } else if (F * re * ge < v) {
                              if (ut = y.scanBipartite(F, X, G, Qt, ct, lt, zt, Rt, pt, wt, Wt, kt), ut !== void 0)
                                return ut;
                              continue;
                            }
                            var _e = _(F, X, ct, lt, zt, Rt, Gt, Jt);
                            if (ct < _e)
                              if (F * (_e - ct) < c) {
                                if (ut = o(F, X + 1, G, ct, _e, zt, Rt, pt, wt, Wt, kt), ut !== void 0)
                                  return ut;
                              } else if (X === F - 2) {
                                if (Qt ? ut = y.sweepBipartite(F, G, pt, wt, Wt, kt, ct, _e, zt, Rt) : ut = y.sweepBipartite(F, G, ct, _e, zt, Rt, pt, wt, Wt, kt), ut !== void 0)
                                  return ut;
                              } else
                                B(j++, X + 1, ct, _e, pt, wt, Qt, -1 / 0, 1 / 0), B(j++, X + 1, pt, wt, ct, _e, Qt ^ 1, -1 / 0, 1 / 0);
                            if (_e < lt) {
                              var ce = g(F, X, pt, wt, Wt, kt), ae = Wt[at * ce + X], Se = S(F, X, ce, wt, Wt, kt, ae);
                              if (Se < wt && B(j++, X, _e, lt, Se, wt, (Qt | 4) + (Vt ? 16 : 0), ae, Jt), pt < ce && B(j++, X, _e, lt, pt, ce, (Qt | 2) + (Vt ? 16 : 0), Gt, ae), ce + 1 === Se) {
                                if (Vt ? ut = U(F, X, G, _e, lt, zt, Rt, ce, Wt, kt[ce]) : ut = V(F, X, G, Qt, _e, lt, zt, Rt, ce, Wt, kt[ce]), ut !== void 0)
                                  return ut;
                              } else if (ce < Se) {
                                var ze;
                                if (Vt) {
                                  if (ze = m(F, X, _e, lt, zt, Rt, ae), _e < ze) {
                                    var Ne = S(F, X, _e, ze, zt, Rt, ae);
                                    if (X === F - 2) {
                                      if (_e < Ne && (ut = y.sweepComplete(F, G, _e, Ne, zt, Rt, ce, Se, Wt, kt), ut !== void 0) || Ne < ze && (ut = y.sweepBipartite(F, G, Ne, ze, zt, Rt, ce, Se, Wt, kt), ut !== void 0))
                                        return ut;
                                    } else
                                      _e < Ne && B(j++, X + 1, _e, Ne, ce, Se, 16, -1 / 0, 1 / 0), Ne < ze && (B(j++, X + 1, Ne, ze, ce, Se, 0, -1 / 0, 1 / 0), B(j++, X + 1, ce, Se, Ne, ze, 1, -1 / 0, 1 / 0));
                                  }
                                } else
                                  Qt ? ze = L(F, X, _e, lt, zt, Rt, ae) : ze = m(F, X, _e, lt, zt, Rt, ae), _e < ze && (X === F - 2 ? Qt ? ut = y.sweepBipartite(F, G, ce, Se, Wt, kt, _e, ze, zt, Rt) : ut = y.sweepBipartite(F, G, _e, ze, zt, Rt, ce, Se, Wt, kt) : (B(j++, X + 1, _e, ze, ce, Se, Qt, -1 / 0, 1 / 0), B(j++, X + 1, ce, Se, _e, ze, Qt ^ 1, -1 / 0, 1 / 0)));
                              }
                            }
                          }
                        }
                      }
                    }
                  ),
                  /***/
                  3545: (
                    /***/
                    function(p, u, t) {
                      p.exports = o;
                      var r = t(8105), i = r("lo<p0"), a = 8;
                      function l(y, g, x, c, v, f) {
                        for (var _ = 2 * y, S = _ * (x + 1) + g, M = x + 1; M < c; ++M, S += _)
                          for (var C = v[S], m = M, L = _ * (M - 1); m > x && v[L + g] > C; --m, L -= _) {
                            for (var d = L, h = L + _, E = 0; E < _; ++E, ++d, ++h) {
                              var w = v[d];
                              v[d] = v[h], v[h] = w;
                            }
                            var z = f[m];
                            f[m] = f[m - 1], f[m - 1] = z;
                          }
                      }
                      function o(y, g, x, c, v, f) {
                        if (c <= x + 1)
                          return x;
                        for (var _ = x, S = c, M = c + x >>> 1, C = 2 * y, m = M, L = v[C * M + g]; _ < S; ) {
                          if (S - _ < a) {
                            l(y, g, _, S, v, f), L = v[C * M + g];
                            break;
                          }
                          var d = S - _, h = Math.random() * d + _ | 0, E = v[C * h + g], w = Math.random() * d + _ | 0, z = v[C * w + g], O = Math.random() * d + _ | 0, B = v[C * O + g];
                          E <= z ? B >= z ? (m = w, L = z) : E >= B ? (m = h, L = E) : (m = O, L = B) : z >= B ? (m = w, L = z) : B >= E ? (m = h, L = E) : (m = O, L = B);
                          for (var H = C * (S - 1), F = C * m, V = 0; V < C; ++V, ++H, ++F) {
                            var U = v[H];
                            v[H] = v[F], v[F] = U;
                          }
                          var G = f[S - 1];
                          f[S - 1] = f[m], f[m] = G, m = i(y, g, _, S - 1, v, f, L);
                          for (var H = C * (S - 1), F = C * m, V = 0; V < C; ++V, ++H, ++F) {
                            var U = v[H];
                            v[H] = v[F], v[F] = U;
                          }
                          var G = f[S - 1];
                          if (f[S - 1] = f[m], f[m] = G, M < m) {
                            for (S = m - 1; _ < S && v[C * (S - 1) + g] === L; )
                              S -= 1;
                            S += 1;
                          } else if (m < M)
                            for (_ = m + 1; _ < S && v[C * _ + g] === L; )
                              _ += 1;
                          else
                            break;
                        }
                        return i(y, g, x, M, v, f, v[C * M + g]);
                      }
                    }
                  ),
                  /***/
                  8105: (
                    /***/
                    function(p) {
                      p.exports = t;
                      var u = { "lo===p0": r, "lo<p0": i, "lo<=p0": a, "hi<=p0": l, "lo<p0&&p0<=hi": y, "lo<=p0&&p0<=hi": o, "!(lo>=p0)&&!(p1>=hi)": g };
                      function t(x) {
                        return u[x];
                      }
                      function r(x, c, v, f, _, S, M) {
                        for (var C = 2 * x, m = C * v, L = m, d = v, h = c, E = x + c, w = v; f > w; ++w, m += C) {
                          var z = _[m + h];
                          if (z === M) if (d === w) d += 1, L += C;
                          else {
                            for (var O = 0; C > O; ++O) {
                              var B = _[m + O];
                              _[m + O] = _[L], _[L++] = B;
                            }
                            var V = S[w];
                            S[w] = S[d], S[d++] = V;
                          }
                        }
                        return d;
                      }
                      function i(x, c, v, f, _, S, M) {
                        for (var C = 2 * x, m = C * v, L = m, d = v, h = c, E = x + c, w = v; f > w; ++w, m += C) {
                          var z = _[m + h];
                          if (z < M) if (d === w) d += 1, L += C;
                          else {
                            for (var O = 0; C > O; ++O) {
                              var B = _[m + O];
                              _[m + O] = _[L], _[L++] = B;
                            }
                            var V = S[w];
                            S[w] = S[d], S[d++] = V;
                          }
                        }
                        return d;
                      }
                      function a(x, c, v, f, _, S, M) {
                        for (var C = 2 * x, m = C * v, L = m, d = v, h = c, E = x + c, w = v; f > w; ++w, m += C) {
                          var z = _[m + E];
                          if (z <= M) if (d === w) d += 1, L += C;
                          else {
                            for (var O = 0; C > O; ++O) {
                              var B = _[m + O];
                              _[m + O] = _[L], _[L++] = B;
                            }
                            var V = S[w];
                            S[w] = S[d], S[d++] = V;
                          }
                        }
                        return d;
                      }
                      function l(x, c, v, f, _, S, M) {
                        for (var C = 2 * x, m = C * v, L = m, d = v, h = c, E = x + c, w = v; f > w; ++w, m += C) {
                          var z = _[m + E];
                          if (z <= M) if (d === w) d += 1, L += C;
                          else {
                            for (var O = 0; C > O; ++O) {
                              var B = _[m + O];
                              _[m + O] = _[L], _[L++] = B;
                            }
                            var V = S[w];
                            S[w] = S[d], S[d++] = V;
                          }
                        }
                        return d;
                      }
                      function o(x, c, v, f, _, S, M) {
                        for (var C = 2 * x, m = C * v, L = m, d = v, h = c, E = x + c, w = v; f > w; ++w, m += C) {
                          var z = _[m + h], O = _[m + E];
                          if (z <= M && M <= O) if (d === w) d += 1, L += C;
                          else {
                            for (var B = 0; C > B; ++B) {
                              var V = _[m + B];
                              _[m + B] = _[L], _[L++] = V;
                            }
                            var U = S[w];
                            S[w] = S[d], S[d++] = U;
                          }
                        }
                        return d;
                      }
                      function y(x, c, v, f, _, S, M) {
                        for (var C = 2 * x, m = C * v, L = m, d = v, h = c, E = x + c, w = v; f > w; ++w, m += C) {
                          var z = _[m + h], O = _[m + E];
                          if (z < M && M <= O) if (d === w) d += 1, L += C;
                          else {
                            for (var B = 0; C > B; ++B) {
                              var V = _[m + B];
                              _[m + B] = _[L], _[L++] = V;
                            }
                            var U = S[w];
                            S[w] = S[d], S[d++] = U;
                          }
                        }
                        return d;
                      }
                      function g(x, c, v, f, _, S, M, C) {
                        for (var m = 2 * x, L = m * v, d = L, h = v, E = c, w = x + c, z = v; f > z; ++z, L += m) {
                          var O = _[L + E], B = _[L + w];
                          if (!(O >= M) && !(C >= B)) if (h === z) h += 1, d += m;
                          else {
                            for (var V = 0; m > V; ++V) {
                              var U = _[L + V];
                              _[L + V] = _[d], _[d++] = U;
                            }
                            var H = S[z];
                            S[z] = S[h], S[h++] = H;
                          }
                        }
                        return h;
                      }
                    }
                  ),
                  /***/
                  1811: (
                    /***/
                    function(p) {
                      p.exports = t;
                      var u = 32;
                      function t(c, v) {
                        v <= 4 * u ? r(0, v - 1, c) : x(0, v - 1, c);
                      }
                      function r(c, v, f) {
                        for (var _ = 2 * (c + 1), S = c + 1; S <= v; ++S) {
                          for (var M = f[_++], C = f[_++], m = S, L = _ - 2; m-- > c; ) {
                            var d = f[L - 2], h = f[L - 1];
                            if (d < M)
                              break;
                            if (d === M && h < C)
                              break;
                            f[L] = d, f[L + 1] = h, L -= 2;
                          }
                          f[L] = M, f[L + 1] = C;
                        }
                      }
                      function i(c, v, f) {
                        c *= 2, v *= 2;
                        var _ = f[c], S = f[c + 1];
                        f[c] = f[v], f[c + 1] = f[v + 1], f[v] = _, f[v + 1] = S;
                      }
                      function a(c, v, f) {
                        c *= 2, v *= 2, f[c] = f[v], f[c + 1] = f[v + 1];
                      }
                      function l(c, v, f, _) {
                        c *= 2, v *= 2, f *= 2;
                        var S = _[c], M = _[c + 1];
                        _[c] = _[v], _[c + 1] = _[v + 1], _[v] = _[f], _[v + 1] = _[f + 1], _[f] = S, _[f + 1] = M;
                      }
                      function o(c, v, f, _, S) {
                        c *= 2, v *= 2, S[c] = S[v], S[v] = f, S[c + 1] = S[v + 1], S[v + 1] = _;
                      }
                      function y(c, v, f) {
                        c *= 2, v *= 2;
                        var _ = f[c], S = f[v];
                        return _ < S ? !1 : _ === S ? f[c + 1] > f[v + 1] : !0;
                      }
                      function g(c, v, f, _) {
                        c *= 2;
                        var S = _[c];
                        return S < v ? !0 : S === v ? _[c + 1] < f : !1;
                      }
                      function x(c, v, f) {
                        var _ = (v - c + 1) / 6 | 0, S = c + _, M = v - _, C = c + v >> 1, m = C - _, L = C + _, d = S, h = m, E = C, w = L, z = M, O = c + 1, B = v - 1, V = 0;
                        y(d, h, f) && (V = d, d = h, h = V), y(w, z, f) && (V = w, w = z, z = V), y(d, E, f) && (V = d, d = E, E = V), y(h, E, f) && (V = h, h = E, E = V), y(d, w, f) && (V = d, d = w, w = V), y(E, w, f) && (V = E, E = w, w = V), y(h, z, f) && (V = h, h = z, z = V), y(h, E, f) && (V = h, h = E, E = V), y(w, z, f) && (V = w, w = z, z = V);
                        for (var U = f[2 * h], H = f[2 * h + 1], F = f[2 * w], G = f[2 * w + 1], q = 2 * d, rt = 2 * E, st = 2 * z, vt = 2 * S, ht = 2 * C, et = 2 * M, Q = 0; Q < 2; ++Q) {
                          var j = f[q + Q], at = f[rt + Q], ut = f[st + Q];
                          f[vt + Q] = j, f[ht + Q] = at, f[et + Q] = ut;
                        }
                        a(m, c, f), a(L, v, f);
                        for (var nt = O; nt <= B; ++nt)
                          if (g(nt, U, H, f))
                            nt !== O && i(nt, O, f), ++O;
                          else if (!g(nt, F, G, f))
                            for (; ; )
                              if (g(B, F, G, f)) {
                                g(B, U, H, f) ? (l(nt, O, B, f), ++O, --B) : (i(nt, B, f), --B);
                                break;
                              } else {
                                if (--B < nt)
                                  break;
                                continue;
                              }
                        o(c, O - 1, U, H, f), o(v, B + 1, F, G, f), O - 2 - c <= u ? r(c, O - 2, f) : x(c, O - 2, f), v - (B + 2) <= u ? r(B + 2, v, f) : x(B + 2, v, f), B - O <= u ? r(O, B, f) : x(O, B, f);
                      }
                    }
                  ),
                  /***/
                  855: (
                    /***/
                    function(p, u, t) {
                      p.exports = { init: S, sweepBipartite: m, sweepComplete: L, scanBipartite: d, scanComplete: h };
                      var r = t(1888), i = t(8828), a = t(1811), l = 1 << 28, o = 1024, y = r.mallocInt32(o), g = r.mallocInt32(o), x = r.mallocInt32(o), c = r.mallocInt32(o), v = r.mallocInt32(o), f = r.mallocInt32(o), _ = r.mallocDouble(o * 8);
                      function S(E) {
                        var w = i.nextPow2(E);
                        y.length < w && (r.free(y), y = r.mallocInt32(w)), g.length < w && (r.free(g), g = r.mallocInt32(w)), x.length < w && (r.free(x), x = r.mallocInt32(w)), c.length < w && (r.free(c), c = r.mallocInt32(w)), v.length < w && (r.free(v), v = r.mallocInt32(w)), f.length < w && (r.free(f), f = r.mallocInt32(w));
                        var z = 8 * w;
                        _.length < z && (r.free(_), _ = r.mallocDouble(z));
                      }
                      function M(E, w, z, O) {
                        var B = w[O], V = E[z - 1];
                        E[B] = V, w[V] = B;
                      }
                      function C(E, w, z, O) {
                        E[z] = O, w[O] = z;
                      }
                      function m(E, w, z, O, B, V, U, H, F, G) {
                        for (var q = 0, rt = 2 * E, st = E - 1, vt = rt - 1, ht = z; ht < O; ++ht) {
                          var et = V[ht], Q = rt * ht;
                          _[q++] = B[Q + st], _[q++] = -(et + 1), _[q++] = B[Q + vt], _[q++] = et;
                        }
                        for (var ht = U; ht < H; ++ht) {
                          var et = G[ht] + l, j = rt * ht;
                          _[q++] = F[j + st], _[q++] = -et, _[q++] = F[j + vt], _[q++] = et;
                        }
                        var at = q >>> 1;
                        a(_, at);
                        for (var ut = 0, nt = 0, ht = 0; ht < at; ++ht) {
                          var X = _[2 * ht + 1] | 0;
                          if (X >= l)
                            X = X - l | 0, M(x, c, nt--, X);
                          else if (X >= 0)
                            M(y, g, ut--, X);
                          else if (X <= -l) {
                            X = -X - l | 0;
                            for (var ct = 0; ct < ut; ++ct) {
                              var lt = w(y[ct], X);
                              if (lt !== void 0)
                                return lt;
                            }
                            C(x, c, nt++, X);
                          } else {
                            X = -X - 1 | 0;
                            for (var ct = 0; ct < nt; ++ct) {
                              var lt = w(X, x[ct]);
                              if (lt !== void 0)
                                return lt;
                            }
                            C(y, g, ut++, X);
                          }
                        }
                      }
                      function L(E, w, z, O, B, V, U, H, F, G) {
                        for (var q = 0, rt = 2 * E, st = E - 1, vt = rt - 1, ht = z; ht < O; ++ht) {
                          var et = V[ht] + 1 << 1, Q = rt * ht;
                          _[q++] = B[Q + st], _[q++] = -et, _[q++] = B[Q + vt], _[q++] = et;
                        }
                        for (var ht = U; ht < H; ++ht) {
                          var et = G[ht] + 1 << 1, j = rt * ht;
                          _[q++] = F[j + st], _[q++] = -et | 1, _[q++] = F[j + vt], _[q++] = et | 1;
                        }
                        var at = q >>> 1;
                        a(_, at);
                        for (var ut = 0, nt = 0, X = 0, ht = 0; ht < at; ++ht) {
                          var ct = _[2 * ht + 1] | 0, lt = ct & 1;
                          if (ht < at - 1 && ct >> 1 === _[2 * ht + 3] >> 1 && (lt = 2, ht += 1), ct < 0) {
                            for (var pt = -(ct >> 1) - 1, wt = 0; wt < X; ++wt) {
                              var Et = w(v[wt], pt);
                              if (Et !== void 0)
                                return Et;
                            }
                            if (lt !== 0)
                              for (var wt = 0; wt < ut; ++wt) {
                                var Et = w(y[wt], pt);
                                if (Et !== void 0)
                                  return Et;
                              }
                            if (lt !== 1)
                              for (var wt = 0; wt < nt; ++wt) {
                                var Et = w(x[wt], pt);
                                if (Et !== void 0)
                                  return Et;
                              }
                            lt === 0 ? C(y, g, ut++, pt) : lt === 1 ? C(x, c, nt++, pt) : lt === 2 && C(v, f, X++, pt);
                          } else {
                            var pt = (ct >> 1) - 1;
                            lt === 0 ? M(y, g, ut--, pt) : lt === 1 ? M(x, c, nt--, pt) : lt === 2 && M(v, f, X--, pt);
                          }
                        }
                      }
                      function d(E, w, z, O, B, V, U, H, F, G, q, rt) {
                        var st = 0, vt = 2 * E, ht = w, et = w + E, Q = 1, j = 1;
                        O ? j = l : Q = l;
                        for (var at = B; at < V; ++at) {
                          var ut = at + Q, nt = vt * at;
                          _[st++] = U[nt + ht], _[st++] = -ut, _[st++] = U[nt + et], _[st++] = ut;
                        }
                        for (var at = F; at < G; ++at) {
                          var ut = at + j, X = vt * at;
                          _[st++] = q[X + ht], _[st++] = -ut;
                        }
                        var ct = st >>> 1;
                        a(_, ct);
                        for (var lt = 0, at = 0; at < ct; ++at) {
                          var pt = _[2 * at + 1] | 0;
                          if (pt < 0) {
                            var ut = -pt, wt = !1;
                            if (ut >= l ? (wt = !O, ut -= l) : (wt = !!O, ut -= 1), wt)
                              C(y, g, lt++, ut);
                            else {
                              var Et = rt[ut], Ct = vt * ut, Gt = q[Ct + w + 1], Jt = q[Ct + w + 1 + E];
                              t: for (var Qt = 0; Qt < lt; ++Qt) {
                                var Vt = y[Qt], zt = vt * Vt;
                                if (!(Jt < U[zt + w + 1] || U[zt + w + 1 + E] < Gt)) {
                                  for (var Rt = w + 2; Rt < E; ++Rt)
                                    if (q[Ct + Rt + E] < U[zt + Rt] || U[zt + Rt + E] < q[Ct + Rt])
                                      continue t;
                                  var Wt = H[Vt], kt;
                                  if (O ? kt = z(Et, Wt) : kt = z(Wt, Et), kt !== void 0)
                                    return kt;
                                }
                              }
                            }
                          } else
                            M(y, g, lt--, pt - Q);
                        }
                      }
                      function h(E, w, z, O, B, V, U, H, F, G, q) {
                        for (var rt = 0, st = 2 * E, vt = w, ht = w + E, et = O; et < B; ++et) {
                          var Q = et + l, j = st * et;
                          _[rt++] = V[j + vt], _[rt++] = -Q, _[rt++] = V[j + ht], _[rt++] = Q;
                        }
                        for (var et = H; et < F; ++et) {
                          var Q = et + 1, at = st * et;
                          _[rt++] = G[at + vt], _[rt++] = -Q;
                        }
                        var ut = rt >>> 1;
                        a(_, ut);
                        for (var nt = 0, et = 0; et < ut; ++et) {
                          var X = _[2 * et + 1] | 0;
                          if (X < 0) {
                            var Q = -X;
                            if (Q >= l)
                              y[nt++] = Q - l;
                            else {
                              Q -= 1;
                              var ct = q[Q], lt = st * Q, pt = G[lt + w + 1], wt = G[lt + w + 1 + E];
                              t: for (var Et = 0; Et < nt; ++Et) {
                                var Ct = y[Et], Gt = U[Ct];
                                if (Gt === ct)
                                  break;
                                var Jt = st * Ct;
                                if (!(wt < V[Jt + w + 1] || V[Jt + w + 1 + E] < pt)) {
                                  for (var Qt = w + 2; Qt < E; ++Qt)
                                    if (G[lt + Qt + E] < V[Jt + Qt] || V[Jt + Qt + E] < G[lt + Qt])
                                      continue t;
                                  var Vt = z(Gt, ct);
                                  if (Vt !== void 0)
                                    return Vt;
                                }
                              }
                            }
                          } else {
                            for (var Q = X - l, Et = nt - 1; Et >= 0; --Et)
                              if (y[Et] === Q) {
                                for (var Qt = Et + 1; Qt < nt; ++Qt)
                                  y[Qt - 1] = y[Qt];
                                break;
                              }
                            --nt;
                          }
                        }
                      }
                    }
                  ),
                  /***/
                  2538: (
                    /***/
                    function(p, u, t) {
                      var r = t(8902), i = t(5542), a = t(2272), l = t(5023);
                      p.exports = c;
                      function o(v) {
                        return [Math.min(v[0], v[1]), Math.max(v[0], v[1])];
                      }
                      function y(v, f) {
                        return v[0] - f[0] || v[1] - f[1];
                      }
                      function g(v) {
                        return v.map(o).sort(y);
                      }
                      function x(v, f, _) {
                        return f in v ? v[f] : _;
                      }
                      function c(v, f, _) {
                        Array.isArray(f) ? (_ = _ || {}, f = f || []) : (_ = f || {}, f = []);
                        var S = !!x(_, "delaunay", !0), M = !!x(_, "interior", !0), C = !!x(_, "exterior", !0), m = !!x(_, "infinity", !1);
                        if (!M && !C || v.length === 0)
                          return [];
                        var L = r(v, f);
                        if (S || M !== C || m) {
                          for (var d = i(v.length, g(f)), h = 0; h < L.length; ++h) {
                            var E = L[h];
                            d.addTriangle(E[0], E[1], E[2]);
                          }
                          return S && a(v, d), C ? M ? m ? l(d, 0, m) : d.cells() : l(d, 1, m) : l(d, -1);
                        } else
                          return L;
                      }
                    }
                  ),
                  /***/
                  2272: (
                    /***/
                    function(p, u, t) {
                      var r = t(2646)[4];
                      t(2478), p.exports = a;
                      function i(l, o, y, g, x, c) {
                        var v = o.opposite(g, x);
                        if (!(v < 0)) {
                          if (x < g) {
                            var f = g;
                            g = x, x = f, f = c, c = v, v = f;
                          }
                          o.isConstraint(g, x) || r(l[g], l[x], l[c], l[v]) < 0 && y.push(g, x);
                        }
                      }
                      function a(l, o) {
                        for (var y = [], g = l.length, x = o.stars, c = 0; c < g; ++c)
                          for (var v = x[c], f = 1; f < v.length; f += 2) {
                            var _ = v[f];
                            if (!(_ < c) && !o.isConstraint(c, _)) {
                              for (var S = v[f - 1], M = -1, C = 1; C < v.length; C += 2)
                                if (v[C - 1] === _) {
                                  M = v[C];
                                  break;
                                }
                              M < 0 || r(l[c], l[_], l[S], l[M]) < 0 && y.push(c, _);
                            }
                          }
                        for (; y.length > 0; ) {
                          for (var _ = y.pop(), c = y.pop(), S = -1, M = -1, v = x[c], m = 1; m < v.length; m += 2) {
                            var L = v[m - 1], d = v[m];
                            L === _ ? M = d : d === _ && (S = L);
                          }
                          S < 0 || M < 0 || r(l[c], l[_], l[S], l[M]) >= 0 || (o.flip(c, _), i(l, o, y, S, c, M), i(l, o, y, c, M, S), i(l, o, y, M, _, S), i(l, o, y, _, S, M));
                        }
                      }
                    }
                  ),
                  /***/
                  5023: (
                    /***/
                    function(p, u, t) {
                      var r = t(2478);
                      p.exports = g;
                      function i(x, c, v, f, _, S, M) {
                        this.cells = x, this.neighbor = c, this.flags = f, this.constraint = v, this.active = _, this.next = S, this.boundary = M;
                      }
                      var a = i.prototype;
                      function l(x, c) {
                        return x[0] - c[0] || x[1] - c[1] || x[2] - c[2];
                      }
                      a.locate = /* @__PURE__ */ function() {
                        var x = [0, 0, 0];
                        return function(c, v, f) {
                          var _ = c, S = v, M = f;
                          return v < f ? v < c && (_ = v, S = f, M = c) : f < c && (_ = f, S = c, M = v), _ < 0 ? -1 : (x[0] = _, x[1] = S, x[2] = M, r.eq(this.cells, x, l));
                        };
                      }();
                      function o(x, c) {
                        for (var v = x.cells(), f = v.length, _ = 0; _ < f; ++_) {
                          var S = v[_], M = S[0], C = S[1], m = S[2];
                          C < m ? C < M && (S[0] = C, S[1] = m, S[2] = M) : m < M && (S[0] = m, S[1] = M, S[2] = C);
                        }
                        v.sort(l);
                        for (var L = new Array(f), _ = 0; _ < L.length; ++_)
                          L[_] = 0;
                        var d = [], h = [], E = new Array(3 * f), w = new Array(3 * f), z = null;
                        c && (z = []);
                        for (var O = new i(v, E, w, L, d, h, z), _ = 0; _ < f; ++_)
                          for (var S = v[_], B = 0; B < 3; ++B) {
                            var M = S[B], C = S[(B + 1) % 3], V = E[3 * _ + B] = O.locate(C, M, x.opposite(C, M)), U = w[3 * _ + B] = x.isConstraint(M, C);
                            V < 0 && (U ? h.push(_) : (d.push(_), L[_] = 1), c && z.push([C, M, -1]));
                          }
                        return O;
                      }
                      function y(x, c, v) {
                        for (var f = 0, _ = 0; _ < x.length; ++_)
                          c[_] === v && (x[f++] = x[_]);
                        return x.length = f, x;
                      }
                      function g(x, c, v) {
                        var f = o(x, v);
                        if (c === 0)
                          return v ? f.cells.concat(f.boundary) : f.cells;
                        for (var _ = 1, S = f.active, M = f.next, C = f.flags, m = f.cells, L = f.constraint, d = f.neighbor; S.length > 0 || M.length > 0; ) {
                          for (; S.length > 0; ) {
                            var h = S.pop();
                            if (C[h] !== -_) {
                              C[h] = _, m[h];
                              for (var E = 0; E < 3; ++E) {
                                var w = d[3 * h + E];
                                w >= 0 && C[w] === 0 && (L[3 * h + E] ? M.push(w) : (S.push(w), C[w] = _));
                              }
                            }
                          }
                          var z = M;
                          M = S, S = z, M.length = 0, _ = -_;
                        }
                        var O = y(m, C, c);
                        return v ? O.concat(f.boundary) : O;
                      }
                    }
                  ),
                  /***/
                  8902: (
                    /***/
                    function(p, u, t) {
                      var r = t(2478), i = t(3250)[3], a = 0, l = 1, o = 2;
                      p.exports = M;
                      function y(C, m, L, d, h) {
                        this.a = C, this.b = m, this.idx = L, this.lowerIds = d, this.upperIds = h;
                      }
                      function g(C, m, L, d) {
                        this.a = C, this.b = m, this.type = L, this.idx = d;
                      }
                      function x(C, m) {
                        var L = C.a[0] - m.a[0] || C.a[1] - m.a[1] || C.type - m.type;
                        return L || C.type !== a && (L = i(C.a, C.b, m.b), L) ? L : C.idx - m.idx;
                      }
                      function c(C, m) {
                        return i(C.a, C.b, m);
                      }
                      function v(C, m, L, d, h) {
                        for (var E = r.lt(m, d, c), w = r.gt(m, d, c), z = E; z < w; ++z) {
                          for (var O = m[z], B = O.lowerIds, U = B.length; U > 1 && i(L[B[U - 2]], L[B[U - 1]], d) > 0; )
                            C.push([B[U - 1], B[U - 2], h]), U -= 1;
                          B.length = U, B.push(h);
                          for (var V = O.upperIds, U = V.length; U > 1 && i(L[V[U - 2]], L[V[U - 1]], d) < 0; )
                            C.push([V[U - 2], V[U - 1], h]), U -= 1;
                          V.length = U, V.push(h);
                        }
                      }
                      function f(C, m) {
                        var L;
                        return C.a[0] < m.a[0] ? L = i(C.a, C.b, m.a) : L = i(m.b, m.a, C.a), L || (m.b[0] < C.b[0] ? L = i(C.a, C.b, m.b) : L = i(m.b, m.a, C.b), L || C.idx - m.idx);
                      }
                      function _(C, m, L) {
                        var d = r.le(C, L, f), h = C[d], E = h.upperIds, w = E[E.length - 1];
                        h.upperIds = [w], C.splice(d + 1, 0, new y(L.a, L.b, L.idx, [w], E));
                      }
                      function S(C, m, L) {
                        var d = L.a;
                        L.a = L.b, L.b = d;
                        var h = r.eq(C, L, f), E = C[h], w = C[h - 1];
                        w.upperIds = E.upperIds, C.splice(h, 1);
                      }
                      function M(C, m) {
                        for (var L = C.length, d = m.length, h = [], E = 0; E < L; ++E)
                          h.push(new g(C[E], null, a, E));
                        for (var E = 0; E < d; ++E) {
                          var w = m[E], z = C[w[0]], O = C[w[1]];
                          z[0] < O[0] ? h.push(new g(z, O, o, E), new g(O, z, l, E)) : z[0] > O[0] && h.push(new g(O, z, o, E), new g(z, O, l, E));
                        }
                        h.sort(x);
                        for (var B = h[0].a[0] - (1 + Math.abs(h[0].a[0])) * Math.pow(2, -52), V = [new y([B, 1], [B, 0], -1, [], [])], U = [], E = 0, H = h.length; E < H; ++E) {
                          var F = h[E], G = F.type;
                          G === a ? v(U, V, C, F.a, F.idx) : G === o ? _(V, C, F) : S(V, C, F);
                        }
                        return U;
                      }
                    }
                  ),
                  /***/
                  5542: (
                    /***/
                    function(p, u, t) {
                      var r = t(2478);
                      p.exports = o;
                      function i(y, g) {
                        this.stars = y, this.edges = g;
                      }
                      var a = i.prototype;
                      function l(y, g, x) {
                        for (var c = 1, v = y.length; c < v; c += 2)
                          if (y[c - 1] === g && y[c] === x) {
                            y[c - 1] = y[v - 2], y[c] = y[v - 1], y.length = v - 2;
                            return;
                          }
                      }
                      a.isConstraint = /* @__PURE__ */ function() {
                        var y = [0, 0];
                        function g(x, c) {
                          return x[0] - c[0] || x[1] - c[1];
                        }
                        return function(x, c) {
                          return y[0] = Math.min(x, c), y[1] = Math.max(x, c), r.eq(this.edges, y, g) >= 0;
                        };
                      }(), a.removeTriangle = function(y, g, x) {
                        var c = this.stars;
                        l(c[y], g, x), l(c[g], x, y), l(c[x], y, g);
                      }, a.addTriangle = function(y, g, x) {
                        var c = this.stars;
                        c[y].push(g, x), c[g].push(x, y), c[x].push(y, g);
                      }, a.opposite = function(y, g) {
                        for (var x = this.stars[g], c = 1, v = x.length; c < v; c += 2)
                          if (x[c] === y)
                            return x[c - 1];
                        return -1;
                      }, a.flip = function(y, g) {
                        var x = this.opposite(y, g), c = this.opposite(g, y);
                        this.removeTriangle(y, g, x), this.removeTriangle(g, y, c), this.addTriangle(y, c, x), this.addTriangle(g, x, c);
                      }, a.edges = function() {
                        for (var y = this.stars, g = [], x = 0, c = y.length; x < c; ++x)
                          for (var v = y[x], f = 0, _ = v.length; f < _; f += 2)
                            g.push([v[f], v[f + 1]]);
                        return g;
                      }, a.cells = function() {
                        for (var y = this.stars, g = [], x = 0, c = y.length; x < c; ++x)
                          for (var v = y[x], f = 0, _ = v.length; f < _; f += 2) {
                            var S = v[f], M = v[f + 1];
                            x < Math.min(S, M) && g.push([x, S, M]);
                          }
                        return g;
                      };
                      function o(y, g) {
                        for (var x = new Array(y), c = 0; c < y; ++c)
                          x[c] = [];
                        return new i(x, g);
                      }
                    }
                  ),
                  /***/
                  2419: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t) {
                        for (var r = 1, i = 1; i < t.length; ++i)
                          for (var a = 0; a < i; ++a)
                            if (t[i] < t[a])
                              r = -r;
                            else if (t[a] === t[i])
                              return 0;
                        return r;
                      }
                    }
                  ),
                  /***/
                  3628: (
                    /***/
                    function(p, u, t) {
                      var r = t(1338), i = t(727);
                      function a(y, g) {
                        for (var x = 0, c = y.length, v = 0; v < c; ++v)
                          x += y[v] * g[v];
                        return x;
                      }
                      function l(y) {
                        var g = y.length;
                        if (g === 0)
                          return [];
                        y[0].length;
                        var x = r([y.length + 1, y.length + 1], 1), c = r([y.length + 1], 1);
                        x[g][g] = 0;
                        for (var v = 0; v < g; ++v) {
                          for (var f = 0; f <= v; ++f)
                            x[f][v] = x[v][f] = 2 * a(y[v], y[f]);
                          c[v] = a(y[v], y[v]);
                        }
                        for (var _ = i(x, c), S = 0, M = _[g + 1], v = 0; v < M.length; ++v)
                          S += M[v];
                        for (var C = new Array(g), v = 0; v < g; ++v) {
                          for (var M = _[v], m = 0, f = 0; f < M.length; ++f)
                            m += M[f];
                          C[v] = m / S;
                        }
                        return C;
                      }
                      function o(y) {
                        if (y.length === 0)
                          return [];
                        for (var g = y[0].length, x = r([g]), c = l(y), v = 0; v < y.length; ++v)
                          for (var f = 0; f < g; ++f)
                            x[f] += y[v][f] * c[v];
                        return x;
                      }
                      o.barycenetric = l, p.exports = o;
                    }
                  ),
                  /***/
                  6037: (
                    /***/
                    function(p, u, t) {
                      p.exports = i;
                      var r = t(3628);
                      function i(a) {
                        for (var l = r(a), o = 0, y = 0; y < a.length; ++y)
                          for (var g = a[y], x = 0; x < l.length; ++x)
                            o += Math.pow(g[x] - l[x], 2);
                        return Math.sqrt(o / a.length);
                      }
                    }
                  ),
                  /***/
                  332: (
                    /***/
                    function(p, u, t) {
                      p.exports = z;
                      var r = t(1755), i = t(6867), a = t(1125), l = t(7842), o = t(1318), y = t(946), g = t(5838), x = t(1278), c = t(3637);
                      function v(O) {
                        var B = y(O);
                        return [x(B, -1 / 0), x(B, 1 / 0)];
                      }
                      function f(O, B) {
                        for (var V = new Array(B.length), U = 0; U < B.length; ++U) {
                          var H = B[U], F = O[H[0]], G = O[H[1]];
                          V[U] = [x(Math.min(F[0], G[0]), -1 / 0), x(Math.min(F[1], G[1]), -1 / 0), x(Math.max(F[0], G[0]), 1 / 0), x(Math.max(F[1], G[1]), 1 / 0)];
                        }
                        return V;
                      }
                      function _(O) {
                        for (var B = new Array(O.length), V = 0; V < O.length; ++V) {
                          var U = O[V];
                          B[V] = [x(U[0], -1 / 0), x(U[1], -1 / 0), x(U[0], 1 / 0), x(U[1], 1 / 0)];
                        }
                        return B;
                      }
                      function S(O, B, V) {
                        var U = [];
                        return i(V, function(H, F) {
                          var G = B[H], q = B[F];
                          if (!(G[0] === q[0] || G[0] === q[1] || G[1] === q[0] || G[1] === q[1])) {
                            var rt = O[G[0]], st = O[G[1]], vt = O[q[0]], ht = O[q[1]];
                            a(rt, st, vt, ht) && U.push([H, F]);
                          }
                        }), U;
                      }
                      function M(O, B, V, U) {
                        var H = [];
                        return i(V, U, function(F, G) {
                          var q = B[F];
                          if (!(q[0] === G || q[1] === G)) {
                            var rt = O[G], st = O[q[0]], vt = O[q[1]];
                            a(st, vt, rt, rt) && H.push([F, G]);
                          }
                        }), H;
                      }
                      function C(O, B, V, U, H) {
                        var F, G, q = O.map(function(Ct) {
                          return [l(Ct[0]), l(Ct[1])];
                        });
                        for (F = 0; F < V.length; ++F) {
                          var rt = V[F];
                          G = rt[0];
                          var st = rt[1], vt = B[G], ht = B[st], et = c(g(O[vt[0]]), g(O[vt[1]]), g(O[ht[0]]), g(O[ht[1]]));
                          if (et) {
                            var Q = O.length;
                            O.push([y(et[0]), y(et[1])]), q.push(et), U.push([G, Q], [st, Q]);
                          }
                        }
                        for (U.sort(function(Ct, Gt) {
                          if (Ct[0] !== Gt[0])
                            return Ct[0] - Gt[0];
                          var Jt = q[Ct[1]], Qt = q[Gt[1]];
                          return o(Jt[0], Qt[0]) || o(Jt[1], Qt[1]);
                        }), F = U.length - 1; F >= 0; --F) {
                          var j = U[F];
                          G = j[0];
                          var at = B[G], ut = at[0], nt = at[1], X = O[ut], ct = O[nt];
                          if ((X[0] - ct[0] || X[1] - ct[1]) < 0) {
                            var lt = ut;
                            ut = nt, nt = lt;
                          }
                          at[0] = ut;
                          var pt = at[1] = j[1], wt;
                          for (H && (wt = at[2]); F > 0 && U[F - 1][0] === G; ) {
                            var j = U[--F], Et = j[1];
                            H ? B.push([pt, Et, wt]) : B.push([pt, Et]), pt = Et;
                          }
                          H ? B.push([pt, nt, wt]) : B.push([pt, nt]);
                        }
                        return q;
                      }
                      function m(O, B, V) {
                        for (var U = B.length, H = new r(U), F = [], G = 0; G < B.length; ++G) {
                          var q = B[G], rt = v(q[0]), st = v(q[1]);
                          F.push([x(rt[0], -1 / 0), x(st[0], -1 / 0), x(rt[1], 1 / 0), x(st[1], 1 / 0)]);
                        }
                        i(F, function(j, at) {
                          H.link(j, at);
                        });
                        for (var vt = !0, ht = new Array(U), G = 0; G < U; ++G) {
                          var et = H.find(G);
                          et !== G && (vt = !1, O[et] = [Math.min(O[G][0], O[et][0]), Math.min(O[G][1], O[et][1])]);
                        }
                        if (vt)
                          return null;
                        for (var Q = 0, G = 0; G < U; ++G) {
                          var et = H.find(G);
                          et === G ? (ht[G] = Q, O[Q++] = O[G]) : ht[G] = -1;
                        }
                        O.length = Q;
                        for (var G = 0; G < U; ++G)
                          ht[G] < 0 && (ht[G] = ht[H.find(G)]);
                        return ht;
                      }
                      function L(O, B) {
                        return O[0] - B[0] || O[1] - B[1];
                      }
                      function d(O, B) {
                        var V = O[0] - B[0] || O[1] - B[1];
                        return V || (O[2] < B[2] ? -1 : O[2] > B[2] ? 1 : 0);
                      }
                      function h(O, B, V) {
                        if (O.length !== 0) {
                          if (B)
                            for (var U = 0; U < O.length; ++U) {
                              var H = O[U], F = B[H[0]], G = B[H[1]];
                              H[0] = Math.min(F, G), H[1] = Math.max(F, G);
                            }
                          else
                            for (var U = 0; U < O.length; ++U) {
                              var H = O[U], F = H[0], G = H[1];
                              H[0] = Math.min(F, G), H[1] = Math.max(F, G);
                            }
                          V ? O.sort(d) : O.sort(L);
                          for (var q = 1, U = 1; U < O.length; ++U) {
                            var rt = O[U - 1], st = O[U];
                            st[0] === rt[0] && st[1] === rt[1] && (!V || st[2] === rt[2]) || (O[q++] = st);
                          }
                          O.length = q;
                        }
                      }
                      function E(O, B, V) {
                        var U = m(O, [], _(O));
                        return h(B, U, V), !!U;
                      }
                      function w(O, B, V) {
                        var U = f(O, B), H = S(O, B, U), F = _(O), G = M(O, B, U, F), q = C(O, B, H, G, V), rt = m(O, q);
                        return h(B, rt, V), rt ? !0 : H.length > 0 || G.length > 0;
                      }
                      function z(O, B, V) {
                        var U;
                        if (V) {
                          U = B;
                          for (var H = new Array(B.length), F = 0; F < B.length; ++F) {
                            var G = B[F];
                            H[F] = [G[0], G[1], V[F]];
                          }
                          B = H;
                        }
                        for (var q = E(O, B, !!V); w(O, B, !!V); )
                          q = !0;
                        if (V && q) {
                          U.length = 0, V.length = 0;
                          for (var F = 0; F < B.length; ++F) {
                            var G = B[F];
                            U.push([G[0], G[1]]), V.push(G[2]);
                          }
                        }
                        return q;
                      }
                    }
                  ),
                  /***/
                  3637: (
                    /***/
                    function(p, u, t) {
                      p.exports = c;
                      var r = t(6504), i = t(8697), a = t(5572), l = t(7721), o = t(544), y = t(2653), g = t(8987);
                      function x(v, f) {
                        return a(r(v[0], f[1]), r(v[1], f[0]));
                      }
                      function c(v, f, _, S) {
                        var M = o(f, v), C = o(S, _), m = x(M, C);
                        if (l(m) === 0)
                          return null;
                        var L = o(v, _), d = x(C, L), h = i(d, m), E = g(M, h), w = y(v, E);
                        return w;
                      }
                    }
                  ),
                  /***/
                  3642: (
                    /***/
                    function(p) {
                      p.exports = { jet: [{ index: 0, rgb: [0, 0, 131] }, { index: 0.125, rgb: [0, 60, 170] }, { index: 0.375, rgb: [5, 255, 255] }, { index: 0.625, rgb: [255, 255, 0] }, { index: 0.875, rgb: [250, 0, 0] }, { index: 1, rgb: [128, 0, 0] }], hsv: [{ index: 0, rgb: [255, 0, 0] }, { index: 0.169, rgb: [253, 255, 2] }, { index: 0.173, rgb: [247, 255, 2] }, { index: 0.337, rgb: [0, 252, 4] }, { index: 0.341, rgb: [0, 252, 10] }, { index: 0.506, rgb: [1, 249, 255] }, { index: 0.671, rgb: [2, 0, 253] }, { index: 0.675, rgb: [8, 0, 253] }, { index: 0.839, rgb: [255, 0, 251] }, { index: 0.843, rgb: [255, 0, 245] }, { index: 1, rgb: [255, 0, 6] }], hot: [{ index: 0, rgb: [0, 0, 0] }, { index: 0.3, rgb: [230, 0, 0] }, { index: 0.6, rgb: [255, 210, 0] }, { index: 1, rgb: [255, 255, 255] }], spring: [{ index: 0, rgb: [255, 0, 255] }, { index: 1, rgb: [255, 255, 0] }], summer: [{ index: 0, rgb: [0, 128, 102] }, { index: 1, rgb: [255, 255, 102] }], autumn: [{ index: 0, rgb: [255, 0, 0] }, { index: 1, rgb: [255, 255, 0] }], winter: [{ index: 0, rgb: [0, 0, 255] }, { index: 1, rgb: [0, 255, 128] }], bone: [{ index: 0, rgb: [0, 0, 0] }, { index: 0.376, rgb: [84, 84, 116] }, { index: 0.753, rgb: [169, 200, 200] }, { index: 1, rgb: [255, 255, 255] }], copper: [{ index: 0, rgb: [0, 0, 0] }, { index: 0.804, rgb: [255, 160, 102] }, { index: 1, rgb: [255, 199, 127] }], greys: [{ index: 0, rgb: [0, 0, 0] }, { index: 1, rgb: [255, 255, 255] }], yignbu: [{ index: 0, rgb: [8, 29, 88] }, { index: 0.125, rgb: [37, 52, 148] }, { index: 0.25, rgb: [34, 94, 168] }, { index: 0.375, rgb: [29, 145, 192] }, { index: 0.5, rgb: [65, 182, 196] }, { index: 0.625, rgb: [127, 205, 187] }, { index: 0.75, rgb: [199, 233, 180] }, { index: 0.875, rgb: [237, 248, 217] }, { index: 1, rgb: [255, 255, 217] }], greens: [{ index: 0, rgb: [0, 68, 27] }, { index: 0.125, rgb: [0, 109, 44] }, { index: 0.25, rgb: [35, 139, 69] }, { index: 0.375, rgb: [65, 171, 93] }, { index: 0.5, rgb: [116, 196, 118] }, { index: 0.625, rgb: [161, 217, 155] }, { index: 0.75, rgb: [199, 233, 192] }, { index: 0.875, rgb: [229, 245, 224] }, { index: 1, rgb: [247, 252, 245] }], yiorrd: [{ index: 0, rgb: [128, 0, 38] }, { index: 0.125, rgb: [189, 0, 38] }, { index: 0.25, rgb: [227, 26, 28] }, { index: 0.375, rgb: [252, 78, 42] }, { index: 0.5, rgb: [253, 141, 60] }, { index: 0.625, rgb: [254, 178, 76] }, { index: 0.75, rgb: [254, 217, 118] }, { index: 0.875, rgb: [255, 237, 160] }, { index: 1, rgb: [255, 255, 204] }], bluered: [{ index: 0, rgb: [0, 0, 255] }, { index: 1, rgb: [255, 0, 0] }], rdbu: [{ index: 0, rgb: [5, 10, 172] }, { index: 0.35, rgb: [106, 137, 247] }, { index: 0.5, rgb: [190, 190, 190] }, { index: 0.6, rgb: [220, 170, 132] }, { index: 0.7, rgb: [230, 145, 90] }, { index: 1, rgb: [178, 10, 28] }], picnic: [{ index: 0, rgb: [0, 0, 255] }, { index: 0.1, rgb: [51, 153, 255] }, { index: 0.2, rgb: [102, 204, 255] }, { index: 0.3, rgb: [153, 204, 255] }, { index: 0.4, rgb: [204, 204, 255] }, { index: 0.5, rgb: [255, 255, 255] }, { index: 0.6, rgb: [255, 204, 255] }, { index: 0.7, rgb: [255, 153, 255] }, { index: 0.8, rgb: [255, 102, 204] }, { index: 0.9, rgb: [255, 102, 102] }, { index: 1, rgb: [255, 0, 0] }], rainbow: [{ index: 0, rgb: [150, 0, 90] }, { index: 0.125, rgb: [0, 0, 200] }, { index: 0.25, rgb: [0, 25, 255] }, { index: 0.375, rgb: [0, 152, 255] }, { index: 0.5, rgb: [44, 255, 150] }, { index: 0.625, rgb: [151, 255, 0] }, { index: 0.75, rgb: [255, 234, 0] }, { index: 0.875, rgb: [255, 111, 0] }, { index: 1, rgb: [255, 0, 0] }], portland: [{ index: 0, rgb: [12, 51, 131] }, { index: 0.25, rgb: [10, 136, 186] }, { index: 0.5, rgb: [242, 211, 56] }, { index: 0.75, rgb: [242, 143, 56] }, { index: 1, rgb: [217, 30, 30] }], blackbody: [{ index: 0, rgb: [0, 0, 0] }, { index: 0.2, rgb: [230, 0, 0] }, { index: 0.4, rgb: [230, 210, 0] }, { index: 0.7, rgb: [255, 255, 255] }, { index: 1, rgb: [160, 200, 255] }], earth: [{ index: 0, rgb: [0, 0, 130] }, { index: 0.1, rgb: [0, 180, 180] }, { index: 0.2, rgb: [40, 210, 40] }, { index: 0.4, rgb: [230, 230, 50] }, { index: 0.6, rgb: [120, 70, 20] }, { index: 1, rgb: [255, 255, 255] }], electric: [{ index: 0, rgb: [0, 0, 0] }, { index: 0.15, rgb: [30, 0, 100] }, { index: 0.4, rgb: [120, 0, 100] }, { index: 0.6, rgb: [160, 90, 0] }, { index: 0.8, rgb: [230, 200, 0] }, { index: 1, rgb: [255, 250, 220] }], alpha: [{ index: 0, rgb: [255, 255, 255, 0] }, { index: 1, rgb: [255, 255, 255, 1] }], viridis: [{ index: 0, rgb: [68, 1, 84] }, { index: 0.13, rgb: [71, 44, 122] }, { index: 0.25, rgb: [59, 81, 139] }, { index: 0.38, rgb: [44, 113, 142] }, { index: 0.5, rgb: [33, 144, 141] }, { index: 0.63, rgb: [39, 173, 129] }, { index: 0.75, rgb: [92, 200, 99] }, { index: 0.88, rgb: [170, 220, 50] }, { index: 1, rgb: [253, 231, 37] }], inferno: [{ index: 0, rgb: [0, 0, 4] }, { index: 0.13, rgb: [31, 12, 72] }, { index: 0.25, rgb: [85, 15, 109] }, { index: 0.38, rgb: [136, 34, 106] }, { index: 0.5, rgb: [186, 54, 85] }, { index: 0.63, rgb: [227, 89, 51] }, { index: 0.75, rgb: [249, 140, 10] }, { index: 0.88, rgb: [249, 201, 50] }, { index: 1, rgb: [252, 255, 164] }], magma: [{ index: 0, rgb: [0, 0, 4] }, { index: 0.13, rgb: [28, 16, 68] }, { index: 0.25, rgb: [79, 18, 123] }, { index: 0.38, rgb: [129, 37, 129] }, { index: 0.5, rgb: [181, 54, 122] }, { index: 0.63, rgb: [229, 80, 100] }, { index: 0.75, rgb: [251, 135, 97] }, { index: 0.88, rgb: [254, 194, 135] }, { index: 1, rgb: [252, 253, 191] }], plasma: [{ index: 0, rgb: [13, 8, 135] }, { index: 0.13, rgb: [75, 3, 161] }, { index: 0.25, rgb: [125, 3, 168] }, { index: 0.38, rgb: [168, 34, 150] }, { index: 0.5, rgb: [203, 70, 121] }, { index: 0.63, rgb: [229, 107, 93] }, { index: 0.75, rgb: [248, 148, 65] }, { index: 0.88, rgb: [253, 195, 40] }, { index: 1, rgb: [240, 249, 33] }], warm: [{ index: 0, rgb: [125, 0, 179] }, { index: 0.13, rgb: [172, 0, 187] }, { index: 0.25, rgb: [219, 0, 170] }, { index: 0.38, rgb: [255, 0, 130] }, { index: 0.5, rgb: [255, 63, 74] }, { index: 0.63, rgb: [255, 123, 0] }, { index: 0.75, rgb: [234, 176, 0] }, { index: 0.88, rgb: [190, 228, 0] }, { index: 1, rgb: [147, 255, 0] }], cool: [{ index: 0, rgb: [125, 0, 179] }, { index: 0.13, rgb: [116, 0, 218] }, { index: 0.25, rgb: [98, 74, 237] }, { index: 0.38, rgb: [68, 146, 231] }, { index: 0.5, rgb: [0, 204, 197] }, { index: 0.63, rgb: [0, 247, 146] }, { index: 0.75, rgb: [0, 255, 88] }, { index: 0.88, rgb: [40, 255, 8] }, { index: 1, rgb: [147, 255, 0] }], "rainbow-soft": [{ index: 0, rgb: [125, 0, 179] }, { index: 0.1, rgb: [199, 0, 180] }, { index: 0.2, rgb: [255, 0, 121] }, { index: 0.3, rgb: [255, 108, 0] }, { index: 0.4, rgb: [222, 194, 0] }, { index: 0.5, rgb: [150, 255, 0] }, { index: 0.6, rgb: [0, 255, 55] }, { index: 0.7, rgb: [0, 246, 150] }, { index: 0.8, rgb: [50, 167, 222] }, { index: 0.9, rgb: [103, 51, 235] }, { index: 1, rgb: [124, 0, 186] }], bathymetry: [{ index: 0, rgb: [40, 26, 44] }, { index: 0.13, rgb: [59, 49, 90] }, { index: 0.25, rgb: [64, 76, 139] }, { index: 0.38, rgb: [63, 110, 151] }, { index: 0.5, rgb: [72, 142, 158] }, { index: 0.63, rgb: [85, 174, 163] }, { index: 0.75, rgb: [120, 206, 163] }, { index: 0.88, rgb: [187, 230, 172] }, { index: 1, rgb: [253, 254, 204] }], cdom: [{ index: 0, rgb: [47, 15, 62] }, { index: 0.13, rgb: [87, 23, 86] }, { index: 0.25, rgb: [130, 28, 99] }, { index: 0.38, rgb: [171, 41, 96] }, { index: 0.5, rgb: [206, 67, 86] }, { index: 0.63, rgb: [230, 106, 84] }, { index: 0.75, rgb: [242, 149, 103] }, { index: 0.88, rgb: [249, 193, 135] }, { index: 1, rgb: [254, 237, 176] }], chlorophyll: [{ index: 0, rgb: [18, 36, 20] }, { index: 0.13, rgb: [25, 63, 41] }, { index: 0.25, rgb: [24, 91, 59] }, { index: 0.38, rgb: [13, 119, 72] }, { index: 0.5, rgb: [18, 148, 80] }, { index: 0.63, rgb: [80, 173, 89] }, { index: 0.75, rgb: [132, 196, 122] }, { index: 0.88, rgb: [175, 221, 162] }, { index: 1, rgb: [215, 249, 208] }], density: [{ index: 0, rgb: [54, 14, 36] }, { index: 0.13, rgb: [89, 23, 80] }, { index: 0.25, rgb: [110, 45, 132] }, { index: 0.38, rgb: [120, 77, 178] }, { index: 0.5, rgb: [120, 113, 213] }, { index: 0.63, rgb: [115, 151, 228] }, { index: 0.75, rgb: [134, 185, 227] }, { index: 0.88, rgb: [177, 214, 227] }, { index: 1, rgb: [230, 241, 241] }], "freesurface-blue": [{ index: 0, rgb: [30, 4, 110] }, { index: 0.13, rgb: [47, 14, 176] }, { index: 0.25, rgb: [41, 45, 236] }, { index: 0.38, rgb: [25, 99, 212] }, { index: 0.5, rgb: [68, 131, 200] }, { index: 0.63, rgb: [114, 156, 197] }, { index: 0.75, rgb: [157, 181, 203] }, { index: 0.88, rgb: [200, 208, 216] }, { index: 1, rgb: [241, 237, 236] }], "freesurface-red": [{ index: 0, rgb: [60, 9, 18] }, { index: 0.13, rgb: [100, 17, 27] }, { index: 0.25, rgb: [142, 20, 29] }, { index: 0.38, rgb: [177, 43, 27] }, { index: 0.5, rgb: [192, 87, 63] }, { index: 0.63, rgb: [205, 125, 105] }, { index: 0.75, rgb: [216, 162, 148] }, { index: 0.88, rgb: [227, 199, 193] }, { index: 1, rgb: [241, 237, 236] }], oxygen: [{ index: 0, rgb: [64, 5, 5] }, { index: 0.13, rgb: [106, 6, 15] }, { index: 0.25, rgb: [144, 26, 7] }, { index: 0.38, rgb: [168, 64, 3] }, { index: 0.5, rgb: [188, 100, 4] }, { index: 0.63, rgb: [206, 136, 11] }, { index: 0.75, rgb: [220, 174, 25] }, { index: 0.88, rgb: [231, 215, 44] }, { index: 1, rgb: [248, 254, 105] }], par: [{ index: 0, rgb: [51, 20, 24] }, { index: 0.13, rgb: [90, 32, 35] }, { index: 0.25, rgb: [129, 44, 34] }, { index: 0.38, rgb: [159, 68, 25] }, { index: 0.5, rgb: [182, 99, 19] }, { index: 0.63, rgb: [199, 134, 22] }, { index: 0.75, rgb: [212, 171, 35] }, { index: 0.88, rgb: [221, 210, 54] }, { index: 1, rgb: [225, 253, 75] }], phase: [{ index: 0, rgb: [145, 105, 18] }, { index: 0.13, rgb: [184, 71, 38] }, { index: 0.25, rgb: [186, 58, 115] }, { index: 0.38, rgb: [160, 71, 185] }, { index: 0.5, rgb: [110, 97, 218] }, { index: 0.63, rgb: [50, 123, 164] }, { index: 0.75, rgb: [31, 131, 110] }, { index: 0.88, rgb: [77, 129, 34] }, { index: 1, rgb: [145, 105, 18] }], salinity: [{ index: 0, rgb: [42, 24, 108] }, { index: 0.13, rgb: [33, 50, 162] }, { index: 0.25, rgb: [15, 90, 145] }, { index: 0.38, rgb: [40, 118, 137] }, { index: 0.5, rgb: [59, 146, 135] }, { index: 0.63, rgb: [79, 175, 126] }, { index: 0.75, rgb: [120, 203, 104] }, { index: 0.88, rgb: [193, 221, 100] }, { index: 1, rgb: [253, 239, 154] }], temperature: [{ index: 0, rgb: [4, 35, 51] }, { index: 0.13, rgb: [23, 51, 122] }, { index: 0.25, rgb: [85, 59, 157] }, { index: 0.38, rgb: [129, 79, 143] }, { index: 0.5, rgb: [175, 95, 130] }, { index: 0.63, rgb: [222, 112, 101] }, { index: 0.75, rgb: [249, 146, 66] }, { index: 0.88, rgb: [249, 196, 65] }, { index: 1, rgb: [232, 250, 91] }], turbidity: [{ index: 0, rgb: [34, 31, 27] }, { index: 0.13, rgb: [65, 50, 41] }, { index: 0.25, rgb: [98, 69, 52] }, { index: 0.38, rgb: [131, 89, 57] }, { index: 0.5, rgb: [161, 112, 59] }, { index: 0.63, rgb: [185, 140, 66] }, { index: 0.75, rgb: [202, 174, 88] }, { index: 0.88, rgb: [216, 209, 126] }, { index: 1, rgb: [233, 246, 171] }], "velocity-blue": [{ index: 0, rgb: [17, 32, 64] }, { index: 0.13, rgb: [35, 52, 116] }, { index: 0.25, rgb: [29, 81, 156] }, { index: 0.38, rgb: [31, 113, 162] }, { index: 0.5, rgb: [50, 144, 169] }, { index: 0.63, rgb: [87, 173, 176] }, { index: 0.75, rgb: [149, 196, 189] }, { index: 0.88, rgb: [203, 221, 211] }, { index: 1, rgb: [254, 251, 230] }], "velocity-green": [{ index: 0, rgb: [23, 35, 19] }, { index: 0.13, rgb: [24, 64, 38] }, { index: 0.25, rgb: [11, 95, 45] }, { index: 0.38, rgb: [39, 123, 35] }, { index: 0.5, rgb: [95, 146, 12] }, { index: 0.63, rgb: [152, 165, 18] }, { index: 0.75, rgb: [201, 186, 69] }, { index: 0.88, rgb: [233, 216, 137] }, { index: 1, rgb: [255, 253, 205] }], cubehelix: [{ index: 0, rgb: [0, 0, 0] }, { index: 0.07, rgb: [22, 5, 59] }, { index: 0.13, rgb: [60, 4, 105] }, { index: 0.2, rgb: [109, 1, 135] }, { index: 0.27, rgb: [161, 0, 147] }, { index: 0.33, rgb: [210, 2, 142] }, { index: 0.4, rgb: [251, 11, 123] }, { index: 0.47, rgb: [255, 29, 97] }, { index: 0.53, rgb: [255, 54, 69] }, { index: 0.6, rgb: [255, 85, 46] }, { index: 0.67, rgb: [255, 120, 34] }, { index: 0.73, rgb: [255, 157, 37] }, { index: 0.8, rgb: [241, 191, 57] }, { index: 0.87, rgb: [224, 220, 93] }, { index: 0.93, rgb: [218, 241, 142] }, { index: 1, rgb: [227, 253, 198] }] };
                    }
                  ),
                  /***/
                  6729: (
                    /***/
                    function(p, u, t) {
                      var r = t(3642), i = t(395);
                      p.exports = a;
                      function a(g) {
                        var x, c, v, f, _, S, M, C, h, m, L;
                        if (g || (g = {}), C = (g.nshades || 72) - 1, M = g.format || "hex", S = g.colormap, S || (S = "jet"), typeof S == "string") {
                          if (S = S.toLowerCase(), !r[S])
                            throw Error(S + " not a supported colorscale");
                          _ = r[S];
                        } else if (Array.isArray(S))
                          _ = S.slice();
                        else
                          throw Error("unsupported colormap option", S);
                        if (_.length > C + 1)
                          throw new Error(S + " map requires nshades to be at least size " + _.length);
                        Array.isArray(g.alpha) ? g.alpha.length !== 2 ? m = [1, 1] : m = g.alpha.slice() : typeof g.alpha == "number" ? m = [g.alpha, g.alpha] : m = [1, 1], x = _.map(function(z) {
                          return Math.round(z.index * C);
                        }), m[0] = Math.min(Math.max(m[0], 0), 1), m[1] = Math.min(Math.max(m[1], 0), 1);
                        var d = _.map(function(z, O) {
                          var B = _[O].index, V = _[O].rgb.slice();
                          return V.length === 4 && V[3] >= 0 && V[3] <= 1 || (V[3] = m[0] + (m[1] - m[0]) * B), V;
                        }), h = [];
                        for (L = 0; L < x.length - 1; ++L) {
                          f = x[L + 1] - x[L], c = d[L], v = d[L + 1];
                          for (var E = 0; E < f; E++) {
                            var w = E / f;
                            h.push([Math.round(i(c[0], v[0], w)), Math.round(i(c[1], v[1], w)), Math.round(i(c[2], v[2], w)), i(c[3], v[3], w)]);
                          }
                        }
                        return h.push(_[_.length - 1].rgb.concat(m[1])), M === "hex" ? h = h.map(o) : M === "rgbaString" ? h = h.map(y) : M === "float" && (h = h.map(l)), h;
                      }
                      function l(g) {
                        return [g[0] / 255, g[1] / 255, g[2] / 255, g[3]];
                      }
                      function o(g) {
                        for (var x, c = "#", v = 0; v < 3; ++v)
                          x = g[v], x = x.toString(16), c += ("00" + x).substr(x.length);
                        return c;
                      }
                      function y(g) {
                        return "rgba(" + g.join(",") + ")";
                      }
                    }
                  ),
                  /***/
                  3140: (
                    /***/
                    function(p, u, t) {
                      p.exports = g;
                      var r = t(3250), i = t(8572), a = t(9362), l = t(5382), o = t(8210);
                      function y(x, c, v) {
                        var f = a(x[0], -c[0]), _ = a(x[1], -c[1]), S = a(v[0], -c[0]), M = a(v[1], -c[1]), C = o(l(f, S), l(_, M));
                        return C[C.length - 1] >= 0;
                      }
                      function g(x, c, v, f) {
                        var _ = r(c, v, f);
                        if (_ === 0) {
                          var S = i(r(x, c, v)), M = i(r(x, c, f));
                          if (S === M) {
                            if (S === 0) {
                              var C = y(x, c, v), m = y(x, c, f);
                              return C === m ? 0 : C ? 1 : -1;
                            }
                            return 0;
                          } else {
                            if (M === 0)
                              return S > 0 || y(x, c, f) ? -1 : 1;
                            if (S === 0)
                              return M > 0 || y(x, c, v) ? 1 : -1;
                          }
                          return i(M - S);
                        }
                        var L = r(x, c, v);
                        if (L > 0)
                          return _ > 0 && r(x, c, f) > 0 ? 1 : -1;
                        if (L < 0)
                          return _ > 0 || r(x, c, f) > 0 ? 1 : -1;
                        var d = r(x, c, f);
                        return d > 0 || y(x, c, v) ? 1 : -1;
                      }
                    }
                  ),
                  /***/
                  8572: (
                    /***/
                    function(p) {
                      p.exports = function(t) {
                        return t < 0 ? -1 : t > 0 ? 1 : 0;
                      };
                    }
                  ),
                  /***/
                  8507: (
                    /***/
                    function(p) {
                      p.exports = r;
                      var u = Math.min;
                      function t(i, a) {
                        return i - a;
                      }
                      function r(i, a) {
                        var l = i.length, o = i.length - a.length;
                        if (o)
                          return o;
                        switch (l) {
                          case 0:
                            return 0;
                          case 1:
                            return i[0] - a[0];
                          case 2:
                            return i[0] + i[1] - a[0] - a[1] || u(i[0], i[1]) - u(a[0], a[1]);
                          case 3:
                            var y = i[0] + i[1], g = a[0] + a[1];
                            if (o = y + i[2] - (g + a[2]), o)
                              return o;
                            var x = u(i[0], i[1]), c = u(a[0], a[1]);
                            return u(x, i[2]) - u(c, a[2]) || u(x + i[2], y) - u(c + a[2], g);
                          case 4:
                            var v = i[0], f = i[1], _ = i[2], S = i[3], M = a[0], C = a[1], m = a[2], L = a[3];
                            return v + f + _ + S - (M + C + m + L) || u(v, f, _, S) - u(M, C, m, L, M) || u(v + f, v + _, v + S, f + _, f + S, _ + S) - u(M + C, M + m, M + L, C + m, C + L, m + L) || u(v + f + _, v + f + S, v + _ + S, f + _ + S) - u(M + C + m, M + C + L, M + m + L, C + m + L);
                          default:
                            for (var d = i.slice().sort(t), h = a.slice().sort(t), E = 0; E < l; ++E)
                              if (o = d[E] - h[E], o)
                                return o;
                            return 0;
                        }
                      }
                    }
                  ),
                  /***/
                  3788: (
                    /***/
                    function(p, u, t) {
                      var r = t(8507), i = t(2419);
                      p.exports = a;
                      function a(l, o) {
                        return r(l, o) || i(l) - i(o);
                      }
                    }
                  ),
                  /***/
                  7352: (
                    /***/
                    function(p, u, t) {
                      var r = t(5721), i = t(4750), a = t(2690);
                      p.exports = l;
                      function l(o) {
                        var y = o.length;
                        if (y === 0)
                          return [];
                        if (y === 1)
                          return [[0]];
                        var g = o[0].length;
                        return g === 0 ? [] : g === 1 ? r(o) : g === 2 ? i(o) : a(o, g);
                      }
                    }
                  ),
                  /***/
                  5721: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t) {
                        for (var r = 0, i = 0, a = 1; a < t.length; ++a)
                          t[a][0] < t[r][0] && (r = a), t[a][0] > t[i][0] && (i = a);
                        return r < i ? [[r], [i]] : r > i ? [[i], [r]] : [[r]];
                      }
                    }
                  ),
                  /***/
                  4750: (
                    /***/
                    function(p, u, t) {
                      p.exports = i;
                      var r = t(3090);
                      function i(a) {
                        var l = r(a), o = l.length;
                        if (o <= 2)
                          return [];
                        for (var y = new Array(o), g = l[o - 1], x = 0; x < o; ++x) {
                          var c = l[x];
                          y[x] = [g, c], g = c;
                        }
                        return y;
                      }
                    }
                  ),
                  /***/
                  2690: (
                    /***/
                    function(p, u, t) {
                      p.exports = o;
                      var r = t(8954), i = t(3952);
                      function a(y, g) {
                        for (var x = y.length, c = new Array(x), v = 0; v < g.length; ++v)
                          c[v] = y[g[v]];
                        for (var f = g.length, v = 0; v < x; ++v)
                          g.indexOf(v) < 0 && (c[f++] = y[v]);
                        return c;
                      }
                      function l(y, g) {
                        for (var x = y.length, c = g.length, v = 0; v < x; ++v)
                          for (var f = y[v], _ = 0; _ < f.length; ++_) {
                            var S = f[_];
                            if (S < c)
                              f[_] = g[S];
                            else {
                              S = S - c;
                              for (var M = 0; M < c; ++M)
                                S >= g[M] && (S += 1);
                              f[_] = S;
                            }
                          }
                        return y;
                      }
                      function o(y, g) {
                        try {
                          return r(y, !0);
                        } catch {
                          var x = i(y);
                          if (x.length <= g)
                            return [];
                          var c = a(y, x), v = r(c, !0);
                          return l(v, x);
                        }
                      }
                    }
                  ),
                  /***/
                  4769: (
                    /***/
                    function(p) {
                      function u(r, i, a, l, o, y) {
                        var g = 6 * o * o - 6 * o, x = 3 * o * o - 4 * o + 1, c = -6 * o * o + 6 * o, v = 3 * o * o - 2 * o;
                        if (r.length) {
                          y || (y = new Array(r.length));
                          for (var f = r.length - 1; f >= 0; --f)
                            y[f] = g * r[f] + x * i[f] + c * a[f] + v * l[f];
                          return y;
                        }
                        return g * r + x * i + c * a[f] + v * l;
                      }
                      function t(r, i, a, l, o, y) {
                        var g = o - 1, x = o * o, c = g * g, v = (1 + 2 * o) * c, f = o * c, _ = x * (3 - 2 * o), S = x * g;
                        if (r.length) {
                          y || (y = new Array(r.length));
                          for (var M = r.length - 1; M >= 0; --M)
                            y[M] = v * r[M] + f * i[M] + _ * a[M] + S * l[M];
                          return y;
                        }
                        return v * r + f * i + _ * a + S * l;
                      }
                      p.exports = t, p.exports.derivative = u;
                    }
                  ),
                  /***/
                  7642: (
                    /***/
                    function(p, u, t) {
                      var r = t(8954), i = t(1682);
                      p.exports = y;
                      function a(g, x) {
                        this.point = g, this.index = x;
                      }
                      function l(g, x) {
                        for (var c = g.point, v = x.point, f = c.length, _ = 0; _ < f; ++_) {
                          var S = v[_] - c[_];
                          if (S)
                            return S;
                        }
                        return 0;
                      }
                      function o(g, x, c) {
                        if (g === 1)
                          return c ? [[-1, 0]] : [];
                        var v = x.map(function(C, m) {
                          return [C[0], m];
                        });
                        v.sort(function(C, m) {
                          return C[0] - m[0];
                        });
                        for (var f = new Array(g - 1), _ = 1; _ < g; ++_) {
                          var S = v[_ - 1], M = v[_];
                          f[_ - 1] = [S[1], M[1]];
                        }
                        return c && f.push([-1, f[0][1]], [f[g - 1][1], -1]), f;
                      }
                      function y(g, x) {
                        var c = g.length;
                        if (c === 0)
                          return [];
                        var v = g[0].length;
                        if (v < 1)
                          return [];
                        if (v === 1)
                          return o(c, g, x);
                        for (var f = new Array(c), _ = 1, S = 0; S < c; ++S) {
                          for (var M = g[S], C = new Array(v + 1), m = 0, L = 0; L < v; ++L) {
                            var d = M[L];
                            C[L] = d, m += d * d;
                          }
                          C[v] = m, f[S] = new a(C, S), _ = Math.max(m, _);
                        }
                        i(f, l), c = f.length;
                        for (var h = new Array(c + v + 1), E = new Array(c + v + 1), w = (v + 1) * (v + 1) * _, z = new Array(v + 1), S = 0; S <= v; ++S)
                          z[S] = 0;
                        z[v] = w, h[0] = z.slice(), E[0] = -1;
                        for (var S = 0; S <= v; ++S) {
                          var C = z.slice();
                          C[S] = 1, h[S + 1] = C, E[S + 1] = -1;
                        }
                        for (var S = 0; S < c; ++S) {
                          var O = f[S];
                          h[S + v + 1] = O.point, E[S + v + 1] = O.index;
                        }
                        var B = r(h, !1);
                        if (x ? B = B.filter(function(V) {
                          for (var U = 0, H = 0; H <= v; ++H) {
                            var F = E[V[H]];
                            if (F < 0 && ++U >= 2)
                              return !1;
                            V[H] = F;
                          }
                          return !0;
                        }) : B = B.filter(function(V) {
                          for (var U = 0; U <= v; ++U) {
                            var H = E[V[U]];
                            if (H < 0)
                              return !1;
                            V[U] = H;
                          }
                          return !0;
                        }), v & 1)
                          for (var S = 0; S < B.length; ++S) {
                            var O = B[S], C = O[0];
                            O[0] = O[1], O[1] = C;
                          }
                        return B;
                      }
                    }
                  ),
                  /***/
                  2361: (
                    /***/
                    function(p) {
                      var u = !1;
                      if (typeof Float64Array < "u") {
                        var t = new Float64Array(1), r = new Uint32Array(t.buffer);
                        if (t[0] = 1, u = !0, r[1] === 1072693248) {
                          let a = function(y, g) {
                            return r[0] = y, r[1] = g, t[0];
                          }, l = function(y) {
                            return t[0] = y, r[0];
                          }, o = function(y) {
                            return t[0] = y, r[1];
                          };
                          p.exports = function(g) {
                            return t[0] = g, [r[0], r[1]];
                          }, p.exports.pack = a, p.exports.lo = l, p.exports.hi = o;
                        } else if (r[0] === 1072693248) {
                          let a = function(y, g) {
                            return r[1] = y, r[0] = g, t[0];
                          }, l = function(y) {
                            return t[0] = y, r[1];
                          }, o = function(y) {
                            return t[0] = y, r[0];
                          };
                          p.exports = function(g) {
                            return t[0] = g, [r[1], r[0]];
                          }, p.exports.pack = a, p.exports.lo = l, p.exports.hi = o;
                        } else
                          u = !1;
                      }
                      if (!u) {
                        let a = function(y, g) {
                          return i.writeUInt32LE(y, 0, !0), i.writeUInt32LE(g, 4, !0), i.readDoubleLE(0, !0);
                        }, l = function(y) {
                          return i.writeDoubleLE(y, 0, !0), i.readUInt32LE(0, !0);
                        }, o = function(y) {
                          return i.writeDoubleLE(y, 0, !0), i.readUInt32LE(4, !0);
                        };
                        var i = new b(8);
                        p.exports = function(g) {
                          return i.writeDoubleLE(g, 0, !0), [i.readUInt32LE(0, !0), i.readUInt32LE(4, !0)];
                        }, p.exports.pack = a, p.exports.lo = l, p.exports.hi = o;
                      }
                      p.exports.sign = function(a) {
                        return p.exports.hi(a) >>> 31;
                      }, p.exports.exponent = function(a) {
                        var l = p.exports.hi(a);
                        return (l << 1 >>> 21) - 1023;
                      }, p.exports.fraction = function(a) {
                        var l = p.exports.lo(a), o = p.exports.hi(a), y = o & (1 << 20) - 1;
                        return o & 2146435072 && (y += 1048576), [l, y];
                      }, p.exports.denormalized = function(a) {
                        var l = p.exports.hi(a);
                        return !(l & 2146435072);
                      };
                    }
                  ),
                  /***/
                  1338: (
                    /***/
                    function(p) {
                      function u(i, a, l) {
                        var o = i[l] | 0;
                        if (o <= 0)
                          return [];
                        var y = new Array(o), g;
                        if (l === i.length - 1)
                          for (g = 0; g < o; ++g)
                            y[g] = a;
                        else
                          for (g = 0; g < o; ++g)
                            y[g] = u(i, a, l + 1);
                        return y;
                      }
                      function t(i, a) {
                        var l, o;
                        for (l = new Array(i), o = 0; o < i; ++o)
                          l[o] = a;
                        return l;
                      }
                      function r(i, a) {
                        switch (typeof a > "u" && (a = 0), typeof i) {
                          case "number":
                            if (i > 0)
                              return t(i | 0, a);
                            break;
                          case "object":
                            if (typeof i.length == "number")
                              return u(i, a, 0);
                            break;
                        }
                        return [];
                      }
                      p.exports = r;
                    }
                  ),
                  /***/
                  3134: (
                    /***/
                    function(p, u, t) {
                      p.exports = i;
                      var r = t(1682);
                      function i(a, l) {
                        var o = a.length;
                        if (typeof l != "number") {
                          l = 0;
                          for (var y = 0; y < o; ++y) {
                            var g = a[y];
                            l = Math.max(l, g[0], g[1]);
                          }
                          l = (l | 0) + 1;
                        }
                        l = l | 0;
                        for (var x = new Array(l), y = 0; y < l; ++y)
                          x[y] = [];
                        for (var y = 0; y < o; ++y) {
                          var g = a[y];
                          x[g[0]].push(g[1]), x[g[1]].push(g[0]);
                        }
                        for (var c = 0; c < l; ++c)
                          r(x[c], function(v, f) {
                            return v - f;
                          });
                        return x;
                      }
                    }
                  ),
                  /***/
                  5033: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        var a = r || 0, l = i || 1;
                        return [[t[12] + t[0], t[13] + t[1], t[14] + t[2], t[15] + t[3]], [t[12] - t[0], t[13] - t[1], t[14] - t[2], t[15] - t[3]], [t[12] + t[4], t[13] + t[5], t[14] + t[6], t[15] + t[7]], [t[12] - t[4], t[13] - t[5], t[14] - t[6], t[15] - t[7]], [a * t[12] + t[8], a * t[13] + t[9], a * t[14] + t[10], a * t[15] + t[11]], [l * t[12] - t[8], l * t[13] - t[9], l * t[14] - t[10], l * t[15] - t[11]]];
                      }
                    }
                  ),
                  /***/
                  9215: (
                    /***/
                    function(p, u, t) {
                      p.exports = g;
                      var r = t(4769), i = t(2478);
                      function a(x, c, v) {
                        return Math.min(c, Math.max(x, v));
                      }
                      function l(x, c, v) {
                        this.dimension = x.length, this.bounds = [new Array(this.dimension), new Array(this.dimension)];
                        for (var f = 0; f < this.dimension; ++f)
                          this.bounds[0][f] = -1 / 0, this.bounds[1][f] = 1 / 0;
                        this._state = x.slice().reverse(), this._velocity = c.slice().reverse(), this._time = [v], this._scratch = [x.slice(), x.slice(), x.slice(), x.slice(), x.slice()];
                      }
                      var o = l.prototype;
                      o.flush = function(x) {
                        var c = i.gt(this._time, x) - 1;
                        c <= 0 || (this._time.splice(0, c), this._state.splice(0, c * this.dimension), this._velocity.splice(0, c * this.dimension));
                      }, o.curve = function(x) {
                        var c = this._time, v = c.length, f = i.le(c, x), _ = this._scratch[0], S = this._state, M = this._velocity, C = this.dimension, m = this.bounds;
                        if (f < 0)
                          for (var L = C - 1, d = 0; d < C; ++d, --L)
                            _[d] = S[L];
                        else if (f >= v - 1)
                          for (var L = S.length - 1, h = x - c[v - 1], d = 0; d < C; ++d, --L)
                            _[d] = S[L] + h * M[L];
                        else {
                          for (var L = C * (f + 1) - 1, E = c[f], w = c[f + 1], z = w - E || 1, O = this._scratch[1], B = this._scratch[2], V = this._scratch[3], U = this._scratch[4], H = !0, d = 0; d < C; ++d, --L)
                            O[d] = S[L], V[d] = M[L] * z, B[d] = S[L + C], U[d] = M[L + C] * z, H = H && O[d] === B[d] && V[d] === U[d] && V[d] === 0;
                          if (H)
                            for (var d = 0; d < C; ++d)
                              _[d] = O[d];
                          else
                            r(O, V, B, U, (x - E) / z, _);
                        }
                        for (var F = m[0], G = m[1], d = 0; d < C; ++d)
                          _[d] = a(F[d], G[d], _[d]);
                        return _;
                      }, o.dcurve = function(x) {
                        var c = this._time, v = c.length, f = i.le(c, x), _ = this._scratch[0], S = this._state, M = this._velocity, C = this.dimension;
                        if (f >= v - 1) {
                          var m = S.length - 1;
                          x - c[v - 1];
                          for (var L = 0; L < C; ++L, --m)
                            _[L] = M[m];
                        } else {
                          for (var m = C * (f + 1) - 1, d = c[f], h = c[f + 1], E = h - d || 1, w = this._scratch[1], z = this._scratch[2], O = this._scratch[3], B = this._scratch[4], V = !0, L = 0; L < C; ++L, --m)
                            w[L] = S[m], O[L] = M[m] * E, z[L] = S[m + C], B[L] = M[m + C] * E, V = V && w[L] === z[L] && O[L] === B[L] && O[L] === 0;
                          if (V)
                            for (var L = 0; L < C; ++L)
                              _[L] = 0;
                          else {
                            r.derivative(w, O, z, B, (x - d) / E, _);
                            for (var L = 0; L < C; ++L)
                              _[L] /= E;
                          }
                        }
                        return _;
                      }, o.lastT = function() {
                        var x = this._time;
                        return x[x.length - 1];
                      }, o.stable = function() {
                        for (var x = this._velocity, c = x.length, v = this.dimension - 1; v >= 0; --v)
                          if (x[--c])
                            return !1;
                        return !0;
                      }, o.jump = function(x) {
                        var c = this.lastT(), v = this.dimension;
                        if (!(x < c || arguments.length !== v + 1)) {
                          var f = this._state, _ = this._velocity, S = f.length - this.dimension, M = this.bounds, C = M[0], m = M[1];
                          this._time.push(c, x);
                          for (var L = 0; L < 2; ++L)
                            for (var d = 0; d < v; ++d)
                              f.push(f[S++]), _.push(0);
                          this._time.push(x);
                          for (var d = v; d > 0; --d)
                            f.push(a(C[d - 1], m[d - 1], arguments[d])), _.push(0);
                        }
                      }, o.push = function(x) {
                        var c = this.lastT(), v = this.dimension;
                        if (!(x < c || arguments.length !== v + 1)) {
                          var f = this._state, _ = this._velocity, S = f.length - this.dimension, M = x - c, C = this.bounds, m = C[0], L = C[1], d = M > 1e-6 ? 1 / M : 0;
                          this._time.push(x);
                          for (var h = v; h > 0; --h) {
                            var E = a(m[h - 1], L[h - 1], arguments[h]);
                            f.push(E), _.push((E - f[S++]) * d);
                          }
                        }
                      }, o.set = function(x) {
                        var c = this.dimension;
                        if (!(x < this.lastT() || arguments.length !== c + 1)) {
                          var v = this._state, f = this._velocity, _ = this.bounds, S = _[0], M = _[1];
                          this._time.push(x);
                          for (var C = c; C > 0; --C)
                            v.push(a(S[C - 1], M[C - 1], arguments[C])), f.push(0);
                        }
                      }, o.move = function(x) {
                        var c = this.lastT(), v = this.dimension;
                        if (!(x <= c || arguments.length !== v + 1)) {
                          var f = this._state, _ = this._velocity, S = f.length - this.dimension, M = this.bounds, C = M[0], m = M[1], L = x - c, d = L > 1e-6 ? 1 / L : 0;
                          this._time.push(x);
                          for (var h = v; h > 0; --h) {
                            var E = arguments[h];
                            f.push(a(C[h - 1], m[h - 1], f[S++] + E)), _.push(E * d);
                          }
                        }
                      }, o.idle = function(x) {
                        var c = this.lastT();
                        if (!(x < c)) {
                          var v = this.dimension, f = this._state, _ = this._velocity, S = f.length - v, M = this.bounds, C = M[0], m = M[1], L = x - c;
                          this._time.push(x);
                          for (var d = v - 1; d >= 0; --d)
                            f.push(a(C[d], m[d], f[S] + L * _[S])), _.push(0), S += 1;
                        }
                      };
                      function y(x) {
                        for (var c = new Array(x), v = 0; v < x; ++v)
                          c[v] = 0;
                        return c;
                      }
                      function g(x, c, v) {
                        switch (arguments.length) {
                          case 0:
                            return new l([0], [0], 0);
                          case 1:
                            if (typeof x == "number") {
                              var f = y(x);
                              return new l(f, f, 0);
                            } else
                              return new l(x, y(x.length), 0);
                          case 2:
                            if (typeof c == "number") {
                              var f = y(x.length);
                              return new l(x, f, +c);
                            } else
                              v = 0;
                          case 3:
                            if (x.length !== c.length)
                              throw new Error("state and velocity lengths must match");
                            return new l(x, c, v);
                        }
                      }
                    }
                  ),
                  /***/
                  3840: (
                    /***/
                    function(p) {
                      p.exports = C;
                      var u = 0, t = 1;
                      function r(m, L, d, h, E, w) {
                        this._color = m, this.key = L, this.value = d, this.left = h, this.right = E, this._count = w;
                      }
                      function i(m) {
                        return new r(m._color, m.key, m.value, m.left, m.right, m._count);
                      }
                      function a(m, L) {
                        return new r(m, L.key, L.value, L.left, L.right, L._count);
                      }
                      function l(m) {
                        m._count = 1 + (m.left ? m.left._count : 0) + (m.right ? m.right._count : 0);
                      }
                      function o(m, L) {
                        this._compare = m, this.root = L;
                      }
                      var y = o.prototype;
                      Object.defineProperty(y, "keys", { get: function() {
                        var m = [];
                        return this.forEach(function(L, d) {
                          m.push(L);
                        }), m;
                      } }), Object.defineProperty(y, "values", { get: function() {
                        var m = [];
                        return this.forEach(function(L, d) {
                          m.push(d);
                        }), m;
                      } }), Object.defineProperty(y, "length", { get: function() {
                        return this.root ? this.root._count : 0;
                      } }), y.insert = function(m, L) {
                        for (var d = this._compare, h = this.root, E = [], w = []; h; ) {
                          var z = d(m, h.key);
                          E.push(h), w.push(z), z <= 0 ? h = h.left : h = h.right;
                        }
                        E.push(new r(u, m, L, null, null, 1));
                        for (var O = E.length - 2; O >= 0; --O) {
                          var h = E[O];
                          w[O] <= 0 ? E[O] = new r(h._color, h.key, h.value, E[O + 1], h.right, h._count + 1) : E[O] = new r(h._color, h.key, h.value, h.left, E[O + 1], h._count + 1);
                        }
                        for (var O = E.length - 1; O > 1; --O) {
                          var B = E[O - 1], h = E[O];
                          if (B._color === t || h._color === t)
                            break;
                          var V = E[O - 2];
                          if (V.left === B)
                            if (B.left === h) {
                              var U = V.right;
                              if (U && U._color === u)
                                B._color = t, V.right = a(t, U), V._color = u, O -= 1;
                              else {
                                if (V._color = u, V.left = B.right, B._color = t, B.right = V, E[O - 2] = B, E[O - 1] = h, l(V), l(B), O >= 3) {
                                  var H = E[O - 3];
                                  H.left === V ? H.left = B : H.right = B;
                                }
                                break;
                              }
                            } else {
                              var U = V.right;
                              if (U && U._color === u)
                                B._color = t, V.right = a(t, U), V._color = u, O -= 1;
                              else {
                                if (B.right = h.left, V._color = u, V.left = h.right, h._color = t, h.left = B, h.right = V, E[O - 2] = h, E[O - 1] = B, l(V), l(B), l(h), O >= 3) {
                                  var H = E[O - 3];
                                  H.left === V ? H.left = h : H.right = h;
                                }
                                break;
                              }
                            }
                          else if (B.right === h) {
                            var U = V.left;
                            if (U && U._color === u)
                              B._color = t, V.left = a(t, U), V._color = u, O -= 1;
                            else {
                              if (V._color = u, V.right = B.left, B._color = t, B.left = V, E[O - 2] = B, E[O - 1] = h, l(V), l(B), O >= 3) {
                                var H = E[O - 3];
                                H.right === V ? H.right = B : H.left = B;
                              }
                              break;
                            }
                          } else {
                            var U = V.left;
                            if (U && U._color === u)
                              B._color = t, V.left = a(t, U), V._color = u, O -= 1;
                            else {
                              if (B.left = h.right, V._color = u, V.right = h.left, h._color = t, h.right = B, h.left = V, E[O - 2] = h, E[O - 1] = B, l(V), l(B), l(h), O >= 3) {
                                var H = E[O - 3];
                                H.right === V ? H.right = h : H.left = h;
                              }
                              break;
                            }
                          }
                        }
                        return E[0]._color = t, new o(d, E[0]);
                      };
                      function g(m, L) {
                        if (L.left) {
                          var d = g(m, L.left);
                          if (d)
                            return d;
                        }
                        var d = m(L.key, L.value);
                        if (d)
                          return d;
                        if (L.right)
                          return g(m, L.right);
                      }
                      function x(m, L, d, h) {
                        var E = L(m, h.key);
                        if (E <= 0) {
                          if (h.left) {
                            var w = x(m, L, d, h.left);
                            if (w)
                              return w;
                          }
                          var w = d(h.key, h.value);
                          if (w)
                            return w;
                        }
                        if (h.right)
                          return x(m, L, d, h.right);
                      }
                      function c(m, L, d, h, E) {
                        var w = d(m, E.key), z = d(L, E.key), O;
                        if (w <= 0 && (E.left && (O = c(m, L, d, h, E.left), O) || z > 0 && (O = h(E.key, E.value), O)))
                          return O;
                        if (z > 0 && E.right)
                          return c(m, L, d, h, E.right);
                      }
                      y.forEach = function(L, d, h) {
                        if (this.root)
                          switch (arguments.length) {
                            case 1:
                              return g(L, this.root);
                            case 2:
                              return x(d, this._compare, L, this.root);
                            case 3:
                              return this._compare(d, h) >= 0 ? void 0 : c(d, h, this._compare, L, this.root);
                          }
                      }, Object.defineProperty(y, "begin", { get: function() {
                        for (var m = [], L = this.root; L; )
                          m.push(L), L = L.left;
                        return new v(this, m);
                      } }), Object.defineProperty(y, "end", { get: function() {
                        for (var m = [], L = this.root; L; )
                          m.push(L), L = L.right;
                        return new v(this, m);
                      } }), y.at = function(m) {
                        if (m < 0)
                          return new v(this, []);
                        for (var L = this.root, d = []; ; ) {
                          if (d.push(L), L.left) {
                            if (m < L.left._count) {
                              L = L.left;
                              continue;
                            }
                            m -= L.left._count;
                          }
                          if (!m)
                            return new v(this, d);
                          if (m -= 1, L.right) {
                            if (m >= L.right._count)
                              break;
                            L = L.right;
                          } else
                            break;
                        }
                        return new v(this, []);
                      }, y.ge = function(m) {
                        for (var L = this._compare, d = this.root, h = [], E = 0; d; ) {
                          var w = L(m, d.key);
                          h.push(d), w <= 0 && (E = h.length), w <= 0 ? d = d.left : d = d.right;
                        }
                        return h.length = E, new v(this, h);
                      }, y.gt = function(m) {
                        for (var L = this._compare, d = this.root, h = [], E = 0; d; ) {
                          var w = L(m, d.key);
                          h.push(d), w < 0 && (E = h.length), w < 0 ? d = d.left : d = d.right;
                        }
                        return h.length = E, new v(this, h);
                      }, y.lt = function(m) {
                        for (var L = this._compare, d = this.root, h = [], E = 0; d; ) {
                          var w = L(m, d.key);
                          h.push(d), w > 0 && (E = h.length), w <= 0 ? d = d.left : d = d.right;
                        }
                        return h.length = E, new v(this, h);
                      }, y.le = function(m) {
                        for (var L = this._compare, d = this.root, h = [], E = 0; d; ) {
                          var w = L(m, d.key);
                          h.push(d), w >= 0 && (E = h.length), w < 0 ? d = d.left : d = d.right;
                        }
                        return h.length = E, new v(this, h);
                      }, y.find = function(m) {
                        for (var L = this._compare, d = this.root, h = []; d; ) {
                          var E = L(m, d.key);
                          if (h.push(d), E === 0)
                            return new v(this, h);
                          E <= 0 ? d = d.left : d = d.right;
                        }
                        return new v(this, []);
                      }, y.remove = function(m) {
                        var L = this.find(m);
                        return L ? L.remove() : this;
                      }, y.get = function(m) {
                        for (var L = this._compare, d = this.root; d; ) {
                          var h = L(m, d.key);
                          if (h === 0)
                            return d.value;
                          h <= 0 ? d = d.left : d = d.right;
                        }
                      };
                      function v(m, L) {
                        this.tree = m, this._stack = L;
                      }
                      var f = v.prototype;
                      Object.defineProperty(f, "valid", { get: function() {
                        return this._stack.length > 0;
                      } }), Object.defineProperty(f, "node", { get: function() {
                        return this._stack.length > 0 ? this._stack[this._stack.length - 1] : null;
                      }, enumerable: !0 }), f.clone = function() {
                        return new v(this.tree, this._stack.slice());
                      };
                      function _(m, L) {
                        m.key = L.key, m.value = L.value, m.left = L.left, m.right = L.right, m._color = L._color, m._count = L._count;
                      }
                      function S(m) {
                        for (var L, d, h, E, w = m.length - 1; w >= 0; --w) {
                          if (L = m[w], w === 0) {
                            L._color = t;
                            return;
                          }
                          if (d = m[w - 1], d.left === L) {
                            if (h = d.right, h.right && h.right._color === u) {
                              if (h = d.right = i(h), E = h.right = i(h.right), d.right = h.left, h.left = d, h.right = E, h._color = d._color, L._color = t, d._color = t, E._color = t, l(d), l(h), w > 1) {
                                var z = m[w - 2];
                                z.left === d ? z.left = h : z.right = h;
                              }
                              m[w - 1] = h;
                              return;
                            } else if (h.left && h.left._color === u) {
                              if (h = d.right = i(h), E = h.left = i(h.left), d.right = E.left, h.left = E.right, E.left = d, E.right = h, E._color = d._color, d._color = t, h._color = t, L._color = t, l(d), l(h), l(E), w > 1) {
                                var z = m[w - 2];
                                z.left === d ? z.left = E : z.right = E;
                              }
                              m[w - 1] = E;
                              return;
                            }
                            if (h._color === t)
                              if (d._color === u) {
                                d._color = t, d.right = a(u, h);
                                return;
                              } else {
                                d.right = a(u, h);
                                continue;
                              }
                            else {
                              if (h = i(h), d.right = h.left, h.left = d, h._color = d._color, d._color = u, l(d), l(h), w > 1) {
                                var z = m[w - 2];
                                z.left === d ? z.left = h : z.right = h;
                              }
                              m[w - 1] = h, m[w] = d, w + 1 < m.length ? m[w + 1] = L : m.push(L), w = w + 2;
                            }
                          } else {
                            if (h = d.left, h.left && h.left._color === u) {
                              if (h = d.left = i(h), E = h.left = i(h.left), d.left = h.right, h.right = d, h.left = E, h._color = d._color, L._color = t, d._color = t, E._color = t, l(d), l(h), w > 1) {
                                var z = m[w - 2];
                                z.right === d ? z.right = h : z.left = h;
                              }
                              m[w - 1] = h;
                              return;
                            } else if (h.right && h.right._color === u) {
                              if (h = d.left = i(h), E = h.right = i(h.right), d.left = E.right, h.right = E.left, E.right = d, E.left = h, E._color = d._color, d._color = t, h._color = t, L._color = t, l(d), l(h), l(E), w > 1) {
                                var z = m[w - 2];
                                z.right === d ? z.right = E : z.left = E;
                              }
                              m[w - 1] = E;
                              return;
                            }
                            if (h._color === t)
                              if (d._color === u) {
                                d._color = t, d.left = a(u, h);
                                return;
                              } else {
                                d.left = a(u, h);
                                continue;
                              }
                            else {
                              if (h = i(h), d.left = h.right, h.right = d, h._color = d._color, d._color = u, l(d), l(h), w > 1) {
                                var z = m[w - 2];
                                z.right === d ? z.right = h : z.left = h;
                              }
                              m[w - 1] = h, m[w] = d, w + 1 < m.length ? m[w + 1] = L : m.push(L), w = w + 2;
                            }
                          }
                        }
                      }
                      f.remove = function() {
                        var m = this._stack;
                        if (m.length === 0)
                          return this.tree;
                        var L = new Array(m.length), d = m[m.length - 1];
                        L[L.length - 1] = new r(d._color, d.key, d.value, d.left, d.right, d._count);
                        for (var h = m.length - 2; h >= 0; --h) {
                          var d = m[h];
                          d.left === m[h + 1] ? L[h] = new r(d._color, d.key, d.value, L[h + 1], d.right, d._count) : L[h] = new r(d._color, d.key, d.value, d.left, L[h + 1], d._count);
                        }
                        if (d = L[L.length - 1], d.left && d.right) {
                          var E = L.length;
                          for (d = d.left; d.right; )
                            L.push(d), d = d.right;
                          var w = L[E - 1];
                          L.push(new r(d._color, w.key, w.value, d.left, d.right, d._count)), L[E - 1].key = d.key, L[E - 1].value = d.value;
                          for (var h = L.length - 2; h >= E; --h)
                            d = L[h], L[h] = new r(d._color, d.key, d.value, d.left, L[h + 1], d._count);
                          L[E - 1].left = L[E];
                        }
                        if (d = L[L.length - 1], d._color === u) {
                          var z = L[L.length - 2];
                          z.left === d ? z.left = null : z.right === d && (z.right = null), L.pop();
                          for (var h = 0; h < L.length; ++h)
                            L[h]._count--;
                          return new o(this.tree._compare, L[0]);
                        } else if (d.left || d.right) {
                          d.left ? _(d, d.left) : d.right && _(d, d.right), d._color = t;
                          for (var h = 0; h < L.length - 1; ++h)
                            L[h]._count--;
                          return new o(this.tree._compare, L[0]);
                        } else {
                          if (L.length === 1)
                            return new o(this.tree._compare, null);
                          for (var h = 0; h < L.length; ++h)
                            L[h]._count--;
                          var O = L[L.length - 2];
                          S(L), O.left === d ? O.left = null : O.right = null;
                        }
                        return new o(this.tree._compare, L[0]);
                      }, Object.defineProperty(f, "key", { get: function() {
                        if (this._stack.length > 0)
                          return this._stack[this._stack.length - 1].key;
                      }, enumerable: !0 }), Object.defineProperty(f, "value", { get: function() {
                        if (this._stack.length > 0)
                          return this._stack[this._stack.length - 1].value;
                      }, enumerable: !0 }), Object.defineProperty(f, "index", { get: function() {
                        var m = 0, L = this._stack;
                        if (L.length === 0) {
                          var d = this.tree.root;
                          return d ? d._count : 0;
                        } else L[L.length - 1].left && (m = L[L.length - 1].left._count);
                        for (var h = L.length - 2; h >= 0; --h)
                          L[h + 1] === L[h].right && (++m, L[h].left && (m += L[h].left._count));
                        return m;
                      }, enumerable: !0 }), f.next = function() {
                        var m = this._stack;
                        if (m.length !== 0) {
                          var L = m[m.length - 1];
                          if (L.right)
                            for (L = L.right; L; )
                              m.push(L), L = L.left;
                          else
                            for (m.pop(); m.length > 0 && m[m.length - 1].right === L; )
                              L = m[m.length - 1], m.pop();
                        }
                      }, Object.defineProperty(f, "hasNext", { get: function() {
                        var m = this._stack;
                        if (m.length === 0)
                          return !1;
                        if (m[m.length - 1].right)
                          return !0;
                        for (var L = m.length - 1; L > 0; --L)
                          if (m[L - 1].left === m[L])
                            return !0;
                        return !1;
                      } }), f.update = function(m) {
                        var L = this._stack;
                        if (L.length === 0)
                          throw new Error("Can't update empty node!");
                        var d = new Array(L.length), h = L[L.length - 1];
                        d[d.length - 1] = new r(h._color, h.key, m, h.left, h.right, h._count);
                        for (var E = L.length - 2; E >= 0; --E)
                          h = L[E], h.left === L[E + 1] ? d[E] = new r(h._color, h.key, h.value, d[E + 1], h.right, h._count) : d[E] = new r(h._color, h.key, h.value, h.left, d[E + 1], h._count);
                        return new o(this.tree._compare, d[0]);
                      }, f.prev = function() {
                        var m = this._stack;
                        if (m.length !== 0) {
                          var L = m[m.length - 1];
                          if (L.left)
                            for (L = L.left; L; )
                              m.push(L), L = L.right;
                          else
                            for (m.pop(); m.length > 0 && m[m.length - 1].left === L; )
                              L = m[m.length - 1], m.pop();
                        }
                      }, Object.defineProperty(f, "hasPrev", { get: function() {
                        var m = this._stack;
                        if (m.length === 0)
                          return !1;
                        if (m[m.length - 1].left)
                          return !0;
                        for (var L = m.length - 1; L > 0; --L)
                          if (m[L - 1].right === m[L])
                            return !0;
                        return !1;
                      } });
                      function M(m, L) {
                        return m < L ? -1 : m > L ? 1 : 0;
                      }
                      function C(m) {
                        return new o(m || M, null);
                      }
                    }
                  ),
                  /***/
                  3837: (
                    /***/
                    function(p, u, t) {
                      p.exports = O;
                      var r = t(4935), i = t(501), a = t(5304), l = t(6429), o = t(6444), y = new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]), g = ArrayBuffer, x = DataView;
                      function c(B) {
                        return g.isView(B) && !(B instanceof x);
                      }
                      function v(B) {
                        return Array.isArray(B) || c(B);
                      }
                      function f(B, V) {
                        return B[0] = V[0], B[1] = V[1], B[2] = V[2], B;
                      }
                      function _(B) {
                        this.gl = B, this.pixelRatio = 1, this.bounds = [[-10, -10, -10], [10, 10, 10]], this.ticks = [[], [], []], this.autoTicks = !0, this.tickSpacing = [1, 1, 1], this.tickEnable = [!0, !0, !0], this.tickFont = ["sans-serif", "sans-serif", "sans-serif"], this.tickFontStyle = ["normal", "normal", "normal"], this.tickFontWeight = ["normal", "normal", "normal"], this.tickFontVariant = ["normal", "normal", "normal"], this.tickSize = [12, 12, 12], this.tickAngle = [0, 0, 0], this.tickAlign = ["auto", "auto", "auto"], this.tickColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]], this.tickPad = [10, 10, 10], this.lastCubeProps = { cubeEdges: [0, 0, 0], axis: [0, 0, 0] }, this.labels = ["x", "y", "z"], this.labelEnable = [!0, !0, !0], this.labelFont = ["sans-serif", "sans-serif", "sans-serif"], this.labelFontStyle = ["normal", "normal", "normal"], this.labelFontWeight = ["normal", "normal", "normal"], this.labelFontVariant = ["normal", "normal", "normal"], this.labelSize = [20, 20, 20], this.labelAngle = [0, 0, 0], this.labelAlign = ["auto", "auto", "auto"], this.labelColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]], this.labelPad = [10, 10, 10], this.lineEnable = [!0, !0, !0], this.lineMirror = [!1, !1, !1], this.lineWidth = [1, 1, 1], this.lineColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]], this.lineTickEnable = [!0, !0, !0], this.lineTickMirror = [!1, !1, !1], this.lineTickLength = [0, 0, 0], this.lineTickWidth = [1, 1, 1], this.lineTickColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]], this.gridEnable = [!0, !0, !0], this.gridWidth = [1, 1, 1], this.gridColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]], this.zeroEnable = [!0, !0, !0], this.zeroLineColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]], this.zeroLineWidth = [2, 2, 2], this.backgroundEnable = [!1, !1, !1], this.backgroundColor = [[0.8, 0.8, 0.8, 0.5], [0.8, 0.8, 0.8, 0.5], [0.8, 0.8, 0.8, 0.5]], this._firstInit = !0, this._text = null, this._lines = null, this._background = a(B);
                      }
                      var S = _.prototype;
                      S.update = function(B) {
                        B = B || {};
                        function V(ut, nt, X) {
                          if (X in B) {
                            var ct = B[X], lt = this[X], pt;
                            (ut ? v(ct) && v(ct[0]) : v(ct)) ? this[X] = pt = [nt(ct[0]), nt(ct[1]), nt(ct[2])] : this[X] = pt = [nt(ct), nt(ct), nt(ct)];
                            for (var wt = 0; wt < 3; ++wt)
                              if (pt[wt] !== lt[wt])
                                return !0;
                          }
                          return !1;
                        }
                        var U = V.bind(this, !1, Number), H = V.bind(this, !1, Boolean), F = V.bind(this, !1, String), G = V.bind(this, !0, function(ut) {
                          if (v(ut)) {
                            if (ut.length === 3)
                              return [+ut[0], +ut[1], +ut[2], 1];
                            if (ut.length === 4)
                              return [+ut[0], +ut[1], +ut[2], +ut[3]];
                          }
                          return [0, 0, 0, 1];
                        }), q, rt = !1, st = !1;
                        if ("bounds" in B)
                          for (var vt = B.bounds, ht = 0; ht < 2; ++ht)
                            for (var et = 0; et < 3; ++et)
                              vt[ht][et] !== this.bounds[ht][et] && (st = !0), this.bounds[ht][et] = vt[ht][et];
                        if ("ticks" in B) {
                          q = B.ticks, rt = !0, this.autoTicks = !1;
                          for (var ht = 0; ht < 3; ++ht)
                            this.tickSpacing[ht] = 0;
                        } else U("tickSpacing") && (this.autoTicks = !0, st = !0);
                        if (this._firstInit && ("ticks" in B || "tickSpacing" in B || (this.autoTicks = !0), st = !0, rt = !0, this._firstInit = !1), st && this.autoTicks && (q = o.create(this.bounds, this.tickSpacing), rt = !0), rt) {
                          for (var ht = 0; ht < 3; ++ht)
                            q[ht].sort(function(nt, X) {
                              return nt.x - X.x;
                            });
                          o.equal(q, this.ticks) ? rt = !1 : this.ticks = q;
                        }
                        H("tickEnable"), F("tickFont") && (rt = !0), F("tickFontStyle") && (rt = !0), F("tickFontWeight") && (rt = !0), F("tickFontVariant") && (rt = !0), U("tickSize"), U("tickAngle"), U("tickPad"), G("tickColor");
                        var Q = F("labels");
                        F("labelFont") && (Q = !0), F("labelFontStyle") && (Q = !0), F("labelFontWeight") && (Q = !0), F("labelFontVariant") && (Q = !0), H("labelEnable"), U("labelSize"), U("labelPad"), G("labelColor"), H("lineEnable"), H("lineMirror"), U("lineWidth"), G("lineColor"), H("lineTickEnable"), H("lineTickMirror"), U("lineTickLength"), U("lineTickWidth"), G("lineTickColor"), H("gridEnable"), U("gridWidth"), G("gridColor"), H("zeroEnable"), G("zeroLineColor"), U("zeroLineWidth"), H("backgroundEnable"), G("backgroundColor");
                        var j = [{ family: this.labelFont[0], style: this.labelFontStyle[0], weight: this.labelFontWeight[0], variant: this.labelFontVariant[0] }, { family: this.labelFont[1], style: this.labelFontStyle[1], weight: this.labelFontWeight[1], variant: this.labelFontVariant[1] }, { family: this.labelFont[2], style: this.labelFontStyle[2], weight: this.labelFontWeight[2], variant: this.labelFontVariant[2] }], at = [{ family: this.tickFont[0], style: this.tickFontStyle[0], weight: this.tickFontWeight[0], variant: this.tickFontVariant[0] }, { family: this.tickFont[1], style: this.tickFontStyle[1], weight: this.tickFontWeight[1], variant: this.tickFontVariant[1] }, { family: this.tickFont[2], style: this.tickFontStyle[2], weight: this.tickFontWeight[2], variant: this.tickFontVariant[2] }];
                        this._text ? this._text && (Q || rt) && this._text.update(this.bounds, this.labels, j, this.ticks, at) : this._text = r(this.gl, this.bounds, this.labels, j, this.ticks, at), this._lines && rt && (this._lines.dispose(), this._lines = null), this._lines || (this._lines = i(this.gl, this.bounds, this.ticks));
                      };
                      function M() {
                        this.primalOffset = [0, 0, 0], this.primalMinor = [0, 0, 0], this.mirrorOffset = [0, 0, 0], this.mirrorMinor = [0, 0, 0];
                      }
                      var C = [new M(), new M(), new M()];
                      function m(B, V, U, H, F) {
                        for (var G = B.primalOffset, q = B.primalMinor, rt = B.mirrorOffset, st = B.mirrorMinor, vt = H[V], ht = 0; ht < 3; ++ht)
                          if (V !== ht) {
                            var et = G, Q = rt, j = q, at = st;
                            vt & 1 << ht && (et = rt, Q = G, j = st, at = q), et[ht] = U[0][ht], Q[ht] = U[1][ht], F[ht] > 0 ? (j[ht] = -1, at[ht] = 0) : (j[ht] = 0, at[ht] = 1);
                          }
                      }
                      var L = [0, 0, 0], d = { model: y, view: y, projection: y, _ortho: !1 };
                      S.isOpaque = function() {
                        return !0;
                      }, S.isTransparent = function() {
                        return !1;
                      }, S.drawTransparent = function(B) {
                      };
                      var h = 0, E = [0, 0, 0], w = [0, 0, 0], z = [0, 0, 0];
                      S.draw = function(B) {
                        B = B || d;
                        for (var X = this.gl, V = B.model || y, U = B.view || y, H = B.projection || y, F = this.bounds, G = B._ortho || !1, q = l(V, U, H, F, G), rt = q.cubeEdges, st = q.axis, vt = U[12], ht = U[13], et = U[14], Q = U[15], j = G ? 2 : 1, at = j * this.pixelRatio * (H[3] * vt + H[7] * ht + H[11] * et + H[15] * Q) / X.drawingBufferHeight, ut = 0; ut < 3; ++ut)
                          this.lastCubeProps.cubeEdges[ut] = rt[ut], this.lastCubeProps.axis[ut] = st[ut];
                        for (var nt = C, ut = 0; ut < 3; ++ut)
                          m(C[ut], ut, this.bounds, rt, st);
                        for (var X = this.gl, ct = L, ut = 0; ut < 3; ++ut)
                          this.backgroundEnable[ut] ? ct[ut] = st[ut] : ct[ut] = 0;
                        this._background.draw(V, U, H, F, ct, this.backgroundColor), this._lines.bind(V, U, H, this);
                        for (var ut = 0; ut < 3; ++ut) {
                          var lt = [0, 0, 0];
                          st[ut] > 0 ? lt[ut] = F[1][ut] : lt[ut] = F[0][ut];
                          for (var pt = 0; pt < 2; ++pt) {
                            var wt = (ut + 1 + pt) % 3, Et = (ut + 1 + (pt ^ 1)) % 3;
                            this.gridEnable[wt] && this._lines.drawGrid(wt, Et, this.bounds, lt, this.gridColor[wt], this.gridWidth[wt] * this.pixelRatio);
                          }
                          for (var pt = 0; pt < 2; ++pt) {
                            var wt = (ut + 1 + pt) % 3, Et = (ut + 1 + (pt ^ 1)) % 3;
                            this.zeroEnable[Et] && Math.min(F[0][Et], F[1][Et]) <= 0 && Math.max(F[0][Et], F[1][Et]) >= 0 && this._lines.drawZero(wt, Et, this.bounds, lt, this.zeroLineColor[Et], this.zeroLineWidth[Et] * this.pixelRatio);
                          }
                        }
                        for (var ut = 0; ut < 3; ++ut) {
                          this.lineEnable[ut] && this._lines.drawAxisLine(ut, this.bounds, nt[ut].primalOffset, this.lineColor[ut], this.lineWidth[ut] * this.pixelRatio), this.lineMirror[ut] && this._lines.drawAxisLine(ut, this.bounds, nt[ut].mirrorOffset, this.lineColor[ut], this.lineWidth[ut] * this.pixelRatio);
                          for (var Ct = f(E, nt[ut].primalMinor), Gt = f(w, nt[ut].mirrorMinor), Jt = this.lineTickLength, pt = 0; pt < 3; ++pt) {
                            var Qt = at / V[5 * pt];
                            Ct[pt] *= Jt[pt] * Qt, Gt[pt] *= Jt[pt] * Qt;
                          }
                          this.lineTickEnable[ut] && this._lines.drawAxisTicks(ut, nt[ut].primalOffset, Ct, this.lineTickColor[ut], this.lineTickWidth[ut] * this.pixelRatio), this.lineTickMirror[ut] && this._lines.drawAxisTicks(ut, nt[ut].mirrorOffset, Gt, this.lineTickColor[ut], this.lineTickWidth[ut] * this.pixelRatio);
                        }
                        this._lines.unbind(), this._text.bind(V, U, H, this.pixelRatio);
                        var Vt, zt = 0.5, Rt, Wt;
                        function kt(Se) {
                          Wt = [0, 0, 0], Wt[Se] = 1;
                        }
                        function re(Se, ze, Ne) {
                          var Ve = (Se + 1) % 3, Oe = (Se + 2) % 3, ur = ze[Ve], ie = ze[Oe], $t = Ne[Ve], jt = Ne[Oe];
                          if (ur > 0 && jt > 0) {
                            kt(Ve);
                            return;
                          } else if (ur > 0 && jt < 0) {
                            kt(Ve);
                            return;
                          } else if (ur < 0 && jt > 0) {
                            kt(Ve);
                            return;
                          } else if (ur < 0 && jt < 0) {
                            kt(Ve);
                            return;
                          } else if (ie > 0 && $t > 0) {
                            kt(Oe);
                            return;
                          } else if (ie > 0 && $t < 0) {
                            kt(Oe);
                            return;
                          } else if (ie < 0 && $t > 0) {
                            kt(Oe);
                            return;
                          } else if (ie < 0 && $t < 0) {
                            kt(Oe);
                            return;
                          }
                        }
                        for (var ut = 0; ut < 3; ++ut) {
                          for (var ge = nt[ut].primalMinor, _e = nt[ut].mirrorMinor, ce = f(z, nt[ut].primalOffset), pt = 0; pt < 3; ++pt)
                            this.lineTickEnable[ut] && (ce[pt] += at * ge[pt] * Math.max(this.lineTickLength[pt], 0) / V[5 * pt]);
                          var ae = [0, 0, 0];
                          if (ae[ut] = 1, this.tickEnable[ut]) {
                            this.tickAngle[ut] === -3600 ? (this.tickAngle[ut] = 0, this.tickAlign[ut] = "auto") : this.tickAlign[ut] = -1, Rt = 1, Vt = [this.tickAlign[ut], zt, Rt], Vt[0] === "auto" ? Vt[0] = h : Vt[0] = parseInt("" + Vt[0]), Wt = [0, 0, 0], re(ut, ge, _e);
                            for (var pt = 0; pt < 3; ++pt)
                              ce[pt] += at * ge[pt] * this.tickPad[pt] / V[5 * pt];
                            this._text.drawTicks(ut, this.tickSize[ut], this.tickAngle[ut], ce, this.tickColor[ut], ae, Wt, Vt);
                          }
                          if (this.labelEnable[ut]) {
                            Rt = 0, Wt = [0, 0, 0], this.labels[ut].length > 4 && (kt(ut), Rt = 1), Vt = [this.labelAlign[ut], zt, Rt], Vt[0] === "auto" ? Vt[0] = h : Vt[0] = parseInt("" + Vt[0]);
                            for (var pt = 0; pt < 3; ++pt)
                              ce[pt] += at * ge[pt] * this.labelPad[pt] / V[5 * pt];
                            ce[ut] += 0.5 * (F[0][ut] + F[1][ut]), this._text.drawLabel(ut, this.labelSize[ut], this.labelAngle[ut], ce, this.labelColor[ut], [0, 0, 0], Wt, Vt);
                          }
                        }
                        this._text.unbind();
                      }, S.dispose = function() {
                        this._text.dispose(), this._lines.dispose(), this._background.dispose(), this._lines = null, this._text = null, this._background = null, this.gl = null;
                      };
                      function O(B, V) {
                        var U = new _(B);
                        return U.update(V), U;
                      }
                    }
                  ),
                  /***/
                  5304: (
                    /***/
                    function(p, u, t) {
                      p.exports = y;
                      var r = t(2762), i = t(8116), a = t(1879).bg;
                      function l(g, x, c, v) {
                        this.gl = g, this.buffer = x, this.vao = c, this.shader = v;
                      }
                      var o = l.prototype;
                      o.draw = function(g, x, c, v, f, _) {
                        for (var S = !1, M = 0; M < 3; ++M)
                          S = S || f[M];
                        if (S) {
                          var C = this.gl;
                          C.enable(C.POLYGON_OFFSET_FILL), C.polygonOffset(1, 2), this.shader.bind(), this.shader.uniforms = { model: g, view: x, projection: c, bounds: v, enable: f, colors: _ }, this.vao.bind(), this.vao.draw(this.gl.TRIANGLES, 36), this.vao.unbind(), C.disable(C.POLYGON_OFFSET_FILL);
                        }
                      }, o.dispose = function() {
                        this.vao.dispose(), this.buffer.dispose(), this.shader.dispose();
                      };
                      function y(g) {
                        for (var x = [], c = [], v = 0, f = 0; f < 3; ++f)
                          for (var _ = (f + 1) % 3, S = (f + 2) % 3, M = [0, 0, 0], C = [0, 0, 0], m = -1; m <= 1; m += 2) {
                            c.push(v, v + 2, v + 1, v + 1, v + 2, v + 3), M[f] = m, C[f] = m;
                            for (var L = -1; L <= 1; L += 2) {
                              M[_] = L;
                              for (var d = -1; d <= 1; d += 2)
                                M[S] = d, x.push(M[0], M[1], M[2], C[0], C[1], C[2]), v += 1;
                            }
                            var h = _;
                            _ = S, S = h;
                          }
                        var E = r(g, new Float32Array(x)), w = r(g, new Uint16Array(c), g.ELEMENT_ARRAY_BUFFER), z = i(g, [{ buffer: E, type: g.FLOAT, size: 3, offset: 0, stride: 24 }, { buffer: E, type: g.FLOAT, size: 3, offset: 12, stride: 24 }], w), O = a(g);
                        return O.attributes.position.location = 0, O.attributes.normal.location = 1, new l(g, E, z, O);
                      }
                    }
                  ),
                  /***/
                  6429: (
                    /***/
                    function(p, u, t) {
                      p.exports = m;
                      var r = t(8828), i = t(6760), a = t(5202), l = t(3250), o = new Array(16), y = new Array(8), g = new Array(8), x = new Array(3), c = [0, 0, 0];
                      (function() {
                        for (var L = 0; L < 8; ++L)
                          y[L] = [1, 1, 1, 1], g[L] = [1, 1, 1];
                      })();
                      function v(L, d, h) {
                        for (var E = 0; E < 4; ++E) {
                          L[E] = h[12 + E];
                          for (var w = 0; w < 3; ++w)
                            L[E] += d[w] * h[4 * w + E];
                        }
                      }
                      var f = [[0, 0, 1, 0, 0], [0, 0, -1, 1, 0], [0, -1, 0, 1, 0], [0, 1, 0, 1, 0], [-1, 0, 0, 1, 0], [1, 0, 0, 1, 0]];
                      function _(L) {
                        for (var d = 0; d < f.length; ++d)
                          if (L = a.positive(L, f[d]), L.length < 3)
                            return 0;
                        for (var h = L[0], E = h[0] / h[3], w = h[1] / h[3], z = 0, d = 1; d + 1 < L.length; ++d) {
                          var O = L[d], B = L[d + 1], V = O[0] / O[3], U = O[1] / O[3], H = B[0] / B[3], F = B[1] / B[3], G = V - E, q = U - w, rt = H - E, st = F - w;
                          z += Math.abs(G * st - q * rt);
                        }
                        return z;
                      }
                      var S = [1, 1, 1], M = [0, 0, 0], C = { cubeEdges: S, axis: M };
                      function m(L, d, h, E, w) {
                        i(o, d, L), i(o, h, o);
                        for (var z = 0, O = 0; O < 2; ++O) {
                          x[2] = E[O][2];
                          for (var B = 0; B < 2; ++B) {
                            x[1] = E[B][1];
                            for (var V = 0; V < 2; ++V)
                              x[0] = E[V][0], v(y[z], x, o), z += 1;
                          }
                        }
                        for (var U = -1, O = 0; O < 8; ++O) {
                          for (var H = y[O][3], F = 0; F < 3; ++F)
                            g[O][F] = y[O][F] / H;
                          w && (g[O][2] *= -1), H < 0 && (U < 0 || g[O][2] < g[U][2]) && (U = O);
                        }
                        if (U < 0) {
                          U = 0;
                          for (var G = 0; G < 3; ++G) {
                            for (var q = (G + 2) % 3, rt = (G + 1) % 3, st = -1, vt = -1, ht = 0; ht < 2; ++ht) {
                              var et = ht << G, Q = et + (ht << q) + (1 - ht << rt), j = et + (1 - ht << q) + (ht << rt);
                              l(g[et], g[Q], g[j], c) < 0 || (ht ? st = 1 : vt = 1);
                            }
                            if (st < 0 || vt < 0) {
                              vt > st && (U |= 1 << G);
                              continue;
                            }
                            for (var ht = 0; ht < 2; ++ht) {
                              var et = ht << G, Q = et + (ht << q) + (1 - ht << rt), j = et + (1 - ht << q) + (ht << rt), at = _([y[et], y[Q], y[j], y[et + (1 << q) + (1 << rt)]]);
                              ht ? st = at : vt = at;
                            }
                            if (vt > st) {
                              U |= 1 << G;
                              continue;
                            }
                          }
                        }
                        for (var ut = 7 ^ U, nt = -1, O = 0; O < 8; ++O)
                          O === U || O === ut || (nt < 0 || g[nt][1] > g[O][1]) && (nt = O);
                        for (var X = -1, O = 0; O < 3; ++O) {
                          var ct = nt ^ 1 << O;
                          if (!(ct === U || ct === ut)) {
                            X < 0 && (X = ct);
                            var rt = g[ct];
                            rt[0] < g[X][0] && (X = ct);
                          }
                        }
                        for (var lt = -1, O = 0; O < 3; ++O) {
                          var ct = nt ^ 1 << O;
                          if (!(ct === U || ct === ut || ct === X)) {
                            lt < 0 && (lt = ct);
                            var rt = g[ct];
                            rt[0] > g[lt][0] && (lt = ct);
                          }
                        }
                        var pt = S;
                        pt[0] = pt[1] = pt[2] = 0, pt[r.log2(X ^ nt)] = nt & X, pt[r.log2(nt ^ lt)] = nt & lt;
                        var wt = lt ^ 7;
                        wt === U || wt === ut ? (wt = X ^ 7, pt[r.log2(lt ^ wt)] = wt & lt) : pt[r.log2(X ^ wt)] = wt & X;
                        for (var Et = M, Ct = U, G = 0; G < 3; ++G)
                          Ct & 1 << G ? Et[G] = -1 : Et[G] = 1;
                        return C;
                      }
                    }
                  ),
                  /***/
                  501: (
                    /***/
                    function(p, u, t) {
                      p.exports = S;
                      var r = t(2762), i = t(8116), a = t(1879).n, l = [0, 0, 0], o = [0, 0, 0], y = [0, 0, 0], g = [0, 0, 0], x = [1, 1];
                      function c(M) {
                        return M[0] = M[1] = M[2] = 0, M;
                      }
                      function v(M, C) {
                        return M[0] = C[0], M[1] = C[1], M[2] = C[2], M;
                      }
                      function f(M, C, m, L, d, h, E, w) {
                        this.gl = M, this.vertBuffer = C, this.vao = m, this.shader = L, this.tickCount = d, this.tickOffset = h, this.gridCount = E, this.gridOffset = w;
                      }
                      var _ = f.prototype;
                      _.bind = function(M, C, m) {
                        this.shader.bind(), this.shader.uniforms.model = M, this.shader.uniforms.view = C, this.shader.uniforms.projection = m, x[0] = this.gl.drawingBufferWidth, x[1] = this.gl.drawingBufferHeight, this.shader.uniforms.screenShape = x, this.vao.bind();
                      }, _.unbind = function() {
                        this.vao.unbind();
                      }, _.drawAxisLine = function(M, C, m, L, d) {
                        var h = c(o);
                        this.shader.uniforms.majorAxis = o, h[M] = C[1][M] - C[0][M], this.shader.uniforms.minorAxis = h;
                        var E = v(g, m);
                        E[M] += C[0][M], this.shader.uniforms.offset = E, this.shader.uniforms.lineWidth = d, this.shader.uniforms.color = L;
                        var w = c(y);
                        w[(M + 2) % 3] = 1, this.shader.uniforms.screenAxis = w, this.vao.draw(this.gl.TRIANGLES, 6);
                        var w = c(y);
                        w[(M + 1) % 3] = 1, this.shader.uniforms.screenAxis = w, this.vao.draw(this.gl.TRIANGLES, 6);
                      }, _.drawAxisTicks = function(M, C, m, L, d) {
                        if (this.tickCount[M]) {
                          var h = c(l);
                          h[M] = 1, this.shader.uniforms.majorAxis = h, this.shader.uniforms.offset = C, this.shader.uniforms.minorAxis = m, this.shader.uniforms.color = L, this.shader.uniforms.lineWidth = d;
                          var E = c(y);
                          E[M] = 1, this.shader.uniforms.screenAxis = E, this.vao.draw(this.gl.TRIANGLES, this.tickCount[M], this.tickOffset[M]);
                        }
                      }, _.drawGrid = function(M, C, m, L, d, h) {
                        if (this.gridCount[M]) {
                          var E = c(o);
                          E[C] = m[1][C] - m[0][C], this.shader.uniforms.minorAxis = E;
                          var w = v(g, L);
                          w[C] += m[0][C], this.shader.uniforms.offset = w;
                          var z = c(l);
                          z[M] = 1, this.shader.uniforms.majorAxis = z;
                          var O = c(y);
                          O[M] = 1, this.shader.uniforms.screenAxis = O, this.shader.uniforms.lineWidth = h, this.shader.uniforms.color = d, this.vao.draw(this.gl.TRIANGLES, this.gridCount[M], this.gridOffset[M]);
                        }
                      }, _.drawZero = function(M, C, m, L, d, h) {
                        var E = c(o);
                        this.shader.uniforms.majorAxis = E, E[M] = m[1][M] - m[0][M], this.shader.uniforms.minorAxis = E;
                        var w = v(g, L);
                        w[M] += m[0][M], this.shader.uniforms.offset = w;
                        var z = c(y);
                        z[C] = 1, this.shader.uniforms.screenAxis = z, this.shader.uniforms.lineWidth = h, this.shader.uniforms.color = d, this.vao.draw(this.gl.TRIANGLES, 6);
                      }, _.dispose = function() {
                        this.vao.dispose(), this.vertBuffer.dispose(), this.shader.dispose();
                      };
                      function S(M, C, m) {
                        var L = [], d = [0, 0, 0], h = [0, 0, 0], E = [0, 0, 0], w = [0, 0, 0];
                        L.push(0, 0, 1, 0, 1, 1, 0, 0, -1, 0, 0, -1, 0, 1, 1, 0, 1, -1);
                        for (var z = 0; z < 3; ++z) {
                          for (var V = L.length / 3 | 0, O = 0; O < m[z].length; ++O) {
                            var B = +m[z][O].x;
                            L.push(B, 0, 1, B, 1, 1, B, 0, -1, B, 0, -1, B, 1, 1, B, 1, -1);
                          }
                          var H = L.length / 3 | 0;
                          d[z] = V, h[z] = H - V;
                          for (var V = L.length / 3 | 0, U = 0; U < m[z].length; ++U) {
                            var B = +m[z][U].x;
                            L.push(B, 0, 1, B, 1, 1, B, 0, -1, B, 0, -1, B, 1, 1, B, 1, -1);
                          }
                          var H = L.length / 3 | 0;
                          E[z] = V, w[z] = H - V;
                        }
                        var F = r(M, new Float32Array(L)), G = i(M, [{ buffer: F, type: M.FLOAT, size: 3, stride: 0, offset: 0 }]), q = a(M);
                        return q.attributes.position.location = 0, new f(M, F, G, q, h, d, w, E);
                      }
                    }
                  ),
                  /***/
                  1879: (
                    /***/
                    function(p, u, t) {
                      var r = t(3236), i = t(9405), a = r([`precision highp float;
#define GLSLIFY 1

attribute vec3 position;

uniform mat4 model, view, projection;
uniform vec3 offset, majorAxis, minorAxis, screenAxis;
uniform float lineWidth;
uniform vec2 screenShape;

vec3 project(vec3 p) {
  vec4 pp = projection * (view * (model * vec4(p, 1.0)));
  return pp.xyz / max(pp.w, 0.0001);
}

void main() {
  vec3 major = position.x * majorAxis;
  vec3 minor = position.y * minorAxis;

  vec3 vPosition = major + minor + offset;
  vec3 pPosition = project(vPosition);
  vec3 offset = project(vPosition + screenAxis * position.z);

  vec2 screen = normalize((offset - pPosition).xy * screenShape) / screenShape;

  gl_Position = vec4(pPosition + vec3(0.5 * screen * lineWidth, 0), 1.0);
}
`]), l = r([`precision highp float;
#define GLSLIFY 1

uniform vec4 color;
void main() {
  gl_FragColor = color;
}`]);
                      u.n = function(c) {
                        return i(c, a, l, null, [{ name: "position", type: "vec3" }]);
                      };
                      var o = r([`precision highp float;
#define GLSLIFY 1

attribute vec3 position;

uniform mat4 model, view, projection;
uniform vec3 offset, axis, alignDir, alignOpt;
uniform float scale, angle, pixelScale;
uniform vec2 resolution;

vec3 project(vec3 p) {
  vec4 pp = projection * (view * (model * vec4(p, 1.0)));
  return pp.xyz / max(pp.w, 0.0001);
}

float computeViewAngle(vec3 a, vec3 b) {
  vec3 A = project(a);
  vec3 B = project(b);

  return atan(
    (B.y - A.y) * resolution.y,
    (B.x - A.x) * resolution.x
  );
}

const float PI = 3.141592;
const float TWO_PI = 2.0 * PI;
const float HALF_PI = 0.5 * PI;
const float ONE_AND_HALF_PI = 1.5 * PI;

int option = int(floor(alignOpt.x + 0.001));
float hv_ratio =       alignOpt.y;
bool enableAlign =    (alignOpt.z != 0.0);

float mod_angle(float a) {
  return mod(a, PI);
}

float positive_angle(float a) {
  return mod_angle((a < 0.0) ?
    a + TWO_PI :
    a
  );
}

float look_upwards(float a) {
  float b = positive_angle(a);
  return ((b > HALF_PI) && (b <= ONE_AND_HALF_PI)) ?
    b - PI :
    b;
}

float look_horizontal_or_vertical(float a, float ratio) {
  // ratio controls the ratio between being horizontal to (vertical + horizontal)
  // if ratio is set to 0.5 then it is 50%, 50%.
  // when using a higher ratio e.g. 0.75 the result would
  // likely be more horizontal than vertical.

  float b = positive_angle(a);

  return
    (b < (      ratio) * HALF_PI) ? 0.0 :
    (b < (2.0 - ratio) * HALF_PI) ? -HALF_PI :
    (b < (2.0 + ratio) * HALF_PI) ? 0.0 :
    (b < (4.0 - ratio) * HALF_PI) ? HALF_PI :
                                    0.0;
}

float roundTo(float a, float b) {
  return float(b * floor((a + 0.5 * b) / b));
}

float look_round_n_directions(float a, int n) {
  float b = positive_angle(a);
  float div = TWO_PI / float(n);
  float c = roundTo(b, div);
  return look_upwards(c);
}

float applyAlignOption(float rawAngle, float delta) {
  return
    (option >  2) ? look_round_n_directions(rawAngle + delta, option) :       // option 3-n: round to n directions
    (option == 2) ? look_horizontal_or_vertical(rawAngle + delta, hv_ratio) : // horizontal or vertical
    (option == 1) ? rawAngle + delta :       // use free angle, and flip to align with one direction of the axis
    (option == 0) ? look_upwards(rawAngle) : // use free angle, and stay upwards
    (option ==-1) ? 0.0 :                    // useful for backward compatibility, all texts remains horizontal
                    rawAngle;                // otherwise return back raw input angle
}

bool isAxisTitle = (axis.x == 0.0) &&
                   (axis.y == 0.0) &&
                   (axis.z == 0.0);

void main() {
  //Compute world offset
  float axisDistance = position.z;
  vec3 dataPosition = axisDistance * axis + offset;

  float beta = angle; // i.e. user defined attributes for each tick

  float axisAngle;
  float clipAngle;
  float flip;

  if (enableAlign) {
    axisAngle = (isAxisTitle) ? HALF_PI :
                      computeViewAngle(dataPosition, dataPosition + axis);
    clipAngle = computeViewAngle(dataPosition, dataPosition + alignDir);

    axisAngle += (sin(axisAngle) < 0.0) ? PI : 0.0;
    clipAngle += (sin(clipAngle) < 0.0) ? PI : 0.0;

    flip = (dot(vec2(cos(axisAngle), sin(axisAngle)),
                vec2(sin(clipAngle),-cos(clipAngle))) > 0.0) ? 1.0 : 0.0;

    beta += applyAlignOption(clipAngle, flip * PI);
  }

  //Compute plane offset
  vec2 planeCoord = position.xy * pixelScale;

  mat2 planeXform = scale * mat2(
     cos(beta), sin(beta),
    -sin(beta), cos(beta)
  );

  vec2 viewOffset = 2.0 * planeXform * planeCoord / resolution;

  //Compute clip position
  vec3 clipPosition = project(dataPosition);

  //Apply text offset in clip coordinates
  clipPosition += vec3(viewOffset, 0.0);

  //Done
  gl_Position = vec4(clipPosition, 1.0);
}
`]), y = r([`precision highp float;
#define GLSLIFY 1

uniform vec4 color;
void main() {
  gl_FragColor = color;
}`]);
                      u.Q = function(c) {
                        return i(c, o, y, null, [{ name: "position", type: "vec3" }]);
                      };
                      var g = r([`precision highp float;
#define GLSLIFY 1

attribute vec3 position;
attribute vec3 normal;

uniform mat4 model, view, projection;
uniform vec3 enable;
uniform vec3 bounds[2];

varying vec3 colorChannel;

void main() {

  vec3 signAxis = sign(bounds[1] - bounds[0]);

  vec3 realNormal = signAxis * normal;

  if(dot(realNormal, enable) > 0.0) {
    vec3 minRange = min(bounds[0], bounds[1]);
    vec3 maxRange = max(bounds[0], bounds[1]);
    vec3 nPosition = mix(minRange, maxRange, 0.5 * (position + 1.0));
    gl_Position = projection * (view * (model * vec4(nPosition, 1.0)));
  } else {
    gl_Position = vec4(0,0,0,0);
  }

  colorChannel = abs(realNormal);
}
`]), x = r([`precision highp float;
#define GLSLIFY 1

uniform vec4 colors[3];

varying vec3 colorChannel;

void main() {
  gl_FragColor = colorChannel.x * colors[0] +
                 colorChannel.y * colors[1] +
                 colorChannel.z * colors[2];
}`]);
                      u.bg = function(c) {
                        return i(c, g, x, null, [{ name: "position", type: "vec3" }, { name: "normal", type: "vec3" }]);
                      };
                    }
                  ),
                  /***/
                  4935: (
                    /***/
                    function(p, u, t) {
                      p.exports = _;
                      var r = t(2762), i = t(8116), a = t(4359), l = t(1879).Q, o = window || P.global || {}, y = o.__TEXT_CACHE || {};
                      o.__TEXT_CACHE = {};
                      var g = 3;
                      function x(S, M, C, m) {
                        this.gl = S, this.shader = M, this.buffer = C, this.vao = m, this.tickOffset = this.tickCount = this.labelOffset = this.labelCount = null;
                      }
                      var c = x.prototype, v = [0, 0];
                      c.bind = function(S, M, C, m) {
                        this.vao.bind(), this.shader.bind();
                        var L = this.shader.uniforms;
                        L.model = S, L.view = M, L.projection = C, L.pixelScale = m, v[0] = this.gl.drawingBufferWidth, v[1] = this.gl.drawingBufferHeight, this.shader.uniforms.resolution = v;
                      }, c.unbind = function() {
                        this.vao.unbind();
                      }, c.update = function(S, M, C, m, L) {
                        var d = [];
                        function h(G, q, rt, st, vt, ht) {
                          var et = [rt.style, rt.weight, rt.variant, rt.family].join("_"), Q = y[et];
                          Q || (Q = y[et] = {});
                          var j = Q[q];
                          j || (j = Q[q] = f(q, { triangles: !0, font: rt.family, fontStyle: rt.style, fontWeight: rt.weight, fontVariant: rt.variant, textAlign: "center", textBaseline: "middle", lineSpacing: vt, styletags: ht }));
                          for (var at = (st || 12) / 12, ut = j.positions, nt = j.cells, X = 0, ct = nt.length; X < ct; ++X)
                            for (var lt = nt[X], pt = 2; pt >= 0; --pt) {
                              var wt = ut[lt[pt]];
                              d.push(at * wt[0], -at * wt[1], G);
                            }
                        }
                        for (var E = [0, 0, 0], w = [0, 0, 0], z = [0, 0, 0], O = [0, 0, 0], B = 1.25, V = { breaklines: !0, bolds: !0, italics: !0, subscripts: !0, superscripts: !0 }, U = 0; U < 3; ++U) {
                          z[U] = d.length / g | 0, h(
                            0.5 * (S[0][U] + S[1][U]),
                            M[U],
                            C[U],
                            12,
                            // labelFontSize
                            B,
                            V
                          ), O[U] = (d.length / g | 0) - z[U], E[U] = d.length / g | 0;
                          for (var H = 0; H < m[U].length; ++H)
                            if (m[U][H].text) {
                              var F = { family: m[U][H].font || L[U].family, style: L[U].fontStyle || L[U].style, weight: L[U].fontWeight || L[U].weight, variant: L[U].fontVariant || L[U].variant };
                              h(m[U][H].x, m[U][H].text, F, m[U][H].fontSize || 12, B, V);
                            }
                          w[U] = (d.length / g | 0) - E[U];
                        }
                        this.buffer.update(d), this.tickOffset = E, this.tickCount = w, this.labelOffset = z, this.labelCount = O;
                      }, c.drawTicks = function(S, M, C, m, L, d, h, E) {
                        this.tickCount[S] && (this.shader.uniforms.axis = d, this.shader.uniforms.color = L, this.shader.uniforms.angle = C, this.shader.uniforms.scale = M, this.shader.uniforms.offset = m, this.shader.uniforms.alignDir = h, this.shader.uniforms.alignOpt = E, this.vao.draw(this.gl.TRIANGLES, this.tickCount[S], this.tickOffset[S]));
                      }, c.drawLabel = function(S, M, C, m, L, d, h, E) {
                        this.labelCount[S] && (this.shader.uniforms.axis = d, this.shader.uniforms.color = L, this.shader.uniforms.angle = C, this.shader.uniforms.scale = M, this.shader.uniforms.offset = m, this.shader.uniforms.alignDir = h, this.shader.uniforms.alignOpt = E, this.vao.draw(this.gl.TRIANGLES, this.labelCount[S], this.labelOffset[S]));
                      }, c.dispose = function() {
                        this.shader.dispose(), this.vao.dispose(), this.buffer.dispose();
                      };
                      function f(S, M) {
                        try {
                          return a(S, M);
                        } catch (C) {
                          return console.warn('error vectorizing text:"' + S + '" error:', C), { cells: [], positions: [] };
                        }
                      }
                      function _(S, M, C, m, L, d) {
                        var h = r(S), E = i(S, [{ buffer: h, size: 3 }]), w = l(S);
                        w.attributes.position.location = 0;
                        var z = new x(S, w, h, E);
                        return z.update(M, C, m, L, d), z;
                      }
                    }
                  ),
                  /***/
                  6444: (
                    /***/
                    function(p, u) {
                      u.create = r, u.equal = i;
                      function t(a, l) {
                        var o = a + "", y = o.indexOf("."), g = 0;
                        y >= 0 && (g = o.length - y - 1);
                        var x = Math.pow(10, g), c = Math.round(a * l * x), v = c + "";
                        if (v.indexOf("e") >= 0)
                          return v;
                        var f = c / x, _ = c % x;
                        c < 0 ? (f = -Math.ceil(f) | 0, _ = -_ | 0) : (f = Math.floor(f) | 0, _ = _ | 0);
                        var S = "" + f;
                        if (c < 0 && (S = "-" + S), g) {
                          for (var M = "" + _; M.length < g; )
                            M = "0" + M;
                          return S + "." + M;
                        } else
                          return S;
                      }
                      function r(a, l) {
                        for (var o = [], y = 0; y < 3; ++y) {
                          var g = [];
                          0.5 * (a[0][y] + a[1][y]);
                          for (var x = 0; x * l[y] <= a[1][y]; ++x)
                            g.push({ x: x * l[y], text: t(l[y], x) });
                          for (var x = -1; x * l[y] >= a[0][y]; --x)
                            g.push({ x: x * l[y], text: t(l[y], x) });
                          o.push(g);
                        }
                        return o;
                      }
                      function i(a, l) {
                        for (var o = 0; o < 3; ++o) {
                          if (a[o].length !== l[o].length)
                            return !1;
                          for (var y = 0; y < a[o].length; ++y) {
                            var g = a[o][y], x = l[o][y];
                            if (g.x !== x.x || g.text !== x.text || g.font !== x.font || g.fontColor !== x.fontColor || g.fontSize !== x.fontSize || g.dx !== x.dx || g.dy !== x.dy)
                              return !1;
                          }
                        }
                        return !0;
                      }
                    }
                  ),
                  /***/
                  5445: (
                    /***/
                    function(p, u, t) {
                      p.exports = C;
                      var r = t(5033), i = t(5202), a = t(6429), l = t(6760), o = t(5665), y = t(5352), g = new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]), x = new Float32Array(16);
                      function c(m, L, d) {
                        this.lo = m, this.hi = L, this.pixelsPerDataUnit = d;
                      }
                      var v = [0, 0, 0, 1], f = [0, 0, 0, 1];
                      function _(m, L, d, h, E) {
                        for (var w = 0; w < 3; ++w) {
                          for (var z = v, O = f, B = 0; B < 3; ++B)
                            O[B] = z[B] = d[B];
                          O[3] = z[3] = 1, O[w] += 1, y(O, O, L), O[3] < 0 && (m[w] = 1 / 0), z[w] -= 1, y(z, z, L), z[3] < 0 && (m[w] = 1 / 0);
                          var V = (z[0] / z[3] - O[0] / O[3]) * h, U = (z[1] / z[3] - O[1] / O[3]) * E;
                          m[w] = 0.25 * Math.sqrt(V * V + U * U);
                        }
                        return m;
                      }
                      var S = [new c(1 / 0, -1 / 0, 1 / 0), new c(1 / 0, -1 / 0, 1 / 0), new c(1 / 0, -1 / 0, 1 / 0)], M = [0, 0, 0];
                      function C(m, L, d, h, U) {
                        var w = L.model || g, z = L.view || g, O = L.projection || g, B = L._ortho || !1, V = m.bounds, U = U || a(w, z, O, V, B), H = U.axis;
                        l(x, z, w), l(x, O, x);
                        for (var F = S, G = 0; G < 3; ++G)
                          F[G].lo = 1 / 0, F[G].hi = -1 / 0, F[G].pixelsPerDataUnit = 1 / 0;
                        var q = r(o(x, x));
                        o(x, x);
                        for (var rt = 0; rt < 3; ++rt) {
                          var st = (rt + 1) % 3, vt = (rt + 2) % 3, ht = M;
                          t: for (var G = 0; G < 2; ++G) {
                            var et = [];
                            if (H[rt] < 0 != !!G) {
                              ht[rt] = V[G][rt];
                              for (var Q = 0; Q < 2; ++Q) {
                                ht[st] = V[Q ^ G][st];
                                for (var j = 0; j < 2; ++j)
                                  ht[vt] = V[j ^ Q ^ G][vt], et.push(ht.slice());
                              }
                              for (var at = B ? 5 : 4, Q = at; Q === at; ++Q) {
                                if (et.length === 0)
                                  continue t;
                                et = i.positive(et, q[Q]);
                              }
                              for (var Q = 0; Q < et.length; ++Q)
                                for (var vt = et[Q], ut = _(M, x, vt, d, h), j = 0; j < 3; ++j)
                                  F[j].lo = Math.min(F[j].lo, vt[j]), F[j].hi = Math.max(F[j].hi, vt[j]), j !== rt && (F[j].pixelsPerDataUnit = Math.min(F[j].pixelsPerDataUnit, Math.abs(ut[j])));
                            }
                          }
                        }
                        return F;
                      }
                    }
                  ),
                  /***/
                  2762: (
                    /***/
                    function(p, u, t) {
                      var r = t(1888), i = t(5298), a = t(9618), l = ["uint8", "uint8_clamped", "uint16", "uint32", "int8", "int16", "int32", "float32"];
                      function o(f, _, S, M, C) {
                        this.gl = f, this.type = _, this.handle = S, this.length = M, this.usage = C;
                      }
                      var y = o.prototype;
                      y.bind = function() {
                        this.gl.bindBuffer(this.type, this.handle);
                      }, y.unbind = function() {
                        this.gl.bindBuffer(this.type, null);
                      }, y.dispose = function() {
                        this.gl.deleteBuffer(this.handle);
                      };
                      function g(f, _, S, M, C, m) {
                        var L = C.length * C.BYTES_PER_ELEMENT;
                        if (m < 0)
                          return f.bufferData(_, C, M), L;
                        if (L + m > S)
                          throw new Error("gl-buffer: If resizing buffer, must not specify offset");
                        return f.bufferSubData(_, m, C), S;
                      }
                      function x(f, _) {
                        for (var S = r.malloc(f.length, _), M = f.length, C = 0; C < M; ++C)
                          S[C] = f[C];
                        return S;
                      }
                      function c(f, _) {
                        for (var S = 1, M = _.length - 1; M >= 0; --M) {
                          if (_[M] !== S)
                            return !1;
                          S *= f[M];
                        }
                        return !0;
                      }
                      y.update = function(f, _) {
                        if (typeof _ != "number" && (_ = -1), this.bind(), typeof f == "object" && typeof f.shape < "u") {
                          var S = f.dtype;
                          if (l.indexOf(S) < 0 && (S = "float32"), this.type === this.gl.ELEMENT_ARRAY_BUFFER) {
                            var M = gl.getExtension("OES_element_index_uint");
                            M && S !== "uint16" ? S = "uint32" : S = "uint16";
                          }
                          if (S === f.dtype && c(f.shape, f.stride))
                            f.offset === 0 && f.data.length === f.shape[0] ? this.length = g(this.gl, this.type, this.length, this.usage, f.data, _) : this.length = g(this.gl, this.type, this.length, this.usage, f.data.subarray(f.offset, f.shape[0]), _);
                          else {
                            var C = r.malloc(f.size, S), m = a(C, f.shape);
                            i.assign(m, f), _ < 0 ? this.length = g(this.gl, this.type, this.length, this.usage, C, _) : this.length = g(this.gl, this.type, this.length, this.usage, C.subarray(0, f.size), _), r.free(C);
                          }
                        } else if (Array.isArray(f)) {
                          var L;
                          this.type === this.gl.ELEMENT_ARRAY_BUFFER ? L = x(f, "uint16") : L = x(f, "float32"), _ < 0 ? this.length = g(this.gl, this.type, this.length, this.usage, L, _) : this.length = g(this.gl, this.type, this.length, this.usage, L.subarray(0, f.length), _), r.free(L);
                        } else if (typeof f == "object" && typeof f.length == "number")
                          this.length = g(this.gl, this.type, this.length, this.usage, f, _);
                        else if (typeof f == "number" || f === void 0) {
                          if (_ >= 0)
                            throw new Error("gl-buffer: Cannot specify offset when resizing buffer");
                          f = f | 0, f <= 0 && (f = 1), this.gl.bufferData(this.type, f | 0, this.usage), this.length = f;
                        } else
                          throw new Error("gl-buffer: Invalid data type");
                      };
                      function v(f, _, S, M) {
                        if (S = S || f.ARRAY_BUFFER, M = M || f.DYNAMIC_DRAW, S !== f.ARRAY_BUFFER && S !== f.ELEMENT_ARRAY_BUFFER)
                          throw new Error("gl-buffer: Invalid type for webgl buffer, must be either gl.ARRAY_BUFFER or gl.ELEMENT_ARRAY_BUFFER");
                        if (M !== f.DYNAMIC_DRAW && M !== f.STATIC_DRAW && M !== f.STREAM_DRAW)
                          throw new Error("gl-buffer: Invalid usage for buffer, must be either gl.DYNAMIC_DRAW, gl.STATIC_DRAW or gl.STREAM_DRAW");
                        var C = f.createBuffer(), m = new o(f, S, C, 0, M);
                        return m.update(_), m;
                      }
                      p.exports = v;
                    }
                  ),
                  /***/
                  6405: (
                    /***/
                    function(p, u, t) {
                      var r = t(2931);
                      p.exports = function(a, l) {
                        var o = a.positions, y = a.vectors, g = { positions: [], vertexIntensity: [], vertexIntensityBounds: a.vertexIntensityBounds, vectors: [], cells: [], coneOffset: a.coneOffset, colormap: a.colormap };
                        if (a.positions.length === 0)
                          return l && (l[0] = [0, 0, 0], l[1] = [0, 0, 0]), g;
                        for (var x = 0, c = 1 / 0, v = -1 / 0, f = 1 / 0, _ = -1 / 0, S = 1 / 0, M = -1 / 0, C = null, m = null, L = [], d = 1 / 0, h = !1, E = a.coneSizemode === "raw", w = 0; w < o.length; w++) {
                          var z = o[w];
                          c = Math.min(z[0], c), v = Math.max(z[0], v), f = Math.min(z[1], f), _ = Math.max(z[1], _), S = Math.min(z[2], S), M = Math.max(z[2], M);
                          var O = y[w];
                          if (r.length(O) > x && (x = r.length(O)), w && !E) {
                            var B = 2 * r.distance(C, z) / (r.length(m) + r.length(O));
                            B ? (d = Math.min(d, B), h = !1) : h = !0;
                          }
                          h || (C = z, m = O), L.push(O);
                        }
                        var V = [c, f, S], U = [v, _, M];
                        l && (l[0] = V, l[1] = U), x === 0 && (x = 1);
                        var H = 1 / x;
                        isFinite(d) || (d = 1), g.vectorScale = d;
                        var F = a.coneSize || (E ? 1 : 0.5);
                        a.absoluteConeSize && (F = a.absoluteConeSize * H), g.coneScale = F;
                        for (var w = 0, G = 0; w < o.length; w++)
                          for (var z = o[w], q = z[0], rt = z[1], st = z[2], vt = L[w], ht = r.length(vt) * H, et = 0, Q = 8; et < Q; et++) {
                            g.positions.push([q, rt, st, G++]), g.positions.push([q, rt, st, G++]), g.positions.push([q, rt, st, G++]), g.positions.push([q, rt, st, G++]), g.positions.push([q, rt, st, G++]), g.positions.push([q, rt, st, G++]), g.vectors.push(vt), g.vectors.push(vt), g.vectors.push(vt), g.vectors.push(vt), g.vectors.push(vt), g.vectors.push(vt), g.vertexIntensity.push(ht, ht, ht), g.vertexIntensity.push(ht, ht, ht);
                            var j = g.positions.length;
                            g.cells.push([j - 6, j - 5, j - 4], [j - 3, j - 2, j - 1]);
                          }
                        return g;
                      };
                      var i = t(614);
                      p.exports.createMesh = t(9060), p.exports.createConeMesh = function(a, l) {
                        return p.exports.createMesh(a, l, { shaders: i, traceType: "cone" });
                      };
                    }
                  ),
                  /***/
                  9060: (
                    /***/
                    function(p, u, t) {
                      var r = t(9405), i = t(2762), a = t(8116), l = t(7766), o = t(6760), y = t(7608), g = t(9618), x = t(6729), c = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
                      function v(L, d, h, E, w, z, O, B, V, U, H) {
                        this.gl = L, this.pixelRatio = 1, this.cells = [], this.positions = [], this.intensity = [], this.texture = d, this.dirty = !0, this.triShader = h, this.pickShader = E, this.trianglePositions = w, this.triangleVectors = z, this.triangleColors = B, this.triangleUVs = V, this.triangleIds = O, this.triangleVAO = U, this.triangleCount = 0, this.pickId = 1, this.bounds = [[1 / 0, 1 / 0, 1 / 0], [-1 / 0, -1 / 0, -1 / 0]], this.clipBounds = [[-1 / 0, -1 / 0, -1 / 0], [1 / 0, 1 / 0, 1 / 0]], this.lightPosition = [1e5, 1e5, 0], this.ambientLight = 0.8, this.diffuseLight = 0.8, this.specularLight = 2, this.roughness = 0.5, this.fresnel = 1.5, this.opacity = 1, this.traceType = H, this.tubeScale = 1, this.coneScale = 2, this.vectorScale = 1, this.coneOffset = 0.25, this._model = c, this._view = c, this._projection = c, this._resolution = [1, 1];
                      }
                      var f = v.prototype;
                      f.isOpaque = function() {
                        return this.opacity >= 1;
                      }, f.isTransparent = function() {
                        return this.opacity < 1;
                      }, f.pickSlots = 1, f.setPickBase = function(L) {
                        this.pickId = L;
                      };
                      function _(L) {
                        for (var d = x({ colormap: L, nshades: 256, format: "rgba" }), h = new Uint8Array(256 * 4), E = 0; E < 256; ++E) {
                          for (var w = d[E], z = 0; z < 3; ++z)
                            h[4 * E + z] = w[z];
                          h[4 * E + 3] = w[3] * 255;
                        }
                        return g(h, [256, 256, 4], [4, 0, 1]);
                      }
                      function S(L) {
                        for (var d = L.length, h = new Array(d), E = 0; E < d; ++E)
                          h[E] = L[E][2];
                        return h;
                      }
                      f.update = function(L) {
                        L = L || {};
                        var d = this.gl;
                        this.dirty = !0, "lightPosition" in L && (this.lightPosition = L.lightPosition), "opacity" in L && (this.opacity = L.opacity), "ambient" in L && (this.ambientLight = L.ambient), "diffuse" in L && (this.diffuseLight = L.diffuse), "specular" in L && (this.specularLight = L.specular), "roughness" in L && (this.roughness = L.roughness), "fresnel" in L && (this.fresnel = L.fresnel), L.tubeScale !== void 0 && (this.tubeScale = L.tubeScale), L.vectorScale !== void 0 && (this.vectorScale = L.vectorScale), L.coneScale !== void 0 && (this.coneScale = L.coneScale), L.coneOffset !== void 0 && (this.coneOffset = L.coneOffset), L.colormap && (this.texture.shape = [256, 256], this.texture.minFilter = d.LINEAR_MIPMAP_LINEAR, this.texture.magFilter = d.LINEAR, this.texture.setPixels(_(L.colormap)), this.texture.generateMipmap());
                        var h = L.cells, E = L.positions, w = L.vectors;
                        if (!(!E || !h || !w)) {
                          var z = [], O = [], B = [], V = [], U = [];
                          this.cells = h, this.positions = E, this.vectors = w;
                          var H = L.meshColor || [1, 1, 1, 1], F = L.vertexIntensity, G = 1 / 0, q = -1 / 0;
                          if (F)
                            if (L.vertexIntensityBounds)
                              G = +L.vertexIntensityBounds[0], q = +L.vertexIntensityBounds[1];
                            else
                              for (var rt = 0; rt < F.length; ++rt) {
                                var st = F[rt];
                                G = Math.min(G, st), q = Math.max(q, st);
                              }
                          else
                            for (var rt = 0; rt < E.length; ++rt) {
                              var st = E[rt][2];
                              G = Math.min(G, st), q = Math.max(q, st);
                            }
                          F ? this.intensity = F : this.intensity = S(E), this.bounds = [[1 / 0, 1 / 0, 1 / 0], [-1 / 0, -1 / 0, -1 / 0]];
                          for (var rt = 0; rt < E.length; ++rt)
                            for (var vt = E[rt], ht = 0; ht < 3; ++ht)
                              isNaN(vt[ht]) || !isFinite(vt[ht]) || (this.bounds[0][ht] = Math.min(this.bounds[0][ht], vt[ht]), this.bounds[1][ht] = Math.max(this.bounds[1][ht], vt[ht]));
                          var et = 0;
                          t: for (var rt = 0; rt < h.length; ++rt) {
                            var Q = h[rt];
                            switch (Q.length) {
                              case 3:
                                for (var ht = 0; ht < 3; ++ht)
                                  for (var j = Q[ht], vt = E[j], at = 0; at < 3; ++at)
                                    if (isNaN(vt[at]) || !isFinite(vt[at]))
                                      continue t;
                                for (var ht = 0; ht < 3; ++ht) {
                                  var j = Q[2 - ht], vt = E[j];
                                  z.push(vt[0], vt[1], vt[2], vt[3]);
                                  var ut = w[j];
                                  O.push(ut[0], ut[1], ut[2], ut[3] || 0);
                                  var nt = H;
                                  nt.length === 3 ? B.push(nt[0], nt[1], nt[2], 1) : B.push(nt[0], nt[1], nt[2], nt[3]);
                                  var X;
                                  F ? X = [(F[j] - G) / (q - G), 0] : X = [(vt[2] - G) / (q - G), 0], V.push(X[0], X[1]), U.push(rt);
                                }
                                et += 1;
                                break;
                            }
                          }
                          this.triangleCount = et, this.trianglePositions.update(z), this.triangleVectors.update(O), this.triangleColors.update(B), this.triangleUVs.update(V), this.triangleIds.update(new Uint32Array(U));
                        }
                      }, f.drawTransparent = f.draw = function(L) {
                        L = L || {};
                        for (var d = this.gl, h = L.model || c, E = L.view || c, w = L.projection || c, z = [[-1e6, -1e6, -1e6], [1e6, 1e6, 1e6]], O = 0; O < 3; ++O)
                          z[0][O] = Math.max(z[0][O], this.clipBounds[0][O]), z[1][O] = Math.min(z[1][O], this.clipBounds[1][O]);
                        var B = { model: h, view: E, projection: w, inverseModel: c.slice(), clipBounds: z, kambient: this.ambientLight, kdiffuse: this.diffuseLight, kspecular: this.specularLight, roughness: this.roughness, fresnel: this.fresnel, eyePosition: [0, 0, 0], lightPosition: [0, 0, 0], opacity: this.opacity, tubeScale: this.tubeScale, vectorScale: this.vectorScale, coneScale: this.coneScale, coneOffset: this.coneOffset, texture: 0 };
                        B.inverseModel = y(B.inverseModel, B.model), d.disable(d.CULL_FACE), this.texture.bind(0);
                        var V = new Array(16);
                        o(V, B.view, B.model), o(V, B.projection, V), y(V, V);
                        for (var O = 0; O < 3; ++O)
                          B.eyePosition[O] = V[12 + O] / V[15];
                        for (var U = V[15], O = 0; O < 3; ++O)
                          U += this.lightPosition[O] * V[4 * O + 3];
                        for (var O = 0; O < 3; ++O) {
                          for (var H = V[12 + O], F = 0; F < 3; ++F)
                            H += V[4 * F + O] * this.lightPosition[F];
                          B.lightPosition[O] = H / U;
                        }
                        if (this.triangleCount > 0) {
                          var G = this.triShader;
                          G.bind(), G.uniforms = B, this.triangleVAO.bind(), d.drawArrays(d.TRIANGLES, 0, this.triangleCount * 3), this.triangleVAO.unbind();
                        }
                      }, f.drawPick = function(L) {
                        L = L || {};
                        for (var d = this.gl, h = L.model || c, E = L.view || c, w = L.projection || c, z = [[-1e6, -1e6, -1e6], [1e6, 1e6, 1e6]], O = 0; O < 3; ++O)
                          z[0][O] = Math.max(z[0][O], this.clipBounds[0][O]), z[1][O] = Math.min(z[1][O], this.clipBounds[1][O]);
                        this._model = [].slice.call(h), this._view = [].slice.call(E), this._projection = [].slice.call(w), this._resolution = [d.drawingBufferWidth, d.drawingBufferHeight];
                        var B = { model: h, view: E, projection: w, clipBounds: z, tubeScale: this.tubeScale, vectorScale: this.vectorScale, coneScale: this.coneScale, coneOffset: this.coneOffset, pickId: this.pickId / 255 }, V = this.pickShader;
                        V.bind(), V.uniforms = B, this.triangleCount > 0 && (this.triangleVAO.bind(), d.drawArrays(d.TRIANGLES, 0, this.triangleCount * 3), this.triangleVAO.unbind());
                      }, f.pick = function(L) {
                        if (!L || L.id !== this.pickId)
                          return null;
                        var d = L.value[0] + 256 * L.value[1] + 65536 * L.value[2], h = this.cells[d], E = this.positions[h[1]].slice(0, 3), w = { position: E, dataCoordinate: E, index: Math.floor(h[1] / 48) };
                        return this.traceType === "cone" ? w.index = Math.floor(h[1] / 48) : this.traceType === "streamtube" && (w.intensity = this.intensity[h[1]], w.velocity = this.vectors[h[1]].slice(0, 3), w.divergence = this.vectors[h[1]][3], w.index = d), w;
                      }, f.dispose = function() {
                        this.texture.dispose(), this.triShader.dispose(), this.pickShader.dispose(), this.triangleVAO.dispose(), this.trianglePositions.dispose(), this.triangleVectors.dispose(), this.triangleColors.dispose(), this.triangleUVs.dispose(), this.triangleIds.dispose();
                      };
                      function M(L, d) {
                        var h = r(L, d.meshShader.vertex, d.meshShader.fragment, null, d.meshShader.attributes);
                        return h.attributes.position.location = 0, h.attributes.color.location = 2, h.attributes.uv.location = 3, h.attributes.vector.location = 4, h;
                      }
                      function C(L, d) {
                        var h = r(L, d.pickShader.vertex, d.pickShader.fragment, null, d.pickShader.attributes);
                        return h.attributes.position.location = 0, h.attributes.id.location = 1, h.attributes.vector.location = 4, h;
                      }
                      function m(L, d, h) {
                        var E = h.shaders;
                        arguments.length === 1 && (d = L, L = d.gl);
                        var w = M(L, E), z = C(L, E), O = l(L, g(new Uint8Array([255, 255, 255, 255]), [1, 1, 4]));
                        O.generateMipmap(), O.minFilter = L.LINEAR_MIPMAP_LINEAR, O.magFilter = L.LINEAR;
                        var B = i(L), V = i(L), U = i(L), H = i(L), F = i(L), G = a(L, [{ buffer: B, type: L.FLOAT, size: 4 }, { buffer: F, type: L.UNSIGNED_BYTE, size: 4, normalized: !0 }, { buffer: U, type: L.FLOAT, size: 4 }, { buffer: H, type: L.FLOAT, size: 2 }, { buffer: V, type: L.FLOAT, size: 4 }]), q = new v(L, O, w, z, B, V, F, U, H, G, h.traceType || "cone");
                        return q.update(d), q;
                      }
                      p.exports = m;
                    }
                  ),
                  /***/
                  614: (
                    /***/
                    function(p, u, t) {
                      var r = t(3236), i = r([`precision highp float;

precision highp float;
#define GLSLIFY 1

vec3 getOrthogonalVector(vec3 v) {
  // Return up-vector for only-z vector.
  // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0).
  // From the above if-statement we have ||a|| > 0  U  ||b|| > 0.
  // Assign z = 0, x = -b, y = a:
  // a*-b + b*a + c*0 = -ba + ba + 0 = 0
  if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) {
    return normalize(vec3(-v.y, v.x, 0.0));
  } else {
    return normalize(vec3(0.0, v.z, -v.y));
  }
}

// Calculate the cone vertex and normal at the given index.
//
// The returned vertex is for a cone with its top at origin and height of 1.0,
// pointing in the direction of the vector attribute.
//
// Each cone is made up of a top vertex, a center base vertex and base perimeter vertices.
// These vertices are used to make up the triangles of the cone by the following:
//   segment + 0 top vertex
//   segment + 1 perimeter vertex a+1
//   segment + 2 perimeter vertex a
//   segment + 3 center base vertex
//   segment + 4 perimeter vertex a
//   segment + 5 perimeter vertex a+1
// Where segment is the number of the radial segment * 6 and a is the angle at that radial segment.
// To go from index to segment, floor(index / 6)
// To go from segment to angle, 2*pi * (segment/segmentCount)
// To go from index to segment index, index - (segment*6)
//
vec3 getConePosition(vec3 d, float rawIndex, float coneOffset, out vec3 normal) {

  const float segmentCount = 8.0;

  float index = rawIndex - floor(rawIndex /
    (segmentCount * 6.0)) *
    (segmentCount * 6.0);

  float segment = floor(0.001 + index/6.0);
  float segmentIndex = index - (segment*6.0);

  normal = -normalize(d);

  if (segmentIndex > 2.99 && segmentIndex < 3.01) {
    return mix(vec3(0.0), -d, coneOffset);
  }

  float nextAngle = (
    (segmentIndex > 0.99 &&  segmentIndex < 1.01) ||
    (segmentIndex > 4.99 &&  segmentIndex < 5.01)
  ) ? 1.0 : 0.0;
  float angle = 2.0 * 3.14159 * ((segment + nextAngle) / segmentCount);

  vec3 v1 = mix(d, vec3(0.0), coneOffset);
  vec3 v2 = v1 - d;

  vec3 u = getOrthogonalVector(d);
  vec3 v = normalize(cross(u, d));

  vec3 x = u * cos(angle) * length(d)*0.25;
  vec3 y = v * sin(angle) * length(d)*0.25;
  vec3 v3 = v2 + x + y;
  if (segmentIndex < 3.0) {
    vec3 tx = u * sin(angle);
    vec3 ty = v * -cos(angle);
    vec3 tangent = tx + ty;
    normal = normalize(cross(v3 - v1, tangent));
  }

  if (segmentIndex == 0.0) {
    return mix(d, vec3(0.0), coneOffset);
  }
  return v3;
}

attribute vec3 vector;
attribute vec4 color, position;
attribute vec2 uv;

uniform float vectorScale, coneScale, coneOffset;
uniform mat4 model, view, projection, inverseModel;
uniform vec3 eyePosition, lightPosition;

varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position;
varying vec4 f_color;
varying vec2 f_uv;

void main() {
  // Scale the vector magnitude to stay constant with
  // model & view changes.
  vec3 normal;
  vec3 XYZ = getConePosition(mat3(model) * ((vectorScale * coneScale) * vector), position.w, coneOffset, normal);
  vec4 conePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0);

  //Lighting geometry parameters
  vec4 cameraCoordinate = view * conePosition;
  cameraCoordinate.xyz /= cameraCoordinate.w;
  f_lightDirection = lightPosition - cameraCoordinate.xyz;
  f_eyeDirection   = eyePosition - cameraCoordinate.xyz;
  f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz);

  // vec4 m_position  = model * vec4(conePosition, 1.0);
  vec4 t_position  = view * conePosition;
  gl_Position      = projection * t_position;

  f_color          = color;
  f_data           = conePosition.xyz;
  f_position       = position.xyz;
  f_uv             = uv;
}
`]), a = r([`#extension GL_OES_standard_derivatives : enable

precision highp float;
#define GLSLIFY 1

float beckmannDistribution(float x, float roughness) {
  float NdotH = max(x, 0.0001);
  float cos2Alpha = NdotH * NdotH;
  float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha;
  float roughness2 = roughness * roughness;
  float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha;
  return exp(tan2Alpha / roughness2) / denom;
}

float cookTorranceSpecular(
  vec3 lightDirection,
  vec3 viewDirection,
  vec3 surfaceNormal,
  float roughness,
  float fresnel) {

  float VdotN = max(dot(viewDirection, surfaceNormal), 0.0);
  float LdotN = max(dot(lightDirection, surfaceNormal), 0.0);

  //Half angle vector
  vec3 H = normalize(lightDirection + viewDirection);

  //Geometric term
  float NdotH = max(dot(surfaceNormal, H), 0.0);
  float VdotH = max(dot(viewDirection, H), 0.000001);
  float LdotH = max(dot(lightDirection, H), 0.000001);
  float G1 = (2.0 * NdotH * VdotN) / VdotH;
  float G2 = (2.0 * NdotH * LdotN) / LdotH;
  float G = min(1.0, min(G1, G2));
  
  //Distribution term
  float D = beckmannDistribution(NdotH, roughness);

  //Fresnel term
  float F = pow(1.0 - VdotN, fresnel);

  //Multiply terms and done
  return  G * F * D / max(3.14159265 * VdotN, 0.000001);
}

bool outOfRange(float a, float b, float p) {
  return ((p > max(a, b)) || 
          (p < min(a, b)));
}

bool outOfRange(vec2 a, vec2 b, vec2 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y));
}

bool outOfRange(vec3 a, vec3 b, vec3 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y) ||
          outOfRange(a.z, b.z, p.z));
}

bool outOfRange(vec4 a, vec4 b, vec4 p) {
  return outOfRange(a.xyz, b.xyz, p.xyz);
}

uniform vec3 clipBounds[2];
uniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity;
uniform sampler2D texture;

varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position;
varying vec4 f_color;
varying vec2 f_uv;

void main() {
  if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;
  vec3 N = normalize(f_normal);
  vec3 L = normalize(f_lightDirection);
  vec3 V = normalize(f_eyeDirection);

  if(gl_FrontFacing) {
    N = -N;
  }

  float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel)));
  float diffuse  = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0);

  vec4 surfaceColor = f_color * texture2D(texture, f_uv);
  vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular,  1.0);

  gl_FragColor = litColor * opacity;
}
`]), l = r([`precision highp float;

precision highp float;
#define GLSLIFY 1

vec3 getOrthogonalVector(vec3 v) {
  // Return up-vector for only-z vector.
  // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0).
  // From the above if-statement we have ||a|| > 0  U  ||b|| > 0.
  // Assign z = 0, x = -b, y = a:
  // a*-b + b*a + c*0 = -ba + ba + 0 = 0
  if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) {
    return normalize(vec3(-v.y, v.x, 0.0));
  } else {
    return normalize(vec3(0.0, v.z, -v.y));
  }
}

// Calculate the cone vertex and normal at the given index.
//
// The returned vertex is for a cone with its top at origin and height of 1.0,
// pointing in the direction of the vector attribute.
//
// Each cone is made up of a top vertex, a center base vertex and base perimeter vertices.
// These vertices are used to make up the triangles of the cone by the following:
//   segment + 0 top vertex
//   segment + 1 perimeter vertex a+1
//   segment + 2 perimeter vertex a
//   segment + 3 center base vertex
//   segment + 4 perimeter vertex a
//   segment + 5 perimeter vertex a+1
// Where segment is the number of the radial segment * 6 and a is the angle at that radial segment.
// To go from index to segment, floor(index / 6)
// To go from segment to angle, 2*pi * (segment/segmentCount)
// To go from index to segment index, index - (segment*6)
//
vec3 getConePosition(vec3 d, float rawIndex, float coneOffset, out vec3 normal) {

  const float segmentCount = 8.0;

  float index = rawIndex - floor(rawIndex /
    (segmentCount * 6.0)) *
    (segmentCount * 6.0);

  float segment = floor(0.001 + index/6.0);
  float segmentIndex = index - (segment*6.0);

  normal = -normalize(d);

  if (segmentIndex > 2.99 && segmentIndex < 3.01) {
    return mix(vec3(0.0), -d, coneOffset);
  }

  float nextAngle = (
    (segmentIndex > 0.99 &&  segmentIndex < 1.01) ||
    (segmentIndex > 4.99 &&  segmentIndex < 5.01)
  ) ? 1.0 : 0.0;
  float angle = 2.0 * 3.14159 * ((segment + nextAngle) / segmentCount);

  vec3 v1 = mix(d, vec3(0.0), coneOffset);
  vec3 v2 = v1 - d;

  vec3 u = getOrthogonalVector(d);
  vec3 v = normalize(cross(u, d));

  vec3 x = u * cos(angle) * length(d)*0.25;
  vec3 y = v * sin(angle) * length(d)*0.25;
  vec3 v3 = v2 + x + y;
  if (segmentIndex < 3.0) {
    vec3 tx = u * sin(angle);
    vec3 ty = v * -cos(angle);
    vec3 tangent = tx + ty;
    normal = normalize(cross(v3 - v1, tangent));
  }

  if (segmentIndex == 0.0) {
    return mix(d, vec3(0.0), coneOffset);
  }
  return v3;
}

attribute vec4 vector;
attribute vec4 position;
attribute vec4 id;

uniform mat4 model, view, projection;
uniform float vectorScale, coneScale, coneOffset;

varying vec3 f_position;
varying vec4 f_id;

void main() {
  vec3 normal;
  vec3 XYZ = getConePosition(mat3(model) * ((vectorScale * coneScale) * vector.xyz), position.w, coneOffset, normal);
  vec4 conePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0);
  gl_Position = projection * (view * conePosition);
  f_id        = id;
  f_position  = position.xyz;
}
`]), o = r([`precision highp float;
#define GLSLIFY 1

bool outOfRange(float a, float b, float p) {
  return ((p > max(a, b)) || 
          (p < min(a, b)));
}

bool outOfRange(vec2 a, vec2 b, vec2 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y));
}

bool outOfRange(vec3 a, vec3 b, vec3 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y) ||
          outOfRange(a.z, b.z, p.z));
}

bool outOfRange(vec4 a, vec4 b, vec4 p) {
  return outOfRange(a.xyz, b.xyz, p.xyz);
}

uniform vec3  clipBounds[2];
uniform float pickId;

varying vec3 f_position;
varying vec4 f_id;

void main() {
  if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;

  gl_FragColor = vec4(pickId, f_id.xyz);
}`]);
                      u.meshShader = { vertex: i, fragment: a, attributes: [{ name: "position", type: "vec4" }, { name: "color", type: "vec4" }, { name: "uv", type: "vec2" }, { name: "vector", type: "vec3" }] }, u.pickShader = { vertex: l, fragment: o, attributes: [{ name: "position", type: "vec4" }, { name: "id", type: "vec4" }, { name: "vector", type: "vec3" }] };
                    }
                  ),
                  /***/
                  737: (
                    /***/
                    function(p) {
                      p.exports = { 0: "NONE", 1: "ONE", 2: "LINE_LOOP", 3: "LINE_STRIP", 4: "TRIANGLES", 5: "TRIANGLE_STRIP", 6: "TRIANGLE_FAN", 256: "DEPTH_BUFFER_BIT", 512: "NEVER", 513: "LESS", 514: "EQUAL", 515: "LEQUAL", 516: "GREATER", 517: "NOTEQUAL", 518: "GEQUAL", 519: "ALWAYS", 768: "SRC_COLOR", 769: "ONE_MINUS_SRC_COLOR", 770: "SRC_ALPHA", 771: "ONE_MINUS_SRC_ALPHA", 772: "DST_ALPHA", 773: "ONE_MINUS_DST_ALPHA", 774: "DST_COLOR", 775: "ONE_MINUS_DST_COLOR", 776: "SRC_ALPHA_SATURATE", 1024: "STENCIL_BUFFER_BIT", 1028: "FRONT", 1029: "BACK", 1032: "FRONT_AND_BACK", 1280: "INVALID_ENUM", 1281: "INVALID_VALUE", 1282: "INVALID_OPERATION", 1285: "OUT_OF_MEMORY", 1286: "INVALID_FRAMEBUFFER_OPERATION", 2304: "CW", 2305: "CCW", 2849: "LINE_WIDTH", 2884: "CULL_FACE", 2885: "CULL_FACE_MODE", 2886: "FRONT_FACE", 2928: "DEPTH_RANGE", 2929: "DEPTH_TEST", 2930: "DEPTH_WRITEMASK", 2931: "DEPTH_CLEAR_VALUE", 2932: "DEPTH_FUNC", 2960: "STENCIL_TEST", 2961: "STENCIL_CLEAR_VALUE", 2962: "STENCIL_FUNC", 2963: "STENCIL_VALUE_MASK", 2964: "STENCIL_FAIL", 2965: "STENCIL_PASS_DEPTH_FAIL", 2966: "STENCIL_PASS_DEPTH_PASS", 2967: "STENCIL_REF", 2968: "STENCIL_WRITEMASK", 2978: "VIEWPORT", 3024: "DITHER", 3042: "BLEND", 3088: "SCISSOR_BOX", 3089: "SCISSOR_TEST", 3106: "COLOR_CLEAR_VALUE", 3107: "COLOR_WRITEMASK", 3317: "UNPACK_ALIGNMENT", 3333: "PACK_ALIGNMENT", 3379: "MAX_TEXTURE_SIZE", 3386: "MAX_VIEWPORT_DIMS", 3408: "SUBPIXEL_BITS", 3410: "RED_BITS", 3411: "GREEN_BITS", 3412: "BLUE_BITS", 3413: "ALPHA_BITS", 3414: "DEPTH_BITS", 3415: "STENCIL_BITS", 3553: "TEXTURE_2D", 4352: "DONT_CARE", 4353: "FASTEST", 4354: "NICEST", 5120: "BYTE", 5121: "UNSIGNED_BYTE", 5122: "SHORT", 5123: "UNSIGNED_SHORT", 5124: "INT", 5125: "UNSIGNED_INT", 5126: "FLOAT", 5386: "INVERT", 5890: "TEXTURE", 6401: "STENCIL_INDEX", 6402: "DEPTH_COMPONENT", 6406: "ALPHA", 6407: "RGB", 6408: "RGBA", 6409: "LUMINANCE", 6410: "LUMINANCE_ALPHA", 7680: "KEEP", 7681: "REPLACE", 7682: "INCR", 7683: "DECR", 7936: "VENDOR", 7937: "RENDERER", 7938: "VERSION", 9728: "NEAREST", 9729: "LINEAR", 9984: "NEAREST_MIPMAP_NEAREST", 9985: "LINEAR_MIPMAP_NEAREST", 9986: "NEAREST_MIPMAP_LINEAR", 9987: "LINEAR_MIPMAP_LINEAR", 10240: "TEXTURE_MAG_FILTER", 10241: "TEXTURE_MIN_FILTER", 10242: "TEXTURE_WRAP_S", 10243: "TEXTURE_WRAP_T", 10497: "REPEAT", 10752: "POLYGON_OFFSET_UNITS", 16384: "COLOR_BUFFER_BIT", 32769: "CONSTANT_COLOR", 32770: "ONE_MINUS_CONSTANT_COLOR", 32771: "CONSTANT_ALPHA", 32772: "ONE_MINUS_CONSTANT_ALPHA", 32773: "BLEND_COLOR", 32774: "FUNC_ADD", 32777: "BLEND_EQUATION_RGB", 32778: "FUNC_SUBTRACT", 32779: "FUNC_REVERSE_SUBTRACT", 32819: "UNSIGNED_SHORT_4_4_4_4", 32820: "UNSIGNED_SHORT_5_5_5_1", 32823: "POLYGON_OFFSET_FILL", 32824: "POLYGON_OFFSET_FACTOR", 32854: "RGBA4", 32855: "RGB5_A1", 32873: "TEXTURE_BINDING_2D", 32926: "SAMPLE_ALPHA_TO_COVERAGE", 32928: "SAMPLE_COVERAGE", 32936: "SAMPLE_BUFFERS", 32937: "SAMPLES", 32938: "SAMPLE_COVERAGE_VALUE", 32939: "SAMPLE_COVERAGE_INVERT", 32968: "BLEND_DST_RGB", 32969: "BLEND_SRC_RGB", 32970: "BLEND_DST_ALPHA", 32971: "BLEND_SRC_ALPHA", 33071: "CLAMP_TO_EDGE", 33170: "GENERATE_MIPMAP_HINT", 33189: "DEPTH_COMPONENT16", 33306: "DEPTH_STENCIL_ATTACHMENT", 33635: "UNSIGNED_SHORT_5_6_5", 33648: "MIRRORED_REPEAT", 33901: "ALIASED_POINT_SIZE_RANGE", 33902: "ALIASED_LINE_WIDTH_RANGE", 33984: "TEXTURE0", 33985: "TEXTURE1", 33986: "TEXTURE2", 33987: "TEXTURE3", 33988: "TEXTURE4", 33989: "TEXTURE5", 33990: "TEXTURE6", 33991: "TEXTURE7", 33992: "TEXTURE8", 33993: "TEXTURE9", 33994: "TEXTURE10", 33995: "TEXTURE11", 33996: "TEXTURE12", 33997: "TEXTURE13", 33998: "TEXTURE14", 33999: "TEXTURE15", 34e3: "TEXTURE16", 34001: "TEXTURE17", 34002: "TEXTURE18", 34003: "TEXTURE19", 34004: "TEXTURE20", 34005: "TEXTURE21", 34006: "TEXTURE22", 34007: "TEXTURE23", 34008: "TEXTURE24", 34009: "TEXTURE25", 34010: "TEXTURE26", 34011: "TEXTURE27", 34012: "TEXTURE28", 34013: "TEXTURE29", 34014: "TEXTURE30", 34015: "TEXTURE31", 34016: "ACTIVE_TEXTURE", 34024: "MAX_RENDERBUFFER_SIZE", 34041: "DEPTH_STENCIL", 34055: "INCR_WRAP", 34056: "DECR_WRAP", 34067: "TEXTURE_CUBE_MAP", 34068: "TEXTURE_BINDING_CUBE_MAP", 34069: "TEXTURE_CUBE_MAP_POSITIVE_X", 34070: "TEXTURE_CUBE_MAP_NEGATIVE_X", 34071: "TEXTURE_CUBE_MAP_POSITIVE_Y", 34072: "TEXTURE_CUBE_MAP_NEGATIVE_Y", 34073: "TEXTURE_CUBE_MAP_POSITIVE_Z", 34074: "TEXTURE_CUBE_MAP_NEGATIVE_Z", 34076: "MAX_CUBE_MAP_TEXTURE_SIZE", 34338: "VERTEX_ATTRIB_ARRAY_ENABLED", 34339: "VERTEX_ATTRIB_ARRAY_SIZE", 34340: "VERTEX_ATTRIB_ARRAY_STRIDE", 34341: "VERTEX_ATTRIB_ARRAY_TYPE", 34342: "CURRENT_VERTEX_ATTRIB", 34373: "VERTEX_ATTRIB_ARRAY_POINTER", 34466: "NUM_COMPRESSED_TEXTURE_FORMATS", 34467: "COMPRESSED_TEXTURE_FORMATS", 34660: "BUFFER_SIZE", 34661: "BUFFER_USAGE", 34816: "STENCIL_BACK_FUNC", 34817: "STENCIL_BACK_FAIL", 34818: "STENCIL_BACK_PASS_DEPTH_FAIL", 34819: "STENCIL_BACK_PASS_DEPTH_PASS", 34877: "BLEND_EQUATION_ALPHA", 34921: "MAX_VERTEX_ATTRIBS", 34922: "VERTEX_ATTRIB_ARRAY_NORMALIZED", 34930: "MAX_TEXTURE_IMAGE_UNITS", 34962: "ARRAY_BUFFER", 34963: "ELEMENT_ARRAY_BUFFER", 34964: "ARRAY_BUFFER_BINDING", 34965: "ELEMENT_ARRAY_BUFFER_BINDING", 34975: "VERTEX_ATTRIB_ARRAY_BUFFER_BINDING", 35040: "STREAM_DRAW", 35044: "STATIC_DRAW", 35048: "DYNAMIC_DRAW", 35632: "FRAGMENT_SHADER", 35633: "VERTEX_SHADER", 35660: "MAX_VERTEX_TEXTURE_IMAGE_UNITS", 35661: "MAX_COMBINED_TEXTURE_IMAGE_UNITS", 35663: "SHADER_TYPE", 35664: "FLOAT_VEC2", 35665: "FLOAT_VEC3", 35666: "FLOAT_VEC4", 35667: "INT_VEC2", 35668: "INT_VEC3", 35669: "INT_VEC4", 35670: "BOOL", 35671: "BOOL_VEC2", 35672: "BOOL_VEC3", 35673: "BOOL_VEC4", 35674: "FLOAT_MAT2", 35675: "FLOAT_MAT3", 35676: "FLOAT_MAT4", 35678: "SAMPLER_2D", 35680: "SAMPLER_CUBE", 35712: "DELETE_STATUS", 35713: "COMPILE_STATUS", 35714: "LINK_STATUS", 35715: "VALIDATE_STATUS", 35716: "INFO_LOG_LENGTH", 35717: "ATTACHED_SHADERS", 35718: "ACTIVE_UNIFORMS", 35719: "ACTIVE_UNIFORM_MAX_LENGTH", 35720: "SHADER_SOURCE_LENGTH", 35721: "ACTIVE_ATTRIBUTES", 35722: "ACTIVE_ATTRIBUTE_MAX_LENGTH", 35724: "SHADING_LANGUAGE_VERSION", 35725: "CURRENT_PROGRAM", 36003: "STENCIL_BACK_REF", 36004: "STENCIL_BACK_VALUE_MASK", 36005: "STENCIL_BACK_WRITEMASK", 36006: "FRAMEBUFFER_BINDING", 36007: "RENDERBUFFER_BINDING", 36048: "FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE", 36049: "FRAMEBUFFER_ATTACHMENT_OBJECT_NAME", 36050: "FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL", 36051: "FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE", 36053: "FRAMEBUFFER_COMPLETE", 36054: "FRAMEBUFFER_INCOMPLETE_ATTACHMENT", 36055: "FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT", 36057: "FRAMEBUFFER_INCOMPLETE_DIMENSIONS", 36061: "FRAMEBUFFER_UNSUPPORTED", 36064: "COLOR_ATTACHMENT0", 36096: "DEPTH_ATTACHMENT", 36128: "STENCIL_ATTACHMENT", 36160: "FRAMEBUFFER", 36161: "RENDERBUFFER", 36162: "RENDERBUFFER_WIDTH", 36163: "RENDERBUFFER_HEIGHT", 36164: "RENDERBUFFER_INTERNAL_FORMAT", 36168: "STENCIL_INDEX8", 36176: "RENDERBUFFER_RED_SIZE", 36177: "RENDERBUFFER_GREEN_SIZE", 36178: "RENDERBUFFER_BLUE_SIZE", 36179: "RENDERBUFFER_ALPHA_SIZE", 36180: "RENDERBUFFER_DEPTH_SIZE", 36181: "RENDERBUFFER_STENCIL_SIZE", 36194: "RGB565", 36336: "LOW_FLOAT", 36337: "MEDIUM_FLOAT", 36338: "HIGH_FLOAT", 36339: "LOW_INT", 36340: "MEDIUM_INT", 36341: "HIGH_INT", 36346: "SHADER_COMPILER", 36347: "MAX_VERTEX_UNIFORM_VECTORS", 36348: "MAX_VARYING_VECTORS", 36349: "MAX_FRAGMENT_UNIFORM_VECTORS", 37440: "UNPACK_FLIP_Y_WEBGL", 37441: "UNPACK_PREMULTIPLY_ALPHA_WEBGL", 37442: "CONTEXT_LOST_WEBGL", 37443: "UNPACK_COLORSPACE_CONVERSION_WEBGL", 37444: "BROWSER_DEFAULT_WEBGL" };
                    }
                  ),
                  /***/
                  5171: (
                    /***/
                    function(p, u, t) {
                      var r = t(737);
                      p.exports = function(a) {
                        return r[a];
                      };
                    }
                  ),
                  /***/
                  9165: (
                    /***/
                    function(p, u, t) {
                      p.exports = v;
                      var r = t(2762), i = t(8116), a = t(3436), l = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
                      function o(f, _, S, M) {
                        this.gl = f, this.shader = M, this.buffer = _, this.vao = S, this.pixelRatio = 1, this.bounds = [[1 / 0, 1 / 0, 1 / 0], [-1 / 0, -1 / 0, -1 / 0]], this.clipBounds = [[-1 / 0, -1 / 0, -1 / 0], [1 / 0, 1 / 0, 1 / 0]], this.lineWidth = [1, 1, 1], this.capSize = [10, 10, 10], this.lineCount = [0, 0, 0], this.lineOffset = [0, 0, 0], this.opacity = 1, this.hasAlpha = !1;
                      }
                      var y = o.prototype;
                      y.isOpaque = function() {
                        return !this.hasAlpha;
                      }, y.isTransparent = function() {
                        return this.hasAlpha;
                      }, y.drawTransparent = y.draw = function(f) {
                        var _ = this.gl, S = this.shader.uniforms;
                        this.shader.bind();
                        var M = S.view = f.view || l, C = S.projection = f.projection || l;
                        S.model = f.model || l, S.clipBounds = this.clipBounds, S.opacity = this.opacity;
                        var m = M[12], L = M[13], d = M[14], h = M[15], E = f._ortho || !1, w = E ? 2 : 1, z = w * this.pixelRatio * (C[3] * m + C[7] * L + C[11] * d + C[15] * h) / _.drawingBufferHeight;
                        this.vao.bind();
                        for (var O = 0; O < 3; ++O)
                          _.lineWidth(this.lineWidth[O] * this.pixelRatio), S.capSize = this.capSize[O] * z, this.lineCount[O] && _.drawArrays(_.LINES, this.lineOffset[O], this.lineCount[O]);
                        this.vao.unbind();
                      };
                      function g(f, _) {
                        for (var S = 0; S < 3; ++S)
                          f[0][S] = Math.min(f[0][S], _[S]), f[1][S] = Math.max(f[1][S], _[S]);
                      }
                      var x = function() {
                        for (var f = new Array(3), _ = 0; _ < 3; ++_) {
                          for (var S = [], M = 1; M <= 2; ++M)
                            for (var C = -1; C <= 1; C += 2) {
                              var m = (M + _) % 3, L = [0, 0, 0];
                              L[m] = C, S.push(L);
                            }
                          f[_] = S;
                        }
                        return f;
                      }();
                      function c(f, _, S, M) {
                        for (var C = x[M], m = 0; m < C.length; ++m) {
                          var L = C[m];
                          f.push(_[0], _[1], _[2], S[0], S[1], S[2], S[3], L[0], L[1], L[2]);
                        }
                        return C.length;
                      }
                      y.update = function(f) {
                        f = f || {}, "lineWidth" in f && (this.lineWidth = f.lineWidth, Array.isArray(this.lineWidth) || (this.lineWidth = [this.lineWidth, this.lineWidth, this.lineWidth])), "capSize" in f && (this.capSize = f.capSize, Array.isArray(this.capSize) || (this.capSize = [this.capSize, this.capSize, this.capSize])), this.hasAlpha = !1, "opacity" in f && (this.opacity = +f.opacity, this.opacity < 1 && (this.hasAlpha = !0));
                        var _ = f.color || [[0, 0, 0], [0, 0, 0], [0, 0, 0]], S = f.position, M = f.error;
                        if (Array.isArray(_[0]) || (_ = [_, _, _]), S && M) {
                          var C = [], m = S.length, L = 0;
                          this.bounds = [[1 / 0, 1 / 0, 1 / 0], [-1 / 0, -1 / 0, -1 / 0]], this.lineCount = [0, 0, 0];
                          for (var d = 0; d < 3; ++d) {
                            this.lineOffset[d] = L;
                            t: for (var h = 0; h < m; ++h) {
                              for (var E = S[h], w = 0; w < 3; ++w)
                                if (isNaN(E[w]) || !isFinite(E[w]))
                                  continue t;
                              var z = M[h], O = _[d];
                              if (Array.isArray(O[0]) && (O = _[h]), O.length === 3 ? O = [O[0], O[1], O[2], 1] : O.length === 4 && (O = [O[0], O[1], O[2], O[3]], !this.hasAlpha && O[3] < 1 && (this.hasAlpha = !0)), !(isNaN(z[0][d]) || isNaN(z[1][d]))) {
                                if (z[0][d] < 0) {
                                  var B = E.slice();
                                  B[d] += z[0][d], C.push(E[0], E[1], E[2], O[0], O[1], O[2], O[3], 0, 0, 0, B[0], B[1], B[2], O[0], O[1], O[2], O[3], 0, 0, 0), g(this.bounds, B), L += 2 + c(C, B, O, d);
                                }
                                if (z[1][d] > 0) {
                                  var B = E.slice();
                                  B[d] += z[1][d], C.push(E[0], E[1], E[2], O[0], O[1], O[2], O[3], 0, 0, 0, B[0], B[1], B[2], O[0], O[1], O[2], O[3], 0, 0, 0), g(this.bounds, B), L += 2 + c(C, B, O, d);
                                }
                              }
                            }
                            this.lineCount[d] = L - this.lineOffset[d];
                          }
                          this.buffer.update(C);
                        }
                      }, y.dispose = function() {
                        this.shader.dispose(), this.buffer.dispose(), this.vao.dispose();
                      };
                      function v(f) {
                        var _ = f.gl, S = r(_), M = i(_, [{ buffer: S, type: _.FLOAT, size: 3, offset: 0, stride: 40 }, { buffer: S, type: _.FLOAT, size: 4, offset: 12, stride: 40 }, { buffer: S, type: _.FLOAT, size: 3, offset: 28, stride: 40 }]), C = a(_);
                        C.attributes.position.location = 0, C.attributes.color.location = 1, C.attributes.offset.location = 2;
                        var m = new o(_, S, M, C);
                        return m.update(f), m;
                      }
                    }
                  ),
                  /***/
                  3436: (
                    /***/
                    function(p, u, t) {
                      var r = t(3236), i = t(9405), a = r([`precision highp float;
#define GLSLIFY 1

attribute vec3 position, offset;
attribute vec4 color;
uniform mat4 model, view, projection;
uniform float capSize;
varying vec4 fragColor;
varying vec3 fragPosition;

void main() {
  vec4 worldPosition  = model * vec4(position, 1.0);
  worldPosition       = (worldPosition / worldPosition.w) + vec4(capSize * offset, 0.0);
  gl_Position         = projection * (view * worldPosition);
  fragColor           = color;
  fragPosition        = position;
}`]), l = r([`precision highp float;
#define GLSLIFY 1

bool outOfRange(float a, float b, float p) {
  return ((p > max(a, b)) || 
          (p < min(a, b)));
}

bool outOfRange(vec2 a, vec2 b, vec2 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y));
}

bool outOfRange(vec3 a, vec3 b, vec3 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y) ||
          outOfRange(a.z, b.z, p.z));
}

bool outOfRange(vec4 a, vec4 b, vec4 p) {
  return outOfRange(a.xyz, b.xyz, p.xyz);
}

uniform vec3 clipBounds[2];
uniform float opacity;
varying vec3 fragPosition;
varying vec4 fragColor;

void main() {
  if (
    outOfRange(clipBounds[0], clipBounds[1], fragPosition) ||
    fragColor.a * opacity == 0.
  ) discard;

  gl_FragColor = opacity * fragColor;
}`]);
                      p.exports = function(o) {
                        return i(o, a, l, null, [{ name: "position", type: "vec3" }, { name: "color", type: "vec4" }, { name: "offset", type: "vec3" }]);
                      };
                    }
                  ),
                  /***/
                  2260: (
                    /***/
                    function(p, u, t) {
                      var r = t(7766);
                      p.exports = L;
                      var i = null, a, l, o, y;
                      function g(d) {
                        var h = d.getParameter(d.FRAMEBUFFER_BINDING), E = d.getParameter(d.RENDERBUFFER_BINDING), w = d.getParameter(d.TEXTURE_BINDING_2D);
                        return [h, E, w];
                      }
                      function x(d, h) {
                        d.bindFramebuffer(d.FRAMEBUFFER, h[0]), d.bindRenderbuffer(d.RENDERBUFFER, h[1]), d.bindTexture(d.TEXTURE_2D, h[2]);
                      }
                      function c(d, h) {
                        var E = d.getParameter(h.MAX_COLOR_ATTACHMENTS_WEBGL);
                        i = new Array(E + 1);
                        for (var w = 0; w <= E; ++w) {
                          for (var z = new Array(E), O = 0; O < w; ++O)
                            z[O] = d.COLOR_ATTACHMENT0 + O;
                          for (var O = w; O < E; ++O)
                            z[O] = d.NONE;
                          i[w] = z;
                        }
                      }
                      function v(d) {
                        switch (d) {
                          case a:
                            throw new Error("gl-fbo: Framebuffer unsupported");
                          case l:
                            throw new Error("gl-fbo: Framebuffer incomplete attachment");
                          case o:
                            throw new Error("gl-fbo: Framebuffer incomplete dimensions");
                          case y:
                            throw new Error("gl-fbo: Framebuffer incomplete missing attachment");
                          default:
                            throw new Error("gl-fbo: Framebuffer failed for unspecified reason");
                        }
                      }
                      function f(d, h, E, w, z, O) {
                        if (!w)
                          return null;
                        var B = r(d, h, E, z, w);
                        return B.magFilter = d.NEAREST, B.minFilter = d.NEAREST, B.mipSamples = 1, B.bind(), d.framebufferTexture2D(d.FRAMEBUFFER, O, d.TEXTURE_2D, B.handle, 0), B;
                      }
                      function _(d, h, E, w, z) {
                        var O = d.createRenderbuffer();
                        return d.bindRenderbuffer(d.RENDERBUFFER, O), d.renderbufferStorage(d.RENDERBUFFER, w, h, E), d.framebufferRenderbuffer(d.FRAMEBUFFER, z, d.RENDERBUFFER, O), O;
                      }
                      function S(d) {
                        var h = g(d.gl), E = d.gl, w = d.handle = E.createFramebuffer(), z = d._shape[0], O = d._shape[1], B = d.color.length, V = d._ext, U = d._useStencil, H = d._useDepth, F = d._colorType;
                        E.bindFramebuffer(E.FRAMEBUFFER, w);
                        for (var G = 0; G < B; ++G)
                          d.color[G] = f(E, z, O, F, E.RGBA, E.COLOR_ATTACHMENT0 + G);
                        B === 0 ? (d._color_rb = _(E, z, O, E.RGBA4, E.COLOR_ATTACHMENT0), V && V.drawBuffersWEBGL(i[0])) : B > 1 && V.drawBuffersWEBGL(i[B]);
                        var q = E.getExtension("WEBGL_depth_texture");
                        q ? U ? d.depth = f(E, z, O, q.UNSIGNED_INT_24_8_WEBGL, E.DEPTH_STENCIL, E.DEPTH_STENCIL_ATTACHMENT) : H && (d.depth = f(E, z, O, E.UNSIGNED_SHORT, E.DEPTH_COMPONENT, E.DEPTH_ATTACHMENT)) : H && U ? d._depth_rb = _(E, z, O, E.DEPTH_STENCIL, E.DEPTH_STENCIL_ATTACHMENT) : H ? d._depth_rb = _(E, z, O, E.DEPTH_COMPONENT16, E.DEPTH_ATTACHMENT) : U && (d._depth_rb = _(E, z, O, E.STENCIL_INDEX, E.STENCIL_ATTACHMENT));
                        var rt = E.checkFramebufferStatus(E.FRAMEBUFFER);
                        if (rt !== E.FRAMEBUFFER_COMPLETE) {
                          d._destroyed = !0, E.bindFramebuffer(E.FRAMEBUFFER, null), E.deleteFramebuffer(d.handle), d.handle = null, d.depth && (d.depth.dispose(), d.depth = null), d._depth_rb && (E.deleteRenderbuffer(d._depth_rb), d._depth_rb = null);
                          for (var G = 0; G < d.color.length; ++G)
                            d.color[G].dispose(), d.color[G] = null;
                          d._color_rb && (E.deleteRenderbuffer(d._color_rb), d._color_rb = null), x(E, h), v(rt);
                        }
                        x(E, h);
                      }
                      function M(d, h, E, w, z, O, B, V) {
                        this.gl = d, this._shape = [h | 0, E | 0], this._destroyed = !1, this._ext = V, this.color = new Array(z);
                        for (var U = 0; U < z; ++U)
                          this.color[U] = null;
                        this._color_rb = null, this.depth = null, this._depth_rb = null, this._colorType = w, this._useDepth = O, this._useStencil = B;
                        var H = this, F = [h | 0, E | 0];
                        Object.defineProperties(F, { 0: { get: function() {
                          return H._shape[0];
                        }, set: function(G) {
                          return H.width = G;
                        } }, 1: { get: function() {
                          return H._shape[1];
                        }, set: function(G) {
                          return H.height = G;
                        } } }), this._shapeVector = F, S(this);
                      }
                      var C = M.prototype;
                      function m(d, h, E) {
                        if (d._destroyed)
                          throw new Error("gl-fbo: Can't resize destroyed FBO");
                        if (!(d._shape[0] === h && d._shape[1] === E)) {
                          var w = d.gl, z = w.getParameter(w.MAX_RENDERBUFFER_SIZE);
                          if (h < 0 || h > z || E < 0 || E > z)
                            throw new Error("gl-fbo: Can't resize FBO, invalid dimensions");
                          d._shape[0] = h, d._shape[1] = E;
                          for (var O = g(w), B = 0; B < d.color.length; ++B)
                            d.color[B].shape = d._shape;
                          d._color_rb && (w.bindRenderbuffer(w.RENDERBUFFER, d._color_rb), w.renderbufferStorage(w.RENDERBUFFER, w.RGBA4, d._shape[0], d._shape[1])), d.depth && (d.depth.shape = d._shape), d._depth_rb && (w.bindRenderbuffer(w.RENDERBUFFER, d._depth_rb), d._useDepth && d._useStencil ? w.renderbufferStorage(w.RENDERBUFFER, w.DEPTH_STENCIL, d._shape[0], d._shape[1]) : d._useDepth ? w.renderbufferStorage(w.RENDERBUFFER, w.DEPTH_COMPONENT16, d._shape[0], d._shape[1]) : d._useStencil && w.renderbufferStorage(w.RENDERBUFFER, w.STENCIL_INDEX, d._shape[0], d._shape[1])), w.bindFramebuffer(w.FRAMEBUFFER, d.handle);
                          var V = w.checkFramebufferStatus(w.FRAMEBUFFER);
                          V !== w.FRAMEBUFFER_COMPLETE && (d.dispose(), x(w, O), v(V)), x(w, O);
                        }
                      }
                      Object.defineProperties(C, { shape: { get: function() {
                        return this._destroyed ? [0, 0] : this._shapeVector;
                      }, set: function(d) {
                        if (Array.isArray(d) || (d = [d | 0, d | 0]), d.length !== 2)
                          throw new Error("gl-fbo: Shape vector must be length 2");
                        var h = d[0] | 0, E = d[1] | 0;
                        return m(this, h, E), [h, E];
                      }, enumerable: !1 }, width: { get: function() {
                        return this._destroyed ? 0 : this._shape[0];
                      }, set: function(d) {
                        return d = d | 0, m(this, d, this._shape[1]), d;
                      }, enumerable: !1 }, height: { get: function() {
                        return this._destroyed ? 0 : this._shape[1];
                      }, set: function(d) {
                        return d = d | 0, m(this, this._shape[0], d), d;
                      }, enumerable: !1 } }), C.bind = function() {
                        if (!this._destroyed) {
                          var d = this.gl;
                          d.bindFramebuffer(d.FRAMEBUFFER, this.handle), d.viewport(0, 0, this._shape[0], this._shape[1]);
                        }
                      }, C.dispose = function() {
                        if (!this._destroyed) {
                          this._destroyed = !0;
                          var d = this.gl;
                          d.deleteFramebuffer(this.handle), this.handle = null, this.depth && (this.depth.dispose(), this.depth = null), this._depth_rb && (d.deleteRenderbuffer(this._depth_rb), this._depth_rb = null);
                          for (var h = 0; h < this.color.length; ++h)
                            this.color[h].dispose(), this.color[h] = null;
                          this._color_rb && (d.deleteRenderbuffer(this._color_rb), this._color_rb = null);
                        }
                      };
                      function L(d, h, E, w) {
                        a || (a = d.FRAMEBUFFER_UNSUPPORTED, l = d.FRAMEBUFFER_INCOMPLETE_ATTACHMENT, o = d.FRAMEBUFFER_INCOMPLETE_DIMENSIONS, y = d.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT);
                        var z = d.getExtension("WEBGL_draw_buffers");
                        if (!i && z && c(d, z), Array.isArray(h) && (w = E, E = h[1] | 0, h = h[0] | 0), typeof h != "number")
                          throw new Error("gl-fbo: Missing shape parameter");
                        var O = d.getParameter(d.MAX_RENDERBUFFER_SIZE);
                        if (h < 0 || h > O || E < 0 || E > O)
                          throw new Error("gl-fbo: Parameters are too large for FBO");
                        w = w || {};
                        var B = 1;
                        if ("color" in w) {
                          if (B = Math.max(w.color | 0, 0), B < 0)
                            throw new Error("gl-fbo: Must specify a nonnegative number of colors");
                          if (B > 1)
                            if (z) {
                              if (B > d.getParameter(z.MAX_COLOR_ATTACHMENTS_WEBGL))
                                throw new Error("gl-fbo: Context does not support " + B + " draw buffers");
                            } else throw new Error("gl-fbo: Multiple draw buffer extension not supported");
                        }
                        var V = d.UNSIGNED_BYTE, U = d.getExtension("OES_texture_float");
                        if (w.float && B > 0) {
                          if (!U)
                            throw new Error("gl-fbo: Context does not support floating point textures");
                          V = d.FLOAT;
                        } else w.preferFloat && B > 0 && U && (V = d.FLOAT);
                        var H = !0;
                        "depth" in w && (H = !!w.depth);
                        var F = !1;
                        return "stencil" in w && (F = !!w.stencil), new M(d, h, E, V, B, H, F, z);
                      }
                    }
                  ),
                  /***/
                  2992: (
                    /***/
                    function(p, u, t) {
                      var r = t(3387).sprintf, i = t(5171), a = t(1848), l = t(1085);
                      p.exports = o;
                      function o(y, g, x) {
                        var c = a(g) || "of unknown name (see npm glsl-shader-name)", v = "unknown type";
                        x !== void 0 && (v = x === i.FRAGMENT_SHADER ? "fragment" : "vertex");
                        for (var f = r(`Error compiling %s shader %s:
`, v, c), _ = r("%s%s", f, y), S = y.split(`
`), M = {}, C = 0; C < S.length; C++) {
                          var m = S[C];
                          if (!(m === "" || m === "\0")) {
                            var L = parseInt(m.split(":")[2]);
                            if (isNaN(L))
                              throw new Error(r("Could not parse error: %s", m));
                            M[L] = m;
                          }
                        }
                        for (var d = l(g).split(`
`), C = 0; C < d.length; C++)
                          if (!(!M[C + 3] && !M[C + 2] && !M[C + 1])) {
                            var h = d[C];
                            if (f += h + `
`, M[C + 1]) {
                              var E = M[C + 1];
                              E = E.substr(E.split(":", 3).join(":").length + 1).trim(), f += r(`^^^ %s

`, E);
                            }
                          }
                        return { long: f.trim(), short: _.trim() };
                      }
                    }
                  ),
                  /***/
                  2510: (
                    /***/
                    function(p, u, t) {
                      p.exports = v;
                      var r = t(2478), i = t(7762), a = t(1888), l = t(9405), o = t(2762), y = t(6768);
                      function g(f, _, S, M, C, m, L) {
                        this.plot = f, this.shader = _, this.pickShader = S, this.positionBuffer = M, this.weightBuffer = C, this.colorBuffer = m, this.idBuffer = L, this.xData = [], this.yData = [], this.shape = [0, 0], this.bounds = [1 / 0, 1 / 0, -1 / 0, -1 / 0], this.pickOffset = 0;
                      }
                      var x = g.prototype, c = [0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1];
                      x.draw = /* @__PURE__ */ function() {
                        var f = [1, 0, 0, 0, 1, 0, 0, 0, 1];
                        return function() {
                          var _ = this.plot, S = this.shader, M = this.bounds, C = this.numVertices;
                          if (!(C <= 0)) {
                            var m = _.gl, L = _.dataBox, d = M[2] - M[0], h = M[3] - M[1], E = L[2] - L[0], w = L[3] - L[1];
                            f[0] = 2 * d / E, f[4] = 2 * h / w, f[6] = 2 * (M[0] - L[0]) / E - 1, f[7] = 2 * (M[1] - L[1]) / w - 1, S.bind();
                            var z = S.uniforms;
                            z.viewTransform = f, z.shape = this.shape;
                            var O = S.attributes;
                            this.positionBuffer.bind(), O.position.pointer(), this.weightBuffer.bind(), O.weight.pointer(m.UNSIGNED_BYTE, !1), this.colorBuffer.bind(), O.color.pointer(m.UNSIGNED_BYTE, !0), m.drawArrays(m.TRIANGLES, 0, C);
                          }
                        };
                      }(), x.drawPick = /* @__PURE__ */ function() {
                        var f = [1, 0, 0, 0, 1, 0, 0, 0, 1], _ = [0, 0, 0, 0];
                        return function(S) {
                          var M = this.plot, C = this.pickShader, m = this.bounds, L = this.numVertices;
                          if (!(L <= 0)) {
                            var d = M.gl, h = M.dataBox, E = m[2] - m[0], w = m[3] - m[1], z = h[2] - h[0], O = h[3] - h[1];
                            f[0] = 2 * E / z, f[4] = 2 * w / O, f[6] = 2 * (m[0] - h[0]) / z - 1, f[7] = 2 * (m[1] - h[1]) / O - 1;
                            for (var B = 0; B < 4; ++B)
                              _[B] = S >> B * 8 & 255;
                            this.pickOffset = S, C.bind();
                            var V = C.uniforms;
                            V.viewTransform = f, V.pickOffset = _, V.shape = this.shape;
                            var U = C.attributes;
                            return this.positionBuffer.bind(), U.position.pointer(), this.weightBuffer.bind(), U.weight.pointer(d.UNSIGNED_BYTE, !1), this.idBuffer.bind(), U.pickId.pointer(d.UNSIGNED_BYTE, !1), d.drawArrays(d.TRIANGLES, 0, L), S + this.shape[0] * this.shape[1];
                          }
                        };
                      }(), x.pick = function(f, _, S) {
                        var M = this.pickOffset, C = this.shape[0] * this.shape[1];
                        if (S < M || S >= M + C)
                          return null;
                        var m = S - M, L = this.xData, d = this.yData;
                        return { object: this, pointId: m, dataCoord: [L[m % this.shape[0]], d[m / this.shape[0] | 0]] };
                      }, x.update = function(f) {
                        f = f || {};
                        var _ = f.shape || [0, 0], S = f.x || i(_[0]), M = f.y || i(_[1]), C = f.z || new Float32Array(_[0] * _[1]), m = f.zsmooth !== !1;
                        this.xData = S, this.yData = M;
                        var L = f.colorLevels || [0], d = f.colorValues || [0, 0, 0, 1], h = L.length, E = this.bounds, w, z, O, B;
                        m ? (w = E[0] = S[0], z = E[1] = M[0], O = E[2] = S[S.length - 1], B = E[3] = M[M.length - 1]) : (w = E[0] = S[0] + (S[1] - S[0]) / 2, z = E[1] = M[0] + (M[1] - M[0]) / 2, O = E[2] = S[S.length - 1] + (S[S.length - 1] - S[S.length - 2]) / 2, B = E[3] = M[M.length - 1] + (M[M.length - 1] - M[M.length - 2]) / 2);
                        var V = 1 / (O - w), U = 1 / (B - z), H = _[0], F = _[1];
                        this.shape = [H, F];
                        var G = (m ? (H - 1) * (F - 1) : H * F) * (c.length >>> 1);
                        this.numVertices = G;
                        for (var q = a.mallocUint8(G * 4), rt = a.mallocFloat32(G * 2), st = a.mallocUint8(G * 2), vt = a.mallocUint32(G), ht = 0, et = m ? H - 1 : H, Q = m ? F - 1 : F, j = 0; j < Q; ++j) {
                          var at, ut;
                          m ? (at = U * (M[j] - z), ut = U * (M[j + 1] - z)) : (at = j < F - 1 ? U * (M[j] - (M[j + 1] - M[j]) / 2 - z) : U * (M[j] - (M[j] - M[j - 1]) / 2 - z), ut = j < F - 1 ? U * (M[j] + (M[j + 1] - M[j]) / 2 - z) : U * (M[j] + (M[j] - M[j - 1]) / 2 - z));
                          for (var nt = 0; nt < et; ++nt) {
                            var X, ct;
                            m ? (X = V * (S[nt] - w), ct = V * (S[nt + 1] - w)) : (X = nt < H - 1 ? V * (S[nt] - (S[nt + 1] - S[nt]) / 2 - w) : V * (S[nt] - (S[nt] - S[nt - 1]) / 2 - w), ct = nt < H - 1 ? V * (S[nt] + (S[nt + 1] - S[nt]) / 2 - w) : V * (S[nt] + (S[nt] - S[nt - 1]) / 2 - w));
                            for (var lt = 0; lt < c.length; lt += 2) {
                              var pt = c[lt], wt = c[lt + 1], Et = m ? (j + wt) * H + (nt + pt) : j * H + nt, Ct = C[Et], Gt = r.le(L, Ct), Jt, Qt, Vt, zt;
                              if (Gt < 0)
                                Jt = d[0], Qt = d[1], Vt = d[2], zt = d[3];
                              else if (Gt === h - 1)
                                Jt = d[4 * h - 4], Qt = d[4 * h - 3], Vt = d[4 * h - 2], zt = d[4 * h - 1];
                              else {
                                var Rt = (Ct - L[Gt]) / (L[Gt + 1] - L[Gt]), Wt = 1 - Rt, kt = 4 * Gt, re = 4 * (Gt + 1);
                                Jt = Wt * d[kt] + Rt * d[re], Qt = Wt * d[kt + 1] + Rt * d[re + 1], Vt = Wt * d[kt + 2] + Rt * d[re + 2], zt = Wt * d[kt + 3] + Rt * d[re + 3];
                              }
                              q[4 * ht] = 255 * Jt, q[4 * ht + 1] = 255 * Qt, q[4 * ht + 2] = 255 * Vt, q[4 * ht + 3] = 255 * zt, rt[2 * ht] = X * 0.5 + ct * 0.5, rt[2 * ht + 1] = at * 0.5 + ut * 0.5, st[2 * ht] = pt, st[2 * ht + 1] = wt, vt[ht] = j * H + nt, ht += 1;
                            }
                          }
                        }
                        this.positionBuffer.update(rt), this.weightBuffer.update(st), this.colorBuffer.update(q), this.idBuffer.update(vt), a.free(rt), a.free(q), a.free(st), a.free(vt);
                      }, x.dispose = function() {
                        this.shader.dispose(), this.pickShader.dispose(), this.positionBuffer.dispose(), this.weightBuffer.dispose(), this.colorBuffer.dispose(), this.idBuffer.dispose(), this.plot.removeObject(this);
                      };
                      function v(f, _) {
                        var S = f.gl, M = l(S, y.vertex, y.fragment), C = l(S, y.pickVertex, y.pickFragment), m = o(S), L = o(S), d = o(S), h = o(S), E = new g(f, M, C, m, L, d, h);
                        return E.update(_), f.addObject(E), E;
                      }
                    }
                  ),
                  /***/
                  6768: (
                    /***/
                    function(p, u, t) {
                      var r = t(3236);
                      p.exports = { fragment: r([`precision lowp float;
#define GLSLIFY 1
varying vec4 fragColor;
void main() {
  gl_FragColor = vec4(fragColor.rgb * fragColor.a, fragColor.a);
}
`]), vertex: r([`precision mediump float;
#define GLSLIFY 1

attribute vec2 position;
attribute vec4 color;
attribute vec2 weight;

uniform vec2 shape;
uniform mat3 viewTransform;

varying vec4 fragColor;

void main() {
  vec3 vPosition = viewTransform * vec3( position + (weight-.5)/(shape-1.) , 1.0);
  fragColor = color;
  gl_Position = vec4(vPosition.xy, 0, vPosition.z);
}
`]), pickFragment: r([`precision mediump float;
#define GLSLIFY 1

varying vec4 fragId;
varying vec2 vWeight;

uniform vec2 shape;
uniform vec4 pickOffset;

void main() {
  vec2 d = step(.5, vWeight);
  vec4 id = fragId + pickOffset;
  id.x += d.x + d.y*shape.x;

  id.y += floor(id.x / 256.0);
  id.x -= floor(id.x / 256.0) * 256.0;

  id.z += floor(id.y / 256.0);
  id.y -= floor(id.y / 256.0) * 256.0;

  id.w += floor(id.z / 256.0);
  id.z -= floor(id.z / 256.0) * 256.0;

  gl_FragColor = id/255.;
}
`]), pickVertex: r([`precision mediump float;
#define GLSLIFY 1

attribute vec2 position;
attribute vec4 pickId;
attribute vec2 weight;

uniform vec2 shape;
uniform mat3 viewTransform;

varying vec4 fragId;
varying vec2 vWeight;

void main() {
  vWeight = weight;

  fragId = pickId;

  vec3 vPosition = viewTransform * vec3( position + (weight-.5)/(shape-1.) , 1.0);
  gl_Position = vec4(vPosition.xy, 0, vPosition.z);
}
`]) };
                    }
                  ),
                  /***/
                  7319: (
                    /***/
                    function(p, u, t) {
                      var r = t(3236), i = t(9405), a = r([`precision highp float;
#define GLSLIFY 1

attribute vec3 position, nextPosition;
attribute float arcLength, lineWidth;
attribute vec4 color;

uniform vec2 screenShape;
uniform float pixelRatio;
uniform mat4 model, view, projection;

varying vec4 fragColor;
varying vec3 worldPosition;
varying float pixelArcLength;

vec4 project(vec3 p) {
  return projection * (view * (model * vec4(p, 1.0)));
}

void main() {
  vec4 startPoint = project(position);
  vec4 endPoint   = project(nextPosition);

  vec2 A = startPoint.xy / startPoint.w;
  vec2 B =   endPoint.xy /   endPoint.w;

  float clipAngle = atan(
    (B.y - A.y) * screenShape.y,
    (B.x - A.x) * screenShape.x
  );

  vec2 offset = 0.5 * pixelRatio * lineWidth * vec2(
    sin(clipAngle),
    -cos(clipAngle)
  ) / screenShape;

  gl_Position = vec4(startPoint.xy + startPoint.w * offset, startPoint.zw);

  worldPosition = position;
  pixelArcLength = arcLength;
  fragColor = color;
}
`]), l = r([`precision highp float;
#define GLSLIFY 1

bool outOfRange(float a, float b, float p) {
  return ((p > max(a, b)) || 
          (p < min(a, b)));
}

bool outOfRange(vec2 a, vec2 b, vec2 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y));
}

bool outOfRange(vec3 a, vec3 b, vec3 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y) ||
          outOfRange(a.z, b.z, p.z));
}

bool outOfRange(vec4 a, vec4 b, vec4 p) {
  return outOfRange(a.xyz, b.xyz, p.xyz);
}

uniform vec3      clipBounds[2];
uniform sampler2D dashTexture;
uniform float     dashScale;
uniform float     opacity;

varying vec3    worldPosition;
varying float   pixelArcLength;
varying vec4    fragColor;

void main() {
  if (
    outOfRange(clipBounds[0], clipBounds[1], worldPosition) ||
    fragColor.a * opacity == 0.
  ) discard;

  float dashWeight = texture2D(dashTexture, vec2(dashScale * pixelArcLength, 0)).r;
  if(dashWeight < 0.5) {
    discard;
  }
  gl_FragColor = fragColor * opacity;
}
`]), o = r([`precision highp float;
#define GLSLIFY 1

#define FLOAT_MAX  1.70141184e38
#define FLOAT_MIN  1.17549435e-38

// https://github.com/mikolalysenko/glsl-read-float/blob/master/index.glsl
vec4 packFloat(float v) {
  float av = abs(v);

  //Handle special cases
  if(av < FLOAT_MIN) {
    return vec4(0.0, 0.0, 0.0, 0.0);
  } else if(v > FLOAT_MAX) {
    return vec4(127.0, 128.0, 0.0, 0.0) / 255.0;
  } else if(v < -FLOAT_MAX) {
    return vec4(255.0, 128.0, 0.0, 0.0) / 255.0;
  }

  vec4 c = vec4(0,0,0,0);

  //Compute exponent and mantissa
  float e = floor(log2(av));
  float m = av * pow(2.0, -e) - 1.0;

  //Unpack mantissa
  c[1] = floor(128.0 * m);
  m -= c[1] / 128.0;
  c[2] = floor(32768.0 * m);
  m -= c[2] / 32768.0;
  c[3] = floor(8388608.0 * m);

  //Unpack exponent
  float ebias = e + 127.0;
  c[0] = floor(ebias / 2.0);
  ebias -= c[0] * 2.0;
  c[1] += floor(ebias) * 128.0;

  //Unpack sign bit
  c[0] += 128.0 * step(0.0, -v);

  //Scale back to range
  return c / 255.0;
}

bool outOfRange(float a, float b, float p) {
  return ((p > max(a, b)) || 
          (p < min(a, b)));
}

bool outOfRange(vec2 a, vec2 b, vec2 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y));
}

bool outOfRange(vec3 a, vec3 b, vec3 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y) ||
          outOfRange(a.z, b.z, p.z));
}

bool outOfRange(vec4 a, vec4 b, vec4 p) {
  return outOfRange(a.xyz, b.xyz, p.xyz);
}

uniform float pickId;
uniform vec3 clipBounds[2];

varying vec3 worldPosition;
varying float pixelArcLength;
varying vec4 fragColor;

void main() {
  if (outOfRange(clipBounds[0], clipBounds[1], worldPosition)) discard;

  gl_FragColor = vec4(pickId/255.0, packFloat(pixelArcLength).xyz);
}`]), y = [{ name: "position", type: "vec3" }, { name: "nextPosition", type: "vec3" }, { name: "arcLength", type: "float" }, { name: "lineWidth", type: "float" }, { name: "color", type: "vec4" }];
                      u.createShader = function(g) {
                        return i(g, a, l, null, y);
                      }, u.createPickShader = function(g) {
                        return i(g, a, o, null, y);
                      };
                    }
                  ),
                  /***/
                  5714: (
                    /***/
                    function(p, u, t) {
                      p.exports = d;
                      var r = t(2762), i = t(8116), a = t(7766), l = new Uint8Array(4), o = new Float32Array(l.buffer);
                      function y(h, E, w, z) {
                        return l[0] = z, l[1] = w, l[2] = E, l[3] = h, o[0];
                      }
                      var g = t(2478), x = t(9618), c = t(7319), v = c.createShader, f = c.createPickShader, _ = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
                      function S(h, E) {
                        for (var w = 0, z = 0; z < 3; ++z) {
                          var O = h[z] - E[z];
                          w += O * O;
                        }
                        return Math.sqrt(w);
                      }
                      function M(h) {
                        for (var E = [[-1e6, -1e6, -1e6], [1e6, 1e6, 1e6]], w = 0; w < 3; ++w)
                          E[0][w] = Math.max(h[0][w], E[0][w]), E[1][w] = Math.min(h[1][w], E[1][w]);
                        return E;
                      }
                      function C(h, E, w, z) {
                        this.arcLength = h, this.position = E, this.index = w, this.dataCoordinate = z;
                      }
                      function m(h, E, w, z, O, B) {
                        this.gl = h, this.shader = E, this.pickShader = w, this.buffer = z, this.vao = O, this.clipBounds = [[-1 / 0, -1 / 0, -1 / 0], [1 / 0, 1 / 0, 1 / 0]], this.points = [], this.arcLength = [], this.vertexCount = 0, this.bounds = [[0, 0, 0], [0, 0, 0]], this.pickId = 0, this.lineWidth = 1, this.texture = B, this.dashScale = 1, this.opacity = 1, this.hasAlpha = !1, this.dirty = !0, this.pixelRatio = 1;
                      }
                      var L = m.prototype;
                      L.isTransparent = function() {
                        return this.hasAlpha;
                      }, L.isOpaque = function() {
                        return !this.hasAlpha;
                      }, L.pickSlots = 1, L.setPickBase = function(h) {
                        this.pickId = h;
                      }, L.drawTransparent = L.draw = function(h) {
                        if (this.vertexCount) {
                          var E = this.gl, w = this.shader, z = this.vao;
                          w.bind(), w.uniforms = { model: h.model || _, view: h.view || _, projection: h.projection || _, clipBounds: M(this.clipBounds), dashTexture: this.texture.bind(), dashScale: this.dashScale / this.arcLength[this.arcLength.length - 1], opacity: this.opacity, screenShape: [E.drawingBufferWidth, E.drawingBufferHeight], pixelRatio: this.pixelRatio }, z.bind(), z.draw(E.TRIANGLE_STRIP, this.vertexCount), z.unbind();
                        }
                      }, L.drawPick = function(h) {
                        if (this.vertexCount) {
                          var E = this.gl, w = this.pickShader, z = this.vao;
                          w.bind(), w.uniforms = { model: h.model || _, view: h.view || _, projection: h.projection || _, pickId: this.pickId, clipBounds: M(this.clipBounds), screenShape: [E.drawingBufferWidth, E.drawingBufferHeight], pixelRatio: this.pixelRatio }, z.bind(), z.draw(E.TRIANGLE_STRIP, this.vertexCount), z.unbind();
                        }
                      }, L.update = function(h) {
                        var E, w;
                        this.dirty = !0;
                        var z = !!h.connectGaps;
                        "dashScale" in h && (this.dashScale = h.dashScale), this.hasAlpha = !1, "opacity" in h && (this.opacity = +h.opacity, this.opacity < 1 && (this.hasAlpha = !0));
                        var O = [], B = [], V = [], U = 0, H = 0, F = [[1 / 0, 1 / 0, 1 / 0], [-1 / 0, -1 / 0, -1 / 0]], G = h.position || h.positions;
                        if (G) {
                          var q = h.color || h.colors || [0, 0, 0, 1], rt = h.lineWidth || 1, st = !1;
                          t: for (E = 1; E < G.length; ++E) {
                            var vt = G[E - 1], ht = G[E];
                            for (B.push(U), V.push(vt.slice()), w = 0; w < 3; ++w) {
                              if (isNaN(vt[w]) || isNaN(ht[w]) || !isFinite(vt[w]) || !isFinite(ht[w])) {
                                if (!z && O.length > 0) {
                                  for (var et = 0; et < 24; ++et)
                                    O.push(O[O.length - 12]);
                                  H += 2, st = !0;
                                }
                                continue t;
                              }
                              F[0][w] = Math.min(F[0][w], vt[w], ht[w]), F[1][w] = Math.max(F[1][w], vt[w], ht[w]);
                            }
                            var Q, j;
                            Array.isArray(q[0]) ? (Q = q.length > E - 1 ? q[E - 1] : (
                              // using index value
                              q.length > 0 ? q[q.length - 1] : (
                                // using last item
                                [0, 0, 0, 1]
                              )
                            ), j = q.length > E ? q[E] : (
                              // using index value
                              q.length > 0 ? q[q.length - 1] : (
                                // using last item
                                [0, 0, 0, 1]
                              )
                            )) : Q = j = q, Q.length === 3 && (Q = [Q[0], Q[1], Q[2], 1]), j.length === 3 && (j = [j[0], j[1], j[2], 1]), !this.hasAlpha && Q[3] < 1 && (this.hasAlpha = !0);
                            var at;
                            Array.isArray(rt) ? at = rt.length > E - 1 ? rt[E - 1] : (
                              // using index value
                              rt.length > 0 ? rt[rt.length - 1] : (
                                // using last item
                                [0, 0, 0, 1]
                              )
                            ) : at = rt;
                            var ut = U;
                            if (U += S(vt, ht), st) {
                              for (w = 0; w < 2; ++w)
                                O.push(vt[0], vt[1], vt[2], ht[0], ht[1], ht[2], ut, at, Q[0], Q[1], Q[2], Q[3]);
                              H += 2, st = !1;
                            }
                            O.push(vt[0], vt[1], vt[2], ht[0], ht[1], ht[2], ut, at, Q[0], Q[1], Q[2], Q[3], vt[0], vt[1], vt[2], ht[0], ht[1], ht[2], ut, -at, Q[0], Q[1], Q[2], Q[3], ht[0], ht[1], ht[2], vt[0], vt[1], vt[2], U, -at, j[0], j[1], j[2], j[3], ht[0], ht[1], ht[2], vt[0], vt[1], vt[2], U, at, j[0], j[1], j[2], j[3]), H += 4;
                          }
                        }
                        if (this.buffer.update(O), B.push(U), V.push(G[G.length - 1].slice()), this.bounds = F, this.vertexCount = H, this.points = V, this.arcLength = B, "dashes" in h) {
                          var nt = h.dashes, X = nt.slice();
                          for (X.unshift(0), E = 1; E < X.length; ++E)
                            X[E] = X[E - 1] + X[E];
                          var ct = x(new Array(256 * 4), [256, 1, 4]);
                          for (E = 0; E < 256; ++E) {
                            for (w = 0; w < 4; ++w)
                              ct.set(E, 0, w, 0);
                            g.le(X, X[X.length - 1] * E / 255) & 1 ? ct.set(E, 0, 0, 0) : ct.set(E, 0, 0, 255);
                          }
                          this.texture.setPixels(ct);
                        }
                      }, L.dispose = function() {
                        this.shader.dispose(), this.vao.dispose(), this.buffer.dispose();
                      }, L.pick = function(h) {
                        if (!h || h.id !== this.pickId)
                          return null;
                        var E = y(h.value[0], h.value[1], h.value[2], 0), w = g.le(this.arcLength, E);
                        if (w < 0)
                          return null;
                        if (w === this.arcLength.length - 1)
                          return new C(this.arcLength[this.arcLength.length - 1], this.points[this.points.length - 1].slice(), w);
                        for (var z = this.points[w], O = this.points[Math.min(w + 1, this.points.length - 1)], B = (E - this.arcLength[w]) / (this.arcLength[w + 1] - this.arcLength[w]), V = 1 - B, U = [0, 0, 0], H = 0; H < 3; ++H)
                          U[H] = V * z[H] + B * O[H];
                        var F = Math.min(B < 0.5 ? w : w + 1, this.points.length - 1);
                        return new C(E, U, F, this.points[F]);
                      };
                      function d(h) {
                        var E = h.gl || h.scene && h.scene.gl, w = v(E);
                        w.attributes.position.location = 0, w.attributes.nextPosition.location = 1, w.attributes.arcLength.location = 2, w.attributes.lineWidth.location = 3, w.attributes.color.location = 4;
                        var z = f(E);
                        z.attributes.position.location = 0, z.attributes.nextPosition.location = 1, z.attributes.arcLength.location = 2, z.attributes.lineWidth.location = 3, z.attributes.color.location = 4;
                        for (var O = r(E), B = i(E, [{ buffer: O, size: 3, offset: 0, stride: 48 }, { buffer: O, size: 3, offset: 12, stride: 48 }, { buffer: O, size: 1, offset: 24, stride: 48 }, { buffer: O, size: 1, offset: 28, stride: 48 }, { buffer: O, size: 4, offset: 32, stride: 48 }]), V = x(new Array(256 * 4), [256, 1, 4]), U = 0; U < 1024; ++U)
                          V.data[U] = 255;
                        var H = a(E, V);
                        H.wrap = E.REPEAT;
                        var F = new m(E, w, z, O, B, H);
                        return F.update(h), F;
                      }
                    }
                  ),
                  /***/
                  1903: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t) {
                        var r = new Float32Array(16);
                        return r[0] = t[0], r[1] = t[1], r[2] = t[2], r[3] = t[3], r[4] = t[4], r[5] = t[5], r[6] = t[6], r[7] = t[7], r[8] = t[8], r[9] = t[9], r[10] = t[10], r[11] = t[11], r[12] = t[12], r[13] = t[13], r[14] = t[14], r[15] = t[15], r;
                      }
                    }
                  ),
                  /***/
                  6864: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u() {
                        var t = new Float32Array(16);
                        return t[0] = 1, t[1] = 0, t[2] = 0, t[3] = 0, t[4] = 0, t[5] = 1, t[6] = 0, t[7] = 0, t[8] = 0, t[9] = 0, t[10] = 1, t[11] = 0, t[12] = 0, t[13] = 0, t[14] = 0, t[15] = 1, t;
                      }
                    }
                  ),
                  /***/
                  9921: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t) {
                        var r = t[0], i = t[1], a = t[2], l = t[3], o = t[4], y = t[5], g = t[6], x = t[7], c = t[8], v = t[9], f = t[10], _ = t[11], S = t[12], M = t[13], C = t[14], m = t[15], L = r * y - i * o, d = r * g - a * o, h = r * x - l * o, E = i * g - a * y, w = i * x - l * y, z = a * x - l * g, O = c * M - v * S, B = c * C - f * S, V = c * m - _ * S, U = v * C - f * M, H = v * m - _ * M, F = f * m - _ * C;
                        return L * F - d * H + h * U + E * V - w * B + z * O;
                      }
                    }
                  ),
                  /***/
                  7399: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r) {
                        var i = r[0], a = r[1], l = r[2], o = r[3], y = i + i, g = a + a, x = l + l, c = i * y, v = a * y, f = a * g, _ = l * y, S = l * g, M = l * x, C = o * y, m = o * g, L = o * x;
                        return t[0] = 1 - f - M, t[1] = v + L, t[2] = _ - m, t[3] = 0, t[4] = v - L, t[5] = 1 - c - M, t[6] = S + C, t[7] = 0, t[8] = _ + m, t[9] = S - C, t[10] = 1 - c - f, t[11] = 0, t[12] = 0, t[13] = 0, t[14] = 0, t[15] = 1, t;
                      }
                    }
                  ),
                  /***/
                  6743: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        var a = r[0], l = r[1], o = r[2], y = r[3], g = a + a, x = l + l, c = o + o, v = a * g, f = a * x, _ = a * c, S = l * x, M = l * c, C = o * c, m = y * g, L = y * x, d = y * c;
                        return t[0] = 1 - (S + C), t[1] = f + d, t[2] = _ - L, t[3] = 0, t[4] = f - d, t[5] = 1 - (v + C), t[6] = M + m, t[7] = 0, t[8] = _ + L, t[9] = M - m, t[10] = 1 - (v + S), t[11] = 0, t[12] = i[0], t[13] = i[1], t[14] = i[2], t[15] = 1, t;
                      }
                    }
                  ),
                  /***/
                  7894: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t) {
                        return t[0] = 1, t[1] = 0, t[2] = 0, t[3] = 0, t[4] = 0, t[5] = 1, t[6] = 0, t[7] = 0, t[8] = 0, t[9] = 0, t[10] = 1, t[11] = 0, t[12] = 0, t[13] = 0, t[14] = 0, t[15] = 1, t;
                      }
                    }
                  ),
                  /***/
                  7608: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r) {
                        var i = r[0], a = r[1], l = r[2], o = r[3], y = r[4], g = r[5], x = r[6], c = r[7], v = r[8], f = r[9], _ = r[10], S = r[11], M = r[12], C = r[13], m = r[14], L = r[15], d = i * g - a * y, h = i * x - l * y, E = i * c - o * y, w = a * x - l * g, z = a * c - o * g, O = l * c - o * x, B = v * C - f * M, V = v * m - _ * M, U = v * L - S * M, H = f * m - _ * C, F = f * L - S * C, G = _ * L - S * m, q = d * G - h * F + E * H + w * U - z * V + O * B;
                        return q ? (q = 1 / q, t[0] = (g * G - x * F + c * H) * q, t[1] = (l * F - a * G - o * H) * q, t[2] = (C * O - m * z + L * w) * q, t[3] = (_ * z - f * O - S * w) * q, t[4] = (x * U - y * G - c * V) * q, t[5] = (i * G - l * U + o * V) * q, t[6] = (m * E - M * O - L * h) * q, t[7] = (v * O - _ * E + S * h) * q, t[8] = (y * F - g * U + c * B) * q, t[9] = (a * U - i * F - o * B) * q, t[10] = (M * z - C * E + L * d) * q, t[11] = (f * E - v * z - S * d) * q, t[12] = (g * V - y * H - x * B) * q, t[13] = (i * H - a * V + l * B) * q, t[14] = (C * h - M * w - m * d) * q, t[15] = (v * w - f * h + _ * d) * q, t) : null;
                      }
                    }
                  ),
                  /***/
                  6582: (
                    /***/
                    function(p, u, t) {
                      var r = t(7894);
                      p.exports = i;
                      function i(a, l, o, y) {
                        var g, x, c, v, f, _, S, M, C, m, L = l[0], d = l[1], h = l[2], E = y[0], w = y[1], z = y[2], O = o[0], B = o[1], V = o[2];
                        return Math.abs(L - O) < 1e-6 && Math.abs(d - B) < 1e-6 && Math.abs(h - V) < 1e-6 ? r(a) : (S = L - O, M = d - B, C = h - V, m = 1 / Math.sqrt(S * S + M * M + C * C), S *= m, M *= m, C *= m, g = w * C - z * M, x = z * S - E * C, c = E * M - w * S, m = Math.sqrt(g * g + x * x + c * c), m ? (m = 1 / m, g *= m, x *= m, c *= m) : (g = 0, x = 0, c = 0), v = M * c - C * x, f = C * g - S * c, _ = S * x - M * g, m = Math.sqrt(v * v + f * f + _ * _), m ? (m = 1 / m, v *= m, f *= m, _ *= m) : (v = 0, f = 0, _ = 0), a[0] = g, a[1] = v, a[2] = S, a[3] = 0, a[4] = x, a[5] = f, a[6] = M, a[7] = 0, a[8] = c, a[9] = _, a[10] = C, a[11] = 0, a[12] = -(g * L + x * d + c * h), a[13] = -(v * L + f * d + _ * h), a[14] = -(S * L + M * d + C * h), a[15] = 1, a);
                      }
                    }
                  ),
                  /***/
                  6760: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        var a = r[0], l = r[1], o = r[2], y = r[3], g = r[4], x = r[5], c = r[6], v = r[7], f = r[8], _ = r[9], S = r[10], M = r[11], C = r[12], m = r[13], L = r[14], d = r[15], h = i[0], E = i[1], w = i[2], z = i[3];
                        return t[0] = h * a + E * g + w * f + z * C, t[1] = h * l + E * x + w * _ + z * m, t[2] = h * o + E * c + w * S + z * L, t[3] = h * y + E * v + w * M + z * d, h = i[4], E = i[5], w = i[6], z = i[7], t[4] = h * a + E * g + w * f + z * C, t[5] = h * l + E * x + w * _ + z * m, t[6] = h * o + E * c + w * S + z * L, t[7] = h * y + E * v + w * M + z * d, h = i[8], E = i[9], w = i[10], z = i[11], t[8] = h * a + E * g + w * f + z * C, t[9] = h * l + E * x + w * _ + z * m, t[10] = h * o + E * c + w * S + z * L, t[11] = h * y + E * v + w * M + z * d, h = i[12], E = i[13], w = i[14], z = i[15], t[12] = h * a + E * g + w * f + z * C, t[13] = h * l + E * x + w * _ + z * m, t[14] = h * o + E * c + w * S + z * L, t[15] = h * y + E * v + w * M + z * d, t;
                      }
                    }
                  ),
                  /***/
                  4040: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i, a, l, o, y) {
                        var g = 1 / (r - i), x = 1 / (a - l), c = 1 / (o - y);
                        return t[0] = -2 * g, t[1] = 0, t[2] = 0, t[3] = 0, t[4] = 0, t[5] = -2 * x, t[6] = 0, t[7] = 0, t[8] = 0, t[9] = 0, t[10] = 2 * c, t[11] = 0, t[12] = (r + i) * g, t[13] = (l + a) * x, t[14] = (y + o) * c, t[15] = 1, t;
                      }
                    }
                  ),
                  /***/
                  4772: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i, a, l) {
                        var o = 1 / Math.tan(r / 2), y = 1 / (a - l);
                        return t[0] = o / i, t[1] = 0, t[2] = 0, t[3] = 0, t[4] = 0, t[5] = o, t[6] = 0, t[7] = 0, t[8] = 0, t[9] = 0, t[10] = (l + a) * y, t[11] = -1, t[12] = 0, t[13] = 0, t[14] = 2 * l * a * y, t[15] = 0, t;
                      }
                    }
                  ),
                  /***/
                  6079: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i, a) {
                        var l = a[0], o = a[1], y = a[2], g = Math.sqrt(l * l + o * o + y * y), x, c, v, f, _, S, M, C, m, L, d, h, E, w, z, O, B, V, U, H, F, G, q, rt;
                        return Math.abs(g) < 1e-6 ? null : (g = 1 / g, l *= g, o *= g, y *= g, x = Math.sin(i), c = Math.cos(i), v = 1 - c, f = r[0], _ = r[1], S = r[2], M = r[3], C = r[4], m = r[5], L = r[6], d = r[7], h = r[8], E = r[9], w = r[10], z = r[11], O = l * l * v + c, B = o * l * v + y * x, V = y * l * v - o * x, U = l * o * v - y * x, H = o * o * v + c, F = y * o * v + l * x, G = l * y * v + o * x, q = o * y * v - l * x, rt = y * y * v + c, t[0] = f * O + C * B + h * V, t[1] = _ * O + m * B + E * V, t[2] = S * O + L * B + w * V, t[3] = M * O + d * B + z * V, t[4] = f * U + C * H + h * F, t[5] = _ * U + m * H + E * F, t[6] = S * U + L * H + w * F, t[7] = M * U + d * H + z * F, t[8] = f * G + C * q + h * rt, t[9] = _ * G + m * q + E * rt, t[10] = S * G + L * q + w * rt, t[11] = M * G + d * q + z * rt, r !== t && (t[12] = r[12], t[13] = r[13], t[14] = r[14], t[15] = r[15]), t);
                      }
                    }
                  ),
                  /***/
                  5567: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        var a = Math.sin(i), l = Math.cos(i), o = r[4], y = r[5], g = r[6], x = r[7], c = r[8], v = r[9], f = r[10], _ = r[11];
                        return r !== t && (t[0] = r[0], t[1] = r[1], t[2] = r[2], t[3] = r[3], t[12] = r[12], t[13] = r[13], t[14] = r[14], t[15] = r[15]), t[4] = o * l + c * a, t[5] = y * l + v * a, t[6] = g * l + f * a, t[7] = x * l + _ * a, t[8] = c * l - o * a, t[9] = v * l - y * a, t[10] = f * l - g * a, t[11] = _ * l - x * a, t;
                      }
                    }
                  ),
                  /***/
                  2408: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        var a = Math.sin(i), l = Math.cos(i), o = r[0], y = r[1], g = r[2], x = r[3], c = r[8], v = r[9], f = r[10], _ = r[11];
                        return r !== t && (t[4] = r[4], t[5] = r[5], t[6] = r[6], t[7] = r[7], t[12] = r[12], t[13] = r[13], t[14] = r[14], t[15] = r[15]), t[0] = o * l - c * a, t[1] = y * l - v * a, t[2] = g * l - f * a, t[3] = x * l - _ * a, t[8] = o * a + c * l, t[9] = y * a + v * l, t[10] = g * a + f * l, t[11] = x * a + _ * l, t;
                      }
                    }
                  ),
                  /***/
                  7089: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        var a = Math.sin(i), l = Math.cos(i), o = r[0], y = r[1], g = r[2], x = r[3], c = r[4], v = r[5], f = r[6], _ = r[7];
                        return r !== t && (t[8] = r[8], t[9] = r[9], t[10] = r[10], t[11] = r[11], t[12] = r[12], t[13] = r[13], t[14] = r[14], t[15] = r[15]), t[0] = o * l + c * a, t[1] = y * l + v * a, t[2] = g * l + f * a, t[3] = x * l + _ * a, t[4] = c * l - o * a, t[5] = v * l - y * a, t[6] = f * l - g * a, t[7] = _ * l - x * a, t;
                      }
                    }
                  ),
                  /***/
                  2504: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        var a = i[0], l = i[1], o = i[2];
                        return t[0] = r[0] * a, t[1] = r[1] * a, t[2] = r[2] * a, t[3] = r[3] * a, t[4] = r[4] * l, t[5] = r[5] * l, t[6] = r[6] * l, t[7] = r[7] * l, t[8] = r[8] * o, t[9] = r[9] * o, t[10] = r[10] * o, t[11] = r[11] * o, t[12] = r[12], t[13] = r[13], t[14] = r[14], t[15] = r[15], t;
                      }
                    }
                  ),
                  /***/
                  7656: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        var a = i[0], l = i[1], o = i[2], y, g, x, c, v, f, _, S, M, C, m, L;
                        return r === t ? (t[12] = r[0] * a + r[4] * l + r[8] * o + r[12], t[13] = r[1] * a + r[5] * l + r[9] * o + r[13], t[14] = r[2] * a + r[6] * l + r[10] * o + r[14], t[15] = r[3] * a + r[7] * l + r[11] * o + r[15]) : (y = r[0], g = r[1], x = r[2], c = r[3], v = r[4], f = r[5], _ = r[6], S = r[7], M = r[8], C = r[9], m = r[10], L = r[11], t[0] = y, t[1] = g, t[2] = x, t[3] = c, t[4] = v, t[5] = f, t[6] = _, t[7] = S, t[8] = M, t[9] = C, t[10] = m, t[11] = L, t[12] = y * a + v * l + M * o + r[12], t[13] = g * a + f * l + C * o + r[13], t[14] = x * a + _ * l + m * o + r[14], t[15] = c * a + S * l + L * o + r[15]), t;
                      }
                    }
                  ),
                  /***/
                  5665: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r) {
                        if (t === r) {
                          var i = r[1], a = r[2], l = r[3], o = r[6], y = r[7], g = r[11];
                          t[1] = r[4], t[2] = r[8], t[3] = r[12], t[4] = i, t[6] = r[9], t[7] = r[13], t[8] = a, t[9] = o, t[11] = r[14], t[12] = l, t[13] = y, t[14] = g;
                        } else
                          t[0] = r[0], t[1] = r[4], t[2] = r[8], t[3] = r[12], t[4] = r[1], t[5] = r[5], t[6] = r[9], t[7] = r[13], t[8] = r[2], t[9] = r[6], t[10] = r[10], t[11] = r[14], t[12] = r[3], t[13] = r[7], t[14] = r[11], t[15] = r[15];
                        return t;
                      }
                    }
                  ),
                  /***/
                  7626: (
                    /***/
                    function(p, u, t) {
                      var r = t(2642), i = t(9346);
                      p.exports = g;
                      function a(x, c) {
                        for (var v = [0, 0, 0, 0], f = 0; f < 4; ++f)
                          for (var _ = 0; _ < 4; ++_)
                            v[_] += x[4 * f + _] * c[f];
                        return v;
                      }
                      function l(x, c, v, f, _) {
                        for (var S = a(f, a(v, a(c, [x[0], x[1], x[2], 1]))), M = 0; M < 3; ++M)
                          S[M] /= S[3];
                        return [0.5 * _[0] * (1 + S[0]), 0.5 * _[1] * (1 - S[1])];
                      }
                      function o(x, c) {
                        if (x.length === 2) {
                          for (var v = 0, f = 0, _ = 0; _ < 2; ++_)
                            v += Math.pow(c[_] - x[0][_], 2), f += Math.pow(c[_] - x[1][_], 2);
                          return v = Math.sqrt(v), f = Math.sqrt(f), v + f < 1e-6 ? [1, 0] : [f / (v + f), v / (f + v)];
                        } else if (x.length === 3) {
                          var S = [0, 0];
                          return i(x[0], x[1], x[2], c, S), r(x, S);
                        }
                        return [];
                      }
                      function y(x, c) {
                        for (var v = [0, 0, 0], f = 0; f < x.length; ++f)
                          for (var _ = x[f], S = c[f], M = 0; M < 3; ++M)
                            v[M] += S * _[M];
                        return v;
                      }
                      function g(x, c, v, f, _, S) {
                        if (x.length === 1)
                          return [0, x[0].slice()];
                        for (var M = new Array(x.length), C = 0; C < x.length; ++C)
                          M[C] = l(x[C], v, f, _, S);
                        for (var m = 0, L = 1 / 0, C = 0; C < M.length; ++C) {
                          for (var d = 0, h = 0; h < 2; ++h)
                            d += Math.pow(M[C][h] - c[h], 2);
                          d < L && (L = d, m = C);
                        }
                        for (var E = o(M, c), w = 0, C = 0; C < 3; ++C) {
                          if (E[C] < -1e-3 || E[C] > 1.0001)
                            return null;
                          w += E[C];
                        }
                        return Math.abs(w - 1) > 1e-3 ? null : [m, y(x, E), E];
                      }
                    }
                  ),
                  /***/
                  840: (
                    /***/
                    function(p, u, t) {
                      var r = t(3236), i = r([`precision highp float;
#define GLSLIFY 1

attribute vec3 position, normal;
attribute vec4 color;
attribute vec2 uv;

uniform mat4 model
           , view
           , projection
           , inverseModel;
uniform vec3 eyePosition
           , lightPosition;

varying vec3 f_normal
           , f_lightDirection
           , f_eyeDirection
           , f_data;
varying vec4 f_color;
varying vec2 f_uv;

vec4 project(vec3 p) {
  return projection * (view * (model * vec4(p, 1.0)));
}

void main() {
  gl_Position      = project(position);

  //Lighting geometry parameters
  vec4 cameraCoordinate = view * vec4(position , 1.0);
  cameraCoordinate.xyz /= cameraCoordinate.w;
  f_lightDirection = lightPosition - cameraCoordinate.xyz;
  f_eyeDirection   = eyePosition - cameraCoordinate.xyz;
  f_normal  = normalize((vec4(normal, 0.0) * inverseModel).xyz);

  f_color          = color;
  f_data           = position;
  f_uv             = uv;
}
`]), a = r([`#extension GL_OES_standard_derivatives : enable

precision highp float;
#define GLSLIFY 1

float beckmannDistribution(float x, float roughness) {
  float NdotH = max(x, 0.0001);
  float cos2Alpha = NdotH * NdotH;
  float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha;
  float roughness2 = roughness * roughness;
  float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha;
  return exp(tan2Alpha / roughness2) / denom;
}

float cookTorranceSpecular(
  vec3 lightDirection,
  vec3 viewDirection,
  vec3 surfaceNormal,
  float roughness,
  float fresnel) {

  float VdotN = max(dot(viewDirection, surfaceNormal), 0.0);
  float LdotN = max(dot(lightDirection, surfaceNormal), 0.0);

  //Half angle vector
  vec3 H = normalize(lightDirection + viewDirection);

  //Geometric term
  float NdotH = max(dot(surfaceNormal, H), 0.0);
  float VdotH = max(dot(viewDirection, H), 0.000001);
  float LdotH = max(dot(lightDirection, H), 0.000001);
  float G1 = (2.0 * NdotH * VdotN) / VdotH;
  float G2 = (2.0 * NdotH * LdotN) / LdotH;
  float G = min(1.0, min(G1, G2));
  
  //Distribution term
  float D = beckmannDistribution(NdotH, roughness);

  //Fresnel term
  float F = pow(1.0 - VdotN, fresnel);

  //Multiply terms and done
  return  G * F * D / max(3.14159265 * VdotN, 0.000001);
}

//#pragma glslify: beckmann = require(glsl-specular-beckmann) // used in gl-surface3d

bool outOfRange(float a, float b, float p) {
  return ((p > max(a, b)) || 
          (p < min(a, b)));
}

bool outOfRange(vec2 a, vec2 b, vec2 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y));
}

bool outOfRange(vec3 a, vec3 b, vec3 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y) ||
          outOfRange(a.z, b.z, p.z));
}

bool outOfRange(vec4 a, vec4 b, vec4 p) {
  return outOfRange(a.xyz, b.xyz, p.xyz);
}

uniform vec3 clipBounds[2];
uniform float roughness
            , fresnel
            , kambient
            , kdiffuse
            , kspecular;
uniform sampler2D texture;

varying vec3 f_normal
           , f_lightDirection
           , f_eyeDirection
           , f_data;
varying vec4 f_color;
varying vec2 f_uv;

void main() {
  if (f_color.a == 0.0 ||
    outOfRange(clipBounds[0], clipBounds[1], f_data)
  ) discard;

  vec3 N = normalize(f_normal);
  vec3 L = normalize(f_lightDirection);
  vec3 V = normalize(f_eyeDirection);

  if(gl_FrontFacing) {
    N = -N;
  }

  float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel)));
  //float specular = max(0.0, beckmann(L, V, N, roughness)); // used in gl-surface3d

  float diffuse  = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0);

  vec4 surfaceColor = vec4(f_color.rgb, 1.0) * texture2D(texture, f_uv);
  vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular,  1.0);

  gl_FragColor = litColor * f_color.a;
}
`]), l = r([`precision highp float;
#define GLSLIFY 1

attribute vec3 position;
attribute vec4 color;
attribute vec2 uv;

uniform mat4 model, view, projection;

varying vec4 f_color;
varying vec3 f_data;
varying vec2 f_uv;

void main() {
  gl_Position = projection * (view * (model * vec4(position, 1.0)));
  f_color = color;
  f_data  = position;
  f_uv    = uv;
}`]), o = r([`precision highp float;
#define GLSLIFY 1

bool outOfRange(float a, float b, float p) {
  return ((p > max(a, b)) || 
          (p < min(a, b)));
}

bool outOfRange(vec2 a, vec2 b, vec2 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y));
}

bool outOfRange(vec3 a, vec3 b, vec3 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y) ||
          outOfRange(a.z, b.z, p.z));
}

bool outOfRange(vec4 a, vec4 b, vec4 p) {
  return outOfRange(a.xyz, b.xyz, p.xyz);
}

uniform vec3 clipBounds[2];
uniform sampler2D texture;
uniform float opacity;

varying vec4 f_color;
varying vec3 f_data;
varying vec2 f_uv;

void main() {
  if (outOfRange(clipBounds[0], clipBounds[1], f_data)) discard;

  gl_FragColor = f_color * texture2D(texture, f_uv) * opacity;
}`]), y = r([`precision highp float;
#define GLSLIFY 1

bool outOfRange(float a, float b, float p) {
  return ((p > max(a, b)) || 
          (p < min(a, b)));
}

bool outOfRange(vec2 a, vec2 b, vec2 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y));
}

bool outOfRange(vec3 a, vec3 b, vec3 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y) ||
          outOfRange(a.z, b.z, p.z));
}

bool outOfRange(vec4 a, vec4 b, vec4 p) {
  return outOfRange(a.xyz, b.xyz, p.xyz);
}

attribute vec3 position;
attribute vec4 color;
attribute vec2 uv;
attribute float pointSize;

uniform mat4 model, view, projection;
uniform vec3 clipBounds[2];

varying vec4 f_color;
varying vec2 f_uv;

void main() {
  if (outOfRange(clipBounds[0], clipBounds[1], position)) {

    gl_Position = vec4(0.0, 0.0 ,0.0 ,0.0);
  } else {
    gl_Position = projection * (view * (model * vec4(position, 1.0)));
  }
  gl_PointSize = pointSize;
  f_color = color;
  f_uv = uv;
}`]), g = r([`precision highp float;
#define GLSLIFY 1

uniform sampler2D texture;
uniform float opacity;

varying vec4 f_color;
varying vec2 f_uv;

void main() {
  vec2 pointR = gl_PointCoord.xy - vec2(0.5, 0.5);
  if(dot(pointR, pointR) > 0.25) {
    discard;
  }
  gl_FragColor = f_color * texture2D(texture, f_uv) * opacity;
}`]), x = r([`precision highp float;
#define GLSLIFY 1

attribute vec3 position;
attribute vec4 id;

uniform mat4 model, view, projection;

varying vec3 f_position;
varying vec4 f_id;

void main() {
  gl_Position = projection * (view * (model * vec4(position, 1.0)));
  f_id        = id;
  f_position  = position;
}`]), c = r([`precision highp float;
#define GLSLIFY 1

bool outOfRange(float a, float b, float p) {
  return ((p > max(a, b)) || 
          (p < min(a, b)));
}

bool outOfRange(vec2 a, vec2 b, vec2 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y));
}

bool outOfRange(vec3 a, vec3 b, vec3 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y) ||
          outOfRange(a.z, b.z, p.z));
}

bool outOfRange(vec4 a, vec4 b, vec4 p) {
  return outOfRange(a.xyz, b.xyz, p.xyz);
}

uniform vec3  clipBounds[2];
uniform float pickId;

varying vec3 f_position;
varying vec4 f_id;

void main() {
  if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;

  gl_FragColor = vec4(pickId, f_id.xyz);
}`]), v = r([`precision highp float;
#define GLSLIFY 1

bool outOfRange(float a, float b, float p) {
  return ((p > max(a, b)) || 
          (p < min(a, b)));
}

bool outOfRange(vec2 a, vec2 b, vec2 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y));
}

bool outOfRange(vec3 a, vec3 b, vec3 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y) ||
          outOfRange(a.z, b.z, p.z));
}

bool outOfRange(vec4 a, vec4 b, vec4 p) {
  return outOfRange(a.xyz, b.xyz, p.xyz);
}

attribute vec3  position;
attribute float pointSize;
attribute vec4  id;

uniform mat4 model, view, projection;
uniform vec3 clipBounds[2];

varying vec3 f_position;
varying vec4 f_id;

void main() {
  if (outOfRange(clipBounds[0], clipBounds[1], position)) {

    gl_Position = vec4(0.0, 0.0, 0.0, 0.0);
  } else {
    gl_Position  = projection * (view * (model * vec4(position, 1.0)));
    gl_PointSize = pointSize;
  }
  f_id         = id;
  f_position   = position;
}`]), f = r([`precision highp float;
#define GLSLIFY 1

attribute vec3 position;

uniform mat4 model, view, projection;

void main() {
  gl_Position = projection * (view * (model * vec4(position, 1.0)));
}`]), _ = r([`precision highp float;
#define GLSLIFY 1

uniform vec3 contourColor;

void main() {
  gl_FragColor = vec4(contourColor, 1.0);
}
`]);
                      u.meshShader = { vertex: i, fragment: a, attributes: [{ name: "position", type: "vec3" }, { name: "normal", type: "vec3" }, { name: "color", type: "vec4" }, { name: "uv", type: "vec2" }] }, u.wireShader = { vertex: l, fragment: o, attributes: [{ name: "position", type: "vec3" }, { name: "color", type: "vec4" }, { name: "uv", type: "vec2" }] }, u.pointShader = { vertex: y, fragment: g, attributes: [{ name: "position", type: "vec3" }, { name: "color", type: "vec4" }, { name: "uv", type: "vec2" }, { name: "pointSize", type: "float" }] }, u.pickShader = { vertex: x, fragment: c, attributes: [{ name: "position", type: "vec3" }, { name: "id", type: "vec4" }] }, u.pointPickShader = { vertex: v, fragment: c, attributes: [{ name: "position", type: "vec3" }, { name: "pointSize", type: "float" }, { name: "id", type: "vec4" }] }, u.contourShader = { vertex: f, fragment: _, attributes: [{ name: "position", type: "vec3" }] };
                    }
                  ),
                  /***/
                  7201: (
                    /***/
                    function(p, u, t) {
                      var r = 1e-6, i = 1e-6, a = t(9405), l = t(2762), o = t(8116), y = t(7766), g = t(8406), x = t(6760), c = t(7608), v = t(9618), f = t(6729), _ = t(7765), S = t(1888), M = t(840), C = t(7626), m = M.meshShader, L = M.wireShader, d = M.pointShader, h = M.pickShader, E = M.pointPickShader, w = M.contourShader, z = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
                      function O(et, Q, j, at, ut, nt, X, ct, lt, pt, wt, Et, Ct, Gt, Jt, Qt, Vt, zt, Rt, Wt, kt, re, ge, _e, ce, ae, Se) {
                        this.gl = et, this.pixelRatio = 1, this.cells = [], this.positions = [], this.intensity = [], this.texture = Q, this.dirty = !0, this.triShader = j, this.lineShader = at, this.pointShader = ut, this.pickShader = nt, this.pointPickShader = X, this.contourShader = ct, this.trianglePositions = lt, this.triangleColors = wt, this.triangleNormals = Ct, this.triangleUVs = Et, this.triangleIds = pt, this.triangleVAO = Gt, this.triangleCount = 0, this.lineWidth = 1, this.edgePositions = Jt, this.edgeColors = Vt, this.edgeUVs = zt, this.edgeIds = Qt, this.edgeVAO = Rt, this.edgeCount = 0, this.pointPositions = Wt, this.pointColors = re, this.pointUVs = ge, this.pointSizes = _e, this.pointIds = kt, this.pointVAO = ce, this.pointCount = 0, this.contourLineWidth = 1, this.contourPositions = ae, this.contourVAO = Se, this.contourCount = 0, this.contourColor = [0, 0, 0], this.contourEnable = !0, this.pickVertex = !0, this.pickId = 1, this.bounds = [[1 / 0, 1 / 0, 1 / 0], [-1 / 0, -1 / 0, -1 / 0]], this.clipBounds = [[-1 / 0, -1 / 0, -1 / 0], [1 / 0, 1 / 0, 1 / 0]], this.lightPosition = [1e5, 1e5, 0], this.ambientLight = 0.8, this.diffuseLight = 0.8, this.specularLight = 2, this.roughness = 0.5, this.fresnel = 1.5, this.opacity = 1, this.hasAlpha = !1, this.opacityscale = !1, this._model = z, this._view = z, this._projection = z, this._resolution = [1, 1];
                      }
                      var B = O.prototype;
                      B.isOpaque = function() {
                        return !this.hasAlpha;
                      }, B.isTransparent = function() {
                        return this.hasAlpha;
                      }, B.pickSlots = 1, B.setPickBase = function(et) {
                        this.pickId = et;
                      };
                      function V(et, Q) {
                        if (!Q || !Q.length) return 1;
                        for (var j = 0; j < Q.length; ++j) {
                          if (Q.length < 2) return 1;
                          if (Q[j][0] === et) return Q[j][1];
                          if (Q[j][0] > et && j > 0) {
                            var at = (Q[j][0] - et) / (Q[j][0] - Q[j - 1][0]);
                            return Q[j][1] * (1 - at) + at * Q[j - 1][1];
                          }
                        }
                        return 1;
                      }
                      function U(et, Q) {
                        for (var j = f({ colormap: et, nshades: 256, format: "rgba" }), at = new Uint8Array(256 * 4), ut = 0; ut < 256; ++ut) {
                          for (var nt = j[ut], X = 0; X < 3; ++X)
                            at[4 * ut + X] = nt[X];
                          Q ? at[4 * ut + 3] = 255 * V(ut / 255, Q) : at[4 * ut + 3] = 255 * nt[3];
                        }
                        return v(at, [256, 256, 4], [4, 0, 1]);
                      }
                      function H(et) {
                        for (var Q = et.length, j = new Array(Q), at = 0; at < Q; ++at)
                          j[at] = et[at][2];
                        return j;
                      }
                      B.highlight = function(et) {
                        if (!et || !this.contourEnable) {
                          this.contourCount = 0;
                          return;
                        }
                        for (var Q = _(this.cells, this.intensity, et.intensity), j = Q.cells, at = Q.vertexIds, ut = Q.vertexWeights, nt = j.length, X = S.mallocFloat32(2 * 3 * nt), ct = 0, lt = 0; lt < nt; ++lt)
                          for (var pt = j[lt], wt = 0; wt < 2; ++wt) {
                            var Et = pt[0];
                            pt.length === 2 && (Et = pt[wt]);
                            for (var Ct = at[Et][0], Gt = at[Et][1], Jt = ut[Et], Qt = 1 - Jt, Vt = this.positions[Ct], zt = this.positions[Gt], Rt = 0; Rt < 3; ++Rt)
                              X[ct++] = Jt * Vt[Rt] + Qt * zt[Rt];
                          }
                        this.contourCount = ct / 3 | 0, this.contourPositions.update(X.subarray(0, ct)), S.free(X);
                      }, B.update = function(et) {
                        et = et || {};
                        var Q = this.gl;
                        this.dirty = !0, "contourEnable" in et && (this.contourEnable = et.contourEnable), "contourColor" in et && (this.contourColor = et.contourColor), "lineWidth" in et && (this.lineWidth = et.lineWidth), "lightPosition" in et && (this.lightPosition = et.lightPosition), this.hasAlpha = !1, "opacity" in et && (this.opacity = et.opacity, this.opacity < 1 && (this.hasAlpha = !0)), "opacityscale" in et && (this.opacityscale = et.opacityscale, this.hasAlpha = !0), "ambient" in et && (this.ambientLight = et.ambient), "diffuse" in et && (this.diffuseLight = et.diffuse), "specular" in et && (this.specularLight = et.specular), "roughness" in et && (this.roughness = et.roughness), "fresnel" in et && (this.fresnel = et.fresnel), et.texture ? (this.texture.dispose(), this.texture = y(Q, et.texture)) : et.colormap && (this.texture.shape = [256, 256], this.texture.minFilter = Q.LINEAR_MIPMAP_LINEAR, this.texture.magFilter = Q.LINEAR, this.texture.setPixels(U(et.colormap, this.opacityscale)), this.texture.generateMipmap());
                        var j = et.cells, at = et.positions;
                        if (!(!at || !j)) {
                          var ut = [], nt = [], X = [], ct = [], lt = [], pt = [], wt = [], Et = [], Ct = [], Gt = [], Jt = [], Qt = [], Vt = [], zt = [];
                          this.cells = j, this.positions = at;
                          var Rt = et.vertexNormals, Wt = et.cellNormals, kt = et.vertexNormalsEpsilon === void 0 ? r : et.vertexNormalsEpsilon, re = et.faceNormalsEpsilon === void 0 ? i : et.faceNormalsEpsilon;
                          et.useFacetNormals && !Wt && (Wt = g.faceNormals(j, at, re)), !Wt && !Rt && (Rt = g.vertexNormals(j, at, kt));
                          var ge = et.vertexColors, _e = et.cellColors, ce = et.meshColor || [1, 1, 1, 1], ae = et.vertexUVs, Se = et.vertexIntensity, ze = et.cellUVs, Ne = et.cellIntensity, Ve = 1 / 0, Oe = -1 / 0;
                          if (!ae && !ze)
                            if (Se)
                              if (et.vertexIntensityBounds)
                                Ve = +et.vertexIntensityBounds[0], Oe = +et.vertexIntensityBounds[1];
                              else
                                for (var ur = 0; ur < Se.length; ++ur) {
                                  var ie = Se[ur];
                                  Ve = Math.min(Ve, ie), Oe = Math.max(Oe, ie);
                                }
                            else if (Ne)
                              if (et.cellIntensityBounds)
                                Ve = +et.cellIntensityBounds[0], Oe = +et.cellIntensityBounds[1];
                              else
                                for (var ur = 0; ur < Ne.length; ++ur) {
                                  var ie = Ne[ur];
                                  Ve = Math.min(Ve, ie), Oe = Math.max(Oe, ie);
                                }
                            else
                              for (var ur = 0; ur < at.length; ++ur) {
                                var ie = at[ur][2];
                                Ve = Math.min(Ve, ie), Oe = Math.max(Oe, ie);
                              }
                          Se ? this.intensity = Se : Ne ? this.intensity = Ne : this.intensity = H(at), this.pickVertex = !(Ne || _e);
                          var $t = et.pointSizes, jt = et.pointSize || 1;
                          this.bounds = [[1 / 0, 1 / 0, 1 / 0], [-1 / 0, -1 / 0, -1 / 0]];
                          for (var ur = 0; ur < at.length; ++ur)
                            for (var ee = at[ur], Bt = 0; Bt < 3; ++Bt)
                              isNaN(ee[Bt]) || !isFinite(ee[Bt]) || (this.bounds[0][Bt] = Math.min(this.bounds[0][Bt], ee[Bt]), this.bounds[1][Bt] = Math.max(this.bounds[1][Bt], ee[Bt]));
                          var Xt = 0, Zt = 0, ye = 0;
                          t: for (var ur = 0; ur < j.length; ++ur) {
                            var Mt = j[ur];
                            switch (Mt.length) {
                              case 1:
                                for (var St = Mt[0], ee = at[St], Bt = 0; Bt < 3; ++Bt)
                                  if (isNaN(ee[Bt]) || !isFinite(ee[Bt]))
                                    continue t;
                                Gt.push(ee[0], ee[1], ee[2]);
                                var Lt;
                                ge ? Lt = ge[St] : _e ? Lt = _e[ur] : Lt = ce, this.opacityscale && Se ? nt.push(Lt[0], Lt[1], Lt[2], this.opacity * V((Se[St] - Ve) / (Oe - Ve), this.opacityscale)) : Lt.length === 3 ? Jt.push(Lt[0], Lt[1], Lt[2], this.opacity) : (Jt.push(Lt[0], Lt[1], Lt[2], Lt[3] * this.opacity), Lt[3] < 1 && (this.hasAlpha = !0));
                                var te;
                                ae ? te = ae[St] : Se ? te = [(Se[St] - Ve) / (Oe - Ve), 0] : ze ? te = ze[ur] : Ne ? te = [(Ne[ur] - Ve) / (Oe - Ve), 0] : te = [(ee[2] - Ve) / (Oe - Ve), 0], Qt.push(te[0], te[1]), $t ? Vt.push($t[St]) : Vt.push(jt), zt.push(ur), ye += 1;
                                break;
                              case 2:
                                for (var Bt = 0; Bt < 2; ++Bt)
                                  for (var St = Mt[Bt], ee = at[St], fe = 0; fe < 3; ++fe)
                                    if (isNaN(ee[fe]) || !isFinite(ee[fe]))
                                      continue t;
                                for (var Bt = 0; Bt < 2; ++Bt) {
                                  var St = Mt[Bt], ee = at[St];
                                  pt.push(ee[0], ee[1], ee[2]);
                                  var Lt;
                                  ge ? Lt = ge[St] : _e ? Lt = _e[ur] : Lt = ce, this.opacityscale && Se ? nt.push(Lt[0], Lt[1], Lt[2], this.opacity * V((Se[St] - Ve) / (Oe - Ve), this.opacityscale)) : Lt.length === 3 ? wt.push(Lt[0], Lt[1], Lt[2], this.opacity) : (wt.push(Lt[0], Lt[1], Lt[2], Lt[3] * this.opacity), Lt[3] < 1 && (this.hasAlpha = !0));
                                  var te;
                                  ae ? te = ae[St] : Se ? te = [(Se[St] - Ve) / (Oe - Ve), 0] : ze ? te = ze[ur] : Ne ? te = [(Ne[ur] - Ve) / (Oe - Ve), 0] : te = [(ee[2] - Ve) / (Oe - Ve), 0], Et.push(te[0], te[1]), Ct.push(ur);
                                }
                                Zt += 1;
                                break;
                              case 3:
                                for (var Bt = 0; Bt < 3; ++Bt)
                                  for (var St = Mt[Bt], ee = at[St], fe = 0; fe < 3; ++fe)
                                    if (isNaN(ee[fe]) || !isFinite(ee[fe]))
                                      continue t;
                                for (var Bt = 0; Bt < 3; ++Bt) {
                                  var St = Mt[2 - Bt], ee = at[St];
                                  ut.push(ee[0], ee[1], ee[2]);
                                  var Lt;
                                  ge ? Lt = ge[St] : _e ? Lt = _e[ur] : Lt = ce, Lt ? this.opacityscale && Se ? nt.push(Lt[0], Lt[1], Lt[2], this.opacity * V((Se[St] - Ve) / (Oe - Ve), this.opacityscale)) : Lt.length === 3 ? nt.push(Lt[0], Lt[1], Lt[2], this.opacity) : (nt.push(Lt[0], Lt[1], Lt[2], Lt[3] * this.opacity), Lt[3] < 1 && (this.hasAlpha = !0)) : nt.push(0.5, 0.5, 0.5, 1);
                                  var te;
                                  ae ? te = ae[St] : Se ? te = [(Se[St] - Ve) / (Oe - Ve), 0] : ze ? te = ze[ur] : Ne ? te = [(Ne[ur] - Ve) / (Oe - Ve), 0] : te = [(ee[2] - Ve) / (Oe - Ve), 0], ct.push(te[0], te[1]);
                                  var Me;
                                  Rt ? Me = Rt[St] : Me = Wt[ur], X.push(Me[0], Me[1], Me[2]), lt.push(ur);
                                }
                                Xt += 1;
                                break;
                            }
                          }
                          this.pointCount = ye, this.edgeCount = Zt, this.triangleCount = Xt, this.pointPositions.update(Gt), this.pointColors.update(Jt), this.pointUVs.update(Qt), this.pointSizes.update(Vt), this.pointIds.update(new Uint32Array(zt)), this.edgePositions.update(pt), this.edgeColors.update(wt), this.edgeUVs.update(Et), this.edgeIds.update(new Uint32Array(Ct)), this.trianglePositions.update(ut), this.triangleColors.update(nt), this.triangleUVs.update(ct), this.triangleNormals.update(X), this.triangleIds.update(new Uint32Array(lt));
                        }
                      }, B.drawTransparent = B.draw = function(et) {
                        et = et || {};
                        for (var Q = this.gl, j = et.model || z, at = et.view || z, ut = et.projection || z, nt = [[-1e6, -1e6, -1e6], [1e6, 1e6, 1e6]], X = 0; X < 3; ++X)
                          nt[0][X] = Math.max(nt[0][X], this.clipBounds[0][X]), nt[1][X] = Math.min(nt[1][X], this.clipBounds[1][X]);
                        var ct = { model: j, view: at, projection: ut, inverseModel: z.slice(), clipBounds: nt, kambient: this.ambientLight, kdiffuse: this.diffuseLight, kspecular: this.specularLight, roughness: this.roughness, fresnel: this.fresnel, eyePosition: [0, 0, 0], lightPosition: [0, 0, 0], contourColor: this.contourColor, texture: 0 };
                        ct.inverseModel = c(ct.inverseModel, ct.model), Q.disable(Q.CULL_FACE), this.texture.bind(0);
                        var lt = new Array(16);
                        x(lt, ct.view, ct.model), x(lt, ct.projection, lt), c(lt, lt);
                        for (var X = 0; X < 3; ++X)
                          ct.eyePosition[X] = lt[12 + X] / lt[15];
                        for (var pt = lt[15], X = 0; X < 3; ++X)
                          pt += this.lightPosition[X] * lt[4 * X + 3];
                        for (var X = 0; X < 3; ++X) {
                          for (var wt = lt[12 + X], Et = 0; Et < 3; ++Et)
                            wt += lt[4 * Et + X] * this.lightPosition[Et];
                          ct.lightPosition[X] = wt / pt;
                        }
                        if (this.triangleCount > 0) {
                          var Ct = this.triShader;
                          Ct.bind(), Ct.uniforms = ct, this.triangleVAO.bind(), Q.drawArrays(Q.TRIANGLES, 0, this.triangleCount * 3), this.triangleVAO.unbind();
                        }
                        if (this.edgeCount > 0 && this.lineWidth > 0) {
                          var Ct = this.lineShader;
                          Ct.bind(), Ct.uniforms = ct, this.edgeVAO.bind(), Q.lineWidth(this.lineWidth * this.pixelRatio), Q.drawArrays(Q.LINES, 0, this.edgeCount * 2), this.edgeVAO.unbind();
                        }
                        if (this.pointCount > 0) {
                          var Ct = this.pointShader;
                          Ct.bind(), Ct.uniforms = ct, this.pointVAO.bind(), Q.drawArrays(Q.POINTS, 0, this.pointCount), this.pointVAO.unbind();
                        }
                        if (this.contourEnable && this.contourCount > 0 && this.contourLineWidth > 0) {
                          var Ct = this.contourShader;
                          Ct.bind(), Ct.uniforms = ct, this.contourVAO.bind(), Q.drawArrays(Q.LINES, 0, this.contourCount), this.contourVAO.unbind();
                        }
                      }, B.drawPick = function(et) {
                        et = et || {};
                        for (var Q = this.gl, j = et.model || z, at = et.view || z, ut = et.projection || z, nt = [[-1e6, -1e6, -1e6], [1e6, 1e6, 1e6]], X = 0; X < 3; ++X)
                          nt[0][X] = Math.max(nt[0][X], this.clipBounds[0][X]), nt[1][X] = Math.min(nt[1][X], this.clipBounds[1][X]);
                        this._model = [].slice.call(j), this._view = [].slice.call(at), this._projection = [].slice.call(ut), this._resolution = [Q.drawingBufferWidth, Q.drawingBufferHeight];
                        var ct = { model: j, view: at, projection: ut, clipBounds: nt, pickId: this.pickId / 255 }, lt = this.pickShader;
                        if (lt.bind(), lt.uniforms = ct, this.triangleCount > 0 && (this.triangleVAO.bind(), Q.drawArrays(Q.TRIANGLES, 0, this.triangleCount * 3), this.triangleVAO.unbind()), this.edgeCount > 0 && (this.edgeVAO.bind(), Q.lineWidth(this.lineWidth * this.pixelRatio), Q.drawArrays(Q.LINES, 0, this.edgeCount * 2), this.edgeVAO.unbind()), this.pointCount > 0) {
                          var lt = this.pointPickShader;
                          lt.bind(), lt.uniforms = ct, this.pointVAO.bind(), Q.drawArrays(Q.POINTS, 0, this.pointCount), this.pointVAO.unbind();
                        }
                      }, B.pick = function(et) {
                        if (!et || et.id !== this.pickId)
                          return null;
                        for (var Q = et.value[0] + 256 * et.value[1] + 65536 * et.value[2], j = this.cells[Q], at = this.positions, ut = new Array(j.length), nt = 0; nt < j.length; ++nt)
                          ut[nt] = at[j[nt]];
                        var X = et.coord[0], ct = et.coord[1];
                        if (!this.pickVertex) {
                          var lt = this.positions[j[0]], pt = this.positions[j[1]], wt = this.positions[j[2]], Et = [(lt[0] + pt[0] + wt[0]) / 3, (lt[1] + pt[1] + wt[1]) / 3, (lt[2] + pt[2] + wt[2]) / 3];
                          return { _cellCenter: !0, position: [X, ct], index: Q, cell: j, cellId: Q, intensity: this.intensity[Q], dataCoordinate: Et };
                        }
                        var Ct = C(ut, [X * this.pixelRatio, this._resolution[1] - ct * this.pixelRatio], this._model, this._view, this._projection, this._resolution);
                        if (!Ct)
                          return null;
                        for (var Gt = Ct[2], Jt = 0, nt = 0; nt < j.length; ++nt)
                          Jt += Gt[nt] * this.intensity[j[nt]];
                        return { position: Ct[1], index: j[Ct[0]], cell: j, cellId: Q, intensity: Jt, dataCoordinate: this.positions[j[Ct[0]]] };
                      }, B.dispose = function() {
                        this.texture.dispose(), this.triShader.dispose(), this.lineShader.dispose(), this.pointShader.dispose(), this.pickShader.dispose(), this.pointPickShader.dispose(), this.triangleVAO.dispose(), this.trianglePositions.dispose(), this.triangleColors.dispose(), this.triangleUVs.dispose(), this.triangleNormals.dispose(), this.triangleIds.dispose(), this.edgeVAO.dispose(), this.edgePositions.dispose(), this.edgeColors.dispose(), this.edgeUVs.dispose(), this.edgeIds.dispose(), this.pointVAO.dispose(), this.pointPositions.dispose(), this.pointColors.dispose(), this.pointUVs.dispose(), this.pointSizes.dispose(), this.pointIds.dispose(), this.contourVAO.dispose(), this.contourPositions.dispose(), this.contourShader.dispose();
                      };
                      function F(et) {
                        var Q = a(et, m.vertex, m.fragment);
                        return Q.attributes.position.location = 0, Q.attributes.color.location = 2, Q.attributes.uv.location = 3, Q.attributes.normal.location = 4, Q;
                      }
                      function G(et) {
                        var Q = a(et, L.vertex, L.fragment);
                        return Q.attributes.position.location = 0, Q.attributes.color.location = 2, Q.attributes.uv.location = 3, Q;
                      }
                      function q(et) {
                        var Q = a(et, d.vertex, d.fragment);
                        return Q.attributes.position.location = 0, Q.attributes.color.location = 2, Q.attributes.uv.location = 3, Q.attributes.pointSize.location = 4, Q;
                      }
                      function rt(et) {
                        var Q = a(et, h.vertex, h.fragment);
                        return Q.attributes.position.location = 0, Q.attributes.id.location = 1, Q;
                      }
                      function st(et) {
                        var Q = a(et, E.vertex, E.fragment);
                        return Q.attributes.position.location = 0, Q.attributes.id.location = 1, Q.attributes.pointSize.location = 4, Q;
                      }
                      function vt(et) {
                        var Q = a(et, w.vertex, w.fragment);
                        return Q.attributes.position.location = 0, Q;
                      }
                      function ht(et, Q) {
                        arguments.length === 1 && (Q = et, et = Q.gl);
                        var j = et.getExtension("OES_standard_derivatives") || et.getExtension("MOZ_OES_standard_derivatives") || et.getExtension("WEBKIT_OES_standard_derivatives");
                        if (!j) throw new Error("derivatives not supported");
                        var at = F(et), ut = G(et), nt = q(et), X = rt(et), ct = st(et), lt = vt(et), pt = y(et, v(new Uint8Array([255, 255, 255, 255]), [1, 1, 4]));
                        pt.generateMipmap(), pt.minFilter = et.LINEAR_MIPMAP_LINEAR, pt.magFilter = et.LINEAR;
                        var wt = l(et), Et = l(et), Ct = l(et), Gt = l(et), Jt = l(et), Qt = o(et, [{ buffer: wt, type: et.FLOAT, size: 3 }, { buffer: Jt, type: et.UNSIGNED_BYTE, size: 4, normalized: !0 }, { buffer: Et, type: et.FLOAT, size: 4 }, { buffer: Ct, type: et.FLOAT, size: 2 }, { buffer: Gt, type: et.FLOAT, size: 3 }]), Vt = l(et), zt = l(et), Rt = l(et), Wt = l(et), kt = o(et, [{ buffer: Vt, type: et.FLOAT, size: 3 }, { buffer: Wt, type: et.UNSIGNED_BYTE, size: 4, normalized: !0 }, { buffer: zt, type: et.FLOAT, size: 4 }, { buffer: Rt, type: et.FLOAT, size: 2 }]), re = l(et), ge = l(et), _e = l(et), ce = l(et), ae = l(et), Se = o(et, [{ buffer: re, type: et.FLOAT, size: 3 }, { buffer: ae, type: et.UNSIGNED_BYTE, size: 4, normalized: !0 }, { buffer: ge, type: et.FLOAT, size: 4 }, { buffer: _e, type: et.FLOAT, size: 2 }, { buffer: ce, type: et.FLOAT, size: 1 }]), ze = l(et), Ne = o(et, [{ buffer: ze, type: et.FLOAT, size: 3 }]), Ve = new O(et, pt, at, ut, nt, X, ct, lt, wt, Jt, Et, Ct, Gt, Qt, Vt, Wt, zt, Rt, kt, re, ae, ge, _e, ce, Se, ze, Ne);
                        return Ve.update(Q), Ve;
                      }
                      p.exports = ht;
                    }
                  ),
                  /***/
                  8120: (
                    /***/
                    function(p, u, t) {
                      p.exports = y;
                      var r = t(2762), i = t(9405), a = t(3603);
                      function l(g, x, c) {
                        this.plot = g, this.vbo = x, this.shader = c;
                      }
                      var o = l.prototype;
                      o.bind = function() {
                        var g = this.shader;
                        this.vbo.bind(), this.shader.bind(), g.attributes.coord.pointer(), g.uniforms.screenBox = this.plot.screenBox;
                      }, o.drawBox = /* @__PURE__ */ function() {
                        var g = [0, 0], x = [0, 0];
                        return function(c, v, f, _, S) {
                          var M = this.plot, C = this.shader, m = M.gl;
                          g[0] = c, g[1] = v, x[0] = f, x[1] = _, C.uniforms.lo = g, C.uniforms.hi = x, C.uniforms.color = S, m.drawArrays(m.TRIANGLE_STRIP, 0, 4);
                        };
                      }(), o.dispose = function() {
                        this.vbo.dispose(), this.shader.dispose();
                      };
                      function y(g) {
                        var x = g.gl, c = r(x, [0, 0, 0, 1, 1, 0, 1, 1]), v = i(x, a.boxVert, a.lineFrag);
                        return new l(g, c, v);
                      }
                    }
                  ),
                  /***/
                  1913: (
                    /***/
                    function(p, u, t) {
                      p.exports = x;
                      var r = t(2762), i = t(9405), a = t(2478), l = t(3603);
                      function o(c, v, f, _) {
                        this.plot = c, this.vbo = v, this.shader = f, this.tickShader = _, this.ticks = [[], []];
                      }
                      function y(c, v) {
                        return c - v;
                      }
                      var g = o.prototype;
                      g.draw = /* @__PURE__ */ function() {
                        var c = [0, 0], v = [0, 0], f = [0, 0];
                        return function() {
                          for (var _ = this.plot, S = this.vbo, M = this.shader, C = this.ticks, m = _.gl, L = _._tickBounds, d = _.dataBox, h = _.viewBox, E = _.gridLineWidth, w = _.gridLineColor, z = _.gridLineEnable, O = _.pixelRatio, B = 0; B < 2; ++B) {
                            var V = L[B], U = L[B + 2], H = U - V, F = 0.5 * (d[B + 2] + d[B]), G = d[B + 2] - d[B];
                            v[B] = 2 * H / G, c[B] = 2 * (V - F) / G;
                          }
                          M.bind(), S.bind(), M.attributes.dataCoord.pointer(), M.uniforms.dataShift = c, M.uniforms.dataScale = v;
                          for (var q = 0, B = 0; B < 2; ++B) {
                            f[0] = f[1] = 0, f[B] = 1, M.uniforms.dataAxis = f, M.uniforms.lineWidth = E[B] / (h[B + 2] - h[B]) * O, M.uniforms.color = w[B];
                            var rt = C[B].length * 6;
                            z[B] && rt && m.drawArrays(m.TRIANGLES, q, rt), q += rt;
                          }
                        };
                      }(), g.drawTickMarks = /* @__PURE__ */ function() {
                        var c = [0, 0], v = [0, 0], f = [1, 0], _ = [0, 1], S = [0, 0], M = [0, 0];
                        return function() {
                          for (var C = this.plot, m = this.vbo, L = this.tickShader, d = this.ticks, h = C.gl, E = C._tickBounds, w = C.dataBox, z = C.viewBox, O = C.pixelRatio, B = C.screenBox, V = B[2] - B[0], U = B[3] - B[1], H = z[2] - z[0], F = z[3] - z[1], G = 0; G < 2; ++G) {
                            var q = E[G], rt = E[G + 2], st = rt - q, vt = 0.5 * (w[G + 2] + w[G]), ht = w[G + 2] - w[G];
                            v[G] = 2 * st / ht, c[G] = 2 * (q - vt) / ht;
                          }
                          v[0] *= H / V, c[0] *= H / V, v[1] *= F / U, c[1] *= F / U, L.bind(), m.bind(), L.attributes.dataCoord.pointer();
                          var et = L.uniforms;
                          et.dataShift = c, et.dataScale = v;
                          var Q = C.tickMarkLength, j = C.tickMarkWidth, at = C.tickMarkColor, ut = 0, nt = d[0].length * 6, X = Math.min(a.ge(d[0], (w[0] - E[0]) / (E[2] - E[0]), y), d[0].length), ct = Math.min(a.gt(d[0], (w[2] - E[0]) / (E[2] - E[0]), y), d[0].length), lt = ut + 6 * X, pt = 6 * Math.max(0, ct - X), wt = Math.min(a.ge(d[1], (w[1] - E[1]) / (E[3] - E[1]), y), d[1].length), Et = Math.min(a.gt(d[1], (w[3] - E[1]) / (E[3] - E[1]), y), d[1].length), Ct = nt + 6 * wt, Gt = 6 * Math.max(0, Et - wt);
                          S[0] = 2 * (z[0] - Q[1]) / V - 1, S[1] = (z[3] + z[1]) / U - 1, M[0] = Q[1] * O / V, M[1] = j[1] * O / U, Gt && (et.color = at[1], et.tickScale = M, et.dataAxis = _, et.screenOffset = S, h.drawArrays(h.TRIANGLES, Ct, Gt)), S[0] = (z[2] + z[0]) / V - 1, S[1] = 2 * (z[1] - Q[0]) / U - 1, M[0] = j[0] * O / V, M[1] = Q[0] * O / U, pt && (et.color = at[0], et.tickScale = M, et.dataAxis = f, et.screenOffset = S, h.drawArrays(h.TRIANGLES, lt, pt)), S[0] = 2 * (z[2] + Q[3]) / V - 1, S[1] = (z[3] + z[1]) / U - 1, M[0] = Q[3] * O / V, M[1] = j[3] * O / U, Gt && (et.color = at[3], et.tickScale = M, et.dataAxis = _, et.screenOffset = S, h.drawArrays(h.TRIANGLES, Ct, Gt)), S[0] = (z[2] + z[0]) / V - 1, S[1] = 2 * (z[3] + Q[2]) / U - 1, M[0] = j[2] * O / V, M[1] = Q[2] * O / U, pt && (et.color = at[2], et.tickScale = M, et.dataAxis = f, et.screenOffset = S, h.drawArrays(h.TRIANGLES, lt, pt));
                        };
                      }(), g.update = /* @__PURE__ */ function() {
                        var c = [1, 1, -1, -1, 1, -1], v = [1, -1, 1, 1, -1, -1];
                        return function(f) {
                          var _ = f.ticks, S = f.bounds, M = new Float32Array(6 * 3 * (_[0].length + _[1].length));
                          this.plot.zeroLineEnable;
                          for (var C = 0, m = [[], []], L = 0; L < 2; ++L)
                            for (var d = m[L], h = _[L], E = S[L], w = S[L + 2], z = 0; z < h.length; ++z) {
                              var O = (h[z].x - E) / (w - E);
                              d.push(O);
                              for (var B = 0; B < 6; ++B)
                                M[C++] = O, M[C++] = c[B], M[C++] = v[B];
                            }
                          this.ticks = m, this.vbo.update(M);
                        };
                      }(), g.dispose = function() {
                        this.vbo.dispose(), this.shader.dispose(), this.tickShader.dispose();
                      };
                      function x(c) {
                        var v = c.gl, f = r(v), _ = i(v, l.gridVert, l.gridFrag), S = i(v, l.tickVert, l.gridFrag), M = new o(c, f, _, S);
                        return M;
                      }
                    }
                  ),
                  /***/
                  4747: (
                    /***/
                    function(p, u, t) {
                      p.exports = y;
                      var r = t(2762), i = t(9405), a = t(3603);
                      function l(g, x, c) {
                        this.plot = g, this.vbo = x, this.shader = c;
                      }
                      var o = l.prototype;
                      o.bind = function() {
                        var g = this.shader;
                        this.vbo.bind(), this.shader.bind(), g.attributes.coord.pointer(), g.uniforms.screenBox = this.plot.screenBox;
                      }, o.drawLine = /* @__PURE__ */ function() {
                        var g = [0, 0], x = [0, 0];
                        return function(c, v, f, _, S, M) {
                          var C = this.plot, m = this.shader, L = C.gl;
                          g[0] = c, g[1] = v, x[0] = f, x[1] = _, m.uniforms.start = g, m.uniforms.end = x, m.uniforms.width = S * C.pixelRatio, m.uniforms.color = M, L.drawArrays(L.TRIANGLE_STRIP, 0, 4);
                        };
                      }(), o.dispose = function() {
                        this.vbo.dispose(), this.shader.dispose();
                      };
                      function y(g) {
                        var x = g.gl, c = r(x, [-1, -1, -1, 1, 1, -1, 1, 1]), v = i(x, a.lineVert, a.lineFrag), f = new l(g, c, v);
                        return f;
                      }
                    }
                  ),
                  /***/
                  3603: (
                    /***/
                    function(p, u, t) {
                      var r = t(3236), i = r([`precision lowp float;
#define GLSLIFY 1
uniform vec4 color;
void main() {
  gl_FragColor = vec4(color.xyz * color.w, color.w);
}
`]);
                      p.exports = { lineVert: r([`precision mediump float;
#define GLSLIFY 1

attribute vec2 coord;

uniform vec4 screenBox;
uniform vec2 start, end;
uniform float width;

vec2 perp(vec2 v) {
  return vec2(v.y, -v.x);
}

vec2 screen(vec2 v) {
  return 2.0 * (v - screenBox.xy) / (screenBox.zw - screenBox.xy) - 1.0;
}

void main() {
  vec2 delta = normalize(perp(start - end));
  vec2 offset = mix(start, end, 0.5 * (coord.y+1.0));
  gl_Position = vec4(screen(offset + 0.5 * width * delta * coord.x), 0, 1);
}
`]), lineFrag: i, textVert: r([`#define GLSLIFY 1
attribute vec3 textCoordinate;

uniform vec2 dataScale, dataShift, dataAxis, screenOffset, textScale;
uniform float angle;

void main() {
  float dataOffset  = textCoordinate.z;
  vec2 glyphOffset  = textCoordinate.xy;
  mat2 glyphMatrix = mat2(cos(angle), sin(angle), -sin(angle), cos(angle));
  vec2 screenCoordinate = dataAxis * (dataScale * dataOffset + dataShift) +
    glyphMatrix * glyphOffset * textScale + screenOffset;
  gl_Position = vec4(screenCoordinate, 0, 1);
}
`]), textFrag: i, gridVert: r([`precision mediump float;
#define GLSLIFY 1

attribute vec3 dataCoord;

uniform vec2 dataAxis, dataShift, dataScale;
uniform float lineWidth;

void main() {
  vec2 pos = dataAxis * (dataScale * dataCoord.x + dataShift);
  pos += 10.0 * dataCoord.y * vec2(dataAxis.y, -dataAxis.x) + dataCoord.z * lineWidth;
  gl_Position = vec4(pos, 0, 1);
}
`]), gridFrag: i, boxVert: r([`precision mediump float;
#define GLSLIFY 1

attribute vec2 coord;

uniform vec4 screenBox;
uniform vec2 lo, hi;

vec2 screen(vec2 v) {
  return 2.0 * (v - screenBox.xy) / (screenBox.zw - screenBox.xy) - 1.0;
}

void main() {
  gl_Position = vec4(screen(mix(lo, hi, coord)), 0, 1);
}
`]), tickVert: r([`precision mediump float;
#define GLSLIFY 1

attribute vec3 dataCoord;

uniform vec2 dataAxis, dataShift, dataScale, screenOffset, tickScale;

void main() {
  vec2 pos = dataAxis * (dataScale * dataCoord.x + dataShift);
  gl_Position = vec4(pos + tickScale*dataCoord.yz + screenOffset, 0, 1);
}
`]) };
                    }
                  ),
                  /***/
                  2142: (
                    /***/
                    function(p, u, t) {
                      p.exports = x;
                      var r = t(2762), i = t(9405), a = t(529), l = t(2478), o = t(3603);
                      function y(c, v, f) {
                        this.plot = c, this.vbo = v, this.shader = f, this.tickOffset = [[], []], this.tickX = [[], []], this.labelOffset = [0, 0], this.labelCount = [0, 0];
                      }
                      var g = y.prototype;
                      g.drawTicks = /* @__PURE__ */ function() {
                        var c = [0, 0], v = [0, 0], f = [0, 0];
                        return function(_) {
                          var S = this.plot, M = this.shader, C = this.tickX[_], m = this.tickOffset[_], L = S.gl, d = S.viewBox, h = S.dataBox, E = S.screenBox, w = S.pixelRatio, z = S.tickEnable, O = S.tickPad, B = S.tickColor, V = S.tickAngle, U = S.labelEnable, H = S.labelPad, F = S.labelColor, G = S.labelAngle, q = this.labelOffset[_], rt = this.labelCount[_], st = l.lt(C, h[_]), vt = l.le(C, h[_ + 2]);
                          c[0] = c[1] = 0, c[_] = 1, v[_] = (d[2 + _] + d[_]) / (E[2 + _] - E[_]) - 1;
                          var ht = 2 / E[2 + (_ ^ 1)] - E[_ ^ 1];
                          v[_ ^ 1] = ht * d[_ ^ 1] - 1, z[_] && (v[_ ^ 1] -= ht * w * O[_], st < vt && m[vt] > m[st] && (M.uniforms.dataAxis = c, M.uniforms.screenOffset = v, M.uniforms.color = B[_], M.uniforms.angle = V[_], L.drawArrays(L.TRIANGLES, m[st], m[vt] - m[st]))), U[_] && rt && (v[_ ^ 1] -= ht * w * H[_], M.uniforms.dataAxis = f, M.uniforms.screenOffset = v, M.uniforms.color = F[_], M.uniforms.angle = G[_], L.drawArrays(L.TRIANGLES, q, rt)), v[_ ^ 1] = ht * d[2 + (_ ^ 1)] - 1, z[_ + 2] && (v[_ ^ 1] += ht * w * O[_ + 2], st < vt && m[vt] > m[st] && (M.uniforms.dataAxis = c, M.uniforms.screenOffset = v, M.uniforms.color = B[_ + 2], M.uniforms.angle = V[_ + 2], L.drawArrays(L.TRIANGLES, m[st], m[vt] - m[st]))), U[_ + 2] && rt && (v[_ ^ 1] += ht * w * H[_ + 2], M.uniforms.dataAxis = f, M.uniforms.screenOffset = v, M.uniforms.color = F[_ + 2], M.uniforms.angle = G[_ + 2], L.drawArrays(L.TRIANGLES, q, rt));
                        };
                      }(), g.drawTitle = /* @__PURE__ */ function() {
                        var c = [0, 0], v = [0, 0];
                        return function() {
                          var f = this.plot, _ = this.shader, S = f.gl, M = f.screenBox, C = f.titleCenter, m = f.titleAngle, L = f.titleColor, d = f.pixelRatio;
                          if (this.titleCount) {
                            for (var h = 0; h < 2; ++h)
                              v[h] = 2 * (C[h] * d - M[h]) / (M[2 + h] - M[h]) - 1;
                            _.bind(), _.uniforms.dataAxis = c, _.uniforms.screenOffset = v, _.uniforms.angle = m, _.uniforms.color = L, S.drawArrays(S.TRIANGLES, this.titleOffset, this.titleCount);
                          }
                        };
                      }(), g.bind = /* @__PURE__ */ function() {
                        var c = [0, 0], v = [0, 0], f = [0, 0];
                        return function() {
                          var _ = this.plot, S = this.shader, M = _._tickBounds, C = _.dataBox, m = _.screenBox, L = _.viewBox;
                          S.bind();
                          for (var d = 0; d < 2; ++d) {
                            var h = M[d], E = M[d + 2], w = E - h, z = 0.5 * (C[d + 2] + C[d]), O = C[d + 2] - C[d], B = L[d], V = L[d + 2], U = V - B, H = m[d], F = m[d + 2], G = F - H;
                            v[d] = 2 * w / O * U / G, c[d] = 2 * (h - z) / O * U / G;
                          }
                          f[1] = 2 * _.pixelRatio / (m[3] - m[1]), f[0] = f[1] * (m[3] - m[1]) / (m[2] - m[0]), S.uniforms.dataScale = v, S.uniforms.dataShift = c, S.uniforms.textScale = f, this.vbo.bind(), S.attributes.textCoordinate.pointer();
                        };
                      }(), g.update = function(c) {
                        var v = [], f = c.ticks, _ = c.bounds, S, M, C, m, L;
                        for (L = 0; L < 2; ++L) {
                          var d = [Math.floor(v.length / 3)], h = [-1 / 0], E = f[L];
                          for (S = 0; S < E.length; ++S) {
                            var w = E[S], z = w.x, O = w.text, B = w.font || "sans-serif", V = w.fontStyle || "normal", U = w.fontWeight || "normal", H = w.fontVariant || "normal";
                            m = w.fontSize || 12;
                            for (var F = 1 / (_[L + 2] - _[L]), G = _[L], q = O.split(`
`), rt = 0; rt < q.length; rt++)
                              for (C = a(B, q[rt], { fontStyle: V, fontWeight: U, fontVariant: H }).data, M = 0; M < C.length; M += 2)
                                v.push(C[M] * m, -C[M + 1] * m - rt * m * 1.2, (z - G) * F);
                            d.push(Math.floor(v.length / 3)), h.push(z);
                          }
                          this.tickOffset[L] = d, this.tickX[L] = h;
                        }
                        for (L = 0; L < 2; ++L) {
                          for (this.labelOffset[L] = Math.floor(v.length / 3), C = a(c.labelFont[L], c.labels[L], { fontStyle: c.labelFontStyle[L], fontWeight: c.labelFontWeight[L], fontVariant: c.labelFontVariant[L], textAlign: "center" }).data, m = c.labelSize[L], S = 0; S < C.length; S += 2)
                            v.push(C[S] * m, -C[S + 1] * m, 0);
                          this.labelCount[L] = Math.floor(v.length / 3) - this.labelOffset[L];
                        }
                        for (this.titleOffset = Math.floor(v.length / 3), C = a(c.titleFont, c.title, { fontStyle: c.titleFontStyle, fontWeight: c.titleFontWeight, fontVariant: c.titleFontVariant }).data, m = c.titleSize, S = 0; S < C.length; S += 2)
                          v.push(C[S] * m, -C[S + 1] * m, 0);
                        this.titleCount = Math.floor(v.length / 3) - this.titleOffset, this.vbo.update(v);
                      }, g.dispose = function() {
                        this.vbo.dispose(), this.shader.dispose();
                      };
                      function x(c) {
                        var v = c.gl, f = r(v), _ = i(v, o.textVert, o.textFrag), S = new y(c, f, _);
                        return S;
                      }
                    }
                  ),
                  /***/
                  1850: (
                    /***/
                    function(p, u, t) {
                      p.exports = v;
                      var r = t(3589), i = t(1913), a = t(2142), l = t(4747), o = t(8120);
                      function y(f, _) {
                        this.gl = f, this.pickBuffer = _, this.screenBox = [0, 0, f.drawingBufferWidth, f.drawingBufferHeight], this.viewBox = [0, 0, 0, 0], this.dataBox = [-10, -10, 10, 10], this.gridLineEnable = [!0, !0], this.gridLineWidth = [1, 1], this.gridLineColor = [[0, 0, 0, 1], [0, 0, 0, 1]], this.pixelRatio = 1, this.tickMarkLength = [0, 0, 0, 0], this.tickMarkWidth = [0, 0, 0, 0], this.tickMarkColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]], this.tickPad = [15, 15, 15, 15], this.tickAngle = [0, 0, 0, 0], this.tickEnable = [!0, !0, !0, !0], this.tickColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]], this.labelPad = [15, 15, 15, 15], this.labelAngle = [0, Math.PI / 2, 0, 3 * Math.PI / 2], this.labelEnable = [!0, !0, !0, !0], this.labelColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]], this.titleCenter = [0, 0], this.titleEnable = !0, this.titleAngle = 0, this.titleColor = [0, 0, 0, 1], this.borderColor = [0, 0, 0, 0], this.backgroundColor = [0, 0, 0, 0], this.zeroLineEnable = [!0, !0], this.zeroLineWidth = [4, 4], this.zeroLineColor = [[0, 0, 0, 1], [0, 0, 0, 1]], this.borderLineEnable = [!0, !0, !0, !0], this.borderLineWidth = [2, 2, 2, 2], this.borderLineColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]], this.grid = null, this.text = null, this.line = null, this.box = null, this.objects = [], this.overlays = [], this._tickBounds = [1 / 0, 1 / 0, -1 / 0, -1 / 0], this.static = !1, this.dirty = !1, this.pickDirty = !1, this.pickDelay = 120, this.pickRadius = 10, this._pickTimeout = null, this._drawPick = this.drawPick.bind(this), this._depthCounter = 0;
                      }
                      var g = y.prototype;
                      g.setDirty = function() {
                        this.dirty = this.pickDirty = !0;
                      }, g.setOverlayDirty = function() {
                        this.dirty = !0;
                      }, g.nextDepthValue = function() {
                        return this._depthCounter++ / 65536;
                      }, g.draw = /* @__PURE__ */ function() {
                        return function() {
                          var f = this.gl, _ = this.screenBox, S = this.viewBox, M = this.dataBox, C = this.pixelRatio, m = this.grid, L = this.line, d = this.text, h = this.objects;
                          if (this._depthCounter = 0, this.pickDirty && (this._pickTimeout && clearTimeout(this._pickTimeout), this.pickDirty = !1, this._pickTimeout = setTimeout(this._drawPick, this.pickDelay)), !!this.dirty) {
                            if (this.dirty = !1, f.bindFramebuffer(f.FRAMEBUFFER, null), f.enable(f.SCISSOR_TEST), f.disable(f.DEPTH_TEST), f.depthFunc(f.LESS), f.depthMask(!1), f.enable(f.BLEND), f.blendEquation(f.FUNC_ADD, f.FUNC_ADD), f.blendFunc(f.ONE, f.ONE_MINUS_SRC_ALPHA), this.borderColor) {
                              f.scissor(_[0], _[1], _[2] - _[0], _[3] - _[1]);
                              var E = this.borderColor;
                              f.clearColor(E[0] * E[3], E[1] * E[3], E[2] * E[3], E[3]), f.clear(f.COLOR_BUFFER_BIT | f.DEPTH_BUFFER_BIT);
                            }
                            f.scissor(S[0], S[1], S[2] - S[0], S[3] - S[1]), f.viewport(S[0], S[1], S[2] - S[0], S[3] - S[1]);
                            var w = this.backgroundColor;
                            f.clearColor(w[0] * w[3], w[1] * w[3], w[2] * w[3], w[3]), f.clear(f.COLOR_BUFFER_BIT), m.draw();
                            var z = this.zeroLineEnable, O = this.zeroLineColor, B = this.zeroLineWidth;
                            if (z[0] || z[1]) {
                              L.bind();
                              for (var V = 0; V < 2; ++V)
                                if (!(!z[V] || !(M[V] <= 0 && M[V + 2] >= 0))) {
                                  var U = _[V] - M[V] * (_[V + 2] - _[V]) / (M[V + 2] - M[V]);
                                  V === 0 ? L.drawLine(U, _[1], U, _[3], B[V], O[V]) : L.drawLine(_[0], U, _[2], U, B[V], O[V]);
                                }
                            }
                            for (var V = 0; V < h.length; ++V)
                              h[V].draw();
                            f.viewport(_[0], _[1], _[2] - _[0], _[3] - _[1]), f.scissor(_[0], _[1], _[2] - _[0], _[3] - _[1]), this.grid.drawTickMarks(), L.bind();
                            var H = this.borderLineEnable, F = this.borderLineWidth, G = this.borderLineColor;
                            H[1] && L.drawLine(S[0], S[1] - 0.5 * F[1] * C, S[0], S[3] + 0.5 * F[3] * C, F[1], G[1]), H[0] && L.drawLine(S[0] - 0.5 * F[0] * C, S[1], S[2] + 0.5 * F[2] * C, S[1], F[0], G[0]), H[3] && L.drawLine(S[2], S[1] - 0.5 * F[1] * C, S[2], S[3] + 0.5 * F[3] * C, F[3], G[3]), H[2] && L.drawLine(S[0] - 0.5 * F[0] * C, S[3], S[2] + 0.5 * F[2] * C, S[3], F[2], G[2]), d.bind();
                            for (var V = 0; V < 2; ++V)
                              d.drawTicks(V);
                            this.titleEnable && d.drawTitle();
                            for (var q = this.overlays, V = 0; V < q.length; ++V)
                              q[V].draw();
                            f.disable(f.SCISSOR_TEST), f.disable(f.BLEND), f.depthMask(!0);
                          }
                        };
                      }(), g.drawPick = /* @__PURE__ */ function() {
                        return function() {
                          if (!this.static) {
                            var f = this.pickBuffer;
                            this.gl, this._pickTimeout = null, f.begin();
                            for (var _ = 1, S = this.objects, M = 0; M < S.length; ++M)
                              _ = S[M].drawPick(_);
                            f.end();
                          }
                        };
                      }(), g.pick = /* @__PURE__ */ function() {
                        return function(f, _) {
                          if (!this.static) {
                            var S = this.pixelRatio, M = this.pickPixelRatio, C = this.viewBox, m = Math.round((f - C[0] / S) * M) | 0, L = Math.round((_ - C[1] / S) * M) | 0, d = this.pickBuffer.query(m, L, this.pickRadius);
                            if (!d)
                              return null;
                            for (var h = d.id + (d.value[0] << 8) + (d.value[1] << 16) + (d.value[2] << 24), E = this.objects, w = 0; w < E.length; ++w) {
                              var z = E[w].pick(m, L, h);
                              if (z)
                                return z;
                            }
                            return null;
                          }
                        };
                      }();
                      function x(f) {
                        for (var _ = f.slice(), S = 0; S < _.length; ++S)
                          _[S] = _[S].slice();
                        return _;
                      }
                      function c(f, _) {
                        return f.x - _.x;
                      }
                      g.setScreenBox = function(f) {
                        var _ = this.screenBox, S = this.pixelRatio;
                        _[0] = Math.round(f[0] * S) | 0, _[1] = Math.round(f[1] * S) | 0, _[2] = Math.round(f[2] * S) | 0, _[3] = Math.round(f[3] * S) | 0, this.setDirty();
                      }, g.setDataBox = function(f) {
                        var _ = this.dataBox, S = _[0] !== f[0] || _[1] !== f[1] || _[2] !== f[2] || _[3] !== f[3];
                        S && (_[0] = f[0], _[1] = f[1], _[2] = f[2], _[3] = f[3], this.setDirty());
                      }, g.setViewBox = function(f) {
                        var _ = this.pixelRatio, S = this.viewBox;
                        S[0] = Math.round(f[0] * _) | 0, S[1] = Math.round(f[1] * _) | 0, S[2] = Math.round(f[2] * _) | 0, S[3] = Math.round(f[3] * _) | 0;
                        var M = this.pickPixelRatio;
                        this.pickBuffer.shape = [Math.round((f[2] - f[0]) * M) | 0, Math.round((f[3] - f[1]) * M) | 0], this.setDirty();
                      }, g.update = function(f) {
                        f = f || {};
                        var _ = this.gl;
                        this.pixelRatio = f.pixelRatio || 1;
                        var S = this.pixelRatio;
                        this.pickPixelRatio = Math.max(S, 1), this.setScreenBox(f.screenBox || [0, 0, _.drawingBufferWidth / S, _.drawingBufferHeight / S]), this.screenBox, this.setViewBox(f.viewBox || [0.125 * (this.screenBox[2] - this.screenBox[0]) / S, 0.125 * (this.screenBox[3] - this.screenBox[1]) / S, 0.875 * (this.screenBox[2] - this.screenBox[0]) / S, 0.875 * (this.screenBox[3] - this.screenBox[1]) / S]);
                        var M = this.viewBox, C = (M[2] - M[0]) / (M[3] - M[1]);
                        this.setDataBox(f.dataBox || [-10, -10 / C, 10, 10 / C]), this.borderColor = f.borderColor !== !1 ? (f.borderColor || [0, 0, 0, 0]).slice() : !1, this.backgroundColor = (f.backgroundColor || [0, 0, 0, 0]).slice(), this.gridLineEnable = (f.gridLineEnable || [!0, !0]).slice(), this.gridLineWidth = (f.gridLineWidth || [1, 1]).slice(), this.gridLineColor = x(f.gridLineColor || [[0.5, 0.5, 0.5, 1], [0.5, 0.5, 0.5, 1]]), this.zeroLineEnable = (f.zeroLineEnable || [!0, !0]).slice(), this.zeroLineWidth = (f.zeroLineWidth || [4, 4]).slice(), this.zeroLineColor = x(f.zeroLineColor || [[0, 0, 0, 1], [0, 0, 0, 1]]), this.tickMarkLength = (f.tickMarkLength || [0, 0, 0, 0]).slice(), this.tickMarkWidth = (f.tickMarkWidth || [0, 0, 0, 0]).slice(), this.tickMarkColor = x(f.tickMarkColor || [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]]), this.titleCenter = (f.titleCenter || [0.5 * (M[0] + M[2]) / S, (M[3] + 120) / S]).slice(), this.titleEnable = !("titleEnable" in f) || !!f.titleEnable, this.titleAngle = f.titleAngle || 0, this.titleColor = (f.titleColor || [0, 0, 0, 1]).slice(), this.labelPad = (f.labelPad || [15, 15, 15, 15]).slice(), this.labelAngle = (f.labelAngle || [0, Math.PI / 2, 0, 3 * Math.PI / 2]).slice(), this.labelEnable = (f.labelEnable || [!0, !0, !0, !0]).slice(), this.labelColor = x(f.labelColor || [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]]), this.tickPad = (f.tickPad || [15, 15, 15, 15]).slice(), this.tickAngle = (f.tickAngle || [0, 0, 0, 0]).slice(), this.tickEnable = (f.tickEnable || [!0, !0, !0, !0]).slice(), this.tickColor = x(f.tickColor || [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]]), this.borderLineEnable = (f.borderLineEnable || [!0, !0, !0, !0]).slice(), this.borderLineWidth = (f.borderLineWidth || [2, 2, 2, 2]).slice(), this.borderLineColor = x(f.borderLineColor || [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]]);
                        var m = f.ticks || [[], []], L = this._tickBounds;
                        L[0] = L[1] = 1 / 0, L[2] = L[3] = -1 / 0;
                        for (var d = 0; d < 2; ++d) {
                          var h = m[d].slice(0);
                          h.length !== 0 && (h.sort(c), L[d] = Math.min(L[d], h[0].x), L[d + 2] = Math.max(L[d + 2], h[h.length - 1].x));
                        }
                        this.grid.update({ bounds: L, ticks: m }), this.text.update({ bounds: L, ticks: m, labels: f.labels || ["x", "y"], labelSize: f.labelSize || [12, 12], labelFont: f.labelFont || ["sans-serif", "sans-serif"], labelFontStyle: f.labelFontStyle || ["normal", "normal"], labelFontWeight: f.labelFontWeight || ["normal", "normal"], labelFontVariant: f.labelFontVariant || ["normal", "normal"], title: f.title || "", titleSize: f.titleSize || 18, titleFont: f.titleFont || "sans-serif", titleFontStyle: f.titleFontStyle || "normal", titleFontWeight: f.titleFontWeight || "normal", titleFontVariant: f.titleFontVariant || "normal" }), this.static = !!f.static, this.setDirty();
                      }, g.dispose = function() {
                        this.box.dispose(), this.grid.dispose(), this.text.dispose(), this.line.dispose();
                        for (var f = this.objects.length - 1; f >= 0; --f)
                          this.objects[f].dispose();
                        this.objects.length = 0;
                        for (var f = this.overlays.length - 1; f >= 0; --f)
                          this.overlays[f].dispose();
                        this.overlays.length = 0, this.gl = null;
                      }, g.addObject = function(f) {
                        this.objects.indexOf(f) < 0 && (this.objects.push(f), this.setDirty());
                      }, g.removeObject = function(f) {
                        for (var _ = this.objects, S = 0; S < _.length; ++S)
                          if (_[S] === f) {
                            _.splice(S, 1), this.setDirty();
                            break;
                          }
                      }, g.addOverlay = function(f) {
                        this.overlays.indexOf(f) < 0 && (this.overlays.push(f), this.setOverlayDirty());
                      }, g.removeOverlay = function(f) {
                        for (var _ = this.overlays, S = 0; S < _.length; ++S)
                          if (_[S] === f) {
                            _.splice(S, 1), this.setOverlayDirty();
                            break;
                          }
                      };
                      function v(f) {
                        var _ = f.gl, S = r(_, [_.drawingBufferWidth, _.drawingBufferHeight]), M = new y(_, S);
                        return M.grid = i(M), M.text = a(M), M.line = l(M), M.box = o(M), M.update(f), M;
                      }
                    }
                  ),
                  /***/
                  4437: (
                    /***/
                    function(p, u, t) {
                      p.exports = g;
                      var r = t(3025), i = t(6296), a = t(351), l = t(8512), o = t(24), y = t(7520);
                      function g(x, c) {
                        x = x || document.body, c = c || {};
                        var v = [0.01, 1 / 0];
                        "distanceLimits" in c && (v[0] = c.distanceLimits[0], v[1] = c.distanceLimits[1]), "zoomMin" in c && (v[0] = c.zoomMin), "zoomMax" in c && (v[1] = c.zoomMax);
                        var f = i({ center: c.center || [0, 0, 0], up: c.up || [0, 1, 0], eye: c.eye || [0, 0, 10], mode: c.mode || "orbit", distanceLimits: v }), _ = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], S = 0, M = x.clientWidth, C = x.clientHeight, m = { keyBindingMode: "rotate", enableWheel: !0, view: f, element: x, delay: c.delay || 16, rotateSpeed: c.rotateSpeed || 1, zoomSpeed: c.zoomSpeed || 1, translateSpeed: c.translateSpeed || 1, flipX: !!c.flipX, flipY: !!c.flipY, modes: f.modes, _ortho: c._ortho || c.projection && c.projection.type === "orthographic" || !1, tick: function() {
                          var L = r(), d = this.delay, h = L - 2 * d;
                          f.idle(L - d), f.recalcMatrix(h), f.flush(L - (100 + d * 2));
                          for (var E = !0, w = f.computedMatrix, z = 0; z < 16; ++z)
                            E = E && _[z] === w[z], _[z] = w[z];
                          var O = x.clientWidth === M && x.clientHeight === C;
                          return M = x.clientWidth, C = x.clientHeight, E ? !O : (S = Math.exp(f.computedRadius[0]), !0);
                        }, lookAt: function(L, d, h) {
                          f.lookAt(f.lastT(), L, d, h);
                        }, rotate: function(L, d, h) {
                          f.rotate(f.lastT(), L, d, h);
                        }, pan: function(L, d, h) {
                          f.pan(f.lastT(), L, d, h);
                        }, translate: function(L, d, h) {
                          f.translate(f.lastT(), L, d, h);
                        } };
                        return Object.defineProperties(m, { matrix: { get: function() {
                          return f.computedMatrix;
                        }, set: function(L) {
                          return f.setMatrix(f.lastT(), L), f.computedMatrix;
                        }, enumerable: !0 }, mode: { get: function() {
                          return f.getMode();
                        }, set: function(L) {
                          var d = f.computedUp.slice(), h = f.computedEye.slice(), E = f.computedCenter.slice();
                          if (f.setMode(L), L === "turntable") {
                            var w = r();
                            f._active.lookAt(w, h, E, d), f._active.lookAt(w + 500, h, E, [0, 0, 1]), f._active.flush(w);
                          }
                          return f.getMode();
                        }, enumerable: !0 }, center: { get: function() {
                          return f.computedCenter;
                        }, set: function(L) {
                          return f.lookAt(f.lastT(), null, L), f.computedCenter;
                        }, enumerable: !0 }, eye: { get: function() {
                          return f.computedEye;
                        }, set: function(L) {
                          return f.lookAt(f.lastT(), L), f.computedEye;
                        }, enumerable: !0 }, up: { get: function() {
                          return f.computedUp;
                        }, set: function(L) {
                          return f.lookAt(f.lastT(), null, null, L), f.computedUp;
                        }, enumerable: !0 }, distance: { get: function() {
                          return S;
                        }, set: function(L) {
                          return f.setDistance(f.lastT(), L), L;
                        }, enumerable: !0 }, distanceLimits: { get: function() {
                          return f.getDistanceLimits(v);
                        }, set: function(L) {
                          return f.setDistanceLimits(L), L;
                        }, enumerable: !0 } }), x.addEventListener("contextmenu", function(L) {
                          return L.preventDefault(), !1;
                        }), m._lastX = -1, m._lastY = -1, m._lastMods = { shift: !1, control: !1, alt: !1, meta: !1 }, m.enableMouseListeners = function() {
                          m.mouseListener = a(x, L), x.addEventListener("touchstart", function(d) {
                            var h = o(d.changedTouches[0], x);
                            L(0, h[0], h[1], m._lastMods), L(1, h[0], h[1], m._lastMods);
                          }, y ? { passive: !0 } : !1), x.addEventListener("touchmove", function(d) {
                            var h = o(d.changedTouches[0], x);
                            L(1, h[0], h[1], m._lastMods), d.preventDefault();
                          }, y ? { passive: !1 } : !1), x.addEventListener("touchend", function(d) {
                            L(0, m._lastX, m._lastY, m._lastMods);
                          }, y ? { passive: !0 } : !1);
                          function L(d, h, E, w) {
                            var z = m.keyBindingMode;
                            if (z !== !1) {
                              var O = z === "rotate", B = z === "pan", V = z === "zoom", U = !!w.control, H = !!w.alt, F = !!w.shift, G = !!(d & 1), q = !!(d & 2), rt = !!(d & 4), st = 1 / x.clientHeight, vt = st * (h - m._lastX), ht = st * (E - m._lastY), et = m.flipX ? 1 : -1, Q = m.flipY ? 1 : -1, j = Math.PI * m.rotateSpeed, at = r();
                              if (m._lastX !== -1 && m._lastY !== -1 && ((O && G && !U && !H && !F || G && !U && !H && F) && f.rotate(at, et * j * vt, -Q * j * ht, 0), (B && G && !U && !H && !F || q || G && U && !H && !F) && f.pan(at, -m.translateSpeed * vt * S, m.translateSpeed * ht * S, 0), V && G && !U && !H && !F || rt || G && !U && H && !F)) {
                                var ut = -m.zoomSpeed * ht / window.innerHeight * (at - f.lastT()) * 100;
                                f.pan(at, 0, 0, S * (Math.exp(ut) - 1));
                              }
                              return m._lastX = h, m._lastY = E, m._lastMods = w, !0;
                            }
                          }
                          m.wheelListener = l(x, function(d, h) {
                            if (m.keyBindingMode !== !1 && m.enableWheel) {
                              var E = m.flipX ? 1 : -1, w = m.flipY ? 1 : -1, z = r();
                              if (Math.abs(d) > Math.abs(h))
                                f.rotate(z, 0, 0, -d * E * Math.PI * m.rotateSpeed / window.innerWidth);
                              else if (!m._ortho) {
                                var O = -m.zoomSpeed * w * h / window.innerHeight * (z - f.lastT()) / 20;
                                f.pan(z, 0, 0, S * (Math.exp(O) - 1));
                              }
                            }
                          }, !0);
                        }, m.enableMouseListeners(), m;
                      }
                    }
                  ),
                  /***/
                  799: (
                    /***/
                    function(p, u, t) {
                      var r = t(3236), i = t(9405), a = r([`precision mediump float;
#define GLSLIFY 1
attribute vec2 position;
varying vec2 uv;
void main() {
  uv = position;
  gl_Position = vec4(position, 0, 1);
}`]), l = r([`precision mediump float;
#define GLSLIFY 1

uniform sampler2D accumBuffer;
varying vec2 uv;

void main() {
  vec4 accum = texture2D(accumBuffer, 0.5 * (uv + 1.0));
  gl_FragColor = min(vec4(1,1,1,1), accum);
}`]);
                      p.exports = function(o) {
                        return i(o, a, l, null, [{ name: "position", type: "vec2" }]);
                      };
                    }
                  ),
                  /***/
                  4100: (
                    /***/
                    function(p, u, t) {
                      var r = t(4437), i = t(3837), a = t(5445), l = t(4449), o = t(3589), y = t(2260), g = t(7169), x = t(351), c = t(4772), v = t(4040), f = t(799), _ = t(9216)({ tablet: !0, featureDetect: !0 });
                      p.exports = { createScene: L, createCamera: r };
                      function S() {
                        this.mouse = [-1, -1], this.screen = null, this.distance = 1 / 0, this.index = null, this.dataCoordinate = null, this.dataPosition = null, this.object = null, this.data = null;
                      }
                      function M(h, E) {
                        var w = null;
                        try {
                          w = h.getContext("webgl", E), w || (w = h.getContext("experimental-webgl", E));
                        } catch {
                          return null;
                        }
                        return w;
                      }
                      function C(h) {
                        var E = Math.round(Math.log(Math.abs(h)) / Math.log(10));
                        if (E < 0) {
                          var w = Math.round(Math.pow(10, -E));
                          return Math.ceil(h * w) / w;
                        } else if (E > 0) {
                          var w = Math.round(Math.pow(10, E));
                          return Math.ceil(h / w) * w;
                        }
                        return Math.ceil(h);
                      }
                      function m(h) {
                        return typeof h == "boolean" ? h : !0;
                      }
                      function L(h) {
                        h = h || {}, h.camera = h.camera || {};
                        var E = h.canvas;
                        if (!E)
                          if (E = document.createElement("canvas"), h.container) {
                            var w = h.container;
                            w.appendChild(E);
                          } else
                            document.body.appendChild(E);
                        var z = h.gl;
                        if (z || (h.glOptions && (_ = !!h.glOptions.preserveDrawingBuffer), z = M(E, h.glOptions || { premultipliedAlpha: !0, antialias: !0, preserveDrawingBuffer: _ })), !z)
                          throw new Error("webgl not supported");
                        var O = h.bounds || [[-10, -10, -10], [10, 10, 10]], B = new S(), V = y(z, z.drawingBufferWidth, z.drawingBufferHeight, { preferFloat: !_ }), U = f(z), H = h.cameraObject && h.cameraObject._ortho === !0 || h.camera.projection && h.camera.projection.type === "orthographic" || !1, F = { eye: h.camera.eye || [2, 0, 0], center: h.camera.center || [0, 0, 0], up: h.camera.up || [0, 1, 0], zoomMin: h.camera.zoomMax || 0.1, zoomMax: h.camera.zoomMin || 100, mode: h.camera.mode || "turntable", _ortho: H }, G = h.axes || {}, q = i(z, G);
                        q.enable = !G.disable;
                        var rt = h.spikes || {}, st = l(z, rt), vt = [], ht = [], et = [], Q = [], j = !0, X = !0, at = new Array(16), ut = new Array(16), nt = { view: null, projection: at, model: ut, _ortho: !1 }, X = !0, ct = [z.drawingBufferWidth, z.drawingBufferHeight], lt = h.cameraObject || r(E, F), pt = { gl: z, contextLost: !1, pixelRatio: h.pixelRatio || 1, canvas: E, selection: B, camera: lt, axes: q, axesPixels: null, spikes: st, bounds: O, objects: vt, shape: ct, aspect: h.aspectRatio || [1, 1, 1], pickRadius: h.pickRadius || 10, zNear: h.zNear || 0.01, zFar: h.zFar || 1e3, fovy: h.fovy || Math.PI / 4, clearColor: h.clearColor || [0, 0, 0, 0], autoResize: m(h.autoResize), autoBounds: m(h.autoBounds), autoScale: !!h.autoScale, autoCenter: m(h.autoCenter), clipToBounds: m(h.clipToBounds), snapToData: !!h.snapToData, onselect: h.onselect || null, onrender: h.onrender || null, onclick: h.onclick || null, cameraParams: nt, oncontextloss: null, mouseListener: null, _stopped: !1, getAspectratio: function() {
                          return { x: this.aspect[0], y: this.aspect[1], z: this.aspect[2] };
                        }, setAspectratio: function(Wt) {
                          this.aspect[0] = Wt.x, this.aspect[1] = Wt.y, this.aspect[2] = Wt.z, X = !0;
                        }, setBounds: function(Wt, kt) {
                          this.bounds[0][Wt] = kt.min, this.bounds[1][Wt] = kt.max;
                        }, setClearColor: function(Wt) {
                          this.clearColor = Wt;
                        }, clearRGBA: function() {
                          this.gl.clearColor(this.clearColor[0], this.clearColor[1], this.clearColor[2], this.clearColor[3]), this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT);
                        } }, wt = [z.drawingBufferWidth / pt.pixelRatio | 0, z.drawingBufferHeight / pt.pixelRatio | 0];
                        function Et() {
                          if (!pt._stopped && pt.autoResize) {
                            var Wt = E.parentNode, kt = 1, re = 1;
                            Wt && Wt !== document.body ? (kt = Wt.clientWidth, re = Wt.clientHeight) : (kt = window.innerWidth, re = window.innerHeight);
                            var ge = Math.ceil(kt * pt.pixelRatio) | 0, _e = Math.ceil(re * pt.pixelRatio) | 0;
                            if (ge !== E.width || _e !== E.height) {
                              E.width = ge, E.height = _e;
                              var ce = E.style;
                              ce.position = ce.position || "absolute", ce.left = "0px", ce.top = "0px", ce.width = kt + "px", ce.height = re + "px", j = !0;
                            }
                          }
                        }
                        pt.autoResize && Et(), window.addEventListener("resize", Et);
                        function Ct() {
                          for (var Wt = vt.length, kt = Q.length, re = 0; re < kt; ++re)
                            et[re] = 0;
                          t: for (var re = 0; re < Wt; ++re) {
                            var ge = vt[re], _e = ge.pickSlots;
                            if (!_e) {
                              ht[re] = -1;
                              continue;
                            }
                            for (var ce = 0; ce < kt; ++ce)
                              if (et[ce] + _e < 255) {
                                ht[re] = ce, ge.setPickBase(et[ce] + 1), et[ce] += _e;
                                continue t;
                              }
                            var ae = o(z, ct);
                            ht[re] = kt, Q.push(ae), et.push(_e), ge.setPickBase(1), kt += 1;
                          }
                          for (; kt > 0 && et[kt - 1] === 0; )
                            et.pop(), Q.pop().dispose();
                        }
                        pt.update = function(Wt) {
                          pt._stopped || (j = !0, X = !0);
                        }, pt.add = function(Wt) {
                          pt._stopped || (Wt.axes = q, vt.push(Wt), ht.push(-1), j = !0, X = !0, Ct());
                        }, pt.remove = function(Wt) {
                          if (!pt._stopped) {
                            var kt = vt.indexOf(Wt);
                            kt < 0 || (vt.splice(kt, 1), ht.pop(), j = !0, X = !0, Ct());
                          }
                        }, pt.dispose = function() {
                          if (!pt._stopped && (pt._stopped = !0, window.removeEventListener("resize", Et), E.removeEventListener("webglcontextlost", Gt), pt.mouseListener.enabled = !1, !pt.contextLost)) {
                            q.dispose(), st.dispose();
                            for (var Wt = 0; Wt < vt.length; ++Wt)
                              vt[Wt].dispose();
                            V.dispose();
                            for (var Wt = 0; Wt < Q.length; ++Wt)
                              Q[Wt].dispose();
                            U.dispose(), z = null, q = null, st = null, vt = [];
                          }
                        }, pt._mouseRotating = !1, pt._prevButtons = 0, pt.enableMouseListeners = function() {
                          pt.mouseListener = x(E, function(Wt, kt, re) {
                            if (!pt._stopped) {
                              var ge = Q.length, _e = vt.length, ce = B.object;
                              B.distance = 1 / 0, B.mouse[0] = kt, B.mouse[1] = re, B.object = null, B.screen = null, B.dataCoordinate = B.dataPosition = null;
                              var ae = !1;
                              if (Wt && pt._prevButtons)
                                pt._mouseRotating = !0;
                              else {
                                pt._mouseRotating && (X = !0), pt._mouseRotating = !1;
                                for (var Se = 0; Se < ge; ++Se) {
                                  var ze = Q[Se].query(kt, wt[1] - re - 1, pt.pickRadius);
                                  if (ze) {
                                    if (ze.distance > B.distance)
                                      continue;
                                    for (var Ne = 0; Ne < _e; ++Ne) {
                                      var Ve = vt[Ne];
                                      if (ht[Ne] === Se) {
                                        var Oe = Ve.pick(ze);
                                        Oe && (B.buttons = Wt, B.screen = ze.coord, B.distance = ze.distance, B.object = Ve, B.index = Oe.distance, B.dataPosition = Oe.position, B.dataCoordinate = Oe.dataCoordinate, B.data = Oe, ae = !0);
                                      }
                                    }
                                  }
                                }
                              }
                              ce && ce !== B.object && (ce.highlight && ce.highlight(null), j = !0), B.object && (B.object.highlight && B.object.highlight(B.data), j = !0), ae = ae || B.object !== ce, ae && pt.onselect && pt.onselect(B), Wt & 1 && !(pt._prevButtons & 1) && pt.onclick && pt.onclick(B), pt._prevButtons = Wt;
                            }
                          });
                        };
                        function Gt() {
                          if (pt.contextLost)
                            return !0;
                          z.isContextLost() && (pt.contextLost = !0, pt.mouseListener.enabled = !1, pt.selection.object = null, pt.oncontextloss && pt.oncontextloss());
                        }
                        E.addEventListener("webglcontextlost", Gt);
                        function Jt() {
                          if (!Gt()) {
                            z.colorMask(!0, !0, !0, !0), z.depthMask(!0), z.disable(z.BLEND), z.enable(z.DEPTH_TEST), z.depthFunc(z.LEQUAL);
                            for (var Wt = vt.length, kt = Q.length, re = 0; re < kt; ++re) {
                              var ge = Q[re];
                              ge.shape = wt, ge.begin();
                              for (var _e = 0; _e < Wt; ++_e)
                                if (ht[_e] === re) {
                                  var ce = vt[_e];
                                  ce.drawPick && (ce.pixelRatio = 1, ce.drawPick(nt));
                                }
                              ge.end();
                            }
                          }
                        }
                        var Qt = [[1 / 0, 1 / 0, 1 / 0], [-1 / 0, -1 / 0, -1 / 0]], Vt = [Qt[0].slice(), Qt[1].slice()];
                        function zt() {
                          if (!Gt()) {
                            Et();
                            var Wt = pt.camera.tick();
                            nt.view = pt.camera.matrix, j = j || Wt, X = X || Wt, q.pixelRatio = pt.pixelRatio, st.pixelRatio = pt.pixelRatio;
                            var kt = vt.length, re = Qt[0], ge = Qt[1];
                            re[0] = re[1] = re[2] = 1 / 0, ge[0] = ge[1] = ge[2] = -1 / 0;
                            for (var _e = 0; _e < kt; ++_e) {
                              var ce = vt[_e];
                              ce.pixelRatio = pt.pixelRatio, ce.axes = pt.axes, j = j || !!ce.dirty, X = X || !!ce.dirty;
                              var ae = ce.bounds;
                              if (ae)
                                for (var Se = ae[0], ze = ae[1], Ne = 0; Ne < 3; ++Ne)
                                  re[Ne] = Math.min(re[Ne], Se[Ne]), ge[Ne] = Math.max(ge[Ne], ze[Ne]);
                            }
                            var Ve = pt.bounds;
                            if (pt.autoBounds)
                              for (var Ne = 0; Ne < 3; ++Ne) {
                                if (ge[Ne] < re[Ne])
                                  re[Ne] = -1, ge[Ne] = 1;
                                else {
                                  re[Ne] === ge[Ne] && (re[Ne] -= 1, ge[Ne] += 1);
                                  var Oe = 0.05 * (ge[Ne] - re[Ne]);
                                  re[Ne] = re[Ne] - Oe, ge[Ne] = ge[Ne] + Oe;
                                }
                                Ve[0][Ne] = re[Ne], Ve[1][Ne] = ge[Ne];
                              }
                            for (var ur = !1, Ne = 0; Ne < 3; ++Ne)
                              ur = ur || Vt[0][Ne] !== Ve[0][Ne] || Vt[1][Ne] !== Ve[1][Ne], Vt[0][Ne] = Ve[0][Ne], Vt[1][Ne] = Ve[1][Ne];
                            if (X = X || ur, j = j || ur, !!j) {
                              if (ur) {
                                for (var ie = [0, 0, 0], _e = 0; _e < 3; ++_e)
                                  ie[_e] = C((Ve[1][_e] - Ve[0][_e]) / 10);
                                q.autoTicks ? q.update({ bounds: Ve, tickSpacing: ie }) : q.update({ bounds: Ve });
                              }
                              var $t = z.drawingBufferWidth, jt = z.drawingBufferHeight;
                              ct[0] = $t, ct[1] = jt, wt[0] = Math.max($t / pt.pixelRatio, 1) | 0, wt[1] = Math.max(jt / pt.pixelRatio, 1) | 0, d(pt, H);
                              for (var _e = 0; _e < kt; ++_e) {
                                var ce = vt[_e];
                                ce.axesBounds = Ve, pt.clipToBounds && (ce.clipBounds = Ve);
                              }
                              B.object && (pt.snapToData ? st.position = B.dataCoordinate : st.position = B.dataPosition, st.bounds = Ve), X && (X = !1, Jt()), pt.axesPixels = a(pt.axes, nt, $t, jt), pt.onrender && pt.onrender(), z.bindFramebuffer(z.FRAMEBUFFER, null), z.viewport(0, 0, $t, jt), pt.clearRGBA(), z.depthMask(!0), z.colorMask(!0, !0, !0, !0), z.enable(z.DEPTH_TEST), z.depthFunc(z.LEQUAL), z.disable(z.BLEND), z.disable(z.CULL_FACE);
                              var ee = !1;
                              q.enable && (ee = ee || q.isTransparent(), q.draw(nt)), st.axes = q, B.object && st.draw(nt), z.disable(z.CULL_FACE);
                              for (var _e = 0; _e < kt; ++_e) {
                                var ce = vt[_e];
                                ce.axes = q, ce.pixelRatio = pt.pixelRatio, ce.isOpaque && ce.isOpaque() && ce.draw(nt), ce.isTransparent && ce.isTransparent() && (ee = !0);
                              }
                              if (ee) {
                                V.shape = ct, V.bind(), z.clear(z.DEPTH_BUFFER_BIT), z.colorMask(!1, !1, !1, !1), z.depthMask(!0), z.depthFunc(z.LESS), q.enable && q.isTransparent() && q.drawTransparent(nt);
                                for (var _e = 0; _e < kt; ++_e) {
                                  var ce = vt[_e];
                                  ce.isOpaque && ce.isOpaque() && ce.draw(nt);
                                }
                                z.enable(z.BLEND), z.blendEquation(z.FUNC_ADD), z.blendFunc(z.ONE, z.ONE_MINUS_SRC_ALPHA), z.colorMask(!0, !0, !0, !0), z.depthMask(!1), z.clearColor(0, 0, 0, 0), z.clear(z.COLOR_BUFFER_BIT), q.isTransparent() && q.drawTransparent(nt);
                                for (var _e = 0; _e < kt; ++_e) {
                                  var ce = vt[_e];
                                  ce.isTransparent && ce.isTransparent() && ce.drawTransparent(nt);
                                }
                                z.bindFramebuffer(z.FRAMEBUFFER, null), z.blendFunc(z.ONE, z.ONE_MINUS_SRC_ALPHA), z.disable(z.DEPTH_TEST), U.bind(), V.color[0].bind(0), U.uniforms.accumBuffer = 0, g(z), z.disable(z.BLEND);
                              }
                              j = !1;
                              for (var _e = 0; _e < kt; ++_e)
                                vt[_e].dirty = !1;
                            }
                          }
                        }
                        function Rt() {
                          pt._stopped || pt.contextLost || (zt(), requestAnimationFrame(Rt));
                        }
                        return pt.enableMouseListeners(), Rt(), pt.redraw = function() {
                          pt._stopped || (j = !0, zt());
                        }, pt;
                      }
                      function d(h, E) {
                        var w = h.bounds, z = h.cameraParams, O = z.projection, B = z.model, V = h.gl.drawingBufferWidth, U = h.gl.drawingBufferHeight, H = h.zNear, F = h.zFar, G = h.fovy, q = V / U;
                        E ? (v(O, -q, q, -1, 1, H, F), z._ortho = !0) : (c(O, G, q, H, F), z._ortho = !1);
                        for (var rt = 0; rt < 16; ++rt)
                          B[rt] = 0;
                        B[15] = 1;
                        for (var st = 0, rt = 0; rt < 3; ++rt)
                          st = Math.max(st, w[1][rt] - w[0][rt]);
                        for (var rt = 0; rt < 3; ++rt)
                          h.autoScale ? B[5 * rt] = h.aspect[rt] / (w[1][rt] - w[0][rt]) : B[5 * rt] = 1 / st, h.autoCenter && (B[12 + rt] = -B[5 * rt] * 0.5 * (w[0][rt] + w[1][rt]));
                      }
                    }
                  ),
                  /***/
                  6640: (
                    /***/
                    function(p, u, t) {
                      var r = t(3236);
                      u.pointVertex = r([`precision mediump float;
#define GLSLIFY 1

attribute vec2 position;

uniform mat3 matrix;
uniform float pointSize;
uniform float pointCloud;

highp float rand(vec2 co) {
  highp float a = 12.9898;
  highp float b = 78.233;
  highp float c = 43758.5453;
  highp float d = dot(co.xy, vec2(a, b));
  highp float e = mod(d, 3.14);
  return fract(sin(e) * c);
}

void main() {
  vec3 hgPosition = matrix * vec3(position, 1);
  gl_Position  = vec4(hgPosition.xy, 0, hgPosition.z);
    // if we don't jitter the point size a bit, overall point cloud
    // saturation 'jumps' on zooming, which is disturbing and confusing
  gl_PointSize = pointSize * ((19.5 + rand(position)) / 20.0);
  if(pointCloud != 0.0) { // pointCloud is truthy
    // get the same square surface as circle would be
    gl_PointSize *= 0.886;
  }
}`]), u.pointFragment = r([`precision mediump float;
#define GLSLIFY 1

uniform vec4 color, borderColor;
uniform float centerFraction;
uniform float pointCloud;

void main() {
  float radius;
  vec4 baseColor;
  if(pointCloud != 0.0) { // pointCloud is truthy
    if(centerFraction == 1.0) {
      gl_FragColor = color;
    } else {
      gl_FragColor = mix(borderColor, color, centerFraction);
    }
  } else {
    radius = length(2.0 * gl_PointCoord.xy - 1.0);
    if(radius > 1.0) {
      discard;
    }
    baseColor = mix(borderColor, color, step(radius, centerFraction));
    gl_FragColor = vec4(baseColor.rgb * baseColor.a, baseColor.a);
  }
}
`]), u.pickVertex = r([`precision mediump float;
#define GLSLIFY 1

attribute vec2 position;
attribute vec4 pickId;

uniform mat3 matrix;
uniform float pointSize;
uniform vec4 pickOffset;

varying vec4 fragId;

void main() {
  vec3 hgPosition = matrix * vec3(position, 1);
  gl_Position  = vec4(hgPosition.xy, 0, hgPosition.z);
  gl_PointSize = pointSize;

  vec4 id = pickId + pickOffset;
  id.y += floor(id.x / 256.0);
  id.x -= floor(id.x / 256.0) * 256.0;

  id.z += floor(id.y / 256.0);
  id.y -= floor(id.y / 256.0) * 256.0;

  id.w += floor(id.z / 256.0);
  id.z -= floor(id.z / 256.0) * 256.0;

  fragId = id;
}
`]), u.pickFragment = r([`precision mediump float;
#define GLSLIFY 1

varying vec4 fragId;

void main() {
  float radius = length(2.0 * gl_PointCoord.xy - 1.0);
  if(radius > 1.0) {
    discard;
  }
  gl_FragColor = fragId / 255.0;
}
`]);
                    }
                  ),
                  /***/
                  4696: (
                    /***/
                    function(p, u, t) {
                      var r = t(9405), i = t(2762), a = t(1888), l = t(6640);
                      p.exports = x;
                      function o(c, v, f, _, S) {
                        this.plot = c, this.offsetBuffer = v, this.pickBuffer = f, this.shader = _, this.pickShader = S, this.sizeMin = 0.5, this.sizeMinCap = 2, this.sizeMax = 20, this.areaRatio = 1, this.pointCount = 0, this.color = [1, 0, 0, 1], this.borderColor = [0, 0, 0, 1], this.blend = !1, this.pickOffset = 0, this.points = null;
                      }
                      var y = o.prototype;
                      y.dispose = function() {
                        this.shader.dispose(), this.pickShader.dispose(), this.offsetBuffer.dispose(), this.pickBuffer.dispose(), this.plot.removeObject(this);
                      }, y.update = function(c) {
                        var v;
                        c = c || {};
                        function f(d, h) {
                          return d in c ? c[d] : h;
                        }
                        this.sizeMin = f("sizeMin", 0.5), this.sizeMax = f("sizeMax", 20), this.color = f("color", [1, 0, 0, 1]).slice(), this.areaRatio = f("areaRatio", 1), this.borderColor = f("borderColor", [0, 0, 0, 1]).slice(), this.blend = f("blend", !1);
                        var _ = c.positions.length >>> 1, S = c.positions instanceof Float32Array, M = c.idToIndex instanceof Int32Array && c.idToIndex.length >= _, C = c.positions, m = S ? C : a.mallocFloat32(C.length), L = M ? c.idToIndex : a.mallocInt32(_);
                        if (S || m.set(C), !M)
                          for (m.set(C), v = 0; v < _; v++)
                            L[v] = v;
                        this.points = C, this.offsetBuffer.update(m), this.pickBuffer.update(L), S || a.free(m), M || a.free(L), this.pointCount = _, this.pickOffset = 0;
                      };
                      function g(c, v) {
                        var f = 0, _ = c.length >>> 1, S;
                        for (S = 0; S < _; S++) {
                          var M = c[S * 2], C = c[S * 2 + 1];
                          M >= v[0] && M <= v[2] && C >= v[1] && C <= v[3] && f++;
                        }
                        return f;
                      }
                      y.unifiedDraw = /* @__PURE__ */ function() {
                        var c = [1, 0, 0, 0, 1, 0, 0, 0, 1], v = [0, 0, 0, 0];
                        return function(f) {
                          var _ = f !== void 0, S = _ ? this.pickShader : this.shader, M = this.plot.gl, C = this.plot.dataBox;
                          if (this.pointCount === 0)
                            return f;
                          var m = C[2] - C[0], L = C[3] - C[1], d = g(this.points, C), h = this.plot.pickPixelRatio * Math.max(Math.min(this.sizeMinCap, this.sizeMin), Math.min(this.sizeMax, this.sizeMax / Math.pow(d, 0.33333)));
                          c[0] = 2 / m, c[4] = 2 / L, c[6] = -2 * C[0] / m - 1, c[7] = -2 * C[1] / L - 1, this.offsetBuffer.bind(), S.bind(), S.attributes.position.pointer(), S.uniforms.matrix = c, S.uniforms.color = this.color, S.uniforms.borderColor = this.borderColor, S.uniforms.pointCloud = h < 5, S.uniforms.pointSize = h, S.uniforms.centerFraction = Math.min(1, Math.max(0, Math.sqrt(1 - this.areaRatio))), _ && (v[0] = f & 255, v[1] = f >> 8 & 255, v[2] = f >> 16 & 255, v[3] = f >> 24 & 255, this.pickBuffer.bind(), S.attributes.pickId.pointer(M.UNSIGNED_BYTE), S.uniforms.pickOffset = v, this.pickOffset = f);
                          var E = M.getParameter(M.BLEND), w = M.getParameter(M.DITHER);
                          return E && !this.blend && M.disable(M.BLEND), w && M.disable(M.DITHER), M.drawArrays(M.POINTS, 0, this.pointCount), E && !this.blend && M.enable(M.BLEND), w && M.enable(M.DITHER), f + this.pointCount;
                        };
                      }(), y.draw = y.unifiedDraw, y.drawPick = y.unifiedDraw, y.pick = function(c, v, f) {
                        var _ = this.pickOffset, S = this.pointCount;
                        if (f < _ || f >= _ + S)
                          return null;
                        var M = f - _, C = this.points;
                        return { object: this, pointId: M, dataCoord: [C[2 * M], C[2 * M + 1]] };
                      };
                      function x(c, v) {
                        var f = c.gl, _ = i(f), S = i(f), M = r(f, l.pointVertex, l.pointFragment), C = r(f, l.pickVertex, l.pickFragment), m = new o(c, _, S, M, C);
                        return m.update(v), c.addObject(m), m;
                      }
                    }
                  ),
                  /***/
                  783: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i, a) {
                        var l = r[0], o = r[1], y = r[2], g = r[3], x = i[0], c = i[1], v = i[2], f = i[3], _, S, M, C, m;
                        return S = l * x + o * c + y * v + g * f, S < 0 && (S = -S, x = -x, c = -c, v = -v, f = -f), 1 - S > 1e-6 ? (_ = Math.acos(S), M = Math.sin(_), C = Math.sin((1 - a) * _) / M, m = Math.sin(a * _) / M) : (C = 1 - a, m = a), t[0] = C * l + m * x, t[1] = C * o + m * c, t[2] = C * y + m * v, t[3] = C * g + m * f, t;
                      }
                    }
                  ),
                  /***/
                  5964: (
                    /***/
                    function(p) {
                      p.exports = function(u) {
                        return !u && u !== 0 ? "" : u.toString();
                      };
                    }
                  ),
                  /***/
                  9366: (
                    /***/
                    function(p, u, t) {
                      var r = t(4359);
                      p.exports = a;
                      var i = {};
                      function a(l, o, y) {
                        var g = [o.style, o.weight, o.variant, o.family].join("_"), x = i[g];
                        if (x || (x = i[g] = {}), l in x)
                          return x[l];
                        var c = { textAlign: "center", textBaseline: "middle", lineHeight: 1, font: o.family, fontStyle: o.style, fontWeight: o.weight, fontVariant: o.variant, lineSpacing: 1.25, styletags: { breaklines: !0, bolds: !0, italics: !0, subscripts: !0, superscripts: !0 } };
                        c.triangles = !0;
                        var v = r(l, c);
                        c.triangles = !1;
                        var f = r(l, c), _, S;
                        if (y && y !== 1) {
                          for (_ = 0; _ < v.positions.length; ++_)
                            for (S = 0; S < v.positions[_].length; ++S)
                              v.positions[_][S] /= y;
                          for (_ = 0; _ < f.positions.length; ++_)
                            for (S = 0; S < f.positions[_].length; ++S)
                              f.positions[_][S] /= y;
                        }
                        var M = [[1 / 0, 1 / 0], [-1 / 0, -1 / 0]], C = f.positions.length;
                        for (_ = 0; _ < C; ++_) {
                          var m = f.positions[_];
                          for (S = 0; S < 2; ++S)
                            M[0][S] = Math.min(M[0][S], m[S]), M[1][S] = Math.max(M[1][S], m[S]);
                        }
                        return x[l] = [v, f, M];
                      }
                    }
                  ),
                  /***/
                  1283: (
                    /***/
                    function(p, u, t) {
                      var r = t(9405), i = t(3236), a = i([`precision highp float;
#define GLSLIFY 1

bool outOfRange(float a, float b, float p) {
  return ((p > max(a, b)) || 
          (p < min(a, b)));
}

bool outOfRange(vec2 a, vec2 b, vec2 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y));
}

bool outOfRange(vec3 a, vec3 b, vec3 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y) ||
          outOfRange(a.z, b.z, p.z));
}

bool outOfRange(vec4 a, vec4 b, vec4 p) {
  return outOfRange(a.xyz, b.xyz, p.xyz);
}

attribute vec3 position;
attribute vec4 color;
attribute vec2 glyph;
attribute vec4 id;

uniform vec4 highlightId;
uniform float highlightScale;
uniform mat4 model, view, projection;
uniform vec3 clipBounds[2];

varying vec4 interpColor;
varying vec4 pickId;
varying vec3 dataCoordinate;

void main() {
  if (outOfRange(clipBounds[0], clipBounds[1], position)) {

    gl_Position = vec4(0,0,0,0);
  } else {
    float scale = 1.0;
    if(distance(highlightId, id) < 0.0001) {
      scale = highlightScale;
    }

    vec4 worldPosition = model * vec4(position, 1);
    vec4 viewPosition = view * worldPosition;
    viewPosition = viewPosition / viewPosition.w;
    vec4 clipPosition = projection * (viewPosition + scale * vec4(glyph.x, -glyph.y, 0, 0));

    gl_Position = clipPosition;
    interpColor = color;
    pickId = id;
    dataCoordinate = position;
  }
}`]), l = i([`precision highp float;
#define GLSLIFY 1

bool outOfRange(float a, float b, float p) {
  return ((p > max(a, b)) || 
          (p < min(a, b)));
}

bool outOfRange(vec2 a, vec2 b, vec2 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y));
}

bool outOfRange(vec3 a, vec3 b, vec3 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y) ||
          outOfRange(a.z, b.z, p.z));
}

bool outOfRange(vec4 a, vec4 b, vec4 p) {
  return outOfRange(a.xyz, b.xyz, p.xyz);
}

attribute vec3 position;
attribute vec4 color;
attribute vec2 glyph;
attribute vec4 id;

uniform mat4 model, view, projection;
uniform vec2 screenSize;
uniform vec3 clipBounds[2];
uniform float highlightScale, pixelRatio;
uniform vec4 highlightId;

varying vec4 interpColor;
varying vec4 pickId;
varying vec3 dataCoordinate;

void main() {
  if (outOfRange(clipBounds[0], clipBounds[1], position)) {

    gl_Position = vec4(0,0,0,0);
  } else {
    float scale = pixelRatio;
    if(distance(highlightId.bgr, id.bgr) < 0.001) {
      scale *= highlightScale;
    }

    vec4 worldPosition = model * vec4(position, 1.0);
    vec4 viewPosition = view * worldPosition;
    vec4 clipPosition = projection * viewPosition;
    clipPosition /= clipPosition.w;

    gl_Position = clipPosition + vec4(screenSize * scale * vec2(glyph.x, -glyph.y), 0.0, 0.0);
    interpColor = color;
    pickId = id;
    dataCoordinate = position;
  }
}`]), o = i([`precision highp float;
#define GLSLIFY 1

bool outOfRange(float a, float b, float p) {
  return ((p > max(a, b)) || 
          (p < min(a, b)));
}

bool outOfRange(vec2 a, vec2 b, vec2 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y));
}

bool outOfRange(vec3 a, vec3 b, vec3 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y) ||
          outOfRange(a.z, b.z, p.z));
}

bool outOfRange(vec4 a, vec4 b, vec4 p) {
  return outOfRange(a.xyz, b.xyz, p.xyz);
}

attribute vec3 position;
attribute vec4 color;
attribute vec2 glyph;
attribute vec4 id;

uniform float highlightScale;
uniform vec4 highlightId;
uniform vec3 axes[2];
uniform mat4 model, view, projection;
uniform vec2 screenSize;
uniform vec3 clipBounds[2];
uniform float scale, pixelRatio;

varying vec4 interpColor;
varying vec4 pickId;
varying vec3 dataCoordinate;

void main() {
  if (outOfRange(clipBounds[0], clipBounds[1], position)) {

    gl_Position = vec4(0,0,0,0);
  } else {
    float lscale = pixelRatio * scale;
    if(distance(highlightId, id) < 0.0001) {
      lscale *= highlightScale;
    }

    vec4 clipCenter   = projection * (view * (model * vec4(position, 1)));
    vec3 dataPosition = position + 0.5*lscale*(axes[0] * glyph.x + axes[1] * glyph.y) * clipCenter.w * screenSize.y;
    vec4 clipPosition = projection * (view * (model * vec4(dataPosition, 1)));

    gl_Position = clipPosition;
    interpColor = color;
    pickId = id;
    dataCoordinate = dataPosition;
  }
}
`]), y = i([`precision highp float;
#define GLSLIFY 1

bool outOfRange(float a, float b, float p) {
  return ((p > max(a, b)) || 
          (p < min(a, b)));
}

bool outOfRange(vec2 a, vec2 b, vec2 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y));
}

bool outOfRange(vec3 a, vec3 b, vec3 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y) ||
          outOfRange(a.z, b.z, p.z));
}

bool outOfRange(vec4 a, vec4 b, vec4 p) {
  return outOfRange(a.xyz, b.xyz, p.xyz);
}

uniform vec3 fragClipBounds[2];
uniform float opacity;

varying vec4 interpColor;
varying vec3 dataCoordinate;

void main() {
  if (
    outOfRange(fragClipBounds[0], fragClipBounds[1], dataCoordinate) ||
    interpColor.a * opacity == 0.
  ) discard;
  gl_FragColor = interpColor * opacity;
}
`]), g = i([`precision highp float;
#define GLSLIFY 1

bool outOfRange(float a, float b, float p) {
  return ((p > max(a, b)) || 
          (p < min(a, b)));
}

bool outOfRange(vec2 a, vec2 b, vec2 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y));
}

bool outOfRange(vec3 a, vec3 b, vec3 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y) ||
          outOfRange(a.z, b.z, p.z));
}

bool outOfRange(vec4 a, vec4 b, vec4 p) {
  return outOfRange(a.xyz, b.xyz, p.xyz);
}

uniform vec3 fragClipBounds[2];
uniform float pickGroup;

varying vec4 pickId;
varying vec3 dataCoordinate;

void main() {
  if (outOfRange(fragClipBounds[0], fragClipBounds[1], dataCoordinate)) discard;

  gl_FragColor = vec4(pickGroup, pickId.bgr);
}`]), x = [{ name: "position", type: "vec3" }, { name: "color", type: "vec4" }, { name: "glyph", type: "vec2" }, { name: "id", type: "vec4" }], c = { vertex: a, fragment: y, attributes: x }, v = { vertex: l, fragment: y, attributes: x }, f = { vertex: o, fragment: y, attributes: x }, _ = { vertex: a, fragment: g, attributes: x }, S = { vertex: l, fragment: g, attributes: x }, M = { vertex: o, fragment: g, attributes: x };
                      function C(m, L) {
                        var d = r(m, L), h = d.attributes;
                        return h.position.location = 0, h.color.location = 1, h.glyph.location = 2, h.id.location = 3, d;
                      }
                      u.createPerspective = function(m) {
                        return C(m, c);
                      }, u.createOrtho = function(m) {
                        return C(m, v);
                      }, u.createProject = function(m) {
                        return C(m, f);
                      }, u.createPickPerspective = function(m) {
                        return C(m, _);
                      }, u.createPickOrtho = function(m) {
                        return C(m, S);
                      }, u.createPickProject = function(m) {
                        return C(m, M);
                      };
                    }
                  ),
                  /***/
                  8418: (
                    /***/
                    function(p, u, t) {
                      var r = t(5219), i = t(2762), a = t(8116), l = t(1888), o = t(6760), y = t(1283), g = t(9366), x = t(5964), c = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], v = ArrayBuffer, f = DataView;
                      function _(ut) {
                        return v.isView(ut) && !(ut instanceof f);
                      }
                      function S(ut) {
                        return Array.isArray(ut) || _(ut);
                      }
                      p.exports = at;
                      function M(ut, nt) {
                        var X = ut[0], ct = ut[1], lt = ut[2], pt = ut[3];
                        return ut[0] = nt[0] * X + nt[4] * ct + nt[8] * lt + nt[12] * pt, ut[1] = nt[1] * X + nt[5] * ct + nt[9] * lt + nt[13] * pt, ut[2] = nt[2] * X + nt[6] * ct + nt[10] * lt + nt[14] * pt, ut[3] = nt[3] * X + nt[7] * ct + nt[11] * lt + nt[15] * pt, ut;
                      }
                      function C(ut, nt, X, ct) {
                        return M(ct, ct), M(ct, ct), M(ct, ct);
                      }
                      function m(ut, nt) {
                        this.index = ut, this.dataCoordinate = this.position = nt;
                      }
                      function L(ut) {
                        return ut === !0 || ut > 1 ? 1 : ut;
                      }
                      function d(ut, nt, X, ct, lt, pt, wt, Et, Ct, Gt, Jt, Qt) {
                        this.gl = ut, this.pixelRatio = 1, this.shader = nt, this.orthoShader = X, this.projectShader = ct, this.pointBuffer = lt, this.colorBuffer = pt, this.glyphBuffer = wt, this.idBuffer = Et, this.vao = Ct, this.vertexCount = 0, this.lineVertexCount = 0, this.opacity = 1, this.hasAlpha = !1, this.lineWidth = 0, this.projectScale = [0.6666666666666666, 0.6666666666666666, 0.6666666666666666], this.projectOpacity = [1, 1, 1], this.projectHasAlpha = !1, this.pickId = 0, this.pickPerspectiveShader = Gt, this.pickOrthoShader = Jt, this.pickProjectShader = Qt, this.points = [], this._selectResult = new m(0, [0, 0, 0]), this.useOrtho = !0, this.bounds = [[1 / 0, 1 / 0, 1 / 0], [-1 / 0, -1 / 0, -1 / 0]], this.axesProject = [!0, !0, !0], this.axesBounds = [[-1 / 0, -1 / 0, -1 / 0], [1 / 0, 1 / 0, 1 / 0]], this.highlightId = [1, 1, 1, 1], this.highlightScale = 2, this.clipBounds = [[-1 / 0, -1 / 0, -1 / 0], [1 / 0, 1 / 0, 1 / 0]], this.dirty = !0;
                      }
                      var h = d.prototype;
                      h.pickSlots = 1, h.setPickBase = function(ut) {
                        this.pickId = ut;
                      }, h.isTransparent = function() {
                        if (this.hasAlpha)
                          return !0;
                        for (var ut = 0; ut < 3; ++ut)
                          if (this.axesProject[ut] && this.projectHasAlpha)
                            return !0;
                        return !1;
                      }, h.isOpaque = function() {
                        if (!this.hasAlpha)
                          return !0;
                        for (var ut = 0; ut < 3; ++ut)
                          if (this.axesProject[ut] && !this.projectHasAlpha)
                            return !0;
                        return !1;
                      };
                      var E = [0, 0], w = [0, 0, 0], z = [0, 0, 0], O = [0, 0, 0, 1], B = [0, 0, 0, 1], V = c.slice(), U = [0, 0, 0], H = [[0, 0, 0], [0, 0, 0]];
                      function F(ut) {
                        return ut[0] = ut[1] = ut[2] = 0, ut;
                      }
                      function G(ut, nt) {
                        return ut[0] = nt[0], ut[1] = nt[1], ut[2] = nt[2], ut[3] = 1, ut;
                      }
                      function q(ut, nt, X, ct) {
                        return ut[0] = nt[0], ut[1] = nt[1], ut[2] = nt[2], ut[X] = ct, ut;
                      }
                      function rt(ut) {
                        for (var nt = H, X = 0; X < 2; ++X)
                          for (var ct = 0; ct < 3; ++ct)
                            nt[X][ct] = Math.max(Math.min(ut[X][ct], 1e8), -1e8);
                        return nt;
                      }
                      function st(ut, nt, X, ct) {
                        var lt = nt.axesProject, pt = nt.gl, wt = ut.uniforms, Et = X.model || c, Ct = X.view || c, Gt = X.projection || c, Jt = nt.axesBounds, Qt = rt(nt.clipBounds), Vt;
                        nt.axes && nt.axes.lastCubeProps ? Vt = nt.axes.lastCubeProps.axis : Vt = [1, 1, 1], E[0] = 2 / pt.drawingBufferWidth, E[1] = 2 / pt.drawingBufferHeight, ut.bind(), wt.view = Ct, wt.projection = Gt, wt.screenSize = E, wt.highlightId = nt.highlightId, wt.highlightScale = nt.highlightScale, wt.clipBounds = Qt, wt.pickGroup = nt.pickId / 255, wt.pixelRatio = ct;
                        for (var zt = 0; zt < 3; ++zt)
                          if (lt[zt]) {
                            wt.scale = nt.projectScale[zt], wt.opacity = nt.projectOpacity[zt];
                            for (var Rt = V, Wt = 0; Wt < 16; ++Wt)
                              Rt[Wt] = 0;
                            for (var Wt = 0; Wt < 4; ++Wt)
                              Rt[5 * Wt] = 1;
                            Rt[5 * zt] = 0, Vt[zt] < 0 ? Rt[12 + zt] = Jt[0][zt] : Rt[12 + zt] = Jt[1][zt], o(Rt, Et, Rt), wt.model = Rt;
                            var kt = (zt + 1) % 3, re = (zt + 2) % 3, ge = F(w), _e = F(z);
                            ge[kt] = 1, _e[re] = 1;
                            var ce = C(Gt, Ct, Et, G(O, ge)), ae = C(Gt, Ct, Et, G(B, _e));
                            if (Math.abs(ce[1]) > Math.abs(ae[1])) {
                              var Se = ce;
                              ce = ae, ae = Se, Se = ge, ge = _e, _e = Se;
                              var ze = kt;
                              kt = re, re = ze;
                            }
                            ce[0] < 0 && (ge[kt] = -1), ae[1] > 0 && (_e[re] = -1);
                            for (var Ne = 0, Ve = 0, Wt = 0; Wt < 4; ++Wt)
                              Ne += Math.pow(Et[4 * kt + Wt], 2), Ve += Math.pow(Et[4 * re + Wt], 2);
                            ge[kt] /= Math.sqrt(Ne), _e[re] /= Math.sqrt(Ve), wt.axes[0] = ge, wt.axes[1] = _e, wt.fragClipBounds[0] = q(U, Qt[0], zt, -1e8), wt.fragClipBounds[1] = q(U, Qt[1], zt, 1e8), nt.vao.bind(), nt.vao.draw(pt.TRIANGLES, nt.vertexCount), nt.lineWidth > 0 && (pt.lineWidth(nt.lineWidth * ct), nt.vao.draw(pt.LINES, nt.lineVertexCount, nt.vertexCount)), nt.vao.unbind();
                          }
                      }
                      var vt = [-1e8, -1e8, -1e8], ht = [1e8, 1e8, 1e8], et = [vt, ht];
                      function Q(ut, nt, X, ct, lt, pt, wt) {
                        var Et = X.gl;
                        if ((pt === X.projectHasAlpha || wt) && st(nt, X, ct, lt), pt === X.hasAlpha || wt) {
                          ut.bind();
                          var Ct = ut.uniforms;
                          Ct.model = ct.model || c, Ct.view = ct.view || c, Ct.projection = ct.projection || c, E[0] = 2 / Et.drawingBufferWidth, E[1] = 2 / Et.drawingBufferHeight, Ct.screenSize = E, Ct.highlightId = X.highlightId, Ct.highlightScale = X.highlightScale, Ct.fragClipBounds = et, Ct.clipBounds = X.axes.bounds, Ct.opacity = X.opacity, Ct.pickGroup = X.pickId / 255, Ct.pixelRatio = lt, X.vao.bind(), X.vao.draw(Et.TRIANGLES, X.vertexCount), X.lineWidth > 0 && (Et.lineWidth(X.lineWidth * lt), X.vao.draw(Et.LINES, X.lineVertexCount, X.vertexCount)), X.vao.unbind();
                        }
                      }
                      h.draw = function(ut) {
                        var nt = this.useOrtho ? this.orthoShader : this.shader;
                        Q(nt, this.projectShader, this, ut, this.pixelRatio, !1, !1);
                      }, h.drawTransparent = function(ut) {
                        var nt = this.useOrtho ? this.orthoShader : this.shader;
                        Q(nt, this.projectShader, this, ut, this.pixelRatio, !0, !1);
                      }, h.drawPick = function(ut) {
                        var nt = this.useOrtho ? this.pickOrthoShader : this.pickPerspectiveShader;
                        Q(nt, this.pickProjectShader, this, ut, 1, !0, !0);
                      }, h.pick = function(ut) {
                        if (!ut || ut.id !== this.pickId)
                          return null;
                        var nt = ut.value[2] + (ut.value[1] << 8) + (ut.value[0] << 16);
                        if (nt >= this.pointCount || nt < 0)
                          return null;
                        var X = this.points[nt], ct = this._selectResult;
                        ct.index = nt;
                        for (var lt = 0; lt < 3; ++lt)
                          ct.position[lt] = ct.dataCoordinate[lt] = X[lt];
                        return ct;
                      }, h.highlight = function(ut) {
                        if (!ut)
                          this.highlightId = [1, 1, 1, 1];
                        else {
                          var nt = ut.index, X = nt & 255, ct = nt >> 8 & 255, lt = nt >> 16 & 255;
                          this.highlightId = [X / 255, ct / 255, lt / 255, 0];
                        }
                      };
                      function j(ut, nt, X, ct) {
                        var lt;
                        S(ut) ? nt < ut.length ? lt = ut[nt] : lt = void 0 : lt = ut, lt = x(lt);
                        var pt = !0;
                        r(lt) && (lt = "▼", pt = !1), X || (X = {});
                        var wt = X.family;
                        S(wt) && (wt = wt[nt]), wt || (wt = "normal");
                        var Et = X.weight;
                        S(Et) && (Et = Et[nt]), Et || (Et = "normal");
                        var Ct = X.style;
                        S(Ct) && (Ct = Ct[nt]), Ct || (Ct = "normal");
                        var Gt = X.variant;
                        S(Gt) && (Gt = Gt[nt]), Gt || (Gt = "normal");
                        var Jt = g(lt, { family: wt, weight: Et, style: Ct, variant: Gt }, ct), Jt = g(lt, X, ct);
                        return { mesh: Jt[0], lines: Jt[1], bounds: Jt[2], visible: pt };
                      }
                      h.update = function(ut) {
                        if (ut = ut || {}, "perspective" in ut && (this.useOrtho = !ut.perspective), "orthographic" in ut && (this.useOrtho = !!ut.orthographic), "lineWidth" in ut && (this.lineWidth = ut.lineWidth), "project" in ut)
                          if (S(ut.project))
                            this.axesProject = ut.project;
                          else {
                            var nt = !!ut.project;
                            this.axesProject = [nt, nt, nt];
                          }
                        if ("projectScale" in ut)
                          if (S(ut.projectScale))
                            this.projectScale = ut.projectScale.slice();
                          else {
                            var X = +ut.projectScale;
                            this.projectScale = [X, X, X];
                          }
                        if (this.projectHasAlpha = !1, "projectOpacity" in ut) {
                          if (S(ut.projectOpacity))
                            this.projectOpacity = ut.projectOpacity.slice();
                          else {
                            var X = +ut.projectOpacity;
                            this.projectOpacity = [X, X, X];
                          }
                          for (var ct = 0; ct < 3; ++ct)
                            this.projectOpacity[ct] = L(this.projectOpacity[ct]), this.projectOpacity[ct] < 1 && (this.projectHasAlpha = !0);
                        }
                        this.hasAlpha = !1, "opacity" in ut && (this.opacity = L(ut.opacity), this.opacity < 1 && (this.hasAlpha = !0)), this.dirty = !0;
                        var lt = ut.position, pt = { family: ut.font || "normal", style: ut.fontStyle || "normal", weight: ut.fontWeight || "normal", variant: ut.fontVariant || "normal" }, wt = ut.alignment || [0, 0], Et, Ct;
                        if (wt.length === 2)
                          Et = wt[0], Ct = wt[1];
                        else {
                          Et = [], Ct = [];
                          for (var ct = 0; ct < wt.length; ++ct)
                            Et[ct] = wt[ct][0], Ct[ct] = wt[ct][1];
                        }
                        var Gt = [1 / 0, 1 / 0, 1 / 0], Jt = [-1 / 0, -1 / 0, -1 / 0], Qt = ut.glyph, Vt = ut.color, zt = ut.size, Rt = ut.angle, Wt = ut.lineColor, kt = -1, re = 0, ge = 0, _e = 0;
                        if (lt.length) {
                          _e = lt.length;
                          t: for (var ct = 0; ct < _e; ++ct) {
                            for (var ce = lt[ct], ae = 0; ae < 3; ++ae)
                              if (isNaN(ce[ae]) || !isFinite(ce[ae]))
                                continue t;
                            var Se = j(Qt, ct, pt, this.pixelRatio), ze = Se.mesh, Ne = Se.lines, Ve = Se.bounds;
                            re += ze.cells.length * 3, ge += Ne.edges.length * 2;
                          }
                        }
                        var Oe = re + ge, ur = l.mallocFloat(3 * Oe), ie = l.mallocFloat(4 * Oe), $t = l.mallocFloat(2 * Oe), jt = l.mallocUint32(Oe);
                        if (Oe > 0) {
                          var ee = 0, Bt = re, Xt = [0, 0, 0, 1], Zt = [0, 0, 0, 1], ye = S(Vt) && S(Vt[0]), Mt = S(Wt) && S(Wt[0]);
                          t: for (var ct = 0; ct < _e; ++ct) {
                            kt += 1;
                            for (var ce = lt[ct], ae = 0; ae < 3; ++ae) {
                              if (isNaN(ce[ae]) || !isFinite(ce[ae]))
                                continue t;
                              Jt[ae] = Math.max(Jt[ae], ce[ae]), Gt[ae] = Math.min(Gt[ae], ce[ae]);
                            }
                            var Se = j(Qt, ct, pt, this.pixelRatio), ze = Se.mesh, Ne = Se.lines, Ve = Se.bounds, St = Se.visible;
                            if (!St) Xt = [1, 1, 1, 0];
                            else if (S(Vt)) {
                              var Lt;
                              if (ye ? ct < Vt.length ? Lt = Vt[ct] : Lt = [0, 0, 0, 0] : Lt = Vt, Lt.length === 3) {
                                for (var ae = 0; ae < 3; ++ae)
                                  Xt[ae] = Lt[ae];
                                Xt[3] = 1;
                              } else if (Lt.length === 4) {
                                for (var ae = 0; ae < 4; ++ae)
                                  Xt[ae] = Lt[ae];
                                !this.hasAlpha && Lt[3] < 1 && (this.hasAlpha = !0);
                              }
                            } else
                              Xt[0] = Xt[1] = Xt[2] = 0, Xt[3] = 1;
                            if (!St) Zt = [1, 1, 1, 0];
                            else if (S(Wt)) {
                              var Lt;
                              if (Mt ? ct < Wt.length ? Lt = Wt[ct] : Lt = [0, 0, 0, 0] : Lt = Wt, Lt.length === 3) {
                                for (var ae = 0; ae < 3; ++ae)
                                  Zt[ae] = Lt[ae];
                                Zt[ae] = 1;
                              } else if (Lt.length === 4) {
                                for (var ae = 0; ae < 4; ++ae)
                                  Zt[ae] = Lt[ae];
                                !this.hasAlpha && Lt[3] < 1 && (this.hasAlpha = !0);
                              }
                            } else
                              Zt[0] = Zt[1] = Zt[2] = 0, Zt[3] = 1;
                            var te = 0.5;
                            St ? S(zt) ? ct < zt.length ? te = +zt[ct] : te = 12 : zt ? te = +zt : this.useOrtho && (te = 12) : te = 0;
                            var fe = 0;
                            S(Rt) ? ct < Rt.length ? fe = +Rt[ct] : fe = 0 : Rt && (fe = +Rt);
                            for (var Me = Math.cos(fe), ir = Math.sin(fe), ce = lt[ct], ae = 0; ae < 3; ++ae)
                              Jt[ae] = Math.max(Jt[ae], ce[ae]), Gt[ae] = Math.min(Gt[ae], ce[ae]);
                            var mr = Et, Xe = Ct, mr = 0;
                            S(Et) ? ct < Et.length ? mr = Et[ct] : mr = 0 : Et && (mr = Et);
                            var Xe = 0;
                            S(Ct) ? ct < Ct.length ? Xe = Ct[ct] : Xe = 0 : Ct && (Xe = Ct), mr *= mr > 0 ? 1 - Ve[0][0] : mr < 0 ? 1 + Ve[1][0] : 1, Xe *= Xe > 0 ? 1 - Ve[0][1] : Xe < 0 ? 1 + Ve[1][1] : 1;
                            for (var xe = [mr, Xe], Je = ze.cells || [], dr = ze.positions || [], ae = 0; ae < Je.length; ++ae)
                              for (var me = Je[ae], Le = 0; Le < 3; ++Le) {
                                for (var qt = 0; qt < 3; ++qt)
                                  ur[3 * ee + qt] = ce[qt];
                                for (var qt = 0; qt < 4; ++qt)
                                  ie[4 * ee + qt] = Xt[qt];
                                jt[ee] = kt;
                                var De = dr[me[Le]];
                                $t[2 * ee] = te * (Me * De[0] - ir * De[1] + xe[0]), $t[2 * ee + 1] = te * (ir * De[0] + Me * De[1] + xe[1]), ee += 1;
                              }
                            for (var Je = Ne.edges, dr = Ne.positions, ae = 0; ae < Je.length; ++ae)
                              for (var me = Je[ae], Le = 0; Le < 2; ++Le) {
                                for (var qt = 0; qt < 3; ++qt)
                                  ur[3 * Bt + qt] = ce[qt];
                                for (var qt = 0; qt < 4; ++qt)
                                  ie[4 * Bt + qt] = Zt[qt];
                                jt[Bt] = kt;
                                var De = dr[me[Le]];
                                $t[2 * Bt] = te * (Me * De[0] - ir * De[1] + xe[0]), $t[2 * Bt + 1] = te * (ir * De[0] + Me * De[1] + xe[1]), Bt += 1;
                              }
                          }
                        }
                        this.bounds = [Gt, Jt], this.points = lt, this.pointCount = lt.length, this.vertexCount = re, this.lineVertexCount = ge, this.pointBuffer.update(ur), this.colorBuffer.update(ie), this.glyphBuffer.update($t), this.idBuffer.update(jt), l.free(ur), l.free(ie), l.free($t), l.free(jt);
                      }, h.dispose = function() {
                        this.shader.dispose(), this.orthoShader.dispose(), this.pickPerspectiveShader.dispose(), this.pickOrthoShader.dispose(), this.vao.dispose(), this.pointBuffer.dispose(), this.colorBuffer.dispose(), this.glyphBuffer.dispose(), this.idBuffer.dispose();
                      };
                      function at(ut) {
                        var nt = ut.gl, X = y.createPerspective(nt), ct = y.createOrtho(nt), lt = y.createProject(nt), pt = y.createPickPerspective(nt), wt = y.createPickOrtho(nt), Et = y.createPickProject(nt), Ct = i(nt), Gt = i(nt), Jt = i(nt), Qt = i(nt), Vt = a(nt, [{ buffer: Ct, size: 3, type: nt.FLOAT }, { buffer: Gt, size: 4, type: nt.FLOAT }, { buffer: Jt, size: 2, type: nt.FLOAT }, { buffer: Qt, size: 4, type: nt.UNSIGNED_BYTE, normalized: !0 }]), zt = new d(nt, X, ct, lt, Ct, Gt, Jt, Qt, Vt, pt, wt, Et);
                        return zt.update(ut), zt;
                      }
                    }
                  ),
                  /***/
                  4298: (
                    /***/
                    function(p, u, t) {
                      var r = t(3236);
                      u.boxVertex = r([`precision mediump float;
#define GLSLIFY 1

attribute vec2 vertex;

uniform vec2 cornerA, cornerB;

void main() {
  gl_Position = vec4(mix(cornerA, cornerB, vertex), 0, 1);
}
`]), u.boxFragment = r([`precision mediump float;
#define GLSLIFY 1

uniform vec4 color;

void main() {
  gl_FragColor = color;
}
`]);
                    }
                  ),
                  /***/
                  3161: (
                    /***/
                    function(p, u, t) {
                      var r = t(9405), i = t(2762), a = t(4298);
                      p.exports = y;
                      function l(g, x, c) {
                        this.plot = g, this.boxBuffer = x, this.boxShader = c, this.enabled = !0, this.selectBox = [1 / 0, 1 / 0, -1 / 0, -1 / 0], this.borderColor = [0, 0, 0, 1], this.innerFill = !1, this.innerColor = [0, 0, 0, 0.25], this.outerFill = !0, this.outerColor = [0, 0, 0, 0.5], this.borderWidth = 10;
                      }
                      var o = l.prototype;
                      o.draw = function() {
                        if (this.enabled) {
                          var g = this.plot, x = this.selectBox, c = this.borderWidth;
                          this.innerFill;
                          var v = this.innerColor;
                          this.outerFill;
                          var f = this.outerColor, _ = this.borderColor, S = g.box, M = g.screenBox, C = g.dataBox, m = g.viewBox, L = g.pixelRatio, d = (x[0] - C[0]) * (m[2] - m[0]) / (C[2] - C[0]) + m[0], h = (x[1] - C[1]) * (m[3] - m[1]) / (C[3] - C[1]) + m[1], E = (x[2] - C[0]) * (m[2] - m[0]) / (C[2] - C[0]) + m[0], w = (x[3] - C[1]) * (m[3] - m[1]) / (C[3] - C[1]) + m[1];
                          if (d = Math.max(d, m[0]), h = Math.max(h, m[1]), E = Math.min(E, m[2]), w = Math.min(w, m[3]), !(E < d || w < h)) {
                            S.bind();
                            var z = M[2] - M[0], O = M[3] - M[1];
                            if (this.outerFill && (S.drawBox(0, 0, z, h, f), S.drawBox(0, h, d, w, f), S.drawBox(0, w, z, O, f), S.drawBox(E, h, z, w, f)), this.innerFill && S.drawBox(d, h, E, w, v), c > 0) {
                              var B = c * L;
                              S.drawBox(d - B, h - B, E + B, h + B, _), S.drawBox(d - B, w - B, E + B, w + B, _), S.drawBox(d - B, h - B, d + B, w + B, _), S.drawBox(E - B, h - B, E + B, w + B, _);
                            }
                          }
                        }
                      }, o.update = function(g) {
                        g = g || {}, this.innerFill = !!g.innerFill, this.outerFill = !!g.outerFill, this.innerColor = (g.innerColor || [0, 0, 0, 0.5]).slice(), this.outerColor = (g.outerColor || [0, 0, 0, 0.5]).slice(), this.borderColor = (g.borderColor || [0, 0, 0, 1]).slice(), this.borderWidth = g.borderWidth || 0, this.selectBox = (g.selectBox || this.selectBox).slice();
                      }, o.dispose = function() {
                        this.boxBuffer.dispose(), this.boxShader.dispose(), this.plot.removeOverlay(this);
                      };
                      function y(g, x) {
                        var c = g.gl, v = i(c, [0, 0, 0, 1, 1, 0, 1, 1]), f = r(c, a.boxVertex, a.boxFragment), _ = new l(g, v, f);
                        return _.update(x), g.addOverlay(_), _;
                      }
                    }
                  ),
                  /***/
                  3589: (
                    /***/
                    function(p, u, t) {
                      p.exports = c;
                      var r = t(2260), i = t(1888), a = t(9618), l = t(8828).nextPow2, o = function(v, f, _) {
                        for (var S = 1e8, M = -1, C = -1, m = v.shape[0], L = v.shape[1], d = 0; d < m; d++)
                          for (var h = 0; h < L; h++) {
                            var E = v.get(d, h, 0), w = v.get(d, h, 1), z = v.get(d, h, 2), O = v.get(d, h, 3);
                            if (E < 255 || w < 255 || z < 255 || O < 255) {
                              var B = f - d, V = _ - h, U = B * B + V * V;
                              U < S && (S = U, M = d, C = h);
                            }
                          }
                        return [M, C, S];
                      };
                      function y(v, f, _, S, M) {
                        this.coord = [v, f], this.id = _, this.value = S, this.distance = M;
                      }
                      function g(v, f, _) {
                        this.gl = v, this.fbo = f, this.buffer = _, this._readTimeout = null;
                        var S = this;
                        this._readCallback = function() {
                          S.gl && (f.bind(), v.readPixels(0, 0, f.shape[0], f.shape[1], v.RGBA, v.UNSIGNED_BYTE, S.buffer), S._readTimeout = null);
                        };
                      }
                      var x = g.prototype;
                      Object.defineProperty(x, "shape", { get: function() {
                        return this.gl ? this.fbo.shape.slice() : [0, 0];
                      }, set: function(v) {
                        if (this.gl) {
                          this.fbo.shape = v;
                          var f = this.fbo.shape[0], _ = this.fbo.shape[1];
                          if (_ * f * 4 > this.buffer.length) {
                            i.free(this.buffer);
                            for (var S = this.buffer = i.mallocUint8(l(_ * f * 4)), M = 0; M < _ * f * 4; ++M)
                              S[M] = 255;
                          }
                          return v;
                        }
                      } }), x.begin = function() {
                        var v = this.gl;
                        this.shape, v && (this.fbo.bind(), v.clearColor(1, 1, 1, 1), v.clear(v.COLOR_BUFFER_BIT | v.DEPTH_BUFFER_BIT));
                      }, x.end = function() {
                        var v = this.gl;
                        v && (v.bindFramebuffer(v.FRAMEBUFFER, null), this._readTimeout || clearTimeout(this._readTimeout), this._readTimeout = setTimeout(this._readCallback, 1));
                      }, x.query = function(v, f, _) {
                        if (!this.gl)
                          return null;
                        var S = this.fbo.shape.slice();
                        v = v | 0, f = f | 0, typeof _ != "number" && (_ = 1);
                        var M = Math.min(Math.max(v - _, 0), S[0]) | 0, C = Math.min(Math.max(v + _, 0), S[0]) | 0, m = Math.min(Math.max(f - _, 0), S[1]) | 0, L = Math.min(Math.max(f + _, 0), S[1]) | 0;
                        if (C <= M || L <= m)
                          return null;
                        var d = [C - M, L - m], h = a(this.buffer, [d[0], d[1], 4], [4, S[0] * 4, 1], 4 * (M + S[0] * m)), E = o(h.hi(d[0], d[1], 1), _, _), w = E[0], z = E[1];
                        if (w < 0 || Math.pow(this.radius, 2) < E[2])
                          return null;
                        var O = h.get(w, z, 0), B = h.get(w, z, 1), V = h.get(w, z, 2), U = h.get(w, z, 3);
                        return new y(w + M | 0, z + m | 0, O, [B, V, U], Math.sqrt(E[2]));
                      }, x.dispose = function() {
                        this.gl && (this.fbo.dispose(), i.free(this.buffer), this.gl = null, this._readTimeout && clearTimeout(this._readTimeout));
                      };
                      function c(v, f) {
                        var _ = f[0], S = f[1], M = {}, C = r(v, _, S, M), m = i.mallocUint8(_ * S * 4);
                        return new g(v, C, m);
                      }
                    }
                  ),
                  /***/
                  9405: (
                    /***/
                    function(p, u, t) {
                      var r = t(3327), i = t(8731), a = t(216), l = t(5091), o = t(2145), y = t(8866);
                      function g(f) {
                        this.gl = f, this.gl.lastAttribCount = 0, this._vref = this._fref = this._relink = this.vertShader = this.fragShader = this.program = this.attributes = this.uniforms = this.types = null;
                      }
                      var x = g.prototype;
                      x.bind = function() {
                        this.program || this._relink();
                        var f, _ = this.gl.getProgramParameter(this.program, this.gl.ACTIVE_ATTRIBUTES), S = this.gl.lastAttribCount;
                        if (_ > S)
                          for (f = S; f < _; f++)
                            this.gl.enableVertexAttribArray(f);
                        else if (S > _)
                          for (f = _; f < S; f++)
                            this.gl.disableVertexAttribArray(f);
                        this.gl.lastAttribCount = _, this.gl.useProgram(this.program);
                      }, x.dispose = function() {
                        for (var f = this.gl.lastAttribCount, _ = 0; _ < f; _++)
                          this.gl.disableVertexAttribArray(_);
                        this.gl.lastAttribCount = 0, this._fref && this._fref.dispose(), this._vref && this._vref.dispose(), this.attributes = this.types = this.vertShader = this.fragShader = this.program = this._relink = this._fref = this._vref = null;
                      };
                      function c(f, _) {
                        return f.name < _.name ? -1 : 1;
                      }
                      x.update = function(f, _, S, M) {
                        if (!_ || arguments.length === 1) {
                          var C = f;
                          f = C.vertex, _ = C.fragment, S = C.uniforms, M = C.attributes;
                        }
                        var m = this, L = m.gl, d = m._vref;
                        m._vref = l.shader(L, L.VERTEX_SHADER, f), d && d.dispose(), m.vertShader = m._vref.shader;
                        var h = this._fref;
                        if (m._fref = l.shader(L, L.FRAGMENT_SHADER, _), h && h.dispose(), m.fragShader = m._fref.shader, !S || !M) {
                          var E = L.createProgram();
                          if (L.attachShader(E, m.fragShader), L.attachShader(E, m.vertShader), L.linkProgram(E), !L.getProgramParameter(E, L.LINK_STATUS)) {
                            var w = L.getProgramInfoLog(E);
                            throw new y(w, "Error linking program:" + w);
                          }
                          S = S || o.uniforms(L, E), M = M || o.attributes(L, E), L.deleteProgram(E);
                        }
                        M = M.slice(), M.sort(c);
                        var z = [], O = [], B = [], V;
                        for (V = 0; V < M.length; ++V) {
                          var U = M[V];
                          if (U.type.indexOf("mat") >= 0) {
                            for (var H = U.type.charAt(U.type.length - 1) | 0, F = new Array(H), G = 0; G < H; ++G)
                              F[G] = B.length, O.push(U.name + "[" + G + "]"), typeof U.location == "number" ? B.push(U.location + G) : Array.isArray(U.location) && U.location.length === H && typeof U.location[G] == "number" ? B.push(U.location[G] | 0) : B.push(-1);
                            z.push({ name: U.name, type: U.type, locations: F });
                          } else
                            z.push({ name: U.name, type: U.type, locations: [B.length] }), O.push(U.name), typeof U.location == "number" ? B.push(U.location | 0) : B.push(-1);
                        }
                        var q = 0;
                        for (V = 0; V < B.length; ++V)
                          if (B[V] < 0) {
                            for (; B.indexOf(q) >= 0; )
                              q += 1;
                            B[V] = q;
                          }
                        var rt = new Array(S.length);
                        function st() {
                          m.program = l.program(L, m._vref, m._fref, O, B);
                          for (var vt = 0; vt < S.length; ++vt)
                            rt[vt] = L.getUniformLocation(m.program, S[vt].name);
                        }
                        st(), m._relink = st, m.types = { uniforms: a(S), attributes: a(M) }, m.attributes = i(L, m, z, B), Object.defineProperty(m, "uniforms", r(L, m, S, rt));
                      };
                      function v(f, _, S, M, C) {
                        var m = new g(f);
                        return m.update(_, S, M, C), m;
                      }
                      p.exports = v;
                    }
                  ),
                  /***/
                  8866: (
                    /***/
                    function(p) {
                      function u(t, r, i) {
                        this.shortMessage = r || "", this.longMessage = i || "", this.rawError = t || "", this.message = "gl-shader: " + (r || t || "") + (i ? `
` + i : ""), this.stack = new Error().stack;
                      }
                      u.prototype = new Error(), u.prototype.name = "GLError", u.prototype.constructor = u, p.exports = u;
                    }
                  ),
                  /***/
                  8731: (
                    /***/
                    function(p, u, t) {
                      p.exports = g;
                      var r = t(8866);
                      function i(x, c, v, f, _, S) {
                        this._gl = x, this._wrapper = c, this._index = v, this._locations = f, this._dimension = _, this._constFunc = S;
                      }
                      var a = i.prototype;
                      a.pointer = function(c, v, f, _) {
                        var S = this, M = S._gl, C = S._locations[S._index];
                        M.vertexAttribPointer(C, S._dimension, c || M.FLOAT, !!v, f || 0, _ || 0), M.enableVertexAttribArray(C);
                      }, a.set = function(x, c, v, f) {
                        return this._constFunc(this._locations[this._index], x, c, v, f);
                      }, Object.defineProperty(a, "location", { get: function() {
                        return this._locations[this._index];
                      }, set: function(x) {
                        return x !== this._locations[this._index] && (this._locations[this._index] = x | 0, this._wrapper.program = null), x | 0;
                      } });
                      var l = [function(x, c, v) {
                        return v.length === void 0 ? x.vertexAttrib1f(c, v) : x.vertexAttrib1fv(c, v);
                      }, function(x, c, v, f) {
                        return v.length === void 0 ? x.vertexAttrib2f(c, v, f) : x.vertexAttrib2fv(c, v);
                      }, function(x, c, v, f, _) {
                        return v.length === void 0 ? x.vertexAttrib3f(c, v, f, _) : x.vertexAttrib3fv(c, v);
                      }, function(x, c, v, f, _, S) {
                        return v.length === void 0 ? x.vertexAttrib4f(c, v, f, _, S) : x.vertexAttrib4fv(c, v);
                      }];
                      function o(x, c, v, f, _, S, M) {
                        var C = l[_], m = new i(x, c, v, f, _, C);
                        Object.defineProperty(S, M, { set: function(L) {
                          return x.disableVertexAttribArray(f[v]), C(x, f[v], L), L;
                        }, get: function() {
                          return m;
                        }, enumerable: !0 });
                      }
                      function y(x, c, v, f, _, S, M) {
                        for (var C = new Array(_), m = new Array(_), L = 0; L < _; ++L)
                          o(x, c, v[L], f, _, C, L), m[L] = C[L];
                        Object.defineProperty(C, "location", { set: function(E) {
                          if (Array.isArray(E))
                            for (var w = 0; w < _; ++w)
                              m[w].location = E[w];
                          else
                            for (var w = 0; w < _; ++w)
                              m[w].location = E + w;
                          return E;
                        }, get: function() {
                          for (var E = new Array(_), w = 0; w < _; ++w)
                            E[w] = f[v[w]];
                          return E;
                        }, enumerable: !0 }), C.pointer = function(E, w, z, O) {
                          E = E || x.FLOAT, w = !!w, z = z || _ * _, O = O || 0;
                          for (var B = 0; B < _; ++B) {
                            var V = f[v[B]];
                            x.vertexAttribPointer(V, _, E, w, z, O + B * _), x.enableVertexAttribArray(V);
                          }
                        };
                        var d = new Array(_), h = x["vertexAttrib" + _ + "fv"];
                        Object.defineProperty(S, M, { set: function(E) {
                          for (var w = 0; w < _; ++w) {
                            var z = f[v[w]];
                            if (x.disableVertexAttribArray(z), Array.isArray(E[0]))
                              h.call(x, z, E[w]);
                            else {
                              for (var O = 0; O < _; ++O)
                                d[O] = E[_ * w + O];
                              h.call(x, z, d);
                            }
                          }
                          return E;
                        }, get: function() {
                          return C;
                        }, enumerable: !0 });
                      }
                      function g(x, c, v, f) {
                        for (var _ = {}, S = 0, M = v.length; S < M; ++S) {
                          var C = v[S], m = C.name, L = C.type, d = C.locations;
                          switch (L) {
                            case "bool":
                            case "int":
                            case "float":
                              o(x, c, d[0], f, 1, _, m);
                              break;
                            default:
                              if (L.indexOf("vec") >= 0) {
                                var h = L.charCodeAt(L.length - 1) - 48;
                                if (h < 2 || h > 4)
                                  throw new r("", "Invalid data type for attribute " + m + ": " + L);
                                o(x, c, d[0], f, h, _, m);
                              } else if (L.indexOf("mat") >= 0) {
                                var h = L.charCodeAt(L.length - 1) - 48;
                                if (h < 2 || h > 4)
                                  throw new r("", "Invalid data type for attribute " + m + ": " + L);
                                y(x, c, d, f, h, _, m);
                              } else
                                throw new r("", "Unknown data type for attribute " + m + ": " + L);
                              break;
                          }
                        }
                        return _;
                      }
                    }
                  ),
                  /***/
                  3327: (
                    /***/
                    function(p, u, t) {
                      var r = t(216), i = t(8866);
                      p.exports = o;
                      function a(y) {
                        return function() {
                          return y;
                        };
                      }
                      function l(y, g) {
                        for (var x = new Array(y), c = 0; c < y; ++c)
                          x[c] = g;
                        return x;
                      }
                      function o(y, g, x, c) {
                        function v(L) {
                          return function(d, h, E) {
                            return d.getUniform(h.program, E[L]);
                          };
                        }
                        function f(L) {
                          return function(h) {
                            for (var E = _("", L), w = 0; w < E.length; ++w) {
                              var z = E[w], O = z[0], B = z[1];
                              if (c[B]) {
                                var V = h;
                                if (typeof O == "string" && (O.indexOf(".") === 0 || O.indexOf("[") === 0)) {
                                  var U = O;
                                  if (O.indexOf(".") === 0 && (U = O.slice(1)), U.indexOf("]") === U.length - 1) {
                                    var H = U.indexOf("["), F = U.slice(0, H), G = U.slice(H + 1, U.length - 1);
                                    V = F ? h[F][G] : h[G];
                                  } else
                                    V = h[U];
                                }
                                var q = x[B].type, rt;
                                switch (q) {
                                  case "bool":
                                  case "int":
                                  case "sampler2D":
                                  case "samplerCube":
                                    y.uniform1i(c[B], V);
                                    break;
                                  case "float":
                                    y.uniform1f(c[B], V);
                                    break;
                                  default:
                                    var st = q.indexOf("vec");
                                    if (0 <= st && st <= 1 && q.length === 4 + st) {
                                      if (rt = q.charCodeAt(q.length - 1) - 48, rt < 2 || rt > 4)
                                        throw new i("", "Invalid data type");
                                      switch (q.charAt(0)) {
                                        case "b":
                                        case "i":
                                          y["uniform" + rt + "iv"](c[B], V);
                                          break;
                                        case "v":
                                          y["uniform" + rt + "fv"](c[B], V);
                                          break;
                                        default:
                                          throw new i("", "Unrecognized data type for vector " + name + ": " + q);
                                      }
                                    } else if (q.indexOf("mat") === 0 && q.length === 4) {
                                      if (rt = q.charCodeAt(q.length - 1) - 48, rt < 2 || rt > 4)
                                        throw new i("", "Invalid uniform dimension type for matrix " + name + ": " + q);
                                      y["uniformMatrix" + rt + "fv"](c[B], !1, V);
                                      break;
                                    } else
                                      throw new i("", "Unknown uniform data type for " + name + ": " + q);
                                }
                              }
                            }
                          };
                        }
                        function _(L, d) {
                          if (typeof d != "object")
                            return [[L, d]];
                          var h = [];
                          for (var E in d) {
                            var w = d[E], z = L;
                            parseInt(E) + "" === E ? z += "[" + E + "]" : z += "." + E, typeof w == "object" ? h.push.apply(h, _(z, w)) : h.push([z, w]);
                          }
                          return h;
                        }
                        function S(L) {
                          switch (L) {
                            case "bool":
                              return !1;
                            case "int":
                            case "sampler2D":
                            case "samplerCube":
                              return 0;
                            case "float":
                              return 0;
                            default:
                              var d = L.indexOf("vec");
                              if (0 <= d && d <= 1 && L.length === 4 + d) {
                                var h = L.charCodeAt(L.length - 1) - 48;
                                if (h < 2 || h > 4)
                                  throw new i("", "Invalid data type");
                                return L.charAt(0) === "b" ? l(h, !1) : l(h, 0);
                              } else if (L.indexOf("mat") === 0 && L.length === 4) {
                                var h = L.charCodeAt(L.length - 1) - 48;
                                if (h < 2 || h > 4)
                                  throw new i("", "Invalid uniform dimension type for matrix " + name + ": " + L);
                                return l(h * h, 0);
                              } else
                                throw new i("", "Unknown uniform data type for " + name + ": " + L);
                          }
                        }
                        function M(L, d, h) {
                          if (typeof h == "object") {
                            var E = C(h);
                            Object.defineProperty(L, d, { get: a(E), set: f(h), enumerable: !0, configurable: !1 });
                          } else
                            c[h] ? Object.defineProperty(L, d, { get: v(h), set: f(h), enumerable: !0, configurable: !1 }) : L[d] = S(x[h].type);
                        }
                        function C(L) {
                          var d;
                          if (Array.isArray(L)) {
                            d = new Array(L.length);
                            for (var h = 0; h < L.length; ++h)
                              M(d, h, L[h]);
                          } else {
                            d = {};
                            for (var E in L)
                              M(d, E, L[E]);
                          }
                          return d;
                        }
                        var m = r(x, !0);
                        return { get: a(C(m)), set: f(m), enumerable: !0, configurable: !0 };
                      }
                    }
                  ),
                  /***/
                  216: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r) {
                        for (var i = {}, a = 0; a < t.length; ++a)
                          for (var l = t[a].name, o = l.split("."), y = i, g = 0; g < o.length; ++g) {
                            var x = o[g].split("[");
                            if (x.length > 1) {
                              x[0] in y || (y[x[0]] = []), y = y[x[0]];
                              for (var c = 1; c < x.length; ++c) {
                                var v = parseInt(x[c]);
                                c < x.length - 1 || g < o.length - 1 ? (v in y || (c < x.length - 1 ? y[v] = [] : y[v] = {}), y = y[v]) : r ? y[v] = a : y[v] = t[a].type;
                              }
                            } else g < o.length - 1 ? (x[0] in y || (y[x[0]] = {}), y = y[x[0]]) : r ? y[x[0]] = a : y[x[0]] = t[a].type;
                          }
                        return i;
                      }
                    }
                  ),
                  /***/
                  2145: (
                    /***/
                    function(p, u) {
                      u.uniforms = a, u.attributes = l;
                      var t = { FLOAT: "float", FLOAT_VEC2: "vec2", FLOAT_VEC3: "vec3", FLOAT_VEC4: "vec4", INT: "int", INT_VEC2: "ivec2", INT_VEC3: "ivec3", INT_VEC4: "ivec4", BOOL: "bool", BOOL_VEC2: "bvec2", BOOL_VEC3: "bvec3", BOOL_VEC4: "bvec4", FLOAT_MAT2: "mat2", FLOAT_MAT3: "mat3", FLOAT_MAT4: "mat4", SAMPLER_2D: "sampler2D", SAMPLER_CUBE: "samplerCube" }, r = null;
                      function i(o, y) {
                        if (!r) {
                          var g = Object.keys(t);
                          r = {};
                          for (var x = 0; x < g.length; ++x) {
                            var c = g[x];
                            r[o[c]] = t[c];
                          }
                        }
                        return r[y];
                      }
                      function a(o, y) {
                        for (var g = o.getProgramParameter(y, o.ACTIVE_UNIFORMS), x = [], c = 0; c < g; ++c) {
                          var v = o.getActiveUniform(y, c);
                          if (v) {
                            var f = i(o, v.type);
                            if (v.size > 1)
                              for (var _ = 0; _ < v.size; ++_)
                                x.push({ name: v.name.replace("[0]", "[" + _ + "]"), type: f });
                            else
                              x.push({ name: v.name, type: f });
                          }
                        }
                        return x;
                      }
                      function l(o, y) {
                        for (var g = o.getProgramParameter(y, o.ACTIVE_ATTRIBUTES), x = [], c = 0; c < g; ++c) {
                          var v = o.getActiveAttrib(y, c);
                          v && x.push({ name: v.name, type: i(o, v.type) });
                        }
                        return x;
                      }
                    }
                  ),
                  /***/
                  5091: (
                    /***/
                    function(p, u, t) {
                      u.shader = _, u.program = S;
                      var r = t(8866), i = t(2992), a = typeof WeakMap > "u" ? t(606) : WeakMap, l = new a(), o = 0;
                      function y(M, C, m, L, d, h, E) {
                        this.id = M, this.src = C, this.type = m, this.shader = L, this.count = h, this.programs = [], this.cache = E;
                      }
                      y.prototype.dispose = function() {
                        if (--this.count === 0) {
                          for (var M = this.cache, C = M.gl, m = this.programs, L = 0, d = m.length; L < d; ++L) {
                            var h = M.programs[m[L]];
                            h && (delete M.programs[L], C.deleteProgram(h));
                          }
                          C.deleteShader(this.shader), delete M.shaders[this.type === C.FRAGMENT_SHADER | 0][this.src];
                        }
                      };
                      function g(M) {
                        this.gl = M, this.shaders = [{}, {}], this.programs = {};
                      }
                      var x = g.prototype;
                      function c(M, C, m) {
                        var L = M.createShader(C);
                        if (M.shaderSource(L, m), M.compileShader(L), !M.getShaderParameter(L, M.COMPILE_STATUS)) {
                          var d = M.getShaderInfoLog(L);
                          try {
                            var h = i(d, m, C);
                          } catch (E) {
                            throw console.warn("Failed to format compiler error: " + E), new r(d, `Error compiling shader:
` + d);
                          }
                          throw new r(d, h.short, h.long);
                        }
                        return L;
                      }
                      x.getShaderReference = function(M, C) {
                        var m = this.gl, L = this.shaders[M === m.FRAGMENT_SHADER | 0], d = L[C];
                        if (!d || !m.isShader(d.shader)) {
                          var h = c(m, M, C);
                          d = L[C] = new y(o++, C, M, h, [], 1, this);
                        } else
                          d.count += 1;
                        return d;
                      };
                      function v(M, C, m, L, d) {
                        var h = M.createProgram();
                        M.attachShader(h, C), M.attachShader(h, m);
                        for (var E = 0; E < L.length; ++E)
                          M.bindAttribLocation(h, d[E], L[E]);
                        if (M.linkProgram(h), !M.getProgramParameter(h, M.LINK_STATUS)) {
                          var w = M.getProgramInfoLog(h);
                          throw new r(w, "Error linking program: " + w);
                        }
                        return h;
                      }
                      x.getProgram = function(M, C, m, L) {
                        var d = [M.id, C.id, m.join(":"), L.join(":")].join("@"), h = this.programs[d];
                        return (!h || !this.gl.isProgram(h)) && (this.programs[d] = h = v(this.gl, M.shader, C.shader, m, L), M.programs.push(d), C.programs.push(d)), h;
                      };
                      function f(M) {
                        var C = l.get(M);
                        return C || (C = new g(M), l.set(M, C)), C;
                      }
                      function _(M, C, m) {
                        return f(M).getShaderReference(C, m);
                      }
                      function S(M, C, m, L, d) {
                        return f(M).getProgram(C, m, L, d);
                      }
                    }
                  ),
                  /***/
                  4098: (
                    /***/
                    function(p) {
                      p.exports = r;
                      function u(i) {
                        this.plot = i, this.enable = [!0, !0, !1, !1], this.width = [1, 1, 1, 1], this.color = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]], this.center = [1 / 0, 1 / 0];
                      }
                      var t = u.prototype;
                      t.update = function(i) {
                        i = i || {}, this.enable = (i.enable || [!0, !0, !1, !1]).slice(), this.width = (i.width || [1, 1, 1, 1]).slice(), this.color = (i.color || [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]]).map(function(a) {
                          return a.slice();
                        }), this.center = (i.center || [1 / 0, 1 / 0]).slice(), this.plot.setOverlayDirty();
                      }, t.draw = function() {
                        var i = this.enable, a = this.width, l = this.color, o = this.center, y = this.plot, g = y.line, x = y.dataBox, c = y.viewBox;
                        if (g.bind(), x[0] <= o[0] && o[0] <= x[2] && x[1] <= o[1] && o[1] <= x[3]) {
                          var v = c[0] + (o[0] - x[0]) / (x[2] - x[0]) * (c[2] - c[0]), f = c[1] + (o[1] - x[1]) / (x[3] - x[1]) * (c[3] - c[1]);
                          i[0] && g.drawLine(v, f, c[0], f, a[0], l[0]), i[1] && g.drawLine(v, f, v, c[1], a[1], l[1]), i[2] && g.drawLine(v, f, c[2], f, a[2], l[2]), i[3] && g.drawLine(v, f, v, c[3], a[3], l[3]);
                        }
                      }, t.dispose = function() {
                        this.plot.removeOverlay(this);
                      };
                      function r(i, a) {
                        var l = new u(i);
                        return l.update(a), i.addOverlay(l), l;
                      }
                    }
                  ),
                  /***/
                  1493: (
                    /***/
                    function(p, u, t) {
                      var r = t(3236), i = t(9405), a = r([`precision mediump float;
#define GLSLIFY 1

attribute vec3 position, color;
attribute float weight;

uniform mat4 model, view, projection;
uniform vec3 coordinates[3];
uniform vec4 colors[3];
uniform vec2 screenShape;
uniform float lineWidth;

varying vec4 fragColor;

void main() {
  vec3 vertexPosition = mix(coordinates[0],
    mix(coordinates[2], coordinates[1], 0.5 * (position + 1.0)), abs(position));

  vec4 clipPos = projection * (view * (model * vec4(vertexPosition, 1.0)));
  vec2 clipOffset = (projection * (view * (model * vec4(color, 0.0)))).xy;
  vec2 delta = weight * clipOffset * screenShape;
  vec2 lineOffset = normalize(vec2(delta.y, -delta.x)) / screenShape;

  gl_Position   = vec4(clipPos.xy + clipPos.w * 0.5 * lineWidth * lineOffset, clipPos.z, clipPos.w);
  fragColor     = color.x * colors[0] + color.y * colors[1] + color.z * colors[2];
}
`]), l = r([`precision mediump float;
#define GLSLIFY 1

varying vec4 fragColor;

void main() {
  gl_FragColor = fragColor;
}`]);
                      p.exports = function(o) {
                        return i(o, a, l, null, [{ name: "position", type: "vec3" }, { name: "color", type: "vec3" }, { name: "weight", type: "float" }]);
                      };
                    }
                  ),
                  /***/
                  4449: (
                    /***/
                    function(p, u, t) {
                      var r = t(2762), i = t(8116), a = t(1493);
                      p.exports = v;
                      var l = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
                      function o(f, _, S, M) {
                        this.gl = f, this.buffer = _, this.vao = S, this.shader = M, this.pixelRatio = 1, this.bounds = [[-1e3, -1e3, -1e3], [1e3, 1e3, 1e3]], this.position = [0, 0, 0], this.lineWidth = [2, 2, 2], this.colors = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]], this.enabled = [!0, !0, !0], this.drawSides = [!0, !0, !0], this.axes = null;
                      }
                      var y = o.prototype, g = [0, 0, 0], x = [0, 0, 0], c = [0, 0];
                      y.isTransparent = function() {
                        return !1;
                      }, y.drawTransparent = function(f) {
                      }, y.draw = function(f) {
                        var _ = this.gl, S = this.vao, M = this.shader;
                        S.bind(), M.bind();
                        var C = f.model || l, m = f.view || l, L = f.projection || l, d;
                        this.axes && (d = this.axes.lastCubeProps.axis);
                        for (var h = g, E = x, w = 0; w < 3; ++w)
                          d && d[w] < 0 ? (h[w] = this.bounds[0][w], E[w] = this.bounds[1][w]) : (h[w] = this.bounds[1][w], E[w] = this.bounds[0][w]);
                        c[0] = _.drawingBufferWidth, c[1] = _.drawingBufferHeight, M.uniforms.model = C, M.uniforms.view = m, M.uniforms.projection = L, M.uniforms.coordinates = [this.position, h, E], M.uniforms.colors = this.colors, M.uniforms.screenShape = c;
                        for (var w = 0; w < 3; ++w)
                          M.uniforms.lineWidth = this.lineWidth[w] * this.pixelRatio, this.enabled[w] && (S.draw(_.TRIANGLES, 6, 6 * w), this.drawSides[w] && S.draw(_.TRIANGLES, 12, 18 + 12 * w));
                        S.unbind();
                      }, y.update = function(f) {
                        f && ("bounds" in f && (this.bounds = f.bounds), "position" in f && (this.position = f.position), "lineWidth" in f && (this.lineWidth = f.lineWidth), "colors" in f && (this.colors = f.colors), "enabled" in f && (this.enabled = f.enabled), "drawSides" in f && (this.drawSides = f.drawSides));
                      }, y.dispose = function() {
                        this.vao.dispose(), this.buffer.dispose(), this.shader.dispose();
                      };
                      function v(f, _) {
                        var S = [];
                        function M(h, E, w, z, O, B) {
                          var V = [h, E, w, 0, 0, 0, 1];
                          V[z + 3] = 1, V[z] = O, S.push.apply(S, V), V[6] = -1, S.push.apply(S, V), V[z] = B, S.push.apply(S, V), S.push.apply(S, V), V[6] = 1, S.push.apply(S, V), V[z] = O, S.push.apply(S, V);
                        }
                        M(0, 0, 0, 0, 0, 1), M(0, 0, 0, 1, 0, 1), M(0, 0, 0, 2, 0, 1), M(1, 0, 0, 1, -1, 1), M(1, 0, 0, 2, -1, 1), M(0, 1, 0, 0, -1, 1), M(0, 1, 0, 2, -1, 1), M(0, 0, 1, 0, -1, 1), M(0, 0, 1, 1, -1, 1);
                        var C = r(f, S), m = i(f, [{ type: f.FLOAT, buffer: C, size: 3, offset: 0, stride: 28 }, { type: f.FLOAT, buffer: C, size: 3, offset: 12, stride: 28 }, { type: f.FLOAT, buffer: C, size: 1, offset: 24, stride: 28 }]), L = a(f);
                        L.attributes.position.location = 0, L.attributes.color.location = 1, L.attributes.weight.location = 2;
                        var d = new o(f, C, m, L);
                        return d.update(_), d;
                      }
                    }
                  ),
                  /***/
                  6740: (
                    /***/
                    function(p, u, t) {
                      var r = t(3236), i = r([`precision highp float;

precision highp float;
#define GLSLIFY 1

vec3 getOrthogonalVector(vec3 v) {
  // Return up-vector for only-z vector.
  // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0).
  // From the above if-statement we have ||a|| > 0  U  ||b|| > 0.
  // Assign z = 0, x = -b, y = a:
  // a*-b + b*a + c*0 = -ba + ba + 0 = 0
  if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) {
    return normalize(vec3(-v.y, v.x, 0.0));
  } else {
    return normalize(vec3(0.0, v.z, -v.y));
  }
}

// Calculate the tube vertex and normal at the given index.
//
// The returned vertex is for a tube ring with its center at origin, radius of length(d), pointing in the direction of d.
//
// Each tube segment is made up of a ring of vertices.
// These vertices are used to make up the triangles of the tube by connecting them together in the vertex array.
// The indexes of tube segments run from 0 to 8.
//
vec3 getTubePosition(vec3 d, float index, out vec3 normal) {
  float segmentCount = 8.0;

  float angle = 2.0 * 3.14159 * (index / segmentCount);

  vec3 u = getOrthogonalVector(d);
  vec3 v = normalize(cross(u, d));

  vec3 x = u * cos(angle) * length(d);
  vec3 y = v * sin(angle) * length(d);
  vec3 v3 = x + y;

  normal = normalize(v3);

  return v3;
}

attribute vec4 vector;
attribute vec4 color, position;
attribute vec2 uv;

uniform float vectorScale, tubeScale;
uniform mat4 model, view, projection, inverseModel;
uniform vec3 eyePosition, lightPosition;

varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position;
varying vec4 f_color;
varying vec2 f_uv;

void main() {
  // Scale the vector magnitude to stay constant with
  // model & view changes.
  vec3 normal;
  vec3 XYZ = getTubePosition(mat3(model) * (tubeScale * vector.w * normalize(vector.xyz)), position.w, normal);
  vec4 tubePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0);

  //Lighting geometry parameters
  vec4 cameraCoordinate = view * tubePosition;
  cameraCoordinate.xyz /= cameraCoordinate.w;
  f_lightDirection = lightPosition - cameraCoordinate.xyz;
  f_eyeDirection   = eyePosition - cameraCoordinate.xyz;
  f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz);

  // vec4 m_position  = model * vec4(tubePosition, 1.0);
  vec4 t_position  = view * tubePosition;
  gl_Position      = projection * t_position;

  f_color          = color;
  f_data           = tubePosition.xyz;
  f_position       = position.xyz;
  f_uv             = uv;
}
`]), a = r([`#extension GL_OES_standard_derivatives : enable

precision highp float;
#define GLSLIFY 1

float beckmannDistribution(float x, float roughness) {
  float NdotH = max(x, 0.0001);
  float cos2Alpha = NdotH * NdotH;
  float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha;
  float roughness2 = roughness * roughness;
  float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha;
  return exp(tan2Alpha / roughness2) / denom;
}

float cookTorranceSpecular(
  vec3 lightDirection,
  vec3 viewDirection,
  vec3 surfaceNormal,
  float roughness,
  float fresnel) {

  float VdotN = max(dot(viewDirection, surfaceNormal), 0.0);
  float LdotN = max(dot(lightDirection, surfaceNormal), 0.0);

  //Half angle vector
  vec3 H = normalize(lightDirection + viewDirection);

  //Geometric term
  float NdotH = max(dot(surfaceNormal, H), 0.0);
  float VdotH = max(dot(viewDirection, H), 0.000001);
  float LdotH = max(dot(lightDirection, H), 0.000001);
  float G1 = (2.0 * NdotH * VdotN) / VdotH;
  float G2 = (2.0 * NdotH * LdotN) / LdotH;
  float G = min(1.0, min(G1, G2));
  
  //Distribution term
  float D = beckmannDistribution(NdotH, roughness);

  //Fresnel term
  float F = pow(1.0 - VdotN, fresnel);

  //Multiply terms and done
  return  G * F * D / max(3.14159265 * VdotN, 0.000001);
}

bool outOfRange(float a, float b, float p) {
  return ((p > max(a, b)) || 
          (p < min(a, b)));
}

bool outOfRange(vec2 a, vec2 b, vec2 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y));
}

bool outOfRange(vec3 a, vec3 b, vec3 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y) ||
          outOfRange(a.z, b.z, p.z));
}

bool outOfRange(vec4 a, vec4 b, vec4 p) {
  return outOfRange(a.xyz, b.xyz, p.xyz);
}

uniform vec3 clipBounds[2];
uniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity;
uniform sampler2D texture;

varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position;
varying vec4 f_color;
varying vec2 f_uv;

void main() {
  if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;
  vec3 N = normalize(f_normal);
  vec3 L = normalize(f_lightDirection);
  vec3 V = normalize(f_eyeDirection);

  if(gl_FrontFacing) {
    N = -N;
  }

  float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel)));
  float diffuse  = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0);

  vec4 surfaceColor = f_color * texture2D(texture, f_uv);
  vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular,  1.0);

  gl_FragColor = litColor * opacity;
}
`]), l = r([`precision highp float;

precision highp float;
#define GLSLIFY 1

vec3 getOrthogonalVector(vec3 v) {
  // Return up-vector for only-z vector.
  // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0).
  // From the above if-statement we have ||a|| > 0  U  ||b|| > 0.
  // Assign z = 0, x = -b, y = a:
  // a*-b + b*a + c*0 = -ba + ba + 0 = 0
  if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) {
    return normalize(vec3(-v.y, v.x, 0.0));
  } else {
    return normalize(vec3(0.0, v.z, -v.y));
  }
}

// Calculate the tube vertex and normal at the given index.
//
// The returned vertex is for a tube ring with its center at origin, radius of length(d), pointing in the direction of d.
//
// Each tube segment is made up of a ring of vertices.
// These vertices are used to make up the triangles of the tube by connecting them together in the vertex array.
// The indexes of tube segments run from 0 to 8.
//
vec3 getTubePosition(vec3 d, float index, out vec3 normal) {
  float segmentCount = 8.0;

  float angle = 2.0 * 3.14159 * (index / segmentCount);

  vec3 u = getOrthogonalVector(d);
  vec3 v = normalize(cross(u, d));

  vec3 x = u * cos(angle) * length(d);
  vec3 y = v * sin(angle) * length(d);
  vec3 v3 = x + y;

  normal = normalize(v3);

  return v3;
}

attribute vec4 vector;
attribute vec4 position;
attribute vec4 id;

uniform mat4 model, view, projection;
uniform float tubeScale;

varying vec3 f_position;
varying vec4 f_id;

void main() {
  vec3 normal;
  vec3 XYZ = getTubePosition(mat3(model) * (tubeScale * vector.w * normalize(vector.xyz)), position.w, normal);
  vec4 tubePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0);

  gl_Position = projection * (view * tubePosition);
  f_id        = id;
  f_position  = position.xyz;
}
`]), o = r([`precision highp float;
#define GLSLIFY 1

bool outOfRange(float a, float b, float p) {
  return ((p > max(a, b)) || 
          (p < min(a, b)));
}

bool outOfRange(vec2 a, vec2 b, vec2 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y));
}

bool outOfRange(vec3 a, vec3 b, vec3 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y) ||
          outOfRange(a.z, b.z, p.z));
}

bool outOfRange(vec4 a, vec4 b, vec4 p) {
  return outOfRange(a.xyz, b.xyz, p.xyz);
}

uniform vec3  clipBounds[2];
uniform float pickId;

varying vec3 f_position;
varying vec4 f_id;

void main() {
  if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;

  gl_FragColor = vec4(pickId, f_id.xyz);
}`]);
                      u.meshShader = { vertex: i, fragment: a, attributes: [{ name: "position", type: "vec4" }, { name: "color", type: "vec4" }, { name: "uv", type: "vec2" }, { name: "vector", type: "vec4" }] }, u.pickShader = { vertex: l, fragment: o, attributes: [{ name: "position", type: "vec4" }, { name: "id", type: "vec4" }, { name: "vector", type: "vec4" }] };
                    }
                  ),
                  /***/
                  7815: (
                    /***/
                    function(p, u, t) {
                      var r = t(2931), i = t(9970), a = ["xyz", "xzy", "yxz", "yzx", "zxy", "zyx"], l = function(S, M, C, m) {
                        for (var L = S.points, d = S.velocities, h = S.divergences, E = [], w = [], z = [], O = [], B = [], V = [], U = 0, H = 0, F = i.create(), G = i.create(), q = 8, rt = 0; rt < L.length; rt++) {
                          var st = L[rt], vt = d[rt], ht = h[rt];
                          M === 0 && (ht = C * 0.05), H = r.length(vt) / m, F = i.create(), r.copy(F, vt), F[3] = ht;
                          for (var et = 0; et < q; et++)
                            B[et] = [st[0], st[1], st[2], et];
                          if (O.length > 0)
                            for (var et = 0; et < q; et++) {
                              var Q = (et + 1) % q;
                              E.push(O[et], B[et], B[Q], B[Q], O[Q], O[et]), z.push(G, F, F, F, G, G), V.push(U, H, H, H, U, U);
                              var j = E.length;
                              w.push([j - 6, j - 5, j - 4], [j - 3, j - 2, j - 1]);
                            }
                          var at = O;
                          O = B, B = at;
                          var ut = G;
                          G = F, F = ut;
                          var nt = U;
                          U = H, H = nt;
                        }
                        return { positions: E, cells: w, vectors: z, vertexIntensity: V };
                      }, o = function(S, M, C, m) {
                        for (var L = 0, d = 0; d < S.length; d++)
                          for (var h = S[d].velocities, E = 0; E < h.length; E++)
                            L = Math.max(L, r.length(h[E]));
                        for (var w = S.map(function(rt) {
                          return l(rt, C, m, L);
                        }), z = [], O = [], B = [], V = [], d = 0; d < w.length; d++) {
                          var U = w[d], H = z.length;
                          z = z.concat(U.positions), B = B.concat(U.vectors), V = V.concat(U.vertexIntensity);
                          for (var E = 0; E < U.cells.length; E++) {
                            var F = U.cells[E], G = [];
                            O.push(G);
                            for (var q = 0; q < F.length; q++)
                              G.push(F[q] + H);
                          }
                        }
                        return { positions: z, cells: O, vectors: B, vertexIntensity: V, colormap: M };
                      }, y = function(S, M) {
                        var C = S.length, m;
                        for (m = 0; m < C; m++) {
                          var L = S[m];
                          if (L === M) return m;
                          if (L > M) return m - 1;
                        }
                        return m;
                      }, g = function(S, M, C) {
                        return S < M ? M : S > C ? C : S;
                      }, x = function(S, M, C) {
                        var m = M.vectors, L = M.meshgrid, d = S[0], h = S[1], E = S[2], w = L[0].length, z = L[1].length, O = L[2].length, B = y(L[0], d), V = y(L[1], h), U = y(L[2], E), H = B + 1, F = V + 1, G = U + 1;
                        if (B = g(B, 0, w - 1), H = g(H, 0, w - 1), V = g(V, 0, z - 1), F = g(F, 0, z - 1), U = g(U, 0, O - 1), G = g(G, 0, O - 1), B < 0 || V < 0 || U < 0 || H > w - 1 || F > z - 1 || G > O - 1)
                          return r.create();
                        var q = L[0][B], rt = L[0][H], st = L[1][V], vt = L[1][F], ht = L[2][U], et = L[2][G], Q = (d - q) / (rt - q), j = (h - st) / (vt - st), at = (E - ht) / (et - ht);
                        isFinite(Q) || (Q = 0.5), isFinite(j) || (j = 0.5), isFinite(at) || (at = 0.5);
                        var ut, nt, X, ct, lt, pt;
                        switch (C.reversedX && (B = w - 1 - B, H = w - 1 - H), C.reversedY && (V = z - 1 - V, F = z - 1 - F), C.reversedZ && (U = O - 1 - U, G = O - 1 - G), C.filled) {
                          case 5:
                            lt = U, pt = G, X = V * O, ct = F * O, ut = B * O * z, nt = H * O * z;
                            break;
                          case 4:
                            lt = U, pt = G, ut = B * O, nt = H * O, X = V * O * w, ct = F * O * w;
                            break;
                          case 3:
                            X = V, ct = F, lt = U * z, pt = G * z, ut = B * z * O, nt = H * z * O;
                            break;
                          case 2:
                            X = V, ct = F, ut = B * z, nt = H * z, lt = U * z * w, pt = G * z * w;
                            break;
                          case 1:
                            ut = B, nt = H, lt = U * w, pt = G * w, X = V * w * O, ct = F * w * O;
                            break;
                          default:
                            ut = B, nt = H, X = V * w, ct = F * w, lt = U * w * z, pt = G * w * z;
                            break;
                        }
                        var wt = m[ut + X + lt], Et = m[ut + X + pt], Ct = m[ut + ct + lt], Gt = m[ut + ct + pt], Jt = m[nt + X + lt], Qt = m[nt + X + pt], Vt = m[nt + ct + lt], zt = m[nt + ct + pt], Rt = r.create(), Wt = r.create(), kt = r.create(), re = r.create();
                        r.lerp(Rt, wt, Jt, Q), r.lerp(Wt, Et, Qt, Q), r.lerp(kt, Ct, Vt, Q), r.lerp(re, Gt, zt, Q);
                        var ge = r.create(), _e = r.create();
                        r.lerp(ge, Rt, kt, j), r.lerp(_e, Wt, re, j);
                        var ce = r.create();
                        return r.lerp(ce, ge, _e, at), ce;
                      }, c = function(S) {
                        var M = 1 / 0;
                        S.sort(function(d, h) {
                          return d - h;
                        });
                        for (var C = S.length, m = 1; m < C; m++) {
                          var L = Math.abs(S[m] - S[m - 1]);
                          L < M && (M = L);
                        }
                        return M;
                      }, v = function(S) {
                        for (var M = [], C = [], m = [], L = {}, d = {}, h = {}, E = S.length, w = 0; w < E; w++) {
                          var z = S[w], O = z[0], B = z[1], V = z[2];
                          L[O] || (M.push(O), L[O] = !0), d[B] || (C.push(B), d[B] = !0), h[V] || (m.push(V), h[V] = !0);
                        }
                        var U = c(M), H = c(C), F = c(m), G = Math.min(U, H, F);
                        return isFinite(G) ? G : 1;
                      };
                      p.exports = function(S, M) {
                        var C = S.startingPositions, m = S.maxLength || 1e3, L = S.tubeSize || 1, d = S.absoluteTubeSize, h = S.gridFill || "+x+y+z", E = {};
                        h.indexOf("-x") !== -1 && (E.reversedX = !0), h.indexOf("-y") !== -1 && (E.reversedY = !0), h.indexOf("-z") !== -1 && (E.reversedZ = !0), E.filled = a.indexOf(h.replace(/-/g, "").replace(/\+/g, ""));
                        var w = S.getVelocity || function(Qt) {
                          return x(Qt, S, E);
                        }, z = S.getDivergence || function(Qt, Vt) {
                          var zt = r.create(), Rt = 1e-4;
                          r.add(zt, Qt, [Rt, 0, 0]);
                          var Wt = w(zt);
                          r.subtract(Wt, Wt, Vt), r.scale(Wt, Wt, 1 / Rt), r.add(zt, Qt, [0, Rt, 0]);
                          var kt = w(zt);
                          r.subtract(kt, kt, Vt), r.scale(kt, kt, 1 / Rt), r.add(zt, Qt, [0, 0, Rt]);
                          var re = w(zt);
                          return r.subtract(re, re, Vt), r.scale(re, re, 1 / Rt), r.add(zt, Wt, kt), r.add(zt, zt, re), zt;
                        }, O = [], B = M[0][0], V = M[0][1], U = M[0][2], H = M[1][0], F = M[1][1], G = M[1][2], q = function(Qt) {
                          var Vt = Qt[0], zt = Qt[1], Rt = Qt[2];
                          return !(Vt < B || Vt > H || zt < V || zt > F || Rt < U || Rt > G);
                        }, rt = r.distance(M[0], M[1]), st = 10 * rt / m, vt = st * st, ht = 1, et = 0, Q = C.length;
                        Q > 1 && (ht = v(C));
                        for (var j = 0; j < Q; j++) {
                          var at = r.create();
                          r.copy(at, C[j]);
                          var ut = [at], nt = [], X = w(at), ct = at;
                          nt.push(X);
                          var lt = [], pt = z(at, X), wt = r.length(pt);
                          isFinite(wt) && wt > et && (et = wt), lt.push(wt), O.push({ points: ut, velocities: nt, divergences: lt });
                          for (var Et = 0; Et < m * 100 && ut.length < m && q(at); ) {
                            Et++;
                            var Ct = r.clone(X), Gt = r.squaredLength(Ct);
                            if (Gt === 0)
                              break;
                            if (Gt > vt && r.scale(Ct, Ct, st / Math.sqrt(Gt)), r.add(Ct, Ct, at), X = w(Ct), r.squaredDistance(ct, Ct) - vt > -1e-4 * vt) {
                              ut.push(Ct), ct = Ct, nt.push(X);
                              var pt = z(Ct, X), wt = r.length(pt);
                              isFinite(wt) && wt > et && (et = wt), lt.push(wt);
                            }
                            at = Ct;
                          }
                        }
                        var Jt = o(O, S.colormap, et, ht);
                        return d ? Jt.tubeScale = d : (et === 0 && (et = 1), Jt.tubeScale = L * 0.5 * ht / et), Jt;
                      };
                      var f = t(6740), _ = t(6405).createMesh;
                      p.exports.createTubeMesh = function(S, M) {
                        return _(S, M, { shaders: f, traceType: "streamtube" });
                      };
                    }
                  ),
                  /***/
                  990: (
                    /***/
                    function(p, u, t) {
                      var r = t(9405), i = t(3236), a = i([`precision highp float;
#define GLSLIFY 1

attribute vec4 uv;
attribute vec3 f;
attribute vec3 normal;

uniform vec3 objectOffset;
uniform mat4 model, view, projection, inverseModel;
uniform vec3 lightPosition, eyePosition;
uniform sampler2D colormap;

varying float value, kill;
varying vec3 worldCoordinate;
varying vec2 planeCoordinate;
varying vec3 lightDirection, eyeDirection, surfaceNormal;
varying vec4 vColor;

void main() {
  vec3 localCoordinate = vec3(uv.zw, f.x);
  worldCoordinate = objectOffset + localCoordinate;
  mat4 objectOffsetTranslation = mat4(1.0) + mat4(vec4(0), vec4(0), vec4(0), vec4(objectOffset, 0));
  vec4 worldPosition = (model * objectOffsetTranslation) * vec4(localCoordinate, 1.0);
  vec4 clipPosition = projection * (view * worldPosition);
  gl_Position = clipPosition;
  kill = f.y;
  value = f.z;
  planeCoordinate = uv.xy;

  vColor = texture2D(colormap, vec2(value, value));

  //Lighting geometry parameters
  vec4 cameraCoordinate = view * worldPosition;
  cameraCoordinate.xyz /= cameraCoordinate.w;
  lightDirection = lightPosition - cameraCoordinate.xyz;
  eyeDirection   = eyePosition - cameraCoordinate.xyz;
  surfaceNormal  = normalize((vec4(normal,0) * inverseModel).xyz);
}
`]), l = i([`precision highp float;
#define GLSLIFY 1

float beckmannDistribution(float x, float roughness) {
  float NdotH = max(x, 0.0001);
  float cos2Alpha = NdotH * NdotH;
  float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha;
  float roughness2 = roughness * roughness;
  float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha;
  return exp(tan2Alpha / roughness2) / denom;
}

float beckmannSpecular(
  vec3 lightDirection,
  vec3 viewDirection,
  vec3 surfaceNormal,
  float roughness) {
  return beckmannDistribution(dot(surfaceNormal, normalize(lightDirection + viewDirection)), roughness);
}

bool outOfRange(float a, float b, float p) {
  return ((p > max(a, b)) || 
          (p < min(a, b)));
}

bool outOfRange(vec2 a, vec2 b, vec2 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y));
}

bool outOfRange(vec3 a, vec3 b, vec3 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y) ||
          outOfRange(a.z, b.z, p.z));
}

bool outOfRange(vec4 a, vec4 b, vec4 p) {
  return outOfRange(a.xyz, b.xyz, p.xyz);
}

uniform vec3 lowerBound, upperBound;
uniform float contourTint;
uniform vec4 contourColor;
uniform sampler2D colormap;
uniform vec3 clipBounds[2];
uniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity;
uniform float vertexColor;

varying float value, kill;
varying vec3 worldCoordinate;
varying vec3 lightDirection, eyeDirection, surfaceNormal;
varying vec4 vColor;

void main() {
  if (
    kill > 0.0 ||
    vColor.a == 0.0 ||
    outOfRange(clipBounds[0], clipBounds[1], worldCoordinate)
  ) discard;

  vec3 N = normalize(surfaceNormal);
  vec3 V = normalize(eyeDirection);
  vec3 L = normalize(lightDirection);

  if(gl_FrontFacing) {
    N = -N;
  }

  float specular = max(beckmannSpecular(L, V, N, roughness), 0.);
  float diffuse  = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0);

  //decide how to interpolate color — in vertex or in fragment
  vec4 surfaceColor =
    step(vertexColor, .5) * texture2D(colormap, vec2(value, value)) +
    step(.5, vertexColor) * vColor;

  vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular,  1.0);

  gl_FragColor = mix(litColor, contourColor, contourTint) * opacity;
}
`]), o = i([`precision highp float;
#define GLSLIFY 1

attribute vec4 uv;
attribute float f;

uniform vec3 objectOffset;
uniform mat3 permutation;
uniform mat4 model, view, projection;
uniform float height, zOffset;
uniform sampler2D colormap;

varying float value, kill;
varying vec3 worldCoordinate;
varying vec2 planeCoordinate;
varying vec3 lightDirection, eyeDirection, surfaceNormal;
varying vec4 vColor;

void main() {
  vec3 dataCoordinate = permutation * vec3(uv.xy, height);
  worldCoordinate = objectOffset + dataCoordinate;
  mat4 objectOffsetTranslation = mat4(1.0) + mat4(vec4(0), vec4(0), vec4(0), vec4(objectOffset, 0));
  vec4 worldPosition = (model * objectOffsetTranslation) * vec4(dataCoordinate, 1.0);

  vec4 clipPosition = projection * (view * worldPosition);
  clipPosition.z += zOffset;

  gl_Position = clipPosition;
  value = f + objectOffset.z;
  kill = -1.0;
  planeCoordinate = uv.zw;

  vColor = texture2D(colormap, vec2(value, value));

  //Don't do lighting for contours
  surfaceNormal   = vec3(1,0,0);
  eyeDirection    = vec3(0,1,0);
  lightDirection  = vec3(0,0,1);
}
`]), y = i([`precision highp float;
#define GLSLIFY 1

bool outOfRange(float a, float b, float p) {
  return ((p > max(a, b)) || 
          (p < min(a, b)));
}

bool outOfRange(vec2 a, vec2 b, vec2 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y));
}

bool outOfRange(vec3 a, vec3 b, vec3 p) {
  return (outOfRange(a.x, b.x, p.x) ||
          outOfRange(a.y, b.y, p.y) ||
          outOfRange(a.z, b.z, p.z));
}

bool outOfRange(vec4 a, vec4 b, vec4 p) {
  return outOfRange(a.xyz, b.xyz, p.xyz);
}

uniform vec2 shape;
uniform vec3 clipBounds[2];
uniform float pickId;

varying float value, kill;
varying vec3 worldCoordinate;
varying vec2 planeCoordinate;
varying vec3 surfaceNormal;

vec2 splitFloat(float v) {
  float vh = 255.0 * v;
  float upper = floor(vh);
  float lower = fract(vh);
  return vec2(upper / 255.0, floor(lower * 16.0) / 16.0);
}

void main() {
  if ((kill > 0.0) ||
      (outOfRange(clipBounds[0], clipBounds[1], worldCoordinate))) discard;

  vec2 ux = splitFloat(planeCoordinate.x / shape.x);
  vec2 uy = splitFloat(planeCoordinate.y / shape.y);
  gl_FragColor = vec4(pickId, ux.x, uy.x, ux.y + (uy.y/16.0));
}
`]);
                      u.createShader = function(g) {
                        var x = r(g, a, l, null, [{ name: "uv", type: "vec4" }, { name: "f", type: "vec3" }, { name: "normal", type: "vec3" }]);
                        return x.attributes.uv.location = 0, x.attributes.f.location = 1, x.attributes.normal.location = 2, x;
                      }, u.createPickShader = function(g) {
                        var x = r(g, a, y, null, [{ name: "uv", type: "vec4" }, { name: "f", type: "vec3" }, { name: "normal", type: "vec3" }]);
                        return x.attributes.uv.location = 0, x.attributes.f.location = 1, x.attributes.normal.location = 2, x;
                      }, u.createContourShader = function(g) {
                        var x = r(g, o, l, null, [{ name: "uv", type: "vec4" }, { name: "f", type: "float" }]);
                        return x.attributes.uv.location = 0, x.attributes.f.location = 1, x;
                      }, u.createPickContourShader = function(g) {
                        var x = r(g, o, y, null, [{ name: "uv", type: "vec4" }, { name: "f", type: "float" }]);
                        return x.attributes.uv.location = 0, x.attributes.f.location = 1, x;
                      };
                    }
                  ),
                  /***/
                  9499: (
                    /***/
                    function(p, u, t) {
                      p.exports = nt;
                      var r = t(8828), i = t(2762), a = t(8116), l = t(7766), o = t(1888), y = t(6729), g = t(5298), x = t(9994), c = t(9618), v = t(3711), f = t(6760), _ = t(7608), S = t(2478), M = t(6199), C = t(990), m = C.createShader, L = C.createContourShader, d = C.createPickShader, h = C.createPickContourShader, E = 4 * 10, w = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], z = [[0, 0], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1]], O = [[0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0]];
                      (function() {
                        for (var X = 0; X < 3; ++X) {
                          var ct = O[X], lt = (X + 1) % 3, pt = (X + 2) % 3;
                          ct[lt + 0] = 1, ct[pt + 3] = 1, ct[X + 6] = 1;
                        }
                      })();
                      function B(X, ct, lt, pt, wt) {
                        this.position = X, this.index = ct, this.uv = lt, this.level = pt, this.dataCoordinate = wt;
                      }
                      var V = 256;
                      function U(X, ct, lt, pt, wt, Et, Ct, Gt, Jt, Qt, Vt, zt, Rt, Wt, kt) {
                        this.gl = X, this.shape = ct, this.bounds = lt, this.objectOffset = kt, this.intensityBounds = [], this._shader = pt, this._pickShader = wt, this._coordinateBuffer = Et, this._vao = Ct, this._colorMap = Gt, this._contourShader = Jt, this._contourPickShader = Qt, this._contourBuffer = Vt, this._contourVAO = zt, this._contourOffsets = [[], [], []], this._contourCounts = [[], [], []], this._vertexCount = 0, this._pickResult = new B([0, 0, 0], [0, 0], [0, 0], [0, 0, 0], [0, 0, 0]), this._dynamicBuffer = Rt, this._dynamicVAO = Wt, this._dynamicOffsets = [0, 0, 0], this._dynamicCounts = [0, 0, 0], this.contourWidth = [1, 1, 1], this.contourLevels = [[1], [1], [1]], this.contourTint = [0, 0, 0], this.contourColor = [[0.5, 0.5, 0.5, 1], [0.5, 0.5, 0.5, 1], [0.5, 0.5, 0.5, 1]], this.showContour = !0, this.showSurface = !0, this.enableHighlight = [!0, !0, !0], this.highlightColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]], this.highlightTint = [1, 1, 1], this.highlightLevel = [-1, -1, -1], this.enableDynamic = [!0, !0, !0], this.dynamicLevel = [NaN, NaN, NaN], this.dynamicColor = [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]], this.dynamicTint = [1, 1, 1], this.dynamicWidth = [1, 1, 1], this.axesBounds = [[1 / 0, 1 / 0, 1 / 0], [-1 / 0, -1 / 0, -1 / 0]], this.surfaceProject = [!1, !1, !1], this.contourProject = [[!1, !1, !1], [!1, !1, !1], [!1, !1, !1]], this.colorBounds = [!1, !1], this._field = [c(o.mallocFloat(1024), [0, 0]), c(o.mallocFloat(1024), [0, 0]), c(o.mallocFloat(1024), [0, 0])], this.pickId = 1, this.clipBounds = [[-1 / 0, -1 / 0, -1 / 0], [1 / 0, 1 / 0, 1 / 0]], this.snapToData = !1, this.pixelRatio = 1, this.opacity = 1, this.lightPosition = [10, 1e4, 0], this.ambientLight = 0.8, this.diffuseLight = 0.8, this.specularLight = 2, this.roughness = 0.5, this.fresnel = 1.5, this.vertexColor = 0, this.dirty = !0;
                      }
                      var H = U.prototype;
                      H.genColormap = function(X, ct) {
                        var lt = !1, pt = x([y({ colormap: X, nshades: V, format: "rgba" }).map(function(wt, Et) {
                          var Ct = ct ? F(Et / 255, ct) : wt[3];
                          return Ct < 1 && (lt = !0), [wt[0], wt[1], wt[2], 255 * Ct];
                        })]);
                        return g.divseq(pt, 255), this.hasAlphaScale = lt, pt;
                      }, H.isTransparent = function() {
                        return this.opacity < 1 || this.hasAlphaScale;
                      }, H.isOpaque = function() {
                        return !this.isTransparent();
                      }, H.pickSlots = 1, H.setPickBase = function(X) {
                        this.pickId = X;
                      };
                      function F(X, ct) {
                        if (!ct || !ct.length) return 1;
                        for (var lt = 0; lt < ct.length; ++lt) {
                          if (ct.length < 2) return 1;
                          if (ct[lt][0] === X) return ct[lt][1];
                          if (ct[lt][0] > X && lt > 0) {
                            var pt = (ct[lt][0] - X) / (ct[lt][0] - ct[lt - 1][0]);
                            return ct[lt][1] * (1 - pt) + pt * ct[lt - 1][1];
                          }
                        }
                        return 1;
                      }
                      var G = [0, 0, 0], q = { showSurface: !1, showContour: !1, projections: [w.slice(), w.slice(), w.slice()], clipBounds: [[[0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0]]] };
                      function rt(X, ct) {
                        var lt, pt, wt, Et = ct.axes && ct.axes.lastCubeProps.axis || G, Ct = ct.showSurface, Gt = ct.showContour;
                        for (lt = 0; lt < 3; ++lt)
                          for (Ct = Ct || ct.surfaceProject[lt], pt = 0; pt < 3; ++pt)
                            Gt = Gt || ct.contourProject[lt][pt];
                        for (lt = 0; lt < 3; ++lt) {
                          var Jt = q.projections[lt];
                          for (pt = 0; pt < 16; ++pt)
                            Jt[pt] = 0;
                          for (pt = 0; pt < 4; ++pt)
                            Jt[5 * pt] = 1;
                          Jt[5 * lt] = 0, Jt[12 + lt] = ct.axesBounds[+(Et[lt] > 0)][lt], f(Jt, X.model, Jt);
                          var Qt = q.clipBounds[lt];
                          for (wt = 0; wt < 2; ++wt)
                            for (pt = 0; pt < 3; ++pt)
                              Qt[wt][pt] = X.clipBounds[wt][pt];
                          Qt[0][lt] = -1e8, Qt[1][lt] = 1e8;
                        }
                        return q.showSurface = Ct, q.showContour = Gt, q;
                      }
                      var st = { model: w, view: w, projection: w, inverseModel: w.slice(), lowerBound: [0, 0, 0], upperBound: [0, 0, 0], colorMap: 0, clipBounds: [[0, 0, 0], [0, 0, 0]], height: 0, contourTint: 0, contourColor: [0, 0, 0, 1], permutation: [1, 0, 0, 0, 1, 0, 0, 0, 1], zOffset: -1e-4, objectOffset: [0, 0, 0], kambient: 1, kdiffuse: 1, kspecular: 1, lightPosition: [1e3, 1e3, 1e3], eyePosition: [0, 0, 0], roughness: 1, fresnel: 1, opacity: 1, vertexColor: 0 }, vt = w.slice(), ht = [1, 0, 0, 0, 1, 0, 0, 0, 1];
                      function et(X, ct) {
                        X = X || {};
                        var lt = this.gl;
                        lt.disable(lt.CULL_FACE), this._colorMap.bind(0);
                        var pt = st;
                        pt.model = X.model || w, pt.view = X.view || w, pt.projection = X.projection || w, pt.lowerBound = [this.bounds[0][0], this.bounds[0][1], this.colorBounds[0] || this.bounds[0][2]], pt.upperBound = [this.bounds[1][0], this.bounds[1][1], this.colorBounds[1] || this.bounds[1][2]], pt.objectOffset = this.objectOffset, pt.contourColor = this.contourColor[0], pt.inverseModel = _(pt.inverseModel, pt.model);
                        for (var wt = 0; wt < 2; ++wt)
                          for (var Et = pt.clipBounds[wt], Ct = 0; Ct < 3; ++Ct)
                            Et[Ct] = Math.min(Math.max(this.clipBounds[wt][Ct], -1e8), 1e8);
                        pt.kambient = this.ambientLight, pt.kdiffuse = this.diffuseLight, pt.kspecular = this.specularLight, pt.roughness = this.roughness, pt.fresnel = this.fresnel, pt.opacity = this.opacity, pt.height = 0, pt.permutation = ht, pt.vertexColor = this.vertexColor;
                        var Gt = vt;
                        for (f(Gt, pt.view, pt.model), f(Gt, pt.projection, Gt), _(Gt, Gt), wt = 0; wt < 3; ++wt)
                          pt.eyePosition[wt] = Gt[12 + wt] / Gt[15];
                        var Jt = Gt[15];
                        for (wt = 0; wt < 3; ++wt)
                          Jt += this.lightPosition[wt] * Gt[4 * wt + 3];
                        for (wt = 0; wt < 3; ++wt) {
                          var Qt = Gt[12 + wt];
                          for (Ct = 0; Ct < 3; ++Ct)
                            Qt += Gt[4 * Ct + wt] * this.lightPosition[Ct];
                          pt.lightPosition[wt] = Qt / Jt;
                        }
                        var Vt = rt(pt, this);
                        if (Vt.showSurface) {
                          for (this._shader.bind(), this._shader.uniforms = pt, this._vao.bind(), this.showSurface && this._vertexCount && this._vao.draw(lt.TRIANGLES, this._vertexCount), wt = 0; wt < 3; ++wt)
                            !this.surfaceProject[wt] || !this.vertexCount || (this._shader.uniforms.model = Vt.projections[wt], this._shader.uniforms.clipBounds = Vt.clipBounds[wt], this._vao.draw(lt.TRIANGLES, this._vertexCount));
                          this._vao.unbind();
                        }
                        if (Vt.showContour) {
                          var zt = this._contourShader;
                          pt.kambient = 1, pt.kdiffuse = 0, pt.kspecular = 0, pt.opacity = 1, zt.bind(), zt.uniforms = pt;
                          var Rt = this._contourVAO;
                          for (Rt.bind(), wt = 0; wt < 3; ++wt)
                            for (zt.uniforms.permutation = O[wt], lt.lineWidth(this.contourWidth[wt] * this.pixelRatio), Ct = 0; Ct < this.contourLevels[wt].length; ++Ct)
                              Ct === this.highlightLevel[wt] ? (zt.uniforms.contourColor = this.highlightColor[wt], zt.uniforms.contourTint = this.highlightTint[wt]) : (Ct === 0 || Ct - 1 === this.highlightLevel[wt]) && (zt.uniforms.contourColor = this.contourColor[wt], zt.uniforms.contourTint = this.contourTint[wt]), this._contourCounts[wt][Ct] && (zt.uniforms.height = this.contourLevels[wt][Ct], Rt.draw(lt.LINES, this._contourCounts[wt][Ct], this._contourOffsets[wt][Ct]));
                          for (wt = 0; wt < 3; ++wt)
                            for (zt.uniforms.model = Vt.projections[wt], zt.uniforms.clipBounds = Vt.clipBounds[wt], Ct = 0; Ct < 3; ++Ct)
                              if (this.contourProject[wt][Ct]) {
                                zt.uniforms.permutation = O[Ct], lt.lineWidth(this.contourWidth[Ct] * this.pixelRatio);
                                for (var Wt = 0; Wt < this.contourLevels[Ct].length; ++Wt)
                                  Wt === this.highlightLevel[Ct] ? (zt.uniforms.contourColor = this.highlightColor[Ct], zt.uniforms.contourTint = this.highlightTint[Ct]) : (Wt === 0 || Wt - 1 === this.highlightLevel[Ct]) && (zt.uniforms.contourColor = this.contourColor[Ct], zt.uniforms.contourTint = this.contourTint[Ct]), this._contourCounts[Ct][Wt] && (zt.uniforms.height = this.contourLevels[Ct][Wt], Rt.draw(lt.LINES, this._contourCounts[Ct][Wt], this._contourOffsets[Ct][Wt]));
                              }
                          for (Rt.unbind(), Rt = this._dynamicVAO, Rt.bind(), wt = 0; wt < 3; ++wt)
                            if (this._dynamicCounts[wt] !== 0)
                              for (zt.uniforms.model = pt.model, zt.uniforms.clipBounds = pt.clipBounds, zt.uniforms.permutation = O[wt], lt.lineWidth(this.dynamicWidth[wt] * this.pixelRatio), zt.uniforms.contourColor = this.dynamicColor[wt], zt.uniforms.contourTint = this.dynamicTint[wt], zt.uniforms.height = this.dynamicLevel[wt], Rt.draw(lt.LINES, this._dynamicCounts[wt], this._dynamicOffsets[wt]), Ct = 0; Ct < 3; ++Ct)
                                this.contourProject[Ct][wt] && (zt.uniforms.model = Vt.projections[Ct], zt.uniforms.clipBounds = Vt.clipBounds[Ct], Rt.draw(lt.LINES, this._dynamicCounts[wt], this._dynamicOffsets[wt]));
                          Rt.unbind();
                        }
                      }
                      H.draw = function(X) {
                        return et.call(this, X, !1);
                      }, H.drawTransparent = function(X) {
                        return et.call(this, X, !0);
                      };
                      var Q = { model: w, view: w, projection: w, inverseModel: w, clipBounds: [[0, 0, 0], [0, 0, 0]], height: 0, shape: [0, 0], pickId: 0, lowerBound: [0, 0, 0], upperBound: [0, 0, 0], zOffset: 0, objectOffset: [0, 0, 0], permutation: [1, 0, 0, 0, 1, 0, 0, 0, 1], lightPosition: [0, 0, 0], eyePosition: [0, 0, 0] };
                      H.drawPick = function(X) {
                        X = X || {};
                        var ct = this.gl;
                        ct.disable(ct.CULL_FACE);
                        var lt = Q;
                        lt.model = X.model || w, lt.view = X.view || w, lt.projection = X.projection || w, lt.shape = this._field[2].shape, lt.pickId = this.pickId / 255, lt.lowerBound = this.bounds[0], lt.upperBound = this.bounds[1], lt.objectOffset = this.objectOffset, lt.permutation = ht;
                        for (var pt = 0; pt < 2; ++pt)
                          for (var wt = lt.clipBounds[pt], Et = 0; Et < 3; ++Et)
                            wt[Et] = Math.min(Math.max(this.clipBounds[pt][Et], -1e8), 1e8);
                        var Ct = rt(lt, this);
                        if (Ct.showSurface) {
                          for (this._pickShader.bind(), this._pickShader.uniforms = lt, this._vao.bind(), this._vao.draw(ct.TRIANGLES, this._vertexCount), pt = 0; pt < 3; ++pt)
                            this.surfaceProject[pt] && (this._pickShader.uniforms.model = Ct.projections[pt], this._pickShader.uniforms.clipBounds = Ct.clipBounds[pt], this._vao.draw(ct.TRIANGLES, this._vertexCount));
                          this._vao.unbind();
                        }
                        if (Ct.showContour) {
                          var Gt = this._contourPickShader;
                          Gt.bind(), Gt.uniforms = lt;
                          var Jt = this._contourVAO;
                          for (Jt.bind(), Et = 0; Et < 3; ++Et)
                            for (ct.lineWidth(this.contourWidth[Et] * this.pixelRatio), Gt.uniforms.permutation = O[Et], pt = 0; pt < this.contourLevels[Et].length; ++pt)
                              this._contourCounts[Et][pt] && (Gt.uniforms.height = this.contourLevels[Et][pt], Jt.draw(ct.LINES, this._contourCounts[Et][pt], this._contourOffsets[Et][pt]));
                          for (pt = 0; pt < 3; ++pt)
                            for (Gt.uniforms.model = Ct.projections[pt], Gt.uniforms.clipBounds = Ct.clipBounds[pt], Et = 0; Et < 3; ++Et)
                              if (this.contourProject[pt][Et]) {
                                Gt.uniforms.permutation = O[Et], ct.lineWidth(this.contourWidth[Et] * this.pixelRatio);
                                for (var Qt = 0; Qt < this.contourLevels[Et].length; ++Qt)
                                  this._contourCounts[Et][Qt] && (Gt.uniforms.height = this.contourLevels[Et][Qt], Jt.draw(ct.LINES, this._contourCounts[Et][Qt], this._contourOffsets[Et][Qt]));
                              }
                          Jt.unbind();
                        }
                      }, H.pick = function(X) {
                        if (!X || X.id !== this.pickId)
                          return null;
                        var ct = this._field[2].shape, lt = this._pickResult, pt = ct[0] * (X.value[0] + (X.value[2] >> 4) / 16) / 255, wt = Math.floor(pt), Et = pt - wt, Ct = ct[1] * (X.value[1] + (X.value[2] & 15) / 16) / 255, Gt = Math.floor(Ct), Jt = Ct - Gt;
                        wt += 1, Gt += 1;
                        var Qt = lt.position;
                        Qt[0] = Qt[1] = Qt[2] = 0;
                        for (var Vt = 0; Vt < 2; ++Vt)
                          for (var zt = Vt ? Et : 1 - Et, Rt = 0; Rt < 2; ++Rt)
                            for (var Wt = Rt ? Jt : 1 - Jt, kt = wt + Vt, re = Gt + Rt, ge = zt * Wt, _e = 0; _e < 3; ++_e)
                              Qt[_e] += this._field[_e].get(kt, re) * ge;
                        for (var ce = this._pickResult.level, ae = 0; ae < 3; ++ae)
                          if (ce[ae] = S.le(this.contourLevels[ae], Qt[ae]), ce[ae] < 0)
                            this.contourLevels[ae].length > 0 && (ce[ae] = 0);
                          else if (ce[ae] < this.contourLevels[ae].length - 1) {
                            var Se = this.contourLevels[ae][ce[ae]], ze = this.contourLevels[ae][ce[ae] + 1];
                            Math.abs(Se - Qt[ae]) > Math.abs(ze - Qt[ae]) && (ce[ae] += 1);
                          }
                        for (lt.index[0] = Et < 0.5 ? wt : wt + 1, lt.index[1] = Jt < 0.5 ? Gt : Gt + 1, lt.uv[0] = pt / ct[0], lt.uv[1] = Ct / ct[1], _e = 0; _e < 3; ++_e)
                          lt.dataCoordinate[_e] = this._field[_e].get(lt.index[0], lt.index[1]);
                        return lt;
                      }, H.padField = function(X, ct) {
                        var lt = ct.shape.slice(), pt = X.shape.slice();
                        g.assign(X.lo(1, 1).hi(lt[0], lt[1]), ct), g.assign(X.lo(1).hi(lt[0], 1), ct.hi(lt[0], 1)), g.assign(X.lo(1, pt[1] - 1).hi(lt[0], 1), ct.lo(0, lt[1] - 1).hi(lt[0], 1)), g.assign(X.lo(0, 1).hi(1, lt[1]), ct.hi(1)), g.assign(X.lo(pt[0] - 1, 1).hi(1, lt[1]), ct.lo(lt[0] - 1)), X.set(0, 0, ct.get(0, 0)), X.set(0, pt[1] - 1, ct.get(0, lt[1] - 1)), X.set(pt[0] - 1, 0, ct.get(lt[0] - 1, 0)), X.set(pt[0] - 1, pt[1] - 1, ct.get(lt[0] - 1, lt[1] - 1));
                      };
                      function j(X, ct) {
                        return Array.isArray(X) ? [ct(X[0]), ct(X[1]), ct(X[2])] : [ct(X), ct(X), ct(X)];
                      }
                      function at(X) {
                        return Array.isArray(X) ? X.length === 3 ? [X[0], X[1], X[2], 1] : [X[0], X[1], X[2], X[3]] : [0, 0, 0, 1];
                      }
                      function ut(X) {
                        if (Array.isArray(X)) {
                          if (Array.isArray(X))
                            return [at(X[0]), at(X[1]), at(X[2])];
                          var ct = at(X);
                          return [ct.slice(), ct.slice(), ct.slice()];
                        }
                      }
                      H.update = function(X) {
                        X = X || {}, this.objectOffset = X.objectOffset || this.objectOffset, this.dirty = !0, "contourWidth" in X && (this.contourWidth = j(X.contourWidth, Number)), "showContour" in X && (this.showContour = j(X.showContour, Boolean)), "showSurface" in X && (this.showSurface = !!X.showSurface), "contourTint" in X && (this.contourTint = j(X.contourTint, Boolean)), "contourColor" in X && (this.contourColor = ut(X.contourColor)), "contourProject" in X && (this.contourProject = j(X.contourProject, function(de) {
                          return j(de, Boolean);
                        })), "surfaceProject" in X && (this.surfaceProject = X.surfaceProject), "dynamicColor" in X && (this.dynamicColor = ut(X.dynamicColor)), "dynamicTint" in X && (this.dynamicTint = j(X.dynamicTint, Number)), "dynamicWidth" in X && (this.dynamicWidth = j(X.dynamicWidth, Number)), "opacity" in X && (this.opacity = X.opacity), "opacityscale" in X && (this.opacityscale = X.opacityscale), "colorBounds" in X && (this.colorBounds = X.colorBounds), "vertexColor" in X && (this.vertexColor = X.vertexColor ? 1 : 0), "colormap" in X && this._colorMap.setPixels(this.genColormap(X.colormap, this.opacityscale));
                        var ct = X.field || X.coords && X.coords[2] || null, lt = !1;
                        if (ct || (this._field[2].shape[0] || this._field[2].shape[2] ? ct = this._field[2].lo(1, 1).hi(this._field[2].shape[0] - 2, this._field[2].shape[1] - 2) : ct = this._field[2].hi(0, 0)), "field" in X || "coords" in X) {
                          var pt = (ct.shape[0] + 2) * (ct.shape[1] + 2);
                          pt > this._field[2].data.length && (o.freeFloat(this._field[2].data), this._field[2].data = o.mallocFloat(r.nextPow2(pt))), this._field[2] = c(this._field[2].data, [ct.shape[0] + 2, ct.shape[1] + 2]), this.padField(this._field[2], ct), this.shape = ct.shape.slice();
                          for (var wt = this.shape, Et = 0; Et < 2; ++Et)
                            this._field[2].size > this._field[Et].data.length && (o.freeFloat(this._field[Et].data), this._field[Et].data = o.mallocFloat(this._field[2].size)), this._field[Et] = c(this._field[Et].data, [wt[0] + 2, wt[1] + 2]);
                          if (X.coords) {
                            var Ct = X.coords;
                            if (!Array.isArray(Ct) || Ct.length !== 3)
                              throw new Error("gl-surface: invalid coordinates for x/y");
                            for (Et = 0; Et < 2; ++Et) {
                              var Gt = Ct[Et];
                              for (Rt = 0; Rt < 2; ++Rt)
                                if (Gt.shape[Rt] !== wt[Rt])
                                  throw new Error("gl-surface: coords have incorrect shape");
                              this.padField(this._field[Et], Gt);
                            }
                          } else if (X.ticks) {
                            var Jt = X.ticks;
                            if (!Array.isArray(Jt) || Jt.length !== 2)
                              throw new Error("gl-surface: invalid ticks");
                            for (Et = 0; Et < 2; ++Et) {
                              var Qt = Jt[Et];
                              if ((Array.isArray(Qt) || Qt.length) && (Qt = c(Qt)), Qt.shape[0] !== wt[Et])
                                throw new Error("gl-surface: invalid tick length");
                              var Vt = c(Qt.data, wt);
                              Vt.stride[Et] = Qt.stride[0], Vt.stride[Et ^ 1] = 0, this.padField(this._field[Et], Vt);
                            }
                          } else {
                            for (Et = 0; Et < 2; ++Et) {
                              var zt = [0, 0];
                              zt[Et] = 1, this._field[Et] = c(this._field[Et].data, [wt[0] + 2, wt[1] + 2], zt, 0);
                            }
                            this._field[0].set(0, 0, 0);
                            for (var Rt = 0; Rt < wt[0]; ++Rt)
                              this._field[0].set(Rt + 1, 0, Rt);
                            for (this._field[0].set(wt[0] + 1, 0, wt[0] - 1), this._field[1].set(0, 0, 0), Rt = 0; Rt < wt[1]; ++Rt)
                              this._field[1].set(0, Rt + 1, Rt);
                            this._field[1].set(0, wt[1] + 1, wt[1] - 1);
                          }
                          var Wt = this._field, kt = c(o.mallocFloat(Wt[2].size * 3 * 2), [3, wt[0] + 2, wt[1] + 2, 2]);
                          for (Et = 0; Et < 3; ++Et)
                            M(kt.pick(Et), Wt[Et], "mirror");
                          var re = c(o.mallocFloat(Wt[2].size * 3), [wt[0] + 2, wt[1] + 2, 3]);
                          for (Et = 0; Et < wt[0] + 2; ++Et)
                            for (Rt = 0; Rt < wt[1] + 2; ++Rt) {
                              var ge = kt.get(0, Et, Rt, 0), _e = kt.get(0, Et, Rt, 1), ce = kt.get(1, Et, Rt, 0), ae = kt.get(1, Et, Rt, 1), Se = kt.get(2, Et, Rt, 0), ze = kt.get(2, Et, Rt, 1), Ne = ce * ze - ae * Se, Ve = Se * _e - ze * ge, Oe = ge * ae - _e * ce, ur = Math.sqrt(Ne * Ne + Ve * Ve + Oe * Oe);
                              ur < 1e-8 ? (ur = Math.max(Math.abs(Ne), Math.abs(Ve), Math.abs(Oe)), ur < 1e-8 ? (Oe = 1, Ve = Ne = 0, ur = 1) : ur = 1 / ur) : ur = 1 / Math.sqrt(ur), re.set(Et, Rt, 0, Ne * ur), re.set(Et, Rt, 1, Ve * ur), re.set(Et, Rt, 2, Oe * ur);
                            }
                          o.free(kt.data);
                          var ie = [1 / 0, 1 / 0, 1 / 0], $t = [-1 / 0, -1 / 0, -1 / 0], jt = 1 / 0, ee = -1 / 0, Bt = (wt[0] - 1) * (wt[1] - 1) * 6, Xt = o.mallocFloat(r.nextPow2(10 * Bt)), Zt = 0, ye = 0;
                          for (Et = 0; Et < wt[0] - 1; ++Et)
                            t: for (Rt = 0; Rt < wt[1] - 1; ++Rt) {
                              for (var Mt = 0; Mt < 2; ++Mt)
                                for (var St = 0; St < 2; ++St)
                                  for (var Lt = 0; Lt < 3; ++Lt) {
                                    var te = this._field[Lt].get(1 + Et + Mt, 1 + Rt + St);
                                    if (isNaN(te) || !isFinite(te))
                                      continue t;
                                  }
                              for (Lt = 0; Lt < 6; ++Lt) {
                                var fe = Et + z[Lt][0], Me = Rt + z[Lt][1], ir = this._field[0].get(fe + 1, Me + 1), mr = this._field[1].get(fe + 1, Me + 1);
                                te = this._field[2].get(fe + 1, Me + 1), Ne = re.get(fe + 1, Me + 1, 0), Ve = re.get(fe + 1, Me + 1, 1), Oe = re.get(fe + 1, Me + 1, 2), X.intensity && (Xe = X.intensity.get(fe, Me));
                                var Xe = X.intensity ? X.intensity.get(fe, Me) : te + this.objectOffset[2];
                                Xt[Zt++] = fe, Xt[Zt++] = Me, Xt[Zt++] = ir, Xt[Zt++] = mr, Xt[Zt++] = te, Xt[Zt++] = 0, Xt[Zt++] = Xe, Xt[Zt++] = Ne, Xt[Zt++] = Ve, Xt[Zt++] = Oe, ie[0] = Math.min(ie[0], ir + this.objectOffset[0]), ie[1] = Math.min(ie[1], mr + this.objectOffset[1]), ie[2] = Math.min(ie[2], te + this.objectOffset[2]), jt = Math.min(jt, Xe), $t[0] = Math.max($t[0], ir + this.objectOffset[0]), $t[1] = Math.max($t[1], mr + this.objectOffset[1]), $t[2] = Math.max($t[2], te + this.objectOffset[2]), ee = Math.max(ee, Xe), ye += 1;
                              }
                            }
                          for (X.intensityBounds && (jt = +X.intensityBounds[0], ee = +X.intensityBounds[1]), Et = 6; Et < Zt; Et += 10)
                            Xt[Et] = (Xt[Et] - jt) / (ee - jt);
                          this._vertexCount = ye, this._coordinateBuffer.update(Xt.subarray(0, Zt)), o.freeFloat(Xt), o.free(re.data), this.bounds = [ie, $t], this.intensity = X.intensity || this._field[2], (this.intensityBounds[0] !== jt || this.intensityBounds[1] !== ee) && (lt = !0), this.intensityBounds = [jt, ee];
                        }
                        if ("levels" in X) {
                          var xe = X.levels;
                          for (Array.isArray(xe[0]) ? xe = xe.slice() : xe = [[], [], xe], Et = 0; Et < 3; ++Et)
                            xe[Et] = xe[Et].slice(), xe[Et].sort(function(de, or) {
                              return de - or;
                            });
                          for (Et = 0; Et < 3; ++Et)
                            for (Rt = 0; Rt < xe[Et].length; ++Rt)
                              xe[Et][Rt] -= this.objectOffset[Et];
                          t: for (Et = 0; Et < 3; ++Et) {
                            if (xe[Et].length !== this.contourLevels[Et].length) {
                              lt = !0;
                              break;
                            }
                            for (Rt = 0; Rt < xe[Et].length; ++Rt)
                              if (xe[Et][Rt] !== this.contourLevels[Et][Rt]) {
                                lt = !0;
                                break t;
                              }
                          }
                          this.contourLevels = xe;
                        }
                        if (lt) {
                          Wt = this._field, wt = this.shape;
                          for (var me = [], Le = 0; Le < 3; ++Le) {
                            var qt = this.contourLevels[Le], De = [], Je = [], dr = [0, 0, 0];
                            for (Et = 0; Et < qt.length; ++Et) {
                              var qe = v(this._field[Le], qt[Et]);
                              De.push(me.length / 5 | 0), ye = 0;
                              t: for (Rt = 0; Rt < qe.cells.length; ++Rt) {
                                var we = qe.cells[Rt];
                                for (Lt = 0; Lt < 2; ++Lt) {
                                  var ue = qe.positions[we[Lt]], Pe = ue[0], Ue = Math.floor(Pe) | 0, Ye = Pe - Ue, rr = ue[1], lr = Math.floor(rr) | 0, hr = rr - lr, Sr = !1;
                                  e: for (var Dr = 0; Dr < 3; ++Dr) {
                                    dr[Dr] = 0;
                                    var Or = (Le + Dr + 1) % 3;
                                    for (Mt = 0; Mt < 2; ++Mt) {
                                      var Br = Mt ? Ye : 1 - Ye;
                                      for (fe = Math.min(Math.max(Ue + Mt, 0), wt[0]) | 0, St = 0; St < 2; ++St) {
                                        var Nr = St ? hr : 1 - hr;
                                        if (Me = Math.min(Math.max(lr + St, 0), wt[1]) | 0, Dr < 2 ? te = this._field[Or].get(fe, Me) : te = (this.intensity.get(fe, Me) - this.intensityBounds[0]) / (this.intensityBounds[1] - this.intensityBounds[0]), !isFinite(te) || isNaN(te)) {
                                          Sr = !0;
                                          break e;
                                        }
                                        var Xr = Br * Nr;
                                        dr[Dr] += Xr * te;
                                      }
                                    }
                                  }
                                  if (!Sr)
                                    me.push(dr[0], dr[1], ue[0], ue[1], dr[2]), ye += 1;
                                  else {
                                    if (Lt > 0) {
                                      for (var Gr = 0; Gr < 5; ++Gr)
                                        me.pop();
                                      ye -= 1;
                                    }
                                    continue t;
                                  }
                                }
                              }
                              Je.push(ye);
                            }
                            this._contourOffsets[Le] = De, this._contourCounts[Le] = Je;
                          }
                          var oe = o.mallocFloat(me.length);
                          for (Et = 0; Et < me.length; ++Et)
                            oe[Et] = me[Et];
                          this._contourBuffer.update(oe), o.freeFloat(oe);
                        }
                      }, H.dispose = function() {
                        this._shader.dispose(), this._vao.dispose(), this._coordinateBuffer.dispose(), this._colorMap.dispose(), this._contourBuffer.dispose(), this._contourVAO.dispose(), this._contourShader.dispose(), this._contourPickShader.dispose(), this._dynamicBuffer.dispose(), this._dynamicVAO.dispose();
                        for (var X = 0; X < 3; ++X)
                          o.freeFloat(this._field[X].data);
                      }, H.highlight = function(X) {
                        var ct;
                        if (!X) {
                          this._dynamicCounts = [0, 0, 0], this.dyanamicLevel = [NaN, NaN, NaN], this.highlightLevel = [-1, -1, -1];
                          return;
                        }
                        for (ct = 0; ct < 3; ++ct)
                          this.enableHighlight[ct] ? this.highlightLevel[ct] = X.level[ct] : this.highlightLevel[ct] = -1;
                        var lt;
                        for (this.snapToData ? lt = X.dataCoordinate : lt = X.position, ct = 0; ct < 3; ++ct)
                          lt[ct] -= this.objectOffset[ct];
                        if (!((!this.enableDynamic[0] || lt[0] === this.dynamicLevel[0]) && (!this.enableDynamic[1] || lt[1] === this.dynamicLevel[1]) && (!this.enableDynamic[2] || lt[2] === this.dynamicLevel[2]))) {
                          for (var pt = 0, wt = this.shape, Et = o.mallocFloat(12 * wt[0] * wt[1]), Ct = 0; Ct < 3; ++Ct) {
                            if (!this.enableDynamic[Ct]) {
                              this.dynamicLevel[Ct] = NaN, this._dynamicCounts[Ct] = 0;
                              continue;
                            }
                            this.dynamicLevel[Ct] = lt[Ct];
                            var Gt = (Ct + 1) % 3, Jt = (Ct + 2) % 3, Qt = this._field[Ct], Vt = this._field[Gt], zt = this._field[Jt], Rt = v(Qt, lt[Ct]), Wt = Rt.cells, kt = Rt.positions;
                            for (this._dynamicOffsets[Ct] = pt, ct = 0; ct < Wt.length; ++ct)
                              for (var re = Wt[ct], ge = 0; ge < 2; ++ge) {
                                var _e = kt[re[ge]], ce = +_e[0], ae = ce | 0, Se = Math.min(ae + 1, wt[0]) | 0, ze = ce - ae, Ne = 1 - ze, Ve = +_e[1], Oe = Ve | 0, ur = Math.min(Oe + 1, wt[1]) | 0, ie = Ve - Oe, $t = 1 - ie, jt = Ne * $t, ee = Ne * ie, Bt = ze * $t, Xt = ze * ie, Zt = jt * Vt.get(ae, Oe) + ee * Vt.get(ae, ur) + Bt * Vt.get(Se, Oe) + Xt * Vt.get(Se, ur), ye = jt * zt.get(ae, Oe) + ee * zt.get(ae, ur) + Bt * zt.get(Se, Oe) + Xt * zt.get(Se, ur);
                                if (isNaN(Zt) || isNaN(ye)) {
                                  ge && (pt -= 1);
                                  break;
                                }
                                Et[2 * pt + 0] = Zt, Et[2 * pt + 1] = ye, pt += 1;
                              }
                            this._dynamicCounts[Ct] = pt - this._dynamicOffsets[Ct];
                          }
                          this._dynamicBuffer.update(Et.subarray(0, 2 * pt)), o.freeFloat(Et);
                        }
                      };
                      function nt(X) {
                        var ct = X.gl, lt = m(ct), pt = d(ct), wt = L(ct), Et = h(ct), Ct = i(ct), Gt = a(ct, [{ buffer: Ct, size: 4, stride: E, offset: 0 }, { buffer: Ct, size: 3, stride: E, offset: 16 }, { buffer: Ct, size: 3, stride: E, offset: 28 }]), Jt = i(ct), Qt = a(ct, [{ buffer: Jt, size: 4, stride: 20, offset: 0 }, { buffer: Jt, size: 1, stride: 20, offset: 16 }]), Vt = i(ct), zt = a(ct, [{ buffer: Vt, size: 2, type: ct.FLOAT }]), Rt = l(ct, 1, V, ct.RGBA, ct.UNSIGNED_BYTE);
                        Rt.minFilter = ct.LINEAR, Rt.magFilter = ct.LINEAR;
                        var Wt = new U(
                          ct,
                          [0, 0],
                          // shape
                          [[0, 0, 0], [0, 0, 0]],
                          // bounds
                          lt,
                          pt,
                          Ct,
                          Gt,
                          Rt,
                          wt,
                          Et,
                          Jt,
                          Qt,
                          Vt,
                          zt,
                          [0, 0, 0]
                          // objectOffset
                        ), kt = { levels: [[], [], []] };
                        for (var re in X)
                          kt[re] = X[re];
                        return kt.colormap = kt.colormap || "jet", Wt.update(kt), Wt;
                      }
                    }
                  ),
                  /***/
                  7766: (
                    /***/
                    function(p, u, t) {
                      var r = t(9618), i = t(5298), a = t(1888);
                      p.exports = h;
                      var l = null, o = null, y = null;
                      function g(E) {
                        l = [E.LINEAR, E.NEAREST_MIPMAP_LINEAR, E.LINEAR_MIPMAP_NEAREST, E.LINEAR_MIPMAP_NEAREST], o = [E.NEAREST, E.LINEAR, E.NEAREST_MIPMAP_NEAREST, E.NEAREST_MIPMAP_LINEAR, E.LINEAR_MIPMAP_NEAREST, E.LINEAR_MIPMAP_LINEAR], y = [E.REPEAT, E.CLAMP_TO_EDGE, E.MIRRORED_REPEAT];
                      }
                      function x(E) {
                        return typeof HTMLCanvasElement < "u" && E instanceof HTMLCanvasElement || typeof HTMLImageElement < "u" && E instanceof HTMLImageElement || typeof HTMLVideoElement < "u" && E instanceof HTMLVideoElement || typeof ImageData < "u" && E instanceof ImageData;
                      }
                      var c = function(E, w) {
                        i.muls(E, w, 255);
                      };
                      function v(E, w, z) {
                        var O = E.gl, B = O.getParameter(O.MAX_TEXTURE_SIZE);
                        if (w < 0 || w > B || z < 0 || z > B)
                          throw new Error("gl-texture2d: Invalid texture size");
                        return E._shape = [w, z], E.bind(), O.texImage2D(O.TEXTURE_2D, 0, E.format, w, z, 0, E.format, E.type, null), E._mipLevels = [0], E;
                      }
                      function f(E, w, z, O, B, V) {
                        this.gl = E, this.handle = w, this.format = B, this.type = V, this._shape = [z, O], this._mipLevels = [0], this._magFilter = E.NEAREST, this._minFilter = E.NEAREST, this._wrapS = E.CLAMP_TO_EDGE, this._wrapT = E.CLAMP_TO_EDGE, this._anisoSamples = 1;
                        var U = this, H = [this._wrapS, this._wrapT];
                        Object.defineProperties(H, [{ get: function() {
                          return U._wrapS;
                        }, set: function(G) {
                          return U.wrapS = G;
                        } }, { get: function() {
                          return U._wrapT;
                        }, set: function(G) {
                          return U.wrapT = G;
                        } }]), this._wrapVector = H;
                        var F = [this._shape[0], this._shape[1]];
                        Object.defineProperties(F, [{ get: function() {
                          return U._shape[0];
                        }, set: function(G) {
                          return U.width = G;
                        } }, { get: function() {
                          return U._shape[1];
                        }, set: function(G) {
                          return U.height = G;
                        } }]), this._shapeVector = F;
                      }
                      var _ = f.prototype;
                      Object.defineProperties(_, { minFilter: { get: function() {
                        return this._minFilter;
                      }, set: function(E) {
                        this.bind();
                        var w = this.gl;
                        if (this.type === w.FLOAT && l.indexOf(E) >= 0 && (w.getExtension("OES_texture_float_linear") || (E = w.NEAREST)), o.indexOf(E) < 0)
                          throw new Error("gl-texture2d: Unknown filter mode " + E);
                        return w.texParameteri(w.TEXTURE_2D, w.TEXTURE_MIN_FILTER, E), this._minFilter = E;
                      } }, magFilter: { get: function() {
                        return this._magFilter;
                      }, set: function(E) {
                        this.bind();
                        var w = this.gl;
                        if (this.type === w.FLOAT && l.indexOf(E) >= 0 && (w.getExtension("OES_texture_float_linear") || (E = w.NEAREST)), o.indexOf(E) < 0)
                          throw new Error("gl-texture2d: Unknown filter mode " + E);
                        return w.texParameteri(w.TEXTURE_2D, w.TEXTURE_MAG_FILTER, E), this._magFilter = E;
                      } }, mipSamples: { get: function() {
                        return this._anisoSamples;
                      }, set: function(E) {
                        var w = this._anisoSamples;
                        if (this._anisoSamples = Math.max(E, 1) | 0, w !== this._anisoSamples) {
                          var z = this.gl.getExtension("EXT_texture_filter_anisotropic");
                          z && this.gl.texParameterf(this.gl.TEXTURE_2D, z.TEXTURE_MAX_ANISOTROPY_EXT, this._anisoSamples);
                        }
                        return this._anisoSamples;
                      } }, wrapS: { get: function() {
                        return this._wrapS;
                      }, set: function(E) {
                        if (this.bind(), y.indexOf(E) < 0)
                          throw new Error("gl-texture2d: Unknown wrap mode " + E);
                        return this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_S, E), this._wrapS = E;
                      } }, wrapT: { get: function() {
                        return this._wrapT;
                      }, set: function(E) {
                        if (this.bind(), y.indexOf(E) < 0)
                          throw new Error("gl-texture2d: Unknown wrap mode " + E);
                        return this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_T, E), this._wrapT = E;
                      } }, wrap: { get: function() {
                        return this._wrapVector;
                      }, set: function(E) {
                        if (Array.isArray(E) || (E = [E, E]), E.length !== 2)
                          throw new Error("gl-texture2d: Must specify wrap mode for rows and columns");
                        for (var w = 0; w < 2; ++w)
                          if (y.indexOf(E[w]) < 0)
                            throw new Error("gl-texture2d: Unknown wrap mode " + E);
                        this._wrapS = E[0], this._wrapT = E[1];
                        var z = this.gl;
                        return this.bind(), z.texParameteri(z.TEXTURE_2D, z.TEXTURE_WRAP_S, this._wrapS), z.texParameteri(z.TEXTURE_2D, z.TEXTURE_WRAP_T, this._wrapT), E;
                      } }, shape: { get: function() {
                        return this._shapeVector;
                      }, set: function(E) {
                        if (!Array.isArray(E))
                          E = [E | 0, E | 0];
                        else if (E.length !== 2)
                          throw new Error("gl-texture2d: Invalid texture shape");
                        return v(this, E[0] | 0, E[1] | 0), [E[0] | 0, E[1] | 0];
                      } }, width: { get: function() {
                        return this._shape[0];
                      }, set: function(E) {
                        return E = E | 0, v(this, E, this._shape[1]), E;
                      } }, height: { get: function() {
                        return this._shape[1];
                      }, set: function(E) {
                        return E = E | 0, v(this, this._shape[0], E), E;
                      } } }), _.bind = function(E) {
                        var w = this.gl;
                        return E !== void 0 && w.activeTexture(w.TEXTURE0 + (E | 0)), w.bindTexture(w.TEXTURE_2D, this.handle), E !== void 0 ? E | 0 : w.getParameter(w.ACTIVE_TEXTURE) - w.TEXTURE0;
                      }, _.dispose = function() {
                        this.gl.deleteTexture(this.handle);
                      }, _.generateMipmap = function() {
                        this.bind(), this.gl.generateMipmap(this.gl.TEXTURE_2D);
                        for (var E = Math.min(this._shape[0], this._shape[1]), w = 0; E > 0; ++w, E >>>= 1)
                          this._mipLevels.indexOf(w) < 0 && this._mipLevels.push(w);
                      }, _.setPixels = function(E, w, z, O) {
                        var B = this.gl;
                        this.bind(), Array.isArray(w) ? (O = z, z = w[1] | 0, w = w[0] | 0) : (w = w || 0, z = z || 0), O = O || 0;
                        var V = x(E) ? E : E.raw;
                        if (V) {
                          var U = this._mipLevels.indexOf(O) < 0;
                          U ? (B.texImage2D(B.TEXTURE_2D, 0, this.format, this.format, this.type, V), this._mipLevels.push(O)) : B.texSubImage2D(B.TEXTURE_2D, O, w, z, this.format, this.type, V);
                        } else if (E.shape && E.stride && E.data) {
                          if (E.shape.length < 2 || w + E.shape[1] > this._shape[1] >>> O || z + E.shape[0] > this._shape[0] >>> O || w < 0 || z < 0)
                            throw new Error("gl-texture2d: Texture dimensions are out of bounds");
                          M(B, w, z, O, this.format, this.type, this._mipLevels, E);
                        } else
                          throw new Error("gl-texture2d: Unsupported data type");
                      };
                      function S(E, w) {
                        return E.length === 3 ? w[2] === 1 && w[1] === E[0] * E[2] && w[0] === E[2] : w[0] === 1 && w[1] === E[0];
                      }
                      function M(E, w, z, O, B, V, U, H) {
                        var F = H.dtype, G = H.shape.slice();
                        if (G.length < 2 || G.length > 3)
                          throw new Error("gl-texture2d: Invalid ndarray, must be 2d or 3d");
                        var q = 0, rt = 0, st = S(G, H.stride.slice());
                        if (F === "float32" ? q = E.FLOAT : F === "float64" ? (q = E.FLOAT, st = !1, F = "float32") : F === "uint8" ? q = E.UNSIGNED_BYTE : (q = E.UNSIGNED_BYTE, st = !1, F = "uint8"), G.length === 2)
                          rt = E.LUMINANCE, G = [G[0], G[1], 1], H = r(H.data, G, [H.stride[0], H.stride[1], 1], H.offset);
                        else if (G.length === 3) {
                          if (G[2] === 1)
                            rt = E.ALPHA;
                          else if (G[2] === 2)
                            rt = E.LUMINANCE_ALPHA;
                          else if (G[2] === 3)
                            rt = E.RGB;
                          else if (G[2] === 4)
                            rt = E.RGBA;
                          else
                            throw new Error("gl-texture2d: Invalid shape for pixel coords");
                          G[2];
                        } else
                          throw new Error("gl-texture2d: Invalid shape for texture");
                        if ((rt === E.LUMINANCE || rt === E.ALPHA) && (B === E.LUMINANCE || B === E.ALPHA) && (rt = B), rt !== B)
                          throw new Error("gl-texture2d: Incompatible texture format for setPixels");
                        var vt = H.size, ht = U.indexOf(O) < 0;
                        if (ht && U.push(O), q === V && st)
                          H.offset === 0 && H.data.length === vt ? ht ? E.texImage2D(E.TEXTURE_2D, O, B, G[0], G[1], 0, B, V, H.data) : E.texSubImage2D(E.TEXTURE_2D, O, w, z, G[0], G[1], B, V, H.data) : ht ? E.texImage2D(E.TEXTURE_2D, O, B, G[0], G[1], 0, B, V, H.data.subarray(H.offset, H.offset + vt)) : E.texSubImage2D(E.TEXTURE_2D, O, w, z, G[0], G[1], B, V, H.data.subarray(H.offset, H.offset + vt));
                        else {
                          var et;
                          V === E.FLOAT ? et = a.mallocFloat32(vt) : et = a.mallocUint8(vt);
                          var Q = r(et, G, [G[2], G[2] * G[0], 1]);
                          q === E.FLOAT && V === E.UNSIGNED_BYTE ? c(Q, H) : i.assign(Q, H), ht ? E.texImage2D(E.TEXTURE_2D, O, B, G[0], G[1], 0, B, V, et.subarray(0, vt)) : E.texSubImage2D(E.TEXTURE_2D, O, w, z, G[0], G[1], B, V, et.subarray(0, vt)), V === E.FLOAT ? a.freeFloat32(et) : a.freeUint8(et);
                        }
                      }
                      function C(E) {
                        var w = E.createTexture();
                        return E.bindTexture(E.TEXTURE_2D, w), E.texParameteri(E.TEXTURE_2D, E.TEXTURE_MIN_FILTER, E.NEAREST), E.texParameteri(E.TEXTURE_2D, E.TEXTURE_MAG_FILTER, E.NEAREST), E.texParameteri(E.TEXTURE_2D, E.TEXTURE_WRAP_S, E.CLAMP_TO_EDGE), E.texParameteri(E.TEXTURE_2D, E.TEXTURE_WRAP_T, E.CLAMP_TO_EDGE), w;
                      }
                      function m(E, w, z, O, B) {
                        var V = E.getParameter(E.MAX_TEXTURE_SIZE);
                        if (w < 0 || w > V || z < 0 || z > V)
                          throw new Error("gl-texture2d: Invalid texture shape");
                        if (B === E.FLOAT && !E.getExtension("OES_texture_float"))
                          throw new Error("gl-texture2d: Floating point textures not supported on this platform");
                        var U = C(E);
                        return E.texImage2D(E.TEXTURE_2D, 0, O, w, z, 0, O, B, null), new f(E, U, w, z, O, B);
                      }
                      function L(E, w, z, O, B, V) {
                        var U = C(E);
                        return E.texImage2D(E.TEXTURE_2D, 0, B, B, V, w), new f(E, U, z, O, B, V);
                      }
                      function d(E, w) {
                        var z = w.dtype, O = w.shape.slice(), B = E.getParameter(E.MAX_TEXTURE_SIZE);
                        if (O[0] < 0 || O[0] > B || O[1] < 0 || O[1] > B)
                          throw new Error("gl-texture2d: Invalid texture size");
                        var V = S(O, w.stride.slice()), U = 0;
                        z === "float32" ? U = E.FLOAT : z === "float64" ? (U = E.FLOAT, V = !1, z = "float32") : z === "uint8" ? U = E.UNSIGNED_BYTE : (U = E.UNSIGNED_BYTE, V = !1, z = "uint8");
                        var H = 0;
                        if (O.length === 2)
                          H = E.LUMINANCE, O = [O[0], O[1], 1], w = r(w.data, O, [w.stride[0], w.stride[1], 1], w.offset);
                        else if (O.length === 3)
                          if (O[2] === 1)
                            H = E.ALPHA;
                          else if (O[2] === 2)
                            H = E.LUMINANCE_ALPHA;
                          else if (O[2] === 3)
                            H = E.RGB;
                          else if (O[2] === 4)
                            H = E.RGBA;
                          else
                            throw new Error("gl-texture2d: Invalid shape for pixel coords");
                        else
                          throw new Error("gl-texture2d: Invalid shape for texture");
                        U === E.FLOAT && !E.getExtension("OES_texture_float") && (U = E.UNSIGNED_BYTE, V = !1);
                        var F, G, q = w.size;
                        if (V)
                          w.offset === 0 && w.data.length === q ? F = w.data : F = w.data.subarray(w.offset, w.offset + q);
                        else {
                          var rt = [O[2], O[2] * O[0], 1];
                          G = a.malloc(q, z);
                          var st = r(G, O, rt, 0);
                          (z === "float32" || z === "float64") && U === E.UNSIGNED_BYTE ? c(st, w) : i.assign(st, w), F = G.subarray(0, q);
                        }
                        var vt = C(E);
                        return E.texImage2D(E.TEXTURE_2D, 0, H, O[0], O[1], 0, H, U, F), V || a.free(G), new f(E, vt, O[0], O[1], H, U);
                      }
                      function h(E) {
                        if (arguments.length <= 1)
                          throw new Error("gl-texture2d: Missing arguments for texture2d constructor");
                        if (l || g(E), typeof arguments[1] == "number")
                          return m(E, arguments[1], arguments[2], arguments[3] || E.RGBA, arguments[4] || E.UNSIGNED_BYTE);
                        if (Array.isArray(arguments[1]))
                          return m(E, arguments[1][0] | 0, arguments[1][1] | 0, arguments[2] || E.RGBA, arguments[3] || E.UNSIGNED_BYTE);
                        if (typeof arguments[1] == "object") {
                          var w = arguments[1], z = x(w) ? w : w.raw;
                          if (z)
                            return L(E, z, w.width | 0, w.height | 0, arguments[2] || E.RGBA, arguments[3] || E.UNSIGNED_BYTE);
                          if (w.shape && w.data && w.stride)
                            return d(E, w);
                        }
                        throw new Error("gl-texture2d: Invalid arguments for texture2d constructor");
                      }
                    }
                  ),
                  /***/
                  1433: (
                    /***/
                    function(p) {
                      function u(t, r, i) {
                        r ? r.bind() : t.bindBuffer(t.ELEMENT_ARRAY_BUFFER, null);
                        var a = t.getParameter(t.MAX_VERTEX_ATTRIBS) | 0;
                        if (i) {
                          if (i.length > a)
                            throw new Error("gl-vao: Too many vertex attributes");
                          for (var l = 0; l < i.length; ++l) {
                            var o = i[l];
                            if (o.buffer) {
                              var y = o.buffer, g = o.size || 4, x = o.type || t.FLOAT, c = !!o.normalized, v = o.stride || 0, f = o.offset || 0;
                              y.bind(), t.enableVertexAttribArray(l), t.vertexAttribPointer(l, g, x, c, v, f);
                            } else {
                              if (typeof o == "number")
                                t.vertexAttrib1f(l, o);
                              else if (o.length === 1)
                                t.vertexAttrib1f(l, o[0]);
                              else if (o.length === 2)
                                t.vertexAttrib2f(l, o[0], o[1]);
                              else if (o.length === 3)
                                t.vertexAttrib3f(l, o[0], o[1], o[2]);
                              else if (o.length === 4)
                                t.vertexAttrib4f(l, o[0], o[1], o[2], o[3]);
                              else
                                throw new Error("gl-vao: Invalid vertex attribute");
                              t.disableVertexAttribArray(l);
                            }
                          }
                          for (; l < a; ++l)
                            t.disableVertexAttribArray(l);
                        } else {
                          t.bindBuffer(t.ARRAY_BUFFER, null);
                          for (var l = 0; l < a; ++l)
                            t.disableVertexAttribArray(l);
                        }
                      }
                      p.exports = u;
                    }
                  ),
                  /***/
                  870: (
                    /***/
                    function(p, u, t) {
                      var r = t(1433);
                      function i(l) {
                        this.gl = l, this._elements = null, this._attributes = null, this._elementsType = l.UNSIGNED_SHORT;
                      }
                      i.prototype.bind = function() {
                        r(this.gl, this._elements, this._attributes);
                      }, i.prototype.update = function(l, o, y) {
                        this._elements = o, this._attributes = l, this._elementsType = y || this.gl.UNSIGNED_SHORT;
                      }, i.prototype.dispose = function() {
                      }, i.prototype.unbind = function() {
                      }, i.prototype.draw = function(l, o, y) {
                        y = y || 0;
                        var g = this.gl;
                        this._elements ? g.drawElements(l, o, this._elementsType, y) : g.drawArrays(l, y, o);
                      };
                      function a(l) {
                        return new i(l);
                      }
                      p.exports = a;
                    }
                  ),
                  /***/
                  7518: (
                    /***/
                    function(p, u, t) {
                      var r = t(1433);
                      function i(o, y, g, x, c, v) {
                        this.location = o, this.dimension = y, this.a = g, this.b = x, this.c = c, this.d = v;
                      }
                      i.prototype.bind = function(o) {
                        switch (this.dimension) {
                          case 1:
                            o.vertexAttrib1f(this.location, this.a);
                            break;
                          case 2:
                            o.vertexAttrib2f(this.location, this.a, this.b);
                            break;
                          case 3:
                            o.vertexAttrib3f(this.location, this.a, this.b, this.c);
                            break;
                          case 4:
                            o.vertexAttrib4f(this.location, this.a, this.b, this.c, this.d);
                            break;
                        }
                      };
                      function a(o, y, g) {
                        this.gl = o, this._ext = y, this.handle = g, this._attribs = [], this._useElements = !1, this._elementsType = o.UNSIGNED_SHORT;
                      }
                      a.prototype.bind = function() {
                        this._ext.bindVertexArrayOES(this.handle);
                        for (var o = 0; o < this._attribs.length; ++o)
                          this._attribs[o].bind(this.gl);
                      }, a.prototype.unbind = function() {
                        this._ext.bindVertexArrayOES(null);
                      }, a.prototype.dispose = function() {
                        this._ext.deleteVertexArrayOES(this.handle);
                      }, a.prototype.update = function(o, y, g) {
                        if (this.bind(), r(this.gl, y, o), this.unbind(), this._attribs.length = 0, o) for (var x = 0; x < o.length; ++x) {
                          var c = o[x];
                          typeof c == "number" ? this._attribs.push(new i(x, 1, c)) : Array.isArray(c) && this._attribs.push(new i(x, c.length, c[0], c[1], c[2], c[3]));
                        }
                        this._useElements = !!y, this._elementsType = g || this.gl.UNSIGNED_SHORT;
                      }, a.prototype.draw = function(o, y, g) {
                        g = g || 0;
                        var x = this.gl;
                        this._useElements ? x.drawElements(o, y, this._elementsType, g) : x.drawArrays(o, g, y);
                      };
                      function l(o, y) {
                        return new a(o, y, y.createVertexArrayOES());
                      }
                      p.exports = l;
                    }
                  ),
                  /***/
                  8116: (
                    /***/
                    function(p, u, t) {
                      var r = t(7518), i = t(870);
                      function a(o) {
                        this.bindVertexArrayOES = o.bindVertexArray.bind(o), this.createVertexArrayOES = o.createVertexArray.bind(o), this.deleteVertexArrayOES = o.deleteVertexArray.bind(o);
                      }
                      function l(o, y, g, x) {
                        var c = o.createVertexArray ? new a(o) : o.getExtension("OES_vertex_array_object"), v;
                        return c ? v = r(o, c) : v = i(o), v.update(y, g, x), v;
                      }
                      p.exports = l;
                    }
                  ),
                  /***/
                  5632: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        return t[0] = r[0] + i[0], t[1] = r[1] + i[1], t[2] = r[2] + i[2], t;
                      }
                    }
                  ),
                  /***/
                  8192: (
                    /***/
                    function(p, u, t) {
                      p.exports = l;
                      var r = t(2825), i = t(3536), a = t(244);
                      function l(o, y) {
                        var g = r(o[0], o[1], o[2]), x = r(y[0], y[1], y[2]);
                        i(g, g), i(x, x);
                        var c = a(g, x);
                        return c > 1 ? 0 : Math.acos(c);
                      }
                    }
                  ),
                  /***/
                  9226: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r) {
                        return t[0] = Math.ceil(r[0]), t[1] = Math.ceil(r[1]), t[2] = Math.ceil(r[2]), t;
                      }
                    }
                  ),
                  /***/
                  3126: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t) {
                        var r = new Float32Array(3);
                        return r[0] = t[0], r[1] = t[1], r[2] = t[2], r;
                      }
                    }
                  ),
                  /***/
                  3990: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r) {
                        return t[0] = r[0], t[1] = r[1], t[2] = r[2], t;
                      }
                    }
                  ),
                  /***/
                  1091: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u() {
                        var t = new Float32Array(3);
                        return t[0] = 0, t[1] = 0, t[2] = 0, t;
                      }
                    }
                  ),
                  /***/
                  5911: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        var a = r[0], l = r[1], o = r[2], y = i[0], g = i[1], x = i[2];
                        return t[0] = l * x - o * g, t[1] = o * y - a * x, t[2] = a * g - l * y, t;
                      }
                    }
                  ),
                  /***/
                  5455: (
                    /***/
                    function(p, u, t) {
                      p.exports = t(7056);
                    }
                  ),
                  /***/
                  7056: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r) {
                        var i = r[0] - t[0], a = r[1] - t[1], l = r[2] - t[2];
                        return Math.sqrt(i * i + a * a + l * l);
                      }
                    }
                  ),
                  /***/
                  4008: (
                    /***/
                    function(p, u, t) {
                      p.exports = t(6690);
                    }
                  ),
                  /***/
                  6690: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        return t[0] = r[0] / i[0], t[1] = r[1] / i[1], t[2] = r[2] / i[2], t;
                      }
                    }
                  ),
                  /***/
                  244: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r) {
                        return t[0] * r[0] + t[1] * r[1] + t[2] * r[2];
                      }
                    }
                  ),
                  /***/
                  2613: (
                    /***/
                    function(p) {
                      p.exports = 1e-6;
                    }
                  ),
                  /***/
                  9922: (
                    /***/
                    function(p, u, t) {
                      p.exports = i;
                      var r = t(2613);
                      function i(a, l) {
                        var o = a[0], y = a[1], g = a[2], x = l[0], c = l[1], v = l[2];
                        return Math.abs(o - x) <= r * Math.max(1, Math.abs(o), Math.abs(x)) && Math.abs(y - c) <= r * Math.max(1, Math.abs(y), Math.abs(c)) && Math.abs(g - v) <= r * Math.max(1, Math.abs(g), Math.abs(v));
                      }
                    }
                  ),
                  /***/
                  9265: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r) {
                        return t[0] === r[0] && t[1] === r[1] && t[2] === r[2];
                      }
                    }
                  ),
                  /***/
                  2681: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r) {
                        return t[0] = Math.floor(r[0]), t[1] = Math.floor(r[1]), t[2] = Math.floor(r[2]), t;
                      }
                    }
                  ),
                  /***/
                  5137: (
                    /***/
                    function(p, u, t) {
                      p.exports = i;
                      var r = t(1091)();
                      function i(a, l, o, y, g, x) {
                        var c, v;
                        for (l || (l = 3), o || (o = 0), y ? v = Math.min(y * l + o, a.length) : v = a.length, c = o; c < v; c += l)
                          r[0] = a[c], r[1] = a[c + 1], r[2] = a[c + 2], g(r, r, x), a[c] = r[0], a[c + 1] = r[1], a[c + 2] = r[2];
                        return a;
                      }
                    }
                  ),
                  /***/
                  2825: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        var a = new Float32Array(3);
                        return a[0] = t, a[1] = r, a[2] = i, a;
                      }
                    }
                  ),
                  /***/
                  2931: (
                    /***/
                    function(p, u, t) {
                      p.exports = { EPSILON: t(2613), create: t(1091), clone: t(3126), angle: t(8192), fromValues: t(2825), copy: t(3990), set: t(1463), equals: t(9922), exactEquals: t(9265), add: t(5632), subtract: t(6843), sub: t(2229), multiply: t(5847), mul: t(4505), divide: t(6690), div: t(4008), min: t(8107), max: t(7417), floor: t(2681), ceil: t(9226), round: t(2447), scale: t(6621), scaleAndAdd: t(8489), distance: t(7056), dist: t(5455), squaredDistance: t(2953), sqrDist: t(6141), length: t(1387), len: t(868), squaredLength: t(3066), sqrLen: t(5486), negate: t(5093), inverse: t(811), normalize: t(3536), dot: t(244), cross: t(5911), lerp: t(6658), random: t(7636), transformMat4: t(5673), transformMat3: t(492), transformQuat: t(264), rotateX: t(6894), rotateY: t(109), rotateZ: t(8692), forEach: t(5137) };
                    }
                  ),
                  /***/
                  811: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r) {
                        return t[0] = 1 / r[0], t[1] = 1 / r[1], t[2] = 1 / r[2], t;
                      }
                    }
                  ),
                  /***/
                  868: (
                    /***/
                    function(p, u, t) {
                      p.exports = t(1387);
                    }
                  ),
                  /***/
                  1387: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t) {
                        var r = t[0], i = t[1], a = t[2];
                        return Math.sqrt(r * r + i * i + a * a);
                      }
                    }
                  ),
                  /***/
                  6658: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i, a) {
                        var l = r[0], o = r[1], y = r[2];
                        return t[0] = l + a * (i[0] - l), t[1] = o + a * (i[1] - o), t[2] = y + a * (i[2] - y), t;
                      }
                    }
                  ),
                  /***/
                  7417: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        return t[0] = Math.max(r[0], i[0]), t[1] = Math.max(r[1], i[1]), t[2] = Math.max(r[2], i[2]), t;
                      }
                    }
                  ),
                  /***/
                  8107: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        return t[0] = Math.min(r[0], i[0]), t[1] = Math.min(r[1], i[1]), t[2] = Math.min(r[2], i[2]), t;
                      }
                    }
                  ),
                  /***/
                  4505: (
                    /***/
                    function(p, u, t) {
                      p.exports = t(5847);
                    }
                  ),
                  /***/
                  5847: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        return t[0] = r[0] * i[0], t[1] = r[1] * i[1], t[2] = r[2] * i[2], t;
                      }
                    }
                  ),
                  /***/
                  5093: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r) {
                        return t[0] = -r[0], t[1] = -r[1], t[2] = -r[2], t;
                      }
                    }
                  ),
                  /***/
                  3536: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r) {
                        var i = r[0], a = r[1], l = r[2], o = i * i + a * a + l * l;
                        return o > 0 && (o = 1 / Math.sqrt(o), t[0] = r[0] * o, t[1] = r[1] * o, t[2] = r[2] * o), t;
                      }
                    }
                  ),
                  /***/
                  7636: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r) {
                        r = r || 1;
                        var i = Math.random() * 2 * Math.PI, a = Math.random() * 2 - 1, l = Math.sqrt(1 - a * a) * r;
                        return t[0] = Math.cos(i) * l, t[1] = Math.sin(i) * l, t[2] = a * r, t;
                      }
                    }
                  ),
                  /***/
                  6894: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i, a) {
                        var l = i[1], o = i[2], y = r[1] - l, g = r[2] - o, x = Math.sin(a), c = Math.cos(a);
                        return t[0] = r[0], t[1] = l + y * c - g * x, t[2] = o + y * x + g * c, t;
                      }
                    }
                  ),
                  /***/
                  109: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i, a) {
                        var l = i[0], o = i[2], y = r[0] - l, g = r[2] - o, x = Math.sin(a), c = Math.cos(a);
                        return t[0] = l + g * x + y * c, t[1] = r[1], t[2] = o + g * c - y * x, t;
                      }
                    }
                  ),
                  /***/
                  8692: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i, a) {
                        var l = i[0], o = i[1], y = r[0] - l, g = r[1] - o, x = Math.sin(a), c = Math.cos(a);
                        return t[0] = l + y * c - g * x, t[1] = o + y * x + g * c, t[2] = r[2], t;
                      }
                    }
                  ),
                  /***/
                  2447: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r) {
                        return t[0] = Math.round(r[0]), t[1] = Math.round(r[1]), t[2] = Math.round(r[2]), t;
                      }
                    }
                  ),
                  /***/
                  6621: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        return t[0] = r[0] * i, t[1] = r[1] * i, t[2] = r[2] * i, t;
                      }
                    }
                  ),
                  /***/
                  8489: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i, a) {
                        return t[0] = r[0] + i[0] * a, t[1] = r[1] + i[1] * a, t[2] = r[2] + i[2] * a, t;
                      }
                    }
                  ),
                  /***/
                  1463: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i, a) {
                        return t[0] = r, t[1] = i, t[2] = a, t;
                      }
                    }
                  ),
                  /***/
                  6141: (
                    /***/
                    function(p, u, t) {
                      p.exports = t(2953);
                    }
                  ),
                  /***/
                  5486: (
                    /***/
                    function(p, u, t) {
                      p.exports = t(3066);
                    }
                  ),
                  /***/
                  2953: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r) {
                        var i = r[0] - t[0], a = r[1] - t[1], l = r[2] - t[2];
                        return i * i + a * a + l * l;
                      }
                    }
                  ),
                  /***/
                  3066: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t) {
                        var r = t[0], i = t[1], a = t[2];
                        return r * r + i * i + a * a;
                      }
                    }
                  ),
                  /***/
                  2229: (
                    /***/
                    function(p, u, t) {
                      p.exports = t(6843);
                    }
                  ),
                  /***/
                  6843: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        return t[0] = r[0] - i[0], t[1] = r[1] - i[1], t[2] = r[2] - i[2], t;
                      }
                    }
                  ),
                  /***/
                  492: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        var a = r[0], l = r[1], o = r[2];
                        return t[0] = a * i[0] + l * i[3] + o * i[6], t[1] = a * i[1] + l * i[4] + o * i[7], t[2] = a * i[2] + l * i[5] + o * i[8], t;
                      }
                    }
                  ),
                  /***/
                  5673: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        var a = r[0], l = r[1], o = r[2], y = i[3] * a + i[7] * l + i[11] * o + i[15];
                        return y = y || 1, t[0] = (i[0] * a + i[4] * l + i[8] * o + i[12]) / y, t[1] = (i[1] * a + i[5] * l + i[9] * o + i[13]) / y, t[2] = (i[2] * a + i[6] * l + i[10] * o + i[14]) / y, t;
                      }
                    }
                  ),
                  /***/
                  264: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        var a = r[0], l = r[1], o = r[2], y = i[0], g = i[1], x = i[2], c = i[3], v = c * a + g * o - x * l, f = c * l + x * a - y * o, _ = c * o + y * l - g * a, S = -y * a - g * l - x * o;
                        return t[0] = v * c + S * -y + f * -x - _ * -g, t[1] = f * c + S * -g + _ * -y - v * -x, t[2] = _ * c + S * -x + v * -g - f * -y, t;
                      }
                    }
                  ),
                  /***/
                  4361: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        return t[0] = r[0] + i[0], t[1] = r[1] + i[1], t[2] = r[2] + i[2], t[3] = r[3] + i[3], t;
                      }
                    }
                  ),
                  /***/
                  2335: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t) {
                        var r = new Float32Array(4);
                        return r[0] = t[0], r[1] = t[1], r[2] = t[2], r[3] = t[3], r;
                      }
                    }
                  ),
                  /***/
                  2933: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r) {
                        return t[0] = r[0], t[1] = r[1], t[2] = r[2], t[3] = r[3], t;
                      }
                    }
                  ),
                  /***/
                  7536: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u() {
                        var t = new Float32Array(4);
                        return t[0] = 0, t[1] = 0, t[2] = 0, t[3] = 0, t;
                      }
                    }
                  ),
                  /***/
                  4691: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r) {
                        var i = r[0] - t[0], a = r[1] - t[1], l = r[2] - t[2], o = r[3] - t[3];
                        return Math.sqrt(i * i + a * a + l * l + o * o);
                      }
                    }
                  ),
                  /***/
                  1373: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        return t[0] = r[0] / i[0], t[1] = r[1] / i[1], t[2] = r[2] / i[2], t[3] = r[3] / i[3], t;
                      }
                    }
                  ),
                  /***/
                  3750: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r) {
                        return t[0] * r[0] + t[1] * r[1] + t[2] * r[2] + t[3] * r[3];
                      }
                    }
                  ),
                  /***/
                  3390: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i, a) {
                        var l = new Float32Array(4);
                        return l[0] = t, l[1] = r, l[2] = i, l[3] = a, l;
                      }
                    }
                  ),
                  /***/
                  9970: (
                    /***/
                    function(p, u, t) {
                      p.exports = { create: t(7536), clone: t(2335), fromValues: t(3390), copy: t(2933), set: t(4578), add: t(4361), subtract: t(6860), multiply: t(3576), divide: t(1373), min: t(2334), max: t(160), scale: t(9288), scaleAndAdd: t(4844), distance: t(4691), squaredDistance: t(7960), length: t(6808), squaredLength: t(483), negate: t(1498), inverse: t(4494), normalize: t(5177), dot: t(3750), lerp: t(2573), random: t(9131), transformMat4: t(5352), transformQuat: t(4041) };
                    }
                  ),
                  /***/
                  4494: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r) {
                        return t[0] = 1 / r[0], t[1] = 1 / r[1], t[2] = 1 / r[2], t[3] = 1 / r[3], t;
                      }
                    }
                  ),
                  /***/
                  6808: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t) {
                        var r = t[0], i = t[1], a = t[2], l = t[3];
                        return Math.sqrt(r * r + i * i + a * a + l * l);
                      }
                    }
                  ),
                  /***/
                  2573: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i, a) {
                        var l = r[0], o = r[1], y = r[2], g = r[3];
                        return t[0] = l + a * (i[0] - l), t[1] = o + a * (i[1] - o), t[2] = y + a * (i[2] - y), t[3] = g + a * (i[3] - g), t;
                      }
                    }
                  ),
                  /***/
                  160: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        return t[0] = Math.max(r[0], i[0]), t[1] = Math.max(r[1], i[1]), t[2] = Math.max(r[2], i[2]), t[3] = Math.max(r[3], i[3]), t;
                      }
                    }
                  ),
                  /***/
                  2334: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        return t[0] = Math.min(r[0], i[0]), t[1] = Math.min(r[1], i[1]), t[2] = Math.min(r[2], i[2]), t[3] = Math.min(r[3], i[3]), t;
                      }
                    }
                  ),
                  /***/
                  3576: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        return t[0] = r[0] * i[0], t[1] = r[1] * i[1], t[2] = r[2] * i[2], t[3] = r[3] * i[3], t;
                      }
                    }
                  ),
                  /***/
                  1498: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r) {
                        return t[0] = -r[0], t[1] = -r[1], t[2] = -r[2], t[3] = -r[3], t;
                      }
                    }
                  ),
                  /***/
                  5177: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r) {
                        var i = r[0], a = r[1], l = r[2], o = r[3], y = i * i + a * a + l * l + o * o;
                        return y > 0 && (y = 1 / Math.sqrt(y), t[0] = i * y, t[1] = a * y, t[2] = l * y, t[3] = o * y), t;
                      }
                    }
                  ),
                  /***/
                  9131: (
                    /***/
                    function(p, u, t) {
                      var r = t(5177), i = t(9288);
                      p.exports = a;
                      function a(l, o) {
                        return o = o || 1, l[0] = Math.random(), l[1] = Math.random(), l[2] = Math.random(), l[3] = Math.random(), r(l, l), i(l, l, o), l;
                      }
                    }
                  ),
                  /***/
                  9288: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        return t[0] = r[0] * i, t[1] = r[1] * i, t[2] = r[2] * i, t[3] = r[3] * i, t;
                      }
                    }
                  ),
                  /***/
                  4844: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i, a) {
                        return t[0] = r[0] + i[0] * a, t[1] = r[1] + i[1] * a, t[2] = r[2] + i[2] * a, t[3] = r[3] + i[3] * a, t;
                      }
                    }
                  ),
                  /***/
                  4578: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i, a, l) {
                        return t[0] = r, t[1] = i, t[2] = a, t[3] = l, t;
                      }
                    }
                  ),
                  /***/
                  7960: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r) {
                        var i = r[0] - t[0], a = r[1] - t[1], l = r[2] - t[2], o = r[3] - t[3];
                        return i * i + a * a + l * l + o * o;
                      }
                    }
                  ),
                  /***/
                  483: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t) {
                        var r = t[0], i = t[1], a = t[2], l = t[3];
                        return r * r + i * i + a * a + l * l;
                      }
                    }
                  ),
                  /***/
                  6860: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        return t[0] = r[0] - i[0], t[1] = r[1] - i[1], t[2] = r[2] - i[2], t[3] = r[3] - i[3], t;
                      }
                    }
                  ),
                  /***/
                  5352: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        var a = r[0], l = r[1], o = r[2], y = r[3];
                        return t[0] = i[0] * a + i[4] * l + i[8] * o + i[12] * y, t[1] = i[1] * a + i[5] * l + i[9] * o + i[13] * y, t[2] = i[2] * a + i[6] * l + i[10] * o + i[14] * y, t[3] = i[3] * a + i[7] * l + i[11] * o + i[15] * y, t;
                      }
                    }
                  ),
                  /***/
                  4041: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        var a = r[0], l = r[1], o = r[2], y = i[0], g = i[1], x = i[2], c = i[3], v = c * a + g * o - x * l, f = c * l + x * a - y * o, _ = c * o + y * l - g * a, S = -y * a - g * l - x * o;
                        return t[0] = v * c + S * -y + f * -x - _ * -g, t[1] = f * c + S * -g + _ * -y - v * -x, t[2] = _ * c + S * -x + v * -g - f * -y, t[3] = r[3], t;
                      }
                    }
                  ),
                  /***/
                  1848: (
                    /***/
                    function(p, u, t) {
                      var r = t(4905), i = t(6468);
                      p.exports = a;
                      function a(l) {
                        for (var o = Array.isArray(l) ? l : r(l), y = 0; y < o.length; y++) {
                          var g = o[y];
                          if (g.type === "preprocessor") {
                            var x = g.data.match(/\#define\s+SHADER_NAME(_B64)?\s+(.+)$/);
                            if (x && x[2]) {
                              var c = x[1], v = x[2];
                              return (c ? i(v) : v).trim();
                            }
                          }
                        }
                      }
                    }
                  ),
                  /***/
                  5874: (
                    /***/
                    function(p, u, t) {
                      p.exports = w;
                      var r = t(620), i = t(7827), a = t(6852), l = t(7932), o = t(3508), y = 999, g = 9999, x = 0, c = 1, v = 2, f = 3, _ = 4, S = 5, M = 6, C = 7, m = 8, L = 9, d = 10, h = 11, E = ["block-comment", "line-comment", "preprocessor", "operator", "integer", "float", "ident", "builtin", "keyword", "whitespace", "eof", "integer"];
                      function w(z) {
                        var O = 0, B = 0, V = y, U, H, F = [], G = [], q = 1, rt = 0, st = 0, vt = !1, ht = !1, et = "", Q;
                        z = z || {};
                        var j = a, at = r;
                        z.version === "300 es" && (j = o, at = l);
                        for (var ut = {}, nt = {}, O = 0; O < j.length; O++)
                          ut[j[O]] = !0;
                        for (var O = 0; O < at.length; O++)
                          nt[at[O]] = !0;
                        return function(kt) {
                          return G = [], kt !== null ? ct(kt) : lt();
                        };
                        function X(kt) {
                          kt.length && G.push({ type: E[V], data: kt, position: st, line: q, column: rt });
                        }
                        function ct(kt) {
                          O = 0, kt.toString && (kt = kt.toString()), et += kt.replace(/\r\n/g, `
`), Q = et.length;
                          for (var re; U = et[O], O < Q; ) {
                            switch (re = O, V) {
                              case x:
                                O = Gt();
                                break;
                              case c:
                                O = Ct();
                                break;
                              case v:
                                O = Et();
                                break;
                              case f:
                                O = Jt();
                                break;
                              case _:
                                O = zt();
                                break;
                              case h:
                                O = Vt();
                                break;
                              case S:
                                O = Rt();
                                break;
                              case g:
                                O = Wt();
                                break;
                              case L:
                                O = wt();
                                break;
                              case y:
                                O = pt();
                                break;
                            }
                            if (re !== O)
                              switch (et[re]) {
                                case `
`:
                                  rt = 0, ++q;
                                  break;
                                default:
                                  ++rt;
                                  break;
                              }
                          }
                          return B += O, et = et.slice(O), G;
                        }
                        function lt(kt) {
                          return F.length && X(F.join("")), V = d, X("(eof)"), G;
                        }
                        function pt() {
                          return F = F.length ? [] : F, H === "/" && U === "*" ? (st = B + O - 1, V = x, H = U, O + 1) : H === "/" && U === "/" ? (st = B + O - 1, V = c, H = U, O + 1) : U === "#" ? (V = v, st = B + O, O) : /\s/.test(U) ? (V = L, st = B + O, O) : (vt = /\d/.test(U), ht = /[^\w_]/.test(U), st = B + O, V = vt ? _ : ht ? f : g, O);
                        }
                        function wt() {
                          return /[^\s]/g.test(U) ? (X(F.join("")), V = y, O) : (F.push(U), H = U, O + 1);
                        }
                        function Et() {
                          return (U === "\r" || U === `
`) && H !== "\\" ? (X(F.join("")), V = y, O) : (F.push(U), H = U, O + 1);
                        }
                        function Ct() {
                          return Et();
                        }
                        function Gt() {
                          return U === "/" && H === "*" ? (F.push(U), X(F.join("")), V = y, O + 1) : (F.push(U), H = U, O + 1);
                        }
                        function Jt() {
                          if (H === "." && /\d/.test(U))
                            return V = S, O;
                          if (H === "/" && U === "*")
                            return V = x, O;
                          if (H === "/" && U === "/")
                            return V = c, O;
                          if (U === "." && F.length) {
                            for (; Qt(F); ) ;
                            return V = S, O;
                          }
                          if (U === ";" || U === ")" || U === "(") {
                            if (F.length) for (; Qt(F); ) ;
                            return X(U), V = y, O + 1;
                          }
                          var kt = F.length === 2 && U !== "=";
                          if (/[\w_\d\s]/.test(U) || kt) {
                            for (; Qt(F); ) ;
                            return V = y, O;
                          }
                          return F.push(U), H = U, O + 1;
                        }
                        function Qt(kt) {
                          var re = 0, ge, _e;
                          do {
                            if (ge = i.indexOf(kt.slice(0, kt.length + re).join("")), _e = i[ge], ge === -1) {
                              if (re-- + kt.length > 0) continue;
                              _e = kt.slice(0, 1).join("");
                            }
                            return X(_e), st += _e.length, F = F.slice(_e.length), F.length;
                          } while (!0);
                        }
                        function Vt() {
                          return /[^a-fA-F0-9]/.test(U) ? (X(F.join("")), V = y, O) : (F.push(U), H = U, O + 1);
                        }
                        function zt() {
                          return U === "." || /[eE]/.test(U) ? (F.push(U), V = S, H = U, O + 1) : U === "x" && F.length === 1 && F[0] === "0" ? (V = h, F.push(U), H = U, O + 1) : /[^\d]/.test(U) ? (X(F.join("")), V = y, O) : (F.push(U), H = U, O + 1);
                        }
                        function Rt() {
                          return U === "f" && (F.push(U), H = U, O += 1), /[eE]/.test(U) || (U === "-" || U === "+") && /[eE]/.test(H) ? (F.push(U), H = U, O + 1) : /[^\d]/.test(U) ? (X(F.join("")), V = y, O) : (F.push(U), H = U, O + 1);
                        }
                        function Wt() {
                          if (/[^\d\w_]/.test(U)) {
                            var kt = F.join("");
                            return nt[kt] ? V = m : ut[kt] ? V = C : V = M, X(F.join("")), V = y, O;
                          }
                          return F.push(U), H = U, O + 1;
                        }
                      }
                    }
                  ),
                  /***/
                  3508: (
                    /***/
                    function(p, u, t) {
                      var r = t(6852);
                      r = r.slice().filter(function(i) {
                        return !/^(gl\_|texture)/.test(i);
                      }), p.exports = r.concat([
                        // the updated gl_ constants
                        "gl_VertexID",
                        "gl_InstanceID",
                        "gl_Position",
                        "gl_PointSize",
                        "gl_FragCoord",
                        "gl_FrontFacing",
                        "gl_FragDepth",
                        "gl_PointCoord",
                        "gl_MaxVertexAttribs",
                        "gl_MaxVertexUniformVectors",
                        "gl_MaxVertexOutputVectors",
                        "gl_MaxFragmentInputVectors",
                        "gl_MaxVertexTextureImageUnits",
                        "gl_MaxCombinedTextureImageUnits",
                        "gl_MaxTextureImageUnits",
                        "gl_MaxFragmentUniformVectors",
                        "gl_MaxDrawBuffers",
                        "gl_MinProgramTexelOffset",
                        "gl_MaxProgramTexelOffset",
                        "gl_DepthRangeParameters",
                        "gl_DepthRange",
                        "trunc",
                        "round",
                        "roundEven",
                        "isnan",
                        "isinf",
                        "floatBitsToInt",
                        "floatBitsToUint",
                        "intBitsToFloat",
                        "uintBitsToFloat",
                        "packSnorm2x16",
                        "unpackSnorm2x16",
                        "packUnorm2x16",
                        "unpackUnorm2x16",
                        "packHalf2x16",
                        "unpackHalf2x16",
                        "outerProduct",
                        "transpose",
                        "determinant",
                        "inverse",
                        "texture",
                        "textureSize",
                        "textureProj",
                        "textureLod",
                        "textureOffset",
                        "texelFetch",
                        "texelFetchOffset",
                        "textureProjOffset",
                        "textureLodOffset",
                        "textureProjLod",
                        "textureProjLodOffset",
                        "textureGrad",
                        "textureGradOffset",
                        "textureProjGrad",
                        "textureProjGradOffset"
                      ]);
                    }
                  ),
                  /***/
                  6852: (
                    /***/
                    function(p) {
                      p.exports = [
                        // Keep this list sorted
                        "abs",
                        "acos",
                        "all",
                        "any",
                        "asin",
                        "atan",
                        "ceil",
                        "clamp",
                        "cos",
                        "cross",
                        "dFdx",
                        "dFdy",
                        "degrees",
                        "distance",
                        "dot",
                        "equal",
                        "exp",
                        "exp2",
                        "faceforward",
                        "floor",
                        "fract",
                        "gl_BackColor",
                        "gl_BackLightModelProduct",
                        "gl_BackLightProduct",
                        "gl_BackMaterial",
                        "gl_BackSecondaryColor",
                        "gl_ClipPlane",
                        "gl_ClipVertex",
                        "gl_Color",
                        "gl_DepthRange",
                        "gl_DepthRangeParameters",
                        "gl_EyePlaneQ",
                        "gl_EyePlaneR",
                        "gl_EyePlaneS",
                        "gl_EyePlaneT",
                        "gl_Fog",
                        "gl_FogCoord",
                        "gl_FogFragCoord",
                        "gl_FogParameters",
                        "gl_FragColor",
                        "gl_FragCoord",
                        "gl_FragData",
                        "gl_FragDepth",
                        "gl_FragDepthEXT",
                        "gl_FrontColor",
                        "gl_FrontFacing",
                        "gl_FrontLightModelProduct",
                        "gl_FrontLightProduct",
                        "gl_FrontMaterial",
                        "gl_FrontSecondaryColor",
                        "gl_LightModel",
                        "gl_LightModelParameters",
                        "gl_LightModelProducts",
                        "gl_LightProducts",
                        "gl_LightSource",
                        "gl_LightSourceParameters",
                        "gl_MaterialParameters",
                        "gl_MaxClipPlanes",
                        "gl_MaxCombinedTextureImageUnits",
                        "gl_MaxDrawBuffers",
                        "gl_MaxFragmentUniformComponents",
                        "gl_MaxLights",
                        "gl_MaxTextureCoords",
                        "gl_MaxTextureImageUnits",
                        "gl_MaxTextureUnits",
                        "gl_MaxVaryingFloats",
                        "gl_MaxVertexAttribs",
                        "gl_MaxVertexTextureImageUnits",
                        "gl_MaxVertexUniformComponents",
                        "gl_ModelViewMatrix",
                        "gl_ModelViewMatrixInverse",
                        "gl_ModelViewMatrixInverseTranspose",
                        "gl_ModelViewMatrixTranspose",
                        "gl_ModelViewProjectionMatrix",
                        "gl_ModelViewProjectionMatrixInverse",
                        "gl_ModelViewProjectionMatrixInverseTranspose",
                        "gl_ModelViewProjectionMatrixTranspose",
                        "gl_MultiTexCoord0",
                        "gl_MultiTexCoord1",
                        "gl_MultiTexCoord2",
                        "gl_MultiTexCoord3",
                        "gl_MultiTexCoord4",
                        "gl_MultiTexCoord5",
                        "gl_MultiTexCoord6",
                        "gl_MultiTexCoord7",
                        "gl_Normal",
                        "gl_NormalMatrix",
                        "gl_NormalScale",
                        "gl_ObjectPlaneQ",
                        "gl_ObjectPlaneR",
                        "gl_ObjectPlaneS",
                        "gl_ObjectPlaneT",
                        "gl_Point",
                        "gl_PointCoord",
                        "gl_PointParameters",
                        "gl_PointSize",
                        "gl_Position",
                        "gl_ProjectionMatrix",
                        "gl_ProjectionMatrixInverse",
                        "gl_ProjectionMatrixInverseTranspose",
                        "gl_ProjectionMatrixTranspose",
                        "gl_SecondaryColor",
                        "gl_TexCoord",
                        "gl_TextureEnvColor",
                        "gl_TextureMatrix",
                        "gl_TextureMatrixInverse",
                        "gl_TextureMatrixInverseTranspose",
                        "gl_TextureMatrixTranspose",
                        "gl_Vertex",
                        "greaterThan",
                        "greaterThanEqual",
                        "inversesqrt",
                        "length",
                        "lessThan",
                        "lessThanEqual",
                        "log",
                        "log2",
                        "matrixCompMult",
                        "max",
                        "min",
                        "mix",
                        "mod",
                        "normalize",
                        "not",
                        "notEqual",
                        "pow",
                        "radians",
                        "reflect",
                        "refract",
                        "sign",
                        "sin",
                        "smoothstep",
                        "sqrt",
                        "step",
                        "tan",
                        "texture2D",
                        "texture2DLod",
                        "texture2DProj",
                        "texture2DProjLod",
                        "textureCube",
                        "textureCubeLod",
                        "texture2DLodEXT",
                        "texture2DProjLodEXT",
                        "textureCubeLodEXT",
                        "texture2DGradEXT",
                        "texture2DProjGradEXT",
                        "textureCubeGradEXT"
                      ];
                    }
                  ),
                  /***/
                  7932: (
                    /***/
                    function(p, u, t) {
                      var r = t(620);
                      p.exports = r.slice().concat(["layout", "centroid", "smooth", "case", "mat2x2", "mat2x3", "mat2x4", "mat3x2", "mat3x3", "mat3x4", "mat4x2", "mat4x3", "mat4x4", "uvec2", "uvec3", "uvec4", "samplerCubeShadow", "sampler2DArray", "sampler2DArrayShadow", "isampler2D", "isampler3D", "isamplerCube", "isampler2DArray", "usampler2D", "usampler3D", "usamplerCube", "usampler2DArray", "coherent", "restrict", "readonly", "writeonly", "resource", "atomic_uint", "noperspective", "patch", "sample", "subroutine", "common", "partition", "active", "filter", "image1D", "image2D", "image3D", "imageCube", "iimage1D", "iimage2D", "iimage3D", "iimageCube", "uimage1D", "uimage2D", "uimage3D", "uimageCube", "image1DArray", "image2DArray", "iimage1DArray", "iimage2DArray", "uimage1DArray", "uimage2DArray", "image1DShadow", "image2DShadow", "image1DArrayShadow", "image2DArrayShadow", "imageBuffer", "iimageBuffer", "uimageBuffer", "sampler1DArray", "sampler1DArrayShadow", "isampler1D", "isampler1DArray", "usampler1D", "usampler1DArray", "isampler2DRect", "usampler2DRect", "samplerBuffer", "isamplerBuffer", "usamplerBuffer", "sampler2DMS", "isampler2DMS", "usampler2DMS", "sampler2DMSArray", "isampler2DMSArray", "usampler2DMSArray"]);
                    }
                  ),
                  /***/
                  620: (
                    /***/
                    function(p) {
                      p.exports = [
                        // current
                        "precision",
                        "highp",
                        "mediump",
                        "lowp",
                        "attribute",
                        "const",
                        "uniform",
                        "varying",
                        "break",
                        "continue",
                        "do",
                        "for",
                        "while",
                        "if",
                        "else",
                        "in",
                        "out",
                        "inout",
                        "float",
                        "int",
                        "uint",
                        "void",
                        "bool",
                        "true",
                        "false",
                        "discard",
                        "return",
                        "mat2",
                        "mat3",
                        "mat4",
                        "vec2",
                        "vec3",
                        "vec4",
                        "ivec2",
                        "ivec3",
                        "ivec4",
                        "bvec2",
                        "bvec3",
                        "bvec4",
                        "sampler1D",
                        "sampler2D",
                        "sampler3D",
                        "samplerCube",
                        "sampler1DShadow",
                        "sampler2DShadow",
                        "struct",
                        "asm",
                        "class",
                        "union",
                        "enum",
                        "typedef",
                        "template",
                        "this",
                        "packed",
                        "goto",
                        "switch",
                        "default",
                        "inline",
                        "noinline",
                        "volatile",
                        "public",
                        "static",
                        "extern",
                        "external",
                        "interface",
                        "long",
                        "short",
                        "double",
                        "half",
                        "fixed",
                        "unsigned",
                        "input",
                        "output",
                        "hvec2",
                        "hvec3",
                        "hvec4",
                        "dvec2",
                        "dvec3",
                        "dvec4",
                        "fvec2",
                        "fvec3",
                        "fvec4",
                        "sampler2DRect",
                        "sampler3DRect",
                        "sampler2DRectShadow",
                        "sizeof",
                        "cast",
                        "namespace",
                        "using"
                      ];
                    }
                  ),
                  /***/
                  7827: (
                    /***/
                    function(p) {
                      p.exports = ["<<=", ">>=", "++", "--", "<<", ">>", "<=", ">=", "==", "!=", "&&", "||", "+=", "-=", "*=", "/=", "%=", "&=", "^^", "^=", "|=", "(", ")", "[", "]", ".", "!", "~", "*", "/", "%", "+", "-", "<", ">", "&", "^", "|", "?", ":", "=", ",", ";", "{", "}"];
                    }
                  ),
                  /***/
                  4905: (
                    /***/
                    function(p, u, t) {
                      var r = t(5874);
                      p.exports = i;
                      function i(a, l) {
                        var o = r(l), y = [];
                        return y = y.concat(o(a)), y = y.concat(o(null)), y;
                      }
                    }
                  ),
                  /***/
                  3236: (
                    /***/
                    function(p) {
                      p.exports = function(u) {
                        typeof u == "string" && (u = [u]);
                        for (var t = [].slice.call(arguments, 1), r = [], i = 0; i < u.length - 1; i++)
                          r.push(u[i], t[i] || "");
                        return r.push(u[i]), r.join("");
                      };
                    }
                  ),
                  /***/
                  7520: (
                    /***/
                    function(p, u, t) {
                      var r = t(9507);
                      function i() {
                        var a = !1;
                        try {
                          var l = Object.defineProperty({}, "passive", { get: function() {
                            a = !0;
                          } });
                          window.addEventListener("test", null, l), window.removeEventListener("test", null, l);
                        } catch {
                          a = !1;
                        }
                        return a;
                      }
                      p.exports = r && i();
                    }
                  ),
                  /***/
                  3778: (
                    /***/
                    function(p, u) {
                      /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
                      u.read = function(t, r, i, a, l) {
                        var o, y, g = l * 8 - a - 1, x = (1 << g) - 1, c = x >> 1, v = -7, f = i ? l - 1 : 0, _ = i ? -1 : 1, S = t[r + f];
                        for (f += _, o = S & (1 << -v) - 1, S >>= -v, v += g; v > 0; o = o * 256 + t[r + f], f += _, v -= 8)
                          ;
                        for (y = o & (1 << -v) - 1, o >>= -v, v += a; v > 0; y = y * 256 + t[r + f], f += _, v -= 8)
                          ;
                        if (o === 0)
                          o = 1 - c;
                        else {
                          if (o === x)
                            return y ? NaN : (S ? -1 : 1) * (1 / 0);
                          y = y + Math.pow(2, a), o = o - c;
                        }
                        return (S ? -1 : 1) * y * Math.pow(2, o - a);
                      }, u.write = function(t, r, i, a, l, o) {
                        var y, g, x, c = o * 8 - l - 1, v = (1 << c) - 1, f = v >> 1, _ = l === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0, S = a ? 0 : o - 1, M = a ? 1 : -1, C = r < 0 || r === 0 && 1 / r < 0 ? 1 : 0;
                        for (r = Math.abs(r), isNaN(r) || r === 1 / 0 ? (g = isNaN(r) ? 1 : 0, y = v) : (y = Math.floor(Math.log(r) / Math.LN2), r * (x = Math.pow(2, -y)) < 1 && (y--, x *= 2), y + f >= 1 ? r += _ / x : r += _ * Math.pow(2, 1 - f), r * x >= 2 && (y++, x /= 2), y + f >= v ? (g = 0, y = v) : y + f >= 1 ? (g = (r * x - 1) * Math.pow(2, l), y = y + f) : (g = r * Math.pow(2, f - 1) * Math.pow(2, l), y = 0)); l >= 8; t[i + S] = g & 255, S += M, g /= 256, l -= 8)
                          ;
                        for (y = y << l | g, c += l; c > 0; t[i + S] = y & 255, S += M, y /= 256, c -= 8)
                          ;
                        t[i + S - M] |= C * 128;
                      };
                    }
                  ),
                  /***/
                  8954: (
                    /***/
                    function(p, u, t) {
                      p.exports = f;
                      var r = t(3250), i = t(6803).Fw;
                      function a(_, S, M) {
                        this.vertices = _, this.adjacent = S, this.boundary = M, this.lastVisited = -1;
                      }
                      a.prototype.flip = function() {
                        var _ = this.vertices[0];
                        this.vertices[0] = this.vertices[1], this.vertices[1] = _;
                        var S = this.adjacent[0];
                        this.adjacent[0] = this.adjacent[1], this.adjacent[1] = S;
                      };
                      function l(_, S, M) {
                        this.vertices = _, this.cell = S, this.index = M;
                      }
                      function o(_, S) {
                        return i(_.vertices, S.vertices);
                      }
                      function y(_) {
                        return function() {
                          var S = this.tuple;
                          return _.apply(this, S);
                        };
                      }
                      function g(_) {
                        var S = r[_ + 1];
                        return S || (S = r), y(S);
                      }
                      var x = [];
                      function c(_, S, M) {
                        this.dimension = _, this.vertices = S, this.simplices = M, this.interior = M.filter(function(L) {
                          return !L.boundary;
                        }), this.tuple = new Array(_ + 1);
                        for (var C = 0; C <= _; ++C)
                          this.tuple[C] = this.vertices[C];
                        var m = x[_];
                        m || (m = x[_] = g(_)), this.orient = m;
                      }
                      var v = c.prototype;
                      v.handleBoundaryDegeneracy = function(_, S) {
                        var M = this.dimension, C = this.vertices.length - 1, m = this.tuple, L = this.vertices, d = [_];
                        for (_.lastVisited = -C; d.length > 0; ) {
                          _ = d.pop();
                          for (var h = _.adjacent, E = 0; E <= M; ++E) {
                            var w = h[E];
                            if (!(!w.boundary || w.lastVisited <= -C)) {
                              for (var z = w.vertices, O = 0; O <= M; ++O) {
                                var B = z[O];
                                B < 0 ? m[O] = S : m[O] = L[B];
                              }
                              var V = this.orient();
                              if (V > 0)
                                return w;
                              w.lastVisited = -C, V === 0 && d.push(w);
                            }
                          }
                        }
                        return null;
                      }, v.walk = function(_, S) {
                        var M = this.vertices.length - 1, C = this.dimension, m = this.vertices, L = this.tuple, d = S ? this.interior.length * Math.random() | 0 : this.interior.length - 1, h = this.interior[d];
                        t: for (; !h.boundary; ) {
                          for (var E = h.vertices, w = h.adjacent, z = 0; z <= C; ++z)
                            L[z] = m[E[z]];
                          h.lastVisited = M;
                          for (var z = 0; z <= C; ++z) {
                            var O = w[z];
                            if (!(O.lastVisited >= M)) {
                              var B = L[z];
                              L[z] = _;
                              var V = this.orient();
                              if (L[z] = B, V < 0) {
                                h = O;
                                continue t;
                              } else
                                O.boundary ? O.lastVisited = -M : O.lastVisited = M;
                            }
                          }
                          return;
                        }
                        return h;
                      }, v.addPeaks = function(_, S) {
                        var M = this.vertices.length - 1, C = this.dimension, m = this.vertices, L = this.tuple, d = this.interior, h = this.simplices, E = [S];
                        S.lastVisited = M, S.vertices[S.vertices.indexOf(-1)] = M, S.boundary = !1, d.push(S);
                        for (var w = []; E.length > 0; ) {
                          var S = E.pop(), z = S.vertices, O = S.adjacent, B = z.indexOf(M);
                          if (!(B < 0)) {
                            for (var V = 0; V <= C; ++V)
                              if (V !== B) {
                                var U = O[V];
                                if (!(!U.boundary || U.lastVisited >= M)) {
                                  var H = U.vertices;
                                  if (U.lastVisited !== -M) {
                                    for (var F = 0, G = 0; G <= C; ++G)
                                      H[G] < 0 ? (F = G, L[G] = _) : L[G] = m[H[G]];
                                    var q = this.orient();
                                    if (q > 0) {
                                      H[F] = M, U.boundary = !1, d.push(U), E.push(U), U.lastVisited = M;
                                      continue;
                                    } else
                                      U.lastVisited = -M;
                                  }
                                  var rt = U.adjacent, st = z.slice(), vt = O.slice(), ht = new a(st, vt, !0);
                                  h.push(ht);
                                  var et = rt.indexOf(S);
                                  if (!(et < 0)) {
                                    rt[et] = ht, vt[B] = U, st[V] = -1, vt[V] = S, O[V] = ht, ht.flip();
                                    for (var G = 0; G <= C; ++G) {
                                      var Q = st[G];
                                      if (!(Q < 0 || Q === M)) {
                                        for (var j = new Array(C - 1), at = 0, ut = 0; ut <= C; ++ut) {
                                          var nt = st[ut];
                                          nt < 0 || ut === G || (j[at++] = nt);
                                        }
                                        w.push(new l(j, ht, G));
                                      }
                                    }
                                  }
                                }
                              }
                          }
                        }
                        w.sort(o);
                        for (var V = 0; V + 1 < w.length; V += 2) {
                          var X = w[V], ct = w[V + 1], lt = X.index, pt = ct.index;
                          lt < 0 || pt < 0 || (X.cell.adjacent[X.index] = ct.cell, ct.cell.adjacent[ct.index] = X.cell);
                        }
                      }, v.insert = function(_, S) {
                        var M = this.vertices;
                        M.push(_);
                        var C = this.walk(_, S);
                        if (C) {
                          for (var m = this.dimension, L = this.tuple, d = 0; d <= m; ++d) {
                            var h = C.vertices[d];
                            h < 0 ? L[d] = _ : L[d] = M[h];
                          }
                          var E = this.orient(L);
                          E < 0 || E === 0 && (C = this.handleBoundaryDegeneracy(C, _), !C) || this.addPeaks(_, C);
                        }
                      }, v.boundary = function() {
                        for (var _ = this.dimension, S = [], M = this.simplices, C = M.length, m = 0; m < C; ++m) {
                          var L = M[m];
                          if (L.boundary) {
                            for (var d = new Array(_), h = L.vertices, E = 0, w = 0, z = 0; z <= _; ++z)
                              h[z] >= 0 ? d[E++] = h[z] : w = z & 1;
                            if (w === (_ & 1)) {
                              var O = d[0];
                              d[0] = d[1], d[1] = O;
                            }
                            S.push(d);
                          }
                        }
                        return S;
                      };
                      function f(_, S) {
                        var M = _.length;
                        if (M === 0)
                          throw new Error("Must have at least d+1 points");
                        var C = _[0].length;
                        if (M <= C)
                          throw new Error("Must input at least d+1 points");
                        var m = _.slice(0, C + 1), L = r.apply(void 0, m);
                        if (L === 0)
                          throw new Error("Input not in general position");
                        for (var d = new Array(C + 1), h = 0; h <= C; ++h)
                          d[h] = h;
                        L < 0 && (d[0] = 1, d[1] = 0);
                        for (var E = new a(d, new Array(C + 1), !1), w = E.adjacent, z = new Array(C + 2), h = 0; h <= C; ++h) {
                          for (var O = d.slice(), B = 0; B <= C; ++B)
                            B === h && (O[B] = -1);
                          var V = O[0];
                          O[0] = O[1], O[1] = V;
                          var U = new a(O, new Array(C + 1), !0);
                          w[h] = U, z[h] = U;
                        }
                        z[C + 1] = E;
                        for (var h = 0; h <= C; ++h)
                          for (var O = w[h].vertices, H = w[h].adjacent, B = 0; B <= C; ++B) {
                            var F = O[B];
                            if (F < 0) {
                              H[B] = E;
                              continue;
                            }
                            for (var G = 0; G <= C; ++G)
                              w[G].vertices.indexOf(F) < 0 && (H[B] = w[G]);
                          }
                        for (var q = new c(C, m, z), rt = !!S, h = C + 1; h < M; ++h)
                          q.insert(_[h], rt);
                        return q.boundary();
                      }
                    }
                  ),
                  /***/
                  3352: (
                    /***/
                    function(p, u, t) {
                      var r = t(2478), i = 0, a = 1, l = 2;
                      p.exports = E;
                      function o(w, z, O, B, V) {
                        this.mid = w, this.left = z, this.right = O, this.leftPoints = B, this.rightPoints = V, this.count = (z ? z.count : 0) + (O ? O.count : 0) + B.length;
                      }
                      var y = o.prototype;
                      function g(w, z) {
                        w.mid = z.mid, w.left = z.left, w.right = z.right, w.leftPoints = z.leftPoints, w.rightPoints = z.rightPoints, w.count = z.count;
                      }
                      function x(w, z) {
                        var O = L(z);
                        w.mid = O.mid, w.left = O.left, w.right = O.right, w.leftPoints = O.leftPoints, w.rightPoints = O.rightPoints, w.count = O.count;
                      }
                      function c(w, z) {
                        var O = w.intervals([]);
                        O.push(z), x(w, O);
                      }
                      function v(w, z) {
                        var O = w.intervals([]), B = O.indexOf(z);
                        return B < 0 ? i : (O.splice(B, 1), x(w, O), a);
                      }
                      y.intervals = function(w) {
                        return w.push.apply(w, this.leftPoints), this.left && this.left.intervals(w), this.right && this.right.intervals(w), w;
                      }, y.insert = function(w) {
                        var z = this.count - this.leftPoints.length;
                        if (this.count += 1, w[1] < this.mid)
                          this.left ? 4 * (this.left.count + 1) > 3 * (z + 1) ? c(this, w) : this.left.insert(w) : this.left = L([w]);
                        else if (w[0] > this.mid)
                          this.right ? 4 * (this.right.count + 1) > 3 * (z + 1) ? c(this, w) : this.right.insert(w) : this.right = L([w]);
                        else {
                          var O = r.ge(this.leftPoints, w, C), B = r.ge(this.rightPoints, w, m);
                          this.leftPoints.splice(O, 0, w), this.rightPoints.splice(B, 0, w);
                        }
                      }, y.remove = function(w) {
                        var z = this.count - this.leftPoints;
                        if (w[1] < this.mid) {
                          if (!this.left)
                            return i;
                          var O = this.right ? this.right.count : 0;
                          if (4 * O > 3 * (z - 1))
                            return v(this, w);
                          var B = this.left.remove(w);
                          return B === l ? (this.left = null, this.count -= 1, a) : (B === a && (this.count -= 1), B);
                        } else if (w[0] > this.mid) {
                          if (!this.right)
                            return i;
                          var V = this.left ? this.left.count : 0;
                          if (4 * V > 3 * (z - 1))
                            return v(this, w);
                          var B = this.right.remove(w);
                          return B === l ? (this.right = null, this.count -= 1, a) : (B === a && (this.count -= 1), B);
                        } else {
                          if (this.count === 1)
                            return this.leftPoints[0] === w ? l : i;
                          if (this.leftPoints.length === 1 && this.leftPoints[0] === w) {
                            if (this.left && this.right) {
                              for (var U = this, H = this.left; H.right; )
                                U = H, H = H.right;
                              if (U === this)
                                H.right = this.right;
                              else {
                                var F = this.left, B = this.right;
                                U.count -= H.count, U.right = H.left, H.left = F, H.right = B;
                              }
                              g(this, H), this.count = (this.left ? this.left.count : 0) + (this.right ? this.right.count : 0) + this.leftPoints.length;
                            } else this.left ? g(this, this.left) : g(this, this.right);
                            return a;
                          }
                          for (var F = r.ge(this.leftPoints, w, C); F < this.leftPoints.length && this.leftPoints[F][0] === w[0]; ++F)
                            if (this.leftPoints[F] === w) {
                              this.count -= 1, this.leftPoints.splice(F, 1);
                              for (var B = r.ge(this.rightPoints, w, m); B < this.rightPoints.length && this.rightPoints[B][1] === w[1]; ++B)
                                if (this.rightPoints[B] === w)
                                  return this.rightPoints.splice(B, 1), a;
                            }
                          return i;
                        }
                      };
                      function f(w, z, O) {
                        for (var B = 0; B < w.length && w[B][0] <= z; ++B) {
                          var V = O(w[B]);
                          if (V)
                            return V;
                        }
                      }
                      function _(w, z, O) {
                        for (var B = w.length - 1; B >= 0 && w[B][1] >= z; --B) {
                          var V = O(w[B]);
                          if (V)
                            return V;
                        }
                      }
                      function S(w, z) {
                        for (var O = 0; O < w.length; ++O) {
                          var B = z(w[O]);
                          if (B)
                            return B;
                        }
                      }
                      y.queryPoint = function(w, z) {
                        if (w < this.mid) {
                          if (this.left) {
                            var O = this.left.queryPoint(w, z);
                            if (O)
                              return O;
                          }
                          return f(this.leftPoints, w, z);
                        } else if (w > this.mid) {
                          if (this.right) {
                            var O = this.right.queryPoint(w, z);
                            if (O)
                              return O;
                          }
                          return _(this.rightPoints, w, z);
                        } else
                          return S(this.leftPoints, z);
                      }, y.queryInterval = function(w, z, O) {
                        if (w < this.mid && this.left) {
                          var B = this.left.queryInterval(w, z, O);
                          if (B)
                            return B;
                        }
                        if (z > this.mid && this.right) {
                          var B = this.right.queryInterval(w, z, O);
                          if (B)
                            return B;
                        }
                        return z < this.mid ? f(this.leftPoints, z, O) : w > this.mid ? _(this.rightPoints, w, O) : S(this.leftPoints, O);
                      };
                      function M(w, z) {
                        return w - z;
                      }
                      function C(w, z) {
                        var O = w[0] - z[0];
                        return O || w[1] - z[1];
                      }
                      function m(w, z) {
                        var O = w[1] - z[1];
                        return O || w[0] - z[0];
                      }
                      function L(w) {
                        if (w.length === 0)
                          return null;
                        for (var z = [], O = 0; O < w.length; ++O)
                          z.push(w[O][0], w[O][1]);
                        z.sort(M);
                        for (var B = z[z.length >> 1], V = [], U = [], H = [], O = 0; O < w.length; ++O) {
                          var F = w[O];
                          F[1] < B ? V.push(F) : B < F[0] ? U.push(F) : H.push(F);
                        }
                        var G = H, q = H.slice();
                        return G.sort(C), q.sort(m), new o(B, L(V), L(U), G, q);
                      }
                      function d(w) {
                        this.root = w;
                      }
                      var h = d.prototype;
                      h.insert = function(w) {
                        this.root ? this.root.insert(w) : this.root = new o(w[0], null, null, [w], [w]);
                      }, h.remove = function(w) {
                        if (this.root) {
                          var z = this.root.remove(w);
                          return z === l && (this.root = null), z !== i;
                        }
                        return !1;
                      }, h.queryPoint = function(w, z) {
                        if (this.root)
                          return this.root.queryPoint(w, z);
                      }, h.queryInterval = function(w, z, O) {
                        if (w <= z && this.root)
                          return this.root.queryInterval(w, z, O);
                      }, Object.defineProperty(h, "count", { get: function() {
                        return this.root ? this.root.count : 0;
                      } }), Object.defineProperty(h, "intervals", { get: function() {
                        return this.root ? this.root.intervals([]) : [];
                      } });
                      function E(w) {
                        return !w || w.length === 0 ? new d(null) : new d(L(w));
                      }
                    }
                  ),
                  /***/
                  7762: (
                    /***/
                    function(p) {
                      function u(t) {
                        for (var r = new Array(t), i = 0; i < t; ++i)
                          r[i] = i;
                        return r;
                      }
                      p.exports = u;
                    }
                  ),
                  /***/
                  9507: (
                    /***/
                    function(p) {
                      p.exports = !0;
                    }
                  ),
                  /***/
                  7163: (
                    /***/
                    function(p) {
                      /*!
                      * Determine if an object is a Buffer
                      *
                      * @author   Feross Aboukhadijeh <https://feross.org>
                      * @license  MIT
                      */
                      p.exports = function(r) {
                        return r != null && (u(r) || t(r) || !!r._isBuffer);
                      };
                      function u(r) {
                        return !!r.constructor && typeof r.constructor.isBuffer == "function" && r.constructor.isBuffer(r);
                      }
                      function t(r) {
                        return typeof r.readFloatLE == "function" && typeof r.slice == "function" && u(r.slice(0, 0));
                      }
                    }
                  ),
                  /***/
                  5219: (
                    /***/
                    function(p) {
                      p.exports = function(u) {
                        for (var t = u.length, r, i = 0; i < t; i++)
                          if (r = u.charCodeAt(i), (r < 9 || r > 13) && r !== 32 && r !== 133 && r !== 160 && r !== 5760 && r !== 6158 && (r < 8192 || r > 8205) && r !== 8232 && r !== 8233 && r !== 8239 && r !== 8287 && r !== 8288 && r !== 12288 && r !== 65279)
                            return !1;
                        return !0;
                      };
                    }
                  ),
                  /***/
                  395: (
                    /***/
                    function(p) {
                      function u(t, r, i) {
                        return t * (1 - i) + r * i;
                      }
                      p.exports = u;
                    }
                  ),
                  /***/
                  2652: (
                    /***/
                    function(p, u, t) {
                      var r = t(4335), i = t(6864), a = t(1903), l = t(9921), o = t(7608), y = t(5665), g = { length: t(1387), normalize: t(3536), dot: t(244), cross: t(5911) }, x = i(), c = i(), v = [0, 0, 0, 0], f = [[0, 0, 0], [0, 0, 0], [0, 0, 0]], _ = [0, 0, 0];
                      p.exports = function(L, d, h, E, w, z) {
                        if (d || (d = [0, 0, 0]), h || (h = [0, 0, 0]), E || (E = [0, 0, 0]), w || (w = [0, 0, 0, 1]), z || (z = [0, 0, 0, 1]), !r(x, L) || (a(c, x), c[3] = 0, c[7] = 0, c[11] = 0, c[15] = 1, Math.abs(l(c) < 1e-8))) return !1;
                        var O = x[3], B = x[7], V = x[11], U = x[12], H = x[13], F = x[14], G = x[15];
                        if (O !== 0 || B !== 0 || V !== 0) {
                          v[0] = O, v[1] = B, v[2] = V, v[3] = G;
                          var q = o(c, c);
                          if (!q) return !1;
                          y(c, c), S(w, v, c);
                        } else
                          w[0] = w[1] = w[2] = 0, w[3] = 1;
                        if (d[0] = U, d[1] = H, d[2] = F, M(f, x), h[0] = g.length(f[0]), g.normalize(f[0], f[0]), E[0] = g.dot(f[0], f[1]), C(f[1], f[1], f[0], 1, -E[0]), h[1] = g.length(f[1]), g.normalize(f[1], f[1]), E[0] /= h[1], E[1] = g.dot(f[0], f[2]), C(f[2], f[2], f[0], 1, -E[1]), E[2] = g.dot(f[1], f[2]), C(f[2], f[2], f[1], 1, -E[2]), h[2] = g.length(f[2]), g.normalize(f[2], f[2]), E[1] /= h[2], E[2] /= h[2], g.cross(_, f[1], f[2]), g.dot(f[0], _) < 0)
                          for (var rt = 0; rt < 3; rt++)
                            h[rt] *= -1, f[rt][0] *= -1, f[rt][1] *= -1, f[rt][2] *= -1;
                        return z[0] = 0.5 * Math.sqrt(Math.max(1 + f[0][0] - f[1][1] - f[2][2], 0)), z[1] = 0.5 * Math.sqrt(Math.max(1 - f[0][0] + f[1][1] - f[2][2], 0)), z[2] = 0.5 * Math.sqrt(Math.max(1 - f[0][0] - f[1][1] + f[2][2], 0)), z[3] = 0.5 * Math.sqrt(Math.max(1 + f[0][0] + f[1][1] + f[2][2], 0)), f[2][1] > f[1][2] && (z[0] = -z[0]), f[0][2] > f[2][0] && (z[1] = -z[1]), f[1][0] > f[0][1] && (z[2] = -z[2]), !0;
                      };
                      function S(m, L, d) {
                        var h = L[0], E = L[1], w = L[2], z = L[3];
                        return m[0] = d[0] * h + d[4] * E + d[8] * w + d[12] * z, m[1] = d[1] * h + d[5] * E + d[9] * w + d[13] * z, m[2] = d[2] * h + d[6] * E + d[10] * w + d[14] * z, m[3] = d[3] * h + d[7] * E + d[11] * w + d[15] * z, m;
                      }
                      function M(m, L) {
                        m[0][0] = L[0], m[0][1] = L[1], m[0][2] = L[2], m[1][0] = L[4], m[1][1] = L[5], m[1][2] = L[6], m[2][0] = L[8], m[2][1] = L[9], m[2][2] = L[10];
                      }
                      function C(m, L, d, h, E) {
                        m[0] = L[0] * h + d[0] * E, m[1] = L[1] * h + d[1] * E, m[2] = L[2] * h + d[2] * E;
                      }
                    }
                  ),
                  /***/
                  4335: (
                    /***/
                    function(p) {
                      p.exports = function(t, r) {
                        var i = r[15];
                        if (i === 0) return !1;
                        for (var a = 1 / i, l = 0; l < 16; l++) t[l] = r[l] * a;
                        return !0;
                      };
                    }
                  ),
                  /***/
                  7442: (
                    /***/
                    function(p, u, t) {
                      var r = t(6658), i = t(7182), a = t(2652), l = t(9921), o = t(8648), y = v(), g = v(), x = v();
                      p.exports = c;
                      function c(S, M, C, m) {
                        if (l(M) === 0 || l(C) === 0) return !1;
                        var L = a(M, y.translate, y.scale, y.skew, y.perspective, y.quaternion), d = a(C, g.translate, g.scale, g.skew, g.perspective, g.quaternion);
                        return !L || !d ? !1 : (r(x.translate, y.translate, g.translate, m), r(x.skew, y.skew, g.skew, m), r(x.scale, y.scale, g.scale, m), r(x.perspective, y.perspective, g.perspective, m), o(x.quaternion, y.quaternion, g.quaternion, m), i(S, x.translate, x.scale, x.skew, x.perspective, x.quaternion), !0);
                      }
                      function v() {
                        return { translate: f(), scale: f(1), skew: f(), perspective: _(), quaternion: _() };
                      }
                      function f(S) {
                        return [S || 0, S || 0, S || 0];
                      }
                      function _() {
                        return [0, 0, 0, 1];
                      }
                    }
                  ),
                  /***/
                  7182: (
                    /***/
                    function(p, u, t) {
                      var r = { identity: t(7894), translate: t(7656), multiply: t(6760), create: t(6864), scale: t(2504), fromRotationTranslation: t(6743) };
                      r.create();
                      var i = r.create();
                      p.exports = function(l, o, y, g, x, c) {
                        return r.identity(l), r.fromRotationTranslation(l, c, o), l[3] = x[0], l[7] = x[1], l[11] = x[2], l[15] = x[3], r.identity(i), g[2] !== 0 && (i[9] = g[2], r.multiply(l, l, i)), g[1] !== 0 && (i[9] = 0, i[8] = g[1], r.multiply(l, l, i)), g[0] !== 0 && (i[8] = 0, i[4] = g[0], r.multiply(l, l, i)), r.scale(l, l, y), l;
                      };
                    }
                  ),
                  /***/
                  4192: (
                    /***/
                    function(p, u, t) {
                      var r = t(2478), i = t(7442), a = t(7608), l = t(5567), o = t(2408), y = t(7089), g = t(6582), x = t(7656);
                      t(2504);
                      var c = t(3536), v = [0, 0, 0];
                      p.exports = M;
                      function f(C) {
                        this._components = C.slice(), this._time = [0], this.prevMatrix = C.slice(), this.nextMatrix = C.slice(), this.computedMatrix = C.slice(), this.computedInverse = C.slice(), this.computedEye = [0, 0, 0], this.computedUp = [0, 0, 0], this.computedCenter = [0, 0, 0], this.computedRadius = [0], this._limits = [-1 / 0, 1 / 0];
                      }
                      var _ = f.prototype;
                      _.recalcMatrix = function(C) {
                        var m = this._time, L = r.le(m, C), d = this.computedMatrix;
                        if (!(L < 0)) {
                          var h = this._components;
                          if (L === m.length - 1)
                            for (var E = 16 * L, w = 0; w < 16; ++w)
                              d[w] = h[E++];
                          else {
                            for (var z = m[L + 1] - m[L], E = 16 * L, O = this.prevMatrix, B = !0, w = 0; w < 16; ++w)
                              O[w] = h[E++];
                            for (var V = this.nextMatrix, w = 0; w < 16; ++w)
                              V[w] = h[E++], B = B && O[w] === V[w];
                            if (z < 1e-6 || B)
                              for (var w = 0; w < 16; ++w)
                                d[w] = O[w];
                            else
                              i(d, O, V, (C - m[L]) / z);
                          }
                          var U = this.computedUp;
                          U[0] = d[1], U[1] = d[5], U[2] = d[9], c(U, U);
                          var H = this.computedInverse;
                          a(H, d);
                          var F = this.computedEye, G = H[15];
                          F[0] = H[12] / G, F[1] = H[13] / G, F[2] = H[14] / G;
                          for (var q = this.computedCenter, rt = Math.exp(this.computedRadius[0]), w = 0; w < 3; ++w)
                            q[w] = F[w] - d[2 + 4 * w] * rt;
                        }
                      }, _.idle = function(C) {
                        if (!(C < this.lastT())) {
                          for (var m = this._components, L = m.length - 16, d = 0; d < 16; ++d)
                            m.push(m[L++]);
                          this._time.push(C);
                        }
                      }, _.flush = function(C) {
                        var m = r.gt(this._time, C) - 2;
                        m < 0 || (this._time.splice(0, m), this._components.splice(0, 16 * m));
                      }, _.lastT = function() {
                        return this._time[this._time.length - 1];
                      }, _.lookAt = function(C, m, L, d) {
                        this.recalcMatrix(C), m = m || this.computedEye, L = L || v, d = d || this.computedUp, this.setMatrix(C, g(this.computedMatrix, m, L, d));
                        for (var h = 0, E = 0; E < 3; ++E)
                          h += Math.pow(L[E] - m[E], 2);
                        h = Math.log(Math.sqrt(h)), this.computedRadius[0] = h;
                      }, _.rotate = function(C, m, L, d) {
                        this.recalcMatrix(C);
                        var h = this.computedInverse;
                        m && o(h, h, m), L && l(h, h, L), d && y(h, h, d), this.setMatrix(C, a(this.computedMatrix, h));
                      };
                      var S = [0, 0, 0];
                      _.pan = function(C, m, L, d) {
                        S[0] = -(m || 0), S[1] = -(L || 0), S[2] = -(d || 0), this.recalcMatrix(C);
                        var h = this.computedInverse;
                        x(h, h, S), this.setMatrix(C, a(h, h));
                      }, _.translate = function(C, m, L, d) {
                        S[0] = m || 0, S[1] = L || 0, S[2] = d || 0, this.recalcMatrix(C);
                        var h = this.computedMatrix;
                        x(h, h, S), this.setMatrix(C, h);
                      }, _.setMatrix = function(C, m) {
                        if (!(C < this.lastT())) {
                          this._time.push(C);
                          for (var L = 0; L < 16; ++L)
                            this._components.push(m[L]);
                        }
                      }, _.setDistance = function(C, m) {
                        this.computedRadius[0] = m;
                      }, _.setDistanceLimits = function(C, m) {
                        var L = this._limits;
                        L[0] = C, L[1] = m;
                      }, _.getDistanceLimits = function(C) {
                        var m = this._limits;
                        return C ? (C[0] = m[0], C[1] = m[1], C) : m;
                      };
                      function M(C) {
                        C = C || {};
                        var m = C.matrix || [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
                        return new f(m);
                      }
                    }
                  ),
                  /***/
                  3090: (
                    /***/
                    function(p, u, t) {
                      p.exports = i;
                      var r = t(3250)[3];
                      function i(a) {
                        var l = a.length;
                        if (l < 3) {
                          for (var _ = new Array(l), o = 0; o < l; ++o)
                            _[o] = o;
                          return l === 2 && a[0][0] === a[1][0] && a[0][1] === a[1][1] ? [0] : _;
                        }
                        for (var y = new Array(l), o = 0; o < l; ++o)
                          y[o] = o;
                        y.sort(function(m, L) {
                          var d = a[m][0] - a[L][0];
                          return d || a[m][1] - a[L][1];
                        });
                        for (var g = [y[0], y[1]], x = [y[0], y[1]], o = 2; o < l; ++o) {
                          for (var c = y[o], v = a[c], f = g.length; f > 1 && r(a[g[f - 2]], a[g[f - 1]], v) <= 0; )
                            f -= 1, g.pop();
                          for (g.push(c), f = x.length; f > 1 && r(a[x[f - 2]], a[x[f - 1]], v) >= 0; )
                            f -= 1, x.pop();
                          x.push(c);
                        }
                        for (var _ = new Array(x.length + g.length - 2), S = 0, o = 0, M = g.length; o < M; ++o)
                          _[S++] = g[o];
                        for (var C = x.length - 2; C > 0; --C)
                          _[S++] = x[C];
                        return _;
                      }
                    }
                  ),
                  /***/
                  351: (
                    /***/
                    function(p, u, t) {
                      p.exports = i;
                      var r = t(4687);
                      function i(a, l) {
                        l || (l = a, a = window);
                        var o = 0, y = 0, g = 0, x = { shift: !1, alt: !1, control: !1, meta: !1 }, c = !1;
                        function v(w) {
                          var z = !1;
                          return "altKey" in w && (z = z || w.altKey !== x.alt, x.alt = !!w.altKey), "shiftKey" in w && (z = z || w.shiftKey !== x.shift, x.shift = !!w.shiftKey), "ctrlKey" in w && (z = z || w.ctrlKey !== x.control, x.control = !!w.ctrlKey), "metaKey" in w && (z = z || w.metaKey !== x.meta, x.meta = !!w.metaKey), z;
                        }
                        function f(w, z) {
                          var O = r.x(z), B = r.y(z);
                          "buttons" in z && (w = z.buttons | 0), (w !== o || O !== y || B !== g || v(z)) && (o = w | 0, y = O || 0, g = B || 0, l && l(o, y, g, x));
                        }
                        function _(w) {
                          f(0, w);
                        }
                        function S() {
                          (o || y || g || x.shift || x.alt || x.meta || x.control) && (y = g = 0, o = 0, x.shift = x.alt = x.control = x.meta = !1, l && l(0, 0, 0, x));
                        }
                        function M(w) {
                          v(w) && l && l(o, y, g, x);
                        }
                        function C(w) {
                          r.buttons(w) === 0 ? f(0, w) : f(o, w);
                        }
                        function m(w) {
                          f(o | r.buttons(w), w);
                        }
                        function L(w) {
                          f(o & ~r.buttons(w), w);
                        }
                        function d() {
                          c || (c = !0, a.addEventListener("mousemove", C), a.addEventListener("mousedown", m), a.addEventListener("mouseup", L), a.addEventListener("mouseleave", _), a.addEventListener("mouseenter", _), a.addEventListener("mouseout", _), a.addEventListener("mouseover", _), a.addEventListener("blur", S), a.addEventListener("keyup", M), a.addEventListener("keydown", M), a.addEventListener("keypress", M), a !== window && (window.addEventListener("blur", S), window.addEventListener("keyup", M), window.addEventListener("keydown", M), window.addEventListener("keypress", M)));
                        }
                        function h() {
                          c && (c = !1, a.removeEventListener("mousemove", C), a.removeEventListener("mousedown", m), a.removeEventListener("mouseup", L), a.removeEventListener("mouseleave", _), a.removeEventListener("mouseenter", _), a.removeEventListener("mouseout", _), a.removeEventListener("mouseover", _), a.removeEventListener("blur", S), a.removeEventListener("keyup", M), a.removeEventListener("keydown", M), a.removeEventListener("keypress", M), a !== window && (window.removeEventListener("blur", S), window.removeEventListener("keyup", M), window.removeEventListener("keydown", M), window.removeEventListener("keypress", M)));
                        }
                        d();
                        var E = { element: a };
                        return Object.defineProperties(E, { enabled: { get: function() {
                          return c;
                        }, set: function(w) {
                          w ? d() : h();
                        }, enumerable: !0 }, buttons: { get: function() {
                          return o;
                        }, enumerable: !0 }, x: { get: function() {
                          return y;
                        }, enumerable: !0 }, y: { get: function() {
                          return g;
                        }, enumerable: !0 }, mods: { get: function() {
                          return x;
                        }, enumerable: !0 } }), E;
                      }
                    }
                  ),
                  /***/
                  24: (
                    /***/
                    function(p) {
                      var u = { left: 0, top: 0 };
                      p.exports = t;
                      function t(i, a, l) {
                        a = a || i.currentTarget || i.srcElement, Array.isArray(l) || (l = [0, 0]);
                        var o = i.clientX || 0, y = i.clientY || 0, g = r(a);
                        return l[0] = o - g.left, l[1] = y - g.top, l;
                      }
                      function r(i) {
                        return i === window || i === document || i === document.body ? u : i.getBoundingClientRect();
                      }
                    }
                  ),
                  /***/
                  4687: (
                    /***/
                    function(p, u) {
                      function t(l) {
                        if (typeof l == "object") {
                          if ("buttons" in l)
                            return l.buttons;
                          if ("which" in l) {
                            var o = l.which;
                            if (o === 2)
                              return 4;
                            if (o === 3)
                              return 2;
                            if (o > 0)
                              return 1 << o - 1;
                          } else if ("button" in l) {
                            var o = l.button;
                            if (o === 1)
                              return 4;
                            if (o === 2)
                              return 2;
                            if (o >= 0)
                              return 1 << o;
                          }
                        }
                        return 0;
                      }
                      u.buttons = t;
                      function r(l) {
                        return l.target || l.srcElement || window;
                      }
                      u.element = r;
                      function i(l) {
                        if (typeof l == "object") {
                          if ("offsetX" in l)
                            return l.offsetX;
                          var o = r(l), y = o.getBoundingClientRect();
                          return l.clientX - y.left;
                        }
                        return 0;
                      }
                      u.x = i;
                      function a(l) {
                        if (typeof l == "object") {
                          if ("offsetY" in l)
                            return l.offsetY;
                          var o = r(l), y = o.getBoundingClientRect();
                          return l.clientY - y.top;
                        }
                        return 0;
                      }
                      u.y = a;
                    }
                  ),
                  /***/
                  8512: (
                    /***/
                    function(p, u, t) {
                      var r = t(665);
                      p.exports = i;
                      function i(a, l, o) {
                        typeof a == "function" && (o = !!l, l = a, a = window);
                        var y = r("ex", a), g = function(x) {
                          o && x.preventDefault();
                          var c = x.deltaX || 0, v = x.deltaY || 0, f = x.deltaZ || 0, _ = x.deltaMode, S = 1;
                          switch (_) {
                            case 1:
                              S = y;
                              break;
                            case 2:
                              S = window.innerHeight;
                              break;
                          }
                          if (c *= S, v *= S, f *= S, c || v || f)
                            return l(c, v, f, x);
                        };
                        return a.addEventListener("wheel", g), g;
                      }
                    }
                  ),
                  /***/
                  2640: (
                    /***/
                    function(p, u, t) {
                      var r = t(1888);
                      p.exports = l;
                      var i = { "false,0,1": function(y, g, x, c, v) {
                        return function(_, S, M, C) {
                          var m = _.shape[0] | 0, L = _.shape[1] | 0, d = _.data, h = _.offset | 0, E = _.stride[0] | 0, w = _.stride[1] | 0, z = h, O, B = -E | 0, V = 0, U = -w | 0, H = 0, F = -E - w | 0, G = 0, q = E | 0, rt = w - E * m | 0, st = 0, vt = 0, ht = 0, et = 2 * m | 0, Q = c(et), j = c(et), at = 0, ut = 0, nt = -1, X = -1, ct = 0, lt = -m | 0, pt = m | 0, wt = 0, Et = -m - 1 | 0, Ct = m - 1 | 0, Gt = 0, Jt = 0, Qt = 0;
                          for (st = 0; st < m; ++st)
                            Q[at++] = x(d[z], S, M, C), z += q;
                          if (z += rt, L > 0) {
                            if (vt = 1, Q[at++] = x(d[z], S, M, C), z += q, m > 0)
                              for (st = 1, O = d[z], ut = Q[at] = x(O, S, M, C), ct = Q[at + nt], wt = Q[at + lt], Gt = Q[at + Et], (ut !== ct || ut !== wt || ut !== Gt) && (V = d[z + B], H = d[z + U], G = d[z + F], y(st, vt, O, V, H, G, ut, ct, wt, Gt, S, M, C), Jt = j[at] = ht++), at += 1, z += q, st = 2; st < m; ++st)
                                O = d[z], ut = Q[at] = x(O, S, M, C), ct = Q[at + nt], wt = Q[at + lt], Gt = Q[at + Et], (ut !== ct || ut !== wt || ut !== Gt) && (V = d[z + B], H = d[z + U], G = d[z + F], y(st, vt, O, V, H, G, ut, ct, wt, Gt, S, M, C), Jt = j[at] = ht++, Gt !== ct && g(j[at + nt], Jt, G, V, Gt, ct, S, M, C)), at += 1, z += q;
                            for (z += rt, at = 0, Qt = nt, nt = X, X = Qt, Qt = lt, lt = pt, pt = Qt, Qt = Et, Et = Ct, Ct = Qt, vt = 2; vt < L; ++vt) {
                              if (Q[at++] = x(d[z], S, M, C), z += q, m > 0)
                                for (st = 1, O = d[z], ut = Q[at] = x(O, S, M, C), ct = Q[at + nt], wt = Q[at + lt], Gt = Q[at + Et], (ut !== ct || ut !== wt || ut !== Gt) && (V = d[z + B], H = d[z + U], G = d[z + F], y(st, vt, O, V, H, G, ut, ct, wt, Gt, S, M, C), Jt = j[at] = ht++, Gt !== wt && g(j[at + lt], Jt, H, G, wt, Gt, S, M, C)), at += 1, z += q, st = 2; st < m; ++st)
                                  O = d[z], ut = Q[at] = x(O, S, M, C), ct = Q[at + nt], wt = Q[at + lt], Gt = Q[at + Et], (ut !== ct || ut !== wt || ut !== Gt) && (V = d[z + B], H = d[z + U], G = d[z + F], y(st, vt, O, V, H, G, ut, ct, wt, Gt, S, M, C), Jt = j[at] = ht++, Gt !== wt && g(j[at + lt], Jt, H, G, wt, Gt, S, M, C), Gt !== ct && g(j[at + nt], Jt, G, V, Gt, ct, S, M, C)), at += 1, z += q;
                              vt & 1 && (at = 0), Qt = nt, nt = X, X = Qt, Qt = lt, lt = pt, pt = Qt, Qt = Et, Et = Ct, Ct = Qt, z += rt;
                            }
                          }
                          v(j), v(Q);
                        };
                      }, "false,1,0": function(y, g, x, c, v) {
                        return function(_, S, M, C) {
                          var m = _.shape[0] | 0, L = _.shape[1] | 0, d = _.data, h = _.offset | 0, E = _.stride[0] | 0, w = _.stride[1] | 0, z = h, O, B = -E | 0, V = 0, U = -w | 0, H = 0, F = -E - w | 0, G = 0, q = w | 0, rt = E - w * L | 0, st = 0, vt = 0, ht = 0, et = 2 * L | 0, Q = c(et), j = c(et), at = 0, ut = 0, nt = -1, X = -1, ct = 0, lt = -L | 0, pt = L | 0, wt = 0, Et = -L - 1 | 0, Ct = L - 1 | 0, Gt = 0, Jt = 0, Qt = 0;
                          for (vt = 0; vt < L; ++vt)
                            Q[at++] = x(d[z], S, M, C), z += q;
                          if (z += rt, m > 0) {
                            if (st = 1, Q[at++] = x(d[z], S, M, C), z += q, L > 0)
                              for (vt = 1, O = d[z], ut = Q[at] = x(O, S, M, C), wt = Q[at + lt], ct = Q[at + nt], Gt = Q[at + Et], (ut !== wt || ut !== ct || ut !== Gt) && (V = d[z + B], H = d[z + U], G = d[z + F], y(st, vt, O, V, H, G, ut, wt, ct, Gt, S, M, C), Jt = j[at] = ht++), at += 1, z += q, vt = 2; vt < L; ++vt)
                                O = d[z], ut = Q[at] = x(O, S, M, C), wt = Q[at + lt], ct = Q[at + nt], Gt = Q[at + Et], (ut !== wt || ut !== ct || ut !== Gt) && (V = d[z + B], H = d[z + U], G = d[z + F], y(st, vt, O, V, H, G, ut, wt, ct, Gt, S, M, C), Jt = j[at] = ht++, Gt !== ct && g(j[at + nt], Jt, H, G, ct, Gt, S, M, C)), at += 1, z += q;
                            for (z += rt, at = 0, Qt = lt, lt = pt, pt = Qt, Qt = nt, nt = X, X = Qt, Qt = Et, Et = Ct, Ct = Qt, st = 2; st < m; ++st) {
                              if (Q[at++] = x(d[z], S, M, C), z += q, L > 0)
                                for (vt = 1, O = d[z], ut = Q[at] = x(O, S, M, C), wt = Q[at + lt], ct = Q[at + nt], Gt = Q[at + Et], (ut !== wt || ut !== ct || ut !== Gt) && (V = d[z + B], H = d[z + U], G = d[z + F], y(st, vt, O, V, H, G, ut, wt, ct, Gt, S, M, C), Jt = j[at] = ht++, Gt !== wt && g(j[at + lt], Jt, G, V, Gt, wt, S, M, C)), at += 1, z += q, vt = 2; vt < L; ++vt)
                                  O = d[z], ut = Q[at] = x(O, S, M, C), wt = Q[at + lt], ct = Q[at + nt], Gt = Q[at + Et], (ut !== wt || ut !== ct || ut !== Gt) && (V = d[z + B], H = d[z + U], G = d[z + F], y(st, vt, O, V, H, G, ut, wt, ct, Gt, S, M, C), Jt = j[at] = ht++, Gt !== ct && g(j[at + nt], Jt, H, G, ct, Gt, S, M, C), Gt !== wt && g(j[at + lt], Jt, G, V, Gt, wt, S, M, C)), at += 1, z += q;
                              st & 1 && (at = 0), Qt = lt, lt = pt, pt = Qt, Qt = nt, nt = X, X = Qt, Qt = Et, Et = Ct, Ct = Qt, z += rt;
                            }
                          }
                          v(j), v(Q);
                        };
                      } };
                      function a(o, y, g, x, c, v) {
                        var f = [v, c].join(","), _ = i[f];
                        return _(o, y, g, r.mallocUint32, r.freeUint32);
                      }
                      function l(o) {
                        function y(S) {
                          throw new Error("ndarray-extract-contour: " + S);
                        }
                        typeof o != "object" && y("Must specify arguments");
                        var g = o.order;
                        Array.isArray(g) || y("Must specify order");
                        var x = o.arrayArguments || 1;
                        x < 1 && y("Must have at least one array argument");
                        var c = o.scalarArguments || 0;
                        c < 0 && y("Scalar arg count must be > 0"), typeof o.vertex != "function" && y("Must specify vertex creation function"), typeof o.cell != "function" && y("Must specify cell creation function"), typeof o.phase != "function" && y("Must specify phase function");
                        for (var v = o.getters || [], f = new Array(x), _ = 0; _ < x; ++_)
                          v.indexOf(_) >= 0 ? f[_] = !0 : f[_] = !1;
                        return a(o.vertex, o.cell, o.phase, c, g, f);
                      }
                    }
                  ),
                  /***/
                  6199: (
                    /***/
                    function(p, u, t) {
                      var r = t(1338), i = { zero: function(M, C, m, L) {
                        var d = M[0], h = m[0];
                        L |= 0;
                        var E = 0, w = h;
                        for (E = 0; E < d; ++E)
                          C[L] = 0, L += w;
                      }, fdTemplate1: function(M, C, m, L, d, h, E) {
                        var w = M[0], z = m[0], O = h[0], B = -1 * z, V = z;
                        L |= 0, E |= 0;
                        var U = 0, H = z, F = O;
                        for (U = 0; U < w; ++U)
                          d[E] = 0.5 * (C[L + B] - C[L + V]), L += H, E += F;
                      }, fdTemplate2: function(M, C, m, L, d, h, E, w, z, O) {
                        var B = M[0], V = M[1], U = m[0], H = m[1], F = h[0], G = h[1], q = z[0], rt = z[1], st = -1 * U, vt = U, ht = -1 * H, et = H;
                        L |= 0, E |= 0, O |= 0;
                        var Q = 0, j = 0, at = H, ut = U - V * H, nt = G, X = F - V * G, ct = rt, lt = q - V * rt;
                        for (j = 0; j < B; ++j) {
                          for (Q = 0; Q < V; ++Q)
                            d[E] = 0.5 * (C[L + st] - C[L + vt]), w[O] = 0.5 * (C[L + ht] - C[L + et]), L += at, E += nt, O += ct;
                          L += ut, E += X, O += lt;
                        }
                      } }, a = { cdiff: function(M) {
                        var C = {};
                        return function(L, d, h) {
                          var E = L.dtype, w = L.order, z = d.dtype, O = d.order, B = h.dtype, V = h.order, U = [E, w.join(), z, O.join(), B, V.join()].join(), H = C[U];
                          return H || (C[U] = H = M([E, w, z, O, B, V])), H(L.shape.slice(0), L.data, L.stride, L.offset | 0, d.data, d.stride, d.offset | 0, h.data, h.stride, h.offset | 0);
                        };
                      }, zero: function(M) {
                        var C = {};
                        return function(L) {
                          var d = L.dtype, h = L.order, E = [d, h.join()].join(), w = C[E];
                          return w || (C[E] = w = M([d, h])), w(L.shape.slice(0), L.data, L.stride, L.offset | 0);
                        };
                      }, fdTemplate1: function(M) {
                        var C = {};
                        return function(L, d) {
                          var h = L.dtype, E = L.order, w = d.dtype, z = d.order, O = [h, E.join(), w, z.join()].join(), B = C[O];
                          return B || (C[O] = B = M([h, E, w, z])), B(L.shape.slice(0), L.data, L.stride, L.offset | 0, d.data, d.stride, d.offset | 0);
                        };
                      }, fdTemplate2: function(M) {
                        var C = {};
                        return function(L, d, h) {
                          var E = L.dtype, w = L.order, z = d.dtype, O = d.order, B = h.dtype, V = h.order, U = [E, w.join(), z, O.join(), B, V.join()].join(), H = C[U];
                          return H || (C[U] = H = M([E, w, z, O, B, V])), H(L.shape.slice(0), L.data, L.stride, L.offset | 0, d.data, d.stride, d.offset | 0, h.data, h.stride, h.offset | 0);
                        };
                      } };
                      function l(M) {
                        var C = a[M.funcName];
                        return C(o.bind(void 0, M));
                      }
                      function o(M) {
                        return i[M.funcName];
                      }
                      function y(M) {
                        return l({ funcName: M.funcName });
                      }
                      var g = {}, x = {}, c = y({ funcName: "cdiff" }), v = y({ funcName: "zero" });
                      function f(M) {
                        return M in g ? g[M] : g[M] = y({ funcName: "fdTemplate" + M });
                      }
                      function _(M, C, m, L) {
                        return function(d, h) {
                          var E = h.shape.slice();
                          return E[0] > 2 && E[1] > 2 && L(h.pick(-1, -1).lo(1, 1).hi(E[0] - 2, E[1] - 2), d.pick(-1, -1, 0).lo(1, 1).hi(E[0] - 2, E[1] - 2), d.pick(-1, -1, 1).lo(1, 1).hi(E[0] - 2, E[1] - 2)), E[1] > 2 && (m(h.pick(0, -1).lo(1).hi(E[1] - 2), d.pick(0, -1, 1).lo(1).hi(E[1] - 2)), C(d.pick(0, -1, 0).lo(1).hi(E[1] - 2))), E[1] > 2 && (m(h.pick(E[0] - 1, -1).lo(1).hi(E[1] - 2), d.pick(E[0] - 1, -1, 1).lo(1).hi(E[1] - 2)), C(d.pick(E[0] - 1, -1, 0).lo(1).hi(E[1] - 2))), E[0] > 2 && (m(h.pick(-1, 0).lo(1).hi(E[0] - 2), d.pick(-1, 0, 0).lo(1).hi(E[0] - 2)), C(d.pick(-1, 0, 1).lo(1).hi(E[0] - 2))), E[0] > 2 && (m(h.pick(-1, E[1] - 1).lo(1).hi(E[0] - 2), d.pick(-1, E[1] - 1, 0).lo(1).hi(E[0] - 2)), C(d.pick(-1, E[1] - 1, 1).lo(1).hi(E[0] - 2))), d.set(0, 0, 0, 0), d.set(0, 0, 1, 0), d.set(E[0] - 1, 0, 0, 0), d.set(E[0] - 1, 0, 1, 0), d.set(0, E[1] - 1, 0, 0), d.set(0, E[1] - 1, 1, 0), d.set(E[0] - 1, E[1] - 1, 0, 0), d.set(E[0] - 1, E[1] - 1, 1, 0), d;
                        };
                      }
                      function S(M) {
                        var C = M.join(), E = x[C];
                        if (E)
                          return E;
                        for (var m = M.length, L = [c, v], d = 1; d <= m; ++d)
                          L.push(f(d));
                        var h = _, E = h.apply(void 0, L);
                        return x[C] = E, E;
                      }
                      p.exports = function(C, m, L) {
                        if (Array.isArray(L) || (typeof L == "string" ? L = r(m.dimension, L) : L = r(m.dimension, "clamp")), m.size === 0)
                          return C;
                        if (m.dimension === 0)
                          return C.set(0), C;
                        var d = S(L);
                        return d(C, m);
                      };
                    }
                  ),
                  /***/
                  4317: (
                    /***/
                    function(p) {
                      function u(l, o) {
                        var y = Math.floor(o), g = o - y, x = 0 <= y && y < l.shape[0], c = 0 <= y + 1 && y + 1 < l.shape[0], v = x ? +l.get(y) : 0, f = c ? +l.get(y + 1) : 0;
                        return (1 - g) * v + g * f;
                      }
                      function t(l, o, y) {
                        var g = Math.floor(o), x = o - g, c = 0 <= g && g < l.shape[0], v = 0 <= g + 1 && g + 1 < l.shape[0], f = Math.floor(y), _ = y - f, S = 0 <= f && f < l.shape[1], M = 0 <= f + 1 && f + 1 < l.shape[1], C = c && S ? l.get(g, f) : 0, m = c && M ? l.get(g, f + 1) : 0, L = v && S ? l.get(g + 1, f) : 0, d = v && M ? l.get(g + 1, f + 1) : 0;
                        return (1 - _) * ((1 - x) * C + x * L) + _ * ((1 - x) * m + x * d);
                      }
                      function r(l, o, y, g) {
                        var x = Math.floor(o), c = o - x, v = 0 <= x && x < l.shape[0], f = 0 <= x + 1 && x + 1 < l.shape[0], _ = Math.floor(y), S = y - _, M = 0 <= _ && _ < l.shape[1], C = 0 <= _ + 1 && _ + 1 < l.shape[1], m = Math.floor(g), L = g - m, d = 0 <= m && m < l.shape[2], h = 0 <= m + 1 && m + 1 < l.shape[2], E = v && M && d ? l.get(x, _, m) : 0, w = v && C && d ? l.get(x, _ + 1, m) : 0, z = f && M && d ? l.get(x + 1, _, m) : 0, O = f && C && d ? l.get(x + 1, _ + 1, m) : 0, B = v && M && h ? l.get(x, _, m + 1) : 0, V = v && C && h ? l.get(x, _ + 1, m + 1) : 0, U = f && M && h ? l.get(x + 1, _, m + 1) : 0, H = f && C && h ? l.get(x + 1, _ + 1, m + 1) : 0;
                        return (1 - L) * ((1 - S) * ((1 - c) * E + c * z) + S * ((1 - c) * w + c * O)) + L * ((1 - S) * ((1 - c) * B + c * U) + S * ((1 - c) * V + c * H));
                      }
                      function i(l) {
                        var o = l.shape.length | 0, y = new Array(o), g = new Array(o), x = new Array(o), c = new Array(o), v, f;
                        for (v = 0; v < o; ++v)
                          f = +arguments[v + 1], y[v] = Math.floor(f), g[v] = f - y[v], x[v] = 0 <= y[v] && y[v] < l.shape[v], c[v] = 0 <= y[v] + 1 && y[v] + 1 < l.shape[v];
                        var _ = 0, S, M, C;
                        t: for (v = 0; v < 1 << o; ++v) {
                          for (M = 1, C = l.offset, S = 0; S < o; ++S)
                            if (v & 1 << S) {
                              if (!c[S])
                                continue t;
                              M *= g[S], C += l.stride[S] * (y[S] + 1);
                            } else {
                              if (!x[S])
                                continue t;
                              M *= 1 - g[S], C += l.stride[S] * y[S];
                            }
                          _ += M * l.data[C];
                        }
                        return _;
                      }
                      function a(l, o, y, g) {
                        switch (l.shape.length) {
                          case 0:
                            return 0;
                          case 1:
                            return u(l, o);
                          case 2:
                            return t(l, o, y);
                          case 3:
                            return r(l, o, y, g);
                          default:
                            return i.apply(void 0, arguments);
                        }
                      }
                      p.exports = a, p.exports.d1 = u, p.exports.d2 = t, p.exports.d3 = r;
                    }
                  ),
                  /***/
                  5298: (
                    /***/
                    function(p, u) {
                      var t = { "float64,2,1,0": function() {
                        return function(x, c, v, f, _) {
                          var S = x[0], M = x[1], C = x[2], m = v[0], L = v[1], d = v[2];
                          f |= 0;
                          var h = 0, E = 0, w = 0, z = d, O = L - C * d, B = m - M * L;
                          for (w = 0; w < S; ++w) {
                            for (E = 0; E < M; ++E) {
                              for (h = 0; h < C; ++h)
                                c[f] /= _, f += z;
                              f += O;
                            }
                            f += B;
                          }
                        };
                      }, "uint8,2,0,1,float64,2,1,0": function() {
                        return function(x, c, v, f, _, S, M, C) {
                          var m = x[0], L = x[1], d = x[2], h = v[0], E = v[1], w = v[2], z = S[0], O = S[1], B = S[2];
                          f |= 0, M |= 0;
                          for (var V = f, U = M, H = x[0] | 0; H > 0; ) {
                            H < 64 ? (m = H, H = 0) : (m = 64, H -= 64);
                            for (var F = x[1] | 0; F > 0; ) {
                              F < 64 ? (L = F, F = 0) : (L = 64, F -= 64), f = V + H * h + F * E, M = U + H * z + F * O;
                              var G = 0, q = 0, rt = 0, st = w, vt = h - d * w, ht = E - m * h, et = B, Q = z - d * B, j = O - m * z;
                              for (rt = 0; rt < L; ++rt) {
                                for (q = 0; q < m; ++q) {
                                  for (G = 0; G < d; ++G)
                                    c[f] = _[M] * C, f += st, M += et;
                                  f += vt, M += Q;
                                }
                                f += ht, M += j;
                              }
                            }
                          }
                        };
                      }, "float32,1,0,float32,1,0": function() {
                        return function(x, c, v, f, _, S, M) {
                          var C = x[0], m = x[1], L = v[0], d = v[1], h = S[0], E = S[1];
                          f |= 0, M |= 0;
                          var w = 0, z = 0, O = d, B = L - m * d, V = E, U = h - m * E;
                          for (z = 0; z < C; ++z) {
                            for (w = 0; w < m; ++w)
                              c[f] = _[M], f += O, M += V;
                            f += B, M += U;
                          }
                        };
                      }, "float32,1,0,float32,0,1": function() {
                        return function(x, c, v, f, _, S, M) {
                          var C = x[0], m = x[1], L = v[0], d = v[1], h = S[0], E = S[1];
                          f |= 0, M |= 0;
                          for (var w = f, z = M, O = x[1] | 0; O > 0; ) {
                            O < 64 ? (m = O, O = 0) : (m = 64, O -= 64);
                            for (var B = x[0] | 0; B > 0; ) {
                              B < 64 ? (C = B, B = 0) : (C = 64, B -= 64), f = w + O * d + B * L, M = z + O * E + B * h;
                              var V = 0, U = 0, H = d, F = L - m * d, G = E, q = h - m * E;
                              for (U = 0; U < C; ++U) {
                                for (V = 0; V < m; ++V)
                                  c[f] = _[M], f += H, M += G;
                                f += F, M += q;
                              }
                            }
                          }
                        };
                      }, "uint8,2,0,1,uint8,1,2,0": function() {
                        return function(x, c, v, f, _, S, M) {
                          var C = x[0], m = x[1], L = x[2], d = v[0], h = v[1], E = v[2], w = S[0], z = S[1], O = S[2];
                          f |= 0, M |= 0;
                          for (var B = f, V = M, U = x[2] | 0; U > 0; ) {
                            U < 64 ? (L = U, U = 0) : (L = 64, U -= 64);
                            for (var H = x[0] | 0; H > 0; ) {
                              H < 64 ? (C = H, H = 0) : (C = 64, H -= 64);
                              for (var F = x[1] | 0; F > 0; ) {
                                F < 64 ? (m = F, F = 0) : (m = 64, F -= 64), f = B + U * E + H * d + F * h, M = V + U * O + H * w + F * z;
                                var G = 0, q = 0, rt = 0, st = E, vt = d - L * E, ht = h - C * d, et = O, Q = w - L * O, j = z - C * w;
                                for (rt = 0; rt < m; ++rt) {
                                  for (q = 0; q < C; ++q) {
                                    for (G = 0; G < L; ++G)
                                      c[f] = _[M], f += st, M += et;
                                    f += vt, M += Q;
                                  }
                                  f += ht, M += j;
                                }
                              }
                            }
                          }
                        };
                      }, "uint8,2,0,1,array,2,0,1": function() {
                        return function(x, c, v, f, _, S, M) {
                          var C = x[0], m = x[1], L = x[2], d = v[0], h = v[1], E = v[2], w = S[0], z = S[1], O = S[2];
                          f |= 0, M |= 0;
                          var B = 0, V = 0, U = 0, H = E, F = d - L * E, G = h - C * d, q = O, rt = w - L * O, st = z - C * w;
                          for (U = 0; U < m; ++U) {
                            for (V = 0; V < C; ++V) {
                              for (B = 0; B < L; ++B)
                                c[f] = _[M], f += H, M += q;
                              f += F, M += rt;
                            }
                            f += G, M += st;
                          }
                        };
                      } };
                      function r(g, x) {
                        var c = x.join(","), v = t[c];
                        return v();
                      }
                      var i = r, a = { mul: function(g) {
                        var x = {};
                        return function(v, f, _) {
                          var S = v.dtype, M = v.order, C = f.dtype, m = f.order, L = _.dtype, d = _.order, h = [S, M.join(), C, m.join(), L, d.join()].join(), E = x[h];
                          return E || (x[h] = E = g([S, M, C, m, L, d])), E(v.shape.slice(0), v.data, v.stride, v.offset | 0, f.data, f.stride, f.offset | 0, _.data, _.stride, _.offset | 0);
                        };
                      }, muls: function(g) {
                        var x = {};
                        return function(v, f, _) {
                          var S = v.dtype, M = v.order, C = f.dtype, m = f.order, L = [S, M.join(), C, m.join()].join(), d = x[L];
                          return d || (x[L] = d = g([S, M, C, m])), d(v.shape.slice(0), v.data, v.stride, v.offset | 0, f.data, f.stride, f.offset | 0, _);
                        };
                      }, mulseq: function(g) {
                        var x = {};
                        return function(v, f) {
                          var _ = v.dtype, S = v.order, M = [_, S.join()].join(), C = x[M];
                          return C || (x[M] = C = g([_, S])), C(v.shape.slice(0), v.data, v.stride, v.offset | 0, f);
                        };
                      }, div: function(g) {
                        var x = {};
                        return function(v, f, _) {
                          var S = v.dtype, M = v.order, C = f.dtype, m = f.order, L = _.dtype, d = _.order, h = [S, M.join(), C, m.join(), L, d.join()].join(), E = x[h];
                          return E || (x[h] = E = g([S, M, C, m, L, d])), E(v.shape.slice(0), v.data, v.stride, v.offset | 0, f.data, f.stride, f.offset | 0, _.data, _.stride, _.offset | 0);
                        };
                      }, divs: function(g) {
                        var x = {};
                        return function(v, f, _) {
                          var S = v.dtype, M = v.order, C = f.dtype, m = f.order, L = [S, M.join(), C, m.join()].join(), d = x[L];
                          return d || (x[L] = d = g([S, M, C, m])), d(v.shape.slice(0), v.data, v.stride, v.offset | 0, f.data, f.stride, f.offset | 0, _);
                        };
                      }, divseq: function(g) {
                        var x = {};
                        return function(v, f) {
                          var _ = v.dtype, S = v.order, M = [_, S.join()].join(), C = x[M];
                          return C || (x[M] = C = g([_, S])), C(v.shape.slice(0), v.data, v.stride, v.offset | 0, f);
                        };
                      }, assign: function(g) {
                        var x = {};
                        return function(v, f) {
                          var _ = v.dtype, S = v.order, M = f.dtype, C = f.order, m = [_, S.join(), M, C.join()].join(), L = x[m];
                          return L || (x[m] = L = g([_, S, M, C])), L(v.shape.slice(0), v.data, v.stride, v.offset | 0, f.data, f.stride, f.offset | 0);
                        };
                      } };
                      function l(g) {
                        var x = a[g.funcName];
                        return x(i.bind(void 0, g));
                      }
                      function o(g) {
                        return l({ funcName: g.funcName });
                      }
                      var y = { mul: "*", div: "/" };
                      (function() {
                        for (var g in y)
                          u[g] = o({ funcName: g }), u[g + "s"] = o({ funcName: g + "s" }), u[g + "seq"] = o({ funcName: g + "seq" });
                      })(), u.assign = o({ funcName: "assign" });
                    }
                  ),
                  /***/
                  9994: (
                    /***/
                    function(p, u, t) {
                      var r = t(9618), i = t(8277);
                      p.exports = function(l, o) {
                        for (var y = [], g = l, x = 1; Array.isArray(g); )
                          y.push(g.length), x *= g.length, g = g[0];
                        return y.length === 0 ? r() : (o || (o = r(new Float64Array(x), y)), i(o, l), o);
                      };
                    }
                  ),
                  /***/
                  8277: (
                    /***/
                    function(p) {
                      function u() {
                        return function(o, y, g, x, c) {
                          var v = o[0], f = o[1], _ = o[2], S = g[0], M = g[1], C = g[2], m = [0, 0, 0];
                          x |= 0;
                          var L = 0, d = 0, h = 0, E = C, w = M - _ * C, z = S - f * M;
                          for (h = 0; h < v; ++h) {
                            for (d = 0; d < f; ++d) {
                              for (L = 0; L < _; ++L) {
                                {
                                  var O = c, B;
                                  for (B = 0; B < m.length - 1; ++B)
                                    O = O[m[B]];
                                  y[x] = O[m[m.length - 1]];
                                }
                                x += E, ++m[2];
                              }
                              x += w, m[2] -= _, ++m[1];
                            }
                            x += z, m[1] -= f, ++m[0];
                          }
                        };
                      }
                      function t() {
                        return u();
                      }
                      var r = t;
                      function i(o) {
                        var y = {};
                        return function(x, c) {
                          var v = x.dtype, f = x.order, _ = [v, f.join()].join(), S = y[_];
                          return S || (y[_] = S = o([v, f])), S(x.shape.slice(0), x.data, x.stride, x.offset | 0, c);
                        };
                      }
                      function a(o) {
                        return i(r.bind(void 0, o));
                      }
                      function l(o) {
                        return a({ funcName: o.funcName });
                      }
                      p.exports = l({ funcName: "convert" });
                    }
                  ),
                  /***/
                  7640: (
                    /***/
                    function(p, u, t) {
                      var r = t(1888);
                      function i(c) {
                        switch (c) {
                          case "uint32":
                            return [r.mallocUint32, r.freeUint32];
                          default:
                            return null;
                        }
                      }
                      var a = { "uint32,1,0": function(c, v) {
                        return function(_, S, M, C, m, L, d, h, E, w, z) {
                          var O, B, V, U = _ * m + C, H, F = c(h), G, q, rt, st;
                          for (O = _ + 1; O <= S; ++O) {
                            for (B = O, U += m, V = U, G = 0, q = U, H = 0; H < h; ++H)
                              F[G++] = M[q], q += E;
                            t: for (; B-- > _; ) {
                              G = 0, q = V - m;
                              e: for (H = 0; H < h; ++H) {
                                if (rt = M[q], st = F[G], rt < st)
                                  break t;
                                if (rt > st)
                                  break e;
                                q += w, G += z;
                              }
                              for (G = V, q = V - m, H = 0; H < h; ++H)
                                M[G] = M[q], G += E, q += E;
                              V -= m;
                            }
                            for (G = V, q = 0, H = 0; H < h; ++H)
                              M[G] = F[q++], G += E;
                          }
                          v(F);
                        };
                      } };
                      function l(c, v) {
                        var f = i(v), _ = [v, c].join(","), S = a[_];
                        return f ? S(f[0], f[1]) : S();
                      }
                      var o = { "uint32,1,0": function(c, v, f) {
                        return function _(S, M, C, m, L, d, h, E, w, z, O) {
                          var B = (M - S + 1) / 6 | 0, V = S + B, U = M - B, H = S + M >> 1, F = H - B, G = H + B, q = V, rt = F, st = H, vt = G, ht = U, et = S + 1, Q = M - 1, j = !0, at, ut, nt, X, ct, lt, pt, wt, Et, Ct = 0, Gt = 0, Jt = 0, Qt, Vt, zt, Rt, Wt, kt, re, ge, _e, ce, ae, Se, ze, Ne, Ve, Oe, ur = E, ie = v(ur), $t = v(ur);
                          Vt = L * q, zt = L * rt, Oe = m;
                          t: for (Qt = 0; Qt < E; ++Qt) {
                            if (pt = Vt + Oe, wt = zt + Oe, Jt = C[pt] - C[wt], Jt > 0) {
                              ut = q, q = rt, rt = ut;
                              break t;
                            }
                            if (Jt < 0)
                              break t;
                            Oe += z;
                          }
                          Vt = L * vt, zt = L * ht, Oe = m;
                          t: for (Qt = 0; Qt < E; ++Qt) {
                            if (pt = Vt + Oe, wt = zt + Oe, Jt = C[pt] - C[wt], Jt > 0) {
                              ut = vt, vt = ht, ht = ut;
                              break t;
                            }
                            if (Jt < 0)
                              break t;
                            Oe += z;
                          }
                          Vt = L * q, zt = L * st, Oe = m;
                          t: for (Qt = 0; Qt < E; ++Qt) {
                            if (pt = Vt + Oe, wt = zt + Oe, Jt = C[pt] - C[wt], Jt > 0) {
                              ut = q, q = st, st = ut;
                              break t;
                            }
                            if (Jt < 0)
                              break t;
                            Oe += z;
                          }
                          Vt = L * rt, zt = L * st, Oe = m;
                          t: for (Qt = 0; Qt < E; ++Qt) {
                            if (pt = Vt + Oe, wt = zt + Oe, Jt = C[pt] - C[wt], Jt > 0) {
                              ut = rt, rt = st, st = ut;
                              break t;
                            }
                            if (Jt < 0)
                              break t;
                            Oe += z;
                          }
                          Vt = L * q, zt = L * vt, Oe = m;
                          t: for (Qt = 0; Qt < E; ++Qt) {
                            if (pt = Vt + Oe, wt = zt + Oe, Jt = C[pt] - C[wt], Jt > 0) {
                              ut = q, q = vt, vt = ut;
                              break t;
                            }
                            if (Jt < 0)
                              break t;
                            Oe += z;
                          }
                          Vt = L * st, zt = L * vt, Oe = m;
                          t: for (Qt = 0; Qt < E; ++Qt) {
                            if (pt = Vt + Oe, wt = zt + Oe, Jt = C[pt] - C[wt], Jt > 0) {
                              ut = st, st = vt, vt = ut;
                              break t;
                            }
                            if (Jt < 0)
                              break t;
                            Oe += z;
                          }
                          Vt = L * rt, zt = L * ht, Oe = m;
                          t: for (Qt = 0; Qt < E; ++Qt) {
                            if (pt = Vt + Oe, wt = zt + Oe, Jt = C[pt] - C[wt], Jt > 0) {
                              ut = rt, rt = ht, ht = ut;
                              break t;
                            }
                            if (Jt < 0)
                              break t;
                            Oe += z;
                          }
                          Vt = L * rt, zt = L * st, Oe = m;
                          t: for (Qt = 0; Qt < E; ++Qt) {
                            if (pt = Vt + Oe, wt = zt + Oe, Jt = C[pt] - C[wt], Jt > 0) {
                              ut = rt, rt = st, st = ut;
                              break t;
                            }
                            if (Jt < 0)
                              break t;
                            Oe += z;
                          }
                          Vt = L * vt, zt = L * ht, Oe = m;
                          t: for (Qt = 0; Qt < E; ++Qt) {
                            if (pt = Vt + Oe, wt = zt + Oe, Jt = C[pt] - C[wt], Jt > 0) {
                              ut = vt, vt = ht, ht = ut;
                              break t;
                            }
                            if (Jt < 0)
                              break t;
                            Oe += z;
                          }
                          for (Vt = L * q, zt = L * rt, Rt = L * st, Wt = L * vt, kt = L * ht, re = L * V, ge = L * H, _e = L * U, Ve = 0, Oe = m, Qt = 0; Qt < E; ++Qt)
                            pt = Vt + Oe, wt = zt + Oe, Et = Rt + Oe, ce = Wt + Oe, ae = kt + Oe, Se = re + Oe, ze = ge + Oe, Ne = _e + Oe, ie[Ve] = C[wt], $t[Ve] = C[ce], j = j && ie[Ve] === $t[Ve], nt = C[pt], X = C[Et], ct = C[ae], C[Se] = nt, C[ze] = X, C[Ne] = ct, ++Ve, Oe += w;
                          for (Vt = L * F, zt = L * S, Oe = m, Qt = 0; Qt < E; ++Qt)
                            pt = Vt + Oe, wt = zt + Oe, C[pt] = C[wt], Oe += w;
                          for (Vt = L * G, zt = L * M, Oe = m, Qt = 0; Qt < E; ++Qt)
                            pt = Vt + Oe, wt = zt + Oe, C[pt] = C[wt], Oe += w;
                          if (j)
                            for (lt = et; lt <= Q; ++lt) {
                              pt = m + lt * L, Ve = 0;
                              t: for (Qt = 0; Qt < E; ++Qt) {
                                if (Jt = C[pt] - ie[Ve], Jt !== 0)
                                  break t;
                                Ve += O, pt += z;
                              }
                              if (Jt !== 0)
                                if (Jt < 0) {
                                  if (lt !== et)
                                    for (Vt = L * lt, zt = L * et, Oe = m, Qt = 0; Qt < E; ++Qt)
                                      pt = Vt + Oe, wt = zt + Oe, at = C[pt], C[pt] = C[wt], C[wt] = at, Oe += w;
                                  ++et;
                                } else
                                  for (; ; ) {
                                    pt = m + Q * L, Ve = 0;
                                    t: for (Qt = 0; Qt < E; ++Qt) {
                                      if (Jt = C[pt] - ie[Ve], Jt !== 0)
                                        break t;
                                      Ve += O, pt += z;
                                    }
                                    if (Jt > 0)
                                      Q--;
                                    else if (Jt < 0) {
                                      for (Vt = L * lt, zt = L * et, Rt = L * Q, Oe = m, Qt = 0; Qt < E; ++Qt)
                                        pt = Vt + Oe, wt = zt + Oe, Et = Rt + Oe, at = C[pt], C[pt] = C[wt], C[wt] = C[Et], C[Et] = at, Oe += w;
                                      ++et, --Q;
                                      break;
                                    } else {
                                      for (Vt = L * lt, zt = L * Q, Oe = m, Qt = 0; Qt < E; ++Qt)
                                        pt = Vt + Oe, wt = zt + Oe, at = C[pt], C[pt] = C[wt], C[wt] = at, Oe += w;
                                      --Q;
                                      break;
                                    }
                                  }
                            }
                          else
                            for (lt = et; lt <= Q; ++lt) {
                              pt = m + lt * L, Ve = 0;
                              t: for (Qt = 0; Qt < E; ++Qt) {
                                if (Ct = C[pt] - ie[Ve], Ct !== 0)
                                  break t;
                                Ve += O, pt += z;
                              }
                              if (Ct < 0) {
                                if (lt !== et)
                                  for (Vt = L * lt, zt = L * et, Oe = m, Qt = 0; Qt < E; ++Qt)
                                    pt = Vt + Oe, wt = zt + Oe, at = C[pt], C[pt] = C[wt], C[wt] = at, Oe += w;
                                ++et;
                              } else {
                                pt = m + lt * L, Ve = 0;
                                t: for (Qt = 0; Qt < E; ++Qt) {
                                  if (Gt = C[pt] - $t[Ve], Gt !== 0)
                                    break t;
                                  Ve += O, pt += z;
                                }
                                if (Gt > 0)
                                  for (; ; ) {
                                    pt = m + Q * L, Ve = 0;
                                    t: for (Qt = 0; Qt < E; ++Qt) {
                                      if (Jt = C[pt] - $t[Ve], Jt !== 0)
                                        break t;
                                      Ve += O, pt += z;
                                    }
                                    if (Jt > 0) {
                                      if (--Q < lt)
                                        break;
                                      continue;
                                    } else {
                                      pt = m + Q * L, Ve = 0;
                                      t: for (Qt = 0; Qt < E; ++Qt) {
                                        if (Jt = C[pt] - ie[Ve], Jt !== 0)
                                          break t;
                                        Ve += O, pt += z;
                                      }
                                      if (Jt < 0) {
                                        for (Vt = L * lt, zt = L * et, Rt = L * Q, Oe = m, Qt = 0; Qt < E; ++Qt)
                                          pt = Vt + Oe, wt = zt + Oe, Et = Rt + Oe, at = C[pt], C[pt] = C[wt], C[wt] = C[Et], C[Et] = at, Oe += w;
                                        ++et, --Q;
                                      } else {
                                        for (Vt = L * lt, zt = L * Q, Oe = m, Qt = 0; Qt < E; ++Qt)
                                          pt = Vt + Oe, wt = zt + Oe, at = C[pt], C[pt] = C[wt], C[wt] = at, Oe += w;
                                        --Q;
                                      }
                                      break;
                                    }
                                  }
                              }
                            }
                          for (Vt = L * S, zt = L * (et - 1), Ve = 0, Oe = m, Qt = 0; Qt < E; ++Qt)
                            pt = Vt + Oe, wt = zt + Oe, C[pt] = C[wt], C[wt] = ie[Ve], ++Ve, Oe += w;
                          for (Vt = L * M, zt = L * (Q + 1), Ve = 0, Oe = m, Qt = 0; Qt < E; ++Qt)
                            pt = Vt + Oe, wt = zt + Oe, C[pt] = C[wt], C[wt] = $t[Ve], ++Ve, Oe += w;
                          if (et - 2 - S <= 32 ? c(S, et - 2, C, m, L, d, h, E, w, z, O) : _(S, et - 2, C, m, L, d, h, E, w, z, O), M - (Q + 2) <= 32 ? c(Q + 2, M, C, m, L, d, h, E, w, z, O) : _(Q + 2, M, C, m, L, d, h, E, w, z, O), j) {
                            f(ie), f($t);
                            return;
                          }
                          if (et < V && Q > U) {
                            t: for (; ; ) {
                              for (pt = m + et * L, Ve = 0, Oe = m, Qt = 0; Qt < E; ++Qt) {
                                if (C[pt] !== ie[Ve])
                                  break t;
                                ++Ve, pt += w;
                              }
                              ++et;
                            }
                            t: for (; ; ) {
                              for (pt = m + Q * L, Ve = 0, Oe = m, Qt = 0; Qt < E; ++Qt) {
                                if (C[pt] !== $t[Ve])
                                  break t;
                                ++Ve, pt += w;
                              }
                              --Q;
                            }
                            for (lt = et; lt <= Q; ++lt) {
                              pt = m + lt * L, Ve = 0;
                              t: for (Qt = 0; Qt < E; ++Qt) {
                                if (Ct = C[pt] - ie[Ve], Ct !== 0)
                                  break t;
                                Ve += O, pt += z;
                              }
                              if (Ct === 0) {
                                if (lt !== et)
                                  for (Vt = L * lt, zt = L * et, Oe = m, Qt = 0; Qt < E; ++Qt)
                                    pt = Vt + Oe, wt = zt + Oe, at = C[pt], C[pt] = C[wt], C[wt] = at, Oe += w;
                                ++et;
                              } else {
                                pt = m + lt * L, Ve = 0;
                                t: for (Qt = 0; Qt < E; ++Qt) {
                                  if (Gt = C[pt] - $t[Ve], Gt !== 0)
                                    break t;
                                  Ve += O, pt += z;
                                }
                                if (Gt === 0)
                                  for (; ; ) {
                                    pt = m + Q * L, Ve = 0;
                                    t: for (Qt = 0; Qt < E; ++Qt) {
                                      if (Jt = C[pt] - $t[Ve], Jt !== 0)
                                        break t;
                                      Ve += O, pt += z;
                                    }
                                    if (Jt === 0) {
                                      if (--Q < lt)
                                        break;
                                      continue;
                                    } else {
                                      pt = m + Q * L, Ve = 0;
                                      t: for (Qt = 0; Qt < E; ++Qt) {
                                        if (Jt = C[pt] - ie[Ve], Jt !== 0)
                                          break t;
                                        Ve += O, pt += z;
                                      }
                                      if (Jt < 0) {
                                        for (Vt = L * lt, zt = L * et, Rt = L * Q, Oe = m, Qt = 0; Qt < E; ++Qt)
                                          pt = Vt + Oe, wt = zt + Oe, Et = Rt + Oe, at = C[pt], C[pt] = C[wt], C[wt] = C[Et], C[Et] = at, Oe += w;
                                        ++et, --Q;
                                      } else {
                                        for (Vt = L * lt, zt = L * Q, Oe = m, Qt = 0; Qt < E; ++Qt)
                                          pt = Vt + Oe, wt = zt + Oe, at = C[pt], C[pt] = C[wt], C[wt] = at, Oe += w;
                                        --Q;
                                      }
                                      break;
                                    }
                                  }
                              }
                            }
                          }
                          f(ie), f($t), Q - et <= 32 ? c(et, Q, C, m, L, d, h, E, w, z, O) : _(et, Q, C, m, L, d, h, E, w, z, O);
                        };
                      } };
                      function y(c, v, f) {
                        var _ = i(v), S = [v, c].join(","), M = o[S];
                        return c.length > 1 && _ ? M(f, _[0], _[1]) : M(f);
                      }
                      var g = { "uint32,1,0": function(c, v) {
                        return function(f) {
                          var _ = f.data, S = f.offset | 0, M = f.shape, C = f.stride, m = C[0] | 0, L = M[0] | 0, d = C[1] | 0, h = M[1] | 0, E = d, w = d, z = 1;
                          L <= 32 ? c(0, L - 1, _, S, m, d, L, h, E, w, z) : v(0, L - 1, _, S, m, d, L, h, E, w, z);
                        };
                      } };
                      function x(c, v) {
                        var f = [v, c].join(","), _ = g[f], S = l(c, v), M = y(c, v, S);
                        return _(S, M);
                      }
                      p.exports = x;
                    }
                  ),
                  /***/
                  446: (
                    /***/
                    function(p, u, t) {
                      var r = t(7640), i = {};
                      function a(l) {
                        var o = l.order, y = l.dtype, g = [o, y], x = g.join(":"), c = i[x];
                        return c || (i[x] = c = r(o, y)), c(l), l;
                      }
                      p.exports = a;
                    }
                  ),
                  /***/
                  9618: (
                    /***/
                    function(p, u, t) {
                      var r = t(7163), i = typeof Float64Array < "u";
                      function a(v, f) {
                        return v[0] - f[0];
                      }
                      function l() {
                        var v = this.stride, f = new Array(v.length), _;
                        for (_ = 0; _ < f.length; ++_)
                          f[_] = [Math.abs(v[_]), _];
                        f.sort(a);
                        var S = new Array(f.length);
                        for (_ = 0; _ < S.length; ++_)
                          S[_] = f[_][1];
                        return S;
                      }
                      var o = {
                        // Special case for trivial arrays
                        T: function(v) {
                          function f(S) {
                            this.data = S;
                          }
                          var _ = f.prototype;
                          return _.dtype = v, _.index = function() {
                            return -1;
                          }, _.size = 0, _.dimension = -1, _.shape = _.stride = _.order = [], _.lo = _.hi = _.transpose = _.step = function() {
                            return new f(this.data);
                          }, _.get = _.set = function() {
                          }, _.pick = function() {
                            return null;
                          }, function(M) {
                            return new f(M);
                          };
                        },
                        // Special case for 0d arrays
                        0: function(v, f) {
                          function _(M, C) {
                            this.data = M, this.offset = C;
                          }
                          var S = _.prototype;
                          return S.dtype = v, S.index = function() {
                            return this.offset;
                          }, S.dimension = 0, S.size = 1, S.shape = S.stride = S.order = [], S.lo = S.hi = S.transpose = S.step = function() {
                            return new _(this.data, this.offset);
                          }, S.pick = function() {
                            return f(this.data);
                          }, S.valueOf = S.get = function() {
                            return v === "generic" ? this.data.get(this.offset) : this.data[this.offset];
                          }, S.set = function(C) {
                            return v === "generic" ? this.data.set(this.offset, C) : this.data[this.offset] = C;
                          }, function(C, m, L, d) {
                            return new _(C, d);
                          };
                        },
                        1: function(v, f, _) {
                          function S(C, m, L, d) {
                            this.data = C, this.shape = [m], this.stride = [L], this.offset = d | 0;
                          }
                          var M = S.prototype;
                          return M.dtype = v, M.dimension = 1, Object.defineProperty(M, "size", { get: function() {
                            return this.shape[0];
                          } }), M.order = [0], M.set = function(m, L) {
                            return v === "generic" ? this.data.set(this.offset + this.stride[0] * m, L) : this.data[this.offset + this.stride[0] * m] = L;
                          }, M.get = function(m) {
                            return v === "generic" ? this.data.get(this.offset + this.stride[0] * m) : this.data[this.offset + this.stride[0] * m];
                          }, M.index = function(m) {
                            return this.offset + this.stride[0] * m;
                          }, M.hi = function(m) {
                            return new S(this.data, typeof m != "number" || m < 0 ? this.shape[0] : m | 0, this.stride[0], this.offset);
                          }, M.lo = function(m) {
                            var L = this.offset, d = 0, h = this.shape[0], E = this.stride[0];
                            return typeof m == "number" && m >= 0 && (d = m | 0, L += E * d, h -= d), new S(this.data, h, E, L);
                          }, M.step = function(m) {
                            var L = this.shape[0], d = this.stride[0], h = this.offset, E = 0, w = Math.ceil;
                            return typeof m == "number" && (E = m | 0, E < 0 ? (h += d * (L - 1), L = w(-L / E)) : L = w(L / E), d *= E), new S(this.data, L, d, h);
                          }, M.transpose = function(m) {
                            m = m === void 0 ? 0 : m | 0;
                            var L = this.shape, d = this.stride;
                            return new S(this.data, L[m], d[m], this.offset);
                          }, M.pick = function(m) {
                            var L = [], d = [], h = this.offset;
                            typeof m == "number" && m >= 0 ? h = h + this.stride[0] * m | 0 : (L.push(this.shape[0]), d.push(this.stride[0]));
                            var E = f[L.length + 1];
                            return E(this.data, L, d, h);
                          }, function(m, L, d, h) {
                            return new S(m, L[0], d[0], h);
                          };
                        },
                        2: function(v, f, _) {
                          function S(C, m, L, d, h, E) {
                            this.data = C, this.shape = [m, L], this.stride = [d, h], this.offset = E | 0;
                          }
                          var M = S.prototype;
                          return M.dtype = v, M.dimension = 2, Object.defineProperty(M, "size", { get: function() {
                            return this.shape[0] * this.shape[1];
                          } }), Object.defineProperty(M, "order", { get: function() {
                            return Math.abs(this.stride[0]) > Math.abs(this.stride[1]) ? [1, 0] : [0, 1];
                          } }), M.set = function(m, L, d) {
                            return v === "generic" ? this.data.set(this.offset + this.stride[0] * m + this.stride[1] * L, d) : this.data[this.offset + this.stride[0] * m + this.stride[1] * L] = d;
                          }, M.get = function(m, L) {
                            return v === "generic" ? this.data.get(this.offset + this.stride[0] * m + this.stride[1] * L) : this.data[this.offset + this.stride[0] * m + this.stride[1] * L];
                          }, M.index = function(m, L) {
                            return this.offset + this.stride[0] * m + this.stride[1] * L;
                          }, M.hi = function(m, L) {
                            return new S(this.data, typeof m != "number" || m < 0 ? this.shape[0] : m | 0, typeof L != "number" || L < 0 ? this.shape[1] : L | 0, this.stride[0], this.stride[1], this.offset);
                          }, M.lo = function(m, L) {
                            var d = this.offset, h = 0, E = this.shape[0], w = this.shape[1], z = this.stride[0], O = this.stride[1];
                            return typeof m == "number" && m >= 0 && (h = m | 0, d += z * h, E -= h), typeof L == "number" && L >= 0 && (h = L | 0, d += O * h, w -= h), new S(this.data, E, w, z, O, d);
                          }, M.step = function(m, L) {
                            var d = this.shape[0], h = this.shape[1], E = this.stride[0], w = this.stride[1], z = this.offset, O = 0, B = Math.ceil;
                            return typeof m == "number" && (O = m | 0, O < 0 ? (z += E * (d - 1), d = B(-d / O)) : d = B(d / O), E *= O), typeof L == "number" && (O = L | 0, O < 0 ? (z += w * (h - 1), h = B(-h / O)) : h = B(h / O), w *= O), new S(this.data, d, h, E, w, z);
                          }, M.transpose = function(m, L) {
                            m = m === void 0 ? 0 : m | 0, L = L === void 0 ? 1 : L | 0;
                            var d = this.shape, h = this.stride;
                            return new S(this.data, d[m], d[L], h[m], h[L], this.offset);
                          }, M.pick = function(m, L) {
                            var d = [], h = [], E = this.offset;
                            typeof m == "number" && m >= 0 ? E = E + this.stride[0] * m | 0 : (d.push(this.shape[0]), h.push(this.stride[0])), typeof L == "number" && L >= 0 ? E = E + this.stride[1] * L | 0 : (d.push(this.shape[1]), h.push(this.stride[1]));
                            var w = f[d.length + 1];
                            return w(this.data, d, h, E);
                          }, function(m, L, d, h) {
                            return new S(m, L[0], L[1], d[0], d[1], h);
                          };
                        },
                        3: function(v, f, _) {
                          function S(C, m, L, d, h, E, w, z) {
                            this.data = C, this.shape = [m, L, d], this.stride = [h, E, w], this.offset = z | 0;
                          }
                          var M = S.prototype;
                          return M.dtype = v, M.dimension = 3, Object.defineProperty(M, "size", { get: function() {
                            return this.shape[0] * this.shape[1] * this.shape[2];
                          } }), Object.defineProperty(M, "order", { get: function() {
                            var m = Math.abs(this.stride[0]), L = Math.abs(this.stride[1]), d = Math.abs(this.stride[2]);
                            return m > L ? L > d ? [2, 1, 0] : m > d ? [1, 2, 0] : [1, 0, 2] : m > d ? [2, 0, 1] : d > L ? [0, 1, 2] : [0, 2, 1];
                          } }), M.set = function(m, L, d, h) {
                            return v === "generic" ? this.data.set(this.offset + this.stride[0] * m + this.stride[1] * L + this.stride[2] * d, h) : this.data[this.offset + this.stride[0] * m + this.stride[1] * L + this.stride[2] * d] = h;
                          }, M.get = function(m, L, d) {
                            return v === "generic" ? this.data.get(this.offset + this.stride[0] * m + this.stride[1] * L + this.stride[2] * d) : this.data[this.offset + this.stride[0] * m + this.stride[1] * L + this.stride[2] * d];
                          }, M.index = function(m, L, d) {
                            return this.offset + this.stride[0] * m + this.stride[1] * L + this.stride[2] * d;
                          }, M.hi = function(m, L, d) {
                            return new S(this.data, typeof m != "number" || m < 0 ? this.shape[0] : m | 0, typeof L != "number" || L < 0 ? this.shape[1] : L | 0, typeof d != "number" || d < 0 ? this.shape[2] : d | 0, this.stride[0], this.stride[1], this.stride[2], this.offset);
                          }, M.lo = function(m, L, d) {
                            var h = this.offset, E = 0, w = this.shape[0], z = this.shape[1], O = this.shape[2], B = this.stride[0], V = this.stride[1], U = this.stride[2];
                            return typeof m == "number" && m >= 0 && (E = m | 0, h += B * E, w -= E), typeof L == "number" && L >= 0 && (E = L | 0, h += V * E, z -= E), typeof d == "number" && d >= 0 && (E = d | 0, h += U * E, O -= E), new S(this.data, w, z, O, B, V, U, h);
                          }, M.step = function(m, L, d) {
                            var h = this.shape[0], E = this.shape[1], w = this.shape[2], z = this.stride[0], O = this.stride[1], B = this.stride[2], V = this.offset, U = 0, H = Math.ceil;
                            return typeof m == "number" && (U = m | 0, U < 0 ? (V += z * (h - 1), h = H(-h / U)) : h = H(h / U), z *= U), typeof L == "number" && (U = L | 0, U < 0 ? (V += O * (E - 1), E = H(-E / U)) : E = H(E / U), O *= U), typeof d == "number" && (U = d | 0, U < 0 ? (V += B * (w - 1), w = H(-w / U)) : w = H(w / U), B *= U), new S(this.data, h, E, w, z, O, B, V);
                          }, M.transpose = function(m, L, d) {
                            m = m === void 0 ? 0 : m | 0, L = L === void 0 ? 1 : L | 0, d = d === void 0 ? 2 : d | 0;
                            var h = this.shape, E = this.stride;
                            return new S(this.data, h[m], h[L], h[d], E[m], E[L], E[d], this.offset);
                          }, M.pick = function(m, L, d) {
                            var h = [], E = [], w = this.offset;
                            typeof m == "number" && m >= 0 ? w = w + this.stride[0] * m | 0 : (h.push(this.shape[0]), E.push(this.stride[0])), typeof L == "number" && L >= 0 ? w = w + this.stride[1] * L | 0 : (h.push(this.shape[1]), E.push(this.stride[1])), typeof d == "number" && d >= 0 ? w = w + this.stride[2] * d | 0 : (h.push(this.shape[2]), E.push(this.stride[2]));
                            var z = f[h.length + 1];
                            return z(this.data, h, E, w);
                          }, function(m, L, d, h) {
                            return new S(m, L[0], L[1], L[2], d[0], d[1], d[2], h);
                          };
                        },
                        4: function(v, f, _) {
                          function S(C, m, L, d, h, E, w, z, O, B) {
                            this.data = C, this.shape = [m, L, d, h], this.stride = [E, w, z, O], this.offset = B | 0;
                          }
                          var M = S.prototype;
                          return M.dtype = v, M.dimension = 4, Object.defineProperty(M, "size", { get: function() {
                            return this.shape[0] * this.shape[1] * this.shape[2] * this.shape[3];
                          } }), Object.defineProperty(M, "order", { get: _ }), M.set = function(m, L, d, h, E) {
                            return v === "generic" ? this.data.set(this.offset + this.stride[0] * m + this.stride[1] * L + this.stride[2] * d + this.stride[3] * h, E) : this.data[this.offset + this.stride[0] * m + this.stride[1] * L + this.stride[2] * d + this.stride[3] * h] = E;
                          }, M.get = function(m, L, d, h) {
                            return v === "generic" ? this.data.get(this.offset + this.stride[0] * m + this.stride[1] * L + this.stride[2] * d + this.stride[3] * h) : this.data[this.offset + this.stride[0] * m + this.stride[1] * L + this.stride[2] * d + this.stride[3] * h];
                          }, M.index = function(m, L, d, h) {
                            return this.offset + this.stride[0] * m + this.stride[1] * L + this.stride[2] * d + this.stride[3] * h;
                          }, M.hi = function(m, L, d, h) {
                            return new S(this.data, typeof m != "number" || m < 0 ? this.shape[0] : m | 0, typeof L != "number" || L < 0 ? this.shape[1] : L | 0, typeof d != "number" || d < 0 ? this.shape[2] : d | 0, typeof h != "number" || h < 0 ? this.shape[3] : h | 0, this.stride[0], this.stride[1], this.stride[2], this.stride[3], this.offset);
                          }, M.lo = function(m, L, d, h) {
                            var E = this.offset, w = 0, z = this.shape[0], O = this.shape[1], B = this.shape[2], V = this.shape[3], U = this.stride[0], H = this.stride[1], F = this.stride[2], G = this.stride[3];
                            return typeof m == "number" && m >= 0 && (w = m | 0, E += U * w, z -= w), typeof L == "number" && L >= 0 && (w = L | 0, E += H * w, O -= w), typeof d == "number" && d >= 0 && (w = d | 0, E += F * w, B -= w), typeof h == "number" && h >= 0 && (w = h | 0, E += G * w, V -= w), new S(this.data, z, O, B, V, U, H, F, G, E);
                          }, M.step = function(m, L, d, h) {
                            var E = this.shape[0], w = this.shape[1], z = this.shape[2], O = this.shape[3], B = this.stride[0], V = this.stride[1], U = this.stride[2], H = this.stride[3], F = this.offset, G = 0, q = Math.ceil;
                            return typeof m == "number" && (G = m | 0, G < 0 ? (F += B * (E - 1), E = q(-E / G)) : E = q(E / G), B *= G), typeof L == "number" && (G = L | 0, G < 0 ? (F += V * (w - 1), w = q(-w / G)) : w = q(w / G), V *= G), typeof d == "number" && (G = d | 0, G < 0 ? (F += U * (z - 1), z = q(-z / G)) : z = q(z / G), U *= G), typeof h == "number" && (G = h | 0, G < 0 ? (F += H * (O - 1), O = q(-O / G)) : O = q(O / G), H *= G), new S(this.data, E, w, z, O, B, V, U, H, F);
                          }, M.transpose = function(m, L, d, h) {
                            m = m === void 0 ? 0 : m | 0, L = L === void 0 ? 1 : L | 0, d = d === void 0 ? 2 : d | 0, h = h === void 0 ? 3 : h | 0;
                            var E = this.shape, w = this.stride;
                            return new S(this.data, E[m], E[L], E[d], E[h], w[m], w[L], w[d], w[h], this.offset);
                          }, M.pick = function(m, L, d, h) {
                            var E = [], w = [], z = this.offset;
                            typeof m == "number" && m >= 0 ? z = z + this.stride[0] * m | 0 : (E.push(this.shape[0]), w.push(this.stride[0])), typeof L == "number" && L >= 0 ? z = z + this.stride[1] * L | 0 : (E.push(this.shape[1]), w.push(this.stride[1])), typeof d == "number" && d >= 0 ? z = z + this.stride[2] * d | 0 : (E.push(this.shape[2]), w.push(this.stride[2])), typeof h == "number" && h >= 0 ? z = z + this.stride[3] * h | 0 : (E.push(this.shape[3]), w.push(this.stride[3]));
                            var O = f[E.length + 1];
                            return O(this.data, E, w, z);
                          }, function(m, L, d, h) {
                            return new S(m, L[0], L[1], L[2], L[3], d[0], d[1], d[2], d[3], h);
                          };
                        },
                        5: function(f, _, S) {
                          function M(m, L, d, h, E, w, z, O, B, V, U, H) {
                            this.data = m, this.shape = [L, d, h, E, w], this.stride = [z, O, B, V, U], this.offset = H | 0;
                          }
                          var C = M.prototype;
                          return C.dtype = f, C.dimension = 5, Object.defineProperty(C, "size", { get: function() {
                            return this.shape[0] * this.shape[1] * this.shape[2] * this.shape[3] * this.shape[4];
                          } }), Object.defineProperty(C, "order", { get: S }), C.set = function(L, d, h, E, w, z) {
                            return f === "generic" ? this.data.set(this.offset + this.stride[0] * L + this.stride[1] * d + this.stride[2] * h + this.stride[3] * E + this.stride[4] * w, z) : this.data[this.offset + this.stride[0] * L + this.stride[1] * d + this.stride[2] * h + this.stride[3] * E + this.stride[4] * w] = z;
                          }, C.get = function(L, d, h, E, w) {
                            return f === "generic" ? this.data.get(this.offset + this.stride[0] * L + this.stride[1] * d + this.stride[2] * h + this.stride[3] * E + this.stride[4] * w) : this.data[this.offset + this.stride[0] * L + this.stride[1] * d + this.stride[2] * h + this.stride[3] * E + this.stride[4] * w];
                          }, C.index = function(L, d, h, E, w) {
                            return this.offset + this.stride[0] * L + this.stride[1] * d + this.stride[2] * h + this.stride[3] * E + this.stride[4] * w;
                          }, C.hi = function(L, d, h, E, w) {
                            return new M(this.data, typeof L != "number" || L < 0 ? this.shape[0] : L | 0, typeof d != "number" || d < 0 ? this.shape[1] : d | 0, typeof h != "number" || h < 0 ? this.shape[2] : h | 0, typeof E != "number" || E < 0 ? this.shape[3] : E | 0, typeof w != "number" || w < 0 ? this.shape[4] : w | 0, this.stride[0], this.stride[1], this.stride[2], this.stride[3], this.stride[4], this.offset);
                          }, C.lo = function(L, d, h, E, w) {
                            var z = this.offset, O = 0, B = this.shape[0], V = this.shape[1], U = this.shape[2], H = this.shape[3], F = this.shape[4], G = this.stride[0], q = this.stride[1], rt = this.stride[2], st = this.stride[3], vt = this.stride[4];
                            return typeof L == "number" && L >= 0 && (O = L | 0, z += G * O, B -= O), typeof d == "number" && d >= 0 && (O = d | 0, z += q * O, V -= O), typeof h == "number" && h >= 0 && (O = h | 0, z += rt * O, U -= O), typeof E == "number" && E >= 0 && (O = E | 0, z += st * O, H -= O), typeof w == "number" && w >= 0 && (O = w | 0, z += vt * O, F -= O), new M(this.data, B, V, U, H, F, G, q, rt, st, vt, z);
                          }, C.step = function(L, d, h, E, w) {
                            var z = this.shape[0], O = this.shape[1], B = this.shape[2], V = this.shape[3], U = this.shape[4], H = this.stride[0], F = this.stride[1], G = this.stride[2], q = this.stride[3], rt = this.stride[4], st = this.offset, vt = 0, ht = Math.ceil;
                            return typeof L == "number" && (vt = L | 0, vt < 0 ? (st += H * (z - 1), z = ht(-z / vt)) : z = ht(z / vt), H *= vt), typeof d == "number" && (vt = d | 0, vt < 0 ? (st += F * (O - 1), O = ht(-O / vt)) : O = ht(O / vt), F *= vt), typeof h == "number" && (vt = h | 0, vt < 0 ? (st += G * (B - 1), B = ht(-B / vt)) : B = ht(B / vt), G *= vt), typeof E == "number" && (vt = E | 0, vt < 0 ? (st += q * (V - 1), V = ht(-V / vt)) : V = ht(V / vt), q *= vt), typeof w == "number" && (vt = w | 0, vt < 0 ? (st += rt * (U - 1), U = ht(-U / vt)) : U = ht(U / vt), rt *= vt), new M(this.data, z, O, B, V, U, H, F, G, q, rt, st);
                          }, C.transpose = function(L, d, h, E, w) {
                            L = L === void 0 ? 0 : L | 0, d = d === void 0 ? 1 : d | 0, h = h === void 0 ? 2 : h | 0, E = E === void 0 ? 3 : E | 0, w = w === void 0 ? 4 : w | 0;
                            var z = this.shape, O = this.stride;
                            return new M(this.data, z[L], z[d], z[h], z[E], z[w], O[L], O[d], O[h], O[E], O[w], this.offset);
                          }, C.pick = function(L, d, h, E, w) {
                            var z = [], O = [], B = this.offset;
                            typeof L == "number" && L >= 0 ? B = B + this.stride[0] * L | 0 : (z.push(this.shape[0]), O.push(this.stride[0])), typeof d == "number" && d >= 0 ? B = B + this.stride[1] * d | 0 : (z.push(this.shape[1]), O.push(this.stride[1])), typeof h == "number" && h >= 0 ? B = B + this.stride[2] * h | 0 : (z.push(this.shape[2]), O.push(this.stride[2])), typeof E == "number" && E >= 0 ? B = B + this.stride[3] * E | 0 : (z.push(this.shape[3]), O.push(this.stride[3])), typeof w == "number" && w >= 0 ? B = B + this.stride[4] * w | 0 : (z.push(this.shape[4]), O.push(this.stride[4]));
                            var V = _[z.length + 1];
                            return V(this.data, z, O, B);
                          }, function(L, d, h, E) {
                            return new M(L, d[0], d[1], d[2], d[3], d[4], h[0], h[1], h[2], h[3], h[4], E);
                          };
                        }
                      };
                      function y(v, f) {
                        var _ = f === -1 ? "T" : String(f), S = o[_];
                        return f === -1 ? S(v) : f === 0 ? S(v, x[v][0]) : S(v, x[v], l);
                      }
                      function g(v) {
                        if (r(v))
                          return "buffer";
                        if (i)
                          switch (Object.prototype.toString.call(v)) {
                            case "[object Float64Array]":
                              return "float64";
                            case "[object Float32Array]":
                              return "float32";
                            case "[object Int8Array]":
                              return "int8";
                            case "[object Int16Array]":
                              return "int16";
                            case "[object Int32Array]":
                              return "int32";
                            case "[object Uint8ClampedArray]":
                              return "uint8_clamped";
                            case "[object Uint8Array]":
                              return "uint8";
                            case "[object Uint16Array]":
                              return "uint16";
                            case "[object Uint32Array]":
                              return "uint32";
                            case "[object BigInt64Array]":
                              return "bigint64";
                            case "[object BigUint64Array]":
                              return "biguint64";
                          }
                        return Array.isArray(v) ? "array" : "generic";
                      }
                      var x = {
                        generic: [],
                        buffer: [],
                        array: [],
                        // typed arrays
                        float32: [],
                        float64: [],
                        int8: [],
                        int16: [],
                        int32: [],
                        uint8_clamped: [],
                        uint8: [],
                        uint16: [],
                        uint32: [],
                        bigint64: [],
                        biguint64: []
                      };
                      function c(v, f, _, S) {
                        if (v === void 0) {
                          var h = x.array[0];
                          return h([]);
                        } else typeof v == "number" && (v = [v]);
                        f === void 0 && (f = [v.length]);
                        var M = f.length;
                        if (_ === void 0) {
                          _ = new Array(M);
                          for (var C = M - 1, m = 1; C >= 0; --C)
                            _[C] = m, m *= f[C];
                        }
                        if (S === void 0) {
                          S = 0;
                          for (var C = 0; C < M; ++C)
                            _[C] < 0 && (S -= (f[C] - 1) * _[C]);
                        }
                        for (var L = g(v), d = x[L]; d.length <= M + 1; )
                          d.push(y(L, d.length - 1));
                        var h = d[M + 1];
                        return h(v, f, _, S);
                      }
                      p.exports = c;
                    }
                  ),
                  /***/
                  1278: (
                    /***/
                    function(p, u, t) {
                      var r = t(2361), i = Math.pow(2, -1074), a = -1 >>> 0;
                      p.exports = l;
                      function l(o, y) {
                        if (isNaN(o) || isNaN(y))
                          return NaN;
                        if (o === y)
                          return o;
                        if (o === 0)
                          return y < 0 ? -i : i;
                        var g = r.hi(o), x = r.lo(o);
                        return y > o == o > 0 ? x === a ? (g += 1, x = 0) : x += 1 : x === 0 ? (x = a, g -= 1) : x -= 1, r.pack(x, g);
                      }
                    }
                  ),
                  /***/
                  8406: (
                    /***/
                    function(p, u) {
                      var t = 1e-6, r = 1e-6;
                      u.vertexNormals = function(i, a, l) {
                        for (var o = a.length, y = new Array(o), g = l === void 0 ? t : l, x = 0; x < o; ++x)
                          y[x] = [0, 0, 0];
                        for (var x = 0; x < i.length; ++x)
                          for (var c = i[x], v = 0, f = c[c.length - 1], _ = c[0], S = 0; S < c.length; ++S) {
                            v = f, f = _, _ = c[(S + 1) % c.length];
                            for (var M = a[v], C = a[f], m = a[_], L = new Array(3), d = 0, h = new Array(3), E = 0, w = 0; w < 3; ++w)
                              L[w] = M[w] - C[w], d += L[w] * L[w], h[w] = m[w] - C[w], E += h[w] * h[w];
                            if (d * E > g)
                              for (var z = y[f], O = 1 / Math.sqrt(d * E), w = 0; w < 3; ++w) {
                                var B = (w + 1) % 3, V = (w + 2) % 3;
                                z[w] += O * (h[B] * L[V] - h[V] * L[B]);
                              }
                          }
                        for (var x = 0; x < o; ++x) {
                          for (var z = y[x], U = 0, w = 0; w < 3; ++w)
                            U += z[w] * z[w];
                          if (U > g)
                            for (var O = 1 / Math.sqrt(U), w = 0; w < 3; ++w)
                              z[w] *= O;
                          else
                            for (var w = 0; w < 3; ++w)
                              z[w] = 0;
                        }
                        return y;
                      }, u.faceNormals = function(i, a, l) {
                        for (var o = i.length, y = new Array(o), g = l === void 0 ? r : l, x = 0; x < o; ++x) {
                          for (var c = i[x], v = new Array(3), f = 0; f < 3; ++f)
                            v[f] = a[c[f]];
                          for (var _ = new Array(3), S = new Array(3), f = 0; f < 3; ++f)
                            _[f] = v[1][f] - v[0][f], S[f] = v[2][f] - v[0][f];
                          for (var M = new Array(3), C = 0, f = 0; f < 3; ++f) {
                            var m = (f + 1) % 3, L = (f + 2) % 3;
                            M[f] = _[m] * S[L] - _[L] * S[m], C += M[f] * M[f];
                          }
                          C > g ? C = 1 / Math.sqrt(C) : C = 0;
                          for (var f = 0; f < 3; ++f)
                            M[f] *= C;
                          y[x] = M;
                        }
                        return y;
                      };
                    }
                  ),
                  /***/
                  4081: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i, a, l, o, y, g, x, c) {
                        var v = r + o + c;
                        if (f > 0) {
                          var f = Math.sqrt(v + 1);
                          t[0] = 0.5 * (y - x) / f, t[1] = 0.5 * (g - a) / f, t[2] = 0.5 * (i - o) / f, t[3] = 0.5 * f;
                        } else {
                          var _ = Math.max(r, o, c), f = Math.sqrt(2 * _ - v + 1);
                          r >= _ ? (t[0] = 0.5 * f, t[1] = 0.5 * (l + i) / f, t[2] = 0.5 * (g + a) / f, t[3] = 0.5 * (y - x) / f) : o >= _ ? (t[0] = 0.5 * (i + l) / f, t[1] = 0.5 * f, t[2] = 0.5 * (x + y) / f, t[3] = 0.5 * (g - a) / f) : (t[0] = 0.5 * (a + g) / f, t[1] = 0.5 * (y + x) / f, t[2] = 0.5 * f, t[3] = 0.5 * (i - l) / f);
                        }
                        return t;
                      }
                    }
                  ),
                  /***/
                  9977: (
                    /***/
                    function(p, u, t) {
                      p.exports = f;
                      var r = t(9215), i = t(6582), a = t(7399), l = t(7608), o = t(4081);
                      function y(_, S, M) {
                        return Math.sqrt(Math.pow(_, 2) + Math.pow(S, 2) + Math.pow(M, 2));
                      }
                      function g(_, S, M, C) {
                        return Math.sqrt(Math.pow(_, 2) + Math.pow(S, 2) + Math.pow(M, 2) + Math.pow(C, 2));
                      }
                      function x(_, S) {
                        var M = S[0], C = S[1], m = S[2], L = S[3], d = g(M, C, m, L);
                        d > 1e-6 ? (_[0] = M / d, _[1] = C / d, _[2] = m / d, _[3] = L / d) : (_[0] = _[1] = _[2] = 0, _[3] = 1);
                      }
                      function c(_, S, M) {
                        this.radius = r([M]), this.center = r(S), this.rotation = r(_), this.computedRadius = this.radius.curve(0), this.computedCenter = this.center.curve(0), this.computedRotation = this.rotation.curve(0), this.computedUp = [0.1, 0, 0], this.computedEye = [0.1, 0, 0], this.computedMatrix = [0.1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], this.recalcMatrix(0);
                      }
                      var v = c.prototype;
                      v.lastT = function() {
                        return Math.max(this.radius.lastT(), this.center.lastT(), this.rotation.lastT());
                      }, v.recalcMatrix = function(_) {
                        this.radius.curve(_), this.center.curve(_), this.rotation.curve(_);
                        var S = this.computedRotation;
                        x(S, S);
                        var M = this.computedMatrix;
                        a(M, S);
                        var C = this.computedCenter, m = this.computedEye, L = this.computedUp, d = Math.exp(this.computedRadius[0]);
                        m[0] = C[0] + d * M[2], m[1] = C[1] + d * M[6], m[2] = C[2] + d * M[10], L[0] = M[1], L[1] = M[5], L[2] = M[9];
                        for (var h = 0; h < 3; ++h) {
                          for (var E = 0, w = 0; w < 3; ++w)
                            E += M[h + 4 * w] * m[w];
                          M[12 + h] = -E;
                        }
                      }, v.getMatrix = function(_, S) {
                        this.recalcMatrix(_);
                        var M = this.computedMatrix;
                        if (S) {
                          for (var C = 0; C < 16; ++C)
                            S[C] = M[C];
                          return S;
                        }
                        return M;
                      }, v.idle = function(_) {
                        this.center.idle(_), this.radius.idle(_), this.rotation.idle(_);
                      }, v.flush = function(_) {
                        this.center.flush(_), this.radius.flush(_), this.rotation.flush(_);
                      }, v.pan = function(_, S, M, C) {
                        S = S || 0, M = M || 0, C = C || 0, this.recalcMatrix(_);
                        var m = this.computedMatrix, L = m[1], d = m[5], h = m[9], E = y(L, d, h);
                        L /= E, d /= E, h /= E;
                        var w = m[0], z = m[4], O = m[8], B = w * L + z * d + O * h;
                        w -= L * B, z -= d * B, O -= h * B;
                        var V = y(w, z, O);
                        w /= V, z /= V, O /= V, m[2], m[6], m[10];
                        var U = w * S + L * M, H = z * S + d * M, F = O * S + h * M;
                        this.center.move(_, U, H, F);
                        var G = Math.exp(this.computedRadius[0]);
                        G = Math.max(1e-4, G + C), this.radius.set(_, Math.log(G));
                      }, v.rotate = function(_, S, M, C) {
                        this.recalcMatrix(_), S = S || 0, M = M || 0;
                        var m = this.computedMatrix, L = m[0], d = m[4], h = m[8], E = m[1], w = m[5], z = m[9], O = m[2], B = m[6], V = m[10], U = S * L + M * E, H = S * d + M * w, F = S * h + M * z, G = -(B * F - V * H), q = -(V * U - O * F), rt = -(O * H - B * U), st = Math.sqrt(Math.max(0, 1 - Math.pow(G, 2) - Math.pow(q, 2) - Math.pow(rt, 2))), vt = g(G, q, rt, st);
                        vt > 1e-6 ? (G /= vt, q /= vt, rt /= vt, st /= vt) : (G = q = rt = 0, st = 1);
                        var ht = this.computedRotation, et = ht[0], Q = ht[1], j = ht[2], at = ht[3], ut = et * st + at * G + Q * rt - j * q, nt = Q * st + at * q + j * G - et * rt, X = j * st + at * rt + et * q - Q * G, ct = at * st - et * G - Q * q - j * rt;
                        if (C) {
                          G = O, q = B, rt = V;
                          var lt = Math.sin(C) / y(G, q, rt);
                          G *= lt, q *= lt, rt *= lt, st = Math.cos(S), ut = ut * st + ct * G + nt * rt - X * q, nt = nt * st + ct * q + X * G - ut * rt, X = X * st + ct * rt + ut * q - nt * G, ct = ct * st - ut * G - nt * q - X * rt;
                        }
                        var pt = g(ut, nt, X, ct);
                        pt > 1e-6 ? (ut /= pt, nt /= pt, X /= pt, ct /= pt) : (ut = nt = X = 0, ct = 1), this.rotation.set(_, ut, nt, X, ct);
                      }, v.lookAt = function(_, S, M, C) {
                        this.recalcMatrix(_), M = M || this.computedCenter, S = S || this.computedEye, C = C || this.computedUp;
                        var m = this.computedMatrix;
                        i(m, S, M, C);
                        var L = this.computedRotation;
                        o(L, m[0], m[1], m[2], m[4], m[5], m[6], m[8], m[9], m[10]), x(L, L), this.rotation.set(_, L[0], L[1], L[2], L[3]);
                        for (var d = 0, h = 0; h < 3; ++h)
                          d += Math.pow(M[h] - S[h], 2);
                        this.radius.set(_, 0.5 * Math.log(Math.max(d, 1e-6))), this.center.set(_, M[0], M[1], M[2]);
                      }, v.translate = function(_, S, M, C) {
                        this.center.move(_, S || 0, M || 0, C || 0);
                      }, v.setMatrix = function(_, S) {
                        var M = this.computedRotation;
                        o(M, S[0], S[1], S[2], S[4], S[5], S[6], S[8], S[9], S[10]), x(M, M), this.rotation.set(_, M[0], M[1], M[2], M[3]);
                        var C = this.computedMatrix;
                        l(C, S);
                        var m = C[15];
                        if (Math.abs(m) > 1e-6) {
                          var L = C[12] / m, d = C[13] / m, h = C[14] / m;
                          this.recalcMatrix(_);
                          var E = Math.exp(this.computedRadius[0]);
                          this.center.set(_, L - C[2] * E, d - C[6] * E, h - C[10] * E), this.radius.idle(_);
                        } else
                          this.center.idle(_), this.radius.idle(_);
                      }, v.setDistance = function(_, S) {
                        S > 0 && this.radius.set(_, Math.log(S));
                      }, v.setDistanceLimits = function(_, S) {
                        _ > 0 ? _ = Math.log(_) : _ = -1 / 0, S > 0 ? S = Math.log(S) : S = 1 / 0, S = Math.max(S, _), this.radius.bounds[0][0] = _, this.radius.bounds[1][0] = S;
                      }, v.getDistanceLimits = function(_) {
                        var S = this.radius.bounds;
                        return _ ? (_[0] = Math.exp(S[0][0]), _[1] = Math.exp(S[1][0]), _) : [Math.exp(S[0][0]), Math.exp(S[1][0])];
                      }, v.toJSON = function() {
                        return this.recalcMatrix(this.lastT()), { center: this.computedCenter.slice(), rotation: this.computedRotation.slice(), distance: Math.log(this.computedRadius[0]), zoomMin: this.radius.bounds[0][0], zoomMax: this.radius.bounds[1][0] };
                      }, v.fromJSON = function(_) {
                        var S = this.lastT(), M = _.center;
                        M && this.center.set(S, M[0], M[1], M[2]);
                        var C = _.rotation;
                        C && this.rotation.set(S, C[0], C[1], C[2], C[3]);
                        var m = _.distance;
                        m && m > 0 && this.radius.set(S, Math.log(m)), this.setDistanceLimits(_.zoomMin, _.zoomMax);
                      };
                      function f(_) {
                        _ = _ || {};
                        var S = _.center || [0, 0, 0], M = _.rotation || [0, 0, 0, 1], C = _.radius || 1;
                        S = [].slice.call(S, 0, 3), M = [].slice.call(M, 0, 4), x(M, M);
                        var m = new c(M, S, Math.log(C));
                        return m.setDistanceLimits(_.zoomMin, _.zoomMax), ("eye" in _ || "up" in _) && m.lookAt(0, _.eye, _.center, _.up), m;
                      }
                    }
                  ),
                  /***/
                  1371: (
                    /***/
                    function(p, u, t) {
                      /*!
                      * pad-left <https://github.com/jonschlinkert/pad-left>
                      *
                      * Copyright (c) 2014-2015, Jon Schlinkert.
                      * Licensed under the MIT license.
                      */
                      var r = t(3233);
                      p.exports = function(a, l, o) {
                        return o = typeof o < "u" ? o + "" : " ", r(o, l) + a;
                      };
                    }
                  ),
                  /***/
                  3202: (
                    /***/
                    function(p) {
                      p.exports = function(t, r) {
                        r || (r = [0, ""]), t = String(t);
                        var i = parseFloat(t, 10);
                        return r[0] = i, r[1] = t.match(/[\d.\-\+]*\s*(.*)/)[1] || "", r;
                      };
                    }
                  ),
                  /***/
                  3088: (
                    /***/
                    function(p, u, t) {
                      p.exports = i;
                      var r = t(3140);
                      function i(a, l) {
                        for (var o = l.length | 0, y = a.length, g = [new Array(o), new Array(o)], x = 0; x < o; ++x)
                          g[0][x] = [], g[1][x] = [];
                        for (var x = 0; x < y; ++x) {
                          var c = a[x];
                          g[0][c[0]].push(c), g[1][c[1]].push(c);
                        }
                        for (var v = [], x = 0; x < o; ++x)
                          g[0][x].length + g[1][x].length === 0 && v.push([x]);
                        function f(d, h) {
                          var E = g[h][d[h]];
                          E.splice(E.indexOf(d), 1);
                        }
                        function _(d, h, E) {
                          for (var w, z, O, B = 0; B < 2; ++B)
                            if (g[B][h].length > 0) {
                              w = g[B][h][0], O = B;
                              break;
                            }
                          z = w[O ^ 1];
                          for (var V = 0; V < 2; ++V)
                            for (var U = g[V][h], H = 0; H < U.length; ++H) {
                              var F = U[H], G = F[V ^ 1], q = r(l[d], l[h], l[z], l[G]);
                              q > 0 && (w = F, z = G, O = V);
                            }
                          return E || w && f(w, O), z;
                        }
                        function S(d, h) {
                          var E = g[h][d][0], w = [d];
                          f(E, h);
                          for (var z = E[h ^ 1]; ; ) {
                            for (; z !== d; )
                              w.push(z), z = _(w[w.length - 2], z, !1);
                            if (g[0][d].length + g[1][d].length === 0)
                              break;
                            var O = w[w.length - 1], B = d, V = w[1], U = _(O, B, !0);
                            if (r(l[O], l[B], l[V], l[U]) < 0)
                              break;
                            w.push(d), z = _(O, B);
                          }
                          return w;
                        }
                        function M(d, h) {
                          return h[1] === h[h.length - 1];
                        }
                        for (var x = 0; x < o; ++x)
                          for (var C = 0; C < 2; ++C) {
                            for (var m = []; g[C][x].length > 0; ) {
                              g[0][x].length;
                              var L = S(x, C);
                              M(m, L) ? m.push.apply(m, L) : (m.length > 0 && v.push(m), m = L);
                            }
                            m.length > 0 && v.push(m);
                          }
                        return v;
                      }
                    }
                  ),
                  /***/
                  5609: (
                    /***/
                    function(p, u, t) {
                      p.exports = i;
                      var r = t(3134);
                      function i(a, l) {
                        for (var o = r(a, l.length), y = new Array(l.length), g = new Array(l.length), x = [], c = 0; c < l.length; ++c) {
                          var v = o[c].length;
                          g[c] = v, y[c] = !0, v <= 1 && x.push(c);
                        }
                        for (; x.length > 0; ) {
                          var f = x.pop();
                          y[f] = !1;
                          for (var _ = o[f], c = 0; c < _.length; ++c) {
                            var S = _[c];
                            --g[S] === 0 && x.push(S);
                          }
                        }
                        for (var M = new Array(l.length), C = [], c = 0; c < l.length; ++c)
                          if (y[c]) {
                            var f = C.length;
                            M[c] = f, C.push(l[c]);
                          } else
                            M[c] = -1;
                        for (var m = [], c = 0; c < a.length; ++c) {
                          var L = a[c];
                          y[L[0]] && y[L[1]] && m.push([M[L[0]], M[L[1]]]);
                        }
                        return [m, C];
                      }
                    }
                  ),
                  /***/
                  2095: (
                    /***/
                    function(p, u, t) {
                      p.exports = v;
                      var r = t(3134), i = t(3088), a = t(5085), l = t(5250), o = t(8210), y = t(1682), g = t(5609);
                      function x(f, _) {
                        for (var S = new Array(f), M = 0; M < f; ++M)
                          S[M] = _;
                        return S;
                      }
                      function c(f) {
                        for (var _ = new Array(f), S = 0; S < f; ++S)
                          _[S] = [];
                        return _;
                      }
                      function v(f, _) {
                        var ct = g(f, _);
                        f = ct[0], _ = ct[1];
                        var S = _.length;
                        f.length;
                        for (var M = r(f, _.length), C = 0; C < S; ++C)
                          if (M[C].length % 2 === 1)
                            throw new Error("planar-graph-to-polyline: graph must be manifold");
                        var m = i(f, _);
                        function L(Jt) {
                          for (var Qt = Jt.length, Vt = [0], zt = 0; zt < Qt; ++zt) {
                            var Rt = _[Jt[zt]], Wt = _[Jt[(zt + 1) % Qt]], kt = l(-Rt[0], Rt[1]), re = l(-Rt[0], Wt[1]), ge = l(Wt[0], Rt[1]), _e = l(Wt[0], Wt[1]);
                            Vt = o(Vt, o(o(kt, re), o(ge, _e)));
                          }
                          return Vt[Vt.length - 1] > 0;
                        }
                        m = m.filter(L);
                        for (var d = m.length, h = new Array(d), E = new Array(d), C = 0; C < d; ++C) {
                          h[C] = C;
                          var w = new Array(d), z = m[C].map(function(Qt) {
                            return _[Qt];
                          }), O = a([z]), B = 0;
                          t: for (var V = 0; V < d; ++V)
                            if (w[V] = 0, C !== V) {
                              for (var U = m[V], H = U.length, F = 0; F < H; ++F) {
                                var G = O(_[U[F]]);
                                if (G !== 0) {
                                  G < 0 && (w[V] = 1, B += 1);
                                  continue t;
                                }
                              }
                              w[V] = 1, B += 1;
                            }
                          E[C] = [B, C, w];
                        }
                        E.sort(function(Jt, Qt) {
                          return Qt[0] - Jt[0];
                        });
                        for (var C = 0; C < d; ++C)
                          for (var w = E[C], q = w[1], rt = w[2], V = 0; V < d; ++V)
                            rt[V] && (h[V] = q);
                        for (var st = c(d), C = 0; C < d; ++C)
                          st[C].push(h[C]), st[h[C]].push(C);
                        for (var vt = {}, ht = x(S, !1), C = 0; C < d; ++C)
                          for (var U = m[C], H = U.length, V = 0; V < H; ++V) {
                            var et = U[V], Q = U[(V + 1) % H], j = Math.min(et, Q) + ":" + Math.max(et, Q);
                            if (j in vt) {
                              var at = vt[j];
                              st[at].push(C), st[C].push(at), ht[et] = ht[Q] = !0;
                            } else
                              vt[j] = C;
                          }
                        function ut(Jt) {
                          for (var Qt = Jt.length, Vt = 0; Vt < Qt; ++Vt)
                            if (!ht[Jt[Vt]])
                              return !1;
                          return !0;
                        }
                        for (var nt = [], X = x(d, -1), C = 0; C < d; ++C)
                          h[C] === C && !ut(m[C]) ? (nt.push(C), X[C] = 0) : X[C] = -1;
                        for (var ct = []; nt.length > 0; ) {
                          var lt = nt.pop(), pt = st[lt];
                          y(pt, function(Jt, Qt) {
                            return Jt - Qt;
                          });
                          var wt = pt.length, Et = X[lt], Ct;
                          if (Et === 0) {
                            var U = m[lt];
                            Ct = [U];
                          }
                          for (var C = 0; C < wt; ++C) {
                            var Gt = pt[C];
                            if (!(X[Gt] >= 0) && (X[Gt] = Et ^ 1, nt.push(Gt), Et === 0)) {
                              var U = m[Gt];
                              ut(U) || (U.reverse(), Ct.push(U));
                            }
                          }
                          Et === 0 && ct.push(Ct);
                        }
                        return ct;
                      }
                    }
                  ),
                  /***/
                  5085: (
                    /***/
                    function(p, u, t) {
                      p.exports = _;
                      var r = t(3250)[3], i = t(4209), a = t(3352), l = t(2478);
                      function o() {
                        return !0;
                      }
                      function y(S) {
                        return function(M, C) {
                          var m = S[M];
                          return m ? !!m.queryPoint(C, o) : !1;
                        };
                      }
                      function g(S) {
                        for (var M = {}, C = 0; C < S.length; ++C) {
                          var m = S[C], L = m[0][0], d = m[0][1], h = m[1][1], E = [Math.min(d, h), Math.max(d, h)];
                          L in M ? M[L].push(E) : M[L] = [E];
                        }
                        for (var w = {}, z = Object.keys(M), C = 0; C < z.length; ++C) {
                          var O = M[z[C]];
                          w[z[C]] = a(O);
                        }
                        return y(w);
                      }
                      function x(S, M) {
                        return function(C) {
                          var m = l.le(M, C[0]);
                          if (m < 0)
                            return 1;
                          var L = S[m];
                          if (!L)
                            if (m > 0 && M[m] === C[0])
                              L = S[m - 1];
                            else
                              return 1;
                          for (var d = 1; L; ) {
                            var h = L.key, E = r(C, h[0], h[1]);
                            if (h[0][0] < h[1][0])
                              if (E < 0)
                                L = L.left;
                              else if (E > 0)
                                d = -1, L = L.right;
                              else
                                return 0;
                            else if (E > 0)
                              L = L.left;
                            else if (E < 0)
                              d = 1, L = L.right;
                            else
                              return 0;
                          }
                          return d;
                        };
                      }
                      function c(S) {
                        return 1;
                      }
                      function v(S) {
                        return function(C) {
                          return S(C[0], C[1]) ? 0 : 1;
                        };
                      }
                      function f(S, M) {
                        return function(m) {
                          return S(m[0], m[1]) ? 0 : M(m);
                        };
                      }
                      function _(S) {
                        for (var M = S.length, C = [], m = [], L = 0; L < M; ++L)
                          for (var d = S[L], h = d.length, E = h - 1, w = 0; w < h; E = w++) {
                            var z = d[E], O = d[w];
                            z[0] === O[0] ? m.push([z, O]) : C.push([z, O]);
                          }
                        if (C.length === 0)
                          return m.length === 0 ? c : v(g(m));
                        var B = i(C), V = x(B.slabs, B.coordinates);
                        return m.length === 0 ? V : f(g(m), V);
                      }
                    }
                  ),
                  /***/
                  9346: (
                    /***/
                    function(p) {
                      var u = new Float64Array(4), t = new Float64Array(4), r = new Float64Array(4);
                      function i(a, l, o, y, g) {
                        u.length < y.length && (u = new Float64Array(y.length), t = new Float64Array(y.length), r = new Float64Array(y.length));
                        for (var x = 0; x < y.length; ++x)
                          u[x] = a[x] - y[x], t[x] = l[x] - a[x], r[x] = o[x] - a[x];
                        for (var c = 0, v = 0, f = 0, _ = 0, S = 0, M = 0, x = 0; x < y.length; ++x) {
                          var C = t[x], m = r[x], L = u[x];
                          c += C * C, v += C * m, f += m * m, _ += L * C, S += L * m, M += L * L;
                        }
                        var d = Math.abs(c * f - v * v), h = v * S - f * _, E = v * _ - c * S, w;
                        if (h + E <= d)
                          if (h < 0)
                            E < 0 && _ < 0 ? (E = 0, -_ >= c ? (h = 1, w = c + 2 * _ + M) : (h = -_ / c, w = _ * h + M)) : (h = 0, S >= 0 ? (E = 0, w = M) : -S >= f ? (E = 1, w = f + 2 * S + M) : (E = -S / f, w = S * E + M));
                          else if (E < 0)
                            E = 0, _ >= 0 ? (h = 0, w = M) : -_ >= c ? (h = 1, w = c + 2 * _ + M) : (h = -_ / c, w = _ * h + M);
                          else {
                            var z = 1 / d;
                            h *= z, E *= z, w = h * (c * h + v * E + 2 * _) + E * (v * h + f * E + 2 * S) + M;
                          }
                        else {
                          var O, B, V, U;
                          h < 0 ? (O = v + _, B = f + S, B > O ? (V = B - O, U = c - 2 * v + f, V >= U ? (h = 1, E = 0, w = c + 2 * _ + M) : (h = V / U, E = 1 - h, w = h * (c * h + v * E + 2 * _) + E * (v * h + f * E + 2 * S) + M)) : (h = 0, B <= 0 ? (E = 1, w = f + 2 * S + M) : S >= 0 ? (E = 0, w = M) : (E = -S / f, w = S * E + M))) : E < 0 ? (O = v + S, B = c + _, B > O ? (V = B - O, U = c - 2 * v + f, V >= U ? (E = 1, h = 0, w = f + 2 * S + M) : (E = V / U, h = 1 - E, w = h * (c * h + v * E + 2 * _) + E * (v * h + f * E + 2 * S) + M)) : (E = 0, B <= 0 ? (h = 1, w = c + 2 * _ + M) : _ >= 0 ? (h = 0, w = M) : (h = -_ / c, w = _ * h + M))) : (V = f + S - v - _, V <= 0 ? (h = 0, E = 1, w = f + 2 * S + M) : (U = c - 2 * v + f, V >= U ? (h = 1, E = 0, w = c + 2 * _ + M) : (h = V / U, E = 1 - h, w = h * (c * h + v * E + 2 * _) + E * (v * h + f * E + 2 * S) + M)));
                        }
                        for (var H = 1 - h - E, x = 0; x < y.length; ++x)
                          g[x] = H * a[x] + h * l[x] + E * o[x];
                        return w < 0 ? 0 : w;
                      }
                      p.exports = i;
                    }
                  ),
                  /***/
                  8648: (
                    /***/
                    function(p, u, t) {
                      p.exports = t(783);
                    }
                  ),
                  /***/
                  2653: (
                    /***/
                    function(p, u, t) {
                      var r = t(3865);
                      p.exports = i;
                      function i(a, l) {
                        for (var o = a.length, y = new Array(o), g = 0; g < o; ++g)
                          y[g] = r(a[g], l[g]);
                        return y;
                      }
                    }
                  ),
                  /***/
                  5838: (
                    /***/
                    function(p, u, t) {
                      p.exports = i;
                      var r = t(7842);
                      function i(a) {
                        for (var l = new Array(a.length), o = 0; o < a.length; ++o)
                          l[o] = r(a[o]);
                        return l;
                      }
                    }
                  ),
                  /***/
                  8987: (
                    /***/
                    function(p, u, t) {
                      var r = t(7842), i = t(6504);
                      p.exports = a;
                      function a(l, o) {
                        for (var y = r(o), g = l.length, x = new Array(g), c = 0; c < g; ++c)
                          x[c] = i(l[c], y);
                        return x;
                      }
                    }
                  ),
                  /***/
                  544: (
                    /***/
                    function(p, u, t) {
                      var r = t(5572);
                      p.exports = i;
                      function i(a, l) {
                        for (var o = a.length, y = new Array(o), g = 0; g < o; ++g)
                          y[g] = r(a[g], l[g]);
                        return y;
                      }
                    }
                  ),
                  /***/
                  5771: (
                    /***/
                    function(p, u, t) {
                      var r = t(8507), i = t(3788), a = t(2419);
                      p.exports = l;
                      function l(o) {
                        o.sort(i);
                        for (var y = o.length, g = 0, x = 0; x < y; ++x) {
                          var c = o[x], v = a(c);
                          if (v !== 0) {
                            if (g > 0) {
                              var f = o[g - 1];
                              if (r(c, f) === 0 && a(f) !== v) {
                                g -= 1;
                                continue;
                              }
                            }
                            o[g++] = c;
                          }
                        }
                        return o.length = g, o;
                      }
                    }
                  ),
                  /***/
                  3233: (
                    /***/
                    function(p) {
                      /*!
                      * repeat-string <https://github.com/jonschlinkert/repeat-string>
                      *
                      * Copyright (c) 2014-2015, Jon Schlinkert.
                      * Licensed under the MIT License.
                      */
                      var u = "", t;
                      p.exports = r;
                      function r(i, a) {
                        if (typeof i != "string")
                          throw new TypeError("expected a string");
                        if (a === 1) return i;
                        if (a === 2) return i + i;
                        var l = i.length * a;
                        if (t !== i || typeof t > "u")
                          t = i, u = "";
                        else if (u.length >= l)
                          return u.substr(0, l);
                        for (; l > u.length && a > 1; )
                          a & 1 && (u += i), a >>= 1, i += i;
                        return u += i, u = u.substr(0, l), u;
                      }
                    }
                  ),
                  /***/
                  3025: (
                    /***/
                    function(p, u, t) {
                      p.exports = t.g.performance && t.g.performance.now ? function() {
                        return performance.now();
                      } : Date.now || function() {
                        return +/* @__PURE__ */ new Date();
                      };
                    }
                  ),
                  /***/
                  7004: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t) {
                        for (var r = t.length, i = t[t.length - 1], a = r, l = r - 2; l >= 0; --l) {
                          var o = i, y = t[l];
                          i = o + y;
                          var g = i - o, x = y - g;
                          x && (t[--a] = i, i = x);
                        }
                        for (var c = 0, l = a; l < r; ++l) {
                          var o = t[l], y = i;
                          i = o + y;
                          var g = i - o, x = y - g;
                          x && (t[c++] = x);
                        }
                        return t[c++] = i, t.length = c, t;
                      }
                    }
                  ),
                  /***/
                  2962: (
                    /***/
                    function(p, u, t) {
                      var r = t(5250), i = t(8210), a = t(3012), l = t(7004), o = 6;
                      function y(M, C, m, L) {
                        return function(h) {
                          return L(M(m(h[0][0], h[1][1]), m(-h[0][1], h[1][0])));
                        };
                      }
                      function g(M, C, m, L) {
                        return function(h) {
                          return L(M(C(M(m(h[1][1], h[2][2]), m(-h[1][2], h[2][1])), h[0][0]), M(C(M(m(h[1][0], h[2][2]), m(-h[1][2], h[2][0])), -h[0][1]), C(M(m(h[1][0], h[2][1]), m(-h[1][1], h[2][0])), h[0][2]))));
                        };
                      }
                      function x(M, C, m, L) {
                        return function(h) {
                          return L(M(M(C(M(C(M(m(h[2][2], h[3][3]), m(-h[2][3], h[3][2])), h[1][1]), M(C(M(m(h[2][1], h[3][3]), m(-h[2][3], h[3][1])), -h[1][2]), C(M(m(h[2][1], h[3][2]), m(-h[2][2], h[3][1])), h[1][3]))), h[0][0]), C(M(C(M(m(h[2][2], h[3][3]), m(-h[2][3], h[3][2])), h[1][0]), M(C(M(m(h[2][0], h[3][3]), m(-h[2][3], h[3][0])), -h[1][2]), C(M(m(h[2][0], h[3][2]), m(-h[2][2], h[3][0])), h[1][3]))), -h[0][1])), M(C(M(C(M(m(h[2][1], h[3][3]), m(-h[2][3], h[3][1])), h[1][0]), M(C(M(m(h[2][0], h[3][3]), m(-h[2][3], h[3][0])), -h[1][1]), C(M(m(h[2][0], h[3][1]), m(-h[2][1], h[3][0])), h[1][3]))), h[0][2]), C(M(C(M(m(h[2][1], h[3][2]), m(-h[2][2], h[3][1])), h[1][0]), M(C(M(m(h[2][0], h[3][2]), m(-h[2][2], h[3][0])), -h[1][1]), C(M(m(h[2][0], h[3][1]), m(-h[2][1], h[3][0])), h[1][2]))), -h[0][3]))));
                        };
                      }
                      function c(M, C, m, L) {
                        return function(h) {
                          return L(M(M(C(M(M(C(M(C(M(m(h[3][3], h[4][4]), m(-h[3][4], h[4][3])), h[2][2]), M(C(M(m(h[3][2], h[4][4]), m(-h[3][4], h[4][2])), -h[2][3]), C(M(m(h[3][2], h[4][3]), m(-h[3][3], h[4][2])), h[2][4]))), h[1][1]), C(M(C(M(m(h[3][3], h[4][4]), m(-h[3][4], h[4][3])), h[2][1]), M(C(M(m(h[3][1], h[4][4]), m(-h[3][4], h[4][1])), -h[2][3]), C(M(m(h[3][1], h[4][3]), m(-h[3][3], h[4][1])), h[2][4]))), -h[1][2])), M(C(M(C(M(m(h[3][2], h[4][4]), m(-h[3][4], h[4][2])), h[2][1]), M(C(M(m(h[3][1], h[4][4]), m(-h[3][4], h[4][1])), -h[2][2]), C(M(m(h[3][1], h[4][2]), m(-h[3][2], h[4][1])), h[2][4]))), h[1][3]), C(M(C(M(m(h[3][2], h[4][3]), m(-h[3][3], h[4][2])), h[2][1]), M(C(M(m(h[3][1], h[4][3]), m(-h[3][3], h[4][1])), -h[2][2]), C(M(m(h[3][1], h[4][2]), m(-h[3][2], h[4][1])), h[2][3]))), -h[1][4]))), h[0][0]), C(M(M(C(M(C(M(m(h[3][3], h[4][4]), m(-h[3][4], h[4][3])), h[2][2]), M(C(M(m(h[3][2], h[4][4]), m(-h[3][4], h[4][2])), -h[2][3]), C(M(m(h[3][2], h[4][3]), m(-h[3][3], h[4][2])), h[2][4]))), h[1][0]), C(M(C(M(m(h[3][3], h[4][4]), m(-h[3][4], h[4][3])), h[2][0]), M(C(M(m(h[3][0], h[4][4]), m(-h[3][4], h[4][0])), -h[2][3]), C(M(m(h[3][0], h[4][3]), m(-h[3][3], h[4][0])), h[2][4]))), -h[1][2])), M(C(M(C(M(m(h[3][2], h[4][4]), m(-h[3][4], h[4][2])), h[2][0]), M(C(M(m(h[3][0], h[4][4]), m(-h[3][4], h[4][0])), -h[2][2]), C(M(m(h[3][0], h[4][2]), m(-h[3][2], h[4][0])), h[2][4]))), h[1][3]), C(M(C(M(m(h[3][2], h[4][3]), m(-h[3][3], h[4][2])), h[2][0]), M(C(M(m(h[3][0], h[4][3]), m(-h[3][3], h[4][0])), -h[2][2]), C(M(m(h[3][0], h[4][2]), m(-h[3][2], h[4][0])), h[2][3]))), -h[1][4]))), -h[0][1])), M(C(M(M(C(M(C(M(m(h[3][3], h[4][4]), m(-h[3][4], h[4][3])), h[2][1]), M(C(M(m(h[3][1], h[4][4]), m(-h[3][4], h[4][1])), -h[2][3]), C(M(m(h[3][1], h[4][3]), m(-h[3][3], h[4][1])), h[2][4]))), h[1][0]), C(M(C(M(m(h[3][3], h[4][4]), m(-h[3][4], h[4][3])), h[2][0]), M(C(M(m(h[3][0], h[4][4]), m(-h[3][4], h[4][0])), -h[2][3]), C(M(m(h[3][0], h[4][3]), m(-h[3][3], h[4][0])), h[2][4]))), -h[1][1])), M(C(M(C(M(m(h[3][1], h[4][4]), m(-h[3][4], h[4][1])), h[2][0]), M(C(M(m(h[3][0], h[4][4]), m(-h[3][4], h[4][0])), -h[2][1]), C(M(m(h[3][0], h[4][1]), m(-h[3][1], h[4][0])), h[2][4]))), h[1][3]), C(M(C(M(m(h[3][1], h[4][3]), m(-h[3][3], h[4][1])), h[2][0]), M(C(M(m(h[3][0], h[4][3]), m(-h[3][3], h[4][0])), -h[2][1]), C(M(m(h[3][0], h[4][1]), m(-h[3][1], h[4][0])), h[2][3]))), -h[1][4]))), h[0][2]), M(C(M(M(C(M(C(M(m(h[3][2], h[4][4]), m(-h[3][4], h[4][2])), h[2][1]), M(C(M(m(h[3][1], h[4][4]), m(-h[3][4], h[4][1])), -h[2][2]), C(M(m(h[3][1], h[4][2]), m(-h[3][2], h[4][1])), h[2][4]))), h[1][0]), C(M(C(M(m(h[3][2], h[4][4]), m(-h[3][4], h[4][2])), h[2][0]), M(C(M(m(h[3][0], h[4][4]), m(-h[3][4], h[4][0])), -h[2][2]), C(M(m(h[3][0], h[4][2]), m(-h[3][2], h[4][0])), h[2][4]))), -h[1][1])), M(C(M(C(M(m(h[3][1], h[4][4]), m(-h[3][4], h[4][1])), h[2][0]), M(C(M(m(h[3][0], h[4][4]), m(-h[3][4], h[4][0])), -h[2][1]), C(M(m(h[3][0], h[4][1]), m(-h[3][1], h[4][0])), h[2][4]))), h[1][2]), C(M(C(M(m(h[3][1], h[4][2]), m(-h[3][2], h[4][1])), h[2][0]), M(C(M(m(h[3][0], h[4][2]), m(-h[3][2], h[4][0])), -h[2][1]), C(M(m(h[3][0], h[4][1]), m(-h[3][1], h[4][0])), h[2][2]))), -h[1][4]))), -h[0][3]), C(M(M(C(M(C(M(m(h[3][2], h[4][3]), m(-h[3][3], h[4][2])), h[2][1]), M(C(M(m(h[3][1], h[4][3]), m(-h[3][3], h[4][1])), -h[2][2]), C(M(m(h[3][1], h[4][2]), m(-h[3][2], h[4][1])), h[2][3]))), h[1][0]), C(M(C(M(m(h[3][2], h[4][3]), m(-h[3][3], h[4][2])), h[2][0]), M(C(M(m(h[3][0], h[4][3]), m(-h[3][3], h[4][0])), -h[2][2]), C(M(m(h[3][0], h[4][2]), m(-h[3][2], h[4][0])), h[2][3]))), -h[1][1])), M(C(M(C(M(m(h[3][1], h[4][3]), m(-h[3][3], h[4][1])), h[2][0]), M(C(M(m(h[3][0], h[4][3]), m(-h[3][3], h[4][0])), -h[2][1]), C(M(m(h[3][0], h[4][1]), m(-h[3][1], h[4][0])), h[2][3]))), h[1][2]), C(M(C(M(m(h[3][1], h[4][2]), m(-h[3][2], h[4][1])), h[2][0]), M(C(M(m(h[3][0], h[4][2]), m(-h[3][2], h[4][0])), -h[2][1]), C(M(m(h[3][0], h[4][1]), m(-h[3][1], h[4][0])), h[2][2]))), -h[1][3]))), h[0][4])))));
                        };
                      }
                      function v(M) {
                        var C = M === 2 ? y : M === 3 ? g : M === 4 ? x : M === 5 ? c : void 0;
                        return C(i, a, r, l);
                      }
                      var f = [function() {
                        return [0];
                      }, function(C) {
                        return [C[0][0]];
                      }];
                      function _(M, C, m, L, d, h, E, w) {
                        return function(O) {
                          switch (O.length) {
                            case 0:
                              return M(O);
                            case 1:
                              return C(O);
                            case 2:
                              return m(O);
                            case 3:
                              return L(O);
                            case 4:
                              return d(O);
                            case 5:
                              return h(O);
                          }
                          var B = E[O.length];
                          return B || (B = E[O.length] = w(O.length)), B(O);
                        };
                      }
                      function S() {
                        for (; f.length < o; )
                          f.push(v(f.length));
                        p.exports = _.apply(void 0, f.concat([f, v]));
                        for (var M = 0; M < f.length; ++M)
                          p.exports[M] = f[M];
                      }
                      S();
                    }
                  ),
                  /***/
                  1944: (
                    /***/
                    function(p, u, t) {
                      var r = t(5250), i = t(8210);
                      p.exports = a;
                      function a(l, o) {
                        for (var y = r(l[0], o[0]), g = 1; g < l.length; ++g)
                          y = i(y, r(l[g], o[g]));
                        return y;
                      }
                    }
                  ),
                  /***/
                  2646: (
                    /***/
                    function(p, u, t) {
                      var r = t(5250), i = t(8210), a = t(8545), l = t(3012), o = 6;
                      function y(d) {
                        var h = d === 3 ? v : d === 4 ? f : d === 5 ? _ : S;
                        return h(i, a, r, l);
                      }
                      function g() {
                        return 0;
                      }
                      function x() {
                        return 0;
                      }
                      function c() {
                        return 0;
                      }
                      function v(d, h, E, w) {
                        function z(O, B, V) {
                          var U = E(O[0], O[0]), H = w(U, B[0]), F = w(U, V[0]), G = E(B[0], B[0]), q = w(G, O[0]), rt = w(G, V[0]), st = E(V[0], V[0]), vt = w(st, O[0]), ht = w(st, B[0]), et = d(h(ht, rt), h(q, H)), Q = h(vt, F), j = h(et, Q);
                          return j[j.length - 1];
                        }
                        return z;
                      }
                      function f(d, h, E, w) {
                        function z(O, B, V, U) {
                          var H = d(E(O[0], O[0]), E(O[1], O[1])), F = w(H, B[0]), G = w(H, V[0]), q = w(H, U[0]), rt = d(E(B[0], B[0]), E(B[1], B[1])), st = w(rt, O[0]), vt = w(rt, V[0]), ht = w(rt, U[0]), et = d(E(V[0], V[0]), E(V[1], V[1])), Q = w(et, O[0]), j = w(et, B[0]), at = w(et, U[0]), ut = d(E(U[0], U[0]), E(U[1], U[1])), nt = w(ut, O[0]), X = w(ut, B[0]), ct = w(ut, V[0]), lt = d(d(w(h(ct, at), B[1]), d(w(h(X, ht), -V[1]), w(h(j, vt), U[1]))), d(w(h(X, ht), O[1]), d(w(h(nt, q), -B[1]), w(h(st, F), U[1])))), pt = d(d(w(h(ct, at), O[1]), d(w(h(nt, q), -V[1]), w(h(Q, G), U[1]))), d(w(h(j, vt), O[1]), d(w(h(Q, G), -B[1]), w(h(st, F), V[1])))), wt = h(lt, pt);
                          return wt[wt.length - 1];
                        }
                        return z;
                      }
                      function _(d, h, E, w) {
                        function z(O, B, V, U, H) {
                          var F = d(E(O[0], O[0]), d(E(O[1], O[1]), E(O[2], O[2]))), G = w(F, B[0]), q = w(F, V[0]), rt = w(F, U[0]), st = w(F, H[0]), vt = d(E(B[0], B[0]), d(E(B[1], B[1]), E(B[2], B[2]))), ht = w(vt, O[0]), et = w(vt, V[0]), Q = w(vt, U[0]), j = w(vt, H[0]), at = d(E(V[0], V[0]), d(E(V[1], V[1]), E(V[2], V[2]))), ut = w(at, O[0]), nt = w(at, B[0]), X = w(at, U[0]), ct = w(at, H[0]), lt = d(E(U[0], U[0]), d(E(U[1], U[1]), E(U[2], U[2]))), pt = w(lt, O[0]), wt = w(lt, B[0]), Et = w(lt, V[0]), Ct = w(lt, H[0]), Gt = d(E(H[0], H[0]), d(E(H[1], H[1]), E(H[2], H[2]))), Jt = w(Gt, O[0]), Qt = w(Gt, B[0]), Vt = w(Gt, V[0]), zt = w(Gt, U[0]), Rt = d(d(d(w(d(w(h(zt, Ct), V[1]), d(w(h(Vt, ct), -U[1]), w(h(Et, X), H[1]))), B[2]), d(w(d(w(h(zt, Ct), B[1]), d(w(h(Qt, j), -U[1]), w(h(wt, Q), H[1]))), -V[2]), w(d(w(h(Vt, ct), B[1]), d(w(h(Qt, j), -V[1]), w(h(nt, et), H[1]))), U[2]))), d(w(d(w(h(Et, X), B[1]), d(w(h(wt, Q), -V[1]), w(h(nt, et), U[1]))), -H[2]), d(w(d(w(h(zt, Ct), B[1]), d(w(h(Qt, j), -U[1]), w(h(wt, Q), H[1]))), O[2]), w(d(w(h(zt, Ct), O[1]), d(w(h(Jt, st), -U[1]), w(h(pt, rt), H[1]))), -B[2])))), d(d(w(d(w(h(Qt, j), O[1]), d(w(h(Jt, st), -B[1]), w(h(ht, G), H[1]))), U[2]), d(w(d(w(h(wt, Q), O[1]), d(w(h(pt, rt), -B[1]), w(h(ht, G), U[1]))), -H[2]), w(d(w(h(Et, X), B[1]), d(w(h(wt, Q), -V[1]), w(h(nt, et), U[1]))), O[2]))), d(w(d(w(h(Et, X), O[1]), d(w(h(pt, rt), -V[1]), w(h(ut, q), U[1]))), -B[2]), d(w(d(w(h(wt, Q), O[1]), d(w(h(pt, rt), -B[1]), w(h(ht, G), U[1]))), V[2]), w(d(w(h(nt, et), O[1]), d(w(h(ut, q), -B[1]), w(h(ht, G), V[1]))), -U[2]))))), Wt = d(d(d(w(d(w(h(zt, Ct), V[1]), d(w(h(Vt, ct), -U[1]), w(h(Et, X), H[1]))), O[2]), w(d(w(h(zt, Ct), O[1]), d(w(h(Jt, st), -U[1]), w(h(pt, rt), H[1]))), -V[2])), d(w(d(w(h(Vt, ct), O[1]), d(w(h(Jt, st), -V[1]), w(h(ut, q), H[1]))), U[2]), w(d(w(h(Et, X), O[1]), d(w(h(pt, rt), -V[1]), w(h(ut, q), U[1]))), -H[2]))), d(d(w(d(w(h(Vt, ct), B[1]), d(w(h(Qt, j), -V[1]), w(h(nt, et), H[1]))), O[2]), w(d(w(h(Vt, ct), O[1]), d(w(h(Jt, st), -V[1]), w(h(ut, q), H[1]))), -B[2])), d(w(d(w(h(Qt, j), O[1]), d(w(h(Jt, st), -B[1]), w(h(ht, G), H[1]))), V[2]), w(d(w(h(nt, et), O[1]), d(w(h(ut, q), -B[1]), w(h(ht, G), V[1]))), -H[2])))), kt = h(Rt, Wt);
                          return kt[kt.length - 1];
                        }
                        return z;
                      }
                      function S(d, h, E, w) {
                        function z(O, B, V, U, H, F) {
                          var G = d(d(E(O[0], O[0]), E(O[1], O[1])), d(E(O[2], O[2]), E(O[3], O[3]))), q = w(G, B[0]), rt = w(G, V[0]), st = w(G, U[0]), vt = w(G, H[0]), ht = w(G, F[0]), et = d(d(E(B[0], B[0]), E(B[1], B[1])), d(E(B[2], B[2]), E(B[3], B[3]))), Q = w(et, O[0]), j = w(et, V[0]), at = w(et, U[0]), ut = w(et, H[0]), nt = w(et, F[0]), X = d(d(E(V[0], V[0]), E(V[1], V[1])), d(E(V[2], V[2]), E(V[3], V[3]))), ct = w(X, O[0]), lt = w(X, B[0]), pt = w(X, U[0]), wt = w(X, H[0]), Et = w(X, F[0]), Ct = d(d(E(U[0], U[0]), E(U[1], U[1])), d(E(U[2], U[2]), E(U[3], U[3]))), Gt = w(Ct, O[0]), Jt = w(Ct, B[0]), Qt = w(Ct, V[0]), Vt = w(Ct, H[0]), zt = w(Ct, F[0]), Rt = d(d(E(H[0], H[0]), E(H[1], H[1])), d(E(H[2], H[2]), E(H[3], H[3]))), Wt = w(Rt, O[0]), kt = w(Rt, B[0]), re = w(Rt, V[0]), ge = w(Rt, U[0]), _e = w(Rt, F[0]), ce = d(d(E(F[0], F[0]), E(F[1], F[1])), d(E(F[2], F[2]), E(F[3], F[3]))), ae = w(ce, O[0]), Se = w(ce, B[0]), ze = w(ce, V[0]), Ne = w(ce, U[0]), Ve = w(ce, H[0]), Oe = d(d(d(w(d(d(w(d(w(h(Ve, _e), U[1]), d(w(h(Ne, zt), -H[1]), w(h(ge, Vt), F[1]))), V[2]), w(d(w(h(Ve, _e), V[1]), d(w(h(ze, Et), -H[1]), w(h(re, wt), F[1]))), -U[2])), d(w(d(w(h(Ne, zt), V[1]), d(w(h(ze, Et), -U[1]), w(h(Qt, pt), F[1]))), H[2]), w(d(w(h(ge, Vt), V[1]), d(w(h(re, wt), -U[1]), w(h(Qt, pt), H[1]))), -F[2]))), B[3]), d(w(d(d(w(d(w(h(Ve, _e), U[1]), d(w(h(Ne, zt), -H[1]), w(h(ge, Vt), F[1]))), B[2]), w(d(w(h(Ve, _e), B[1]), d(w(h(Se, nt), -H[1]), w(h(kt, ut), F[1]))), -U[2])), d(w(d(w(h(Ne, zt), B[1]), d(w(h(Se, nt), -U[1]), w(h(Jt, at), F[1]))), H[2]), w(d(w(h(ge, Vt), B[1]), d(w(h(kt, ut), -U[1]), w(h(Jt, at), H[1]))), -F[2]))), -V[3]), w(d(d(w(d(w(h(Ve, _e), V[1]), d(w(h(ze, Et), -H[1]), w(h(re, wt), F[1]))), B[2]), w(d(w(h(Ve, _e), B[1]), d(w(h(Se, nt), -H[1]), w(h(kt, ut), F[1]))), -V[2])), d(w(d(w(h(ze, Et), B[1]), d(w(h(Se, nt), -V[1]), w(h(lt, j), F[1]))), H[2]), w(d(w(h(re, wt), B[1]), d(w(h(kt, ut), -V[1]), w(h(lt, j), H[1]))), -F[2]))), U[3]))), d(d(w(d(d(w(d(w(h(Ne, zt), V[1]), d(w(h(ze, Et), -U[1]), w(h(Qt, pt), F[1]))), B[2]), w(d(w(h(Ne, zt), B[1]), d(w(h(Se, nt), -U[1]), w(h(Jt, at), F[1]))), -V[2])), d(w(d(w(h(ze, Et), B[1]), d(w(h(Se, nt), -V[1]), w(h(lt, j), F[1]))), U[2]), w(d(w(h(Qt, pt), B[1]), d(w(h(Jt, at), -V[1]), w(h(lt, j), U[1]))), -F[2]))), -H[3]), w(d(d(w(d(w(h(ge, Vt), V[1]), d(w(h(re, wt), -U[1]), w(h(Qt, pt), H[1]))), B[2]), w(d(w(h(ge, Vt), B[1]), d(w(h(kt, ut), -U[1]), w(h(Jt, at), H[1]))), -V[2])), d(w(d(w(h(re, wt), B[1]), d(w(h(kt, ut), -V[1]), w(h(lt, j), H[1]))), U[2]), w(d(w(h(Qt, pt), B[1]), d(w(h(Jt, at), -V[1]), w(h(lt, j), U[1]))), -H[2]))), F[3])), d(w(d(d(w(d(w(h(Ve, _e), U[1]), d(w(h(Ne, zt), -H[1]), w(h(ge, Vt), F[1]))), B[2]), w(d(w(h(Ve, _e), B[1]), d(w(h(Se, nt), -H[1]), w(h(kt, ut), F[1]))), -U[2])), d(w(d(w(h(Ne, zt), B[1]), d(w(h(Se, nt), -U[1]), w(h(Jt, at), F[1]))), H[2]), w(d(w(h(ge, Vt), B[1]), d(w(h(kt, ut), -U[1]), w(h(Jt, at), H[1]))), -F[2]))), O[3]), w(d(d(w(d(w(h(Ve, _e), U[1]), d(w(h(Ne, zt), -H[1]), w(h(ge, Vt), F[1]))), O[2]), w(d(w(h(Ve, _e), O[1]), d(w(h(ae, ht), -H[1]), w(h(Wt, vt), F[1]))), -U[2])), d(w(d(w(h(Ne, zt), O[1]), d(w(h(ae, ht), -U[1]), w(h(Gt, st), F[1]))), H[2]), w(d(w(h(ge, Vt), O[1]), d(w(h(Wt, vt), -U[1]), w(h(Gt, st), H[1]))), -F[2]))), -B[3])))), d(d(d(w(d(d(w(d(w(h(Ve, _e), B[1]), d(w(h(Se, nt), -H[1]), w(h(kt, ut), F[1]))), O[2]), w(d(w(h(Ve, _e), O[1]), d(w(h(ae, ht), -H[1]), w(h(Wt, vt), F[1]))), -B[2])), d(w(d(w(h(Se, nt), O[1]), d(w(h(ae, ht), -B[1]), w(h(Q, q), F[1]))), H[2]), w(d(w(h(kt, ut), O[1]), d(w(h(Wt, vt), -B[1]), w(h(Q, q), H[1]))), -F[2]))), U[3]), w(d(d(w(d(w(h(Ne, zt), B[1]), d(w(h(Se, nt), -U[1]), w(h(Jt, at), F[1]))), O[2]), w(d(w(h(Ne, zt), O[1]), d(w(h(ae, ht), -U[1]), w(h(Gt, st), F[1]))), -B[2])), d(w(d(w(h(Se, nt), O[1]), d(w(h(ae, ht), -B[1]), w(h(Q, q), F[1]))), U[2]), w(d(w(h(Jt, at), O[1]), d(w(h(Gt, st), -B[1]), w(h(Q, q), U[1]))), -F[2]))), -H[3])), d(w(d(d(w(d(w(h(ge, Vt), B[1]), d(w(h(kt, ut), -U[1]), w(h(Jt, at), H[1]))), O[2]), w(d(w(h(ge, Vt), O[1]), d(w(h(Wt, vt), -U[1]), w(h(Gt, st), H[1]))), -B[2])), d(w(d(w(h(kt, ut), O[1]), d(w(h(Wt, vt), -B[1]), w(h(Q, q), H[1]))), U[2]), w(d(w(h(Jt, at), O[1]), d(w(h(Gt, st), -B[1]), w(h(Q, q), U[1]))), -H[2]))), F[3]), w(d(d(w(d(w(h(Ne, zt), V[1]), d(w(h(ze, Et), -U[1]), w(h(Qt, pt), F[1]))), B[2]), w(d(w(h(Ne, zt), B[1]), d(w(h(Se, nt), -U[1]), w(h(Jt, at), F[1]))), -V[2])), d(w(d(w(h(ze, Et), B[1]), d(w(h(Se, nt), -V[1]), w(h(lt, j), F[1]))), U[2]), w(d(w(h(Qt, pt), B[1]), d(w(h(Jt, at), -V[1]), w(h(lt, j), U[1]))), -F[2]))), O[3]))), d(d(w(d(d(w(d(w(h(Ne, zt), V[1]), d(w(h(ze, Et), -U[1]), w(h(Qt, pt), F[1]))), O[2]), w(d(w(h(Ne, zt), O[1]), d(w(h(ae, ht), -U[1]), w(h(Gt, st), F[1]))), -V[2])), d(w(d(w(h(ze, Et), O[1]), d(w(h(ae, ht), -V[1]), w(h(ct, rt), F[1]))), U[2]), w(d(w(h(Qt, pt), O[1]), d(w(h(Gt, st), -V[1]), w(h(ct, rt), U[1]))), -F[2]))), -B[3]), w(d(d(w(d(w(h(Ne, zt), B[1]), d(w(h(Se, nt), -U[1]), w(h(Jt, at), F[1]))), O[2]), w(d(w(h(Ne, zt), O[1]), d(w(h(ae, ht), -U[1]), w(h(Gt, st), F[1]))), -B[2])), d(w(d(w(h(Se, nt), O[1]), d(w(h(ae, ht), -B[1]), w(h(Q, q), F[1]))), U[2]), w(d(w(h(Jt, at), O[1]), d(w(h(Gt, st), -B[1]), w(h(Q, q), U[1]))), -F[2]))), V[3])), d(w(d(d(w(d(w(h(ze, Et), B[1]), d(w(h(Se, nt), -V[1]), w(h(lt, j), F[1]))), O[2]), w(d(w(h(ze, Et), O[1]), d(w(h(ae, ht), -V[1]), w(h(ct, rt), F[1]))), -B[2])), d(w(d(w(h(Se, nt), O[1]), d(w(h(ae, ht), -B[1]), w(h(Q, q), F[1]))), V[2]), w(d(w(h(lt, j), O[1]), d(w(h(ct, rt), -B[1]), w(h(Q, q), V[1]))), -F[2]))), -U[3]), w(d(d(w(d(w(h(Qt, pt), B[1]), d(w(h(Jt, at), -V[1]), w(h(lt, j), U[1]))), O[2]), w(d(w(h(Qt, pt), O[1]), d(w(h(Gt, st), -V[1]), w(h(ct, rt), U[1]))), -B[2])), d(w(d(w(h(Jt, at), O[1]), d(w(h(Gt, st), -B[1]), w(h(Q, q), U[1]))), V[2]), w(d(w(h(lt, j), O[1]), d(w(h(ct, rt), -B[1]), w(h(Q, q), V[1]))), -U[2]))), F[3]))))), ur = d(d(d(w(d(d(w(d(w(h(Ve, _e), U[1]), d(w(h(Ne, zt), -H[1]), w(h(ge, Vt), F[1]))), V[2]), w(d(w(h(Ve, _e), V[1]), d(w(h(ze, Et), -H[1]), w(h(re, wt), F[1]))), -U[2])), d(w(d(w(h(Ne, zt), V[1]), d(w(h(ze, Et), -U[1]), w(h(Qt, pt), F[1]))), H[2]), w(d(w(h(ge, Vt), V[1]), d(w(h(re, wt), -U[1]), w(h(Qt, pt), H[1]))), -F[2]))), O[3]), d(w(d(d(w(d(w(h(Ve, _e), U[1]), d(w(h(Ne, zt), -H[1]), w(h(ge, Vt), F[1]))), O[2]), w(d(w(h(Ve, _e), O[1]), d(w(h(ae, ht), -H[1]), w(h(Wt, vt), F[1]))), -U[2])), d(w(d(w(h(Ne, zt), O[1]), d(w(h(ae, ht), -U[1]), w(h(Gt, st), F[1]))), H[2]), w(d(w(h(ge, Vt), O[1]), d(w(h(Wt, vt), -U[1]), w(h(Gt, st), H[1]))), -F[2]))), -V[3]), w(d(d(w(d(w(h(Ve, _e), V[1]), d(w(h(ze, Et), -H[1]), w(h(re, wt), F[1]))), O[2]), w(d(w(h(Ve, _e), O[1]), d(w(h(ae, ht), -H[1]), w(h(Wt, vt), F[1]))), -V[2])), d(w(d(w(h(ze, Et), O[1]), d(w(h(ae, ht), -V[1]), w(h(ct, rt), F[1]))), H[2]), w(d(w(h(re, wt), O[1]), d(w(h(Wt, vt), -V[1]), w(h(ct, rt), H[1]))), -F[2]))), U[3]))), d(d(w(d(d(w(d(w(h(Ne, zt), V[1]), d(w(h(ze, Et), -U[1]), w(h(Qt, pt), F[1]))), O[2]), w(d(w(h(Ne, zt), O[1]), d(w(h(ae, ht), -U[1]), w(h(Gt, st), F[1]))), -V[2])), d(w(d(w(h(ze, Et), O[1]), d(w(h(ae, ht), -V[1]), w(h(ct, rt), F[1]))), U[2]), w(d(w(h(Qt, pt), O[1]), d(w(h(Gt, st), -V[1]), w(h(ct, rt), U[1]))), -F[2]))), -H[3]), w(d(d(w(d(w(h(ge, Vt), V[1]), d(w(h(re, wt), -U[1]), w(h(Qt, pt), H[1]))), O[2]), w(d(w(h(ge, Vt), O[1]), d(w(h(Wt, vt), -U[1]), w(h(Gt, st), H[1]))), -V[2])), d(w(d(w(h(re, wt), O[1]), d(w(h(Wt, vt), -V[1]), w(h(ct, rt), H[1]))), U[2]), w(d(w(h(Qt, pt), O[1]), d(w(h(Gt, st), -V[1]), w(h(ct, rt), U[1]))), -H[2]))), F[3])), d(w(d(d(w(d(w(h(Ve, _e), V[1]), d(w(h(ze, Et), -H[1]), w(h(re, wt), F[1]))), B[2]), w(d(w(h(Ve, _e), B[1]), d(w(h(Se, nt), -H[1]), w(h(kt, ut), F[1]))), -V[2])), d(w(d(w(h(ze, Et), B[1]), d(w(h(Se, nt), -V[1]), w(h(lt, j), F[1]))), H[2]), w(d(w(h(re, wt), B[1]), d(w(h(kt, ut), -V[1]), w(h(lt, j), H[1]))), -F[2]))), O[3]), w(d(d(w(d(w(h(Ve, _e), V[1]), d(w(h(ze, Et), -H[1]), w(h(re, wt), F[1]))), O[2]), w(d(w(h(Ve, _e), O[1]), d(w(h(ae, ht), -H[1]), w(h(Wt, vt), F[1]))), -V[2])), d(w(d(w(h(ze, Et), O[1]), d(w(h(ae, ht), -V[1]), w(h(ct, rt), F[1]))), H[2]), w(d(w(h(re, wt), O[1]), d(w(h(Wt, vt), -V[1]), w(h(ct, rt), H[1]))), -F[2]))), -B[3])))), d(d(d(w(d(d(w(d(w(h(Ve, _e), B[1]), d(w(h(Se, nt), -H[1]), w(h(kt, ut), F[1]))), O[2]), w(d(w(h(Ve, _e), O[1]), d(w(h(ae, ht), -H[1]), w(h(Wt, vt), F[1]))), -B[2])), d(w(d(w(h(Se, nt), O[1]), d(w(h(ae, ht), -B[1]), w(h(Q, q), F[1]))), H[2]), w(d(w(h(kt, ut), O[1]), d(w(h(Wt, vt), -B[1]), w(h(Q, q), H[1]))), -F[2]))), V[3]), w(d(d(w(d(w(h(ze, Et), B[1]), d(w(h(Se, nt), -V[1]), w(h(lt, j), F[1]))), O[2]), w(d(w(h(ze, Et), O[1]), d(w(h(ae, ht), -V[1]), w(h(ct, rt), F[1]))), -B[2])), d(w(d(w(h(Se, nt), O[1]), d(w(h(ae, ht), -B[1]), w(h(Q, q), F[1]))), V[2]), w(d(w(h(lt, j), O[1]), d(w(h(ct, rt), -B[1]), w(h(Q, q), V[1]))), -F[2]))), -H[3])), d(w(d(d(w(d(w(h(re, wt), B[1]), d(w(h(kt, ut), -V[1]), w(h(lt, j), H[1]))), O[2]), w(d(w(h(re, wt), O[1]), d(w(h(Wt, vt), -V[1]), w(h(ct, rt), H[1]))), -B[2])), d(w(d(w(h(kt, ut), O[1]), d(w(h(Wt, vt), -B[1]), w(h(Q, q), H[1]))), V[2]), w(d(w(h(lt, j), O[1]), d(w(h(ct, rt), -B[1]), w(h(Q, q), V[1]))), -H[2]))), F[3]), w(d(d(w(d(w(h(ge, Vt), V[1]), d(w(h(re, wt), -U[1]), w(h(Qt, pt), H[1]))), B[2]), w(d(w(h(ge, Vt), B[1]), d(w(h(kt, ut), -U[1]), w(h(Jt, at), H[1]))), -V[2])), d(w(d(w(h(re, wt), B[1]), d(w(h(kt, ut), -V[1]), w(h(lt, j), H[1]))), U[2]), w(d(w(h(Qt, pt), B[1]), d(w(h(Jt, at), -V[1]), w(h(lt, j), U[1]))), -H[2]))), O[3]))), d(d(w(d(d(w(d(w(h(ge, Vt), V[1]), d(w(h(re, wt), -U[1]), w(h(Qt, pt), H[1]))), O[2]), w(d(w(h(ge, Vt), O[1]), d(w(h(Wt, vt), -U[1]), w(h(Gt, st), H[1]))), -V[2])), d(w(d(w(h(re, wt), O[1]), d(w(h(Wt, vt), -V[1]), w(h(ct, rt), H[1]))), U[2]), w(d(w(h(Qt, pt), O[1]), d(w(h(Gt, st), -V[1]), w(h(ct, rt), U[1]))), -H[2]))), -B[3]), w(d(d(w(d(w(h(ge, Vt), B[1]), d(w(h(kt, ut), -U[1]), w(h(Jt, at), H[1]))), O[2]), w(d(w(h(ge, Vt), O[1]), d(w(h(Wt, vt), -U[1]), w(h(Gt, st), H[1]))), -B[2])), d(w(d(w(h(kt, ut), O[1]), d(w(h(Wt, vt), -B[1]), w(h(Q, q), H[1]))), U[2]), w(d(w(h(Jt, at), O[1]), d(w(h(Gt, st), -B[1]), w(h(Q, q), U[1]))), -H[2]))), V[3])), d(w(d(d(w(d(w(h(re, wt), B[1]), d(w(h(kt, ut), -V[1]), w(h(lt, j), H[1]))), O[2]), w(d(w(h(re, wt), O[1]), d(w(h(Wt, vt), -V[1]), w(h(ct, rt), H[1]))), -B[2])), d(w(d(w(h(kt, ut), O[1]), d(w(h(Wt, vt), -B[1]), w(h(Q, q), H[1]))), V[2]), w(d(w(h(lt, j), O[1]), d(w(h(ct, rt), -B[1]), w(h(Q, q), V[1]))), -H[2]))), -U[3]), w(d(d(w(d(w(h(Qt, pt), B[1]), d(w(h(Jt, at), -V[1]), w(h(lt, j), U[1]))), O[2]), w(d(w(h(Qt, pt), O[1]), d(w(h(Gt, st), -V[1]), w(h(ct, rt), U[1]))), -B[2])), d(w(d(w(h(Jt, at), O[1]), d(w(h(Gt, st), -B[1]), w(h(Q, q), U[1]))), V[2]), w(d(w(h(lt, j), O[1]), d(w(h(ct, rt), -B[1]), w(h(Q, q), V[1]))), -U[2]))), H[3]))))), ie = h(Oe, ur);
                          return ie[ie.length - 1];
                        }
                        return z;
                      }
                      var M = [g, x, c];
                      function C(d) {
                        var h = M[d.length];
                        return h || (h = M[d.length] = y(d.length)), h.apply(void 0, d);
                      }
                      function m(d, h, E, w, z, O, B, V) {
                        function U(H, F, G, q, rt, st) {
                          switch (arguments.length) {
                            case 0:
                            case 1:
                              return 0;
                            case 2:
                              return w(H, F);
                            case 3:
                              return z(H, F, G);
                            case 4:
                              return O(H, F, G, q);
                            case 5:
                              return B(H, F, G, q, rt);
                            case 6:
                              return V(H, F, G, q, rt, st);
                          }
                          for (var vt = new Array(arguments.length), ht = 0; ht < arguments.length; ++ht)
                            vt[ht] = arguments[ht];
                          return d(vt);
                        }
                        return U;
                      }
                      function L() {
                        for (; M.length <= o; )
                          M.push(y(M.length));
                        p.exports = m.apply(void 0, [C].concat(M));
                        for (var d = 0; d <= o; ++d)
                          p.exports[d] = M[d];
                      }
                      L();
                    }
                  ),
                  /***/
                  727: (
                    /***/
                    function(p, u, t) {
                      var r = t(2962), i = 6;
                      function a(M) {
                        var C = M === 2 ? y : M === 3 ? g : M === 4 ? x : M === 5 ? c : v;
                        return M < 6 ? C(r[M]) : C(r);
                      }
                      function l() {
                        return [[0]];
                      }
                      function o(M, C) {
                        return [[C[0]], [M[0][0]]];
                      }
                      function y(M) {
                        return function(m, L) {
                          return [M([[+L[0], +m[0][1]], [+L[1], +m[1][1]]]), M([[+m[0][0], +L[0]], [+m[1][0], +L[1]]]), M(m)];
                        };
                      }
                      function g(M) {
                        return function(m, L) {
                          return [M([[+L[0], +m[0][1], +m[0][2]], [+L[1], +m[1][1], +m[1][2]], [+L[2], +m[2][1], +m[2][2]]]), M([[+m[0][0], +L[0], +m[0][2]], [+m[1][0], +L[1], +m[1][2]], [+m[2][0], +L[2], +m[2][2]]]), M([[+m[0][0], +m[0][1], +L[0]], [+m[1][0], +m[1][1], +L[1]], [+m[2][0], +m[2][1], +L[2]]]), M(m)];
                        };
                      }
                      function x(M) {
                        return function(m, L) {
                          return [M([[+L[0], +m[0][1], +m[0][2], +m[0][3]], [+L[1], +m[1][1], +m[1][2], +m[1][3]], [+L[2], +m[2][1], +m[2][2], +m[2][3]], [+L[3], +m[3][1], +m[3][2], +m[3][3]]]), M([[+m[0][0], +L[0], +m[0][2], +m[0][3]], [+m[1][0], +L[1], +m[1][2], +m[1][3]], [+m[2][0], +L[2], +m[2][2], +m[2][3]], [+m[3][0], +L[3], +m[3][2], +m[3][3]]]), M([[+m[0][0], +m[0][1], +L[0], +m[0][3]], [+m[1][0], +m[1][1], +L[1], +m[1][3]], [+m[2][0], +m[2][1], +L[2], +m[2][3]], [+m[3][0], +m[3][1], +L[3], +m[3][3]]]), M([[+m[0][0], +m[0][1], +m[0][2], +L[0]], [+m[1][0], +m[1][1], +m[1][2], +L[1]], [+m[2][0], +m[2][1], +m[2][2], +L[2]], [+m[3][0], +m[3][1], +m[3][2], +L[3]]]), M(m)];
                        };
                      }
                      function c(M) {
                        return function(m, L) {
                          return [M([[+L[0], +m[0][1], +m[0][2], +m[0][3], +m[0][4]], [+L[1], +m[1][1], +m[1][2], +m[1][3], +m[1][4]], [+L[2], +m[2][1], +m[2][2], +m[2][3], +m[2][4]], [+L[3], +m[3][1], +m[3][2], +m[3][3], +m[3][4]], [+L[4], +m[4][1], +m[4][2], +m[4][3], +m[4][4]]]), M([[+m[0][0], +L[0], +m[0][2], +m[0][3], +m[0][4]], [+m[1][0], +L[1], +m[1][2], +m[1][3], +m[1][4]], [+m[2][0], +L[2], +m[2][2], +m[2][3], +m[2][4]], [+m[3][0], +L[3], +m[3][2], +m[3][3], +m[3][4]], [+m[4][0], +L[4], +m[4][2], +m[4][3], +m[4][4]]]), M([[+m[0][0], +m[0][1], +L[0], +m[0][3], +m[0][4]], [+m[1][0], +m[1][1], +L[1], +m[1][3], +m[1][4]], [+m[2][0], +m[2][1], +L[2], +m[2][3], +m[2][4]], [+m[3][0], +m[3][1], +L[3], +m[3][3], +m[3][4]], [+m[4][0], +m[4][1], +L[4], +m[4][3], +m[4][4]]]), M([[+m[0][0], +m[0][1], +m[0][2], +L[0], +m[0][4]], [+m[1][0], +m[1][1], +m[1][2], +L[1], +m[1][4]], [+m[2][0], +m[2][1], +m[2][2], +L[2], +m[2][4]], [+m[3][0], +m[3][1], +m[3][2], +L[3], +m[3][4]], [+m[4][0], +m[4][1], +m[4][2], +L[4], +m[4][4]]]), M([[+m[0][0], +m[0][1], +m[0][2], +m[0][3], +L[0]], [+m[1][0], +m[1][1], +m[1][2], +m[1][3], +L[1]], [+m[2][0], +m[2][1], +m[2][2], +m[2][3], +L[2]], [+m[3][0], +m[3][1], +m[3][2], +m[3][3], +L[3]], [+m[4][0], +m[4][1], +m[4][2], +m[4][3], +L[4]]]), M(m)];
                        };
                      }
                      function v(M) {
                        return function(m, L) {
                          return [M([[+L[0], +m[0][1], +m[0][2], +m[0][3], +m[0][4], +m[0][5]], [+L[1], +m[1][1], +m[1][2], +m[1][3], +m[1][4], +m[1][5]], [+L[2], +m[2][1], +m[2][2], +m[2][3], +m[2][4], +m[2][5]], [+L[3], +m[3][1], +m[3][2], +m[3][3], +m[3][4], +m[3][5]], [+L[4], +m[4][1], +m[4][2], +m[4][3], +m[4][4], +m[4][5]], [+L[5], +m[5][1], +m[5][2], +m[5][3], +m[5][4], +m[5][5]]]), M([[+m[0][0], +L[0], +m[0][2], +m[0][3], +m[0][4], +m[0][5]], [+m[1][0], +L[1], +m[1][2], +m[1][3], +m[1][4], +m[1][5]], [+m[2][0], +L[2], +m[2][2], +m[2][3], +m[2][4], +m[2][5]], [+m[3][0], +L[3], +m[3][2], +m[3][3], +m[3][4], +m[3][5]], [+m[4][0], +L[4], +m[4][2], +m[4][3], +m[4][4], +m[4][5]], [+m[5][0], +L[5], +m[5][2], +m[5][3], +m[5][4], +m[5][5]]]), M([[+m[0][0], +m[0][1], +L[0], +m[0][3], +m[0][4], +m[0][5]], [+m[1][0], +m[1][1], +L[1], +m[1][3], +m[1][4], +m[1][5]], [+m[2][0], +m[2][1], +L[2], +m[2][3], +m[2][4], +m[2][5]], [+m[3][0], +m[3][1], +L[3], +m[3][3], +m[3][4], +m[3][5]], [+m[4][0], +m[4][1], +L[4], +m[4][3], +m[4][4], +m[4][5]], [+m[5][0], +m[5][1], +L[5], +m[5][3], +m[5][4], +m[5][5]]]), M([[+m[0][0], +m[0][1], +m[0][2], +L[0], +m[0][4], +m[0][5]], [+m[1][0], +m[1][1], +m[1][2], +L[1], +m[1][4], +m[1][5]], [+m[2][0], +m[2][1], +m[2][2], +L[2], +m[2][4], +m[2][5]], [+m[3][0], +m[3][1], +m[3][2], +L[3], +m[3][4], +m[3][5]], [+m[4][0], +m[4][1], +m[4][2], +L[4], +m[4][4], +m[4][5]], [+m[5][0], +m[5][1], +m[5][2], +L[5], +m[5][4], +m[5][5]]]), M([[+m[0][0], +m[0][1], +m[0][2], +m[0][3], +L[0], +m[0][5]], [+m[1][0], +m[1][1], +m[1][2], +m[1][3], +L[1], +m[1][5]], [+m[2][0], +m[2][1], +m[2][2], +m[2][3], +L[2], +m[2][5]], [+m[3][0], +m[3][1], +m[3][2], +m[3][3], +L[3], +m[3][5]], [+m[4][0], +m[4][1], +m[4][2], +m[4][3], +L[4], +m[4][5]], [+m[5][0], +m[5][1], +m[5][2], +m[5][3], +L[5], +m[5][5]]]), M([[+m[0][0], +m[0][1], +m[0][2], +m[0][3], +m[0][4], +L[0]], [+m[1][0], +m[1][1], +m[1][2], +m[1][3], +m[1][4], +L[1]], [+m[2][0], +m[2][1], +m[2][2], +m[2][3], +m[2][4], +L[2]], [+m[3][0], +m[3][1], +m[3][2], +m[3][3], +m[3][4], +L[3]], [+m[4][0], +m[4][1], +m[4][2], +m[4][3], +m[4][4], +L[4]], [+m[5][0], +m[5][1], +m[5][2], +m[5][3], +m[5][4], +L[5]]]), M(m)];
                        };
                      }
                      var f = [l, o];
                      function _(M, C, m, L, d, h, E, w) {
                        return function(O, B) {
                          switch (O.length) {
                            case 0:
                              return M(O, B);
                            case 1:
                              return C(O, B);
                            case 2:
                              return m(O, B);
                            case 3:
                              return L(O, B);
                            case 4:
                              return d(O, B);
                            case 5:
                              return h(O, B);
                          }
                          var V = E[O.length];
                          return V || (V = E[O.length] = w(O.length)), V(O, B);
                        };
                      }
                      function S() {
                        for (; f.length < i; )
                          f.push(a(f.length));
                        p.exports = _.apply(void 0, f.concat([f, a]));
                        for (var M = 0; M < i; ++M)
                          p.exports[M] = f[M];
                      }
                      S();
                    }
                  ),
                  /***/
                  3250: (
                    /***/
                    function(p, u, t) {
                      var r = t(5250), i = t(8210), a = t(3012), l = t(8545), o = 5, y = 11102230246251565e-32, g = (3 + 16 * y) * y, x = (7 + 56 * y) * y;
                      function c(h, E, w, z) {
                        return function(B, V, U) {
                          var H = h(h(E(V[1], U[0]), E(-U[1], V[0])), h(E(B[1], V[0]), E(-V[1], B[0]))), F = h(E(B[1], U[0]), E(-U[1], B[0])), G = z(H, F);
                          return G[G.length - 1];
                        };
                      }
                      function v(h, E, w, z) {
                        return function(B, V, U, H) {
                          var F = h(h(w(h(E(U[1], H[0]), E(-H[1], U[0])), V[2]), h(w(h(E(V[1], H[0]), E(-H[1], V[0])), -U[2]), w(h(E(V[1], U[0]), E(-U[1], V[0])), H[2]))), h(w(h(E(V[1], H[0]), E(-H[1], V[0])), B[2]), h(w(h(E(B[1], H[0]), E(-H[1], B[0])), -V[2]), w(h(E(B[1], V[0]), E(-V[1], B[0])), H[2])))), G = h(h(w(h(E(U[1], H[0]), E(-H[1], U[0])), B[2]), h(w(h(E(B[1], H[0]), E(-H[1], B[0])), -U[2]), w(h(E(B[1], U[0]), E(-U[1], B[0])), H[2]))), h(w(h(E(V[1], U[0]), E(-U[1], V[0])), B[2]), h(w(h(E(B[1], U[0]), E(-U[1], B[0])), -V[2]), w(h(E(B[1], V[0]), E(-V[1], B[0])), U[2])))), q = z(F, G);
                          return q[q.length - 1];
                        };
                      }
                      function f(h, E, w, z) {
                        return function(B, V, U, H, F) {
                          var G = h(h(h(w(h(w(h(E(H[1], F[0]), E(-F[1], H[0])), U[2]), h(w(h(E(U[1], F[0]), E(-F[1], U[0])), -H[2]), w(h(E(U[1], H[0]), E(-H[1], U[0])), F[2]))), V[3]), h(w(h(w(h(E(H[1], F[0]), E(-F[1], H[0])), V[2]), h(w(h(E(V[1], F[0]), E(-F[1], V[0])), -H[2]), w(h(E(V[1], H[0]), E(-H[1], V[0])), F[2]))), -U[3]), w(h(w(h(E(U[1], F[0]), E(-F[1], U[0])), V[2]), h(w(h(E(V[1], F[0]), E(-F[1], V[0])), -U[2]), w(h(E(V[1], U[0]), E(-U[1], V[0])), F[2]))), H[3]))), h(w(h(w(h(E(U[1], H[0]), E(-H[1], U[0])), V[2]), h(w(h(E(V[1], H[0]), E(-H[1], V[0])), -U[2]), w(h(E(V[1], U[0]), E(-U[1], V[0])), H[2]))), -F[3]), h(w(h(w(h(E(H[1], F[0]), E(-F[1], H[0])), V[2]), h(w(h(E(V[1], F[0]), E(-F[1], V[0])), -H[2]), w(h(E(V[1], H[0]), E(-H[1], V[0])), F[2]))), B[3]), w(h(w(h(E(H[1], F[0]), E(-F[1], H[0])), B[2]), h(w(h(E(B[1], F[0]), E(-F[1], B[0])), -H[2]), w(h(E(B[1], H[0]), E(-H[1], B[0])), F[2]))), -V[3])))), h(h(w(h(w(h(E(V[1], F[0]), E(-F[1], V[0])), B[2]), h(w(h(E(B[1], F[0]), E(-F[1], B[0])), -V[2]), w(h(E(B[1], V[0]), E(-V[1], B[0])), F[2]))), H[3]), h(w(h(w(h(E(V[1], H[0]), E(-H[1], V[0])), B[2]), h(w(h(E(B[1], H[0]), E(-H[1], B[0])), -V[2]), w(h(E(B[1], V[0]), E(-V[1], B[0])), H[2]))), -F[3]), w(h(w(h(E(U[1], H[0]), E(-H[1], U[0])), V[2]), h(w(h(E(V[1], H[0]), E(-H[1], V[0])), -U[2]), w(h(E(V[1], U[0]), E(-U[1], V[0])), H[2]))), B[3]))), h(w(h(w(h(E(U[1], H[0]), E(-H[1], U[0])), B[2]), h(w(h(E(B[1], H[0]), E(-H[1], B[0])), -U[2]), w(h(E(B[1], U[0]), E(-U[1], B[0])), H[2]))), -V[3]), h(w(h(w(h(E(V[1], H[0]), E(-H[1], V[0])), B[2]), h(w(h(E(B[1], H[0]), E(-H[1], B[0])), -V[2]), w(h(E(B[1], V[0]), E(-V[1], B[0])), H[2]))), U[3]), w(h(w(h(E(V[1], U[0]), E(-U[1], V[0])), B[2]), h(w(h(E(B[1], U[0]), E(-U[1], B[0])), -V[2]), w(h(E(B[1], V[0]), E(-V[1], B[0])), U[2]))), -H[3]))))), q = h(h(h(w(h(w(h(E(H[1], F[0]), E(-F[1], H[0])), U[2]), h(w(h(E(U[1], F[0]), E(-F[1], U[0])), -H[2]), w(h(E(U[1], H[0]), E(-H[1], U[0])), F[2]))), B[3]), w(h(w(h(E(H[1], F[0]), E(-F[1], H[0])), B[2]), h(w(h(E(B[1], F[0]), E(-F[1], B[0])), -H[2]), w(h(E(B[1], H[0]), E(-H[1], B[0])), F[2]))), -U[3])), h(w(h(w(h(E(U[1], F[0]), E(-F[1], U[0])), B[2]), h(w(h(E(B[1], F[0]), E(-F[1], B[0])), -U[2]), w(h(E(B[1], U[0]), E(-U[1], B[0])), F[2]))), H[3]), w(h(w(h(E(U[1], H[0]), E(-H[1], U[0])), B[2]), h(w(h(E(B[1], H[0]), E(-H[1], B[0])), -U[2]), w(h(E(B[1], U[0]), E(-U[1], B[0])), H[2]))), -F[3]))), h(h(w(h(w(h(E(U[1], F[0]), E(-F[1], U[0])), V[2]), h(w(h(E(V[1], F[0]), E(-F[1], V[0])), -U[2]), w(h(E(V[1], U[0]), E(-U[1], V[0])), F[2]))), B[3]), w(h(w(h(E(U[1], F[0]), E(-F[1], U[0])), B[2]), h(w(h(E(B[1], F[0]), E(-F[1], B[0])), -U[2]), w(h(E(B[1], U[0]), E(-U[1], B[0])), F[2]))), -V[3])), h(w(h(w(h(E(V[1], F[0]), E(-F[1], V[0])), B[2]), h(w(h(E(B[1], F[0]), E(-F[1], B[0])), -V[2]), w(h(E(B[1], V[0]), E(-V[1], B[0])), F[2]))), U[3]), w(h(w(h(E(V[1], U[0]), E(-U[1], V[0])), B[2]), h(w(h(E(B[1], U[0]), E(-U[1], B[0])), -V[2]), w(h(E(B[1], V[0]), E(-V[1], B[0])), U[2]))), -F[3])))), rt = z(G, q);
                          return rt[rt.length - 1];
                        };
                      }
                      function _(h) {
                        var E = h === 3 ? c : h === 4 ? v : f;
                        return E(i, r, a, l);
                      }
                      var S = _(3), M = _(4), C = [function() {
                        return 0;
                      }, function() {
                        return 0;
                      }, function(E, w) {
                        return w[0] - E[0];
                      }, function(E, w, z) {
                        var O = (E[1] - z[1]) * (w[0] - z[0]), B = (E[0] - z[0]) * (w[1] - z[1]), V = O - B, U;
                        if (O > 0) {
                          if (B <= 0)
                            return V;
                          U = O + B;
                        } else if (O < 0) {
                          if (B >= 0)
                            return V;
                          U = -(O + B);
                        } else
                          return V;
                        var H = g * U;
                        return V >= H || V <= -H ? V : S(E, w, z);
                      }, function(E, w, z, O) {
                        var B = E[0] - O[0], V = w[0] - O[0], U = z[0] - O[0], H = E[1] - O[1], F = w[1] - O[1], G = z[1] - O[1], q = E[2] - O[2], rt = w[2] - O[2], st = z[2] - O[2], vt = V * G, ht = U * F, et = U * H, Q = B * G, j = B * F, at = V * H, ut = q * (vt - ht) + rt * (et - Q) + st * (j - at), nt = (Math.abs(vt) + Math.abs(ht)) * Math.abs(q) + (Math.abs(et) + Math.abs(Q)) * Math.abs(rt) + (Math.abs(j) + Math.abs(at)) * Math.abs(st), X = x * nt;
                        return ut > X || -ut > X ? ut : M(E, w, z, O);
                      }];
                      function m(h) {
                        var E = C[h.length];
                        return E || (E = C[h.length] = _(h.length)), E.apply(void 0, h);
                      }
                      function L(h, E, w, z, O, B, V) {
                        return function(H, F, G, q, rt) {
                          switch (arguments.length) {
                            case 0:
                            case 1:
                              return 0;
                            case 2:
                              return z(H, F);
                            case 3:
                              return O(H, F, G);
                            case 4:
                              return B(H, F, G, q);
                            case 5:
                              return V(H, F, G, q, rt);
                          }
                          for (var st = new Array(arguments.length), vt = 0; vt < arguments.length; ++vt)
                            st[vt] = arguments[vt];
                          return h(st);
                        };
                      }
                      function d() {
                        for (; C.length <= o; )
                          C.push(_(C.length));
                        p.exports = L.apply(void 0, [m].concat(C));
                        for (var h = 0; h <= o; ++h)
                          p.exports[h] = C[h];
                      }
                      d();
                    }
                  ),
                  /***/
                  5382: (
                    /***/
                    function(p, u, t) {
                      var r = t(8210), i = t(3012);
                      p.exports = a;
                      function a(l, o) {
                        if (l.length === 1)
                          return i(o, l[0]);
                        if (o.length === 1)
                          return i(l, o[0]);
                        if (l.length === 0 || o.length === 0)
                          return [0];
                        var y = [0];
                        if (l.length < o.length)
                          for (var g = 0; g < l.length; ++g)
                            y = r(y, i(o, l[g]));
                        else
                          for (var g = 0; g < o.length; ++g)
                            y = r(y, i(l, o[g]));
                        return y;
                      }
                    }
                  ),
                  /***/
                  3012: (
                    /***/
                    function(p, u, t) {
                      var r = t(5250), i = t(9362);
                      p.exports = a;
                      function a(l, o) {
                        var y = l.length;
                        if (y === 1) {
                          var g = r(l[0], o);
                          return g[0] ? g : [g[1]];
                        }
                        var x = new Array(2 * y), c = [0.1, 0.1], v = [0.1, 0.1], f = 0;
                        r(l[0], o, c), c[0] && (x[f++] = c[0]);
                        for (var _ = 1; _ < y; ++_) {
                          r(l[_], o, v);
                          var S = c[1];
                          i(S, v[0], c), c[0] && (x[f++] = c[0]);
                          var M = v[1], C = c[1], m = M + C, L = m - M, d = C - L;
                          c[1] = m, d && (x[f++] = d);
                        }
                        return c[1] && (x[f++] = c[1]), f === 0 && (x[f++] = 0), x.length = f, x;
                      }
                    }
                  ),
                  /***/
                  1125: (
                    /***/
                    function(p, u, t) {
                      p.exports = a;
                      var r = t(3250)[3];
                      function i(l, o, y, g) {
                        for (var x = 0; x < 2; ++x) {
                          var c = l[x], v = o[x], f = Math.min(c, v), _ = Math.max(c, v), S = y[x], M = g[x], C = Math.min(S, M), m = Math.max(S, M);
                          if (m < f || _ < C)
                            return !1;
                        }
                        return !0;
                      }
                      function a(l, o, y, g) {
                        var x = r(l, y, g), c = r(o, y, g);
                        if (x > 0 && c > 0 || x < 0 && c < 0)
                          return !1;
                        var v = r(y, l, o), f = r(g, l, o);
                        return v > 0 && f > 0 || v < 0 && f < 0 ? !1 : x === 0 && c === 0 && v === 0 && f === 0 ? i(l, o, y, g) : !0;
                      }
                    }
                  ),
                  /***/
                  8545: (
                    /***/
                    function(p) {
                      p.exports = t;
                      function u(r, i) {
                        var a = r + i, l = a - r, o = a - l, y = i - l, g = r - o, x = g + y;
                        return x ? [x, a] : [a];
                      }
                      function t(r, i) {
                        var a = r.length | 0, l = i.length | 0;
                        if (a === 1 && l === 1)
                          return u(r[0], -i[0]);
                        var o = a + l, y = new Array(o), g = 0, x = 0, c = 0, v = Math.abs, f = r[x], _ = v(f), S = -i[c], M = v(S), C, m;
                        _ < M ? (m = f, x += 1, x < a && (f = r[x], _ = v(f))) : (m = S, c += 1, c < l && (S = -i[c], M = v(S))), x < a && _ < M || c >= l ? (C = f, x += 1, x < a && (f = r[x], _ = v(f))) : (C = S, c += 1, c < l && (S = -i[c], M = v(S)));
                        for (var L = C + m, d = L - C, h = m - d, E = h, w = L, z, O, B, V, U; x < a && c < l; )
                          _ < M ? (C = f, x += 1, x < a && (f = r[x], _ = v(f))) : (C = S, c += 1, c < l && (S = -i[c], M = v(S))), m = E, L = C + m, d = L - C, h = m - d, h && (y[g++] = h), z = w + L, O = z - w, B = z - O, V = L - O, U = w - B, E = U + V, w = z;
                        for (; x < a; )
                          C = f, m = E, L = C + m, d = L - C, h = m - d, h && (y[g++] = h), z = w + L, O = z - w, B = z - O, V = L - O, U = w - B, E = U + V, w = z, x += 1, x < a && (f = r[x]);
                        for (; c < l; )
                          C = S, m = E, L = C + m, d = L - C, h = m - d, h && (y[g++] = h), z = w + L, O = z - w, B = z - O, V = L - O, U = w - B, E = U + V, w = z, c += 1, c < l && (S = -i[c]);
                        return E && (y[g++] = E), w && (y[g++] = w), g || (y[g++] = 0), y.length = g, y;
                      }
                    }
                  ),
                  /***/
                  8210: (
                    /***/
                    function(p) {
                      p.exports = t;
                      function u(r, i) {
                        var a = r + i, l = a - r, o = a - l, y = i - l, g = r - o, x = g + y;
                        return x ? [x, a] : [a];
                      }
                      function t(r, i) {
                        var a = r.length | 0, l = i.length | 0;
                        if (a === 1 && l === 1)
                          return u(r[0], i[0]);
                        var o = a + l, y = new Array(o), g = 0, x = 0, c = 0, v = Math.abs, f = r[x], _ = v(f), S = i[c], M = v(S), C, m;
                        _ < M ? (m = f, x += 1, x < a && (f = r[x], _ = v(f))) : (m = S, c += 1, c < l && (S = i[c], M = v(S))), x < a && _ < M || c >= l ? (C = f, x += 1, x < a && (f = r[x], _ = v(f))) : (C = S, c += 1, c < l && (S = i[c], M = v(S)));
                        for (var L = C + m, d = L - C, h = m - d, E = h, w = L, z, O, B, V, U; x < a && c < l; )
                          _ < M ? (C = f, x += 1, x < a && (f = r[x], _ = v(f))) : (C = S, c += 1, c < l && (S = i[c], M = v(S))), m = E, L = C + m, d = L - C, h = m - d, h && (y[g++] = h), z = w + L, O = z - w, B = z - O, V = L - O, U = w - B, E = U + V, w = z;
                        for (; x < a; )
                          C = f, m = E, L = C + m, d = L - C, h = m - d, h && (y[g++] = h), z = w + L, O = z - w, B = z - O, V = L - O, U = w - B, E = U + V, w = z, x += 1, x < a && (f = r[x]);
                        for (; c < l; )
                          C = S, m = E, L = C + m, d = L - C, h = m - d, h && (y[g++] = h), z = w + L, O = z - w, B = z - O, V = L - O, U = w - B, E = U + V, w = z, c += 1, c < l && (S = i[c]);
                        return E && (y[g++] = E), w && (y[g++] = w), g || (y[g++] = 0), y.length = g, y;
                      }
                    }
                  ),
                  /***/
                  9127: (
                    /***/
                    function(p, u, t) {
                      p.exports = a;
                      var r = t(6204), i = t(5771);
                      function a(l) {
                        return i(r(l));
                      }
                    }
                  ),
                  /***/
                  7765: (
                    /***/
                    function(p, u, t) {
                      p.exports = f;
                      var r = t(9618), i = t(1888), a = t(446), l = t(1570);
                      function o(_) {
                        for (var S = _.length, M = 0, C = 0; C < S; ++C)
                          M = Math.max(M, _[C].length) | 0;
                        return M - 1;
                      }
                      function y(_, S) {
                        for (var M = _.length, C = i.mallocUint8(M), m = 0; m < M; ++m)
                          C[m] = _[m] < S | 0;
                        return C;
                      }
                      function g(_, S) {
                        for (var M = _.length, C = S * (S + 1) / 2 * M | 0, m = i.mallocUint32(C * 2), L = 0, d = 0; d < M; ++d)
                          for (var h = _[d], S = h.length, E = 0; E < S; ++E)
                            for (var w = 0; w < E; ++w) {
                              var z = h[w], O = h[E];
                              m[L++] = Math.min(z, O) | 0, m[L++] = Math.max(z, O) | 0;
                            }
                        var B = L / 2 | 0;
                        a(r(m, [B, 2]));
                        for (var V = 2, d = 2; d < L; d += 2)
                          m[d - 2] === m[d] && m[d - 1] === m[d + 1] || (m[V++] = m[d], m[V++] = m[d + 1]);
                        return r(m, [V / 2 | 0, 2]);
                      }
                      function x(_, S, M, C) {
                        for (var m = _.data, L = _.shape[0], d = i.mallocDouble(L), h = 0, E = 0; E < L; ++E) {
                          var w = m[2 * E], z = m[2 * E + 1];
                          if (M[w] !== M[z]) {
                            var O = S[w], B = S[z];
                            m[2 * h] = w, m[2 * h + 1] = z, d[h++] = (B - C) / (B - O);
                          }
                        }
                        return _.shape[0] = h, r(d, [h]);
                      }
                      function c(_, S) {
                        var M = i.mallocInt32(S * 2), C = _.shape[0], m = _.data;
                        M[0] = 0;
                        for (var L = 0, d = 0; d < C; ++d) {
                          var h = m[2 * d];
                          if (h !== L) {
                            for (M[2 * L + 1] = d; ++L < h; )
                              M[2 * L] = d, M[2 * L + 1] = d;
                            M[2 * L] = d;
                          }
                        }
                        for (M[2 * L + 1] = C; ++L < S; )
                          M[2 * L] = M[2 * L + 1] = C;
                        return M;
                      }
                      function v(_) {
                        for (var S = _.shape[0] | 0, M = _.data, C = new Array(S), m = 0; m < S; ++m)
                          C[m] = [M[2 * m], M[2 * m + 1]];
                        return C;
                      }
                      function f(_, S, M, C) {
                        M = M || 0, typeof C > "u" && (C = o(_));
                        var m = _.length;
                        if (m === 0 || C < 1)
                          return { cells: [], vertexIds: [], vertexWeights: [] };
                        var L = y(S, +M), d = g(_, C), h = x(d, S, L, +M), E = c(d, S.length | 0), w = l(C)(_, d.data, E, L), z = v(d), O = [].slice.call(h.data, 0, h.shape[0]);
                        return i.free(L), i.free(d.data), i.free(h.data), i.free(E), { cells: w, vertexIds: z, vertexWeights: O };
                      }
                    }
                  ),
                  /***/
                  1570: (
                    /***/
                    function(p) {
                      p.exports = t;
                      var u = [function() {
                        function i(a, l, o, y) {
                          for (var g = a.length, x = [], c = 0; c < g; ++c) {
                            var v = a[c];
                            v.length;
                          }
                          return x;
                        }
                        return i;
                      }, function() {
                        function i(l, o, y, g) {
                          for (var x = Math.min(y, g) | 0, c = Math.max(y, g) | 0, v = l[2 * x], f = l[2 * x + 1]; v < f; ) {
                            var _ = v + f >> 1, S = o[2 * _ + 1];
                            if (S === c)
                              return _;
                            c < S ? f = _ : v = _ + 1;
                          }
                          return v;
                        }
                        function a(l, o, y, g) {
                          for (var x = l.length, c = [], v = 0; v < x; ++v) {
                            var f = l[v], _ = f.length;
                            if (_ === 2) {
                              var S = (g[f[0]] << 0) + (g[f[1]] << 1);
                              if (S === 0 || S === 3)
                                continue;
                              switch (S) {
                                case 0:
                                  break;
                                case 1:
                                  c.push([i(y, o, f[0], f[1])]);
                                  break;
                                case 2:
                                  c.push([i(y, o, f[1], f[0])]);
                                  break;
                              }
                            }
                          }
                          return c;
                        }
                        return a;
                      }, function() {
                        function i(l, o, y, g) {
                          for (var x = Math.min(y, g) | 0, c = Math.max(y, g) | 0, v = l[2 * x], f = l[2 * x + 1]; v < f; ) {
                            var _ = v + f >> 1, S = o[2 * _ + 1];
                            if (S === c)
                              return _;
                            c < S ? f = _ : v = _ + 1;
                          }
                          return v;
                        }
                        function a(l, o, y, g) {
                          for (var x = l.length, c = [], v = 0; v < x; ++v) {
                            var f = l[v], _ = f.length;
                            if (_ === 3) {
                              var S = (g[f[0]] << 0) + (g[f[1]] << 1) + (g[f[2]] << 2);
                              if (S === 0 || S === 7)
                                continue;
                              switch (S) {
                                case 0:
                                  break;
                                case 1:
                                  c.push([i(y, o, f[0], f[2]), i(y, o, f[0], f[1])]);
                                  break;
                                case 2:
                                  c.push([i(y, o, f[1], f[0]), i(y, o, f[1], f[2])]);
                                  break;
                                case 3:
                                  c.push([i(y, o, f[0], f[2]), i(y, o, f[1], f[2])]);
                                  break;
                                case 4:
                                  c.push([i(y, o, f[2], f[1]), i(y, o, f[2], f[0])]);
                                  break;
                                case 5:
                                  c.push([i(y, o, f[2], f[1]), i(y, o, f[0], f[1])]);
                                  break;
                                case 6:
                                  c.push([i(y, o, f[1], f[0]), i(y, o, f[2], f[0])]);
                                  break;
                              }
                            } else if (_ === 2) {
                              var S = (g[f[0]] << 0) + (g[f[1]] << 1);
                              if (S === 0 || S === 3)
                                continue;
                              switch (S) {
                                case 0:
                                  break;
                                case 1:
                                  c.push([i(y, o, f[0], f[1])]);
                                  break;
                                case 2:
                                  c.push([i(y, o, f[1], f[0])]);
                                  break;
                              }
                            }
                          }
                          return c;
                        }
                        return a;
                      }, function() {
                        function i(l, o, y, g) {
                          for (var x = Math.min(y, g) | 0, c = Math.max(y, g) | 0, v = l[2 * x], f = l[2 * x + 1]; v < f; ) {
                            var _ = v + f >> 1, S = o[2 * _ + 1];
                            if (S === c)
                              return _;
                            c < S ? f = _ : v = _ + 1;
                          }
                          return v;
                        }
                        function a(l, o, y, g) {
                          for (var x = l.length, c = [], v = 0; v < x; ++v) {
                            var f = l[v], _ = f.length;
                            if (_ === 4) {
                              var S = (g[f[0]] << 0) + (g[f[1]] << 1) + (g[f[2]] << 2) + (g[f[3]] << 3);
                              if (S === 0 || S === 15)
                                continue;
                              switch (S) {
                                case 0:
                                  break;
                                case 1:
                                  c.push([i(y, o, f[0], f[1]), i(y, o, f[0], f[2]), i(y, o, f[0], f[3])]);
                                  break;
                                case 2:
                                  c.push([i(y, o, f[1], f[2]), i(y, o, f[1], f[0]), i(y, o, f[1], f[3])]);
                                  break;
                                case 3:
                                  c.push([i(y, o, f[1], f[2]), i(y, o, f[0], f[2]), i(y, o, f[0], f[3])], [i(y, o, f[1], f[3]), i(y, o, f[1], f[2]), i(y, o, f[0], f[3])]);
                                  break;
                                case 4:
                                  c.push([i(y, o, f[2], f[0]), i(y, o, f[2], f[1]), i(y, o, f[2], f[3])]);
                                  break;
                                case 5:
                                  c.push([i(y, o, f[0], f[1]), i(y, o, f[2], f[1]), i(y, o, f[0], f[3])], [i(y, o, f[2], f[1]), i(y, o, f[2], f[3]), i(y, o, f[0], f[3])]);
                                  break;
                                case 6:
                                  c.push([i(y, o, f[2], f[0]), i(y, o, f[1], f[0]), i(y, o, f[1], f[3])], [i(y, o, f[2], f[3]), i(y, o, f[2], f[0]), i(y, o, f[1], f[3])]);
                                  break;
                                case 7:
                                  c.push([i(y, o, f[0], f[3]), i(y, o, f[1], f[3]), i(y, o, f[2], f[3])]);
                                  break;
                                case 8:
                                  c.push([i(y, o, f[3], f[1]), i(y, o, f[3], f[0]), i(y, o, f[3], f[2])]);
                                  break;
                                case 9:
                                  c.push([i(y, o, f[3], f[1]), i(y, o, f[0], f[1]), i(y, o, f[0], f[2])], [i(y, o, f[3], f[2]), i(y, o, f[3], f[1]), i(y, o, f[0], f[2])]);
                                  break;
                                case 10:
                                  c.push([i(y, o, f[1], f[0]), i(y, o, f[3], f[0]), i(y, o, f[1], f[2])], [i(y, o, f[3], f[0]), i(y, o, f[3], f[2]), i(y, o, f[1], f[2])]);
                                  break;
                                case 11:
                                  c.push([i(y, o, f[1], f[2]), i(y, o, f[0], f[2]), i(y, o, f[3], f[2])]);
                                  break;
                                case 12:
                                  c.push([i(y, o, f[3], f[0]), i(y, o, f[2], f[0]), i(y, o, f[2], f[1])], [i(y, o, f[3], f[1]), i(y, o, f[3], f[0]), i(y, o, f[2], f[1])]);
                                  break;
                                case 13:
                                  c.push([i(y, o, f[0], f[1]), i(y, o, f[2], f[1]), i(y, o, f[3], f[1])]);
                                  break;
                                case 14:
                                  c.push([i(y, o, f[2], f[0]), i(y, o, f[1], f[0]), i(y, o, f[3], f[0])]);
                                  break;
                              }
                            } else if (_ === 3) {
                              var S = (g[f[0]] << 0) + (g[f[1]] << 1) + (g[f[2]] << 2);
                              if (S === 0 || S === 7)
                                continue;
                              switch (S) {
                                case 0:
                                  break;
                                case 1:
                                  c.push([i(y, o, f[0], f[2]), i(y, o, f[0], f[1])]);
                                  break;
                                case 2:
                                  c.push([i(y, o, f[1], f[0]), i(y, o, f[1], f[2])]);
                                  break;
                                case 3:
                                  c.push([i(y, o, f[0], f[2]), i(y, o, f[1], f[2])]);
                                  break;
                                case 4:
                                  c.push([i(y, o, f[2], f[1]), i(y, o, f[2], f[0])]);
                                  break;
                                case 5:
                                  c.push([i(y, o, f[2], f[1]), i(y, o, f[0], f[1])]);
                                  break;
                                case 6:
                                  c.push([i(y, o, f[1], f[0]), i(y, o, f[2], f[0])]);
                                  break;
                              }
                            } else if (_ === 2) {
                              var S = (g[f[0]] << 0) + (g[f[1]] << 1);
                              if (S === 0 || S === 3)
                                continue;
                              switch (S) {
                                case 0:
                                  break;
                                case 1:
                                  c.push([i(y, o, f[0], f[1])]);
                                  break;
                                case 2:
                                  c.push([i(y, o, f[1], f[0])]);
                                  break;
                              }
                            }
                          }
                          return c;
                        }
                        return a;
                      }];
                      function t(r) {
                        return u[r]();
                      }
                    }
                  ),
                  /***/
                  6803: (
                    /***/
                    function(p, u, t) {
                      t(8828), t(1755);
                      function r(i, a) {
                        var l = i.length, o = i.length - a.length, y = Math.min;
                        if (o)
                          return o;
                        switch (l) {
                          case 0:
                            return 0;
                          case 1:
                            return i[0] - a[0];
                          case 2:
                            var f = i[0] + i[1] - a[0] - a[1];
                            return f || y(i[0], i[1]) - y(a[0], a[1]);
                          case 3:
                            var g = i[0] + i[1], x = a[0] + a[1];
                            if (f = g + i[2] - (x + a[2]), f)
                              return f;
                            var c = y(i[0], i[1]), v = y(a[0], a[1]), f = y(c, i[2]) - y(v, a[2]);
                            return f || y(c + i[2], g) - y(v + a[2], x);
                          default:
                            var _ = i.slice(0);
                            _.sort();
                            var S = a.slice(0);
                            S.sort();
                            for (var M = 0; M < l; ++M)
                              if (o = _[M] - S[M], o)
                                return o;
                            return 0;
                        }
                      }
                      u.Fw = r;
                    }
                  ),
                  /***/
                  3105: (
                    /***/
                    function(p, u) {
                      "use restrict";
                      var t = 32;
                      u.INT_BITS = t, u.INT_MAX = 2147483647, u.INT_MIN = -1 << t - 1, u.sign = function(a) {
                        return (a > 0) - (a < 0);
                      }, u.abs = function(a) {
                        var l = a >> t - 1;
                        return (a ^ l) - l;
                      }, u.min = function(a, l) {
                        return l ^ (a ^ l) & -(a < l);
                      }, u.max = function(a, l) {
                        return a ^ (a ^ l) & -(a < l);
                      }, u.isPow2 = function(a) {
                        return !(a & a - 1) && !!a;
                      }, u.log2 = function(a) {
                        var l, o;
                        return l = (a > 65535) << 4, a >>>= l, o = (a > 255) << 3, a >>>= o, l |= o, o = (a > 15) << 2, a >>>= o, l |= o, o = (a > 3) << 1, a >>>= o, l |= o, l | a >> 1;
                      }, u.log10 = function(a) {
                        return a >= 1e9 ? 9 : a >= 1e8 ? 8 : a >= 1e7 ? 7 : a >= 1e6 ? 6 : a >= 1e5 ? 5 : a >= 1e4 ? 4 : a >= 1e3 ? 3 : a >= 100 ? 2 : a >= 10 ? 1 : 0;
                      }, u.popCount = function(a) {
                        return a = a - (a >>> 1 & 1431655765), a = (a & 858993459) + (a >>> 2 & 858993459), (a + (a >>> 4) & 252645135) * 16843009 >>> 24;
                      };
                      function r(a) {
                        var l = 32;
                        return a &= -a, a && l--, a & 65535 && (l -= 16), a & 16711935 && (l -= 8), a & 252645135 && (l -= 4), a & 858993459 && (l -= 2), a & 1431655765 && (l -= 1), l;
                      }
                      u.countTrailingZeros = r, u.nextPow2 = function(a) {
                        return a += a === 0, --a, a |= a >>> 1, a |= a >>> 2, a |= a >>> 4, a |= a >>> 8, a |= a >>> 16, a + 1;
                      }, u.prevPow2 = function(a) {
                        return a |= a >>> 1, a |= a >>> 2, a |= a >>> 4, a |= a >>> 8, a |= a >>> 16, a - (a >>> 1);
                      }, u.parity = function(a) {
                        return a ^= a >>> 16, a ^= a >>> 8, a ^= a >>> 4, a &= 15, 27030 >>> a & 1;
                      };
                      var i = new Array(256);
                      (function(a) {
                        for (var l = 0; l < 256; ++l) {
                          var o = l, y = l, g = 7;
                          for (o >>>= 1; o; o >>>= 1)
                            y <<= 1, y |= o & 1, --g;
                          a[l] = y << g & 255;
                        }
                      })(i), u.reverse = function(a) {
                        return i[a & 255] << 24 | i[a >>> 8 & 255] << 16 | i[a >>> 16 & 255] << 8 | i[a >>> 24 & 255];
                      }, u.interleave2 = function(a, l) {
                        return a &= 65535, a = (a | a << 8) & 16711935, a = (a | a << 4) & 252645135, a = (a | a << 2) & 858993459, a = (a | a << 1) & 1431655765, l &= 65535, l = (l | l << 8) & 16711935, l = (l | l << 4) & 252645135, l = (l | l << 2) & 858993459, l = (l | l << 1) & 1431655765, a | l << 1;
                      }, u.deinterleave2 = function(a, l) {
                        return a = a >>> l & 1431655765, a = (a | a >>> 1) & 858993459, a = (a | a >>> 2) & 252645135, a = (a | a >>> 4) & 16711935, a = (a | a >>> 16) & 65535, a << 16 >> 16;
                      }, u.interleave3 = function(a, l, o) {
                        return a &= 1023, a = (a | a << 16) & 4278190335, a = (a | a << 8) & 251719695, a = (a | a << 4) & 3272356035, a = (a | a << 2) & 1227133513, l &= 1023, l = (l | l << 16) & 4278190335, l = (l | l << 8) & 251719695, l = (l | l << 4) & 3272356035, l = (l | l << 2) & 1227133513, a |= l << 1, o &= 1023, o = (o | o << 16) & 4278190335, o = (o | o << 8) & 251719695, o = (o | o << 4) & 3272356035, o = (o | o << 2) & 1227133513, a | o << 2;
                      }, u.deinterleave3 = function(a, l) {
                        return a = a >>> l & 1227133513, a = (a | a >>> 2) & 3272356035, a = (a | a >>> 4) & 251719695, a = (a | a >>> 8) & 4278190335, a = (a | a >>> 16) & 1023, a << 22 >> 22;
                      }, u.nextCombination = function(a) {
                        var l = a | a - 1;
                        return l + 1 | (~l & -~l) - 1 >>> r(a) + 1;
                      };
                    }
                  ),
                  /***/
                  2014: (
                    /***/
                    function(p, u, t) {
                      "use restrict";
                      var r = t(3105), i = t(4623);
                      function a(h) {
                        for (var E = 0, w = Math.max, z = 0, O = h.length; z < O; ++z)
                          E = w(E, h[z].length);
                        return E - 1;
                      }
                      u.dimension = a;
                      function l(h) {
                        for (var E = -1, w = Math.max, z = 0, O = h.length; z < O; ++z)
                          for (var B = h[z], V = 0, U = B.length; V < U; ++V)
                            E = w(E, B[V]);
                        return E + 1;
                      }
                      u.countVertices = l;
                      function o(h) {
                        for (var E = new Array(h.length), w = 0, z = h.length; w < z; ++w)
                          E[w] = h[w].slice(0);
                        return E;
                      }
                      u.cloneCells = o;
                      function y(h, E) {
                        var w = h.length, z = h.length - E.length, O = Math.min;
                        if (z)
                          return z;
                        switch (w) {
                          case 0:
                            return 0;
                          case 1:
                            return h[0] - E[0];
                          case 2:
                            var F = h[0] + h[1] - E[0] - E[1];
                            return F || O(h[0], h[1]) - O(E[0], E[1]);
                          case 3:
                            var B = h[0] + h[1], V = E[0] + E[1];
                            if (F = B + h[2] - (V + E[2]), F)
                              return F;
                            var U = O(h[0], h[1]), H = O(E[0], E[1]), F = O(U, h[2]) - O(H, E[2]);
                            return F || O(U + h[2], B) - O(H + E[2], V);
                          default:
                            var G = h.slice(0);
                            G.sort();
                            var q = E.slice(0);
                            q.sort();
                            for (var rt = 0; rt < w; ++rt)
                              if (z = G[rt] - q[rt], z)
                                return z;
                            return 0;
                        }
                      }
                      u.compareCells = y;
                      function g(h, E) {
                        return y(h[0], E[0]);
                      }
                      function x(h, E) {
                        if (E) {
                          for (var w = h.length, z = new Array(w), O = 0; O < w; ++O)
                            z[O] = [h[O], E[O]];
                          z.sort(g);
                          for (var O = 0; O < w; ++O)
                            h[O] = z[O][0], E[O] = z[O][1];
                          return h;
                        } else
                          return h.sort(y), h;
                      }
                      u.normalize = x;
                      function c(h) {
                        if (h.length === 0)
                          return [];
                        for (var E = 1, w = h.length, z = 1; z < w; ++z) {
                          var O = h[z];
                          if (y(O, h[z - 1])) {
                            if (z === E) {
                              E++;
                              continue;
                            }
                            h[E++] = O;
                          }
                        }
                        return h.length = E, h;
                      }
                      u.unique = c;
                      function v(h, E) {
                        for (var w = 0, z = h.length - 1, O = -1; w <= z; ) {
                          var B = w + z >> 1, V = y(h[B], E);
                          V <= 0 ? (V === 0 && (O = B), w = B + 1) : V > 0 && (z = B - 1);
                        }
                        return O;
                      }
                      u.findCell = v;
                      function f(h, E) {
                        for (var w = new Array(h.length), z = 0, O = w.length; z < O; ++z)
                          w[z] = [];
                        for (var B = [], z = 0, V = E.length; z < V; ++z)
                          for (var U = E[z], H = U.length, F = 1, G = 1 << H; F < G; ++F) {
                            B.length = r.popCount(F);
                            for (var q = 0, rt = 0; rt < H; ++rt)
                              F & 1 << rt && (B[q++] = U[rt]);
                            var st = v(h, B);
                            if (!(st < 0))
                              for (; w[st++].push(z), !(st >= h.length || y(h[st], B) !== 0); )
                                ;
                          }
                        return w;
                      }
                      u.incidence = f;
                      function _(h, E) {
                        if (!E)
                          return f(c(M(h, 0)), h);
                        for (var w = new Array(E), z = 0; z < E; ++z)
                          w[z] = [];
                        for (var z = 0, O = h.length; z < O; ++z)
                          for (var B = h[z], V = 0, U = B.length; V < U; ++V)
                            w[B[V]].push(z);
                        return w;
                      }
                      u.dual = _;
                      function S(h) {
                        for (var E = [], w = 0, z = h.length; w < z; ++w)
                          for (var O = h[w], B = O.length | 0, V = 1, U = 1 << B; V < U; ++V) {
                            for (var H = [], F = 0; F < B; ++F)
                              V >>> F & 1 && H.push(O[F]);
                            E.push(H);
                          }
                        return x(E);
                      }
                      u.explode = S;
                      function M(h, E) {
                        if (E < 0)
                          return [];
                        for (var w = [], z = (1 << E + 1) - 1, O = 0; O < h.length; ++O)
                          for (var B = h[O], V = z; V < 1 << B.length; V = r.nextCombination(V)) {
                            for (var U = new Array(E + 1), H = 0, F = 0; F < B.length; ++F)
                              V & 1 << F && (U[H++] = B[F]);
                            w.push(U);
                          }
                        return x(w);
                      }
                      u.skeleton = M;
                      function C(h) {
                        for (var E = [], w = 0, z = h.length; w < z; ++w)
                          for (var O = h[w], B = 0, V = O.length; B < V; ++B) {
                            for (var U = new Array(O.length - 1), H = 0, F = 0; H < V; ++H)
                              H !== B && (U[F++] = O[H]);
                            E.push(U);
                          }
                        return x(E);
                      }
                      u.boundary = C;
                      function m(h, E) {
                        for (var w = new i(E), z = 0; z < h.length; ++z)
                          for (var O = h[z], B = 0; B < O.length; ++B)
                            for (var V = B + 1; V < O.length; ++V)
                              w.link(O[B], O[V]);
                        for (var U = [], H = w.ranks, z = 0; z < H.length; ++z)
                          H[z] = -1;
                        for (var z = 0; z < h.length; ++z) {
                          var F = w.find(h[z][0]);
                          H[F] < 0 ? (H[F] = U.length, U.push([h[z].slice(0)])) : U[H[F]].push(h[z].slice(0));
                        }
                        return U;
                      }
                      function L(h) {
                        for (var E = c(x(M(h, 0))), w = new i(E.length), z = 0; z < h.length; ++z)
                          for (var O = h[z], B = 0; B < O.length; ++B)
                            for (var V = v(E, [O[B]]), U = B + 1; U < O.length; ++U)
                              w.link(V, v(E, [O[U]]));
                        for (var H = [], F = w.ranks, z = 0; z < F.length; ++z)
                          F[z] = -1;
                        for (var z = 0; z < h.length; ++z) {
                          var G = w.find(v(E, [h[z][0]]));
                          F[G] < 0 ? (F[G] = H.length, H.push([h[z].slice(0)])) : H[F[G]].push(h[z].slice(0));
                        }
                        return H;
                      }
                      function d(h, E) {
                        return E ? m(h, E) : L(h);
                      }
                      u.connectedComponents = d;
                    }
                  ),
                  /***/
                  4623: (
                    /***/
                    function(p) {
                      "use restrict";
                      p.exports = u;
                      function u(t) {
                        this.roots = new Array(t), this.ranks = new Array(t);
                        for (var r = 0; r < t; ++r)
                          this.roots[r] = r, this.ranks[r] = 0;
                      }
                      u.prototype.length = function() {
                        return this.roots.length;
                      }, u.prototype.makeSet = function() {
                        var t = this.roots.length;
                        return this.roots.push(t), this.ranks.push(0), t;
                      }, u.prototype.find = function(t) {
                        for (var r = this.roots; r[t] !== t; ) {
                          var i = r[t];
                          r[t] = r[i], t = i;
                        }
                        return t;
                      }, u.prototype.link = function(t, r) {
                        var i = this.find(t), a = this.find(r);
                        if (i !== a) {
                          var l = this.ranks, o = this.roots, y = l[i], g = l[a];
                          y < g ? o[i] = a : g < y ? o[a] = i : (o[a] = i, ++l[i]);
                        }
                      };
                    }
                  ),
                  /***/
                  5878: (
                    /***/
                    function(p, u, t) {
                      p.exports = l;
                      var r = t(3250), i = t(2014);
                      function a(o, y, g) {
                        var x = Math.abs(r(o, y, g)), c = Math.sqrt(Math.pow(y[0] - g[0], 2) + Math.pow(y[1] - g[1], 2));
                        return x / c;
                      }
                      function l(o, y, g) {
                        for (var x = y.length, c = o.length, v = new Array(x), f = new Array(x), _ = new Array(x), S = new Array(x), M = 0; M < x; ++M)
                          v[M] = f[M] = -1, _[M] = 1 / 0, S[M] = !1;
                        for (var M = 0; M < c; ++M) {
                          var C = o[M];
                          if (C.length !== 2)
                            throw new Error("Input must be a graph");
                          var m = C[1], L = C[0];
                          f[L] !== -1 ? f[L] = -2 : f[L] = m, v[m] !== -1 ? v[m] = -2 : v[m] = L;
                        }
                        function d(et) {
                          if (S[et])
                            return 1 / 0;
                          var Q = v[et], j = f[et];
                          return Q < 0 || j < 0 ? 1 / 0 : a(y[et], y[Q], y[j]);
                        }
                        function h(et, Q) {
                          var j = H[et], at = H[Q];
                          H[et] = at, H[Q] = j, F[j] = Q, F[at] = et;
                        }
                        function E(et) {
                          return _[H[et]];
                        }
                        function w(et) {
                          return et & 1 ? et - 1 >> 1 : (et >> 1) - 1;
                        }
                        function z(et) {
                          for (var Q = E(et); ; ) {
                            var j = Q, at = 2 * et + 1, ut = 2 * (et + 1), nt = et;
                            if (at < q) {
                              var X = E(at);
                              X < j && (nt = at, j = X);
                            }
                            if (ut < q) {
                              var ct = E(ut);
                              ct < j && (nt = ut);
                            }
                            if (nt === et)
                              return et;
                            h(et, nt), et = nt;
                          }
                        }
                        function O(et) {
                          for (var Q = E(et); et > 0; ) {
                            var j = w(et);
                            if (j >= 0) {
                              var at = E(j);
                              if (Q < at) {
                                h(et, j), et = j;
                                continue;
                              }
                            }
                            return et;
                          }
                        }
                        function B() {
                          if (q > 0) {
                            var et = H[0];
                            return h(0, q - 1), q -= 1, z(0), et;
                          }
                          return -1;
                        }
                        function V(et, Q) {
                          var j = H[et];
                          return _[j] === Q ? et : (_[j] = -1 / 0, O(et), B(), _[j] = Q, q += 1, O(q - 1));
                        }
                        function U(et) {
                          if (!S[et]) {
                            S[et] = !0;
                            var Q = v[et], j = f[et];
                            v[j] >= 0 && (v[j] = Q), f[Q] >= 0 && (f[Q] = j), F[Q] >= 0 && V(F[Q], d(Q)), F[j] >= 0 && V(F[j], d(j));
                          }
                        }
                        for (var H = [], F = new Array(x), M = 0; M < x; ++M) {
                          var G = _[M] = d(M);
                          G < 1 / 0 ? (F[M] = H.length, H.push(M)) : F[M] = -1;
                        }
                        for (var q = H.length, M = q >> 1; M >= 0; --M)
                          z(M);
                        for (; ; ) {
                          var rt = B();
                          if (rt < 0 || _[rt] > g)
                            break;
                          U(rt);
                        }
                        for (var st = [], M = 0; M < x; ++M)
                          S[M] || (F[M] = st.length, st.push(y[M].slice()));
                        st.length;
                        function vt(et, Q) {
                          if (et[Q] < 0)
                            return Q;
                          var j = Q, at = Q;
                          do {
                            var ut = et[at];
                            if (!S[at] || ut < 0 || ut === at || (at = ut, ut = et[at], !S[at] || ut < 0 || ut === at))
                              break;
                            at = ut, j = et[j];
                          } while (j !== at);
                          for (var nt = Q; nt !== at; nt = et[nt])
                            et[nt] = at;
                          return at;
                        }
                        var ht = [];
                        return o.forEach(function(et) {
                          var Q = vt(v, et[0]), j = vt(f, et[1]);
                          if (Q >= 0 && j >= 0 && Q !== j) {
                            var at = F[Q], ut = F[j];
                            at !== ut && ht.push([at, ut]);
                          }
                        }), i.unique(i.normalize(ht)), { positions: st, edges: ht };
                      }
                    }
                  ),
                  /***/
                  1303: (
                    /***/
                    function(p, u, t) {
                      p.exports = a;
                      var r = t(3250);
                      function i(l, o) {
                        var y, g;
                        if (o[0][0] < o[1][0])
                          y = o[0], g = o[1];
                        else if (o[0][0] > o[1][0])
                          y = o[1], g = o[0];
                        else {
                          var x = Math.min(l[0][1], l[1][1]), c = Math.max(l[0][1], l[1][1]), v = Math.min(o[0][1], o[1][1]), f = Math.max(o[0][1], o[1][1]);
                          return c < v ? c - v : x > f ? x - f : c - f;
                        }
                        var _, S;
                        l[0][1] < l[1][1] ? (_ = l[0], S = l[1]) : (_ = l[1], S = l[0]);
                        var M = r(g, y, _);
                        return M || (M = r(g, y, S), M) ? M : S - g;
                      }
                      function a(l, o) {
                        var y, g;
                        if (o[0][0] < o[1][0])
                          y = o[0], g = o[1];
                        else if (o[0][0] > o[1][0])
                          y = o[1], g = o[0];
                        else
                          return i(o, l);
                        var x, c;
                        if (l[0][0] < l[1][0])
                          x = l[0], c = l[1];
                        else if (l[0][0] > l[1][0])
                          x = l[1], c = l[0];
                        else
                          return -i(l, o);
                        var v = r(y, g, c), f = r(y, g, x);
                        if (v < 0) {
                          if (f <= 0)
                            return v;
                        } else if (v > 0) {
                          if (f >= 0)
                            return v;
                        } else if (f)
                          return f;
                        if (v = r(c, x, g), f = r(c, x, y), v < 0) {
                          if (f <= 0)
                            return v;
                        } else if (v > 0) {
                          if (f >= 0)
                            return v;
                        } else if (f)
                          return f;
                        return g[0] - c[0];
                      }
                    }
                  ),
                  /***/
                  4209: (
                    /***/
                    function(p, u, t) {
                      p.exports = f;
                      var r = t(2478), i = t(3840), a = t(3250), l = t(1303);
                      function o(_, S, M) {
                        this.slabs = _, this.coordinates = S, this.horizontal = M;
                      }
                      var y = o.prototype;
                      function g(_, S) {
                        return _.y - S;
                      }
                      function x(_, S) {
                        for (var M = null; _; ) {
                          var C = _.key, m, L;
                          C[0][0] < C[1][0] ? (m = C[0], L = C[1]) : (m = C[1], L = C[0]);
                          var d = a(m, L, S);
                          if (d < 0)
                            _ = _.left;
                          else if (d > 0)
                            if (S[0] !== C[1][0])
                              M = _, _ = _.right;
                            else {
                              var h = x(_.right, S);
                              if (h)
                                return h;
                              _ = _.left;
                            }
                          else {
                            if (S[0] !== C[1][0])
                              return _;
                            var h = x(_.right, S);
                            if (h)
                              return h;
                            _ = _.left;
                          }
                        }
                        return M;
                      }
                      y.castUp = function(_) {
                        var S = r.le(this.coordinates, _[0]);
                        if (S < 0)
                          return -1;
                        this.slabs[S];
                        var M = x(this.slabs[S], _), C = -1;
                        if (M && (C = M.value), this.coordinates[S] === _[0]) {
                          var m = null;
                          if (M && (m = M.key), S > 0) {
                            var L = x(this.slabs[S - 1], _);
                            L && (m ? l(L.key, m) > 0 && (m = L.key, C = L.value) : (C = L.value, m = L.key));
                          }
                          var d = this.horizontal[S];
                          if (d.length > 0) {
                            var h = r.ge(d, _[1], g);
                            if (h < d.length) {
                              var E = d[h];
                              if (_[1] === E.y) {
                                if (E.closed)
                                  return E.index;
                                for (; h < d.length - 1 && d[h + 1].y === _[1]; )
                                  if (h = h + 1, E = d[h], E.closed)
                                    return E.index;
                                if (E.y === _[1] && !E.start) {
                                  if (h = h + 1, h >= d.length)
                                    return C;
                                  E = d[h];
                                }
                              }
                              if (E.start)
                                if (m) {
                                  var w = a(m[0], m[1], [_[0], E.y]);
                                  m[0][0] > m[1][0] && (w = -w), w > 0 && (C = E.index);
                                } else
                                  C = E.index;
                              else E.y !== _[1] && (C = E.index);
                            }
                          }
                        }
                        return C;
                      };
                      function c(_, S, M, C) {
                        this.y = _, this.index = S, this.start = M, this.closed = C;
                      }
                      function v(_, S, M, C) {
                        this.x = _, this.segment = S, this.create = M, this.index = C;
                      }
                      function f(_) {
                        for (var S = _.length, M = 2 * S, C = new Array(M), m = 0; m < S; ++m) {
                          var L = _[m], d = L[0][0] < L[1][0];
                          C[2 * m] = new v(L[0][0], L, d, m), C[2 * m + 1] = new v(L[1][0], L, !d, m);
                        }
                        C.sort(function(U, H) {
                          var F = U.x - H.x;
                          return F || (F = U.create - H.create, F) ? F : Math.min(U.segment[0][1], U.segment[1][1]) - Math.min(H.segment[0][1], H.segment[1][1]);
                        });
                        for (var h = i(l), E = [], w = [], z = [], m = 0; m < M; ) {
                          for (var O = C[m].x, B = []; m < M; ) {
                            var V = C[m];
                            if (V.x !== O)
                              break;
                            m += 1, V.segment[0][0] === V.x && V.segment[1][0] === V.x ? V.create && (V.segment[0][1] < V.segment[1][1] ? (B.push(new c(V.segment[0][1], V.index, !0, !0)), B.push(new c(V.segment[1][1], V.index, !1, !1))) : (B.push(new c(V.segment[1][1], V.index, !0, !1)), B.push(new c(V.segment[0][1], V.index, !1, !0)))) : V.create ? h = h.insert(V.segment, V.index) : h = h.remove(V.segment);
                          }
                          E.push(h.root), w.push(O), z.push(B);
                        }
                        return new o(E, w, z);
                      }
                    }
                  ),
                  /***/
                  5202: (
                    /***/
                    function(p, u, t) {
                      var r = t(1944), i = t(8210);
                      p.exports = o, p.exports.positive = y, p.exports.negative = g;
                      function a(x, c) {
                        var v = i(r(x, c), [c[c.length - 1]]);
                        return v[v.length - 1];
                      }
                      function l(x, c, v, f) {
                        var _ = f - c, S = -c / _;
                        S < 0 ? S = 0 : S > 1 && (S = 1);
                        for (var M = 1 - S, C = x.length, m = new Array(C), L = 0; L < C; ++L)
                          m[L] = S * x[L] + M * v[L];
                        return m;
                      }
                      function o(x, c) {
                        for (var v = [], f = [], _ = a(x[x.length - 1], c), S = x[x.length - 1], M = x[0], C = 0; C < x.length; ++C, S = M) {
                          M = x[C];
                          var m = a(M, c);
                          if (_ < 0 && m > 0 || _ > 0 && m < 0) {
                            var L = l(S, m, M, _);
                            v.push(L), f.push(L.slice());
                          }
                          m < 0 ? f.push(M.slice()) : m > 0 ? v.push(M.slice()) : (v.push(M.slice()), f.push(M.slice())), _ = m;
                        }
                        return { positive: v, negative: f };
                      }
                      function y(x, c) {
                        for (var v = [], f = a(x[x.length - 1], c), _ = x[x.length - 1], S = x[0], M = 0; M < x.length; ++M, _ = S) {
                          S = x[M];
                          var C = a(S, c);
                          (f < 0 && C > 0 || f > 0 && C < 0) && v.push(l(_, C, S, f)), C >= 0 && v.push(S.slice()), f = C;
                        }
                        return v;
                      }
                      function g(x, c) {
                        for (var v = [], f = a(x[x.length - 1], c), _ = x[x.length - 1], S = x[0], M = 0; M < x.length; ++M, _ = S) {
                          S = x[M];
                          var C = a(S, c);
                          (f < 0 && C > 0 || f > 0 && C < 0) && v.push(l(_, C, S, f)), C <= 0 && v.push(S.slice()), f = C;
                        }
                        return v;
                      }
                    }
                  ),
                  /***/
                  3387: (
                    /***/
                    function(p, u, t) {
                      var r;
                      (function() {
                        var i = { not_string: /[^s]/, not_bool: /[^t]/, not_type: /[^T]/, not_primitive: /[^v]/, number: /[diefg]/, numeric_arg: /[bcdiefguxX]/, json: /[j]/, not_json: /[^j]/, text: /^[^\x25]+/, modulo: /^\x25{2}/, placeholder: /^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/, key: /^([a-z_][a-z_\d]*)/i, key_access: /^\.([a-z_][a-z_\d]*)/i, index_access: /^\[(\d+)\]/, sign: /^[+-]/ };
                        function a(x) {
                          return o(g(x), arguments);
                        }
                        function l(x, c) {
                          return a.apply(null, [x].concat(c || []));
                        }
                        function o(x, c) {
                          var v = 1, f = x.length, _, S = "", M, C, m, L, d, h, E, w;
                          for (M = 0; M < f; M++)
                            if (typeof x[M] == "string")
                              S += x[M];
                            else if (typeof x[M] == "object") {
                              if (m = x[M], m.keys)
                                for (_ = c[v], C = 0; C < m.keys.length; C++) {
                                  if (_ == null)
                                    throw new Error(a('[sprintf] Cannot access property "%s" of undefined value "%s"', m.keys[C], m.keys[C - 1]));
                                  _ = _[m.keys[C]];
                                }
                              else m.param_no ? _ = c[m.param_no] : _ = c[v++];
                              if (i.not_type.test(m.type) && i.not_primitive.test(m.type) && _ instanceof Function && (_ = _()), i.numeric_arg.test(m.type) && typeof _ != "number" && isNaN(_))
                                throw new TypeError(a("[sprintf] expecting number but found %T", _));
                              switch (i.number.test(m.type) && (E = _ >= 0), m.type) {
                                case "b":
                                  _ = parseInt(_, 10).toString(2);
                                  break;
                                case "c":
                                  _ = String.fromCharCode(parseInt(_, 10));
                                  break;
                                case "d":
                                case "i":
                                  _ = parseInt(_, 10);
                                  break;
                                case "j":
                                  _ = JSON.stringify(_, null, m.width ? parseInt(m.width) : 0);
                                  break;
                                case "e":
                                  _ = m.precision ? parseFloat(_).toExponential(m.precision) : parseFloat(_).toExponential();
                                  break;
                                case "f":
                                  _ = m.precision ? parseFloat(_).toFixed(m.precision) : parseFloat(_);
                                  break;
                                case "g":
                                  _ = m.precision ? String(Number(_.toPrecision(m.precision))) : parseFloat(_);
                                  break;
                                case "o":
                                  _ = (parseInt(_, 10) >>> 0).toString(8);
                                  break;
                                case "s":
                                  _ = String(_), _ = m.precision ? _.substring(0, m.precision) : _;
                                  break;
                                case "t":
                                  _ = String(!!_), _ = m.precision ? _.substring(0, m.precision) : _;
                                  break;
                                case "T":
                                  _ = Object.prototype.toString.call(_).slice(8, -1).toLowerCase(), _ = m.precision ? _.substring(0, m.precision) : _;
                                  break;
                                case "u":
                                  _ = parseInt(_, 10) >>> 0;
                                  break;
                                case "v":
                                  _ = _.valueOf(), _ = m.precision ? _.substring(0, m.precision) : _;
                                  break;
                                case "x":
                                  _ = (parseInt(_, 10) >>> 0).toString(16);
                                  break;
                                case "X":
                                  _ = (parseInt(_, 10) >>> 0).toString(16).toUpperCase();
                                  break;
                              }
                              i.json.test(m.type) ? S += _ : (i.number.test(m.type) && (!E || m.sign) ? (w = E ? "+" : "-", _ = _.toString().replace(i.sign, "")) : w = "", d = m.pad_char ? m.pad_char === "0" ? "0" : m.pad_char.charAt(1) : " ", h = m.width - (w + _).length, L = m.width && h > 0 ? d.repeat(h) : "", S += m.align ? w + _ + L : d === "0" ? w + L + _ : L + w + _);
                            }
                          return S;
                        }
                        var y = /* @__PURE__ */ Object.create(null);
                        function g(x) {
                          if (y[x])
                            return y[x];
                          for (var c = x, v, f = [], _ = 0; c; ) {
                            if ((v = i.text.exec(c)) !== null)
                              f.push(v[0]);
                            else if ((v = i.modulo.exec(c)) !== null)
                              f.push("%");
                            else if ((v = i.placeholder.exec(c)) !== null) {
                              if (v[2]) {
                                _ |= 1;
                                var S = [], M = v[2], C = [];
                                if ((C = i.key.exec(M)) !== null)
                                  for (S.push(C[1]); (M = M.substring(C[0].length)) !== ""; )
                                    if ((C = i.key_access.exec(M)) !== null)
                                      S.push(C[1]);
                                    else if ((C = i.index_access.exec(M)) !== null)
                                      S.push(C[1]);
                                    else
                                      throw new SyntaxError("[sprintf] failed to parse named argument key");
                                else
                                  throw new SyntaxError("[sprintf] failed to parse named argument key");
                                v[2] = S;
                              } else
                                _ |= 2;
                              if (_ === 3)
                                throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");
                              f.push({ placeholder: v[0], param_no: v[1], keys: v[2], sign: v[3], pad_char: v[4], align: v[5], width: v[6], precision: v[7], type: v[8] });
                            } else
                              throw new SyntaxError("[sprintf] unexpected placeholder");
                            c = c.substring(v[0].length);
                          }
                          return y[x] = f;
                        }
                        u.sprintf = a, u.vsprintf = l, typeof window < "u" && (window.sprintf = a, window.vsprintf = l, r = (function() {
                          return { sprintf: a, vsprintf: l };
                        }).call(u, t, u, p), r !== void 0 && (p.exports = r));
                      })();
                    }
                  ),
                  /***/
                  3711: (
                    /***/
                    function(p, u, t) {
                      p.exports = g;
                      var r = t(2640), i = t(781), a = { "2d": function(x, c, v) {
                        var f = x({ order: c, scalarArguments: 3, getters: v === "generic" ? [0] : void 0, phase: function(S, M, C, m) {
                          return S > m | 0;
                        }, vertex: function(S, M, C, m, L, d, h, E, w, z, O, B, V) {
                          var U = (h << 0) + (E << 1) + (w << 2) + (z << 3) | 0;
                          if (!(U === 0 || U === 15))
                            switch (U) {
                              case 0:
                                O.push([S - 0.5, M - 0.5]);
                                break;
                              case 1:
                                O.push([S - 0.25 - 0.25 * (m + C - 2 * V) / (C - m), M - 0.25 - 0.25 * (L + C - 2 * V) / (C - L)]);
                                break;
                              case 2:
                                O.push([S - 0.75 - 0.25 * (-m - C + 2 * V) / (m - C), M - 0.25 - 0.25 * (d + m - 2 * V) / (m - d)]);
                                break;
                              case 3:
                                O.push([S - 0.5, M - 0.5 - 0.5 * (L + C + d + m - 4 * V) / (C - L + m - d)]);
                                break;
                              case 4:
                                O.push([S - 0.25 - 0.25 * (d + L - 2 * V) / (L - d), M - 0.75 - 0.25 * (-L - C + 2 * V) / (L - C)]);
                                break;
                              case 5:
                                O.push([S - 0.5 - 0.5 * (m + C + d + L - 4 * V) / (C - m + L - d), M - 0.5]);
                                break;
                              case 6:
                                O.push([S - 0.5 - 0.25 * (-m - C + d + L) / (m - C + L - d), M - 0.5 - 0.25 * (-L - C + d + m) / (L - C + m - d)]);
                                break;
                              case 7:
                                O.push([S - 0.75 - 0.25 * (d + L - 2 * V) / (L - d), M - 0.75 - 0.25 * (d + m - 2 * V) / (m - d)]);
                                break;
                              case 8:
                                O.push([S - 0.75 - 0.25 * (-d - L + 2 * V) / (d - L), M - 0.75 - 0.25 * (-d - m + 2 * V) / (d - m)]);
                                break;
                              case 9:
                                O.push([S - 0.5 - 0.25 * (m + C + -d - L) / (C - m + d - L), M - 0.5 - 0.25 * (L + C + -d - m) / (C - L + d - m)]);
                                break;
                              case 10:
                                O.push([S - 0.5 - 0.5 * (-m - C + -d - L + 4 * V) / (m - C + d - L), M - 0.5]);
                                break;
                              case 11:
                                O.push([S - 0.25 - 0.25 * (-d - L + 2 * V) / (d - L), M - 0.75 - 0.25 * (L + C - 2 * V) / (C - L)]);
                                break;
                              case 12:
                                O.push([S - 0.5, M - 0.5 - 0.5 * (-L - C + -d - m + 4 * V) / (L - C + d - m)]);
                                break;
                              case 13:
                                O.push([S - 0.75 - 0.25 * (m + C - 2 * V) / (C - m), M - 0.25 - 0.25 * (-d - m + 2 * V) / (d - m)]);
                                break;
                              case 14:
                                O.push([S - 0.25 - 0.25 * (-m - C + 2 * V) / (m - C), M - 0.25 - 0.25 * (-L - C + 2 * V) / (L - C)]);
                                break;
                              case 15:
                                O.push([S - 0.5, M - 0.5]);
                                break;
                            }
                        }, cell: function(S, M, C, m, L, d, h, E, w) {
                          L ? E.push([S, M]) : E.push([M, S]);
                        } });
                        return function(_, S) {
                          var M = [], C = [];
                          return f(_, M, C, S), { positions: M, cells: C };
                        };
                      } };
                      function l(x, c) {
                        var v = x.length + "d", f = a[v];
                        if (f) return f(r, x, c);
                      }
                      function o(x, c) {
                        for (var v = i(x, c), f = v.length, _ = new Array(f), S = new Array(f), M = 0; M < f; ++M)
                          _[M] = [v[M]], S[M] = [M];
                        return { positions: _, cells: S };
                      }
                      var y = {};
                      function g(x, _) {
                        if (x.dimension <= 0)
                          return { positions: [], cells: [] };
                        if (x.dimension === 1)
                          return o(x, _);
                        var v = x.order.join() + "-" + x.dtype, f = y[v], _ = +_ || 0;
                        return f || (f = y[v] = l(x.order, x.dtype)), f(x, _);
                      }
                    }
                  ),
                  /***/
                  529: (
                    /***/
                    function(p, u, t) {
                      p.exports = o;
                      var r = t(4359), i = window || P.global || {}, a = i.__TEXT_CACHE || {};
                      i.__TEXT_CACHE = {};
                      function l(y) {
                        for (var g = y.cells, x = y.positions, c = new Float32Array(g.length * 6), v = 0, f = 0, _ = 0; _ < g.length; ++_)
                          for (var S = g[_], M = 0; M < 3; ++M) {
                            var C = x[S[M]];
                            c[v++] = C[0], c[v++] = C[1] + 1.4, f = Math.max(C[0], f);
                          }
                        return { data: c, shape: f };
                      }
                      function o(y, g, c) {
                        var c = c || {}, v = c.fontStyle || "normal", f = c.fontWeight || "normal", _ = c.fontVariant || "normal", S = [v, f, _, y].join("_"), M = a[S];
                        M || (M = a[S] = { " ": { data: new Float32Array(0), shape: 0.2 } });
                        var C = M[g];
                        if (!C)
                          if (g.length <= 1 || !/\d/.test(g))
                            C = M[g] = l(r(g, { triangles: !0, font: y, fontStyle: v, fontWeight: f, fontVariant: _, textAlign: c.textAlign || "left", textBaseline: "alphabetic", styletags: { breaklines: !0, bolds: !0, italics: !0, subscripts: !0, superscripts: !0 } }));
                          else {
                            for (var m = g.split(/(\d|\s)/), L = new Array(m.length), d = 0, h = 0, E = 0; E < m.length; ++E)
                              L[E] = o(y, m[E]), d += L[E].data.length, h += L[E].shape, E > 0 && (h += 0.02);
                            for (var w = new Float32Array(d), z = 0, O = -0.5 * h, E = 0; E < L.length; ++E) {
                              for (var B = L[E].data, V = 0; V < B.length; V += 2)
                                w[z++] = B[V] + O, w[z++] = B[V + 1];
                              O += L[E].shape + 0.02;
                            }
                            C = M[g] = { data: w, shape: h };
                          }
                        return C;
                      }
                    }
                  ),
                  /***/
                  665: (
                    /***/
                    function(p, u, t) {
                      var r = t(3202);
                      p.exports = o;
                      var i = 96;
                      function a(y, g) {
                        var x = r(getComputedStyle(y).getPropertyValue(g));
                        return x[0] * o(x[1], y);
                      }
                      function l(y, g) {
                        var x = document.createElement("div");
                        x.style["font-size"] = "128" + y, g.appendChild(x);
                        var c = a(x, "font-size") / 128;
                        return g.removeChild(x), c;
                      }
                      function o(y, g) {
                        switch (g = g || document.body, y = (y || "px").trim().toLowerCase(), (g === window || g === document) && (g = document.body), y) {
                          case "%":
                            return g.clientHeight / 100;
                          case "ch":
                          case "ex":
                            return l(y, g);
                          case "em":
                            return a(g, "font-size");
                          case "rem":
                            return a(document.body, "font-size");
                          case "vw":
                            return window.innerWidth / 100;
                          case "vh":
                            return window.innerHeight / 100;
                          case "vmin":
                            return Math.min(window.innerWidth, window.innerHeight) / 100;
                          case "vmax":
                            return Math.max(window.innerWidth, window.innerHeight) / 100;
                          case "in":
                            return i;
                          case "cm":
                            return i / 2.54;
                          case "mm":
                            return i / 25.4;
                          case "pt":
                            return i / 72;
                          case "pc":
                            return i / 6;
                        }
                        return 1;
                      }
                    }
                  ),
                  /***/
                  7261: (
                    /***/
                    function(p, u, t) {
                      p.exports = S;
                      var r = t(9215), i = t(7608), a = t(6079), l = t(5911), o = t(3536), y = t(244);
                      function g(M, C, m) {
                        return Math.sqrt(Math.pow(M, 2) + Math.pow(C, 2) + Math.pow(m, 2));
                      }
                      function x(M) {
                        return Math.min(1, Math.max(-1, M));
                      }
                      function c(M) {
                        var C = Math.abs(M[0]), m = Math.abs(M[1]), L = Math.abs(M[2]), d = [0, 0, 0];
                        C > Math.max(m, L) ? d[2] = 1 : m > Math.max(C, L) ? d[0] = 1 : d[1] = 1;
                        for (var h = 0, E = 0, w = 0; w < 3; ++w)
                          h += M[w] * M[w], E += d[w] * M[w];
                        for (var w = 0; w < 3; ++w)
                          d[w] -= E / h * M[w];
                        return o(d, d), d;
                      }
                      function v(M, C, m, L, d, h, E, w) {
                        this.center = r(m), this.up = r(L), this.right = r(d), this.radius = r([h]), this.angle = r([E, w]), this.angle.bounds = [[-1 / 0, -Math.PI / 2], [1 / 0, Math.PI / 2]], this.setDistanceLimits(M, C), this.computedCenter = this.center.curve(0), this.computedUp = this.up.curve(0), this.computedRight = this.right.curve(0), this.computedRadius = this.radius.curve(0), this.computedAngle = this.angle.curve(0), this.computedToward = [0, 0, 0], this.computedEye = [0, 0, 0], this.computedMatrix = new Array(16);
                        for (var z = 0; z < 16; ++z)
                          this.computedMatrix[z] = 0.5;
                        this.recalcMatrix(0);
                      }
                      var f = v.prototype;
                      f.setDistanceLimits = function(M, C) {
                        M > 0 ? M = Math.log(M) : M = -1 / 0, C > 0 ? C = Math.log(C) : C = 1 / 0, C = Math.max(C, M), this.radius.bounds[0][0] = M, this.radius.bounds[1][0] = C;
                      }, f.getDistanceLimits = function(M) {
                        var C = this.radius.bounds[0];
                        return M ? (M[0] = Math.exp(C[0][0]), M[1] = Math.exp(C[1][0]), M) : [Math.exp(C[0][0]), Math.exp(C[1][0])];
                      }, f.recalcMatrix = function(M) {
                        this.center.curve(M), this.up.curve(M), this.right.curve(M), this.radius.curve(M), this.angle.curve(M);
                        for (var C = this.computedUp, m = this.computedRight, L = 0, d = 0, h = 0; h < 3; ++h)
                          d += C[h] * m[h], L += C[h] * C[h];
                        for (var E = Math.sqrt(L), w = 0, h = 0; h < 3; ++h)
                          m[h] -= C[h] * d / L, w += m[h] * m[h], C[h] /= E;
                        for (var z = Math.sqrt(w), h = 0; h < 3; ++h)
                          m[h] /= z;
                        var O = this.computedToward;
                        l(O, C, m), o(O, O);
                        for (var B = Math.exp(this.computedRadius[0]), V = this.computedAngle[0], U = this.computedAngle[1], H = Math.cos(V), F = Math.sin(V), G = Math.cos(U), q = Math.sin(U), rt = this.computedCenter, st = H * G, vt = F * G, ht = q, et = -H * q, Q = -F * q, j = G, at = this.computedEye, ut = this.computedMatrix, h = 0; h < 3; ++h) {
                          var nt = st * m[h] + vt * O[h] + ht * C[h];
                          ut[4 * h + 1] = et * m[h] + Q * O[h] + j * C[h], ut[4 * h + 2] = nt, ut[4 * h + 3] = 0;
                        }
                        var X = ut[1], ct = ut[5], lt = ut[9], pt = ut[2], wt = ut[6], Et = ut[10], Ct = ct * Et - lt * wt, Gt = lt * pt - X * Et, Jt = X * wt - ct * pt, Qt = g(Ct, Gt, Jt);
                        Ct /= Qt, Gt /= Qt, Jt /= Qt, ut[0] = Ct, ut[4] = Gt, ut[8] = Jt;
                        for (var h = 0; h < 3; ++h)
                          at[h] = rt[h] + ut[2 + 4 * h] * B;
                        for (var h = 0; h < 3; ++h) {
                          for (var w = 0, Vt = 0; Vt < 3; ++Vt)
                            w += ut[h + 4 * Vt] * at[Vt];
                          ut[12 + h] = -w;
                        }
                        ut[15] = 1;
                      }, f.getMatrix = function(M, C) {
                        this.recalcMatrix(M);
                        var m = this.computedMatrix;
                        if (C) {
                          for (var L = 0; L < 16; ++L)
                            C[L] = m[L];
                          return C;
                        }
                        return m;
                      };
                      var _ = [0, 0, 0];
                      f.rotate = function(M, C, m, L) {
                        if (this.angle.move(M, C, m), L) {
                          this.recalcMatrix(M);
                          var d = this.computedMatrix;
                          _[0] = d[2], _[1] = d[6], _[2] = d[10];
                          for (var h = this.computedUp, E = this.computedRight, w = this.computedToward, z = 0; z < 3; ++z)
                            d[4 * z] = h[z], d[4 * z + 1] = E[z], d[4 * z + 2] = w[z];
                          a(d, d, L, _);
                          for (var z = 0; z < 3; ++z)
                            h[z] = d[4 * z], E[z] = d[4 * z + 1];
                          this.up.set(M, h[0], h[1], h[2]), this.right.set(M, E[0], E[1], E[2]);
                        }
                      }, f.pan = function(M, C, m, L) {
                        C = C || 0, m = m || 0, L = L || 0, this.recalcMatrix(M);
                        var d = this.computedMatrix;
                        Math.exp(this.computedRadius[0]);
                        var h = d[1], E = d[5], w = d[9], z = g(h, E, w);
                        h /= z, E /= z, w /= z;
                        var O = d[0], B = d[4], V = d[8], U = O * h + B * E + V * w;
                        O -= h * U, B -= E * U, V -= w * U;
                        var H = g(O, B, V);
                        O /= H, B /= H, V /= H;
                        var F = O * C + h * m, G = B * C + E * m, q = V * C + w * m;
                        this.center.move(M, F, G, q);
                        var rt = Math.exp(this.computedRadius[0]);
                        rt = Math.max(1e-4, rt + L), this.radius.set(M, Math.log(rt));
                      }, f.translate = function(M, C, m, L) {
                        this.center.move(M, C || 0, m || 0, L || 0);
                      }, f.setMatrix = function(M, C, m, L) {
                        var d = 1;
                        typeof m == "number" && (d = m | 0), (d < 0 || d > 3) && (d = 1);
                        var h = (d + 2) % 3;
                        C || (this.recalcMatrix(M), C = this.computedMatrix);
                        var E = C[d], w = C[d + 4], z = C[d + 8];
                        if (L) {
                          var B = Math.abs(E), V = Math.abs(w), U = Math.abs(z), H = Math.max(B, V, U);
                          B === H ? (E = E < 0 ? -1 : 1, w = z = 0) : U === H ? (z = z < 0 ? -1 : 1, E = w = 0) : (w = w < 0 ? -1 : 1, E = z = 0);
                        } else {
                          var O = g(E, w, z);
                          E /= O, w /= O, z /= O;
                        }
                        var F = C[h], G = C[h + 4], q = C[h + 8], rt = F * E + G * w + q * z;
                        F -= E * rt, G -= w * rt, q -= z * rt;
                        var st = g(F, G, q);
                        F /= st, G /= st, q /= st;
                        var vt = w * q - z * G, ht = z * F - E * q, et = E * G - w * F, Q = g(vt, ht, et);
                        vt /= Q, ht /= Q, et /= Q, this.center.jump(M, kt, re, ge), this.radius.idle(M), this.up.jump(M, E, w, z), this.right.jump(M, F, G, q);
                        var j, at;
                        if (d === 2) {
                          var ut = C[1], nt = C[5], X = C[9], ct = ut * F + nt * G + X * q, lt = ut * vt + nt * ht + X * et;
                          Ct < 0 ? j = -Math.PI / 2 : j = Math.PI / 2, at = Math.atan2(lt, ct);
                        } else {
                          var pt = C[2], wt = C[6], Et = C[10], Ct = pt * E + wt * w + Et * z, Gt = pt * F + wt * G + Et * q, Jt = pt * vt + wt * ht + Et * et;
                          j = Math.asin(x(Ct)), at = Math.atan2(Jt, Gt);
                        }
                        this.angle.jump(M, at, j), this.recalcMatrix(M);
                        var Qt = C[2], Vt = C[6], zt = C[10], Rt = this.computedMatrix;
                        i(Rt, C);
                        var Wt = Rt[15], kt = Rt[12] / Wt, re = Rt[13] / Wt, ge = Rt[14] / Wt, _e = Math.exp(this.computedRadius[0]);
                        this.center.jump(M, kt - Qt * _e, re - Vt * _e, ge - zt * _e);
                      }, f.lastT = function() {
                        return Math.max(this.center.lastT(), this.up.lastT(), this.right.lastT(), this.radius.lastT(), this.angle.lastT());
                      }, f.idle = function(M) {
                        this.center.idle(M), this.up.idle(M), this.right.idle(M), this.radius.idle(M), this.angle.idle(M);
                      }, f.flush = function(M) {
                        this.center.flush(M), this.up.flush(M), this.right.flush(M), this.radius.flush(M), this.angle.flush(M);
                      }, f.setDistance = function(M, C) {
                        C > 0 && this.radius.set(M, Math.log(C));
                      }, f.lookAt = function(M, C, m, L) {
                        this.recalcMatrix(M), C = C || this.computedEye, m = m || this.computedCenter, L = L || this.computedUp;
                        var d = L[0], h = L[1], E = L[2], w = g(d, h, E);
                        if (!(w < 1e-6)) {
                          d /= w, h /= w, E /= w;
                          var z = C[0] - m[0], O = C[1] - m[1], B = C[2] - m[2], V = g(z, O, B);
                          if (!(V < 1e-6)) {
                            z /= V, O /= V, B /= V;
                            var U = this.computedRight, H = U[0], F = U[1], G = U[2], q = d * H + h * F + E * G;
                            H -= q * d, F -= q * h, G -= q * E;
                            var rt = g(H, F, G);
                            if (!(rt < 0.01 && (H = h * B - E * O, F = E * z - d * B, G = d * O - h * z, rt = g(H, F, G), rt < 1e-6))) {
                              H /= rt, F /= rt, G /= rt, this.up.set(M, d, h, E), this.right.set(M, H, F, G), this.center.set(M, m[0], m[1], m[2]), this.radius.set(M, Math.log(V));
                              var st = h * G - E * F, vt = E * H - d * G, ht = d * F - h * H, et = g(st, vt, ht);
                              st /= et, vt /= et, ht /= et;
                              var Q = d * z + h * O + E * B, j = H * z + F * O + G * B, at = st * z + vt * O + ht * B, ut = Math.asin(x(Q)), nt = Math.atan2(at, j), X = this.angle._state, ct = X[X.length - 1], lt = X[X.length - 2];
                              ct = ct % (2 * Math.PI);
                              var pt = Math.abs(ct + 2 * Math.PI - nt), wt = Math.abs(ct - nt), Et = Math.abs(ct - 2 * Math.PI - nt);
                              pt < wt && (ct += 2 * Math.PI), Et < wt && (ct -= 2 * Math.PI), this.angle.jump(this.angle.lastT(), ct, lt), this.angle.set(M, nt, ut);
                            }
                          }
                        }
                      };
                      function S(M) {
                        M = M || {};
                        var C = M.center || [0, 0, 0], m = M.up || [0, 1, 0], L = M.right || c(m), d = M.radius || 1, h = M.theta || 0, E = M.phi || 0;
                        if (C = [].slice.call(C, 0, 3), m = [].slice.call(m, 0, 3), o(m, m), L = [].slice.call(L, 0, 3), o(L, L), "eye" in M) {
                          var w = M.eye, z = [w[0] - C[0], w[1] - C[1], w[2] - C[2]];
                          l(L, z, m), g(L[0], L[1], L[2]) < 1e-6 ? L = c(m) : o(L, L), d = g(z[0], z[1], z[2]);
                          var O = y(m, z) / d, B = y(L, z) / d;
                          E = Math.acos(O), h = Math.acos(B);
                        }
                        return d = Math.log(d), new v(M.zoomMin, M.zoomMax, C, m, L, d, h, E);
                      }
                    }
                  ),
                  /***/
                  5250: (
                    /***/
                    function(p) {
                      p.exports = t;
                      var u = +(Math.pow(2, 27) + 1);
                      function t(r, i, a) {
                        var l = r * i, o = u * r, y = o - r, g = o - y, x = r - g, c = u * i, v = c - i, f = c - v, _ = i - f, S = l - g * f, M = S - x * f, C = M - g * _, m = x * _ - C;
                        return a ? (a[0] = m, a[1] = l, a) : [m, l];
                      }
                    }
                  ),
                  /***/
                  9362: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r, i) {
                        var a = t + r, l = a - t, o = a - l, y = r - l, g = t - o;
                        return i ? (i[0] = g + y, i[1] = a, i) : [g + y, a];
                      }
                    }
                  ),
                  /***/
                  1888: (
                    /***/
                    function(p, u, t) {
                      var r = t(8828), i = t(1338), a = t(4793).hp;
                      t.g.__TYPEDARRAY_POOL || (t.g.__TYPEDARRAY_POOL = { UINT8: i([32, 0]), UINT16: i([32, 0]), UINT32: i([32, 0]), BIGUINT64: i([32, 0]), INT8: i([32, 0]), INT16: i([32, 0]), INT32: i([32, 0]), BIGINT64: i([32, 0]), FLOAT: i([32, 0]), DOUBLE: i([32, 0]), DATA: i([32, 0]), UINT8C: i([32, 0]), BUFFER: i([32, 0]) });
                      var l = typeof Uint8ClampedArray < "u", o = typeof BigUint64Array < "u", y = typeof BigInt64Array < "u", g = t.g.__TYPEDARRAY_POOL;
                      g.UINT8C || (g.UINT8C = i([32, 0])), g.BIGUINT64 || (g.BIGUINT64 = i([32, 0])), g.BIGINT64 || (g.BIGINT64 = i([32, 0])), g.BUFFER || (g.BUFFER = i([32, 0]));
                      var x = g.DATA, c = g.BUFFER;
                      u.free = function(H) {
                        if (a.isBuffer(H))
                          c[r.log2(H.length)].push(H);
                        else {
                          if (Object.prototype.toString.call(H) !== "[object ArrayBuffer]" && (H = H.buffer), !H)
                            return;
                          var F = H.length || H.byteLength, G = r.log2(F) | 0;
                          x[G].push(H);
                        }
                      };
                      function v(U) {
                        if (U) {
                          var H = U.length || U.byteLength, F = r.log2(H);
                          x[F].push(U);
                        }
                      }
                      function f(U) {
                        v(U.buffer);
                      }
                      u.freeUint8 = u.freeUint16 = u.freeUint32 = u.freeBigUint64 = u.freeInt8 = u.freeInt16 = u.freeInt32 = u.freeBigInt64 = u.freeFloat32 = u.freeFloat = u.freeFloat64 = u.freeDouble = u.freeUint8Clamped = u.freeDataView = f, u.freeArrayBuffer = v, u.freeBuffer = function(H) {
                        c[r.log2(H.length)].push(H);
                      }, u.malloc = function(H, F) {
                        if (F === void 0 || F === "arraybuffer")
                          return _(H);
                        switch (F) {
                          case "uint8":
                            return S(H);
                          case "uint16":
                            return M(H);
                          case "uint32":
                            return C(H);
                          case "int8":
                            return m(H);
                          case "int16":
                            return L(H);
                          case "int32":
                            return d(H);
                          case "float":
                          case "float32":
                            return h(H);
                          case "double":
                          case "float64":
                            return E(H);
                          case "uint8_clamped":
                            return w(H);
                          case "bigint64":
                            return O(H);
                          case "biguint64":
                            return z(H);
                          case "buffer":
                            return V(H);
                          case "data":
                          case "dataview":
                            return B(H);
                          default:
                            return null;
                        }
                        return null;
                      };
                      function _(H) {
                        var H = r.nextPow2(H), F = r.log2(H), G = x[F];
                        return G.length > 0 ? G.pop() : new ArrayBuffer(H);
                      }
                      u.mallocArrayBuffer = _;
                      function S(U) {
                        return new Uint8Array(_(U), 0, U);
                      }
                      u.mallocUint8 = S;
                      function M(U) {
                        return new Uint16Array(_(2 * U), 0, U);
                      }
                      u.mallocUint16 = M;
                      function C(U) {
                        return new Uint32Array(_(4 * U), 0, U);
                      }
                      u.mallocUint32 = C;
                      function m(U) {
                        return new Int8Array(_(U), 0, U);
                      }
                      u.mallocInt8 = m;
                      function L(U) {
                        return new Int16Array(_(2 * U), 0, U);
                      }
                      u.mallocInt16 = L;
                      function d(U) {
                        return new Int32Array(_(4 * U), 0, U);
                      }
                      u.mallocInt32 = d;
                      function h(U) {
                        return new Float32Array(_(4 * U), 0, U);
                      }
                      u.mallocFloat32 = u.mallocFloat = h;
                      function E(U) {
                        return new Float64Array(_(8 * U), 0, U);
                      }
                      u.mallocFloat64 = u.mallocDouble = E;
                      function w(U) {
                        return l ? new Uint8ClampedArray(_(U), 0, U) : S(U);
                      }
                      u.mallocUint8Clamped = w;
                      function z(U) {
                        return o ? new BigUint64Array(_(8 * U), 0, U) : null;
                      }
                      u.mallocBigUint64 = z;
                      function O(U) {
                        return y ? new BigInt64Array(_(8 * U), 0, U) : null;
                      }
                      u.mallocBigInt64 = O;
                      function B(U) {
                        return new DataView(_(U), 0, U);
                      }
                      u.mallocDataView = B;
                      function V(U) {
                        U = r.nextPow2(U);
                        var H = r.log2(U), F = c[H];
                        return F.length > 0 ? F.pop() : new a(U);
                      }
                      u.mallocBuffer = V, u.clearCache = function() {
                        for (var H = 0; H < 32; ++H)
                          g.UINT8[H].length = 0, g.UINT16[H].length = 0, g.UINT32[H].length = 0, g.INT8[H].length = 0, g.INT16[H].length = 0, g.INT32[H].length = 0, g.FLOAT[H].length = 0, g.DOUBLE[H].length = 0, g.BIGUINT64[H].length = 0, g.BIGINT64[H].length = 0, g.UINT8C[H].length = 0, x[H].length = 0, c[H].length = 0;
                      };
                    }
                  ),
                  /***/
                  1755: (
                    /***/
                    function(p) {
                      "use restrict";
                      p.exports = u;
                      function u(r) {
                        this.roots = new Array(r), this.ranks = new Array(r);
                        for (var i = 0; i < r; ++i)
                          this.roots[i] = i, this.ranks[i] = 0;
                      }
                      var t = u.prototype;
                      Object.defineProperty(t, "length", { get: function() {
                        return this.roots.length;
                      } }), t.makeSet = function() {
                        var r = this.roots.length;
                        return this.roots.push(r), this.ranks.push(0), r;
                      }, t.find = function(r) {
                        for (var i = r, a = this.roots; a[r] !== r; )
                          r = a[r];
                        for (; a[i] !== r; ) {
                          var l = a[i];
                          a[i] = r, i = l;
                        }
                        return r;
                      }, t.link = function(r, i) {
                        var a = this.find(r), l = this.find(i);
                        if (a !== l) {
                          var o = this.ranks, y = this.roots, g = o[a], x = o[l];
                          g < x ? y[a] = l : x < g ? y[l] = a : (y[l] = a, ++o[a]);
                        }
                      };
                    }
                  ),
                  /***/
                  1682: (
                    /***/
                    function(p) {
                      function u(i, a) {
                        for (var l = 1, o = i.length, y = i[0], g = i[0], x = 1; x < o; ++x)
                          if (g = y, y = i[x], a(y, g)) {
                            if (x === l) {
                              l++;
                              continue;
                            }
                            i[l++] = y;
                          }
                        return i.length = l, i;
                      }
                      function t(i) {
                        for (var a = 1, l = i.length, o = i[0], y = i[0], g = 1; g < l; ++g, y = o)
                          if (y = o, o = i[g], o !== y) {
                            if (g === a) {
                              a++;
                              continue;
                            }
                            i[a++] = o;
                          }
                        return i.length = a, i;
                      }
                      function r(i, a, l) {
                        return i.length === 0 ? i : a ? (l || i.sort(a), u(i, a)) : (l || i.sort(), t(i));
                      }
                      p.exports = r;
                    }
                  ),
                  /***/
                  4359: (
                    /***/
                    function(p, u, t) {
                      p.exports = l;
                      var r = t(7718), i = null, a = null;
                      typeof document < "u" && (i = document.createElement("canvas"), i.width = 8192, i.height = 1024, a = i.getContext("2d"));
                      function l(o, y) {
                        return (typeof y != "object" || y === null) && (y = {}), r(o, y.canvas || i, y.context || a, y);
                      }
                    }
                  ),
                  /***/
                  7718: (
                    /***/
                    function(p, u, t) {
                      p.exports = O, p.exports.processPixels = z;
                      var r = t(3711), i = t(9618), a = t(5878), l = t(332), o = t(2538), y = t(2095), g = "b", x = "b|", c = "i", v = "i|", f = "sup", _ = "+", S = "+1", M = "sub", C = "-", m = "-1";
                      function L(B, V, U, H) {
                        for (var F = "<" + B + ">", G = "</" + B + ">", q = F.length, rt = G.length, st = V[0] === _ || V[0] === C, vt = 0, ht = -rt; vt > -1 && (vt = U.indexOf(F, vt), !(vt === -1 || (ht = U.indexOf(G, vt + q), ht === -1) || ht <= vt)); ) {
                          for (var et = vt; et < ht + rt; ++et)
                            if (et < vt + q || et >= ht)
                              H[et] = null, U = U.substr(0, et) + " " + U.substr(et + 1);
                            else if (H[et] !== null) {
                              var Q = H[et].indexOf(V[0]);
                              Q === -1 ? H[et] += V : st && (H[et] = H[et].substr(0, Q + 1) + (1 + parseInt(H[et][Q + 1])) + H[et].substr(Q + 2));
                            }
                          var j = vt + q, at = U.substr(j, ht - j), ut = at.indexOf(F);
                          ut !== -1 ? vt = ut : vt = ht + rt;
                        }
                        return H;
                      }
                      function d(B, V, U) {
                        for (var H = V.textAlign || "start", F = V.textBaseline || "alphabetic", G = [1 << 30, 1 << 30], q = [0, 0], rt = B.length, st = 0; st < rt; ++st)
                          for (var vt = B[st], ht = 0; ht < 2; ++ht)
                            G[ht] = Math.min(G[ht], vt[ht]) | 0, q[ht] = Math.max(q[ht], vt[ht]) | 0;
                        var et = 0;
                        switch (H) {
                          case "center":
                            et = -0.5 * (G[0] + q[0]);
                            break;
                          case "right":
                          case "end":
                            et = -q[0];
                            break;
                          case "left":
                          case "start":
                            et = -G[0];
                            break;
                          default:
                            throw new Error("vectorize-text: Unrecognized textAlign: '" + H + "'");
                        }
                        var Q = 0;
                        switch (F) {
                          case "hanging":
                          case "top":
                            Q = -G[1];
                            break;
                          case "middle":
                            Q = -0.5 * (G[1] + q[1]);
                            break;
                          case "alphabetic":
                          case "ideographic":
                            Q = -3 * U;
                            break;
                          case "bottom":
                            Q = -q[1];
                            break;
                          default:
                            throw new Error("vectorize-text: Unrecoginized textBaseline: '" + F + "'");
                        }
                        var j = 1 / U;
                        return "lineHeight" in V ? j *= +V.lineHeight : "width" in V ? j = V.width / (q[0] - G[0]) : "height" in V && (j = V.height / (q[1] - G[1])), B.map(function(at) {
                          return [j * (at[0] + et), j * (at[1] + Q)];
                        });
                      }
                      function h(B, V, U, H, F, G) {
                        U = U.replace(/\n/g, ""), G.breaklines === !0 ? U = U.replace(/\<br\>/g, `
`) : U = U.replace(/\<br\>/g, " ");
                        var q = "", rt = [];
                        for (ct = 0; ct < U.length; ++ct)
                          rt[ct] = q;
                        G.bolds === !0 && (rt = L(g, x, U, rt)), G.italics === !0 && (rt = L(c, v, U, rt)), G.superscripts === !0 && (rt = L(f, S, U, rt)), G.subscripts === !0 && (rt = L(M, m, U, rt));
                        var st = [], vt = "";
                        for (ct = 0; ct < U.length; ++ct)
                          rt[ct] !== null && (vt += U[ct], st.push(rt[ct]));
                        var ht = vt.split(`
`), et = ht.length, Q = Math.round(F * H), j = H, at = H * 2, ut = 0, nt = et * Q + at;
                        B.height < nt && (B.height = nt), V.fillStyle = "#000", V.fillRect(0, 0, B.width, B.height), V.fillStyle = "#fff";
                        var X, ct, lt, pt, wt, Et = 0, Ct = "";
                        function Gt() {
                          if (Ct !== "") {
                            var ge = V.measureText(Ct).width;
                            V.fillText(Ct, j + lt, at + pt), lt += ge;
                          }
                        }
                        function Jt() {
                          return "" + Math.round(wt) + "px ";
                        }
                        function Qt(ge, _e) {
                          var ce = "" + V.font;
                          if (G.subscripts === !0) {
                            var ae = ge.indexOf(C), Se = _e.indexOf(C), ze = ae > -1 ? parseInt(ge[1 + ae]) : 0, Ne = Se > -1 ? parseInt(_e[1 + Se]) : 0;
                            ze !== Ne && (ce = ce.replace(Jt(), "?px "), wt *= Math.pow(0.75, Ne - ze), ce = ce.replace("?px ", Jt())), pt += 0.25 * Q * (Ne - ze);
                          }
                          if (G.superscripts === !0) {
                            var Ve = ge.indexOf(_), Oe = _e.indexOf(_), ur = Ve > -1 ? parseInt(ge[1 + Ve]) : 0, ie = Oe > -1 ? parseInt(_e[1 + Oe]) : 0;
                            ur !== ie && (ce = ce.replace(Jt(), "?px "), wt *= Math.pow(0.75, ie - ur), ce = ce.replace("?px ", Jt())), pt -= 0.25 * Q * (ie - ur);
                          }
                          if (G.bolds === !0) {
                            var $t = ge.indexOf(x) > -1, jt = _e.indexOf(x) > -1;
                            !$t && jt && (ee ? ce = ce.replace("italic ", "italic bold ") : ce = "bold " + ce), $t && !jt && (ce = ce.replace("bold ", ""));
                          }
                          if (G.italics === !0) {
                            var ee = ge.indexOf(v) > -1, Bt = _e.indexOf(v) > -1;
                            !ee && Bt && (ce = "italic " + ce), ee && !Bt && (ce = ce.replace("italic ", ""));
                          }
                          V.font = ce;
                        }
                        for (X = 0; X < et; ++X) {
                          var Vt = ht[X] + `
`;
                          for (lt = 0, pt = X * Q, wt = H, Ct = "", ct = 0; ct < Vt.length; ++ct) {
                            var zt = ct + Et < st.length ? st[ct + Et] : st[st.length - 1];
                            q === zt ? Ct += Vt[ct] : (Gt(), Ct = Vt[ct], zt !== void 0 && (Qt(q, zt), q = zt));
                          }
                          Gt(), Et += Vt.length;
                          var Rt = Math.round(lt + 2 * j) | 0;
                          ut < Rt && (ut = Rt);
                        }
                        var Wt = ut, kt = at + Q * et, re = i(V.getImageData(0, 0, Wt, kt).data, [kt, Wt, 4]);
                        return re.pick(-1, -1, 0).transpose(1, 0);
                      }
                      function E(B, V) {
                        var U = r(B, 128);
                        return V ? a(U.cells, U.positions, 0.25) : { edges: U.cells, positions: U.positions };
                      }
                      function w(B, V, U, H) {
                        var F = E(B, H), G = d(F.positions, V, U), q = F.edges, rt = V.orientation === "ccw";
                        if (l(G, q), V.polygons || V.polygon || V.polyline) {
                          for (var st = y(q, G), vt = new Array(st.length), ht = 0; ht < st.length; ++ht) {
                            for (var et = st[ht], Q = new Array(et.length), j = 0; j < et.length; ++j) {
                              for (var at = et[j], ut = new Array(at.length), nt = 0; nt < at.length; ++nt)
                                ut[nt] = G[at[nt]].slice();
                              rt && ut.reverse(), Q[j] = ut;
                            }
                            vt[ht] = Q;
                          }
                          return vt;
                        } else return V.triangles || V.triangulate || V.triangle ? { cells: o(G, q, { delaunay: !1, exterior: !1, interior: !0 }), positions: G } : { edges: q, positions: G };
                      }
                      function z(B, V, U) {
                        try {
                          return w(B, V, U, !0);
                        } catch {
                        }
                        try {
                          return w(B, V, U, !1);
                        } catch {
                        }
                        return V.polygons || V.polyline || V.polygon ? [] : V.triangles || V.triangulate || V.triangle ? { cells: [], positions: [] } : { edges: [], positions: [] };
                      }
                      function O(B, V, U, H) {
                        var F = 64, G = 1.25, q = { breaklines: !1, bolds: !1, italics: !1, subscripts: !1, superscripts: !1 };
                        H && (H.size && H.size > 0 && (F = H.size), H.lineSpacing && H.lineSpacing > 0 && (G = H.lineSpacing), H.styletags && H.styletags.breaklines && (q.breaklines = !!H.styletags.breaklines), H.styletags && H.styletags.bolds && (q.bolds = !!H.styletags.bolds), H.styletags && H.styletags.italics && (q.italics = !!H.styletags.italics), H.styletags && H.styletags.subscripts && (q.subscripts = !!H.styletags.subscripts), H.styletags && H.styletags.superscripts && (q.superscripts = !!H.styletags.superscripts)), U.font = [H.fontStyle, H.fontVariant, H.fontWeight, F + "px", H.font].filter(function(st) {
                          return st;
                        }).join(" "), U.textAlign = "start", U.textBaseline = "alphabetic", U.direction = "ltr";
                        var rt = h(V, U, B, F, G, q);
                        return z(rt, H, F);
                      }
                    }
                  ),
                  /***/
                  1538: (
                    /***/
                    function(p) {
                      (function() {
                        if (typeof ses < "u" && ses.ok && !ses.ok())
                          return;
                        function t(E) {
                          E.permitHostObjects___ && E.permitHostObjects___(t);
                        }
                        typeof ses < "u" && (ses.weakMapPermitHostObjects = t);
                        var r = !1;
                        if (typeof WeakMap == "function") {
                          var i = WeakMap;
                          if (!(typeof navigator < "u" && /Firefox/.test(navigator.userAgent))) {
                            var a = new i(), l = Object.freeze({});
                            if (a.set(l, 1), a.get(l) !== 1)
                              r = !0;
                            else {
                              p.exports = WeakMap;
                              return;
                            }
                          }
                        }
                        var o = Object.getOwnPropertyNames, y = Object.defineProperty, g = Object.isExtensible, x = "weakmap:", c = x + "ident:" + Math.random() + "___";
                        if (typeof crypto < "u" && typeof crypto.getRandomValues == "function" && typeof ArrayBuffer == "function" && typeof Uint8Array == "function") {
                          var v = new ArrayBuffer(25), f = new Uint8Array(v);
                          crypto.getRandomValues(f), c = x + "rand:" + Array.prototype.map.call(f, function(E) {
                            return (E % 36).toString(36);
                          }).join("") + "___";
                        }
                        function _(E) {
                          return !(E.substr(0, x.length) == x && E.substr(E.length - 3) === "___");
                        }
                        if (y(Object, "getOwnPropertyNames", { value: function(w) {
                          return o(w).filter(_);
                        } }), "getPropertyNames" in Object) {
                          var S = Object.getPropertyNames;
                          y(Object, "getPropertyNames", { value: function(w) {
                            return S(w).filter(_);
                          } });
                        }
                        function M(E) {
                          if (E !== Object(E))
                            throw new TypeError("Not an object: " + E);
                          var w = E[c];
                          if (w && w.key === E)
                            return w;
                          if (g(E)) {
                            w = { key: E };
                            try {
                              return y(E, c, { value: w, writable: !1, enumerable: !1, configurable: !1 }), w;
                            } catch {
                              return;
                            }
                          }
                        }
                        (function() {
                          var E = Object.freeze;
                          y(Object, "freeze", { value: function(B) {
                            return M(B), E(B);
                          } });
                          var w = Object.seal;
                          y(Object, "seal", { value: function(B) {
                            return M(B), w(B);
                          } });
                          var z = Object.preventExtensions;
                          y(Object, "preventExtensions", { value: function(B) {
                            return M(B), z(B);
                          } });
                        })();
                        function C(E) {
                          return E.prototype = null, Object.freeze(E);
                        }
                        var m = !1;
                        function L() {
                          !m && typeof console < "u" && (m = !0, console.warn("WeakMap should be invoked as new WeakMap(), not WeakMap(). This will be an error in the future."));
                        }
                        var d = 0, h = function() {
                          this instanceof h || L();
                          var E = [], w = [], z = d++;
                          function O(H, F) {
                            var G, q = M(H);
                            return q ? z in q ? q[z] : F : (G = E.indexOf(H), G >= 0 ? w[G] : F);
                          }
                          function B(H) {
                            var F = M(H);
                            return F ? z in F : E.indexOf(H) >= 0;
                          }
                          function V(H, F) {
                            var G, q = M(H);
                            return q ? q[z] = F : (G = E.indexOf(H), G >= 0 ? w[G] = F : (G = E.length, w[G] = F, E[G] = H)), this;
                          }
                          function U(H) {
                            var F = M(H), G, q;
                            return F ? z in F && delete F[z] : (G = E.indexOf(H), G < 0 ? !1 : (q = E.length - 1, E[G] = void 0, w[G] = w[q], E[G] = E[q], E.length = q, w.length = q, !0));
                          }
                          return Object.create(h.prototype, { get___: { value: C(O) }, has___: { value: C(B) }, set___: { value: C(V) }, delete___: { value: C(U) } });
                        };
                        h.prototype = Object.create(Object.prototype, { get: {
                          /**
                          * Return the value most recently associated with key, or
                          * opt_default if none.
                          */
                          value: function(w, z) {
                            return this.get___(w, z);
                          },
                          writable: !0,
                          configurable: !0
                        }, has: {
                          /**
                          * Is there a value associated with key in this WeakMap?
                          */
                          value: function(w) {
                            return this.has___(w);
                          },
                          writable: !0,
                          configurable: !0
                        }, set: {
                          /**
                          * Associate value with key in this WeakMap, overwriting any
                          * previous association if present.
                          */
                          value: function(w, z) {
                            return this.set___(w, z);
                          },
                          writable: !0,
                          configurable: !0
                        }, delete: {
                          /**
                          * Remove any association for key in this WeakMap, returning
                          * whether there was one.
                          *
                          * <p>Note that the boolean return here does not work like the
                          * {@code delete} operator. The {@code delete} operator returns
                          * whether the deletion succeeds at bringing about a state in
                          * which the deleted property is absent. The {@code delete}
                          * operator therefore returns true if the property was already
                          * absent, whereas this {@code delete} method returns false if
                          * the association was already absent.
                          */
                          value: function(w) {
                            return this.delete___(w);
                          },
                          writable: !0,
                          configurable: !0
                        } }), typeof i == "function" ? function() {
                          r && typeof Proxy < "u" && (Proxy = void 0);
                          function E() {
                            this instanceof h || L();
                            var w = new i(), z = void 0, O = !1;
                            function B(F, G) {
                              return z ? w.has(F) ? w.get(F) : z.get___(F, G) : w.get(F, G);
                            }
                            function V(F) {
                              return w.has(F) || (z ? z.has___(F) : !1);
                            }
                            var U;
                            r ? U = function(F, G) {
                              return w.set(F, G), w.has(F) || (z || (z = new h()), z.set(F, G)), this;
                            } : U = function(F, G) {
                              if (O)
                                try {
                                  w.set(F, G);
                                } catch {
                                  z || (z = new h()), z.set___(F, G);
                                }
                              else
                                w.set(F, G);
                              return this;
                            };
                            function H(F) {
                              var G = !!w.delete(F);
                              return z && z.delete___(F) || G;
                            }
                            return Object.create(h.prototype, { get___: { value: C(B) }, has___: { value: C(V) }, set___: { value: C(U) }, delete___: { value: C(H) }, permitHostObjects___: { value: C(function(F) {
                              if (F === t)
                                O = !0;
                              else
                                throw new Error("bogus call to permitHostObjects___");
                            }) } });
                          }
                          E.prototype = h.prototype, p.exports = E, Object.defineProperty(WeakMap.prototype, "constructor", {
                            value: WeakMap,
                            enumerable: !1,
                            // as default .constructor is
                            configurable: !0,
                            writable: !0
                          });
                        }() : (typeof Proxy < "u" && (Proxy = void 0), p.exports = h);
                      })();
                    }
                  ),
                  /***/
                  236: (
                    /***/
                    function(p, u, t) {
                      var r = t(8284);
                      p.exports = i;
                      function i() {
                        var a = {};
                        return function(l) {
                          if ((typeof l != "object" || l === null) && typeof l != "function")
                            throw new Error("Weakmap-shim: Key must be object");
                          var o = l.valueOf(a);
                          return o && o.identity === a ? o : r(l, a);
                        };
                      }
                    }
                  ),
                  /***/
                  8284: (
                    /***/
                    function(p) {
                      p.exports = u;
                      function u(t, r) {
                        var i = { identity: r }, a = t.valueOf;
                        return Object.defineProperty(t, "valueOf", { value: function(l) {
                          return l !== r ? a.apply(this, arguments) : i;
                        }, writable: !0 }), i;
                      }
                    }
                  ),
                  /***/
                  606: (
                    /***/
                    function(p, u, t) {
                      var r = t(236);
                      p.exports = i;
                      function i() {
                        var a = r();
                        return { get: function(l, o) {
                          var y = a(l);
                          return y.hasOwnProperty("value") ? y.value : o;
                        }, set: function(l, o) {
                          return a(l).value = o, this;
                        }, has: function(l) {
                          return "value" in a(l);
                        }, delete: function(l) {
                          return delete a(l).value;
                        } };
                      }
                    }
                  ),
                  /***/
                  3349: (
                    /***/
                    function(p) {
                      function u() {
                        return function(o, y, g, x, c, v) {
                          var f = o[0], _ = g[0], S = [0], M = _;
                          x |= 0;
                          var C = 0, m = _;
                          for (C = 0; C < f; ++C) {
                            {
                              var L = y[x] - v, d = y[x + M] - v;
                              L >= 0 != d >= 0 && c.push(S[0] + 0.5 + 0.5 * (L + d) / (L - d));
                            }
                            x += m, ++S[0];
                          }
                        };
                      }
                      function t() {
                        return u();
                      }
                      var r = t;
                      function i(o) {
                        var y = {};
                        return function(x, c, v) {
                          var f = x.dtype, _ = x.order, S = [f, _.join()].join(), M = y[S];
                          return M || (y[S] = M = o([f, _])), M(x.shape.slice(0), x.data, x.stride, x.offset | 0, c, v);
                        };
                      }
                      function a(o) {
                        return i(r.bind(void 0, o));
                      }
                      function l(o) {
                        return a({ funcName: o.funcName });
                      }
                      p.exports = l({ funcName: "zeroCrossings" });
                    }
                  ),
                  /***/
                  781: (
                    /***/
                    function(p, u, t) {
                      p.exports = i;
                      var r = t(3349);
                      function i(a, l) {
                        var o = [];
                        return l = +l || 0, r(a.hi(a.shape[0] - 1), o, l), o;
                      }
                    }
                  ),
                  /***/
                  7790: (
                    /***/
                    function() {
                    }
                  )
                  /******/
                }, s = {};
                function T(p) {
                  var u = s[p];
                  if (u !== void 0)
                    return u.exports;
                  var t = s[p] = {
                    /******/
                    id: p,
                    /******/
                    loaded: !1,
                    /******/
                    exports: {}
                    /******/
                  };
                  return n[p].call(t.exports, t, t.exports, T), t.loaded = !0, t.exports;
                }
                (function() {
                  T.g = function() {
                    if (typeof globalThis == "object") return globalThis;
                    try {
                      return this || new Function("return this")();
                    } catch {
                      if (typeof window == "object") return window;
                    }
                  }();
                })(), function() {
                  T.nmd = function(p) {
                    return p.paths = [], p.children || (p.children = []), p;
                  };
                }();
                var A = T(1964);
                Y.exports = A;
              })();
            }
          ),
          /***/
          45708: (
            /***/
            function(Y, K, e) {
              /*!
               * The buffer module from node.js, for the browser.
               *
               * @author   Feross Aboukhadijeh <https://feross.org>
               * @license  MIT
               */
              function b(ie, $t) {
                if (!(ie instanceof $t)) throw new TypeError("Cannot call a class as a function");
              }
              function P(ie, $t) {
                for (var jt = 0; jt < $t.length; jt++) {
                  var ee = $t[jt];
                  ee.enumerable = ee.enumerable || !1, ee.configurable = !0, "value" in ee && (ee.writable = !0), Object.defineProperty(ie, s(ee.key), ee);
                }
              }
              function n(ie, $t, jt) {
                return $t && P(ie.prototype, $t), Object.defineProperty(ie, "prototype", { writable: !1 }), ie;
              }
              function s(ie) {
                var $t = T(ie, "string");
                return l($t) == "symbol" ? $t : $t + "";
              }
              function T(ie, $t) {
                if (l(ie) != "object" || !ie) return ie;
                var jt = ie[Symbol.toPrimitive];
                if (jt !== void 0) {
                  var ee = jt.call(ie, $t);
                  if (l(ee) != "object") return ee;
                  throw new TypeError("@@toPrimitive must return a primitive value.");
                }
                return String(ie);
              }
              function A(ie, $t, jt) {
                return $t = t($t), p(ie, u() ? Reflect.construct($t, [], t(ie).constructor) : $t.apply(ie, jt));
              }
              function p(ie, $t) {
                if ($t && (l($t) == "object" || typeof $t == "function")) return $t;
                if ($t !== void 0) throw new TypeError("Derived constructors may only return object or undefined");
                return r(ie);
              }
              function u() {
                try {
                  var ie = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
                  }));
                } catch {
                }
                return (u = function() {
                  return !!ie;
                })();
              }
              function t(ie) {
                return t = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function($t) {
                  return $t.__proto__ || Object.getPrototypeOf($t);
                }, t(ie);
              }
              function r(ie) {
                if (ie === void 0) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                return ie;
              }
              function i(ie, $t) {
                if (typeof $t != "function" && $t !== null) throw new TypeError("Super expression must either be null or a function");
                ie.prototype = Object.create($t && $t.prototype, { constructor: { value: ie, writable: !0, configurable: !0 } }), Object.defineProperty(ie, "prototype", { writable: !1 }), $t && a(ie, $t);
              }
              function a(ie, $t) {
                return a = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(jt, ee) {
                  return jt.__proto__ = ee, jt;
                }, a(ie, $t);
              }
              function l(ie) {
                "@babel/helpers - typeof";
                return l = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function($t) {
                  return typeof $t;
                } : function($t) {
                  return $t && typeof Symbol == "function" && $t.constructor === Symbol && $t !== Symbol.prototype ? "symbol" : typeof $t;
                }, l(ie);
              }
              var o = e(76226), y = e(27415), g = typeof Symbol == "function" && typeof Symbol.for == "function" ? Symbol.for("nodejs.util.inspect.custom") : null;
              K.Buffer = f, K.SlowBuffer = z, K.INSPECT_MAX_BYTES = 50;
              var x = 2147483647;
              K.kMaxLength = x, f.TYPED_ARRAY_SUPPORT = c(), !f.TYPED_ARRAY_SUPPORT && typeof console < "u" && typeof console.error == "function" && console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");
              function c() {
                try {
                  var ie = new Uint8Array(1), $t = {
                    foo: function() {
                      return 42;
                    }
                  };
                  return Object.setPrototypeOf($t, Uint8Array.prototype), Object.setPrototypeOf(ie, $t), ie.foo() === 42;
                } catch {
                  return !1;
                }
              }
              Object.defineProperty(f.prototype, "parent", {
                enumerable: !0,
                get: function() {
                  if (f.isBuffer(this))
                    return this.buffer;
                }
              }), Object.defineProperty(f.prototype, "offset", {
                enumerable: !0,
                get: function() {
                  if (f.isBuffer(this))
                    return this.byteOffset;
                }
              });
              function v(ie) {
                if (ie > x)
                  throw new RangeError('The value "' + ie + '" is invalid for option "size"');
                var $t = new Uint8Array(ie);
                return Object.setPrototypeOf($t, f.prototype), $t;
              }
              function f(ie, $t, jt) {
                if (typeof ie == "number") {
                  if (typeof $t == "string")
                    throw new TypeError('The "string" argument must be of type string. Received type number');
                  return C(ie);
                }
                return _(ie, $t, jt);
              }
              f.poolSize = 8192;
              function _(ie, $t, jt) {
                if (typeof ie == "string")
                  return m(ie, $t);
                if (ArrayBuffer.isView(ie))
                  return d(ie);
                if (ie == null)
                  throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + l(ie));
                if (ze(ie, ArrayBuffer) || ie && ze(ie.buffer, ArrayBuffer) || typeof SharedArrayBuffer < "u" && (ze(ie, SharedArrayBuffer) || ie && ze(ie.buffer, SharedArrayBuffer)))
                  return h(ie, $t, jt);
                if (typeof ie == "number")
                  throw new TypeError('The "value" argument must not be of type number. Received type number');
                var ee = ie.valueOf && ie.valueOf();
                if (ee != null && ee !== ie)
                  return f.from(ee, $t, jt);
                var Bt = E(ie);
                if (Bt) return Bt;
                if (typeof Symbol < "u" && Symbol.toPrimitive != null && typeof ie[Symbol.toPrimitive] == "function")
                  return f.from(ie[Symbol.toPrimitive]("string"), $t, jt);
                throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + l(ie));
              }
              f.from = function(ie, $t, jt) {
                return _(ie, $t, jt);
              }, Object.setPrototypeOf(f.prototype, Uint8Array.prototype), Object.setPrototypeOf(f, Uint8Array);
              function S(ie) {
                if (typeof ie != "number")
                  throw new TypeError('"size" argument must be of type number');
                if (ie < 0)
                  throw new RangeError('The value "' + ie + '" is invalid for option "size"');
              }
              function M(ie, $t, jt) {
                return S(ie), ie <= 0 ? v(ie) : $t !== void 0 ? typeof jt == "string" ? v(ie).fill($t, jt) : v(ie).fill($t) : v(ie);
              }
              f.alloc = function(ie, $t, jt) {
                return M(ie, $t, jt);
              };
              function C(ie) {
                return S(ie), v(ie < 0 ? 0 : w(ie) | 0);
              }
              f.allocUnsafe = function(ie) {
                return C(ie);
              }, f.allocUnsafeSlow = function(ie) {
                return C(ie);
              };
              function m(ie, $t) {
                if ((typeof $t != "string" || $t === "") && ($t = "utf8"), !f.isEncoding($t))
                  throw new TypeError("Unknown encoding: " + $t);
                var jt = O(ie, $t) | 0, ee = v(jt), Bt = ee.write(ie, $t);
                return Bt !== jt && (ee = ee.slice(0, Bt)), ee;
              }
              function L(ie) {
                for (var $t = ie.length < 0 ? 0 : w(ie.length) | 0, jt = v($t), ee = 0; ee < $t; ee += 1)
                  jt[ee] = ie[ee] & 255;
                return jt;
              }
              function d(ie) {
                if (ze(ie, Uint8Array)) {
                  var $t = new Uint8Array(ie);
                  return h($t.buffer, $t.byteOffset, $t.byteLength);
                }
                return L(ie);
              }
              function h(ie, $t, jt) {
                if ($t < 0 || ie.byteLength < $t)
                  throw new RangeError('"offset" is outside of buffer bounds');
                if (ie.byteLength < $t + (jt || 0))
                  throw new RangeError('"length" is outside of buffer bounds');
                var ee;
                return $t === void 0 && jt === void 0 ? ee = new Uint8Array(ie) : jt === void 0 ? ee = new Uint8Array(ie, $t) : ee = new Uint8Array(ie, $t, jt), Object.setPrototypeOf(ee, f.prototype), ee;
              }
              function E(ie) {
                if (f.isBuffer(ie)) {
                  var $t = w(ie.length) | 0, jt = v($t);
                  return jt.length === 0 || ie.copy(jt, 0, 0, $t), jt;
                }
                if (ie.length !== void 0)
                  return typeof ie.length != "number" || Ne(ie.length) ? v(0) : L(ie);
                if (ie.type === "Buffer" && Array.isArray(ie.data))
                  return L(ie.data);
              }
              function w(ie) {
                if (ie >= x)
                  throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + x.toString(16) + " bytes");
                return ie | 0;
              }
              function z(ie) {
                return +ie != ie && (ie = 0), f.alloc(+ie);
              }
              f.isBuffer = function($t) {
                return $t != null && $t._isBuffer === !0 && $t !== f.prototype;
              }, f.compare = function($t, jt) {
                if (ze($t, Uint8Array) && ($t = f.from($t, $t.offset, $t.byteLength)), ze(jt, Uint8Array) && (jt = f.from(jt, jt.offset, jt.byteLength)), !f.isBuffer($t) || !f.isBuffer(jt))
                  throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');
                if ($t === jt) return 0;
                for (var ee = $t.length, Bt = jt.length, Xt = 0, Zt = Math.min(ee, Bt); Xt < Zt; ++Xt)
                  if ($t[Xt] !== jt[Xt]) {
                    ee = $t[Xt], Bt = jt[Xt];
                    break;
                  }
                return ee < Bt ? -1 : Bt < ee ? 1 : 0;
              }, f.isEncoding = function($t) {
                switch (String($t).toLowerCase()) {
                  case "hex":
                  case "utf8":
                  case "utf-8":
                  case "ascii":
                  case "latin1":
                  case "binary":
                  case "base64":
                  case "ucs2":
                  case "ucs-2":
                  case "utf16le":
                  case "utf-16le":
                    return !0;
                  default:
                    return !1;
                }
              }, f.concat = function($t, jt) {
                if (!Array.isArray($t))
                  throw new TypeError('"list" argument must be an Array of Buffers');
                if ($t.length === 0)
                  return f.alloc(0);
                var ee;
                if (jt === void 0)
                  for (jt = 0, ee = 0; ee < $t.length; ++ee)
                    jt += $t[ee].length;
                var Bt = f.allocUnsafe(jt), Xt = 0;
                for (ee = 0; ee < $t.length; ++ee) {
                  var Zt = $t[ee];
                  if (ze(Zt, Uint8Array))
                    Xt + Zt.length > Bt.length ? (f.isBuffer(Zt) || (Zt = f.from(Zt)), Zt.copy(Bt, Xt)) : Uint8Array.prototype.set.call(Bt, Zt, Xt);
                  else if (f.isBuffer(Zt))
                    Zt.copy(Bt, Xt);
                  else
                    throw new TypeError('"list" argument must be an Array of Buffers');
                  Xt += Zt.length;
                }
                return Bt;
              };
              function O(ie, $t) {
                if (f.isBuffer(ie))
                  return ie.length;
                if (ArrayBuffer.isView(ie) || ze(ie, ArrayBuffer))
                  return ie.byteLength;
                if (typeof ie != "string")
                  throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type ' + l(ie));
                var jt = ie.length, ee = arguments.length > 2 && arguments[2] === !0;
                if (!ee && jt === 0) return 0;
                for (var Bt = !1; ; )
                  switch ($t) {
                    case "ascii":
                    case "latin1":
                    case "binary":
                      return jt;
                    case "utf8":
                    case "utf-8":
                      return ge(ie).length;
                    case "ucs2":
                    case "ucs-2":
                    case "utf16le":
                    case "utf-16le":
                      return jt * 2;
                    case "hex":
                      return jt >>> 1;
                    case "base64":
                      return ae(ie).length;
                    default:
                      if (Bt)
                        return ee ? -1 : ge(ie).length;
                      $t = ("" + $t).toLowerCase(), Bt = !0;
                  }
              }
              f.byteLength = O;
              function B(ie, $t, jt) {
                var ee = !1;
                if (($t === void 0 || $t < 0) && ($t = 0), $t > this.length || ((jt === void 0 || jt > this.length) && (jt = this.length), jt <= 0) || (jt >>>= 0, $t >>>= 0, jt <= $t))
                  return "";
                for (ie || (ie = "utf8"); ; )
                  switch (ie) {
                    case "hex":
                      return ut(this, $t, jt);
                    case "utf8":
                    case "utf-8":
                      return ht(this, $t, jt);
                    case "ascii":
                      return j(this, $t, jt);
                    case "latin1":
                    case "binary":
                      return at(this, $t, jt);
                    case "base64":
                      return vt(this, $t, jt);
                    case "ucs2":
                    case "ucs-2":
                    case "utf16le":
                    case "utf-16le":
                      return nt(this, $t, jt);
                    default:
                      if (ee) throw new TypeError("Unknown encoding: " + ie);
                      ie = (ie + "").toLowerCase(), ee = !0;
                  }
              }
              f.prototype._isBuffer = !0;
              function V(ie, $t, jt) {
                var ee = ie[$t];
                ie[$t] = ie[jt], ie[jt] = ee;
              }
              f.prototype.swap16 = function() {
                var $t = this.length;
                if ($t % 2 !== 0)
                  throw new RangeError("Buffer size must be a multiple of 16-bits");
                for (var jt = 0; jt < $t; jt += 2)
                  V(this, jt, jt + 1);
                return this;
              }, f.prototype.swap32 = function() {
                var $t = this.length;
                if ($t % 4 !== 0)
                  throw new RangeError("Buffer size must be a multiple of 32-bits");
                for (var jt = 0; jt < $t; jt += 4)
                  V(this, jt, jt + 3), V(this, jt + 1, jt + 2);
                return this;
              }, f.prototype.swap64 = function() {
                var $t = this.length;
                if ($t % 8 !== 0)
                  throw new RangeError("Buffer size must be a multiple of 64-bits");
                for (var jt = 0; jt < $t; jt += 8)
                  V(this, jt, jt + 7), V(this, jt + 1, jt + 6), V(this, jt + 2, jt + 5), V(this, jt + 3, jt + 4);
                return this;
              }, f.prototype.toString = function() {
                var $t = this.length;
                return $t === 0 ? "" : arguments.length === 0 ? ht(this, 0, $t) : B.apply(this, arguments);
              }, f.prototype.toLocaleString = f.prototype.toString, f.prototype.equals = function($t) {
                if (!f.isBuffer($t)) throw new TypeError("Argument must be a Buffer");
                return this === $t ? !0 : f.compare(this, $t) === 0;
              }, f.prototype.inspect = function() {
                var $t = "", jt = K.INSPECT_MAX_BYTES;
                return $t = this.toString("hex", 0, jt).replace(/(.{2})/g, "$1 ").trim(), this.length > jt && ($t += " ... "), "<Buffer " + $t + ">";
              }, g && (f.prototype[g] = f.prototype.inspect), f.prototype.compare = function($t, jt, ee, Bt, Xt) {
                if (ze($t, Uint8Array) && ($t = f.from($t, $t.offset, $t.byteLength)), !f.isBuffer($t))
                  throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type ' + l($t));
                if (jt === void 0 && (jt = 0), ee === void 0 && (ee = $t ? $t.length : 0), Bt === void 0 && (Bt = 0), Xt === void 0 && (Xt = this.length), jt < 0 || ee > $t.length || Bt < 0 || Xt > this.length)
                  throw new RangeError("out of range index");
                if (Bt >= Xt && jt >= ee)
                  return 0;
                if (Bt >= Xt)
                  return -1;
                if (jt >= ee)
                  return 1;
                if (jt >>>= 0, ee >>>= 0, Bt >>>= 0, Xt >>>= 0, this === $t) return 0;
                for (var Zt = Xt - Bt, ye = ee - jt, Mt = Math.min(Zt, ye), St = this.slice(Bt, Xt), Lt = $t.slice(jt, ee), te = 0; te < Mt; ++te)
                  if (St[te] !== Lt[te]) {
                    Zt = St[te], ye = Lt[te];
                    break;
                  }
                return Zt < ye ? -1 : ye < Zt ? 1 : 0;
              };
              function U(ie, $t, jt, ee, Bt) {
                if (ie.length === 0) return -1;
                if (typeof jt == "string" ? (ee = jt, jt = 0) : jt > 2147483647 ? jt = 2147483647 : jt < -2147483648 && (jt = -2147483648), jt = +jt, Ne(jt) && (jt = Bt ? 0 : ie.length - 1), jt < 0 && (jt = ie.length + jt), jt >= ie.length) {
                  if (Bt) return -1;
                  jt = ie.length - 1;
                } else if (jt < 0)
                  if (Bt) jt = 0;
                  else return -1;
                if (typeof $t == "string" && ($t = f.from($t, ee)), f.isBuffer($t))
                  return $t.length === 0 ? -1 : H(ie, $t, jt, ee, Bt);
                if (typeof $t == "number")
                  return $t = $t & 255, typeof Uint8Array.prototype.indexOf == "function" ? Bt ? Uint8Array.prototype.indexOf.call(ie, $t, jt) : Uint8Array.prototype.lastIndexOf.call(ie, $t, jt) : H(ie, [$t], jt, ee, Bt);
                throw new TypeError("val must be string, number or Buffer");
              }
              function H(ie, $t, jt, ee, Bt) {
                var Xt = 1, Zt = ie.length, ye = $t.length;
                if (ee !== void 0 && (ee = String(ee).toLowerCase(), ee === "ucs2" || ee === "ucs-2" || ee === "utf16le" || ee === "utf-16le")) {
                  if (ie.length < 2 || $t.length < 2)
                    return -1;
                  Xt = 2, Zt /= 2, ye /= 2, jt /= 2;
                }
                function Mt(Me, ir) {
                  return Xt === 1 ? Me[ir] : Me.readUInt16BE(ir * Xt);
                }
                var St;
                if (Bt) {
                  var Lt = -1;
                  for (St = jt; St < Zt; St++)
                    if (Mt(ie, St) === Mt($t, Lt === -1 ? 0 : St - Lt)) {
                      if (Lt === -1 && (Lt = St), St - Lt + 1 === ye) return Lt * Xt;
                    } else
                      Lt !== -1 && (St -= St - Lt), Lt = -1;
                } else
                  for (jt + ye > Zt && (jt = Zt - ye), St = jt; St >= 0; St--) {
                    for (var te = !0, fe = 0; fe < ye; fe++)
                      if (Mt(ie, St + fe) !== Mt($t, fe)) {
                        te = !1;
                        break;
                      }
                    if (te) return St;
                  }
                return -1;
              }
              f.prototype.includes = function($t, jt, ee) {
                return this.indexOf($t, jt, ee) !== -1;
              }, f.prototype.indexOf = function($t, jt, ee) {
                return U(this, $t, jt, ee, !0);
              }, f.prototype.lastIndexOf = function($t, jt, ee) {
                return U(this, $t, jt, ee, !1);
              };
              function F(ie, $t, jt, ee) {
                jt = Number(jt) || 0;
                var Bt = ie.length - jt;
                ee ? (ee = Number(ee), ee > Bt && (ee = Bt)) : ee = Bt;
                var Xt = $t.length;
                ee > Xt / 2 && (ee = Xt / 2);
                var Zt;
                for (Zt = 0; Zt < ee; ++Zt) {
                  var ye = parseInt($t.substr(Zt * 2, 2), 16);
                  if (Ne(ye)) return Zt;
                  ie[jt + Zt] = ye;
                }
                return Zt;
              }
              function G(ie, $t, jt, ee) {
                return Se(ge($t, ie.length - jt), ie, jt, ee);
              }
              function q(ie, $t, jt, ee) {
                return Se(_e($t), ie, jt, ee);
              }
              function rt(ie, $t, jt, ee) {
                return Se(ae($t), ie, jt, ee);
              }
              function st(ie, $t, jt, ee) {
                return Se(ce($t, ie.length - jt), ie, jt, ee);
              }
              f.prototype.write = function($t, jt, ee, Bt) {
                if (jt === void 0)
                  Bt = "utf8", ee = this.length, jt = 0;
                else if (ee === void 0 && typeof jt == "string")
                  Bt = jt, ee = this.length, jt = 0;
                else if (isFinite(jt))
                  jt = jt >>> 0, isFinite(ee) ? (ee = ee >>> 0, Bt === void 0 && (Bt = "utf8")) : (Bt = ee, ee = void 0);
                else
                  throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");
                var Xt = this.length - jt;
                if ((ee === void 0 || ee > Xt) && (ee = Xt), $t.length > 0 && (ee < 0 || jt < 0) || jt > this.length)
                  throw new RangeError("Attempt to write outside buffer bounds");
                Bt || (Bt = "utf8");
                for (var Zt = !1; ; )
                  switch (Bt) {
                    case "hex":
                      return F(this, $t, jt, ee);
                    case "utf8":
                    case "utf-8":
                      return G(this, $t, jt, ee);
                    case "ascii":
                    case "latin1":
                    case "binary":
                      return q(this, $t, jt, ee);
                    case "base64":
                      return rt(this, $t, jt, ee);
                    case "ucs2":
                    case "ucs-2":
                    case "utf16le":
                    case "utf-16le":
                      return st(this, $t, jt, ee);
                    default:
                      if (Zt) throw new TypeError("Unknown encoding: " + Bt);
                      Bt = ("" + Bt).toLowerCase(), Zt = !0;
                  }
              }, f.prototype.toJSON = function() {
                return {
                  type: "Buffer",
                  data: Array.prototype.slice.call(this._arr || this, 0)
                };
              };
              function vt(ie, $t, jt) {
                return $t === 0 && jt === ie.length ? o.fromByteArray(ie) : o.fromByteArray(ie.slice($t, jt));
              }
              function ht(ie, $t, jt) {
                jt = Math.min(ie.length, jt);
                for (var ee = [], Bt = $t; Bt < jt; ) {
                  var Xt = ie[Bt], Zt = null, ye = Xt > 239 ? 4 : Xt > 223 ? 3 : Xt > 191 ? 2 : 1;
                  if (Bt + ye <= jt) {
                    var Mt = void 0, St = void 0, Lt = void 0, te = void 0;
                    switch (ye) {
                      case 1:
                        Xt < 128 && (Zt = Xt);
                        break;
                      case 2:
                        Mt = ie[Bt + 1], (Mt & 192) === 128 && (te = (Xt & 31) << 6 | Mt & 63, te > 127 && (Zt = te));
                        break;
                      case 3:
                        Mt = ie[Bt + 1], St = ie[Bt + 2], (Mt & 192) === 128 && (St & 192) === 128 && (te = (Xt & 15) << 12 | (Mt & 63) << 6 | St & 63, te > 2047 && (te < 55296 || te > 57343) && (Zt = te));
                        break;
                      case 4:
                        Mt = ie[Bt + 1], St = ie[Bt + 2], Lt = ie[Bt + 3], (Mt & 192) === 128 && (St & 192) === 128 && (Lt & 192) === 128 && (te = (Xt & 15) << 18 | (Mt & 63) << 12 | (St & 63) << 6 | Lt & 63, te > 65535 && te < 1114112 && (Zt = te));
                    }
                  }
                  Zt === null ? (Zt = 65533, ye = 1) : Zt > 65535 && (Zt -= 65536, ee.push(Zt >>> 10 & 1023 | 55296), Zt = 56320 | Zt & 1023), ee.push(Zt), Bt += ye;
                }
                return Q(ee);
              }
              var et = 4096;
              function Q(ie) {
                var $t = ie.length;
                if ($t <= et)
                  return String.fromCharCode.apply(String, ie);
                for (var jt = "", ee = 0; ee < $t; )
                  jt += String.fromCharCode.apply(String, ie.slice(ee, ee += et));
                return jt;
              }
              function j(ie, $t, jt) {
                var ee = "";
                jt = Math.min(ie.length, jt);
                for (var Bt = $t; Bt < jt; ++Bt)
                  ee += String.fromCharCode(ie[Bt] & 127);
                return ee;
              }
              function at(ie, $t, jt) {
                var ee = "";
                jt = Math.min(ie.length, jt);
                for (var Bt = $t; Bt < jt; ++Bt)
                  ee += String.fromCharCode(ie[Bt]);
                return ee;
              }
              function ut(ie, $t, jt) {
                var ee = ie.length;
                (!$t || $t < 0) && ($t = 0), (!jt || jt < 0 || jt > ee) && (jt = ee);
                for (var Bt = "", Xt = $t; Xt < jt; ++Xt)
                  Bt += Ve[ie[Xt]];
                return Bt;
              }
              function nt(ie, $t, jt) {
                for (var ee = ie.slice($t, jt), Bt = "", Xt = 0; Xt < ee.length - 1; Xt += 2)
                  Bt += String.fromCharCode(ee[Xt] + ee[Xt + 1] * 256);
                return Bt;
              }
              f.prototype.slice = function($t, jt) {
                var ee = this.length;
                $t = ~~$t, jt = jt === void 0 ? ee : ~~jt, $t < 0 ? ($t += ee, $t < 0 && ($t = 0)) : $t > ee && ($t = ee), jt < 0 ? (jt += ee, jt < 0 && (jt = 0)) : jt > ee && (jt = ee), jt < $t && (jt = $t);
                var Bt = this.subarray($t, jt);
                return Object.setPrototypeOf(Bt, f.prototype), Bt;
              };
              function X(ie, $t, jt) {
                if (ie % 1 !== 0 || ie < 0) throw new RangeError("offset is not uint");
                if (ie + $t > jt) throw new RangeError("Trying to access beyond buffer length");
              }
              f.prototype.readUintLE = f.prototype.readUIntLE = function($t, jt, ee) {
                $t = $t >>> 0, jt = jt >>> 0, ee || X($t, jt, this.length);
                for (var Bt = this[$t], Xt = 1, Zt = 0; ++Zt < jt && (Xt *= 256); )
                  Bt += this[$t + Zt] * Xt;
                return Bt;
              }, f.prototype.readUintBE = f.prototype.readUIntBE = function($t, jt, ee) {
                $t = $t >>> 0, jt = jt >>> 0, ee || X($t, jt, this.length);
                for (var Bt = this[$t + --jt], Xt = 1; jt > 0 && (Xt *= 256); )
                  Bt += this[$t + --jt] * Xt;
                return Bt;
              }, f.prototype.readUint8 = f.prototype.readUInt8 = function($t, jt) {
                return $t = $t >>> 0, jt || X($t, 1, this.length), this[$t];
              }, f.prototype.readUint16LE = f.prototype.readUInt16LE = function($t, jt) {
                return $t = $t >>> 0, jt || X($t, 2, this.length), this[$t] | this[$t + 1] << 8;
              }, f.prototype.readUint16BE = f.prototype.readUInt16BE = function($t, jt) {
                return $t = $t >>> 0, jt || X($t, 2, this.length), this[$t] << 8 | this[$t + 1];
              }, f.prototype.readUint32LE = f.prototype.readUInt32LE = function($t, jt) {
                return $t = $t >>> 0, jt || X($t, 4, this.length), (this[$t] | this[$t + 1] << 8 | this[$t + 2] << 16) + this[$t + 3] * 16777216;
              }, f.prototype.readUint32BE = f.prototype.readUInt32BE = function($t, jt) {
                return $t = $t >>> 0, jt || X($t, 4, this.length), this[$t] * 16777216 + (this[$t + 1] << 16 | this[$t + 2] << 8 | this[$t + 3]);
              }, f.prototype.readBigUInt64LE = Oe(function($t) {
                $t = $t >>> 0, Rt($t, "offset");
                var jt = this[$t], ee = this[$t + 7];
                (jt === void 0 || ee === void 0) && Wt($t, this.length - 8);
                var Bt = jt + this[++$t] * Math.pow(2, 8) + this[++$t] * Math.pow(2, 16) + this[++$t] * Math.pow(2, 24), Xt = this[++$t] + this[++$t] * Math.pow(2, 8) + this[++$t] * Math.pow(2, 16) + ee * Math.pow(2, 24);
                return BigInt(Bt) + (BigInt(Xt) << BigInt(32));
              }), f.prototype.readBigUInt64BE = Oe(function($t) {
                $t = $t >>> 0, Rt($t, "offset");
                var jt = this[$t], ee = this[$t + 7];
                (jt === void 0 || ee === void 0) && Wt($t, this.length - 8);
                var Bt = jt * Math.pow(2, 24) + this[++$t] * Math.pow(2, 16) + this[++$t] * Math.pow(2, 8) + this[++$t], Xt = this[++$t] * Math.pow(2, 24) + this[++$t] * Math.pow(2, 16) + this[++$t] * Math.pow(2, 8) + ee;
                return (BigInt(Bt) << BigInt(32)) + BigInt(Xt);
              }), f.prototype.readIntLE = function($t, jt, ee) {
                $t = $t >>> 0, jt = jt >>> 0, ee || X($t, jt, this.length);
                for (var Bt = this[$t], Xt = 1, Zt = 0; ++Zt < jt && (Xt *= 256); )
                  Bt += this[$t + Zt] * Xt;
                return Xt *= 128, Bt >= Xt && (Bt -= Math.pow(2, 8 * jt)), Bt;
              }, f.prototype.readIntBE = function($t, jt, ee) {
                $t = $t >>> 0, jt = jt >>> 0, ee || X($t, jt, this.length);
                for (var Bt = jt, Xt = 1, Zt = this[$t + --Bt]; Bt > 0 && (Xt *= 256); )
                  Zt += this[$t + --Bt] * Xt;
                return Xt *= 128, Zt >= Xt && (Zt -= Math.pow(2, 8 * jt)), Zt;
              }, f.prototype.readInt8 = function($t, jt) {
                return $t = $t >>> 0, jt || X($t, 1, this.length), this[$t] & 128 ? (255 - this[$t] + 1) * -1 : this[$t];
              }, f.prototype.readInt16LE = function($t, jt) {
                $t = $t >>> 0, jt || X($t, 2, this.length);
                var ee = this[$t] | this[$t + 1] << 8;
                return ee & 32768 ? ee | 4294901760 : ee;
              }, f.prototype.readInt16BE = function($t, jt) {
                $t = $t >>> 0, jt || X($t, 2, this.length);
                var ee = this[$t + 1] | this[$t] << 8;
                return ee & 32768 ? ee | 4294901760 : ee;
              }, f.prototype.readInt32LE = function($t, jt) {
                return $t = $t >>> 0, jt || X($t, 4, this.length), this[$t] | this[$t + 1] << 8 | this[$t + 2] << 16 | this[$t + 3] << 24;
              }, f.prototype.readInt32BE = function($t, jt) {
                return $t = $t >>> 0, jt || X($t, 4, this.length), this[$t] << 24 | this[$t + 1] << 16 | this[$t + 2] << 8 | this[$t + 3];
              }, f.prototype.readBigInt64LE = Oe(function($t) {
                $t = $t >>> 0, Rt($t, "offset");
                var jt = this[$t], ee = this[$t + 7];
                (jt === void 0 || ee === void 0) && Wt($t, this.length - 8);
                var Bt = this[$t + 4] + this[$t + 5] * Math.pow(2, 8) + this[$t + 6] * Math.pow(2, 16) + (ee << 24);
                return (BigInt(Bt) << BigInt(32)) + BigInt(jt + this[++$t] * Math.pow(2, 8) + this[++$t] * Math.pow(2, 16) + this[++$t] * Math.pow(2, 24));
              }), f.prototype.readBigInt64BE = Oe(function($t) {
                $t = $t >>> 0, Rt($t, "offset");
                var jt = this[$t], ee = this[$t + 7];
                (jt === void 0 || ee === void 0) && Wt($t, this.length - 8);
                var Bt = (jt << 24) + // Overflow
                this[++$t] * Math.pow(2, 16) + this[++$t] * Math.pow(2, 8) + this[++$t];
                return (BigInt(Bt) << BigInt(32)) + BigInt(this[++$t] * Math.pow(2, 24) + this[++$t] * Math.pow(2, 16) + this[++$t] * Math.pow(2, 8) + ee);
              }), f.prototype.readFloatLE = function($t, jt) {
                return $t = $t >>> 0, jt || X($t, 4, this.length), y.read(this, $t, !0, 23, 4);
              }, f.prototype.readFloatBE = function($t, jt) {
                return $t = $t >>> 0, jt || X($t, 4, this.length), y.read(this, $t, !1, 23, 4);
              }, f.prototype.readDoubleLE = function($t, jt) {
                return $t = $t >>> 0, jt || X($t, 8, this.length), y.read(this, $t, !0, 52, 8);
              }, f.prototype.readDoubleBE = function($t, jt) {
                return $t = $t >>> 0, jt || X($t, 8, this.length), y.read(this, $t, !1, 52, 8);
              };
              function ct(ie, $t, jt, ee, Bt, Xt) {
                if (!f.isBuffer(ie)) throw new TypeError('"buffer" argument must be a Buffer instance');
                if ($t > Bt || $t < Xt) throw new RangeError('"value" argument is out of bounds');
                if (jt + ee > ie.length) throw new RangeError("Index out of range");
              }
              f.prototype.writeUintLE = f.prototype.writeUIntLE = function($t, jt, ee, Bt) {
                if ($t = +$t, jt = jt >>> 0, ee = ee >>> 0, !Bt) {
                  var Xt = Math.pow(2, 8 * ee) - 1;
                  ct(this, $t, jt, ee, Xt, 0);
                }
                var Zt = 1, ye = 0;
                for (this[jt] = $t & 255; ++ye < ee && (Zt *= 256); )
                  this[jt + ye] = $t / Zt & 255;
                return jt + ee;
              }, f.prototype.writeUintBE = f.prototype.writeUIntBE = function($t, jt, ee, Bt) {
                if ($t = +$t, jt = jt >>> 0, ee = ee >>> 0, !Bt) {
                  var Xt = Math.pow(2, 8 * ee) - 1;
                  ct(this, $t, jt, ee, Xt, 0);
                }
                var Zt = ee - 1, ye = 1;
                for (this[jt + Zt] = $t & 255; --Zt >= 0 && (ye *= 256); )
                  this[jt + Zt] = $t / ye & 255;
                return jt + ee;
              }, f.prototype.writeUint8 = f.prototype.writeUInt8 = function($t, jt, ee) {
                return $t = +$t, jt = jt >>> 0, ee || ct(this, $t, jt, 1, 255, 0), this[jt] = $t & 255, jt + 1;
              }, f.prototype.writeUint16LE = f.prototype.writeUInt16LE = function($t, jt, ee) {
                return $t = +$t, jt = jt >>> 0, ee || ct(this, $t, jt, 2, 65535, 0), this[jt] = $t & 255, this[jt + 1] = $t >>> 8, jt + 2;
              }, f.prototype.writeUint16BE = f.prototype.writeUInt16BE = function($t, jt, ee) {
                return $t = +$t, jt = jt >>> 0, ee || ct(this, $t, jt, 2, 65535, 0), this[jt] = $t >>> 8, this[jt + 1] = $t & 255, jt + 2;
              }, f.prototype.writeUint32LE = f.prototype.writeUInt32LE = function($t, jt, ee) {
                return $t = +$t, jt = jt >>> 0, ee || ct(this, $t, jt, 4, 4294967295, 0), this[jt + 3] = $t >>> 24, this[jt + 2] = $t >>> 16, this[jt + 1] = $t >>> 8, this[jt] = $t & 255, jt + 4;
              }, f.prototype.writeUint32BE = f.prototype.writeUInt32BE = function($t, jt, ee) {
                return $t = +$t, jt = jt >>> 0, ee || ct(this, $t, jt, 4, 4294967295, 0), this[jt] = $t >>> 24, this[jt + 1] = $t >>> 16, this[jt + 2] = $t >>> 8, this[jt + 3] = $t & 255, jt + 4;
              };
              function lt(ie, $t, jt, ee, Bt) {
                zt($t, ee, Bt, ie, jt, 7);
                var Xt = Number($t & BigInt(4294967295));
                ie[jt++] = Xt, Xt = Xt >> 8, ie[jt++] = Xt, Xt = Xt >> 8, ie[jt++] = Xt, Xt = Xt >> 8, ie[jt++] = Xt;
                var Zt = Number($t >> BigInt(32) & BigInt(4294967295));
                return ie[jt++] = Zt, Zt = Zt >> 8, ie[jt++] = Zt, Zt = Zt >> 8, ie[jt++] = Zt, Zt = Zt >> 8, ie[jt++] = Zt, jt;
              }
              function pt(ie, $t, jt, ee, Bt) {
                zt($t, ee, Bt, ie, jt, 7);
                var Xt = Number($t & BigInt(4294967295));
                ie[jt + 7] = Xt, Xt = Xt >> 8, ie[jt + 6] = Xt, Xt = Xt >> 8, ie[jt + 5] = Xt, Xt = Xt >> 8, ie[jt + 4] = Xt;
                var Zt = Number($t >> BigInt(32) & BigInt(4294967295));
                return ie[jt + 3] = Zt, Zt = Zt >> 8, ie[jt + 2] = Zt, Zt = Zt >> 8, ie[jt + 1] = Zt, Zt = Zt >> 8, ie[jt] = Zt, jt + 8;
              }
              f.prototype.writeBigUInt64LE = Oe(function($t) {
                var jt = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
                return lt(this, $t, jt, BigInt(0), BigInt("0xffffffffffffffff"));
              }), f.prototype.writeBigUInt64BE = Oe(function($t) {
                var jt = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
                return pt(this, $t, jt, BigInt(0), BigInt("0xffffffffffffffff"));
              }), f.prototype.writeIntLE = function($t, jt, ee, Bt) {
                if ($t = +$t, jt = jt >>> 0, !Bt) {
                  var Xt = Math.pow(2, 8 * ee - 1);
                  ct(this, $t, jt, ee, Xt - 1, -Xt);
                }
                var Zt = 0, ye = 1, Mt = 0;
                for (this[jt] = $t & 255; ++Zt < ee && (ye *= 256); )
                  $t < 0 && Mt === 0 && this[jt + Zt - 1] !== 0 && (Mt = 1), this[jt + Zt] = ($t / ye >> 0) - Mt & 255;
                return jt + ee;
              }, f.prototype.writeIntBE = function($t, jt, ee, Bt) {
                if ($t = +$t, jt = jt >>> 0, !Bt) {
                  var Xt = Math.pow(2, 8 * ee - 1);
                  ct(this, $t, jt, ee, Xt - 1, -Xt);
                }
                var Zt = ee - 1, ye = 1, Mt = 0;
                for (this[jt + Zt] = $t & 255; --Zt >= 0 && (ye *= 256); )
                  $t < 0 && Mt === 0 && this[jt + Zt + 1] !== 0 && (Mt = 1), this[jt + Zt] = ($t / ye >> 0) - Mt & 255;
                return jt + ee;
              }, f.prototype.writeInt8 = function($t, jt, ee) {
                return $t = +$t, jt = jt >>> 0, ee || ct(this, $t, jt, 1, 127, -128), $t < 0 && ($t = 255 + $t + 1), this[jt] = $t & 255, jt + 1;
              }, f.prototype.writeInt16LE = function($t, jt, ee) {
                return $t = +$t, jt = jt >>> 0, ee || ct(this, $t, jt, 2, 32767, -32768), this[jt] = $t & 255, this[jt + 1] = $t >>> 8, jt + 2;
              }, f.prototype.writeInt16BE = function($t, jt, ee) {
                return $t = +$t, jt = jt >>> 0, ee || ct(this, $t, jt, 2, 32767, -32768), this[jt] = $t >>> 8, this[jt + 1] = $t & 255, jt + 2;
              }, f.prototype.writeInt32LE = function($t, jt, ee) {
                return $t = +$t, jt = jt >>> 0, ee || ct(this, $t, jt, 4, 2147483647, -2147483648), this[jt] = $t & 255, this[jt + 1] = $t >>> 8, this[jt + 2] = $t >>> 16, this[jt + 3] = $t >>> 24, jt + 4;
              }, f.prototype.writeInt32BE = function($t, jt, ee) {
                return $t = +$t, jt = jt >>> 0, ee || ct(this, $t, jt, 4, 2147483647, -2147483648), $t < 0 && ($t = 4294967295 + $t + 1), this[jt] = $t >>> 24, this[jt + 1] = $t >>> 16, this[jt + 2] = $t >>> 8, this[jt + 3] = $t & 255, jt + 4;
              }, f.prototype.writeBigInt64LE = Oe(function($t) {
                var jt = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
                return lt(this, $t, jt, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff"));
              }), f.prototype.writeBigInt64BE = Oe(function($t) {
                var jt = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
                return pt(this, $t, jt, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff"));
              });
              function wt(ie, $t, jt, ee, Bt, Xt) {
                if (jt + ee > ie.length) throw new RangeError("Index out of range");
                if (jt < 0) throw new RangeError("Index out of range");
              }
              function Et(ie, $t, jt, ee, Bt) {
                return $t = +$t, jt = jt >>> 0, Bt || wt(ie, $t, jt, 4), y.write(ie, $t, jt, ee, 23, 4), jt + 4;
              }
              f.prototype.writeFloatLE = function($t, jt, ee) {
                return Et(this, $t, jt, !0, ee);
              }, f.prototype.writeFloatBE = function($t, jt, ee) {
                return Et(this, $t, jt, !1, ee);
              };
              function Ct(ie, $t, jt, ee, Bt) {
                return $t = +$t, jt = jt >>> 0, Bt || wt(ie, $t, jt, 8), y.write(ie, $t, jt, ee, 52, 8), jt + 8;
              }
              f.prototype.writeDoubleLE = function($t, jt, ee) {
                return Ct(this, $t, jt, !0, ee);
              }, f.prototype.writeDoubleBE = function($t, jt, ee) {
                return Ct(this, $t, jt, !1, ee);
              }, f.prototype.copy = function($t, jt, ee, Bt) {
                if (!f.isBuffer($t)) throw new TypeError("argument should be a Buffer");
                if (ee || (ee = 0), !Bt && Bt !== 0 && (Bt = this.length), jt >= $t.length && (jt = $t.length), jt || (jt = 0), Bt > 0 && Bt < ee && (Bt = ee), Bt === ee || $t.length === 0 || this.length === 0) return 0;
                if (jt < 0)
                  throw new RangeError("targetStart out of bounds");
                if (ee < 0 || ee >= this.length) throw new RangeError("Index out of range");
                if (Bt < 0) throw new RangeError("sourceEnd out of bounds");
                Bt > this.length && (Bt = this.length), $t.length - jt < Bt - ee && (Bt = $t.length - jt + ee);
                var Xt = Bt - ee;
                return this === $t && typeof Uint8Array.prototype.copyWithin == "function" ? this.copyWithin(jt, ee, Bt) : Uint8Array.prototype.set.call($t, this.subarray(ee, Bt), jt), Xt;
              }, f.prototype.fill = function($t, jt, ee, Bt) {
                if (typeof $t == "string") {
                  if (typeof jt == "string" ? (Bt = jt, jt = 0, ee = this.length) : typeof ee == "string" && (Bt = ee, ee = this.length), Bt !== void 0 && typeof Bt != "string")
                    throw new TypeError("encoding must be a string");
                  if (typeof Bt == "string" && !f.isEncoding(Bt))
                    throw new TypeError("Unknown encoding: " + Bt);
                  if ($t.length === 1) {
                    var Xt = $t.charCodeAt(0);
                    (Bt === "utf8" && Xt < 128 || Bt === "latin1") && ($t = Xt);
                  }
                } else typeof $t == "number" ? $t = $t & 255 : typeof $t == "boolean" && ($t = Number($t));
                if (jt < 0 || this.length < jt || this.length < ee)
                  throw new RangeError("Out of range index");
                if (ee <= jt)
                  return this;
                jt = jt >>> 0, ee = ee === void 0 ? this.length : ee >>> 0, $t || ($t = 0);
                var Zt;
                if (typeof $t == "number")
                  for (Zt = jt; Zt < ee; ++Zt)
                    this[Zt] = $t;
                else {
                  var ye = f.isBuffer($t) ? $t : f.from($t, Bt), Mt = ye.length;
                  if (Mt === 0)
                    throw new TypeError('The value "' + $t + '" is invalid for argument "value"');
                  for (Zt = 0; Zt < ee - jt; ++Zt)
                    this[Zt + jt] = ye[Zt % Mt];
                }
                return this;
              };
              var Gt = {};
              function Jt(ie, $t, jt) {
                Gt[ie] = /* @__PURE__ */ function(ee) {
                  i(Bt, ee);
                  function Bt() {
                    var Xt;
                    return b(this, Bt), Xt = A(this, Bt), Object.defineProperty(r(Xt), "message", {
                      value: $t.apply(r(Xt), arguments),
                      writable: !0,
                      configurable: !0
                    }), Xt.name = "".concat(Xt.name, " [").concat(ie, "]"), Xt.stack, delete Xt.name, Xt;
                  }
                  return n(Bt, [{
                    key: "code",
                    get: function() {
                      return ie;
                    },
                    set: function(Zt) {
                      Object.defineProperty(this, "code", {
                        configurable: !0,
                        enumerable: !0,
                        value: Zt,
                        writable: !0
                      });
                    }
                  }, {
                    key: "toString",
                    value: function() {
                      return "".concat(this.name, " [").concat(ie, "]: ").concat(this.message);
                    }
                  }]), Bt;
                }(jt);
              }
              Jt("ERR_BUFFER_OUT_OF_BOUNDS", function(ie) {
                return ie ? "".concat(ie, " is outside of buffer bounds") : "Attempt to access memory outside buffer bounds";
              }, RangeError), Jt("ERR_INVALID_ARG_TYPE", function(ie, $t) {
                return 'The "'.concat(ie, '" argument must be of type number. Received type ').concat(l($t));
              }, TypeError), Jt("ERR_OUT_OF_RANGE", function(ie, $t, jt) {
                var ee = 'The value of "'.concat(ie, '" is out of range.'), Bt = jt;
                return Number.isInteger(jt) && Math.abs(jt) > Math.pow(2, 32) ? Bt = Qt(String(jt)) : typeof jt == "bigint" && (Bt = String(jt), (jt > Math.pow(BigInt(2), BigInt(32)) || jt < -Math.pow(BigInt(2), BigInt(32))) && (Bt = Qt(Bt)), Bt += "n"), ee += " It must be ".concat($t, ". Received ").concat(Bt), ee;
              }, RangeError);
              function Qt(ie) {
                for (var $t = "", jt = ie.length, ee = ie[0] === "-" ? 1 : 0; jt >= ee + 4; jt -= 3)
                  $t = "_".concat(ie.slice(jt - 3, jt)).concat($t);
                return "".concat(ie.slice(0, jt)).concat($t);
              }
              function Vt(ie, $t, jt) {
                Rt($t, "offset"), (ie[$t] === void 0 || ie[$t + jt] === void 0) && Wt($t, ie.length - (jt + 1));
              }
              function zt(ie, $t, jt, ee, Bt, Xt) {
                if (ie > jt || ie < $t) {
                  var Zt = typeof $t == "bigint" ? "n" : "", ye;
                  throw $t === 0 || $t === BigInt(0) ? ye = ">= 0".concat(Zt, " and < 2").concat(Zt, " ** ").concat((Xt + 1) * 8).concat(Zt) : ye = ">= -(2".concat(Zt, " ** ").concat((Xt + 1) * 8 - 1).concat(Zt, ") and < 2 ** ") + "".concat((Xt + 1) * 8 - 1).concat(Zt), new Gt.ERR_OUT_OF_RANGE("value", ye, ie);
                }
                Vt(ee, Bt, Xt);
              }
              function Rt(ie, $t) {
                if (typeof ie != "number")
                  throw new Gt.ERR_INVALID_ARG_TYPE($t, "number", ie);
              }
              function Wt(ie, $t, jt) {
                throw Math.floor(ie) !== ie ? (Rt(ie, jt), new Gt.ERR_OUT_OF_RANGE("offset", "an integer", ie)) : $t < 0 ? new Gt.ERR_BUFFER_OUT_OF_BOUNDS() : new Gt.ERR_OUT_OF_RANGE("offset", ">= ".concat(0, " and <= ").concat($t), ie);
              }
              var kt = /[^+/0-9A-Za-z-_]/g;
              function re(ie) {
                if (ie = ie.split("=")[0], ie = ie.trim().replace(kt, ""), ie.length < 2) return "";
                for (; ie.length % 4 !== 0; )
                  ie = ie + "=";
                return ie;
              }
              function ge(ie, $t) {
                $t = $t || 1 / 0;
                for (var jt, ee = ie.length, Bt = null, Xt = [], Zt = 0; Zt < ee; ++Zt) {
                  if (jt = ie.charCodeAt(Zt), jt > 55295 && jt < 57344) {
                    if (!Bt) {
                      if (jt > 56319) {
                        ($t -= 3) > -1 && Xt.push(239, 191, 189);
                        continue;
                      } else if (Zt + 1 === ee) {
                        ($t -= 3) > -1 && Xt.push(239, 191, 189);
                        continue;
                      }
                      Bt = jt;
                      continue;
                    }
                    if (jt < 56320) {
                      ($t -= 3) > -1 && Xt.push(239, 191, 189), Bt = jt;
                      continue;
                    }
                    jt = (Bt - 55296 << 10 | jt - 56320) + 65536;
                  } else Bt && ($t -= 3) > -1 && Xt.push(239, 191, 189);
                  if (Bt = null, jt < 128) {
                    if (($t -= 1) < 0) break;
                    Xt.push(jt);
                  } else if (jt < 2048) {
                    if (($t -= 2) < 0) break;
                    Xt.push(jt >> 6 | 192, jt & 63 | 128);
                  } else if (jt < 65536) {
                    if (($t -= 3) < 0) break;
                    Xt.push(jt >> 12 | 224, jt >> 6 & 63 | 128, jt & 63 | 128);
                  } else if (jt < 1114112) {
                    if (($t -= 4) < 0) break;
                    Xt.push(jt >> 18 | 240, jt >> 12 & 63 | 128, jt >> 6 & 63 | 128, jt & 63 | 128);
                  } else
                    throw new Error("Invalid code point");
                }
                return Xt;
              }
              function _e(ie) {
                for (var $t = [], jt = 0; jt < ie.length; ++jt)
                  $t.push(ie.charCodeAt(jt) & 255);
                return $t;
              }
              function ce(ie, $t) {
                for (var jt, ee, Bt, Xt = [], Zt = 0; Zt < ie.length && !(($t -= 2) < 0); ++Zt)
                  jt = ie.charCodeAt(Zt), ee = jt >> 8, Bt = jt % 256, Xt.push(Bt), Xt.push(ee);
                return Xt;
              }
              function ae(ie) {
                return o.toByteArray(re(ie));
              }
              function Se(ie, $t, jt, ee) {
                var Bt;
                for (Bt = 0; Bt < ee && !(Bt + jt >= $t.length || Bt >= ie.length); ++Bt)
                  $t[Bt + jt] = ie[Bt];
                return Bt;
              }
              function ze(ie, $t) {
                return ie instanceof $t || ie != null && ie.constructor != null && ie.constructor.name != null && ie.constructor.name === $t.name;
              }
              function Ne(ie) {
                return ie !== ie;
              }
              var Ve = function() {
                for (var ie = "0123456789abcdef", $t = new Array(256), jt = 0; jt < 16; ++jt)
                  for (var ee = jt * 16, Bt = 0; Bt < 16; ++Bt)
                    $t[ee + Bt] = ie[jt] + ie[Bt];
                return $t;
              }();
              function Oe(ie) {
                return typeof BigInt > "u" ? ur : ie;
              }
              function ur() {
                throw new Error("BigInt not supported");
              }
            }
          ),
          /***/
          13087: (
            /***/
            function(Y) {
              Y.exports = P, Y.exports.isMobile = P, Y.exports.default = P;
              var K = /(android|bb\d+|meego).+mobile|armv7l|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|samsungbrowser.*mobile|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i, e = /CrOS/, b = /android|ipad|playbook|silk/i;
              function P(n) {
                n || (n = {});
                var s = n.ua;
                if (!s && typeof navigator < "u" && (s = navigator.userAgent), s && s.headers && typeof s.headers["user-agent"] == "string" && (s = s.headers["user-agent"]), typeof s != "string") return !1;
                var T = K.test(s) && !e.test(s) || !!n.tablet && b.test(s);
                return !T && n.tablet && n.featureDetect && navigator && navigator.maxTouchPoints > 1 && s.indexOf("Macintosh") !== -1 && s.indexOf("Safari") !== -1 && (T = !0), T;
              }
            }
          ),
          /***/
          5955: (
            /***/
            function(Y, K, e) {
              var b = e(22413), P = /* @__PURE__ */ e.n(b), n = e(51070), s = /* @__PURE__ */ e.n(n), T = e(62133), A = /* @__PURE__ */ e.n(T), p = new URL(
                /* asset import */
                e(77035),
                e.b
              ), u = new URL(
                /* asset import */
                e(43470),
                e.b
              ), t = new URL(
                /* asset import */
                e(68164),
                e.b
              ), r = new URL(
                /* asset import */
                e(64665),
                e.b
              ), i = new URL(
                /* asset import */
                e(4890),
                e.b
              ), a = new URL(
                /* asset import */
                e(13363),
                e.b
              ), l = new URL(
                /* asset import */
                e(13490),
                e.b
              ), o = new URL(
                /* asset import */
                e(47603),
                e.b
              ), y = new URL(
                /* asset import */
                e(13913),
                e.b
              ), g = new URL(
                /* asset import */
                e(91413),
                e.b
              ), x = new URL(
                /* asset import */
                e(64643),
                e.b
              ), c = new URL(
                /* asset import */
                e(80216),
                e.b
              ), v = new URL(
                /* asset import */
                e(61907),
                e.b
              ), f = new URL(
                /* asset import */
                e(68605),
                e.b
              ), _ = new URL(
                /* asset import */
                e(25446),
                e.b
              ), S = new URL(
                /* asset import */
                e(56694),
                e.b
              ), M = new URL(
                /* asset import */
                e(24420),
                e.b
              ), C = new URL(
                /* asset import */
                e(75796),
                e.b
              ), m = new URL(
                /* asset import */
                e(92228),
                e.b
              ), L = new URL(
                /* asset import */
                e(9819),
                e.b
              ), d = new URL(
                /* asset import */
                e(47695),
                e.b
              ), h = new URL(
                /* asset import */
                e(28869),
                e.b
              ), E = new URL(
                /* asset import */
                e(30557),
                e.b
              ), w = new URL(
                /* asset import */
                e(48460),
                e.b
              ), z = new URL(
                /* asset import */
                e(56539),
                e.b
              ), O = new URL(
                /* asset import */
                e(43737),
                e.b
              ), B = new URL(
                /* asset import */
                e(47914),
                e.b
              ), V = new URL(
                /* asset import */
                e(26117),
                e.b
              ), U = new URL(
                /* asset import */
                e(66311),
                e.b
              ), H = s()(P()), F = A()(p), G = A()(u), q = A()(t), rt = A()(r), st = A()(i), vt = A()(a), ht = A()(l), et = A()(o), Q = A()(y), j = A()(g), at = A()(x), ut = A()(c), nt = A()(v), X = A()(f), ct = A()(_), lt = A()(S), pt = A()(M), wt = A()(C), Et = A()(m), Ct = A()(L), Gt = A()(d), Jt = A()(h), Qt = A()(E), Vt = A()(w), zt = A()(z), Rt = A()(O), Wt = A()(B), kt = A()(V), re = A()(U);
              H.push([Y.id, ".maplibregl-map{font:12px/20px Helvetica Neue,Arial,Helvetica,sans-serif;overflow:hidden;position:relative;-webkit-tap-highlight-color:rgb(0 0 0/0)}.maplibregl-canvas{left:0;position:absolute;top:0}.maplibregl-map:fullscreen{height:100%;width:100%}.maplibregl-ctrl-group button.maplibregl-ctrl-compass{touch-action:none}.maplibregl-canvas-container.maplibregl-interactive,.maplibregl-ctrl-group button.maplibregl-ctrl-compass{cursor:grab;-webkit-user-select:none;-moz-user-select:none;user-select:none}.maplibregl-canvas-container.maplibregl-interactive.maplibregl-track-pointer{cursor:pointer}.maplibregl-canvas-container.maplibregl-interactive:active,.maplibregl-ctrl-group button.maplibregl-ctrl-compass:active{cursor:grabbing}.maplibregl-canvas-container.maplibregl-touch-zoom-rotate,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate .maplibregl-canvas{touch-action:pan-x pan-y}.maplibregl-canvas-container.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-drag-pan .maplibregl-canvas{touch-action:pinch-zoom}.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan .maplibregl-canvas{touch-action:none}.maplibregl-canvas-container.maplibregl-touch-drag-pan.maplibregl-cooperative-gestures,.maplibregl-canvas-container.maplibregl-touch-drag-pan.maplibregl-cooperative-gestures .maplibregl-canvas{touch-action:pan-x pan-y}.maplibregl-ctrl-bottom-left,.maplibregl-ctrl-bottom-right,.maplibregl-ctrl-top-left,.maplibregl-ctrl-top-right{pointer-events:none;position:absolute;z-index:2}.maplibregl-ctrl-top-left{left:0;top:0}.maplibregl-ctrl-top-right{right:0;top:0}.maplibregl-ctrl-bottom-left{bottom:0;left:0}.maplibregl-ctrl-bottom-right{bottom:0;right:0}.maplibregl-ctrl{clear:both;pointer-events:auto;transform:translate(0)}.maplibregl-ctrl-top-left .maplibregl-ctrl{float:left;margin:10px 0 0 10px}.maplibregl-ctrl-top-right .maplibregl-ctrl{float:right;margin:10px 10px 0 0}.maplibregl-ctrl-bottom-left .maplibregl-ctrl{float:left;margin:0 0 10px 10px}.maplibregl-ctrl-bottom-right .maplibregl-ctrl{float:right;margin:0 10px 10px 0}.maplibregl-ctrl-group{background:#fff;border-radius:4px}.maplibregl-ctrl-group:not(:empty){box-shadow:0 0 0 2px rgba(0,0,0,.1)}@media (forced-colors:active){.maplibregl-ctrl-group:not(:empty){box-shadow:0 0 0 2px ButtonText}}.maplibregl-ctrl-group button{background-color:transparent;border:0;box-sizing:border-box;cursor:pointer;display:block;height:29px;outline:none;padding:0;width:29px}.maplibregl-ctrl-group button+button{border-top:1px solid #ddd}.maplibregl-ctrl button .maplibregl-ctrl-icon{background-position:50%;background-repeat:no-repeat;display:block;height:100%;width:100%}@media (forced-colors:active){.maplibregl-ctrl-icon{background-color:transparent}.maplibregl-ctrl-group button+button{border-top:1px solid ButtonText}}.maplibregl-ctrl button::-moz-focus-inner{border:0;padding:0}.maplibregl-ctrl-attrib-button:focus,.maplibregl-ctrl-group button:focus{box-shadow:0 0 2px 2px #0096ff}.maplibregl-ctrl button:disabled{cursor:not-allowed}.maplibregl-ctrl button:disabled .maplibregl-ctrl-icon{opacity:.25}.maplibregl-ctrl button:not(:disabled):hover{background-color:rgb(0 0 0/5%)}.maplibregl-ctrl-group button:focus:focus-visible{box-shadow:0 0 2px 2px #0096ff}.maplibregl-ctrl-group button:focus:not(:focus-visible){box-shadow:none}.maplibregl-ctrl-group button:focus:first-child{border-radius:4px 4px 0 0}.maplibregl-ctrl-group button:focus:last-child{border-radius:0 0 4px 4px}.maplibregl-ctrl-group button:focus:only-child{border-radius:inherit}.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url(" + F + ")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url(" + G + ")}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url(" + q + ")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url(" + rt + ")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url(" + st + ")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url(" + vt + ")}}.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url(" + ht + ")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url(" + et + ")}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url(" + Q + ")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url(" + j + ")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url(" + at + ")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url(" + et + ")}}.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url(" + ut + ")}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url(" + nt + ")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url(" + X + ")}}.maplibregl-ctrl button.maplibregl-ctrl-terrain .maplibregl-ctrl-icon{background-image:url(" + ct + ")}.maplibregl-ctrl button.maplibregl-ctrl-terrain-enabled .maplibregl-ctrl-icon{background-image:url(" + lt + ")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url(" + pt + ")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url(" + wt + ")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url(" + Et + ")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url(" + Ct + ")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url(" + Gt + ")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url(" + Jt + ")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-waiting .maplibregl-ctrl-icon{animation:maplibregl-spin 2s linear infinite}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url(" + Qt + ")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url(" + Vt + ")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url(" + Et + ")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url(" + Ct + ")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url(" + Gt + ")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url(" + Jt + ")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url(" + zt + ")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url(" + Rt + ")}}@keyframes maplibregl-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}a.maplibregl-ctrl-logo{background-image:url(" + Wt + ");background-repeat:no-repeat;cursor:pointer;display:block;height:23px;margin:0 0 -4px -4px;overflow:hidden;width:88px}a.maplibregl-ctrl-logo.maplibregl-compact{width:14px}@media (forced-colors:active){a.maplibregl-ctrl-logo{background-color:transparent;background-image:url(" + Wt + ")}}@media (forced-colors:active) and (prefers-color-scheme:light){a.maplibregl-ctrl-logo{background-image:url(" + Wt + ")}}.maplibregl-ctrl.maplibregl-ctrl-attrib{background-color:hsla(0,0%,100%,.5);margin:0;padding:0 5px}@media screen{.maplibregl-ctrl-attrib.maplibregl-compact{background-color:#fff;border-radius:12px;box-sizing:content-box;color:#000;margin:10px;min-height:20px;padding:2px 24px 2px 0;position:relative}.maplibregl-ctrl-attrib.maplibregl-compact-show{padding:2px 28px 2px 8px;visibility:visible}.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact-show,.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact-show{border-radius:12px;padding:2px 8px 2px 28px}.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-inner{display:none}.maplibregl-ctrl-attrib-button{background-color:hsla(0,0%,100%,.5);background-image:url(" + kt + ");border:0;border-radius:12px;box-sizing:border-box;cursor:pointer;display:none;height:24px;outline:none;position:absolute;right:0;top:0;width:24px}.maplibregl-ctrl-attrib summary.maplibregl-ctrl-attrib-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;list-style:none}.maplibregl-ctrl-attrib summary.maplibregl-ctrl-attrib-button::-webkit-details-marker{display:none}.maplibregl-ctrl-bottom-left .maplibregl-ctrl-attrib-button,.maplibregl-ctrl-top-left .maplibregl-ctrl-attrib-button{left:0}.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-button,.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-inner{display:block}.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-button{background-color:rgb(0 0 0/5%)}.maplibregl-ctrl-bottom-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;right:0}.maplibregl-ctrl-top-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{right:0;top:0}.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{left:0;top:0}.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;left:0}}@media screen and (forced-colors:active){.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url(" + re + ")}}@media screen and (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url(" + kt + ')}}.maplibregl-ctrl-attrib a{color:rgba(0,0,0,.75);text-decoration:none}.maplibregl-ctrl-attrib a:hover{color:inherit;text-decoration:underline}.maplibregl-attrib-empty{display:none}.maplibregl-ctrl-scale{background-color:hsla(0,0%,100%,.75);border:2px solid #333;border-top:#333;box-sizing:border-box;color:#333;font-size:10px;padding:0 5px}.maplibregl-popup{display:flex;left:0;pointer-events:none;position:absolute;top:0;will-change:transform}.maplibregl-popup-anchor-top,.maplibregl-popup-anchor-top-left,.maplibregl-popup-anchor-top-right{flex-direction:column}.maplibregl-popup-anchor-bottom,.maplibregl-popup-anchor-bottom-left,.maplibregl-popup-anchor-bottom-right{flex-direction:column-reverse}.maplibregl-popup-anchor-left{flex-direction:row}.maplibregl-popup-anchor-right{flex-direction:row-reverse}.maplibregl-popup-tip{border:10px solid transparent;height:0;width:0;z-index:1}.maplibregl-popup-anchor-top .maplibregl-popup-tip{align-self:center;border-bottom-color:#fff;border-top:none}.maplibregl-popup-anchor-top-left .maplibregl-popup-tip{align-self:flex-start;border-bottom-color:#fff;border-left:none;border-top:none}.maplibregl-popup-anchor-top-right .maplibregl-popup-tip{align-self:flex-end;border-bottom-color:#fff;border-right:none;border-top:none}.maplibregl-popup-anchor-bottom .maplibregl-popup-tip{align-self:center;border-bottom:none;border-top-color:#fff}.maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip{align-self:flex-start;border-bottom:none;border-left:none;border-top-color:#fff}.maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip{align-self:flex-end;border-bottom:none;border-right:none;border-top-color:#fff}.maplibregl-popup-anchor-left .maplibregl-popup-tip{align-self:center;border-left:none;border-right-color:#fff}.maplibregl-popup-anchor-right .maplibregl-popup-tip{align-self:center;border-left-color:#fff;border-right:none}.maplibregl-popup-close-button{background-color:transparent;border:0;border-radius:0 3px 0 0;cursor:pointer;position:absolute;right:0;top:0}.maplibregl-popup-close-button:hover{background-color:rgb(0 0 0/5%)}.maplibregl-popup-content{background:#fff;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.1);padding:15px 10px;pointer-events:auto;position:relative}.maplibregl-popup-anchor-top-left .maplibregl-popup-content{border-top-left-radius:0}.maplibregl-popup-anchor-top-right .maplibregl-popup-content{border-top-right-radius:0}.maplibregl-popup-anchor-bottom-left .maplibregl-popup-content{border-bottom-left-radius:0}.maplibregl-popup-anchor-bottom-right .maplibregl-popup-content{border-bottom-right-radius:0}.maplibregl-popup-track-pointer{display:none}.maplibregl-popup-track-pointer *{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.maplibregl-map:hover .maplibregl-popup-track-pointer{display:flex}.maplibregl-map:active .maplibregl-popup-track-pointer{display:none}.maplibregl-marker{left:0;position:absolute;top:0;transition:opacity .2s;will-change:transform}.maplibregl-user-location-dot,.maplibregl-user-location-dot:before{background-color:#1da1f2;border-radius:50%;height:15px;width:15px}.maplibregl-user-location-dot:before{animation:maplibregl-user-location-dot-pulse 2s infinite;content:"";position:absolute}.maplibregl-user-location-dot:after{border:2px solid #fff;border-radius:50%;box-shadow:0 0 3px rgba(0,0,0,.35);box-sizing:border-box;content:"";height:19px;left:-2px;position:absolute;top:-2px;width:19px}@keyframes maplibregl-user-location-dot-pulse{0%{opacity:1;transform:scale(1)}70%{opacity:0;transform:scale(3)}to{opacity:0;transform:scale(1)}}.maplibregl-user-location-dot-stale{background-color:#aaa}.maplibregl-user-location-dot-stale:after{display:none}.maplibregl-user-location-accuracy-circle{background-color:#1da1f233;border-radius:100%;height:1px;width:1px}.maplibregl-crosshair,.maplibregl-crosshair .maplibregl-interactive,.maplibregl-crosshair .maplibregl-interactive:active{cursor:crosshair}.maplibregl-boxzoom{background:#fff;border:2px dotted #202020;height:0;left:0;opacity:.5;position:absolute;top:0;width:0}.maplibregl-cooperative-gesture-screen{align-items:center;background:rgba(0,0,0,.4);color:#fff;display:flex;font-size:1.4em;inset:0;justify-content:center;line-height:1.2;opacity:0;padding:1rem;pointer-events:none;position:absolute;transition:opacity 1s ease 1s;z-index:99999}.maplibregl-cooperative-gesture-screen.maplibregl-show{opacity:1;transition:opacity .05s}.maplibregl-cooperative-gesture-screen .maplibregl-mobile-message{display:none}@media (hover:none),(width <= 480px){.maplibregl-cooperative-gesture-screen .maplibregl-desktop-message{display:none}.maplibregl-cooperative-gesture-screen .maplibregl-mobile-message{display:block}}.maplibregl-pseudo-fullscreen{height:100%!important;left:0!important;position:fixed!important;top:0!important;width:100%!important;z-index:99999}', ""]), K.A = H;
            }
          ),
          /***/
          68735: (
            /***/
            function(Y, K, e) {
              e.r(K), e.d(K, {
                /* harmony export */
                sankeyCenter: function() {
                  return (
                    /* binding */
                    r
                  );
                },
                /* harmony export */
                sankeyCircular: function() {
                  return (
                    /* binding */
                    h
                  );
                },
                /* harmony export */
                sankeyJustify: function() {
                  return (
                    /* binding */
                    t
                  );
                },
                /* harmony export */
                sankeyLeft: function() {
                  return (
                    /* binding */
                    p
                  );
                },
                /* harmony export */
                sankeyRight: function() {
                  return (
                    /* binding */
                    u
                  );
                }
                /* harmony export */
              });
              var b = e(29725), P = e(4575), n = e(48544), s = e(96143), T = /* @__PURE__ */ e.n(s);
              function A(Ct) {
                return Ct.target.depth;
              }
              function p(Ct) {
                return Ct.depth;
              }
              function u(Ct, Gt) {
                return Gt - 1 - Ct.height;
              }
              function t(Ct, Gt) {
                return Ct.sourceLinks.length ? Ct.depth : Gt - 1;
              }
              function r(Ct) {
                return Ct.targetLinks.length ? Ct.depth : Ct.sourceLinks.length ? (0, b.jk)(Ct.sourceLinks, A) - 1 : 0;
              }
              function i(Ct) {
                return function() {
                  return Ct;
                };
              }
              var a = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(Ct) {
                return typeof Ct;
              } : function(Ct) {
                return Ct && typeof Symbol == "function" && Ct.constructor === Symbol && Ct !== Symbol.prototype ? "symbol" : typeof Ct;
              };
              function l(Ct, Gt) {
                return y(Ct.source, Gt.source) || Ct.index - Gt.index;
              }
              function o(Ct, Gt) {
                return y(Ct.target, Gt.target) || Ct.index - Gt.index;
              }
              function y(Ct, Gt) {
                return Ct.partOfCycle === Gt.partOfCycle ? Ct.y0 - Gt.y0 : Ct.circularLinkType === "top" || Gt.circularLinkType === "bottom" ? -1 : 1;
              }
              function g(Ct) {
                return Ct.value;
              }
              function x(Ct) {
                return (Ct.y0 + Ct.y1) / 2;
              }
              function c(Ct) {
                return x(Ct.source);
              }
              function v(Ct) {
                return x(Ct.target);
              }
              function f(Ct) {
                return Ct.index;
              }
              function _(Ct) {
                return Ct.nodes;
              }
              function S(Ct) {
                return Ct.links;
              }
              function M(Ct, Gt) {
                var Jt = Ct.get(Gt);
                if (!Jt) throw new Error("missing: " + Gt);
                return Jt;
              }
              function C(Ct, Gt) {
                return Gt(Ct);
              }
              var m = 25, L = 10, d = 0.3;
              function h() {
                var Ct = 0, Gt = 0, Jt = 1, Qt = 1, Vt = 24, zt, Rt = f, Wt = t, kt = _, re = S, ge = 32, _e = 2, ce, ae = null;
                function Se() {
                  var jt = {
                    nodes: kt.apply(null, arguments),
                    links: re.apply(null, arguments)
                    // Process the graph's nodes and links, setting their positions
                    // 1.  Associate the nodes with their respective links, and vice versa
                  };
                  ze(jt), E(jt, Rt, ae), Ne(jt), ur(jt), w(jt, Rt), ie(jt, ge, Rt), $t(jt);
                  for (var ee = 4, Bt = 0; Bt < ee; Bt++)
                    X(jt, Qt, Rt), ct(jt, Qt, Rt), at(jt, Gt, Qt, Rt), X(jt, Qt, Rt), ct(jt, Qt, Rt);
                  return Et(jt, Gt, Qt), H(jt, _e, Qt, Rt), jt;
                }
                Se.nodeId = function(jt) {
                  return arguments.length ? (Rt = typeof jt == "function" ? jt : i(jt), Se) : Rt;
                }, Se.nodeAlign = function(jt) {
                  return arguments.length ? (Wt = typeof jt == "function" ? jt : i(jt), Se) : Wt;
                }, Se.nodeWidth = function(jt) {
                  return arguments.length ? (Vt = +jt, Se) : Vt;
                }, Se.nodePadding = function(jt) {
                  return arguments.length ? (zt = +jt, Se) : zt;
                }, Se.nodes = function(jt) {
                  return arguments.length ? (kt = typeof jt == "function" ? jt : i(jt), Se) : kt;
                }, Se.links = function(jt) {
                  return arguments.length ? (re = typeof jt == "function" ? jt : i(jt), Se) : re;
                }, Se.size = function(jt) {
                  return arguments.length ? (Ct = Gt = 0, Jt = +jt[0], Qt = +jt[1], Se) : [Jt - Ct, Qt - Gt];
                }, Se.extent = function(jt) {
                  return arguments.length ? (Ct = +jt[0][0], Jt = +jt[1][0], Gt = +jt[0][1], Qt = +jt[1][1], Se) : [[Ct, Gt], [Jt, Qt]];
                }, Se.iterations = function(jt) {
                  return arguments.length ? (ge = +jt, Se) : ge;
                }, Se.circularLinkGap = function(jt) {
                  return arguments.length ? (_e = +jt, Se) : _e;
                }, Se.nodePaddingRatio = function(jt) {
                  return arguments.length ? (ce = +jt, Se) : ce;
                }, Se.sortNodes = function(jt) {
                  return arguments.length ? (ae = jt, Se) : ae;
                }, Se.update = function(jt) {
                  return w(jt, Rt), $t(jt), jt.links.forEach(function(ee) {
                    ee.circular && (ee.circularLinkType = ee.y0 + ee.y1 < Qt ? "top" : "bottom", ee.source.circularLinkType = ee.circularLinkType, ee.target.circularLinkType = ee.circularLinkType);
                  }), X(jt, Qt, Rt, !1), ct(jt, Qt, Rt), H(jt, _e, Qt, Rt), jt;
                };
                function ze(jt) {
                  jt.nodes.forEach(function(Bt, Xt) {
                    Bt.index = Xt, Bt.sourceLinks = [], Bt.targetLinks = [];
                  });
                  var ee = (0, P.Tj)(jt.nodes, Rt);
                  return jt.links.forEach(function(Bt, Xt) {
                    Bt.index = Xt;
                    var Zt = Bt.source, ye = Bt.target;
                    (typeof Zt > "u" ? "undefined" : a(Zt)) !== "object" && (Zt = Bt.source = M(ee, Zt)), (typeof ye > "u" ? "undefined" : a(ye)) !== "object" && (ye = Bt.target = M(ee, ye)), Zt.sourceLinks.push(Bt), ye.targetLinks.push(Bt);
                  }), jt;
                }
                function Ne(jt) {
                  jt.nodes.forEach(function(ee) {
                    ee.partOfCycle = !1, ee.value = Math.max((0, b.cz)(ee.sourceLinks, g), (0, b.cz)(ee.targetLinks, g)), ee.sourceLinks.forEach(function(Bt) {
                      Bt.circular && (ee.partOfCycle = !0, ee.circularLinkType = Bt.circularLinkType);
                    }), ee.targetLinks.forEach(function(Bt) {
                      Bt.circular && (ee.partOfCycle = !0, ee.circularLinkType = Bt.circularLinkType);
                    });
                  });
                }
                function Ve(jt) {
                  var ee = 0, Bt = 0, Xt = 0, Zt = 0, ye = (0, b.T9)(jt.nodes, function(Mt) {
                    return Mt.column;
                  });
                  return jt.links.forEach(function(Mt) {
                    Mt.circular && (Mt.circularLinkType == "top" ? ee = ee + Mt.width : Bt = Bt + Mt.width, Mt.target.column == 0 && (Zt = Zt + Mt.width), Mt.source.column == ye && (Xt = Xt + Mt.width));
                  }), ee = ee > 0 ? ee + m + L : ee, Bt = Bt > 0 ? Bt + m + L : Bt, Xt = Xt > 0 ? Xt + m + L : Xt, Zt = Zt > 0 ? Zt + m + L : Zt, { top: ee, bottom: Bt, left: Zt, right: Xt };
                }
                function Oe(jt, ee) {
                  var Bt = (0, b.T9)(jt.nodes, function(te) {
                    return te.column;
                  }), Xt = Jt - Ct, Zt = Qt - Gt, ye = Xt + ee.right + ee.left, Mt = Zt + ee.top + ee.bottom, St = Xt / ye, Lt = Zt / Mt;
                  return Ct = Ct * St + ee.left, Jt = ee.right == 0 ? Jt : Jt * St, Gt = Gt * Lt + ee.top, Qt = Qt * Lt, jt.nodes.forEach(function(te) {
                    te.x0 = Ct + te.column * ((Jt - Ct - Vt) / Bt), te.x1 = te.x0 + Vt;
                  }), Lt;
                }
                function ur(jt) {
                  var ee, Bt, Xt;
                  for (ee = jt.nodes, Bt = [], Xt = 0; ee.length; ++Xt, ee = Bt, Bt = [])
                    ee.forEach(function(Zt) {
                      Zt.depth = Xt, Zt.sourceLinks.forEach(function(ye) {
                        Bt.indexOf(ye.target) < 0 && !ye.circular && Bt.push(ye.target);
                      });
                    });
                  for (ee = jt.nodes, Bt = [], Xt = 0; ee.length; ++Xt, ee = Bt, Bt = [])
                    ee.forEach(function(Zt) {
                      Zt.height = Xt, Zt.targetLinks.forEach(function(ye) {
                        Bt.indexOf(ye.source) < 0 && !ye.circular && Bt.push(ye.source);
                      });
                    });
                  jt.nodes.forEach(function(Zt) {
                    Zt.column = Math.floor(Wt.call(null, Zt, Xt));
                  });
                }
                function ie(jt, ee, Bt) {
                  var Xt = (0, P.$I)().key(function(te) {
                    return te.column;
                  }).sortKeys(b.V_).entries(jt.nodes).map(function(te) {
                    return te.values;
                  });
                  Mt(Bt), Lt();
                  for (var Zt = 1, ye = ee; ye > 0; --ye)
                    St(Zt *= 0.99, Bt), Lt();
                  function Mt(te) {
                    if (ce) {
                      var fe = 1 / 0;
                      Xt.forEach(function(Xe) {
                        var xe = Qt * ce / (Xe.length + 1);
                        fe = xe < fe ? xe : fe;
                      }), zt = fe;
                    }
                    var Me = (0, b.jk)(Xt, function(Xe) {
                      return (Qt - Gt - (Xe.length - 1) * zt) / (0, b.cz)(Xe, g);
                    });
                    Me = Me * d, jt.links.forEach(function(Xe) {
                      Xe.width = Xe.value * Me;
                    });
                    var ir = Ve(jt), mr = Oe(jt, ir);
                    Me = Me * mr, jt.links.forEach(function(Xe) {
                      Xe.width = Xe.value * Me;
                    }), Xt.forEach(function(Xe) {
                      var xe = Xe.length;
                      Xe.forEach(function(me, Le) {
                        me.depth == Xt.length - 1 && xe == 1 || me.depth == 0 && xe == 1 ? (me.y0 = Qt / 2 - me.value * Me, me.y1 = me.y0 + me.value * Me) : me.partOfCycle ? B(me, te) == 0 ? (me.y0 = Qt / 2 + Le, me.y1 = me.y0 + me.value * Me) : me.circularLinkType == "top" ? (me.y0 = Gt + Le, me.y1 = me.y0 + me.value * Me) : (me.y0 = Qt - me.value * Me - Le, me.y1 = me.y0 + me.value * Me) : ir.top == 0 || ir.bottom == 0 ? (me.y0 = (Qt - Gt) / xe * Le, me.y1 = me.y0 + me.value * Me) : (me.y0 = (Qt - Gt) / 2 - xe / 2 + Le, me.y1 = me.y0 + me.value * Me);
                      });
                    });
                  }
                  function St(te, fe) {
                    var Me = Xt.length;
                    Xt.forEach(function(ir) {
                      var mr = ir.length, Xe = ir[0].depth;
                      ir.forEach(function(xe) {
                        var me;
                        if ((xe.sourceLinks.length || xe.targetLinks.length) && !(xe.partOfCycle && B(xe, fe) > 0))
                          if (Xe == 0 && mr == 1)
                            me = xe.y1 - xe.y0, xe.y0 = Qt / 2 - me / 2, xe.y1 = Qt / 2 + me / 2;
                          else if (Xe == Me - 1 && mr == 1)
                            me = xe.y1 - xe.y0, xe.y0 = Qt / 2 - me / 2, xe.y1 = Qt / 2 + me / 2;
                          else {
                            var Le = 0, qt = (0, b.i2)(xe.sourceLinks, v), De = (0, b.i2)(xe.targetLinks, c);
                            qt && De ? Le = (qt + De) / 2 : Le = qt || De;
                            var Je = (Le - x(xe)) * te;
                            xe.y0 += Je, xe.y1 += Je;
                          }
                      });
                    });
                  }
                  function Lt() {
                    Xt.forEach(function(te) {
                      var fe, Me, ir = Gt, mr = te.length, Xe;
                      for (te.sort(y), Xe = 0; Xe < mr; ++Xe)
                        fe = te[Xe], Me = ir - fe.y0, Me > 0 && (fe.y0 += Me, fe.y1 += Me), ir = fe.y1 + zt;
                      if (Me = ir - zt - Qt, Me > 0)
                        for (ir = fe.y0 -= Me, fe.y1 -= Me, Xe = mr - 2; Xe >= 0; --Xe)
                          fe = te[Xe], Me = fe.y1 + zt - ir, Me > 0 && (fe.y0 -= Me, fe.y1 -= Me), ir = fe.y0;
                    });
                  }
                }
                function $t(jt) {
                  jt.nodes.forEach(function(ee) {
                    ee.sourceLinks.sort(o), ee.targetLinks.sort(l);
                  }), jt.nodes.forEach(function(ee) {
                    var Bt = ee.y0, Xt = Bt, Zt = ee.y1, ye = Zt;
                    ee.sourceLinks.forEach(function(Mt) {
                      Mt.circular ? (Mt.y0 = Zt - Mt.width / 2, Zt = Zt - Mt.width) : (Mt.y0 = Bt + Mt.width / 2, Bt += Mt.width);
                    }), ee.targetLinks.forEach(function(Mt) {
                      Mt.circular ? (Mt.y1 = ye - Mt.width / 2, ye = ye - Mt.width) : (Mt.y1 = Xt + Mt.width / 2, Xt += Mt.width);
                    });
                  });
                }
                return Se;
              }
              function E(Ct, Gt, Jt) {
                var Qt = 0;
                if (Jt === null) {
                  for (var Vt = [], zt = 0; zt < Ct.links.length; zt++) {
                    var Rt = Ct.links[zt], Wt = Rt.source.index, kt = Rt.target.index;
                    Vt[Wt] || (Vt[Wt] = []), Vt[kt] || (Vt[kt] = []), Vt[Wt].indexOf(kt) === -1 && Vt[Wt].push(kt);
                  }
                  var re = T()(Vt);
                  re.sort(function(ae, Se) {
                    return ae.length - Se.length;
                  });
                  var ge = {};
                  for (zt = 0; zt < re.length; zt++) {
                    var _e = re[zt], ce = _e.slice(-2);
                    ge[ce[0]] || (ge[ce[0]] = {}), ge[ce[0]][ce[1]] = !0;
                  }
                  Ct.links.forEach(function(ae) {
                    var Se = ae.target.index, ze = ae.source.index;
                    Se === ze || ge[ze] && ge[ze][Se] ? (ae.circular = !0, ae.circularLinkID = Qt, Qt = Qt + 1) : ae.circular = !1;
                  });
                } else
                  Ct.links.forEach(function(ae) {
                    ae.source[Jt] < ae.target[Jt] ? ae.circular = !1 : (ae.circular = !0, ae.circularLinkID = Qt, Qt = Qt + 1);
                  });
              }
              function w(Ct, Gt) {
                var Jt = 0, Qt = 0;
                Ct.links.forEach(function(Vt) {
                  Vt.circular && (Vt.source.circularLinkType || Vt.target.circularLinkType ? Vt.circularLinkType = Vt.source.circularLinkType ? Vt.source.circularLinkType : Vt.target.circularLinkType : Vt.circularLinkType = Jt < Qt ? "top" : "bottom", Vt.circularLinkType == "top" ? Jt = Jt + 1 : Qt = Qt + 1, Ct.nodes.forEach(function(zt) {
                    (C(zt, Gt) == C(Vt.source, Gt) || C(zt, Gt) == C(Vt.target, Gt)) && (zt.circularLinkType = Vt.circularLinkType);
                  }));
                }), Ct.links.forEach(function(Vt) {
                  Vt.circular && (Vt.source.circularLinkType == Vt.target.circularLinkType && (Vt.circularLinkType = Vt.source.circularLinkType), wt(Vt, Gt) && (Vt.circularLinkType = Vt.source.circularLinkType));
                });
              }
              function z(Ct) {
                var Gt = Math.abs(Ct.y1 - Ct.y0), Jt = Math.abs(Ct.target.x0 - Ct.source.x1);
                return Math.atan(Jt / Gt);
              }
              function O(Ct, Gt) {
                return Ct.source.column < Gt.target.column ? !1 : !(Ct.target.column > Gt.source.column);
              }
              function B(Ct, Gt) {
                var Jt = 0;
                Ct.sourceLinks.forEach(function(Vt) {
                  Jt = Vt.circular && !wt(Vt, Gt) ? Jt + 1 : Jt;
                });
                var Qt = 0;
                return Ct.targetLinks.forEach(function(Vt) {
                  Qt = Vt.circular && !wt(Vt, Gt) ? Qt + 1 : Qt;
                }), Jt + Qt;
              }
              function V(Ct) {
                var Gt = Ct.source.sourceLinks, Jt = 0;
                Gt.forEach(function(zt) {
                  Jt = zt.circular ? Jt + 1 : Jt;
                });
                var Qt = Ct.target.targetLinks, Vt = 0;
                return Qt.forEach(function(zt) {
                  Vt = zt.circular ? Vt + 1 : Vt;
                }), !(Jt > 1 || Vt > 1);
              }
              function U(Ct, Gt, Jt) {
                return Ct.sort(G), Ct.forEach(function(Qt, Vt) {
                  var zt = 0;
                  if (wt(Qt, Jt) && V(Qt))
                    Qt.circularPathData.verticalBuffer = zt + Qt.width / 2;
                  else {
                    var Rt = 0;
                    for (Rt; Rt < Vt; Rt++)
                      if (O(Ct[Vt], Ct[Rt])) {
                        var Wt = Ct[Rt].circularPathData.verticalBuffer + Ct[Rt].width / 2 + Gt;
                        zt = Wt > zt ? Wt : zt;
                      }
                    Qt.circularPathData.verticalBuffer = zt + Qt.width / 2;
                  }
                }), Ct;
              }
              function H(Ct, Gt, Jt, Qt) {
                var Vt = 5, zt = (0, b.jk)(Ct.links, function(kt) {
                  return kt.source.y0;
                });
                Ct.links.forEach(function(kt) {
                  kt.circular && (kt.circularPathData = {});
                });
                var Rt = Ct.links.filter(function(kt) {
                  return kt.circularLinkType == "top";
                });
                U(Rt, Gt, Qt);
                var Wt = Ct.links.filter(function(kt) {
                  return kt.circularLinkType == "bottom";
                });
                U(Wt, Gt, Qt), Ct.links.forEach(function(kt) {
                  if (kt.circular) {
                    if (kt.circularPathData.arcRadius = kt.width + L, kt.circularPathData.leftNodeBuffer = Vt, kt.circularPathData.rightNodeBuffer = Vt, kt.circularPathData.sourceWidth = kt.source.x1 - kt.source.x0, kt.circularPathData.sourceX = kt.source.x0 + kt.circularPathData.sourceWidth, kt.circularPathData.targetX = kt.target.x0, kt.circularPathData.sourceY = kt.y0, kt.circularPathData.targetY = kt.y1, wt(kt, Qt) && V(kt))
                      kt.circularPathData.leftSmallArcRadius = L + kt.width / 2, kt.circularPathData.leftLargeArcRadius = L + kt.width / 2, kt.circularPathData.rightSmallArcRadius = L + kt.width / 2, kt.circularPathData.rightLargeArcRadius = L + kt.width / 2, kt.circularLinkType == "bottom" ? (kt.circularPathData.verticalFullExtent = kt.source.y1 + m + kt.circularPathData.verticalBuffer, kt.circularPathData.verticalLeftInnerExtent = kt.circularPathData.verticalFullExtent - kt.circularPathData.leftLargeArcRadius, kt.circularPathData.verticalRightInnerExtent = kt.circularPathData.verticalFullExtent - kt.circularPathData.rightLargeArcRadius) : (kt.circularPathData.verticalFullExtent = kt.source.y0 - m - kt.circularPathData.verticalBuffer, kt.circularPathData.verticalLeftInnerExtent = kt.circularPathData.verticalFullExtent + kt.circularPathData.leftLargeArcRadius, kt.circularPathData.verticalRightInnerExtent = kt.circularPathData.verticalFullExtent + kt.circularPathData.rightLargeArcRadius);
                    else {
                      var re = kt.source.column, ge = kt.circularLinkType, _e = Ct.links.filter(function(Se) {
                        return Se.source.column == re && Se.circularLinkType == ge;
                      });
                      kt.circularLinkType == "bottom" ? _e.sort(rt) : _e.sort(q);
                      var ce = 0;
                      _e.forEach(function(Se, ze) {
                        Se.circularLinkID == kt.circularLinkID && (kt.circularPathData.leftSmallArcRadius = L + kt.width / 2 + ce, kt.circularPathData.leftLargeArcRadius = L + kt.width / 2 + ze * Gt + ce), ce = ce + Se.width;
                      }), re = kt.target.column, _e = Ct.links.filter(function(Se) {
                        return Se.target.column == re && Se.circularLinkType == ge;
                      }), kt.circularLinkType == "bottom" ? _e.sort(vt) : _e.sort(st), ce = 0, _e.forEach(function(Se, ze) {
                        Se.circularLinkID == kt.circularLinkID && (kt.circularPathData.rightSmallArcRadius = L + kt.width / 2 + ce, kt.circularPathData.rightLargeArcRadius = L + kt.width / 2 + ze * Gt + ce), ce = ce + Se.width;
                      }), kt.circularLinkType == "bottom" ? (kt.circularPathData.verticalFullExtent = Math.max(Jt, kt.source.y1, kt.target.y1) + m + kt.circularPathData.verticalBuffer, kt.circularPathData.verticalLeftInnerExtent = kt.circularPathData.verticalFullExtent - kt.circularPathData.leftLargeArcRadius, kt.circularPathData.verticalRightInnerExtent = kt.circularPathData.verticalFullExtent - kt.circularPathData.rightLargeArcRadius) : (kt.circularPathData.verticalFullExtent = zt - m - kt.circularPathData.verticalBuffer, kt.circularPathData.verticalLeftInnerExtent = kt.circularPathData.verticalFullExtent + kt.circularPathData.leftLargeArcRadius, kt.circularPathData.verticalRightInnerExtent = kt.circularPathData.verticalFullExtent + kt.circularPathData.rightLargeArcRadius);
                    }
                    kt.circularPathData.leftInnerExtent = kt.circularPathData.sourceX + kt.circularPathData.leftNodeBuffer, kt.circularPathData.rightInnerExtent = kt.circularPathData.targetX - kt.circularPathData.rightNodeBuffer, kt.circularPathData.leftFullExtent = kt.circularPathData.sourceX + kt.circularPathData.leftLargeArcRadius + kt.circularPathData.leftNodeBuffer, kt.circularPathData.rightFullExtent = kt.circularPathData.targetX - kt.circularPathData.rightLargeArcRadius - kt.circularPathData.rightNodeBuffer;
                  }
                  if (kt.circular)
                    kt.path = F(kt);
                  else {
                    var ae = (0, n.pq)().source(function(Se) {
                      var ze = Se.source.x0 + (Se.source.x1 - Se.source.x0), Ne = Se.y0;
                      return [ze, Ne];
                    }).target(function(Se) {
                      var ze = Se.target.x0, Ne = Se.y1;
                      return [ze, Ne];
                    });
                    kt.path = ae(kt);
                  }
                });
              }
              function F(Ct) {
                var Gt = "";
                return Ct.circularLinkType == "top" ? Gt = // start at the right of the source node
                "M" + Ct.circularPathData.sourceX + " " + Ct.circularPathData.sourceY + " L" + Ct.circularPathData.leftInnerExtent + " " + Ct.circularPathData.sourceY + " A" + Ct.circularPathData.leftLargeArcRadius + " " + Ct.circularPathData.leftSmallArcRadius + " 0 0 0 " + // End of arc X //End of arc Y
                Ct.circularPathData.leftFullExtent + " " + (Ct.circularPathData.sourceY - Ct.circularPathData.leftSmallArcRadius) + " L" + Ct.circularPathData.leftFullExtent + " " + Ct.circularPathData.verticalLeftInnerExtent + " A" + Ct.circularPathData.leftLargeArcRadius + " " + Ct.circularPathData.leftLargeArcRadius + " 0 0 0 " + // End of arc X //End of arc Y
                Ct.circularPathData.leftInnerExtent + " " + Ct.circularPathData.verticalFullExtent + " L" + Ct.circularPathData.rightInnerExtent + " " + Ct.circularPathData.verticalFullExtent + " A" + Ct.circularPathData.rightLargeArcRadius + " " + Ct.circularPathData.rightLargeArcRadius + " 0 0 0 " + // End of arc X //End of arc Y
                Ct.circularPathData.rightFullExtent + " " + Ct.circularPathData.verticalRightInnerExtent + " L" + Ct.circularPathData.rightFullExtent + " " + (Ct.circularPathData.targetY - Ct.circularPathData.rightSmallArcRadius) + " A" + Ct.circularPathData.rightLargeArcRadius + " " + Ct.circularPathData.rightSmallArcRadius + " 0 0 0 " + // End of arc X //End of arc Y
                Ct.circularPathData.rightInnerExtent + " " + Ct.circularPathData.targetY + " L" + Ct.circularPathData.targetX + " " + Ct.circularPathData.targetY : Gt = // start at the right of the source node
                "M" + Ct.circularPathData.sourceX + " " + Ct.circularPathData.sourceY + " L" + Ct.circularPathData.leftInnerExtent + " " + Ct.circularPathData.sourceY + " A" + Ct.circularPathData.leftLargeArcRadius + " " + Ct.circularPathData.leftSmallArcRadius + " 0 0 1 " + // End of arc X //End of arc Y
                Ct.circularPathData.leftFullExtent + " " + (Ct.circularPathData.sourceY + Ct.circularPathData.leftSmallArcRadius) + " L" + Ct.circularPathData.leftFullExtent + " " + Ct.circularPathData.verticalLeftInnerExtent + " A" + Ct.circularPathData.leftLargeArcRadius + " " + Ct.circularPathData.leftLargeArcRadius + " 0 0 1 " + // End of arc X //End of arc Y
                Ct.circularPathData.leftInnerExtent + " " + Ct.circularPathData.verticalFullExtent + " L" + Ct.circularPathData.rightInnerExtent + " " + Ct.circularPathData.verticalFullExtent + " A" + Ct.circularPathData.rightLargeArcRadius + " " + Ct.circularPathData.rightLargeArcRadius + " 0 0 1 " + // End of arc X //End of arc Y
                Ct.circularPathData.rightFullExtent + " " + Ct.circularPathData.verticalRightInnerExtent + " L" + Ct.circularPathData.rightFullExtent + " " + (Ct.circularPathData.targetY + Ct.circularPathData.rightSmallArcRadius) + " A" + Ct.circularPathData.rightLargeArcRadius + " " + Ct.circularPathData.rightSmallArcRadius + " 0 0 1 " + // End of arc X //End of arc Y
                Ct.circularPathData.rightInnerExtent + " " + Ct.circularPathData.targetY + " L" + Ct.circularPathData.targetX + " " + Ct.circularPathData.targetY, Gt;
              }
              function G(Ct, Gt) {
                return ht(Ct) == ht(Gt) ? Ct.circularLinkType == "bottom" ? rt(Ct, Gt) : q(Ct, Gt) : ht(Gt) - ht(Ct);
              }
              function q(Ct, Gt) {
                return Ct.y0 - Gt.y0;
              }
              function rt(Ct, Gt) {
                return Gt.y0 - Ct.y0;
              }
              function st(Ct, Gt) {
                return Ct.y1 - Gt.y1;
              }
              function vt(Ct, Gt) {
                return Gt.y1 - Ct.y1;
              }
              function ht(Ct) {
                return Ct.target.column - Ct.source.column;
              }
              function et(Ct) {
                return Ct.target.x0 - Ct.source.x1;
              }
              function Q(Ct, Gt) {
                var Jt = z(Ct), Qt = et(Gt) / Math.tan(Jt), Vt = pt(Ct) == "up" ? Ct.y1 + Qt : Ct.y1 - Qt;
                return Vt;
              }
              function j(Ct, Gt) {
                var Jt = z(Ct), Qt = et(Gt) / Math.tan(Jt), Vt = pt(Ct) == "up" ? Ct.y1 - Qt : Ct.y1 + Qt;
                return Vt;
              }
              function at(Ct, Gt, Jt, Qt) {
                Ct.links.forEach(function(Vt) {
                  if (!Vt.circular && Vt.target.column - Vt.source.column > 1) {
                    var zt = Vt.source.column + 1, Rt = Vt.target.column - 1, Wt = 1, kt = Rt - zt + 1;
                    for (Wt = 1; zt <= Rt; zt++, Wt++)
                      Ct.nodes.forEach(function(re) {
                        if (re.column == zt) {
                          var ge = Wt / (kt + 1), _e = Math.pow(1 - ge, 3), ce = 3 * ge * Math.pow(1 - ge, 2), ae = 3 * Math.pow(ge, 2) * (1 - ge), Se = Math.pow(ge, 3), ze = _e * Vt.y0 + ce * Vt.y0 + ae * Vt.y1 + Se * Vt.y1, Ne = ze - Vt.width / 2, Ve = ze + Vt.width / 2, Oe;
                          Ne > re.y0 && Ne < re.y1 ? (Oe = re.y1 - Ne + 10, Oe = re.circularLinkType == "bottom" ? Oe : -Oe, re = nt(re, Oe, Gt, Jt), Ct.nodes.forEach(function(ur) {
                            C(ur, Qt) == C(re, Qt) || ur.column != re.column || ut(re, ur) && nt(ur, Oe, Gt, Jt);
                          })) : Ve > re.y0 && Ve < re.y1 ? (Oe = Ve - re.y0 + 10, re = nt(re, Oe, Gt, Jt), Ct.nodes.forEach(function(ur) {
                            C(ur, Qt) == C(re, Qt) || ur.column != re.column || ur.y0 < re.y1 && ur.y1 > re.y1 && nt(ur, Oe, Gt, Jt);
                          })) : Ne < re.y0 && Ve > re.y1 && (Oe = Ve - re.y0 + 10, re = nt(re, Oe, Gt, Jt), Ct.nodes.forEach(function(ur) {
                            C(ur, Qt) == C(re, Qt) || ur.column != re.column || ur.y0 < re.y1 && ur.y1 > re.y1 && nt(ur, Oe, Gt, Jt);
                          }));
                        }
                      });
                  }
                });
              }
              function ut(Ct, Gt) {
                return Ct.y0 > Gt.y0 && Ct.y0 < Gt.y1 || Ct.y1 > Gt.y0 && Ct.y1 < Gt.y1 ? !0 : Ct.y0 < Gt.y0 && Ct.y1 > Gt.y1;
              }
              function nt(Ct, Gt, Jt, Qt) {
                return Ct.y0 + Gt >= Jt && Ct.y1 + Gt <= Qt && (Ct.y0 = Ct.y0 + Gt, Ct.y1 = Ct.y1 + Gt, Ct.targetLinks.forEach(function(Vt) {
                  Vt.y1 = Vt.y1 + Gt;
                }), Ct.sourceLinks.forEach(function(Vt) {
                  Vt.y0 = Vt.y0 + Gt;
                })), Ct;
              }
              function X(Ct, Gt, Jt, Qt) {
                Ct.nodes.forEach(function(Vt) {
                  Qt && Vt.y + (Vt.y1 - Vt.y0) > Gt && (Vt.y = Vt.y - (Vt.y + (Vt.y1 - Vt.y0) - Gt));
                  var zt = Ct.links.filter(function(kt) {
                    return C(kt.source, Jt) == C(Vt, Jt);
                  }), Rt = zt.length;
                  Rt > 1 && zt.sort(function(kt, re) {
                    if (!kt.circular && !re.circular) {
                      if (kt.target.column == re.target.column)
                        return kt.y1 - re.y1;
                      if (lt(kt, re)) {
                        if (kt.target.column > re.target.column) {
                          var ge = j(re, kt);
                          return kt.y1 - ge;
                        }
                        if (re.target.column > kt.target.column) {
                          var _e = j(kt, re);
                          return _e - re.y1;
                        }
                      } else
                        return kt.y1 - re.y1;
                    }
                    if (kt.circular && !re.circular)
                      return kt.circularLinkType == "top" ? -1 : 1;
                    if (re.circular && !kt.circular)
                      return re.circularLinkType == "top" ? 1 : -1;
                    if (kt.circular && re.circular)
                      return kt.circularLinkType === re.circularLinkType && kt.circularLinkType == "top" ? kt.target.column === re.target.column ? kt.target.y1 - re.target.y1 : re.target.column - kt.target.column : kt.circularLinkType === re.circularLinkType && kt.circularLinkType == "bottom" ? kt.target.column === re.target.column ? re.target.y1 - kt.target.y1 : kt.target.column - re.target.column : kt.circularLinkType == "top" ? -1 : 1;
                  });
                  var Wt = Vt.y0;
                  zt.forEach(function(kt) {
                    kt.y0 = Wt + kt.width / 2, Wt = Wt + kt.width;
                  }), zt.forEach(function(kt, re) {
                    if (kt.circularLinkType == "bottom") {
                      var ge = re + 1, _e = 0;
                      for (ge; ge < Rt; ge++)
                        _e = _e + zt[ge].width;
                      kt.y0 = Vt.y1 - _e - kt.width / 2;
                    }
                  });
                });
              }
              function ct(Ct, Gt, Jt) {
                Ct.nodes.forEach(function(Qt) {
                  var Vt = Ct.links.filter(function(Wt) {
                    return C(Wt.target, Jt) == C(Qt, Jt);
                  }), zt = Vt.length;
                  zt > 1 && Vt.sort(function(Wt, kt) {
                    if (!Wt.circular && !kt.circular) {
                      if (Wt.source.column == kt.source.column)
                        return Wt.y0 - kt.y0;
                      if (lt(Wt, kt)) {
                        if (kt.source.column < Wt.source.column) {
                          var re = Q(kt, Wt);
                          return Wt.y0 - re;
                        }
                        if (Wt.source.column < kt.source.column) {
                          var ge = Q(Wt, kt);
                          return ge - kt.y0;
                        }
                      } else
                        return Wt.y0 - kt.y0;
                    }
                    if (Wt.circular && !kt.circular)
                      return Wt.circularLinkType == "top" ? -1 : 1;
                    if (kt.circular && !Wt.circular)
                      return kt.circularLinkType == "top" ? 1 : -1;
                    if (Wt.circular && kt.circular)
                      return Wt.circularLinkType === kt.circularLinkType && Wt.circularLinkType == "top" ? Wt.source.column === kt.source.column ? Wt.source.y1 - kt.source.y1 : Wt.source.column - kt.source.column : Wt.circularLinkType === kt.circularLinkType && Wt.circularLinkType == "bottom" ? Wt.source.column === kt.source.column ? Wt.source.y1 - kt.source.y1 : kt.source.column - Wt.source.column : Wt.circularLinkType == "top" ? -1 : 1;
                  });
                  var Rt = Qt.y0;
                  Vt.forEach(function(Wt) {
                    Wt.y1 = Rt + Wt.width / 2, Rt = Rt + Wt.width;
                  }), Vt.forEach(function(Wt, kt) {
                    if (Wt.circularLinkType == "bottom") {
                      var re = kt + 1, ge = 0;
                      for (re; re < zt; re++)
                        ge = ge + Vt[re].width;
                      Wt.y1 = Qt.y1 - ge - Wt.width / 2;
                    }
                  });
                });
              }
              function lt(Ct, Gt) {
                return pt(Ct) == pt(Gt);
              }
              function pt(Ct) {
                return Ct.y0 - Ct.y1 > 0 ? "up" : "down";
              }
              function wt(Ct, Gt) {
                return C(Ct.source, Gt) == C(Ct.target, Gt);
              }
              function Et(Ct, Gt, Jt) {
                var Qt = Ct.nodes, Vt = Ct.links, zt = !1, Rt = !1;
                if (Vt.forEach(function(ce) {
                  ce.circularLinkType == "top" ? zt = !0 : ce.circularLinkType == "bottom" && (Rt = !0);
                }), zt == !1 || Rt == !1) {
                  var Wt = (0, b.jk)(Qt, function(ce) {
                    return ce.y0;
                  }), kt = (0, b.T9)(Qt, function(ce) {
                    return ce.y1;
                  }), re = kt - Wt, ge = Jt - Gt, _e = ge / re;
                  Qt.forEach(function(ce) {
                    var ae = (ce.y1 - ce.y0) * _e;
                    ce.y0 = (ce.y0 - Wt) * _e, ce.y1 = ce.y0 + ae;
                  }), Vt.forEach(function(ce) {
                    ce.y0 = (ce.y0 - Wt) * _e, ce.y1 = (ce.y1 - Wt) * _e, ce.width = ce.width * _e;
                  });
                }
              }
            }
          ),
          /***/
          62369: (
            /***/
            function(Y, K, e) {
              e.r(K), e.d(K, {
                sankey: function() {
                  return (
                    /* reexport */
                    f
                  );
                },
                sankeyCenter: function() {
                  return (
                    /* reexport */
                    p
                  );
                },
                sankeyJustify: function() {
                  return (
                    /* reexport */
                    A
                  );
                },
                sankeyLeft: function() {
                  return (
                    /* reexport */
                    s
                  );
                },
                sankeyLinkHorizontal: function() {
                  return (
                    /* reexport */
                    C
                  );
                },
                sankeyRight: function() {
                  return (
                    /* reexport */
                    T
                  );
                }
              });
              var b = e(29725), P = e(4575);
              function n(m) {
                return m.target.depth;
              }
              function s(m) {
                return m.depth;
              }
              function T(m, L) {
                return L - 1 - m.height;
              }
              function A(m, L) {
                return m.sourceLinks.length ? m.depth : L - 1;
              }
              function p(m) {
                return m.targetLinks.length ? m.depth : m.sourceLinks.length ? (0, b.jk)(m.sourceLinks, n) - 1 : 0;
              }
              function u(m) {
                return function() {
                  return m;
                };
              }
              function t(m, L) {
                return i(m.source, L.source) || m.index - L.index;
              }
              function r(m, L) {
                return i(m.target, L.target) || m.index - L.index;
              }
              function i(m, L) {
                return m.y0 - L.y0;
              }
              function a(m) {
                return m.value;
              }
              function l(m) {
                return (m.y0 + m.y1) / 2;
              }
              function o(m) {
                return l(m.source) * m.value;
              }
              function y(m) {
                return l(m.target) * m.value;
              }
              function g(m) {
                return m.index;
              }
              function x(m) {
                return m.nodes;
              }
              function c(m) {
                return m.links;
              }
              function v(m, L) {
                var d = m.get(L);
                if (!d) throw new Error("missing: " + L);
                return d;
              }
              function f() {
                var m = 0, L = 0, d = 1, h = 1, E = 24, w = 8, z = g, O = A, B = x, V = c, U = 32, H = 2 / 3;
                function F() {
                  var ht = { nodes: B.apply(null, arguments), links: V.apply(null, arguments) };
                  return G(ht), q(ht), rt(ht), st(ht), vt(ht), ht;
                }
                F.update = function(ht) {
                  return vt(ht), ht;
                }, F.nodeId = function(ht) {
                  return arguments.length ? (z = typeof ht == "function" ? ht : u(ht), F) : z;
                }, F.nodeAlign = function(ht) {
                  return arguments.length ? (O = typeof ht == "function" ? ht : u(ht), F) : O;
                }, F.nodeWidth = function(ht) {
                  return arguments.length ? (E = +ht, F) : E;
                }, F.nodePadding = function(ht) {
                  return arguments.length ? (w = +ht, F) : w;
                }, F.nodes = function(ht) {
                  return arguments.length ? (B = typeof ht == "function" ? ht : u(ht), F) : B;
                }, F.links = function(ht) {
                  return arguments.length ? (V = typeof ht == "function" ? ht : u(ht), F) : V;
                }, F.size = function(ht) {
                  return arguments.length ? (m = L = 0, d = +ht[0], h = +ht[1], F) : [d - m, h - L];
                }, F.extent = function(ht) {
                  return arguments.length ? (m = +ht[0][0], d = +ht[1][0], L = +ht[0][1], h = +ht[1][1], F) : [[m, L], [d, h]];
                }, F.iterations = function(ht) {
                  return arguments.length ? (U = +ht, F) : U;
                };
                function G(ht) {
                  ht.nodes.forEach(function(Q, j) {
                    Q.index = j, Q.sourceLinks = [], Q.targetLinks = [];
                  });
                  var et = (0, P.Tj)(ht.nodes, z);
                  ht.links.forEach(function(Q, j) {
                    Q.index = j;
                    var at = Q.source, ut = Q.target;
                    typeof at != "object" && (at = Q.source = v(et, at)), typeof ut != "object" && (ut = Q.target = v(et, ut)), at.sourceLinks.push(Q), ut.targetLinks.push(Q);
                  });
                }
                function q(ht) {
                  ht.nodes.forEach(function(et) {
                    et.value = Math.max(
                      (0, b.cz)(et.sourceLinks, a),
                      (0, b.cz)(et.targetLinks, a)
                    );
                  });
                }
                function rt(ht) {
                  var et, Q, j;
                  for (et = ht.nodes, Q = [], j = 0; et.length; ++j, et = Q, Q = [])
                    et.forEach(function(ut) {
                      ut.depth = j, ut.sourceLinks.forEach(function(nt) {
                        Q.indexOf(nt.target) < 0 && Q.push(nt.target);
                      });
                    });
                  for (et = ht.nodes, Q = [], j = 0; et.length; ++j, et = Q, Q = [])
                    et.forEach(function(ut) {
                      ut.height = j, ut.targetLinks.forEach(function(nt) {
                        Q.indexOf(nt.source) < 0 && Q.push(nt.source);
                      });
                    });
                  var at = (d - m - E) / (j - 1);
                  ht.nodes.forEach(function(ut) {
                    ut.x1 = (ut.x0 = m + Math.max(0, Math.min(j - 1, Math.floor(O.call(null, ut, j)))) * at) + E;
                  });
                }
                function st(ht) {
                  var et = (0, P.$I)().key(function(ct) {
                    return ct.x0;
                  }).sortKeys(b.V_).entries(ht.nodes).map(function(ct) {
                    return ct.values;
                  });
                  at(), X();
                  for (var Q = 1, j = U; j > 0; --j)
                    nt(Q *= 0.99), X(), ut(Q), X();
                  function at() {
                    var ct = (0, b.T9)(et, function(wt) {
                      return wt.length;
                    }), lt = H * (h - L) / (ct - 1);
                    w > lt && (w = lt);
                    var pt = (0, b.jk)(et, function(wt) {
                      return (h - L - (wt.length - 1) * w) / (0, b.cz)(wt, a);
                    });
                    et.forEach(function(wt) {
                      wt.forEach(function(Et, Ct) {
                        Et.y1 = (Et.y0 = Ct) + Et.value * pt;
                      });
                    }), ht.links.forEach(function(wt) {
                      wt.width = wt.value * pt;
                    });
                  }
                  function ut(ct) {
                    et.forEach(function(lt) {
                      lt.forEach(function(pt) {
                        if (pt.targetLinks.length) {
                          var wt = ((0, b.cz)(pt.targetLinks, o) / (0, b.cz)(pt.targetLinks, a) - l(pt)) * ct;
                          pt.y0 += wt, pt.y1 += wt;
                        }
                      });
                    });
                  }
                  function nt(ct) {
                    et.slice().reverse().forEach(function(lt) {
                      lt.forEach(function(pt) {
                        if (pt.sourceLinks.length) {
                          var wt = ((0, b.cz)(pt.sourceLinks, y) / (0, b.cz)(pt.sourceLinks, a) - l(pt)) * ct;
                          pt.y0 += wt, pt.y1 += wt;
                        }
                      });
                    });
                  }
                  function X() {
                    et.forEach(function(ct) {
                      var lt, pt, wt = L, Et = ct.length, Ct;
                      for (ct.sort(i), Ct = 0; Ct < Et; ++Ct)
                        lt = ct[Ct], pt = wt - lt.y0, pt > 0 && (lt.y0 += pt, lt.y1 += pt), wt = lt.y1 + w;
                      if (pt = wt - w - h, pt > 0)
                        for (wt = lt.y0 -= pt, lt.y1 -= pt, Ct = Et - 2; Ct >= 0; --Ct)
                          lt = ct[Ct], pt = lt.y1 + w - wt, pt > 0 && (lt.y0 -= pt, lt.y1 -= pt), wt = lt.y0;
                    });
                  }
                }
                function vt(ht) {
                  ht.nodes.forEach(function(et) {
                    et.sourceLinks.sort(r), et.targetLinks.sort(t);
                  }), ht.nodes.forEach(function(et) {
                    var Q = et.y0, j = Q;
                    et.sourceLinks.forEach(function(at) {
                      at.y0 = Q + at.width / 2, Q += at.width;
                    }), et.targetLinks.forEach(function(at) {
                      at.y1 = j + at.width / 2, j += at.width;
                    });
                  });
                }
                return F;
              }
              var _ = e(48544);
              function S(m) {
                return [m.source.x1, m.y0];
              }
              function M(m) {
                return [m.target.x0, m.y1];
              }
              function C() {
                return (0, _.pq)().source(S).target(M);
              }
            }
          ),
          /***/
          45568: (
            /***/
            function(Y, K, e) {
              var b, P;
              (function() {
                var n = {
                  version: "3.8.2"
                }, s = [].slice, T = function(gt) {
                  return s.call(gt);
                }, A = self.document;
                function p(gt) {
                  return gt && (gt.ownerDocument || gt.document || gt).documentElement;
                }
                function u(gt) {
                  return gt && (gt.ownerDocument && gt.ownerDocument.defaultView || gt.document && gt || gt.defaultView);
                }
                if (A)
                  try {
                    T(A.documentElement.childNodes)[0].nodeType;
                  } catch {
                    T = function(Ft) {
                      for (var Kt = Ft.length, pe = new Array(Kt); Kt--; ) pe[Kt] = Ft[Kt];
                      return pe;
                    };
                  }
                if (Date.now || (Date.now = function() {
                  return +/* @__PURE__ */ new Date();
                }), A)
                  try {
                    A.createElement("DIV").style.setProperty("opacity", 0, "");
                  } catch {
                    var t = this.Element.prototype, r = t.setAttribute, i = t.setAttributeNS, a = this.CSSStyleDeclaration.prototype, l = a.setProperty;
                    t.setAttribute = function(Ft, Kt) {
                      r.call(this, Ft, Kt + "");
                    }, t.setAttributeNS = function(Ft, Kt, pe) {
                      i.call(this, Ft, Kt, pe + "");
                    }, a.setProperty = function(Ft, Kt, pe) {
                      l.call(this, Ft, Kt + "", pe);
                    };
                  }
                n.ascending = o;
                function o(gt, Ft) {
                  return gt < Ft ? -1 : gt > Ft ? 1 : gt >= Ft ? 0 : NaN;
                }
                n.descending = function(gt, Ft) {
                  return Ft < gt ? -1 : Ft > gt ? 1 : Ft >= gt ? 0 : NaN;
                }, n.min = function(gt, Ft) {
                  var Kt = -1, pe = gt.length, Te, Ce;
                  if (arguments.length === 1) {
                    for (; ++Kt < pe; ) if ((Ce = gt[Kt]) != null && Ce >= Ce) {
                      Te = Ce;
                      break;
                    }
                    for (; ++Kt < pe; ) (Ce = gt[Kt]) != null && Te > Ce && (Te = Ce);
                  } else {
                    for (; ++Kt < pe; ) if ((Ce = Ft.call(gt, gt[Kt], Kt)) != null && Ce >= Ce) {
                      Te = Ce;
                      break;
                    }
                    for (; ++Kt < pe; ) (Ce = Ft.call(gt, gt[Kt], Kt)) != null && Te > Ce && (Te = Ce);
                  }
                  return Te;
                }, n.max = function(gt, Ft) {
                  var Kt = -1, pe = gt.length, Te, Ce;
                  if (arguments.length === 1) {
                    for (; ++Kt < pe; ) if ((Ce = gt[Kt]) != null && Ce >= Ce) {
                      Te = Ce;
                      break;
                    }
                    for (; ++Kt < pe; ) (Ce = gt[Kt]) != null && Ce > Te && (Te = Ce);
                  } else {
                    for (; ++Kt < pe; ) if ((Ce = Ft.call(gt, gt[Kt], Kt)) != null && Ce >= Ce) {
                      Te = Ce;
                      break;
                    }
                    for (; ++Kt < pe; ) (Ce = Ft.call(gt, gt[Kt], Kt)) != null && Ce > Te && (Te = Ce);
                  }
                  return Te;
                }, n.extent = function(gt, Ft) {
                  var Kt = -1, pe = gt.length, Te, Ce, er;
                  if (arguments.length === 1) {
                    for (; ++Kt < pe; ) if ((Ce = gt[Kt]) != null && Ce >= Ce) {
                      Te = er = Ce;
                      break;
                    }
                    for (; ++Kt < pe; ) (Ce = gt[Kt]) != null && (Te > Ce && (Te = Ce), er < Ce && (er = Ce));
                  } else {
                    for (; ++Kt < pe; ) if ((Ce = Ft.call(gt, gt[Kt], Kt)) != null && Ce >= Ce) {
                      Te = er = Ce;
                      break;
                    }
                    for (; ++Kt < pe; ) (Ce = Ft.call(gt, gt[Kt], Kt)) != null && (Te > Ce && (Te = Ce), er < Ce && (er = Ce));
                  }
                  return [Te, er];
                };
                function y(gt) {
                  return gt === null ? NaN : +gt;
                }
                function g(gt) {
                  return !isNaN(gt);
                }
                n.sum = function(gt, Ft) {
                  var Kt = 0, pe = gt.length, Te, Ce = -1;
                  if (arguments.length === 1)
                    for (; ++Ce < pe; ) g(Te = +gt[Ce]) && (Kt += Te);
                  else
                    for (; ++Ce < pe; ) g(Te = +Ft.call(gt, gt[Ce], Ce)) && (Kt += Te);
                  return Kt;
                }, n.mean = function(gt, Ft) {
                  var Kt = 0, pe = gt.length, Te, Ce = -1, er = pe;
                  if (arguments.length === 1)
                    for (; ++Ce < pe; ) g(Te = y(gt[Ce])) ? Kt += Te : --er;
                  else
                    for (; ++Ce < pe; ) g(Te = y(Ft.call(gt, gt[Ce], Ce))) ? Kt += Te : --er;
                  if (er) return Kt / er;
                }, n.quantile = function(gt, Ft) {
                  var Kt = (gt.length - 1) * Ft + 1, pe = Math.floor(Kt), Te = +gt[pe - 1], Ce = Kt - pe;
                  return Ce ? Te + Ce * (gt[pe] - Te) : Te;
                }, n.median = function(gt, Ft) {
                  var Kt = [], pe = gt.length, Te, Ce = -1;
                  if (arguments.length === 1)
                    for (; ++Ce < pe; ) g(Te = y(gt[Ce])) && Kt.push(Te);
                  else
                    for (; ++Ce < pe; ) g(Te = y(Ft.call(gt, gt[Ce], Ce))) && Kt.push(Te);
                  if (Kt.length) return n.quantile(Kt.sort(o), 0.5);
                }, n.variance = function(gt, Ft) {
                  var Kt = gt.length, pe = 0, Te, Ce, er = 0, We = -1, gr = 0;
                  if (arguments.length === 1)
                    for (; ++We < Kt; )
                      g(Te = y(gt[We])) && (Ce = Te - pe, pe += Ce / ++gr, er += Ce * (Te - pe));
                  else
                    for (; ++We < Kt; )
                      g(Te = y(Ft.call(gt, gt[We], We))) && (Ce = Te - pe, pe += Ce / ++gr, er += Ce * (Te - pe));
                  if (gr > 1) return er / (gr - 1);
                }, n.deviation = function() {
                  var gt = n.variance.apply(this, arguments);
                  return gt && Math.sqrt(gt);
                };
                function x(gt) {
                  return {
                    left: function(Ft, Kt, pe, Te) {
                      for (arguments.length < 3 && (pe = 0), arguments.length < 4 && (Te = Ft.length); pe < Te; ) {
                        var Ce = pe + Te >>> 1;
                        gt(Ft[Ce], Kt) < 0 ? pe = Ce + 1 : Te = Ce;
                      }
                      return pe;
                    },
                    right: function(Ft, Kt, pe, Te) {
                      for (arguments.length < 3 && (pe = 0), arguments.length < 4 && (Te = Ft.length); pe < Te; ) {
                        var Ce = pe + Te >>> 1;
                        gt(Ft[Ce], Kt) > 0 ? Te = Ce : pe = Ce + 1;
                      }
                      return pe;
                    }
                  };
                }
                var c = x(o);
                n.bisectLeft = c.left, n.bisect = n.bisectRight = c.right, n.bisector = function(gt) {
                  return x(gt.length === 1 ? function(Ft, Kt) {
                    return o(gt(Ft), Kt);
                  } : gt);
                }, n.shuffle = function(gt, Ft, Kt) {
                  (pe = arguments.length) < 3 && (Kt = gt.length, pe < 2 && (Ft = 0));
                  for (var pe = Kt - Ft, Te, Ce; pe; )
                    Ce = Math.random() * pe-- | 0, Te = gt[pe + Ft], gt[pe + Ft] = gt[Ce + Ft], gt[Ce + Ft] = Te;
                  return gt;
                }, n.permute = function(gt, Ft) {
                  for (var Kt = Ft.length, pe = new Array(Kt); Kt--; ) pe[Kt] = gt[Ft[Kt]];
                  return pe;
                }, n.pairs = function(gt) {
                  for (var Ft = 0, Kt = gt.length - 1, pe = gt[0], Te = new Array(Kt < 0 ? 0 : Kt); Ft < Kt; ) Te[Ft] = [pe, pe = gt[++Ft]];
                  return Te;
                }, n.transpose = function(gt) {
                  if (!(Ce = gt.length)) return [];
                  for (var Ft = -1, Kt = n.min(gt, v), pe = new Array(Kt); ++Ft < Kt; )
                    for (var Te = -1, Ce, er = pe[Ft] = new Array(Ce); ++Te < Ce; )
                      er[Te] = gt[Te][Ft];
                  return pe;
                };
                function v(gt) {
                  return gt.length;
                }
                n.zip = function() {
                  return n.transpose(arguments);
                }, n.keys = function(gt) {
                  var Ft = [];
                  for (var Kt in gt) Ft.push(Kt);
                  return Ft;
                }, n.values = function(gt) {
                  var Ft = [];
                  for (var Kt in gt) Ft.push(gt[Kt]);
                  return Ft;
                }, n.entries = function(gt) {
                  var Ft = [];
                  for (var Kt in gt) Ft.push({
                    key: Kt,
                    value: gt[Kt]
                  });
                  return Ft;
                }, n.merge = function(gt) {
                  for (var Ft = gt.length, Kt, pe = -1, Te = 0, Ce, er; ++pe < Ft; ) Te += gt[pe].length;
                  for (Ce = new Array(Te); --Ft >= 0; )
                    for (er = gt[Ft], Kt = er.length; --Kt >= 0; )
                      Ce[--Te] = er[Kt];
                  return Ce;
                };
                var f = Math.abs;
                n.range = function(gt, Ft, Kt) {
                  if (arguments.length < 3 && (Kt = 1, arguments.length < 2 && (Ft = gt, gt = 0)), (Ft - gt) / Kt === 1 / 0) throw new Error("infinite range");
                  var pe = [], Te = _(f(Kt)), Ce = -1, er;
                  if (gt *= Te, Ft *= Te, Kt *= Te, Kt < 0) for (; (er = gt + Kt * ++Ce) > Ft; ) pe.push(er / Te);
                  else for (; (er = gt + Kt * ++Ce) < Ft; ) pe.push(er / Te);
                  return pe;
                };
                function _(gt) {
                  for (var Ft = 1; gt * Ft % 1; ) Ft *= 10;
                  return Ft;
                }
                function S(gt, Ft) {
                  for (var Kt in Ft)
                    Object.defineProperty(gt.prototype, Kt, {
                      value: Ft[Kt],
                      enumerable: !1
                    });
                }
                n.map = function(gt, Ft) {
                  var Kt = new M();
                  if (gt instanceof M)
                    gt.forEach(function(We, gr) {
                      Kt.set(We, gr);
                    });
                  else if (Array.isArray(gt)) {
                    var pe = -1, Te = gt.length, Ce;
                    if (arguments.length === 1) for (; ++pe < Te; ) Kt.set(pe, gt[pe]);
                    else for (; ++pe < Te; ) Kt.set(Ft.call(gt, Ce = gt[pe], pe), Ce);
                  } else
                    for (var er in gt) Kt.set(er, gt[er]);
                  return Kt;
                };
                function M() {
                  this._ = /* @__PURE__ */ Object.create(null);
                }
                var C = "__proto__", m = "\0";
                S(M, {
                  has: h,
                  get: function(gt) {
                    return this._[L(gt)];
                  },
                  set: function(gt, Ft) {
                    return this._[L(gt)] = Ft;
                  },
                  remove: E,
                  keys: w,
                  values: function() {
                    var gt = [];
                    for (var Ft in this._) gt.push(this._[Ft]);
                    return gt;
                  },
                  entries: function() {
                    var gt = [];
                    for (var Ft in this._) gt.push({
                      key: d(Ft),
                      value: this._[Ft]
                    });
                    return gt;
                  },
                  size: z,
                  empty: O,
                  forEach: function(gt) {
                    for (var Ft in this._) gt.call(this, d(Ft), this._[Ft]);
                  }
                });
                function L(gt) {
                  return (gt += "") === C || gt[0] === m ? m + gt : gt;
                }
                function d(gt) {
                  return (gt += "")[0] === m ? gt.slice(1) : gt;
                }
                function h(gt) {
                  return L(gt) in this._;
                }
                function E(gt) {
                  return (gt = L(gt)) in this._ && delete this._[gt];
                }
                function w() {
                  var gt = [];
                  for (var Ft in this._) gt.push(d(Ft));
                  return gt;
                }
                function z() {
                  var gt = 0;
                  for (var Ft in this._) ++gt;
                  return gt;
                }
                function O() {
                  for (var gt in this._) return !1;
                  return !0;
                }
                n.nest = function() {
                  var gt = {}, Ft = [], Kt = [], pe, Te;
                  function Ce(We, gr, xr) {
                    if (xr >= Ft.length) return Te ? Te.call(gt, gr) : pe ? gr.sort(pe) : gr;
                    for (var kr = -1, an = gr.length, on = Ft[xr++], Ln, Hn, cn, xn = new M(), Pn; ++kr < an; )
                      (Pn = xn.get(Ln = on(Hn = gr[kr]))) ? Pn.push(Hn) : xn.set(Ln, [Hn]);
                    return We ? (Hn = We(), cn = function(Yn, ti) {
                      Hn.set(Yn, Ce(We, ti, xr));
                    }) : (Hn = {}, cn = function(Yn, ti) {
                      Hn[Yn] = Ce(We, ti, xr);
                    }), xn.forEach(cn), Hn;
                  }
                  function er(We, gr) {
                    if (gr >= Ft.length) return We;
                    var xr = [], kr = Kt[gr++];
                    return We.forEach(function(an, on) {
                      xr.push({
                        key: an,
                        values: er(on, gr)
                      });
                    }), kr ? xr.sort(function(an, on) {
                      return kr(an.key, on.key);
                    }) : xr;
                  }
                  return gt.map = function(We, gr) {
                    return Ce(gr, We, 0);
                  }, gt.entries = function(We) {
                    return er(Ce(n.map, We, 0), 0);
                  }, gt.key = function(We) {
                    return Ft.push(We), gt;
                  }, gt.sortKeys = function(We) {
                    return Kt[Ft.length - 1] = We, gt;
                  }, gt.sortValues = function(We) {
                    return pe = We, gt;
                  }, gt.rollup = function(We) {
                    return Te = We, gt;
                  }, gt;
                }, n.set = function(gt) {
                  var Ft = new B();
                  if (gt) for (var Kt = 0, pe = gt.length; Kt < pe; ++Kt) Ft.add(gt[Kt]);
                  return Ft;
                };
                function B() {
                  this._ = /* @__PURE__ */ Object.create(null);
                }
                S(B, {
                  has: h,
                  add: function(gt) {
                    return this._[L(gt += "")] = !0, gt;
                  },
                  remove: E,
                  values: w,
                  size: z,
                  empty: O,
                  forEach: function(gt) {
                    for (var Ft in this._) gt.call(this, d(Ft));
                  }
                }), n.behavior = {};
                function V(gt) {
                  return gt;
                }
                n.rebind = function(gt, Ft) {
                  for (var Kt = 1, pe = arguments.length, Te; ++Kt < pe; ) gt[Te = arguments[Kt]] = U(gt, Ft, Ft[Te]);
                  return gt;
                };
                function U(gt, Ft, Kt) {
                  return function() {
                    var pe = Kt.apply(Ft, arguments);
                    return pe === Ft ? gt : pe;
                  };
                }
                function H(gt, Ft) {
                  if (Ft in gt) return Ft;
                  Ft = Ft.charAt(0).toUpperCase() + Ft.slice(1);
                  for (var Kt = 0, pe = F.length; Kt < pe; ++Kt) {
                    var Te = F[Kt] + Ft;
                    if (Te in gt) return Te;
                  }
                }
                var F = ["webkit", "ms", "moz", "Moz", "o", "O"];
                function G() {
                }
                n.dispatch = function() {
                  for (var gt = new q(), Ft = -1, Kt = arguments.length; ++Ft < Kt; ) gt[arguments[Ft]] = rt(gt);
                  return gt;
                };
                function q() {
                }
                q.prototype.on = function(gt, Ft) {
                  var Kt = gt.indexOf("."), pe = "";
                  if (Kt >= 0 && (pe = gt.slice(Kt + 1), gt = gt.slice(0, Kt)), gt) return arguments.length < 2 ? this[gt].on(pe) : this[gt].on(pe, Ft);
                  if (arguments.length === 2) {
                    if (Ft == null) for (gt in this)
                      this.hasOwnProperty(gt) && this[gt].on(pe, null);
                    return this;
                  }
                };
                function rt(gt) {
                  var Ft = [], Kt = new M();
                  function pe() {
                    for (var Te = Ft, Ce = -1, er = Te.length, We; ++Ce < er; ) (We = Te[Ce].on) && We.apply(this, arguments);
                    return gt;
                  }
                  return pe.on = function(Te, Ce) {
                    var er = Kt.get(Te), We;
                    return arguments.length < 2 ? er && er.on : (er && (er.on = null, Ft = Ft.slice(0, We = Ft.indexOf(er)).concat(Ft.slice(We + 1)), Kt.remove(Te)), Ce && Ft.push(Kt.set(Te, {
                      on: Ce
                    })), gt);
                  }, pe;
                }
                n.event = null;
                function st() {
                  n.event.preventDefault();
                }
                function vt() {
                  for (var gt = n.event, Ft; Ft = gt.sourceEvent; ) gt = Ft;
                  return gt;
                }
                function ht(gt) {
                  for (var Ft = new q(), Kt = 0, pe = arguments.length; ++Kt < pe; ) Ft[arguments[Kt]] = rt(Ft);
                  return Ft.of = function(Te, Ce) {
                    return function(er) {
                      try {
                        var We = er.sourceEvent = n.event;
                        er.target = gt, n.event = er, Ft[er.type].apply(Te, Ce);
                      } finally {
                        n.event = We;
                      }
                    };
                  }, Ft;
                }
                n.requote = function(gt) {
                  return gt.replace(et, "\\$&");
                };
                var et = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g, Q = {}.__proto__ ? function(gt, Ft) {
                  gt.__proto__ = Ft;
                } : function(gt, Ft) {
                  for (var Kt in Ft) gt[Kt] = Ft[Kt];
                };
                function j(gt) {
                  return Q(gt, X), gt;
                }
                var at = function(gt, Ft) {
                  return Ft.querySelector(gt);
                }, ut = function(gt, Ft) {
                  return Ft.querySelectorAll(gt);
                }, nt = function(gt, Ft) {
                  var Kt = gt.matches || gt[H(gt, "matchesSelector")];
                  return nt = function(pe, Te) {
                    return Kt.call(pe, Te);
                  }, nt(gt, Ft);
                };
                typeof Sizzle == "function" && (at = function(gt, Ft) {
                  return Sizzle(gt, Ft)[0] || null;
                }, ut = Sizzle, nt = Sizzle.matchesSelector), n.selection = function() {
                  return n.select(A.documentElement);
                };
                var X = n.selection.prototype = [];
                X.select = function(gt) {
                  var Ft = [], Kt, pe, Te, Ce;
                  gt = ct(gt);
                  for (var er = -1, We = this.length; ++er < We; ) {
                    Ft.push(Kt = []), Kt.parentNode = (Te = this[er]).parentNode;
                    for (var gr = -1, xr = Te.length; ++gr < xr; )
                      (Ce = Te[gr]) ? (Kt.push(pe = gt.call(Ce, Ce.__data__, gr, er)), pe && "__data__" in Ce && (pe.__data__ = Ce.__data__)) : Kt.push(null);
                  }
                  return j(Ft);
                };
                function ct(gt) {
                  return typeof gt == "function" ? gt : function() {
                    return at(gt, this);
                  };
                }
                X.selectAll = function(gt) {
                  var Ft = [], Kt, pe;
                  gt = lt(gt);
                  for (var Te = -1, Ce = this.length; ++Te < Ce; )
                    for (var er = this[Te], We = -1, gr = er.length; ++We < gr; )
                      (pe = er[We]) && (Ft.push(Kt = T(gt.call(pe, pe.__data__, We, Te))), Kt.parentNode = pe);
                  return j(Ft);
                };
                function lt(gt) {
                  return typeof gt == "function" ? gt : function() {
                    return ut(gt, this);
                  };
                }
                var pt = "http://www.w3.org/1999/xhtml", wt = {
                  svg: "http://www.w3.org/2000/svg",
                  xhtml: pt,
                  xlink: "http://www.w3.org/1999/xlink",
                  xml: "http://www.w3.org/XML/1998/namespace",
                  xmlns: "http://www.w3.org/2000/xmlns/"
                };
                n.ns = {
                  prefix: wt,
                  qualify: function(gt) {
                    var Ft = gt.indexOf(":"), Kt = gt;
                    return Ft >= 0 && (Kt = gt.slice(0, Ft)) !== "xmlns" && (gt = gt.slice(Ft + 1)), wt.hasOwnProperty(Kt) ? {
                      space: wt[Kt],
                      local: gt
                    } : gt;
                  }
                }, X.attr = function(gt, Ft) {
                  if (arguments.length < 2) {
                    if (typeof gt == "string") {
                      var Kt = this.node();
                      return gt = n.ns.qualify(gt), gt.local ? Kt.getAttributeNS(gt.space, gt.local) : Kt.getAttribute(gt);
                    }
                    for (Ft in gt) this.each(Et(Ft, gt[Ft]));
                    return this;
                  }
                  return this.each(Et(gt, Ft));
                };
                function Et(gt, Ft) {
                  gt = n.ns.qualify(gt);
                  function Kt() {
                    this.removeAttribute(gt);
                  }
                  function pe() {
                    this.removeAttributeNS(gt.space, gt.local);
                  }
                  function Te() {
                    this.setAttribute(gt, Ft);
                  }
                  function Ce() {
                    this.setAttributeNS(gt.space, gt.local, Ft);
                  }
                  function er() {
                    var gr = Ft.apply(this, arguments);
                    gr == null ? this.removeAttribute(gt) : this.setAttribute(gt, gr);
                  }
                  function We() {
                    var gr = Ft.apply(this, arguments);
                    gr == null ? this.removeAttributeNS(gt.space, gt.local) : this.setAttributeNS(gt.space, gt.local, gr);
                  }
                  return Ft == null ? gt.local ? pe : Kt : typeof Ft == "function" ? gt.local ? We : er : gt.local ? Ce : Te;
                }
                function Ct(gt) {
                  return gt.trim().replace(/\s+/g, " ");
                }
                X.classed = function(gt, Ft) {
                  if (arguments.length < 2) {
                    if (typeof gt == "string") {
                      var Kt = this.node(), pe = (gt = Jt(gt)).length, Te = -1;
                      if (Ft = Kt.classList) {
                        for (; ++Te < pe; ) if (!Ft.contains(gt[Te])) return !1;
                      } else
                        for (Ft = Kt.getAttribute("class"); ++Te < pe; ) if (!Gt(gt[Te]).test(Ft)) return !1;
                      return !0;
                    }
                    for (Ft in gt) this.each(Qt(Ft, gt[Ft]));
                    return this;
                  }
                  return this.each(Qt(gt, Ft));
                };
                function Gt(gt) {
                  return new RegExp("(?:^|\\s+)" + n.requote(gt) + "(?:\\s+|$)", "g");
                }
                function Jt(gt) {
                  return (gt + "").trim().split(/^|\s+/);
                }
                function Qt(gt, Ft) {
                  gt = Jt(gt).map(Vt);
                  var Kt = gt.length;
                  function pe() {
                    for (var Ce = -1; ++Ce < Kt; ) gt[Ce](this, Ft);
                  }
                  function Te() {
                    for (var Ce = -1, er = Ft.apply(this, arguments); ++Ce < Kt; ) gt[Ce](this, er);
                  }
                  return typeof Ft == "function" ? Te : pe;
                }
                function Vt(gt) {
                  var Ft = Gt(gt);
                  return function(Kt, pe) {
                    if (Te = Kt.classList) return pe ? Te.add(gt) : Te.remove(gt);
                    var Te = Kt.getAttribute("class") || "";
                    pe ? (Ft.lastIndex = 0, Ft.test(Te) || Kt.setAttribute("class", Ct(Te + " " + gt))) : Kt.setAttribute("class", Ct(Te.replace(Ft, " ")));
                  };
                }
                X.style = function(gt, Ft, Kt) {
                  var pe = arguments.length;
                  if (pe < 3) {
                    if (typeof gt != "string") {
                      pe < 2 && (Ft = "");
                      for (Kt in gt) this.each(zt(Kt, gt[Kt], Ft));
                      return this;
                    }
                    if (pe < 2) {
                      var Te = this.node();
                      return u(Te).getComputedStyle(Te, null).getPropertyValue(gt);
                    }
                    Kt = "";
                  }
                  return this.each(zt(gt, Ft, Kt));
                };
                function zt(gt, Ft, Kt) {
                  function pe() {
                    this.style.removeProperty(gt);
                  }
                  function Te() {
                    this.style.setProperty(gt, Ft, Kt);
                  }
                  function Ce() {
                    var er = Ft.apply(this, arguments);
                    er == null ? this.style.removeProperty(gt) : this.style.setProperty(gt, er, Kt);
                  }
                  return Ft == null ? pe : typeof Ft == "function" ? Ce : Te;
                }
                X.property = function(gt, Ft) {
                  if (arguments.length < 2) {
                    if (typeof gt == "string") return this.node()[gt];
                    for (Ft in gt) this.each(Rt(Ft, gt[Ft]));
                    return this;
                  }
                  return this.each(Rt(gt, Ft));
                };
                function Rt(gt, Ft) {
                  function Kt() {
                    delete this[gt];
                  }
                  function pe() {
                    this[gt] = Ft;
                  }
                  function Te() {
                    var Ce = Ft.apply(this, arguments);
                    Ce == null ? delete this[gt] : this[gt] = Ce;
                  }
                  return Ft == null ? Kt : typeof Ft == "function" ? Te : pe;
                }
                X.text = function(gt) {
                  return arguments.length ? this.each(typeof gt == "function" ? function() {
                    var Ft = gt.apply(this, arguments);
                    this.textContent = Ft ?? "";
                  } : gt == null ? function() {
                    this.textContent = "";
                  } : function() {
                    this.textContent = gt;
                  }) : this.node().textContent;
                }, X.html = function(gt) {
                  return arguments.length ? this.each(typeof gt == "function" ? function() {
                    var Ft = gt.apply(this, arguments);
                    this.innerHTML = Ft ?? "";
                  } : gt == null ? function() {
                    this.innerHTML = "";
                  } : function() {
                    this.innerHTML = gt;
                  }) : this.node().innerHTML;
                }, X.append = function(gt) {
                  return gt = Wt(gt), this.select(function() {
                    return this.appendChild(gt.apply(this, arguments));
                  });
                };
                function Wt(gt) {
                  function Ft() {
                    var pe = this.ownerDocument, Te = this.namespaceURI;
                    return Te === pt && pe.documentElement.namespaceURI === pt ? pe.createElement(gt) : pe.createElementNS(Te, gt);
                  }
                  function Kt() {
                    return this.ownerDocument.createElementNS(gt.space, gt.local);
                  }
                  return typeof gt == "function" ? gt : (gt = n.ns.qualify(gt)).local ? Kt : Ft;
                }
                X.insert = function(gt, Ft) {
                  return gt = Wt(gt), Ft = ct(Ft), this.select(function() {
                    return this.insertBefore(gt.apply(this, arguments), Ft.apply(this, arguments) || null);
                  });
                }, X.remove = function() {
                  return this.each(kt);
                };
                function kt() {
                  var gt = this.parentNode;
                  gt && gt.removeChild(this);
                }
                X.data = function(gt, Ft) {
                  var Kt = -1, pe = this.length, Te, Ce;
                  if (!arguments.length) {
                    for (gt = new Array(pe = (Te = this[0]).length); ++Kt < pe; )
                      (Ce = Te[Kt]) && (gt[Kt] = Ce.__data__);
                    return gt;
                  }
                  function er(kr, an) {
                    var on, Ln = kr.length, Hn = an.length, cn = Math.min(Ln, Hn), xn = new Array(Hn), Pn = new Array(Hn), Yn = new Array(Ln), ti, zn;
                    if (Ft) {
                      var Li = new M(), Xi = new Array(Ln), oa;
                      for (on = -1; ++on < Ln; )
                        (ti = kr[on]) && (Li.has(oa = Ft.call(ti, ti.__data__, on)) ? Yn[on] = ti : Li.set(oa, ti), Xi[on] = oa);
                      for (on = -1; ++on < Hn; )
                        (ti = Li.get(oa = Ft.call(an, zn = an[on], on))) ? ti !== !0 && (xn[on] = ti, ti.__data__ = zn) : Pn[on] = re(zn), Li.set(oa, !0);
                      for (on = -1; ++on < Ln; )
                        on in Xi && Li.get(Xi[on]) !== !0 && (Yn[on] = kr[on]);
                    } else {
                      for (on = -1; ++on < cn; )
                        ti = kr[on], zn = an[on], ti ? (ti.__data__ = zn, xn[on] = ti) : Pn[on] = re(zn);
                      for (; on < Hn; ++on)
                        Pn[on] = re(an[on]);
                      for (; on < Ln; ++on)
                        Yn[on] = kr[on];
                    }
                    Pn.update = xn, Pn.parentNode = xn.parentNode = Yn.parentNode = kr.parentNode, We.push(Pn), gr.push(xn), xr.push(Yn);
                  }
                  var We = ae([]), gr = j([]), xr = j([]);
                  if (typeof gt == "function")
                    for (; ++Kt < pe; )
                      er(Te = this[Kt], gt.call(Te, Te.parentNode.__data__, Kt));
                  else
                    for (; ++Kt < pe; )
                      er(Te = this[Kt], gt);
                  return gr.enter = function() {
                    return We;
                  }, gr.exit = function() {
                    return xr;
                  }, gr;
                };
                function re(gt) {
                  return {
                    __data__: gt
                  };
                }
                X.datum = function(gt) {
                  return arguments.length ? this.property("__data__", gt) : this.property("__data__");
                }, X.filter = function(gt) {
                  var Ft = [], Kt, pe, Te;
                  typeof gt != "function" && (gt = ge(gt));
                  for (var Ce = 0, er = this.length; Ce < er; Ce++) {
                    Ft.push(Kt = []), Kt.parentNode = (pe = this[Ce]).parentNode;
                    for (var We = 0, gr = pe.length; We < gr; We++)
                      (Te = pe[We]) && gt.call(Te, Te.__data__, We, Ce) && Kt.push(Te);
                  }
                  return j(Ft);
                };
                function ge(gt) {
                  return function() {
                    return nt(this, gt);
                  };
                }
                X.order = function() {
                  for (var gt = -1, Ft = this.length; ++gt < Ft; )
                    for (var Kt = this[gt], pe = Kt.length - 1, Te = Kt[pe], Ce; --pe >= 0; )
                      (Ce = Kt[pe]) && (Te && Te !== Ce.nextSibling && Te.parentNode.insertBefore(Ce, Te), Te = Ce);
                  return this;
                }, X.sort = function(gt) {
                  gt = _e.apply(this, arguments);
                  for (var Ft = -1, Kt = this.length; ++Ft < Kt; ) this[Ft].sort(gt);
                  return this.order();
                };
                function _e(gt) {
                  return arguments.length || (gt = o), function(Ft, Kt) {
                    return Ft && Kt ? gt(Ft.__data__, Kt.__data__) : !Ft - !Kt;
                  };
                }
                X.each = function(gt) {
                  return ce(this, function(Ft, Kt, pe) {
                    gt.call(Ft, Ft.__data__, Kt, pe);
                  });
                };
                function ce(gt, Ft) {
                  for (var Kt = 0, pe = gt.length; Kt < pe; Kt++)
                    for (var Te = gt[Kt], Ce = 0, er = Te.length, We; Ce < er; Ce++)
                      (We = Te[Ce]) && Ft(We, Ce, Kt);
                  return gt;
                }
                X.call = function(gt) {
                  var Ft = T(arguments);
                  return gt.apply(Ft[0] = this, Ft), this;
                }, X.empty = function() {
                  return !this.node();
                }, X.node = function() {
                  for (var gt = 0, Ft = this.length; gt < Ft; gt++)
                    for (var Kt = this[gt], pe = 0, Te = Kt.length; pe < Te; pe++) {
                      var Ce = Kt[pe];
                      if (Ce) return Ce;
                    }
                  return null;
                }, X.size = function() {
                  var gt = 0;
                  return ce(this, function() {
                    ++gt;
                  }), gt;
                };
                function ae(gt) {
                  return Q(gt, Se), gt;
                }
                var Se = [];
                n.selection.enter = ae, n.selection.enter.prototype = Se, Se.append = X.append, Se.empty = X.empty, Se.node = X.node, Se.call = X.call, Se.size = X.size, Se.select = function(gt) {
                  for (var Ft = [], Kt, pe, Te, Ce, er, We = -1, gr = this.length; ++We < gr; ) {
                    Te = (Ce = this[We]).update, Ft.push(Kt = []), Kt.parentNode = Ce.parentNode;
                    for (var xr = -1, kr = Ce.length; ++xr < kr; )
                      (er = Ce[xr]) ? (Kt.push(Te[xr] = pe = gt.call(Ce.parentNode, er.__data__, xr, We)), pe.__data__ = er.__data__) : Kt.push(null);
                  }
                  return j(Ft);
                }, Se.insert = function(gt, Ft) {
                  return arguments.length < 2 && (Ft = ze(this)), X.insert.call(this, gt, Ft);
                };
                function ze(gt) {
                  var Ft, Kt;
                  return function(pe, Te, Ce) {
                    var er = gt[Ce].update, We = er.length, gr;
                    for (Ce != Kt && (Kt = Ce, Ft = 0), Te >= Ft && (Ft = Te + 1); !(gr = er[Ft]) && ++Ft < We; ) ;
                    return gr;
                  };
                }
                n.select = function(gt) {
                  var Ft;
                  return typeof gt == "string" ? (Ft = [at(gt, A)], Ft.parentNode = A.documentElement) : (Ft = [gt], Ft.parentNode = p(gt)), j([Ft]);
                }, n.selectAll = function(gt) {
                  var Ft;
                  return typeof gt == "string" ? (Ft = T(ut(gt, A)), Ft.parentNode = A.documentElement) : (Ft = T(gt), Ft.parentNode = null), j([Ft]);
                }, X.on = function(gt, Ft, Kt) {
                  var pe = arguments.length;
                  if (pe < 3) {
                    if (typeof gt != "string") {
                      pe < 2 && (Ft = !1);
                      for (Kt in gt) this.each(Ne(Kt, gt[Kt], Ft));
                      return this;
                    }
                    if (pe < 2) return (pe = this.node()["__on" + gt]) && pe._;
                    Kt = !1;
                  }
                  return this.each(Ne(gt, Ft, Kt));
                };
                function Ne(gt, Ft, Kt) {
                  var pe = "__on" + gt, Te = gt.indexOf("."), Ce = Oe;
                  Te > 0 && (gt = gt.slice(0, Te));
                  var er = Ve.get(gt);
                  er && (gt = er, Ce = ur);
                  function We() {
                    var kr = this[pe];
                    kr && (this.removeEventListener(gt, kr, kr.$), delete this[pe]);
                  }
                  function gr() {
                    var kr = Ce(Ft, T(arguments));
                    We.call(this), this.addEventListener(gt, this[pe] = kr, kr.$ = Kt), kr._ = Ft;
                  }
                  function xr() {
                    var kr = new RegExp("^__on([^.]+)" + n.requote(gt) + "$"), an;
                    for (var on in this)
                      if (an = on.match(kr)) {
                        var Ln = this[on];
                        this.removeEventListener(an[1], Ln, Ln.$), delete this[on];
                      }
                  }
                  return Te ? Ft ? gr : We : Ft ? G : xr;
                }
                var Ve = n.map({
                  mouseenter: "mouseover",
                  mouseleave: "mouseout"
                });
                A && Ve.forEach(function(gt) {
                  "on" + gt in A && Ve.remove(gt);
                });
                function Oe(gt, Ft) {
                  return function(Kt) {
                    var pe = n.event;
                    n.event = Kt, Ft[0] = this.__data__;
                    try {
                      gt.apply(this, Ft);
                    } finally {
                      n.event = pe;
                    }
                  };
                }
                function ur(gt, Ft) {
                  var Kt = Oe(gt, Ft);
                  return function(pe) {
                    var Te = this, Ce = pe.relatedTarget;
                    (!Ce || Ce !== Te && !(Ce.compareDocumentPosition(Te) & 8)) && Kt.call(Te, pe);
                  };
                }
                var ie, $t = 0;
                function jt(gt) {
                  var Ft = ".dragsuppress-" + ++$t, Kt = "click" + Ft, pe = n.select(u(gt)).on("touchmove" + Ft, st).on("dragstart" + Ft, st).on("selectstart" + Ft, st);
                  if (ie == null && (ie = "onselectstart" in gt ? !1 : H(gt.style, "userSelect")), ie) {
                    var Te = p(gt).style, Ce = Te[ie];
                    Te[ie] = "none";
                  }
                  return function(er) {
                    if (pe.on(Ft, null), ie && (Te[ie] = Ce), er) {
                      var We = function() {
                        pe.on(Kt, null);
                      };
                      pe.on(Kt, function() {
                        st(), We();
                      }, !0), setTimeout(We, 0);
                    }
                  };
                }
                n.mouse = function(gt) {
                  return Bt(gt, vt());
                };
                var ee = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;
                function Bt(gt, Ft) {
                  Ft.changedTouches && (Ft = Ft.changedTouches[0]);
                  var Kt = gt.ownerSVGElement || gt;
                  if (Kt.createSVGPoint) {
                    var pe = Kt.createSVGPoint();
                    if (ee < 0) {
                      var Te = u(gt);
                      if (Te.scrollX || Te.scrollY) {
                        Kt = n.select("body").append("svg").style({
                          position: "absolute",
                          top: 0,
                          left: 0,
                          margin: 0,
                          padding: 0,
                          border: "none"
                        }, "important");
                        var Ce = Kt[0][0].getScreenCTM();
                        ee = !(Ce.f || Ce.e), Kt.remove();
                      }
                    }
                    return ee ? (pe.x = Ft.pageX, pe.y = Ft.pageY) : (pe.x = Ft.clientX, pe.y = Ft.clientY), pe = pe.matrixTransform(gt.getScreenCTM().inverse()), [pe.x, pe.y];
                  }
                  var er = gt.getBoundingClientRect();
                  return [Ft.clientX - er.left - gt.clientLeft, Ft.clientY - er.top - gt.clientTop];
                }
                n.touch = function(gt, Ft, Kt) {
                  if (arguments.length < 3 && (Kt = Ft, Ft = vt().changedTouches), Ft) {
                    for (var pe = 0, Te = Ft.length, Ce; pe < Te; ++pe)
                      if ((Ce = Ft[pe]).identifier === Kt)
                        return Bt(gt, Ce);
                  }
                }, n.behavior.drag = function() {
                  var gt = ht(Te, "drag", "dragstart", "dragend"), Ft = null, Kt = Ce(G, n.mouse, u, "mousemove", "mouseup"), pe = Ce(Xt, n.touch, V, "touchmove", "touchend");
                  function Te() {
                    this.on("mousedown.drag", Kt).on("touchstart.drag", pe);
                  }
                  function Ce(er, We, gr, xr, kr) {
                    return function() {
                      var an = this, on = n.event.target.correspondingElement || n.event.target, Ln = an.parentNode, Hn = gt.of(an, arguments), cn = 0, xn = er(), Pn = ".drag" + (xn == null ? "" : "-" + xn), Yn, ti = n.select(gr(on)).on(xr + Pn, Xi).on(kr + Pn, oa), zn = jt(on), Li = We(Ln, xn);
                      Ft ? (Yn = Ft.apply(an, arguments), Yn = [Yn.x - Li[0], Yn.y - Li[1]]) : Yn = [0, 0], Hn({
                        type: "dragstart"
                      });
                      function Xi() {
                        var ji = We(Ln, xn), ea, sa;
                        ji && (ea = ji[0] - Li[0], sa = ji[1] - Li[1], cn |= ea | sa, Li = ji, Hn({
                          type: "drag",
                          x: ji[0] + Yn[0],
                          y: ji[1] + Yn[1],
                          dx: ea,
                          dy: sa
                        }));
                      }
                      function oa() {
                        We(Ln, xn) && (ti.on(xr + Pn, null).on(kr + Pn, null), zn(cn), Hn({
                          type: "dragend"
                        }));
                      }
                    };
                  }
                  return Te.origin = function(er) {
                    return arguments.length ? (Ft = er, Te) : Ft;
                  }, n.rebind(Te, gt, "on");
                };
                function Xt() {
                  return n.event.changedTouches[0].identifier;
                }
                n.touches = function(gt, Ft) {
                  return arguments.length < 2 && (Ft = vt().touches), Ft ? T(Ft).map(function(Kt) {
                    var pe = Bt(gt, Kt);
                    return pe.identifier = Kt.identifier, pe;
                  }) : [];
                };
                var Zt = 1e-6, ye = Zt * Zt, Mt = Math.PI, St = 2 * Mt, Lt = St - Zt, te = Mt / 2, fe = Mt / 180, Me = 180 / Mt;
                function ir(gt, Ft, Kt) {
                  return (Ft[0] - gt[0]) * (Kt[1] - gt[1]) - (Ft[1] - gt[1]) * (Kt[0] - gt[0]);
                }
                function mr(gt) {
                  return gt > 1 ? te : gt < -1 ? -te : Math.asin(gt);
                }
                function Xe(gt) {
                  return ((gt = Math.exp(gt)) - 1 / gt) / 2;
                }
                function xe(gt) {
                  return ((gt = Math.exp(gt)) + 1 / gt) / 2;
                }
                function me(gt) {
                  return ((gt = Math.exp(2 * gt)) - 1) / (gt + 1);
                }
                var Le = Math.SQRT2, qt = 2, De = 4;
                n.interpolateZoom = function(gt, Ft) {
                  var Kt = gt[0], pe = gt[1], Te = gt[2], Ce = Ft[0], er = Ft[1], We = Ft[2], gr = Ce - Kt, xr = er - pe, kr = gr * gr + xr * xr, an, on;
                  if (kr < ye)
                    on = Math.log(We / Te) / Le, an = function(Yn) {
                      return [Kt + Yn * gr, pe + Yn * xr, Te * Math.exp(Le * Yn * on)];
                    };
                  else {
                    var Ln = Math.sqrt(kr), Hn = (We * We - Te * Te + De * kr) / (2 * Te * qt * Ln), cn = (We * We - Te * Te - De * kr) / (2 * We * qt * Ln), xn = Math.log(Math.sqrt(Hn * Hn + 1) - Hn), Pn = Math.log(Math.sqrt(cn * cn + 1) - cn);
                    on = (Pn - xn) / Le, an = function(Yn) {
                      var ti = Yn * on, zn = xe(xn), Li = Te / (qt * Ln) * (zn * me(Le * ti + xn) - Xe(xn));
                      return [Kt + Li * gr, pe + Li * xr, Te * zn / xe(Le * ti + xn)];
                    };
                  }
                  return an.duration = on * 1e3, an;
                }, n.behavior.zoom = function() {
                  var gt = {
                    x: 0,
                    y: 0,
                    k: 1
                  }, Ft, Kt, pe, Te = [960, 500], Ce = Je, er = 250, We = 0, gr = "mousedown.zoom", xr = "mousemove.zoom", kr = "mouseup.zoom", an, on = "touchstart.zoom", Ln, Hn = ht(ti, "zoomstart", "zoom", "zoomend"), cn, xn, Pn, Yn;
                  qe || (qe = "onwheel" in A ? (dr = function() {
                    return -n.event.deltaY * (n.event.deltaMode ? 120 : 1);
                  }, "wheel") : "onmousewheel" in A ? (dr = function() {
                    return n.event.wheelDelta;
                  }, "mousewheel") : (dr = function() {
                    return -n.event.detail;
                  }, "MozMousePixelScroll"));
                  function ti(Ui) {
                    Ui.on(gr, Oa).on(qe + ".zoom", Go).on("dblclick.zoom", Po).on(on, lo);
                  }
                  ti.event = function(Ui) {
                    Ui.each(function() {
                      var Ba = Hn.of(this, arguments), ba = gt;
                      un ? n.select(this).transition().each("start.zoom", function() {
                        gt = this.__chart__ || {
                          x: 0,
                          y: 0,
                          k: 1
                        }, sa(Ba);
                      }).tween("zoom:zoom", function() {
                        var xo = Te[0], Xo = Te[1], Co = Kt ? Kt[0] : xo / 2, Cs = Kt ? Kt[1] : Xo / 2, ns = n.interpolateZoom([(Co - gt.x) / gt.k, (Cs - gt.y) / gt.k, xo / gt.k], [(Co - ba.x) / ba.k, (Cs - ba.y) / ba.k, xo / ba.k]);
                        return function(us) {
                          var Ao = ns(us), aa = xo / Ao[2];
                          this.__chart__ = gt = {
                            x: Co - Ao[0] * aa,
                            y: Cs - Ao[1] * aa,
                            k: aa
                          }, Wa(Ba);
                        };
                      }).each("interrupt.zoom", function() {
                        ya(Ba);
                      }).each("end.zoom", function() {
                        ya(Ba);
                      }) : (this.__chart__ = gt, sa(Ba), Wa(Ba), ya(Ba));
                    });
                  }, ti.translate = function(Ui) {
                    return arguments.length ? (gt = {
                      x: +Ui[0],
                      y: +Ui[1],
                      k: gt.k
                    }, ea(), ti) : [gt.x, gt.y];
                  }, ti.scale = function(Ui) {
                    return arguments.length ? (gt = {
                      x: gt.x,
                      y: gt.y,
                      k: null
                    }, Xi(+Ui), ea(), ti) : gt.k;
                  }, ti.scaleExtent = function(Ui) {
                    return arguments.length ? (Ce = Ui == null ? Je : [+Ui[0], +Ui[1]], ti) : Ce;
                  }, ti.center = function(Ui) {
                    return arguments.length ? (pe = Ui && [+Ui[0], +Ui[1]], ti) : pe;
                  }, ti.size = function(Ui) {
                    return arguments.length ? (Te = Ui && [+Ui[0], +Ui[1]], ti) : Te;
                  }, ti.duration = function(Ui) {
                    return arguments.length ? (er = +Ui, ti) : er;
                  }, ti.x = function(Ui) {
                    return arguments.length ? (xn = Ui, cn = Ui.copy(), gt = {
                      x: 0,
                      y: 0,
                      k: 1
                    }, ti) : xn;
                  }, ti.y = function(Ui) {
                    return arguments.length ? (Yn = Ui, Pn = Ui.copy(), gt = {
                      x: 0,
                      y: 0,
                      k: 1
                    }, ti) : Yn;
                  };
                  function zn(Ui) {
                    return [(Ui[0] - gt.x) / gt.k, (Ui[1] - gt.y) / gt.k];
                  }
                  function Li(Ui) {
                    return [Ui[0] * gt.k + gt.x, Ui[1] * gt.k + gt.y];
                  }
                  function Xi(Ui) {
                    gt.k = Math.max(Ce[0], Math.min(Ce[1], Ui));
                  }
                  function oa(Ui, Ba) {
                    Ba = Li(Ba), gt.x += Ui[0] - Ba[0], gt.y += Ui[1] - Ba[1];
                  }
                  function ji(Ui, Ba, ba, xo) {
                    Ui.__chart__ = {
                      x: gt.x,
                      y: gt.y,
                      k: gt.k
                    }, Xi(Math.pow(2, xo)), oa(Kt = Ba, ba), Ui = n.select(Ui), er > 0 && (Ui = Ui.transition().duration(er)), Ui.call(ti.event);
                  }
                  function ea() {
                    xn && xn.domain(cn.range().map(function(Ui) {
                      return (Ui - gt.x) / gt.k;
                    }).map(cn.invert)), Yn && Yn.domain(Pn.range().map(function(Ui) {
                      return (Ui - gt.y) / gt.k;
                    }).map(Pn.invert));
                  }
                  function sa(Ui) {
                    We++ || Ui({
                      type: "zoomstart"
                    });
                  }
                  function Wa(Ui) {
                    ea(), Ui({
                      type: "zoom",
                      scale: gt.k,
                      translate: [gt.x, gt.y]
                    });
                  }
                  function ya(Ui) {
                    --We || (Ui({
                      type: "zoomend"
                    }), Kt = null);
                  }
                  function Oa() {
                    var Ui = this, Ba = Hn.of(Ui, arguments), ba = 0, xo = n.select(u(Ui)).on(xr, Cs).on(kr, ns), Xo = zn(n.mouse(Ui)), Co = jt(Ui);
                    fr.call(Ui), sa(Ba);
                    function Cs() {
                      ba = 1, oa(n.mouse(Ui), Xo), Wa(Ba);
                    }
                    function ns() {
                      xo.on(xr, null).on(kr, null), Co(ba), ya(Ba);
                    }
                  }
                  function lo() {
                    var Ui = this, Ba = Hn.of(Ui, arguments), ba = {}, xo = 0, Xo, Co = ".zoom-" + n.event.changedTouches[0].identifier, Cs = "touchmove" + Co, ns = "touchend" + Co, us = [], Ao = n.select(Ui), aa = jt(Ui);
                    wa(), sa(Ba), Ao.on(gr, null).on(on, wa);
                    function ta() {
                      var as = n.touches(Ui);
                      return Xo = gt.k, as.forEach(function(So) {
                        So.identifier in ba && (ba[So.identifier] = zn(So));
                      }), as;
                    }
                    function wa() {
                      var as = n.event.target;
                      n.select(as).on(Cs, il).on(ns, al), us.push(as);
                      for (var So = n.event.changedTouches, _s = 0, Qi = So.length; _s < Qi; ++_s)
                        ba[So[_s].identifier] = null;
                      var jl = ta(), zu = Date.now();
                      if (jl.length === 1) {
                        if (zu - Ln < 500) {
                          var Jo = jl[0];
                          ji(Ui, Jo, ba[Jo.identifier], Math.floor(Math.log(gt.k) / Math.LN2) + 1), st();
                        }
                        Ln = zu;
                      } else if (jl.length > 1) {
                        var Jo = jl[0], Fu = jl[1], qa = Jo[0] - Fu[0], Yo = Jo[1] - Fu[1];
                        xo = qa * qa + Yo * Yo;
                      }
                    }
                    function il() {
                      var as = n.touches(Ui), So, _s, Qi, jl;
                      fr.call(Ui);
                      for (var zu = 0, Jo = as.length; zu < Jo; ++zu, jl = null)
                        if (Qi = as[zu], jl = ba[Qi.identifier]) {
                          if (_s) break;
                          So = Qi, _s = jl;
                        }
                      if (jl) {
                        var Fu = (Fu = Qi[0] - So[0]) * Fu + (Fu = Qi[1] - So[1]) * Fu, qa = xo && Math.sqrt(Fu / xo);
                        So = [(So[0] + Qi[0]) / 2, (So[1] + Qi[1]) / 2], _s = [(_s[0] + jl[0]) / 2, (_s[1] + jl[1]) / 2], Xi(qa * Xo);
                      }
                      Ln = null, oa(So, _s), Wa(Ba);
                    }
                    function al() {
                      if (n.event.touches.length) {
                        for (var as = n.event.changedTouches, So = 0, _s = as.length; So < _s; ++So)
                          delete ba[as[So].identifier];
                        for (var Qi in ba)
                          return void ta();
                      }
                      n.selectAll(us).on(Co, null), Ao.on(gr, Oa).on(on, lo), aa(), ya(Ba);
                    }
                  }
                  function Go() {
                    var Ui = Hn.of(this, arguments);
                    an ? clearTimeout(an) : (fr.call(this), Ft = zn(Kt = pe || n.mouse(this)), sa(Ui)), an = setTimeout(function() {
                      an = null, ya(Ui);
                    }, 50), st(), Xi(Math.pow(2, dr() * 2e-3) * gt.k), oa(Kt, Ft), Wa(Ui);
                  }
                  function Po() {
                    var Ui = n.mouse(this), Ba = Math.log(gt.k) / Math.LN2;
                    ji(this, Ui, zn(Ui), n.event.shiftKey ? Math.ceil(Ba) - 1 : Math.floor(Ba) + 1);
                  }
                  return n.rebind(ti, Hn, "on");
                };
                var Je = [0, 1 / 0], dr, qe;
                n.color = we;
                function we() {
                }
                we.prototype.toString = function() {
                  return this.rgb() + "";
                }, n.hsl = ue;
                function ue(gt, Ft, Kt) {
                  return this instanceof ue ? (this.h = +gt, this.s = +Ft, void (this.l = +Kt)) : arguments.length < 2 ? gt instanceof ue ? new ue(gt.h, gt.s, gt.l) : Cr("" + gt, _r, ue) : new ue(gt, Ft, Kt);
                }
                var Pe = ue.prototype = new we();
                Pe.brighter = function(gt) {
                  return gt = Math.pow(0.7, arguments.length ? gt : 1), new ue(this.h, this.s, this.l / gt);
                }, Pe.darker = function(gt) {
                  return gt = Math.pow(0.7, arguments.length ? gt : 1), new ue(this.h, this.s, gt * this.l);
                }, Pe.rgb = function() {
                  return Ue(this.h, this.s, this.l);
                };
                function Ue(gt, Ft, Kt) {
                  var pe, Te;
                  gt = isNaN(gt) ? 0 : (gt %= 360) < 0 ? gt + 360 : gt, Ft = isNaN(Ft) || Ft < 0 ? 0 : Ft > 1 ? 1 : Ft, Kt = Kt < 0 ? 0 : Kt > 1 ? 1 : Kt, Te = Kt <= 0.5 ? Kt * (1 + Ft) : Kt + Ft - Kt * Ft, pe = 2 * Kt - Te;
                  function Ce(We) {
                    return We > 360 ? We -= 360 : We < 0 && (We += 360), We < 60 ? pe + (Te - pe) * We / 60 : We < 180 ? Te : We < 240 ? pe + (Te - pe) * (240 - We) / 60 : pe;
                  }
                  function er(We) {
                    return Math.round(Ce(We) * 255);
                  }
                  return new Er(er(gt + 120), er(gt), er(gt - 120));
                }
                n.hcl = Ye;
                function Ye(gt, Ft, Kt) {
                  return this instanceof Ye ? (this.h = +gt, this.c = +Ft, void (this.l = +Kt)) : arguments.length < 2 ? gt instanceof Ye ? new Ye(gt.h, gt.c, gt.l) : gt instanceof hr ? Gr(gt.l, gt.a, gt.b) : Gr((gt = Zr((gt = n.rgb(gt)).r, gt.g, gt.b)).l, gt.a, gt.b) : new Ye(gt, Ft, Kt);
                }
                var rr = Ye.prototype = new we();
                rr.brighter = function(gt) {
                  return new Ye(this.h, this.c, Math.min(100, this.l + Sr * (arguments.length ? gt : 1)));
                }, rr.darker = function(gt) {
                  return new Ye(this.h, this.c, Math.max(0, this.l - Sr * (arguments.length ? gt : 1)));
                }, rr.rgb = function() {
                  return lr(this.h, this.c, this.l).rgb();
                };
                function lr(gt, Ft, Kt) {
                  return isNaN(gt) && (gt = 0), isNaN(Ft) && (Ft = 0), new hr(Kt, Math.cos(gt *= fe) * Ft, Math.sin(gt) * Ft);
                }
                n.lab = hr;
                function hr(gt, Ft, Kt) {
                  return this instanceof hr ? (this.l = +gt, this.a = +Ft, void (this.b = +Kt)) : arguments.length < 2 ? gt instanceof hr ? new hr(gt.l, gt.a, gt.b) : gt instanceof Ye ? lr(gt.h, gt.c, gt.l) : Zr((gt = Er(gt)).r, gt.g, gt.b) : new hr(gt, Ft, Kt);
                }
                var Sr = 18, Dr = 0.95047, Or = 1, Br = 1.08883, Nr = hr.prototype = new we();
                Nr.brighter = function(gt) {
                  return new hr(Math.min(100, this.l + Sr * (arguments.length ? gt : 1)), this.a, this.b);
                }, Nr.darker = function(gt) {
                  return new hr(Math.max(0, this.l - Sr * (arguments.length ? gt : 1)), this.a, this.b);
                }, Nr.rgb = function() {
                  return Xr(this.l, this.a, this.b);
                };
                function Xr(gt, Ft, Kt) {
                  var pe = (gt + 16) / 116, Te = pe + Ft / 500, Ce = pe - Kt / 200;
                  return Te = oe(Te) * Dr, pe = oe(pe) * Or, Ce = oe(Ce) * Br, new Er(or(3.2404542 * Te - 1.5371385 * pe - 0.4985314 * Ce), or(-0.969266 * Te + 1.8760108 * pe + 0.041556 * Ce), or(0.0556434 * Te - 0.2040259 * pe + 1.0572252 * Ce));
                }
                function Gr(gt, Ft, Kt) {
                  return gt > 0 ? new Ye(Math.atan2(Kt, Ft) * Me, Math.sqrt(Ft * Ft + Kt * Kt), gt) : new Ye(NaN, NaN, gt);
                }
                function oe(gt) {
                  return gt > 0.206893034 ? gt * gt * gt : (gt - 0.13793103448275862) / 7.787037;
                }
                function de(gt) {
                  return gt > 8856e-6 ? Math.pow(gt, 0.3333333333333333) : 7.787037 * gt + 0.13793103448275862;
                }
                function or(gt) {
                  return Math.round(255 * (gt <= 304e-5 ? 12.92 * gt : 1.055 * Math.pow(gt, 0.4166666666666667) - 0.055));
                }
                n.rgb = Er;
                function Er(gt, Ft, Kt) {
                  return this instanceof Er ? (this.r = ~~gt, this.g = ~~Ft, void (this.b = ~~Kt)) : arguments.length < 2 ? gt instanceof Er ? new Er(gt.r, gt.g, gt.b) : Cr("" + gt, Er, Ue) : new Er(gt, Ft, Kt);
                }
                function Tr(gt) {
                  return new Er(gt >> 16, gt >> 8 & 255, gt & 255);
                }
                function tr(gt) {
                  return Tr(gt) + "";
                }
                var yr = Er.prototype = new we();
                yr.brighter = function(gt) {
                  gt = Math.pow(0.7, arguments.length ? gt : 1);
                  var Ft = this.r, Kt = this.g, pe = this.b, Te = 30;
                  return !Ft && !Kt && !pe ? new Er(Te, Te, Te) : (Ft && Ft < Te && (Ft = Te), Kt && Kt < Te && (Kt = Te), pe && pe < Te && (pe = Te), new Er(Math.min(255, Ft / gt), Math.min(255, Kt / gt), Math.min(255, pe / gt)));
                }, yr.darker = function(gt) {
                  return gt = Math.pow(0.7, arguments.length ? gt : 1), new Er(gt * this.r, gt * this.g, gt * this.b);
                }, yr.hsl = function() {
                  return _r(this.r, this.g, this.b);
                }, yr.toString = function() {
                  return "#" + Ir(this.r) + Ir(this.g) + Ir(this.b);
                };
                function Ir(gt) {
                  return gt < 16 ? "0" + Math.max(0, gt).toString(16) : Math.min(255, gt).toString(16);
                }
                function Cr(gt, Ft, Kt) {
                  var pe = 0, Te = 0, Ce = 0, er, We, gr;
                  if (er = /([a-z]+)\((.*)\)/.exec(gt = gt.toLowerCase()), er)
                    switch (We = er[2].split(","), er[1]) {
                      case "hsl":
                        return Kt(parseFloat(We[0]), parseFloat(We[1]) / 100, parseFloat(We[2]) / 100);
                      case "rgb":
                        return Ft(Jr(We[0]), Jr(We[1]), Jr(We[2]));
                    }
                  return (gr = Zn.get(gt)) ? Ft(gr.r, gr.g, gr.b) : (gt != null && gt.charAt(0) === "#" && !isNaN(gr = parseInt(gt.slice(1), 16)) && (gt.length === 4 ? (pe = (gr & 3840) >> 4, pe = pe >> 4 | pe, Te = gr & 240, Te = Te >> 4 | Te, Ce = gr & 15, Ce = Ce << 4 | Ce) : gt.length === 7 && (pe = (gr & 16711680) >> 16, Te = (gr & 65280) >> 8, Ce = gr & 255)), Ft(pe, Te, Ce));
                }
                function _r(gt, Ft, Kt) {
                  var pe = Math.min(gt /= 255, Ft /= 255, Kt /= 255), Te = Math.max(gt, Ft, Kt), Ce = Te - pe, er, We, gr = (Te + pe) / 2;
                  return Ce ? (We = gr < 0.5 ? Ce / (Te + pe) : Ce / (2 - Te - pe), gt == Te ? er = (Ft - Kt) / Ce + (Ft < Kt ? 6 : 0) : Ft == Te ? er = (Kt - gt) / Ce + 2 : er = (gt - Ft) / Ce + 4, er *= 60) : (er = NaN, We = gr > 0 && gr < 1 ? 0 : er), new ue(er, We, gr);
                }
                function Zr(gt, Ft, Kt) {
                  gt = ln(gt), Ft = ln(Ft), Kt = ln(Kt);
                  var pe = de((0.4124564 * gt + 0.3575761 * Ft + 0.1804375 * Kt) / Dr), Te = de((0.2126729 * gt + 0.7151522 * Ft + 0.072175 * Kt) / Or), Ce = de((0.0193339 * gt + 0.119192 * Ft + 0.9503041 * Kt) / Br);
                  return hr(116 * Te - 16, 500 * (pe - Te), 200 * (Te - Ce));
                }
                function ln(gt) {
                  return (gt /= 255) <= 0.04045 ? gt / 12.92 : Math.pow((gt + 0.055) / 1.055, 2.4);
                }
                function Jr(gt) {
                  var Ft = parseFloat(gt);
                  return gt.charAt(gt.length - 1) === "%" ? Math.round(Ft * 2.55) : Ft;
                }
                var Zn = n.map({
                  aliceblue: 15792383,
                  antiquewhite: 16444375,
                  aqua: 65535,
                  aquamarine: 8388564,
                  azure: 15794175,
                  beige: 16119260,
                  bisque: 16770244,
                  black: 0,
                  blanchedalmond: 16772045,
                  blue: 255,
                  blueviolet: 9055202,
                  brown: 10824234,
                  burlywood: 14596231,
                  cadetblue: 6266528,
                  chartreuse: 8388352,
                  chocolate: 13789470,
                  coral: 16744272,
                  cornflowerblue: 6591981,
                  cornsilk: 16775388,
                  crimson: 14423100,
                  cyan: 65535,
                  darkblue: 139,
                  darkcyan: 35723,
                  darkgoldenrod: 12092939,
                  darkgray: 11119017,
                  darkgreen: 25600,
                  darkgrey: 11119017,
                  darkkhaki: 12433259,
                  darkmagenta: 9109643,
                  darkolivegreen: 5597999,
                  darkorange: 16747520,
                  darkorchid: 10040012,
                  darkred: 9109504,
                  darksalmon: 15308410,
                  darkseagreen: 9419919,
                  darkslateblue: 4734347,
                  darkslategray: 3100495,
                  darkslategrey: 3100495,
                  darkturquoise: 52945,
                  darkviolet: 9699539,
                  deeppink: 16716947,
                  deepskyblue: 49151,
                  dimgray: 6908265,
                  dimgrey: 6908265,
                  dodgerblue: 2003199,
                  firebrick: 11674146,
                  floralwhite: 16775920,
                  forestgreen: 2263842,
                  fuchsia: 16711935,
                  gainsboro: 14474460,
                  ghostwhite: 16316671,
                  gold: 16766720,
                  goldenrod: 14329120,
                  gray: 8421504,
                  green: 32768,
                  greenyellow: 11403055,
                  grey: 8421504,
                  honeydew: 15794160,
                  hotpink: 16738740,
                  indianred: 13458524,
                  indigo: 4915330,
                  ivory: 16777200,
                  khaki: 15787660,
                  lavender: 15132410,
                  lavenderblush: 16773365,
                  lawngreen: 8190976,
                  lemonchiffon: 16775885,
                  lightblue: 11393254,
                  lightcoral: 15761536,
                  lightcyan: 14745599,
                  lightgoldenrodyellow: 16448210,
                  lightgray: 13882323,
                  lightgreen: 9498256,
                  lightgrey: 13882323,
                  lightpink: 16758465,
                  lightsalmon: 16752762,
                  lightseagreen: 2142890,
                  lightskyblue: 8900346,
                  lightslategray: 7833753,
                  lightslategrey: 7833753,
                  lightsteelblue: 11584734,
                  lightyellow: 16777184,
                  lime: 65280,
                  limegreen: 3329330,
                  linen: 16445670,
                  magenta: 16711935,
                  maroon: 8388608,
                  mediumaquamarine: 6737322,
                  mediumblue: 205,
                  mediumorchid: 12211667,
                  mediumpurple: 9662683,
                  mediumseagreen: 3978097,
                  mediumslateblue: 8087790,
                  mediumspringgreen: 64154,
                  mediumturquoise: 4772300,
                  mediumvioletred: 13047173,
                  midnightblue: 1644912,
                  mintcream: 16121850,
                  mistyrose: 16770273,
                  moccasin: 16770229,
                  navajowhite: 16768685,
                  navy: 128,
                  oldlace: 16643558,
                  olive: 8421376,
                  olivedrab: 7048739,
                  orange: 16753920,
                  orangered: 16729344,
                  orchid: 14315734,
                  palegoldenrod: 15657130,
                  palegreen: 10025880,
                  paleturquoise: 11529966,
                  palevioletred: 14381203,
                  papayawhip: 16773077,
                  peachpuff: 16767673,
                  peru: 13468991,
                  pink: 16761035,
                  plum: 14524637,
                  powderblue: 11591910,
                  purple: 8388736,
                  rebeccapurple: 6697881,
                  red: 16711680,
                  rosybrown: 12357519,
                  royalblue: 4286945,
                  saddlebrown: 9127187,
                  salmon: 16416882,
                  sandybrown: 16032864,
                  seagreen: 3050327,
                  seashell: 16774638,
                  sienna: 10506797,
                  silver: 12632256,
                  skyblue: 8900331,
                  slateblue: 6970061,
                  slategray: 7372944,
                  slategrey: 7372944,
                  snow: 16775930,
                  springgreen: 65407,
                  steelblue: 4620980,
                  tan: 13808780,
                  teal: 32896,
                  thistle: 14204888,
                  tomato: 16737095,
                  turquoise: 4251856,
                  violet: 15631086,
                  wheat: 16113331,
                  white: 16777215,
                  whitesmoke: 16119285,
                  yellow: 16776960,
                  yellowgreen: 10145074
                });
                Zn.forEach(function(gt, Ft) {
                  Zn.set(gt, Tr(Ft));
                });
                function fn(gt) {
                  return typeof gt == "function" ? gt : function() {
                    return gt;
                  };
                }
                n.functor = fn, n.xhr = hi(V);
                function hi(gt) {
                  return function(Ft, Kt, pe) {
                    return arguments.length === 2 && typeof Kt == "function" && (pe = Kt, Kt = null), Vn(Ft, Kt, gt, pe);
                  };
                }
                function Vn(gt, Ft, Kt, pe) {
                  var Te = {}, Ce = n.dispatch("beforesend", "progress", "load", "error"), er = {}, We = new XMLHttpRequest(), gr = null;
                  self.XDomainRequest && !("withCredentials" in We) && /^(http(s)?:)?\/\//.test(gt) && (We = new XDomainRequest()), "onload" in We ? We.onload = We.onerror = xr : We.onreadystatechange = function() {
                    We.readyState > 3 && xr();
                  };
                  function xr() {
                    var kr = We.status, an;
                    if (!kr && zr(We) || kr >= 200 && kr < 300 || kr === 304) {
                      try {
                        an = Kt.call(Te, We);
                      } catch (on) {
                        Ce.error.call(Te, on);
                        return;
                      }
                      Ce.load.call(Te, an);
                    } else
                      Ce.error.call(Te, We);
                  }
                  return We.onprogress = function(kr) {
                    var an = n.event;
                    n.event = kr;
                    try {
                      Ce.progress.call(Te, We);
                    } finally {
                      n.event = an;
                    }
                  }, Te.header = function(kr, an) {
                    return kr = (kr + "").toLowerCase(), arguments.length < 2 ? er[kr] : (an == null ? delete er[kr] : er[kr] = an + "", Te);
                  }, Te.mimeType = function(kr) {
                    return arguments.length ? (Ft = kr == null ? null : kr + "", Te) : Ft;
                  }, Te.responseType = function(kr) {
                    return arguments.length ? (gr = kr, Te) : gr;
                  }, Te.response = function(kr) {
                    return Kt = kr, Te;
                  }, ["get", "post"].forEach(function(kr) {
                    Te[kr] = function() {
                      return Te.send.apply(Te, [kr].concat(T(arguments)));
                    };
                  }), Te.send = function(kr, an, on) {
                    if (arguments.length === 2 && typeof an == "function" && (on = an, an = null), We.open(kr, gt, !0), Ft != null && !("accept" in er) && (er.accept = Ft + ",*/*"), We.setRequestHeader) for (var Ln in er) We.setRequestHeader(Ln, er[Ln]);
                    return Ft != null && We.overrideMimeType && We.overrideMimeType(Ft), gr != null && (We.responseType = gr), on != null && Te.on("error", on).on("load", function(Hn) {
                      on(null, Hn);
                    }), Ce.beforesend.call(Te, We), We.send(an ?? null), Te;
                  }, Te.abort = function() {
                    return We.abort(), Te;
                  }, n.rebind(Te, Ce, "on"), pe == null ? Te : Te.get(jr(pe));
                }
                function jr(gt) {
                  return gt.length === 1 ? function(Ft, Kt) {
                    gt(Ft == null ? Kt : null);
                  } : gt;
                }
                function zr(gt) {
                  var Ft = gt.responseType;
                  return Ft && Ft !== "text" ? gt.response : gt.responseText;
                }
                n.dsv = function(gt, Ft) {
                  var Kt = new RegExp('["' + gt + `
]`), pe = gt.charCodeAt(0);
                  function Te(xr, kr, an) {
                    arguments.length < 3 && (an = kr, kr = null);
                    var on = Vn(xr, Ft, kr == null ? Ce : er(kr), an);
                    return on.row = function(Ln) {
                      return arguments.length ? on.response((kr = Ln) == null ? Ce : er(Ln)) : kr;
                    }, on;
                  }
                  function Ce(xr) {
                    return Te.parse(xr.responseText);
                  }
                  function er(xr) {
                    return function(kr) {
                      return Te.parse(kr.responseText, xr);
                    };
                  }
                  Te.parse = function(xr, kr) {
                    var an;
                    return Te.parseRows(xr, function(on, Ln) {
                      if (an) return an(on, Ln - 1);
                      var Hn = function(cn) {
                        for (var xn = {}, Pn = on.length, Yn = 0; Yn < Pn; ++Yn)
                          xn[on[Yn]] = cn[Yn];
                        return xn;
                      };
                      an = kr ? function(cn, xn) {
                        return kr(Hn(cn), xn);
                      } : Hn;
                    });
                  }, Te.parseRows = function(xr, kr) {
                    var an = {}, on = {}, Ln = [], Hn = xr.length, cn = 0, xn = 0, Pn, Yn;
                    function ti() {
                      if (cn >= Hn) return on;
                      if (Yn) return Yn = !1, an;
                      var Li = cn;
                      if (xr.charCodeAt(Li) === 34) {
                        for (var Xi = Li; Xi++ < Hn; )
                          if (xr.charCodeAt(Xi) === 34) {
                            if (xr.charCodeAt(Xi + 1) !== 34) break;
                            ++Xi;
                          }
                        cn = Xi + 2;
                        var oa = xr.charCodeAt(Xi + 1);
                        return oa === 13 ? (Yn = !0, xr.charCodeAt(Xi + 2) === 10 && ++cn) : oa === 10 && (Yn = !0), xr.slice(Li + 1, Xi).replace(/""/g, '"');
                      }
                      for (; cn < Hn; ) {
                        var oa = xr.charCodeAt(cn++), ji = 1;
                        if (oa === 10) Yn = !0;
                        else if (oa === 13)
                          Yn = !0, xr.charCodeAt(cn) === 10 && (++cn, ++ji);
                        else if (oa !== pe) continue;
                        return xr.slice(Li, cn - ji);
                      }
                      return xr.slice(Li);
                    }
                    for (; (Pn = ti()) !== on; ) {
                      for (var zn = []; Pn !== an && Pn !== on; )
                        zn.push(Pn), Pn = ti();
                      kr && (zn = kr(zn, xn++)) == null || Ln.push(zn);
                    }
                    return Ln;
                  }, Te.format = function(xr) {
                    if (Array.isArray(xr[0])) return Te.formatRows(xr);
                    var kr = new B(), an = [];
                    return xr.forEach(function(on) {
                      for (var Ln in on)
                        kr.has(Ln) || an.push(kr.add(Ln));
                    }), [an.map(gr).join(gt)].concat(xr.map(function(on) {
                      return an.map(function(Ln) {
                        return gr(on[Ln]);
                      }).join(gt);
                    })).join(`
`);
                  }, Te.formatRows = function(xr) {
                    return xr.map(We).join(`
`);
                  };
                  function We(xr) {
                    return xr.map(gr).join(gt);
                  }
                  function gr(xr) {
                    return Kt.test(xr) ? '"' + xr.replace(/\"/g, '""') + '"' : xr;
                  }
                  return Te;
                }, n.csv = n.dsv(",", "text/csv"), n.tsv = n.dsv("	", "text/tab-separated-values");
                var Tn, sn, $n, kn, An = this[H(this, "requestAnimationFrame")] || function(gt) {
                  setTimeout(gt, 17);
                };
                n.timer = function() {
                  qn.apply(this, arguments);
                };
                function qn(gt, Ft, Kt) {
                  var pe = arguments.length;
                  pe < 2 && (Ft = 0), pe < 3 && (Kt = Date.now());
                  var Te = Kt + Ft, Ce = {
                    c: gt,
                    t: Te,
                    n: null
                  };
                  return sn ? sn.n = Ce : Tn = Ce, sn = Ce, $n || (kn = clearTimeout(kn), $n = 1, An(si)), Ce;
                }
                function si() {
                  var gt = qi(), Ft = ha() - gt;
                  Ft > 24 ? (isFinite(Ft) && (clearTimeout(kn), kn = setTimeout(si, Ft)), $n = 0) : ($n = 1, An(si));
                }
                n.timer.flush = function() {
                  qi(), ha();
                };
                function qi() {
                  for (var gt = Date.now(), Ft = Tn; Ft; )
                    gt >= Ft.t && Ft.c(gt - Ft.t) && (Ft.c = null), Ft = Ft.n;
                  return gt;
                }
                function ha() {
                  for (var gt, Ft = Tn, Kt = 1 / 0; Ft; )
                    Ft.c ? (Ft.t < Kt && (Kt = Ft.t), Ft = (gt = Ft).n) : Ft = gt ? gt.n = Ft.n : Tn = Ft.n;
                  return sn = gt, Kt;
                }
                n.round = function(gt, Ft) {
                  return Ft ? Math.round(gt * (Ft = Math.pow(10, Ft))) / Ft : Math.round(gt);
                }, n.geom = {};
                function Mi(gt) {
                  return gt[0];
                }
                function Ji(gt) {
                  return gt[1];
                }
                n.geom.hull = function(gt) {
                  var Ft = Mi, Kt = Ji;
                  if (arguments.length) return pe(gt);
                  function pe(Te) {
                    if (Te.length < 3) return [];
                    var Ce = fn(Ft), er = fn(Kt), We, gr = Te.length, xr = [], kr = [];
                    for (We = 0; We < gr; We++)
                      xr.push([+Ce.call(this, Te[We], We), +er.call(this, Te[We], We), We]);
                    for (xr.sort(rn), We = 0; We < gr; We++) kr.push([xr[We][0], -xr[We][1]]);
                    var an = ci(xr), on = ci(kr), Ln = on[0] === an[0], Hn = on[on.length - 1] === an[an.length - 1], cn = [];
                    for (We = an.length - 1; We >= 0; --We) cn.push(Te[xr[an[We]][2]]);
                    for (We = +Ln; We < on.length - Hn; ++We) cn.push(Te[xr[on[We]][2]]);
                    return cn;
                  }
                  return pe.x = function(Te) {
                    return arguments.length ? (Ft = Te, pe) : Ft;
                  }, pe.y = function(Te) {
                    return arguments.length ? (Kt = Te, pe) : Kt;
                  }, pe;
                };
                function ci(gt) {
                  for (var Ft = gt.length, Kt = [0, 1], pe = 2, Te = 2; Te < Ft; Te++) {
                    for (; pe > 1 && ir(gt[Kt[pe - 2]], gt[Kt[pe - 1]], gt[Te]) <= 0; ) --pe;
                    Kt[pe++] = Te;
                  }
                  return Kt.slice(0, pe);
                }
                function rn(gt, Ft) {
                  return gt[0] - Ft[0] || gt[1] - Ft[1];
                }
                n.geom.polygon = function(gt) {
                  return Q(gt, Cn), gt;
                };
                var Cn = n.geom.polygon.prototype = [];
                Cn.area = function() {
                  for (var gt = -1, Ft = this.length, Kt, pe = this[Ft - 1], Te = 0; ++gt < Ft; )
                    Kt = pe, pe = this[gt], Te += Kt[1] * pe[0] - Kt[0] * pe[1];
                  return Te * 0.5;
                }, Cn.centroid = function(gt) {
                  var Ft = -1, Kt = this.length, pe = 0, Te = 0, Ce, er = this[Kt - 1], We;
                  for (arguments.length || (gt = -1 / (6 * this.area())); ++Ft < Kt; )
                    Ce = er, er = this[Ft], We = Ce[0] * er[1] - er[0] * Ce[1], pe += (Ce[0] + er[0]) * We, Te += (Ce[1] + er[1]) * We;
                  return [pe * gt, Te * gt];
                }, Cn.clip = function(gt) {
                  for (var Ft, Kt = mi(gt), pe = -1, Te = this.length - mi(this), Ce, er, We = this[Te - 1], gr, xr, kr; ++pe < Te; ) {
                    for (Ft = gt.slice(), gt.length = 0, gr = this[pe], xr = Ft[(er = Ft.length - Kt) - 1], Ce = -1; ++Ce < er; )
                      kr = Ft[Ce], Un(kr, We, gr) ? (Un(xr, We, gr) || gt.push(Fn(xr, kr, We, gr)), gt.push(kr)) : Un(xr, We, gr) && gt.push(Fn(xr, kr, We, gr)), xr = kr;
                    Kt && gt.push(gt[0]), We = gr;
                  }
                  return gt;
                };
                function Un(gt, Ft, Kt) {
                  return (Kt[0] - Ft[0]) * (gt[1] - Ft[1]) < (Kt[1] - Ft[1]) * (gt[0] - Ft[0]);
                }
                function Fn(gt, Ft, Kt, pe) {
                  var Te = gt[0], Ce = Kt[0], er = Ft[0] - Te, We = pe[0] - Ce, gr = gt[1], xr = Kt[1], kr = Ft[1] - gr, an = pe[1] - xr, on = (We * (gr - xr) - an * (Te - Ce)) / (an * er - We * kr);
                  return [Te + on * er, gr + on * kr];
                }
                function mi(gt) {
                  var Ft = gt[0], Kt = gt[gt.length - 1];
                  return !(Ft[0] - Kt[0] || Ft[1] - Kt[1]);
                }
                var Nn, di, Ai, Gi = [], ia, Ca, Qr = [];
                function pn() {
                  Ss(this), this.edge = this.site = this.circle = null;
                }
                function $r(gt) {
                  var Ft = Gi.pop() || new pn();
                  return Ft.site = gt, Ft;
                }
                function mn(gt) {
                  fi(gt), Ai.remove(gt), Gi.push(gt), Ss(gt);
                }
                function Wn(gt) {
                  var Ft = gt.circle, Kt = Ft.x, pe = Ft.cy, Te = {
                    x: Kt,
                    y: pe
                  }, Ce = gt.P, er = gt.N, We = [gt];
                  mn(gt);
                  for (var gr = Ce; gr.circle && f(Kt - gr.circle.x) < Zt && f(pe - gr.circle.cy) < Zt; )
                    Ce = gr.P, We.unshift(gr), mn(gr), gr = Ce;
                  We.unshift(gr), fi(gr);
                  for (var xr = er; xr.circle && f(Kt - xr.circle.x) < Zt && f(pe - xr.circle.cy) < Zt; )
                    er = xr.N, We.push(xr), mn(xr), xr = er;
                  We.push(xr), fi(xr);
                  var kr = We.length, an;
                  for (an = 1; an < kr; ++an)
                    xr = We[an], gr = We[an - 1], Ea(xr.edge, gr.site, xr.site, Te);
                  gr = We[0], xr = We[kr - 1], xr.edge = Bi(gr.site, xr.site, null, Te), li(gr), li(xr);
                }
                function yi(gt) {
                  for (var Ft = gt.x, Kt = gt.y, pe, Te, Ce, er, We = Ai._; We; )
                    if (Ce = ei(We, Kt) - Ft, Ce > Zt) We = We.L;
                    else if (er = Ft - Jn(We, Kt), er > Zt) {
                      if (!We.R) {
                        pe = We;
                        break;
                      }
                      We = We.R;
                    } else {
                      Ce > -Zt ? (pe = We.P, Te = We) : er > -Zt ? (pe = We, Te = We.N) : pe = Te = We;
                      break;
                    }
                  var gr = $r(gt);
                  if (Ai.insert(pe, gr), !(!pe && !Te)) {
                    if (pe === Te) {
                      fi(pe), Te = $r(pe.site), Ai.insert(gr, Te), gr.edge = Te.edge = Bi(pe.site, gr.site), li(pe), li(Te);
                      return;
                    }
                    if (!Te) {
                      gr.edge = Bi(pe.site, gr.site);
                      return;
                    }
                    fi(pe), fi(Te);
                    var xr = pe.site, kr = xr.x, an = xr.y, on = gt.x - kr, Ln = gt.y - an, Hn = Te.site, cn = Hn.x - kr, xn = Hn.y - an, Pn = 2 * (on * xn - Ln * cn), Yn = on * on + Ln * Ln, ti = cn * cn + xn * xn, zn = {
                      x: (xn * Yn - Ln * ti) / Pn + kr,
                      y: (on * ti - cn * Yn) / Pn + an
                    };
                    Ea(Te.edge, xr, Hn, zn), gr.edge = Bi(xr, gt, null, zn), Te.edge = Bi(gt, Hn, null, zn), li(pe), li(Te);
                  }
                }
                function ei(gt, Ft) {
                  var Kt = gt.site, pe = Kt.x, Te = Kt.y, Ce = Te - Ft;
                  if (!Ce) return pe;
                  var er = gt.P;
                  if (!er) return -1 / 0;
                  Kt = er.site;
                  var We = Kt.x, gr = Kt.y, xr = gr - Ft;
                  if (!xr) return We;
                  var kr = We - pe, an = 1 / Ce - 1 / xr, on = kr / xr;
                  return an ? (-on + Math.sqrt(on * on - 2 * an * (kr * kr / (-2 * xr) - gr + xr / 2 + Te - Ce / 2))) / an + pe : (pe + We) / 2;
                }
                function Jn(gt, Ft) {
                  var Kt = gt.N;
                  if (Kt) return ei(Kt, Ft);
                  var pe = gt.site;
                  return pe.y === Ft ? pe.x : 1 / 0;
                }
                function en(gt) {
                  this.site = gt, this.edges = [];
                }
                en.prototype.prepare = function() {
                  for (var gt = this.edges, Ft = gt.length, Kt; Ft--; )
                    Kt = gt[Ft].edge, (!Kt.b || !Kt.a) && gt.splice(Ft, 1);
                  return gt.sort(wn), gt.length;
                };
                function Sn(gt) {
                  for (var Ft = gt[0][0], Kt = gt[1][0], pe = gt[0][1], Te = gt[1][1], Ce, er, We, gr, xr = di, kr = xr.length, an, on, Ln, Hn, cn, xn; kr--; )
                    if (an = xr[kr], !(!an || !an.prepare()))
                      for (Ln = an.edges, Hn = Ln.length, on = 0; on < Hn; )
                        xn = Ln[on].end(), We = xn.x, gr = xn.y, cn = Ln[++on % Hn].start(), Ce = cn.x, er = cn.y, (f(We - Ce) > Zt || f(gr - er) > Zt) && (Ln.splice(on, 0, new Io(ra(an.site, xn, f(We - Ft) < Zt && Te - gr > Zt ? {
                          x: Ft,
                          y: f(Ce - Ft) < Zt ? er : Te
                        } : f(gr - Te) < Zt && Kt - We > Zt ? {
                          x: f(er - Te) < Zt ? Ce : Kt,
                          y: Te
                        } : f(We - Kt) < Zt && gr - pe > Zt ? {
                          x: Kt,
                          y: f(Ce - Kt) < Zt ? er : pe
                        } : f(gr - pe) < Zt && We - Ft > Zt ? {
                          x: f(er - pe) < Zt ? Ce : Ft,
                          y: pe
                        } : null), an.site, null)), ++Hn);
                }
                function wn(gt, Ft) {
                  return Ft.angle - gt.angle;
                }
                function Dn() {
                  Ss(this), this.x = this.y = this.arc = this.site = this.cy = null;
                }
                function li(gt) {
                  var Ft = gt.P, Kt = gt.N;
                  if (!(!Ft || !Kt)) {
                    var pe = Ft.site, Te = gt.site, Ce = Kt.site;
                    if (pe !== Ce) {
                      var er = Te.x, We = Te.y, gr = pe.x - er, xr = pe.y - We, kr = Ce.x - er, xn = Ce.y - We, an = 2 * (gr * xn - xr * kr);
                      if (!(an >= -ye)) {
                        var on = gr * gr + xr * xr, Ln = kr * kr + xn * xn, Hn = (xn * on - xr * Ln) / an, cn = (gr * Ln - kr * on) / an, xn = cn + We, Pn = Qr.pop() || new Dn();
                        Pn.arc = gt, Pn.site = Te, Pn.x = Hn + er, Pn.y = xn + Math.sqrt(Hn * Hn + cn * cn), Pn.cy = xn, gt.circle = Pn;
                        for (var Yn = null, ti = Ca._; ti; )
                          if (Pn.y < ti.y || Pn.y === ti.y && Pn.x <= ti.x)
                            if (ti.L) ti = ti.L;
                            else {
                              Yn = ti.P;
                              break;
                            }
                          else if (ti.R) ti = ti.R;
                          else {
                            Yn = ti;
                            break;
                          }
                        Ca.insert(Yn, Pn), Yn || (ia = Pn);
                      }
                    }
                  }
                }
                function fi(gt) {
                  var Ft = gt.circle;
                  Ft && (Ft.P || (ia = Ft.N), Ca.remove(Ft), Qr.push(Ft), Ss(Ft), gt.circle = null);
                }
                function _i(gt, Ft, Kt, pe) {
                  return function(Te) {
                    var Ce = Te.a, er = Te.b, We = Ce.x, gr = Ce.y, xr = er.x, kr = er.y, an = 0, on = 1, Ln = xr - We, Hn = kr - gr, cn;
                    if (cn = gt - We, !(!Ln && cn > 0)) {
                      if (cn /= Ln, Ln < 0) {
                        if (cn < an) return;
                        cn < on && (on = cn);
                      } else if (Ln > 0) {
                        if (cn > on) return;
                        cn > an && (an = cn);
                      }
                      if (cn = Kt - We, !(!Ln && cn < 0)) {
                        if (cn /= Ln, Ln < 0) {
                          if (cn > on) return;
                          cn > an && (an = cn);
                        } else if (Ln > 0) {
                          if (cn < an) return;
                          cn < on && (on = cn);
                        }
                        if (cn = Ft - gr, !(!Hn && cn > 0)) {
                          if (cn /= Hn, Hn < 0) {
                            if (cn < an) return;
                            cn < on && (on = cn);
                          } else if (Hn > 0) {
                            if (cn > on) return;
                            cn > an && (an = cn);
                          }
                          if (cn = pe - gr, !(!Hn && cn < 0)) {
                            if (cn /= Hn, Hn < 0) {
                              if (cn > on) return;
                              cn > an && (an = cn);
                            } else if (Hn > 0) {
                              if (cn < an) return;
                              cn < on && (on = cn);
                            }
                            return an > 0 && (Te.a = {
                              x: We + an * Ln,
                              y: gr + an * Hn
                            }), on < 1 && (Te.b = {
                              x: We + on * Ln,
                              y: gr + on * Hn
                            }), Te;
                          }
                        }
                      }
                    }
                  };
                }
                function Ti(gt) {
                  for (var Ft = Nn, Kt = _i(gt[0][0], gt[0][1], gt[1][0], gt[1][1]), pe = Ft.length, Te; pe--; )
                    Te = Ft[pe], (!bi(Te, gt) || !Kt(Te) || f(Te.a.x - Te.b.x) < Zt && f(Te.a.y - Te.b.y) < Zt) && (Te.a = Te.b = null, Ft.splice(pe, 1));
                }
                function bi(gt, Ft) {
                  var Kt = gt.b;
                  if (Kt) return !0;
                  var pe = gt.a, Te = Ft[0][0], Ce = Ft[1][0], er = Ft[0][1], We = Ft[1][1], gr = gt.l, xr = gt.r, kr = gr.x, an = gr.y, on = xr.x, Ln = xr.y, Hn = (kr + on) / 2, cn = (an + Ln) / 2, xn, Pn;
                  if (Ln === an) {
                    if (Hn < Te || Hn >= Ce) return;
                    if (kr > on) {
                      if (!pe) pe = {
                        x: Hn,
                        y: er
                      };
                      else if (pe.y >= We) return;
                      Kt = {
                        x: Hn,
                        y: We
                      };
                    } else {
                      if (!pe) pe = {
                        x: Hn,
                        y: We
                      };
                      else if (pe.y < er) return;
                      Kt = {
                        x: Hn,
                        y: er
                      };
                    }
                  } else if (xn = (kr - on) / (Ln - an), Pn = cn - xn * Hn, xn < -1 || xn > 1)
                    if (kr > on) {
                      if (!pe) pe = {
                        x: (er - Pn) / xn,
                        y: er
                      };
                      else if (pe.y >= We) return;
                      Kt = {
                        x: (We - Pn) / xn,
                        y: We
                      };
                    } else {
                      if (!pe) pe = {
                        x: (We - Pn) / xn,
                        y: We
                      };
                      else if (pe.y < er) return;
                      Kt = {
                        x: (er - Pn) / xn,
                        y: er
                      };
                    }
                  else if (an < Ln) {
                    if (!pe) pe = {
                      x: Te,
                      y: xn * Te + Pn
                    };
                    else if (pe.x >= Ce) return;
                    Kt = {
                      x: Ce,
                      y: xn * Ce + Pn
                    };
                  } else {
                    if (!pe) pe = {
                      x: Ce,
                      y: xn * Ce + Pn
                    };
                    else if (pe.x < Te) return;
                    Kt = {
                      x: Te,
                      y: xn * Te + Pn
                    };
                  }
                  return gt.a = pe, gt.b = Kt, !0;
                }
                function ki(gt, Ft) {
                  this.l = gt, this.r = Ft, this.a = this.b = null;
                }
                function Bi(gt, Ft, Kt, pe) {
                  var Te = new ki(gt, Ft);
                  return Nn.push(Te), Kt && Ea(Te, gt, Ft, Kt), pe && Ea(Te, Ft, gt, pe), di[gt.i].edges.push(new Io(Te, gt, Ft)), di[Ft.i].edges.push(new Io(Te, Ft, gt)), Te;
                }
                function ra(gt, Ft, Kt) {
                  var pe = new ki(gt, null);
                  return pe.a = Ft, pe.b = Kt, Nn.push(pe), pe;
                }
                function Ea(gt, Ft, Kt, pe) {
                  !gt.a && !gt.b ? (gt.a = pe, gt.l = Ft, gt.r = Kt) : gt.l === Kt ? gt.b = pe : gt.a = pe;
                }
                function Io(gt, Ft, Kt) {
                  var pe = gt.a, Te = gt.b;
                  this.edge = gt, this.site = Ft, this.angle = Kt ? Math.atan2(Kt.y - Ft.y, Kt.x - Ft.x) : gt.l === Ft ? Math.atan2(Te.x - pe.x, pe.y - Te.y) : Math.atan2(pe.x - Te.x, Te.y - pe.y);
                }
                Io.prototype = {
                  start: function() {
                    return this.edge.l === this.site ? this.edge.a : this.edge.b;
                  },
                  end: function() {
                    return this.edge.l === this.site ? this.edge.b : this.edge.a;
                  }
                };
                function go() {
                  this._ = null;
                }
                function Ss(gt) {
                  gt.U = gt.C = gt.L = gt.R = gt.P = gt.N = null;
                }
                go.prototype = {
                  insert: function(gt, Ft) {
                    var Kt, pe, Te;
                    if (gt) {
                      if (Ft.P = gt, Ft.N = gt.N, gt.N && (gt.N.P = Ft), gt.N = Ft, gt.R) {
                        for (gt = gt.R; gt.L; ) gt = gt.L;
                        gt.L = Ft;
                      } else
                        gt.R = Ft;
                      Kt = gt;
                    } else this._ ? (gt = Ql(this._), Ft.P = null, Ft.N = gt, gt.P = gt.L = Ft, Kt = gt) : (Ft.P = Ft.N = null, this._ = Ft, Kt = null);
                    for (Ft.L = Ft.R = null, Ft.U = Kt, Ft.C = !0, gt = Ft; Kt && Kt.C; )
                      pe = Kt.U, Kt === pe.L ? (Te = pe.R, Te && Te.C ? (Kt.C = Te.C = !1, pe.C = !0, gt = pe) : (gt === Kt.R && (Bs(this, Kt), gt = Kt, Kt = gt.U), Kt.C = !1, pe.C = !0, so(this, pe))) : (Te = pe.L, Te && Te.C ? (Kt.C = Te.C = !1, pe.C = !0, gt = pe) : (gt === Kt.L && (so(this, Kt), gt = Kt, Kt = gt.U), Kt.C = !1, pe.C = !0, Bs(this, pe))), Kt = gt.U;
                    this._.C = !1;
                  },
                  remove: function(gt) {
                    gt.N && (gt.N.P = gt.P), gt.P && (gt.P.N = gt.N), gt.N = gt.P = null;
                    var Ft = gt.U, Kt, pe = gt.L, Te = gt.R, Ce, er;
                    if (pe ? Te ? Ce = Ql(Te) : Ce = pe : Ce = Te, Ft ? Ft.L === gt ? Ft.L = Ce : Ft.R = Ce : this._ = Ce, pe && Te ? (er = Ce.C, Ce.C = gt.C, Ce.L = pe, pe.U = Ce, Ce !== Te ? (Ft = Ce.U, Ce.U = gt.U, gt = Ce.R, Ft.L = gt, Ce.R = Te, Te.U = Ce) : (Ce.U = Ft, Ft = Ce, gt = Ce.R)) : (er = gt.C, gt = Ce), gt && (gt.U = Ft), !er) {
                      if (gt && gt.C) {
                        gt.C = !1;
                        return;
                      }
                      do {
                        if (gt === this._) break;
                        if (gt === Ft.L) {
                          if (Kt = Ft.R, Kt.C && (Kt.C = !1, Ft.C = !0, Bs(this, Ft), Kt = Ft.R), Kt.L && Kt.L.C || Kt.R && Kt.R.C) {
                            (!Kt.R || !Kt.R.C) && (Kt.L.C = !1, Kt.C = !0, so(this, Kt), Kt = Ft.R), Kt.C = Ft.C, Ft.C = Kt.R.C = !1, Bs(this, Ft), gt = this._;
                            break;
                          }
                        } else if (Kt = Ft.L, Kt.C && (Kt.C = !1, Ft.C = !0, so(this, Ft), Kt = Ft.L), Kt.L && Kt.L.C || Kt.R && Kt.R.C) {
                          (!Kt.L || !Kt.L.C) && (Kt.R.C = !1, Kt.C = !0, Bs(this, Kt), Kt = Ft.L), Kt.C = Ft.C, Ft.C = Kt.L.C = !1, so(this, Ft), gt = this._;
                          break;
                        }
                        Kt.C = !0, gt = Ft, Ft = Ft.U;
                      } while (!gt.C);
                      gt && (gt.C = !1);
                    }
                  }
                };
                function Bs(gt, Ft) {
                  var Kt = Ft, pe = Ft.R, Te = Kt.U;
                  Te ? Te.L === Kt ? Te.L = pe : Te.R = pe : gt._ = pe, pe.U = Te, Kt.U = pe, Kt.R = pe.L, Kt.R && (Kt.R.U = Kt), pe.L = Kt;
                }
                function so(gt, Ft) {
                  var Kt = Ft, pe = Ft.L, Te = Kt.U;
                  Te ? Te.L === Kt ? Te.L = pe : Te.R = pe : gt._ = pe, pe.U = Te, Kt.U = pe, Kt.L = pe.R, Kt.L && (Kt.L.U = Kt), pe.R = Kt;
                }
                function Ql(gt) {
                  for (; gt.L; ) gt = gt.L;
                  return gt;
                }
                function Zu(gt, Ft) {
                  var Kt = gt.sort(Ns).pop(), pe, Te, Ce;
                  for (Nn = [], di = new Array(gt.length), Ai = new go(), Ca = new go(); ; )
                    if (Ce = ia, Kt && (!Ce || Kt.y < Ce.y || Kt.y === Ce.y && Kt.x < Ce.x))
                      (Kt.x !== pe || Kt.y !== Te) && (di[Kt.i] = new en(Kt), yi(Kt), pe = Kt.x, Te = Kt.y), Kt = gt.pop();
                    else if (Ce)
                      Wn(Ce.arc);
                    else
                      break;
                  Ft && (Ti(Ft), Sn(Ft));
                  var er = {
                    cells: di,
                    edges: Nn
                  };
                  return Ai = Ca = Nn = di = null, er;
                }
                function Ns(gt, Ft) {
                  return Ft.y - gt.y || Ft.x - gt.x;
                }
                n.geom.voronoi = function(gt) {
                  var Ft = Mi, Kt = Ji, pe = Ft, Te = Kt, Ce = io;
                  if (gt) return er(gt);
                  function er(gr) {
                    var xr = new Array(gr.length), kr = Ce[0][0], an = Ce[0][1], on = Ce[1][0], Ln = Ce[1][1];
                    return Zu(We(gr), Ce).cells.forEach(function(Hn, cn) {
                      var xn = Hn.edges, Pn = Hn.site, Yn = xr[cn] = xn.length ? xn.map(function(ti) {
                        var zn = ti.start();
                        return [zn.x, zn.y];
                      }) : Pn.x >= kr && Pn.x <= on && Pn.y >= an && Pn.y <= Ln ? [[kr, Ln], [on, Ln], [on, an], [kr, an]] : [];
                      Yn.point = gr[cn];
                    }), xr;
                  }
                  function We(gr) {
                    return gr.map(function(xr, kr) {
                      return {
                        x: Math.round(pe(xr, kr) / Zt) * Zt,
                        y: Math.round(Te(xr, kr) / Zt) * Zt,
                        i: kr
                      };
                    });
                  }
                  return er.links = function(gr) {
                    return Zu(We(gr)).edges.filter(function(xr) {
                      return xr.l && xr.r;
                    }).map(function(xr) {
                      return {
                        source: gr[xr.l.i],
                        target: gr[xr.r.i]
                      };
                    });
                  }, er.triangles = function(gr) {
                    var xr = [];
                    return Zu(We(gr)).cells.forEach(function(kr, an) {
                      for (var on = kr.site, Ln = kr.edges.sort(wn), Hn = -1, cn = Ln.length, xn, Pn = Ln[cn - 1].edge, Yn = Pn.l === on ? Pn.r : Pn.l; ++Hn < cn; )
                        xn = Yn, Pn = Ln[Hn].edge, Yn = Pn.l === on ? Pn.r : Pn.l, an < xn.i && an < Yn.i && vf(on, xn, Yn) < 0 && xr.push([gr[an], gr[xn.i], gr[Yn.i]]);
                    }), xr;
                  }, er.x = function(gr) {
                    return arguments.length ? (pe = fn(Ft = gr), er) : Ft;
                  }, er.y = function(gr) {
                    return arguments.length ? (Te = fn(Kt = gr), er) : Kt;
                  }, er.clipExtent = function(gr) {
                    return arguments.length ? (Ce = gr ?? io, er) : Ce === io ? null : Ce;
                  }, er.size = function(gr) {
                    return arguments.length ? er.clipExtent(gr && [[0, 0], gr]) : Ce === io ? null : Ce && Ce[1];
                  }, er;
                };
                var io = [[-1e6, -1e6], [1e6, 1e6]];
                function vf(gt, Ft, Kt) {
                  return (gt.x - Kt.x) * (Ft.y - gt.y) - (gt.x - Ft.x) * (Kt.y - gt.y);
                }
                n.geom.delaunay = function(gt) {
                  return n.geom.voronoi().triangles(gt);
                }, n.geom.quadtree = function(gt, Ft, Kt, pe, Te) {
                  var Ce = Mi, er = Ji, We;
                  if (We = arguments.length)
                    return Ce = yl, er = jo, We === 3 && (Te = Kt, pe = Ft, Kt = Ft = 0), gr(gt);
                  function gr(xr) {
                    var kr, an = fn(Ce), on = fn(er), Ln, Hn, cn, xn, Pn, Yn, ti, zn;
                    if (Ft != null)
                      Pn = Ft, Yn = Kt, ti = pe, zn = Te;
                    else if (ti = zn = -(Pn = Yn = 1 / 0), Ln = [], Hn = [], xn = xr.length, We) for (cn = 0; cn < xn; ++cn)
                      kr = xr[cn], kr.x < Pn && (Pn = kr.x), kr.y < Yn && (Yn = kr.y), kr.x > ti && (ti = kr.x), kr.y > zn && (zn = kr.y), Ln.push(kr.x), Hn.push(kr.y);
                    else for (cn = 0; cn < xn; ++cn) {
                      var Li = +an(kr = xr[cn], cn), Xi = +on(kr, cn);
                      Li < Pn && (Pn = Li), Xi < Yn && (Yn = Xi), Li > ti && (ti = Li), Xi > zn && (zn = Xi), Ln.push(Li), Hn.push(Xi);
                    }
                    var oa = ti - Pn, ji = zn - Yn;
                    oa > ji ? zn = Yn + oa : ti = Pn + ji;
                    function ea(ya, Oa, lo, Go, Po, Ui, Ba, ba) {
                      if (!(isNaN(lo) || isNaN(Go)))
                        if (ya.leaf) {
                          var xo = ya.x, Xo = ya.y;
                          if (xo != null)
                            if (f(xo - lo) + f(Xo - Go) < 0.01)
                              sa(ya, Oa, lo, Go, Po, Ui, Ba, ba);
                            else {
                              var Co = ya.point;
                              ya.x = ya.y = ya.point = null, sa(ya, Co, xo, Xo, Po, Ui, Ba, ba), sa(ya, Oa, lo, Go, Po, Ui, Ba, ba);
                            }
                          else
                            ya.x = lo, ya.y = Go, ya.point = Oa;
                        } else
                          sa(ya, Oa, lo, Go, Po, Ui, Ba, ba);
                    }
                    function sa(ya, Oa, lo, Go, Po, Ui, Ba, ba) {
                      var xo = (Po + Ba) * 0.5, Xo = (Ui + ba) * 0.5, Co = lo >= xo, Cs = Go >= Xo, ns = Cs << 1 | Co;
                      ya.leaf = !1, ya = ya.nodes[ns] || (ya.nodes[ns] = Ys()), Co ? Po = xo : Ba = xo, Cs ? Ui = Xo : ba = Xo, ea(ya, Oa, lo, Go, Po, Ui, Ba, ba);
                    }
                    var Wa = Ys();
                    if (Wa.add = function(ya) {
                      ea(Wa, ya, +an(ya, ++cn), +on(ya, cn), Pn, Yn, ti, zn);
                    }, Wa.visit = function(ya) {
                      uu(ya, Wa, Pn, Yn, ti, zn);
                    }, Wa.find = function(ya) {
                      return ss(Wa, ya[0], ya[1], Pn, Yn, ti, zn);
                    }, cn = -1, Ft == null) {
                      for (; ++cn < xn; )
                        ea(Wa, xr[cn], Ln[cn], Hn[cn], Pn, Yn, ti, zn);
                      --cn;
                    } else xr.forEach(Wa.add);
                    return Ln = Hn = xr = kr = null, Wa;
                  }
                  return gr.x = function(xr) {
                    return arguments.length ? (Ce = xr, gr) : Ce;
                  }, gr.y = function(xr) {
                    return arguments.length ? (er = xr, gr) : er;
                  }, gr.extent = function(xr) {
                    return arguments.length ? (xr == null ? Ft = Kt = pe = Te = null : (Ft = +xr[0][0], Kt = +xr[0][1], pe = +xr[1][0], Te = +xr[1][1]), gr) : Ft == null ? null : [[Ft, Kt], [pe, Te]];
                  }, gr.size = function(xr) {
                    return arguments.length ? (xr == null ? Ft = Kt = pe = Te = null : (Ft = Kt = 0, pe = +xr[0], Te = +xr[1]), gr) : Ft == null ? null : [pe - Ft, Te - Kt];
                  }, gr;
                };
                function yl(gt) {
                  return gt.x;
                }
                function jo(gt) {
                  return gt.y;
                }
                function Ys() {
                  return {
                    leaf: !0,
                    nodes: [],
                    point: null,
                    x: null,
                    y: null
                  };
                }
                function uu(gt, Ft, Kt, pe, Te, Ce) {
                  if (!gt(Ft, Kt, pe, Te, Ce)) {
                    var er = (Kt + Te) * 0.5, We = (pe + Ce) * 0.5, gr = Ft.nodes;
                    gr[0] && uu(gt, gr[0], Kt, pe, er, We), gr[1] && uu(gt, gr[1], er, pe, Te, We), gr[2] && uu(gt, gr[2], Kt, We, er, Ce), gr[3] && uu(gt, gr[3], er, We, Te, Ce);
                  }
                }
                function ss(gt, Ft, Kt, pe, Te, Ce, er) {
                  var We = 1 / 0, gr;
                  return function xr(kr, an, on, Ln, Hn) {
                    if (!(an > Ce || on > er || Ln < pe || Hn < Te)) {
                      if (cn = kr.point) {
                        var cn, xn = Ft - kr.x, Pn = Kt - kr.y, Yn = xn * xn + Pn * Pn;
                        if (Yn < We) {
                          var ti = Math.sqrt(We = Yn);
                          pe = Ft - ti, Te = Kt - ti, Ce = Ft + ti, er = Kt + ti, gr = cn;
                        }
                      }
                      for (var zn = kr.nodes, Li = (an + Ln) * 0.5, Xi = (on + Hn) * 0.5, oa = Ft >= Li, ji = Kt >= Xi, ea = ji << 1 | oa, sa = ea + 4; ea < sa; ++ea)
                        if (kr = zn[ea & 3]) switch (ea & 3) {
                          case 0:
                            xr(kr, an, on, Li, Xi);
                            break;
                          case 1:
                            xr(kr, Li, on, Ln, Xi);
                            break;
                          case 2:
                            xr(kr, an, Xi, Li, Hn);
                            break;
                          case 3:
                            xr(kr, Li, Xi, Ln, Hn);
                            break;
                        }
                    }
                  }(gt, pe, Te, Ce, er), gr;
                }
                n.interpolateRgb = qo;
                function qo(gt, Ft) {
                  gt = n.rgb(gt), Ft = n.rgb(Ft);
                  var Kt = gt.r, pe = gt.g, Te = gt.b, Ce = Ft.r - Kt, er = Ft.g - pe, We = Ft.b - Te;
                  return function(gr) {
                    return "#" + Ir(Math.round(Kt + Ce * gr)) + Ir(Math.round(pe + er * gr)) + Ir(Math.round(Te + We * gr));
                  };
                }
                n.interpolateObject = Ol;
                function Ol(gt, Ft) {
                  var Kt = {}, pe = {}, Te;
                  for (Te in gt)
                    Te in Ft ? Kt[Te] = is(gt[Te], Ft[Te]) : pe[Te] = gt[Te];
                  for (Te in Ft)
                    Te in gt || (pe[Te] = Ft[Te]);
                  return function(Ce) {
                    for (Te in Kt) pe[Te] = Kt[Te](Ce);
                    return pe;
                  };
                }
                n.interpolateNumber = yo;
                function yo(gt, Ft) {
                  return gt = +gt, Ft = +Ft, function(Kt) {
                    return gt * (1 - Kt) + Ft * Kt;
                  };
                }
                n.interpolateString = ds;
                function ds(gt, Ft) {
                  var Kt = Ks.lastIndex = zs.lastIndex = 0, pe, Te, Ce, er = -1, We = [], gr = [];
                  for (gt = gt + "", Ft = Ft + ""; (pe = Ks.exec(gt)) && (Te = zs.exec(Ft)); )
                    (Ce = Te.index) > Kt && (Ce = Ft.slice(Kt, Ce), We[er] ? We[er] += Ce : We[++er] = Ce), (pe = pe[0]) === (Te = Te[0]) ? We[er] ? We[er] += Te : We[++er] = Te : (We[++er] = null, gr.push({
                      i: er,
                      x: yo(pe, Te)
                    })), Kt = zs.lastIndex;
                  return Kt < Ft.length && (Ce = Ft.slice(Kt), We[er] ? We[er] += Ce : We[++er] = Ce), We.length < 2 ? gr[0] ? (Ft = gr[0].x, function(xr) {
                    return Ft(xr) + "";
                  }) : function() {
                    return Ft;
                  } : (Ft = gr.length, function(xr) {
                    for (var kr = 0, an; kr < Ft; ++kr) We[(an = gr[kr]).i] = an.x(xr);
                    return We.join("");
                  });
                }
                var Ks = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, zs = new RegExp(Ks.source, "g");
                n.interpolate = is;
                function is(gt, Ft) {
                  for (var Kt = n.interpolators.length, pe; --Kt >= 0 && !(pe = n.interpolators[Kt](gt, Ft)); ) ;
                  return pe;
                }
                n.interpolators = [function(gt, Ft) {
                  var Kt = typeof Ft;
                  return (Kt === "string" ? Zn.has(Ft.toLowerCase()) || /^(#|rgb\(|hsl\()/i.test(Ft) ? qo : ds : Ft instanceof we ? qo : Array.isArray(Ft) ? wl : Kt === "object" && isNaN(Ft) ? Ol : yo)(gt, Ft);
                }], n.interpolateArray = wl;
                function wl(gt, Ft) {
                  var Kt = [], pe = [], Te = gt.length, Ce = Ft.length, er = Math.min(gt.length, Ft.length), We;
                  for (We = 0; We < er; ++We) Kt.push(is(gt[We], Ft[We]));
                  for (; We < Te; ++We) pe[We] = gt[We];
                  for (; We < Ce; ++We) pe[We] = Ft[We];
                  return function(gr) {
                    for (We = 0; We < er; ++We) pe[We] = Kt[We](gr);
                    return pe;
                  };
                }
                var Th = function() {
                  return V;
                }, Us = n.map({
                  linear: Th,
                  poly: yf,
                  quad: function() {
                    return $l;
                  },
                  cubic: function() {
                    return Bl;
                  },
                  sin: function() {
                    return Wf;
                  },
                  exp: function() {
                    return Xu;
                  },
                  circle: function() {
                    return Pd;
                  },
                  elastic: Id,
                  back: td,
                  bounce: function() {
                    return Ah;
                  }
                }), Gf = n.map({
                  in: V,
                  out: bs,
                  "in-out": pf,
                  "out-in": function(gt) {
                    return pf(bs(gt));
                  }
                });
                n.ease = function(gt) {
                  var Ft = gt.indexOf("-"), Kt = Ft >= 0 ? gt.slice(0, Ft) : gt, pe = Ft >= 0 ? gt.slice(Ft + 1) : "in";
                  return Kt = Us.get(Kt) || Th, pe = Gf.get(pe) || V, _l(pe(Kt.apply(null, s.call(arguments, 1))));
                };
                function _l(gt) {
                  return function(Ft) {
                    return Ft <= 0 ? 0 : Ft >= 1 ? 1 : gt(Ft);
                  };
                }
                function bs(gt) {
                  return function(Ft) {
                    return 1 - gt(1 - Ft);
                  };
                }
                function pf(gt) {
                  return function(Ft) {
                    return 0.5 * (Ft < 0.5 ? gt(2 * Ft) : 2 - gt(2 - 2 * Ft));
                  };
                }
                function $l(gt) {
                  return gt * gt;
                }
                function Bl(gt) {
                  return gt * gt * gt;
                }
                function gf(gt) {
                  if (gt <= 0) return 0;
                  if (gt >= 1) return 1;
                  var Ft = gt * gt, Kt = Ft * gt;
                  return 4 * (gt < 0.5 ? Kt : 3 * (gt - Ft) + Kt - 0.75);
                }
                function yf(gt) {
                  return function(Ft) {
                    return Math.pow(Ft, gt);
                  };
                }
                function Wf(gt) {
                  return 1 - Math.cos(gt * te);
                }
                function Xu(gt) {
                  return Math.pow(2, 10 * (gt - 1));
                }
                function Pd(gt) {
                  return 1 - Math.sqrt(1 - gt * gt);
                }
                function Id(gt, Ft) {
                  var Kt;
                  return arguments.length < 2 && (Ft = 0.45), arguments.length ? Kt = Ft / St * Math.asin(1 / gt) : (gt = 1, Kt = Ft / 4), function(pe) {
                    return 1 + gt * Math.pow(2, -10 * pe) * Math.sin((pe - Kt) * St / Ft);
                  };
                }
                function td(gt) {
                  return gt || (gt = 1.70158), function(Ft) {
                    return Ft * Ft * ((gt + 1) * Ft - gt);
                  };
                }
                function Ah(gt) {
                  return gt < 0.36363636363636365 ? 7.5625 * gt * gt : gt < 0.7272727272727273 ? 7.5625 * (gt -= 0.5454545454545454) * gt + 0.75 : gt < 0.9090909090909091 ? 7.5625 * (gt -= 0.8181818181818182) * gt + 0.9375 : 7.5625 * (gt -= 0.9545454545454546) * gt + 0.984375;
                }
                n.interpolateHcl = Rd;
                function Rd(gt, Ft) {
                  gt = n.hcl(gt), Ft = n.hcl(Ft);
                  var Kt = gt.h, pe = gt.c, Te = gt.l, Ce = Ft.h - Kt, er = Ft.c - pe, We = Ft.l - Te;
                  return isNaN(er) && (er = 0, pe = isNaN(pe) ? Ft.c : pe), isNaN(Ce) ? (Ce = 0, Kt = isNaN(Kt) ? Ft.h : Kt) : Ce > 180 ? Ce -= 360 : Ce < -180 && (Ce += 360), function(gr) {
                    return lr(Kt + Ce * gr, pe + er * gr, Te + We * gr) + "";
                  };
                }
                n.interpolateHsl = mc;
                function mc(gt, Ft) {
                  gt = n.hsl(gt), Ft = n.hsl(Ft);
                  var Kt = gt.h, pe = gt.s, Te = gt.l, Ce = Ft.h - Kt, er = Ft.s - pe, We = Ft.l - Te;
                  return isNaN(er) && (er = 0, pe = isNaN(pe) ? Ft.s : pe), isNaN(Ce) ? (Ce = 0, Kt = isNaN(Kt) ? Ft.h : Kt) : Ce > 180 ? Ce -= 360 : Ce < -180 && (Ce += 360), function(gr) {
                    return Ue(Kt + Ce * gr, pe + er * gr, Te + We * gr) + "";
                  };
                }
                n.interpolateLab = ed;
                function ed(gt, Ft) {
                  gt = n.lab(gt), Ft = n.lab(Ft);
                  var Kt = gt.l, pe = gt.a, Te = gt.b, Ce = Ft.l - Kt, er = Ft.a - pe, We = Ft.b - Te;
                  return function(gr) {
                    return Xr(Kt + Ce * gr, pe + er * gr, Te + We * gr) + "";
                  };
                }
                n.interpolateRound = mf;
                function mf(gt, Ft) {
                  return Ft -= gt, function(Kt) {
                    return Math.round(gt + Ft * Kt);
                  };
                }
                n.transform = function(gt) {
                  var Ft = A.createElementNS(n.ns.prefix.svg, "g");
                  return (n.transform = function(Kt) {
                    if (Kt != null) {
                      Ft.setAttribute("transform", Kt);
                      var pe = Ft.transform.baseVal.consolidate();
                    }
                    return new xc(pe ? pe.matrix : jf);
                  })(gt);
                };
                function xc(gt) {
                  var Ft = [gt.a, gt.b], Kt = [gt.c, gt.d], pe = Vs(Ft), Te = Fc(Ft, Kt), Ce = Vs(Hs(Kt, Ft, -Te)) || 0;
                  Ft[0] * Kt[1] < Kt[0] * Ft[1] && (Ft[0] *= -1, Ft[1] *= -1, pe *= -1, Te *= -1), this.rotate = (pe ? Math.atan2(Ft[1], Ft[0]) : Math.atan2(-Kt[0], Kt[1])) * Me, this.translate = [gt.e, gt.f], this.scale = [pe, Ce], this.skew = Ce ? Math.atan2(Te, Ce) * Me : 0;
                }
                xc.prototype.toString = function() {
                  return "translate(" + this.translate + ")rotate(" + this.rotate + ")skewX(" + this.skew + ")scale(" + this.scale + ")";
                };
                function Fc(gt, Ft) {
                  return gt[0] * Ft[0] + gt[1] * Ft[1];
                }
                function Vs(gt) {
                  var Ft = Math.sqrt(Fc(gt, gt));
                  return Ft && (gt[0] /= Ft, gt[1] /= Ft), Ft;
                }
                function Hs(gt, Ft, Kt) {
                  return gt[0] += Kt * Ft[0], gt[1] += Kt * Ft[1], gt;
                }
                var jf = {
                  a: 1,
                  b: 0,
                  c: 0,
                  d: 1,
                  e: 0,
                  f: 0
                };
                n.interpolateTransform = Xf;
                function Tl(gt) {
                  return gt.length ? gt.pop() + "," : "";
                }
                function rd(gt, Ft, Kt, pe) {
                  if (gt[0] !== Ft[0] || gt[1] !== Ft[1]) {
                    var Te = Kt.push("translate(", null, ",", null, ")");
                    pe.push({
                      i: Te - 4,
                      x: yo(gt[0], Ft[0])
                    }, {
                      i: Te - 2,
                      x: yo(gt[1], Ft[1])
                    });
                  } else (Ft[0] || Ft[1]) && Kt.push("translate(" + Ft + ")");
                }
                function Zf(gt, Ft, Kt, pe) {
                  gt !== Ft ? (gt - Ft > 180 ? Ft += 360 : Ft - gt > 180 && (gt += 360), pe.push({
                    i: Kt.push(Tl(Kt) + "rotate(", null, ")") - 2,
                    x: yo(gt, Ft)
                  })) : Ft && Kt.push(Tl(Kt) + "rotate(" + Ft + ")");
                }
                function nd(gt, Ft, Kt, pe) {
                  gt !== Ft ? pe.push({
                    i: Kt.push(Tl(Kt) + "skewX(", null, ")") - 2,
                    x: yo(gt, Ft)
                  }) : Ft && Kt.push(Tl(Kt) + "skewX(" + Ft + ")");
                }
                function id(gt, Ft, Kt, pe) {
                  if (gt[0] !== Ft[0] || gt[1] !== Ft[1]) {
                    var Te = Kt.push(Tl(Kt) + "scale(", null, ",", null, ")");
                    pe.push({
                      i: Te - 4,
                      x: yo(gt[0], Ft[0])
                    }, {
                      i: Te - 2,
                      x: yo(gt[1], Ft[1])
                    });
                  } else (Ft[0] !== 1 || Ft[1] !== 1) && Kt.push(Tl(Kt) + "scale(" + Ft + ")");
                }
                function Xf(gt, Ft) {
                  var Kt = [], pe = [];
                  return gt = n.transform(gt), Ft = n.transform(Ft), rd(gt.translate, Ft.translate, Kt, pe), Zf(gt.rotate, Ft.rotate, Kt, pe), nd(gt.skew, Ft.skew, Kt, pe), id(gt.scale, Ft.scale, Kt, pe), gt = Ft = null, function(Te) {
                    for (var Ce = -1, er = pe.length, We; ++Ce < er; ) Kt[(We = pe[Ce]).i] = We.x(Te);
                    return Kt.join("");
                  };
                }
                function ql(gt, Ft) {
                  return Ft = (Ft -= gt = +gt) || 1 / Ft, function(Kt) {
                    return (Kt - gt) / Ft;
                  };
                }
                function Oc(gt, Ft) {
                  return Ft = (Ft -= gt = +gt) || 1 / Ft, function(Kt) {
                    return Math.max(0, Math.min(1, (Kt - gt) / Ft));
                  };
                }
                n.layout = {}, n.layout.bundle = function() {
                  return function(gt) {
                    for (var Ft = [], Kt = -1, pe = gt.length; ++Kt < pe; ) Ft.push(Yu(gt[Kt]));
                    return Ft;
                  };
                };
                function Yu(gt) {
                  for (var Ft = gt.source, Kt = gt.target, pe = Ku(Ft, Kt), Te = [Ft]; Ft !== pe; )
                    Ft = Ft.parent, Te.push(Ft);
                  for (var Ce = Te.length; Kt !== pe; )
                    Te.splice(Ce, 0, Kt), Kt = Kt.parent;
                  return Te;
                }
                function xf(gt) {
                  for (var Ft = [], Kt = gt.parent; Kt != null; )
                    Ft.push(gt), gt = Kt, Kt = Kt.parent;
                  return Ft.push(gt), Ft;
                }
                function Ku(gt, Ft) {
                  if (gt === Ft) return gt;
                  for (var Kt = xf(gt), pe = xf(Ft), Te = Kt.pop(), Ce = pe.pop(), er = null; Te === Ce; )
                    er = Te, Te = Kt.pop(), Ce = pe.pop();
                  return er;
                }
                n.layout.chord = function() {
                  var gt = {}, Ft, Kt, pe, Te, Ce = 0, er, We, gr;
                  function xr() {
                    var an = {}, on = [], Ln = n.range(Te), Hn = [], cn, xn, Pn, Yn, ti;
                    for (Ft = [], Kt = [], cn = 0, Yn = -1; ++Yn < Te; ) {
                      for (xn = 0, ti = -1; ++ti < Te; )
                        xn += pe[Yn][ti];
                      on.push(xn), Hn.push(n.range(Te)), cn += xn;
                    }
                    for (er && Ln.sort(function(Wa, ya) {
                      return er(on[Wa], on[ya]);
                    }), We && Hn.forEach(function(Wa, ya) {
                      Wa.sort(function(Oa, lo) {
                        return We(pe[ya][Oa], pe[ya][lo]);
                      });
                    }), cn = (St - Ce * Te) / cn, xn = 0, Yn = -1; ++Yn < Te; ) {
                      for (Pn = xn, ti = -1; ++ti < Te; ) {
                        var zn = Ln[Yn], Li = Hn[zn][ti], Xi = pe[zn][Li], oa = xn, ji = xn += Xi * cn;
                        an[zn + "-" + Li] = {
                          index: zn,
                          subindex: Li,
                          startAngle: oa,
                          endAngle: ji,
                          value: Xi
                        };
                      }
                      Kt[zn] = {
                        index: zn,
                        startAngle: Pn,
                        endAngle: xn,
                        value: on[zn]
                      }, xn += Ce;
                    }
                    for (Yn = -1; ++Yn < Te; )
                      for (ti = Yn - 1; ++ti < Te; ) {
                        var ea = an[Yn + "-" + ti], sa = an[ti + "-" + Yn];
                        (ea.value || sa.value) && Ft.push(ea.value < sa.value ? {
                          source: sa,
                          target: ea
                        } : {
                          source: ea,
                          target: sa
                        });
                      }
                    gr && kr();
                  }
                  function kr() {
                    Ft.sort(function(an, on) {
                      return gr((an.source.value + an.target.value) / 2, (on.source.value + on.target.value) / 2);
                    });
                  }
                  return gt.matrix = function(an) {
                    return arguments.length ? (Te = (pe = an) && pe.length, Ft = Kt = null, gt) : pe;
                  }, gt.padding = function(an) {
                    return arguments.length ? (Ce = an, Ft = Kt = null, gt) : Ce;
                  }, gt.sortGroups = function(an) {
                    return arguments.length ? (er = an, Ft = Kt = null, gt) : er;
                  }, gt.sortSubgroups = function(an) {
                    return arguments.length ? (We = an, Ft = null, gt) : We;
                  }, gt.sortChords = function(an) {
                    return arguments.length ? (gr = an, Ft && kr(), gt) : gr;
                  }, gt.chords = function() {
                    return Ft || xr(), Ft;
                  }, gt.groups = function() {
                    return Kt || xr(), Kt;
                  }, gt;
                }, n.layout.force = function() {
                  var gt = {}, Ft = n.dispatch("start", "tick", "end"), Kt, pe = [1, 1], Te, Ce, er = 0.9, We = bc, gr = Ho, xr = -30, kr = Yf, an = 0.1, on = 0.64, Ln = [], Hn = [], cn, xn, Pn;
                  function Yn(zn) {
                    return function(Li, Xi, oa, ji) {
                      if (Li.point !== zn) {
                        var ea = Li.cx - zn.x, sa = Li.cy - zn.y, Wa = ji - Xi, ya = ea * ea + sa * sa;
                        if (Wa * Wa / on < ya) {
                          if (ya < kr) {
                            var Oa = Li.charge / ya;
                            zn.px -= ea * Oa, zn.py -= sa * Oa;
                          }
                          return !0;
                        }
                        if (Li.point && ya && ya < kr) {
                          var Oa = Li.pointCharge / ya;
                          zn.px -= ea * Oa, zn.py -= sa * Oa;
                        }
                      }
                      return !Li.charge;
                    };
                  }
                  gt.tick = function() {
                    if ((Ce *= 0.99) < 5e-3)
                      return Kt = null, Ft.end({
                        type: "end",
                        alpha: Ce = 0
                      }), !0;
                    var zn = Ln.length, Li = Hn.length, Xi, oa, ji, ea, sa, Wa, ya, Oa, lo;
                    for (oa = 0; oa < Li; ++oa)
                      ji = Hn[oa], ea = ji.source, sa = ji.target, Oa = sa.x - ea.x, lo = sa.y - ea.y, (Wa = Oa * Oa + lo * lo) && (Wa = Ce * xn[oa] * ((Wa = Math.sqrt(Wa)) - cn[oa]) / Wa, Oa *= Wa, lo *= Wa, sa.x -= Oa * (ya = ea.weight + sa.weight ? ea.weight / (ea.weight + sa.weight) : 0.5), sa.y -= lo * ya, ea.x += Oa * (ya = 1 - ya), ea.y += lo * ya);
                    if ((ya = Ce * an) && (Oa = pe[0] / 2, lo = pe[1] / 2, oa = -1, ya))
                      for (; ++oa < zn; )
                        ji = Ln[oa], ji.x += (Oa - ji.x) * ya, ji.y += (lo - ji.y) * ya;
                    if (xr)
                      for (ls(Xi = n.geom.quadtree(Ln), Ce, Pn), oa = -1; ++oa < zn; )
                        (ji = Ln[oa]).fixed || Xi.visit(Yn(ji));
                    for (oa = -1; ++oa < zn; )
                      ji = Ln[oa], ji.fixed ? (ji.x = ji.px, ji.y = ji.py) : (ji.x -= (ji.px - (ji.px = ji.x)) * er, ji.y -= (ji.py - (ji.py = ji.y)) * er);
                    Ft.tick({
                      type: "tick",
                      alpha: Ce
                    });
                  }, gt.nodes = function(zn) {
                    return arguments.length ? (Ln = zn, gt) : Ln;
                  }, gt.links = function(zn) {
                    return arguments.length ? (Hn = zn, gt) : Hn;
                  }, gt.size = function(zn) {
                    return arguments.length ? (pe = zn, gt) : pe;
                  }, gt.linkDistance = function(zn) {
                    return arguments.length ? (We = typeof zn == "function" ? zn : +zn, gt) : We;
                  }, gt.distance = gt.linkDistance, gt.linkStrength = function(zn) {
                    return arguments.length ? (gr = typeof zn == "function" ? zn : +zn, gt) : gr;
                  }, gt.friction = function(zn) {
                    return arguments.length ? (er = +zn, gt) : er;
                  }, gt.charge = function(zn) {
                    return arguments.length ? (xr = typeof zn == "function" ? zn : +zn, gt) : xr;
                  }, gt.chargeDistance = function(zn) {
                    return arguments.length ? (kr = zn * zn, gt) : Math.sqrt(kr);
                  }, gt.gravity = function(zn) {
                    return arguments.length ? (an = +zn, gt) : an;
                  }, gt.theta = function(zn) {
                    return arguments.length ? (on = zn * zn, gt) : Math.sqrt(on);
                  }, gt.alpha = function(zn) {
                    return arguments.length ? (zn = +zn, Ce ? zn > 0 ? Ce = zn : (Kt.c = null, Kt.t = NaN, Kt = null, Ft.end({
                      type: "end",
                      alpha: Ce = 0
                    })) : zn > 0 && (Ft.start({
                      type: "start",
                      alpha: Ce = zn
                    }), Kt = qn(gt.tick)), gt) : Ce;
                  }, gt.start = function() {
                    var zn, Li = Ln.length, Xi = Hn.length, oa = pe[0], ji = pe[1], ea, sa;
                    for (zn = 0; zn < Li; ++zn)
                      (sa = Ln[zn]).index = zn, sa.weight = 0;
                    for (zn = 0; zn < Xi; ++zn)
                      sa = Hn[zn], typeof sa.source == "number" && (sa.source = Ln[sa.source]), typeof sa.target == "number" && (sa.target = Ln[sa.target]), ++sa.source.weight, ++sa.target.weight;
                    for (zn = 0; zn < Li; ++zn)
                      sa = Ln[zn], isNaN(sa.x) && (sa.x = Wa("x", oa)), isNaN(sa.y) && (sa.y = Wa("y", ji)), isNaN(sa.px) && (sa.px = sa.x), isNaN(sa.py) && (sa.py = sa.y);
                    if (cn = [], typeof We == "function") for (zn = 0; zn < Xi; ++zn) cn[zn] = +We.call(this, Hn[zn], zn);
                    else for (zn = 0; zn < Xi; ++zn) cn[zn] = We;
                    if (xn = [], typeof gr == "function") for (zn = 0; zn < Xi; ++zn) xn[zn] = +gr.call(this, Hn[zn], zn);
                    else for (zn = 0; zn < Xi; ++zn) xn[zn] = gr;
                    if (Pn = [], typeof xr == "function") for (zn = 0; zn < Li; ++zn) Pn[zn] = +xr.call(this, Ln[zn], zn);
                    else for (zn = 0; zn < Li; ++zn) Pn[zn] = xr;
                    function Wa(ya, Oa) {
                      if (!ea) {
                        for (ea = new Array(Li), Po = 0; Po < Li; ++Po)
                          ea[Po] = [];
                        for (Po = 0; Po < Xi; ++Po) {
                          var lo = Hn[Po];
                          ea[lo.source.index].push(lo.target), ea[lo.target.index].push(lo.source);
                        }
                      }
                      for (var Go = ea[zn], Po = -1, Ui = Go.length, Ba; ++Po < Ui; ) if (!isNaN(Ba = Go[Po][ya])) return Ba;
                      return Math.random() * Oa;
                    }
                    return gt.resume();
                  }, gt.resume = function() {
                    return gt.alpha(0.1);
                  }, gt.stop = function() {
                    return gt.alpha(0);
                  }, gt.drag = function() {
                    if (Te || (Te = n.behavior.drag().origin(V).on("dragstart.force", cu).on("drag.force", ti).on("dragend.force", Sh)), !arguments.length) return Te;
                    this.on("mouseover.force", Bc).on("mouseout.force", Js).call(Te);
                  };
                  function ti(zn) {
                    zn.px = n.event.x, zn.py = n.event.y, gt.resume();
                  }
                  return n.rebind(gt, Ft, "on");
                };
                function cu(gt) {
                  gt.fixed |= 2;
                }
                function Sh(gt) {
                  gt.fixed &= -7;
                }
                function Bc(gt) {
                  gt.fixed |= 4, gt.px = gt.x, gt.py = gt.y;
                }
                function Js(gt) {
                  gt.fixed &= -5;
                }
                function ls(gt, Ft, Kt) {
                  var pe = 0, Te = 0;
                  if (gt.charge = 0, !gt.leaf)
                    for (var Ce = gt.nodes, er = Ce.length, We = -1, gr; ++We < er; )
                      gr = Ce[We], gr != null && (ls(gr, Ft, Kt), gt.charge += gr.charge, pe += gr.charge * gr.cx, Te += gr.charge * gr.cy);
                  if (gt.point) {
                    gt.leaf || (gt.point.x += Math.random() - 0.5, gt.point.y += Math.random() - 0.5);
                    var xr = Ft * Kt[gt.point.index];
                    gt.charge += gt.pointCharge = xr, pe += xr * gt.point.x, Te += xr * gt.point.y;
                  }
                  gt.cx = pe / gt.charge, gt.cy = Te / gt.charge;
                }
                var bc = 20, Ho = 1, Yf = 1 / 0;
                n.layout.hierarchy = function() {
                  var gt = Hc, Ft = Vc, Kt = Cu;
                  function pe(Te) {
                    var Ce = [Te], er = [], We;
                    for (Te.depth = 0; (We = Ce.pop()) != null; )
                      if (er.push(We), (xr = Ft.call(pe, We, We.depth)) && (gr = xr.length)) {
                        for (var gr, xr, kr; --gr >= 0; )
                          Ce.push(kr = xr[gr]), kr.parent = We, kr.depth = We.depth + 1;
                        Kt && (We.value = 0), We.children = xr;
                      } else
                        Kt && (We.value = +Kt.call(pe, We, We.depth) || 0), delete We.children;
                    return Gs(Te, function(an) {
                      var on, Ln;
                      gt && (on = an.children) && on.sort(gt), Kt && (Ln = an.parent) && (Ln.value += an.value);
                    }), er;
                  }
                  return pe.sort = function(Te) {
                    return arguments.length ? (gt = Te, pe) : gt;
                  }, pe.children = function(Te) {
                    return arguments.length ? (Ft = Te, pe) : Ft;
                  }, pe.value = function(Te) {
                    return arguments.length ? (Kt = Te, pe) : Kt;
                  }, pe.revalue = function(Te) {
                    return Kt && (Uc(Te, function(Ce) {
                      Ce.children && (Ce.value = 0);
                    }), Gs(Te, function(Ce) {
                      var er;
                      Ce.children || (Ce.value = +Kt.call(pe, Ce, Ce.depth) || 0), (er = Ce.parent) && (er.value += Ce.value);
                    })), Te;
                  }, pe;
                };
                function Nc(gt, Ft) {
                  return n.rebind(gt, Ft, "sort", "children", "value"), gt.nodes = gt, gt.links = Mh, gt;
                }
                function Uc(gt, Ft) {
                  for (var Kt = [gt]; (gt = Kt.pop()) != null; )
                    if (Ft(gt), (Te = gt.children) && (pe = Te.length))
                      for (var pe, Te; --pe >= 0; ) Kt.push(Te[pe]);
                }
                function Gs(gt, Ft) {
                  for (var Kt = [gt], pe = []; (gt = Kt.pop()) != null; )
                    if (pe.push(gt), (er = gt.children) && (Ce = er.length))
                      for (var Te = -1, Ce, er; ++Te < Ce; ) Kt.push(er[Te]);
                  for (; (gt = pe.pop()) != null; )
                    Ft(gt);
                }
                function Vc(gt) {
                  return gt.children;
                }
                function Cu(gt) {
                  return gt.value;
                }
                function Hc(gt, Ft) {
                  return Ft.value - gt.value;
                }
                function Mh(gt) {
                  return n.merge(gt.map(function(Ft) {
                    return (Ft.children || []).map(function(Kt) {
                      return {
                        source: Ft,
                        target: Kt
                      };
                    });
                  }));
                }
                n.layout.partition = function() {
                  var gt = n.layout.hierarchy(), Ft = [1, 1];
                  function Kt(Ce, er, We, gr) {
                    var xr = Ce.children;
                    if (Ce.x = er, Ce.y = Ce.depth * gr, Ce.dx = We, Ce.dy = gr, xr && (an = xr.length)) {
                      var kr = -1, an, on, Ln;
                      for (We = Ce.value ? We / Ce.value : 0; ++kr < an; )
                        Kt(on = xr[kr], er, Ln = on.value * We, gr), er += Ln;
                    }
                  }
                  function pe(Ce) {
                    var er = Ce.children, We = 0;
                    if (er && (xr = er.length))
                      for (var gr = -1, xr; ++gr < xr; ) We = Math.max(We, pe(er[gr]));
                    return 1 + We;
                  }
                  function Te(Ce, er) {
                    var We = gt.call(this, Ce, er);
                    return Kt(We[0], 0, Ft[0], Ft[1] / pe(We[0])), We;
                  }
                  return Te.size = function(Ce) {
                    return arguments.length ? (Ft = Ce, Te) : Ft;
                  }, Nc(Te, gt);
                }, n.layout.pie = function() {
                  var gt = Number, Ft = Al, Kt = 0, pe = St, Te = 0;
                  function Ce(er) {
                    var We = er.length, gr = er.map(function(Yn, ti) {
                      return +gt.call(Ce, Yn, ti);
                    }), xr = +(typeof Kt == "function" ? Kt.apply(this, arguments) : Kt), kr = (typeof pe == "function" ? pe.apply(this, arguments) : pe) - xr, an = Math.min(Math.abs(kr) / We, +(typeof Te == "function" ? Te.apply(this, arguments) : Te)), on = an * (kr < 0 ? -1 : 1), Ln = n.sum(gr), Hn = Ln ? (kr - We * on) / Ln : 0, cn = n.range(We), xn = [], Pn;
                    return Ft != null && cn.sort(Ft === Al ? function(Yn, ti) {
                      return gr[ti] - gr[Yn];
                    } : function(Yn, ti) {
                      return Ft(er[Yn], er[ti]);
                    }), cn.forEach(function(Yn) {
                      xn[Yn] = {
                        data: er[Yn],
                        value: Pn = gr[Yn],
                        startAngle: xr,
                        endAngle: xr += Pn * Hn + on,
                        padAngle: an
                      };
                    }), xn;
                  }
                  return Ce.value = function(er) {
                    return arguments.length ? (gt = er, Ce) : gt;
                  }, Ce.sort = function(er) {
                    return arguments.length ? (Ft = er, Ce) : Ft;
                  }, Ce.startAngle = function(er) {
                    return arguments.length ? (Kt = er, Ce) : Kt;
                  }, Ce.endAngle = function(er) {
                    return arguments.length ? (pe = er, Ce) : pe;
                  }, Ce.padAngle = function(er) {
                    return arguments.length ? (Te = er, Ce) : Te;
                  }, Ce;
                };
                var Al = {};
                n.layout.stack = function() {
                  var gt = V, Ft = jc, Kt = Ju, pe = Ch, Te = Eh, Ce = Gc;
                  function er(We, gr) {
                    if (!(Hn = We.length)) return We;
                    var xr = We.map(function(Yn, ti) {
                      return gt.call(er, Yn, ti);
                    }), kr = xr.map(function(Yn) {
                      return Yn.map(function(ti, zn) {
                        return [Te.call(er, ti, zn), Ce.call(er, ti, zn)];
                      });
                    }), an = Ft.call(er, kr, gr);
                    xr = n.permute(xr, an), kr = n.permute(kr, an);
                    var on = Kt.call(er, kr, gr), Ln = xr[0].length, Hn, cn, xn, Pn;
                    for (xn = 0; xn < Ln; ++xn)
                      for (pe.call(er, xr[0][xn], Pn = on[xn], kr[0][xn][1]), cn = 1; cn < Hn; ++cn)
                        pe.call(er, xr[cn][xn], Pn += kr[cn - 1][xn][1], kr[cn][xn][1]);
                    return We;
                  }
                  return er.values = function(We) {
                    return arguments.length ? (gt = We, er) : gt;
                  }, er.order = function(We) {
                    return arguments.length ? (Ft = typeof We == "function" ? We : Wc.get(We) || jc, er) : Ft;
                  }, er.offset = function(We) {
                    return arguments.length ? (Kt = typeof We == "function" ? We : Kf.get(We) || Ju, er) : Kt;
                  }, er.x = function(We) {
                    return arguments.length ? (Te = We, er) : Te;
                  }, er.y = function(We) {
                    return arguments.length ? (Ce = We, er) : Ce;
                  }, er.out = function(We) {
                    return arguments.length ? (pe = We, er) : pe;
                  }, er;
                };
                function Eh(gt) {
                  return gt.x;
                }
                function Gc(gt) {
                  return gt.y;
                }
                function Ch(gt, Ft, Kt) {
                  gt.y0 = Ft, gt.y = Kt;
                }
                var Wc = n.map({
                  "inside-out": function(gt) {
                    var Ft = gt.length, Kt, pe, Te = gt.map(Ro), Ce = gt.map(ad), er = n.range(Ft).sort(function(an, on) {
                      return Te[an] - Te[on];
                    }), We = 0, gr = 0, xr = [], kr = [];
                    for (Kt = 0; Kt < Ft; ++Kt)
                      pe = er[Kt], We < gr ? (We += Ce[pe], xr.push(pe)) : (gr += Ce[pe], kr.push(pe));
                    return kr.reverse().concat(xr);
                  },
                  reverse: function(gt) {
                    return n.range(gt.length).reverse();
                  },
                  default: jc
                }), Kf = n.map({
                  silhouette: function(gt) {
                    var Ft = gt.length, Kt = gt[0].length, pe = [], Te = 0, Ce, er, We, gr = [];
                    for (er = 0; er < Kt; ++er) {
                      for (Ce = 0, We = 0; Ce < Ft; Ce++) We += gt[Ce][er][1];
                      We > Te && (Te = We), pe.push(We);
                    }
                    for (er = 0; er < Kt; ++er)
                      gr[er] = (Te - pe[er]) / 2;
                    return gr;
                  },
                  wiggle: function(gt) {
                    var Ft = gt.length, Kt = gt[0], pe = Kt.length, Te, Ce, er, We, gr, xr, kr, an, on, Ln = [];
                    for (Ln[0] = an = on = 0, Ce = 1; Ce < pe; ++Ce) {
                      for (Te = 0, We = 0; Te < Ft; ++Te) We += gt[Te][Ce][1];
                      for (Te = 0, gr = 0, kr = Kt[Ce][0] - Kt[Ce - 1][0]; Te < Ft; ++Te) {
                        for (er = 0, xr = (gt[Te][Ce][1] - gt[Te][Ce - 1][1]) / (2 * kr); er < Te; ++er)
                          xr += (gt[er][Ce][1] - gt[er][Ce - 1][1]) / kr;
                        gr += xr * gt[Te][Ce][1];
                      }
                      Ln[Ce] = an -= We ? gr / We * kr : 0, an < on && (on = an);
                    }
                    for (Ce = 0; Ce < pe; ++Ce) Ln[Ce] -= on;
                    return Ln;
                  },
                  expand: function(gt) {
                    var Ft = gt.length, Kt = gt[0].length, pe = 1 / Ft, Te, Ce, er, We = [];
                    for (Ce = 0; Ce < Kt; ++Ce) {
                      for (Te = 0, er = 0; Te < Ft; Te++) er += gt[Te][Ce][1];
                      if (er) for (Te = 0; Te < Ft; Te++) gt[Te][Ce][1] /= er;
                      else for (Te = 0; Te < Ft; Te++) gt[Te][Ce][1] = pe;
                    }
                    for (Ce = 0; Ce < Kt; ++Ce) We[Ce] = 0;
                    return We;
                  },
                  zero: Ju
                });
                function jc(gt) {
                  return n.range(gt.length);
                }
                function Ju(gt) {
                  for (var Ft = -1, Kt = gt[0].length, pe = []; ++Ft < Kt; ) pe[Ft] = 0;
                  return pe;
                }
                function Ro(gt) {
                  for (var Ft = 1, Kt = 0, pe = gt[0][1], Te, Ce = gt.length; Ft < Ce; ++Ft)
                    (Te = gt[Ft][1]) > pe && (Kt = Ft, pe = Te);
                  return Kt;
                }
                function ad(gt) {
                  return gt.reduce(tu, 0);
                }
                function tu(gt, Ft) {
                  return gt + Ft[1];
                }
                n.layout.histogram = function() {
                  var gt = !0, Ft = Number, Kt = Sl, pe = bf;
                  function Te(Ce, on) {
                    for (var We = [], gr = Ce.map(Ft, this), xr = Kt.call(this, gr, on), kr = pe.call(this, xr, gr, on), an, on = -1, Ln = gr.length, Hn = kr.length - 1, cn = gt ? 1 : 1 / Ln, xn; ++on < Hn; )
                      an = We[on] = [], an.dx = kr[on + 1] - (an.x = kr[on]), an.y = 0;
                    if (Hn > 0)
                      for (on = -1; ++on < Ln; )
                        xn = gr[on], xn >= xr[0] && xn <= xr[1] && (an = We[n.bisect(kr, xn, 1, Hn) - 1], an.y += cn, an.push(Ce[on]));
                    return We;
                  }
                  return Te.value = function(Ce) {
                    return arguments.length ? (Ft = Ce, Te) : Ft;
                  }, Te.range = function(Ce) {
                    return arguments.length ? (Kt = fn(Ce), Te) : Kt;
                  }, Te.bins = function(Ce) {
                    return arguments.length ? (pe = typeof Ce == "number" ? function(er) {
                      return Jf(er, Ce);
                    } : fn(Ce), Te) : pe;
                  }, Te.frequency = function(Ce) {
                    return arguments.length ? (gt = !!Ce, Te) : gt;
                  }, Te;
                };
                function bf(gt, Ft) {
                  return Jf(gt, Math.ceil(Math.log(Ft.length) / Math.LN2 + 1));
                }
                function Jf(gt, Ft) {
                  for (var Kt = -1, pe = +gt[0], Te = (gt[1] - pe) / Ft, Ce = []; ++Kt <= Ft; ) Ce[Kt] = Te * Kt + pe;
                  return Ce;
                }
                function Sl(gt) {
                  return [n.min(gt), n.max(gt)];
                }
                n.layout.pack = function() {
                  var gt = n.layout.hierarchy().sort(Qu), Ft = 0, Kt = [1, 1], pe;
                  function Te(Ce, er) {
                    var We = gt.call(this, Ce, er), gr = We[0], xr = Kt[0], kr = Kt[1], an = pe == null ? Math.sqrt : typeof pe == "function" ? pe : function() {
                      return pe;
                    };
                    if (gr.x = gr.y = 0, Gs(gr, function(Ln) {
                      Ln.r = +an(Ln.value);
                    }), Gs(gr, Nl), Ft) {
                      var on = Ft * (pe ? 1 : Math.max(2 * gr.r / xr, 2 * gr.r / kr)) / 2;
                      Gs(gr, function(Ln) {
                        Ln.r += on;
                      }), Gs(gr, Nl), Gs(gr, function(Ln) {
                        Ln.r -= on;
                      });
                    }
                    return Lu(gr, xr / 2, kr / 2, pe ? 1 : 1 / Math.max(2 * gr.r / xr, 2 * gr.r / kr)), We;
                  }
                  return Te.size = function(Ce) {
                    return arguments.length ? (Kt = Ce, Te) : Kt;
                  }, Te.radius = function(Ce) {
                    return arguments.length ? (pe = Ce == null || typeof Ce == "function" ? Ce : +Ce, Te) : pe;
                  }, Te.padding = function(Ce) {
                    return arguments.length ? (Ft = +Ce, Te) : Ft;
                  }, Nc(Te, gt);
                };
                function Qu(gt, Ft) {
                  return gt.value - Ft.value;
                }
                function wf(gt, Ft) {
                  var Kt = gt._pack_next;
                  gt._pack_next = Ft, Ft._pack_prev = gt, Ft._pack_next = Kt, Kt._pack_prev = Ft;
                }
                function vs(gt, Ft) {
                  gt._pack_next = Ft, Ft._pack_prev = gt;
                }
                function _f(gt, Ft) {
                  var Kt = Ft.x - gt.x, pe = Ft.y - gt.y, Te = gt.r + Ft.r;
                  return 0.999 * Te * Te > Kt * Kt + pe * pe;
                }
                function Nl(gt) {
                  if (!(Ft = gt.children) || !(on = Ft.length)) return;
                  var Ft, Kt = 1 / 0, pe = -1 / 0, Te = 1 / 0, Ce = -1 / 0, er, We, gr, xr, kr, an, on;
                  function Ln(zn) {
                    Kt = Math.min(zn.x - zn.r, Kt), pe = Math.max(zn.x + zn.r, pe), Te = Math.min(zn.y - zn.r, Te), Ce = Math.max(zn.y + zn.r, Ce);
                  }
                  if (Ft.forEach(eu), er = Ft[0], er.x = -er.r, er.y = 0, Ln(er), on > 1 && (We = Ft[1], We.x = We.r, We.y = 0, Ln(We), on > 2))
                    for (gr = Ft[2], ru(er, We, gr), Ln(gr), wf(er, gr), er._pack_prev = gr, wf(gr, We), We = er._pack_next, xr = 3; xr < on; xr++) {
                      ru(er, We, gr = Ft[xr]);
                      var Hn = 0, cn = 1, xn = 1;
                      for (kr = We._pack_next; kr !== We; kr = kr._pack_next, cn++)
                        if (_f(kr, gr)) {
                          Hn = 1;
                          break;
                        }
                      if (Hn == 1)
                        for (an = er._pack_prev; an !== kr._pack_prev && !_f(an, gr); an = an._pack_prev, xn++)
                          ;
                      Hn ? (cn < xn || cn == xn && We.r < er.r ? vs(er, We = kr) : vs(er = an, We), xr--) : (wf(er, gr), We = gr, Ln(gr));
                    }
                  var Pn = (Kt + pe) / 2, Yn = (Te + Ce) / 2, ti = 0;
                  for (xr = 0; xr < on; xr++)
                    gr = Ft[xr], gr.x -= Pn, gr.y -= Yn, ti = Math.max(ti, gr.r + Math.sqrt(gr.x * gr.x + gr.y * gr.y));
                  gt.r = ti, Ft.forEach($u);
                }
                function eu(gt) {
                  gt._pack_next = gt._pack_prev = gt;
                }
                function $u(gt) {
                  delete gt._pack_next, delete gt._pack_prev;
                }
                function Lu(gt, Ft, Kt, pe) {
                  var Te = gt.children;
                  if (gt.x = Ft += pe * gt.x, gt.y = Kt += pe * gt.y, gt.r *= pe, Te)
                    for (var Ce = -1, er = Te.length; ++Ce < er; ) Lu(Te[Ce], Ft, Kt, pe);
                }
                function ru(gt, Ft, Kt) {
                  var pe = gt.r + Kt.r, Te = Ft.x - gt.x, Ce = Ft.y - gt.y;
                  if (pe && (Te || Ce)) {
                    var er = Ft.r + Kt.r, We = Te * Te + Ce * Ce;
                    er *= er, pe *= pe;
                    var gr = 0.5 + (pe - er) / (2 * We), xr = Math.sqrt(Math.max(0, 2 * er * (pe + We) - (pe -= We) * pe - er * er)) / (2 * We);
                    Kt.x = gt.x + gr * Te + xr * Ce, Kt.y = gt.y + gr * Ce - xr * Te;
                  } else
                    Kt.x = gt.x + pe, Kt.y = gt.y;
                }
                n.layout.tree = function() {
                  var gt = n.layout.hierarchy().sort(null).value(null), Ft = nu, Kt = [1, 1], pe = null;
                  function Te(kr, an) {
                    var on = gt.call(this, kr, an), Ln = on[0], Hn = Ce(Ln);
                    if (Gs(Hn, er), Hn.parent.m = -Hn.z, Uc(Hn, We), pe) Uc(Ln, xr);
                    else {
                      var cn = Ln, xn = Ln, Pn = Ln;
                      Uc(Ln, function(Li) {
                        Li.x < cn.x && (cn = Li), Li.x > xn.x && (xn = Li), Li.depth > Pn.depth && (Pn = Li);
                      });
                      var Yn = Ft(cn, xn) / 2 - cn.x, ti = Kt[0] / (xn.x + Ft(xn, cn) / 2 + Yn), zn = Kt[1] / (Pn.depth || 1);
                      Uc(Ln, function(Li) {
                        Li.x = (Li.x + Yn) * ti, Li.y = Li.depth * zn;
                      });
                    }
                    return on;
                  }
                  function Ce(kr) {
                    for (var an = {
                      A: null,
                      children: [kr]
                    }, on = [an], Ln; (Ln = on.pop()) != null; )
                      for (var Hn = Ln.children, cn, xn = 0, Pn = Hn.length; xn < Pn; ++xn)
                        on.push((Hn[xn] = cn = {
                          _: Hn[xn],
                          parent: Ln,
                          children: (cn = Hn[xn].children) && cn.slice() || [],
                          A: null,
                          a: null,
                          z: 0,
                          m: 0,
                          c: 0,
                          s: 0,
                          t: null,
                          i: xn
                        }).a = cn);
                    return an.children[0];
                  }
                  function er(kr) {
                    var an = kr.children, on = kr.parent.children, Ln = kr.i ? on[kr.i - 1] : null;
                    if (an.length) {
                      wc(kr);
                      var Hn = (an[0].z + an[an.length - 1].z) / 2;
                      Ln ? (kr.z = Ln.z + Ft(kr._, Ln._), kr.m = kr.z - Hn) : kr.z = Hn;
                    } else Ln && (kr.z = Ln.z + Ft(kr._, Ln._));
                    kr.parent.A = gr(kr, Ln, kr.parent.A || on[0]);
                  }
                  function We(kr) {
                    kr._.x = kr.z + kr.parent.m, kr.m += kr.parent.m;
                  }
                  function gr(kr, an, on) {
                    if (an) {
                      for (var Ln = kr, Hn = kr, cn = an, xn = Ln.parent.children[0], Pn = Ln.m, Yn = Hn.m, ti = cn.m, zn = xn.m, Li; cn = Ml(cn), Ln = Ul(Ln), cn && Ln; )
                        xn = Ul(xn), Hn = Ml(Hn), Hn.a = kr, Li = cn.z + ti - Ln.z - Pn + Ft(cn._, Ln._), Li > 0 && (Tf(od(cn, kr, on), kr, Li), Pn += Li, Yn += Li), ti += cn.m, Pn += Ln.m, zn += xn.m, Yn += Hn.m;
                      cn && !Ml(Hn) && (Hn.t = cn, Hn.m += ti - Yn), Ln && !Ul(xn) && (xn.t = Ln, xn.m += Pn - zn, on = kr);
                    }
                    return on;
                  }
                  function xr(kr) {
                    kr.x *= Kt[0], kr.y = kr.depth * Kt[1];
                  }
                  return Te.separation = function(kr) {
                    return arguments.length ? (Ft = kr, Te) : Ft;
                  }, Te.size = function(kr) {
                    return arguments.length ? (pe = (Kt = kr) == null ? xr : null, Te) : pe ? null : Kt;
                  }, Te.nodeSize = function(kr) {
                    return arguments.length ? (pe = (Kt = kr) == null ? null : xr, Te) : pe ? Kt : null;
                  }, Nc(Te, gt);
                };
                function nu(gt, Ft) {
                  return gt.parent == Ft.parent ? 1 : 2;
                }
                function Ul(gt) {
                  var Ft = gt.children;
                  return Ft.length ? Ft[0] : gt.t;
                }
                function Ml(gt) {
                  var Ft = gt.children, Kt;
                  return (Kt = Ft.length) ? Ft[Kt - 1] : gt.t;
                }
                function Tf(gt, Ft, Kt) {
                  var pe = Kt / (Ft.i - gt.i);
                  Ft.c -= pe, Ft.s += Kt, gt.c += pe, Ft.z += Kt, Ft.m += Kt;
                }
                function wc(gt) {
                  for (var Ft = 0, Kt = 0, pe = gt.children, Te = pe.length, Ce; --Te >= 0; )
                    Ce = pe[Te], Ce.z += Ft, Ce.m += Ft, Ft += Ce.s + (Kt += Ce.c);
                }
                function od(gt, Ft, Kt) {
                  return gt.a.parent === Ft.parent ? gt.a : Kt;
                }
                n.layout.cluster = function() {
                  var gt = n.layout.hierarchy().sort(null).value(null), Ft = nu, Kt = [1, 1], pe = !1;
                  function Te(Ce, er) {
                    var We = gt.call(this, Ce, er), gr = We[0], xr, kr = 0;
                    Gs(gr, function(cn) {
                      var xn = cn.children;
                      xn && xn.length ? (cn.x = kd(xn), cn.y = Dd(xn)) : (cn.x = xr ? kr += Ft(cn, xr) : 0, cn.y = 0, xr = cn);
                    });
                    var an = Qf(gr), on = Zc(gr), Ln = an.x - Ft(an, on) / 2, Hn = on.x + Ft(on, an) / 2;
                    return Gs(gr, pe ? function(cn) {
                      cn.x = (cn.x - gr.x) * Kt[0], cn.y = (gr.y - cn.y) * Kt[1];
                    } : function(cn) {
                      cn.x = (cn.x - Ln) / (Hn - Ln) * Kt[0], cn.y = (1 - (gr.y ? cn.y / gr.y : 1)) * Kt[1];
                    }), We;
                  }
                  return Te.separation = function(Ce) {
                    return arguments.length ? (Ft = Ce, Te) : Ft;
                  }, Te.size = function(Ce) {
                    return arguments.length ? (pe = (Kt = Ce) == null, Te) : pe ? null : Kt;
                  }, Te.nodeSize = function(Ce) {
                    return arguments.length ? (pe = (Kt = Ce) != null, Te) : pe ? Kt : null;
                  }, Nc(Te, gt);
                };
                function Dd(gt) {
                  return 1 + n.max(gt, function(Ft) {
                    return Ft.y;
                  });
                }
                function kd(gt) {
                  return gt.reduce(function(Ft, Kt) {
                    return Ft + Kt.x;
                  }, 0) / gt.length;
                }
                function Qf(gt) {
                  var Ft = gt.children;
                  return Ft && Ft.length ? Qf(Ft[0]) : gt;
                }
                function Zc(gt) {
                  var Ft = gt.children, Kt;
                  return Ft && (Kt = Ft.length) ? Zc(Ft[Kt - 1]) : gt;
                }
                n.layout.treemap = function() {
                  var gt = n.layout.hierarchy(), Ft = Math.round, Kt = [1, 1], pe = null, Te = Xc, Ce = !1, er, We = "squarify", gr = 0.5 * (1 + Math.sqrt(5));
                  function xr(cn, xn) {
                    for (var Pn = -1, Yn = cn.length, ti, zn; ++Pn < Yn; )
                      zn = (ti = cn[Pn]).value * (xn < 0 ? 0 : xn), ti.area = isNaN(zn) || zn <= 0 ? 0 : zn;
                  }
                  function kr(cn) {
                    var xn = cn.children;
                    if (xn && xn.length) {
                      var Pn = Te(cn), Yn = [], ti = xn.slice(), zn, Li = 1 / 0, Xi, oa = We === "slice" ? Pn.dx : We === "dice" ? Pn.dy : We === "slice-dice" ? cn.depth & 1 ? Pn.dy : Pn.dx : Math.min(Pn.dx, Pn.dy), ji;
                      for (xr(ti, Pn.dx * Pn.dy / cn.value), Yn.area = 0; (ji = ti.length) > 0; )
                        Yn.push(zn = ti[ji - 1]), Yn.area += zn.area, We !== "squarify" || (Xi = on(Yn, oa)) <= Li ? (ti.pop(), Li = Xi) : (Yn.area -= Yn.pop().area, Ln(Yn, oa, Pn, !1), oa = Math.min(Pn.dx, Pn.dy), Yn.length = Yn.area = 0, Li = 1 / 0);
                      Yn.length && (Ln(Yn, oa, Pn, !0), Yn.length = Yn.area = 0), xn.forEach(kr);
                    }
                  }
                  function an(cn) {
                    var xn = cn.children;
                    if (xn && xn.length) {
                      var Pn = Te(cn), Yn = xn.slice(), ti, zn = [];
                      for (xr(Yn, Pn.dx * Pn.dy / cn.value), zn.area = 0; ti = Yn.pop(); )
                        zn.push(ti), zn.area += ti.area, ti.z != null && (Ln(zn, ti.z ? Pn.dx : Pn.dy, Pn, !Yn.length), zn.length = zn.area = 0);
                      xn.forEach(an);
                    }
                  }
                  function on(cn, xn) {
                    for (var Pn = cn.area, Yn, ti = 0, zn = 1 / 0, Li = -1, Xi = cn.length; ++Li < Xi; )
                      (Yn = cn[Li].area) && (Yn < zn && (zn = Yn), Yn > ti && (ti = Yn));
                    return Pn *= Pn, xn *= xn, Pn ? Math.max(xn * ti * gr / Pn, Pn / (xn * zn * gr)) : 1 / 0;
                  }
                  function Ln(cn, xn, Pn, Yn) {
                    var ti = -1, zn = cn.length, Li = Pn.x, Xi = Pn.y, oa = xn ? Ft(cn.area / xn) : 0, ji;
                    if (xn == Pn.dx) {
                      for ((Yn || oa > Pn.dy) && (oa = Pn.dy); ++ti < zn; )
                        ji = cn[ti], ji.x = Li, ji.y = Xi, ji.dy = oa, Li += ji.dx = Math.min(Pn.x + Pn.dx - Li, oa ? Ft(ji.area / oa) : 0);
                      ji.z = !0, ji.dx += Pn.x + Pn.dx - Li, Pn.y += oa, Pn.dy -= oa;
                    } else {
                      for ((Yn || oa > Pn.dx) && (oa = Pn.dx); ++ti < zn; )
                        ji = cn[ti], ji.x = Li, ji.y = Xi, ji.dx = oa, Xi += ji.dy = Math.min(Pn.y + Pn.dy - Xi, oa ? Ft(ji.area / oa) : 0);
                      ji.z = !1, ji.dy += Pn.y + Pn.dy - Xi, Pn.x += oa, Pn.dx -= oa;
                    }
                  }
                  function Hn(cn) {
                    var xn = er || gt(cn), Pn = xn[0];
                    return Pn.x = Pn.y = 0, Pn.value ? (Pn.dx = Kt[0], Pn.dy = Kt[1]) : Pn.dx = Pn.dy = 0, er && gt.revalue(Pn), xr([Pn], Pn.dx * Pn.dy / Pn.value), (er ? an : kr)(Pn), Ce && (er = xn), xn;
                  }
                  return Hn.size = function(cn) {
                    return arguments.length ? (Kt = cn, Hn) : Kt;
                  }, Hn.padding = function(cn) {
                    if (!arguments.length) return pe;
                    function xn(ti) {
                      var zn = cn.call(Hn, ti, ti.depth);
                      return zn == null ? Xc(ti) : xs(ti, typeof zn == "number" ? [zn, zn, zn, zn] : zn);
                    }
                    function Pn(ti) {
                      return xs(ti, cn);
                    }
                    var Yn;
                    return Te = (pe = cn) == null ? Xc : (Yn = typeof cn) == "function" ? xn : (Yn === "number" && (cn = [cn, cn, cn, cn]), Pn), Hn;
                  }, Hn.round = function(cn) {
                    return arguments.length ? (Ft = cn ? Math.round : Number, Hn) : Ft != Number;
                  }, Hn.sticky = function(cn) {
                    return arguments.length ? (Ce = cn, er = null, Hn) : Ce;
                  }, Hn.ratio = function(cn) {
                    return arguments.length ? (gr = cn, Hn) : gr;
                  }, Hn.mode = function(cn) {
                    return arguments.length ? (We = cn + "", Hn) : We;
                  }, Nc(Hn, gt);
                };
                function Xc(gt) {
                  return {
                    x: gt.x,
                    y: gt.y,
                    dx: gt.dx,
                    dy: gt.dy
                  };
                }
                function xs(gt, Ft) {
                  var Kt = gt.x + Ft[3], pe = gt.y + Ft[0], Te = gt.dx - Ft[1] - Ft[3], Ce = gt.dy - Ft[0] - Ft[2];
                  return Te < 0 && (Kt += Te / 2, Te = 0), Ce < 0 && (pe += Ce / 2, Ce = 0), {
                    x: Kt,
                    y: pe,
                    dx: Te,
                    dy: Ce
                  };
                }
                n.random = {
                  normal: function(gt, Ft) {
                    var Kt = arguments.length;
                    return Kt < 2 && (Ft = 1), Kt < 1 && (gt = 0), function() {
                      var pe, Te, Ce;
                      do
                        pe = Math.random() * 2 - 1, Te = Math.random() * 2 - 1, Ce = pe * pe + Te * Te;
                      while (!Ce || Ce > 1);
                      return gt + Ft * pe * Math.sqrt(-2 * Math.log(Ce) / Ce);
                    };
                  },
                  logNormal: function() {
                    var gt = n.random.normal.apply(n, arguments);
                    return function() {
                      return Math.exp(gt());
                    };
                  },
                  bates: function(gt) {
                    var Ft = n.random.irwinHall(gt);
                    return function() {
                      return Ft() / gt;
                    };
                  },
                  irwinHall: function(gt) {
                    return function() {
                      for (var Ft = 0, Kt = 0; Kt < gt; Kt++) Ft += Math.random();
                      return Ft;
                    };
                  }
                }, n.scale = {};
                function El(gt) {
                  var Ft = gt[0], Kt = gt[gt.length - 1];
                  return Ft < Kt ? [Ft, Kt] : [Kt, Ft];
                }
                function Yc(gt) {
                  return gt.rangeExtent ? gt.rangeExtent() : El(gt.range());
                }
                function sd(gt, Ft, Kt, pe) {
                  var Te = Kt(gt[0], gt[1]), Ce = pe(Ft[0], Ft[1]);
                  return function(er) {
                    return Ce(Te(er));
                  };
                }
                function Kc(gt, Ft) {
                  var Kt = 0, pe = gt.length - 1, Te = gt[Kt], Ce = gt[pe], er;
                  return Ce < Te && (er = Kt, Kt = pe, pe = er, er = Te, Te = Ce, Ce = er), gt[Kt] = Ft.floor(Te), gt[pe] = Ft.ceil(Ce), gt;
                }
                function Vl(gt) {
                  return gt ? {
                    floor: function(Ft) {
                      return Math.floor(Ft / gt) * gt;
                    },
                    ceil: function(Ft) {
                      return Math.ceil(Ft / gt) * gt;
                    }
                  } : ld;
                }
                var ld = {
                  floor: V,
                  ceil: V
                };
                function $f(gt, Ft, Kt, pe) {
                  var Te = [], Ce = [], er = 0, We = Math.min(gt.length, Ft.length) - 1;
                  for (gt[We] < gt[0] && (gt = gt.slice().reverse(), Ft = Ft.slice().reverse()); ++er <= We; )
                    Te.push(Kt(gt[er - 1], gt[er])), Ce.push(pe(Ft[er - 1], Ft[er]));
                  return function(gr) {
                    var xr = n.bisect(gt, gr, 1, We) - 1;
                    return Ce[xr](Te[xr](gr));
                  };
                }
                n.scale.linear = function() {
                  return qf([0, 1], [0, 1], is, !1);
                };
                function qf(gt, Ft, Kt, pe) {
                  var Te, Ce;
                  function er() {
                    var gr = Math.min(gt.length, Ft.length) > 2 ? $f : sd, xr = pe ? Oc : ql;
                    return Te = gr(gt, Ft, xr, Kt), Ce = gr(Ft, gt, xr, is), We;
                  }
                  function We(gr) {
                    return Te(gr);
                  }
                  return We.invert = function(gr) {
                    return Ce(gr);
                  }, We.domain = function(gr) {
                    return arguments.length ? (gt = gr.map(Number), er()) : gt;
                  }, We.range = function(gr) {
                    return arguments.length ? (Ft = gr, er()) : Ft;
                  }, We.rangeRound = function(gr) {
                    return We.range(gr).interpolate(mf);
                  }, We.clamp = function(gr) {
                    return arguments.length ? (pe = gr, er()) : pe;
                  }, We.interpolate = function(gr) {
                    return arguments.length ? (Kt = gr, er()) : Kt;
                  }, We.ticks = function(gr) {
                    return Ms(gt, gr);
                  }, We.tickFormat = function(gr, xr) {
                    return d3_scale_linearTickFormat(gt, gr, xr);
                  }, We.nice = function(gr) {
                    return th(gt, gr), er();
                  }, We.copy = function() {
                    return qf(gt, Ft, Kt, pe);
                  }, er();
                }
                function Jc(gt, Ft) {
                  return n.rebind(gt, Ft, "range", "rangeRound", "interpolate", "clamp");
                }
                function th(gt, Ft) {
                  return Kc(gt, Vl(Fs(gt, Ft)[2])), Kc(gt, Vl(Fs(gt, Ft)[2])), gt;
                }
                function Fs(gt, Ft) {
                  Ft == null && (Ft = 10);
                  var Kt = El(gt), pe = Kt[1] - Kt[0], Te = Math.pow(10, Math.floor(Math.log(pe / Ft) / Math.LN10)), Ce = Ft / pe * Te;
                  return Ce <= 0.15 ? Te *= 10 : Ce <= 0.35 ? Te *= 5 : Ce <= 0.75 && (Te *= 2), Kt[0] = Math.ceil(Kt[0] / Te) * Te, Kt[1] = Math.floor(Kt[1] / Te) * Te + Te * 0.5, Kt[2] = Te, Kt;
                }
                function Ms(gt, Ft) {
                  return n.range.apply(n, Fs(gt, Ft));
                }
                n.scale.log = function() {
                  return fu(n.scale.linear().domain([0, 1]), 10, !0, [1, 10]);
                };
                function fu(gt, Ft, Kt, pe) {
                  function Te(We) {
                    return (Kt ? Math.log(We < 0 ? 0 : We) : -Math.log(We > 0 ? 0 : -We)) / Math.log(Ft);
                  }
                  function Ce(We) {
                    return Kt ? Math.pow(Ft, We) : -Math.pow(Ft, -We);
                  }
                  function er(We) {
                    return gt(Te(We));
                  }
                  return er.invert = function(We) {
                    return Ce(gt.invert(We));
                  }, er.domain = function(We) {
                    return arguments.length ? (Kt = We[0] >= 0, gt.domain((pe = We.map(Number)).map(Te)), er) : pe;
                  }, er.base = function(We) {
                    return arguments.length ? (Ft = +We, gt.domain(pe.map(Te)), er) : Ft;
                  }, er.nice = function() {
                    var We = Kc(pe.map(Te), Kt ? Math : qu);
                    return gt.domain(We), pe = We.map(Ce), er;
                  }, er.ticks = function() {
                    var We = El(pe), gr = [], xr = We[0], kr = We[1], an = Math.floor(Te(xr)), on = Math.ceil(Te(kr)), Ln = Ft % 1 ? 2 : Ft;
                    if (isFinite(on - an)) {
                      if (Kt) {
                        for (; an < on; an++) for (var Hn = 1; Hn < Ln; Hn++) gr.push(Ce(an) * Hn);
                        gr.push(Ce(an));
                      } else
                        for (gr.push(Ce(an)); an++ < on; ) for (var Hn = Ln - 1; Hn > 0; Hn--) gr.push(Ce(an) * Hn);
                      for (an = 0; gr[an] < xr; an++)
                        ;
                      for (on = gr.length; gr[on - 1] > kr; on--)
                        ;
                      gr = gr.slice(an, on);
                    }
                    return gr;
                  }, er.copy = function() {
                    return fu(gt.copy(), Ft, Kt, pe);
                  }, Jc(er, gt);
                }
                var qu = {
                  floor: function(gt) {
                    return -Math.ceil(-gt);
                  },
                  ceil: function(gt) {
                    return -Math.floor(-gt);
                  }
                };
                n.scale.pow = function() {
                  return Qc(n.scale.linear(), 1, [0, 1]);
                };
                function Qc(gt, Ft, Kt) {
                  var pe = tc(Ft), Te = tc(1 / Ft);
                  function Ce(er) {
                    return gt(pe(er));
                  }
                  return Ce.invert = function(er) {
                    return Te(gt.invert(er));
                  }, Ce.domain = function(er) {
                    return arguments.length ? (gt.domain((Kt = er.map(Number)).map(pe)), Ce) : Kt;
                  }, Ce.ticks = function(er) {
                    return Ms(Kt, er);
                  }, Ce.tickFormat = function(er, We) {
                    return d3_scale_linearTickFormat(Kt, er, We);
                  }, Ce.nice = function(er) {
                    return Ce.domain(th(Kt, er));
                  }, Ce.exponent = function(er) {
                    return arguments.length ? (pe = tc(Ft = er), Te = tc(1 / Ft), gt.domain(Kt.map(pe)), Ce) : Ft;
                  }, Ce.copy = function() {
                    return Qc(gt.copy(), Ft, Kt);
                  }, Jc(Ce, gt);
                }
                function tc(gt) {
                  return function(Ft) {
                    return Ft < 0 ? -Math.pow(-Ft, gt) : Math.pow(Ft, gt);
                  };
                }
                n.scale.sqrt = function() {
                  return n.scale.pow().exponent(0.5);
                }, n.scale.ordinal = function() {
                  return Pu([], {
                    t: "range",
                    a: [[]]
                  });
                };
                function Pu(gt, Ft) {
                  var Kt, pe, Te;
                  function Ce(We) {
                    return pe[((Kt.get(We) || (Ft.t === "range" ? Kt.set(We, gt.push(We)) : NaN)) - 1) % pe.length];
                  }
                  function er(We, gr) {
                    return n.range(gt.length).map(function(xr) {
                      return We + gr * xr;
                    });
                  }
                  return Ce.domain = function(We) {
                    if (!arguments.length) return gt;
                    gt = [], Kt = new M();
                    for (var gr = -1, xr = We.length, kr; ++gr < xr; ) Kt.has(kr = We[gr]) || Kt.set(kr, gt.push(kr));
                    return Ce[Ft.t].apply(Ce, Ft.a);
                  }, Ce.range = function(We) {
                    return arguments.length ? (pe = We, Te = 0, Ft = {
                      t: "range",
                      a: arguments
                    }, Ce) : pe;
                  }, Ce.rangePoints = function(We, gr) {
                    arguments.length < 2 && (gr = 0);
                    var xr = We[0], kr = We[1], an = gt.length < 2 ? (xr = (xr + kr) / 2, 0) : (kr - xr) / (gt.length - 1 + gr);
                    return pe = er(xr + an * gr / 2, an), Te = 0, Ft = {
                      t: "rangePoints",
                      a: arguments
                    }, Ce;
                  }, Ce.rangeRoundPoints = function(We, gr) {
                    arguments.length < 2 && (gr = 0);
                    var xr = We[0], kr = We[1], an = gt.length < 2 ? (xr = kr = Math.round((xr + kr) / 2), 0) : (kr - xr) / (gt.length - 1 + gr) | 0;
                    return pe = er(xr + Math.round(an * gr / 2 + (kr - xr - (gt.length - 1 + gr) * an) / 2), an), Te = 0, Ft = {
                      t: "rangeRoundPoints",
                      a: arguments
                    }, Ce;
                  }, Ce.rangeBands = function(We, gr, xr) {
                    arguments.length < 2 && (gr = 0), arguments.length < 3 && (xr = gr);
                    var kr = We[1] < We[0], an = We[kr - 0], on = We[1 - kr], Ln = (on - an) / (gt.length - gr + 2 * xr);
                    return pe = er(an + Ln * xr, Ln), kr && pe.reverse(), Te = Ln * (1 - gr), Ft = {
                      t: "rangeBands",
                      a: arguments
                    }, Ce;
                  }, Ce.rangeRoundBands = function(We, gr, xr) {
                    arguments.length < 2 && (gr = 0), arguments.length < 3 && (xr = gr);
                    var kr = We[1] < We[0], an = We[kr - 0], on = We[1 - kr], Ln = Math.floor((on - an) / (gt.length - gr + 2 * xr));
                    return pe = er(an + Math.round((on - an - (gt.length - gr) * Ln) / 2), Ln), kr && pe.reverse(), Te = Math.round(Ln * (1 - gr)), Ft = {
                      t: "rangeRoundBands",
                      a: arguments
                    }, Ce;
                  }, Ce.rangeBand = function() {
                    return Te;
                  }, Ce.rangeExtent = function() {
                    return El(Ft.a[0]);
                  }, Ce.copy = function() {
                    return Pu(gt, Ft);
                  }, Ce.domain(gt);
                }
                n.scale.category10 = function() {
                  return n.scale.ordinal().range(ec);
                }, n.scale.category20 = function() {
                  return n.scale.ordinal().range(Hl);
                }, n.scale.category20b = function() {
                  return n.scale.ordinal().range(_c);
                }, n.scale.category20c = function() {
                  return n.scale.ordinal().range(rc);
                };
                var ec = [2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175].map(tr), Hl = [2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725].map(tr), _c = [3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654].map(tr), rc = [3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081].map(tr);
                n.scale.quantile = function() {
                  return Iu([], []);
                };
                function Iu(gt, Ft) {
                  var Kt;
                  function pe() {
                    var Ce = 0, er = Ft.length;
                    for (Kt = []; ++Ce < er; ) Kt[Ce - 1] = n.quantile(gt, Ce / er);
                    return Te;
                  }
                  function Te(Ce) {
                    if (!isNaN(Ce = +Ce)) return Ft[n.bisect(Kt, Ce)];
                  }
                  return Te.domain = function(Ce) {
                    return arguments.length ? (gt = Ce.map(y).filter(g).sort(o), pe()) : gt;
                  }, Te.range = function(Ce) {
                    return arguments.length ? (Ft = Ce, pe()) : Ft;
                  }, Te.quantiles = function() {
                    return Kt;
                  }, Te.invertExtent = function(Ce) {
                    return Ce = Ft.indexOf(Ce), Ce < 0 ? [NaN, NaN] : [Ce > 0 ? Kt[Ce - 1] : gt[0], Ce < Kt.length ? Kt[Ce] : gt[gt.length - 1]];
                  }, Te.copy = function() {
                    return Iu(gt, Ft);
                  }, pe();
                }
                n.scale.quantize = function() {
                  return Af(0, 1, [0, 1]);
                };
                function Af(gt, Ft, Kt) {
                  var pe, Te;
                  function Ce(We) {
                    return Kt[Math.max(0, Math.min(Te, Math.floor(pe * (We - gt))))];
                  }
                  function er() {
                    return pe = Kt.length / (Ft - gt), Te = Kt.length - 1, Ce;
                  }
                  return Ce.domain = function(We) {
                    return arguments.length ? (gt = +We[0], Ft = +We[We.length - 1], er()) : [gt, Ft];
                  }, Ce.range = function(We) {
                    return arguments.length ? (Kt = We, er()) : Kt;
                  }, Ce.invertExtent = function(We) {
                    return We = Kt.indexOf(We), We = We < 0 ? NaN : We / pe + gt, [We, We + 1 / pe];
                  }, Ce.copy = function() {
                    return Af(gt, Ft, Kt);
                  }, er();
                }
                n.scale.threshold = function() {
                  return Tc([0.5], [0, 1]);
                };
                function Tc(gt, Ft) {
                  function Kt(pe) {
                    if (pe <= pe) return Ft[n.bisect(gt, pe)];
                  }
                  return Kt.domain = function(pe) {
                    return arguments.length ? (gt = pe, Kt) : gt;
                  }, Kt.range = function(pe) {
                    return arguments.length ? (Ft = pe, Kt) : Ft;
                  }, Kt.invertExtent = function(pe) {
                    return pe = Ft.indexOf(pe), [gt[pe - 1], gt[pe]];
                  }, Kt.copy = function() {
                    return Tc(gt, Ft);
                  }, Kt;
                }
                n.scale.identity = function() {
                  return No([0, 1]);
                };
                function No(gt) {
                  function Ft(Kt) {
                    return +Kt;
                  }
                  return Ft.invert = Ft, Ft.domain = Ft.range = function(Kt) {
                    return arguments.length ? (gt = Kt.map(Ft), Ft) : gt;
                  }, Ft.ticks = function(Kt) {
                    return Ms(gt, Kt);
                  }, Ft.tickFormat = function(Kt, pe) {
                    return d3_scale_linearTickFormat(gt, Kt, pe);
                  }, Ft.copy = function() {
                    return No(gt);
                  }, Ft;
                }
                n.svg = {};
                function Ac() {
                  return 0;
                }
                n.svg.arc = function() {
                  var gt = Sf, Ft = Ru, Kt = Ac, pe = Sc, Te = Mf, Ce = eh, er = Ef;
                  function We() {
                    var xr = Math.max(0, +gt.apply(this, arguments)), kr = Math.max(0, +Ft.apply(this, arguments)), an = Te.apply(this, arguments) - te, on = Ce.apply(this, arguments) - te, Ln = Math.abs(on - an), Hn = an > on ? 0 : 1;
                    if (kr < xr && (cn = kr, kr = xr, xr = cn), Ln >= Lt) return gr(kr, Hn) + (xr ? gr(xr, 1 - Hn) : "") + "Z";
                    var cn, xn, Pn, Yn, ti = 0, zn = 0, Li, Xi, oa, ji, ea, sa, Wa, ya, Oa = [];
                    if ((Yn = (+er.apply(this, arguments) || 0) / 2) && (Pn = pe === Sc ? Math.sqrt(xr * xr + kr * kr) : +pe.apply(this, arguments), Hn || (zn *= -1), kr && (zn = mr(Pn / kr * Math.sin(Yn))), xr && (ti = mr(Pn / xr * Math.sin(Yn)))), kr) {
                      Li = kr * Math.cos(an + zn), Xi = kr * Math.sin(an + zn), oa = kr * Math.cos(on - zn), ji = kr * Math.sin(on - zn);
                      var lo = Math.abs(on - an - 2 * zn) <= Mt ? 0 : 1;
                      if (zn && hu(Li, Xi, oa, ji) === Hn ^ lo) {
                        var Go = (an + on) / 2;
                        Li = kr * Math.cos(Go), Xi = kr * Math.sin(Go), oa = ji = null;
                      }
                    } else
                      Li = Xi = 0;
                    if (xr) {
                      ea = xr * Math.cos(on - ti), sa = xr * Math.sin(on - ti), Wa = xr * Math.cos(an + ti), ya = xr * Math.sin(an + ti);
                      var Po = Math.abs(an - on + 2 * ti) <= Mt ? 0 : 1;
                      if (ti && hu(ea, sa, Wa, ya) === 1 - Hn ^ Po) {
                        var Ui = (an + on) / 2;
                        ea = xr * Math.cos(Ui), sa = xr * Math.sin(Ui), Wa = ya = null;
                      }
                    } else
                      ea = sa = 0;
                    if (Ln > Zt && (cn = Math.min(Math.abs(kr - xr) / 2, +Kt.apply(this, arguments))) > 1e-3) {
                      xn = xr < kr ^ Hn ? 0 : 1;
                      var Ba = cn, ba = cn;
                      if (Ln < Mt) {
                        var xo = Wa == null ? [ea, sa] : oa == null ? [Li, Xi] : Fn([Li, Xi], [Wa, ya], [oa, ji], [ea, sa]), Xo = Li - xo[0], Co = Xi - xo[1], Cs = oa - xo[0], ns = ji - xo[1], us = 1 / Math.sin(Math.acos((Xo * Cs + Co * ns) / (Math.sqrt(Xo * Xo + Co * Co) * Math.sqrt(Cs * Cs + ns * ns))) / 2), Ao = Math.sqrt(xo[0] * xo[0] + xo[1] * xo[1]);
                        ba = Math.min(cn, (xr - Ao) / (us - 1)), Ba = Math.min(cn, (kr - Ao) / (us + 1));
                      }
                      if (oa != null) {
                        var aa = vo(Wa == null ? [ea, sa] : [Wa, ya], [Li, Xi], kr, Ba, Hn), ta = vo([oa, ji], [ea, sa], kr, Ba, Hn);
                        cn === Ba ? Oa.push("M", aa[0], "A", Ba, ",", Ba, " 0 0,", xn, " ", aa[1], "A", kr, ",", kr, " 0 ", 1 - Hn ^ hu(aa[1][0], aa[1][1], ta[1][0], ta[1][1]), ",", Hn, " ", ta[1], "A", Ba, ",", Ba, " 0 0,", xn, " ", ta[0]) : Oa.push("M", aa[0], "A", Ba, ",", Ba, " 0 1,", xn, " ", ta[0]);
                      } else
                        Oa.push("M", Li, ",", Xi);
                      if (Wa != null) {
                        var wa = vo([Li, Xi], [Wa, ya], xr, -ba, Hn), il = vo([ea, sa], oa == null ? [Li, Xi] : [oa, ji], xr, -ba, Hn);
                        cn === ba ? Oa.push("L", il[0], "A", ba, ",", ba, " 0 0,", xn, " ", il[1], "A", xr, ",", xr, " 0 ", Hn ^ hu(il[1][0], il[1][1], wa[1][0], wa[1][1]), ",", 1 - Hn, " ", wa[1], "A", ba, ",", ba, " 0 0,", xn, " ", wa[0]) : Oa.push("L", il[0], "A", ba, ",", ba, " 0 0,", xn, " ", wa[0]);
                      } else
                        Oa.push("L", ea, ",", sa);
                    } else
                      Oa.push("M", Li, ",", Xi), oa != null && Oa.push("A", kr, ",", kr, " 0 ", lo, ",", Hn, " ", oa, ",", ji), Oa.push("L", ea, ",", sa), Wa != null && Oa.push("A", xr, ",", xr, " 0 ", Po, ",", 1 - Hn, " ", Wa, ",", ya);
                    return Oa.push("Z"), Oa.join("");
                  }
                  function gr(xr, kr) {
                    return "M0," + xr + "A" + xr + "," + xr + " 0 1," + kr + " 0," + -xr + "A" + xr + "," + xr + " 0 1," + kr + " 0," + xr;
                  }
                  return We.innerRadius = function(xr) {
                    return arguments.length ? (gt = fn(xr), We) : gt;
                  }, We.outerRadius = function(xr) {
                    return arguments.length ? (Ft = fn(xr), We) : Ft;
                  }, We.cornerRadius = function(xr) {
                    return arguments.length ? (Kt = fn(xr), We) : Kt;
                  }, We.padRadius = function(xr) {
                    return arguments.length ? (pe = xr == Sc ? Sc : fn(xr), We) : pe;
                  }, We.startAngle = function(xr) {
                    return arguments.length ? (Te = fn(xr), We) : Te;
                  }, We.endAngle = function(xr) {
                    return arguments.length ? (Ce = fn(xr), We) : Ce;
                  }, We.padAngle = function(xr) {
                    return arguments.length ? (er = fn(xr), We) : er;
                  }, We.centroid = function() {
                    var xr = (+gt.apply(this, arguments) + +Ft.apply(this, arguments)) / 2, kr = (+Te.apply(this, arguments) + +Ce.apply(this, arguments)) / 2 - te;
                    return [Math.cos(kr) * xr, Math.sin(kr) * xr];
                  }, We;
                };
                var Sc = "auto";
                function Sf(gt) {
                  return gt.innerRadius;
                }
                function Ru(gt) {
                  return gt.outerRadius;
                }
                function Mf(gt) {
                  return gt.startAngle;
                }
                function eh(gt) {
                  return gt.endAngle;
                }
                function Ef(gt) {
                  return gt && gt.padAngle;
                }
                function hu(gt, Ft, Kt, pe) {
                  return (gt - Kt) * Ft - (Ft - pe) * gt > 0 ? 0 : 1;
                }
                function vo(gt, Ft, Kt, pe, Te) {
                  var Ce = gt[0] - Ft[0], er = gt[1] - Ft[1], We = (Te ? pe : -pe) / Math.sqrt(Ce * Ce + er * er), gr = We * er, xr = -We * Ce, kr = gt[0] + gr, an = gt[1] + xr, on = Ft[0] + gr, Ln = Ft[1] + xr, Hn = (kr + on) / 2, cn = (an + Ln) / 2, xn = on - kr, Pn = Ln - an, Yn = xn * xn + Pn * Pn, ti = Kt - pe, zn = kr * Ln - on * an, Li = (Pn < 0 ? -1 : 1) * Math.sqrt(Math.max(0, ti * ti * Yn - zn * zn)), Xi = (zn * Pn - xn * Li) / Yn, oa = (-zn * xn - Pn * Li) / Yn, ji = (zn * Pn + xn * Li) / Yn, ea = (-zn * xn + Pn * Li) / Yn, sa = Xi - Hn, Wa = oa - cn, ya = ji - Hn, Oa = ea - cn;
                  return sa * sa + Wa * Wa > ya * ya + Oa * Oa && (Xi = ji, oa = ea), [[Xi - gr, oa - xr], [Xi * Kt / ti, oa * Kt / ti]];
                }
                function Cl() {
                  return !0;
                }
                function Qs(gt) {
                  var Ft = Mi, Kt = Ji, pe = Cl, Te = ws, Ce = Te.key, er = 0.7;
                  function We(gr) {
                    var xr = [], kr = [], an = -1, on = gr.length, Ln, Hn = fn(Ft), cn = fn(Kt);
                    function xn() {
                      xr.push("M", Te(gt(kr), er));
                    }
                    for (; ++an < on; )
                      pe.call(this, Ln = gr[an], an) ? kr.push([+Hn.call(this, Ln, an), +cn.call(this, Ln, an)]) : kr.length && (xn(), kr = []);
                    return kr.length && xn(), xr.length ? xr.join("") : null;
                  }
                  return We.x = function(gr) {
                    return arguments.length ? (Ft = gr, We) : Ft;
                  }, We.y = function(gr) {
                    return arguments.length ? (Kt = gr, We) : Kt;
                  }, We.defined = function(gr) {
                    return arguments.length ? (pe = gr, We) : pe;
                  }, We.interpolate = function(gr) {
                    return arguments.length ? (typeof gr == "function" ? Ce = Te = gr : Ce = (Te = Du.get(gr) || ws).key, We) : Ce;
                  }, We.tension = function(gr) {
                    return arguments.length ? (er = gr, We) : er;
                  }, We;
                }
                n.svg.line = function() {
                  return Qs(V);
                };
                var Du = n.map({
                  linear: ws,
                  "linear-closed": Gl,
                  step: Lh,
                  "step-before": Ll,
                  "step-after": rh,
                  basis: iu,
                  "basis-open": Ec,
                  "basis-closed": ku,
                  bundle: Ph,
                  cardinal: $c,
                  "cardinal-open": nc,
                  "cardinal-closed": nh,
                  monotone: ah
                });
                Du.forEach(function(gt, Ft) {
                  Ft.key = gt, Ft.closed = /-closed$/.test(gt);
                });
                function ws(gt) {
                  return gt.length > 1 ? gt.join("L") : gt + "Z";
                }
                function Gl(gt) {
                  return gt.join("L") + "Z";
                }
                function Lh(gt) {
                  for (var Ft = 0, Kt = gt.length, pe = gt[0], Te = [pe[0], ",", pe[1]]; ++Ft < Kt; ) Te.push("H", (pe[0] + (pe = gt[Ft])[0]) / 2, "V", pe[1]);
                  return Kt > 1 && Te.push("H", pe[0]), Te.join("");
                }
                function Ll(gt) {
                  for (var Ft = 0, Kt = gt.length, pe = gt[0], Te = [pe[0], ",", pe[1]]; ++Ft < Kt; ) Te.push("V", (pe = gt[Ft])[1], "H", pe[0]);
                  return Te.join("");
                }
                function rh(gt) {
                  for (var Ft = 0, Kt = gt.length, pe = gt[0], Te = [pe[0], ",", pe[1]]; ++Ft < Kt; ) Te.push("H", (pe = gt[Ft])[0], "V", pe[1]);
                  return Te.join("");
                }
                function nc(gt, Ft) {
                  return gt.length < 4 ? ws(gt) : gt[1] + Es(gt.slice(1, -1), Mc(gt, Ft));
                }
                function nh(gt, Ft) {
                  return gt.length < 3 ? Gl(gt) : gt[0] + Es((gt.push(gt[0]), gt), Mc([gt[gt.length - 2]].concat(gt, [gt[1]]), Ft));
                }
                function $c(gt, Ft) {
                  return gt.length < 3 ? ws(gt) : gt[0] + Es(gt, Mc(gt, Ft));
                }
                function Es(gt, Ft) {
                  if (Ft.length < 1 || gt.length != Ft.length && gt.length != Ft.length + 2)
                    return ws(gt);
                  var Kt = gt.length != Ft.length, pe = "", Te = gt[0], Ce = gt[1], er = Ft[0], We = er, gr = 1;
                  if (Kt && (pe += "Q" + (Ce[0] - er[0] * 2 / 3) + "," + (Ce[1] - er[1] * 2 / 3) + "," + Ce[0] + "," + Ce[1], Te = gt[1], gr = 2), Ft.length > 1) {
                    We = Ft[1], Ce = gt[gr], gr++, pe += "C" + (Te[0] + er[0]) + "," + (Te[1] + er[1]) + "," + (Ce[0] - We[0]) + "," + (Ce[1] - We[1]) + "," + Ce[0] + "," + Ce[1];
                    for (var xr = 2; xr < Ft.length; xr++, gr++)
                      Ce = gt[gr], We = Ft[xr], pe += "S" + (Ce[0] - We[0]) + "," + (Ce[1] - We[1]) + "," + Ce[0] + "," + Ce[1];
                  }
                  if (Kt) {
                    var kr = gt[gr];
                    pe += "Q" + (Ce[0] + We[0] * 2 / 3) + "," + (Ce[1] + We[1] * 2 / 3) + "," + kr[0] + "," + kr[1];
                  }
                  return pe;
                }
                function Mc(gt, Ft) {
                  for (var Kt = [], pe = (1 - Ft) / 2, Te, Ce = gt[0], er = gt[1], We = 1, gr = gt.length; ++We < gr; )
                    Te = Ce, Ce = er, er = gt[We], Kt.push([pe * (er[0] - Te[0]), pe * (er[1] - Te[1])]);
                  return Kt;
                }
                function iu(gt) {
                  if (gt.length < 3) return ws(gt);
                  var Ft = 1, Kt = gt.length, pe = gt[0], Te = pe[0], Ce = pe[1], er = [Te, Te, Te, (pe = gt[1])[0]], We = [Ce, Ce, Ce, pe[1]], gr = [Te, ",", Ce, "L", oo(du, er), ",", oo(du, We)];
                  for (gt.push(gt[Kt - 1]); ++Ft <= Kt; )
                    pe = gt[Ft], er.shift(), er.push(pe[0]), We.shift(), We.push(pe[1]), Wl(gr, er, We);
                  return gt.pop(), gr.push("L", pe), gr.join("");
                }
                function Ec(gt) {
                  if (gt.length < 4) return ws(gt);
                  for (var Ft = [], Kt = -1, pe = gt.length, Te, Ce = [0], er = [0]; ++Kt < 3; )
                    Te = gt[Kt], Ce.push(Te[0]), er.push(Te[1]);
                  for (Ft.push(oo(du, Ce) + "," + oo(du, er)), --Kt; ++Kt < pe; )
                    Te = gt[Kt], Ce.shift(), Ce.push(Te[0]), er.shift(), er.push(Te[1]), Wl(Ft, Ce, er);
                  return Ft.join("");
                }
                function ku(gt) {
                  for (var Ft, Kt = -1, pe = gt.length, Te = pe + 4, Ce, er = [], We = []; ++Kt < 4; )
                    Ce = gt[Kt % pe], er.push(Ce[0]), We.push(Ce[1]);
                  for (Ft = [oo(du, er), ",", oo(du, We)], --Kt; ++Kt < Te; )
                    Ce = gt[Kt % pe], er.shift(), er.push(Ce[0]), We.shift(), We.push(Ce[1]), Wl(Ft, er, We);
                  return Ft.join("");
                }
                function Ph(gt, Ft) {
                  var Kt = gt.length - 1;
                  if (Kt)
                    for (var pe = gt[0][0], Te = gt[0][1], Ce = gt[Kt][0] - pe, er = gt[Kt][1] - Te, We = -1, gr, xr; ++We <= Kt; )
                      gr = gt[We], xr = We / Kt, gr[0] = Ft * gr[0] + (1 - Ft) * (pe + xr * Ce), gr[1] = Ft * gr[1] + (1 - Ft) * (Te + xr * er);
                  return iu(gt);
                }
                function oo(gt, Ft) {
                  return gt[0] * Ft[0] + gt[1] * Ft[1] + gt[2] * Ft[2] + gt[3] * Ft[3];
                }
                var ic = [0, 2 / 3, 1 / 3, 0], ih = [0, 1 / 3, 2 / 3, 0], du = [0, 1 / 6, 2 / 3, 1 / 6];
                function Wl(gt, Ft, Kt) {
                  gt.push("C", oo(ic, Ft), ",", oo(ic, Kt), ",", oo(ih, Ft), ",", oo(ih, Kt), ",", oo(du, Ft), ",", oo(du, Kt));
                }
                function Ih(gt, Ft) {
                  return (Ft[1] - gt[1]) / (Ft[0] - gt[0]);
                }
                function Cf(gt) {
                  for (var Ft = 0, Kt = gt.length - 1, pe = [], Te = gt[0], Ce = gt[1], er = pe[0] = Ih(Te, Ce); ++Ft < Kt; )
                    pe[Ft] = (er + (er = Ih(Te = Ce, Ce = gt[Ft + 1]))) / 2;
                  return pe[Ft] = er, pe;
                }
                function qc(gt) {
                  for (var Ft = [], Kt, pe, Te, Ce, er = Cf(gt), We = -1, gr = gt.length - 1; ++We < gr; )
                    Kt = Ih(gt[We], gt[We + 1]), f(Kt) < Zt ? er[We] = er[We + 1] = 0 : (pe = er[We] / Kt, Te = er[We + 1] / Kt, Ce = pe * pe + Te * Te, Ce > 9 && (Ce = Kt * 3 / Math.sqrt(Ce), er[We] = Ce * pe, er[We + 1] = Ce * Te));
                  for (We = -1; ++We <= gr; )
                    Ce = (gt[Math.min(gr, We + 1)][0] - gt[Math.max(0, We - 1)][0]) / (6 * (1 + er[We] * er[We])), Ft.push([Ce || 0, er[We] * Ce || 0]);
                  return Ft;
                }
                function ah(gt) {
                  return gt.length < 3 ? ws(gt) : gt[0] + Es(gt, qc(gt));
                }
                n.svg.line.radial = function() {
                  var gt = Qs(ud);
                  return gt.radius = gt.x, delete gt.x, gt.angle = gt.y, delete gt.y, gt;
                };
                function ud(gt) {
                  for (var Ft, Kt = -1, pe = gt.length, Te, Ce; ++Kt < pe; )
                    Ft = gt[Kt], Te = Ft[0], Ce = Ft[1] - te, Ft[0] = Te * Math.cos(Ce), Ft[1] = Te * Math.sin(Ce);
                  return gt;
                }
                function Cc(gt) {
                  var Ft = Mi, Kt = Mi, pe = 0, Te = Ji, Ce = Cl, er = ws, We = er.key, gr = er, xr = "L", kr = 0.7;
                  function an(on) {
                    var Ln = [], Hn = [], cn = [], xn = -1, Pn = on.length, Yn, ti = fn(Ft), zn = fn(pe), Li = Ft === Kt ? function() {
                      return oa;
                    } : fn(Kt), Xi = pe === Te ? function() {
                      return ji;
                    } : fn(Te), oa, ji;
                    function ea() {
                      Ln.push("M", er(gt(cn), kr), xr, gr(gt(Hn.reverse()), kr), "Z");
                    }
                    for (; ++xn < Pn; )
                      Ce.call(this, Yn = on[xn], xn) ? (Hn.push([oa = +ti.call(this, Yn, xn), ji = +zn.call(this, Yn, xn)]), cn.push([+Li.call(this, Yn, xn), +Xi.call(this, Yn, xn)])) : Hn.length && (ea(), Hn = [], cn = []);
                    return Hn.length && ea(), Ln.length ? Ln.join("") : null;
                  }
                  return an.x = function(on) {
                    return arguments.length ? (Ft = Kt = on, an) : Kt;
                  }, an.x0 = function(on) {
                    return arguments.length ? (Ft = on, an) : Ft;
                  }, an.x1 = function(on) {
                    return arguments.length ? (Kt = on, an) : Kt;
                  }, an.y = function(on) {
                    return arguments.length ? (pe = Te = on, an) : Te;
                  }, an.y0 = function(on) {
                    return arguments.length ? (pe = on, an) : pe;
                  }, an.y1 = function(on) {
                    return arguments.length ? (Te = on, an) : Te;
                  }, an.defined = function(on) {
                    return arguments.length ? (Ce = on, an) : Ce;
                  }, an.interpolate = function(on) {
                    return arguments.length ? (typeof on == "function" ? We = er = on : We = (er = Du.get(on) || ws).key, gr = er.reverse || er, xr = er.closed ? "M" : "L", an) : We;
                  }, an.tension = function(on) {
                    return arguments.length ? (kr = on, an) : kr;
                  }, an;
                }
                Ll.reverse = rh, rh.reverse = Ll, n.svg.area = function() {
                  return Cc(V);
                }, n.svg.area.radial = function() {
                  var gt = Cc(ud);
                  return gt.radius = gt.x, delete gt.x, gt.innerRadius = gt.x0, delete gt.x0, gt.outerRadius = gt.x1, delete gt.x1, gt.angle = gt.y, delete gt.y, gt.startAngle = gt.y0, delete gt.y0, gt.endAngle = gt.y1, delete gt.y1, gt;
                };
                function tf(gt) {
                  return gt.source;
                }
                function vu(gt) {
                  return gt.target;
                }
                n.svg.chord = function() {
                  var gt = tf, Ft = vu, Kt = ef, pe = Mf, Te = eh;
                  function Ce(kr, an) {
                    var on = er(this, gt, kr, an), Ln = er(this, Ft, kr, an);
                    return "M" + on.p0 + gr(on.r, on.p1, on.a1 - on.a0) + (We(on, Ln) ? xr(on.r, on.p1, on.r, on.p0) : xr(on.r, on.p1, Ln.r, Ln.p0) + gr(Ln.r, Ln.p1, Ln.a1 - Ln.a0) + xr(Ln.r, Ln.p1, on.r, on.p0)) + "Z";
                  }
                  function er(kr, an, on, Ln) {
                    var Hn = an.call(kr, on, Ln), cn = Kt.call(kr, Hn, Ln), xn = pe.call(kr, Hn, Ln) - te, Pn = Te.call(kr, Hn, Ln) - te;
                    return {
                      r: cn,
                      a0: xn,
                      a1: Pn,
                      p0: [cn * Math.cos(xn), cn * Math.sin(xn)],
                      p1: [cn * Math.cos(Pn), cn * Math.sin(Pn)]
                    };
                  }
                  function We(kr, an) {
                    return kr.a0 == an.a0 && kr.a1 == an.a1;
                  }
                  function gr(kr, an, on) {
                    return "A" + kr + "," + kr + " 0 " + +(on > Mt) + ",1 " + an;
                  }
                  function xr(kr, an, on, Ln) {
                    return "Q 0,0 " + Ln;
                  }
                  return Ce.radius = function(kr) {
                    return arguments.length ? (Kt = fn(kr), Ce) : Kt;
                  }, Ce.source = function(kr) {
                    return arguments.length ? (gt = fn(kr), Ce) : gt;
                  }, Ce.target = function(kr) {
                    return arguments.length ? (Ft = fn(kr), Ce) : Ft;
                  }, Ce.startAngle = function(kr) {
                    return arguments.length ? (pe = fn(kr), Ce) : pe;
                  }, Ce.endAngle = function(kr) {
                    return arguments.length ? (Te = fn(kr), Ce) : Te;
                  }, Ce;
                };
                function ef(gt) {
                  return gt.radius;
                }
                n.svg.diagonal = function() {
                  var gt = tf, Ft = vu, Kt = pu;
                  function pe(Te, Ce) {
                    var er = gt.call(this, Te, Ce), We = Ft.call(this, Te, Ce), gr = (er.y + We.y) / 2, xr = [er, {
                      x: er.x,
                      y: gr
                    }, {
                      x: We.x,
                      y: gr
                    }, We];
                    return xr = xr.map(Kt), "M" + xr[0] + "C" + xr[1] + " " + xr[2] + " " + xr[3];
                  }
                  return pe.source = function(Te) {
                    return arguments.length ? (gt = fn(Te), pe) : gt;
                  }, pe.target = function(Te) {
                    return arguments.length ? (Ft = fn(Te), pe) : Ft;
                  }, pe.projection = function(Te) {
                    return arguments.length ? (Kt = Te, pe) : Kt;
                  }, pe;
                };
                function pu(gt) {
                  return [gt.x, gt.y];
                }
                n.svg.diagonal.radial = function() {
                  var gt = n.svg.diagonal(), Ft = pu, Kt = gt.projection;
                  return gt.projection = function(pe) {
                    return arguments.length ? Kt(cd(Ft = pe)) : Ft;
                  }, gt;
                };
                function cd(gt) {
                  return function() {
                    var Ft = gt.apply(this, arguments), Kt = Ft[0], pe = Ft[1] - te;
                    return [Kt * Math.cos(pe), Kt * Math.sin(pe)];
                  };
                }
                n.svg.symbol = function() {
                  var gt = Ae, Ft = he;
                  function Kt(pe, Te) {
                    return (Ge.get(gt.call(this, pe, Te)) || Be)(Ft.call(this, pe, Te));
                  }
                  return Kt.type = function(pe) {
                    return arguments.length ? (gt = fn(pe), Kt) : gt;
                  }, Kt.size = function(pe) {
                    return arguments.length ? (Ft = fn(pe), Kt) : Ft;
                  }, Kt;
                };
                function he() {
                  return 64;
                }
                function Ae() {
                  return "circle";
                }
                function Be(gt) {
                  var Ft = Math.sqrt(gt / Mt);
                  return "M0," + Ft + "A" + Ft + "," + Ft + " 0 1,1 0," + -Ft + "A" + Ft + "," + Ft + " 0 1,1 0," + Ft + "Z";
                }
                var Ge = n.map({
                  circle: Be,
                  cross: function(gt) {
                    var Ft = Math.sqrt(gt / 5) / 2;
                    return "M" + -3 * Ft + "," + -Ft + "H" + -Ft + "V" + -3 * Ft + "H" + Ft + "V" + -Ft + "H" + 3 * Ft + "V" + Ft + "H" + Ft + "V" + 3 * Ft + "H" + -Ft + "V" + Ft + "H" + -3 * Ft + "Z";
                  },
                  diamond: function(gt) {
                    var Ft = Math.sqrt(gt / (2 * ar)), Kt = Ft * ar;
                    return "M0," + -Ft + "L" + Kt + ",0 0," + Ft + " " + -Kt + ",0Z";
                  },
                  square: function(gt) {
                    var Ft = Math.sqrt(gt) / 2;
                    return "M" + -Ft + "," + -Ft + "L" + Ft + "," + -Ft + " " + Ft + "," + Ft + " " + -Ft + "," + Ft + "Z";
                  },
                  "triangle-down": function(gt) {
                    var Ft = Math.sqrt(gt / sr), Kt = Ft * sr / 2;
                    return "M0," + Kt + "L" + Ft + "," + -Kt + " " + -Ft + "," + -Kt + "Z";
                  },
                  "triangle-up": function(gt) {
                    var Ft = Math.sqrt(gt / sr), Kt = Ft * sr / 2;
                    return "M0," + -Kt + "L" + Ft + "," + Kt + " " + -Ft + "," + Kt + "Z";
                  }
                });
                n.svg.symbolTypes = Ge.keys();
                var sr = Math.sqrt(3), ar = Math.tan(30 * fe);
                X.transition = function(gt) {
                  for (var Ft = un || ++tn, Kt = ri(gt), pe = [], Te, Ce, er = dn || {
                    time: Date.now(),
                    ease: gf,
                    delay: 0,
                    duration: 250
                  }, We = -1, gr = this.length; ++We < gr; ) {
                    pe.push(Te = []);
                    for (var xr = this[We], kr = -1, an = xr.length; ++kr < an; )
                      (Ce = xr[kr]) && gi(Ce, kr, Kt, Ft, er), Te.push(Ce);
                  }
                  return Yr(pe, Kt, Ft);
                }, X.interrupt = function(gt) {
                  return this.each(gt == null ? fr : Wr(ri(gt)));
                };
                var fr = Wr(ri());
                function Wr(gt) {
                  return function() {
                    var Ft, Kt, pe;
                    (Ft = this[gt]) && (pe = Ft[Kt = Ft.active]) && (pe.timer.c = null, pe.timer.t = NaN, --Ft.count ? delete Ft[Kt] : delete this[gt], Ft.active += 0.5, pe.event && pe.event.interrupt.call(this, this.__data__, pe.index));
                  };
                }
                function Yr(gt, Ft, Kt) {
                  return Q(gt, Pr), gt.namespace = Ft, gt.id = Kt, gt;
                }
                var Pr = [], tn = 0, un, dn;
                Pr.call = X.call, Pr.empty = X.empty, Pr.node = X.node, Pr.size = X.size, n.transition = function(gt, Ft) {
                  return gt && gt.transition ? un ? gt.transition(Ft) : gt : n.selection().transition(gt);
                }, n.transition.prototype = Pr, Pr.select = function(gt) {
                  var Ft = this.id, Kt = this.namespace, pe = [], Te, Ce, er;
                  gt = ct(gt);
                  for (var We = -1, gr = this.length; ++We < gr; ) {
                    pe.push(Te = []);
                    for (var xr = this[We], kr = -1, an = xr.length; ++kr < an; )
                      (er = xr[kr]) && (Ce = gt.call(er, er.__data__, kr, We)) ? ("__data__" in er && (Ce.__data__ = er.__data__), gi(Ce, kr, Kt, Ft, er[Kt][Ft]), Te.push(Ce)) : Te.push(null);
                  }
                  return Yr(pe, Kt, Ft);
                }, Pr.selectAll = function(gt) {
                  var Ft = this.id, Kt = this.namespace, pe = [], Te, Ce, er, We, gr;
                  gt = lt(gt);
                  for (var xr = -1, kr = this.length; ++xr < kr; )
                    for (var an = this[xr], on = -1, Ln = an.length; ++on < Ln; )
                      if (er = an[on]) {
                        gr = er[Kt][Ft], Ce = gt.call(er, er.__data__, on, xr), pe.push(Te = []);
                        for (var Hn = -1, cn = Ce.length; ++Hn < cn; )
                          (We = Ce[Hn]) && gi(We, Hn, Kt, Ft, gr), Te.push(We);
                      }
                  return Yr(pe, Kt, Ft);
                }, Pr.filter = function(gt) {
                  var Ft = [], Kt, pe, Te;
                  typeof gt != "function" && (gt = ge(gt));
                  for (var Ce = 0, er = this.length; Ce < er; Ce++) {
                    Ft.push(Kt = []);
                    for (var pe = this[Ce], We = 0, gr = pe.length; We < gr; We++)
                      (Te = pe[We]) && gt.call(Te, Te.__data__, We, Ce) && Kt.push(Te);
                  }
                  return Yr(Ft, this.namespace, this.id);
                }, Pr.tween = function(gt, Ft) {
                  var Kt = this.id, pe = this.namespace;
                  return arguments.length < 2 ? this.node()[pe][Kt].tween.get(gt) : ce(this, Ft == null ? function(Te) {
                    Te[pe][Kt].tween.remove(gt);
                  } : function(Te) {
                    Te[pe][Kt].tween.set(gt, Ft);
                  });
                };
                function On(gt, Ft, Kt, pe) {
                  var Te = gt.id, Ce = gt.namespace;
                  return ce(gt, typeof Kt == "function" ? function(er, We, gr) {
                    er[Ce][Te].tween.set(Ft, pe(Kt.call(er, er.__data__, We, gr)));
                  } : (Kt = pe(Kt), function(er) {
                    er[Ce][Te].tween.set(Ft, Kt);
                  }));
                }
                Pr.attr = function(gt, Ft) {
                  if (arguments.length < 2) {
                    for (Ft in gt) this.attr(Ft, gt[Ft]);
                    return this;
                  }
                  var Kt = gt == "transform" ? Xf : is, pe = n.ns.qualify(gt);
                  function Te() {
                    this.removeAttribute(pe);
                  }
                  function Ce() {
                    this.removeAttributeNS(pe.space, pe.local);
                  }
                  function er(gr) {
                    return gr == null ? Te : (gr += "", function() {
                      var xr = this.getAttribute(pe), kr;
                      return xr !== gr && (kr = Kt(xr, gr), function(an) {
                        this.setAttribute(pe, kr(an));
                      });
                    });
                  }
                  function We(gr) {
                    return gr == null ? Ce : (gr += "", function() {
                      var xr = this.getAttributeNS(pe.space, pe.local), kr;
                      return xr !== gr && (kr = Kt(xr, gr), function(an) {
                        this.setAttributeNS(pe.space, pe.local, kr(an));
                      });
                    });
                  }
                  return On(this, "attr." + gt, Ft, pe.local ? We : er);
                }, Pr.attrTween = function(gt, Ft) {
                  var Kt = n.ns.qualify(gt);
                  function pe(Ce, er) {
                    var We = Ft.call(this, Ce, er, this.getAttribute(Kt));
                    return We && function(gr) {
                      this.setAttribute(Kt, We(gr));
                    };
                  }
                  function Te(Ce, er) {
                    var We = Ft.call(this, Ce, er, this.getAttributeNS(Kt.space, Kt.local));
                    return We && function(gr) {
                      this.setAttributeNS(Kt.space, Kt.local, We(gr));
                    };
                  }
                  return this.tween("attr." + gt, Kt.local ? Te : pe);
                }, Pr.style = function(gt, Ft, Kt) {
                  var pe = arguments.length;
                  if (pe < 3) {
                    if (typeof gt != "string") {
                      pe < 2 && (Ft = "");
                      for (Kt in gt) this.style(Kt, gt[Kt], Ft);
                      return this;
                    }
                    Kt = "";
                  }
                  function Te() {
                    this.style.removeProperty(gt);
                  }
                  function Ce(er) {
                    return er == null ? Te : (er += "", function() {
                      var We = u(this).getComputedStyle(this, null).getPropertyValue(gt), gr;
                      return We !== er && (gr = is(We, er), function(xr) {
                        this.style.setProperty(gt, gr(xr), Kt);
                      });
                    });
                  }
                  return On(this, "style." + gt, Ft, Ce);
                }, Pr.styleTween = function(gt, Ft, Kt) {
                  arguments.length < 3 && (Kt = "");
                  function pe(Te, Ce) {
                    var er = Ft.call(this, Te, Ce, u(this).getComputedStyle(this, null).getPropertyValue(gt));
                    return er && function(We) {
                      this.style.setProperty(gt, er(We), Kt);
                    };
                  }
                  return this.tween("style." + gt, pe);
                }, Pr.text = function(gt) {
                  return On(this, "text", gt, ai);
                };
                function ai(gt) {
                  return gt == null && (gt = ""), function() {
                    this.textContent = gt;
                  };
                }
                Pr.remove = function() {
                  var gt = this.namespace;
                  return this.each("end.transition", function() {
                    var Ft;
                    this[gt].count < 2 && (Ft = this.parentNode) && Ft.removeChild(this);
                  });
                }, Pr.ease = function(gt) {
                  var Ft = this.id, Kt = this.namespace;
                  return arguments.length < 1 ? this.node()[Kt][Ft].ease : (typeof gt != "function" && (gt = n.ease.apply(n, arguments)), ce(this, function(pe) {
                    pe[Kt][Ft].ease = gt;
                  }));
                }, Pr.delay = function(gt) {
                  var Ft = this.id, Kt = this.namespace;
                  return arguments.length < 1 ? this.node()[Kt][Ft].delay : ce(this, typeof gt == "function" ? function(pe, Te, Ce) {
                    pe[Kt][Ft].delay = +gt.call(pe, pe.__data__, Te, Ce);
                  } : (gt = +gt, function(pe) {
                    pe[Kt][Ft].delay = gt;
                  }));
                }, Pr.duration = function(gt) {
                  var Ft = this.id, Kt = this.namespace;
                  return arguments.length < 1 ? this.node()[Kt][Ft].duration : ce(this, typeof gt == "function" ? function(pe, Te, Ce) {
                    pe[Kt][Ft].duration = Math.max(1, gt.call(pe, pe.__data__, Te, Ce));
                  } : (gt = Math.max(1, gt), function(pe) {
                    pe[Kt][Ft].duration = gt;
                  }));
                }, Pr.each = function(gt, Ft) {
                  var Kt = this.id, pe = this.namespace;
                  if (arguments.length < 2) {
                    var Te = dn, Ce = un;
                    try {
                      un = Kt, ce(this, function(er, We, gr) {
                        dn = er[pe][Kt], gt.call(er, er.__data__, We, gr);
                      });
                    } finally {
                      dn = Te, un = Ce;
                    }
                  } else
                    ce(this, function(er) {
                      var We = er[pe][Kt];
                      (We.event || (We.event = n.dispatch("start", "end", "interrupt"))).on(gt, Ft);
                    });
                  return this;
                }, Pr.transition = function() {
                  for (var gt = this.id, Ft = ++tn, Kt = this.namespace, pe = [], Te, Ce, er, We, gr = 0, xr = this.length; gr < xr; gr++) {
                    pe.push(Te = []);
                    for (var Ce = this[gr], kr = 0, an = Ce.length; kr < an; kr++)
                      (er = Ce[kr]) && (We = er[Kt][gt], gi(er, kr, Kt, Ft, {
                        time: We.time,
                        ease: We.ease,
                        delay: We.delay + We.duration,
                        duration: We.duration
                      })), Te.push(er);
                  }
                  return Yr(pe, Kt, Ft);
                };
                function ri(gt) {
                  return gt == null ? "__transition__" : "__transition_" + gt + "__";
                }
                function gi(gt, Ft, Kt, pe, Te) {
                  var Ce = gt[Kt] || (gt[Kt] = {
                    active: 0,
                    count: 0
                  }), er = Ce[pe], We, gr, xr, kr, an;
                  function on(cn) {
                    var xn = er.delay;
                    if (gr.t = xn + We, xn <= cn) return Ln(cn - xn);
                    gr.c = Ln;
                  }
                  function Ln(cn) {
                    var xn = Ce.active, Pn = Ce[xn];
                    Pn && (Pn.timer.c = null, Pn.timer.t = NaN, --Ce.count, delete Ce[xn], Pn.event && Pn.event.interrupt.call(gt, gt.__data__, Pn.index));
                    for (var Yn in Ce)
                      if (+Yn < pe) {
                        var ti = Ce[Yn];
                        ti.timer.c = null, ti.timer.t = NaN, --Ce.count, delete Ce[Yn];
                      }
                    gr.c = Hn, qn(function() {
                      return gr.c && Hn(cn || 1) && (gr.c = null, gr.t = NaN), 1;
                    }, 0, We), Ce.active = pe, er.event && er.event.start.call(gt, gt.__data__, Ft), an = [], er.tween.forEach(function(zn, Li) {
                      (Li = Li.call(gt, gt.__data__, Ft)) && an.push(Li);
                    }), kr = er.ease, xr = er.duration;
                  }
                  function Hn(cn) {
                    for (var xn = cn / xr, Pn = kr(xn), Yn = an.length; Yn > 0; )
                      an[--Yn].call(gt, Pn);
                    if (xn >= 1)
                      return er.event && er.event.end.call(gt, gt.__data__, Ft), --Ce.count ? delete Ce[pe] : delete gt[Kt], 1;
                  }
                  er || (We = Te.time, gr = qn(on, 0, We), er = Ce[pe] = {
                    tween: new M(),
                    time: We,
                    timer: gr,
                    delay: Te.delay,
                    duration: Te.duration,
                    ease: Te.ease,
                    index: Ft
                  }, Te = null, ++Ce.count);
                }
                n.svg.axis = function() {
                  var gt = n.scale.linear(), Ft = Ni, Kt = 6, pe = 6, Te = 3, Ce = [10], er = null, We;
                  function gr(xr) {
                    xr.each(function() {
                      var kr = n.select(this), an = this.__chart__ || gt, on = this.__chart__ = gt.copy(), Ln = er ?? (on.ticks ? on.ticks.apply(on, Ce) : on.domain()), Hn = We ?? (on.tickFormat ? on.tickFormat.apply(on, Ce) : V), cn = kr.selectAll(".tick").data(Ln, on), xn = cn.enter().insert("g", ".domain").attr("class", "tick").style("opacity", Zt), Pn = n.transition(cn.exit()).style("opacity", Zt).remove(), Yn = n.transition(cn.order()).style("opacity", 1), ti = Math.max(Kt, 0) + Te, zn, Li = Yc(on), Xi = kr.selectAll(".domain").data([0]), oa = (Xi.enter().append("path").attr("class", "domain"), n.transition(Xi));
                      xn.append("line"), xn.append("text");
                      var ji = xn.select("line"), ea = Yn.select("line"), sa = cn.select("text").text(Hn), Wa = xn.select("text"), ya = Yn.select("text"), Oa = Ft === "top" || Ft === "left" ? -1 : 1, lo, Go, Po, Ui;
                      if (Ft === "bottom" || Ft === "top" ? (zn = Pa, lo = "x", Po = "y", Go = "x2", Ui = "y2", sa.attr("dy", Oa < 0 ? "0em" : ".71em").style("text-anchor", "middle"), oa.attr("d", "M" + Li[0] + "," + Oa * pe + "V0H" + Li[1] + "V" + Oa * pe)) : (zn = Fa, lo = "y", Po = "x", Go = "y2", Ui = "x2", sa.attr("dy", ".32em").style("text-anchor", Oa < 0 ? "end" : "start"), oa.attr("d", "M" + Oa * pe + "," + Li[0] + "H0V" + Li[1] + "H" + Oa * pe)), ji.attr(Ui, Oa * Kt), Wa.attr(Po, Oa * ti), ea.attr(Go, 0).attr(Ui, Oa * Kt), ya.attr(lo, 0).attr(Po, Oa * ti), on.rangeBand) {
                        var Ba = on, ba = Ba.rangeBand() / 2;
                        an = on = function(xo) {
                          return Ba(xo) + ba;
                        };
                      } else an.rangeBand ? an = on : Pn.call(zn, on, an);
                      xn.call(zn, an, on), Yn.call(zn, on, on);
                    });
                  }
                  return gr.scale = function(xr) {
                    return arguments.length ? (gt = xr, gr) : gt;
                  }, gr.orient = function(xr) {
                    return arguments.length ? (Ft = xr in Ia ? xr + "" : Ni, gr) : Ft;
                  }, gr.ticks = function() {
                    return arguments.length ? (Ce = T(arguments), gr) : Ce;
                  }, gr.tickValues = function(xr) {
                    return arguments.length ? (er = xr, gr) : er;
                  }, gr.tickFormat = function(xr) {
                    return arguments.length ? (We = xr, gr) : We;
                  }, gr.tickSize = function(xr) {
                    var kr = arguments.length;
                    return kr ? (Kt = +xr, pe = +arguments[kr - 1], gr) : Kt;
                  }, gr.innerTickSize = function(xr) {
                    return arguments.length ? (Kt = +xr, gr) : Kt;
                  }, gr.outerTickSize = function(xr) {
                    return arguments.length ? (pe = +xr, gr) : pe;
                  }, gr.tickPadding = function(xr) {
                    return arguments.length ? (Te = +xr, gr) : Te;
                  }, gr.tickSubdivide = function() {
                    return arguments.length && gr;
                  }, gr;
                };
                var Ni = "bottom", Ia = {
                  top: 1,
                  right: 1,
                  bottom: 1,
                  left: 1
                };
                function Pa(gt, Ft, Kt) {
                  gt.attr("transform", function(pe) {
                    var Te = Ft(pe);
                    return "translate(" + (isFinite(Te) ? Te : Kt(pe)) + ",0)";
                  });
                }
                function Fa(gt, Ft, Kt) {
                  gt.attr("transform", function(pe) {
                    var Te = Ft(pe);
                    return "translate(0," + (isFinite(Te) ? Te : Kt(pe)) + ")";
                  });
                }
                n.svg.brush = function() {
                  var gt = ht(kr, "brushstart", "brush", "brushend"), Ft = null, Kt = null, pe = [0, 0], Te = [0, 0], Ce, er, We = !0, gr = !0, xr = Na[0];
                  function kr(cn) {
                    cn.each(function() {
                      var xn = n.select(this).style("pointer-events", "all").style("-webkit-tap-highlight-color", "rgba(0,0,0,0)").on("mousedown.brush", Hn).on("touchstart.brush", Hn), Pn = xn.selectAll(".background").data([0]);
                      Pn.enter().append("rect").attr("class", "background").style("visibility", "hidden").style("cursor", "crosshair"), xn.selectAll(".extent").data([0]).enter().append("rect").attr("class", "extent").style("cursor", "move");
                      var Yn = xn.selectAll(".resize").data(xr, V);
                      Yn.exit().remove(), Yn.enter().append("g").attr("class", function(Xi) {
                        return "resize " + Xi;
                      }).style("cursor", function(Xi) {
                        return Ga[Xi];
                      }).append("rect").attr("x", function(Xi) {
                        return /[ew]$/.test(Xi) ? -3 : null;
                      }).attr("y", function(Xi) {
                        return /^[ns]/.test(Xi) ? -3 : null;
                      }).attr("width", 6).attr("height", 6).style("visibility", "hidden"), Yn.style("display", kr.empty() ? "none" : null);
                      var ti = n.transition(xn), zn = n.transition(Pn), Li;
                      Ft && (Li = Yc(Ft), zn.attr("x", Li[0]).attr("width", Li[1] - Li[0]), on(ti)), Kt && (Li = Yc(Kt), zn.attr("y", Li[0]).attr("height", Li[1] - Li[0]), Ln(ti)), an(ti);
                    });
                  }
                  kr.event = function(cn) {
                    cn.each(function() {
                      var xn = gt.of(this, arguments), Pn = {
                        x: pe,
                        y: Te,
                        i: Ce,
                        j: er
                      }, Yn = this.__chart__ || Pn;
                      this.__chart__ = Pn, un ? n.select(this).transition().each("start.brush", function() {
                        Ce = Yn.i, er = Yn.j, pe = Yn.x, Te = Yn.y, xn({
                          type: "brushstart"
                        });
                      }).tween("brush:brush", function() {
                        var ti = wl(pe, Pn.x), zn = wl(Te, Pn.y);
                        return Ce = er = null, function(Li) {
                          pe = Pn.x = ti(Li), Te = Pn.y = zn(Li), xn({
                            type: "brush",
                            mode: "resize"
                          });
                        };
                      }).each("end.brush", function() {
                        Ce = Pn.i, er = Pn.j, xn({
                          type: "brush",
                          mode: "resize"
                        }), xn({
                          type: "brushend"
                        });
                      }) : (xn({
                        type: "brushstart"
                      }), xn({
                        type: "brush",
                        mode: "resize"
                      }), xn({
                        type: "brushend"
                      }));
                    });
                  };
                  function an(cn) {
                    cn.selectAll(".resize").attr("transform", function(xn) {
                      return "translate(" + pe[+/e$/.test(xn)] + "," + Te[+/^s/.test(xn)] + ")";
                    });
                  }
                  function on(cn) {
                    cn.select(".extent").attr("x", pe[0]), cn.selectAll(".extent,.n>rect,.s>rect").attr("width", pe[1] - pe[0]);
                  }
                  function Ln(cn) {
                    cn.select(".extent").attr("y", Te[0]), cn.selectAll(".extent,.e>rect,.w>rect").attr("height", Te[1] - Te[0]);
                  }
                  function Hn() {
                    var cn = this, xn = n.select(n.event.target), Pn = gt.of(cn, arguments), Yn = n.select(cn), ti = xn.datum(), zn = !/^(n|s)$/.test(ti) && Ft, Li = !/^(e|w)$/.test(ti) && Kt, Xi = xn.classed("extent"), oa = jt(cn), ji, ea = n.mouse(cn), sa, Wa = n.select(u(cn)).on("keydown.brush", lo).on("keyup.brush", Go);
                    if (n.event.changedTouches ? Wa.on("touchmove.brush", Po).on("touchend.brush", Ba) : Wa.on("mousemove.brush", Po).on("mouseup.brush", Ba), Yn.interrupt().selectAll("*").interrupt(), Xi)
                      ea[0] = pe[0] - ea[0], ea[1] = Te[0] - ea[1];
                    else if (ti) {
                      var ya = +/w$/.test(ti), Oa = +/^n/.test(ti);
                      sa = [pe[1 - ya] - ea[0], Te[1 - Oa] - ea[1]], ea[0] = pe[ya], ea[1] = Te[Oa];
                    } else n.event.altKey && (ji = ea.slice());
                    Yn.style("pointer-events", "none").selectAll(".resize").style("display", null), n.select("body").style("cursor", xn.style("cursor")), Pn({
                      type: "brushstart"
                    }), Po();
                    function lo() {
                      n.event.keyCode == 32 && (Xi || (ji = null, ea[0] -= pe[1], ea[1] -= Te[1], Xi = 2), st());
                    }
                    function Go() {
                      n.event.keyCode == 32 && Xi == 2 && (ea[0] += pe[1], ea[1] += Te[1], Xi = 0, st());
                    }
                    function Po() {
                      var ba = n.mouse(cn), xo = !1;
                      sa && (ba[0] += sa[0], ba[1] += sa[1]), Xi || (n.event.altKey ? (ji || (ji = [(pe[0] + pe[1]) / 2, (Te[0] + Te[1]) / 2]), ea[0] = pe[+(ba[0] < ji[0])], ea[1] = Te[+(ba[1] < ji[1])]) : ji = null), zn && Ui(ba, Ft, 0) && (on(Yn), xo = !0), Li && Ui(ba, Kt, 1) && (Ln(Yn), xo = !0), xo && (an(Yn), Pn({
                        type: "brush",
                        mode: Xi ? "move" : "resize"
                      }));
                    }
                    function Ui(ba, xo, Xo) {
                      var Co = Yc(xo), Cs = Co[0], ns = Co[1], us = ea[Xo], Ao = Xo ? Te : pe, aa = Ao[1] - Ao[0], ta, wa;
                      if (Xi && (Cs -= us, ns -= aa + us), ta = (Xo ? gr : We) ? Math.max(Cs, Math.min(ns, ba[Xo])) : ba[Xo], Xi ? wa = (ta += us) + aa : (ji && (us = Math.max(Cs, Math.min(ns, 2 * ji[Xo] - ta))), us < ta ? (wa = ta, ta = us) : wa = us), Ao[0] != ta || Ao[1] != wa)
                        return Xo ? er = null : Ce = null, Ao[0] = ta, Ao[1] = wa, !0;
                    }
                    function Ba() {
                      Po(), Yn.style("pointer-events", "all").selectAll(".resize").style("display", kr.empty() ? "none" : null), n.select("body").style("cursor", null), Wa.on("mousemove.brush", null).on("mouseup.brush", null).on("touchmove.brush", null).on("touchend.brush", null).on("keydown.brush", null).on("keyup.brush", null), oa(), Pn({
                        type: "brushend"
                      });
                    }
                  }
                  return kr.x = function(cn) {
                    return arguments.length ? (Ft = cn, xr = Na[!Ft << 1 | !Kt], kr) : Ft;
                  }, kr.y = function(cn) {
                    return arguments.length ? (Kt = cn, xr = Na[!Ft << 1 | !Kt], kr) : Kt;
                  }, kr.clamp = function(cn) {
                    return arguments.length ? (Ft && Kt ? (We = !!cn[0], gr = !!cn[1]) : Ft ? We = !!cn : Kt && (gr = !!cn), kr) : Ft && Kt ? [We, gr] : Ft ? We : Kt ? gr : null;
                  }, kr.extent = function(cn) {
                    var xn, Pn, Yn, ti, zn;
                    return arguments.length ? (Ft && (xn = cn[0], Pn = cn[1], Kt && (xn = xn[0], Pn = Pn[0]), Ce = [xn, Pn], Ft.invert && (xn = Ft(xn), Pn = Ft(Pn)), Pn < xn && (zn = xn, xn = Pn, Pn = zn), (xn != pe[0] || Pn != pe[1]) && (pe = [xn, Pn])), Kt && (Yn = cn[0], ti = cn[1], Ft && (Yn = Yn[1], ti = ti[1]), er = [Yn, ti], Kt.invert && (Yn = Kt(Yn), ti = Kt(ti)), ti < Yn && (zn = Yn, Yn = ti, ti = zn), (Yn != Te[0] || ti != Te[1]) && (Te = [Yn, ti])), kr) : (Ft && (Ce ? (xn = Ce[0], Pn = Ce[1]) : (xn = pe[0], Pn = pe[1], Ft.invert && (xn = Ft.invert(xn), Pn = Ft.invert(Pn)), Pn < xn && (zn = xn, xn = Pn, Pn = zn))), Kt && (er ? (Yn = er[0], ti = er[1]) : (Yn = Te[0], ti = Te[1], Kt.invert && (Yn = Kt.invert(Yn), ti = Kt.invert(ti)), ti < Yn && (zn = Yn, Yn = ti, ti = zn))), Ft && Kt ? [[xn, Yn], [Pn, ti]] : Ft ? [xn, Pn] : Kt && [Yn, ti]);
                  }, kr.clear = function() {
                    return kr.empty() || (pe = [0, 0], Te = [0, 0], Ce = er = null), kr;
                  }, kr.empty = function() {
                    return !!Ft && pe[0] == pe[1] || !!Kt && Te[0] == Te[1];
                  }, n.rebind(kr, gt, "on");
                };
                var Ga = {
                  n: "ns-resize",
                  e: "ew-resize",
                  s: "ns-resize",
                  w: "ew-resize",
                  nw: "nwse-resize",
                  ne: "nesw-resize",
                  se: "nwse-resize",
                  sw: "nesw-resize"
                }, Na = [["n", "e", "s", "w", "nw", "ne", "se", "sw"], ["e", "w"], ["n", "s"], []];
                n.text = hi(function(gt) {
                  return gt.responseText;
                }), n.json = function(gt, Ft) {
                  return Vn(gt, "application/json", To, Ft);
                };
                function To(gt) {
                  return JSON.parse(gt.responseText);
                }
                n.html = function(gt, Ft) {
                  return Vn(gt, "text/html", Do, Ft);
                };
                function Do(gt) {
                  var Ft = A.createRange();
                  return Ft.selectNode(A.body), Ft.createContextualFragment(gt.responseText);
                }
                n.xml = hi(function(gt) {
                  return gt.responseXML;
                }), b = n, P = typeof b == "function" ? b.call(K, e, K, Y) : b, P !== void 0 && (Y.exports = P);
              }).apply(self);
            }
          ),
          /***/
          32280: (
            /***/
            function(Y) {
              (function(K, e) {
                Y.exports = e();
              })(this, function() {
                var K, e, b;
                function P(n, s) {
                  if (!K)
                    K = s;
                  else if (!e)
                    e = s;
                  else {
                    var T = "var sharedChunk = {}; (" + K + ")(sharedChunk); (" + e + ")(sharedChunk);", A = {};
                    K(A), b = s(A), typeof window < "u" && (b.workerUrl = window.URL.createObjectURL(new Blob([T], { type: "text/javascript" })));
                  }
                }
                return P(["exports"], function(n) {
                  function s(I, D) {
                    return D = { exports: {} }, I(D, D.exports), D.exports;
                  }
                  var T = "1.13.4", A = p;
                  function p(I, D, W, ot) {
                    this.cx = 3 * I, this.bx = 3 * (W - I) - this.cx, this.ax = 1 - this.cx - this.bx, this.cy = 3 * D, this.by = 3 * (ot - D) - this.cy, this.ay = 1 - this.cy - this.by, this.p1x = I, this.p1y = ot, this.p2x = W, this.p2y = ot;
                  }
                  p.prototype.sampleCurveX = function(I) {
                    return ((this.ax * I + this.bx) * I + this.cx) * I;
                  }, p.prototype.sampleCurveY = function(I) {
                    return ((this.ay * I + this.by) * I + this.cy) * I;
                  }, p.prototype.sampleCurveDerivativeX = function(I) {
                    return (3 * this.ax * I + 2 * this.bx) * I + this.cx;
                  }, p.prototype.solveCurveX = function(I, D) {
                    typeof D > "u" && (D = 1e-6);
                    var W, ot, xt, Pt, Ht;
                    for (xt = I, Ht = 0; Ht < 8; Ht++) {
                      if (Pt = this.sampleCurveX(xt) - I, Math.abs(Pt) < D)
                        return xt;
                      var ve = this.sampleCurveDerivativeX(xt);
                      if (Math.abs(ve) < 1e-6)
                        break;
                      xt = xt - Pt / ve;
                    }
                    if (W = 0, ot = 1, xt = I, xt < W)
                      return W;
                    if (xt > ot)
                      return ot;
                    for (; W < ot; ) {
                      if (Pt = this.sampleCurveX(xt), Math.abs(Pt - I) < D)
                        return xt;
                      I > Pt ? W = xt : ot = xt, xt = (ot - W) * 0.5 + W;
                    }
                    return xt;
                  }, p.prototype.solve = function(I, D) {
                    return this.sampleCurveY(this.solveCurveX(I, D));
                  };
                  var u = t;
                  function t(I, D) {
                    this.x = I, this.y = D;
                  }
                  t.prototype = {
                    clone: function() {
                      return new t(this.x, this.y);
                    },
                    add: function(I) {
                      return this.clone()._add(I);
                    },
                    sub: function(I) {
                      return this.clone()._sub(I);
                    },
                    multByPoint: function(I) {
                      return this.clone()._multByPoint(I);
                    },
                    divByPoint: function(I) {
                      return this.clone()._divByPoint(I);
                    },
                    mult: function(I) {
                      return this.clone()._mult(I);
                    },
                    div: function(I) {
                      return this.clone()._div(I);
                    },
                    rotate: function(I) {
                      return this.clone()._rotate(I);
                    },
                    rotateAround: function(I, D) {
                      return this.clone()._rotateAround(I, D);
                    },
                    matMult: function(I) {
                      return this.clone()._matMult(I);
                    },
                    unit: function() {
                      return this.clone()._unit();
                    },
                    perp: function() {
                      return this.clone()._perp();
                    },
                    round: function() {
                      return this.clone()._round();
                    },
                    mag: function() {
                      return Math.sqrt(this.x * this.x + this.y * this.y);
                    },
                    equals: function(I) {
                      return this.x === I.x && this.y === I.y;
                    },
                    dist: function(I) {
                      return Math.sqrt(this.distSqr(I));
                    },
                    distSqr: function(I) {
                      var D = I.x - this.x, W = I.y - this.y;
                      return D * D + W * W;
                    },
                    angle: function() {
                      return Math.atan2(this.y, this.x);
                    },
                    angleTo: function(I) {
                      return Math.atan2(this.y - I.y, this.x - I.x);
                    },
                    angleWith: function(I) {
                      return this.angleWithSep(I.x, I.y);
                    },
                    angleWithSep: function(I, D) {
                      return Math.atan2(this.x * D - this.y * I, this.x * I + this.y * D);
                    },
                    _matMult: function(I) {
                      var D = I[0] * this.x + I[1] * this.y, W = I[2] * this.x + I[3] * this.y;
                      return this.x = D, this.y = W, this;
                    },
                    _add: function(I) {
                      return this.x += I.x, this.y += I.y, this;
                    },
                    _sub: function(I) {
                      return this.x -= I.x, this.y -= I.y, this;
                    },
                    _mult: function(I) {
                      return this.x *= I, this.y *= I, this;
                    },
                    _div: function(I) {
                      return this.x /= I, this.y /= I, this;
                    },
                    _multByPoint: function(I) {
                      return this.x *= I.x, this.y *= I.y, this;
                    },
                    _divByPoint: function(I) {
                      return this.x /= I.x, this.y /= I.y, this;
                    },
                    _unit: function() {
                      return this._div(this.mag()), this;
                    },
                    _perp: function() {
                      var I = this.y;
                      return this.y = this.x, this.x = -I, this;
                    },
                    _rotate: function(I) {
                      var D = Math.cos(I), W = Math.sin(I), ot = D * this.x - W * this.y, xt = W * this.x + D * this.y;
                      return this.x = ot, this.y = xt, this;
                    },
                    _rotateAround: function(I, D) {
                      var W = Math.cos(I), ot = Math.sin(I), xt = D.x + W * (this.x - D.x) - ot * (this.y - D.y), Pt = D.y + ot * (this.x - D.x) + W * (this.y - D.y);
                      return this.x = xt, this.y = Pt, this;
                    },
                    _round: function() {
                      return this.x = Math.round(this.x), this.y = Math.round(this.y), this;
                    }
                  }, t.convert = function(I) {
                    return I instanceof t ? I : Array.isArray(I) ? new t(I[0], I[1]) : I;
                  };
                  var r = typeof self < "u" ? self : {};
                  function i(I, D) {
                    if (Array.isArray(I)) {
                      if (!Array.isArray(D) || I.length !== D.length)
                        return !1;
                      for (var W = 0; W < I.length; W++)
                        if (!i(I[W], D[W]))
                          return !1;
                      return !0;
                    }
                    if (typeof I == "object" && I !== null && D !== null) {
                      if (typeof D != "object")
                        return !1;
                      var ot = Object.keys(I);
                      if (ot.length !== Object.keys(D).length)
                        return !1;
                      for (var xt in I)
                        if (!i(I[xt], D[xt]))
                          return !1;
                      return !0;
                    }
                    return I === D;
                  }
                  var a = Math.pow(2, 53) - 1;
                  function l(I) {
                    if (I <= 0)
                      return 0;
                    if (I >= 1)
                      return 1;
                    var D = I * I, W = D * I;
                    return 4 * (I < 0.5 ? W : 3 * (I - D) + W - 0.75);
                  }
                  function o(I, D, W, ot) {
                    var xt = new A(I, D, W, ot);
                    return function(Pt) {
                      return xt.solve(Pt);
                    };
                  }
                  var y = o(0.25, 0.1, 0.25, 1);
                  function g(I, D, W) {
                    return Math.min(W, Math.max(D, I));
                  }
                  function x(I, D, W) {
                    var ot = W - D, xt = ((I - D) % ot + ot) % ot + D;
                    return xt === D ? W : xt;
                  }
                  function c(I, D, W) {
                    if (!I.length)
                      return W(null, []);
                    var ot = I.length, xt = new Array(I.length), Pt = null;
                    I.forEach(function(Ht, ve) {
                      D(Ht, function(Fe, Ze) {
                        Fe && (Pt = Fe), xt[ve] = Ze, --ot === 0 && W(Pt, xt);
                      });
                    });
                  }
                  function v(I) {
                    var D = [];
                    for (var W in I)
                      D.push(I[W]);
                    return D;
                  }
                  function f(I, D) {
                    var W = [];
                    for (var ot in I)
                      ot in D || W.push(ot);
                    return W;
                  }
                  function _(I) {
                    for (var D = [], W = arguments.length - 1; W-- > 0; )
                      D[W] = arguments[W + 1];
                    for (var ot = 0, xt = D; ot < xt.length; ot += 1) {
                      var Pt = xt[ot];
                      for (var Ht in Pt)
                        I[Ht] = Pt[Ht];
                    }
                    return I;
                  }
                  function S(I, D) {
                    for (var W = {}, ot = 0; ot < D.length; ot++) {
                      var xt = D[ot];
                      xt in I && (W[xt] = I[xt]);
                    }
                    return W;
                  }
                  var M = 1;
                  function C() {
                    return M++;
                  }
                  function m() {
                    function I(D) {
                      return D ? (D ^ Math.random() * 16 >> D / 4).toString(16) : ([1e7] + -[1e3] + -4e3 + -8e3 + -1e11).replace(/[018]/g, I);
                    }
                    return I();
                  }
                  function L(I) {
                    return I <= 1 ? 1 : Math.pow(2, Math.ceil(Math.log(I) / Math.LN2));
                  }
                  function d(I) {
                    return I ? /^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(I) : !1;
                  }
                  function h(I, D) {
                    I.forEach(function(W) {
                      D[W] && (D[W] = D[W].bind(D));
                    });
                  }
                  function E(I, D) {
                    return I.indexOf(D, I.length - D.length) !== -1;
                  }
                  function w(I, D, W) {
                    var ot = {};
                    for (var xt in I)
                      ot[xt] = D.call(W || this, I[xt], xt, I);
                    return ot;
                  }
                  function z(I, D, W) {
                    var ot = {};
                    for (var xt in I)
                      D.call(W || this, I[xt], xt, I) && (ot[xt] = I[xt]);
                    return ot;
                  }
                  function O(I) {
                    return Array.isArray(I) ? I.map(O) : typeof I == "object" && I ? w(I, O) : I;
                  }
                  function B(I, D) {
                    for (var W = 0; W < I.length; W++)
                      if (D.indexOf(I[W]) >= 0)
                        return !0;
                    return !1;
                  }
                  var V = {};
                  function U(I) {
                    V[I] || (typeof console < "u" && console.warn(I), V[I] = !0);
                  }
                  function H(I, D, W) {
                    return (W.y - I.y) * (D.x - I.x) > (D.y - I.y) * (W.x - I.x);
                  }
                  function F(I) {
                    for (var D = 0, W = 0, ot = I.length, xt = ot - 1, Pt = void 0, Ht = void 0; W < ot; xt = W++)
                      Pt = I[W], Ht = I[xt], D += (Ht.x - Pt.x) * (Pt.y + Ht.y);
                    return D;
                  }
                  function G(I) {
                    var D = I[0], W = I[1], ot = I[2];
                    return W += 90, W *= Math.PI / 180, ot *= Math.PI / 180, {
                      x: D * Math.cos(W) * Math.sin(ot),
                      y: D * Math.sin(W) * Math.sin(ot),
                      z: D * Math.cos(ot)
                    };
                  }
                  function q() {
                    return typeof WorkerGlobalScope < "u" && typeof self < "u" && self instanceof WorkerGlobalScope;
                  }
                  function rt(I) {
                    var D = /(?:^|(?:\s*\,\s*))([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g, W = {};
                    if (I.replace(D, function(xt, Pt, Ht, ve) {
                      var Fe = Ht || ve;
                      return W[Pt] = Fe ? Fe.toLowerCase() : !0, "";
                    }), W["max-age"]) {
                      var ot = parseInt(W["max-age"], 10);
                      isNaN(ot) ? delete W["max-age"] : W["max-age"] = ot;
                    }
                    return W;
                  }
                  var st = null;
                  function vt(I) {
                    if (st == null) {
                      var D = I.navigator ? I.navigator.userAgent : null;
                      st = !!I.safari || !!(D && (/\b(iPad|iPhone|iPod)\b/.test(D) || D.match("Safari") && !D.match("Chrome")));
                    }
                    return st;
                  }
                  function ht(I) {
                    try {
                      var D = r[I];
                      return D.setItem("_mapbox_test_", 1), D.removeItem("_mapbox_test_"), !0;
                    } catch {
                      return !1;
                    }
                  }
                  function et(I) {
                    return r.btoa(encodeURIComponent(I).replace(/%([0-9A-F]{2})/g, function(D, W) {
                      return String.fromCharCode(+("0x" + W));
                    }));
                  }
                  function Q(I) {
                    return decodeURIComponent(r.atob(I).split("").map(function(D) {
                      return "%" + ("00" + D.charCodeAt(0).toString(16)).slice(-2);
                    }).join(""));
                  }
                  var j = r.performance && r.performance.now ? r.performance.now.bind(r.performance) : Date.now.bind(Date), at = r.requestAnimationFrame || r.mozRequestAnimationFrame || r.webkitRequestAnimationFrame || r.msRequestAnimationFrame, ut = r.cancelAnimationFrame || r.mozCancelAnimationFrame || r.webkitCancelAnimationFrame || r.msCancelAnimationFrame, nt, X, ct = {
                    now: j,
                    frame: function(D) {
                      var W = at(D);
                      return {
                        cancel: function() {
                          return ut(W);
                        }
                      };
                    },
                    getImageData: function(D, W) {
                      W === void 0 && (W = 0);
                      var ot = r.document.createElement("canvas"), xt = ot.getContext("2d");
                      if (!xt)
                        throw new Error("failed to create canvas 2d context");
                      return ot.width = D.width, ot.height = D.height, xt.drawImage(D, 0, 0, D.width, D.height), xt.getImageData(-W, -W, D.width + 2 * W, D.height + 2 * W);
                    },
                    resolveURL: function(D) {
                      return nt || (nt = r.document.createElement("a")), nt.href = D, nt.href;
                    },
                    hardwareConcurrency: r.navigator && r.navigator.hardwareConcurrency || 4,
                    get devicePixelRatio() {
                      return r.devicePixelRatio;
                    },
                    get prefersReducedMotion() {
                      return r.matchMedia ? (X == null && (X = r.matchMedia("(prefers-reduced-motion: reduce)")), X.matches) : !1;
                    }
                  }, lt = {
                    API_URL: "https://api.mapbox.com",
                    get EVENTS_URL() {
                      return this.API_URL ? this.API_URL.indexOf("https://api.mapbox.cn") === 0 ? "https://events.mapbox.cn/events/v2" : this.API_URL.indexOf("https://api.mapbox.com") === 0 ? "https://events.mapbox.com/events/v2" : null : null;
                    },
                    FEEDBACK_URL: "https://apps.mapbox.com/feedback",
                    REQUIRE_ACCESS_TOKEN: !0,
                    ACCESS_TOKEN: null,
                    MAX_PARALLEL_IMAGE_REQUESTS: 16
                  }, pt = {
                    supported: !1,
                    testSupport: Jt
                  }, wt, Et = !1, Ct, Gt = !1;
                  r.document && (Ct = r.document.createElement("img"), Ct.onload = function() {
                    wt && Qt(wt), wt = null, Gt = !0;
                  }, Ct.onerror = function() {
                    Et = !0, wt = null;
                  }, Ct.src = "data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=");
                  function Jt(I) {
                    Et || !Ct || (Gt ? Qt(I) : wt = I);
                  }
                  function Qt(I) {
                    var D = I.createTexture();
                    I.bindTexture(I.TEXTURE_2D, D);
                    try {
                      if (I.texImage2D(I.TEXTURE_2D, 0, I.RGBA, I.RGBA, I.UNSIGNED_BYTE, Ct), I.isContextLost())
                        return;
                      pt.supported = !0;
                    } catch {
                    }
                    I.deleteTexture(D), Et = !0;
                  }
                  var Vt = "01";
                  function zt() {
                    for (var I = "1", D = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", W = "", ot = 0; ot < 10; ot++)
                      W += D[Math.floor(Math.random() * 62)];
                    var xt = 12 * 60 * 60 * 1e3, Pt = [
                      I,
                      Vt,
                      W
                    ].join(""), Ht = Date.now() + xt;
                    return {
                      token: Pt,
                      tokenExpiresAt: Ht
                    };
                  }
                  var Rt = function(D, W) {
                    this._transformRequestFn = D, this._customAccessToken = W, this._createSkuToken();
                  };
                  Rt.prototype._createSkuToken = function() {
                    var D = zt();
                    this._skuToken = D.token, this._skuTokenExpiresAt = D.tokenExpiresAt;
                  }, Rt.prototype._isSkuTokenExpired = function() {
                    return Date.now() > this._skuTokenExpiresAt;
                  }, Rt.prototype.transformRequest = function(D, W) {
                    return this._transformRequestFn ? this._transformRequestFn(D, W) || { url: D } : { url: D };
                  }, Rt.prototype.normalizeStyleURL = function(D, W) {
                    if (!Wt(D))
                      return D;
                    var ot = ae(D);
                    return ot.path = "/styles/v1" + ot.path, this._makeAPIURL(ot, this._customAccessToken || W);
                  }, Rt.prototype.normalizeGlyphsURL = function(D, W) {
                    if (!Wt(D))
                      return D;
                    var ot = ae(D);
                    return ot.path = "/fonts/v1" + ot.path, this._makeAPIURL(ot, this._customAccessToken || W);
                  }, Rt.prototype.normalizeSourceURL = function(D, W) {
                    if (!Wt(D))
                      return D;
                    var ot = ae(D);
                    return ot.path = "/v4/" + ot.authority + ".json", ot.params.push("secure"), this._makeAPIURL(ot, this._customAccessToken || W);
                  }, Rt.prototype.normalizeSpriteURL = function(D, W, ot, xt) {
                    var Pt = ae(D);
                    return Wt(D) ? (Pt.path = "/styles/v1" + Pt.path + "/sprite" + W + ot, this._makeAPIURL(Pt, this._customAccessToken || xt)) : (Pt.path += "" + W + ot, Se(Pt));
                  }, Rt.prototype.normalizeTileURL = function(D, W) {
                    if (this._isSkuTokenExpired() && this._createSkuToken(), D && !Wt(D))
                      return D;
                    var ot = ae(D), xt = /(\.(png|jpg)\d*)(?=$)/, Pt = /^.+\/v4\//, Ht = ct.devicePixelRatio >= 2 || W === 512 ? "@2x" : "", ve = pt.supported ? ".webp" : "$1";
                    ot.path = ot.path.replace(xt, "" + Ht + ve), ot.path = ot.path.replace(Pt, "/"), ot.path = "/v4" + ot.path;
                    var Fe = this._customAccessToken || _e(ot.params) || lt.ACCESS_TOKEN;
                    return lt.REQUIRE_ACCESS_TOKEN && Fe && this._skuToken && ot.params.push("sku=" + this._skuToken), this._makeAPIURL(ot, Fe);
                  }, Rt.prototype.canonicalizeTileURL = function(D, W) {
                    var ot = "/v4/", xt = /\.[\w]+$/, Pt = ae(D);
                    if (!Pt.path.match(/(^\/v4\/)/) || !Pt.path.match(xt))
                      return D;
                    var Ht = "mapbox://tiles/";
                    Ht += Pt.path.replace(ot, "");
                    var ve = Pt.params;
                    return W && (ve = ve.filter(function(Fe) {
                      return !Fe.match(/^access_token=/);
                    })), ve.length && (Ht += "?" + ve.join("&")), Ht;
                  }, Rt.prototype.canonicalizeTileset = function(D, W) {
                    for (var ot = W ? Wt(W) : !1, xt = [], Pt = 0, Ht = D.tiles || []; Pt < Ht.length; Pt += 1) {
                      var ve = Ht[Pt];
                      re(ve) ? xt.push(this.canonicalizeTileURL(ve, ot)) : xt.push(ve);
                    }
                    return xt;
                  }, Rt.prototype._makeAPIURL = function(D, W) {
                    var ot = "See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes", xt = ae(lt.API_URL);
                    if (D.protocol = xt.protocol, D.authority = xt.authority, D.protocol === "http") {
                      var Pt = D.params.indexOf("secure");
                      Pt >= 0 && D.params.splice(Pt, 1);
                    }
                    if (xt.path !== "/" && (D.path = "" + xt.path + D.path), !lt.REQUIRE_ACCESS_TOKEN)
                      return Se(D);
                    if (W = W || lt.ACCESS_TOKEN, !W)
                      throw new Error("An API access token is required to use Mapbox GL. " + ot);
                    if (W[0] === "s")
                      throw new Error("Use a public access token (pk.*) with Mapbox GL, not a secret access token (sk.*). " + ot);
                    return D.params = D.params.filter(function(Ht) {
                      return Ht.indexOf("access_token") === -1;
                    }), D.params.push("access_token=" + W), Se(D);
                  };
                  function Wt(I) {
                    return I.indexOf("mapbox:") === 0;
                  }
                  var kt = /^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/|\?|$)/i;
                  function re(I) {
                    return kt.test(I);
                  }
                  function ge(I) {
                    return I.indexOf("sku=") > 0 && re(I);
                  }
                  function _e(I) {
                    for (var D = 0, W = I; D < W.length; D += 1) {
                      var ot = W[D], xt = ot.match(/^access_token=(.*)$/);
                      if (xt)
                        return xt[1];
                    }
                    return null;
                  }
                  var ce = /^(\w+):\/\/([^/?]*)(\/[^?]+)?\??(.+)?/;
                  function ae(I) {
                    var D = I.match(ce);
                    if (!D)
                      throw new Error("Unable to parse URL object");
                    return {
                      protocol: D[1],
                      authority: D[2],
                      path: D[3] || "/",
                      params: D[4] ? D[4].split("&") : []
                    };
                  }
                  function Se(I) {
                    var D = I.params.length ? "?" + I.params.join("&") : "";
                    return I.protocol + "://" + I.authority + I.path + D;
                  }
                  var ze = "mapbox.eventData";
                  function Ne(I) {
                    if (!I)
                      return null;
                    var D = I.split(".");
                    if (!D || D.length !== 3)
                      return null;
                    try {
                      var W = JSON.parse(Q(D[1]));
                      return W;
                    } catch {
                      return null;
                    }
                  }
                  var Ve = function(D) {
                    this.type = D, this.anonId = null, this.eventData = {}, this.queue = [], this.pendingRequest = null;
                  };
                  Ve.prototype.getStorageKey = function(D) {
                    var W = Ne(lt.ACCESS_TOKEN), ot = "";
                    return W && W.u ? ot = et(W.u) : ot = lt.ACCESS_TOKEN || "", D ? ze + "." + D + ":" + ot : ze + ":" + ot;
                  }, Ve.prototype.fetchEventData = function() {
                    var D = ht("localStorage"), W = this.getStorageKey(), ot = this.getStorageKey("uuid");
                    if (D)
                      try {
                        var xt = r.localStorage.getItem(W);
                        xt && (this.eventData = JSON.parse(xt));
                        var Pt = r.localStorage.getItem(ot);
                        Pt && (this.anonId = Pt);
                      } catch {
                        U("Unable to read from LocalStorage");
                      }
                  }, Ve.prototype.saveEventData = function() {
                    var D = ht("localStorage"), W = this.getStorageKey(), ot = this.getStorageKey("uuid");
                    if (D)
                      try {
                        r.localStorage.setItem(ot, this.anonId), Object.keys(this.eventData).length >= 1 && r.localStorage.setItem(W, JSON.stringify(this.eventData));
                      } catch {
                        U("Unable to write to LocalStorage");
                      }
                  }, Ve.prototype.processRequests = function(D) {
                  }, Ve.prototype.postEvent = function(D, W, ot, xt) {
                    var Pt = this;
                    if (lt.EVENTS_URL) {
                      var Ht = ae(lt.EVENTS_URL);
                      Ht.params.push("access_token=" + (xt || lt.ACCESS_TOKEN || ""));
                      var ve = {
                        event: this.type,
                        created: new Date(D).toISOString(),
                        sdkIdentifier: "mapbox-gl-js",
                        sdkVersion: T,
                        skuId: Vt,
                        userId: this.anonId
                      }, Fe = W ? _(ve, W) : ve, Ze = {
                        url: Se(Ht),
                        headers: { "Content-Type": "text/plain" },
                        body: JSON.stringify([Fe])
                      };
                      this.pendingRequest = hr(Ze, function(nr) {
                        Pt.pendingRequest = null, ot(nr), Pt.saveEventData(), Pt.processRequests(xt);
                      });
                    }
                  }, Ve.prototype.queueRequest = function(D, W) {
                    this.queue.push(D), this.processRequests(W);
                  };
                  var Oe = function(I) {
                    function D() {
                      I.call(this, "map.load"), this.success = {}, this.skuToken = "";
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype.postMapLoadEvent = function(ot, xt, Pt, Ht) {
                      this.skuToken = Pt, (lt.EVENTS_URL && Ht || lt.ACCESS_TOKEN && Array.isArray(ot) && ot.some(function(ve) {
                        return Wt(ve) || re(ve);
                      })) && this.queueRequest({
                        id: xt,
                        timestamp: Date.now()
                      }, Ht);
                    }, D.prototype.processRequests = function(ot) {
                      var xt = this;
                      if (!(this.pendingRequest || this.queue.length === 0)) {
                        var Pt = this.queue.shift(), Ht = Pt.id, ve = Pt.timestamp;
                        Ht && this.success[Ht] || (this.anonId || this.fetchEventData(), d(this.anonId) || (this.anonId = m()), this.postEvent(ve, { skuToken: this.skuToken }, function(Fe) {
                          Fe || Ht && (xt.success[Ht] = !0);
                        }, ot));
                      }
                    }, D;
                  }(Ve), ur = function(I) {
                    function D(W) {
                      I.call(this, "appUserTurnstile"), this._customAccessToken = W;
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype.postTurnstileEvent = function(ot, xt) {
                      lt.EVENTS_URL && lt.ACCESS_TOKEN && Array.isArray(ot) && ot.some(function(Pt) {
                        return Wt(Pt) || re(Pt);
                      }) && this.queueRequest(Date.now(), xt);
                    }, D.prototype.processRequests = function(ot) {
                      var xt = this;
                      if (!(this.pendingRequest || this.queue.length === 0)) {
                        (!this.anonId || !this.eventData.lastSuccess || !this.eventData.tokenU) && this.fetchEventData();
                        var Pt = Ne(lt.ACCESS_TOKEN), Ht = Pt ? Pt.u : lt.ACCESS_TOKEN, ve = Ht !== this.eventData.tokenU;
                        d(this.anonId) || (this.anonId = m(), ve = !0);
                        var Fe = this.queue.shift();
                        if (this.eventData.lastSuccess) {
                          var Ze = new Date(this.eventData.lastSuccess), nr = new Date(Fe), wr = (Fe - this.eventData.lastSuccess) / (24 * 60 * 60 * 1e3);
                          ve = ve || wr >= 1 || wr < -1 || Ze.getDate() !== nr.getDate();
                        } else
                          ve = !0;
                        if (!ve)
                          return this.processRequests();
                        this.postEvent(Fe, { "enabled.telemetry": !1 }, function(Fr) {
                          Fr || (xt.eventData.lastSuccess = Fe, xt.eventData.tokenU = Ht);
                        }, ot);
                      }
                    }, D;
                  }(Ve), ie = new ur(), $t = ie.postTurnstileEvent.bind(ie), jt = new Oe(), ee = jt.postMapLoadEvent.bind(jt), Bt = "mapbox-tiles", Xt = 500, Zt = 50, ye = 1e3 * 60 * 7, Mt;
                  function St() {
                    r.caches && !Mt && (Mt = r.caches.open(Bt));
                  }
                  var Lt;
                  function te(I, D) {
                    if (Lt === void 0)
                      try {
                        new Response(new ReadableStream()), Lt = !0;
                      } catch {
                        Lt = !1;
                      }
                    Lt ? D(I.body) : I.blob().then(D);
                  }
                  function fe(I, D, W) {
                    if (St(), !!Mt) {
                      var ot = {
                        status: D.status,
                        statusText: D.statusText,
                        headers: new r.Headers()
                      };
                      D.headers.forEach(function(Ht, ve) {
                        return ot.headers.set(ve, Ht);
                      });
                      var xt = rt(D.headers.get("Cache-Control") || "");
                      if (!xt["no-store"]) {
                        xt["max-age"] && ot.headers.set("Expires", new Date(W + xt["max-age"] * 1e3).toUTCString());
                        var Pt = new Date(ot.headers.get("Expires")).getTime() - W;
                        Pt < ye || te(D, function(Ht) {
                          var ve = new r.Response(Ht, ot);
                          St(), Mt && Mt.then(function(Fe) {
                            return Fe.put(Me(I.url), ve);
                          }).catch(function(Fe) {
                            return U(Fe.message);
                          });
                        });
                      }
                    }
                  }
                  function Me(I) {
                    var D = I.indexOf("?");
                    return D < 0 ? I : I.slice(0, D);
                  }
                  function ir(I, D) {
                    if (St(), !Mt)
                      return D(null);
                    var W = Me(I.url);
                    Mt.then(function(ot) {
                      ot.match(W).then(function(xt) {
                        var Pt = mr(xt);
                        ot.delete(W), Pt && ot.put(W, xt.clone()), D(null, xt, Pt);
                      }).catch(D);
                    }).catch(D);
                  }
                  function mr(I) {
                    if (!I)
                      return !1;
                    var D = new Date(I.headers.get("Expires") || 0), W = rt(I.headers.get("Cache-Control") || "");
                    return D > Date.now() && !W["no-cache"];
                  }
                  var Xe = 1 / 0;
                  function xe(I) {
                    Xe++, Xe > Zt && (I.getActor().send("enforceCacheSizeLimit", Xt), Xe = 0);
                  }
                  function me(I) {
                    St(), Mt && Mt.then(function(D) {
                      D.keys().then(function(W) {
                        for (var ot = 0; ot < W.length - I; ot++)
                          D.delete(W[ot]);
                      });
                    });
                  }
                  function Le(I) {
                    var D = r.caches.delete(Bt);
                    I && D.catch(I).then(function() {
                      return I();
                    });
                  }
                  function qt(I, D) {
                    Xt = I, Zt = D;
                  }
                  var De;
                  function Je() {
                    return De == null && (De = r.OffscreenCanvas && new r.OffscreenCanvas(1, 1).getContext("2d") && typeof r.createImageBitmap == "function"), De;
                  }
                  var dr = {
                    Unknown: "Unknown",
                    Style: "Style",
                    Source: "Source",
                    Tile: "Tile",
                    Glyphs: "Glyphs",
                    SpriteImage: "SpriteImage",
                    SpriteJSON: "SpriteJSON",
                    Image: "Image"
                  };
                  typeof Object.freeze == "function" && Object.freeze(dr);
                  var qe = function(I) {
                    function D(W, ot, xt) {
                      ot === 401 && re(xt) && (W += ": you may have provided an invalid Mapbox access token. See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes"), I.call(this, W), this.status = ot, this.url = xt, this.name = this.constructor.name, this.message = W;
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype.toString = function() {
                      return this.name + ": " + this.message + " (" + this.status + "): " + this.url;
                    }, D;
                  }(Error), we = q() ? function() {
                    return self.worker && self.worker.referrer;
                  } : function() {
                    return (r.location.protocol === "blob:" ? r.parent : r).location.href;
                  }, ue = function(I) {
                    return /^file:/.test(I) || /^file:/.test(we()) && !/^\w+:/.test(I);
                  };
                  function Pe(I, D) {
                    var W = new r.AbortController(), ot = new r.Request(I.url, {
                      method: I.method || "GET",
                      body: I.body,
                      credentials: I.credentials,
                      headers: I.headers,
                      referrer: we(),
                      signal: W.signal
                    }), xt = !1, Pt = !1, Ht = ge(ot.url);
                    I.type === "json" && ot.headers.set("Accept", "application/json");
                    var ve = function(Ze, nr, wr) {
                      if (!Pt) {
                        if (Ze && Ze.message !== "SecurityError" && U(Ze), nr && wr)
                          return Fe(nr);
                        var Fr = Date.now();
                        r.fetch(ot).then(function(Rr) {
                          if (Rr.ok) {
                            var Kr = Ht ? Rr.clone() : null;
                            return Fe(Rr, Kr, Fr);
                          } else
                            return D(new qe(Rr.statusText, Rr.status, I.url));
                        }).catch(function(Rr) {
                          Rr.code !== 20 && D(new Error(Rr.message));
                        });
                      }
                    }, Fe = function(Ze, nr, wr) {
                      (I.type === "arrayBuffer" ? Ze.arrayBuffer() : I.type === "json" ? Ze.json() : Ze.text()).then(function(Fr) {
                        Pt || (nr && wr && fe(ot, nr, wr), xt = !0, D(null, Fr, Ze.headers.get("Cache-Control"), Ze.headers.get("Expires")));
                      }).catch(function(Fr) {
                        Pt || D(new Error(Fr.message));
                      });
                    };
                    return Ht ? ir(ot, ve) : ve(null, null), {
                      cancel: function() {
                        Pt = !0, xt || W.abort();
                      }
                    };
                  }
                  function Ue(I, D) {
                    var W = new r.XMLHttpRequest();
                    W.open(I.method || "GET", I.url, !0), I.type === "arrayBuffer" && (W.responseType = "arraybuffer");
                    for (var ot in I.headers)
                      W.setRequestHeader(ot, I.headers[ot]);
                    return I.type === "json" && (W.responseType = "text", W.setRequestHeader("Accept", "application/json")), W.withCredentials = I.credentials === "include", W.onerror = function() {
                      D(new Error(W.statusText));
                    }, W.onload = function() {
                      if ((W.status >= 200 && W.status < 300 || W.status === 0) && W.response !== null) {
                        var xt = W.response;
                        if (I.type === "json")
                          try {
                            xt = JSON.parse(W.response);
                          } catch (Pt) {
                            return D(Pt);
                          }
                        D(null, xt, W.getResponseHeader("Cache-Control"), W.getResponseHeader("Expires"));
                      } else
                        D(new qe(W.statusText, W.status, I.url));
                    }, W.send(I.body), {
                      cancel: function() {
                        return W.abort();
                      }
                    };
                  }
                  var Ye = function(I, D) {
                    if (!ue(I.url)) {
                      if (r.fetch && r.Request && r.AbortController && r.Request.prototype.hasOwnProperty("signal"))
                        return Pe(I, D);
                      if (q() && self.worker && self.worker.actor) {
                        var W = !0;
                        return self.worker.actor.send("getResource", I, D, void 0, W);
                      }
                    }
                    return Ue(I, D);
                  }, rr = function(I, D) {
                    return Ye(_(I, { type: "json" }), D);
                  }, lr = function(I, D) {
                    return Ye(_(I, { type: "arrayBuffer" }), D);
                  }, hr = function(I, D) {
                    return Ye(_(I, { method: "POST" }), D);
                  };
                  function Sr(I) {
                    var D = r.document.createElement("a");
                    return D.href = I, D.protocol === r.document.location.protocol && D.host === r.document.location.host;
                  }
                  var Dr = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";
                  function Or(I, D, W, ot) {
                    var xt = new r.Image(), Pt = r.URL;
                    xt.onload = function() {
                      D(null, xt), Pt.revokeObjectURL(xt.src), xt.onload = null, r.requestAnimationFrame(function() {
                        xt.src = Dr;
                      });
                    }, xt.onerror = function() {
                      return D(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."));
                    };
                    var Ht = new r.Blob([new Uint8Array(I)], { type: "image/png" });
                    xt.cacheControl = W, xt.expires = ot, xt.src = I.byteLength ? Pt.createObjectURL(Ht) : Dr;
                  }
                  function Br(I, D) {
                    var W = new r.Blob([new Uint8Array(I)], { type: "image/png" });
                    r.createImageBitmap(W).then(function(ot) {
                      D(null, ot);
                    }).catch(function(ot) {
                      D(new Error("Could not load image because of " + ot.message + ". Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."));
                    });
                  }
                  var Nr, Xr, Gr = function() {
                    Nr = [], Xr = 0;
                  };
                  Gr();
                  var oe = function(I, D) {
                    if (pt.supported && (I.headers || (I.headers = {}), I.headers.accept = "image/webp,*/*"), Xr >= lt.MAX_PARALLEL_IMAGE_REQUESTS) {
                      var W = {
                        requestParameters: I,
                        callback: D,
                        cancelled: !1,
                        cancel: function() {
                          this.cancelled = !0;
                        }
                      };
                      return Nr.push(W), W;
                    }
                    Xr++;
                    var ot = !1, xt = function() {
                      if (!ot)
                        for (ot = !0, Xr--; Nr.length && Xr < lt.MAX_PARALLEL_IMAGE_REQUESTS; ) {
                          var Ht = Nr.shift(), ve = Ht.requestParameters, Fe = Ht.callback, Ze = Ht.cancelled;
                          Ze || (Ht.cancel = oe(ve, Fe).cancel);
                        }
                    }, Pt = lr(I, function(Ht, ve, Fe, Ze) {
                      xt(), Ht ? D(Ht) : ve && (Je() ? Br(ve, D) : Or(ve, D, Fe, Ze));
                    });
                    return {
                      cancel: function() {
                        Pt.cancel(), xt();
                      }
                    };
                  }, de = function(I, D) {
                    var W = r.document.createElement("video");
                    W.muted = !0, W.onloadstart = function() {
                      D(null, W);
                    };
                    for (var ot = 0; ot < I.length; ot++) {
                      var xt = r.document.createElement("source");
                      Sr(I[ot]) || (W.crossOrigin = "Anonymous"), xt.src = I[ot], W.appendChild(xt);
                    }
                    return {
                      cancel: function() {
                      }
                    };
                  };
                  function or(I, D, W) {
                    var ot = W[I] && W[I].indexOf(D) !== -1;
                    ot || (W[I] = W[I] || [], W[I].push(D));
                  }
                  function Er(I, D, W) {
                    if (W && W[I]) {
                      var ot = W[I].indexOf(D);
                      ot !== -1 && W[I].splice(ot, 1);
                    }
                  }
                  var Tr = function(D, W) {
                    W === void 0 && (W = {}), _(this, W), this.type = D;
                  }, tr = function(I) {
                    function D(W, ot) {
                      ot === void 0 && (ot = {}), I.call(this, "error", _({ error: W }, ot));
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D;
                  }(Tr), yr = function() {
                  };
                  yr.prototype.on = function(D, W) {
                    return this._listeners = this._listeners || {}, or(D, W, this._listeners), this;
                  }, yr.prototype.off = function(D, W) {
                    return Er(D, W, this._listeners), Er(D, W, this._oneTimeListeners), this;
                  }, yr.prototype.once = function(D, W) {
                    return this._oneTimeListeners = this._oneTimeListeners || {}, or(D, W, this._oneTimeListeners), this;
                  }, yr.prototype.fire = function(D, W) {
                    typeof D == "string" && (D = new Tr(D, W || {}));
                    var ot = D.type;
                    if (this.listens(ot)) {
                      D.target = this;
                      for (var xt = this._listeners && this._listeners[ot] ? this._listeners[ot].slice() : [], Pt = 0, Ht = xt; Pt < Ht.length; Pt += 1) {
                        var ve = Ht[Pt];
                        ve.call(this, D);
                      }
                      for (var Fe = this._oneTimeListeners && this._oneTimeListeners[ot] ? this._oneTimeListeners[ot].slice() : [], Ze = 0, nr = Fe; Ze < nr.length; Ze += 1) {
                        var wr = nr[Ze];
                        Er(ot, wr, this._oneTimeListeners), wr.call(this, D);
                      }
                      var Fr = this._eventedParent;
                      Fr && (_(D, typeof this._eventedParentData == "function" ? this._eventedParentData() : this._eventedParentData), Fr.fire(D));
                    } else D instanceof tr && console.error(D.error);
                    return this;
                  }, yr.prototype.listens = function(D) {
                    return this._listeners && this._listeners[D] && this._listeners[D].length > 0 || this._oneTimeListeners && this._oneTimeListeners[D] && this._oneTimeListeners[D].length > 0 || this._eventedParent && this._eventedParent.listens(D);
                  }, yr.prototype.setEventedParent = function(D, W) {
                    return this._eventedParent = D, this._eventedParentData = W, this;
                  };
                  var Ir = 8, Cr = {
                    version: {
                      required: !0,
                      type: "enum",
                      values: [
                        8
                      ]
                    },
                    name: {
                      type: "string"
                    },
                    metadata: {
                      type: "*"
                    },
                    center: {
                      type: "array",
                      value: "number"
                    },
                    zoom: {
                      type: "number"
                    },
                    bearing: {
                      type: "number",
                      default: 0,
                      period: 360,
                      units: "degrees"
                    },
                    pitch: {
                      type: "number",
                      default: 0,
                      units: "degrees"
                    },
                    light: {
                      type: "light"
                    },
                    sources: {
                      required: !0,
                      type: "sources"
                    },
                    sprite: {
                      type: "string"
                    },
                    glyphs: {
                      type: "string"
                    },
                    transition: {
                      type: "transition"
                    },
                    layers: {
                      required: !0,
                      type: "array",
                      value: "layer"
                    }
                  }, _r = {
                    "*": {
                      type: "source"
                    }
                  }, Zr = [
                    "source_vector",
                    "source_raster",
                    "source_raster_dem",
                    "source_geojson",
                    "source_video",
                    "source_image"
                  ], ln = {
                    type: {
                      required: !0,
                      type: "enum",
                      values: {
                        vector: {}
                      }
                    },
                    url: {
                      type: "string"
                    },
                    tiles: {
                      type: "array",
                      value: "string"
                    },
                    bounds: {
                      type: "array",
                      value: "number",
                      length: 4,
                      default: [
                        -180,
                        -85.051129,
                        180,
                        85.051129
                      ]
                    },
                    scheme: {
                      type: "enum",
                      values: {
                        xyz: {},
                        tms: {}
                      },
                      default: "xyz"
                    },
                    minzoom: {
                      type: "number",
                      default: 0
                    },
                    maxzoom: {
                      type: "number",
                      default: 22
                    },
                    attribution: {
                      type: "string"
                    },
                    promoteId: {
                      type: "promoteId"
                    },
                    volatile: {
                      type: "boolean",
                      default: !1
                    },
                    "*": {
                      type: "*"
                    }
                  }, Jr = {
                    type: {
                      required: !0,
                      type: "enum",
                      values: {
                        raster: {}
                      }
                    },
                    url: {
                      type: "string"
                    },
                    tiles: {
                      type: "array",
                      value: "string"
                    },
                    bounds: {
                      type: "array",
                      value: "number",
                      length: 4,
                      default: [
                        -180,
                        -85.051129,
                        180,
                        85.051129
                      ]
                    },
                    minzoom: {
                      type: "number",
                      default: 0
                    },
                    maxzoom: {
                      type: "number",
                      default: 22
                    },
                    tileSize: {
                      type: "number",
                      default: 512,
                      units: "pixels"
                    },
                    scheme: {
                      type: "enum",
                      values: {
                        xyz: {},
                        tms: {}
                      },
                      default: "xyz"
                    },
                    attribution: {
                      type: "string"
                    },
                    volatile: {
                      type: "boolean",
                      default: !1
                    },
                    "*": {
                      type: "*"
                    }
                  }, Zn = {
                    type: {
                      required: !0,
                      type: "enum",
                      values: {
                        "raster-dem": {}
                      }
                    },
                    url: {
                      type: "string"
                    },
                    tiles: {
                      type: "array",
                      value: "string"
                    },
                    bounds: {
                      type: "array",
                      value: "number",
                      length: 4,
                      default: [
                        -180,
                        -85.051129,
                        180,
                        85.051129
                      ]
                    },
                    minzoom: {
                      type: "number",
                      default: 0
                    },
                    maxzoom: {
                      type: "number",
                      default: 22
                    },
                    tileSize: {
                      type: "number",
                      default: 512,
                      units: "pixels"
                    },
                    attribution: {
                      type: "string"
                    },
                    encoding: {
                      type: "enum",
                      values: {
                        terrarium: {},
                        mapbox: {}
                      },
                      default: "mapbox"
                    },
                    volatile: {
                      type: "boolean",
                      default: !1
                    },
                    "*": {
                      type: "*"
                    }
                  }, fn = {
                    type: {
                      required: !0,
                      type: "enum",
                      values: {
                        geojson: {}
                      }
                    },
                    data: {
                      type: "*"
                    },
                    maxzoom: {
                      type: "number",
                      default: 18
                    },
                    attribution: {
                      type: "string"
                    },
                    buffer: {
                      type: "number",
                      default: 128,
                      maximum: 512,
                      minimum: 0
                    },
                    filter: {
                      type: "*"
                    },
                    tolerance: {
                      type: "number",
                      default: 0.375
                    },
                    cluster: {
                      type: "boolean",
                      default: !1
                    },
                    clusterRadius: {
                      type: "number",
                      default: 50,
                      minimum: 0
                    },
                    clusterMaxZoom: {
                      type: "number"
                    },
                    clusterMinPoints: {
                      type: "number"
                    },
                    clusterProperties: {
                      type: "*"
                    },
                    lineMetrics: {
                      type: "boolean",
                      default: !1
                    },
                    generateId: {
                      type: "boolean",
                      default: !1
                    },
                    promoteId: {
                      type: "promoteId"
                    }
                  }, hi = {
                    type: {
                      required: !0,
                      type: "enum",
                      values: {
                        video: {}
                      }
                    },
                    urls: {
                      required: !0,
                      type: "array",
                      value: "string"
                    },
                    coordinates: {
                      required: !0,
                      type: "array",
                      length: 4,
                      value: {
                        type: "array",
                        length: 2,
                        value: "number"
                      }
                    }
                  }, Vn = {
                    type: {
                      required: !0,
                      type: "enum",
                      values: {
                        image: {}
                      }
                    },
                    url: {
                      required: !0,
                      type: "string"
                    },
                    coordinates: {
                      required: !0,
                      type: "array",
                      length: 4,
                      value: {
                        type: "array",
                        length: 2,
                        value: "number"
                      }
                    }
                  }, jr = {
                    id: {
                      type: "string",
                      required: !0
                    },
                    type: {
                      type: "enum",
                      values: {
                        fill: {},
                        line: {},
                        symbol: {},
                        circle: {},
                        heatmap: {},
                        "fill-extrusion": {},
                        raster: {},
                        hillshade: {},
                        background: {}
                      },
                      required: !0
                    },
                    metadata: {
                      type: "*"
                    },
                    source: {
                      type: "string"
                    },
                    "source-layer": {
                      type: "string"
                    },
                    minzoom: {
                      type: "number",
                      minimum: 0,
                      maximum: 24
                    },
                    maxzoom: {
                      type: "number",
                      minimum: 0,
                      maximum: 24
                    },
                    filter: {
                      type: "filter"
                    },
                    layout: {
                      type: "layout"
                    },
                    paint: {
                      type: "paint"
                    }
                  }, zr = [
                    "layout_fill",
                    "layout_line",
                    "layout_circle",
                    "layout_heatmap",
                    "layout_fill-extrusion",
                    "layout_symbol",
                    "layout_raster",
                    "layout_hillshade",
                    "layout_background"
                  ], Tn = {
                    visibility: {
                      type: "enum",
                      values: {
                        visible: {},
                        none: {}
                      },
                      default: "visible",
                      "property-type": "constant"
                    }
                  }, sn = {
                    "fill-sort-key": {
                      type: "number",
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    visibility: {
                      type: "enum",
                      values: {
                        visible: {},
                        none: {}
                      },
                      default: "visible",
                      "property-type": "constant"
                    }
                  }, $n = {
                    "circle-sort-key": {
                      type: "number",
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    visibility: {
                      type: "enum",
                      values: {
                        visible: {},
                        none: {}
                      },
                      default: "visible",
                      "property-type": "constant"
                    }
                  }, kn = {
                    visibility: {
                      type: "enum",
                      values: {
                        visible: {},
                        none: {}
                      },
                      default: "visible",
                      "property-type": "constant"
                    }
                  }, An = {
                    "line-cap": {
                      type: "enum",
                      values: {
                        butt: {},
                        round: {},
                        square: {}
                      },
                      default: "butt",
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "line-join": {
                      type: "enum",
                      values: {
                        bevel: {},
                        round: {},
                        miter: {}
                      },
                      default: "miter",
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "line-miter-limit": {
                      type: "number",
                      default: 2,
                      requires: [
                        {
                          "line-join": "miter"
                        }
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "line-round-limit": {
                      type: "number",
                      default: 1.05,
                      requires: [
                        {
                          "line-join": "round"
                        }
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "line-sort-key": {
                      type: "number",
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    visibility: {
                      type: "enum",
                      values: {
                        visible: {},
                        none: {}
                      },
                      default: "visible",
                      "property-type": "constant"
                    }
                  }, qn = {
                    "symbol-placement": {
                      type: "enum",
                      values: {
                        point: {},
                        line: {},
                        "line-center": {}
                      },
                      default: "point",
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "symbol-spacing": {
                      type: "number",
                      default: 250,
                      minimum: 1,
                      units: "pixels",
                      requires: [
                        {
                          "symbol-placement": "line"
                        }
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "symbol-avoid-edges": {
                      type: "boolean",
                      default: !1,
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "symbol-sort-key": {
                      type: "number",
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "symbol-z-order": {
                      type: "enum",
                      values: {
                        auto: {},
                        "viewport-y": {},
                        source: {}
                      },
                      default: "auto",
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "icon-allow-overlap": {
                      type: "boolean",
                      default: !1,
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "icon-ignore-placement": {
                      type: "boolean",
                      default: !1,
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "icon-optional": {
                      type: "boolean",
                      default: !1,
                      requires: [
                        "icon-image",
                        "text-field"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "icon-rotation-alignment": {
                      type: "enum",
                      values: {
                        map: {},
                        viewport: {},
                        auto: {}
                      },
                      default: "auto",
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "icon-size": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      units: "factor of the original icon size",
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "icon-text-fit": {
                      type: "enum",
                      values: {
                        none: {},
                        width: {},
                        height: {},
                        both: {}
                      },
                      default: "none",
                      requires: [
                        "icon-image",
                        "text-field"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "icon-text-fit-padding": {
                      type: "array",
                      value: "number",
                      length: 4,
                      default: [
                        0,
                        0,
                        0,
                        0
                      ],
                      units: "pixels",
                      requires: [
                        "icon-image",
                        "text-field",
                        {
                          "icon-text-fit": [
                            "both",
                            "width",
                            "height"
                          ]
                        }
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "icon-image": {
                      type: "resolvedImage",
                      tokens: !0,
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "icon-rotate": {
                      type: "number",
                      default: 0,
                      period: 360,
                      units: "degrees",
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "icon-padding": {
                      type: "number",
                      default: 2,
                      minimum: 0,
                      units: "pixels",
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "icon-keep-upright": {
                      type: "boolean",
                      default: !1,
                      requires: [
                        "icon-image",
                        {
                          "icon-rotation-alignment": "map"
                        },
                        {
                          "symbol-placement": [
                            "line",
                            "line-center"
                          ]
                        }
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "icon-offset": {
                      type: "array",
                      value: "number",
                      length: 2,
                      default: [
                        0,
                        0
                      ],
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "icon-anchor": {
                      type: "enum",
                      values: {
                        center: {},
                        left: {},
                        right: {},
                        top: {},
                        bottom: {},
                        "top-left": {},
                        "top-right": {},
                        "bottom-left": {},
                        "bottom-right": {}
                      },
                      default: "center",
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "icon-pitch-alignment": {
                      type: "enum",
                      values: {
                        map: {},
                        viewport: {},
                        auto: {}
                      },
                      default: "auto",
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "text-pitch-alignment": {
                      type: "enum",
                      values: {
                        map: {},
                        viewport: {},
                        auto: {}
                      },
                      default: "auto",
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "text-rotation-alignment": {
                      type: "enum",
                      values: {
                        map: {},
                        viewport: {},
                        auto: {}
                      },
                      default: "auto",
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "text-field": {
                      type: "formatted",
                      default: "",
                      tokens: !0,
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-font": {
                      type: "array",
                      value: "string",
                      default: [
                        "Open Sans Regular",
                        "Arial Unicode MS Regular"
                      ],
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-size": {
                      type: "number",
                      default: 16,
                      minimum: 0,
                      units: "pixels",
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-max-width": {
                      type: "number",
                      default: 10,
                      minimum: 0,
                      units: "ems",
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-line-height": {
                      type: "number",
                      default: 1.2,
                      units: "ems",
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "text-letter-spacing": {
                      type: "number",
                      default: 0,
                      units: "ems",
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-justify": {
                      type: "enum",
                      values: {
                        auto: {},
                        left: {},
                        center: {},
                        right: {}
                      },
                      default: "center",
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-radial-offset": {
                      type: "number",
                      units: "ems",
                      default: 0,
                      requires: [
                        "text-field"
                      ],
                      "property-type": "data-driven",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      }
                    },
                    "text-variable-anchor": {
                      type: "array",
                      value: "enum",
                      values: {
                        center: {},
                        left: {},
                        right: {},
                        top: {},
                        bottom: {},
                        "top-left": {},
                        "top-right": {},
                        "bottom-left": {},
                        "bottom-right": {}
                      },
                      requires: [
                        "text-field",
                        {
                          "symbol-placement": [
                            "point"
                          ]
                        }
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "text-anchor": {
                      type: "enum",
                      values: {
                        center: {},
                        left: {},
                        right: {},
                        top: {},
                        bottom: {},
                        "top-left": {},
                        "top-right": {},
                        "bottom-left": {},
                        "bottom-right": {}
                      },
                      default: "center",
                      requires: [
                        "text-field",
                        {
                          "!": "text-variable-anchor"
                        }
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-max-angle": {
                      type: "number",
                      default: 45,
                      units: "degrees",
                      requires: [
                        "text-field",
                        {
                          "symbol-placement": [
                            "line",
                            "line-center"
                          ]
                        }
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "text-writing-mode": {
                      type: "array",
                      value: "enum",
                      values: {
                        horizontal: {},
                        vertical: {}
                      },
                      requires: [
                        "text-field",
                        {
                          "symbol-placement": [
                            "point"
                          ]
                        }
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "text-rotate": {
                      type: "number",
                      default: 0,
                      period: 360,
                      units: "degrees",
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-padding": {
                      type: "number",
                      default: 2,
                      minimum: 0,
                      units: "pixels",
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "text-keep-upright": {
                      type: "boolean",
                      default: !0,
                      requires: [
                        "text-field",
                        {
                          "text-rotation-alignment": "map"
                        },
                        {
                          "symbol-placement": [
                            "line",
                            "line-center"
                          ]
                        }
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "text-transform": {
                      type: "enum",
                      values: {
                        none: {},
                        uppercase: {},
                        lowercase: {}
                      },
                      default: "none",
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-offset": {
                      type: "array",
                      value: "number",
                      units: "ems",
                      length: 2,
                      default: [
                        0,
                        0
                      ],
                      requires: [
                        "text-field",
                        {
                          "!": "text-radial-offset"
                        }
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-allow-overlap": {
                      type: "boolean",
                      default: !1,
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "text-ignore-placement": {
                      type: "boolean",
                      default: !1,
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "text-optional": {
                      type: "boolean",
                      default: !1,
                      requires: [
                        "text-field",
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    visibility: {
                      type: "enum",
                      values: {
                        visible: {},
                        none: {}
                      },
                      default: "visible",
                      "property-type": "constant"
                    }
                  }, si = {
                    visibility: {
                      type: "enum",
                      values: {
                        visible: {},
                        none: {}
                      },
                      default: "visible",
                      "property-type": "constant"
                    }
                  }, qi = {
                    visibility: {
                      type: "enum",
                      values: {
                        visible: {},
                        none: {}
                      },
                      default: "visible",
                      "property-type": "constant"
                    }
                  }, ha = {
                    type: "array",
                    value: "*"
                  }, Mi = {
                    type: "enum",
                    values: {
                      "==": {},
                      "!=": {},
                      ">": {},
                      ">=": {},
                      "<": {},
                      "<=": {},
                      in: {},
                      "!in": {},
                      all: {},
                      any: {},
                      none: {},
                      has: {},
                      "!has": {},
                      within: {}
                    }
                  }, Ji = {
                    type: "enum",
                    values: {
                      Point: {},
                      LineString: {},
                      Polygon: {}
                    }
                  }, ci = {
                    type: "array",
                    minimum: 0,
                    maximum: 24,
                    value: [
                      "number",
                      "color"
                    ],
                    length: 2
                  }, rn = {
                    type: "array",
                    value: "*",
                    minimum: 1
                  }, Cn = {
                    anchor: {
                      type: "enum",
                      default: "viewport",
                      values: {
                        map: {},
                        viewport: {}
                      },
                      "property-type": "data-constant",
                      transition: !1,
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      }
                    },
                    position: {
                      type: "array",
                      default: [
                        1.15,
                        210,
                        30
                      ],
                      length: 3,
                      value: "number",
                      "property-type": "data-constant",
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      }
                    },
                    color: {
                      type: "color",
                      "property-type": "data-constant",
                      default: "#ffffff",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      transition: !0
                    },
                    intensity: {
                      type: "number",
                      "property-type": "data-constant",
                      default: 0.5,
                      minimum: 0,
                      maximum: 1,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      transition: !0
                    }
                  }, Un = [
                    "paint_fill",
                    "paint_line",
                    "paint_circle",
                    "paint_heatmap",
                    "paint_fill-extrusion",
                    "paint_symbol",
                    "paint_raster",
                    "paint_hillshade",
                    "paint_background"
                  ], Fn = {
                    "fill-antialias": {
                      type: "boolean",
                      default: !0,
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "fill-opacity": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      maximum: 1,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "fill-color": {
                      type: "color",
                      default: "#000000",
                      transition: !0,
                      requires: [
                        {
                          "!": "fill-pattern"
                        }
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "fill-outline-color": {
                      type: "color",
                      transition: !0,
                      requires: [
                        {
                          "!": "fill-pattern"
                        },
                        {
                          "fill-antialias": !0
                        }
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "fill-translate": {
                      type: "array",
                      value: "number",
                      length: 2,
                      default: [
                        0,
                        0
                      ],
                      transition: !0,
                      units: "pixels",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "fill-translate-anchor": {
                      type: "enum",
                      values: {
                        map: {},
                        viewport: {}
                      },
                      default: "map",
                      requires: [
                        "fill-translate"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "fill-pattern": {
                      type: "resolvedImage",
                      transition: !0,
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "cross-faded-data-driven"
                    }
                  }, mi = {
                    "line-opacity": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      maximum: 1,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "line-color": {
                      type: "color",
                      default: "#000000",
                      transition: !0,
                      requires: [
                        {
                          "!": "line-pattern"
                        }
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "line-translate": {
                      type: "array",
                      value: "number",
                      length: 2,
                      default: [
                        0,
                        0
                      ],
                      transition: !0,
                      units: "pixels",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "line-translate-anchor": {
                      type: "enum",
                      values: {
                        map: {},
                        viewport: {}
                      },
                      default: "map",
                      requires: [
                        "line-translate"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "line-width": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      transition: !0,
                      units: "pixels",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "line-gap-width": {
                      type: "number",
                      default: 0,
                      minimum: 0,
                      transition: !0,
                      units: "pixels",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "line-offset": {
                      type: "number",
                      default: 0,
                      transition: !0,
                      units: "pixels",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "line-blur": {
                      type: "number",
                      default: 0,
                      minimum: 0,
                      transition: !0,
                      units: "pixels",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "line-dasharray": {
                      type: "array",
                      value: "number",
                      minimum: 0,
                      transition: !0,
                      units: "line widths",
                      requires: [
                        {
                          "!": "line-pattern"
                        }
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "cross-faded"
                    },
                    "line-pattern": {
                      type: "resolvedImage",
                      transition: !0,
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "cross-faded-data-driven"
                    },
                    "line-gradient": {
                      type: "color",
                      transition: !1,
                      requires: [
                        {
                          "!": "line-dasharray"
                        },
                        {
                          "!": "line-pattern"
                        },
                        {
                          source: "geojson",
                          has: {
                            lineMetrics: !0
                          }
                        }
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "line-progress"
                        ]
                      },
                      "property-type": "color-ramp"
                    }
                  }, Nn = {
                    "circle-radius": {
                      type: "number",
                      default: 5,
                      minimum: 0,
                      transition: !0,
                      units: "pixels",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "circle-color": {
                      type: "color",
                      default: "#000000",
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "circle-blur": {
                      type: "number",
                      default: 0,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "circle-opacity": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      maximum: 1,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "circle-translate": {
                      type: "array",
                      value: "number",
                      length: 2,
                      default: [
                        0,
                        0
                      ],
                      transition: !0,
                      units: "pixels",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "circle-translate-anchor": {
                      type: "enum",
                      values: {
                        map: {},
                        viewport: {}
                      },
                      default: "map",
                      requires: [
                        "circle-translate"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "circle-pitch-scale": {
                      type: "enum",
                      values: {
                        map: {},
                        viewport: {}
                      },
                      default: "map",
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "circle-pitch-alignment": {
                      type: "enum",
                      values: {
                        map: {},
                        viewport: {}
                      },
                      default: "viewport",
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "circle-stroke-width": {
                      type: "number",
                      default: 0,
                      minimum: 0,
                      transition: !0,
                      units: "pixels",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "circle-stroke-color": {
                      type: "color",
                      default: "#000000",
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "circle-stroke-opacity": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      maximum: 1,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    }
                  }, di = {
                    "heatmap-radius": {
                      type: "number",
                      default: 30,
                      minimum: 1,
                      transition: !0,
                      units: "pixels",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "heatmap-weight": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      transition: !1,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "heatmap-intensity": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "heatmap-color": {
                      type: "color",
                      default: [
                        "interpolate",
                        [
                          "linear"
                        ],
                        [
                          "heatmap-density"
                        ],
                        0,
                        "rgba(0, 0, 255, 0)",
                        0.1,
                        "royalblue",
                        0.3,
                        "cyan",
                        0.5,
                        "lime",
                        0.7,
                        "yellow",
                        1,
                        "red"
                      ],
                      transition: !1,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "heatmap-density"
                        ]
                      },
                      "property-type": "color-ramp"
                    },
                    "heatmap-opacity": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      maximum: 1,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    }
                  }, Ai = {
                    "icon-opacity": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      maximum: 1,
                      transition: !0,
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "icon-color": {
                      type: "color",
                      default: "#000000",
                      transition: !0,
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "icon-halo-color": {
                      type: "color",
                      default: "rgba(0, 0, 0, 0)",
                      transition: !0,
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "icon-halo-width": {
                      type: "number",
                      default: 0,
                      minimum: 0,
                      transition: !0,
                      units: "pixels",
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "icon-halo-blur": {
                      type: "number",
                      default: 0,
                      minimum: 0,
                      transition: !0,
                      units: "pixels",
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "icon-translate": {
                      type: "array",
                      value: "number",
                      length: 2,
                      default: [
                        0,
                        0
                      ],
                      transition: !0,
                      units: "pixels",
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "icon-translate-anchor": {
                      type: "enum",
                      values: {
                        map: {},
                        viewport: {}
                      },
                      default: "map",
                      requires: [
                        "icon-image",
                        "icon-translate"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "text-opacity": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      maximum: 1,
                      transition: !0,
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-color": {
                      type: "color",
                      default: "#000000",
                      transition: !0,
                      overridable: !0,
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-halo-color": {
                      type: "color",
                      default: "rgba(0, 0, 0, 0)",
                      transition: !0,
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-halo-width": {
                      type: "number",
                      default: 0,
                      minimum: 0,
                      transition: !0,
                      units: "pixels",
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-halo-blur": {
                      type: "number",
                      default: 0,
                      minimum: 0,
                      transition: !0,
                      units: "pixels",
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-translate": {
                      type: "array",
                      value: "number",
                      length: 2,
                      default: [
                        0,
                        0
                      ],
                      transition: !0,
                      units: "pixels",
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "text-translate-anchor": {
                      type: "enum",
                      values: {
                        map: {},
                        viewport: {}
                      },
                      default: "map",
                      requires: [
                        "text-field",
                        "text-translate"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    }
                  }, Gi = {
                    "raster-opacity": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      maximum: 1,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "raster-hue-rotate": {
                      type: "number",
                      default: 0,
                      period: 360,
                      transition: !0,
                      units: "degrees",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "raster-brightness-min": {
                      type: "number",
                      default: 0,
                      minimum: 0,
                      maximum: 1,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "raster-brightness-max": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      maximum: 1,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "raster-saturation": {
                      type: "number",
                      default: 0,
                      minimum: -1,
                      maximum: 1,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "raster-contrast": {
                      type: "number",
                      default: 0,
                      minimum: -1,
                      maximum: 1,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "raster-resampling": {
                      type: "enum",
                      values: {
                        linear: {},
                        nearest: {}
                      },
                      default: "linear",
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "raster-fade-duration": {
                      type: "number",
                      default: 300,
                      minimum: 0,
                      transition: !1,
                      units: "milliseconds",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    }
                  }, ia = {
                    "hillshade-illumination-direction": {
                      type: "number",
                      default: 335,
                      minimum: 0,
                      maximum: 359,
                      transition: !1,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "hillshade-illumination-anchor": {
                      type: "enum",
                      values: {
                        map: {},
                        viewport: {}
                      },
                      default: "viewport",
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "hillshade-exaggeration": {
                      type: "number",
                      default: 0.5,
                      minimum: 0,
                      maximum: 1,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "hillshade-shadow-color": {
                      type: "color",
                      default: "#000000",
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "hillshade-highlight-color": {
                      type: "color",
                      default: "#FFFFFF",
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "hillshade-accent-color": {
                      type: "color",
                      default: "#000000",
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    }
                  }, Ca = {
                    "background-color": {
                      type: "color",
                      default: "#000000",
                      transition: !0,
                      requires: [
                        {
                          "!": "background-pattern"
                        }
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "background-pattern": {
                      type: "resolvedImage",
                      transition: !0,
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "cross-faded"
                    },
                    "background-opacity": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      maximum: 1,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    }
                  }, Qr = {
                    duration: {
                      type: "number",
                      default: 300,
                      minimum: 0,
                      units: "milliseconds"
                    },
                    delay: {
                      type: "number",
                      default: 0,
                      minimum: 0,
                      units: "milliseconds"
                    }
                  }, pn = {
                    "*": {
                      type: "string"
                    }
                  }, $r = {
                    $version: Ir,
                    $root: Cr,
                    sources: _r,
                    source: Zr,
                    source_vector: ln,
                    source_raster: Jr,
                    source_raster_dem: Zn,
                    source_geojson: fn,
                    source_video: hi,
                    source_image: Vn,
                    layer: jr,
                    layout: zr,
                    layout_background: Tn,
                    layout_fill: sn,
                    layout_circle: $n,
                    layout_heatmap: kn,
                    "layout_fill-extrusion": {
                      visibility: {
                        type: "enum",
                        values: {
                          visible: {},
                          none: {}
                        },
                        default: "visible",
                        "property-type": "constant"
                      }
                    },
                    layout_line: An,
                    layout_symbol: qn,
                    layout_raster: si,
                    layout_hillshade: qi,
                    filter: ha,
                    filter_operator: Mi,
                    geometry_type: Ji,
                    function: {
                      expression: {
                        type: "expression"
                      },
                      stops: {
                        type: "array",
                        value: "function_stop"
                      },
                      base: {
                        type: "number",
                        default: 1,
                        minimum: 0
                      },
                      property: {
                        type: "string",
                        default: "$zoom"
                      },
                      type: {
                        type: "enum",
                        values: {
                          identity: {},
                          exponential: {},
                          interval: {},
                          categorical: {}
                        },
                        default: "exponential"
                      },
                      colorSpace: {
                        type: "enum",
                        values: {
                          rgb: {},
                          lab: {},
                          hcl: {}
                        },
                        default: "rgb"
                      },
                      default: {
                        type: "*",
                        required: !1
                      }
                    },
                    function_stop: ci,
                    expression: rn,
                    light: Cn,
                    paint: Un,
                    paint_fill: Fn,
                    "paint_fill-extrusion": {
                      "fill-extrusion-opacity": {
                        type: "number",
                        default: 1,
                        minimum: 0,
                        maximum: 1,
                        transition: !0,
                        expression: {
                          interpolated: !0,
                          parameters: [
                            "zoom"
                          ]
                        },
                        "property-type": "data-constant"
                      },
                      "fill-extrusion-color": {
                        type: "color",
                        default: "#000000",
                        transition: !0,
                        requires: [
                          {
                            "!": "fill-extrusion-pattern"
                          }
                        ],
                        expression: {
                          interpolated: !0,
                          parameters: [
                            "zoom",
                            "feature",
                            "feature-state"
                          ]
                        },
                        "property-type": "data-driven"
                      },
                      "fill-extrusion-translate": {
                        type: "array",
                        value: "number",
                        length: 2,
                        default: [
                          0,
                          0
                        ],
                        transition: !0,
                        units: "pixels",
                        expression: {
                          interpolated: !0,
                          parameters: [
                            "zoom"
                          ]
                        },
                        "property-type": "data-constant"
                      },
                      "fill-extrusion-translate-anchor": {
                        type: "enum",
                        values: {
                          map: {},
                          viewport: {}
                        },
                        default: "map",
                        requires: [
                          "fill-extrusion-translate"
                        ],
                        expression: {
                          interpolated: !1,
                          parameters: [
                            "zoom"
                          ]
                        },
                        "property-type": "data-constant"
                      },
                      "fill-extrusion-pattern": {
                        type: "resolvedImage",
                        transition: !0,
                        expression: {
                          interpolated: !1,
                          parameters: [
                            "zoom",
                            "feature"
                          ]
                        },
                        "property-type": "cross-faded-data-driven"
                      },
                      "fill-extrusion-height": {
                        type: "number",
                        default: 0,
                        minimum: 0,
                        units: "meters",
                        transition: !0,
                        expression: {
                          interpolated: !0,
                          parameters: [
                            "zoom",
                            "feature",
                            "feature-state"
                          ]
                        },
                        "property-type": "data-driven"
                      },
                      "fill-extrusion-base": {
                        type: "number",
                        default: 0,
                        minimum: 0,
                        units: "meters",
                        transition: !0,
                        requires: [
                          "fill-extrusion-height"
                        ],
                        expression: {
                          interpolated: !0,
                          parameters: [
                            "zoom",
                            "feature",
                            "feature-state"
                          ]
                        },
                        "property-type": "data-driven"
                      },
                      "fill-extrusion-vertical-gradient": {
                        type: "boolean",
                        default: !0,
                        transition: !1,
                        expression: {
                          interpolated: !1,
                          parameters: [
                            "zoom"
                          ]
                        },
                        "property-type": "data-constant"
                      }
                    },
                    paint_line: mi,
                    paint_circle: Nn,
                    paint_heatmap: di,
                    paint_symbol: Ai,
                    paint_raster: Gi,
                    paint_hillshade: ia,
                    paint_background: Ca,
                    transition: Qr,
                    "property-type": {
                      "data-driven": {
                        type: "property-type"
                      },
                      "cross-faded": {
                        type: "property-type"
                      },
                      "cross-faded-data-driven": {
                        type: "property-type"
                      },
                      "color-ramp": {
                        type: "property-type"
                      },
                      "data-constant": {
                        type: "property-type"
                      },
                      constant: {
                        type: "property-type"
                      }
                    },
                    promoteId: pn
                  }, mn = function(D, W, ot, xt) {
                    this.message = (D ? D + ": " : "") + ot, xt && (this.identifier = xt), W != null && W.__line__ && (this.line = W.__line__);
                  };
                  function Wn(I) {
                    var D = I.key, W = I.value;
                    return W ? [new mn(D, W, "constants have been deprecated as of v8")] : [];
                  }
                  function yi(I) {
                    for (var D = [], W = arguments.length - 1; W-- > 0; )
                      D[W] = arguments[W + 1];
                    for (var ot = 0, xt = D; ot < xt.length; ot += 1) {
                      var Pt = xt[ot];
                      for (var Ht in Pt)
                        I[Ht] = Pt[Ht];
                    }
                    return I;
                  }
                  function ei(I) {
                    return I instanceof Number || I instanceof String || I instanceof Boolean ? I.valueOf() : I;
                  }
                  function Jn(I) {
                    if (Array.isArray(I))
                      return I.map(Jn);
                    if (I instanceof Object && !(I instanceof Number || I instanceof String || I instanceof Boolean)) {
                      var D = {};
                      for (var W in I)
                        D[W] = Jn(I[W]);
                      return D;
                    }
                    return ei(I);
                  }
                  var en = function(I) {
                    function D(W, ot) {
                      I.call(this, ot), this.message = ot, this.key = W;
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D;
                  }(Error), Sn = function(D, W) {
                    W === void 0 && (W = []), this.parent = D, this.bindings = {};
                    for (var ot = 0, xt = W; ot < xt.length; ot += 1) {
                      var Pt = xt[ot], Ht = Pt[0], ve = Pt[1];
                      this.bindings[Ht] = ve;
                    }
                  };
                  Sn.prototype.concat = function(D) {
                    return new Sn(this, D);
                  }, Sn.prototype.get = function(D) {
                    if (this.bindings[D])
                      return this.bindings[D];
                    if (this.parent)
                      return this.parent.get(D);
                    throw new Error(D + " not found in scope.");
                  }, Sn.prototype.has = function(D) {
                    return this.bindings[D] ? !0 : this.parent ? this.parent.has(D) : !1;
                  };
                  var wn = { kind: "null" }, Dn = { kind: "number" }, li = { kind: "string" }, fi = { kind: "boolean" }, _i = { kind: "color" }, Ti = { kind: "object" }, bi = { kind: "value" }, ki = { kind: "error" }, Bi = { kind: "collator" }, ra = { kind: "formatted" }, Ea = { kind: "resolvedImage" };
                  function Io(I, D) {
                    return {
                      kind: "array",
                      itemType: I,
                      N: D
                    };
                  }
                  function go(I) {
                    if (I.kind === "array") {
                      var D = go(I.itemType);
                      return typeof I.N == "number" ? "array<" + D + ", " + I.N + ">" : I.itemType.kind === "value" ? "array" : "array<" + D + ">";
                    } else
                      return I.kind;
                  }
                  var Ss = [
                    wn,
                    Dn,
                    li,
                    fi,
                    _i,
                    ra,
                    Ti,
                    Io(bi),
                    Ea
                  ];
                  function Bs(I, D) {
                    if (D.kind === "error")
                      return null;
                    if (I.kind === "array") {
                      if (D.kind === "array" && (D.N === 0 && D.itemType.kind === "value" || !Bs(I.itemType, D.itemType)) && (typeof I.N != "number" || I.N === D.N))
                        return null;
                    } else {
                      if (I.kind === D.kind)
                        return null;
                      if (I.kind === "value")
                        for (var W = 0, ot = Ss; W < ot.length; W += 1) {
                          var xt = ot[W];
                          if (!Bs(xt, D))
                            return null;
                        }
                    }
                    return "Expected " + go(I) + " but found " + go(D) + " instead.";
                  }
                  function so(I, D) {
                    return D.some(function(W) {
                      return W.kind === I.kind;
                    });
                  }
                  function Ql(I, D) {
                    return D.some(function(W) {
                      return W === "null" ? I === null : W === "array" ? Array.isArray(I) : W === "object" ? I && !Array.isArray(I) && typeof I == "object" : W === typeof I;
                    });
                  }
                  var Zu = s(function(I, D) {
                    var W = {
                      transparent: [
                        0,
                        0,
                        0,
                        0
                      ],
                      aliceblue: [
                        240,
                        248,
                        255,
                        1
                      ],
                      antiquewhite: [
                        250,
                        235,
                        215,
                        1
                      ],
                      aqua: [
                        0,
                        255,
                        255,
                        1
                      ],
                      aquamarine: [
                        127,
                        255,
                        212,
                        1
                      ],
                      azure: [
                        240,
                        255,
                        255,
                        1
                      ],
                      beige: [
                        245,
                        245,
                        220,
                        1
                      ],
                      bisque: [
                        255,
                        228,
                        196,
                        1
                      ],
                      black: [
                        0,
                        0,
                        0,
                        1
                      ],
                      blanchedalmond: [
                        255,
                        235,
                        205,
                        1
                      ],
                      blue: [
                        0,
                        0,
                        255,
                        1
                      ],
                      blueviolet: [
                        138,
                        43,
                        226,
                        1
                      ],
                      brown: [
                        165,
                        42,
                        42,
                        1
                      ],
                      burlywood: [
                        222,
                        184,
                        135,
                        1
                      ],
                      cadetblue: [
                        95,
                        158,
                        160,
                        1
                      ],
                      chartreuse: [
                        127,
                        255,
                        0,
                        1
                      ],
                      chocolate: [
                        210,
                        105,
                        30,
                        1
                      ],
                      coral: [
                        255,
                        127,
                        80,
                        1
                      ],
                      cornflowerblue: [
                        100,
                        149,
                        237,
                        1
                      ],
                      cornsilk: [
                        255,
                        248,
                        220,
                        1
                      ],
                      crimson: [
                        220,
                        20,
                        60,
                        1
                      ],
                      cyan: [
                        0,
                        255,
                        255,
                        1
                      ],
                      darkblue: [
                        0,
                        0,
                        139,
                        1
                      ],
                      darkcyan: [
                        0,
                        139,
                        139,
                        1
                      ],
                      darkgoldenrod: [
                        184,
                        134,
                        11,
                        1
                      ],
                      darkgray: [
                        169,
                        169,
                        169,
                        1
                      ],
                      darkgreen: [
                        0,
                        100,
                        0,
                        1
                      ],
                      darkgrey: [
                        169,
                        169,
                        169,
                        1
                      ],
                      darkkhaki: [
                        189,
                        183,
                        107,
                        1
                      ],
                      darkmagenta: [
                        139,
                        0,
                        139,
                        1
                      ],
                      darkolivegreen: [
                        85,
                        107,
                        47,
                        1
                      ],
                      darkorange: [
                        255,
                        140,
                        0,
                        1
                      ],
                      darkorchid: [
                        153,
                        50,
                        204,
                        1
                      ],
                      darkred: [
                        139,
                        0,
                        0,
                        1
                      ],
                      darksalmon: [
                        233,
                        150,
                        122,
                        1
                      ],
                      darkseagreen: [
                        143,
                        188,
                        143,
                        1
                      ],
                      darkslateblue: [
                        72,
                        61,
                        139,
                        1
                      ],
                      darkslategray: [
                        47,
                        79,
                        79,
                        1
                      ],
                      darkslategrey: [
                        47,
                        79,
                        79,
                        1
                      ],
                      darkturquoise: [
                        0,
                        206,
                        209,
                        1
                      ],
                      darkviolet: [
                        148,
                        0,
                        211,
                        1
                      ],
                      deeppink: [
                        255,
                        20,
                        147,
                        1
                      ],
                      deepskyblue: [
                        0,
                        191,
                        255,
                        1
                      ],
                      dimgray: [
                        105,
                        105,
                        105,
                        1
                      ],
                      dimgrey: [
                        105,
                        105,
                        105,
                        1
                      ],
                      dodgerblue: [
                        30,
                        144,
                        255,
                        1
                      ],
                      firebrick: [
                        178,
                        34,
                        34,
                        1
                      ],
                      floralwhite: [
                        255,
                        250,
                        240,
                        1
                      ],
                      forestgreen: [
                        34,
                        139,
                        34,
                        1
                      ],
                      fuchsia: [
                        255,
                        0,
                        255,
                        1
                      ],
                      gainsboro: [
                        220,
                        220,
                        220,
                        1
                      ],
                      ghostwhite: [
                        248,
                        248,
                        255,
                        1
                      ],
                      gold: [
                        255,
                        215,
                        0,
                        1
                      ],
                      goldenrod: [
                        218,
                        165,
                        32,
                        1
                      ],
                      gray: [
                        128,
                        128,
                        128,
                        1
                      ],
                      green: [
                        0,
                        128,
                        0,
                        1
                      ],
                      greenyellow: [
                        173,
                        255,
                        47,
                        1
                      ],
                      grey: [
                        128,
                        128,
                        128,
                        1
                      ],
                      honeydew: [
                        240,
                        255,
                        240,
                        1
                      ],
                      hotpink: [
                        255,
                        105,
                        180,
                        1
                      ],
                      indianred: [
                        205,
                        92,
                        92,
                        1
                      ],
                      indigo: [
                        75,
                        0,
                        130,
                        1
                      ],
                      ivory: [
                        255,
                        255,
                        240,
                        1
                      ],
                      khaki: [
                        240,
                        230,
                        140,
                        1
                      ],
                      lavender: [
                        230,
                        230,
                        250,
                        1
                      ],
                      lavenderblush: [
                        255,
                        240,
                        245,
                        1
                      ],
                      lawngreen: [
                        124,
                        252,
                        0,
                        1
                      ],
                      lemonchiffon: [
                        255,
                        250,
                        205,
                        1
                      ],
                      lightblue: [
                        173,
                        216,
                        230,
                        1
                      ],
                      lightcoral: [
                        240,
                        128,
                        128,
                        1
                      ],
                      lightcyan: [
                        224,
                        255,
                        255,
                        1
                      ],
                      lightgoldenrodyellow: [
                        250,
                        250,
                        210,
                        1
                      ],
                      lightgray: [
                        211,
                        211,
                        211,
                        1
                      ],
                      lightgreen: [
                        144,
                        238,
                        144,
                        1
                      ],
                      lightgrey: [
                        211,
                        211,
                        211,
                        1
                      ],
                      lightpink: [
                        255,
                        182,
                        193,
                        1
                      ],
                      lightsalmon: [
                        255,
                        160,
                        122,
                        1
                      ],
                      lightseagreen: [
                        32,
                        178,
                        170,
                        1
                      ],
                      lightskyblue: [
                        135,
                        206,
                        250,
                        1
                      ],
                      lightslategray: [
                        119,
                        136,
                        153,
                        1
                      ],
                      lightslategrey: [
                        119,
                        136,
                        153,
                        1
                      ],
                      lightsteelblue: [
                        176,
                        196,
                        222,
                        1
                      ],
                      lightyellow: [
                        255,
                        255,
                        224,
                        1
                      ],
                      lime: [
                        0,
                        255,
                        0,
                        1
                      ],
                      limegreen: [
                        50,
                        205,
                        50,
                        1
                      ],
                      linen: [
                        250,
                        240,
                        230,
                        1
                      ],
                      magenta: [
                        255,
                        0,
                        255,
                        1
                      ],
                      maroon: [
                        128,
                        0,
                        0,
                        1
                      ],
                      mediumaquamarine: [
                        102,
                        205,
                        170,
                        1
                      ],
                      mediumblue: [
                        0,
                        0,
                        205,
                        1
                      ],
                      mediumorchid: [
                        186,
                        85,
                        211,
                        1
                      ],
                      mediumpurple: [
                        147,
                        112,
                        219,
                        1
                      ],
                      mediumseagreen: [
                        60,
                        179,
                        113,
                        1
                      ],
                      mediumslateblue: [
                        123,
                        104,
                        238,
                        1
                      ],
                      mediumspringgreen: [
                        0,
                        250,
                        154,
                        1
                      ],
                      mediumturquoise: [
                        72,
                        209,
                        204,
                        1
                      ],
                      mediumvioletred: [
                        199,
                        21,
                        133,
                        1
                      ],
                      midnightblue: [
                        25,
                        25,
                        112,
                        1
                      ],
                      mintcream: [
                        245,
                        255,
                        250,
                        1
                      ],
                      mistyrose: [
                        255,
                        228,
                        225,
                        1
                      ],
                      moccasin: [
                        255,
                        228,
                        181,
                        1
                      ],
                      navajowhite: [
                        255,
                        222,
                        173,
                        1
                      ],
                      navy: [
                        0,
                        0,
                        128,
                        1
                      ],
                      oldlace: [
                        253,
                        245,
                        230,
                        1
                      ],
                      olive: [
                        128,
                        128,
                        0,
                        1
                      ],
                      olivedrab: [
                        107,
                        142,
                        35,
                        1
                      ],
                      orange: [
                        255,
                        165,
                        0,
                        1
                      ],
                      orangered: [
                        255,
                        69,
                        0,
                        1
                      ],
                      orchid: [
                        218,
                        112,
                        214,
                        1
                      ],
                      palegoldenrod: [
                        238,
                        232,
                        170,
                        1
                      ],
                      palegreen: [
                        152,
                        251,
                        152,
                        1
                      ],
                      paleturquoise: [
                        175,
                        238,
                        238,
                        1
                      ],
                      palevioletred: [
                        219,
                        112,
                        147,
                        1
                      ],
                      papayawhip: [
                        255,
                        239,
                        213,
                        1
                      ],
                      peachpuff: [
                        255,
                        218,
                        185,
                        1
                      ],
                      peru: [
                        205,
                        133,
                        63,
                        1
                      ],
                      pink: [
                        255,
                        192,
                        203,
                        1
                      ],
                      plum: [
                        221,
                        160,
                        221,
                        1
                      ],
                      powderblue: [
                        176,
                        224,
                        230,
                        1
                      ],
                      purple: [
                        128,
                        0,
                        128,
                        1
                      ],
                      rebeccapurple: [
                        102,
                        51,
                        153,
                        1
                      ],
                      red: [
                        255,
                        0,
                        0,
                        1
                      ],
                      rosybrown: [
                        188,
                        143,
                        143,
                        1
                      ],
                      royalblue: [
                        65,
                        105,
                        225,
                        1
                      ],
                      saddlebrown: [
                        139,
                        69,
                        19,
                        1
                      ],
                      salmon: [
                        250,
                        128,
                        114,
                        1
                      ],
                      sandybrown: [
                        244,
                        164,
                        96,
                        1
                      ],
                      seagreen: [
                        46,
                        139,
                        87,
                        1
                      ],
                      seashell: [
                        255,
                        245,
                        238,
                        1
                      ],
                      sienna: [
                        160,
                        82,
                        45,
                        1
                      ],
                      silver: [
                        192,
                        192,
                        192,
                        1
                      ],
                      skyblue: [
                        135,
                        206,
                        235,
                        1
                      ],
                      slateblue: [
                        106,
                        90,
                        205,
                        1
                      ],
                      slategray: [
                        112,
                        128,
                        144,
                        1
                      ],
                      slategrey: [
                        112,
                        128,
                        144,
                        1
                      ],
                      snow: [
                        255,
                        250,
                        250,
                        1
                      ],
                      springgreen: [
                        0,
                        255,
                        127,
                        1
                      ],
                      steelblue: [
                        70,
                        130,
                        180,
                        1
                      ],
                      tan: [
                        210,
                        180,
                        140,
                        1
                      ],
                      teal: [
                        0,
                        128,
                        128,
                        1
                      ],
                      thistle: [
                        216,
                        191,
                        216,
                        1
                      ],
                      tomato: [
                        255,
                        99,
                        71,
                        1
                      ],
                      turquoise: [
                        64,
                        224,
                        208,
                        1
                      ],
                      violet: [
                        238,
                        130,
                        238,
                        1
                      ],
                      wheat: [
                        245,
                        222,
                        179,
                        1
                      ],
                      white: [
                        255,
                        255,
                        255,
                        1
                      ],
                      whitesmoke: [
                        245,
                        245,
                        245,
                        1
                      ],
                      yellow: [
                        255,
                        255,
                        0,
                        1
                      ],
                      yellowgreen: [
                        154,
                        205,
                        50,
                        1
                      ]
                    };
                    function ot(Ze) {
                      return Ze = Math.round(Ze), Ze < 0 ? 0 : Ze > 255 ? 255 : Ze;
                    }
                    function xt(Ze) {
                      return Ze < 0 ? 0 : Ze > 1 ? 1 : Ze;
                    }
                    function Pt(Ze) {
                      return Ze[Ze.length - 1] === "%" ? ot(parseFloat(Ze) / 100 * 255) : ot(parseInt(Ze));
                    }
                    function Ht(Ze) {
                      return Ze[Ze.length - 1] === "%" ? xt(parseFloat(Ze) / 100) : xt(parseFloat(Ze));
                    }
                    function ve(Ze, nr, wr) {
                      return wr < 0 ? wr += 1 : wr > 1 && (wr -= 1), wr * 6 < 1 ? Ze + (nr - Ze) * wr * 6 : wr * 2 < 1 ? nr : wr * 3 < 2 ? Ze + (nr - Ze) * (2 / 3 - wr) * 6 : Ze;
                    }
                    function Fe(Ze) {
                      var nr = Ze.replace(/ /g, "").toLowerCase();
                      if (nr in W)
                        return W[nr].slice();
                      if (nr[0] === "#") {
                        if (nr.length === 4) {
                          var wr = parseInt(nr.substr(1), 16);
                          return wr >= 0 && wr <= 4095 ? [
                            (wr & 3840) >> 4 | (wr & 3840) >> 8,
                            wr & 240 | (wr & 240) >> 4,
                            wr & 15 | (wr & 15) << 4,
                            1
                          ] : null;
                        } else if (nr.length === 7) {
                          var wr = parseInt(nr.substr(1), 16);
                          return wr >= 0 && wr <= 16777215 ? [
                            (wr & 16711680) >> 16,
                            (wr & 65280) >> 8,
                            wr & 255,
                            1
                          ] : null;
                        }
                        return null;
                      }
                      var Fr = nr.indexOf("("), Rr = nr.indexOf(")");
                      if (Fr !== -1 && Rr + 1 === nr.length) {
                        var Kr = nr.substr(0, Fr), yn = nr.substr(Fr + 1, Rr - (Fr + 1)).split(","), Qn = 1;
                        switch (Kr) {
                          case "rgba":
                            if (yn.length !== 4)
                              return null;
                            Qn = Ht(yn.pop());
                          case "rgb":
                            return yn.length !== 3 ? null : [
                              Pt(yn[0]),
                              Pt(yn[1]),
                              Pt(yn[2]),
                              Qn
                            ];
                          case "hsla":
                            if (yn.length !== 4)
                              return null;
                            Qn = Ht(yn.pop());
                          case "hsl":
                            if (yn.length !== 3)
                              return null;
                            var Bn = (parseFloat(yn[0]) % 360 + 360) % 360 / 360, vi = Ht(yn[1]), ni = Ht(yn[2]), pi = ni <= 0.5 ? ni * (vi + 1) : ni + vi - ni * vi, wi = ni * 2 - pi;
                            return [
                              ot(ve(wi, pi, Bn + 1 / 3) * 255),
                              ot(ve(wi, pi, Bn) * 255),
                              ot(ve(wi, pi, Bn - 1 / 3) * 255),
                              Qn
                            ];
                          default:
                            return null;
                        }
                      }
                      return null;
                    }
                    try {
                      D.parseCSSColor = Fe;
                    } catch {
                    }
                  }), Ns = Zu.parseCSSColor, io = function(D, W, ot, xt) {
                    xt === void 0 && (xt = 1), this.r = D, this.g = W, this.b = ot, this.a = xt;
                  };
                  io.parse = function(D) {
                    if (D) {
                      if (D instanceof io)
                        return D;
                      if (typeof D == "string") {
                        var W = Ns(D);
                        if (W)
                          return new io(W[0] / 255 * W[3], W[1] / 255 * W[3], W[2] / 255 * W[3], W[3]);
                      }
                    }
                  }, io.prototype.toString = function() {
                    var D = this.toArray(), W = D[0], ot = D[1], xt = D[2], Pt = D[3];
                    return "rgba(" + Math.round(W) + "," + Math.round(ot) + "," + Math.round(xt) + "," + Pt + ")";
                  }, io.prototype.toArray = function() {
                    var D = this, W = D.r, ot = D.g, xt = D.b, Pt = D.a;
                    return Pt === 0 ? [
                      0,
                      0,
                      0,
                      0
                    ] : [
                      W * 255 / Pt,
                      ot * 255 / Pt,
                      xt * 255 / Pt,
                      Pt
                    ];
                  }, io.black = new io(0, 0, 0, 1), io.white = new io(1, 1, 1, 1), io.transparent = new io(0, 0, 0, 0), io.red = new io(1, 0, 0, 1);
                  var vf = function(D, W, ot) {
                    D ? this.sensitivity = W ? "variant" : "case" : this.sensitivity = W ? "accent" : "base", this.locale = ot, this.collator = new Intl.Collator(this.locale ? this.locale : [], {
                      sensitivity: this.sensitivity,
                      usage: "search"
                    });
                  };
                  vf.prototype.compare = function(D, W) {
                    return this.collator.compare(D, W);
                  }, vf.prototype.resolvedLocale = function() {
                    return new Intl.Collator(this.locale ? this.locale : []).resolvedOptions().locale;
                  };
                  var yl = function(D, W, ot, xt, Pt) {
                    this.text = D, this.image = W, this.scale = ot, this.fontStack = xt, this.textColor = Pt;
                  }, jo = function(D) {
                    this.sections = D;
                  };
                  jo.fromString = function(D) {
                    return new jo([new yl(D, null, null, null, null)]);
                  }, jo.prototype.isEmpty = function() {
                    return this.sections.length === 0 ? !0 : !this.sections.some(function(D) {
                      return D.text.length !== 0 || D.image && D.image.name.length !== 0;
                    });
                  }, jo.factory = function(D) {
                    return D instanceof jo ? D : jo.fromString(D);
                  }, jo.prototype.toString = function() {
                    return this.sections.length === 0 ? "" : this.sections.map(function(D) {
                      return D.text;
                    }).join("");
                  }, jo.prototype.serialize = function() {
                    for (var D = ["format"], W = 0, ot = this.sections; W < ot.length; W += 1) {
                      var xt = ot[W];
                      if (xt.image) {
                        D.push([
                          "image",
                          xt.image.name
                        ]);
                        continue;
                      }
                      D.push(xt.text);
                      var Pt = {};
                      xt.fontStack && (Pt["text-font"] = [
                        "literal",
                        xt.fontStack.split(",")
                      ]), xt.scale && (Pt["font-scale"] = xt.scale), xt.textColor && (Pt["text-color"] = ["rgba"].concat(xt.textColor.toArray())), D.push(Pt);
                    }
                    return D;
                  };
                  var Ys = function(D) {
                    this.name = D.name, this.available = D.available;
                  };
                  Ys.prototype.toString = function() {
                    return this.name;
                  }, Ys.fromString = function(D) {
                    return D ? new Ys({
                      name: D,
                      available: !1
                    }) : null;
                  }, Ys.prototype.serialize = function() {
                    return [
                      "image",
                      this.name
                    ];
                  };
                  function uu(I, D, W, ot) {
                    if (!(typeof I == "number" && I >= 0 && I <= 255 && typeof D == "number" && D >= 0 && D <= 255 && typeof W == "number" && W >= 0 && W <= 255)) {
                      var xt = typeof ot == "number" ? [
                        I,
                        D,
                        W,
                        ot
                      ] : [
                        I,
                        D,
                        W
                      ];
                      return "Invalid rgba value [" + xt.join(", ") + "]: 'r', 'g', and 'b' must be between 0 and 255.";
                    }
                    return typeof ot > "u" || typeof ot == "number" && ot >= 0 && ot <= 1 ? null : "Invalid rgba value [" + [
                      I,
                      D,
                      W,
                      ot
                    ].join(", ") + "]: 'a' must be between 0 and 1.";
                  }
                  function ss(I) {
                    if (I === null)
                      return !0;
                    if (typeof I == "string")
                      return !0;
                    if (typeof I == "boolean")
                      return !0;
                    if (typeof I == "number")
                      return !0;
                    if (I instanceof io)
                      return !0;
                    if (I instanceof vf)
                      return !0;
                    if (I instanceof jo)
                      return !0;
                    if (I instanceof Ys)
                      return !0;
                    if (Array.isArray(I)) {
                      for (var D = 0, W = I; D < W.length; D += 1) {
                        var ot = W[D];
                        if (!ss(ot))
                          return !1;
                      }
                      return !0;
                    } else if (typeof I == "object") {
                      for (var xt in I)
                        if (!ss(I[xt]))
                          return !1;
                      return !0;
                    } else
                      return !1;
                  }
                  function qo(I) {
                    if (I === null)
                      return wn;
                    if (typeof I == "string")
                      return li;
                    if (typeof I == "boolean")
                      return fi;
                    if (typeof I == "number")
                      return Dn;
                    if (I instanceof io)
                      return _i;
                    if (I instanceof vf)
                      return Bi;
                    if (I instanceof jo)
                      return ra;
                    if (I instanceof Ys)
                      return Ea;
                    if (Array.isArray(I)) {
                      for (var D = I.length, W, ot = 0, xt = I; ot < xt.length; ot += 1) {
                        var Pt = xt[ot], Ht = qo(Pt);
                        if (!W)
                          W = Ht;
                        else {
                          if (W === Ht)
                            continue;
                          W = bi;
                          break;
                        }
                      }
                      return Io(W || bi, D);
                    } else
                      return Ti;
                  }
                  function Ol(I) {
                    var D = typeof I;
                    return I === null ? "" : D === "string" || D === "number" || D === "boolean" ? String(I) : I instanceof io || I instanceof jo || I instanceof Ys ? I.toString() : JSON.stringify(I);
                  }
                  var yo = function(D, W) {
                    this.type = D, this.value = W;
                  };
                  yo.parse = function(D, W) {
                    if (D.length !== 2)
                      return W.error("'literal' expression requires exactly one argument, but found " + (D.length - 1) + " instead.");
                    if (!ss(D[1]))
                      return W.error("invalid value");
                    var ot = D[1], xt = qo(ot), Pt = W.expectedType;
                    return xt.kind === "array" && xt.N === 0 && Pt && Pt.kind === "array" && (typeof Pt.N != "number" || Pt.N === 0) && (xt = Pt), new yo(xt, ot);
                  }, yo.prototype.evaluate = function() {
                    return this.value;
                  }, yo.prototype.eachChild = function() {
                  }, yo.prototype.outputDefined = function() {
                    return !0;
                  }, yo.prototype.serialize = function() {
                    return this.type.kind === "array" || this.type.kind === "object" ? [
                      "literal",
                      this.value
                    ] : this.value instanceof io ? ["rgba"].concat(this.value.toArray()) : this.value instanceof jo ? this.value.serialize() : this.value;
                  };
                  var ds = function(D) {
                    this.name = "ExpressionEvaluationError", this.message = D;
                  };
                  ds.prototype.toJSON = function() {
                    return this.message;
                  };
                  var Ks = {
                    string: li,
                    number: Dn,
                    boolean: fi,
                    object: Ti
                  }, zs = function(D, W) {
                    this.type = D, this.args = W;
                  };
                  zs.parse = function(D, W) {
                    if (D.length < 2)
                      return W.error("Expected at least one argument.");
                    var ot = 1, xt, Pt = D[0];
                    if (Pt === "array") {
                      var Ht;
                      if (D.length > 2) {
                        var ve = D[1];
                        if (typeof ve != "string" || !(ve in Ks) || ve === "object")
                          return W.error('The item type argument of "array" must be one of string, number, boolean', 1);
                        Ht = Ks[ve], ot++;
                      } else
                        Ht = bi;
                      var Fe;
                      if (D.length > 3) {
                        if (D[2] !== null && (typeof D[2] != "number" || D[2] < 0 || D[2] !== Math.floor(D[2])))
                          return W.error('The length argument to "array" must be a positive integer literal', 2);
                        Fe = D[2], ot++;
                      }
                      xt = Io(Ht, Fe);
                    } else
                      xt = Ks[Pt];
                    for (var Ze = []; ot < D.length; ot++) {
                      var nr = W.parse(D[ot], ot, bi);
                      if (!nr)
                        return null;
                      Ze.push(nr);
                    }
                    return new zs(xt, Ze);
                  }, zs.prototype.evaluate = function(D) {
                    for (var W = 0; W < this.args.length; W++) {
                      var ot = this.args[W].evaluate(D), xt = Bs(this.type, qo(ot));
                      if (xt) {
                        if (W === this.args.length - 1)
                          throw new ds("Expected value to be of type " + go(this.type) + ", but found " + go(qo(ot)) + " instead.");
                      } else return ot;
                    }
                    return null;
                  }, zs.prototype.eachChild = function(D) {
                    this.args.forEach(D);
                  }, zs.prototype.outputDefined = function() {
                    return this.args.every(function(D) {
                      return D.outputDefined();
                    });
                  }, zs.prototype.serialize = function() {
                    var D = this.type, W = [D.kind];
                    if (D.kind === "array") {
                      var ot = D.itemType;
                      if (ot.kind === "string" || ot.kind === "number" || ot.kind === "boolean") {
                        W.push(ot.kind);
                        var xt = D.N;
                        (typeof xt == "number" || this.args.length > 1) && W.push(xt);
                      }
                    }
                    return W.concat(this.args.map(function(Pt) {
                      return Pt.serialize();
                    }));
                  };
                  var is = function(D) {
                    this.type = ra, this.sections = D;
                  };
                  is.parse = function(D, W) {
                    if (D.length < 2)
                      return W.error("Expected at least one argument.");
                    var ot = D[1];
                    if (!Array.isArray(ot) && typeof ot == "object")
                      return W.error("First argument must be an image or text section.");
                    for (var xt = [], Pt = !1, Ht = 1; Ht <= D.length - 1; ++Ht) {
                      var ve = D[Ht];
                      if (Pt && typeof ve == "object" && !Array.isArray(ve)) {
                        Pt = !1;
                        var Fe = null;
                        if (ve["font-scale"] && (Fe = W.parse(ve["font-scale"], 1, Dn), !Fe))
                          return null;
                        var Ze = null;
                        if (ve["text-font"] && (Ze = W.parse(ve["text-font"], 1, Io(li)), !Ze))
                          return null;
                        var nr = null;
                        if (ve["text-color"] && (nr = W.parse(ve["text-color"], 1, _i), !nr))
                          return null;
                        var wr = xt[xt.length - 1];
                        wr.scale = Fe, wr.font = Ze, wr.textColor = nr;
                      } else {
                        var Fr = W.parse(D[Ht], 1, bi);
                        if (!Fr)
                          return null;
                        var Rr = Fr.type.kind;
                        if (Rr !== "string" && Rr !== "value" && Rr !== "null" && Rr !== "resolvedImage")
                          return W.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");
                        Pt = !0, xt.push({
                          content: Fr,
                          scale: null,
                          font: null,
                          textColor: null
                        });
                      }
                    }
                    return new is(xt);
                  }, is.prototype.evaluate = function(D) {
                    var W = function(ot) {
                      var xt = ot.content.evaluate(D);
                      return qo(xt) === Ea ? new yl("", xt, null, null, null) : new yl(Ol(xt), null, ot.scale ? ot.scale.evaluate(D) : null, ot.font ? ot.font.evaluate(D).join(",") : null, ot.textColor ? ot.textColor.evaluate(D) : null);
                    };
                    return new jo(this.sections.map(W));
                  }, is.prototype.eachChild = function(D) {
                    for (var W = 0, ot = this.sections; W < ot.length; W += 1) {
                      var xt = ot[W];
                      D(xt.content), xt.scale && D(xt.scale), xt.font && D(xt.font), xt.textColor && D(xt.textColor);
                    }
                  }, is.prototype.outputDefined = function() {
                    return !1;
                  }, is.prototype.serialize = function() {
                    for (var D = ["format"], W = 0, ot = this.sections; W < ot.length; W += 1) {
                      var xt = ot[W];
                      D.push(xt.content.serialize());
                      var Pt = {};
                      xt.scale && (Pt["font-scale"] = xt.scale.serialize()), xt.font && (Pt["text-font"] = xt.font.serialize()), xt.textColor && (Pt["text-color"] = xt.textColor.serialize()), D.push(Pt);
                    }
                    return D;
                  };
                  var wl = function(D) {
                    this.type = Ea, this.input = D;
                  };
                  wl.parse = function(D, W) {
                    if (D.length !== 2)
                      return W.error("Expected two arguments.");
                    var ot = W.parse(D[1], 1, li);
                    return ot ? new wl(ot) : W.error("No image name provided.");
                  }, wl.prototype.evaluate = function(D) {
                    var W = this.input.evaluate(D), ot = Ys.fromString(W);
                    return ot && D.availableImages && (ot.available = D.availableImages.indexOf(W) > -1), ot;
                  }, wl.prototype.eachChild = function(D) {
                    D(this.input);
                  }, wl.prototype.outputDefined = function() {
                    return !1;
                  }, wl.prototype.serialize = function() {
                    return [
                      "image",
                      this.input.serialize()
                    ];
                  };
                  var Th = {
                    "to-boolean": fi,
                    "to-color": _i,
                    "to-number": Dn,
                    "to-string": li
                  }, Us = function(D, W) {
                    this.type = D, this.args = W;
                  };
                  Us.parse = function(D, W) {
                    if (D.length < 2)
                      return W.error("Expected at least one argument.");
                    var ot = D[0];
                    if ((ot === "to-boolean" || ot === "to-string") && D.length !== 2)
                      return W.error("Expected one argument.");
                    for (var xt = Th[ot], Pt = [], Ht = 1; Ht < D.length; Ht++) {
                      var ve = W.parse(D[Ht], Ht, bi);
                      if (!ve)
                        return null;
                      Pt.push(ve);
                    }
                    return new Us(xt, Pt);
                  }, Us.prototype.evaluate = function(D) {
                    if (this.type.kind === "boolean")
                      return !!this.args[0].evaluate(D);
                    if (this.type.kind === "color") {
                      for (var W, ot, xt = 0, Pt = this.args; xt < Pt.length; xt += 1) {
                        var Ht = Pt[xt];
                        if (W = Ht.evaluate(D), ot = null, W instanceof io)
                          return W;
                        if (typeof W == "string") {
                          var ve = D.parseColor(W);
                          if (ve)
                            return ve;
                        } else if (Array.isArray(W) && (W.length < 3 || W.length > 4 ? ot = "Invalid rbga value " + JSON.stringify(W) + ": expected an array containing either three or four numeric values." : ot = uu(W[0], W[1], W[2], W[3]), !ot))
                          return new io(W[0] / 255, W[1] / 255, W[2] / 255, W[3]);
                      }
                      throw new ds(ot || "Could not parse color from value '" + (typeof W == "string" ? W : String(JSON.stringify(W))) + "'");
                    } else if (this.type.kind === "number") {
                      for (var Fe = null, Ze = 0, nr = this.args; Ze < nr.length; Ze += 1) {
                        var wr = nr[Ze];
                        if (Fe = wr.evaluate(D), Fe === null)
                          return 0;
                        var Fr = Number(Fe);
                        if (!isNaN(Fr))
                          return Fr;
                      }
                      throw new ds("Could not convert " + JSON.stringify(Fe) + " to number.");
                    } else return this.type.kind === "formatted" ? jo.fromString(Ol(this.args[0].evaluate(D))) : this.type.kind === "resolvedImage" ? Ys.fromString(Ol(this.args[0].evaluate(D))) : Ol(this.args[0].evaluate(D));
                  }, Us.prototype.eachChild = function(D) {
                    this.args.forEach(D);
                  }, Us.prototype.outputDefined = function() {
                    return this.args.every(function(D) {
                      return D.outputDefined();
                    });
                  }, Us.prototype.serialize = function() {
                    if (this.type.kind === "formatted")
                      return new is([{
                        content: this.args[0],
                        scale: null,
                        font: null,
                        textColor: null
                      }]).serialize();
                    if (this.type.kind === "resolvedImage")
                      return new wl(this.args[0]).serialize();
                    var D = ["to-" + this.type.kind];
                    return this.eachChild(function(W) {
                      D.push(W.serialize());
                    }), D;
                  };
                  var Gf = [
                    "Unknown",
                    "Point",
                    "LineString",
                    "Polygon"
                  ], _l = function() {
                    this.globals = null, this.feature = null, this.featureState = null, this.formattedSection = null, this._parseColorCache = {}, this.availableImages = null, this.canonical = null;
                  };
                  _l.prototype.id = function() {
                    return this.feature && "id" in this.feature ? this.feature.id : null;
                  }, _l.prototype.geometryType = function() {
                    return this.feature ? typeof this.feature.type == "number" ? Gf[this.feature.type] : this.feature.type : null;
                  }, _l.prototype.geometry = function() {
                    return this.feature && "geometry" in this.feature ? this.feature.geometry : null;
                  }, _l.prototype.canonicalID = function() {
                    return this.canonical;
                  }, _l.prototype.properties = function() {
                    return this.feature && this.feature.properties || {};
                  }, _l.prototype.parseColor = function(D) {
                    var W = this._parseColorCache[D];
                    return W || (W = this._parseColorCache[D] = io.parse(D)), W;
                  };
                  var bs = function(D, W, ot, xt) {
                    this.name = D, this.type = W, this._evaluate = ot, this.args = xt;
                  };
                  bs.prototype.evaluate = function(D) {
                    return this._evaluate(D, this.args);
                  }, bs.prototype.eachChild = function(D) {
                    this.args.forEach(D);
                  }, bs.prototype.outputDefined = function() {
                    return !1;
                  }, bs.prototype.serialize = function() {
                    return [this.name].concat(this.args.map(function(D) {
                      return D.serialize();
                    }));
                  }, bs.parse = function(D, W) {
                    var ot, xt = D[0], Pt = bs.definitions[xt];
                    if (!Pt)
                      return W.error('Unknown expression "' + xt + '". If you wanted a literal array, use ["literal", [...]].', 0);
                    for (var Ht = Array.isArray(Pt) ? Pt[0] : Pt.type, ve = Array.isArray(Pt) ? [[
                      Pt[1],
                      Pt[2]
                    ]] : Pt.overloads, Fe = ve.filter(function(Ta) {
                      var Aa = Ta[0];
                      return !Array.isArray(Aa) || Aa.length === D.length - 1;
                    }), Ze = null, nr = 0, wr = Fe; nr < wr.length; nr += 1) {
                      var Fr = wr[nr], Rr = Fr[0], Kr = Fr[1];
                      Ze = new cu(W.registry, W.path, null, W.scope);
                      for (var yn = [], Qn = !1, Bn = 1; Bn < D.length; Bn++) {
                        var vi = D[Bn], ni = Array.isArray(Rr) ? Rr[Bn - 1] : Rr.type, pi = Ze.parse(vi, 1 + yn.length, ni);
                        if (!pi) {
                          Qn = !0;
                          break;
                        }
                        yn.push(pi);
                      }
                      if (!Qn) {
                        if (Array.isArray(Rr) && Rr.length !== yn.length) {
                          Ze.error("Expected " + Rr.length + " arguments, but found " + yn.length + " instead.");
                          continue;
                        }
                        for (var wi = 0; wi < yn.length; wi++) {
                          var Fi = Array.isArray(Rr) ? Rr[wi] : Rr.type, Zi = yn[wi];
                          Ze.concat(wi + 1).checkSubtype(Fi, Zi.type);
                        }
                        if (Ze.errors.length === 0)
                          return new bs(xt, Ht, Kr, yn);
                      }
                    }
                    if (Fe.length === 1)
                      (ot = W.errors).push.apply(ot, Ze.errors);
                    else {
                      for (var Yi = Fe.length ? Fe : ve, ma = Yi.map(function(Ta) {
                        var Aa = Ta[0];
                        return pf(Aa);
                      }).join(" | "), fa = [], va = 1; va < D.length; va++) {
                        var Za = W.parse(D[va], 1 + fa.length);
                        if (!Za)
                          return null;
                        fa.push(go(Za.type));
                      }
                      W.error("Expected arguments of type " + ma + ", but found (" + fa.join(", ") + ") instead.");
                    }
                    return null;
                  }, bs.register = function(D, W) {
                    bs.definitions = W;
                    for (var ot in W)
                      D[ot] = bs;
                  };
                  function pf(I) {
                    return Array.isArray(I) ? "(" + I.map(go).join(", ") + ")" : "(" + go(I.type) + "...)";
                  }
                  var $l = function(D, W, ot) {
                    this.type = Bi, this.locale = ot, this.caseSensitive = D, this.diacriticSensitive = W;
                  };
                  $l.parse = function(D, W) {
                    if (D.length !== 2)
                      return W.error("Expected one argument.");
                    var ot = D[1];
                    if (typeof ot != "object" || Array.isArray(ot))
                      return W.error("Collator options argument must be an object.");
                    var xt = W.parse(ot["case-sensitive"] === void 0 ? !1 : ot["case-sensitive"], 1, fi);
                    if (!xt)
                      return null;
                    var Pt = W.parse(ot["diacritic-sensitive"] === void 0 ? !1 : ot["diacritic-sensitive"], 1, fi);
                    if (!Pt)
                      return null;
                    var Ht = null;
                    return ot.locale && (Ht = W.parse(ot.locale, 1, li), !Ht) ? null : new $l(xt, Pt, Ht);
                  }, $l.prototype.evaluate = function(D) {
                    return new vf(this.caseSensitive.evaluate(D), this.diacriticSensitive.evaluate(D), this.locale ? this.locale.evaluate(D) : null);
                  }, $l.prototype.eachChild = function(D) {
                    D(this.caseSensitive), D(this.diacriticSensitive), this.locale && D(this.locale);
                  }, $l.prototype.outputDefined = function() {
                    return !1;
                  }, $l.prototype.serialize = function() {
                    var D = {};
                    return D["case-sensitive"] = this.caseSensitive.serialize(), D["diacritic-sensitive"] = this.diacriticSensitive.serialize(), this.locale && (D.locale = this.locale.serialize()), [
                      "collator",
                      D
                    ];
                  };
                  var Bl = 8192;
                  function gf(I, D) {
                    I[0] = Math.min(I[0], D[0]), I[1] = Math.min(I[1], D[1]), I[2] = Math.max(I[2], D[0]), I[3] = Math.max(I[3], D[1]);
                  }
                  function yf(I) {
                    return (180 + I) / 360;
                  }
                  function Wf(I) {
                    return (180 - 180 / Math.PI * Math.log(Math.tan(Math.PI / 4 + I * Math.PI / 360))) / 360;
                  }
                  function Xu(I, D) {
                    return !(I[0] <= D[0] || I[2] >= D[2] || I[1] <= D[1] || I[3] >= D[3]);
                  }
                  function Pd(I, D) {
                    var W = yf(I[0]), ot = Wf(I[1]), xt = Math.pow(2, D.z);
                    return [
                      Math.round(W * xt * Bl),
                      Math.round(ot * xt * Bl)
                    ];
                  }
                  function Id(I, D, W) {
                    var ot = I[0] - D[0], xt = I[1] - D[1], Pt = I[0] - W[0], Ht = I[1] - W[1];
                    return ot * Ht - Pt * xt === 0 && ot * Pt <= 0 && xt * Ht <= 0;
                  }
                  function td(I, D, W) {
                    return D[1] > I[1] != W[1] > I[1] && I[0] < (W[0] - D[0]) * (I[1] - D[1]) / (W[1] - D[1]) + D[0];
                  }
                  function Ah(I, D) {
                    for (var W = !1, ot = 0, xt = D.length; ot < xt; ot++)
                      for (var Pt = D[ot], Ht = 0, ve = Pt.length; Ht < ve - 1; Ht++) {
                        if (Id(I, Pt[Ht], Pt[Ht + 1]))
                          return !1;
                        td(I, Pt[Ht], Pt[Ht + 1]) && (W = !W);
                      }
                    return W;
                  }
                  function Rd(I, D) {
                    for (var W = 0; W < D.length; W++)
                      if (Ah(I, D[W]))
                        return !0;
                    return !1;
                  }
                  function mc(I, D) {
                    return I[0] * D[1] - I[1] * D[0];
                  }
                  function ed(I, D, W, ot) {
                    var xt = I[0] - W[0], Pt = I[1] - W[1], Ht = D[0] - W[0], ve = D[1] - W[1], Fe = ot[0] - W[0], Ze = ot[1] - W[1], nr = xt * Ze - Fe * Pt, wr = Ht * Ze - Fe * ve;
                    return nr > 0 && wr < 0 || nr < 0 && wr > 0;
                  }
                  function mf(I, D, W, ot) {
                    var xt = [
                      D[0] - I[0],
                      D[1] - I[1]
                    ], Pt = [
                      ot[0] - W[0],
                      ot[1] - W[1]
                    ];
                    return mc(Pt, xt) === 0 ? !1 : !!(ed(I, D, W, ot) && ed(W, ot, I, D));
                  }
                  function xc(I, D, W) {
                    for (var ot = 0, xt = W; ot < xt.length; ot += 1)
                      for (var Pt = xt[ot], Ht = 0; Ht < Pt.length - 1; ++Ht)
                        if (mf(I, D, Pt[Ht], Pt[Ht + 1]))
                          return !0;
                    return !1;
                  }
                  function Fc(I, D) {
                    for (var W = 0; W < I.length; ++W)
                      if (!Ah(I[W], D))
                        return !1;
                    for (var ot = 0; ot < I.length - 1; ++ot)
                      if (xc(I[ot], I[ot + 1], D))
                        return !1;
                    return !0;
                  }
                  function Vs(I, D) {
                    for (var W = 0; W < D.length; W++)
                      if (Fc(I, D[W]))
                        return !0;
                    return !1;
                  }
                  function Hs(I, D, W) {
                    for (var ot = [], xt = 0; xt < I.length; xt++) {
                      for (var Pt = [], Ht = 0; Ht < I[xt].length; Ht++) {
                        var ve = Pd(I[xt][Ht], W);
                        gf(D, ve), Pt.push(ve);
                      }
                      ot.push(Pt);
                    }
                    return ot;
                  }
                  function jf(I, D, W) {
                    for (var ot = [], xt = 0; xt < I.length; xt++) {
                      var Pt = Hs(I[xt], D, W);
                      ot.push(Pt);
                    }
                    return ot;
                  }
                  function Tl(I, D, W, ot) {
                    if (I[0] < W[0] || I[0] > W[2]) {
                      var xt = ot * 0.5, Pt = I[0] - W[0] > xt ? -ot : W[0] - I[0] > xt ? ot : 0;
                      Pt === 0 && (Pt = I[0] - W[2] > xt ? -ot : W[2] - I[0] > xt ? ot : 0), I[0] += Pt;
                    }
                    gf(D, I);
                  }
                  function rd(I) {
                    I[0] = I[1] = 1 / 0, I[2] = I[3] = -1 / 0;
                  }
                  function Zf(I, D, W, ot) {
                    for (var xt = Math.pow(2, ot.z) * Bl, Pt = [
                      ot.x * Bl,
                      ot.y * Bl
                    ], Ht = [], ve = 0, Fe = I; ve < Fe.length; ve += 1)
                      for (var Ze = Fe[ve], nr = 0, wr = Ze; nr < wr.length; nr += 1) {
                        var Fr = wr[nr], Rr = [
                          Fr.x + Pt[0],
                          Fr.y + Pt[1]
                        ];
                        Tl(Rr, D, W, xt), Ht.push(Rr);
                      }
                    return Ht;
                  }
                  function nd(I, D, W, ot) {
                    for (var xt = Math.pow(2, ot.z) * Bl, Pt = [
                      ot.x * Bl,
                      ot.y * Bl
                    ], Ht = [], ve = 0, Fe = I; ve < Fe.length; ve += 1) {
                      for (var Ze = Fe[ve], nr = [], wr = 0, Fr = Ze; wr < Fr.length; wr += 1) {
                        var Rr = Fr[wr], Kr = [
                          Rr.x + Pt[0],
                          Rr.y + Pt[1]
                        ];
                        gf(D, Kr), nr.push(Kr);
                      }
                      Ht.push(nr);
                    }
                    if (D[2] - D[0] <= xt / 2) {
                      rd(D);
                      for (var yn = 0, Qn = Ht; yn < Qn.length; yn += 1)
                        for (var Bn = Qn[yn], vi = 0, ni = Bn; vi < ni.length; vi += 1) {
                          var pi = ni[vi];
                          Tl(pi, D, W, xt);
                        }
                    }
                    return Ht;
                  }
                  function id(I, D) {
                    var W = [
                      1 / 0,
                      1 / 0,
                      -1 / 0,
                      -1 / 0
                    ], ot = [
                      1 / 0,
                      1 / 0,
                      -1 / 0,
                      -1 / 0
                    ], xt = I.canonicalID();
                    if (D.type === "Polygon") {
                      var Pt = Hs(D.coordinates, ot, xt), Ht = Zf(I.geometry(), W, ot, xt);
                      if (!Xu(W, ot))
                        return !1;
                      for (var ve = 0, Fe = Ht; ve < Fe.length; ve += 1) {
                        var Ze = Fe[ve];
                        if (!Ah(Ze, Pt))
                          return !1;
                      }
                    }
                    if (D.type === "MultiPolygon") {
                      var nr = jf(D.coordinates, ot, xt), wr = Zf(I.geometry(), W, ot, xt);
                      if (!Xu(W, ot))
                        return !1;
                      for (var Fr = 0, Rr = wr; Fr < Rr.length; Fr += 1) {
                        var Kr = Rr[Fr];
                        if (!Rd(Kr, nr))
                          return !1;
                      }
                    }
                    return !0;
                  }
                  function Xf(I, D) {
                    var W = [
                      1 / 0,
                      1 / 0,
                      -1 / 0,
                      -1 / 0
                    ], ot = [
                      1 / 0,
                      1 / 0,
                      -1 / 0,
                      -1 / 0
                    ], xt = I.canonicalID();
                    if (D.type === "Polygon") {
                      var Pt = Hs(D.coordinates, ot, xt), Ht = nd(I.geometry(), W, ot, xt);
                      if (!Xu(W, ot))
                        return !1;
                      for (var ve = 0, Fe = Ht; ve < Fe.length; ve += 1) {
                        var Ze = Fe[ve];
                        if (!Fc(Ze, Pt))
                          return !1;
                      }
                    }
                    if (D.type === "MultiPolygon") {
                      var nr = jf(D.coordinates, ot, xt), wr = nd(I.geometry(), W, ot, xt);
                      if (!Xu(W, ot))
                        return !1;
                      for (var Fr = 0, Rr = wr; Fr < Rr.length; Fr += 1) {
                        var Kr = Rr[Fr];
                        if (!Vs(Kr, nr))
                          return !1;
                      }
                    }
                    return !0;
                  }
                  var ql = function(D, W) {
                    this.type = fi, this.geojson = D, this.geometries = W;
                  };
                  ql.parse = function(D, W) {
                    if (D.length !== 2)
                      return W.error("'within' expression requires exactly one argument, but found " + (D.length - 1) + " instead.");
                    if (ss(D[1])) {
                      var ot = D[1];
                      if (ot.type === "FeatureCollection")
                        for (var xt = 0; xt < ot.features.length; ++xt) {
                          var Pt = ot.features[xt].geometry.type;
                          if (Pt === "Polygon" || Pt === "MultiPolygon")
                            return new ql(ot, ot.features[xt].geometry);
                        }
                      else if (ot.type === "Feature") {
                        var Ht = ot.geometry.type;
                        if (Ht === "Polygon" || Ht === "MultiPolygon")
                          return new ql(ot, ot.geometry);
                      } else if (ot.type === "Polygon" || ot.type === "MultiPolygon")
                        return new ql(ot, ot);
                    }
                    return W.error("'within' expression requires valid geojson object that contains polygon geometry type.");
                  }, ql.prototype.evaluate = function(D) {
                    if (D.geometry() != null && D.canonicalID() != null) {
                      if (D.geometryType() === "Point")
                        return id(D, this.geometries);
                      if (D.geometryType() === "LineString")
                        return Xf(D, this.geometries);
                    }
                    return !1;
                  }, ql.prototype.eachChild = function() {
                  }, ql.prototype.outputDefined = function() {
                    return !0;
                  }, ql.prototype.serialize = function() {
                    return [
                      "within",
                      this.geojson
                    ];
                  };
                  function Oc(I) {
                    if (I instanceof bs) {
                      if (I.name === "get" && I.args.length === 1)
                        return !1;
                      if (I.name === "feature-state")
                        return !1;
                      if (I.name === "has" && I.args.length === 1)
                        return !1;
                      if (I.name === "properties" || I.name === "geometry-type" || I.name === "id")
                        return !1;
                      if (/^filter-/.test(I.name))
                        return !1;
                    }
                    if (I instanceof ql)
                      return !1;
                    var D = !0;
                    return I.eachChild(function(W) {
                      D && !Oc(W) && (D = !1);
                    }), D;
                  }
                  function Yu(I) {
                    if (I instanceof bs && I.name === "feature-state")
                      return !1;
                    var D = !0;
                    return I.eachChild(function(W) {
                      D && !Yu(W) && (D = !1);
                    }), D;
                  }
                  function xf(I, D) {
                    if (I instanceof bs && D.indexOf(I.name) >= 0)
                      return !1;
                    var W = !0;
                    return I.eachChild(function(ot) {
                      W && !xf(ot, D) && (W = !1);
                    }), W;
                  }
                  var Ku = function(D, W) {
                    this.type = W.type, this.name = D, this.boundExpression = W;
                  };
                  Ku.parse = function(D, W) {
                    if (D.length !== 2 || typeof D[1] != "string")
                      return W.error("'var' expression requires exactly one string literal argument.");
                    var ot = D[1];
                    return W.scope.has(ot) ? new Ku(ot, W.scope.get(ot)) : W.error('Unknown variable "' + ot + '". Make sure "' + ot + '" has been bound in an enclosing "let" expression before using it.', 1);
                  }, Ku.prototype.evaluate = function(D) {
                    return this.boundExpression.evaluate(D);
                  }, Ku.prototype.eachChild = function() {
                  }, Ku.prototype.outputDefined = function() {
                    return !1;
                  }, Ku.prototype.serialize = function() {
                    return [
                      "var",
                      this.name
                    ];
                  };
                  var cu = function(D, W, ot, xt, Pt) {
                    W === void 0 && (W = []), xt === void 0 && (xt = new Sn()), Pt === void 0 && (Pt = []), this.registry = D, this.path = W, this.key = W.map(function(Ht) {
                      return "[" + Ht + "]";
                    }).join(""), this.scope = xt, this.errors = Pt, this.expectedType = ot;
                  };
                  cu.prototype.parse = function(D, W, ot, xt, Pt) {
                    return Pt === void 0 && (Pt = {}), W ? this.concat(W, ot, xt)._parse(D, Pt) : this._parse(D, Pt);
                  }, cu.prototype._parse = function(D, W) {
                    (D === null || typeof D == "string" || typeof D == "boolean" || typeof D == "number") && (D = [
                      "literal",
                      D
                    ]);
                    function ot(nr, wr, Fr) {
                      return Fr === "assert" ? new zs(wr, [nr]) : Fr === "coerce" ? new Us(wr, [nr]) : nr;
                    }
                    if (Array.isArray(D)) {
                      if (D.length === 0)
                        return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');
                      var xt = D[0];
                      if (typeof xt != "string")
                        return this.error("Expression name must be a string, but found " + typeof xt + ' instead. If you wanted a literal array, use ["literal", [...]].', 0), null;
                      var Pt = this.registry[xt];
                      if (Pt) {
                        var Ht = Pt.parse(D, this);
                        if (!Ht)
                          return null;
                        if (this.expectedType) {
                          var ve = this.expectedType, Fe = Ht.type;
                          if ((ve.kind === "string" || ve.kind === "number" || ve.kind === "boolean" || ve.kind === "object" || ve.kind === "array") && Fe.kind === "value")
                            Ht = ot(Ht, ve, W.typeAnnotation || "assert");
                          else if ((ve.kind === "color" || ve.kind === "formatted" || ve.kind === "resolvedImage") && (Fe.kind === "value" || Fe.kind === "string"))
                            Ht = ot(Ht, ve, W.typeAnnotation || "coerce");
                          else if (this.checkSubtype(ve, Fe))
                            return null;
                        }
                        if (!(Ht instanceof yo) && Ht.type.kind !== "resolvedImage" && Sh(Ht)) {
                          var Ze = new _l();
                          try {
                            Ht = new yo(Ht.type, Ht.evaluate(Ze));
                          } catch (nr) {
                            return this.error(nr.message), null;
                          }
                        }
                        return Ht;
                      }
                      return this.error('Unknown expression "' + xt + '". If you wanted a literal array, use ["literal", [...]].', 0);
                    } else return typeof D > "u" ? this.error("'undefined' value invalid. Use null instead.") : typeof D == "object" ? this.error('Bare objects invalid. Use ["literal", {...}] instead.') : this.error("Expected an array, but found " + typeof D + " instead.");
                  }, cu.prototype.concat = function(D, W, ot) {
                    var xt = typeof D == "number" ? this.path.concat(D) : this.path, Pt = ot ? this.scope.concat(ot) : this.scope;
                    return new cu(this.registry, xt, W || null, Pt, this.errors);
                  }, cu.prototype.error = function(D) {
                    for (var W = [], ot = arguments.length - 1; ot-- > 0; )
                      W[ot] = arguments[ot + 1];
                    var xt = "" + this.key + W.map(function(Pt) {
                      return "[" + Pt + "]";
                    }).join("");
                    this.errors.push(new en(xt, D));
                  }, cu.prototype.checkSubtype = function(D, W) {
                    var ot = Bs(D, W);
                    return ot && this.error(ot), ot;
                  };
                  function Sh(I) {
                    if (I instanceof Ku)
                      return Sh(I.boundExpression);
                    if (I instanceof bs && I.name === "error")
                      return !1;
                    if (I instanceof $l)
                      return !1;
                    if (I instanceof ql)
                      return !1;
                    var D = I instanceof Us || I instanceof zs, W = !0;
                    return I.eachChild(function(ot) {
                      D ? W = W && Sh(ot) : W = W && ot instanceof yo;
                    }), W ? Oc(I) && xf(I, [
                      "zoom",
                      "heatmap-density",
                      "line-progress",
                      "accumulated",
                      "is-supported-script"
                    ]) : !1;
                  }
                  function Bc(I, D) {
                    for (var W = I.length - 1, ot = 0, xt = W, Pt = 0, Ht, ve; ot <= xt; )
                      if (Pt = Math.floor((ot + xt) / 2), Ht = I[Pt], ve = I[Pt + 1], Ht <= D) {
                        if (Pt === W || D < ve)
                          return Pt;
                        ot = Pt + 1;
                      } else if (Ht > D)
                        xt = Pt - 1;
                      else
                        throw new ds("Input is not a number.");
                    return 0;
                  }
                  var Js = function(D, W, ot) {
                    this.type = D, this.input = W, this.labels = [], this.outputs = [];
                    for (var xt = 0, Pt = ot; xt < Pt.length; xt += 1) {
                      var Ht = Pt[xt], ve = Ht[0], Fe = Ht[1];
                      this.labels.push(ve), this.outputs.push(Fe);
                    }
                  };
                  Js.parse = function(D, W) {
                    if (D.length - 1 < 4)
                      return W.error("Expected at least 4 arguments, but found only " + (D.length - 1) + ".");
                    if ((D.length - 1) % 2 !== 0)
                      return W.error("Expected an even number of arguments.");
                    var ot = W.parse(D[1], 1, Dn);
                    if (!ot)
                      return null;
                    var xt = [], Pt = null;
                    W.expectedType && W.expectedType.kind !== "value" && (Pt = W.expectedType);
                    for (var Ht = 1; Ht < D.length; Ht += 2) {
                      var ve = Ht === 1 ? -1 / 0 : D[Ht], Fe = D[Ht + 1], Ze = Ht, nr = Ht + 1;
                      if (typeof ve != "number")
                        return W.error('Input/output pairs for "step" expressions must be defined using literal numeric values (not computed expressions) for the input values.', Ze);
                      if (xt.length && xt[xt.length - 1][0] >= ve)
                        return W.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.', Ze);
                      var wr = W.parse(Fe, nr, Pt);
                      if (!wr)
                        return null;
                      Pt = Pt || wr.type, xt.push([
                        ve,
                        wr
                      ]);
                    }
                    return new Js(Pt, ot, xt);
                  }, Js.prototype.evaluate = function(D) {
                    var W = this.labels, ot = this.outputs;
                    if (W.length === 1)
                      return ot[0].evaluate(D);
                    var xt = this.input.evaluate(D);
                    if (xt <= W[0])
                      return ot[0].evaluate(D);
                    var Pt = W.length;
                    if (xt >= W[Pt - 1])
                      return ot[Pt - 1].evaluate(D);
                    var Ht = Bc(W, xt);
                    return ot[Ht].evaluate(D);
                  }, Js.prototype.eachChild = function(D) {
                    D(this.input);
                    for (var W = 0, ot = this.outputs; W < ot.length; W += 1) {
                      var xt = ot[W];
                      D(xt);
                    }
                  }, Js.prototype.outputDefined = function() {
                    return this.outputs.every(function(D) {
                      return D.outputDefined();
                    });
                  }, Js.prototype.serialize = function() {
                    for (var D = [
                      "step",
                      this.input.serialize()
                    ], W = 0; W < this.labels.length; W++)
                      W > 0 && D.push(this.labels[W]), D.push(this.outputs[W].serialize());
                    return D;
                  };
                  function ls(I, D, W) {
                    return I * (1 - W) + D * W;
                  }
                  function bc(I, D, W) {
                    return new io(ls(I.r, D.r, W), ls(I.g, D.g, W), ls(I.b, D.b, W), ls(I.a, D.a, W));
                  }
                  function Ho(I, D, W) {
                    return I.map(function(ot, xt) {
                      return ls(ot, D[xt], W);
                    });
                  }
                  var Yf = /* @__PURE__ */ Object.freeze({
                    __proto__: null,
                    number: ls,
                    color: bc,
                    array: Ho
                  }), Nc = 0.95047, Uc = 1, Gs = 1.08883, Vc = 4 / 29, Cu = 6 / 29, Hc = 3 * Cu * Cu, Mh = Cu * Cu * Cu, Al = Math.PI / 180, Eh = 180 / Math.PI;
                  function Gc(I) {
                    return I > Mh ? Math.pow(I, 0.3333333333333333) : I / Hc + Vc;
                  }
                  function Ch(I) {
                    return I > Cu ? I * I * I : Hc * (I - Vc);
                  }
                  function Wc(I) {
                    return 255 * (I <= 31308e-7 ? 12.92 * I : 1.055 * Math.pow(I, 0.4166666666666667) - 0.055);
                  }
                  function Kf(I) {
                    return I /= 255, I <= 0.04045 ? I / 12.92 : Math.pow((I + 0.055) / 1.055, 2.4);
                  }
                  function jc(I) {
                    var D = Kf(I.r), W = Kf(I.g), ot = Kf(I.b), xt = Gc((0.4124564 * D + 0.3575761 * W + 0.1804375 * ot) / Nc), Pt = Gc((0.2126729 * D + 0.7151522 * W + 0.072175 * ot) / Uc), Ht = Gc((0.0193339 * D + 0.119192 * W + 0.9503041 * ot) / Gs);
                    return {
                      l: 116 * Pt - 16,
                      a: 500 * (xt - Pt),
                      b: 200 * (Pt - Ht),
                      alpha: I.a
                    };
                  }
                  function Ju(I) {
                    var D = (I.l + 16) / 116, W = isNaN(I.a) ? D : D + I.a / 500, ot = isNaN(I.b) ? D : D - I.b / 200;
                    return D = Uc * Ch(D), W = Nc * Ch(W), ot = Gs * Ch(ot), new io(Wc(3.2404542 * W - 1.5371385 * D - 0.4985314 * ot), Wc(-0.969266 * W + 1.8760108 * D + 0.041556 * ot), Wc(0.0556434 * W - 0.2040259 * D + 1.0572252 * ot), I.alpha);
                  }
                  function Ro(I, D, W) {
                    return {
                      l: ls(I.l, D.l, W),
                      a: ls(I.a, D.a, W),
                      b: ls(I.b, D.b, W),
                      alpha: ls(I.alpha, D.alpha, W)
                    };
                  }
                  function ad(I) {
                    var D = jc(I), W = D.l, ot = D.a, xt = D.b, Pt = Math.atan2(xt, ot) * Eh;
                    return {
                      h: Pt < 0 ? Pt + 360 : Pt,
                      c: Math.sqrt(ot * ot + xt * xt),
                      l: W,
                      alpha: I.a
                    };
                  }
                  function tu(I) {
                    var D = I.h * Al, W = I.c, ot = I.l;
                    return Ju({
                      l: ot,
                      a: Math.cos(D) * W,
                      b: Math.sin(D) * W,
                      alpha: I.alpha
                    });
                  }
                  function bf(I, D, W) {
                    var ot = D - I;
                    return I + W * (ot > 180 || ot < -180 ? ot - 360 * Math.round(ot / 360) : ot);
                  }
                  function Jf(I, D, W) {
                    return {
                      h: bf(I.h, D.h, W),
                      c: ls(I.c, D.c, W),
                      l: ls(I.l, D.l, W),
                      alpha: ls(I.alpha, D.alpha, W)
                    };
                  }
                  var Sl = {
                    forward: jc,
                    reverse: Ju,
                    interpolate: Ro
                  }, Qu = {
                    forward: ad,
                    reverse: tu,
                    interpolate: Jf
                  }, wf = /* @__PURE__ */ Object.freeze({
                    __proto__: null,
                    lab: Sl,
                    hcl: Qu
                  }), vs = function(D, W, ot, xt, Pt) {
                    this.type = D, this.operator = W, this.interpolation = ot, this.input = xt, this.labels = [], this.outputs = [];
                    for (var Ht = 0, ve = Pt; Ht < ve.length; Ht += 1) {
                      var Fe = ve[Ht], Ze = Fe[0], nr = Fe[1];
                      this.labels.push(Ze), this.outputs.push(nr);
                    }
                  };
                  vs.interpolationFactor = function(D, W, ot, xt) {
                    var Pt = 0;
                    if (D.name === "exponential")
                      Pt = _f(W, D.base, ot, xt);
                    else if (D.name === "linear")
                      Pt = _f(W, 1, ot, xt);
                    else if (D.name === "cubic-bezier") {
                      var Ht = D.controlPoints, ve = new A(Ht[0], Ht[1], Ht[2], Ht[3]);
                      Pt = ve.solve(_f(W, 1, ot, xt));
                    }
                    return Pt;
                  }, vs.parse = function(D, W) {
                    var ot = D[0], xt = D[1], Pt = D[2], Ht = D.slice(3);
                    if (!Array.isArray(xt) || xt.length === 0)
                      return W.error("Expected an interpolation type expression.", 1);
                    if (xt[0] === "linear")
                      xt = { name: "linear" };
                    else if (xt[0] === "exponential") {
                      var ve = xt[1];
                      if (typeof ve != "number")
                        return W.error("Exponential interpolation requires a numeric base.", 1, 1);
                      xt = {
                        name: "exponential",
                        base: ve
                      };
                    } else if (xt[0] === "cubic-bezier") {
                      var Fe = xt.slice(1);
                      if (Fe.length !== 4 || Fe.some(function(Bn) {
                        return typeof Bn != "number" || Bn < 0 || Bn > 1;
                      }))
                        return W.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.", 1);
                      xt = {
                        name: "cubic-bezier",
                        controlPoints: Fe
                      };
                    } else
                      return W.error("Unknown interpolation type " + String(xt[0]), 1, 0);
                    if (D.length - 1 < 4)
                      return W.error("Expected at least 4 arguments, but found only " + (D.length - 1) + ".");
                    if ((D.length - 1) % 2 !== 0)
                      return W.error("Expected an even number of arguments.");
                    if (Pt = W.parse(Pt, 2, Dn), !Pt)
                      return null;
                    var Ze = [], nr = null;
                    ot === "interpolate-hcl" || ot === "interpolate-lab" ? nr = _i : W.expectedType && W.expectedType.kind !== "value" && (nr = W.expectedType);
                    for (var wr = 0; wr < Ht.length; wr += 2) {
                      var Fr = Ht[wr], Rr = Ht[wr + 1], Kr = wr + 3, yn = wr + 4;
                      if (typeof Fr != "number")
                        return W.error('Input/output pairs for "interpolate" expressions must be defined using literal numeric values (not computed expressions) for the input values.', Kr);
                      if (Ze.length && Ze[Ze.length - 1][0] >= Fr)
                        return W.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.', Kr);
                      var Qn = W.parse(Rr, yn, nr);
                      if (!Qn)
                        return null;
                      nr = nr || Qn.type, Ze.push([
                        Fr,
                        Qn
                      ]);
                    }
                    return nr.kind !== "number" && nr.kind !== "color" && !(nr.kind === "array" && nr.itemType.kind === "number" && typeof nr.N == "number") ? W.error("Type " + go(nr) + " is not interpolatable.") : new vs(nr, ot, xt, Pt, Ze);
                  }, vs.prototype.evaluate = function(D) {
                    var W = this.labels, ot = this.outputs;
                    if (W.length === 1)
                      return ot[0].evaluate(D);
                    var xt = this.input.evaluate(D);
                    if (xt <= W[0])
                      return ot[0].evaluate(D);
                    var Pt = W.length;
                    if (xt >= W[Pt - 1])
                      return ot[Pt - 1].evaluate(D);
                    var Ht = Bc(W, xt), ve = W[Ht], Fe = W[Ht + 1], Ze = vs.interpolationFactor(this.interpolation, xt, ve, Fe), nr = ot[Ht].evaluate(D), wr = ot[Ht + 1].evaluate(D);
                    return this.operator === "interpolate" ? Yf[this.type.kind.toLowerCase()](nr, wr, Ze) : this.operator === "interpolate-hcl" ? Qu.reverse(Qu.interpolate(Qu.forward(nr), Qu.forward(wr), Ze)) : Sl.reverse(Sl.interpolate(Sl.forward(nr), Sl.forward(wr), Ze));
                  }, vs.prototype.eachChild = function(D) {
                    D(this.input);
                    for (var W = 0, ot = this.outputs; W < ot.length; W += 1) {
                      var xt = ot[W];
                      D(xt);
                    }
                  }, vs.prototype.outputDefined = function() {
                    return this.outputs.every(function(D) {
                      return D.outputDefined();
                    });
                  }, vs.prototype.serialize = function() {
                    var D;
                    this.interpolation.name === "linear" ? D = ["linear"] : this.interpolation.name === "exponential" ? this.interpolation.base === 1 ? D = ["linear"] : D = [
                      "exponential",
                      this.interpolation.base
                    ] : D = ["cubic-bezier"].concat(this.interpolation.controlPoints);
                    for (var W = [
                      this.operator,
                      D,
                      this.input.serialize()
                    ], ot = 0; ot < this.labels.length; ot++)
                      W.push(this.labels[ot], this.outputs[ot].serialize());
                    return W;
                  };
                  function _f(I, D, W, ot) {
                    var xt = ot - W, Pt = I - W;
                    return xt === 0 ? 0 : D === 1 ? Pt / xt : (Math.pow(D, Pt) - 1) / (Math.pow(D, xt) - 1);
                  }
                  var Nl = function(D, W) {
                    this.type = D, this.args = W;
                  };
                  Nl.parse = function(D, W) {
                    if (D.length < 2)
                      return W.error("Expectected at least one argument.");
                    var ot = null, xt = W.expectedType;
                    xt && xt.kind !== "value" && (ot = xt);
                    for (var Pt = [], Ht = 0, ve = D.slice(1); Ht < ve.length; Ht += 1) {
                      var Fe = ve[Ht], Ze = W.parse(Fe, 1 + Pt.length, ot, void 0, { typeAnnotation: "omit" });
                      if (!Ze)
                        return null;
                      ot = ot || Ze.type, Pt.push(Ze);
                    }
                    var nr = xt && Pt.some(function(wr) {
                      return Bs(xt, wr.type);
                    });
                    return nr ? new Nl(bi, Pt) : new Nl(ot, Pt);
                  }, Nl.prototype.evaluate = function(D) {
                    for (var W = null, ot = 0, xt, Pt = 0, Ht = this.args; Pt < Ht.length; Pt += 1) {
                      var ve = Ht[Pt];
                      if (ot++, W = ve.evaluate(D), W && W instanceof Ys && !W.available && (xt || (xt = W.name), W = null, ot === this.args.length && (W = xt)), W !== null)
                        break;
                    }
                    return W;
                  }, Nl.prototype.eachChild = function(D) {
                    this.args.forEach(D);
                  }, Nl.prototype.outputDefined = function() {
                    return this.args.every(function(D) {
                      return D.outputDefined();
                    });
                  }, Nl.prototype.serialize = function() {
                    var D = ["coalesce"];
                    return this.eachChild(function(W) {
                      D.push(W.serialize());
                    }), D;
                  };
                  var eu = function(D, W) {
                    this.type = W.type, this.bindings = [].concat(D), this.result = W;
                  };
                  eu.prototype.evaluate = function(D) {
                    return this.result.evaluate(D);
                  }, eu.prototype.eachChild = function(D) {
                    for (var W = 0, ot = this.bindings; W < ot.length; W += 1) {
                      var xt = ot[W];
                      D(xt[1]);
                    }
                    D(this.result);
                  }, eu.parse = function(D, W) {
                    if (D.length < 4)
                      return W.error("Expected at least 3 arguments, but found " + (D.length - 1) + " instead.");
                    for (var ot = [], xt = 1; xt < D.length - 1; xt += 2) {
                      var Pt = D[xt];
                      if (typeof Pt != "string")
                        return W.error("Expected string, but found " + typeof Pt + " instead.", xt);
                      if (/[^a-zA-Z0-9_]/.test(Pt))
                        return W.error("Variable names must contain only alphanumeric characters or '_'.", xt);
                      var Ht = W.parse(D[xt + 1], xt + 1);
                      if (!Ht)
                        return null;
                      ot.push([
                        Pt,
                        Ht
                      ]);
                    }
                    var ve = W.parse(D[D.length - 1], D.length - 1, W.expectedType, ot);
                    return ve ? new eu(ot, ve) : null;
                  }, eu.prototype.outputDefined = function() {
                    return this.result.outputDefined();
                  }, eu.prototype.serialize = function() {
                    for (var D = ["let"], W = 0, ot = this.bindings; W < ot.length; W += 1) {
                      var xt = ot[W], Pt = xt[0], Ht = xt[1];
                      D.push(Pt, Ht.serialize());
                    }
                    return D.push(this.result.serialize()), D;
                  };
                  var $u = function(D, W, ot) {
                    this.type = D, this.index = W, this.input = ot;
                  };
                  $u.parse = function(D, W) {
                    if (D.length !== 3)
                      return W.error("Expected 2 arguments, but found " + (D.length - 1) + " instead.");
                    var ot = W.parse(D[1], 1, Dn), xt = W.parse(D[2], 2, Io(W.expectedType || bi));
                    if (!ot || !xt)
                      return null;
                    var Pt = xt.type;
                    return new $u(Pt.itemType, ot, xt);
                  }, $u.prototype.evaluate = function(D) {
                    var W = this.index.evaluate(D), ot = this.input.evaluate(D);
                    if (W < 0)
                      throw new ds("Array index out of bounds: " + W + " < 0.");
                    if (W >= ot.length)
                      throw new ds("Array index out of bounds: " + W + " > " + (ot.length - 1) + ".");
                    if (W !== Math.floor(W))
                      throw new ds("Array index must be an integer, but found " + W + " instead.");
                    return ot[W];
                  }, $u.prototype.eachChild = function(D) {
                    D(this.index), D(this.input);
                  }, $u.prototype.outputDefined = function() {
                    return !1;
                  }, $u.prototype.serialize = function() {
                    return [
                      "at",
                      this.index.serialize(),
                      this.input.serialize()
                    ];
                  };
                  var Lu = function(D, W) {
                    this.type = fi, this.needle = D, this.haystack = W;
                  };
                  Lu.parse = function(D, W) {
                    if (D.length !== 3)
                      return W.error("Expected 2 arguments, but found " + (D.length - 1) + " instead.");
                    var ot = W.parse(D[1], 1, bi), xt = W.parse(D[2], 2, bi);
                    return !ot || !xt ? null : so(ot.type, [
                      fi,
                      li,
                      Dn,
                      wn,
                      bi
                    ]) ? new Lu(ot, xt) : W.error("Expected first argument to be of type boolean, string, number or null, but found " + go(ot.type) + " instead");
                  }, Lu.prototype.evaluate = function(D) {
                    var W = this.needle.evaluate(D), ot = this.haystack.evaluate(D);
                    if (!ot)
                      return !1;
                    if (!Ql(W, [
                      "boolean",
                      "string",
                      "number",
                      "null"
                    ]))
                      throw new ds("Expected first argument to be of type boolean, string, number or null, but found " + go(qo(W)) + " instead.");
                    if (!Ql(ot, [
                      "string",
                      "array"
                    ]))
                      throw new ds("Expected second argument to be of type array or string, but found " + go(qo(ot)) + " instead.");
                    return ot.indexOf(W) >= 0;
                  }, Lu.prototype.eachChild = function(D) {
                    D(this.needle), D(this.haystack);
                  }, Lu.prototype.outputDefined = function() {
                    return !0;
                  }, Lu.prototype.serialize = function() {
                    return [
                      "in",
                      this.needle.serialize(),
                      this.haystack.serialize()
                    ];
                  };
                  var ru = function(D, W, ot) {
                    this.type = Dn, this.needle = D, this.haystack = W, this.fromIndex = ot;
                  };
                  ru.parse = function(D, W) {
                    if (D.length <= 2 || D.length >= 5)
                      return W.error("Expected 3 or 4 arguments, but found " + (D.length - 1) + " instead.");
                    var ot = W.parse(D[1], 1, bi), xt = W.parse(D[2], 2, bi);
                    if (!ot || !xt)
                      return null;
                    if (!so(ot.type, [
                      fi,
                      li,
                      Dn,
                      wn,
                      bi
                    ]))
                      return W.error("Expected first argument to be of type boolean, string, number or null, but found " + go(ot.type) + " instead");
                    if (D.length === 4) {
                      var Pt = W.parse(D[3], 3, Dn);
                      return Pt ? new ru(ot, xt, Pt) : null;
                    } else
                      return new ru(ot, xt);
                  }, ru.prototype.evaluate = function(D) {
                    var W = this.needle.evaluate(D), ot = this.haystack.evaluate(D);
                    if (!Ql(W, [
                      "boolean",
                      "string",
                      "number",
                      "null"
                    ]))
                      throw new ds("Expected first argument to be of type boolean, string, number or null, but found " + go(qo(W)) + " instead.");
                    if (!Ql(ot, [
                      "string",
                      "array"
                    ]))
                      throw new ds("Expected second argument to be of type array or string, but found " + go(qo(ot)) + " instead.");
                    if (this.fromIndex) {
                      var xt = this.fromIndex.evaluate(D);
                      return ot.indexOf(W, xt);
                    }
                    return ot.indexOf(W);
                  }, ru.prototype.eachChild = function(D) {
                    D(this.needle), D(this.haystack), this.fromIndex && D(this.fromIndex);
                  }, ru.prototype.outputDefined = function() {
                    return !1;
                  }, ru.prototype.serialize = function() {
                    if (this.fromIndex != null && this.fromIndex !== void 0) {
                      var D = this.fromIndex.serialize();
                      return [
                        "index-of",
                        this.needle.serialize(),
                        this.haystack.serialize(),
                        D
                      ];
                    }
                    return [
                      "index-of",
                      this.needle.serialize(),
                      this.haystack.serialize()
                    ];
                  };
                  var nu = function(D, W, ot, xt, Pt, Ht) {
                    this.inputType = D, this.type = W, this.input = ot, this.cases = xt, this.outputs = Pt, this.otherwise = Ht;
                  };
                  nu.parse = function(D, W) {
                    if (D.length < 5)
                      return W.error("Expected at least 4 arguments, but found only " + (D.length - 1) + ".");
                    if (D.length % 2 !== 1)
                      return W.error("Expected an even number of arguments.");
                    var ot, xt;
                    W.expectedType && W.expectedType.kind !== "value" && (xt = W.expectedType);
                    for (var Pt = {}, Ht = [], ve = 2; ve < D.length - 1; ve += 2) {
                      var Fe = D[ve], Ze = D[ve + 1];
                      Array.isArray(Fe) || (Fe = [Fe]);
                      var nr = W.concat(ve);
                      if (Fe.length === 0)
                        return nr.error("Expected at least one branch label.");
                      for (var wr = 0, Fr = Fe; wr < Fr.length; wr += 1) {
                        var Rr = Fr[wr];
                        if (typeof Rr != "number" && typeof Rr != "string")
                          return nr.error("Branch labels must be numbers or strings.");
                        if (typeof Rr == "number" && Math.abs(Rr) > Number.MAX_SAFE_INTEGER)
                          return nr.error("Branch labels must be integers no larger than " + Number.MAX_SAFE_INTEGER + ".");
                        if (typeof Rr == "number" && Math.floor(Rr) !== Rr)
                          return nr.error("Numeric branch labels must be integer values.");
                        if (!ot)
                          ot = qo(Rr);
                        else if (nr.checkSubtype(ot, qo(Rr)))
                          return null;
                        if (typeof Pt[String(Rr)] < "u")
                          return nr.error("Branch labels must be unique.");
                        Pt[String(Rr)] = Ht.length;
                      }
                      var Kr = W.parse(Ze, ve, xt);
                      if (!Kr)
                        return null;
                      xt = xt || Kr.type, Ht.push(Kr);
                    }
                    var yn = W.parse(D[1], 1, bi);
                    if (!yn)
                      return null;
                    var Qn = W.parse(D[D.length - 1], D.length - 1, xt);
                    return !Qn || yn.type.kind !== "value" && W.concat(1).checkSubtype(ot, yn.type) ? null : new nu(ot, xt, yn, Pt, Ht, Qn);
                  }, nu.prototype.evaluate = function(D) {
                    var W = this.input.evaluate(D), ot = qo(W) === this.inputType && this.outputs[this.cases[W]] || this.otherwise;
                    return ot.evaluate(D);
                  }, nu.prototype.eachChild = function(D) {
                    D(this.input), this.outputs.forEach(D), D(this.otherwise);
                  }, nu.prototype.outputDefined = function() {
                    return this.outputs.every(function(D) {
                      return D.outputDefined();
                    }) && this.otherwise.outputDefined();
                  }, nu.prototype.serialize = function() {
                    for (var D = this, W = [
                      "match",
                      this.input.serialize()
                    ], ot = Object.keys(this.cases).sort(), xt = [], Pt = {}, Ht = 0, ve = ot; Ht < ve.length; Ht += 1) {
                      var Fe = ve[Ht], Ze = Pt[this.cases[Fe]];
                      Ze === void 0 ? (Pt[this.cases[Fe]] = xt.length, xt.push([
                        this.cases[Fe],
                        [Fe]
                      ])) : xt[Ze][1].push(Fe);
                    }
                    for (var nr = function(yn) {
                      return D.inputType.kind === "number" ? Number(yn) : yn;
                    }, wr = 0, Fr = xt; wr < Fr.length; wr += 1) {
                      var Rr = Fr[wr], Ze = Rr[0], Kr = Rr[1];
                      Kr.length === 1 ? W.push(nr(Kr[0])) : W.push(Kr.map(nr)), W.push(this.outputs[outputIndex$1].serialize());
                    }
                    return W.push(this.otherwise.serialize()), W;
                  };
                  var Ul = function(D, W, ot) {
                    this.type = D, this.branches = W, this.otherwise = ot;
                  };
                  Ul.parse = function(D, W) {
                    if (D.length < 4)
                      return W.error("Expected at least 3 arguments, but found only " + (D.length - 1) + ".");
                    if (D.length % 2 !== 0)
                      return W.error("Expected an odd number of arguments.");
                    var ot;
                    W.expectedType && W.expectedType.kind !== "value" && (ot = W.expectedType);
                    for (var xt = [], Pt = 1; Pt < D.length - 1; Pt += 2) {
                      var Ht = W.parse(D[Pt], Pt, fi);
                      if (!Ht)
                        return null;
                      var ve = W.parse(D[Pt + 1], Pt + 1, ot);
                      if (!ve)
                        return null;
                      xt.push([
                        Ht,
                        ve
                      ]), ot = ot || ve.type;
                    }
                    var Fe = W.parse(D[D.length - 1], D.length - 1, ot);
                    return Fe ? new Ul(ot, xt, Fe) : null;
                  }, Ul.prototype.evaluate = function(D) {
                    for (var W = 0, ot = this.branches; W < ot.length; W += 1) {
                      var xt = ot[W], Pt = xt[0], Ht = xt[1];
                      if (Pt.evaluate(D))
                        return Ht.evaluate(D);
                    }
                    return this.otherwise.evaluate(D);
                  }, Ul.prototype.eachChild = function(D) {
                    for (var W = 0, ot = this.branches; W < ot.length; W += 1) {
                      var xt = ot[W], Pt = xt[0], Ht = xt[1];
                      D(Pt), D(Ht);
                    }
                    D(this.otherwise);
                  }, Ul.prototype.outputDefined = function() {
                    return this.branches.every(function(D) {
                      D[0];
                      var W = D[1];
                      return W.outputDefined();
                    }) && this.otherwise.outputDefined();
                  }, Ul.prototype.serialize = function() {
                    var D = ["case"];
                    return this.eachChild(function(W) {
                      D.push(W.serialize());
                    }), D;
                  };
                  var Ml = function(D, W, ot, xt) {
                    this.type = D, this.input = W, this.beginIndex = ot, this.endIndex = xt;
                  };
                  Ml.parse = function(D, W) {
                    if (D.length <= 2 || D.length >= 5)
                      return W.error("Expected 3 or 4 arguments, but found " + (D.length - 1) + " instead.");
                    var ot = W.parse(D[1], 1, bi), xt = W.parse(D[2], 2, Dn);
                    if (!ot || !xt)
                      return null;
                    if (!so(ot.type, [
                      Io(bi),
                      li,
                      bi
                    ]))
                      return W.error("Expected first argument to be of type array or string, but found " + go(ot.type) + " instead");
                    if (D.length === 4) {
                      var Pt = W.parse(D[3], 3, Dn);
                      return Pt ? new Ml(ot.type, ot, xt, Pt) : null;
                    } else
                      return new Ml(ot.type, ot, xt);
                  }, Ml.prototype.evaluate = function(D) {
                    var W = this.input.evaluate(D), ot = this.beginIndex.evaluate(D);
                    if (!Ql(W, [
                      "string",
                      "array"
                    ]))
                      throw new ds("Expected first argument to be of type array or string, but found " + go(qo(W)) + " instead.");
                    if (this.endIndex) {
                      var xt = this.endIndex.evaluate(D);
                      return W.slice(ot, xt);
                    }
                    return W.slice(ot);
                  }, Ml.prototype.eachChild = function(D) {
                    D(this.input), D(this.beginIndex), this.endIndex && D(this.endIndex);
                  }, Ml.prototype.outputDefined = function() {
                    return !1;
                  }, Ml.prototype.serialize = function() {
                    if (this.endIndex != null && this.endIndex !== void 0) {
                      var D = this.endIndex.serialize();
                      return [
                        "slice",
                        this.input.serialize(),
                        this.beginIndex.serialize(),
                        D
                      ];
                    }
                    return [
                      "slice",
                      this.input.serialize(),
                      this.beginIndex.serialize()
                    ];
                  };
                  function Tf(I, D) {
                    return I === "==" || I === "!=" ? D.kind === "boolean" || D.kind === "string" || D.kind === "number" || D.kind === "null" || D.kind === "value" : D.kind === "string" || D.kind === "number" || D.kind === "value";
                  }
                  function wc(I, D, W) {
                    return D === W;
                  }
                  function od(I, D, W) {
                    return D !== W;
                  }
                  function Dd(I, D, W) {
                    return D < W;
                  }
                  function kd(I, D, W) {
                    return D > W;
                  }
                  function Qf(I, D, W) {
                    return D <= W;
                  }
                  function Zc(I, D, W) {
                    return D >= W;
                  }
                  function Xc(I, D, W, ot) {
                    return ot.compare(D, W) === 0;
                  }
                  function xs(I, D, W, ot) {
                    return !Xc(I, D, W, ot);
                  }
                  function El(I, D, W, ot) {
                    return ot.compare(D, W) < 0;
                  }
                  function Yc(I, D, W, ot) {
                    return ot.compare(D, W) > 0;
                  }
                  function sd(I, D, W, ot) {
                    return ot.compare(D, W) <= 0;
                  }
                  function Kc(I, D, W, ot) {
                    return ot.compare(D, W) >= 0;
                  }
                  function Vl(I, D, W) {
                    var ot = I !== "==" && I !== "!=";
                    return function() {
                      function xt(Pt, Ht, ve) {
                        this.type = fi, this.lhs = Pt, this.rhs = Ht, this.collator = ve, this.hasUntypedArgument = Pt.type.kind === "value" || Ht.type.kind === "value";
                      }
                      return xt.parse = function(Ht, ve) {
                        if (Ht.length !== 3 && Ht.length !== 4)
                          return ve.error("Expected two or three arguments.");
                        var Fe = Ht[0], Ze = ve.parse(Ht[1], 1, bi);
                        if (!Ze)
                          return null;
                        if (!Tf(Fe, Ze.type))
                          return ve.concat(1).error('"' + Fe + `" comparisons are not supported for type '` + go(Ze.type) + "'.");
                        var nr = ve.parse(Ht[2], 2, bi);
                        if (!nr)
                          return null;
                        if (!Tf(Fe, nr.type))
                          return ve.concat(2).error('"' + Fe + `" comparisons are not supported for type '` + go(nr.type) + "'.");
                        if (Ze.type.kind !== nr.type.kind && Ze.type.kind !== "value" && nr.type.kind !== "value")
                          return ve.error("Cannot compare types '" + go(Ze.type) + "' and '" + go(nr.type) + "'.");
                        ot && (Ze.type.kind === "value" && nr.type.kind !== "value" ? Ze = new zs(nr.type, [Ze]) : Ze.type.kind !== "value" && nr.type.kind === "value" && (nr = new zs(Ze.type, [nr])));
                        var wr = null;
                        if (Ht.length === 4) {
                          if (Ze.type.kind !== "string" && nr.type.kind !== "string" && Ze.type.kind !== "value" && nr.type.kind !== "value")
                            return ve.error("Cannot use collator to compare non-string types.");
                          if (wr = ve.parse(Ht[3], 3, Bi), !wr)
                            return null;
                        }
                        return new xt(Ze, nr, wr);
                      }, xt.prototype.evaluate = function(Ht) {
                        var ve = this.lhs.evaluate(Ht), Fe = this.rhs.evaluate(Ht);
                        if (ot && this.hasUntypedArgument) {
                          var Ze = qo(ve), nr = qo(Fe);
                          if (Ze.kind !== nr.kind || !(Ze.kind === "string" || Ze.kind === "number"))
                            throw new ds('Expected arguments for "' + I + '" to be (string, string) or (number, number), but found (' + Ze.kind + ", " + nr.kind + ") instead.");
                        }
                        if (this.collator && !ot && this.hasUntypedArgument) {
                          var wr = qo(ve), Fr = qo(Fe);
                          if (wr.kind !== "string" || Fr.kind !== "string")
                            return D(Ht, ve, Fe);
                        }
                        return this.collator ? W(Ht, ve, Fe, this.collator.evaluate(Ht)) : D(Ht, ve, Fe);
                      }, xt.prototype.eachChild = function(Ht) {
                        Ht(this.lhs), Ht(this.rhs), this.collator && Ht(this.collator);
                      }, xt.prototype.outputDefined = function() {
                        return !0;
                      }, xt.prototype.serialize = function() {
                        var Ht = [I];
                        return this.eachChild(function(ve) {
                          Ht.push(ve.serialize());
                        }), Ht;
                      }, xt;
                    }();
                  }
                  var ld = Vl("==", wc, Xc), $f = Vl("!=", od, xs), qf = Vl("<", Dd, El), Jc = Vl(">", kd, Yc), th = Vl("<=", Qf, sd), Fs = Vl(">=", Zc, Kc), Ms = function(D, W, ot, xt, Pt) {
                    this.type = li, this.number = D, this.locale = W, this.currency = ot, this.minFractionDigits = xt, this.maxFractionDigits = Pt;
                  };
                  Ms.parse = function(D, W) {
                    if (D.length !== 3)
                      return W.error("Expected two arguments.");
                    var ot = W.parse(D[1], 1, Dn);
                    if (!ot)
                      return null;
                    var xt = D[2];
                    if (typeof xt != "object" || Array.isArray(xt))
                      return W.error("NumberFormat options argument must be an object.");
                    var Pt = null;
                    if (xt.locale && (Pt = W.parse(xt.locale, 1, li), !Pt))
                      return null;
                    var Ht = null;
                    if (xt.currency && (Ht = W.parse(xt.currency, 1, li), !Ht))
                      return null;
                    var ve = null;
                    if (xt["min-fraction-digits"] && (ve = W.parse(xt["min-fraction-digits"], 1, Dn), !ve))
                      return null;
                    var Fe = null;
                    return xt["max-fraction-digits"] && (Fe = W.parse(xt["max-fraction-digits"], 1, Dn), !Fe) ? null : new Ms(ot, Pt, Ht, ve, Fe);
                  }, Ms.prototype.evaluate = function(D) {
                    return new Intl.NumberFormat(this.locale ? this.locale.evaluate(D) : [], {
                      style: this.currency ? "currency" : "decimal",
                      currency: this.currency ? this.currency.evaluate(D) : void 0,
                      minimumFractionDigits: this.minFractionDigits ? this.minFractionDigits.evaluate(D) : void 0,
                      maximumFractionDigits: this.maxFractionDigits ? this.maxFractionDigits.evaluate(D) : void 0
                    }).format(this.number.evaluate(D));
                  }, Ms.prototype.eachChild = function(D) {
                    D(this.number), this.locale && D(this.locale), this.currency && D(this.currency), this.minFractionDigits && D(this.minFractionDigits), this.maxFractionDigits && D(this.maxFractionDigits);
                  }, Ms.prototype.outputDefined = function() {
                    return !1;
                  }, Ms.prototype.serialize = function() {
                    var D = {};
                    return this.locale && (D.locale = this.locale.serialize()), this.currency && (D.currency = this.currency.serialize()), this.minFractionDigits && (D["min-fraction-digits"] = this.minFractionDigits.serialize()), this.maxFractionDigits && (D["max-fraction-digits"] = this.maxFractionDigits.serialize()), [
                      "number-format",
                      this.number.serialize(),
                      D
                    ];
                  };
                  var fu = function(D) {
                    this.type = Dn, this.input = D;
                  };
                  fu.parse = function(D, W) {
                    if (D.length !== 2)
                      return W.error("Expected 1 argument, but found " + (D.length - 1) + " instead.");
                    var ot = W.parse(D[1], 1);
                    return ot ? ot.type.kind !== "array" && ot.type.kind !== "string" && ot.type.kind !== "value" ? W.error("Expected argument of type string or array, but found " + go(ot.type) + " instead.") : new fu(ot) : null;
                  }, fu.prototype.evaluate = function(D) {
                    var W = this.input.evaluate(D);
                    if (typeof W == "string")
                      return W.length;
                    if (Array.isArray(W))
                      return W.length;
                    throw new ds("Expected value to be of type string or array, but found " + go(qo(W)) + " instead.");
                  }, fu.prototype.eachChild = function(D) {
                    D(this.input);
                  }, fu.prototype.outputDefined = function() {
                    return !1;
                  }, fu.prototype.serialize = function() {
                    var D = ["length"];
                    return this.eachChild(function(W) {
                      D.push(W.serialize());
                    }), D;
                  };
                  var qu = {
                    "==": ld,
                    "!=": $f,
                    ">": Jc,
                    "<": qf,
                    ">=": Fs,
                    "<=": th,
                    array: zs,
                    at: $u,
                    boolean: zs,
                    case: Ul,
                    coalesce: Nl,
                    collator: $l,
                    format: is,
                    image: wl,
                    in: Lu,
                    "index-of": ru,
                    interpolate: vs,
                    "interpolate-hcl": vs,
                    "interpolate-lab": vs,
                    length: fu,
                    let: eu,
                    literal: yo,
                    match: nu,
                    number: zs,
                    "number-format": Ms,
                    object: zs,
                    slice: Ml,
                    step: Js,
                    string: zs,
                    "to-boolean": Us,
                    "to-color": Us,
                    "to-number": Us,
                    "to-string": Us,
                    var: Ku,
                    within: ql
                  };
                  function Qc(I, D) {
                    var W = D[0], ot = D[1], xt = D[2], Pt = D[3];
                    W = W.evaluate(I), ot = ot.evaluate(I), xt = xt.evaluate(I);
                    var Ht = Pt ? Pt.evaluate(I) : 1, ve = uu(W, ot, xt, Ht);
                    if (ve)
                      throw new ds(ve);
                    return new io(W / 255 * Ht, ot / 255 * Ht, xt / 255 * Ht, Ht);
                  }
                  function tc(I, D) {
                    return I in D;
                  }
                  function Pu(I, D) {
                    var W = D[I];
                    return typeof W > "u" ? null : W;
                  }
                  function ec(I, D, W, ot) {
                    for (; W <= ot; ) {
                      var xt = W + ot >> 1;
                      if (D[xt] === I)
                        return !0;
                      D[xt] > I ? ot = xt - 1 : W = xt + 1;
                    }
                    return !1;
                  }
                  function Hl(I) {
                    return { type: I };
                  }
                  bs.register(qu, {
                    error: [
                      ki,
                      [li],
                      function(I, D) {
                        var W = D[0];
                        throw new ds(W.evaluate(I));
                      }
                    ],
                    typeof: [
                      li,
                      [bi],
                      function(I, D) {
                        var W = D[0];
                        return go(qo(W.evaluate(I)));
                      }
                    ],
                    "to-rgba": [
                      Io(Dn, 4),
                      [_i],
                      function(I, D) {
                        var W = D[0];
                        return W.evaluate(I).toArray();
                      }
                    ],
                    rgb: [
                      _i,
                      [
                        Dn,
                        Dn,
                        Dn
                      ],
                      Qc
                    ],
                    rgba: [
                      _i,
                      [
                        Dn,
                        Dn,
                        Dn,
                        Dn
                      ],
                      Qc
                    ],
                    has: {
                      type: fi,
                      overloads: [
                        [
                          [li],
                          function(I, D) {
                            var W = D[0];
                            return tc(W.evaluate(I), I.properties());
                          }
                        ],
                        [
                          [
                            li,
                            Ti
                          ],
                          function(I, D) {
                            var W = D[0], ot = D[1];
                            return tc(W.evaluate(I), ot.evaluate(I));
                          }
                        ]
                      ]
                    },
                    get: {
                      type: bi,
                      overloads: [
                        [
                          [li],
                          function(I, D) {
                            var W = D[0];
                            return Pu(W.evaluate(I), I.properties());
                          }
                        ],
                        [
                          [
                            li,
                            Ti
                          ],
                          function(I, D) {
                            var W = D[0], ot = D[1];
                            return Pu(W.evaluate(I), ot.evaluate(I));
                          }
                        ]
                      ]
                    },
                    "feature-state": [
                      bi,
                      [li],
                      function(I, D) {
                        var W = D[0];
                        return Pu(W.evaluate(I), I.featureState || {});
                      }
                    ],
                    properties: [
                      Ti,
                      [],
                      function(I) {
                        return I.properties();
                      }
                    ],
                    "geometry-type": [
                      li,
                      [],
                      function(I) {
                        return I.geometryType();
                      }
                    ],
                    id: [
                      bi,
                      [],
                      function(I) {
                        return I.id();
                      }
                    ],
                    zoom: [
                      Dn,
                      [],
                      function(I) {
                        return I.globals.zoom;
                      }
                    ],
                    "heatmap-density": [
                      Dn,
                      [],
                      function(I) {
                        return I.globals.heatmapDensity || 0;
                      }
                    ],
                    "line-progress": [
                      Dn,
                      [],
                      function(I) {
                        return I.globals.lineProgress || 0;
                      }
                    ],
                    accumulated: [
                      bi,
                      [],
                      function(I) {
                        return I.globals.accumulated === void 0 ? null : I.globals.accumulated;
                      }
                    ],
                    "+": [
                      Dn,
                      Hl(Dn),
                      function(I, D) {
                        for (var W = 0, ot = 0, xt = D; ot < xt.length; ot += 1) {
                          var Pt = xt[ot];
                          W += Pt.evaluate(I);
                        }
                        return W;
                      }
                    ],
                    "*": [
                      Dn,
                      Hl(Dn),
                      function(I, D) {
                        for (var W = 1, ot = 0, xt = D; ot < xt.length; ot += 1) {
                          var Pt = xt[ot];
                          W *= Pt.evaluate(I);
                        }
                        return W;
                      }
                    ],
                    "-": {
                      type: Dn,
                      overloads: [
                        [
                          [
                            Dn,
                            Dn
                          ],
                          function(I, D) {
                            var W = D[0], ot = D[1];
                            return W.evaluate(I) - ot.evaluate(I);
                          }
                        ],
                        [
                          [Dn],
                          function(I, D) {
                            var W = D[0];
                            return -W.evaluate(I);
                          }
                        ]
                      ]
                    },
                    "/": [
                      Dn,
                      [
                        Dn,
                        Dn
                      ],
                      function(I, D) {
                        var W = D[0], ot = D[1];
                        return W.evaluate(I) / ot.evaluate(I);
                      }
                    ],
                    "%": [
                      Dn,
                      [
                        Dn,
                        Dn
                      ],
                      function(I, D) {
                        var W = D[0], ot = D[1];
                        return W.evaluate(I) % ot.evaluate(I);
                      }
                    ],
                    ln2: [
                      Dn,
                      [],
                      function() {
                        return Math.LN2;
                      }
                    ],
                    pi: [
                      Dn,
                      [],
                      function() {
                        return Math.PI;
                      }
                    ],
                    e: [
                      Dn,
                      [],
                      function() {
                        return Math.E;
                      }
                    ],
                    "^": [
                      Dn,
                      [
                        Dn,
                        Dn
                      ],
                      function(I, D) {
                        var W = D[0], ot = D[1];
                        return Math.pow(W.evaluate(I), ot.evaluate(I));
                      }
                    ],
                    sqrt: [
                      Dn,
                      [Dn],
                      function(I, D) {
                        var W = D[0];
                        return Math.sqrt(W.evaluate(I));
                      }
                    ],
                    log10: [
                      Dn,
                      [Dn],
                      function(I, D) {
                        var W = D[0];
                        return Math.log(W.evaluate(I)) / Math.LN10;
                      }
                    ],
                    ln: [
                      Dn,
                      [Dn],
                      function(I, D) {
                        var W = D[0];
                        return Math.log(W.evaluate(I));
                      }
                    ],
                    log2: [
                      Dn,
                      [Dn],
                      function(I, D) {
                        var W = D[0];
                        return Math.log(W.evaluate(I)) / Math.LN2;
                      }
                    ],
                    sin: [
                      Dn,
                      [Dn],
                      function(I, D) {
                        var W = D[0];
                        return Math.sin(W.evaluate(I));
                      }
                    ],
                    cos: [
                      Dn,
                      [Dn],
                      function(I, D) {
                        var W = D[0];
                        return Math.cos(W.evaluate(I));
                      }
                    ],
                    tan: [
                      Dn,
                      [Dn],
                      function(I, D) {
                        var W = D[0];
                        return Math.tan(W.evaluate(I));
                      }
                    ],
                    asin: [
                      Dn,
                      [Dn],
                      function(I, D) {
                        var W = D[0];
                        return Math.asin(W.evaluate(I));
                      }
                    ],
                    acos: [
                      Dn,
                      [Dn],
                      function(I, D) {
                        var W = D[0];
                        return Math.acos(W.evaluate(I));
                      }
                    ],
                    atan: [
                      Dn,
                      [Dn],
                      function(I, D) {
                        var W = D[0];
                        return Math.atan(W.evaluate(I));
                      }
                    ],
                    min: [
                      Dn,
                      Hl(Dn),
                      function(I, D) {
                        return Math.min.apply(Math, D.map(function(W) {
                          return W.evaluate(I);
                        }));
                      }
                    ],
                    max: [
                      Dn,
                      Hl(Dn),
                      function(I, D) {
                        return Math.max.apply(Math, D.map(function(W) {
                          return W.evaluate(I);
                        }));
                      }
                    ],
                    abs: [
                      Dn,
                      [Dn],
                      function(I, D) {
                        var W = D[0];
                        return Math.abs(W.evaluate(I));
                      }
                    ],
                    round: [
                      Dn,
                      [Dn],
                      function(I, D) {
                        var W = D[0], ot = W.evaluate(I);
                        return ot < 0 ? -Math.round(-ot) : Math.round(ot);
                      }
                    ],
                    floor: [
                      Dn,
                      [Dn],
                      function(I, D) {
                        var W = D[0];
                        return Math.floor(W.evaluate(I));
                      }
                    ],
                    ceil: [
                      Dn,
                      [Dn],
                      function(I, D) {
                        var W = D[0];
                        return Math.ceil(W.evaluate(I));
                      }
                    ],
                    "filter-==": [
                      fi,
                      [
                        li,
                        bi
                      ],
                      function(I, D) {
                        var W = D[0], ot = D[1];
                        return I.properties()[W.value] === ot.value;
                      }
                    ],
                    "filter-id-==": [
                      fi,
                      [bi],
                      function(I, D) {
                        var W = D[0];
                        return I.id() === W.value;
                      }
                    ],
                    "filter-type-==": [
                      fi,
                      [li],
                      function(I, D) {
                        var W = D[0];
                        return I.geometryType() === W.value;
                      }
                    ],
                    "filter-<": [
                      fi,
                      [
                        li,
                        bi
                      ],
                      function(I, D) {
                        var W = D[0], ot = D[1], xt = I.properties()[W.value], Pt = ot.value;
                        return typeof xt == typeof Pt && xt < Pt;
                      }
                    ],
                    "filter-id-<": [
                      fi,
                      [bi],
                      function(I, D) {
                        var W = D[0], ot = I.id(), xt = W.value;
                        return typeof ot == typeof xt && ot < xt;
                      }
                    ],
                    "filter->": [
                      fi,
                      [
                        li,
                        bi
                      ],
                      function(I, D) {
                        var W = D[0], ot = D[1], xt = I.properties()[W.value], Pt = ot.value;
                        return typeof xt == typeof Pt && xt > Pt;
                      }
                    ],
                    "filter-id->": [
                      fi,
                      [bi],
                      function(I, D) {
                        var W = D[0], ot = I.id(), xt = W.value;
                        return typeof ot == typeof xt && ot > xt;
                      }
                    ],
                    "filter-<=": [
                      fi,
                      [
                        li,
                        bi
                      ],
                      function(I, D) {
                        var W = D[0], ot = D[1], xt = I.properties()[W.value], Pt = ot.value;
                        return typeof xt == typeof Pt && xt <= Pt;
                      }
                    ],
                    "filter-id-<=": [
                      fi,
                      [bi],
                      function(I, D) {
                        var W = D[0], ot = I.id(), xt = W.value;
                        return typeof ot == typeof xt && ot <= xt;
                      }
                    ],
                    "filter->=": [
                      fi,
                      [
                        li,
                        bi
                      ],
                      function(I, D) {
                        var W = D[0], ot = D[1], xt = I.properties()[W.value], Pt = ot.value;
                        return typeof xt == typeof Pt && xt >= Pt;
                      }
                    ],
                    "filter-id->=": [
                      fi,
                      [bi],
                      function(I, D) {
                        var W = D[0], ot = I.id(), xt = W.value;
                        return typeof ot == typeof xt && ot >= xt;
                      }
                    ],
                    "filter-has": [
                      fi,
                      [bi],
                      function(I, D) {
                        var W = D[0];
                        return W.value in I.properties();
                      }
                    ],
                    "filter-has-id": [
                      fi,
                      [],
                      function(I) {
                        return I.id() !== null && I.id() !== void 0;
                      }
                    ],
                    "filter-type-in": [
                      fi,
                      [Io(li)],
                      function(I, D) {
                        var W = D[0];
                        return W.value.indexOf(I.geometryType()) >= 0;
                      }
                    ],
                    "filter-id-in": [
                      fi,
                      [Io(bi)],
                      function(I, D) {
                        var W = D[0];
                        return W.value.indexOf(I.id()) >= 0;
                      }
                    ],
                    "filter-in-small": [
                      fi,
                      [
                        li,
                        Io(bi)
                      ],
                      function(I, D) {
                        var W = D[0], ot = D[1];
                        return ot.value.indexOf(I.properties()[W.value]) >= 0;
                      }
                    ],
                    "filter-in-large": [
                      fi,
                      [
                        li,
                        Io(bi)
                      ],
                      function(I, D) {
                        var W = D[0], ot = D[1];
                        return ec(I.properties()[W.value], ot.value, 0, ot.value.length - 1);
                      }
                    ],
                    all: {
                      type: fi,
                      overloads: [
                        [
                          [
                            fi,
                            fi
                          ],
                          function(I, D) {
                            var W = D[0], ot = D[1];
                            return W.evaluate(I) && ot.evaluate(I);
                          }
                        ],
                        [
                          Hl(fi),
                          function(I, D) {
                            for (var W = 0, ot = D; W < ot.length; W += 1) {
                              var xt = ot[W];
                              if (!xt.evaluate(I))
                                return !1;
                            }
                            return !0;
                          }
                        ]
                      ]
                    },
                    any: {
                      type: fi,
                      overloads: [
                        [
                          [
                            fi,
                            fi
                          ],
                          function(I, D) {
                            var W = D[0], ot = D[1];
                            return W.evaluate(I) || ot.evaluate(I);
                          }
                        ],
                        [
                          Hl(fi),
                          function(I, D) {
                            for (var W = 0, ot = D; W < ot.length; W += 1) {
                              var xt = ot[W];
                              if (xt.evaluate(I))
                                return !0;
                            }
                            return !1;
                          }
                        ]
                      ]
                    },
                    "!": [
                      fi,
                      [fi],
                      function(I, D) {
                        var W = D[0];
                        return !W.evaluate(I);
                      }
                    ],
                    "is-supported-script": [
                      fi,
                      [li],
                      function(I, D) {
                        var W = D[0], ot = I.globals && I.globals.isSupportedScript;
                        return ot ? ot(W.evaluate(I)) : !0;
                      }
                    ],
                    upcase: [
                      li,
                      [li],
                      function(I, D) {
                        var W = D[0];
                        return W.evaluate(I).toUpperCase();
                      }
                    ],
                    downcase: [
                      li,
                      [li],
                      function(I, D) {
                        var W = D[0];
                        return W.evaluate(I).toLowerCase();
                      }
                    ],
                    concat: [
                      li,
                      Hl(bi),
                      function(I, D) {
                        return D.map(function(W) {
                          return Ol(W.evaluate(I));
                        }).join("");
                      }
                    ],
                    "resolved-locale": [
                      li,
                      [Bi],
                      function(I, D) {
                        var W = D[0];
                        return W.evaluate(I).resolvedLocale();
                      }
                    ]
                  });
                  function _c(I) {
                    return {
                      result: "success",
                      value: I
                    };
                  }
                  function rc(I) {
                    return {
                      result: "error",
                      value: I
                    };
                  }
                  function Iu(I) {
                    return I["property-type"] === "data-driven" || I["property-type"] === "cross-faded-data-driven";
                  }
                  function Af(I) {
                    return !!I.expression && I.expression.parameters.indexOf("zoom") > -1;
                  }
                  function Tc(I) {
                    return !!I.expression && I.expression.interpolated;
                  }
                  function No(I) {
                    return I instanceof Number ? "number" : I instanceof String ? "string" : I instanceof Boolean ? "boolean" : Array.isArray(I) ? "array" : I === null ? "null" : typeof I;
                  }
                  function Ac(I) {
                    return typeof I == "object" && I !== null && !Array.isArray(I);
                  }
                  function Sc(I) {
                    return I;
                  }
                  function Sf(I, D) {
                    var W = D.type === "color", ot = I.stops && typeof I.stops[0][0] == "object", xt = ot || I.property !== void 0, Pt = ot || !xt, Ht = I.type || (Tc(D) ? "exponential" : "interval");
                    if (W && (I = yi({}, I), I.stops && (I.stops = I.stops.map(function(Yi) {
                      return [
                        Yi[0],
                        io.parse(Yi[1])
                      ];
                    })), I.default ? I.default = io.parse(I.default) : I.default = io.parse(D.default)), I.colorSpace && I.colorSpace !== "rgb" && !wf[I.colorSpace])
                      throw new Error("Unknown color space: " + I.colorSpace);
                    var ve, Fe, Ze;
                    if (Ht === "exponential")
                      ve = Ef;
                    else if (Ht === "interval")
                      ve = eh;
                    else if (Ht === "categorical") {
                      ve = Mf, Fe = /* @__PURE__ */ Object.create(null);
                      for (var nr = 0, wr = I.stops; nr < wr.length; nr += 1) {
                        var Fr = wr[nr];
                        Fe[Fr[0]] = Fr[1];
                      }
                      Ze = typeof I.stops[0][0];
                    } else if (Ht === "identity")
                      ve = hu;
                    else
                      throw new Error('Unknown function type "' + Ht + '"');
                    if (ot) {
                      for (var Rr = {}, Kr = [], yn = 0; yn < I.stops.length; yn++) {
                        var Qn = I.stops[yn], Bn = Qn[0].zoom;
                        Rr[Bn] === void 0 && (Rr[Bn] = {
                          zoom: Bn,
                          type: I.type,
                          property: I.property,
                          default: I.default,
                          stops: []
                        }, Kr.push(Bn)), Rr[Bn].stops.push([
                          Qn[0].value,
                          Qn[1]
                        ]);
                      }
                      for (var vi = [], ni = 0, pi = Kr; ni < pi.length; ni += 1) {
                        var wi = pi[ni];
                        vi.push([
                          Rr[wi].zoom,
                          Sf(Rr[wi], D)
                        ]);
                      }
                      var Fi = { name: "linear" };
                      return {
                        kind: "composite",
                        interpolationType: Fi,
                        interpolationFactor: vs.interpolationFactor.bind(void 0, Fi),
                        zoomStops: vi.map(function(Yi) {
                          return Yi[0];
                        }),
                        evaluate: function(ma, fa) {
                          var va = ma.zoom;
                          return Ef({
                            stops: vi,
                            base: I.base
                          }, D, va).evaluate(va, fa);
                        }
                      };
                    } else if (Pt) {
                      var Zi = Ht === "exponential" ? {
                        name: "exponential",
                        base: I.base !== void 0 ? I.base : 1
                      } : null;
                      return {
                        kind: "camera",
                        interpolationType: Zi,
                        interpolationFactor: vs.interpolationFactor.bind(void 0, Zi),
                        zoomStops: I.stops.map(function(Yi) {
                          return Yi[0];
                        }),
                        evaluate: function(Yi) {
                          var ma = Yi.zoom;
                          return ve(I, D, ma, Fe, Ze);
                        }
                      };
                    } else
                      return {
                        kind: "source",
                        evaluate: function(ma, fa) {
                          var va = fa && fa.properties ? fa.properties[I.property] : void 0;
                          return va === void 0 ? Ru(I.default, D.default) : ve(I, D, va, Fe, Ze);
                        }
                      };
                  }
                  function Ru(I, D, W) {
                    if (I !== void 0)
                      return I;
                    if (D !== void 0)
                      return D;
                    if (W !== void 0)
                      return W;
                  }
                  function Mf(I, D, W, ot, xt) {
                    var Pt = typeof W === xt ? ot[W] : void 0;
                    return Ru(Pt, I.default, D.default);
                  }
                  function eh(I, D, W) {
                    if (No(W) !== "number")
                      return Ru(I.default, D.default);
                    var ot = I.stops.length;
                    if (ot === 1 || W <= I.stops[0][0])
                      return I.stops[0][1];
                    if (W >= I.stops[ot - 1][0])
                      return I.stops[ot - 1][1];
                    var xt = Bc(I.stops.map(function(Pt) {
                      return Pt[0];
                    }), W);
                    return I.stops[xt][1];
                  }
                  function Ef(I, D, W) {
                    var ot = I.base !== void 0 ? I.base : 1;
                    if (No(W) !== "number")
                      return Ru(I.default, D.default);
                    var xt = I.stops.length;
                    if (xt === 1 || W <= I.stops[0][0])
                      return I.stops[0][1];
                    if (W >= I.stops[xt - 1][0])
                      return I.stops[xt - 1][1];
                    var Pt = Bc(I.stops.map(function(wr) {
                      return wr[0];
                    }), W), Ht = vo(W, ot, I.stops[Pt][0], I.stops[Pt + 1][0]), ve = I.stops[Pt][1], Fe = I.stops[Pt + 1][1], Ze = Yf[D.type] || Sc;
                    if (I.colorSpace && I.colorSpace !== "rgb") {
                      var nr = wf[I.colorSpace];
                      Ze = function(wr, Fr) {
                        return nr.reverse(nr.interpolate(nr.forward(wr), nr.forward(Fr), Ht));
                      };
                    }
                    return typeof ve.evaluate == "function" ? {
                      evaluate: function() {
                        for (var Fr = [], Rr = arguments.length; Rr--; )
                          Fr[Rr] = arguments[Rr];
                        var Kr = ve.evaluate.apply(void 0, Fr), yn = Fe.evaluate.apply(void 0, Fr);
                        if (!(Kr === void 0 || yn === void 0))
                          return Ze(Kr, yn, Ht);
                      }
                    } : Ze(ve, Fe, Ht);
                  }
                  function hu(I, D, W) {
                    return D.type === "color" ? W = io.parse(W) : D.type === "formatted" ? W = jo.fromString(W.toString()) : D.type === "resolvedImage" ? W = Ys.fromString(W.toString()) : No(W) !== D.type && (D.type !== "enum" || !D.values[W]) && (W = void 0), Ru(W, I.default, D.default);
                  }
                  function vo(I, D, W, ot) {
                    var xt = ot - W, Pt = I - W;
                    return xt === 0 ? 0 : D === 1 ? Pt / xt : (Math.pow(D, Pt) - 1) / (Math.pow(D, xt) - 1);
                  }
                  var Cl = function(D, W) {
                    this.expression = D, this._warningHistory = {}, this._evaluator = new _l(), this._defaultValue = W ? $c(W) : null, this._enumValues = W && W.type === "enum" ? W.values : null;
                  };
                  Cl.prototype.evaluateWithoutErrorHandling = function(D, W, ot, xt, Pt, Ht) {
                    return this._evaluator.globals = D, this._evaluator.feature = W, this._evaluator.featureState = ot, this._evaluator.canonical = xt, this._evaluator.availableImages = Pt || null, this._evaluator.formattedSection = Ht, this.expression.evaluate(this._evaluator);
                  }, Cl.prototype.evaluate = function(D, W, ot, xt, Pt, Ht) {
                    this._evaluator.globals = D, this._evaluator.feature = W || null, this._evaluator.featureState = ot || null, this._evaluator.canonical = xt, this._evaluator.availableImages = Pt || null, this._evaluator.formattedSection = Ht || null;
                    try {
                      var ve = this.expression.evaluate(this._evaluator);
                      if (ve == null || typeof ve == "number" && ve !== ve)
                        return this._defaultValue;
                      if (this._enumValues && !(ve in this._enumValues))
                        throw new ds("Expected value to be one of " + Object.keys(this._enumValues).map(function(Fe) {
                          return JSON.stringify(Fe);
                        }).join(", ") + ", but found " + JSON.stringify(ve) + " instead.");
                      return ve;
                    } catch (Fe) {
                      return this._warningHistory[Fe.message] || (this._warningHistory[Fe.message] = !0, typeof console < "u" && console.warn(Fe.message)), this._defaultValue;
                    }
                  };
                  function Qs(I) {
                    return Array.isArray(I) && I.length > 0 && typeof I[0] == "string" && I[0] in qu;
                  }
                  function Du(I, D) {
                    var W = new cu(qu, [], D ? nh(D) : void 0), ot = W.parse(I, void 0, void 0, void 0, D && D.type === "string" ? { typeAnnotation: "coerce" } : void 0);
                    return ot ? _c(new Cl(ot, D)) : rc(W.errors);
                  }
                  var ws = function(D, W) {
                    this.kind = D, this._styleExpression = W, this.isStateDependent = D !== "constant" && !Yu(W.expression);
                  };
                  ws.prototype.evaluateWithoutErrorHandling = function(D, W, ot, xt, Pt, Ht) {
                    return this._styleExpression.evaluateWithoutErrorHandling(D, W, ot, xt, Pt, Ht);
                  }, ws.prototype.evaluate = function(D, W, ot, xt, Pt, Ht) {
                    return this._styleExpression.evaluate(D, W, ot, xt, Pt, Ht);
                  };
                  var Gl = function(D, W, ot, xt) {
                    this.kind = D, this.zoomStops = ot, this._styleExpression = W, this.isStateDependent = D !== "camera" && !Yu(W.expression), this.interpolationType = xt;
                  };
                  Gl.prototype.evaluateWithoutErrorHandling = function(D, W, ot, xt, Pt, Ht) {
                    return this._styleExpression.evaluateWithoutErrorHandling(D, W, ot, xt, Pt, Ht);
                  }, Gl.prototype.evaluate = function(D, W, ot, xt, Pt, Ht) {
                    return this._styleExpression.evaluate(D, W, ot, xt, Pt, Ht);
                  }, Gl.prototype.interpolationFactor = function(D, W, ot) {
                    return this.interpolationType ? vs.interpolationFactor(this.interpolationType, D, W, ot) : 0;
                  };
                  function Lh(I, D) {
                    if (I = Du(I, D), I.result === "error")
                      return I;
                    var W = I.value.expression, ot = Oc(W);
                    if (!ot && !Iu(D))
                      return rc([new en("", "data expressions not supported")]);
                    var xt = xf(W, ["zoom"]);
                    if (!xt && !Af(D))
                      return rc([new en("", "zoom expressions not supported")]);
                    var Pt = nc(W);
                    if (!Pt && !xt)
                      return rc([new en("", '"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')]);
                    if (Pt instanceof en)
                      return rc([Pt]);
                    if (Pt instanceof vs && !Tc(D))
                      return rc([new en("", '"interpolate" expressions cannot be used with this property')]);
                    if (!Pt)
                      return _c(ot ? new ws("constant", I.value) : new ws("source", I.value));
                    var Ht = Pt instanceof vs ? Pt.interpolation : void 0;
                    return _c(ot ? new Gl("camera", I.value, Pt.labels, Ht) : new Gl("composite", I.value, Pt.labels, Ht));
                  }
                  var Ll = function(D, W) {
                    this._parameters = D, this._specification = W, yi(this, Sf(this._parameters, this._specification));
                  };
                  Ll.deserialize = function(D) {
                    return new Ll(D._parameters, D._specification);
                  }, Ll.serialize = function(D) {
                    return {
                      _parameters: D._parameters,
                      _specification: D._specification
                    };
                  };
                  function rh(I, D) {
                    if (Ac(I))
                      return new Ll(I, D);
                    if (Qs(I)) {
                      var W = Lh(I, D);
                      if (W.result === "error")
                        throw new Error(W.value.map(function(xt) {
                          return xt.key + ": " + xt.message;
                        }).join(", "));
                      return W.value;
                    } else {
                      var ot = I;
                      return typeof I == "string" && D.type === "color" && (ot = io.parse(I)), {
                        kind: "constant",
                        evaluate: function() {
                          return ot;
                        }
                      };
                    }
                  }
                  function nc(I) {
                    var D = null;
                    if (I instanceof eu)
                      D = nc(I.result);
                    else if (I instanceof Nl)
                      for (var W = 0, ot = I.args; W < ot.length; W += 1) {
                        var xt = ot[W];
                        if (D = nc(xt), D)
                          break;
                      }
                    else (I instanceof Js || I instanceof vs) && I.input instanceof bs && I.input.name === "zoom" && (D = I);
                    return D instanceof en || I.eachChild(function(Pt) {
                      var Ht = nc(Pt);
                      Ht instanceof en ? D = Ht : !D && Ht ? D = new en("", '"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.') : D && Ht && D !== Ht && (D = new en("", 'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'));
                    }), D;
                  }
                  function nh(I) {
                    var D = {
                      color: _i,
                      string: li,
                      number: Dn,
                      enum: li,
                      boolean: fi,
                      formatted: ra,
                      resolvedImage: Ea
                    };
                    return I.type === "array" ? Io(D[I.value] || bi, I.length) : D[I.type];
                  }
                  function $c(I) {
                    return I.type === "color" && Ac(I.default) ? new io(0, 0, 0, 0) : I.type === "color" ? io.parse(I.default) || null : I.default === void 0 ? null : I.default;
                  }
                  function Es(I) {
                    var D = I.key, W = I.value, ot = I.valueSpec || {}, xt = I.objectElementValidators || {}, Pt = I.style, Ht = I.styleSpec, ve = [], Fe = No(W);
                    if (Fe !== "object")
                      return [new mn(D, W, "object expected, " + Fe + " found")];
                    for (var Ze in W) {
                      var nr = Ze.split(".")[0], wr = ot[nr] || ot["*"], Fr = void 0;
                      if (xt[nr])
                        Fr = xt[nr];
                      else if (ot[nr])
                        Fr = un;
                      else if (xt["*"])
                        Fr = xt["*"];
                      else if (ot["*"])
                        Fr = un;
                      else {
                        ve.push(new mn(D, W[Ze], 'unknown property "' + Ze + '"'));
                        continue;
                      }
                      ve = ve.concat(Fr({
                        key: (D && D + ".") + Ze,
                        value: W[Ze],
                        valueSpec: wr,
                        style: Pt,
                        styleSpec: Ht,
                        object: W,
                        objectKey: Ze
                      }, W));
                    }
                    for (var Rr in ot)
                      xt[Rr] || ot[Rr].required && ot[Rr].default === void 0 && W[Rr] === void 0 && ve.push(new mn(D, W, 'missing required property "' + Rr + '"'));
                    return ve;
                  }
                  function Mc(I) {
                    var D = I.value, W = I.valueSpec, ot = I.style, xt = I.styleSpec, Pt = I.key, Ht = I.arrayElementValidator || un;
                    if (No(D) !== "array")
                      return [new mn(Pt, D, "array expected, " + No(D) + " found")];
                    if (W.length && D.length !== W.length)
                      return [new mn(Pt, D, "array length " + W.length + " expected, length " + D.length + " found")];
                    if (W["min-length"] && D.length < W["min-length"])
                      return [new mn(Pt, D, "array length at least " + W["min-length"] + " expected, length " + D.length + " found")];
                    var ve = {
                      type: W.value,
                      values: W.values
                    };
                    xt.$version < 7 && (ve.function = W.function), No(W.value) === "object" && (ve = W.value);
                    for (var Fe = [], Ze = 0; Ze < D.length; Ze++)
                      Fe = Fe.concat(Ht({
                        array: D,
                        arrayIndex: Ze,
                        value: D[Ze],
                        valueSpec: ve,
                        style: ot,
                        styleSpec: xt,
                        key: Pt + "[" + Ze + "]"
                      }));
                    return Fe;
                  }
                  function iu(I) {
                    var D = I.key, W = I.value, ot = I.valueSpec, xt = No(W);
                    return xt === "number" && W !== W && (xt = "NaN"), xt !== "number" ? [new mn(D, W, "number expected, " + xt + " found")] : "minimum" in ot && W < ot.minimum ? [new mn(D, W, W + " is less than the minimum value " + ot.minimum)] : "maximum" in ot && W > ot.maximum ? [new mn(D, W, W + " is greater than the maximum value " + ot.maximum)] : [];
                  }
                  function Ec(I) {
                    var D = I.valueSpec, W = ei(I.value.type), ot, xt = {}, Pt, Ht, ve = W !== "categorical" && I.value.property === void 0, Fe = !ve, Ze = No(I.value.stops) === "array" && No(I.value.stops[0]) === "array" && No(I.value.stops[0][0]) === "object", nr = Es({
                      key: I.key,
                      value: I.value,
                      valueSpec: I.styleSpec.function,
                      style: I.style,
                      styleSpec: I.styleSpec,
                      objectElementValidators: {
                        stops: wr,
                        default: Kr
                      }
                    });
                    return W === "identity" && ve && nr.push(new mn(I.key, I.value, 'missing required property "property"')), W !== "identity" && !I.value.stops && nr.push(new mn(I.key, I.value, 'missing required property "stops"')), W === "exponential" && I.valueSpec.expression && !Tc(I.valueSpec) && nr.push(new mn(I.key, I.value, "exponential functions not supported")), I.styleSpec.$version >= 8 && (Fe && !Iu(I.valueSpec) ? nr.push(new mn(I.key, I.value, "property functions not supported")) : ve && !Af(I.valueSpec) && nr.push(new mn(I.key, I.value, "zoom functions not supported"))), (W === "categorical" || Ze) && I.value.property === void 0 && nr.push(new mn(I.key, I.value, '"property" property is required')), nr;
                    function wr(yn) {
                      if (W === "identity")
                        return [new mn(yn.key, yn.value, 'identity function may not have a "stops" property')];
                      var Qn = [], Bn = yn.value;
                      return Qn = Qn.concat(Mc({
                        key: yn.key,
                        value: Bn,
                        valueSpec: yn.valueSpec,
                        style: yn.style,
                        styleSpec: yn.styleSpec,
                        arrayElementValidator: Fr
                      })), No(Bn) === "array" && Bn.length === 0 && Qn.push(new mn(yn.key, Bn, "array must have at least one stop")), Qn;
                    }
                    function Fr(yn) {
                      var Qn = [], Bn = yn.value, vi = yn.key;
                      if (No(Bn) !== "array")
                        return [new mn(vi, Bn, "array expected, " + No(Bn) + " found")];
                      if (Bn.length !== 2)
                        return [new mn(vi, Bn, "array length 2 expected, length " + Bn.length + " found")];
                      if (Ze) {
                        if (No(Bn[0]) !== "object")
                          return [new mn(vi, Bn, "object expected, " + No(Bn[0]) + " found")];
                        if (Bn[0].zoom === void 0)
                          return [new mn(vi, Bn, "object stop key must have zoom")];
                        if (Bn[0].value === void 0)
                          return [new mn(vi, Bn, "object stop key must have value")];
                        if (Ht && Ht > ei(Bn[0].zoom))
                          return [new mn(vi, Bn[0].zoom, "stop zoom values must appear in ascending order")];
                        ei(Bn[0].zoom) !== Ht && (Ht = ei(Bn[0].zoom), Pt = void 0, xt = {}), Qn = Qn.concat(Es({
                          key: vi + "[0]",
                          value: Bn[0],
                          valueSpec: { zoom: {} },
                          style: yn.style,
                          styleSpec: yn.styleSpec,
                          objectElementValidators: {
                            zoom: iu,
                            value: Rr
                          }
                        }));
                      } else
                        Qn = Qn.concat(Rr({
                          key: vi + "[0]",
                          value: Bn[0],
                          valueSpec: {},
                          style: yn.style,
                          styleSpec: yn.styleSpec
                        }, Bn));
                      return Qs(Jn(Bn[1])) ? Qn.concat([new mn(vi + "[1]", Bn[1], "expressions are not allowed in function stops.")]) : Qn.concat(un({
                        key: vi + "[1]",
                        value: Bn[1],
                        valueSpec: D,
                        style: yn.style,
                        styleSpec: yn.styleSpec
                      }));
                    }
                    function Rr(yn, Qn) {
                      var Bn = No(yn.value), vi = ei(yn.value), ni = yn.value !== null ? yn.value : Qn;
                      if (!ot)
                        ot = Bn;
                      else if (Bn !== ot)
                        return [new mn(yn.key, ni, Bn + " stop domain type must match previous stop domain type " + ot)];
                      if (Bn !== "number" && Bn !== "string" && Bn !== "boolean")
                        return [new mn(yn.key, ni, "stop domain value must be a number, string, or boolean")];
                      if (Bn !== "number" && W !== "categorical") {
                        var pi = "number expected, " + Bn + " found";
                        return Iu(D) && W === void 0 && (pi += '\nIf you intended to use a categorical function, specify `"type": "categorical"`.'), [new mn(yn.key, ni, pi)];
                      }
                      return W === "categorical" && Bn === "number" && (!isFinite(vi) || Math.floor(vi) !== vi) ? [new mn(yn.key, ni, "integer expected, found " + vi)] : W !== "categorical" && Bn === "number" && Pt !== void 0 && vi < Pt ? [new mn(yn.key, ni, "stop domain values must appear in ascending order")] : (Pt = vi, W === "categorical" && vi in xt ? [new mn(yn.key, ni, "stop domain values must be unique")] : (xt[vi] = !0, []));
                    }
                    function Kr(yn) {
                      return un({
                        key: yn.key,
                        value: yn.value,
                        valueSpec: D,
                        style: yn.style,
                        styleSpec: yn.styleSpec
                      });
                    }
                  }
                  function ku(I) {
                    var D = (I.expressionContext === "property" ? Lh : Du)(Jn(I.value), I.valueSpec);
                    if (D.result === "error")
                      return D.value.map(function(ot) {
                        return new mn("" + I.key + ot.key, I.value, ot.message);
                      });
                    var W = D.value.expression || D.value._styleExpression.expression;
                    if (I.expressionContext === "property" && I.propertyKey === "text-font" && !W.outputDefined())
                      return [new mn(I.key, I.value, 'Invalid data expression for "' + I.propertyKey + '". Output values must be contained as literals within the expression.')];
                    if (I.expressionContext === "property" && I.propertyType === "layout" && !Yu(W))
                      return [new mn(I.key, I.value, '"feature-state" data expressions are not supported with layout properties.')];
                    if (I.expressionContext === "filter" && !Yu(W))
                      return [new mn(I.key, I.value, '"feature-state" data expressions are not supported with filters.')];
                    if (I.expressionContext && I.expressionContext.indexOf("cluster") === 0) {
                      if (!xf(W, [
                        "zoom",
                        "feature-state"
                      ]))
                        return [new mn(I.key, I.value, '"zoom" and "feature-state" expressions are not supported with cluster properties.')];
                      if (I.expressionContext === "cluster-initial" && !Oc(W))
                        return [new mn(I.key, I.value, "Feature data expressions are not supported with initial expression part of cluster properties.")];
                    }
                    return [];
                  }
                  function Ph(I) {
                    var D = I.value, W = I.key, ot = No(D);
                    return ot !== "boolean" ? [new mn(W, D, "boolean expected, " + ot + " found")] : [];
                  }
                  function oo(I) {
                    var D = I.key, W = I.value, ot = No(W);
                    return ot !== "string" ? [new mn(D, W, "color expected, " + ot + " found")] : Ns(W) === null ? [new mn(D, W, 'color expected, "' + W + '" found')] : [];
                  }
                  function ic(I) {
                    var D = I.key, W = I.value, ot = I.valueSpec, xt = [];
                    return Array.isArray(ot.values) ? ot.values.indexOf(ei(W)) === -1 && xt.push(new mn(D, W, "expected one of [" + ot.values.join(", ") + "], " + JSON.stringify(W) + " found")) : Object.keys(ot.values).indexOf(ei(W)) === -1 && xt.push(new mn(D, W, "expected one of [" + Object.keys(ot.values).join(", ") + "], " + JSON.stringify(W) + " found")), xt;
                  }
                  function ih(I) {
                    if (I === !0 || I === !1)
                      return !0;
                    if (!Array.isArray(I) || I.length === 0)
                      return !1;
                    switch (I[0]) {
                      case "has":
                        return I.length >= 2 && I[1] !== "$id" && I[1] !== "$type";
                      case "in":
                        return I.length >= 3 && (typeof I[1] != "string" || Array.isArray(I[2]));
                      case "!in":
                      case "!has":
                      case "none":
                        return !1;
                      case "==":
                      case "!=":
                      case ">":
                      case ">=":
                      case "<":
                      case "<=":
                        return I.length !== 3 || Array.isArray(I[1]) || Array.isArray(I[2]);
                      case "any":
                      case "all":
                        for (var D = 0, W = I.slice(1); D < W.length; D += 1) {
                          var ot = W[D];
                          if (!ih(ot) && typeof ot != "boolean")
                            return !1;
                        }
                        return !0;
                      default:
                        return !0;
                    }
                  }
                  var du = {
                    type: "boolean",
                    default: !1,
                    transition: !1,
                    "property-type": "data-driven",
                    expression: {
                      interpolated: !1,
                      parameters: [
                        "zoom",
                        "feature"
                      ]
                    }
                  };
                  function Wl(I) {
                    if (I == null)
                      return {
                        filter: function() {
                          return !0;
                        },
                        needGeometry: !1
                      };
                    ih(I) || (I = qc(I));
                    var D = Du(I, du);
                    if (D.result === "error")
                      throw new Error(D.value.map(function(ot) {
                        return ot.key + ": " + ot.message;
                      }).join(", "));
                    var W = Cf(I);
                    return {
                      filter: function(ot, xt, Pt) {
                        return D.value.evaluate(ot, xt, {}, Pt);
                      },
                      needGeometry: W
                    };
                  }
                  function Ih(I, D) {
                    return I < D ? -1 : I > D ? 1 : 0;
                  }
                  function Cf(I) {
                    if (!Array.isArray(I))
                      return !1;
                    if (I[0] === "within")
                      return !0;
                    for (var D = 1; D < I.length; D++)
                      if (Cf(I[D]))
                        return !0;
                    return !1;
                  }
                  function qc(I) {
                    if (!I)
                      return !0;
                    var D = I[0];
                    if (I.length <= 1)
                      return D !== "any";
                    var W = D === "==" ? ah(I[1], I[2], "==") : D === "!=" ? vu(ah(I[1], I[2], "==")) : D === "<" || D === ">" || D === "<=" || D === ">=" ? ah(I[1], I[2], D) : D === "any" ? ud(I.slice(1)) : D === "all" ? ["all"].concat(I.slice(1).map(qc)) : D === "none" ? ["all"].concat(I.slice(1).map(qc).map(vu)) : D === "in" ? Cc(I[1], I.slice(2)) : D === "!in" ? vu(Cc(I[1], I.slice(2))) : D === "has" ? tf(I[1]) : D === "!has" ? vu(tf(I[1])) : D === "within" ? I : !0;
                    return W;
                  }
                  function ah(I, D, W) {
                    switch (I) {
                      case "$type":
                        return [
                          "filter-type-" + W,
                          D
                        ];
                      case "$id":
                        return [
                          "filter-id-" + W,
                          D
                        ];
                      default:
                        return [
                          "filter-" + W,
                          I,
                          D
                        ];
                    }
                  }
                  function ud(I) {
                    return ["any"].concat(I.map(qc));
                  }
                  function Cc(I, D) {
                    if (D.length === 0)
                      return !1;
                    switch (I) {
                      case "$type":
                        return [
                          "filter-type-in",
                          [
                            "literal",
                            D
                          ]
                        ];
                      case "$id":
                        return [
                          "filter-id-in",
                          [
                            "literal",
                            D
                          ]
                        ];
                      default:
                        return D.length > 200 && !D.some(function(W) {
                          return typeof W != typeof D[0];
                        }) ? [
                          "filter-in-large",
                          I,
                          [
                            "literal",
                            D.sort(Ih)
                          ]
                        ] : [
                          "filter-in-small",
                          I,
                          [
                            "literal",
                            D
                          ]
                        ];
                    }
                  }
                  function tf(I) {
                    switch (I) {
                      case "$type":
                        return !0;
                      case "$id":
                        return ["filter-has-id"];
                      default:
                        return [
                          "filter-has",
                          I
                        ];
                    }
                  }
                  function vu(I) {
                    return [
                      "!",
                      I
                    ];
                  }
                  function ef(I) {
                    return ih(Jn(I.value)) ? ku(yi({}, I, {
                      expressionContext: "filter",
                      valueSpec: { value: "boolean" }
                    })) : pu(I);
                  }
                  function pu(I) {
                    var D = I.value, W = I.key;
                    if (No(D) !== "array")
                      return [new mn(W, D, "array expected, " + No(D) + " found")];
                    var ot = I.styleSpec, xt, Pt = [];
                    if (D.length < 1)
                      return [new mn(W, D, "filter array must have at least 1 element")];
                    switch (Pt = Pt.concat(ic({
                      key: W + "[0]",
                      value: D[0],
                      valueSpec: ot.filter_operator,
                      style: I.style,
                      styleSpec: I.styleSpec
                    })), ei(D[0])) {
                      case "<":
                      case "<=":
                      case ">":
                      case ">=":
                        D.length >= 2 && ei(D[1]) === "$type" && Pt.push(new mn(W, D, '"$type" cannot be use with operator "' + D[0] + '"'));
                      case "==":
                      case "!=":
                        D.length !== 3 && Pt.push(new mn(W, D, 'filter array for operator "' + D[0] + '" must have 3 elements'));
                      case "in":
                      case "!in":
                        D.length >= 2 && (xt = No(D[1]), xt !== "string" && Pt.push(new mn(W + "[1]", D[1], "string expected, " + xt + " found")));
                        for (var Ht = 2; Ht < D.length; Ht++)
                          xt = No(D[Ht]), ei(D[1]) === "$type" ? Pt = Pt.concat(ic({
                            key: W + "[" + Ht + "]",
                            value: D[Ht],
                            valueSpec: ot.geometry_type,
                            style: I.style,
                            styleSpec: I.styleSpec
                          })) : xt !== "string" && xt !== "number" && xt !== "boolean" && Pt.push(new mn(W + "[" + Ht + "]", D[Ht], "string, number, or boolean expected, " + xt + " found"));
                        break;
                      case "any":
                      case "all":
                      case "none":
                        for (var ve = 1; ve < D.length; ve++)
                          Pt = Pt.concat(pu({
                            key: W + "[" + ve + "]",
                            value: D[ve],
                            style: I.style,
                            styleSpec: I.styleSpec
                          }));
                        break;
                      case "has":
                      case "!has":
                        xt = No(D[1]), D.length !== 2 ? Pt.push(new mn(W, D, 'filter array for "' + D[0] + '" operator must have 2 elements')) : xt !== "string" && Pt.push(new mn(W + "[1]", D[1], "string expected, " + xt + " found"));
                        break;
                      case "within":
                        xt = No(D[1]), D.length !== 2 ? Pt.push(new mn(W, D, 'filter array for "' + D[0] + '" operator must have 2 elements')) : xt !== "object" && Pt.push(new mn(W + "[1]", D[1], "object expected, " + xt + " found"));
                        break;
                    }
                    return Pt;
                  }
                  function cd(I, D) {
                    var W = I.key, ot = I.style, xt = I.styleSpec, Pt = I.value, Ht = I.objectKey, ve = xt[D + "_" + I.layerType];
                    if (!ve)
                      return [];
                    var Fe = Ht.match(/^(.*)-transition$/);
                    if (D === "paint" && Fe && ve[Fe[1]] && ve[Fe[1]].transition)
                      return un({
                        key: W,
                        value: Pt,
                        valueSpec: xt.transition,
                        style: ot,
                        styleSpec: xt
                      });
                    var Ze = I.valueSpec || ve[Ht];
                    if (!Ze)
                      return [new mn(W, Pt, 'unknown property "' + Ht + '"')];
                    var nr;
                    if (No(Pt) === "string" && Iu(Ze) && !Ze.tokens && (nr = /^{([^}]+)}$/.exec(Pt)))
                      return [new mn(W, Pt, '"' + Ht + '" does not support interpolation syntax\nUse an identity property function instead: `{ "type": "identity", "property": ' + JSON.stringify(nr[1]) + " }`.")];
                    var wr = [];
                    return I.layerType === "symbol" && (Ht === "text-field" && ot && !ot.glyphs && wr.push(new mn(W, Pt, 'use of "text-field" requires a style "glyphs" property')), Ht === "text-font" && Ac(Jn(Pt)) && ei(Pt.type) === "identity" && wr.push(new mn(W, Pt, '"text-font" does not support identity functions'))), wr.concat(un({
                      key: I.key,
                      value: Pt,
                      valueSpec: Ze,
                      style: ot,
                      styleSpec: xt,
                      expressionContext: "property",
                      propertyType: D,
                      propertyKey: Ht
                    }));
                  }
                  function he(I) {
                    return cd(I, "paint");
                  }
                  function Ae(I) {
                    return cd(I, "layout");
                  }
                  function Be(I) {
                    var D = [], W = I.value, ot = I.key, xt = I.style, Pt = I.styleSpec;
                    !W.type && !W.ref && D.push(new mn(ot, W, 'either "type" or "ref" is required'));
                    var Ht = ei(W.type), ve = ei(W.ref);
                    if (W.id)
                      for (var Fe = ei(W.id), Ze = 0; Ze < I.arrayIndex; Ze++) {
                        var nr = xt.layers[Ze];
                        ei(nr.id) === Fe && D.push(new mn(ot, W.id, 'duplicate layer id "' + W.id + '", previously used at line ' + nr.id.__line__));
                      }
                    if ("ref" in W) {
                      [
                        "type",
                        "source",
                        "source-layer",
                        "filter",
                        "layout"
                      ].forEach(function(Kr) {
                        Kr in W && D.push(new mn(ot, W[Kr], '"' + Kr + '" is prohibited for ref layers'));
                      });
                      var wr;
                      xt.layers.forEach(function(Kr) {
                        ei(Kr.id) === ve && (wr = Kr);
                      }), wr ? wr.ref ? D.push(new mn(ot, W.ref, "ref cannot reference another ref layer")) : Ht = ei(wr.type) : D.push(new mn(ot, W.ref, 'ref layer "' + ve + '" not found'));
                    } else if (Ht !== "background")
                      if (!W.source)
                        D.push(new mn(ot, W, 'missing required property "source"'));
                      else {
                        var Fr = xt.sources && xt.sources[W.source], Rr = Fr && ei(Fr.type);
                        Fr ? Rr === "vector" && Ht === "raster" ? D.push(new mn(ot, W.source, 'layer "' + W.id + '" requires a raster source')) : Rr === "raster" && Ht !== "raster" ? D.push(new mn(ot, W.source, 'layer "' + W.id + '" requires a vector source')) : Rr === "vector" && !W["source-layer"] ? D.push(new mn(ot, W, 'layer "' + W.id + '" must specify a "source-layer"')) : Rr === "raster-dem" && Ht !== "hillshade" ? D.push(new mn(ot, W.source, "raster-dem source can only be used with layer type 'hillshade'.")) : Ht === "line" && W.paint && W.paint["line-gradient"] && (Rr !== "geojson" || !Fr.lineMetrics) && D.push(new mn(ot, W, 'layer "' + W.id + '" specifies a line-gradient, which requires a GeoJSON source with `lineMetrics` enabled.')) : D.push(new mn(ot, W.source, 'source "' + W.source + '" not found'));
                      }
                    return D = D.concat(Es({
                      key: ot,
                      value: W,
                      valueSpec: Pt.layer,
                      style: I.style,
                      styleSpec: I.styleSpec,
                      objectElementValidators: {
                        "*": function() {
                          return [];
                        },
                        type: function() {
                          return un({
                            key: ot + ".type",
                            value: W.type,
                            valueSpec: Pt.layer.type,
                            style: I.style,
                            styleSpec: I.styleSpec,
                            object: W,
                            objectKey: "type"
                          });
                        },
                        filter: ef,
                        layout: function(yn) {
                          return Es({
                            layer: W,
                            key: yn.key,
                            value: yn.value,
                            style: yn.style,
                            styleSpec: yn.styleSpec,
                            objectElementValidators: {
                              "*": function(Bn) {
                                return Ae(yi({ layerType: Ht }, Bn));
                              }
                            }
                          });
                        },
                        paint: function(yn) {
                          return Es({
                            layer: W,
                            key: yn.key,
                            value: yn.value,
                            style: yn.style,
                            styleSpec: yn.styleSpec,
                            objectElementValidators: {
                              "*": function(Bn) {
                                return he(yi({ layerType: Ht }, Bn));
                              }
                            }
                          });
                        }
                      }
                    })), D;
                  }
                  function Ge(I) {
                    var D = I.value, W = I.key, ot = No(D);
                    return ot !== "string" ? [new mn(W, D, "string expected, " + ot + " found")] : [];
                  }
                  var sr = { promoteId: fr };
                  function ar(I) {
                    var D = I.value, W = I.key, ot = I.styleSpec, xt = I.style;
                    if (!D.type)
                      return [new mn(W, D, '"type" is required')];
                    var Pt = ei(D.type), Ht;
                    switch (Pt) {
                      case "vector":
                      case "raster":
                      case "raster-dem":
                        return Ht = Es({
                          key: W,
                          value: D,
                          valueSpec: ot["source_" + Pt.replace("-", "_")],
                          style: I.style,
                          styleSpec: ot,
                          objectElementValidators: sr
                        }), Ht;
                      case "geojson":
                        if (Ht = Es({
                          key: W,
                          value: D,
                          valueSpec: ot.source_geojson,
                          style: xt,
                          styleSpec: ot,
                          objectElementValidators: sr
                        }), D.cluster)
                          for (var ve in D.clusterProperties) {
                            var Fe = D.clusterProperties[ve], Ze = Fe[0], nr = Fe[1], wr = typeof Ze == "string" ? [
                              Ze,
                              ["accumulated"],
                              [
                                "get",
                                ve
                              ]
                            ] : Ze;
                            Ht.push.apply(Ht, ku({
                              key: W + "." + ve + ".map",
                              value: nr,
                              expressionContext: "cluster-map"
                            })), Ht.push.apply(Ht, ku({
                              key: W + "." + ve + ".reduce",
                              value: wr,
                              expressionContext: "cluster-reduce"
                            }));
                          }
                        return Ht;
                      case "video":
                        return Es({
                          key: W,
                          value: D,
                          valueSpec: ot.source_video,
                          style: xt,
                          styleSpec: ot
                        });
                      case "image":
                        return Es({
                          key: W,
                          value: D,
                          valueSpec: ot.source_image,
                          style: xt,
                          styleSpec: ot
                        });
                      case "canvas":
                        return [new mn(W, null, "Please use runtime APIs to add canvas sources, rather than including them in stylesheets.", "source.canvas")];
                      default:
                        return ic({
                          key: W + ".type",
                          value: D.type,
                          valueSpec: {
                            values: [
                              "vector",
                              "raster",
                              "raster-dem",
                              "geojson",
                              "video",
                              "image"
                            ]
                          },
                          style: xt,
                          styleSpec: ot
                        });
                    }
                  }
                  function fr(I) {
                    var D = I.key, W = I.value;
                    if (No(W) === "string")
                      return Ge({
                        key: D,
                        value: W
                      });
                    var ot = [];
                    for (var xt in W)
                      ot.push.apply(ot, Ge({
                        key: D + "." + xt,
                        value: W[xt]
                      }));
                    return ot;
                  }
                  function Wr(I) {
                    var D = I.value, W = I.styleSpec, ot = W.light, xt = I.style, Pt = [], Ht = No(D);
                    if (D === void 0)
                      return Pt;
                    if (Ht !== "object")
                      return Pt = Pt.concat([new mn("light", D, "object expected, " + Ht + " found")]), Pt;
                    for (var ve in D) {
                      var Fe = ve.match(/^(.*)-transition$/);
                      Fe && ot[Fe[1]] && ot[Fe[1]].transition ? Pt = Pt.concat(un({
                        key: ve,
                        value: D[ve],
                        valueSpec: W.transition,
                        style: xt,
                        styleSpec: W
                      })) : ot[ve] ? Pt = Pt.concat(un({
                        key: ve,
                        value: D[ve],
                        valueSpec: ot[ve],
                        style: xt,
                        styleSpec: W
                      })) : Pt = Pt.concat([new mn(ve, D[ve], 'unknown property "' + ve + '"')]);
                    }
                    return Pt;
                  }
                  function Yr(I) {
                    return Ge(I).length === 0 ? [] : ku(I);
                  }
                  function Pr(I) {
                    return Ge(I).length === 0 ? [] : ku(I);
                  }
                  var tn = {
                    "*": function() {
                      return [];
                    },
                    array: Mc,
                    boolean: Ph,
                    number: iu,
                    color: oo,
                    constants: Wn,
                    enum: ic,
                    filter: ef,
                    function: Ec,
                    layer: Be,
                    object: Es,
                    source: ar,
                    light: Wr,
                    string: Ge,
                    formatted: Yr,
                    resolvedImage: Pr
                  };
                  function un(I) {
                    var D = I.value, W = I.valueSpec, ot = I.styleSpec;
                    if (W.expression && Ac(ei(D)))
                      return Ec(I);
                    if (W.expression && Qs(Jn(D)))
                      return ku(I);
                    if (W.type && tn[W.type])
                      return tn[W.type](I);
                    var xt = Es(yi({}, I, { valueSpec: W.type ? ot[W.type] : W }));
                    return xt;
                  }
                  function dn(I) {
                    var D = I.value, W = I.key, ot = Ge(I);
                    return ot.length || (D.indexOf("{fontstack}") === -1 && ot.push(new mn(W, D, '"glyphs" url must include a "{fontstack}" token')), D.indexOf("{range}") === -1 && ot.push(new mn(W, D, '"glyphs" url must include a "{range}" token'))), ot;
                  }
                  function On(I, D) {
                    D === void 0 && (D = $r);
                    var W = [];
                    return W = W.concat(un({
                      key: "",
                      value: I,
                      valueSpec: D.$root,
                      styleSpec: D,
                      style: I,
                      objectElementValidators: {
                        glyphs: dn,
                        "*": function() {
                          return [];
                        }
                      }
                    })), I.constants && (W = W.concat(Wn({
                      key: "constants",
                      value: I.constants,
                      style: I,
                      styleSpec: D
                    }))), ai(W);
                  }
                  On.source = ri(ar), On.light = ri(Wr), On.layer = ri(Be), On.filter = ri(ef), On.paintProperty = ri(he), On.layoutProperty = ri(Ae);
                  function ai(I) {
                    return [].concat(I).sort(function(D, W) {
                      return D.line - W.line;
                    });
                  }
                  function ri(I) {
                    return function() {
                      for (var D = [], W = arguments.length; W--; )
                        D[W] = arguments[W];
                      return ai(I.apply(this, D));
                    };
                  }
                  var gi = On, Ni = gi.light, Ia = gi.paintProperty, Pa = gi.layoutProperty;
                  function Fa(I, D) {
                    var W = !1;
                    if (D && D.length)
                      for (var ot = 0, xt = D; ot < xt.length; ot += 1) {
                        var Pt = xt[ot];
                        I.fire(new tr(new Error(Pt.message))), W = !0;
                      }
                    return W;
                  }
                  var Ga = To, Na = 3;
                  function To(I, D, W) {
                    var ot = this.cells = [];
                    if (I instanceof ArrayBuffer) {
                      this.arrayBuffer = I;
                      var xt = new Int32Array(this.arrayBuffer);
                      I = xt[0], D = xt[1], W = xt[2], this.d = D + 2 * W;
                      for (var Pt = 0; Pt < this.d * this.d; Pt++) {
                        var Ht = xt[Na + Pt], ve = xt[Na + Pt + 1];
                        ot.push(Ht === ve ? null : xt.subarray(Ht, ve));
                      }
                      var Fe = xt[Na + ot.length], Ze = xt[Na + ot.length + 1];
                      this.keys = xt.subarray(Fe, Ze), this.bboxes = xt.subarray(Ze), this.insert = this._insertReadonly;
                    } else {
                      this.d = D + 2 * W;
                      for (var nr = 0; nr < this.d * this.d; nr++)
                        ot.push([]);
                      this.keys = [], this.bboxes = [];
                    }
                    this.n = D, this.extent = I, this.padding = W, this.scale = D / I, this.uid = 0;
                    var wr = W / D * I;
                    this.min = -wr, this.max = I + wr;
                  }
                  To.prototype.insert = function(I, D, W, ot, xt) {
                    this._forEachCell(D, W, ot, xt, this._insertCell, this.uid++), this.keys.push(I), this.bboxes.push(D), this.bboxes.push(W), this.bboxes.push(ot), this.bboxes.push(xt);
                  }, To.prototype._insertReadonly = function() {
                    throw "Cannot insert into a GridIndex created from an ArrayBuffer.";
                  }, To.prototype._insertCell = function(I, D, W, ot, xt, Pt) {
                    this.cells[xt].push(Pt);
                  }, To.prototype.query = function(I, D, W, ot, xt) {
                    var Pt = this.min, Ht = this.max;
                    if (I <= Pt && D <= Pt && Ht <= W && Ht <= ot && !xt)
                      return Array.prototype.slice.call(this.keys);
                    var ve = [], Fe = {};
                    return this._forEachCell(I, D, W, ot, this._queryCell, ve, Fe, xt), ve;
                  }, To.prototype._queryCell = function(I, D, W, ot, xt, Pt, Ht, ve) {
                    var Fe = this.cells[xt];
                    if (Fe !== null)
                      for (var Ze = this.keys, nr = this.bboxes, wr = 0; wr < Fe.length; wr++) {
                        var Fr = Fe[wr];
                        if (Ht[Fr] === void 0) {
                          var Rr = Fr * 4;
                          (ve ? ve(nr[Rr + 0], nr[Rr + 1], nr[Rr + 2], nr[Rr + 3]) : I <= nr[Rr + 2] && D <= nr[Rr + 3] && W >= nr[Rr + 0] && ot >= nr[Rr + 1]) ? (Ht[Fr] = !0, Pt.push(Ze[Fr])) : Ht[Fr] = !1;
                        }
                      }
                  }, To.prototype._forEachCell = function(I, D, W, ot, xt, Pt, Ht, ve) {
                    for (var Fe = this._convertToCellCoord(I), Ze = this._convertToCellCoord(D), nr = this._convertToCellCoord(W), wr = this._convertToCellCoord(ot), Fr = Fe; Fr <= nr; Fr++)
                      for (var Rr = Ze; Rr <= wr; Rr++) {
                        var Kr = this.d * Rr + Fr;
                        if (!(ve && !ve(this._convertFromCellCoord(Fr), this._convertFromCellCoord(Rr), this._convertFromCellCoord(Fr + 1), this._convertFromCellCoord(Rr + 1))) && xt.call(this, I, D, W, ot, Kr, Pt, Ht, ve))
                          return;
                      }
                  }, To.prototype._convertFromCellCoord = function(I) {
                    return (I - this.padding) / this.scale;
                  }, To.prototype._convertToCellCoord = function(I) {
                    return Math.max(0, Math.min(this.d - 1, Math.floor(I * this.scale) + this.padding));
                  }, To.prototype.toArrayBuffer = function() {
                    if (this.arrayBuffer)
                      return this.arrayBuffer;
                    for (var I = this.cells, D = Na + this.cells.length + 1 + 1, W = 0, ot = 0; ot < this.cells.length; ot++)
                      W += this.cells[ot].length;
                    var xt = new Int32Array(D + W + this.keys.length + this.bboxes.length);
                    xt[0] = this.extent, xt[1] = this.n, xt[2] = this.padding;
                    for (var Pt = D, Ht = 0; Ht < I.length; Ht++) {
                      var ve = I[Ht];
                      xt[Na + Ht] = Pt, xt.set(ve, Pt), Pt += ve.length;
                    }
                    return xt[Na + I.length] = Pt, xt.set(this.keys, Pt), Pt += this.keys.length, xt[Na + I.length + 1] = Pt, xt.set(this.bboxes, Pt), Pt += this.bboxes.length, xt.buffer;
                  };
                  var Do = r.ImageData, gt = r.ImageBitmap, Ft = {};
                  function Kt(I, D, W) {
                    W === void 0 && (W = {}), Object.defineProperty(D, "_classRegistryKey", {
                      value: I,
                      writeable: !1
                    }), Ft[I] = {
                      klass: D,
                      omit: W.omit || [],
                      shallow: W.shallow || []
                    };
                  }
                  Kt("Object", Object), Ga.serialize = function(D, W) {
                    var ot = D.toArrayBuffer();
                    return W && W.push(ot), { buffer: ot };
                  }, Ga.deserialize = function(D) {
                    return new Ga(D.buffer);
                  }, Kt("Grid", Ga), Kt("Color", io), Kt("Error", Error), Kt("ResolvedImage", Ys), Kt("StylePropertyFunction", Ll), Kt("StyleExpression", Cl, { omit: ["_evaluator"] }), Kt("ZoomDependentExpression", Gl), Kt("ZoomConstantExpression", ws), Kt("CompoundExpression", bs, { omit: ["_evaluate"] });
                  for (var pe in qu)
                    qu[pe]._classRegistryKey || Kt("Expression_" + pe, qu[pe]);
                  function Te(I) {
                    return I && typeof ArrayBuffer < "u" && (I instanceof ArrayBuffer || I.constructor && I.constructor.name === "ArrayBuffer");
                  }
                  function Ce(I) {
                    return gt && I instanceof gt;
                  }
                  function er(I, D) {
                    if (I == null || typeof I == "boolean" || typeof I == "number" || typeof I == "string" || I instanceof Boolean || I instanceof Number || I instanceof String || I instanceof Date || I instanceof RegExp)
                      return I;
                    if (Te(I) || Ce(I))
                      return D && D.push(I), I;
                    if (ArrayBuffer.isView(I)) {
                      var W = I;
                      return D && D.push(W.buffer), W;
                    }
                    if (I instanceof Do)
                      return D && D.push(I.data.buffer), I;
                    if (Array.isArray(I)) {
                      for (var ot = [], xt = 0, Pt = I; xt < Pt.length; xt += 1) {
                        var Ht = Pt[xt];
                        ot.push(er(Ht, D));
                      }
                      return ot;
                    }
                    if (typeof I == "object") {
                      var ve = I.constructor, Fe = ve._classRegistryKey;
                      if (!Fe)
                        throw new Error("can't serialize object of unregistered class");
                      var Ze = ve.serialize ? ve.serialize(I, D) : {};
                      if (!ve.serialize) {
                        for (var nr in I)
                          if (I.hasOwnProperty(nr) && !(Ft[Fe].omit.indexOf(nr) >= 0)) {
                            var wr = I[nr];
                            Ze[nr] = Ft[Fe].shallow.indexOf(nr) >= 0 ? wr : er(wr, D);
                          }
                        I instanceof Error && (Ze.message = I.message);
                      }
                      if (Ze.$name)
                        throw new Error("$name property is reserved for worker serialization logic.");
                      return Fe !== "Object" && (Ze.$name = Fe), Ze;
                    }
                    throw new Error("can't serialize object of type " + typeof I);
                  }
                  function We(I) {
                    if (I == null || typeof I == "boolean" || typeof I == "number" || typeof I == "string" || I instanceof Boolean || I instanceof Number || I instanceof String || I instanceof Date || I instanceof RegExp || Te(I) || Ce(I) || ArrayBuffer.isView(I) || I instanceof Do)
                      return I;
                    if (Array.isArray(I))
                      return I.map(We);
                    if (typeof I == "object") {
                      var D = I.$name || "Object", W = Ft[D], ot = W.klass;
                      if (!ot)
                        throw new Error("can't deserialize unregistered class " + D);
                      if (ot.deserialize)
                        return ot.deserialize(I);
                      for (var xt = Object.create(ot.prototype), Pt = 0, Ht = Object.keys(I); Pt < Ht.length; Pt += 1) {
                        var ve = Ht[Pt];
                        if (ve !== "$name") {
                          var Fe = I[ve];
                          xt[ve] = Ft[D].shallow.indexOf(ve) >= 0 ? Fe : We(Fe);
                        }
                      }
                      return xt;
                    }
                    throw new Error("can't deserialize object of type " + typeof I);
                  }
                  var gr = function() {
                    this.first = !0;
                  };
                  gr.prototype.update = function(D, W) {
                    var ot = Math.floor(D);
                    return this.first ? (this.first = !1, this.lastIntegerZoom = ot, this.lastIntegerZoomTime = 0, this.lastZoom = D, this.lastFloorZoom = ot, !0) : (this.lastFloorZoom > ot ? (this.lastIntegerZoom = ot + 1, this.lastIntegerZoomTime = W) : this.lastFloorZoom < ot && (this.lastIntegerZoom = ot, this.lastIntegerZoomTime = W), D !== this.lastZoom ? (this.lastZoom = D, this.lastFloorZoom = ot, !0) : !1);
                  };
                  var xr = {
                    "Latin-1 Supplement": function(I) {
                      return I >= 128 && I <= 255;
                    },
                    Arabic: function(I) {
                      return I >= 1536 && I <= 1791;
                    },
                    "Arabic Supplement": function(I) {
                      return I >= 1872 && I <= 1919;
                    },
                    "Arabic Extended-A": function(I) {
                      return I >= 2208 && I <= 2303;
                    },
                    "Hangul Jamo": function(I) {
                      return I >= 4352 && I <= 4607;
                    },
                    "Unified Canadian Aboriginal Syllabics": function(I) {
                      return I >= 5120 && I <= 5759;
                    },
                    Khmer: function(I) {
                      return I >= 6016 && I <= 6143;
                    },
                    "Unified Canadian Aboriginal Syllabics Extended": function(I) {
                      return I >= 6320 && I <= 6399;
                    },
                    "General Punctuation": function(I) {
                      return I >= 8192 && I <= 8303;
                    },
                    "Letterlike Symbols": function(I) {
                      return I >= 8448 && I <= 8527;
                    },
                    "Number Forms": function(I) {
                      return I >= 8528 && I <= 8591;
                    },
                    "Miscellaneous Technical": function(I) {
                      return I >= 8960 && I <= 9215;
                    },
                    "Control Pictures": function(I) {
                      return I >= 9216 && I <= 9279;
                    },
                    "Optical Character Recognition": function(I) {
                      return I >= 9280 && I <= 9311;
                    },
                    "Enclosed Alphanumerics": function(I) {
                      return I >= 9312 && I <= 9471;
                    },
                    "Geometric Shapes": function(I) {
                      return I >= 9632 && I <= 9727;
                    },
                    "Miscellaneous Symbols": function(I) {
                      return I >= 9728 && I <= 9983;
                    },
                    "Miscellaneous Symbols and Arrows": function(I) {
                      return I >= 11008 && I <= 11263;
                    },
                    "CJK Radicals Supplement": function(I) {
                      return I >= 11904 && I <= 12031;
                    },
                    "Kangxi Radicals": function(I) {
                      return I >= 12032 && I <= 12255;
                    },
                    "Ideographic Description Characters": function(I) {
                      return I >= 12272 && I <= 12287;
                    },
                    "CJK Symbols and Punctuation": function(I) {
                      return I >= 12288 && I <= 12351;
                    },
                    Hiragana: function(I) {
                      return I >= 12352 && I <= 12447;
                    },
                    Katakana: function(I) {
                      return I >= 12448 && I <= 12543;
                    },
                    Bopomofo: function(I) {
                      return I >= 12544 && I <= 12591;
                    },
                    "Hangul Compatibility Jamo": function(I) {
                      return I >= 12592 && I <= 12687;
                    },
                    Kanbun: function(I) {
                      return I >= 12688 && I <= 12703;
                    },
                    "Bopomofo Extended": function(I) {
                      return I >= 12704 && I <= 12735;
                    },
                    "CJK Strokes": function(I) {
                      return I >= 12736 && I <= 12783;
                    },
                    "Katakana Phonetic Extensions": function(I) {
                      return I >= 12784 && I <= 12799;
                    },
                    "Enclosed CJK Letters and Months": function(I) {
                      return I >= 12800 && I <= 13055;
                    },
                    "CJK Compatibility": function(I) {
                      return I >= 13056 && I <= 13311;
                    },
                    "CJK Unified Ideographs Extension A": function(I) {
                      return I >= 13312 && I <= 19903;
                    },
                    "Yijing Hexagram Symbols": function(I) {
                      return I >= 19904 && I <= 19967;
                    },
                    "CJK Unified Ideographs": function(I) {
                      return I >= 19968 && I <= 40959;
                    },
                    "Yi Syllables": function(I) {
                      return I >= 40960 && I <= 42127;
                    },
                    "Yi Radicals": function(I) {
                      return I >= 42128 && I <= 42191;
                    },
                    "Hangul Jamo Extended-A": function(I) {
                      return I >= 43360 && I <= 43391;
                    },
                    "Hangul Syllables": function(I) {
                      return I >= 44032 && I <= 55215;
                    },
                    "Hangul Jamo Extended-B": function(I) {
                      return I >= 55216 && I <= 55295;
                    },
                    "Private Use Area": function(I) {
                      return I >= 57344 && I <= 63743;
                    },
                    "CJK Compatibility Ideographs": function(I) {
                      return I >= 63744 && I <= 64255;
                    },
                    "Arabic Presentation Forms-A": function(I) {
                      return I >= 64336 && I <= 65023;
                    },
                    "Vertical Forms": function(I) {
                      return I >= 65040 && I <= 65055;
                    },
                    "CJK Compatibility Forms": function(I) {
                      return I >= 65072 && I <= 65103;
                    },
                    "Small Form Variants": function(I) {
                      return I >= 65104 && I <= 65135;
                    },
                    "Arabic Presentation Forms-B": function(I) {
                      return I >= 65136 && I <= 65279;
                    },
                    "Halfwidth and Fullwidth Forms": function(I) {
                      return I >= 65280 && I <= 65519;
                    }
                  };
                  function kr(I) {
                    for (var D = 0, W = I; D < W.length; D += 1) {
                      var ot = W[D];
                      if (Hn(ot.charCodeAt(0)))
                        return !0;
                    }
                    return !1;
                  }
                  function an(I) {
                    for (var D = 0, W = I; D < W.length; D += 1) {
                      var ot = W[D];
                      if (!on(ot.charCodeAt(0)))
                        return !1;
                    }
                    return !0;
                  }
                  function on(I) {
                    return !(xr.Arabic(I) || xr["Arabic Supplement"](I) || xr["Arabic Extended-A"](I) || xr["Arabic Presentation Forms-A"](I) || xr["Arabic Presentation Forms-B"](I));
                  }
                  function Ln(I) {
                    return I < 11904 ? !1 : !!(xr["Bopomofo Extended"](I) || xr.Bopomofo(I) || xr["CJK Compatibility Forms"](I) || xr["CJK Compatibility Ideographs"](I) || xr["CJK Compatibility"](I) || xr["CJK Radicals Supplement"](I) || xr["CJK Strokes"](I) || xr["CJK Symbols and Punctuation"](I) || xr["CJK Unified Ideographs Extension A"](I) || xr["CJK Unified Ideographs"](I) || xr["Enclosed CJK Letters and Months"](I) || xr["Halfwidth and Fullwidth Forms"](I) || xr.Hiragana(I) || xr["Ideographic Description Characters"](I) || xr["Kangxi Radicals"](I) || xr["Katakana Phonetic Extensions"](I) || xr.Katakana(I) || xr["Vertical Forms"](I) || xr["Yi Radicals"](I) || xr["Yi Syllables"](I));
                  }
                  function Hn(I) {
                    return I === 746 || I === 747 ? !0 : I < 4352 ? !1 : !!(xr["Bopomofo Extended"](I) || xr.Bopomofo(I) || xr["CJK Compatibility Forms"](I) && !(I >= 65097 && I <= 65103) || xr["CJK Compatibility Ideographs"](I) || xr["CJK Compatibility"](I) || xr["CJK Radicals Supplement"](I) || xr["CJK Strokes"](I) || xr["CJK Symbols and Punctuation"](I) && !(I >= 12296 && I <= 12305) && !(I >= 12308 && I <= 12319) && I !== 12336 || xr["CJK Unified Ideographs Extension A"](I) || xr["CJK Unified Ideographs"](I) || xr["Enclosed CJK Letters and Months"](I) || xr["Hangul Compatibility Jamo"](I) || xr["Hangul Jamo Extended-A"](I) || xr["Hangul Jamo Extended-B"](I) || xr["Hangul Jamo"](I) || xr["Hangul Syllables"](I) || xr.Hiragana(I) || xr["Ideographic Description Characters"](I) || xr.Kanbun(I) || xr["Kangxi Radicals"](I) || xr["Katakana Phonetic Extensions"](I) || xr.Katakana(I) && I !== 12540 || xr["Halfwidth and Fullwidth Forms"](I) && I !== 65288 && I !== 65289 && I !== 65293 && !(I >= 65306 && I <= 65310) && I !== 65339 && I !== 65341 && I !== 65343 && !(I >= 65371 && I <= 65503) && I !== 65507 && !(I >= 65512 && I <= 65519) || xr["Small Form Variants"](I) && !(I >= 65112 && I <= 65118) && !(I >= 65123 && I <= 65126) || xr["Unified Canadian Aboriginal Syllabics"](I) || xr["Unified Canadian Aboriginal Syllabics Extended"](I) || xr["Vertical Forms"](I) || xr["Yijing Hexagram Symbols"](I) || xr["Yi Syllables"](I) || xr["Yi Radicals"](I));
                  }
                  function cn(I) {
                    return !!(xr["Latin-1 Supplement"](I) && (I === 167 || I === 169 || I === 174 || I === 177 || I === 188 || I === 189 || I === 190 || I === 215 || I === 247) || xr["General Punctuation"](I) && (I === 8214 || I === 8224 || I === 8225 || I === 8240 || I === 8241 || I === 8251 || I === 8252 || I === 8258 || I === 8263 || I === 8264 || I === 8265 || I === 8273) || xr["Letterlike Symbols"](I) || xr["Number Forms"](I) || xr["Miscellaneous Technical"](I) && (I >= 8960 && I <= 8967 || I >= 8972 && I <= 8991 || I >= 8996 && I <= 9e3 || I === 9003 || I >= 9085 && I <= 9114 || I >= 9150 && I <= 9165 || I === 9167 || I >= 9169 && I <= 9179 || I >= 9186 && I <= 9215) || xr["Control Pictures"](I) && I !== 9251 || xr["Optical Character Recognition"](I) || xr["Enclosed Alphanumerics"](I) || xr["Geometric Shapes"](I) || xr["Miscellaneous Symbols"](I) && !(I >= 9754 && I <= 9759) || xr["Miscellaneous Symbols and Arrows"](I) && (I >= 11026 && I <= 11055 || I >= 11088 && I <= 11097 || I >= 11192 && I <= 11243) || xr["CJK Symbols and Punctuation"](I) || xr.Katakana(I) || xr["Private Use Area"](I) || xr["CJK Compatibility Forms"](I) || xr["Small Form Variants"](I) || xr["Halfwidth and Fullwidth Forms"](I) || I === 8734 || I === 8756 || I === 8757 || I >= 9984 && I <= 10087 || I >= 10102 && I <= 10131 || I === 65532 || I === 65533);
                  }
                  function xn(I) {
                    return !(Hn(I) || cn(I));
                  }
                  function Pn(I) {
                    return xr.Arabic(I) || xr["Arabic Supplement"](I) || xr["Arabic Extended-A"](I) || xr["Arabic Presentation Forms-A"](I) || xr["Arabic Presentation Forms-B"](I);
                  }
                  function Yn(I) {
                    return I >= 1424 && I <= 2303 || xr["Arabic Presentation Forms-A"](I) || xr["Arabic Presentation Forms-B"](I);
                  }
                  function ti(I, D) {
                    return !(!D && Yn(I) || I >= 2304 && I <= 3583 || I >= 3840 && I <= 4255 || xr.Khmer(I));
                  }
                  function zn(I) {
                    for (var D = 0, W = I; D < W.length; D += 1) {
                      var ot = W[D];
                      if (Yn(ot.charCodeAt(0)))
                        return !0;
                    }
                    return !1;
                  }
                  function Li(I, D) {
                    for (var W = 0, ot = I; W < ot.length; W += 1) {
                      var xt = ot[W];
                      if (!ti(xt.charCodeAt(0), D))
                        return !1;
                    }
                    return !0;
                  }
                  var Xi = {
                    unavailable: "unavailable",
                    deferred: "deferred",
                    loading: "loading",
                    loaded: "loaded",
                    error: "error"
                  }, oa = null, ji = Xi.unavailable, ea = null, sa = function(I) {
                    I && typeof I == "string" && I.indexOf("NetworkError") > -1 && (ji = Xi.error), oa && oa(I);
                  };
                  function Wa() {
                    ya.fire(new Tr("pluginStateChange", {
                      pluginStatus: ji,
                      pluginURL: ea
                    }));
                  }
                  var ya = new yr(), Oa = function() {
                    return ji;
                  }, lo = function(I) {
                    return I({
                      pluginStatus: ji,
                      pluginURL: ea
                    }), ya.on("pluginStateChange", I), I;
                  }, Go = function(I, D, W) {
                    if (W === void 0 && (W = !1), ji === Xi.deferred || ji === Xi.loading || ji === Xi.loaded)
                      throw new Error("setRTLTextPlugin cannot be called multiple times.");
                    ea = ct.resolveURL(I), ji = Xi.deferred, oa = D, Wa(), W || Po();
                  }, Po = function() {
                    if (ji !== Xi.deferred || !ea)
                      throw new Error("rtl-text-plugin cannot be downloaded unless a pluginURL is specified");
                    ji = Xi.loading, Wa(), ea && lr({ url: ea }, function(I) {
                      I ? sa(I) : (ji = Xi.loaded, Wa());
                    });
                  }, Ui = {
                    applyArabicShaping: null,
                    processBidirectionalText: null,
                    processStyledBidirectionalText: null,
                    isLoaded: function() {
                      return ji === Xi.loaded || Ui.applyArabicShaping != null;
                    },
                    isLoading: function() {
                      return ji === Xi.loading;
                    },
                    setState: function(D) {
                      ji = D.pluginStatus, ea = D.pluginURL;
                    },
                    isParsed: function() {
                      return Ui.applyArabicShaping != null && Ui.processBidirectionalText != null && Ui.processStyledBidirectionalText != null;
                    },
                    getPluginURL: function() {
                      return ea;
                    }
                  }, Ba = function() {
                    !Ui.isLoading() && !Ui.isLoaded() && Oa() === "deferred" && Po();
                  }, ba = function(D, W) {
                    this.zoom = D, W ? (this.now = W.now, this.fadeDuration = W.fadeDuration, this.zoomHistory = W.zoomHistory, this.transition = W.transition) : (this.now = 0, this.fadeDuration = 0, this.zoomHistory = new gr(), this.transition = {});
                  };
                  ba.prototype.isSupportedScript = function(D) {
                    return Li(D, Ui.isLoaded());
                  }, ba.prototype.crossFadingFactor = function() {
                    return this.fadeDuration === 0 ? 1 : Math.min((this.now - this.zoomHistory.lastIntegerZoomTime) / this.fadeDuration, 1);
                  }, ba.prototype.getCrossfadeParameters = function() {
                    var D = this.zoom, W = D - Math.floor(D), ot = this.crossFadingFactor();
                    return D > this.zoomHistory.lastIntegerZoom ? {
                      fromScale: 2,
                      toScale: 1,
                      t: W + (1 - W) * ot
                    } : {
                      fromScale: 0.5,
                      toScale: 1,
                      t: 1 - (1 - ot) * W
                    };
                  };
                  var xo = function(D, W) {
                    this.property = D, this.value = W, this.expression = rh(W === void 0 ? D.specification.default : W, D.specification);
                  };
                  xo.prototype.isDataDriven = function() {
                    return this.expression.kind === "source" || this.expression.kind === "composite";
                  }, xo.prototype.possiblyEvaluate = function(D, W, ot) {
                    return this.property.possiblyEvaluate(this, D, W, ot);
                  };
                  var Xo = function(D) {
                    this.property = D, this.value = new xo(D, void 0);
                  };
                  Xo.prototype.transitioned = function(D, W) {
                    return new Cs(this.property, this.value, W, _({}, D.transition, this.transition), D.now);
                  }, Xo.prototype.untransitioned = function() {
                    return new Cs(this.property, this.value, null, {}, 0);
                  };
                  var Co = function(D) {
                    this._properties = D, this._values = Object.create(D.defaultTransitionablePropertyValues);
                  };
                  Co.prototype.getValue = function(D) {
                    return O(this._values[D].value.value);
                  }, Co.prototype.setValue = function(D, W) {
                    this._values.hasOwnProperty(D) || (this._values[D] = new Xo(this._values[D].property)), this._values[D].value = new xo(this._values[D].property, W === null ? void 0 : O(W));
                  }, Co.prototype.getTransition = function(D) {
                    return O(this._values[D].transition);
                  }, Co.prototype.setTransition = function(D, W) {
                    this._values.hasOwnProperty(D) || (this._values[D] = new Xo(this._values[D].property)), this._values[D].transition = O(W) || void 0;
                  }, Co.prototype.serialize = function() {
                    for (var D = {}, W = 0, ot = Object.keys(this._values); W < ot.length; W += 1) {
                      var xt = ot[W], Pt = this.getValue(xt);
                      Pt !== void 0 && (D[xt] = Pt);
                      var Ht = this.getTransition(xt);
                      Ht !== void 0 && (D[xt + "-transition"] = Ht);
                    }
                    return D;
                  }, Co.prototype.transitioned = function(D, W) {
                    for (var ot = new ns(this._properties), xt = 0, Pt = Object.keys(this._values); xt < Pt.length; xt += 1) {
                      var Ht = Pt[xt];
                      ot._values[Ht] = this._values[Ht].transitioned(D, W._values[Ht]);
                    }
                    return ot;
                  }, Co.prototype.untransitioned = function() {
                    for (var D = new ns(this._properties), W = 0, ot = Object.keys(this._values); W < ot.length; W += 1) {
                      var xt = ot[W];
                      D._values[xt] = this._values[xt].untransitioned();
                    }
                    return D;
                  };
                  var Cs = function(D, W, ot, xt, Pt) {
                    this.property = D, this.value = W, this.begin = Pt + xt.delay || 0, this.end = this.begin + xt.duration || 0, D.specification.transition && (xt.delay || xt.duration) && (this.prior = ot);
                  };
                  Cs.prototype.possiblyEvaluate = function(D, W, ot) {
                    var xt = D.now || 0, Pt = this.value.possiblyEvaluate(D, W, ot), Ht = this.prior;
                    if (Ht) {
                      if (xt > this.end)
                        return this.prior = null, Pt;
                      if (this.value.isDataDriven())
                        return this.prior = null, Pt;
                      if (xt < this.begin)
                        return Ht.possiblyEvaluate(D, W, ot);
                      var ve = (xt - this.begin) / (this.end - this.begin);
                      return this.property.interpolate(Ht.possiblyEvaluate(D, W, ot), Pt, l(ve));
                    } else return Pt;
                  };
                  var ns = function(D) {
                    this._properties = D, this._values = Object.create(D.defaultTransitioningPropertyValues);
                  };
                  ns.prototype.possiblyEvaluate = function(D, W, ot) {
                    for (var xt = new aa(this._properties), Pt = 0, Ht = Object.keys(this._values); Pt < Ht.length; Pt += 1) {
                      var ve = Ht[Pt];
                      xt._values[ve] = this._values[ve].possiblyEvaluate(D, W, ot);
                    }
                    return xt;
                  }, ns.prototype.hasTransition = function() {
                    for (var D = 0, W = Object.keys(this._values); D < W.length; D += 1) {
                      var ot = W[D];
                      if (this._values[ot].prior)
                        return !0;
                    }
                    return !1;
                  };
                  var us = function(D) {
                    this._properties = D, this._values = Object.create(D.defaultPropertyValues);
                  };
                  us.prototype.getValue = function(D) {
                    return O(this._values[D].value);
                  }, us.prototype.setValue = function(D, W) {
                    this._values[D] = new xo(this._values[D].property, W === null ? void 0 : O(W));
                  }, us.prototype.serialize = function() {
                    for (var D = {}, W = 0, ot = Object.keys(this._values); W < ot.length; W += 1) {
                      var xt = ot[W], Pt = this.getValue(xt);
                      Pt !== void 0 && (D[xt] = Pt);
                    }
                    return D;
                  }, us.prototype.possiblyEvaluate = function(D, W, ot) {
                    for (var xt = new aa(this._properties), Pt = 0, Ht = Object.keys(this._values); Pt < Ht.length; Pt += 1) {
                      var ve = Ht[Pt];
                      xt._values[ve] = this._values[ve].possiblyEvaluate(D, W, ot);
                    }
                    return xt;
                  };
                  var Ao = function(D, W, ot) {
                    this.property = D, this.value = W, this.parameters = ot;
                  };
                  Ao.prototype.isConstant = function() {
                    return this.value.kind === "constant";
                  }, Ao.prototype.constantOr = function(D) {
                    return this.value.kind === "constant" ? this.value.value : D;
                  }, Ao.prototype.evaluate = function(D, W, ot, xt) {
                    return this.property.evaluate(this.value, this.parameters, D, W, ot, xt);
                  };
                  var aa = function(D) {
                    this._properties = D, this._values = Object.create(D.defaultPossiblyEvaluatedValues);
                  };
                  aa.prototype.get = function(D) {
                    return this._values[D];
                  };
                  var ta = function(D) {
                    this.specification = D;
                  };
                  ta.prototype.possiblyEvaluate = function(D, W) {
                    return D.expression.evaluate(W);
                  }, ta.prototype.interpolate = function(D, W, ot) {
                    var xt = Yf[this.specification.type];
                    return xt ? xt(D, W, ot) : D;
                  };
                  var wa = function(D, W) {
                    this.specification = D, this.overrides = W;
                  };
                  wa.prototype.possiblyEvaluate = function(D, W, ot, xt) {
                    return D.expression.kind === "constant" || D.expression.kind === "camera" ? new Ao(this, {
                      kind: "constant",
                      value: D.expression.evaluate(W, null, {}, ot, xt)
                    }, W) : new Ao(this, D.expression, W);
                  }, wa.prototype.interpolate = function(D, W, ot) {
                    if (D.value.kind !== "constant" || W.value.kind !== "constant")
                      return D;
                    if (D.value.value === void 0 || W.value.value === void 0)
                      return new Ao(this, {
                        kind: "constant",
                        value: void 0
                      }, D.parameters);
                    var xt = Yf[this.specification.type];
                    return xt ? new Ao(this, {
                      kind: "constant",
                      value: xt(D.value.value, W.value.value, ot)
                    }, D.parameters) : D;
                  }, wa.prototype.evaluate = function(D, W, ot, xt, Pt, Ht) {
                    return D.kind === "constant" ? D.value : D.evaluate(W, ot, xt, Pt, Ht);
                  };
                  var il = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype.possiblyEvaluate = function(ot, xt, Pt, Ht) {
                      if (ot.value === void 0)
                        return new Ao(this, {
                          kind: "constant",
                          value: void 0
                        }, xt);
                      if (ot.expression.kind === "constant") {
                        var ve = ot.expression.evaluate(xt, null, {}, Pt, Ht), Fe = ot.property.specification.type === "resolvedImage", Ze = Fe && typeof ve != "string" ? ve.name : ve, nr = this._calculate(Ze, Ze, Ze, xt);
                        return new Ao(this, {
                          kind: "constant",
                          value: nr
                        }, xt);
                      } else if (ot.expression.kind === "camera") {
                        var wr = this._calculate(ot.expression.evaluate({ zoom: xt.zoom - 1 }), ot.expression.evaluate({ zoom: xt.zoom }), ot.expression.evaluate({ zoom: xt.zoom + 1 }), xt);
                        return new Ao(this, {
                          kind: "constant",
                          value: wr
                        }, xt);
                      } else
                        return new Ao(this, ot.expression, xt);
                    }, D.prototype.evaluate = function(ot, xt, Pt, Ht, ve, Fe) {
                      if (ot.kind === "source") {
                        var Ze = ot.evaluate(xt, Pt, Ht, ve, Fe);
                        return this._calculate(Ze, Ze, Ze, xt);
                      } else return ot.kind === "composite" ? this._calculate(ot.evaluate({ zoom: Math.floor(xt.zoom) - 1 }, Pt, Ht), ot.evaluate({ zoom: Math.floor(xt.zoom) }, Pt, Ht), ot.evaluate({ zoom: Math.floor(xt.zoom) + 1 }, Pt, Ht), xt) : ot.value;
                    }, D.prototype._calculate = function(ot, xt, Pt, Ht) {
                      var ve = Ht.zoom;
                      return ve > Ht.zoomHistory.lastIntegerZoom ? {
                        from: ot,
                        to: xt
                      } : {
                        from: Pt,
                        to: xt
                      };
                    }, D.prototype.interpolate = function(ot) {
                      return ot;
                    }, D;
                  }(wa), al = function(D) {
                    this.specification = D;
                  };
                  al.prototype.possiblyEvaluate = function(D, W, ot, xt) {
                    if (D.value !== void 0)
                      if (D.expression.kind === "constant") {
                        var Pt = D.expression.evaluate(W, null, {}, ot, xt);
                        return this._calculate(Pt, Pt, Pt, W);
                      } else
                        return this._calculate(D.expression.evaluate(new ba(Math.floor(W.zoom - 1), W)), D.expression.evaluate(new ba(Math.floor(W.zoom), W)), D.expression.evaluate(new ba(Math.floor(W.zoom + 1), W)), W);
                  }, al.prototype._calculate = function(D, W, ot, xt) {
                    var Pt = xt.zoom;
                    return Pt > xt.zoomHistory.lastIntegerZoom ? {
                      from: D,
                      to: W
                    } : {
                      from: ot,
                      to: W
                    };
                  }, al.prototype.interpolate = function(D) {
                    return D;
                  };
                  var as = function(D) {
                    this.specification = D;
                  };
                  as.prototype.possiblyEvaluate = function(D, W, ot, xt) {
                    return !!D.expression.evaluate(W, null, {}, ot, xt);
                  }, as.prototype.interpolate = function() {
                    return !1;
                  };
                  var So = function(D) {
                    this.properties = D, this.defaultPropertyValues = {}, this.defaultTransitionablePropertyValues = {}, this.defaultTransitioningPropertyValues = {}, this.defaultPossiblyEvaluatedValues = {}, this.overridableProperties = [];
                    for (var W in D) {
                      var ot = D[W];
                      ot.specification.overridable && this.overridableProperties.push(W);
                      var xt = this.defaultPropertyValues[W] = new xo(ot, void 0), Pt = this.defaultTransitionablePropertyValues[W] = new Xo(ot);
                      this.defaultTransitioningPropertyValues[W] = Pt.untransitioned(), this.defaultPossiblyEvaluatedValues[W] = xt.possiblyEvaluate({});
                    }
                  };
                  Kt("DataDrivenProperty", wa), Kt("DataConstantProperty", ta), Kt("CrossFadedDataDrivenProperty", il), Kt("CrossFadedProperty", al), Kt("ColorRampProperty", as);
                  var _s = "-transition", Qi = function(I) {
                    function D(W, ot) {
                      if (I.call(this), this.id = W.id, this.type = W.type, this._featureFilter = {
                        filter: function() {
                          return !0;
                        },
                        needGeometry: !1
                      }, W.type !== "custom" && (W = W, this.metadata = W.metadata, this.minzoom = W.minzoom, this.maxzoom = W.maxzoom, W.type !== "background" && (this.source = W.source, this.sourceLayer = W["source-layer"], this.filter = W.filter), ot.layout && (this._unevaluatedLayout = new us(ot.layout)), ot.paint)) {
                        this._transitionablePaint = new Co(ot.paint);
                        for (var xt in W.paint)
                          this.setPaintProperty(xt, W.paint[xt], { validate: !1 });
                        for (var Pt in W.layout)
                          this.setLayoutProperty(Pt, W.layout[Pt], { validate: !1 });
                        this._transitioningPaint = this._transitionablePaint.untransitioned(), this.paint = new aa(ot.paint);
                      }
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype.getCrossfadeParameters = function() {
                      return this._crossfadeParameters;
                    }, D.prototype.getLayoutProperty = function(ot) {
                      return ot === "visibility" ? this.visibility : this._unevaluatedLayout.getValue(ot);
                    }, D.prototype.setLayoutProperty = function(ot, xt, Pt) {
                      if (Pt === void 0 && (Pt = {}), xt != null) {
                        var Ht = "layers." + this.id + ".layout." + ot;
                        if (this._validate(Pa, Ht, ot, xt, Pt))
                          return;
                      }
                      if (ot === "visibility") {
                        this.visibility = xt;
                        return;
                      }
                      this._unevaluatedLayout.setValue(ot, xt);
                    }, D.prototype.getPaintProperty = function(ot) {
                      return E(ot, _s) ? this._transitionablePaint.getTransition(ot.slice(0, -_s.length)) : this._transitionablePaint.getValue(ot);
                    }, D.prototype.setPaintProperty = function(ot, xt, Pt) {
                      if (Pt === void 0 && (Pt = {}), xt != null) {
                        var Ht = "layers." + this.id + ".paint." + ot;
                        if (this._validate(Ia, Ht, ot, xt, Pt))
                          return !1;
                      }
                      if (E(ot, _s))
                        return this._transitionablePaint.setTransition(ot.slice(0, -_s.length), xt || void 0), !1;
                      var ve = this._transitionablePaint._values[ot], Fe = ve.property.specification["property-type"] === "cross-faded-data-driven", Ze = ve.value.isDataDriven(), nr = ve.value;
                      this._transitionablePaint.setValue(ot, xt), this._handleSpecialPaintPropertyUpdate(ot);
                      var wr = this._transitionablePaint._values[ot].value, Fr = wr.isDataDriven();
                      return Fr || Ze || Fe || this._handleOverridablePaintPropertyUpdate(ot, nr, wr);
                    }, D.prototype._handleSpecialPaintPropertyUpdate = function(ot) {
                    }, D.prototype._handleOverridablePaintPropertyUpdate = function(ot, xt, Pt) {
                      return !1;
                    }, D.prototype.isHidden = function(ot) {
                      return this.minzoom && ot < this.minzoom || this.maxzoom && ot >= this.maxzoom ? !0 : this.visibility === "none";
                    }, D.prototype.updateTransitions = function(ot) {
                      this._transitioningPaint = this._transitionablePaint.transitioned(ot, this._transitioningPaint);
                    }, D.prototype.hasTransition = function() {
                      return this._transitioningPaint.hasTransition();
                    }, D.prototype.recalculate = function(ot, xt) {
                      ot.getCrossfadeParameters && (this._crossfadeParameters = ot.getCrossfadeParameters()), this._unevaluatedLayout && (this.layout = this._unevaluatedLayout.possiblyEvaluate(ot, void 0, xt)), this.paint = this._transitioningPaint.possiblyEvaluate(ot, void 0, xt);
                    }, D.prototype.serialize = function() {
                      var ot = {
                        id: this.id,
                        type: this.type,
                        source: this.source,
                        "source-layer": this.sourceLayer,
                        metadata: this.metadata,
                        minzoom: this.minzoom,
                        maxzoom: this.maxzoom,
                        filter: this.filter,
                        layout: this._unevaluatedLayout && this._unevaluatedLayout.serialize(),
                        paint: this._transitionablePaint && this._transitionablePaint.serialize()
                      };
                      return this.visibility && (ot.layout = ot.layout || {}, ot.layout.visibility = this.visibility), z(ot, function(xt, Pt) {
                        return xt !== void 0 && !(Pt === "layout" && !Object.keys(xt).length) && !(Pt === "paint" && !Object.keys(xt).length);
                      });
                    }, D.prototype._validate = function(ot, xt, Pt, Ht, ve) {
                      return ve === void 0 && (ve = {}), ve && ve.validate === !1 ? !1 : Fa(this, ot.call(gi, {
                        key: xt,
                        layerType: this.type,
                        objectKey: Pt,
                        value: Ht,
                        styleSpec: $r,
                        style: {
                          glyphs: !0,
                          sprite: !0
                        }
                      }));
                    }, D.prototype.is3D = function() {
                      return !1;
                    }, D.prototype.isTileClipped = function() {
                      return !1;
                    }, D.prototype.hasOffscreenPass = function() {
                      return !1;
                    }, D.prototype.resize = function() {
                    }, D.prototype.isStateDependent = function() {
                      for (var ot in this.paint._values) {
                        var xt = this.paint.get(ot);
                        if (!(!(xt instanceof Ao) || !Iu(xt.property.specification)) && (xt.value.kind === "source" || xt.value.kind === "composite") && xt.value.isStateDependent)
                          return !0;
                      }
                      return !1;
                    }, D;
                  }(yr), jl = {
                    Int8: Int8Array,
                    Uint8: Uint8Array,
                    Int16: Int16Array,
                    Uint16: Uint16Array,
                    Int32: Int32Array,
                    Uint32: Uint32Array,
                    Float32: Float32Array
                  }, zu = function(D, W) {
                    this._structArray = D, this._pos1 = W * this.size, this._pos2 = this._pos1 / 2, this._pos4 = this._pos1 / 4, this._pos8 = this._pos1 / 8;
                  }, Jo = 128, Fu = 5, qa = function() {
                    this.isTransferred = !1, this.capacity = -1, this.resize(0);
                  };
                  qa.serialize = function(D, W) {
                    return D._trim(), W && (D.isTransferred = !0, W.push(D.arrayBuffer)), {
                      length: D.length,
                      arrayBuffer: D.arrayBuffer
                    };
                  }, qa.deserialize = function(D) {
                    var W = Object.create(this.prototype);
                    return W.arrayBuffer = D.arrayBuffer, W.length = D.length, W.capacity = D.arrayBuffer.byteLength / W.bytesPerElement, W._refreshViews(), W;
                  }, qa.prototype._trim = function() {
                    this.length !== this.capacity && (this.capacity = this.length, this.arrayBuffer = this.arrayBuffer.slice(0, this.length * this.bytesPerElement), this._refreshViews());
                  }, qa.prototype.clear = function() {
                    this.length = 0;
                  }, qa.prototype.resize = function(D) {
                    this.reserve(D), this.length = D;
                  }, qa.prototype.reserve = function(D) {
                    if (D > this.capacity) {
                      this.capacity = Math.max(D, Math.floor(this.capacity * Fu), Jo), this.arrayBuffer = new ArrayBuffer(this.capacity * this.bytesPerElement);
                      var W = this.uint8;
                      this._refreshViews(), W && this.uint8.set(W);
                    }
                  }, qa.prototype._refreshViews = function() {
                    throw new Error("_refreshViews() must be implemented by each concrete StructArray layout");
                  };
                  function Yo(I, D) {
                    D === void 0 && (D = 1);
                    var W = 0, ot = 0, xt = I.map(function(Ht) {
                      var ve = Rh(Ht.type), Fe = W = Hv(W, Math.max(D, ve)), Ze = Ht.components || 1;
                      return ot = Math.max(ot, ve), W += ve * Ze, {
                        name: Ht.name,
                        type: Ht.type,
                        components: Ze,
                        offset: Fe
                      };
                    }), Pt = Hv(W, Math.max(ot, D));
                    return {
                      members: xt,
                      size: Pt,
                      alignment: D
                    };
                  }
                  function Rh(I) {
                    return jl[I].BYTES_PER_ELEMENT;
                  }
                  function Hv(I, D) {
                    return Math.ceil(I / D) * D;
                  }
                  var oh = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype._refreshViews = function() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.int16 = new Int16Array(this.arrayBuffer);
                    }, D.prototype.emplaceBack = function(ot, xt) {
                      var Pt = this.length;
                      return this.resize(Pt + 1), this.emplace(Pt, ot, xt);
                    }, D.prototype.emplace = function(ot, xt, Pt) {
                      var Ht = ot * 2;
                      return this.int16[Ht + 0] = xt, this.int16[Ht + 1] = Pt, ot;
                    }, D;
                  }(qa);
                  oh.prototype.bytesPerElement = 4, Kt("StructArrayLayout2i4", oh);
                  var Dh = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype._refreshViews = function() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.int16 = new Int16Array(this.arrayBuffer);
                    }, D.prototype.emplaceBack = function(ot, xt, Pt, Ht) {
                      var ve = this.length;
                      return this.resize(ve + 1), this.emplace(ve, ot, xt, Pt, Ht);
                    }, D.prototype.emplace = function(ot, xt, Pt, Ht, ve) {
                      var Fe = ot * 4;
                      return this.int16[Fe + 0] = xt, this.int16[Fe + 1] = Pt, this.int16[Fe + 2] = Ht, this.int16[Fe + 3] = ve, ot;
                    }, D;
                  }(qa);
                  Dh.prototype.bytesPerElement = 8, Kt("StructArrayLayout4i8", Dh);
                  var Lf = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype._refreshViews = function() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.int16 = new Int16Array(this.arrayBuffer);
                    }, D.prototype.emplaceBack = function(ot, xt, Pt, Ht, ve, Fe) {
                      var Ze = this.length;
                      return this.resize(Ze + 1), this.emplace(Ze, ot, xt, Pt, Ht, ve, Fe);
                    }, D.prototype.emplace = function(ot, xt, Pt, Ht, ve, Fe, Ze) {
                      var nr = ot * 6;
                      return this.int16[nr + 0] = xt, this.int16[nr + 1] = Pt, this.int16[nr + 2] = Ht, this.int16[nr + 3] = ve, this.int16[nr + 4] = Fe, this.int16[nr + 5] = Ze, ot;
                    }, D;
                  }(qa);
                  Lf.prototype.bytesPerElement = 12, Kt("StructArrayLayout2i4i12", Lf);
                  var sh = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype._refreshViews = function() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.int16 = new Int16Array(this.arrayBuffer);
                    }, D.prototype.emplaceBack = function(ot, xt, Pt, Ht, ve, Fe) {
                      var Ze = this.length;
                      return this.resize(Ze + 1), this.emplace(Ze, ot, xt, Pt, Ht, ve, Fe);
                    }, D.prototype.emplace = function(ot, xt, Pt, Ht, ve, Fe, Ze) {
                      var nr = ot * 4, wr = ot * 8;
                      return this.int16[nr + 0] = xt, this.int16[nr + 1] = Pt, this.uint8[wr + 4] = Ht, this.uint8[wr + 5] = ve, this.uint8[wr + 6] = Fe, this.uint8[wr + 7] = Ze, ot;
                    }, D;
                  }(qa);
                  sh.prototype.bytesPerElement = 8, Kt("StructArrayLayout2i4ub8", sh);
                  var fd = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype._refreshViews = function() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.float32 = new Float32Array(this.arrayBuffer);
                    }, D.prototype.emplaceBack = function(ot, xt) {
                      var Pt = this.length;
                      return this.resize(Pt + 1), this.emplace(Pt, ot, xt);
                    }, D.prototype.emplace = function(ot, xt, Pt) {
                      var Ht = ot * 2;
                      return this.float32[Ht + 0] = xt, this.float32[Ht + 1] = Pt, ot;
                    }, D;
                  }(qa);
                  fd.prototype.bytesPerElement = 8, Kt("StructArrayLayout2f8", fd);
                  var Os = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype._refreshViews = function() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.uint16 = new Uint16Array(this.arrayBuffer);
                    }, D.prototype.emplaceBack = function(ot, xt, Pt, Ht, ve, Fe, Ze, nr, wr, Fr) {
                      var Rr = this.length;
                      return this.resize(Rr + 1), this.emplace(Rr, ot, xt, Pt, Ht, ve, Fe, Ze, nr, wr, Fr);
                    }, D.prototype.emplace = function(ot, xt, Pt, Ht, ve, Fe, Ze, nr, wr, Fr, Rr) {
                      var Kr = ot * 10;
                      return this.uint16[Kr + 0] = xt, this.uint16[Kr + 1] = Pt, this.uint16[Kr + 2] = Ht, this.uint16[Kr + 3] = ve, this.uint16[Kr + 4] = Fe, this.uint16[Kr + 5] = Ze, this.uint16[Kr + 6] = nr, this.uint16[Kr + 7] = wr, this.uint16[Kr + 8] = Fr, this.uint16[Kr + 9] = Rr, ot;
                    }, D;
                  }(qa);
                  Os.prototype.bytesPerElement = 20, Kt("StructArrayLayout10ui20", Os);
                  var Ko = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype._refreshViews = function() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.int16 = new Int16Array(this.arrayBuffer), this.uint16 = new Uint16Array(this.arrayBuffer);
                    }, D.prototype.emplaceBack = function(ot, xt, Pt, Ht, ve, Fe, Ze, nr, wr, Fr, Rr, Kr) {
                      var yn = this.length;
                      return this.resize(yn + 1), this.emplace(yn, ot, xt, Pt, Ht, ve, Fe, Ze, nr, wr, Fr, Rr, Kr);
                    }, D.prototype.emplace = function(ot, xt, Pt, Ht, ve, Fe, Ze, nr, wr, Fr, Rr, Kr, yn) {
                      var Qn = ot * 12;
                      return this.int16[Qn + 0] = xt, this.int16[Qn + 1] = Pt, this.int16[Qn + 2] = Ht, this.int16[Qn + 3] = ve, this.uint16[Qn + 4] = Fe, this.uint16[Qn + 5] = Ze, this.uint16[Qn + 6] = nr, this.uint16[Qn + 7] = wr, this.int16[Qn + 8] = Fr, this.int16[Qn + 9] = Rr, this.int16[Qn + 10] = Kr, this.int16[Qn + 11] = yn, ot;
                    }, D;
                  }(qa);
                  Ko.prototype.bytesPerElement = 24, Kt("StructArrayLayout4i4ui4i24", Ko);
                  var lh = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype._refreshViews = function() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.float32 = new Float32Array(this.arrayBuffer);
                    }, D.prototype.emplaceBack = function(ot, xt, Pt) {
                      var Ht = this.length;
                      return this.resize(Ht + 1), this.emplace(Ht, ot, xt, Pt);
                    }, D.prototype.emplace = function(ot, xt, Pt, Ht) {
                      var ve = ot * 3;
                      return this.float32[ve + 0] = xt, this.float32[ve + 1] = Pt, this.float32[ve + 2] = Ht, ot;
                    }, D;
                  }(qa);
                  lh.prototype.bytesPerElement = 12, Kt("StructArrayLayout3f12", lh);
                  var zd = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype._refreshViews = function() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.uint32 = new Uint32Array(this.arrayBuffer);
                    }, D.prototype.emplaceBack = function(ot) {
                      var xt = this.length;
                      return this.resize(xt + 1), this.emplace(xt, ot);
                    }, D.prototype.emplace = function(ot, xt) {
                      var Pt = ot * 1;
                      return this.uint32[Pt + 0] = xt, ot;
                    }, D;
                  }(qa);
                  zd.prototype.bytesPerElement = 4, Kt("StructArrayLayout1ul4", zd);
                  var uh = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype._refreshViews = function() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.int16 = new Int16Array(this.arrayBuffer), this.uint32 = new Uint32Array(this.arrayBuffer), this.uint16 = new Uint16Array(this.arrayBuffer);
                    }, D.prototype.emplaceBack = function(ot, xt, Pt, Ht, ve, Fe, Ze, nr, wr) {
                      var Fr = this.length;
                      return this.resize(Fr + 1), this.emplace(Fr, ot, xt, Pt, Ht, ve, Fe, Ze, nr, wr);
                    }, D.prototype.emplace = function(ot, xt, Pt, Ht, ve, Fe, Ze, nr, wr, Fr) {
                      var Rr = ot * 10, Kr = ot * 5;
                      return this.int16[Rr + 0] = xt, this.int16[Rr + 1] = Pt, this.int16[Rr + 2] = Ht, this.int16[Rr + 3] = ve, this.int16[Rr + 4] = Fe, this.int16[Rr + 5] = Ze, this.uint32[Kr + 3] = nr, this.uint16[Rr + 8] = wr, this.uint16[Rr + 9] = Fr, ot;
                    }, D;
                  }(qa);
                  uh.prototype.bytesPerElement = 20, Kt("StructArrayLayout6i1ul2ui20", uh);
                  var Fd = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype._refreshViews = function() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.int16 = new Int16Array(this.arrayBuffer);
                    }, D.prototype.emplaceBack = function(ot, xt, Pt, Ht, ve, Fe) {
                      var Ze = this.length;
                      return this.resize(Ze + 1), this.emplace(Ze, ot, xt, Pt, Ht, ve, Fe);
                    }, D.prototype.emplace = function(ot, xt, Pt, Ht, ve, Fe, Ze) {
                      var nr = ot * 6;
                      return this.int16[nr + 0] = xt, this.int16[nr + 1] = Pt, this.int16[nr + 2] = Ht, this.int16[nr + 3] = ve, this.int16[nr + 4] = Fe, this.int16[nr + 5] = Ze, ot;
                    }, D;
                  }(qa);
                  Fd.prototype.bytesPerElement = 12, Kt("StructArrayLayout2i2i2i12", Fd);
                  var gu = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype._refreshViews = function() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.float32 = new Float32Array(this.arrayBuffer), this.int16 = new Int16Array(this.arrayBuffer);
                    }, D.prototype.emplaceBack = function(ot, xt, Pt, Ht, ve) {
                      var Fe = this.length;
                      return this.resize(Fe + 1), this.emplace(Fe, ot, xt, Pt, Ht, ve);
                    }, D.prototype.emplace = function(ot, xt, Pt, Ht, ve, Fe) {
                      var Ze = ot * 4, nr = ot * 8;
                      return this.float32[Ze + 0] = xt, this.float32[Ze + 1] = Pt, this.float32[Ze + 2] = Ht, this.int16[nr + 6] = ve, this.int16[nr + 7] = Fe, ot;
                    }, D;
                  }(qa);
                  gu.prototype.bytesPerElement = 16, Kt("StructArrayLayout2f1f2i16", gu);
                  var yu = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype._refreshViews = function() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.float32 = new Float32Array(this.arrayBuffer);
                    }, D.prototype.emplaceBack = function(ot, xt, Pt, Ht) {
                      var ve = this.length;
                      return this.resize(ve + 1), this.emplace(ve, ot, xt, Pt, Ht);
                    }, D.prototype.emplace = function(ot, xt, Pt, Ht, ve) {
                      var Fe = ot * 12, Ze = ot * 3;
                      return this.uint8[Fe + 0] = xt, this.uint8[Fe + 1] = Pt, this.float32[Ze + 1] = Ht, this.float32[Ze + 2] = ve, ot;
                    }, D;
                  }(qa);
                  yu.prototype.bytesPerElement = 12, Kt("StructArrayLayout2ub2f12", yu);
                  var ol = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype._refreshViews = function() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.uint16 = new Uint16Array(this.arrayBuffer);
                    }, D.prototype.emplaceBack = function(ot, xt, Pt) {
                      var Ht = this.length;
                      return this.resize(Ht + 1), this.emplace(Ht, ot, xt, Pt);
                    }, D.prototype.emplace = function(ot, xt, Pt, Ht) {
                      var ve = ot * 3;
                      return this.uint16[ve + 0] = xt, this.uint16[ve + 1] = Pt, this.uint16[ve + 2] = Ht, ot;
                    }, D;
                  }(qa);
                  ol.prototype.bytesPerElement = 6, Kt("StructArrayLayout3ui6", ol);
                  var ch = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype._refreshViews = function() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.int16 = new Int16Array(this.arrayBuffer), this.uint16 = new Uint16Array(this.arrayBuffer), this.uint32 = new Uint32Array(this.arrayBuffer), this.float32 = new Float32Array(this.arrayBuffer);
                    }, D.prototype.emplaceBack = function(ot, xt, Pt, Ht, ve, Fe, Ze, nr, wr, Fr, Rr, Kr, yn, Qn, Bn, vi, ni) {
                      var pi = this.length;
                      return this.resize(pi + 1), this.emplace(pi, ot, xt, Pt, Ht, ve, Fe, Ze, nr, wr, Fr, Rr, Kr, yn, Qn, Bn, vi, ni);
                    }, D.prototype.emplace = function(ot, xt, Pt, Ht, ve, Fe, Ze, nr, wr, Fr, Rr, Kr, yn, Qn, Bn, vi, ni, pi) {
                      var wi = ot * 24, Fi = ot * 12, Zi = ot * 48;
                      return this.int16[wi + 0] = xt, this.int16[wi + 1] = Pt, this.uint16[wi + 2] = Ht, this.uint16[wi + 3] = ve, this.uint32[Fi + 2] = Fe, this.uint32[Fi + 3] = Ze, this.uint32[Fi + 4] = nr, this.uint16[wi + 10] = wr, this.uint16[wi + 11] = Fr, this.uint16[wi + 12] = Rr, this.float32[Fi + 7] = Kr, this.float32[Fi + 8] = yn, this.uint8[Zi + 36] = Qn, this.uint8[Zi + 37] = Bn, this.uint8[Zi + 38] = vi, this.uint32[Fi + 10] = ni, this.int16[wi + 22] = pi, ot;
                    }, D;
                  }(qa);
                  ch.prototype.bytesPerElement = 48, Kt("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48", ch);
                  var ka = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype._refreshViews = function() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.int16 = new Int16Array(this.arrayBuffer), this.uint16 = new Uint16Array(this.arrayBuffer), this.uint32 = new Uint32Array(this.arrayBuffer), this.float32 = new Float32Array(this.arrayBuffer);
                    }, D.prototype.emplaceBack = function(ot, xt, Pt, Ht, ve, Fe, Ze, nr, wr, Fr, Rr, Kr, yn, Qn, Bn, vi, ni, pi, wi, Fi, Zi, Yi, ma, fa, va, Za, Ta, Aa) {
                      var fo = this.length;
                      return this.resize(fo + 1), this.emplace(fo, ot, xt, Pt, Ht, ve, Fe, Ze, nr, wr, Fr, Rr, Kr, yn, Qn, Bn, vi, ni, pi, wi, Fi, Zi, Yi, ma, fa, va, Za, Ta, Aa);
                    }, D.prototype.emplace = function(ot, xt, Pt, Ht, ve, Fe, Ze, nr, wr, Fr, Rr, Kr, yn, Qn, Bn, vi, ni, pi, wi, Fi, Zi, Yi, ma, fa, va, Za, Ta, Aa, fo) {
                      var Ka = ot * 34, zo = ot * 17;
                      return this.int16[Ka + 0] = xt, this.int16[Ka + 1] = Pt, this.int16[Ka + 2] = Ht, this.int16[Ka + 3] = ve, this.int16[Ka + 4] = Fe, this.int16[Ka + 5] = Ze, this.int16[Ka + 6] = nr, this.int16[Ka + 7] = wr, this.uint16[Ka + 8] = Fr, this.uint16[Ka + 9] = Rr, this.uint16[Ka + 10] = Kr, this.uint16[Ka + 11] = yn, this.uint16[Ka + 12] = Qn, this.uint16[Ka + 13] = Bn, this.uint16[Ka + 14] = vi, this.uint16[Ka + 15] = ni, this.uint16[Ka + 16] = pi, this.uint16[Ka + 17] = wi, this.uint16[Ka + 18] = Fi, this.uint16[Ka + 19] = Zi, this.uint16[Ka + 20] = Yi, this.uint16[Ka + 21] = ma, this.uint16[Ka + 22] = fa, this.uint32[zo + 12] = va, this.float32[zo + 13] = Za, this.float32[zo + 14] = Ta, this.float32[zo + 15] = Aa, this.float32[zo + 16] = fo, ot;
                    }, D;
                  }(qa);
                  ka.prototype.bytesPerElement = 68, Kt("StructArrayLayout8i15ui1ul4f68", ka);
                  var Ua = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype._refreshViews = function() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.float32 = new Float32Array(this.arrayBuffer);
                    }, D.prototype.emplaceBack = function(ot) {
                      var xt = this.length;
                      return this.resize(xt + 1), this.emplace(xt, ot);
                    }, D.prototype.emplace = function(ot, xt) {
                      var Pt = ot * 1;
                      return this.float32[Pt + 0] = xt, ot;
                    }, D;
                  }(qa);
                  Ua.prototype.bytesPerElement = 4, Kt("StructArrayLayout1f4", Ua);
                  var kh = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype._refreshViews = function() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.int16 = new Int16Array(this.arrayBuffer);
                    }, D.prototype.emplaceBack = function(ot, xt, Pt) {
                      var Ht = this.length;
                      return this.resize(Ht + 1), this.emplace(Ht, ot, xt, Pt);
                    }, D.prototype.emplace = function(ot, xt, Pt, Ht) {
                      var ve = ot * 3;
                      return this.int16[ve + 0] = xt, this.int16[ve + 1] = Pt, this.int16[ve + 2] = Ht, ot;
                    }, D;
                  }(qa);
                  kh.prototype.bytesPerElement = 6, Kt("StructArrayLayout3i6", kh);
                  var ac = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype._refreshViews = function() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.uint32 = new Uint32Array(this.arrayBuffer), this.uint16 = new Uint16Array(this.arrayBuffer);
                    }, D.prototype.emplaceBack = function(ot, xt, Pt) {
                      var Ht = this.length;
                      return this.resize(Ht + 1), this.emplace(Ht, ot, xt, Pt);
                    }, D.prototype.emplace = function(ot, xt, Pt, Ht) {
                      var ve = ot * 2, Fe = ot * 4;
                      return this.uint32[ve + 0] = xt, this.uint16[Fe + 2] = Pt, this.uint16[Fe + 3] = Ht, ot;
                    }, D;
                  }(qa);
                  ac.prototype.bytesPerElement = 8, Kt("StructArrayLayout1ul2ui8", ac);
                  var fh = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype._refreshViews = function() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.uint16 = new Uint16Array(this.arrayBuffer);
                    }, D.prototype.emplaceBack = function(ot, xt) {
                      var Pt = this.length;
                      return this.resize(Pt + 1), this.emplace(Pt, ot, xt);
                    }, D.prototype.emplace = function(ot, xt, Pt) {
                      var Ht = ot * 2;
                      return this.uint16[Ht + 0] = xt, this.uint16[Ht + 1] = Pt, ot;
                    }, D;
                  }(qa);
                  fh.prototype.bytesPerElement = 4, Kt("StructArrayLayout2ui4", fh);
                  var Ws = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype._refreshViews = function() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.uint16 = new Uint16Array(this.arrayBuffer);
                    }, D.prototype.emplaceBack = function(ot) {
                      var xt = this.length;
                      return this.resize(xt + 1), this.emplace(xt, ot);
                    }, D.prototype.emplace = function(ot, xt) {
                      var Pt = ot * 1;
                      return this.uint16[Pt + 0] = xt, ot;
                    }, D;
                  }(qa);
                  Ws.prototype.bytesPerElement = 2, Kt("StructArrayLayout1ui2", Ws);
                  var rf = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype._refreshViews = function() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.float32 = new Float32Array(this.arrayBuffer);
                    }, D.prototype.emplaceBack = function(ot, xt, Pt, Ht) {
                      var ve = this.length;
                      return this.resize(ve + 1), this.emplace(ve, ot, xt, Pt, Ht);
                    }, D.prototype.emplace = function(ot, xt, Pt, Ht, ve) {
                      var Fe = ot * 4;
                      return this.float32[Fe + 0] = xt, this.float32[Fe + 1] = Pt, this.float32[Fe + 2] = Ht, this.float32[Fe + 3] = ve, ot;
                    }, D;
                  }(qa);
                  rf.prototype.bytesPerElement = 16, Kt("StructArrayLayout4f16", rf);
                  var oc = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D;
                    var W = {
                      anchorPointX: { configurable: !0 },
                      anchorPointY: { configurable: !0 },
                      x1: { configurable: !0 },
                      y1: { configurable: !0 },
                      x2: { configurable: !0 },
                      y2: { configurable: !0 },
                      featureIndex: { configurable: !0 },
                      sourceLayerIndex: { configurable: !0 },
                      bucketIndex: { configurable: !0 },
                      anchorPoint: { configurable: !0 }
                    };
                    return W.anchorPointX.get = function() {
                      return this._structArray.int16[this._pos2 + 0];
                    }, W.anchorPointY.get = function() {
                      return this._structArray.int16[this._pos2 + 1];
                    }, W.x1.get = function() {
                      return this._structArray.int16[this._pos2 + 2];
                    }, W.y1.get = function() {
                      return this._structArray.int16[this._pos2 + 3];
                    }, W.x2.get = function() {
                      return this._structArray.int16[this._pos2 + 4];
                    }, W.y2.get = function() {
                      return this._structArray.int16[this._pos2 + 5];
                    }, W.featureIndex.get = function() {
                      return this._structArray.uint32[this._pos4 + 3];
                    }, W.sourceLayerIndex.get = function() {
                      return this._structArray.uint16[this._pos2 + 8];
                    }, W.bucketIndex.get = function() {
                      return this._structArray.uint16[this._pos2 + 9];
                    }, W.anchorPoint.get = function() {
                      return new u(this.anchorPointX, this.anchorPointY);
                    }, Object.defineProperties(D.prototype, W), D;
                  }(zu);
                  oc.prototype.size = 20;
                  var ev = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype.get = function(ot) {
                      return new oc(this, ot);
                    }, D;
                  }(uh);
                  Kt("CollisionBoxArray", ev);
                  var Lc = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D;
                    var W = {
                      anchorX: { configurable: !0 },
                      anchorY: { configurable: !0 },
                      glyphStartIndex: { configurable: !0 },
                      numGlyphs: { configurable: !0 },
                      vertexStartIndex: { configurable: !0 },
                      lineStartIndex: { configurable: !0 },
                      lineLength: { configurable: !0 },
                      segment: { configurable: !0 },
                      lowerSize: { configurable: !0 },
                      upperSize: { configurable: !0 },
                      lineOffsetX: { configurable: !0 },
                      lineOffsetY: { configurable: !0 },
                      writingMode: { configurable: !0 },
                      placedOrientation: { configurable: !0 },
                      hidden: { configurable: !0 },
                      crossTileID: { configurable: !0 },
                      associatedIconIndex: { configurable: !0 }
                    };
                    return W.anchorX.get = function() {
                      return this._structArray.int16[this._pos2 + 0];
                    }, W.anchorY.get = function() {
                      return this._structArray.int16[this._pos2 + 1];
                    }, W.glyphStartIndex.get = function() {
                      return this._structArray.uint16[this._pos2 + 2];
                    }, W.numGlyphs.get = function() {
                      return this._structArray.uint16[this._pos2 + 3];
                    }, W.vertexStartIndex.get = function() {
                      return this._structArray.uint32[this._pos4 + 2];
                    }, W.lineStartIndex.get = function() {
                      return this._structArray.uint32[this._pos4 + 3];
                    }, W.lineLength.get = function() {
                      return this._structArray.uint32[this._pos4 + 4];
                    }, W.segment.get = function() {
                      return this._structArray.uint16[this._pos2 + 10];
                    }, W.lowerSize.get = function() {
                      return this._structArray.uint16[this._pos2 + 11];
                    }, W.upperSize.get = function() {
                      return this._structArray.uint16[this._pos2 + 12];
                    }, W.lineOffsetX.get = function() {
                      return this._structArray.float32[this._pos4 + 7];
                    }, W.lineOffsetY.get = function() {
                      return this._structArray.float32[this._pos4 + 8];
                    }, W.writingMode.get = function() {
                      return this._structArray.uint8[this._pos1 + 36];
                    }, W.placedOrientation.get = function() {
                      return this._structArray.uint8[this._pos1 + 37];
                    }, W.placedOrientation.set = function(ot) {
                      this._structArray.uint8[this._pos1 + 37] = ot;
                    }, W.hidden.get = function() {
                      return this._structArray.uint8[this._pos1 + 38];
                    }, W.hidden.set = function(ot) {
                      this._structArray.uint8[this._pos1 + 38] = ot;
                    }, W.crossTileID.get = function() {
                      return this._structArray.uint32[this._pos4 + 10];
                    }, W.crossTileID.set = function(ot) {
                      this._structArray.uint32[this._pos4 + 10] = ot;
                    }, W.associatedIconIndex.get = function() {
                      return this._structArray.int16[this._pos2 + 22];
                    }, Object.defineProperties(D.prototype, W), D;
                  }(zu);
                  Lc.prototype.size = 48;
                  var Od = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype.get = function(ot) {
                      return new Lc(this, ot);
                    }, D;
                  }(ch);
                  Kt("PlacedSymbolArray", Od);
                  var Pf = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D;
                    var W = {
                      anchorX: { configurable: !0 },
                      anchorY: { configurable: !0 },
                      rightJustifiedTextSymbolIndex: { configurable: !0 },
                      centerJustifiedTextSymbolIndex: { configurable: !0 },
                      leftJustifiedTextSymbolIndex: { configurable: !0 },
                      verticalPlacedTextSymbolIndex: { configurable: !0 },
                      placedIconSymbolIndex: { configurable: !0 },
                      verticalPlacedIconSymbolIndex: { configurable: !0 },
                      key: { configurable: !0 },
                      textBoxStartIndex: { configurable: !0 },
                      textBoxEndIndex: { configurable: !0 },
                      verticalTextBoxStartIndex: { configurable: !0 },
                      verticalTextBoxEndIndex: { configurable: !0 },
                      iconBoxStartIndex: { configurable: !0 },
                      iconBoxEndIndex: { configurable: !0 },
                      verticalIconBoxStartIndex: { configurable: !0 },
                      verticalIconBoxEndIndex: { configurable: !0 },
                      featureIndex: { configurable: !0 },
                      numHorizontalGlyphVertices: { configurable: !0 },
                      numVerticalGlyphVertices: { configurable: !0 },
                      numIconVertices: { configurable: !0 },
                      numVerticalIconVertices: { configurable: !0 },
                      useRuntimeCollisionCircles: { configurable: !0 },
                      crossTileID: { configurable: !0 },
                      textBoxScale: { configurable: !0 },
                      textOffset0: { configurable: !0 },
                      textOffset1: { configurable: !0 },
                      collisionCircleDiameter: { configurable: !0 }
                    };
                    return W.anchorX.get = function() {
                      return this._structArray.int16[this._pos2 + 0];
                    }, W.anchorY.get = function() {
                      return this._structArray.int16[this._pos2 + 1];
                    }, W.rightJustifiedTextSymbolIndex.get = function() {
                      return this._structArray.int16[this._pos2 + 2];
                    }, W.centerJustifiedTextSymbolIndex.get = function() {
                      return this._structArray.int16[this._pos2 + 3];
                    }, W.leftJustifiedTextSymbolIndex.get = function() {
                      return this._structArray.int16[this._pos2 + 4];
                    }, W.verticalPlacedTextSymbolIndex.get = function() {
                      return this._structArray.int16[this._pos2 + 5];
                    }, W.placedIconSymbolIndex.get = function() {
                      return this._structArray.int16[this._pos2 + 6];
                    }, W.verticalPlacedIconSymbolIndex.get = function() {
                      return this._structArray.int16[this._pos2 + 7];
                    }, W.key.get = function() {
                      return this._structArray.uint16[this._pos2 + 8];
                    }, W.textBoxStartIndex.get = function() {
                      return this._structArray.uint16[this._pos2 + 9];
                    }, W.textBoxEndIndex.get = function() {
                      return this._structArray.uint16[this._pos2 + 10];
                    }, W.verticalTextBoxStartIndex.get = function() {
                      return this._structArray.uint16[this._pos2 + 11];
                    }, W.verticalTextBoxEndIndex.get = function() {
                      return this._structArray.uint16[this._pos2 + 12];
                    }, W.iconBoxStartIndex.get = function() {
                      return this._structArray.uint16[this._pos2 + 13];
                    }, W.iconBoxEndIndex.get = function() {
                      return this._structArray.uint16[this._pos2 + 14];
                    }, W.verticalIconBoxStartIndex.get = function() {
                      return this._structArray.uint16[this._pos2 + 15];
                    }, W.verticalIconBoxEndIndex.get = function() {
                      return this._structArray.uint16[this._pos2 + 16];
                    }, W.featureIndex.get = function() {
                      return this._structArray.uint16[this._pos2 + 17];
                    }, W.numHorizontalGlyphVertices.get = function() {
                      return this._structArray.uint16[this._pos2 + 18];
                    }, W.numVerticalGlyphVertices.get = function() {
                      return this._structArray.uint16[this._pos2 + 19];
                    }, W.numIconVertices.get = function() {
                      return this._structArray.uint16[this._pos2 + 20];
                    }, W.numVerticalIconVertices.get = function() {
                      return this._structArray.uint16[this._pos2 + 21];
                    }, W.useRuntimeCollisionCircles.get = function() {
                      return this._structArray.uint16[this._pos2 + 22];
                    }, W.crossTileID.get = function() {
                      return this._structArray.uint32[this._pos4 + 12];
                    }, W.crossTileID.set = function(ot) {
                      this._structArray.uint32[this._pos4 + 12] = ot;
                    }, W.textBoxScale.get = function() {
                      return this._structArray.float32[this._pos4 + 13];
                    }, W.textOffset0.get = function() {
                      return this._structArray.float32[this._pos4 + 14];
                    }, W.textOffset1.get = function() {
                      return this._structArray.float32[this._pos4 + 15];
                    }, W.collisionCircleDiameter.get = function() {
                      return this._structArray.float32[this._pos4 + 16];
                    }, Object.defineProperties(D.prototype, W), D;
                  }(zu);
                  Pf.prototype.size = 68;
                  var Ts = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype.get = function(ot) {
                      return new Pf(this, ot);
                    }, D;
                  }(ka);
                  Kt("SymbolInstanceArray", Ts);
                  var Ls = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype.getoffsetX = function(ot) {
                      return this.float32[ot * 1 + 0];
                    }, D;
                  }(Ua);
                  Kt("GlyphOffsetArray", Ls);
                  var sc = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype.getx = function(ot) {
                      return this.int16[ot * 3 + 0];
                    }, D.prototype.gety = function(ot) {
                      return this.int16[ot * 3 + 1];
                    }, D.prototype.gettileUnitDistanceFromAnchor = function(ot) {
                      return this.int16[ot * 3 + 2];
                    }, D;
                  }(kh);
                  Kt("SymbolLineVertexArray", sc);
                  var gv = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D;
                    var W = {
                      featureIndex: { configurable: !0 },
                      sourceLayerIndex: { configurable: !0 },
                      bucketIndex: { configurable: !0 }
                    };
                    return W.featureIndex.get = function() {
                      return this._structArray.uint32[this._pos4 + 0];
                    }, W.sourceLayerIndex.get = function() {
                      return this._structArray.uint16[this._pos2 + 2];
                    }, W.bucketIndex.get = function() {
                      return this._structArray.uint16[this._pos2 + 3];
                    }, Object.defineProperties(D.prototype, W), D;
                  }(zu);
                  gv.prototype.size = 8;
                  var zh = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype.get = function(ot) {
                      return new gv(this, ot);
                    }, D;
                  }(ac);
                  Kt("FeatureIndexArray", zh);
                  var Bd = Yo([{
                    name: "a_pos",
                    components: 2,
                    type: "Int16"
                  }], 4), hd = Bd.members, Ps = function(D) {
                    D === void 0 && (D = []), this.segments = D;
                  };
                  Ps.prototype.prepareSegment = function(D, W, ot, xt) {
                    var Pt = this.segments[this.segments.length - 1];
                    return D > Ps.MAX_VERTEX_ARRAY_LENGTH && U("Max vertices per segment is " + Ps.MAX_VERTEX_ARRAY_LENGTH + ": bucket requested " + D), (!Pt || Pt.vertexLength + D > Ps.MAX_VERTEX_ARRAY_LENGTH || Pt.sortKey !== xt) && (Pt = {
                      vertexOffset: W.length,
                      primitiveOffset: ot.length,
                      vertexLength: 0,
                      primitiveLength: 0
                    }, xt !== void 0 && (Pt.sortKey = xt), this.segments.push(Pt)), Pt;
                  }, Ps.prototype.get = function() {
                    return this.segments;
                  }, Ps.prototype.destroy = function() {
                    for (var D = 0, W = this.segments; D < W.length; D += 1) {
                      var ot = W[D];
                      for (var xt in ot.vaos)
                        ot.vaos[xt].destroy();
                    }
                  }, Ps.simpleSegment = function(D, W, ot, xt) {
                    return new Ps([{
                      vertexOffset: D,
                      primitiveOffset: W,
                      vertexLength: ot,
                      primitiveLength: xt,
                      vaos: {},
                      sortKey: 0
                    }]);
                  }, Ps.MAX_VERTEX_ARRAY_LENGTH = Math.pow(2, 16) - 1, Kt("SegmentVector", Ps);
                  function mt(I, D) {
                    return I = g(Math.floor(I), 0, 255), D = g(Math.floor(D), 0, 255), 256 * I + D;
                  }
                  var tt = Yo([
                    {
                      name: "a_pattern_from",
                      components: 4,
                      type: "Uint16"
                    },
                    {
                      name: "a_pattern_to",
                      components: 4,
                      type: "Uint16"
                    },
                    {
                      name: "a_pixel_ratio_from",
                      components: 1,
                      type: "Uint16"
                    },
                    {
                      name: "a_pixel_ratio_to",
                      components: 1,
                      type: "Uint16"
                    }
                  ]), bt = s(function(I) {
                    function D(W, ot) {
                      var xt, Pt, Ht, ve, Fe, Ze, nr, wr;
                      for (xt = W.length & 3, Pt = W.length - xt, Ht = ot, Fe = 3432918353, Ze = 461845907, wr = 0; wr < Pt; )
                        nr = W.charCodeAt(wr) & 255 | (W.charCodeAt(++wr) & 255) << 8 | (W.charCodeAt(++wr) & 255) << 16 | (W.charCodeAt(++wr) & 255) << 24, ++wr, nr = (nr & 65535) * Fe + (((nr >>> 16) * Fe & 65535) << 16) & 4294967295, nr = nr << 15 | nr >>> 17, nr = (nr & 65535) * Ze + (((nr >>> 16) * Ze & 65535) << 16) & 4294967295, Ht ^= nr, Ht = Ht << 13 | Ht >>> 19, ve = (Ht & 65535) * 5 + (((Ht >>> 16) * 5 & 65535) << 16) & 4294967295, Ht = (ve & 65535) + 27492 + (((ve >>> 16) + 58964 & 65535) << 16);
                      switch (nr = 0, xt) {
                        case 3:
                          nr ^= (W.charCodeAt(wr + 2) & 255) << 16;
                        case 2:
                          nr ^= (W.charCodeAt(wr + 1) & 255) << 8;
                        case 1:
                          nr ^= W.charCodeAt(wr) & 255, nr = (nr & 65535) * Fe + (((nr >>> 16) * Fe & 65535) << 16) & 4294967295, nr = nr << 15 | nr >>> 17, nr = (nr & 65535) * Ze + (((nr >>> 16) * Ze & 65535) << 16) & 4294967295, Ht ^= nr;
                      }
                      return Ht ^= W.length, Ht ^= Ht >>> 16, Ht = (Ht & 65535) * 2246822507 + (((Ht >>> 16) * 2246822507 & 65535) << 16) & 4294967295, Ht ^= Ht >>> 13, Ht = (Ht & 65535) * 3266489909 + (((Ht >>> 16) * 3266489909 & 65535) << 16) & 4294967295, Ht ^= Ht >>> 16, Ht >>> 0;
                    }
                    I.exports = D;
                  }), it = s(function(I) {
                    function D(W, ot) {
                      for (var xt = W.length, Pt = ot ^ xt, Ht = 0, ve; xt >= 4; )
                        ve = W.charCodeAt(Ht) & 255 | (W.charCodeAt(++Ht) & 255) << 8 | (W.charCodeAt(++Ht) & 255) << 16 | (W.charCodeAt(++Ht) & 255) << 24, ve = (ve & 65535) * 1540483477 + (((ve >>> 16) * 1540483477 & 65535) << 16), ve ^= ve >>> 24, ve = (ve & 65535) * 1540483477 + (((ve >>> 16) * 1540483477 & 65535) << 16), Pt = (Pt & 65535) * 1540483477 + (((Pt >>> 16) * 1540483477 & 65535) << 16) ^ ve, xt -= 4, ++Ht;
                      switch (xt) {
                        case 3:
                          Pt ^= (W.charCodeAt(Ht + 2) & 255) << 16;
                        case 2:
                          Pt ^= (W.charCodeAt(Ht + 1) & 255) << 8;
                        case 1:
                          Pt ^= W.charCodeAt(Ht) & 255, Pt = (Pt & 65535) * 1540483477 + (((Pt >>> 16) * 1540483477 & 65535) << 16);
                      }
                      return Pt ^= Pt >>> 13, Pt = (Pt & 65535) * 1540483477 + (((Pt >>> 16) * 1540483477 & 65535) << 16), Pt ^= Pt >>> 15, Pt >>> 0;
                    }
                    I.exports = D;
                  }), _t = bt, Yt = bt, le = it;
                  _t.murmur3 = Yt, _t.murmur2 = le;
                  var Ee = function() {
                    this.ids = [], this.positions = [], this.indexed = !1;
                  };
                  Ee.prototype.add = function(D, W, ot, xt) {
                    this.ids.push(vr(D)), this.positions.push(W, ot, xt);
                  }, Ee.prototype.getPositions = function(D) {
                    for (var W = vr(D), ot = 0, xt = this.ids.length - 1; ot < xt; ) {
                      var Pt = ot + xt >> 1;
                      this.ids[Pt] >= W ? xt = Pt : ot = Pt + 1;
                    }
                    for (var Ht = []; this.ids[ot] === W; ) {
                      var ve = this.positions[3 * ot], Fe = this.positions[3 * ot + 1], Ze = this.positions[3 * ot + 2];
                      Ht.push({
                        index: ve,
                        start: Fe,
                        end: Ze
                      }), ot++;
                    }
                    return Ht;
                  }, Ee.serialize = function(D, W) {
                    var ot = new Float64Array(D.ids), xt = new Uint32Array(D.positions);
                    return Lr(ot, xt, 0, ot.length - 1), W && W.push(ot.buffer, xt.buffer), {
                      ids: ot,
                      positions: xt
                    };
                  }, Ee.deserialize = function(D) {
                    var W = new Ee();
                    return W.ids = D.ids, W.positions = D.positions, W.indexed = !0, W;
                  };
                  var $e = Math.pow(2, 53) - 1;
                  function vr(I) {
                    var D = +I;
                    return !isNaN(D) && D <= $e ? D : _t(String(I));
                  }
                  function Lr(I, D, W, ot) {
                    for (; W < ot; ) {
                      for (var xt = I[W + ot >> 1], Pt = W - 1, Ht = ot + 1; ; ) {
                        do
                          Pt++;
                        while (I[Pt] < xt);
                        do
                          Ht--;
                        while (I[Ht] > xt);
                        if (Pt >= Ht)
                          break;
                        Hr(I, Pt, Ht), Hr(D, 3 * Pt, 3 * Ht), Hr(D, 3 * Pt + 1, 3 * Ht + 1), Hr(D, 3 * Pt + 2, 3 * Ht + 2);
                      }
                      Ht - W < ot - Ht ? (Lr(I, D, W, Ht), W = Ht + 1) : (Lr(I, D, Ht + 1, ot), ot = Ht);
                    }
                  }
                  function Hr(I, D, W) {
                    var ot = I[D];
                    I[D] = I[W], I[W] = ot;
                  }
                  Kt("FeaturePositionMap", Ee);
                  var Ur = function(D, W) {
                    this.gl = D.gl, this.location = W;
                  }, hn = function(I) {
                    function D(W, ot) {
                      I.call(this, W, ot), this.current = 0;
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype.set = function(ot) {
                      this.current !== ot && (this.current = ot, this.gl.uniform1i(this.location, ot));
                    }, D;
                  }(Ur), En = function(I) {
                    function D(W, ot) {
                      I.call(this, W, ot), this.current = 0;
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype.set = function(ot) {
                      this.current !== ot && (this.current = ot, this.gl.uniform1f(this.location, ot));
                    }, D;
                  }(Ur), Mn = function(I) {
                    function D(W, ot) {
                      I.call(this, W, ot), this.current = [
                        0,
                        0
                      ];
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype.set = function(ot) {
                      (ot[0] !== this.current[0] || ot[1] !== this.current[1]) && (this.current = ot, this.gl.uniform2f(this.location, ot[0], ot[1]));
                    }, D;
                  }(Ur), _n = function(I) {
                    function D(W, ot) {
                      I.call(this, W, ot), this.current = [
                        0,
                        0,
                        0
                      ];
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype.set = function(ot) {
                      (ot[0] !== this.current[0] || ot[1] !== this.current[1] || ot[2] !== this.current[2]) && (this.current = ot, this.gl.uniform3f(this.location, ot[0], ot[1], ot[2]));
                    }, D;
                  }(Ur), In = function(I) {
                    function D(W, ot) {
                      I.call(this, W, ot), this.current = [
                        0,
                        0,
                        0,
                        0
                      ];
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype.set = function(ot) {
                      (ot[0] !== this.current[0] || ot[1] !== this.current[1] || ot[2] !== this.current[2] || ot[3] !== this.current[3]) && (this.current = ot, this.gl.uniform4f(this.location, ot[0], ot[1], ot[2], ot[3]));
                    }, D;
                  }(Ur), Kn = function(I) {
                    function D(W, ot) {
                      I.call(this, W, ot), this.current = io.transparent;
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype.set = function(ot) {
                      (ot.r !== this.current.r || ot.g !== this.current.g || ot.b !== this.current.b || ot.a !== this.current.a) && (this.current = ot, this.gl.uniform4f(this.location, ot.r, ot.g, ot.b, ot.a));
                    }, D;
                  }(Ur), xi = new Float32Array(16), Ei = function(I) {
                    function D(W, ot) {
                      I.call(this, W, ot), this.current = xi;
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype.set = function(ot) {
                      if (ot[12] !== this.current[12] || ot[0] !== this.current[0]) {
                        this.current = ot, this.gl.uniformMatrix4fv(this.location, !1, ot);
                        return;
                      }
                      for (var xt = 1; xt < 16; xt++)
                        if (ot[xt] !== this.current[xt]) {
                          this.current = ot, this.gl.uniformMatrix4fv(this.location, !1, ot);
                          break;
                        }
                    }, D;
                  }(Ur);
                  function zi(I) {
                    return [
                      mt(255 * I.r, 255 * I.g),
                      mt(255 * I.b, 255 * I.a)
                    ];
                  }
                  var Vi = function(D, W, ot) {
                    this.value = D, this.uniformNames = W.map(function(xt) {
                      return "u_" + xt;
                    }), this.type = ot;
                  };
                  Vi.prototype.setUniform = function(D, W, ot) {
                    D.set(ot.constantOr(this.value));
                  }, Vi.prototype.getBinding = function(D, W, ot) {
                    return this.type === "color" ? new Kn(D, W) : new En(D, W);
                  };
                  var Di = function(D, W) {
                    this.uniformNames = W.map(function(ot) {
                      return "u_" + ot;
                    }), this.patternFrom = null, this.patternTo = null, this.pixelRatioFrom = 1, this.pixelRatioTo = 1;
                  };
                  Di.prototype.setConstantPatternPositions = function(D, W) {
                    this.pixelRatioFrom = W.pixelRatio, this.pixelRatioTo = D.pixelRatio, this.patternFrom = W.tlbr, this.patternTo = D.tlbr;
                  }, Di.prototype.setUniform = function(D, W, ot, xt) {
                    var Pt = xt === "u_pattern_to" ? this.patternTo : xt === "u_pattern_from" ? this.patternFrom : xt === "u_pixel_ratio_to" ? this.pixelRatioTo : xt === "u_pixel_ratio_from" ? this.pixelRatioFrom : null;
                    Pt && D.set(Pt);
                  }, Di.prototype.getBinding = function(D, W, ot) {
                    return ot.substr(0, 9) === "u_pattern" ? new In(D, W) : new En(D, W);
                  };
                  var Hi = function(D, W, ot, xt) {
                    this.expression = D, this.type = ot, this.maxValue = 0, this.paintVertexAttributes = W.map(function(Pt) {
                      return {
                        name: "a_" + Pt,
                        type: "Float32",
                        components: ot === "color" ? 2 : 1,
                        offset: 0
                      };
                    }), this.paintVertexArray = new xt();
                  };
                  Hi.prototype.populatePaintArray = function(D, W, ot, xt, Pt) {
                    var Ht = this.paintVertexArray.length, ve = this.expression.evaluate(new ba(0), W, {}, xt, [], Pt);
                    this.paintVertexArray.resize(D), this._setPaintValue(Ht, D, ve);
                  }, Hi.prototype.updatePaintArray = function(D, W, ot, xt) {
                    var Pt = this.expression.evaluate({ zoom: 0 }, ot, xt);
                    this._setPaintValue(D, W, Pt);
                  }, Hi.prototype._setPaintValue = function(D, W, ot) {
                    if (this.type === "color")
                      for (var xt = zi(ot), Pt = D; Pt < W; Pt++)
                        this.paintVertexArray.emplace(Pt, xt[0], xt[1]);
                    else {
                      for (var Ht = D; Ht < W; Ht++)
                        this.paintVertexArray.emplace(Ht, ot);
                      this.maxValue = Math.max(this.maxValue, Math.abs(ot));
                    }
                  }, Hi.prototype.upload = function(D) {
                    this.paintVertexArray && this.paintVertexArray.arrayBuffer && (this.paintVertexBuffer && this.paintVertexBuffer.buffer ? this.paintVertexBuffer.updateData(this.paintVertexArray) : this.paintVertexBuffer = D.createVertexBuffer(this.paintVertexArray, this.paintVertexAttributes, this.expression.isStateDependent));
                  }, Hi.prototype.destroy = function() {
                    this.paintVertexBuffer && this.paintVertexBuffer.destroy();
                  };
                  var Ki = function(D, W, ot, xt, Pt, Ht) {
                    this.expression = D, this.uniformNames = W.map(function(ve) {
                      return "u_" + ve + "_t";
                    }), this.type = ot, this.useIntegerZoom = xt, this.zoom = Pt, this.maxValue = 0, this.paintVertexAttributes = W.map(function(ve) {
                      return {
                        name: "a_" + ve,
                        type: "Float32",
                        components: ot === "color" ? 4 : 2,
                        offset: 0
                      };
                    }), this.paintVertexArray = new Ht();
                  };
                  Ki.prototype.populatePaintArray = function(D, W, ot, xt, Pt) {
                    var Ht = this.expression.evaluate(new ba(this.zoom), W, {}, xt, [], Pt), ve = this.expression.evaluate(new ba(this.zoom + 1), W, {}, xt, [], Pt), Fe = this.paintVertexArray.length;
                    this.paintVertexArray.resize(D), this._setPaintValue(Fe, D, Ht, ve);
                  }, Ki.prototype.updatePaintArray = function(D, W, ot, xt) {
                    var Pt = this.expression.evaluate({ zoom: this.zoom }, ot, xt), Ht = this.expression.evaluate({ zoom: this.zoom + 1 }, ot, xt);
                    this._setPaintValue(D, W, Pt, Ht);
                  }, Ki.prototype._setPaintValue = function(D, W, ot, xt) {
                    if (this.type === "color")
                      for (var Pt = zi(ot), Ht = zi(xt), ve = D; ve < W; ve++)
                        this.paintVertexArray.emplace(ve, Pt[0], Pt[1], Ht[0], Ht[1]);
                    else {
                      for (var Fe = D; Fe < W; Fe++)
                        this.paintVertexArray.emplace(Fe, ot, xt);
                      this.maxValue = Math.max(this.maxValue, Math.abs(ot), Math.abs(xt));
                    }
                  }, Ki.prototype.upload = function(D) {
                    this.paintVertexArray && this.paintVertexArray.arrayBuffer && (this.paintVertexBuffer && this.paintVertexBuffer.buffer ? this.paintVertexBuffer.updateData(this.paintVertexArray) : this.paintVertexBuffer = D.createVertexBuffer(this.paintVertexArray, this.paintVertexAttributes, this.expression.isStateDependent));
                  }, Ki.prototype.destroy = function() {
                    this.paintVertexBuffer && this.paintVertexBuffer.destroy();
                  }, Ki.prototype.setUniform = function(D, W) {
                    var ot = this.useIntegerZoom ? Math.floor(W.zoom) : W.zoom, xt = g(this.expression.interpolationFactor(ot, this.zoom, this.zoom + 1), 0, 1);
                    D.set(xt);
                  }, Ki.prototype.getBinding = function(D, W, ot) {
                    return new En(D, W);
                  };
                  var na = function(D, W, ot, xt, Pt, Ht) {
                    this.expression = D, this.type = W, this.useIntegerZoom = ot, this.zoom = xt, this.layerId = Ht, this.zoomInPaintVertexArray = new Pt(), this.zoomOutPaintVertexArray = new Pt();
                  };
                  na.prototype.populatePaintArray = function(D, W, ot) {
                    var xt = this.zoomInPaintVertexArray.length;
                    this.zoomInPaintVertexArray.resize(D), this.zoomOutPaintVertexArray.resize(D), this._setPaintValues(xt, D, W.patterns && W.patterns[this.layerId], ot);
                  }, na.prototype.updatePaintArray = function(D, W, ot, xt, Pt) {
                    this._setPaintValues(D, W, ot.patterns && ot.patterns[this.layerId], Pt);
                  }, na.prototype._setPaintValues = function(D, W, ot, xt) {
                    if (!(!xt || !ot)) {
                      var Pt = ot.min, Ht = ot.mid, ve = ot.max, Fe = xt[Pt], Ze = xt[Ht], nr = xt[ve];
                      if (!(!Fe || !Ze || !nr))
                        for (var wr = D; wr < W; wr++)
                          this.zoomInPaintVertexArray.emplace(wr, Ze.tl[0], Ze.tl[1], Ze.br[0], Ze.br[1], Fe.tl[0], Fe.tl[1], Fe.br[0], Fe.br[1], Ze.pixelRatio, Fe.pixelRatio), this.zoomOutPaintVertexArray.emplace(wr, Ze.tl[0], Ze.tl[1], Ze.br[0], Ze.br[1], nr.tl[0], nr.tl[1], nr.br[0], nr.br[1], Ze.pixelRatio, nr.pixelRatio);
                    }
                  }, na.prototype.upload = function(D) {
                    this.zoomInPaintVertexArray && this.zoomInPaintVertexArray.arrayBuffer && this.zoomOutPaintVertexArray && this.zoomOutPaintVertexArray.arrayBuffer && (this.zoomInPaintVertexBuffer = D.createVertexBuffer(this.zoomInPaintVertexArray, tt.members, this.expression.isStateDependent), this.zoomOutPaintVertexBuffer = D.createVertexBuffer(this.zoomOutPaintVertexArray, tt.members, this.expression.isStateDependent));
                  }, na.prototype.destroy = function() {
                    this.zoomOutPaintVertexBuffer && this.zoomOutPaintVertexBuffer.destroy(), this.zoomInPaintVertexBuffer && this.zoomInPaintVertexBuffer.destroy();
                  };
                  var da = function(D, W, ot) {
                    this.binders = {}, this._buffers = [];
                    var xt = [];
                    for (var Pt in D.paint._values)
                      if (ot(Pt)) {
                        var Ht = D.paint.get(Pt);
                        if (!(!(Ht instanceof Ao) || !Iu(Ht.property.specification))) {
                          var ve = Da(Pt, D.type), Fe = Ht.value, Ze = Ht.property.specification.type, nr = Ht.property.useIntegerZoom, wr = Ht.property.specification["property-type"], Fr = wr === "cross-faded" || wr === "cross-faded-data-driven";
                          if (Fe.kind === "constant")
                            this.binders[Pt] = Fr ? new Di(Fe.value, ve) : new Vi(Fe.value, ve, Ze), xt.push("/u_" + Pt);
                          else if (Fe.kind === "source" || Fr) {
                            var Rr = uo(Pt, Ze, "source");
                            this.binders[Pt] = Fr ? new na(Fe, Ze, nr, W, Rr, D.id) : new Hi(Fe, ve, Ze, Rr), xt.push("/a_" + Pt);
                          } else {
                            var Kr = uo(Pt, Ze, "composite");
                            this.binders[Pt] = new Ki(Fe, ve, Ze, nr, W, Kr), xt.push("/z_" + Pt);
                          }
                        }
                      }
                    this.cacheKey = xt.sort().join("");
                  };
                  da.prototype.getMaxValue = function(D) {
                    var W = this.binders[D];
                    return W instanceof Hi || W instanceof Ki ? W.maxValue : 0;
                  }, da.prototype.populatePaintArrays = function(D, W, ot, xt, Pt) {
                    for (var Ht in this.binders) {
                      var ve = this.binders[Ht];
                      (ve instanceof Hi || ve instanceof Ki || ve instanceof na) && ve.populatePaintArray(D, W, ot, xt, Pt);
                    }
                  }, da.prototype.setConstantPatternPositions = function(D, W) {
                    for (var ot in this.binders) {
                      var xt = this.binders[ot];
                      xt instanceof Di && xt.setConstantPatternPositions(D, W);
                    }
                  }, da.prototype.updatePaintArrays = function(D, W, ot, xt, Pt) {
                    var Ht = !1;
                    for (var ve in D)
                      for (var Fe = W.getPositions(ve), Ze = 0, nr = Fe; Ze < nr.length; Ze += 1) {
                        var wr = nr[Ze], Fr = ot.feature(wr.index);
                        for (var Rr in this.binders) {
                          var Kr = this.binders[Rr];
                          if ((Kr instanceof Hi || Kr instanceof Ki || Kr instanceof na) && Kr.expression.isStateDependent === !0) {
                            var yn = xt.paint.get(Rr);
                            Kr.expression = yn.value, Kr.updatePaintArray(wr.start, wr.end, Fr, D[ve], Pt), Ht = !0;
                          }
                        }
                      }
                    return Ht;
                  }, da.prototype.defines = function() {
                    var D = [];
                    for (var W in this.binders) {
                      var ot = this.binders[W];
                      (ot instanceof Vi || ot instanceof Di) && D.push.apply(D, ot.uniformNames.map(function(xt) {
                        return "#define HAS_UNIFORM_" + xt;
                      }));
                    }
                    return D;
                  }, da.prototype.getBinderAttributes = function() {
                    var D = [];
                    for (var W in this.binders) {
                      var ot = this.binders[W];
                      if (ot instanceof Hi || ot instanceof Ki)
                        for (var xt = 0; xt < ot.paintVertexAttributes.length; xt++)
                          D.push(ot.paintVertexAttributes[xt].name);
                      else if (ot instanceof na)
                        for (var Pt = 0; Pt < tt.members.length; Pt++)
                          D.push(tt.members[Pt].name);
                    }
                    return D;
                  }, da.prototype.getBinderUniforms = function() {
                    var D = [];
                    for (var W in this.binders) {
                      var ot = this.binders[W];
                      if (ot instanceof Vi || ot instanceof Di || ot instanceof Ki)
                        for (var xt = 0, Pt = ot.uniformNames; xt < Pt.length; xt += 1) {
                          var Ht = Pt[xt];
                          D.push(Ht);
                        }
                    }
                    return D;
                  }, da.prototype.getPaintVertexBuffers = function() {
                    return this._buffers;
                  }, da.prototype.getUniforms = function(D, W) {
                    var ot = [];
                    for (var xt in this.binders) {
                      var Pt = this.binders[xt];
                      if (Pt instanceof Vi || Pt instanceof Di || Pt instanceof Ki)
                        for (var Ht = 0, ve = Pt.uniformNames; Ht < ve.length; Ht += 1) {
                          var Fe = ve[Ht];
                          if (W[Fe]) {
                            var Ze = Pt.getBinding(D, W[Fe], Fe);
                            ot.push({
                              name: Fe,
                              property: xt,
                              binding: Ze
                            });
                          }
                        }
                    }
                    return ot;
                  }, da.prototype.setUniforms = function(D, W, ot, xt) {
                    for (var Pt = 0, Ht = W; Pt < Ht.length; Pt += 1) {
                      var ve = Ht[Pt], Fe = ve.name, Ze = ve.property, nr = ve.binding;
                      this.binders[Ze].setUniform(nr, xt, ot.get(Ze), Fe);
                    }
                  }, da.prototype.updatePaintBuffers = function(D) {
                    this._buffers = [];
                    for (var W in this.binders) {
                      var ot = this.binders[W];
                      if (D && ot instanceof na) {
                        var xt = D.fromScale === 2 ? ot.zoomInPaintVertexBuffer : ot.zoomOutPaintVertexBuffer;
                        xt && this._buffers.push(xt);
                      } else (ot instanceof Hi || ot instanceof Ki) && ot.paintVertexBuffer && this._buffers.push(ot.paintVertexBuffer);
                    }
                  }, da.prototype.upload = function(D) {
                    for (var W in this.binders) {
                      var ot = this.binders[W];
                      (ot instanceof Hi || ot instanceof Ki || ot instanceof na) && ot.upload(D);
                    }
                    this.updatePaintBuffers();
                  }, da.prototype.destroy = function() {
                    for (var D in this.binders) {
                      var W = this.binders[D];
                      (W instanceof Hi || W instanceof Ki || W instanceof na) && W.destroy();
                    }
                  };
                  var la = function(D, W, ot) {
                    ot === void 0 && (ot = function() {
                      return !0;
                    }), this.programConfigurations = {};
                    for (var xt = 0, Pt = D; xt < Pt.length; xt += 1) {
                      var Ht = Pt[xt];
                      this.programConfigurations[Ht.id] = new da(Ht, W, ot);
                    }
                    this.needsUpload = !1, this._featureMap = new Ee(), this._bufferOffset = 0;
                  };
                  la.prototype.populatePaintArrays = function(D, W, ot, xt, Pt, Ht) {
                    for (var ve in this.programConfigurations)
                      this.programConfigurations[ve].populatePaintArrays(D, W, xt, Pt, Ht);
                    W.id !== void 0 && this._featureMap.add(W.id, ot, this._bufferOffset, D), this._bufferOffset = D, this.needsUpload = !0;
                  }, la.prototype.updatePaintArrays = function(D, W, ot, xt) {
                    for (var Pt = 0, Ht = ot; Pt < Ht.length; Pt += 1) {
                      var ve = Ht[Pt];
                      this.needsUpload = this.programConfigurations[ve.id].updatePaintArrays(D, this._featureMap, W, ve, xt) || this.needsUpload;
                    }
                  }, la.prototype.get = function(D) {
                    return this.programConfigurations[D];
                  }, la.prototype.upload = function(D) {
                    if (this.needsUpload) {
                      for (var W in this.programConfigurations)
                        this.programConfigurations[W].upload(D);
                      this.needsUpload = !1;
                    }
                  }, la.prototype.destroy = function() {
                    for (var D in this.programConfigurations)
                      this.programConfigurations[D].destroy();
                  };
                  function Da(I, D) {
                    var W = {
                      "text-opacity": ["opacity"],
                      "icon-opacity": ["opacity"],
                      "text-color": ["fill_color"],
                      "icon-color": ["fill_color"],
                      "text-halo-color": ["halo_color"],
                      "icon-halo-color": ["halo_color"],
                      "text-halo-blur": ["halo_blur"],
                      "icon-halo-blur": ["halo_blur"],
                      "text-halo-width": ["halo_width"],
                      "icon-halo-width": ["halo_width"],
                      "line-gap-width": ["gapwidth"],
                      "line-pattern": [
                        "pattern_to",
                        "pattern_from",
                        "pixel_ratio_to",
                        "pixel_ratio_from"
                      ],
                      "fill-pattern": [
                        "pattern_to",
                        "pattern_from",
                        "pixel_ratio_to",
                        "pixel_ratio_from"
                      ],
                      "fill-extrusion-pattern": [
                        "pattern_to",
                        "pattern_from",
                        "pixel_ratio_to",
                        "pixel_ratio_from"
                      ]
                    };
                    return W[I] || [I.replace(D + "-", "").replace(/-/g, "_")];
                  }
                  function wo(I) {
                    var D = {
                      "line-pattern": {
                        source: Os,
                        composite: Os
                      },
                      "fill-pattern": {
                        source: Os,
                        composite: Os
                      },
                      "fill-extrusion-pattern": {
                        source: Os,
                        composite: Os
                      }
                    };
                    return D[I];
                  }
                  function uo(I, D, W) {
                    var ot = {
                      color: {
                        source: fd,
                        composite: rf
                      },
                      number: {
                        source: Ua,
                        composite: fd
                      }
                    }, xt = wo(I);
                    return xt && xt[W] || ot[D][W];
                  }
                  Kt("ConstantBinder", Vi), Kt("CrossFadedConstantBinder", Di), Kt("SourceExpressionBinder", Hi), Kt("CrossFadedCompositeBinder", na), Kt("CompositeExpressionBinder", Ki), Kt("ProgramConfiguration", da, { omit: ["_buffers"] }), Kt("ProgramConfigurationSet", la);
                  var _a = 8192, co = 15, $a = Math.pow(2, co - 1) - 1, po = -$a - 1;
                  function Mo(I) {
                    for (var D = _a / I.extent, W = I.loadGeometry(), ot = 0; ot < W.length; ot++)
                      for (var xt = W[ot], Pt = 0; Pt < xt.length; Pt++) {
                        var Ht = xt[Pt], ve = Math.round(Ht.x * D), Fe = Math.round(Ht.y * D);
                        Ht.x = g(ve, po, $a), Ht.y = g(Fe, po, $a), (ve < Ht.x || ve > Ht.x + 1 || Fe < Ht.y || Fe > Ht.y + 1) && U("Geometry exceeds allowed extent, reduce your vector tile buffer size");
                      }
                    return W;
                  }
                  function Zo(I, D) {
                    return {
                      type: I.type,
                      id: I.id,
                      properties: I.properties,
                      geometry: D ? Mo(I) : []
                    };
                  }
                  function _o(I, D, W, ot, xt) {
                    I.emplaceBack(D * 2 + (ot + 1) / 2, W * 2 + (xt + 1) / 2);
                  }
                  var ko = function(D) {
                    this.zoom = D.zoom, this.overscaling = D.overscaling, this.layers = D.layers, this.layerIds = this.layers.map(function(W) {
                      return W.id;
                    }), this.index = D.index, this.hasPattern = !1, this.layoutVertexArray = new oh(), this.indexArray = new ol(), this.segments = new Ps(), this.programConfigurations = new la(D.layers, D.zoom), this.stateDependentLayerIds = this.layers.filter(function(W) {
                      return W.isStateDependent();
                    }).map(function(W) {
                      return W.id;
                    });
                  };
                  ko.prototype.populate = function(D, W, ot) {
                    var xt = this.layers[0], Pt = [], Ht = null;
                    xt.type === "circle" && (Ht = xt.layout.get("circle-sort-key"));
                    for (var ve = 0, Fe = D; ve < Fe.length; ve += 1) {
                      var Ze = Fe[ve], nr = Ze.feature, wr = Ze.id, Fr = Ze.index, Rr = Ze.sourceLayerIndex, Kr = this.layers[0]._featureFilter.needGeometry, yn = Zo(nr, Kr);
                      if (this.layers[0]._featureFilter.filter(new ba(this.zoom), yn, ot)) {
                        var Qn = Ht ? Ht.evaluate(yn, {}, ot) : void 0, Bn = {
                          id: wr,
                          properties: nr.properties,
                          type: nr.type,
                          sourceLayerIndex: Rr,
                          index: Fr,
                          geometry: Kr ? yn.geometry : Mo(nr),
                          patterns: {},
                          sortKey: Qn
                        };
                        Pt.push(Bn);
                      }
                    }
                    Ht && Pt.sort(function(fa, va) {
                      return fa.sortKey - va.sortKey;
                    });
                    for (var vi = 0, ni = Pt; vi < ni.length; vi += 1) {
                      var pi = ni[vi], wi = pi, Fi = wi.geometry, Zi = wi.index, Yi = wi.sourceLayerIndex, ma = D[Zi].feature;
                      this.addFeature(pi, Fi, Zi, ot), W.featureIndex.insert(ma, Fi, Zi, Yi, this.index);
                    }
                  }, ko.prototype.update = function(D, W, ot) {
                    this.stateDependentLayers.length && this.programConfigurations.updatePaintArrays(D, W, this.stateDependentLayers, ot);
                  }, ko.prototype.isEmpty = function() {
                    return this.layoutVertexArray.length === 0;
                  }, ko.prototype.uploadPending = function() {
                    return !this.uploaded || this.programConfigurations.needsUpload;
                  }, ko.prototype.upload = function(D) {
                    this.uploaded || (this.layoutVertexBuffer = D.createVertexBuffer(this.layoutVertexArray, hd), this.indexBuffer = D.createIndexBuffer(this.indexArray)), this.programConfigurations.upload(D), this.uploaded = !0;
                  }, ko.prototype.destroy = function() {
                    this.layoutVertexBuffer && (this.layoutVertexBuffer.destroy(), this.indexBuffer.destroy(), this.programConfigurations.destroy(), this.segments.destroy());
                  }, ko.prototype.addFeature = function(D, W, ot, xt) {
                    for (var Pt = 0, Ht = W; Pt < Ht.length; Pt += 1)
                      for (var ve = Ht[Pt], Fe = 0, Ze = ve; Fe < Ze.length; Fe += 1) {
                        var nr = Ze[Fe], wr = nr.x, Fr = nr.y;
                        if (!(wr < 0 || wr >= _a || Fr < 0 || Fr >= _a)) {
                          var Rr = this.segments.prepareSegment(4, this.layoutVertexArray, this.indexArray, D.sortKey), Kr = Rr.vertexLength;
                          _o(this.layoutVertexArray, wr, Fr, -1, -1), _o(this.layoutVertexArray, wr, Fr, 1, -1), _o(this.layoutVertexArray, wr, Fr, 1, 1), _o(this.layoutVertexArray, wr, Fr, -1, 1), this.indexArray.emplaceBack(Kr, Kr + 1, Kr + 2), this.indexArray.emplaceBack(Kr, Kr + 3, Kr + 2), Rr.vertexLength += 4, Rr.primitiveLength += 2;
                        }
                      }
                    this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length, D, ot, {}, xt);
                  }, Kt("CircleBucket", ko, { omit: ["layers"] });
                  function to(I, D) {
                    for (var W = 0; W < I.length; W++)
                      if (Zl(D, I[W]))
                        return !0;
                    for (var ot = 0; ot < D.length; ot++)
                      if (Zl(I, D[ot]))
                        return !0;
                    return !!uc(I, D);
                  }
                  function Eo(I, D, W) {
                    return !!(Zl(I, D) || au(D, I, W));
                  }
                  function As(I, D) {
                    if (I.length === 1)
                      return cc(D, I[0]);
                    for (var W = 0; W < D.length; W++)
                      for (var ot = D[W], xt = 0; xt < ot.length; xt++)
                        if (Zl(I, ot[xt]))
                          return !0;
                    for (var Pt = 0; Pt < I.length; Pt++)
                      if (cc(D, I[Pt]))
                        return !0;
                    for (var Ht = 0; Ht < D.length; Ht++)
                      if (uc(I, D[Ht]))
                        return !0;
                    return !1;
                  }
                  function js(I, D, W) {
                    for (var ot = 0; ot < D.length; ot++) {
                      var xt = D[ot];
                      if (I.length >= 3) {
                        for (var Pt = 0; Pt < xt.length; Pt++)
                          if (Zl(I, xt[Pt]))
                            return !0;
                      }
                      if (lc(I, xt, W))
                        return !0;
                    }
                    return !1;
                  }
                  function lc(I, D, W) {
                    if (I.length > 1) {
                      if (uc(I, D))
                        return !0;
                      for (var ot = 0; ot < D.length; ot++)
                        if (au(D[ot], I, W))
                          return !0;
                    }
                    for (var xt = 0; xt < I.length; xt++)
                      if (au(I[xt], D, W))
                        return !0;
                    return !1;
                  }
                  function uc(I, D) {
                    if (I.length === 0 || D.length === 0)
                      return !1;
                    for (var W = 0; W < I.length - 1; W++)
                      for (var ot = I[W], xt = I[W + 1], Pt = 0; Pt < D.length - 1; Pt++) {
                        var Ht = D[Pt], ve = D[Pt + 1];
                        if (Pl(ot, xt, Ht, ve))
                          return !0;
                      }
                    return !1;
                  }
                  function Pl(I, D, W, ot) {
                    return H(I, W, ot) !== H(D, W, ot) && H(I, D, W) !== H(I, D, ot);
                  }
                  function au(I, D, W) {
                    var ot = W * W;
                    if (D.length === 1)
                      return I.distSqr(D[0]) < ot;
                    for (var xt = 1; xt < D.length; xt++) {
                      var Pt = D[xt - 1], Ht = D[xt];
                      if (nf(I, Pt, Ht) < ot)
                        return !0;
                    }
                    return !1;
                  }
                  function nf(I, D, W) {
                    var ot = D.distSqr(W);
                    if (ot === 0)
                      return I.distSqr(D);
                    var xt = ((I.x - D.x) * (W.x - D.x) + (I.y - D.y) * (W.y - D.y)) / ot;
                    return xt < 0 ? I.distSqr(D) : xt > 1 ? I.distSqr(W) : I.distSqr(W.sub(D)._mult(xt)._add(D));
                  }
                  function cc(I, D) {
                    for (var W = !1, ot, xt, Pt, Ht = 0; Ht < I.length; Ht++) {
                      ot = I[Ht];
                      for (var ve = 0, Fe = ot.length - 1; ve < ot.length; Fe = ve++)
                        xt = ot[ve], Pt = ot[Fe], xt.y > D.y != Pt.y > D.y && D.x < (Pt.x - xt.x) * (D.y - xt.y) / (Pt.y - xt.y) + xt.x && (W = !W);
                    }
                    return W;
                  }
                  function Zl(I, D) {
                    for (var W = !1, ot = 0, xt = I.length - 1; ot < I.length; xt = ot++) {
                      var Pt = I[ot], Ht = I[xt];
                      Pt.y > D.y != Ht.y > D.y && D.x < (Ht.x - Pt.x) * (D.y - Pt.y) / (Ht.y - Pt.y) + Pt.x && (W = !W);
                    }
                    return W;
                  }
                  function fc(I, D, W, ot, xt) {
                    for (var Pt = 0, Ht = I; Pt < Ht.length; Pt += 1) {
                      var ve = Ht[Pt];
                      if (D <= ve.x && W <= ve.y && ot >= ve.x && xt >= ve.y)
                        return !0;
                    }
                    var Fe = [
                      new u(D, W),
                      new u(D, xt),
                      new u(ot, xt),
                      new u(ot, W)
                    ];
                    if (I.length > 2)
                      for (var Ze = 0, nr = Fe; Ze < nr.length; Ze += 1) {
                        var wr = nr[Ze];
                        if (Zl(I, wr))
                          return !0;
                      }
                    for (var Fr = 0; Fr < I.length - 1; Fr++) {
                      var Rr = I[Fr], Kr = I[Fr + 1];
                      if (Ou(Rr, Kr, Fe))
                        return !0;
                    }
                    return !1;
                  }
                  function Ou(I, D, W) {
                    var ot = W[0], xt = W[2];
                    if (I.x < ot.x && D.x < ot.x || I.x > xt.x && D.x > xt.x || I.y < ot.y && D.y < ot.y || I.y > xt.y && D.y > xt.y)
                      return !1;
                    var Pt = H(I, D, W[0]);
                    return Pt !== H(I, D, W[1]) || Pt !== H(I, D, W[2]) || Pt !== H(I, D, W[3]);
                  }
                  function Il(I, D, W) {
                    var ot = D.paint.get(I).value;
                    return ot.kind === "constant" ? ot.value : W.programConfigurations.get(D.id).getMaxValue(I);
                  }
                  function Qo(I) {
                    return Math.sqrt(I[0] * I[0] + I[1] * I[1]);
                  }
                  function af(I, D, W, ot, xt) {
                    if (!D[0] && !D[1])
                      return I;
                    var Pt = u.convert(D)._mult(xt);
                    W === "viewport" && Pt._rotate(-ot);
                    for (var Ht = [], ve = 0; ve < I.length; ve++) {
                      var Fe = I[ve];
                      Ht.push(Fe.sub(Pt));
                    }
                    return Ht;
                  }
                  var mu = new So({ "circle-sort-key": new wa($r.layout_circle["circle-sort-key"]) }), Fh = new So({
                    "circle-radius": new wa($r.paint_circle["circle-radius"]),
                    "circle-color": new wa($r.paint_circle["circle-color"]),
                    "circle-blur": new wa($r.paint_circle["circle-blur"]),
                    "circle-opacity": new wa($r.paint_circle["circle-opacity"]),
                    "circle-translate": new ta($r.paint_circle["circle-translate"]),
                    "circle-translate-anchor": new ta($r.paint_circle["circle-translate-anchor"]),
                    "circle-pitch-scale": new ta($r.paint_circle["circle-pitch-scale"]),
                    "circle-pitch-alignment": new ta($r.paint_circle["circle-pitch-alignment"]),
                    "circle-stroke-width": new wa($r.paint_circle["circle-stroke-width"]),
                    "circle-stroke-color": new wa($r.paint_circle["circle-stroke-color"]),
                    "circle-stroke-opacity": new wa($r.paint_circle["circle-stroke-opacity"])
                  }), hh = {
                    paint: Fh,
                    layout: mu
                  }, Is = typeof Float32Array < "u" ? Float32Array : Array;
                  Math.hypot || (Math.hypot = function() {
                    for (var I = arguments, D = 0, W = arguments.length; W--; )
                      D += I[W] * I[W];
                    return Math.sqrt(D);
                  });
                  function Nd() {
                    var I = new Is(4);
                    return Is != Float32Array && (I[1] = 0, I[2] = 0), I[0] = 1, I[3] = 1, I;
                  }
                  function Ud(I, D, W) {
                    var ot = D[0], xt = D[1], Pt = D[2], Ht = D[3], ve = Math.sin(W), Fe = Math.cos(W);
                    return I[0] = ot * Fe + Pt * ve, I[1] = xt * Fe + Ht * ve, I[2] = ot * -ve + Pt * Fe, I[3] = xt * -ve + Ht * Fe, I;
                  }
                  function Rl() {
                    var I = new Is(9);
                    return Is != Float32Array && (I[1] = 0, I[2] = 0, I[3] = 0, I[5] = 0, I[6] = 0, I[7] = 0), I[0] = 1, I[4] = 1, I[8] = 1, I;
                  }
                  function dd(I, D) {
                    var W = Math.sin(D), ot = Math.cos(D);
                    return I[0] = ot, I[1] = W, I[2] = 0, I[3] = -W, I[4] = ot, I[5] = 0, I[6] = 0, I[7] = 0, I[8] = 1, I;
                  }
                  function rv() {
                    var I = new Is(16);
                    return Is != Float32Array && (I[1] = 0, I[2] = 0, I[3] = 0, I[4] = 0, I[6] = 0, I[7] = 0, I[8] = 0, I[9] = 0, I[11] = 0, I[12] = 0, I[13] = 0, I[14] = 0), I[0] = 1, I[5] = 1, I[10] = 1, I[15] = 1, I;
                  }
                  function vd(I) {
                    var D = new Is(16);
                    return D[0] = I[0], D[1] = I[1], D[2] = I[2], D[3] = I[3], D[4] = I[4], D[5] = I[5], D[6] = I[6], D[7] = I[7], D[8] = I[8], D[9] = I[9], D[10] = I[10], D[11] = I[11], D[12] = I[12], D[13] = I[13], D[14] = I[14], D[15] = I[15], D;
                  }
                  function Oh(I) {
                    return I[0] = 1, I[1] = 0, I[2] = 0, I[3] = 0, I[4] = 0, I[5] = 1, I[6] = 0, I[7] = 0, I[8] = 0, I[9] = 0, I[10] = 1, I[11] = 0, I[12] = 0, I[13] = 0, I[14] = 0, I[15] = 1, I;
                  }
                  function dh(I, D) {
                    var W = D[0], ot = D[1], xt = D[2], Pt = D[3], Ht = D[4], ve = D[5], Fe = D[6], Ze = D[7], nr = D[8], wr = D[9], Fr = D[10], Rr = D[11], Kr = D[12], yn = D[13], Qn = D[14], Bn = D[15], vi = W * ve - ot * Ht, ni = W * Fe - xt * Ht, pi = W * Ze - Pt * Ht, wi = ot * Fe - xt * ve, Fi = ot * Ze - Pt * ve, Zi = xt * Ze - Pt * Fe, Yi = nr * yn - wr * Kr, ma = nr * Qn - Fr * Kr, fa = nr * Bn - Rr * Kr, va = wr * Qn - Fr * yn, Za = wr * Bn - Rr * yn, Ta = Fr * Bn - Rr * Qn, Aa = vi * Ta - ni * Za + pi * va + wi * fa - Fi * ma + Zi * Yi;
                    return Aa ? (Aa = 1 / Aa, I[0] = (ve * Ta - Fe * Za + Ze * va) * Aa, I[1] = (xt * Za - ot * Ta - Pt * va) * Aa, I[2] = (yn * Zi - Qn * Fi + Bn * wi) * Aa, I[3] = (Fr * Fi - wr * Zi - Rr * wi) * Aa, I[4] = (Fe * fa - Ht * Ta - Ze * ma) * Aa, I[5] = (W * Ta - xt * fa + Pt * ma) * Aa, I[6] = (Qn * pi - Kr * Zi - Bn * ni) * Aa, I[7] = (nr * Zi - Fr * pi + Rr * ni) * Aa, I[8] = (Ht * Za - ve * fa + Ze * Yi) * Aa, I[9] = (ot * fa - W * Za - Pt * Yi) * Aa, I[10] = (Kr * Fi - yn * pi + Bn * vi) * Aa, I[11] = (wr * pi - nr * Fi - Rr * vi) * Aa, I[12] = (ve * ma - Ht * va - Fe * Yi) * Aa, I[13] = (W * va - ot * ma + xt * Yi) * Aa, I[14] = (yn * ni - Kr * wi - Qn * vi) * Aa, I[15] = (nr * wi - wr * ni + Fr * vi) * Aa, I) : null;
                  }
                  function vh(I, D, W) {
                    var ot = D[0], xt = D[1], Pt = D[2], Ht = D[3], ve = D[4], Fe = D[5], Ze = D[6], nr = D[7], wr = D[8], Fr = D[9], Rr = D[10], Kr = D[11], yn = D[12], Qn = D[13], Bn = D[14], vi = D[15], ni = W[0], pi = W[1], wi = W[2], Fi = W[3];
                    return I[0] = ni * ot + pi * ve + wi * wr + Fi * yn, I[1] = ni * xt + pi * Fe + wi * Fr + Fi * Qn, I[2] = ni * Pt + pi * Ze + wi * Rr + Fi * Bn, I[3] = ni * Ht + pi * nr + wi * Kr + Fi * vi, ni = W[4], pi = W[5], wi = W[6], Fi = W[7], I[4] = ni * ot + pi * ve + wi * wr + Fi * yn, I[5] = ni * xt + pi * Fe + wi * Fr + Fi * Qn, I[6] = ni * Pt + pi * Ze + wi * Rr + Fi * Bn, I[7] = ni * Ht + pi * nr + wi * Kr + Fi * vi, ni = W[8], pi = W[9], wi = W[10], Fi = W[11], I[8] = ni * ot + pi * ve + wi * wr + Fi * yn, I[9] = ni * xt + pi * Fe + wi * Fr + Fi * Qn, I[10] = ni * Pt + pi * Ze + wi * Rr + Fi * Bn, I[11] = ni * Ht + pi * nr + wi * Kr + Fi * vi, ni = W[12], pi = W[13], wi = W[14], Fi = W[15], I[12] = ni * ot + pi * ve + wi * wr + Fi * yn, I[13] = ni * xt + pi * Fe + wi * Fr + Fi * Qn, I[14] = ni * Pt + pi * Ze + wi * Rr + Fi * Bn, I[15] = ni * Ht + pi * nr + wi * Kr + Fi * vi, I;
                  }
                  function ps(I, D, W) {
                    var ot = W[0], xt = W[1], Pt = W[2], Ht, ve, Fe, Ze, nr, wr, Fr, Rr, Kr, yn, Qn, Bn;
                    return D === I ? (I[12] = D[0] * ot + D[4] * xt + D[8] * Pt + D[12], I[13] = D[1] * ot + D[5] * xt + D[9] * Pt + D[13], I[14] = D[2] * ot + D[6] * xt + D[10] * Pt + D[14], I[15] = D[3] * ot + D[7] * xt + D[11] * Pt + D[15]) : (Ht = D[0], ve = D[1], Fe = D[2], Ze = D[3], nr = D[4], wr = D[5], Fr = D[6], Rr = D[7], Kr = D[8], yn = D[9], Qn = D[10], Bn = D[11], I[0] = Ht, I[1] = ve, I[2] = Fe, I[3] = Ze, I[4] = nr, I[5] = wr, I[6] = Fr, I[7] = Rr, I[8] = Kr, I[9] = yn, I[10] = Qn, I[11] = Bn, I[12] = Ht * ot + nr * xt + Kr * Pt + D[12], I[13] = ve * ot + wr * xt + yn * Pt + D[13], I[14] = Fe * ot + Fr * xt + Qn * Pt + D[14], I[15] = Ze * ot + Rr * xt + Bn * Pt + D[15]), I;
                  }
                  function $s(I, D, W) {
                    var ot = W[0], xt = W[1], Pt = W[2];
                    return I[0] = D[0] * ot, I[1] = D[1] * ot, I[2] = D[2] * ot, I[3] = D[3] * ot, I[4] = D[4] * xt, I[5] = D[5] * xt, I[6] = D[6] * xt, I[7] = D[7] * xt, I[8] = D[8] * Pt, I[9] = D[9] * Pt, I[10] = D[10] * Pt, I[11] = D[11] * Pt, I[12] = D[12], I[13] = D[13], I[14] = D[14], I[15] = D[15], I;
                  }
                  function xu(I, D, W) {
                    var ot = Math.sin(W), xt = Math.cos(W), Pt = D[4], Ht = D[5], ve = D[6], Fe = D[7], Ze = D[8], nr = D[9], wr = D[10], Fr = D[11];
                    return D !== I && (I[0] = D[0], I[1] = D[1], I[2] = D[2], I[3] = D[3], I[12] = D[12], I[13] = D[13], I[14] = D[14], I[15] = D[15]), I[4] = Pt * xt + Ze * ot, I[5] = Ht * xt + nr * ot, I[6] = ve * xt + wr * ot, I[7] = Fe * xt + Fr * ot, I[8] = Ze * xt - Pt * ot, I[9] = nr * xt - Ht * ot, I[10] = wr * xt - ve * ot, I[11] = Fr * xt - Fe * ot, I;
                  }
                  function Bh(I, D, W) {
                    var ot = Math.sin(W), xt = Math.cos(W), Pt = D[0], Ht = D[1], ve = D[2], Fe = D[3], Ze = D[4], nr = D[5], wr = D[6], Fr = D[7];
                    return D !== I && (I[8] = D[8], I[9] = D[9], I[10] = D[10], I[11] = D[11], I[12] = D[12], I[13] = D[13], I[14] = D[14], I[15] = D[15]), I[0] = Pt * xt + Ze * ot, I[1] = Ht * xt + nr * ot, I[2] = ve * xt + wr * ot, I[3] = Fe * xt + Fr * ot, I[4] = Ze * xt - Pt * ot, I[5] = nr * xt - Ht * ot, I[6] = wr * xt - ve * ot, I[7] = Fr * xt - Fe * ot, I;
                  }
                  function yv(I, D, W, ot, xt) {
                    var Pt = 1 / Math.tan(D / 2), Ht;
                    return I[0] = Pt / W, I[1] = 0, I[2] = 0, I[3] = 0, I[4] = 0, I[5] = Pt, I[6] = 0, I[7] = 0, I[8] = 0, I[9] = 0, I[11] = -1, I[12] = 0, I[13] = 0, I[15] = 0, xt != null && xt !== 1 / 0 ? (Ht = 1 / (ot - xt), I[10] = (xt + ot) * Ht, I[14] = 2 * xt * ot * Ht) : (I[10] = -1, I[14] = -2 * ot), I;
                  }
                  function kp(I, D, W, ot, xt, Pt, Ht) {
                    var ve = 1 / (D - W), Fe = 1 / (ot - xt), Ze = 1 / (Pt - Ht);
                    return I[0] = -2 * ve, I[1] = 0, I[2] = 0, I[3] = 0, I[4] = 0, I[5] = -2 * Fe, I[6] = 0, I[7] = 0, I[8] = 0, I[9] = 0, I[10] = 2 * Ze, I[11] = 0, I[12] = (D + W) * ve, I[13] = (xt + ot) * Fe, I[14] = (Ht + Pt) * Ze, I[15] = 1, I;
                  }
                  var Gv = vh;
                  function pd() {
                    var I = new Is(3);
                    return Is != Float32Array && (I[0] = 0, I[1] = 0, I[2] = 0), I;
                  }
                  function zp(I) {
                    var D = new Is(3);
                    return D[0] = I[0], D[1] = I[1], D[2] = I[2], D;
                  }
                  function nv(I, D, W) {
                    return I[0] = D[0] + W[0], I[1] = D[1] + W[1], I[2] = D[2] + W[2], I;
                  }
                  function Ot(I, D, W) {
                    return I[0] = D[0] - W[0], I[1] = D[1] - W[1], I[2] = D[2] - W[2], I;
                  }
                  function R(I, D, W) {
                    return I[0] = D[0] * W, I[1] = D[1] * W, I[2] = D[2] * W, I;
                  }
                  function J(I, D) {
                    var W = D[0], ot = D[1], xt = D[2], Pt = W * W + ot * ot + xt * xt;
                    return Pt > 0 && (Pt = 1 / Math.sqrt(Pt)), I[0] = D[0] * Pt, I[1] = D[1] * Pt, I[2] = D[2] * Pt, I;
                  }
                  function yt(I, D) {
                    return I[0] * D[0] + I[1] * D[1] + I[2] * D[2];
                  }
                  function Tt(I, D, W) {
                    var ot = D[0], xt = D[1], Pt = D[2], Ht = W[0], ve = W[1], Fe = W[2];
                    return I[0] = xt * Fe - Pt * ve, I[1] = Pt * Ht - ot * Fe, I[2] = ot * ve - xt * Ht, I;
                  }
                  function Nt(I, D, W) {
                    var ot = D[0], xt = D[1], Pt = D[2];
                    return I[0] = ot * W[0] + xt * W[3] + Pt * W[6], I[1] = ot * W[1] + xt * W[4] + Pt * W[7], I[2] = ot * W[2] + xt * W[5] + Pt * W[8], I;
                  }
                  var be = Ot;
                  (function() {
                    var I = pd();
                    return function(D, W, ot, xt, Pt, Ht) {
                      var ve, Fe;
                      for (W || (W = 3), ot || (ot = 0), xt ? Fe = Math.min(xt * W + ot, D.length) : Fe = D.length, ve = ot; ve < Fe; ve += W)
                        I[0] = D[ve], I[1] = D[ve + 1], I[2] = D[ve + 2], Pt(I, I, Ht), D[ve] = I[0], D[ve + 1] = I[1], D[ve + 2] = I[2];
                      return D;
                    };
                  })();
                  function Re() {
                    var I = new Is(4);
                    return Is != Float32Array && (I[0] = 0, I[1] = 0, I[2] = 0, I[3] = 0), I;
                  }
                  function je(I, D, W) {
                    return I[0] = D[0] * W, I[1] = D[1] * W, I[2] = D[2] * W, I[3] = D[3] * W, I;
                  }
                  function pr(I, D) {
                    return I[0] * D[0] + I[1] * D[1] + I[2] * D[2] + I[3] * D[3];
                  }
                  function br(I, D, W) {
                    var ot = D[0], xt = D[1], Pt = D[2], Ht = D[3];
                    return I[0] = W[0] * ot + W[4] * xt + W[8] * Pt + W[12] * Ht, I[1] = W[1] * ot + W[5] * xt + W[9] * Pt + W[13] * Ht, I[2] = W[2] * ot + W[6] * xt + W[10] * Pt + W[14] * Ht, I[3] = W[3] * ot + W[7] * xt + W[11] * Pt + W[15] * Ht, I;
                  }
                  (function() {
                    var I = Re();
                    return function(D, W, ot, xt, Pt, Ht) {
                      var ve, Fe;
                      for (W || (W = 4), ot || (ot = 0), xt ? Fe = Math.min(xt * W + ot, D.length) : Fe = D.length, ve = ot; ve < Fe; ve += W)
                        I[0] = D[ve], I[1] = D[ve + 1], I[2] = D[ve + 2], I[3] = D[ve + 3], Pt(I, I, Ht), D[ve] = I[0], D[ve + 1] = I[1], D[ve + 2] = I[2], D[ve + 3] = I[3];
                      return D;
                    };
                  })();
                  function Ar() {
                    var I = new Is(2);
                    return Is != Float32Array && (I[0] = 0, I[1] = 0), I;
                  }
                  function qr(I) {
                    var D = I[0], W = I[1];
                    return D * D + W * W;
                  }
                  var vn = qr;
                  (function() {
                    var I = Ar();
                    return function(D, W, ot, xt, Pt, Ht) {
                      var ve, Fe;
                      for (W || (W = 2), ot || (ot = 0), xt ? Fe = Math.min(xt * W + ot, D.length) : Fe = D.length, ve = ot; ve < Fe; ve += W)
                        I[0] = D[ve], I[1] = D[ve + 1], Pt(I, I, Ht), D[ve] = I[0], D[ve + 1] = I[1];
                      return D;
                    };
                  })();
                  var bn = function(I) {
                    function D(W) {
                      I.call(this, W, hh);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype.createBucket = function(ot) {
                      return new ko(ot);
                    }, D.prototype.queryRadius = function(ot) {
                      var xt = ot;
                      return Il("circle-radius", this, xt) + Il("circle-stroke-width", this, xt) + Qo(this.paint.get("circle-translate"));
                    }, D.prototype.queryIntersectsFeature = function(ot, xt, Pt, Ht, ve, Fe, Ze, nr) {
                      for (var wr = af(ot, this.paint.get("circle-translate"), this.paint.get("circle-translate-anchor"), Fe.angle, Ze), Fr = this.paint.get("circle-radius").evaluate(xt, Pt), Rr = this.paint.get("circle-stroke-width").evaluate(xt, Pt), Kr = Fr + Rr, yn = this.paint.get("circle-pitch-alignment") === "map", Qn = yn ? wr : Gn(wr, nr), Bn = yn ? Kr * Ze : Kr, vi = 0, ni = Ht; vi < ni.length; vi += 1)
                        for (var pi = ni[vi], wi = 0, Fi = pi; wi < Fi.length; wi += 1) {
                          var Zi = Fi[wi], Yi = yn ? Zi : Rn(Zi, nr), ma = Bn, fa = br([], [
                            Zi.x,
                            Zi.y,
                            0,
                            1
                          ], nr);
                          if (this.paint.get("circle-pitch-scale") === "viewport" && this.paint.get("circle-pitch-alignment") === "map" ? ma *= fa[3] / Fe.cameraToCenterDistance : this.paint.get("circle-pitch-scale") === "map" && this.paint.get("circle-pitch-alignment") === "viewport" && (ma *= Fe.cameraToCenterDistance / fa[3]), Eo(Qn, Yi, ma))
                            return !0;
                        }
                      return !1;
                    }, D;
                  }(Qi);
                  function Rn(I, D) {
                    var W = br([], [
                      I.x,
                      I.y,
                      0,
                      1
                    ], D);
                    return new u(W[0] / W[3], W[1] / W[3]);
                  }
                  function Gn(I, D) {
                    return I.map(function(W) {
                      return Rn(W, D);
                    });
                  }
                  var ii = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D;
                  }(ko);
                  Kt("HeatmapBucket", ii, { omit: ["layers"] });
                  function oi(I, D, W, ot) {
                    var xt = D.width, Pt = D.height;
                    if (!ot)
                      ot = new Uint8Array(xt * Pt * W);
                    else if (ot instanceof Uint8ClampedArray)
                      ot = new Uint8Array(ot.buffer);
                    else if (ot.length !== xt * Pt * W)
                      throw new RangeError("mismatched image size");
                    return I.width = xt, I.height = Pt, I.data = ot, I;
                  }
                  function Xn(I, D, W) {
                    var ot = D.width, xt = D.height;
                    if (!(ot === I.width && xt === I.height)) {
                      var Pt = oi({}, {
                        width: ot,
                        height: xt
                      }, W);
                      Ri(I, Pt, {
                        x: 0,
                        y: 0
                      }, {
                        x: 0,
                        y: 0
                      }, {
                        width: Math.min(I.width, ot),
                        height: Math.min(I.height, xt)
                      }, W), I.width = ot, I.height = xt, I.data = Pt.data;
                    }
                  }
                  function Ri(I, D, W, ot, xt, Pt) {
                    if (xt.width === 0 || xt.height === 0)
                      return D;
                    if (xt.width > I.width || xt.height > I.height || W.x > I.width - xt.width || W.y > I.height - xt.height)
                      throw new RangeError("out of range source coordinates for image copy");
                    if (xt.width > D.width || xt.height > D.height || ot.x > D.width - xt.width || ot.y > D.height - xt.height)
                      throw new RangeError("out of range destination coordinates for image copy");
                    for (var Ht = I.data, ve = D.data, Fe = 0; Fe < xt.height; Fe++)
                      for (var Ze = ((W.y + Fe) * I.width + W.x) * Pt, nr = ((ot.y + Fe) * D.width + ot.x) * Pt, wr = 0; wr < xt.width * Pt; wr++)
                        ve[nr + wr] = Ht[Ze + wr];
                    return D;
                  }
                  var Ci = function(D, W) {
                    oi(this, D, 1, W);
                  };
                  Ci.prototype.resize = function(D) {
                    Xn(this, D, 1);
                  }, Ci.prototype.clone = function() {
                    return new Ci({
                      width: this.width,
                      height: this.height
                    }, new Uint8Array(this.data));
                  }, Ci.copy = function(D, W, ot, xt, Pt) {
                    Ri(D, W, ot, xt, Pt, 1);
                  };
                  var Oi = function(D, W) {
                    oi(this, D, 4, W);
                  };
                  Oi.prototype.resize = function(D) {
                    Xn(this, D, 4);
                  }, Oi.prototype.replace = function(D, W) {
                    W ? this.data.set(D) : D instanceof Uint8ClampedArray ? this.data = new Uint8Array(D.buffer) : this.data = D;
                  }, Oi.prototype.clone = function() {
                    return new Oi({
                      width: this.width,
                      height: this.height
                    }, new Uint8Array(this.data));
                  }, Oi.copy = function(D, W, ot, xt, Pt) {
                    Ri(D, W, ot, xt, Pt, 4);
                  }, Kt("AlphaImage", Ci), Kt("RGBAImage", Oi);
                  var pa = new So({
                    "heatmap-radius": new wa($r.paint_heatmap["heatmap-radius"]),
                    "heatmap-weight": new wa($r.paint_heatmap["heatmap-weight"]),
                    "heatmap-intensity": new ta($r.paint_heatmap["heatmap-intensity"]),
                    "heatmap-color": new as($r.paint_heatmap["heatmap-color"]),
                    "heatmap-opacity": new ta($r.paint_heatmap["heatmap-opacity"])
                  }), Sa = { paint: pa };
                  function ao(I) {
                    var D = {}, W = I.resolution || 256, ot = I.clips ? I.clips.length : 1, xt = I.image || new Oi({
                      width: W,
                      height: ot
                    }), Pt = function(vi, ni, pi) {
                      D[I.evaluationKey] = pi;
                      var wi = I.expression.evaluate(D);
                      xt.data[vi + ni + 0] = Math.floor(wi.r * 255 / wi.a), xt.data[vi + ni + 1] = Math.floor(wi.g * 255 / wi.a), xt.data[vi + ni + 2] = Math.floor(wi.b * 255 / wi.a), xt.data[vi + ni + 3] = Math.floor(wi.a * 255);
                    };
                    if (I.clips)
                      for (var Ze = 0, nr = 0; Ze < ot; ++Ze, nr += W * 4)
                        for (var wr = 0, Fr = 0; wr < W; wr++, Fr += 4) {
                          var Rr = wr / (W - 1), Kr = I.clips[Ze], yn = Kr.start, Qn = Kr.end, Bn = yn * (1 - Rr) + Qn * Rr;
                          Pt(nr, Fr, Bn);
                        }
                    else
                      for (var Ht = 0, ve = 0; Ht < W; Ht++, ve += 4) {
                        var Fe = Ht / (W - 1);
                        Pt(0, ve, Fe);
                      }
                    return xt;
                  }
                  var Xa = function(I) {
                    function D(W) {
                      I.call(this, W, Sa), this._updateColorRamp();
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype.createBucket = function(ot) {
                      return new ii(ot);
                    }, D.prototype._handleSpecialPaintPropertyUpdate = function(ot) {
                      ot === "heatmap-color" && this._updateColorRamp();
                    }, D.prototype._updateColorRamp = function() {
                      var ot = this._transitionablePaint._values["heatmap-color"].value.expression;
                      this.colorRamp = ao({
                        expression: ot,
                        evaluationKey: "heatmapDensity",
                        image: this.colorRamp
                      }), this.colorRampTexture = null;
                    }, D.prototype.resize = function() {
                      this.heatmapFbo && (this.heatmapFbo.destroy(), this.heatmapFbo = null);
                    }, D.prototype.queryRadius = function() {
                      return 0;
                    }, D.prototype.queryIntersectsFeature = function() {
                      return !1;
                    }, D.prototype.hasOffscreenPass = function() {
                      return this.paint.get("heatmap-opacity") !== 0 && this.visibility !== "none";
                    }, D;
                  }(Qi), La = new So({
                    "hillshade-illumination-direction": new ta($r.paint_hillshade["hillshade-illumination-direction"]),
                    "hillshade-illumination-anchor": new ta($r.paint_hillshade["hillshade-illumination-anchor"]),
                    "hillshade-exaggeration": new ta($r.paint_hillshade["hillshade-exaggeration"]),
                    "hillshade-shadow-color": new ta($r.paint_hillshade["hillshade-shadow-color"]),
                    "hillshade-highlight-color": new ta($r.paint_hillshade["hillshade-highlight-color"]),
                    "hillshade-accent-color": new ta($r.paint_hillshade["hillshade-accent-color"])
                  }), xa = { paint: La }, Ya = function(I) {
                    function D(W) {
                      I.call(this, W, xa);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype.hasOffscreenPass = function() {
                      return this.paint.get("hillshade-exaggeration") !== 0 && this.visibility !== "none";
                    }, D;
                  }(Qi), Va = Yo([{
                    name: "a_pos",
                    components: 2,
                    type: "Int16"
                  }], 4), Wo = Va.members, ua = Uo, ca = Uo;
                  function Uo(I, D, W) {
                    W = W || 2;
                    var ot = D && D.length, xt = ot ? D[0] * W : I.length, Pt = Zs(I, 0, xt, W, !0), Ht = [];
                    if (!Pt || Pt.next === Pt.prev)
                      return Ht;
                    var ve, Fe, Ze, nr, wr, Fr, Rr;
                    if (ot && (Pt = Bu(I, D, Pt, W)), I.length > 80 * W) {
                      ve = Ze = I[0], Fe = nr = I[1];
                      for (var Kr = W; Kr < xt; Kr += W)
                        wr = I[Kr], Fr = I[Kr + 1], wr < ve && (ve = wr), Fr < Fe && (Fe = Fr), wr > Ze && (Ze = wr), Fr > nr && (nr = Fr);
                      Rr = Math.max(Ze - ve, nr - Fe), Rr = Rr !== 0 ? 1 / Rr : 0;
                    }
                    return qs(Pt, Ht, W, ve, Fe, Rr), Ht;
                  }
                  function Zs(I, D, W, ot, xt) {
                    var Pt, Ht;
                    if (xt === Fp(I, D, W, ot) > 0)
                      for (Pt = D; Pt < W; Pt += ot)
                        Ht = Vd(Pt, I[Pt], I[Pt + 1], Ht);
                    else
                      for (Pt = W - ot; Pt >= D; Pt -= ot)
                        Ht = Vd(Pt, I[Pt], I[Pt + 1], Ht);
                    return Ht && sf(Ht, Ht.next) && (tl(Ht), Ht = Ht.next), Ht;
                  }
                  function Lo(I, D) {
                    if (!I)
                      return I;
                    D || (D = I);
                    var W = I, ot;
                    do
                      if (ot = !1, !W.steiner && (sf(W, W.next) || gs(W.prev, W, W.next) === 0)) {
                        if (tl(W), W = D = W.prev, W === W.next)
                          break;
                        ot = !0;
                      } else
                        W = W.next;
                    while (ot || W !== D);
                    return D;
                  }
                  function qs(I, D, W, ot, xt, Pt, Ht) {
                    if (I) {
                      !Ht && Pt && gd(I, ot, xt, Pt);
                      for (var ve = I, Fe, Ze; I.prev !== I.next; ) {
                        if (Fe = I.prev, Ze = I.next, Pt ? ts(I, ot, xt, Pt) : sl(I)) {
                          D.push(Fe.i / W), D.push(I.i / W), D.push(Ze.i / W), tl(I), I = Ze.next, ve = Ze.next;
                          continue;
                        }
                        if (I = Ze, I === ve) {
                          Ht ? Ht === 1 ? (I = Rs(Lo(I), D, W), qs(I, D, W, ot, xt, Pt, 2)) : Ht === 2 && bo(I, D, W, ot, xt, Pt) : qs(Lo(I), D, W, ot, xt, Pt, 1);
                          break;
                        }
                      }
                    }
                  }
                  function sl(I) {
                    var D = I.prev, W = I, ot = I.next;
                    if (gs(D, W, ot) >= 0)
                      return !1;
                    for (var xt = I.next.next; xt !== I.prev; ) {
                      if (Nh(D.x, D.y, W.x, W.y, ot.x, ot.y, xt.x, xt.y) && gs(xt.prev, xt, xt.next) >= 0)
                        return !1;
                      xt = xt.next;
                    }
                    return !0;
                  }
                  function ts(I, D, W, ot) {
                    var xt = I.prev, Pt = I, Ht = I.next;
                    if (gs(xt, Pt, Ht) >= 0)
                      return !1;
                    for (var ve = xt.x < Pt.x ? xt.x < Ht.x ? xt.x : Ht.x : Pt.x < Ht.x ? Pt.x : Ht.x, Fe = xt.y < Pt.y ? xt.y < Ht.y ? xt.y : Ht.y : Pt.y < Ht.y ? Pt.y : Ht.y, Ze = xt.x > Pt.x ? xt.x > Ht.x ? xt.x : Ht.x : Pt.x > Ht.x ? Pt.x : Ht.x, nr = xt.y > Pt.y ? xt.y > Ht.y ? xt.y : Ht.y : Pt.y > Ht.y ? Pt.y : Ht.y, wr = hc(ve, Fe, D, W, ot), Fr = hc(Ze, nr, D, W, ot), Rr = I.prevZ, Kr = I.nextZ; Rr && Rr.z >= wr && Kr && Kr.z <= Fr; ) {
                      if (Rr !== I.prev && Rr !== I.next && Nh(xt.x, xt.y, Pt.x, Pt.y, Ht.x, Ht.y, Rr.x, Rr.y) && gs(Rr.prev, Rr, Rr.next) >= 0 || (Rr = Rr.prevZ, Kr !== I.prev && Kr !== I.next && Nh(xt.x, xt.y, Pt.x, Pt.y, Ht.x, Ht.y, Kr.x, Kr.y) && gs(Kr.prev, Kr, Kr.next) >= 0))
                        return !1;
                      Kr = Kr.nextZ;
                    }
                    for (; Rr && Rr.z >= wr; ) {
                      if (Rr !== I.prev && Rr !== I.next && Nh(xt.x, xt.y, Pt.x, Pt.y, Ht.x, Ht.y, Rr.x, Rr.y) && gs(Rr.prev, Rr, Rr.next) >= 0)
                        return !1;
                      Rr = Rr.prevZ;
                    }
                    for (; Kr && Kr.z <= Fr; ) {
                      if (Kr !== I.prev && Kr !== I.next && Nh(xt.x, xt.y, Pt.x, Pt.y, Ht.x, Ht.y, Kr.x, Kr.y) && gs(Kr.prev, Kr, Kr.next) >= 0)
                        return !1;
                      Kr = Kr.nextZ;
                    }
                    return !0;
                  }
                  function Rs(I, D, W) {
                    var ot = I;
                    do {
                      var xt = ot.prev, Pt = ot.next.next;
                      !sf(xt, Pt) && If(xt, ot, ot.next, Pt) && wu(xt, Pt) && wu(Pt, xt) && (D.push(xt.i / W), D.push(ot.i / W), D.push(Pt.i / W), tl(ot), tl(ot.next), ot = I = Pt), ot = ot.next;
                    } while (ot !== I);
                    return Lo(ot);
                  }
                  function bo(I, D, W, ot, xt, Pt) {
                    var Ht = I;
                    do {
                      for (var ve = Ht.next.next; ve !== Ht.prev; ) {
                        if (Ht.i !== ve.i && mv(Ht, ve)) {
                          var Fe = Df(Ht, ve);
                          Ht = Lo(Ht, Ht.next), Fe = Lo(Fe, Fe.next), qs(Ht, D, W, ot, xt, Pt), qs(Fe, D, W, ot, xt, Pt);
                          return;
                        }
                        ve = ve.next;
                      }
                      Ht = Ht.next;
                    } while (Ht !== I);
                  }
                  function Bu(I, D, W, ot) {
                    var xt = [], Pt, Ht, ve, Fe, Ze;
                    for (Pt = 0, Ht = D.length; Pt < Ht; Pt++)
                      ve = D[Pt] * ot, Fe = Pt < Ht - 1 ? D[Pt + 1] * ot : I.length, Ze = Zs(I, ve, Fe, ot, !1), Ze === Ze.next && (Ze.steiner = !0), xt.push(Wv(Ze));
                    for (xt.sort(Nu), Pt = 0; Pt < xt.length; Pt++)
                      Xl(xt[Pt], W), W = Lo(W, W.next);
                    return W;
                  }
                  function Nu(I, D) {
                    return I.x - D.x;
                  }
                  function Xl(I, D) {
                    if (D = bu(I, D), D) {
                      var W = Df(D, I);
                      Lo(D, D.next), Lo(W, W.next);
                    }
                  }
                  function bu(I, D) {
                    var W = D, ot = I.x, xt = I.y, Pt = -1 / 0, Ht;
                    do {
                      if (xt <= W.y && xt >= W.next.y && W.next.y !== W.y) {
                        var ve = W.x + (xt - W.y) * (W.next.x - W.x) / (W.next.y - W.y);
                        if (ve <= ot && ve > Pt) {
                          if (Pt = ve, ve === ot) {
                            if (xt === W.y)
                              return W;
                            if (xt === W.next.y)
                              return W.next;
                          }
                          Ht = W.x < W.next.x ? W : W.next;
                        }
                      }
                      W = W.next;
                    } while (W !== D);
                    if (!Ht)
                      return null;
                    if (ot === Pt)
                      return Ht;
                    var Fe = Ht, Ze = Ht.x, nr = Ht.y, wr = 1 / 0, Fr;
                    W = Ht;
                    do
                      ot >= W.x && W.x >= Ze && ot !== W.x && Nh(xt < nr ? ot : Pt, xt, Ze, nr, xt < nr ? Pt : ot, xt, W.x, W.y) && (Fr = Math.abs(xt - W.y) / (ot - W.x), wu(W, I) && (Fr < wr || Fr === wr && (W.x > Ht.x || W.x === Ht.x && of(Ht, W))) && (Ht = W, wr = Fr)), W = W.next;
                    while (W !== Fe);
                    return Ht;
                  }
                  function of(I, D) {
                    return gs(I.prev, I, D.prev) < 0 && gs(D.next, I, I.next) < 0;
                  }
                  function gd(I, D, W, ot) {
                    var xt = I;
                    do
                      xt.z === null && (xt.z = hc(xt.x, xt.y, D, W, ot)), xt.prevZ = xt.prev, xt.nextZ = xt.next, xt = xt.next;
                    while (xt !== I);
                    xt.prevZ.nextZ = null, xt.prevZ = null, yd(xt);
                  }
                  function yd(I) {
                    var D, W, ot, xt, Pt, Ht, ve, Fe, Ze = 1;
                    do {
                      for (W = I, I = null, Pt = null, Ht = 0; W; ) {
                        for (Ht++, ot = W, ve = 0, D = 0; D < Ze && (ve++, ot = ot.nextZ, !!ot); D++)
                          ;
                        for (Fe = Ze; ve > 0 || Fe > 0 && ot; )
                          ve !== 0 && (Fe === 0 || !ot || W.z <= ot.z) ? (xt = W, W = W.nextZ, ve--) : (xt = ot, ot = ot.nextZ, Fe--), Pt ? Pt.nextZ = xt : I = xt, xt.prevZ = Pt, Pt = xt;
                        W = ot;
                      }
                      Pt.nextZ = null, Ze *= 2;
                    } while (Ht > 1);
                    return I;
                  }
                  function hc(I, D, W, ot, xt) {
                    return I = 32767 * (I - W) * xt, D = 32767 * (D - ot) * xt, I = (I | I << 8) & 16711935, I = (I | I << 4) & 252645135, I = (I | I << 2) & 858993459, I = (I | I << 1) & 1431655765, D = (D | D << 8) & 16711935, D = (D | D << 4) & 252645135, D = (D | D << 2) & 858993459, D = (D | D << 1) & 1431655765, I | D << 1;
                  }
                  function Wv(I) {
                    var D = I, W = I;
                    do
                      (D.x < W.x || D.x === W.x && D.y < W.y) && (W = D), D = D.next;
                    while (D !== I);
                    return W;
                  }
                  function Nh(I, D, W, ot, xt, Pt, Ht, ve) {
                    return (xt - Ht) * (D - ve) - (I - Ht) * (Pt - ve) >= 0 && (I - Ht) * (ot - ve) - (W - Ht) * (D - ve) >= 0 && (W - Ht) * (Pt - ve) - (xt - Ht) * (ot - ve) >= 0;
                  }
                  function mv(I, D) {
                    return I.next.i !== D.i && I.prev.i !== D.i && !Yl(I, D) && (wu(I, D) && wu(D, I) && Uu(I, D) && (gs(I.prev, I, D.prev) || gs(I, D.prev, D)) || sf(I, D) && gs(I.prev, I, I.next) > 0 && gs(D.prev, D, D.next) > 0);
                  }
                  function gs(I, D, W) {
                    return (D.y - I.y) * (W.x - D.x) - (D.x - I.x) * (W.y - D.y);
                  }
                  function sf(I, D) {
                    return I.x === D.x && I.y === D.y;
                  }
                  function If(I, D, W, ot) {
                    var xt = Uh(gs(I, D, W)), Pt = Uh(gs(I, D, ot)), Ht = Uh(gs(W, ot, I)), ve = Uh(gs(W, ot, D));
                    return !!(xt !== Pt && Ht !== ve || xt === 0 && Rf(I, W, D) || Pt === 0 && Rf(I, ot, D) || Ht === 0 && Rf(W, I, ot) || ve === 0 && Rf(W, D, ot));
                  }
                  function Rf(I, D, W) {
                    return D.x <= Math.max(I.x, W.x) && D.x >= Math.min(I.x, W.x) && D.y <= Math.max(I.y, W.y) && D.y >= Math.min(I.y, W.y);
                  }
                  function Uh(I) {
                    return I > 0 ? 1 : I < 0 ? -1 : 0;
                  }
                  function Yl(I, D) {
                    var W = I;
                    do {
                      if (W.i !== I.i && W.next.i !== I.i && W.i !== D.i && W.next.i !== D.i && If(W, W.next, I, D))
                        return !0;
                      W = W.next;
                    } while (W !== I);
                    return !1;
                  }
                  function wu(I, D) {
                    return gs(I.prev, I, I.next) < 0 ? gs(I, D, I.next) >= 0 && gs(I, I.prev, D) >= 0 : gs(I, D, I.prev) < 0 || gs(I, I.next, D) < 0;
                  }
                  function Uu(I, D) {
                    var W = I, ot = !1, xt = (I.x + D.x) / 2, Pt = (I.y + D.y) / 2;
                    do
                      W.y > Pt != W.next.y > Pt && W.next.y !== W.y && xt < (W.next.x - W.x) * (Pt - W.y) / (W.next.y - W.y) + W.x && (ot = !ot), W = W.next;
                    while (W !== I);
                    return ot;
                  }
                  function Df(I, D) {
                    var W = new md(I.i, I.x, I.y), ot = new md(D.i, D.x, D.y), xt = I.next, Pt = D.prev;
                    return I.next = D, D.prev = I, W.next = xt, xt.prev = W, ot.next = W, W.prev = ot, Pt.next = ot, ot.prev = Pt, ot;
                  }
                  function Vd(I, D, W, ot) {
                    var xt = new md(I, D, W);
                    return ot ? (xt.next = ot.next, xt.prev = ot, ot.next.prev = xt, ot.next = xt) : (xt.prev = xt, xt.next = xt), xt;
                  }
                  function tl(I) {
                    I.next.prev = I.prev, I.prev.next = I.next, I.prevZ && (I.prevZ.nextZ = I.nextZ), I.nextZ && (I.nextZ.prevZ = I.prevZ);
                  }
                  function md(I, D, W) {
                    this.i = I, this.x = D, this.y = W, this.prev = null, this.next = null, this.z = null, this.prevZ = null, this.nextZ = null, this.steiner = !1;
                  }
                  Uo.deviation = function(I, D, W, ot) {
                    var xt = D && D.length, Pt = xt ? D[0] * W : I.length, Ht = Math.abs(Fp(I, 0, Pt, W));
                    if (xt)
                      for (var ve = 0, Fe = D.length; ve < Fe; ve++) {
                        var Ze = D[ve] * W, nr = ve < Fe - 1 ? D[ve + 1] * W : I.length;
                        Ht -= Math.abs(Fp(I, Ze, nr, W));
                      }
                    var wr = 0;
                    for (ve = 0; ve < ot.length; ve += 3) {
                      var Fr = ot[ve] * W, Rr = ot[ve + 1] * W, Kr = ot[ve + 2] * W;
                      wr += Math.abs((I[Fr] - I[Kr]) * (I[Rr + 1] - I[Fr + 1]) - (I[Fr] - I[Rr]) * (I[Kr + 1] - I[Fr + 1]));
                    }
                    return Ht === 0 && wr === 0 ? 0 : Math.abs((wr - Ht) / Ht);
                  };
                  function Fp(I, D, W, ot) {
                    for (var xt = 0, Pt = D, Ht = W - ot; Pt < W; Pt += ot)
                      xt += (I[Ht] - I[Pt]) * (I[Pt + 1] + I[Ht + 1]), Ht = Pt;
                    return xt;
                  }
                  Uo.flatten = function(I) {
                    for (var D = I[0][0].length, W = {
                      vertices: [],
                      holes: [],
                      dimensions: D
                    }, ot = 0, xt = 0; xt < I.length; xt++) {
                      for (var Pt = 0; Pt < I[xt].length; Pt++)
                        for (var Ht = 0; Ht < D; Ht++)
                          W.vertices.push(I[xt][Pt][Ht]);
                      xt > 0 && (ot += I[xt - 1].length, W.holes.push(ot));
                    }
                    return W;
                  }, ua.default = ca;
                  function wg(I, D, W, ot, xt) {
                    Op(I, D, W, ot || I.length - 1, xt || A0);
                  }
                  function Op(I, D, W, ot, xt) {
                    for (; ot > W; ) {
                      if (ot - W > 600) {
                        var Pt = ot - W + 1, Ht = D - W + 1, ve = Math.log(Pt), Fe = 0.5 * Math.exp(2 * ve / 3), Ze = 0.5 * Math.sqrt(ve * Fe * (Pt - Fe) / Pt) * (Ht - Pt / 2 < 0 ? -1 : 1), nr = Math.max(W, Math.floor(D - Ht * Fe / Pt + Ze)), wr = Math.min(ot, Math.floor(D + (Pt - Ht) * Fe / Pt + Ze));
                        Op(I, D, nr, wr, xt);
                      }
                      var Fr = I[D], Rr = W, Kr = ot;
                      for (xv(I, W, D), xt(I[ot], Fr) > 0 && xv(I, W, ot); Rr < Kr; ) {
                        for (xv(I, Rr, Kr), Rr++, Kr--; xt(I[Rr], Fr) < 0; )
                          Rr++;
                        for (; xt(I[Kr], Fr) > 0; )
                          Kr--;
                      }
                      xt(I[W], Fr) === 0 ? xv(I, W, Kr) : (Kr++, xv(I, Kr, ot)), Kr <= D && (W = Kr + 1), D <= Kr && (ot = Kr - 1);
                    }
                  }
                  function xv(I, D, W) {
                    var ot = I[D];
                    I[D] = I[W], I[W] = ot;
                  }
                  function A0(I, D) {
                    return I < D ? -1 : I > D ? 1 : 0;
                  }
                  function ph(I, D) {
                    var W = I.length;
                    if (W <= 1)
                      return [I];
                    for (var ot = [], xt, Pt, Ht = 0; Ht < W; Ht++) {
                      var ve = F(I[Ht]);
                      ve !== 0 && (I[Ht].area = Math.abs(ve), Pt === void 0 && (Pt = ve < 0), Pt === ve < 0 ? (xt && ot.push(xt), xt = [I[Ht]]) : xt.push(I[Ht]));
                    }
                    if (xt && ot.push(xt), D > 1)
                      for (var Fe = 0; Fe < ot.length; Fe++)
                        ot[Fe].length <= D || (wg(ot[Fe], D, 1, ot[Fe].length - 1, S0), ot[Fe] = ot[Fe].slice(0, D));
                    return ot;
                  }
                  function S0(I, D) {
                    return D.area - I.area;
                  }
                  function jv(I, D, W) {
                    for (var ot = W.patternDependencies, xt = !1, Pt = 0, Ht = D; Pt < Ht.length; Pt += 1) {
                      var ve = Ht[Pt], Fe = ve.paint.get(I + "-pattern");
                      Fe.isConstant() || (xt = !0);
                      var Ze = Fe.constantOr(null);
                      Ze && (xt = !0, ot[Ze.to] = !0, ot[Ze.from] = !0);
                    }
                    return xt;
                  }
                  function Hd(I, D, W, ot, xt) {
                    for (var Pt = xt.patternDependencies, Ht = 0, ve = D; Ht < ve.length; Ht += 1) {
                      var Fe = ve[Ht], Ze = Fe.paint.get(I + "-pattern"), nr = Ze.value;
                      if (nr.kind !== "constant") {
                        var wr = nr.evaluate({ zoom: ot - 1 }, W, {}, xt.availableImages), Fr = nr.evaluate({ zoom: ot }, W, {}, xt.availableImages), Rr = nr.evaluate({ zoom: ot + 1 }, W, {}, xt.availableImages);
                        wr = wr && wr.name ? wr.name : wr, Fr = Fr && Fr.name ? Fr.name : Fr, Rr = Rr && Rr.name ? Rr.name : Rr, Pt[wr] = !0, Pt[Fr] = !0, Pt[Rr] = !0, W.patterns[Fe.id] = {
                          min: wr,
                          mid: Fr,
                          max: Rr
                        };
                      }
                    }
                    return W;
                  }
                  var Zv = 500, dc = function(D) {
                    this.zoom = D.zoom, this.overscaling = D.overscaling, this.layers = D.layers, this.layerIds = this.layers.map(function(W) {
                      return W.id;
                    }), this.index = D.index, this.hasPattern = !1, this.patternFeatures = [], this.layoutVertexArray = new oh(), this.indexArray = new ol(), this.indexArray2 = new fh(), this.programConfigurations = new la(D.layers, D.zoom), this.segments = new Ps(), this.segments2 = new Ps(), this.stateDependentLayerIds = this.layers.filter(function(W) {
                      return W.isStateDependent();
                    }).map(function(W) {
                      return W.id;
                    });
                  };
                  dc.prototype.populate = function(D, W, ot) {
                    this.hasPattern = jv("fill", this.layers, W);
                    for (var xt = this.layers[0].layout.get("fill-sort-key"), Pt = [], Ht = 0, ve = D; Ht < ve.length; Ht += 1) {
                      var Fe = ve[Ht], Ze = Fe.feature, nr = Fe.id, wr = Fe.index, Fr = Fe.sourceLayerIndex, Rr = this.layers[0]._featureFilter.needGeometry, Kr = Zo(Ze, Rr);
                      if (this.layers[0]._featureFilter.filter(new ba(this.zoom), Kr, ot)) {
                        var yn = xt ? xt.evaluate(Kr, {}, ot, W.availableImages) : void 0, Qn = {
                          id: nr,
                          properties: Ze.properties,
                          type: Ze.type,
                          sourceLayerIndex: Fr,
                          index: wr,
                          geometry: Rr ? Kr.geometry : Mo(Ze),
                          patterns: {},
                          sortKey: yn
                        };
                        Pt.push(Qn);
                      }
                    }
                    xt && Pt.sort(function(fa, va) {
                      return fa.sortKey - va.sortKey;
                    });
                    for (var Bn = 0, vi = Pt; Bn < vi.length; Bn += 1) {
                      var ni = vi[Bn], pi = ni, wi = pi.geometry, Fi = pi.index, Zi = pi.sourceLayerIndex;
                      if (this.hasPattern) {
                        var Yi = Hd("fill", this.layers, ni, this.zoom, W);
                        this.patternFeatures.push(Yi);
                      } else
                        this.addFeature(ni, wi, Fi, ot, {});
                      var ma = D[Fi].feature;
                      W.featureIndex.insert(ma, wi, Fi, Zi, this.index);
                    }
                  }, dc.prototype.update = function(D, W, ot) {
                    this.stateDependentLayers.length && this.programConfigurations.updatePaintArrays(D, W, this.stateDependentLayers, ot);
                  }, dc.prototype.addFeatures = function(D, W, ot) {
                    for (var xt = 0, Pt = this.patternFeatures; xt < Pt.length; xt += 1) {
                      var Ht = Pt[xt];
                      this.addFeature(Ht, Ht.geometry, Ht.index, W, ot);
                    }
                  }, dc.prototype.isEmpty = function() {
                    return this.layoutVertexArray.length === 0;
                  }, dc.prototype.uploadPending = function() {
                    return !this.uploaded || this.programConfigurations.needsUpload;
                  }, dc.prototype.upload = function(D) {
                    this.uploaded || (this.layoutVertexBuffer = D.createVertexBuffer(this.layoutVertexArray, Wo), this.indexBuffer = D.createIndexBuffer(this.indexArray), this.indexBuffer2 = D.createIndexBuffer(this.indexArray2)), this.programConfigurations.upload(D), this.uploaded = !0;
                  }, dc.prototype.destroy = function() {
                    this.layoutVertexBuffer && (this.layoutVertexBuffer.destroy(), this.indexBuffer.destroy(), this.indexBuffer2.destroy(), this.programConfigurations.destroy(), this.segments.destroy(), this.segments2.destroy());
                  }, dc.prototype.addFeature = function(D, W, ot, xt, Pt) {
                    for (var Ht = 0, ve = ph(W, Zv); Ht < ve.length; Ht += 1) {
                      for (var Fe = ve[Ht], Ze = 0, nr = 0, wr = Fe; nr < wr.length; nr += 1) {
                        var Fr = wr[nr];
                        Ze += Fr.length;
                      }
                      for (var Rr = this.segments.prepareSegment(Ze, this.layoutVertexArray, this.indexArray), Kr = Rr.vertexLength, yn = [], Qn = [], Bn = 0, vi = Fe; Bn < vi.length; Bn += 1) {
                        var ni = vi[Bn];
                        if (ni.length !== 0) {
                          ni !== Fe[0] && Qn.push(yn.length / 2);
                          var pi = this.segments2.prepareSegment(ni.length, this.layoutVertexArray, this.indexArray2), wi = pi.vertexLength;
                          this.layoutVertexArray.emplaceBack(ni[0].x, ni[0].y), this.indexArray2.emplaceBack(wi + ni.length - 1, wi), yn.push(ni[0].x), yn.push(ni[0].y);
                          for (var Fi = 1; Fi < ni.length; Fi++)
                            this.layoutVertexArray.emplaceBack(ni[Fi].x, ni[Fi].y), this.indexArray2.emplaceBack(wi + Fi - 1, wi + Fi), yn.push(ni[Fi].x), yn.push(ni[Fi].y);
                          pi.vertexLength += ni.length, pi.primitiveLength += ni.length;
                        }
                      }
                      for (var Zi = ua(yn, Qn), Yi = 0; Yi < Zi.length; Yi += 3)
                        this.indexArray.emplaceBack(Kr + Zi[Yi], Kr + Zi[Yi + 1], Kr + Zi[Yi + 2]);
                      Rr.vertexLength += Ze, Rr.primitiveLength += Zi.length / 3;
                    }
                    this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length, D, ot, Pt, xt);
                  }, Kt("FillBucket", dc, {
                    omit: [
                      "layers",
                      "patternFeatures"
                    ]
                  });
                  var Gd = new So({ "fill-sort-key": new wa($r.layout_fill["fill-sort-key"]) }), kf = new So({
                    "fill-antialias": new ta($r.paint_fill["fill-antialias"]),
                    "fill-opacity": new wa($r.paint_fill["fill-opacity"]),
                    "fill-color": new wa($r.paint_fill["fill-color"]),
                    "fill-outline-color": new wa($r.paint_fill["fill-outline-color"]),
                    "fill-translate": new ta($r.paint_fill["fill-translate"]),
                    "fill-translate-anchor": new ta($r.paint_fill["fill-translate-anchor"]),
                    "fill-pattern": new il($r.paint_fill["fill-pattern"])
                  }), By = {
                    paint: kf,
                    layout: Gd
                  }, X1 = function(I) {
                    function D(W) {
                      I.call(this, W, By);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype.recalculate = function(ot, xt) {
                      I.prototype.recalculate.call(this, ot, xt);
                      var Pt = this.paint._values["fill-outline-color"];
                      Pt.value.kind === "constant" && Pt.value.value === void 0 && (this.paint._values["fill-outline-color"] = this.paint._values["fill-color"]);
                    }, D.prototype.createBucket = function(ot) {
                      return new dc(ot);
                    }, D.prototype.queryRadius = function() {
                      return Qo(this.paint.get("fill-translate"));
                    }, D.prototype.queryIntersectsFeature = function(ot, xt, Pt, Ht, ve, Fe, Ze) {
                      var nr = af(ot, this.paint.get("fill-translate"), this.paint.get("fill-translate-anchor"), Fe.angle, Ze);
                      return As(nr, Ht);
                    }, D.prototype.isTileClipped = function() {
                      return !0;
                    }, D;
                  }(Qi), Ny = Yo([
                    {
                      name: "a_pos",
                      components: 2,
                      type: "Int16"
                    },
                    {
                      name: "a_normal_ed",
                      components: 4,
                      type: "Int16"
                    }
                  ], 4), Y1 = Ny.members, Uy = Xv;
                  function Xv(I, D, W, ot, xt) {
                    this.properties = {}, this.extent = W, this.type = 0, this._pbf = I, this._geometry = -1, this._keys = ot, this._values = xt, I.readFields(K1, this, D);
                  }
                  function K1(I, D, W) {
                    I == 1 ? D.id = W.readVarint() : I == 2 ? J1(W, D) : I == 3 ? D.type = W.readVarint() : I == 4 && (D._geometry = W.pos);
                  }
                  function J1(I, D) {
                    for (var W = I.readVarint() + I.pos; I.pos < W; ) {
                      var ot = D._keys[I.readVarint()], xt = D._values[I.readVarint()];
                      D.properties[ot] = xt;
                    }
                  }
                  Xv.types = [
                    "Unknown",
                    "Point",
                    "LineString",
                    "Polygon"
                  ], Xv.prototype.loadGeometry = function() {
                    var I = this._pbf;
                    I.pos = this._geometry;
                    for (var D = I.readVarint() + I.pos, W = 1, ot = 0, xt = 0, Pt = 0, Ht = [], ve; I.pos < D; ) {
                      if (ot <= 0) {
                        var Fe = I.readVarint();
                        W = Fe & 7, ot = Fe >> 3;
                      }
                      if (ot--, W === 1 || W === 2)
                        xt += I.readSVarint(), Pt += I.readSVarint(), W === 1 && (ve && Ht.push(ve), ve = []), ve.push(new u(xt, Pt));
                      else if (W === 7)
                        ve && ve.push(ve[0].clone());
                      else
                        throw new Error("unknown command " + W);
                    }
                    return ve && Ht.push(ve), Ht;
                  }, Xv.prototype.bbox = function() {
                    var I = this._pbf;
                    I.pos = this._geometry;
                    for (var D = I.readVarint() + I.pos, W = 1, ot = 0, xt = 0, Pt = 0, Ht = 1 / 0, ve = -1 / 0, Fe = 1 / 0, Ze = -1 / 0; I.pos < D; ) {
                      if (ot <= 0) {
                        var nr = I.readVarint();
                        W = nr & 7, ot = nr >> 3;
                      }
                      if (ot--, W === 1 || W === 2)
                        xt += I.readSVarint(), Pt += I.readSVarint(), xt < Ht && (Ht = xt), xt > ve && (ve = xt), Pt < Fe && (Fe = Pt), Pt > Ze && (Ze = Pt);
                      else if (W !== 7)
                        throw new Error("unknown command " + W);
                    }
                    return [
                      Ht,
                      Fe,
                      ve,
                      Ze
                    ];
                  }, Xv.prototype.toGeoJSON = function(I, D, W) {
                    var ot = this.extent * Math.pow(2, W), xt = this.extent * I, Pt = this.extent * D, Ht = this.loadGeometry(), ve = Xv.types[this.type], Fe, Ze;
                    function nr(Rr) {
                      for (var Kr = 0; Kr < Rr.length; Kr++) {
                        var yn = Rr[Kr], Qn = 180 - (yn.y + Pt) * 360 / ot;
                        Rr[Kr] = [
                          (yn.x + xt) * 360 / ot - 180,
                          360 / Math.PI * Math.atan(Math.exp(Qn * Math.PI / 180)) - 90
                        ];
                      }
                    }
                    switch (this.type) {
                      case 1:
                        var wr = [];
                        for (Fe = 0; Fe < Ht.length; Fe++)
                          wr[Fe] = Ht[Fe][0];
                        Ht = wr, nr(Ht);
                        break;
                      case 2:
                        for (Fe = 0; Fe < Ht.length; Fe++)
                          nr(Ht[Fe]);
                        break;
                      case 3:
                        for (Ht = bw(Ht), Fe = 0; Fe < Ht.length; Fe++)
                          for (Ze = 0; Ze < Ht[Fe].length; Ze++)
                            nr(Ht[Fe][Ze]);
                        break;
                    }
                    Ht.length === 1 ? Ht = Ht[0] : ve = "Multi" + ve;
                    var Fr = {
                      type: "Feature",
                      geometry: {
                        type: ve,
                        coordinates: Ht
                      },
                      properties: this.properties
                    };
                    return "id" in this && (Fr.id = this.id), Fr;
                  };
                  function bw(I) {
                    var D = I.length;
                    if (D <= 1)
                      return [I];
                    for (var W = [], ot, xt, Pt = 0; Pt < D; Pt++) {
                      var Ht = ww(I[Pt]);
                      Ht !== 0 && (xt === void 0 && (xt = Ht < 0), xt === Ht < 0 ? (ot && W.push(ot), ot = [I[Pt]]) : ot.push(I[Pt]));
                    }
                    return ot && W.push(ot), W;
                  }
                  function ww(I) {
                    for (var D = 0, W = 0, ot = I.length, xt = ot - 1, Pt, Ht; W < ot; xt = W++)
                      Pt = I[W], Ht = I[xt], D += (Ht.x - Pt.x) * (Pt.y + Ht.y);
                    return D;
                  }
                  var _g = Tg;
                  function Tg(I, D) {
                    this.version = 1, this.name = null, this.extent = 4096, this.length = 0, this._pbf = I, this._keys = [], this._values = [], this._features = [], I.readFields(bv, this, D), this.length = this._features.length;
                  }
                  function bv(I, D, W) {
                    I === 15 ? D.version = W.readVarint() : I === 1 ? D.name = W.readString() : I === 5 ? D.extent = W.readVarint() : I === 2 ? D._features.push(W.pos) : I === 3 ? D._keys.push(W.readString()) : I === 4 && D._values.push(Bp(W));
                  }
                  function Bp(I) {
                    for (var D = null, W = I.readVarint() + I.pos; I.pos < W; ) {
                      var ot = I.readVarint() >> 3;
                      D = ot === 1 ? I.readString() : ot === 2 ? I.readFloat() : ot === 3 ? I.readDouble() : ot === 4 ? I.readVarint64() : ot === 5 ? I.readVarint() : ot === 6 ? I.readSVarint() : ot === 7 ? I.readBoolean() : null;
                    }
                    return D;
                  }
                  Tg.prototype.feature = function(I) {
                    if (I < 0 || I >= this._features.length)
                      throw new Error("feature index out of bounds");
                    this._pbf.pos = this._features[I];
                    var D = this._pbf.readVarint() + this._pbf.pos;
                    return new Uy(this._pbf, D, this.extent, this._keys, this._values);
                  };
                  var Q1 = $1;
                  function $1(I, D) {
                    this.layers = I.readFields(q1, {}, D);
                  }
                  function q1(I, D, W) {
                    if (I === 3) {
                      var ot = new _g(W, W.readVarint() + W.pos);
                      ot.length && (D[ot.name] = ot);
                    }
                  }
                  var tx = Q1, ex = Uy, rx = _g, Yv = {
                    VectorTile: tx,
                    VectorTileFeature: ex,
                    VectorTileLayer: rx
                  }, nx = Yv.VectorTileFeature.types, ix = 500, Ag = Math.pow(2, 13);
                  function Np(I, D, W, ot, xt, Pt, Ht, ve) {
                    I.emplaceBack(D, W, Math.floor(ot * Ag) * 2 + Ht, xt * Ag * 2, Pt * Ag * 2, Math.round(ve));
                  }
                  var zf = function(D) {
                    this.zoom = D.zoom, this.overscaling = D.overscaling, this.layers = D.layers, this.layerIds = this.layers.map(function(W) {
                      return W.id;
                    }), this.index = D.index, this.hasPattern = !1, this.layoutVertexArray = new Lf(), this.indexArray = new ol(), this.programConfigurations = new la(D.layers, D.zoom), this.segments = new Ps(), this.stateDependentLayerIds = this.layers.filter(function(W) {
                      return W.isStateDependent();
                    }).map(function(W) {
                      return W.id;
                    });
                  };
                  zf.prototype.populate = function(D, W, ot) {
                    this.features = [], this.hasPattern = jv("fill-extrusion", this.layers, W);
                    for (var xt = 0, Pt = D; xt < Pt.length; xt += 1) {
                      var Ht = Pt[xt], ve = Ht.feature, Fe = Ht.id, Ze = Ht.index, nr = Ht.sourceLayerIndex, wr = this.layers[0]._featureFilter.needGeometry, Fr = Zo(ve, wr);
                      if (this.layers[0]._featureFilter.filter(new ba(this.zoom), Fr, ot)) {
                        var Rr = {
                          id: Fe,
                          sourceLayerIndex: nr,
                          index: Ze,
                          geometry: wr ? Fr.geometry : Mo(ve),
                          properties: ve.properties,
                          type: ve.type,
                          patterns: {}
                        };
                        this.hasPattern ? this.features.push(Hd("fill-extrusion", this.layers, Rr, this.zoom, W)) : this.addFeature(Rr, Rr.geometry, Ze, ot, {}), W.featureIndex.insert(ve, Rr.geometry, Ze, nr, this.index, !0);
                      }
                    }
                  }, zf.prototype.addFeatures = function(D, W, ot) {
                    for (var xt = 0, Pt = this.features; xt < Pt.length; xt += 1) {
                      var Ht = Pt[xt], ve = Ht.geometry;
                      this.addFeature(Ht, ve, Ht.index, W, ot);
                    }
                  }, zf.prototype.update = function(D, W, ot) {
                    this.stateDependentLayers.length && this.programConfigurations.updatePaintArrays(D, W, this.stateDependentLayers, ot);
                  }, zf.prototype.isEmpty = function() {
                    return this.layoutVertexArray.length === 0;
                  }, zf.prototype.uploadPending = function() {
                    return !this.uploaded || this.programConfigurations.needsUpload;
                  }, zf.prototype.upload = function(D) {
                    this.uploaded || (this.layoutVertexBuffer = D.createVertexBuffer(this.layoutVertexArray, Y1), this.indexBuffer = D.createIndexBuffer(this.indexArray)), this.programConfigurations.upload(D), this.uploaded = !0;
                  }, zf.prototype.destroy = function() {
                    this.layoutVertexBuffer && (this.layoutVertexBuffer.destroy(), this.indexBuffer.destroy(), this.programConfigurations.destroy(), this.segments.destroy());
                  }, zf.prototype.addFeature = function(D, W, ot, xt, Pt) {
                    for (var Ht = 0, ve = ph(W, ix); Ht < ve.length; Ht += 1) {
                      for (var Fe = ve[Ht], Ze = 0, nr = 0, wr = Fe; nr < wr.length; nr += 1) {
                        var Fr = wr[nr];
                        Ze += Fr.length;
                      }
                      for (var Rr = this.segments.prepareSegment(4, this.layoutVertexArray, this.indexArray), Kr = 0, yn = Fe; Kr < yn.length; Kr += 1) {
                        var Qn = yn[Kr];
                        if (Qn.length !== 0 && !Kv(Qn))
                          for (var Bn = 0, vi = 0; vi < Qn.length; vi++) {
                            var ni = Qn[vi];
                            if (vi >= 1) {
                              var pi = Qn[vi - 1];
                              if (!ax(ni, pi)) {
                                Rr.vertexLength + 4 > Ps.MAX_VERTEX_ARRAY_LENGTH && (Rr = this.segments.prepareSegment(4, this.layoutVertexArray, this.indexArray));
                                var wi = ni.sub(pi)._perp()._unit(), Fi = pi.dist(ni);
                                Bn + Fi > 32768 && (Bn = 0), Np(this.layoutVertexArray, ni.x, ni.y, wi.x, wi.y, 0, 0, Bn), Np(this.layoutVertexArray, ni.x, ni.y, wi.x, wi.y, 0, 1, Bn), Bn += Fi, Np(this.layoutVertexArray, pi.x, pi.y, wi.x, wi.y, 0, 0, Bn), Np(this.layoutVertexArray, pi.x, pi.y, wi.x, wi.y, 0, 1, Bn);
                                var Zi = Rr.vertexLength;
                                this.indexArray.emplaceBack(Zi, Zi + 2, Zi + 1), this.indexArray.emplaceBack(Zi + 1, Zi + 2, Zi + 3), Rr.vertexLength += 4, Rr.primitiveLength += 2;
                              }
                            }
                          }
                      }
                      if (Rr.vertexLength + Ze > Ps.MAX_VERTEX_ARRAY_LENGTH && (Rr = this.segments.prepareSegment(Ze, this.layoutVertexArray, this.indexArray)), nx[D.type] === "Polygon") {
                        for (var Yi = [], ma = [], fa = Rr.vertexLength, va = 0, Za = Fe; va < Za.length; va += 1) {
                          var Ta = Za[va];
                          if (Ta.length !== 0) {
                            Ta !== Fe[0] && ma.push(Yi.length / 2);
                            for (var Aa = 0; Aa < Ta.length; Aa++) {
                              var fo = Ta[Aa];
                              Np(this.layoutVertexArray, fo.x, fo.y, 0, 0, 1, 1, 0), Yi.push(fo.x), Yi.push(fo.y);
                            }
                          }
                        }
                        for (var Ka = ua(Yi, ma), zo = 0; zo < Ka.length; zo += 3)
                          this.indexArray.emplaceBack(fa + Ka[zo], fa + Ka[zo + 2], fa + Ka[zo + 1]);
                        Rr.primitiveLength += Ka.length / 3, Rr.vertexLength += Ze;
                      }
                    }
                    this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length, D, ot, Pt, xt);
                  }, Kt("FillExtrusionBucket", zf, {
                    omit: [
                      "layers",
                      "features"
                    ]
                  });
                  function ax(I, D) {
                    return I.x === D.x && (I.x < 0 || I.x > _a) || I.y === D.y && (I.y < 0 || I.y > _a);
                  }
                  function Kv(I) {
                    return I.every(function(D) {
                      return D.x < 0;
                    }) || I.every(function(D) {
                      return D.x > _a;
                    }) || I.every(function(D) {
                      return D.y < 0;
                    }) || I.every(function(D) {
                      return D.y > _a;
                    });
                  }
                  var ox = new So({
                    "fill-extrusion-opacity": new ta($r["paint_fill-extrusion"]["fill-extrusion-opacity"]),
                    "fill-extrusion-color": new wa($r["paint_fill-extrusion"]["fill-extrusion-color"]),
                    "fill-extrusion-translate": new ta($r["paint_fill-extrusion"]["fill-extrusion-translate"]),
                    "fill-extrusion-translate-anchor": new ta($r["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),
                    "fill-extrusion-pattern": new il($r["paint_fill-extrusion"]["fill-extrusion-pattern"]),
                    "fill-extrusion-height": new wa($r["paint_fill-extrusion"]["fill-extrusion-height"]),
                    "fill-extrusion-base": new wa($r["paint_fill-extrusion"]["fill-extrusion-base"]),
                    "fill-extrusion-vertical-gradient": new ta($r["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])
                  }), ll = { paint: ox }, M0 = function(I) {
                    function D(W) {
                      I.call(this, W, ll);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype.createBucket = function(ot) {
                      return new zf(ot);
                    }, D.prototype.queryRadius = function() {
                      return Qo(this.paint.get("fill-extrusion-translate"));
                    }, D.prototype.is3D = function() {
                      return !0;
                    }, D.prototype.queryIntersectsFeature = function(ot, xt, Pt, Ht, ve, Fe, Ze, nr) {
                      var wr = af(ot, this.paint.get("fill-extrusion-translate"), this.paint.get("fill-extrusion-translate-anchor"), Fe.angle, Ze), Fr = this.paint.get("fill-extrusion-height").evaluate(xt, Pt), Rr = this.paint.get("fill-extrusion-base").evaluate(xt, Pt), Kr = Vp(wr, nr, Fe, 0), yn = sx(Ht, Rr, Fr, nr), Qn = yn[0], Bn = yn[1];
                      return E0(Qn, Bn, Kr);
                    }, D;
                  }(Qi);
                  function Jv(I, D) {
                    return I.x * D.x + I.y * D.y;
                  }
                  function Up(I, D) {
                    if (I.length === 1) {
                      for (var W = 0, ot = D[W++], xt; !xt || ot.equals(xt); )
                        if (xt = D[W++], !xt)
                          return 1 / 0;
                      for (; W < D.length; W++) {
                        var Pt = D[W], Ht = I[0], ve = xt.sub(ot), Fe = Pt.sub(ot), Ze = Ht.sub(ot), nr = Jv(ve, ve), wr = Jv(ve, Fe), Fr = Jv(Fe, Fe), Rr = Jv(Ze, ve), Kr = Jv(Ze, Fe), yn = nr * Fr - wr * wr, Qn = (Fr * Rr - wr * Kr) / yn, Bn = (nr * Kr - wr * Rr) / yn, vi = 1 - Qn - Bn, ni = ot.z * vi + xt.z * Qn + Pt.z * Bn;
                        if (isFinite(ni))
                          return ni;
                      }
                      return 1 / 0;
                    } else {
                      for (var pi = 1 / 0, wi = 0, Fi = D; wi < Fi.length; wi += 1) {
                        var Zi = Fi[wi];
                        pi = Math.min(pi, Zi.z);
                      }
                      return pi;
                    }
                  }
                  function E0(I, D, W) {
                    var ot = 1 / 0;
                    As(W, D) && (ot = Up(W, D[0]));
                    for (var xt = 0; xt < D.length; xt++)
                      for (var Pt = D[xt], Ht = I[xt], ve = 0; ve < Pt.length - 1; ve++) {
                        var Fe = Pt[ve], Ze = Pt[ve + 1], nr = Ht[ve], wr = Ht[ve + 1], Fr = [
                          Fe,
                          Ze,
                          wr,
                          nr,
                          Fe
                        ];
                        to(W, Fr) && (ot = Math.min(ot, Up(W, Fr)));
                      }
                    return ot === 1 / 0 ? !1 : ot;
                  }
                  function sx(I, D, W, ot) {
                    for (var xt = [], Pt = [], Ht = ot[8] * D, ve = ot[9] * D, Fe = ot[10] * D, Ze = ot[11] * D, nr = ot[8] * W, wr = ot[9] * W, Fr = ot[10] * W, Rr = ot[11] * W, Kr = 0, yn = I; Kr < yn.length; Kr += 1) {
                      for (var Qn = yn[Kr], Bn = [], vi = [], ni = 0, pi = Qn; ni < pi.length; ni += 1) {
                        var wi = pi[ni], Fi = wi.x, Zi = wi.y, Yi = ot[0] * Fi + ot[4] * Zi + ot[12], ma = ot[1] * Fi + ot[5] * Zi + ot[13], fa = ot[2] * Fi + ot[6] * Zi + ot[14], va = ot[3] * Fi + ot[7] * Zi + ot[15], Za = Yi + Ht, Ta = ma + ve, Aa = fa + Fe, fo = va + Ze, Ka = Yi + nr, zo = ma + wr, Vo = fa + Fr, Fo = va + Rr, Oo = new u(Za / fo, Ta / fo);
                        Oo.z = Aa / fo, Bn.push(Oo);
                        var mo = new u(Ka / Fo, zo / Fo);
                        mo.z = Vo / Fo, vi.push(mo);
                      }
                      xt.push(Bn), Pt.push(vi);
                    }
                    return [
                      xt,
                      Pt
                    ];
                  }
                  function Vp(I, D, W, ot) {
                    for (var xt = [], Pt = 0, Ht = I; Pt < Ht.length; Pt += 1) {
                      var ve = Ht[Pt], Fe = [
                        ve.x,
                        ve.y,
                        ot,
                        1
                      ];
                      br(Fe, Fe, D), xt.push(new u(Fe[0] / Fe[3], Fe[1] / Fe[3]));
                    }
                    return xt;
                  }
                  var lx = Yo([
                    {
                      name: "a_pos_normal",
                      components: 2,
                      type: "Int16"
                    },
                    {
                      name: "a_data",
                      components: 4,
                      type: "Uint8"
                    }
                  ], 4), Vy = lx.members, Hy = Yo([
                    {
                      name: "a_uv_x",
                      components: 1,
                      type: "Float32"
                    },
                    {
                      name: "a_split_index",
                      components: 1,
                      type: "Float32"
                    }
                  ]), Hp = Hy.members, Sg = Yv.VectorTileFeature.types, Gy = 63, Mg = Math.cos(75 / 2 * (Math.PI / 180)), Eg = 15, ux = 20, Cg = 15, Lg = 1 / 2, Wy = Math.pow(2, Cg - 1) / Lg, _u = function(D) {
                    var W = this;
                    this.zoom = D.zoom, this.overscaling = D.overscaling, this.layers = D.layers, this.layerIds = this.layers.map(function(ot) {
                      return ot.id;
                    }), this.index = D.index, this.hasPattern = !1, this.patternFeatures = [], this.lineClipsArray = [], this.gradients = {}, this.layers.forEach(function(ot) {
                      W.gradients[ot.id] = {};
                    }), this.layoutVertexArray = new sh(), this.layoutVertexArray2 = new fd(), this.indexArray = new ol(), this.programConfigurations = new la(D.layers, D.zoom), this.segments = new Ps(), this.maxLineLength = 0, this.stateDependentLayerIds = this.layers.filter(function(ot) {
                      return ot.isStateDependent();
                    }).map(function(ot) {
                      return ot.id;
                    });
                  };
                  _u.prototype.populate = function(D, W, ot) {
                    this.hasPattern = jv("line", this.layers, W);
                    for (var xt = this.layers[0].layout.get("line-sort-key"), Pt = [], Ht = 0, ve = D; Ht < ve.length; Ht += 1) {
                      var Fe = ve[Ht], Ze = Fe.feature, nr = Fe.id, wr = Fe.index, Fr = Fe.sourceLayerIndex, Rr = this.layers[0]._featureFilter.needGeometry, Kr = Zo(Ze, Rr);
                      if (this.layers[0]._featureFilter.filter(new ba(this.zoom), Kr, ot)) {
                        var yn = xt ? xt.evaluate(Kr, {}, ot) : void 0, Qn = {
                          id: nr,
                          properties: Ze.properties,
                          type: Ze.type,
                          sourceLayerIndex: Fr,
                          index: wr,
                          geometry: Rr ? Kr.geometry : Mo(Ze),
                          patterns: {},
                          sortKey: yn
                        };
                        Pt.push(Qn);
                      }
                    }
                    xt && Pt.sort(function(fa, va) {
                      return fa.sortKey - va.sortKey;
                    });
                    for (var Bn = 0, vi = Pt; Bn < vi.length; Bn += 1) {
                      var ni = vi[Bn], pi = ni, wi = pi.geometry, Fi = pi.index, Zi = pi.sourceLayerIndex;
                      if (this.hasPattern) {
                        var Yi = Hd("line", this.layers, ni, this.zoom, W);
                        this.patternFeatures.push(Yi);
                      } else
                        this.addFeature(ni, wi, Fi, ot, {});
                      var ma = D[Fi].feature;
                      W.featureIndex.insert(ma, wi, Fi, Zi, this.index);
                    }
                  }, _u.prototype.update = function(D, W, ot) {
                    this.stateDependentLayers.length && this.programConfigurations.updatePaintArrays(D, W, this.stateDependentLayers, ot);
                  }, _u.prototype.addFeatures = function(D, W, ot) {
                    for (var xt = 0, Pt = this.patternFeatures; xt < Pt.length; xt += 1) {
                      var Ht = Pt[xt];
                      this.addFeature(Ht, Ht.geometry, Ht.index, W, ot);
                    }
                  }, _u.prototype.isEmpty = function() {
                    return this.layoutVertexArray.length === 0;
                  }, _u.prototype.uploadPending = function() {
                    return !this.uploaded || this.programConfigurations.needsUpload;
                  }, _u.prototype.upload = function(D) {
                    this.uploaded || (this.layoutVertexArray2.length !== 0 && (this.layoutVertexBuffer2 = D.createVertexBuffer(this.layoutVertexArray2, Hp)), this.layoutVertexBuffer = D.createVertexBuffer(this.layoutVertexArray, Vy), this.indexBuffer = D.createIndexBuffer(this.indexArray)), this.programConfigurations.upload(D), this.uploaded = !0;
                  }, _u.prototype.destroy = function() {
                    this.layoutVertexBuffer && (this.layoutVertexBuffer.destroy(), this.indexBuffer.destroy(), this.programConfigurations.destroy(), this.segments.destroy());
                  }, _u.prototype.lineFeatureClips = function(D) {
                    if (D.properties && D.properties.hasOwnProperty("mapbox_clip_start") && D.properties.hasOwnProperty("mapbox_clip_end")) {
                      var W = +D.properties.mapbox_clip_start, ot = +D.properties.mapbox_clip_end;
                      return {
                        start: W,
                        end: ot
                      };
                    }
                  }, _u.prototype.addFeature = function(D, W, ot, xt, Pt) {
                    var Ht = this.layers[0].layout, ve = Ht.get("line-join").evaluate(D, {}), Fe = Ht.get("line-cap"), Ze = Ht.get("line-miter-limit"), nr = Ht.get("line-round-limit");
                    this.lineClips = this.lineFeatureClips(D);
                    for (var wr = 0, Fr = W; wr < Fr.length; wr += 1) {
                      var Rr = Fr[wr];
                      this.addLine(Rr, D, ve, Fe, Ze, nr);
                    }
                    this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length, D, ot, Pt, xt);
                  }, _u.prototype.addLine = function(D, W, ot, xt, Pt, Ht) {
                    if (this.distance = 0, this.scaledDistance = 0, this.totalDistance = 0, this.lineClips) {
                      this.lineClipsArray.push(this.lineClips);
                      for (var ve = 0; ve < D.length - 1; ve++)
                        this.totalDistance += D[ve].dist(D[ve + 1]);
                      this.updateScaledDistance(), this.maxLineLength = Math.max(this.maxLineLength, this.totalDistance);
                    }
                    for (var Fe = Sg[W.type] === "Polygon", Ze = D.length; Ze >= 2 && D[Ze - 1].equals(D[Ze - 2]); )
                      Ze--;
                    for (var nr = 0; nr < Ze - 1 && D[nr].equals(D[nr + 1]); )
                      nr++;
                    if (!(Ze < (Fe ? 3 : 2))) {
                      ot === "bevel" && (Pt = 1.05);
                      var wr = this.overscaling <= 16 ? Eg * _a / (512 * this.overscaling) : 0, Fr = this.segments.prepareSegment(Ze * 10, this.layoutVertexArray, this.indexArray), Rr, Kr = void 0, yn = void 0, Qn = void 0, Bn = void 0;
                      this.e1 = this.e2 = -1, Fe && (Rr = D[Ze - 2], Bn = D[nr].sub(Rr)._unit()._perp());
                      for (var vi = nr; vi < Ze; vi++)
                        if (yn = vi === Ze - 1 ? Fe ? D[nr + 1] : void 0 : D[vi + 1], !(yn && D[vi].equals(yn))) {
                          Bn && (Qn = Bn), Rr && (Kr = Rr), Rr = D[vi], Bn = yn ? yn.sub(Rr)._unit()._perp() : Qn, Qn = Qn || Bn;
                          var ni = Qn.add(Bn);
                          (ni.x !== 0 || ni.y !== 0) && ni._unit();
                          var pi = Qn.x * Bn.x + Qn.y * Bn.y, wi = ni.x * Bn.x + ni.y * Bn.y, Fi = wi !== 0 ? 1 / wi : 1 / 0, Zi = 2 * Math.sqrt(2 - 2 * wi), Yi = wi < Mg && Kr && yn, ma = Qn.x * Bn.y - Qn.y * Bn.x > 0;
                          if (Yi && vi > nr) {
                            var fa = Rr.dist(Kr);
                            if (fa > 2 * wr) {
                              var va = Rr.sub(Rr.sub(Kr)._mult(wr / fa)._round());
                              this.updateDistance(Kr, va), this.addCurrentVertex(va, Qn, 0, 0, Fr), Kr = va;
                            }
                          }
                          var Za = Kr && yn, Ta = Za ? ot : Fe ? "butt" : xt;
                          if (Za && Ta === "round" && (Fi < Ht ? Ta = "miter" : Fi <= 2 && (Ta = "fakeround")), Ta === "miter" && Fi > Pt && (Ta = "bevel"), Ta === "bevel" && (Fi > 2 && (Ta = "flipbevel"), Fi < Pt && (Ta = "miter")), Kr && this.updateDistance(Kr, Rr), Ta === "miter")
                            ni._mult(Fi), this.addCurrentVertex(Rr, ni, 0, 0, Fr);
                          else if (Ta === "flipbevel") {
                            if (Fi > 100)
                              ni = Bn.mult(-1);
                            else {
                              var Aa = Fi * Qn.add(Bn).mag() / Qn.sub(Bn).mag();
                              ni._perp()._mult(Aa * (ma ? -1 : 1));
                            }
                            this.addCurrentVertex(Rr, ni, 0, 0, Fr), this.addCurrentVertex(Rr, ni.mult(-1), 0, 0, Fr);
                          } else if (Ta === "bevel" || Ta === "fakeround") {
                            var fo = -Math.sqrt(Fi * Fi - 1), Ka = ma ? fo : 0, zo = ma ? 0 : fo;
                            if (Kr && this.addCurrentVertex(Rr, Qn, Ka, zo, Fr), Ta === "fakeround")
                              for (var Vo = Math.round(Zi * 180 / Math.PI / ux), Fo = 1; Fo < Vo; Fo++) {
                                var Oo = Fo / Vo;
                                if (Oo !== 0.5) {
                                  var mo = Oo - 0.5, rs = 1.0904 + pi * (-3.2452 + pi * (3.55645 - pi * 1.43519)), os = 0.848013 + pi * (-1.06021 + pi * 0.215638);
                                  Oo = Oo + Oo * mo * (Oo - 1) * (rs * mo * mo + os);
                                }
                                var Ds = Bn.sub(Qn)._mult(Oo)._add(Qn)._unit()._mult(ma ? -1 : 1);
                                this.addHalfVertex(Rr, Ds.x, Ds.y, !1, ma, 0, Fr);
                              }
                            yn && this.addCurrentVertex(Rr, Bn, -Ka, -zo, Fr);
                          } else if (Ta === "butt")
                            this.addCurrentVertex(Rr, ni, 0, 0, Fr);
                          else if (Ta === "square") {
                            var Xs = Kr ? 1 : -1;
                            this.addCurrentVertex(Rr, ni, Xs, Xs, Fr);
                          } else Ta === "round" && (Kr && (this.addCurrentVertex(Rr, Qn, 0, 0, Fr), this.addCurrentVertex(Rr, Qn, 1, 1, Fr, !0)), yn && (this.addCurrentVertex(Rr, Bn, -1, -1, Fr, !0), this.addCurrentVertex(Rr, Bn, 0, 0, Fr)));
                          if (Yi && vi < Ze - 1) {
                            var fl = Rr.dist(yn);
                            if (fl > 2 * wr) {
                              var hl = Rr.add(yn.sub(Rr)._mult(wr / fl)._round());
                              this.updateDistance(Rr, hl), this.addCurrentVertex(hl, Bn, 0, 0, Fr), Rr = hl;
                            }
                          }
                        }
                    }
                  }, _u.prototype.addCurrentVertex = function(D, W, ot, xt, Pt, Ht) {
                    Ht === void 0 && (Ht = !1);
                    var ve = W.x + W.y * ot, Fe = W.y - W.x * ot, Ze = -W.x + W.y * xt, nr = -W.y - W.x * xt;
                    this.addHalfVertex(D, ve, Fe, Ht, !1, ot, Pt), this.addHalfVertex(D, Ze, nr, Ht, !0, -xt, Pt), this.distance > Wy / 2 && this.totalDistance === 0 && (this.distance = 0, this.addCurrentVertex(D, W, ot, xt, Pt, Ht));
                  }, _u.prototype.addHalfVertex = function(D, W, ot, xt, Pt, Ht, ve) {
                    var Fe = D.x, Ze = D.y, nr = this.lineClips ? this.scaledDistance * (Wy - 1) : this.scaledDistance, wr = nr * Lg;
                    if (this.layoutVertexArray.emplaceBack((Fe << 1) + (xt ? 1 : 0), (Ze << 1) + (Pt ? 1 : 0), Math.round(Gy * W) + 128, Math.round(Gy * ot) + 128, (Ht === 0 ? 0 : Ht < 0 ? -1 : 1) + 1 | (wr & 63) << 2, wr >> 6), this.lineClips) {
                      var Fr = this.scaledDistance - this.lineClips.start, Rr = this.lineClips.end - this.lineClips.start, Kr = Fr / Rr;
                      this.layoutVertexArray2.emplaceBack(Kr, this.lineClipsArray.length);
                    }
                    var yn = ve.vertexLength++;
                    this.e1 >= 0 && this.e2 >= 0 && (this.indexArray.emplaceBack(this.e1, this.e2, yn), ve.primitiveLength++), Pt ? this.e2 = yn : this.e1 = yn;
                  }, _u.prototype.updateScaledDistance = function() {
                    this.scaledDistance = this.lineClips ? this.lineClips.start + (this.lineClips.end - this.lineClips.start) * this.distance / this.totalDistance : this.distance;
                  }, _u.prototype.updateDistance = function(D, W) {
                    this.distance += D.dist(W), this.updateScaledDistance();
                  }, Kt("LineBucket", _u, {
                    omit: [
                      "layers",
                      "patternFeatures"
                    ]
                  });
                  var cx = new So({
                    "line-cap": new ta($r.layout_line["line-cap"]),
                    "line-join": new wa($r.layout_line["line-join"]),
                    "line-miter-limit": new ta($r.layout_line["line-miter-limit"]),
                    "line-round-limit": new ta($r.layout_line["line-round-limit"]),
                    "line-sort-key": new wa($r.layout_line["line-sort-key"])
                  }), fx = new So({
                    "line-opacity": new wa($r.paint_line["line-opacity"]),
                    "line-color": new wa($r.paint_line["line-color"]),
                    "line-translate": new ta($r.paint_line["line-translate"]),
                    "line-translate-anchor": new ta($r.paint_line["line-translate-anchor"]),
                    "line-width": new wa($r.paint_line["line-width"]),
                    "line-gap-width": new wa($r.paint_line["line-gap-width"]),
                    "line-offset": new wa($r.paint_line["line-offset"]),
                    "line-blur": new wa($r.paint_line["line-blur"]),
                    "line-dasharray": new al($r.paint_line["line-dasharray"]),
                    "line-pattern": new il($r.paint_line["line-pattern"]),
                    "line-gradient": new as($r.paint_line["line-gradient"])
                  }), jy = {
                    paint: fx,
                    layout: cx
                  }, hx = function(I) {
                    function D() {
                      I.apply(this, arguments);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype.possiblyEvaluate = function(ot, xt) {
                      return xt = new ba(Math.floor(xt.zoom), {
                        now: xt.now,
                        fadeDuration: xt.fadeDuration,
                        zoomHistory: xt.zoomHistory,
                        transition: xt.transition
                      }), I.prototype.possiblyEvaluate.call(this, ot, xt);
                    }, D.prototype.evaluate = function(ot, xt, Pt, Ht) {
                      return xt = _({}, xt, { zoom: Math.floor(xt.zoom) }), I.prototype.evaluate.call(this, ot, xt, Pt, Ht);
                    }, D;
                  }(wa), Zy = new hx(jy.paint.properties["line-width"].specification);
                  Zy.useIntegerZoom = !0;
                  var dx = function(I) {
                    function D(W) {
                      I.call(this, W, jy), this.gradientVersion = 0;
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype._handleSpecialPaintPropertyUpdate = function(ot) {
                      if (ot === "line-gradient") {
                        var xt = this._transitionablePaint._values["line-gradient"].value.expression;
                        this.stepInterpolant = xt._styleExpression.expression instanceof Js, this.gradientVersion = (this.gradientVersion + 1) % a;
                      }
                    }, D.prototype.gradientExpression = function() {
                      return this._transitionablePaint._values["line-gradient"].value.expression;
                    }, D.prototype.recalculate = function(ot, xt) {
                      I.prototype.recalculate.call(this, ot, xt), this.paint._values["line-floorwidth"] = Zy.possiblyEvaluate(this._transitioningPaint._values["line-width"].value, ot);
                    }, D.prototype.createBucket = function(ot) {
                      return new _u(ot);
                    }, D.prototype.queryRadius = function(ot) {
                      var xt = ot, Pt = vx(Il("line-width", this, xt), Il("line-gap-width", this, xt)), Ht = Il("line-offset", this, xt);
                      return Pt / 2 + Math.abs(Ht) + Qo(this.paint.get("line-translate"));
                    }, D.prototype.queryIntersectsFeature = function(ot, xt, Pt, Ht, ve, Fe, Ze) {
                      var nr = af(ot, this.paint.get("line-translate"), this.paint.get("line-translate-anchor"), Fe.angle, Ze), wr = Ze / 2 * vx(this.paint.get("line-width").evaluate(xt, Pt), this.paint.get("line-gap-width").evaluate(xt, Pt)), Fr = this.paint.get("line-offset").evaluate(xt, Pt);
                      return Fr && (Ht = _w(Ht, Fr * Ze)), js(nr, Ht, wr);
                    }, D.prototype.isTileClipped = function() {
                      return !0;
                    }, D;
                  }(Qi);
                  function vx(I, D) {
                    return D > 0 ? D + 2 * I : I;
                  }
                  function _w(I, D) {
                    for (var W = [], ot = new u(0, 0), xt = 0; xt < I.length; xt++) {
                      for (var Pt = I[xt], Ht = [], ve = 0; ve < Pt.length; ve++) {
                        var Fe = Pt[ve - 1], Ze = Pt[ve], nr = Pt[ve + 1], wr = ve === 0 ? ot : Ze.sub(Fe)._unit()._perp(), Fr = ve === Pt.length - 1 ? ot : nr.sub(Ze)._unit()._perp(), Rr = wr._add(Fr)._unit(), Kr = Rr.x * Fr.x + Rr.y * Fr.y;
                        Rr._mult(1 / Kr), Ht.push(Rr._mult(D)._add(Ze));
                      }
                      W.push(Ht);
                    }
                    return W;
                  }
                  var iv = Yo([
                    {
                      name: "a_pos_offset",
                      components: 4,
                      type: "Int16"
                    },
                    {
                      name: "a_data",
                      components: 4,
                      type: "Uint16"
                    },
                    {
                      name: "a_pixeloffset",
                      components: 4,
                      type: "Int16"
                    }
                  ], 4), px = Yo([{
                    name: "a_projected_pos",
                    components: 3,
                    type: "Float32"
                  }], 4);
                  Yo([{
                    name: "a_fade_opacity",
                    components: 1,
                    type: "Uint32"
                  }], 4);
                  var Xy = Yo([
                    {
                      name: "a_placed",
                      components: 2,
                      type: "Uint8"
                    },
                    {
                      name: "a_shift",
                      components: 2,
                      type: "Float32"
                    }
                  ]);
                  Yo([
                    {
                      type: "Int16",
                      name: "anchorPointX"
                    },
                    {
                      type: "Int16",
                      name: "anchorPointY"
                    },
                    {
                      type: "Int16",
                      name: "x1"
                    },
                    {
                      type: "Int16",
                      name: "y1"
                    },
                    {
                      type: "Int16",
                      name: "x2"
                    },
                    {
                      type: "Int16",
                      name: "y2"
                    },
                    {
                      type: "Uint32",
                      name: "featureIndex"
                    },
                    {
                      type: "Uint16",
                      name: "sourceLayerIndex"
                    },
                    {
                      type: "Uint16",
                      name: "bucketIndex"
                    }
                  ]);
                  var wv = Yo([
                    {
                      name: "a_pos",
                      components: 2,
                      type: "Int16"
                    },
                    {
                      name: "a_anchor_pos",
                      components: 2,
                      type: "Int16"
                    },
                    {
                      name: "a_extrude",
                      components: 2,
                      type: "Int16"
                    }
                  ], 4), gx = Yo([
                    {
                      name: "a_pos",
                      components: 2,
                      type: "Float32"
                    },
                    {
                      name: "a_radius",
                      components: 1,
                      type: "Float32"
                    },
                    {
                      name: "a_flags",
                      components: 2,
                      type: "Int16"
                    }
                  ], 4);
                  Yo([{
                    name: "triangle",
                    components: 3,
                    type: "Uint16"
                  }]), Yo([
                    {
                      type: "Int16",
                      name: "anchorX"
                    },
                    {
                      type: "Int16",
                      name: "anchorY"
                    },
                    {
                      type: "Uint16",
                      name: "glyphStartIndex"
                    },
                    {
                      type: "Uint16",
                      name: "numGlyphs"
                    },
                    {
                      type: "Uint32",
                      name: "vertexStartIndex"
                    },
                    {
                      type: "Uint32",
                      name: "lineStartIndex"
                    },
                    {
                      type: "Uint32",
                      name: "lineLength"
                    },
                    {
                      type: "Uint16",
                      name: "segment"
                    },
                    {
                      type: "Uint16",
                      name: "lowerSize"
                    },
                    {
                      type: "Uint16",
                      name: "upperSize"
                    },
                    {
                      type: "Float32",
                      name: "lineOffsetX"
                    },
                    {
                      type: "Float32",
                      name: "lineOffsetY"
                    },
                    {
                      type: "Uint8",
                      name: "writingMode"
                    },
                    {
                      type: "Uint8",
                      name: "placedOrientation"
                    },
                    {
                      type: "Uint8",
                      name: "hidden"
                    },
                    {
                      type: "Uint32",
                      name: "crossTileID"
                    },
                    {
                      type: "Int16",
                      name: "associatedIconIndex"
                    }
                  ]), Yo([
                    {
                      type: "Int16",
                      name: "anchorX"
                    },
                    {
                      type: "Int16",
                      name: "anchorY"
                    },
                    {
                      type: "Int16",
                      name: "rightJustifiedTextSymbolIndex"
                    },
                    {
                      type: "Int16",
                      name: "centerJustifiedTextSymbolIndex"
                    },
                    {
                      type: "Int16",
                      name: "leftJustifiedTextSymbolIndex"
                    },
                    {
                      type: "Int16",
                      name: "verticalPlacedTextSymbolIndex"
                    },
                    {
                      type: "Int16",
                      name: "placedIconSymbolIndex"
                    },
                    {
                      type: "Int16",
                      name: "verticalPlacedIconSymbolIndex"
                    },
                    {
                      type: "Uint16",
                      name: "key"
                    },
                    {
                      type: "Uint16",
                      name: "textBoxStartIndex"
                    },
                    {
                      type: "Uint16",
                      name: "textBoxEndIndex"
                    },
                    {
                      type: "Uint16",
                      name: "verticalTextBoxStartIndex"
                    },
                    {
                      type: "Uint16",
                      name: "verticalTextBoxEndIndex"
                    },
                    {
                      type: "Uint16",
                      name: "iconBoxStartIndex"
                    },
                    {
                      type: "Uint16",
                      name: "iconBoxEndIndex"
                    },
                    {
                      type: "Uint16",
                      name: "verticalIconBoxStartIndex"
                    },
                    {
                      type: "Uint16",
                      name: "verticalIconBoxEndIndex"
                    },
                    {
                      type: "Uint16",
                      name: "featureIndex"
                    },
                    {
                      type: "Uint16",
                      name: "numHorizontalGlyphVertices"
                    },
                    {
                      type: "Uint16",
                      name: "numVerticalGlyphVertices"
                    },
                    {
                      type: "Uint16",
                      name: "numIconVertices"
                    },
                    {
                      type: "Uint16",
                      name: "numVerticalIconVertices"
                    },
                    {
                      type: "Uint16",
                      name: "useRuntimeCollisionCircles"
                    },
                    {
                      type: "Uint32",
                      name: "crossTileID"
                    },
                    {
                      type: "Float32",
                      name: "textBoxScale"
                    },
                    {
                      type: "Float32",
                      components: 2,
                      name: "textOffset"
                    },
                    {
                      type: "Float32",
                      name: "collisionCircleDiameter"
                    }
                  ]), Yo([{
                    type: "Float32",
                    name: "offsetX"
                  }]), Yo([
                    {
                      type: "Int16",
                      name: "x"
                    },
                    {
                      type: "Int16",
                      name: "y"
                    },
                    {
                      type: "Int16",
                      name: "tileUnitDistanceFromAnchor"
                    }
                  ]);
                  function yx(I, D, W) {
                    var ot = D.layout.get("text-transform").evaluate(W, {});
                    return ot === "uppercase" ? I = I.toLocaleUpperCase() : ot === "lowercase" && (I = I.toLocaleLowerCase()), Ui.applyArabicShaping && (I = Ui.applyArabicShaping(I)), I;
                  }
                  function mx(I, D, W) {
                    return I.sections.forEach(function(ot) {
                      ot.text = yx(ot.text, D, W);
                    }), I;
                  }
                  function xx(I) {
                    var D = {}, W = {}, ot = [], xt = 0;
                    function Pt(Bn) {
                      ot.push(I[Bn]), xt++;
                    }
                    function Ht(Bn, vi, ni) {
                      var pi = W[Bn];
                      return delete W[Bn], W[vi] = pi, ot[pi].geometry[0].pop(), ot[pi].geometry[0] = ot[pi].geometry[0].concat(ni[0]), pi;
                    }
                    function ve(Bn, vi, ni) {
                      var pi = D[vi];
                      return delete D[vi], D[Bn] = pi, ot[pi].geometry[0].shift(), ot[pi].geometry[0] = ni[0].concat(ot[pi].geometry[0]), pi;
                    }
                    function Fe(Bn, vi, ni) {
                      var pi = ni ? vi[0][vi[0].length - 1] : vi[0][0];
                      return Bn + ":" + pi.x + ":" + pi.y;
                    }
                    for (var Ze = 0; Ze < I.length; Ze++) {
                      var nr = I[Ze], wr = nr.geometry, Fr = nr.text ? nr.text.toString() : null;
                      if (!Fr) {
                        Pt(Ze);
                        continue;
                      }
                      var Rr = Fe(Fr, wr), Kr = Fe(Fr, wr, !0);
                      if (Rr in W && Kr in D && W[Rr] !== D[Kr]) {
                        var yn = ve(Rr, Kr, wr), Qn = Ht(Rr, Kr, ot[yn].geometry);
                        delete D[Rr], delete W[Kr], W[Fe(Fr, ot[Qn].geometry, !0)] = Qn, ot[yn].geometry = null;
                      } else Rr in W ? Ht(Rr, Kr, wr) : Kr in D ? ve(Rr, Kr, wr) : (Pt(Ze), D[Rr] = xt - 1, W[Kr] = xt - 1);
                    }
                    return ot.filter(function(Bn) {
                      return Bn.geometry;
                    });
                  }
                  var Gp = {
                    "!": "︕",
                    "#": "＃",
                    $: "＄",
                    "%": "％",
                    "&": "＆",
                    "(": "︵",
                    ")": "︶",
                    "*": "＊",
                    "+": "＋",
                    ",": "︐",
                    "-": "︲",
                    ".": "・",
                    "/": "／",
                    ":": "︓",
                    ";": "︔",
                    "<": "︿",
                    "=": "＝",
                    ">": "﹀",
                    "?": "︖",
                    "@": "＠",
                    "[": "﹇",
                    "\\": "＼",
                    "]": "﹈",
                    "^": "＾",
                    _: "︳",
                    "`": "｀",
                    "{": "︷",
                    "|": "―",
                    "}": "︸",
                    "~": "～",
                    "¢": "￠",
                    "£": "￡",
                    "¥": "￥",
                    "¦": "￤",
                    "¬": "￢",
                    "¯": "￣",
                    "–": "︲",
                    "—": "︱",
                    "‘": "﹃",
                    "’": "﹄",
                    "“": "﹁",
                    "”": "﹂",
                    "…": "︙",
                    "‧": "・",
                    "₩": "￦",
                    "、": "︑",
                    "。": "︒",
                    "〈": "︿",
                    "〉": "﹀",
                    "《": "︽",
                    "》": "︾",
                    "「": "﹁",
                    "」": "﹂",
                    "『": "﹃",
                    "』": "﹄",
                    "【": "︻",
                    "】": "︼",
                    "〔": "︹",
                    "〕": "︺",
                    "〖": "︗",
                    "〗": "︘",
                    "！": "︕",
                    "（": "︵",
                    "）": "︶",
                    "，": "︐",
                    "－": "︲",
                    "．": "・",
                    "：": "︓",
                    "；": "︔",
                    "＜": "︿",
                    "＞": "﹀",
                    "？": "︖",
                    "［": "﹇",
                    "］": "﹈",
                    "＿": "︳",
                    "｛": "︷",
                    "｜": "―",
                    "｝": "︸",
                    "｟": "︵",
                    "｠": "︶",
                    "｡": "︒",
                    "｢": "﹁",
                    "｣": "﹂"
                  };
                  function Yy(I) {
                    for (var D = "", W = 0; W < I.length; W++) {
                      var ot = I.charCodeAt(W + 1) || null, xt = I.charCodeAt(W - 1) || null, Pt = (!ot || !xn(ot) || Gp[I[W + 1]]) && (!xt || !xn(xt) || Gp[I[W - 1]]);
                      Pt && Gp[I[W]] ? D += Gp[I[W]] : D += I[W];
                    }
                    return D;
                  }
                  var Dl = 24, bx = function(I, D, W, ot, xt) {
                    var Pt, Ht, ve = xt * 8 - ot - 1, Fe = (1 << ve) - 1, Ze = Fe >> 1, nr = -7, wr = W ? xt - 1 : 0, Fr = W ? -1 : 1, Rr = I[D + wr];
                    for (wr += Fr, Pt = Rr & (1 << -nr) - 1, Rr >>= -nr, nr += ve; nr > 0; Pt = Pt * 256 + I[D + wr], wr += Fr, nr -= 8)
                      ;
                    for (Ht = Pt & (1 << -nr) - 1, Pt >>= -nr, nr += ot; nr > 0; Ht = Ht * 256 + I[D + wr], wr += Fr, nr -= 8)
                      ;
                    if (Pt === 0)
                      Pt = 1 - Ze;
                    else {
                      if (Pt === Fe)
                        return Ht ? NaN : (Rr ? -1 : 1) * (1 / 0);
                      Ht = Ht + Math.pow(2, ot), Pt = Pt - Ze;
                    }
                    return (Rr ? -1 : 1) * Ht * Math.pow(2, Pt - ot);
                  }, wx = function(I, D, W, ot, xt, Pt) {
                    var Ht, ve, Fe, Ze = Pt * 8 - xt - 1, nr = (1 << Ze) - 1, wr = nr >> 1, Fr = xt === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0, Rr = ot ? 0 : Pt - 1, Kr = ot ? 1 : -1, yn = D < 0 || D === 0 && 1 / D < 0 ? 1 : 0;
                    for (D = Math.abs(D), isNaN(D) || D === 1 / 0 ? (ve = isNaN(D) ? 1 : 0, Ht = nr) : (Ht = Math.floor(Math.log(D) / Math.LN2), D * (Fe = Math.pow(2, -Ht)) < 1 && (Ht--, Fe *= 2), Ht + wr >= 1 ? D += Fr / Fe : D += Fr * Math.pow(2, 1 - wr), D * Fe >= 2 && (Ht++, Fe /= 2), Ht + wr >= nr ? (ve = 0, Ht = nr) : Ht + wr >= 1 ? (ve = (D * Fe - 1) * Math.pow(2, xt), Ht = Ht + wr) : (ve = D * Math.pow(2, wr - 1) * Math.pow(2, xt), Ht = 0)); xt >= 8; I[W + Rr] = ve & 255, Rr += Kr, ve /= 256, xt -= 8)
                      ;
                    for (Ht = Ht << xt | ve, Ze += xt; Ze > 0; I[W + Rr] = Ht & 255, Rr += Kr, Ht /= 256, Ze -= 8)
                      ;
                    I[W + Rr - Kr] |= yn * 128;
                  }, C0 = {
                    read: bx,
                    write: wx
                  }, L0 = cs;
                  function cs(I) {
                    this.buf = ArrayBuffer.isView && ArrayBuffer.isView(I) ? I : new Uint8Array(I || 0), this.pos = 0, this.type = 0, this.length = this.buf.length;
                  }
                  cs.Varint = 0, cs.Fixed64 = 1, cs.Bytes = 2, cs.Fixed32 = 5;
                  var Pg = 65536 * 65536, Ky = 1 / Pg, _x = 12, P0 = typeof TextDecoder > "u" ? null : new TextDecoder("utf8");
                  cs.prototype = {
                    destroy: function() {
                      this.buf = null;
                    },
                    readFields: function(I, D, W) {
                      for (W = W || this.length; this.pos < W; ) {
                        var ot = this.readVarint(), xt = ot >> 3, Pt = this.pos;
                        this.type = ot & 7, I(xt, D, this), this.pos === Pt && this.skip(ot);
                      }
                      return D;
                    },
                    readMessage: function(I, D) {
                      return this.readFields(I, D, this.readVarint() + this.pos);
                    },
                    readFixed32: function() {
                      var I = Ig(this.buf, this.pos);
                      return this.pos += 4, I;
                    },
                    readSFixed32: function() {
                      var I = qy(this.buf, this.pos);
                      return this.pos += 4, I;
                    },
                    readFixed64: function() {
                      var I = Ig(this.buf, this.pos) + Ig(this.buf, this.pos + 4) * Pg;
                      return this.pos += 8, I;
                    },
                    readSFixed64: function() {
                      var I = Ig(this.buf, this.pos) + qy(this.buf, this.pos + 4) * Pg;
                      return this.pos += 8, I;
                    },
                    readFloat: function() {
                      var I = C0.read(this.buf, this.pos, !0, 23, 4);
                      return this.pos += 4, I;
                    },
                    readDouble: function() {
                      var I = C0.read(this.buf, this.pos, !0, 52, 8);
                      return this.pos += 8, I;
                    },
                    readVarint: function(I) {
                      var D = this.buf, W, ot;
                      return ot = D[this.pos++], W = ot & 127, ot < 128 || (ot = D[this.pos++], W |= (ot & 127) << 7, ot < 128) || (ot = D[this.pos++], W |= (ot & 127) << 14, ot < 128) || (ot = D[this.pos++], W |= (ot & 127) << 21, ot < 128) ? W : (ot = D[this.pos], W |= (ot & 15) << 28, Wp(W, I, this));
                    },
                    readVarint64: function() {
                      return this.readVarint(!0);
                    },
                    readSVarint: function() {
                      var I = this.readVarint();
                      return I % 2 === 1 ? (I + 1) / -2 : I / 2;
                    },
                    readBoolean: function() {
                      return !!this.readVarint();
                    },
                    readString: function() {
                      var I = this.readVarint() + this.pos, D = this.pos;
                      return this.pos = I, I - D >= _x && P0 ? Sw(this.buf, D, I) : Aw(this.buf, D, I);
                    },
                    readBytes: function() {
                      var I = this.readVarint() + this.pos, D = this.buf.subarray(this.pos, I);
                      return this.pos = I, D;
                    },
                    readPackedVarint: function(I, D) {
                      if (this.type !== cs.Bytes)
                        return I.push(this.readVarint(D));
                      var W = Vh(this);
                      for (I = I || []; this.pos < W; )
                        I.push(this.readVarint(D));
                      return I;
                    },
                    readPackedSVarint: function(I) {
                      if (this.type !== cs.Bytes)
                        return I.push(this.readSVarint());
                      var D = Vh(this);
                      for (I = I || []; this.pos < D; )
                        I.push(this.readSVarint());
                      return I;
                    },
                    readPackedBoolean: function(I) {
                      if (this.type !== cs.Bytes)
                        return I.push(this.readBoolean());
                      var D = Vh(this);
                      for (I = I || []; this.pos < D; )
                        I.push(this.readBoolean());
                      return I;
                    },
                    readPackedFloat: function(I) {
                      if (this.type !== cs.Bytes)
                        return I.push(this.readFloat());
                      var D = Vh(this);
                      for (I = I || []; this.pos < D; )
                        I.push(this.readFloat());
                      return I;
                    },
                    readPackedDouble: function(I) {
                      if (this.type !== cs.Bytes)
                        return I.push(this.readDouble());
                      var D = Vh(this);
                      for (I = I || []; this.pos < D; )
                        I.push(this.readDouble());
                      return I;
                    },
                    readPackedFixed32: function(I) {
                      if (this.type !== cs.Bytes)
                        return I.push(this.readFixed32());
                      var D = Vh(this);
                      for (I = I || []; this.pos < D; )
                        I.push(this.readFixed32());
                      return I;
                    },
                    readPackedSFixed32: function(I) {
                      if (this.type !== cs.Bytes)
                        return I.push(this.readSFixed32());
                      var D = Vh(this);
                      for (I = I || []; this.pos < D; )
                        I.push(this.readSFixed32());
                      return I;
                    },
                    readPackedFixed64: function(I) {
                      if (this.type !== cs.Bytes)
                        return I.push(this.readFixed64());
                      var D = Vh(this);
                      for (I = I || []; this.pos < D; )
                        I.push(this.readFixed64());
                      return I;
                    },
                    readPackedSFixed64: function(I) {
                      if (this.type !== cs.Bytes)
                        return I.push(this.readSFixed64());
                      var D = Vh(this);
                      for (I = I || []; this.pos < D; )
                        I.push(this.readSFixed64());
                      return I;
                    },
                    skip: function(I) {
                      var D = I & 7;
                      if (D === cs.Varint)
                        for (; this.buf[this.pos++] > 127; )
                          ;
                      else if (D === cs.Bytes)
                        this.pos = this.readVarint() + this.pos;
                      else if (D === cs.Fixed32)
                        this.pos += 4;
                      else if (D === cs.Fixed64)
                        this.pos += 8;
                      else
                        throw new Error("Unimplemented type: " + D);
                    },
                    writeTag: function(I, D) {
                      this.writeVarint(I << 3 | D);
                    },
                    realloc: function(I) {
                      for (var D = this.length || 16; D < this.pos + I; )
                        D *= 2;
                      if (D !== this.length) {
                        var W = new Uint8Array(D);
                        W.set(this.buf), this.buf = W, this.length = D;
                      }
                    },
                    finish: function() {
                      return this.length = this.pos, this.pos = 0, this.buf.subarray(0, this.length);
                    },
                    writeFixed32: function(I) {
                      this.realloc(4), $v(this.buf, I, this.pos), this.pos += 4;
                    },
                    writeSFixed32: function(I) {
                      this.realloc(4), $v(this.buf, I, this.pos), this.pos += 4;
                    },
                    writeFixed64: function(I) {
                      this.realloc(8), $v(this.buf, I & -1, this.pos), $v(this.buf, Math.floor(I * Ky), this.pos + 4), this.pos += 8;
                    },
                    writeSFixed64: function(I) {
                      this.realloc(8), $v(this.buf, I & -1, this.pos), $v(this.buf, Math.floor(I * Ky), this.pos + 4), this.pos += 8;
                    },
                    writeVarint: function(I) {
                      if (I = +I || 0, I > 268435455 || I < 0) {
                        Tx(I, this);
                        return;
                      }
                      this.realloc(4), this.buf[this.pos++] = I & 127 | (I > 127 ? 128 : 0), !(I <= 127) && (this.buf[this.pos++] = (I >>>= 7) & 127 | (I > 127 ? 128 : 0), !(I <= 127) && (this.buf[this.pos++] = (I >>>= 7) & 127 | (I > 127 ? 128 : 0), !(I <= 127) && (this.buf[this.pos++] = I >>> 7 & 127)));
                    },
                    writeSVarint: function(I) {
                      this.writeVarint(I < 0 ? -I * 2 - 1 : I * 2);
                    },
                    writeBoolean: function(I) {
                      this.writeVarint(!!I);
                    },
                    writeString: function(I) {
                      I = String(I), this.realloc(I.length * 4), this.pos++;
                      var D = this.pos;
                      this.pos = Ix(this.buf, I, this.pos);
                      var W = this.pos - D;
                      W >= 128 && Qy(D, W, this), this.pos = D - 1, this.writeVarint(W), this.pos += W;
                    },
                    writeFloat: function(I) {
                      this.realloc(4), C0.write(this.buf, I, this.pos, !0, 23, 4), this.pos += 4;
                    },
                    writeDouble: function(I) {
                      this.realloc(8), C0.write(this.buf, I, this.pos, !0, 52, 8), this.pos += 8;
                    },
                    writeBytes: function(I) {
                      var D = I.length;
                      this.writeVarint(D), this.realloc(D);
                      for (var W = 0; W < D; W++)
                        this.buf[this.pos++] = I[W];
                    },
                    writeRawMessage: function(I, D) {
                      this.pos++;
                      var W = this.pos;
                      I(D, this);
                      var ot = this.pos - W;
                      ot >= 128 && Qy(W, ot, this), this.pos = W - 1, this.writeVarint(ot), this.pos += ot;
                    },
                    writeMessage: function(I, D, W) {
                      this.writeTag(I, cs.Bytes), this.writeRawMessage(D, W);
                    },
                    writePackedVarint: function(I, D) {
                      D.length && this.writeMessage(I, Sx, D);
                    },
                    writePackedSVarint: function(I, D) {
                      D.length && this.writeMessage(I, jp, D);
                    },
                    writePackedBoolean: function(I, D) {
                      D.length && this.writeMessage(I, Ex, D);
                    },
                    writePackedFloat: function(I, D) {
                      D.length && this.writeMessage(I, $y, D);
                    },
                    writePackedDouble: function(I, D) {
                      D.length && this.writeMessage(I, Mx, D);
                    },
                    writePackedFixed32: function(I, D) {
                      D.length && this.writeMessage(I, Cx, D);
                    },
                    writePackedSFixed32: function(I, D) {
                      D.length && this.writeMessage(I, Lx, D);
                    },
                    writePackedFixed64: function(I, D) {
                      D.length && this.writeMessage(I, Px, D);
                    },
                    writePackedSFixed64: function(I, D) {
                      D.length && this.writeMessage(I, Tw, D);
                    },
                    writeBytesField: function(I, D) {
                      this.writeTag(I, cs.Bytes), this.writeBytes(D);
                    },
                    writeFixed32Field: function(I, D) {
                      this.writeTag(I, cs.Fixed32), this.writeFixed32(D);
                    },
                    writeSFixed32Field: function(I, D) {
                      this.writeTag(I, cs.Fixed32), this.writeSFixed32(D);
                    },
                    writeFixed64Field: function(I, D) {
                      this.writeTag(I, cs.Fixed64), this.writeFixed64(D);
                    },
                    writeSFixed64Field: function(I, D) {
                      this.writeTag(I, cs.Fixed64), this.writeSFixed64(D);
                    },
                    writeVarintField: function(I, D) {
                      this.writeTag(I, cs.Varint), this.writeVarint(D);
                    },
                    writeSVarintField: function(I, D) {
                      this.writeTag(I, cs.Varint), this.writeSVarint(D);
                    },
                    writeStringField: function(I, D) {
                      this.writeTag(I, cs.Bytes), this.writeString(D);
                    },
                    writeFloatField: function(I, D) {
                      this.writeTag(I, cs.Fixed32), this.writeFloat(D);
                    },
                    writeDoubleField: function(I, D) {
                      this.writeTag(I, cs.Fixed64), this.writeDouble(D);
                    },
                    writeBooleanField: function(I, D) {
                      this.writeVarintField(I, !!D);
                    }
                  };
                  function Wp(I, D, W) {
                    var ot = W.buf, xt, Pt;
                    if (Pt = ot[W.pos++], xt = (Pt & 112) >> 4, Pt < 128 || (Pt = ot[W.pos++], xt |= (Pt & 127) << 3, Pt < 128) || (Pt = ot[W.pos++], xt |= (Pt & 127) << 10, Pt < 128) || (Pt = ot[W.pos++], xt |= (Pt & 127) << 17, Pt < 128) || (Pt = ot[W.pos++], xt |= (Pt & 127) << 24, Pt < 128) || (Pt = ot[W.pos++], xt |= (Pt & 1) << 31, Pt < 128))
                      return Qv(I, xt, D);
                    throw new Error("Expected varint not more than 10 bytes");
                  }
                  function Vh(I) {
                    return I.type === cs.Bytes ? I.readVarint() + I.pos : I.pos + 1;
                  }
                  function Qv(I, D, W) {
                    return W ? D * 4294967296 + (I >>> 0) : (D >>> 0) * 4294967296 + (I >>> 0);
                  }
                  function Tx(I, D) {
                    var W, ot;
                    if (I >= 0 ? (W = I % 4294967296 | 0, ot = I / 4294967296 | 0) : (W = ~(-I % 4294967296), ot = ~(-I / 4294967296), W ^ 4294967295 ? W = W + 1 | 0 : (W = 0, ot = ot + 1 | 0)), I >= 18446744073709552e3 || I < -18446744073709552e3)
                      throw new Error("Given varint doesn't fit into 10 bytes");
                    D.realloc(10), Jy(W, ot, D), Ax(ot, D);
                  }
                  function Jy(I, D, W) {
                    W.buf[W.pos++] = I & 127 | 128, I >>>= 7, W.buf[W.pos++] = I & 127 | 128, I >>>= 7, W.buf[W.pos++] = I & 127 | 128, I >>>= 7, W.buf[W.pos++] = I & 127 | 128, I >>>= 7, W.buf[W.pos] = I & 127;
                  }
                  function Ax(I, D) {
                    var W = (I & 7) << 4;
                    D.buf[D.pos++] |= W | ((I >>>= 3) ? 128 : 0), I && (D.buf[D.pos++] = I & 127 | ((I >>>= 7) ? 128 : 0), I && (D.buf[D.pos++] = I & 127 | ((I >>>= 7) ? 128 : 0), I && (D.buf[D.pos++] = I & 127 | ((I >>>= 7) ? 128 : 0), I && (D.buf[D.pos++] = I & 127 | ((I >>>= 7) ? 128 : 0), I && (D.buf[D.pos++] = I & 127)))));
                  }
                  function Qy(I, D, W) {
                    var ot = D <= 16383 ? 1 : D <= 2097151 ? 2 : D <= 268435455 ? 3 : Math.floor(Math.log(D) / (Math.LN2 * 7));
                    W.realloc(ot);
                    for (var xt = W.pos - 1; xt >= I; xt--)
                      W.buf[xt + ot] = W.buf[xt];
                  }
                  function Sx(I, D) {
                    for (var W = 0; W < I.length; W++)
                      D.writeVarint(I[W]);
                  }
                  function jp(I, D) {
                    for (var W = 0; W < I.length; W++)
                      D.writeSVarint(I[W]);
                  }
                  function $y(I, D) {
                    for (var W = 0; W < I.length; W++)
                      D.writeFloat(I[W]);
                  }
                  function Mx(I, D) {
                    for (var W = 0; W < I.length; W++)
                      D.writeDouble(I[W]);
                  }
                  function Ex(I, D) {
                    for (var W = 0; W < I.length; W++)
                      D.writeBoolean(I[W]);
                  }
                  function Cx(I, D) {
                    for (var W = 0; W < I.length; W++)
                      D.writeFixed32(I[W]);
                  }
                  function Lx(I, D) {
                    for (var W = 0; W < I.length; W++)
                      D.writeSFixed32(I[W]);
                  }
                  function Px(I, D) {
                    for (var W = 0; W < I.length; W++)
                      D.writeFixed64(I[W]);
                  }
                  function Tw(I, D) {
                    for (var W = 0; W < I.length; W++)
                      D.writeSFixed64(I[W]);
                  }
                  function Ig(I, D) {
                    return (I[D] | I[D + 1] << 8 | I[D + 2] << 16) + I[D + 3] * 16777216;
                  }
                  function $v(I, D, W) {
                    I[W] = D, I[W + 1] = D >>> 8, I[W + 2] = D >>> 16, I[W + 3] = D >>> 24;
                  }
                  function qy(I, D) {
                    return (I[D] | I[D + 1] << 8 | I[D + 2] << 16) + (I[D + 3] << 24);
                  }
                  function Aw(I, D, W) {
                    for (var ot = "", xt = D; xt < W; ) {
                      var Pt = I[xt], Ht = null, ve = Pt > 239 ? 4 : Pt > 223 ? 3 : Pt > 191 ? 2 : 1;
                      if (xt + ve > W)
                        break;
                      var Fe, Ze, nr;
                      ve === 1 ? Pt < 128 && (Ht = Pt) : ve === 2 ? (Fe = I[xt + 1], (Fe & 192) === 128 && (Ht = (Pt & 31) << 6 | Fe & 63, Ht <= 127 && (Ht = null))) : ve === 3 ? (Fe = I[xt + 1], Ze = I[xt + 2], (Fe & 192) === 128 && (Ze & 192) === 128 && (Ht = (Pt & 15) << 12 | (Fe & 63) << 6 | Ze & 63, (Ht <= 2047 || Ht >= 55296 && Ht <= 57343) && (Ht = null))) : ve === 4 && (Fe = I[xt + 1], Ze = I[xt + 2], nr = I[xt + 3], (Fe & 192) === 128 && (Ze & 192) === 128 && (nr & 192) === 128 && (Ht = (Pt & 15) << 18 | (Fe & 63) << 12 | (Ze & 63) << 6 | nr & 63, (Ht <= 65535 || Ht >= 1114112) && (Ht = null))), Ht === null ? (Ht = 65533, ve = 1) : Ht > 65535 && (Ht -= 65536, ot += String.fromCharCode(Ht >>> 10 & 1023 | 55296), Ht = 56320 | Ht & 1023), ot += String.fromCharCode(Ht), xt += ve;
                    }
                    return ot;
                  }
                  function Sw(I, D, W) {
                    return P0.decode(I.subarray(D, W));
                  }
                  function Ix(I, D, W) {
                    for (var ot = 0, xt, Pt; ot < D.length; ot++) {
                      if (xt = D.charCodeAt(ot), xt > 55295 && xt < 57344)
                        if (Pt)
                          if (xt < 56320) {
                            I[W++] = 239, I[W++] = 191, I[W++] = 189, Pt = xt;
                            continue;
                          } else
                            xt = Pt - 55296 << 10 | xt - 56320 | 65536, Pt = null;
                        else {
                          xt > 56319 || ot + 1 === D.length ? (I[W++] = 239, I[W++] = 191, I[W++] = 189) : Pt = xt;
                          continue;
                        }
                      else Pt && (I[W++] = 239, I[W++] = 191, I[W++] = 189, Pt = null);
                      xt < 128 ? I[W++] = xt : (xt < 2048 ? I[W++] = xt >> 6 | 192 : (xt < 65536 ? I[W++] = xt >> 12 | 224 : (I[W++] = xt >> 18 | 240, I[W++] = xt >> 12 & 63 | 128), I[W++] = xt >> 6 & 63 | 128), I[W++] = xt & 63 | 128);
                    }
                    return W;
                  }
                  var I0 = 3;
                  function Rx(I, D, W) {
                    I === 1 && W.readMessage(Dx, D);
                  }
                  function Dx(I, D, W) {
                    if (I === 3) {
                      var ot = W.readMessage(kx, {}), xt = ot.id, Pt = ot.bitmap, Ht = ot.width, ve = ot.height, Fe = ot.left, Ze = ot.top, nr = ot.advance;
                      D.push({
                        id: xt,
                        bitmap: new Ci({
                          width: Ht + 2 * I0,
                          height: ve + 2 * I0
                        }, Pt),
                        metrics: {
                          width: Ht,
                          height: ve,
                          left: Fe,
                          top: Ze,
                          advance: nr
                        }
                      });
                    }
                  }
                  function kx(I, D, W) {
                    I === 1 ? D.id = W.readVarint() : I === 2 ? D.bitmap = W.readBytes() : I === 3 ? D.width = W.readVarint() : I === 4 ? D.height = W.readVarint() : I === 5 ? D.left = W.readSVarint() : I === 6 ? D.top = W.readSVarint() : I === 7 && (D.advance = W.readVarint());
                  }
                  function zx(I) {
                    return new L0(I).readFields(Rx, []);
                  }
                  var Rg = I0;
                  function Dg(I) {
                    for (var D = 0, W = 0, ot = 0, xt = I; ot < xt.length; ot += 1) {
                      var Pt = xt[ot];
                      D += Pt.w * Pt.h, W = Math.max(W, Pt.w);
                    }
                    I.sort(function(Qn, Bn) {
                      return Bn.h - Qn.h;
                    });
                    for (var Ht = Math.max(Math.ceil(Math.sqrt(D / 0.95)), W), ve = [{ x: 0, y: 0, w: Ht, h: 1 / 0 }], Fe = 0, Ze = 0, nr = 0, wr = I; nr < wr.length; nr += 1)
                      for (var Fr = wr[nr], Rr = ve.length - 1; Rr >= 0; Rr--) {
                        var Kr = ve[Rr];
                        if (!(Fr.w > Kr.w || Fr.h > Kr.h)) {
                          if (Fr.x = Kr.x, Fr.y = Kr.y, Ze = Math.max(Ze, Fr.y + Fr.h), Fe = Math.max(Fe, Fr.x + Fr.w), Fr.w === Kr.w && Fr.h === Kr.h) {
                            var yn = ve.pop();
                            Rr < ve.length && (ve[Rr] = yn);
                          } else Fr.h === Kr.h ? (Kr.x += Fr.w, Kr.w -= Fr.w) : Fr.w === Kr.w ? (Kr.y += Fr.h, Kr.h -= Fr.h) : (ve.push({
                            x: Kr.x + Fr.w,
                            y: Kr.y,
                            w: Kr.w - Fr.w,
                            h: Fr.h
                          }), Kr.y += Fr.h, Kr.h -= Fr.h);
                          break;
                        }
                      }
                    return {
                      w: Fe,
                      // container width
                      h: Ze,
                      // container height
                      fill: D / (Fe * Ze) || 0
                      // space utilization
                    };
                  }
                  var Vu = 1, Zp = function(D, W) {
                    var ot = W.pixelRatio, xt = W.version, Pt = W.stretchX, Ht = W.stretchY, ve = W.content;
                    this.paddedRect = D, this.pixelRatio = ot, this.stretchX = Pt, this.stretchY = Ht, this.content = ve, this.version = xt;
                  }, Xp = {
                    tl: { configurable: !0 },
                    br: { configurable: !0 },
                    tlbr: { configurable: !0 },
                    displaySize: { configurable: !0 }
                  };
                  Xp.tl.get = function() {
                    return [
                      this.paddedRect.x + Vu,
                      this.paddedRect.y + Vu
                    ];
                  }, Xp.br.get = function() {
                    return [
                      this.paddedRect.x + this.paddedRect.w - Vu,
                      this.paddedRect.y + this.paddedRect.h - Vu
                    ];
                  }, Xp.tlbr.get = function() {
                    return this.tl.concat(this.br);
                  }, Xp.displaySize.get = function() {
                    return [
                      (this.paddedRect.w - Vu * 2) / this.pixelRatio,
                      (this.paddedRect.h - Vu * 2) / this.pixelRatio
                    ];
                  }, Object.defineProperties(Zp.prototype, Xp);
                  var qv = function(D, W) {
                    var ot = {}, xt = {};
                    this.haveRenderCallbacks = [];
                    var Pt = [];
                    this.addImages(D, ot, Pt), this.addImages(W, xt, Pt);
                    var Ht = Dg(Pt), ve = Ht.w, Fe = Ht.h, Ze = new Oi({
                      width: ve || 1,
                      height: Fe || 1
                    });
                    for (var nr in D) {
                      var wr = D[nr], Fr = ot[nr].paddedRect;
                      Oi.copy(wr.data, Ze, {
                        x: 0,
                        y: 0
                      }, {
                        x: Fr.x + Vu,
                        y: Fr.y + Vu
                      }, wr.data);
                    }
                    for (var Rr in W) {
                      var Kr = W[Rr], yn = xt[Rr].paddedRect, Qn = yn.x + Vu, Bn = yn.y + Vu, vi = Kr.data.width, ni = Kr.data.height;
                      Oi.copy(Kr.data, Ze, {
                        x: 0,
                        y: 0
                      }, {
                        x: Qn,
                        y: Bn
                      }, Kr.data), Oi.copy(Kr.data, Ze, {
                        x: 0,
                        y: ni - 1
                      }, {
                        x: Qn,
                        y: Bn - 1
                      }, {
                        width: vi,
                        height: 1
                      }), Oi.copy(Kr.data, Ze, {
                        x: 0,
                        y: 0
                      }, {
                        x: Qn,
                        y: Bn + ni
                      }, {
                        width: vi,
                        height: 1
                      }), Oi.copy(Kr.data, Ze, {
                        x: vi - 1,
                        y: 0
                      }, {
                        x: Qn - 1,
                        y: Bn
                      }, {
                        width: 1,
                        height: ni
                      }), Oi.copy(Kr.data, Ze, {
                        x: 0,
                        y: 0
                      }, {
                        x: Qn + vi,
                        y: Bn
                      }, {
                        width: 1,
                        height: ni
                      });
                    }
                    this.image = Ze, this.iconPositions = ot, this.patternPositions = xt;
                  };
                  qv.prototype.addImages = function(D, W, ot) {
                    for (var xt in D) {
                      var Pt = D[xt], Ht = {
                        x: 0,
                        y: 0,
                        w: Pt.data.width + 2 * Vu,
                        h: Pt.data.height + 2 * Vu
                      };
                      ot.push(Ht), W[xt] = new Zp(Ht, Pt), Pt.hasRenderCallback && this.haveRenderCallbacks.push(xt);
                    }
                  }, qv.prototype.patchUpdatedImages = function(D, W) {
                    D.dispatchRenderCallbacks(this.haveRenderCallbacks);
                    for (var ot in D.updatedImages)
                      this.patchUpdatedImage(this.iconPositions[ot], D.getImage(ot), W), this.patchUpdatedImage(this.patternPositions[ot], D.getImage(ot), W);
                  }, qv.prototype.patchUpdatedImage = function(D, W, ot) {
                    if (!(!D || !W) && D.version !== W.version) {
                      D.version = W.version;
                      var xt = D.tl, Pt = xt[0], Ht = xt[1];
                      ot.update(W.data, void 0, {
                        x: Pt,
                        y: Ht
                      });
                    }
                  }, Kt("ImagePosition", Zp), Kt("ImageAtlas", qv);
                  var lf = {
                    horizontal: 1,
                    vertical: 2,
                    horizontalOnly: 3
                  }, tp = -17;
                  function Fx(I) {
                    for (var D = 0, W = I; D < W.length; D += 1) {
                      var ot = W[D];
                      if (ot.positionedGlyphs.length !== 0)
                        return !1;
                    }
                    return !0;
                  }
                  var Yp = 57344, tm = 63743, _v = function() {
                    this.scale = 1, this.fontStack = "", this.imageName = null;
                  };
                  _v.forText = function(D, W) {
                    var ot = new _v();
                    return ot.scale = D || 1, ot.fontStack = W, ot;
                  }, _v.forImage = function(D) {
                    var W = new _v();
                    return W.imageName = D, W;
                  };
                  var Tu = function() {
                    this.text = "", this.sectionIndex = [], this.sections = [], this.imageSectionID = null;
                  };
                  Tu.fromFeature = function(D, W) {
                    for (var ot = new Tu(), xt = 0; xt < D.sections.length; xt++) {
                      var Pt = D.sections[xt];
                      Pt.image ? ot.addImageSection(Pt) : ot.addTextSection(Pt, W);
                    }
                    return ot;
                  }, Tu.prototype.length = function() {
                    return this.text.length;
                  }, Tu.prototype.getSection = function(D) {
                    return this.sections[this.sectionIndex[D]];
                  }, Tu.prototype.getSectionIndex = function(D) {
                    return this.sectionIndex[D];
                  }, Tu.prototype.getCharCode = function(D) {
                    return this.text.charCodeAt(D);
                  }, Tu.prototype.verticalizePunctuation = function() {
                    this.text = Yy(this.text);
                  }, Tu.prototype.trim = function() {
                    for (var D = 0, W = 0; W < this.text.length && Hh[this.text.charCodeAt(W)]; W++)
                      D++;
                    for (var ot = this.text.length, xt = this.text.length - 1; xt >= 0 && xt >= D && Hh[this.text.charCodeAt(xt)]; xt--)
                      ot--;
                    this.text = this.text.substring(D, ot), this.sectionIndex = this.sectionIndex.slice(D, ot);
                  }, Tu.prototype.substring = function(D, W) {
                    var ot = new Tu();
                    return ot.text = this.text.substring(D, W), ot.sectionIndex = this.sectionIndex.slice(D, W), ot.sections = this.sections, ot;
                  }, Tu.prototype.toString = function() {
                    return this.text;
                  }, Tu.prototype.getMaxScale = function() {
                    var D = this;
                    return this.sectionIndex.reduce(function(W, ot) {
                      return Math.max(W, D.sections[ot].scale);
                    }, 0);
                  }, Tu.prototype.addTextSection = function(D, W) {
                    this.text += D.text, this.sections.push(_v.forText(D.scale, D.fontStack || W));
                    for (var ot = this.sections.length - 1, xt = 0; xt < D.text.length; ++xt)
                      this.sectionIndex.push(ot);
                  }, Tu.prototype.addImageSection = function(D) {
                    var W = D.image ? D.image.name : "";
                    if (W.length === 0) {
                      U("Can't add FormattedSection with an empty image.");
                      return;
                    }
                    var ot = this.getNextImageSectionCharCode();
                    if (!ot) {
                      U("Reached maximum number of images " + (tm - Yp + 2));
                      return;
                    }
                    this.text += String.fromCharCode(ot), this.sections.push(_v.forImage(W)), this.sectionIndex.push(this.sections.length - 1);
                  }, Tu.prototype.getNextImageSectionCharCode = function() {
                    return this.imageSectionID ? this.imageSectionID >= tm ? null : ++this.imageSectionID : (this.imageSectionID = Yp, this.imageSectionID);
                  };
                  function Ox(I, D) {
                    for (var W = [], ot = I.text, xt = 0, Pt = 0, Ht = D; Pt < Ht.length; Pt += 1) {
                      var ve = Ht[Pt];
                      W.push(I.substring(xt, ve)), xt = ve;
                    }
                    return xt < ot.length && W.push(I.substring(xt, ot.length)), W;
                  }
                  function R0(I, D, W, ot, xt, Pt, Ht, ve, Fe, Ze, nr, wr, Fr, Rr, Kr, yn) {
                    var Qn = Tu.fromFeature(I, xt);
                    wr === lf.vertical && Qn.verticalizePunctuation();
                    var Bn, vi = Ui.processBidirectionalText, ni = Ui.processStyledBidirectionalText;
                    if (vi && Qn.sections.length === 1) {
                      Bn = [];
                      for (var pi = vi(Qn.toString(), Jp(Qn, Ze, Pt, D, ot, Rr, Kr)), wi = 0, Fi = pi; wi < Fi.length; wi += 1) {
                        var Zi = Fi[wi], Yi = new Tu();
                        Yi.text = Zi, Yi.sections = Qn.sections;
                        for (var ma = 0; ma < Zi.length; ma++)
                          Yi.sectionIndex.push(0);
                        Bn.push(Yi);
                      }
                    } else if (ni) {
                      Bn = [];
                      for (var fa = ni(Qn.text, Qn.sectionIndex, Jp(Qn, Ze, Pt, D, ot, Rr, Kr)), va = 0, Za = fa; va < Za.length; va += 1) {
                        var Ta = Za[va], Aa = new Tu();
                        Aa.text = Ta[0], Aa.sectionIndex = Ta[1], Aa.sections = Qn.sections, Bn.push(Aa);
                      }
                    } else
                      Bn = Ox(Qn, Jp(Qn, Ze, Pt, D, ot, Rr, Kr));
                    var fo = [], Ka = {
                      positionedLines: fo,
                      text: Qn.toString(),
                      top: nr[1],
                      bottom: nr[1],
                      left: nr[0],
                      right: nr[0],
                      writingMode: wr,
                      iconsInText: !1,
                      verticalizable: !1
                    };
                    return k0(Ka, D, W, ot, Bn, Ht, ve, Fe, wr, Ze, Fr, yn), Fx(fo) ? !1 : Ka;
                  }
                  var Hh = {};
                  Hh[9] = !0, Hh[10] = !0, Hh[11] = !0, Hh[12] = !0, Hh[13] = !0, Hh[32] = !0;
                  var Pc = {};
                  Pc[10] = !0, Pc[32] = !0, Pc[38] = !0, Pc[40] = !0, Pc[41] = !0, Pc[43] = !0, Pc[45] = !0, Pc[47] = !0, Pc[173] = !0, Pc[183] = !0, Pc[8203] = !0, Pc[8208] = !0, Pc[8211] = !0, Pc[8231] = !0;
                  function em(I, D, W, ot, xt, Pt) {
                    if (D.imageName) {
                      var Fe = ot[D.imageName];
                      return Fe ? Fe.displaySize[0] * D.scale * Dl / Pt + xt : 0;
                    } else {
                      var Ht = W[D.fontStack], ve = Ht && Ht[I];
                      return ve ? ve.metrics.advance * D.scale + xt : 0;
                    }
                  }
                  function Bx(I, D, W, ot, xt, Pt) {
                    for (var Ht = 0, ve = 0; ve < I.length(); ve++) {
                      var Fe = I.getSection(ve);
                      Ht += em(I.getCharCode(ve), Fe, ot, xt, D, Pt);
                    }
                    var Ze = Math.max(1, Math.ceil(Ht / W));
                    return Ht / Ze;
                  }
                  function rm(I, D, W, ot) {
                    var xt = Math.pow(I - D, 2);
                    return ot ? I < D ? xt / 2 : xt * 2 : xt + Math.abs(W) * W;
                  }
                  function Kp(I, D, W) {
                    var ot = 0;
                    return I === 10 && (ot -= 1e4), W && (ot += 150), (I === 40 || I === 65288) && (ot += 50), (D === 41 || D === 65289) && (ot += 50), ot;
                  }
                  function nm(I, D, W, ot, xt, Pt) {
                    for (var Ht = null, ve = rm(D, W, xt, Pt), Fe = 0, Ze = ot; Fe < Ze.length; Fe += 1) {
                      var nr = Ze[Fe], wr = D - nr.x, Fr = rm(wr, W, xt, Pt) + nr.badness;
                      Fr <= ve && (Ht = nr, ve = Fr);
                    }
                    return {
                      index: I,
                      x: D,
                      priorBreak: Ht,
                      badness: ve
                    };
                  }
                  function ml(I) {
                    return I ? ml(I.priorBreak).concat(I.index) : [];
                  }
                  function Jp(I, D, W, ot, xt, Pt, Ht) {
                    if (Pt !== "point")
                      return [];
                    if (!I)
                      return [];
                    for (var ve = [], Fe = Bx(I, D, W, ot, xt, Ht), Ze = I.text.indexOf("​") >= 0, nr = 0, wr = 0; wr < I.length(); wr++) {
                      var Fr = I.getSection(wr), Rr = I.getCharCode(wr);
                      if (Hh[Rr] || (nr += em(Rr, Fr, ot, xt, D, Ht)), wr < I.length() - 1) {
                        var Kr = Ln(Rr);
                        (Pc[Rr] || Kr || Fr.imageName) && ve.push(nm(wr + 1, nr, Fe, ve, Kp(Rr, I.getCharCode(wr + 1), Kr && Ze), !1));
                      }
                    }
                    return ml(nm(I.length(), nr, Fe, ve, 0, !0));
                  }
                  function D0(I) {
                    var D = 0.5, W = 0.5;
                    switch (I) {
                      case "right":
                      case "top-right":
                      case "bottom-right":
                        D = 1;
                        break;
                      case "left":
                      case "top-left":
                      case "bottom-left":
                        D = 0;
                        break;
                    }
                    switch (I) {
                      case "bottom":
                      case "bottom-right":
                      case "bottom-left":
                        W = 1;
                        break;
                      case "top":
                      case "top-right":
                      case "top-left":
                        W = 0;
                        break;
                    }
                    return {
                      horizontalAlign: D,
                      verticalAlign: W
                    };
                  }
                  function k0(I, D, W, ot, xt, Pt, Ht, ve, Fe, Ze, nr, wr) {
                    for (var Fr = 0, Rr = tp, Kr = 0, yn = 0, Qn = ve === "right" ? 1 : ve === "left" ? 0 : 0.5, Bn = 0, vi = 0, ni = xt; vi < ni.length; vi += 1) {
                      var pi = ni[vi];
                      pi.trim();
                      var wi = pi.getMaxScale(), Fi = (wi - 1) * Dl, Zi = {
                        positionedGlyphs: [],
                        lineOffset: 0
                      };
                      I.positionedLines[Bn] = Zi;
                      var Yi = Zi.positionedGlyphs, ma = 0;
                      if (!pi.length()) {
                        Rr += Pt, ++Bn;
                        continue;
                      }
                      for (var fa = 0; fa < pi.length(); fa++) {
                        var va = pi.getSection(fa), Za = pi.getSectionIndex(fa), Ta = pi.getCharCode(fa), Aa = 0, fo = null, Ka = null, zo = null, Vo = Dl, Fo = !(Fe === lf.horizontal || !nr && !Hn(Ta) || nr && (Hh[Ta] || Pn(Ta)));
                        if (va.imageName) {
                          var Ds = ot[va.imageName];
                          if (!Ds)
                            continue;
                          zo = va.imageName, I.iconsInText = I.iconsInText || !0, Ka = Ds.paddedRect;
                          var Xs = Ds.displaySize;
                          va.scale = va.scale * Dl / wr, fo = {
                            width: Xs[0],
                            height: Xs[1],
                            left: Vu,
                            top: -Rg,
                            advance: Fo ? Xs[1] : Xs[0]
                          };
                          var fl = Dl - Xs[1] * va.scale;
                          Aa = Fi + fl, Vo = fo.advance;
                          var hl = Fo ? Xs[0] * va.scale - Dl * wi : Xs[1] * va.scale - Dl * wi;
                          hl > 0 && hl > ma && (ma = hl);
                        } else {
                          var Oo = W[va.fontStack], mo = Oo && Oo[Ta];
                          if (mo && mo.rect)
                            Ka = mo.rect, fo = mo.metrics;
                          else {
                            var rs = D[va.fontStack], os = rs && rs[Ta];
                            if (!os)
                              continue;
                            fo = os.metrics;
                          }
                          Aa = (wi - va.scale) * Dl;
                        }
                        Fo ? (I.verticalizable = !0, Yi.push({
                          glyph: Ta,
                          imageName: zo,
                          x: Fr,
                          y: Rr + Aa,
                          vertical: Fo,
                          scale: va.scale,
                          fontStack: va.fontStack,
                          sectionIndex: Za,
                          metrics: fo,
                          rect: Ka
                        }), Fr += Vo * va.scale + Ze) : (Yi.push({
                          glyph: Ta,
                          imageName: zo,
                          x: Fr,
                          y: Rr + Aa,
                          vertical: Fo,
                          scale: va.scale,
                          fontStack: va.fontStack,
                          sectionIndex: Za,
                          metrics: fo,
                          rect: Ka
                        }), Fr += fo.advance * va.scale + Ze);
                      }
                      if (Yi.length !== 0) {
                        var Au = Fr - Ze;
                        Kr = Math.max(Au, Kr), fs(Yi, 0, Yi.length - 1, Qn, ma);
                      }
                      Fr = 0;
                      var ou = Pt * wi + ma;
                      Zi.lineOffset = Math.max(ma, Fi), Rr += ou, yn = Math.max(ou, yn), ++Bn;
                    }
                    var xl = Rr - tp, Hu = D0(Ht), Gu = Hu.horizontalAlign, dl = Hu.verticalAlign;
                    kg(I.positionedLines, Qn, Gu, dl, Kr, yn, Pt, xl, xt.length), I.top += -dl * xl, I.bottom = I.top + xl, I.left += -Gu * Kr, I.right = I.left + Kr;
                  }
                  function fs(I, D, W, ot, xt) {
                    if (!(!ot && !xt))
                      for (var Pt = I[W], Ht = Pt.metrics.advance * Pt.scale, ve = (I[W].x + Ht) * ot, Fe = D; Fe <= W; Fe++)
                        I[Fe].x -= ve, I[Fe].y += xt;
                  }
                  function kg(I, D, W, ot, xt, Pt, Ht, ve, Fe) {
                    var Ze = (D - W) * xt, nr = 0;
                    Pt !== Ht ? nr = -ve * ot - tp : nr = (-ot * Fe + 0.5) * Ht;
                    for (var wr = 0, Fr = I; wr < Fr.length; wr += 1)
                      for (var Rr = Fr[wr], Kr = 0, yn = Rr.positionedGlyphs; Kr < yn.length; Kr += 1) {
                        var Qn = yn[Kr];
                        Qn.x += Ze, Qn.y += nr;
                      }
                  }
                  function im(I, D, W) {
                    var ot = D0(W), xt = ot.horizontalAlign, Pt = ot.verticalAlign, Ht = D[0], ve = D[1], Fe = Ht - I.displaySize[0] * xt, Ze = Fe + I.displaySize[0], nr = ve - I.displaySize[1] * Pt, wr = nr + I.displaySize[1];
                    return {
                      image: I,
                      top: nr,
                      bottom: wr,
                      left: Fe,
                      right: Ze
                    };
                  }
                  function am(I, D, W, ot, xt, Pt) {
                    var Ht = I.image, ve;
                    if (Ht.content) {
                      var Fe = Ht.content, Ze = Ht.pixelRatio || 1;
                      ve = [
                        Fe[0] / Ze,
                        Fe[1] / Ze,
                        Ht.displaySize[0] - Fe[2] / Ze,
                        Ht.displaySize[1] - Fe[3] / Ze
                      ];
                    }
                    var nr = D.left * Pt, wr = D.right * Pt, Fr, Rr, Kr, yn;
                    W === "width" || W === "both" ? (yn = xt[0] + nr - ot[3], Rr = xt[0] + wr + ot[1]) : (yn = xt[0] + (nr + wr - Ht.displaySize[0]) / 2, Rr = yn + Ht.displaySize[0]);
                    var Qn = D.top * Pt, Bn = D.bottom * Pt;
                    return W === "height" || W === "both" ? (Fr = xt[1] + Qn - ot[0], Kr = xt[1] + Bn + ot[2]) : (Fr = xt[1] + (Qn + Bn - Ht.displaySize[1]) / 2, Kr = Fr + Ht.displaySize[1]), {
                      image: Ht,
                      top: Fr,
                      right: Rr,
                      bottom: Kr,
                      left: yn,
                      collisionPadding: ve
                    };
                  }
                  var Tv = function(I) {
                    function D(W, ot, xt, Pt) {
                      I.call(this, W, ot), this.angle = xt, Pt !== void 0 && (this.segment = Pt);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype.clone = function() {
                      return new D(this.x, this.y, this.angle, this.segment);
                    }, D;
                  }(u);
                  Kt("Anchor", Tv);
                  var Gh = 128;
                  function Wh(I, D) {
                    var W = D.expression;
                    if (W.kind === "constant") {
                      var ot = W.evaluate(new ba(I + 1));
                      return {
                        kind: "constant",
                        layoutSize: ot
                      };
                    } else {
                      if (W.kind === "source")
                        return { kind: "source" };
                      for (var xt = W.zoomStops, Pt = W.interpolationType, Ht = 0; Ht < xt.length && xt[Ht] <= I; )
                        Ht++;
                      Ht = Math.max(0, Ht - 1);
                      for (var ve = Ht; ve < xt.length && xt[ve] < I + 1; )
                        ve++;
                      ve = Math.min(xt.length - 1, ve);
                      var Fe = xt[Ht], Ze = xt[ve];
                      if (W.kind === "composite")
                        return {
                          kind: "composite",
                          minZoom: Fe,
                          maxZoom: Ze,
                          interpolationType: Pt
                        };
                      var nr = W.evaluate(new ba(Fe)), wr = W.evaluate(new ba(Ze));
                      return {
                        kind: "camera",
                        minZoom: Fe,
                        maxZoom: Ze,
                        minSize: nr,
                        maxSize: wr,
                        interpolationType: Pt
                      };
                    }
                  }
                  function Av(I, D, W) {
                    var ot = D.uSize, xt = D.uSizeT, Pt = W.lowerSize, Ht = W.upperSize;
                    return I.kind === "source" ? Pt / Gh : I.kind === "composite" ? ls(Pt / Gh, Ht / Gh, xt) : ot;
                  }
                  function om(I, D) {
                    var W = 0, ot = 0;
                    if (I.kind === "constant")
                      ot = I.layoutSize;
                    else if (I.kind !== "source") {
                      var xt = I.interpolationType, Pt = I.minZoom, Ht = I.maxZoom, ve = xt ? g(vs.interpolationFactor(xt, D, Pt, Ht), 0, 1) : 0;
                      I.kind === "camera" ? ot = ls(I.minSize, I.maxSize, ve) : W = ve;
                    }
                    return {
                      uSizeT: W,
                      uSize: ot
                    };
                  }
                  var Nx = /* @__PURE__ */ Object.freeze({
                    __proto__: null,
                    getSizeData: Wh,
                    evaluateSizeForFeature: Av,
                    evaluateSizeForZoom: om,
                    SIZE_PACK_FACTOR: Gh
                  });
                  function sm(I, D, W, ot, xt) {
                    if (D.segment === void 0)
                      return !0;
                    for (var Pt = D, Ht = D.segment + 1, ve = 0; ve > -W / 2; ) {
                      if (Ht--, Ht < 0)
                        return !1;
                      ve -= I[Ht].dist(Pt), Pt = I[Ht];
                    }
                    ve += I[Ht].dist(I[Ht + 1]), Ht++;
                    for (var Fe = [], Ze = 0; ve < W / 2; ) {
                      var nr = I[Ht - 1], wr = I[Ht], Fr = I[Ht + 1];
                      if (!Fr)
                        return !1;
                      var Rr = nr.angleTo(wr) - wr.angleTo(Fr);
                      for (Rr = Math.abs((Rr + 3 * Math.PI) % (Math.PI * 2) - Math.PI), Fe.push({
                        distance: ve,
                        angleDelta: Rr
                      }), Ze += Rr; ve - Fe[0].distance > ot; )
                        Ze -= Fe.shift().angleDelta;
                      if (Ze > xt)
                        return !1;
                      Ht++, ve += wr.dist(Fr);
                    }
                    return !0;
                  }
                  function zg(I) {
                    for (var D = 0, W = 0; W < I.length - 1; W++)
                      D += I[W].dist(I[W + 1]);
                    return D;
                  }
                  function lm(I, D, W) {
                    return I ? 0.6 * D * W : 0;
                  }
                  function um(I, D) {
                    return Math.max(I ? I.right - I.left : 0, D ? D.right - D.left : 0);
                  }
                  function Ux(I, D, W, ot, xt, Pt) {
                    for (var Ht = lm(W, xt, Pt), ve = um(W, ot) * Pt, Fe = 0, Ze = zg(I) / 2, nr = 0; nr < I.length - 1; nr++) {
                      var wr = I[nr], Fr = I[nr + 1], Rr = wr.dist(Fr);
                      if (Fe + Rr > Ze) {
                        var Kr = (Ze - Fe) / Rr, yn = ls(wr.x, Fr.x, Kr), Qn = ls(wr.y, Fr.y, Kr), Bn = new Tv(yn, Qn, Fr.angleTo(wr), nr);
                        return Bn._round(), !Ht || sm(I, Bn, ve, Ht, D) ? Bn : void 0;
                      }
                      Fe += Rr;
                    }
                  }
                  function Vx(I, D, W, ot, xt, Pt, Ht, ve, Fe) {
                    var Ze = lm(ot, Pt, Ht), nr = um(ot, xt), wr = nr * Ht, Fr = I[0].x === 0 || I[0].x === Fe || I[0].y === 0 || I[0].y === Fe;
                    D - wr < D / 4 && (D = wr + D / 4);
                    var Rr = Pt * 2, Kr = Fr ? D / 2 * ve % D : (nr / 2 + Rr) * Ht * ve % D;
                    return cm(I, Kr, D, Ze, W, wr, Fr, !1, Fe);
                  }
                  function cm(I, D, W, ot, xt, Pt, Ht, ve, Fe) {
                    for (var Ze = Pt / 2, nr = zg(I), wr = 0, Fr = D - W, Rr = [], Kr = 0; Kr < I.length - 1; Kr++) {
                      for (var yn = I[Kr], Qn = I[Kr + 1], Bn = yn.dist(Qn), vi = Qn.angleTo(yn); Fr + W < wr + Bn; ) {
                        Fr += W;
                        var ni = (Fr - wr) / Bn, pi = ls(yn.x, Qn.x, ni), wi = ls(yn.y, Qn.y, ni);
                        if (pi >= 0 && pi < Fe && wi >= 0 && wi < Fe && Fr - Ze >= 0 && Fr + Ze <= nr) {
                          var Fi = new Tv(pi, wi, vi, Kr);
                          Fi._round(), (!ot || sm(I, Fi, Pt, ot, xt)) && Rr.push(Fi);
                        }
                      }
                      wr += Bn;
                    }
                    return !ve && !Rr.length && !Ht && (Rr = cm(I, wr / 2, W, ot, xt, Pt, Ht, !0, Fe)), Rr;
                  }
                  function fm(I, D, W, ot, xt) {
                    for (var Pt = [], Ht = 0; Ht < I.length; Ht++)
                      for (var ve = I[Ht], Fe = void 0, Ze = 0; Ze < ve.length - 1; Ze++) {
                        var nr = ve[Ze], wr = ve[Ze + 1];
                        nr.x < D && wr.x < D || (nr.x < D ? nr = new u(D, nr.y + (wr.y - nr.y) * ((D - nr.x) / (wr.x - nr.x)))._round() : wr.x < D && (wr = new u(D, nr.y + (wr.y - nr.y) * ((D - nr.x) / (wr.x - nr.x)))._round()), !(nr.y < W && wr.y < W) && (nr.y < W ? nr = new u(nr.x + (wr.x - nr.x) * ((W - nr.y) / (wr.y - nr.y)), W)._round() : wr.y < W && (wr = new u(nr.x + (wr.x - nr.x) * ((W - nr.y) / (wr.y - nr.y)), W)._round()), !(nr.x >= ot && wr.x >= ot) && (nr.x >= ot ? nr = new u(ot, nr.y + (wr.y - nr.y) * ((ot - nr.x) / (wr.x - nr.x)))._round() : wr.x >= ot && (wr = new u(ot, nr.y + (wr.y - nr.y) * ((ot - nr.x) / (wr.x - nr.x)))._round()), !(nr.y >= xt && wr.y >= xt) && (nr.y >= xt ? nr = new u(nr.x + (wr.x - nr.x) * ((xt - nr.y) / (wr.y - nr.y)), xt)._round() : wr.y >= xt && (wr = new u(nr.x + (wr.x - nr.x) * ((xt - nr.y) / (wr.y - nr.y)), xt)._round()), (!Fe || !nr.equals(Fe[Fe.length - 1])) && (Fe = [nr], Pt.push(Fe)), Fe.push(wr)))));
                      }
                    return Pt;
                  }
                  var ep = Vu;
                  function hm(I, D, W, ot) {
                    var xt = [], Pt = I.image, Ht = Pt.pixelRatio, ve = Pt.paddedRect.w - 2 * ep, Fe = Pt.paddedRect.h - 2 * ep, Ze = I.right - I.left, nr = I.bottom - I.top, wr = Pt.stretchX || [[
                      0,
                      ve
                    ]], Fr = Pt.stretchY || [[
                      0,
                      Fe
                    ]], Rr = function(Oo, mo) {
                      return Oo + mo[1] - mo[0];
                    }, Kr = wr.reduce(Rr, 0), yn = Fr.reduce(Rr, 0), Qn = ve - Kr, Bn = Fe - yn, vi = 0, ni = Kr, pi = 0, wi = yn, Fi = 0, Zi = Qn, Yi = 0, ma = Bn;
                    if (Pt.content && ot) {
                      var fa = Pt.content;
                      vi = z0(wr, 0, fa[0]), pi = z0(Fr, 0, fa[1]), ni = z0(wr, fa[0], fa[2]), wi = z0(Fr, fa[1], fa[3]), Fi = fa[0] - vi, Yi = fa[1] - pi, Zi = fa[2] - fa[0] - ni, ma = fa[3] - fa[1] - wi;
                    }
                    var va = function(Oo, mo, rs, os) {
                      var Ds = Wd(Oo.stretch - vi, ni, Ze, I.left), Xs = $p(Oo.fixed - Fi, Zi, Oo.stretch, Kr), fl = Wd(mo.stretch - pi, wi, nr, I.top), hl = $p(mo.fixed - Yi, ma, mo.stretch, yn), Au = Wd(rs.stretch - vi, ni, Ze, I.left), ou = $p(rs.fixed - Fi, Zi, rs.stretch, Kr), xl = Wd(os.stretch - pi, wi, nr, I.top), Hu = $p(os.fixed - Yi, ma, os.stretch, yn), Gu = new u(Ds, fl), dl = new u(Au, fl), su = new u(Au, xl), Su = new u(Ds, xl), jh = new u(Xs / Ht, hl / Ht), _d = new u(ou / Ht, Hu / Ht), Xd = D * Math.PI / 180;
                      if (Xd) {
                        var gh = Math.sin(Xd), uv = Math.cos(Xd), Ff = [
                          uv,
                          -gh,
                          gh,
                          uv
                        ];
                        Gu._matMult(Ff), dl._matMult(Ff), Su._matMult(Ff), su._matMult(Ff);
                      }
                      var Lv = Oo.stretch + Oo.fixed, Pv = rs.stretch + rs.fixed, Zg = mo.stretch + mo.fixed, l0 = os.stretch + os.fixed, Ic = {
                        x: Pt.paddedRect.x + ep + Lv,
                        y: Pt.paddedRect.y + ep + Zg,
                        w: Pv - Lv,
                        h: l0 - Zg
                      }, cv = Zi / Ht / Ze, j0 = ma / Ht / nr;
                      return {
                        tl: Gu,
                        tr: dl,
                        bl: Su,
                        br: su,
                        tex: Ic,
                        writingMode: void 0,
                        glyphOffset: [
                          0,
                          0
                        ],
                        sectionIndex: 0,
                        pixelOffsetTL: jh,
                        pixelOffsetBR: _d,
                        minFontScaleX: cv,
                        minFontScaleY: j0,
                        isSDF: W
                      };
                    };
                    if (!ot || !Pt.stretchX && !Pt.stretchY)
                      xt.push(va({
                        fixed: 0,
                        stretch: -1
                      }, {
                        fixed: 0,
                        stretch: -1
                      }, {
                        fixed: 0,
                        stretch: ve + 1
                      }, {
                        fixed: 0,
                        stretch: Fe + 1
                      }));
                    else
                      for (var Za = Qp(wr, Qn, Kr), Ta = Qp(Fr, Bn, yn), Aa = 0; Aa < Za.length - 1; Aa++)
                        for (var fo = Za[Aa], Ka = Za[Aa + 1], zo = 0; zo < Ta.length - 1; zo++) {
                          var Vo = Ta[zo], Fo = Ta[zo + 1];
                          xt.push(va(fo, Vo, Ka, Fo));
                        }
                    return xt;
                  }
                  function z0(I, D, W) {
                    for (var ot = 0, xt = 0, Pt = I; xt < Pt.length; xt += 1) {
                      var Ht = Pt[xt];
                      ot += Math.max(D, Math.min(W, Ht[1])) - Math.max(D, Math.min(W, Ht[0]));
                    }
                    return ot;
                  }
                  function Qp(I, D, W) {
                    for (var ot = [{
                      fixed: -ep,
                      stretch: 0
                    }], xt = 0, Pt = I; xt < Pt.length; xt += 1) {
                      var Ht = Pt[xt], ve = Ht[0], Fe = Ht[1], Ze = ot[ot.length - 1];
                      ot.push({
                        fixed: ve - Ze.stretch,
                        stretch: Ze.stretch
                      }), ot.push({
                        fixed: ve - Ze.stretch,
                        stretch: Ze.stretch + (Fe - ve)
                      });
                    }
                    return ot.push({
                      fixed: D + ep,
                      stretch: W
                    }), ot;
                  }
                  function Wd(I, D, W, ot) {
                    return I / D * W + ot;
                  }
                  function $p(I, D, W, ot) {
                    return I - D * W / ot;
                  }
                  function Hx(I, D, W, ot, xt, Pt, Ht, ve) {
                    for (var Fe = ot.layout.get("text-rotate").evaluate(Pt, {}) * Math.PI / 180, Ze = [], nr = 0, wr = D.positionedLines; nr < wr.length; nr += 1)
                      for (var Fr = wr[nr], Rr = 0, Kr = Fr.positionedGlyphs; Rr < Kr.length; Rr += 1) {
                        var yn = Kr[Rr];
                        if (yn.rect) {
                          var Qn = yn.rect || {}, Bn = 1, vi = Rg + Bn, ni = !0, pi = 1, wi = 0, Fi = (xt || ve) && yn.vertical, Zi = yn.metrics.advance * yn.scale / 2;
                          if (ve && D.verticalizable) {
                            var Yi = (yn.scale - 1) * Dl, ma = (Dl - yn.metrics.width * yn.scale) / 2;
                            wi = Fr.lineOffset / 2 - (yn.imageName ? -ma : Yi);
                          }
                          if (yn.imageName) {
                            var fa = Ht[yn.imageName];
                            ni = fa.sdf, pi = fa.pixelRatio, vi = Vu / pi;
                          }
                          var va = xt ? [
                            yn.x + Zi,
                            yn.y
                          ] : [
                            0,
                            0
                          ], Za = xt ? [
                            0,
                            0
                          ] : [
                            yn.x + Zi + W[0],
                            yn.y + W[1] - wi
                          ], Ta = [
                            0,
                            0
                          ];
                          Fi && (Ta = Za, Za = [
                            0,
                            0
                          ]);
                          var Aa = (yn.metrics.left - vi) * yn.scale - Zi + Za[0], fo = (-yn.metrics.top - vi) * yn.scale + Za[1], Ka = Aa + Qn.w * yn.scale / pi, zo = fo + Qn.h * yn.scale / pi, Vo = new u(Aa, fo), Fo = new u(Ka, fo), Oo = new u(Aa, zo), mo = new u(Ka, zo);
                          if (Fi) {
                            var rs = new u(-Zi, Zi - tp), os = -Math.PI / 2, Ds = Dl / 2 - Zi, Xs = yn.imageName ? Ds : 0, fl = new u(5 - tp - Ds, -Xs), hl = new (Function.prototype.bind.apply(u, [null].concat(Ta)))();
                            Vo._rotateAround(os, rs)._add(fl)._add(hl), Fo._rotateAround(os, rs)._add(fl)._add(hl), Oo._rotateAround(os, rs)._add(fl)._add(hl), mo._rotateAround(os, rs)._add(fl)._add(hl);
                          }
                          if (Fe) {
                            var Au = Math.sin(Fe), ou = Math.cos(Fe), xl = [
                              ou,
                              -Au,
                              Au,
                              ou
                            ];
                            Vo._matMult(xl), Fo._matMult(xl), Oo._matMult(xl), mo._matMult(xl);
                          }
                          var Hu = new u(0, 0), Gu = new u(0, 0), dl = 0, su = 0;
                          Ze.push({
                            tl: Vo,
                            tr: Fo,
                            bl: Oo,
                            br: mo,
                            tex: Qn,
                            writingMode: D.writingMode,
                            glyphOffset: va,
                            sectionIndex: yn.sectionIndex,
                            isSDF: ni,
                            pixelOffsetTL: Hu,
                            pixelOffsetBR: Gu,
                            minFontScaleX: dl,
                            minFontScaleY: su
                          });
                        }
                      }
                    return Ze;
                  }
                  var F0 = function(D, W, ot, xt, Pt, Ht, ve, Fe, Ze, nr) {
                    if (this.boxStartIndex = D.length, Ze) {
                      var wr = Ht.top, Fr = Ht.bottom, Rr = Ht.collisionPadding;
                      Rr && (wr -= Rr[1], Fr += Rr[3]);
                      var Kr = Fr - wr;
                      Kr > 0 && (Kr = Math.max(10, Kr), this.circleDiameter = Kr);
                    } else {
                      var yn = Ht.top * ve - Fe, Qn = Ht.bottom * ve + Fe, Bn = Ht.left * ve - Fe, vi = Ht.right * ve + Fe, ni = Ht.collisionPadding;
                      if (ni && (Bn -= ni[0] * ve, yn -= ni[1] * ve, vi += ni[2] * ve, Qn += ni[3] * ve), nr) {
                        var pi = new u(Bn, yn), wi = new u(vi, yn), Fi = new u(Bn, Qn), Zi = new u(vi, Qn), Yi = nr * Math.PI / 180;
                        pi._rotate(Yi), wi._rotate(Yi), Fi._rotate(Yi), Zi._rotate(Yi), Bn = Math.min(pi.x, wi.x, Fi.x, Zi.x), vi = Math.max(pi.x, wi.x, Fi.x, Zi.x), yn = Math.min(pi.y, wi.y, Fi.y, Zi.y), Qn = Math.max(pi.y, wi.y, Fi.y, Zi.y);
                      }
                      D.emplaceBack(W.x, W.y, Bn, yn, vi, Qn, ot, xt, Pt);
                    }
                    this.boxEndIndex = D.length;
                  }, rp = function(D, W) {
                    if (D === void 0 && (D = []), W === void 0 && (W = Fg), this.data = D, this.length = this.data.length, this.compare = W, this.length > 0)
                      for (var ot = (this.length >> 1) - 1; ot >= 0; ot--)
                        this._down(ot);
                  };
                  rp.prototype.push = function(D) {
                    this.data.push(D), this.length++, this._up(this.length - 1);
                  }, rp.prototype.pop = function() {
                    if (this.length !== 0) {
                      var D = this.data[0], W = this.data.pop();
                      return this.length--, this.length > 0 && (this.data[0] = W, this._down(0)), D;
                    }
                  }, rp.prototype.peek = function() {
                    return this.data[0];
                  }, rp.prototype._up = function(D) {
                    for (var W = this, ot = W.data, xt = W.compare, Pt = ot[D]; D > 0; ) {
                      var Ht = D - 1 >> 1, ve = ot[Ht];
                      if (xt(Pt, ve) >= 0)
                        break;
                      ot[D] = ve, D = Ht;
                    }
                    ot[D] = Pt;
                  }, rp.prototype._down = function(D) {
                    for (var W = this, ot = W.data, xt = W.compare, Pt = this.length >> 1, Ht = ot[D]; D < Pt; ) {
                      var ve = (D << 1) + 1, Fe = ot[ve], Ze = ve + 1;
                      if (Ze < this.length && xt(ot[Ze], Fe) < 0 && (ve = Ze, Fe = ot[Ze]), xt(Fe, Ht) >= 0)
                        break;
                      ot[D] = Fe, D = ve;
                    }
                    ot[D] = Ht;
                  };
                  function Fg(I, D) {
                    return I < D ? -1 : I > D ? 1 : 0;
                  }
                  function Og(I, D, W) {
                    W === void 0 && (W = !1);
                    for (var ot = 1 / 0, xt = 1 / 0, Pt = -1 / 0, Ht = -1 / 0, ve = I[0], Fe = 0; Fe < ve.length; Fe++) {
                      var Ze = ve[Fe];
                      (!Fe || Ze.x < ot) && (ot = Ze.x), (!Fe || Ze.y < xt) && (xt = Ze.y), (!Fe || Ze.x > Pt) && (Pt = Ze.x), (!Fe || Ze.y > Ht) && (Ht = Ze.y);
                    }
                    var nr = Pt - ot, wr = Ht - xt, Fr = Math.min(nr, wr), Rr = Fr / 2, Kr = new rp([], Gx);
                    if (Fr === 0)
                      return new u(ot, xt);
                    for (var yn = ot; yn < Pt; yn += Fr)
                      for (var Qn = xt; Qn < Ht; Qn += Fr)
                        Kr.push(new np(yn + Rr, Qn + Rr, Rr, I));
                    for (var Bn = jx(I), vi = Kr.length; Kr.length; ) {
                      var ni = Kr.pop();
                      (ni.d > Bn.d || !Bn.d) && (Bn = ni, W && console.log("found best %d after %d probes", Math.round(1e4 * ni.d) / 1e4, vi)), !(ni.max - Bn.d <= D) && (Rr = ni.h / 2, Kr.push(new np(ni.p.x - Rr, ni.p.y - Rr, Rr, I)), Kr.push(new np(ni.p.x + Rr, ni.p.y - Rr, Rr, I)), Kr.push(new np(ni.p.x - Rr, ni.p.y + Rr, Rr, I)), Kr.push(new np(ni.p.x + Rr, ni.p.y + Rr, Rr, I)), vi += 4);
                    }
                    return W && (console.log("num probes: " + vi), console.log("best distance: " + Bn.d)), Bn.p;
                  }
                  function Gx(I, D) {
                    return D.max - I.max;
                  }
                  function np(I, D, W, ot) {
                    this.p = new u(I, D), this.h = W, this.d = Wx(this.p, ot), this.max = this.d + this.h * Math.SQRT2;
                  }
                  function Wx(I, D) {
                    for (var W = !1, ot = 1 / 0, xt = 0; xt < D.length; xt++)
                      for (var Pt = D[xt], Ht = 0, ve = Pt.length, Fe = ve - 1; Ht < ve; Fe = Ht++) {
                        var Ze = Pt[Ht], nr = Pt[Fe];
                        Ze.y > I.y != nr.y > I.y && I.x < (nr.x - Ze.x) * (I.y - Ze.y) / (nr.y - Ze.y) + Ze.x && (W = !W), ot = Math.min(ot, nf(I, Ze, nr));
                      }
                    return (W ? 1 : -1) * Math.sqrt(ot);
                  }
                  function jx(I) {
                    for (var D = 0, W = 0, ot = 0, xt = I[0], Pt = 0, Ht = xt.length, ve = Ht - 1; Pt < Ht; ve = Pt++) {
                      var Fe = xt[Pt], Ze = xt[ve], nr = Fe.x * Ze.y - Ze.x * Fe.y;
                      W += (Fe.x + Ze.x) * nr, ot += (Fe.y + Ze.y) * nr, D += nr * 3;
                    }
                    return new np(W / D, ot / D, 0, I);
                  }
                  var Sv = 7, O0 = Number.POSITIVE_INFINITY;
                  function vc(I, D) {
                    function W(xt, Pt) {
                      var Ht = 0, ve = 0;
                      Pt < 0 && (Pt = 0);
                      var Fe = Pt / Math.sqrt(2);
                      switch (xt) {
                        case "top-right":
                        case "top-left":
                          ve = Fe - Sv;
                          break;
                        case "bottom-right":
                        case "bottom-left":
                          ve = -Fe + Sv;
                          break;
                        case "bottom":
                          ve = -Pt + Sv;
                          break;
                        case "top":
                          ve = Pt - Sv;
                          break;
                      }
                      switch (xt) {
                        case "top-right":
                        case "bottom-right":
                          Ht = -Fe;
                          break;
                        case "top-left":
                        case "bottom-left":
                          Ht = Fe;
                          break;
                        case "left":
                          Ht = Pt;
                          break;
                        case "right":
                          Ht = -Pt;
                          break;
                      }
                      return [
                        Ht,
                        ve
                      ];
                    }
                    function ot(xt, Pt, Ht) {
                      var ve = 0, Fe = 0;
                      switch (Pt = Math.abs(Pt), Ht = Math.abs(Ht), xt) {
                        case "top-right":
                        case "top-left":
                        case "top":
                          Fe = Ht - Sv;
                          break;
                        case "bottom-right":
                        case "bottom-left":
                        case "bottom":
                          Fe = -Ht + Sv;
                          break;
                      }
                      switch (xt) {
                        case "top-right":
                        case "bottom-right":
                        case "right":
                          ve = -Pt;
                          break;
                        case "top-left":
                        case "bottom-left":
                        case "left":
                          ve = Pt;
                          break;
                      }
                      return [
                        ve,
                        Fe
                      ];
                    }
                    return D[1] !== O0 ? ot(I, D[0], D[1]) : W(I, D[0]);
                  }
                  function Bg(I, D, W, ot, xt, Pt, Ht) {
                    I.createArrays();
                    var ve = 512 * I.overscaling;
                    I.tilePixelRatio = _a / ve, I.compareText = {}, I.iconsNeedLinear = !1;
                    var Fe = I.layers[0].layout, Ze = I.layers[0]._unevaluatedLayout._values, nr = {};
                    if (I.textSizeData.kind === "composite") {
                      var wr = I.textSizeData, Fr = wr.minZoom, Rr = wr.maxZoom;
                      nr.compositeTextSizes = [
                        Ze["text-size"].possiblyEvaluate(new ba(Fr), Ht),
                        Ze["text-size"].possiblyEvaluate(new ba(Rr), Ht)
                      ];
                    }
                    if (I.iconSizeData.kind === "composite") {
                      var Kr = I.iconSizeData, yn = Kr.minZoom, Qn = Kr.maxZoom;
                      nr.compositeIconSizes = [
                        Ze["icon-size"].possiblyEvaluate(new ba(yn), Ht),
                        Ze["icon-size"].possiblyEvaluate(new ba(Qn), Ht)
                      ];
                    }
                    nr.layoutTextSize = Ze["text-size"].possiblyEvaluate(new ba(I.zoom + 1), Ht), nr.layoutIconSize = Ze["icon-size"].possiblyEvaluate(new ba(I.zoom + 1), Ht), nr.textMaxSize = Ze["text-size"].possiblyEvaluate(new ba(18));
                    for (var Bn = Fe.get("text-line-height") * Dl, vi = Fe.get("text-rotation-alignment") === "map" && Fe.get("symbol-placement") !== "point", ni = Fe.get("text-keep-upright"), pi = Fe.get("text-size"), wi = function() {
                      var Yi = Zi[Fi], ma = Fe.get("text-font").evaluate(Yi, {}, Ht).join(","), fa = pi.evaluate(Yi, {}, Ht), va = nr.layoutTextSize.evaluate(Yi, {}, Ht), Za = nr.layoutIconSize.evaluate(Yi, {}, Ht), Ta = {
                        horizontal: {},
                        vertical: void 0
                      }, Aa = Yi.text, fo = [
                        0,
                        0
                      ];
                      if (Aa) {
                        var Ka = Aa.toString(), zo = Fe.get("text-letter-spacing").evaluate(Yi, {}, Ht) * Dl, Vo = an(Ka) ? zo : 0, Fo = Fe.get("text-anchor").evaluate(Yi, {}, Ht), Oo = Fe.get("text-variable-anchor");
                        if (!Oo) {
                          var mo = Fe.get("text-radial-offset").evaluate(Yi, {}, Ht);
                          mo ? fo = vc(Fo, [
                            mo * Dl,
                            O0
                          ]) : fo = Fe.get("text-offset").evaluate(Yi, {}, Ht).map(function(jh) {
                            return jh * Dl;
                          });
                        }
                        var rs = vi ? "center" : Fe.get("text-justify").evaluate(Yi, {}, Ht), os = Fe.get("symbol-placement"), Ds = os === "point" ? Fe.get("text-max-width").evaluate(Yi, {}, Ht) * Dl : 0, Xs = function() {
                          I.allowVerticalPlacement && kr(Ka) && (Ta.vertical = R0(Aa, D, W, xt, ma, Ds, Bn, Fo, "left", Vo, fo, lf.vertical, !0, os, va, fa));
                        };
                        if (!vi && Oo) {
                          for (var fl = rs === "auto" ? Oo.map(function(jh) {
                            return B0(jh);
                          }) : [rs], hl = !1, Au = 0; Au < fl.length; Au++) {
                            var ou = fl[Au];
                            if (!Ta.horizontal[ou])
                              if (hl)
                                Ta.horizontal[ou] = Ta.horizontal[0];
                              else {
                                var xl = R0(Aa, D, W, xt, ma, Ds, Bn, "center", ou, Vo, fo, lf.horizontal, !1, os, va, fa);
                                xl && (Ta.horizontal[ou] = xl, hl = xl.positionedLines.length === 1);
                              }
                          }
                          Xs();
                        } else {
                          rs === "auto" && (rs = B0(Fo));
                          var Hu = R0(Aa, D, W, xt, ma, Ds, Bn, Fo, rs, Vo, fo, lf.horizontal, !1, os, va, fa);
                          Hu && (Ta.horizontal[rs] = Hu), Xs(), kr(Ka) && vi && ni && (Ta.vertical = R0(Aa, D, W, xt, ma, Ds, Bn, Fo, rs, Vo, fo, lf.vertical, !1, os, va, fa));
                        }
                      }
                      var Gu = void 0, dl = !1;
                      if (Yi.icon && Yi.icon.name) {
                        var su = ot[Yi.icon.name];
                        su && (Gu = im(xt[Yi.icon.name], Fe.get("icon-offset").evaluate(Yi, {}, Ht), Fe.get("icon-anchor").evaluate(Yi, {}, Ht)), dl = su.sdf, I.sdfIcons === void 0 ? I.sdfIcons = su.sdf : I.sdfIcons !== su.sdf && U("Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer"), (su.pixelRatio !== I.pixelRatio || Fe.get("icon-rotate").constantOr(1) !== 0) && (I.iconsNeedLinear = !0));
                      }
                      var Su = ip(Ta.horizontal) || Ta.vertical;
                      I.iconsInText = Su ? Su.iconsInText : !1, (Su || Gu) && qp(I, Yi, Ta, Gu, ot, nr, va, Za, fo, dl, Ht);
                    }, Fi = 0, Zi = I.features; Fi < Zi.length; Fi += 1)
                      wi();
                    Pt && I.generateCollisionDebugBuffers();
                  }
                  function B0(I) {
                    switch (I) {
                      case "right":
                      case "top-right":
                      case "bottom-right":
                        return "right";
                      case "left":
                      case "top-left":
                      case "bottom-left":
                        return "left";
                    }
                    return "center";
                  }
                  function qp(I, D, W, ot, xt, Pt, Ht, ve, Fe, Ze, nr) {
                    var wr = Pt.textMaxSize.evaluate(D, {});
                    wr === void 0 && (wr = Ht);
                    var Fr = I.layers[0].layout, Rr = Fr.get("icon-offset").evaluate(D, {}, nr), Kr = ip(W.horizontal), yn = 24, Qn = Ht / yn, Bn = I.tilePixelRatio * Qn, vi = I.tilePixelRatio * wr / yn, ni = I.tilePixelRatio * ve, pi = I.tilePixelRatio * Fr.get("symbol-spacing"), wi = Fr.get("text-padding") * I.tilePixelRatio, Fi = Fr.get("icon-padding") * I.tilePixelRatio, Zi = Fr.get("text-max-angle") / 180 * Math.PI, Yi = Fr.get("text-rotation-alignment") === "map" && Fr.get("symbol-placement") !== "point", ma = Fr.get("icon-rotation-alignment") === "map" && Fr.get("symbol-placement") !== "point", fa = Fr.get("symbol-placement"), va = pi / 2, Za = Fr.get("icon-text-fit"), Ta;
                    ot && Za !== "none" && (I.allowVerticalPlacement && W.vertical && (Ta = am(ot, W.vertical, Za, Fr.get("icon-text-fit-padding"), Rr, Qn)), Kr && (ot = am(ot, Kr, Za, Fr.get("icon-text-fit-padding"), Rr, Qn)));
                    var Aa = function(uv, Ff) {
                      Ff.x < 0 || Ff.x >= _a || Ff.y < 0 || Ff.y >= _a || ap(I, Ff, uv, W, ot, xt, Ta, I.layers[0], I.collisionBoxArray, D.index, D.sourceLayerIndex, I.index, Bn, wi, Yi, Fe, ni, Fi, ma, Rr, D, Pt, Ze, nr, Ht);
                    };
                    if (fa === "line")
                      for (var fo = 0, Ka = fm(D.geometry, 0, 0, _a, _a); fo < Ka.length; fo += 1)
                        for (var zo = Ka[fo], Vo = Vx(zo, pi, Zi, W.vertical || Kr, ot, yn, vi, I.overscaling, _a), Fo = 0, Oo = Vo; Fo < Oo.length; Fo += 1) {
                          var mo = Oo[Fo], rs = Kr;
                          (!rs || !Zx(I, rs.text, va, mo)) && Aa(zo, mo);
                        }
                    else if (fa === "line-center")
                      for (var os = 0, Ds = D.geometry; os < Ds.length; os += 1) {
                        var Xs = Ds[os];
                        if (Xs.length > 1) {
                          var fl = Ux(Xs, Zi, W.vertical || Kr, ot, yn, vi);
                          fl && Aa(Xs, fl);
                        }
                      }
                    else if (D.type === "Polygon")
                      for (var hl = 0, Au = ph(D.geometry, 0); hl < Au.length; hl += 1) {
                        var ou = Au[hl], xl = Og(ou, 16);
                        Aa(ou[0], new Tv(xl.x, xl.y, 0));
                      }
                    else if (D.type === "LineString")
                      for (var Hu = 0, Gu = D.geometry; Hu < Gu.length; Hu += 1) {
                        var dl = Gu[Hu];
                        Aa(dl, new Tv(dl[0].x, dl[0].y, 0));
                      }
                    else if (D.type === "Point")
                      for (var su = 0, Su = D.geometry; su < Su.length; su += 1)
                        for (var jh = Su[su], _d = 0, Xd = jh; _d < Xd.length; _d += 1) {
                          var gh = Xd[_d];
                          Aa([gh], new Tv(gh.x, gh.y, 0));
                        }
                  }
                  var t0 = 255, jd = t0 * Gh;
                  function Ng(I, D, W, ot, xt, Pt, Ht, ve, Fe, Ze, nr, wr, Fr, Rr, Kr) {
                    var yn = Hx(D, W, ve, xt, Pt, Ht, ot, I.allowVerticalPlacement), Qn = I.textSizeData, Bn = null;
                    Qn.kind === "source" ? (Bn = [Gh * xt.layout.get("text-size").evaluate(Ht, {})], Bn[0] > jd && U(I.layerIds[0] + ': Value for "text-size" is >= ' + t0 + '. Reduce your "text-size".')) : Qn.kind === "composite" && (Bn = [
                      Gh * Rr.compositeTextSizes[0].evaluate(Ht, {}, Kr),
                      Gh * Rr.compositeTextSizes[1].evaluate(Ht, {}, Kr)
                    ], (Bn[0] > jd || Bn[1] > jd) && U(I.layerIds[0] + ': Value for "text-size" is >= ' + t0 + '. Reduce your "text-size".')), I.addSymbols(I.text, yn, Bn, ve, Pt, Ht, Ze, D, Fe.lineStartIndex, Fe.lineLength, Fr, Kr);
                    for (var vi = 0, ni = nr; vi < ni.length; vi += 1) {
                      var pi = ni[vi];
                      wr[pi] = I.text.placedSymbolArray.length - 1;
                    }
                    return yn.length * 4;
                  }
                  function ip(I) {
                    for (var D in I)
                      return I[D];
                    return null;
                  }
                  function ap(I, D, W, ot, xt, Pt, Ht, ve, Fe, Ze, nr, wr, Fr, Rr, Kr, yn, Qn, Bn, vi, ni, pi, wi, Fi, Zi, Yi) {
                    var ma, fa = I.addToLineVertexArray(D, W), va, Za, Ta, Aa, fo = 0, Ka = 0, zo = 0, Vo = 0, Fo = -1, Oo = -1, mo = {}, rs = _t(""), os = 0, Ds = 0;
                    if (ve._unevaluatedLayout.getValue("text-radial-offset") === void 0 ? (ma = ve.layout.get("text-offset").evaluate(pi, {}, Zi).map(function(u0) {
                      return u0 * Dl;
                    }), os = ma[0], Ds = ma[1]) : (os = ve.layout.get("text-radial-offset").evaluate(pi, {}, Zi) * Dl, Ds = O0), I.allowVerticalPlacement && ot.vertical) {
                      var Xs = ve.layout.get("text-rotate").evaluate(pi, {}, Zi), fl = Xs + 90, hl = ot.vertical;
                      Ta = new F0(Fe, D, Ze, nr, wr, hl, Fr, Rr, Kr, fl), Ht && (Aa = new F0(Fe, D, Ze, nr, wr, Ht, Qn, Bn, Kr, fl));
                    }
                    if (xt) {
                      var Au = ve.layout.get("icon-rotate").evaluate(pi, {}), ou = ve.layout.get("icon-text-fit") !== "none", xl = hm(xt, Au, Fi, ou), Hu = Ht ? hm(Ht, Au, Fi, ou) : void 0;
                      Za = new F0(Fe, D, Ze, nr, wr, xt, Qn, Bn, !1, Au), fo = xl.length * 4;
                      var Gu = I.iconSizeData, dl = null;
                      Gu.kind === "source" ? (dl = [Gh * ve.layout.get("icon-size").evaluate(pi, {})], dl[0] > jd && U(I.layerIds[0] + ': Value for "icon-size" is >= ' + t0 + '. Reduce your "icon-size".')) : Gu.kind === "composite" && (dl = [
                        Gh * wi.compositeIconSizes[0].evaluate(pi, {}, Zi),
                        Gh * wi.compositeIconSizes[1].evaluate(pi, {}, Zi)
                      ], (dl[0] > jd || dl[1] > jd) && U(I.layerIds[0] + ': Value for "icon-size" is >= ' + t0 + '. Reduce your "icon-size".')), I.addSymbols(I.icon, xl, dl, ni, vi, pi, !1, D, fa.lineStartIndex, fa.lineLength, -1, Zi), Fo = I.icon.placedSymbolArray.length - 1, Hu && (Ka = Hu.length * 4, I.addSymbols(I.icon, Hu, dl, ni, vi, pi, lf.vertical, D, fa.lineStartIndex, fa.lineLength, -1, Zi), Oo = I.icon.placedSymbolArray.length - 1);
                    }
                    for (var su in ot.horizontal) {
                      var Su = ot.horizontal[su];
                      if (!va) {
                        rs = _t(Su.text);
                        var jh = ve.layout.get("text-rotate").evaluate(pi, {}, Zi);
                        va = new F0(Fe, D, Ze, nr, wr, Su, Fr, Rr, Kr, jh);
                      }
                      var _d = Su.positionedLines.length === 1;
                      if (zo += Ng(I, D, Su, Pt, ve, Kr, pi, yn, fa, ot.vertical ? lf.horizontal : lf.horizontalOnly, _d ? Object.keys(ot.horizontal) : [su], mo, Fo, wi, Zi), _d)
                        break;
                    }
                    ot.vertical && (Vo += Ng(I, D, ot.vertical, Pt, ve, Kr, pi, yn, fa, lf.vertical, ["vertical"], mo, Oo, wi, Zi));
                    var Xd = va ? va.boxStartIndex : I.collisionBoxArray.length, gh = va ? va.boxEndIndex : I.collisionBoxArray.length, uv = Ta ? Ta.boxStartIndex : I.collisionBoxArray.length, Ff = Ta ? Ta.boxEndIndex : I.collisionBoxArray.length, Lv = Za ? Za.boxStartIndex : I.collisionBoxArray.length, Pv = Za ? Za.boxEndIndex : I.collisionBoxArray.length, Zg = Aa ? Aa.boxStartIndex : I.collisionBoxArray.length, l0 = Aa ? Aa.boxEndIndex : I.collisionBoxArray.length, Ic = -1, cv = function(u0, N) {
                      return u0 && u0.circleDiameter ? Math.max(u0.circleDiameter, N) : N;
                    };
                    Ic = cv(va, Ic), Ic = cv(Ta, Ic), Ic = cv(Za, Ic), Ic = cv(Aa, Ic);
                    var j0 = Ic > -1 ? 1 : 0;
                    j0 && (Ic *= Yi / Dl), I.glyphOffsetArray.length >= es.MAX_GLYPHS && U("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"), pi.sortKey !== void 0 && I.addToSortKeyRanges(I.symbolInstances.length, pi.sortKey), I.symbolInstances.emplaceBack(D.x, D.y, mo.right >= 0 ? mo.right : -1, mo.center >= 0 ? mo.center : -1, mo.left >= 0 ? mo.left : -1, mo.vertical || -1, Fo, Oo, rs, Xd, gh, uv, Ff, Lv, Pv, Zg, l0, Ze, zo, Vo, fo, Ka, j0, 0, Fr, os, Ds, Ic);
                  }
                  function Zx(I, D, W, ot) {
                    var xt = I.compareText;
                    if (!(D in xt))
                      xt[D] = [];
                    else
                      for (var Pt = xt[D], Ht = Pt.length - 1; Ht >= 0; Ht--)
                        if (ot.dist(Pt[Ht]) < W)
                          return !0;
                    return xt[D].push(ot), !1;
                  }
                  var N0 = Yv.VectorTileFeature.types, U0 = [{
                    name: "a_fade_opacity",
                    components: 1,
                    type: "Uint8",
                    offset: 0
                  }];
                  function V0(I, D, W, ot, xt, Pt, Ht, ve, Fe, Ze, nr, wr, Fr) {
                    var Rr = ve ? Math.min(jd, Math.round(ve[0])) : 0, Kr = ve ? Math.min(jd, Math.round(ve[1])) : 0;
                    I.emplaceBack(D, W, Math.round(ot * 32), Math.round(xt * 32), Pt, Ht, (Rr << 1) + (Fe ? 1 : 0), Kr, Ze * 16, nr * 16, wr * 256, Fr * 256);
                  }
                  function Ug(I, D, W) {
                    I.emplaceBack(D.x, D.y, W), I.emplaceBack(D.x, D.y, W), I.emplaceBack(D.x, D.y, W), I.emplaceBack(D.x, D.y, W);
                  }
                  function dm(I) {
                    for (var D = 0, W = I.sections; D < W.length; D += 1) {
                      var ot = W[D];
                      if (zn(ot.text))
                        return !0;
                    }
                    return !1;
                  }
                  var op = function(D) {
                    this.layoutVertexArray = new Ko(), this.indexArray = new ol(), this.programConfigurations = D, this.segments = new Ps(), this.dynamicLayoutVertexArray = new lh(), this.opacityVertexArray = new zd(), this.placedSymbolArray = new Od();
                  };
                  op.prototype.isEmpty = function() {
                    return this.layoutVertexArray.length === 0 && this.indexArray.length === 0 && this.dynamicLayoutVertexArray.length === 0 && this.opacityVertexArray.length === 0;
                  }, op.prototype.upload = function(D, W, ot, xt) {
                    this.isEmpty() || (ot && (this.layoutVertexBuffer = D.createVertexBuffer(this.layoutVertexArray, iv.members), this.indexBuffer = D.createIndexBuffer(this.indexArray, W), this.dynamicLayoutVertexBuffer = D.createVertexBuffer(this.dynamicLayoutVertexArray, px.members, !0), this.opacityVertexBuffer = D.createVertexBuffer(this.opacityVertexArray, U0, !0), this.opacityVertexBuffer.itemSize = 1), (ot || xt) && this.programConfigurations.upload(D));
                  }, op.prototype.destroy = function() {
                    this.layoutVertexBuffer && (this.layoutVertexBuffer.destroy(), this.indexBuffer.destroy(), this.programConfigurations.destroy(), this.segments.destroy(), this.dynamicLayoutVertexBuffer.destroy(), this.opacityVertexBuffer.destroy());
                  }, Kt("SymbolBuffers", op);
                  var sp = function(D, W, ot) {
                    this.layoutVertexArray = new D(), this.layoutAttributes = W, this.indexArray = new ot(), this.segments = new Ps(), this.collisionVertexArray = new yu();
                  };
                  sp.prototype.upload = function(D) {
                    this.layoutVertexBuffer = D.createVertexBuffer(this.layoutVertexArray, this.layoutAttributes), this.indexBuffer = D.createIndexBuffer(this.indexArray), this.collisionVertexBuffer = D.createVertexBuffer(this.collisionVertexArray, Xy.members, !0);
                  }, sp.prototype.destroy = function() {
                    this.layoutVertexBuffer && (this.layoutVertexBuffer.destroy(), this.indexBuffer.destroy(), this.segments.destroy(), this.collisionVertexBuffer.destroy());
                  }, Kt("CollisionBuffers", sp);
                  var es = function(D) {
                    this.collisionBoxArray = D.collisionBoxArray, this.zoom = D.zoom, this.overscaling = D.overscaling, this.layers = D.layers, this.layerIds = this.layers.map(function(Fe) {
                      return Fe.id;
                    }), this.index = D.index, this.pixelRatio = D.pixelRatio, this.sourceLayerIndex = D.sourceLayerIndex, this.hasPattern = !1, this.hasRTLText = !1, this.sortKeyRanges = [], this.collisionCircleArray = [], this.placementInvProjMatrix = Oh([]), this.placementViewportMatrix = Oh([]);
                    var W = this.layers[0], ot = W._unevaluatedLayout._values;
                    this.textSizeData = Wh(this.zoom, ot["text-size"]), this.iconSizeData = Wh(this.zoom, ot["icon-size"]);
                    var xt = this.layers[0].layout, Pt = xt.get("symbol-sort-key"), Ht = xt.get("symbol-z-order");
                    this.canOverlap = xt.get("text-allow-overlap") || xt.get("icon-allow-overlap") || xt.get("text-ignore-placement") || xt.get("icon-ignore-placement"), this.sortFeaturesByKey = Ht !== "viewport-y" && Pt.constantOr(1) !== void 0;
                    var ve = Ht === "viewport-y" || Ht === "auto" && !this.sortFeaturesByKey;
                    this.sortFeaturesByY = ve && this.canOverlap, xt.get("symbol-placement") === "point" && (this.writingModes = xt.get("text-writing-mode").map(function(Fe) {
                      return lf[Fe];
                    })), this.stateDependentLayerIds = this.layers.filter(function(Fe) {
                      return Fe.isStateDependent();
                    }).map(function(Fe) {
                      return Fe.id;
                    }), this.sourceID = D.sourceID;
                  };
                  es.prototype.createArrays = function() {
                    this.text = new op(new la(this.layers, this.zoom, function(D) {
                      return /^text/.test(D);
                    })), this.icon = new op(new la(this.layers, this.zoom, function(D) {
                      return /^icon/.test(D);
                    })), this.glyphOffsetArray = new Ls(), this.lineVertexArray = new sc(), this.symbolInstances = new Ts();
                  }, es.prototype.calculateGlyphDependencies = function(D, W, ot, xt, Pt) {
                    for (var Ht = 0; Ht < D.length; Ht++)
                      if (W[D.charCodeAt(Ht)] = !0, (ot || xt) && Pt) {
                        var ve = Gp[D.charAt(Ht)];
                        ve && (W[ve.charCodeAt(0)] = !0);
                      }
                  }, es.prototype.populate = function(D, W, ot) {
                    var xt = this.layers[0], Pt = xt.layout, Ht = Pt.get("text-font"), ve = Pt.get("text-field"), Fe = Pt.get("icon-image"), Ze = (ve.value.kind !== "constant" || ve.value.value instanceof jo && !ve.value.value.isEmpty() || ve.value.value.toString().length > 0) && (Ht.value.kind !== "constant" || Ht.value.value.length > 0), nr = Fe.value.kind !== "constant" || !!Fe.value.value || Object.keys(Fe.parameters).length > 0, wr = Pt.get("symbol-sort-key");
                    if (this.features = [], !(!Ze && !nr)) {
                      for (var Fr = W.iconDependencies, Rr = W.glyphDependencies, Kr = W.availableImages, yn = new ba(this.zoom), Qn = 0, Bn = D; Qn < Bn.length; Qn += 1) {
                        var vi = Bn[Qn], ni = vi.feature, pi = vi.id, wi = vi.index, Fi = vi.sourceLayerIndex, Zi = xt._featureFilter.needGeometry, Yi = Zo(ni, Zi);
                        if (xt._featureFilter.filter(yn, Yi, ot)) {
                          Zi || (Yi.geometry = Mo(ni));
                          var ma = void 0;
                          if (Ze) {
                            var fa = xt.getValueAndResolveTokens("text-field", Yi, ot, Kr), va = jo.factory(fa);
                            dm(va) && (this.hasRTLText = !0), (!this.hasRTLText || Oa() === "unavailable" || this.hasRTLText && Ui.isParsed()) && (ma = mx(va, xt, Yi));
                          }
                          var Za = void 0;
                          if (nr) {
                            var Ta = xt.getValueAndResolveTokens("icon-image", Yi, ot, Kr);
                            Ta instanceof Ys ? Za = Ta : Za = Ys.fromString(Ta);
                          }
                          if (!(!ma && !Za)) {
                            var Aa = this.sortFeaturesByKey ? wr.evaluate(Yi, {}, ot) : void 0, fo = {
                              id: pi,
                              text: ma,
                              icon: Za,
                              index: wi,
                              sourceLayerIndex: Fi,
                              geometry: Yi.geometry,
                              properties: ni.properties,
                              type: N0[ni.type],
                              sortKey: Aa
                            };
                            if (this.features.push(fo), Za && (Fr[Za.name] = !0), ma) {
                              var Ka = Ht.evaluate(Yi, {}, ot).join(","), zo = Pt.get("text-rotation-alignment") === "map" && Pt.get("symbol-placement") !== "point";
                              this.allowVerticalPlacement = this.writingModes && this.writingModes.indexOf(lf.vertical) >= 0;
                              for (var Vo = 0, Fo = ma.sections; Vo < Fo.length; Vo += 1) {
                                var Oo = Fo[Vo];
                                if (Oo.image)
                                  Fr[Oo.image.name] = !0;
                                else {
                                  var mo = kr(ma.toString()), rs = Oo.fontStack || Ka, os = Rr[rs] = Rr[rs] || {};
                                  this.calculateGlyphDependencies(Oo.text, os, zo, this.allowVerticalPlacement, mo);
                                }
                              }
                            }
                          }
                        }
                      }
                      Pt.get("symbol-placement") === "line" && (this.features = xx(this.features)), this.sortFeaturesByKey && this.features.sort(function(Ds, Xs) {
                        return Ds.sortKey - Xs.sortKey;
                      });
                    }
                  }, es.prototype.update = function(D, W, ot) {
                    this.stateDependentLayers.length && (this.text.programConfigurations.updatePaintArrays(D, W, this.layers, ot), this.icon.programConfigurations.updatePaintArrays(D, W, this.layers, ot));
                  }, es.prototype.isEmpty = function() {
                    return this.symbolInstances.length === 0 && !this.hasRTLText;
                  }, es.prototype.uploadPending = function() {
                    return !this.uploaded || this.text.programConfigurations.needsUpload || this.icon.programConfigurations.needsUpload;
                  }, es.prototype.upload = function(D) {
                    !this.uploaded && this.hasDebugData() && (this.textCollisionBox.upload(D), this.iconCollisionBox.upload(D)), this.text.upload(D, this.sortFeaturesByY, !this.uploaded, this.text.programConfigurations.needsUpload), this.icon.upload(D, this.sortFeaturesByY, !this.uploaded, this.icon.programConfigurations.needsUpload), this.uploaded = !0;
                  }, es.prototype.destroyDebugData = function() {
                    this.textCollisionBox.destroy(), this.iconCollisionBox.destroy();
                  }, es.prototype.destroy = function() {
                    this.text.destroy(), this.icon.destroy(), this.hasDebugData() && this.destroyDebugData();
                  }, es.prototype.addToLineVertexArray = function(D, W) {
                    var ot = this.lineVertexArray.length;
                    if (D.segment !== void 0) {
                      for (var xt = D.dist(W[D.segment + 1]), Pt = D.dist(W[D.segment]), Ht = {}, ve = D.segment + 1; ve < W.length; ve++)
                        Ht[ve] = {
                          x: W[ve].x,
                          y: W[ve].y,
                          tileUnitDistanceFromAnchor: xt
                        }, ve < W.length - 1 && (xt += W[ve + 1].dist(W[ve]));
                      for (var Fe = D.segment || 0; Fe >= 0; Fe--)
                        Ht[Fe] = {
                          x: W[Fe].x,
                          y: W[Fe].y,
                          tileUnitDistanceFromAnchor: Pt
                        }, Fe > 0 && (Pt += W[Fe - 1].dist(W[Fe]));
                      for (var Ze = 0; Ze < W.length; Ze++) {
                        var nr = Ht[Ze];
                        this.lineVertexArray.emplaceBack(nr.x, nr.y, nr.tileUnitDistanceFromAnchor);
                      }
                    }
                    return {
                      lineStartIndex: ot,
                      lineLength: this.lineVertexArray.length - ot
                    };
                  }, es.prototype.addSymbols = function(D, W, ot, xt, Pt, Ht, ve, Fe, Ze, nr, wr, Fr) {
                    for (var Rr = D.indexArray, Kr = D.layoutVertexArray, yn = D.segments.prepareSegment(4 * W.length, Kr, Rr, this.canOverlap ? Ht.sortKey : void 0), Qn = this.glyphOffsetArray.length, Bn = yn.vertexLength, vi = this.allowVerticalPlacement && ve === lf.vertical ? Math.PI / 2 : 0, ni = Ht.text && Ht.text.sections, pi = 0; pi < W.length; pi++) {
                      var wi = W[pi], Fi = wi.tl, Zi = wi.tr, Yi = wi.bl, ma = wi.br, fa = wi.tex, va = wi.pixelOffsetTL, Za = wi.pixelOffsetBR, Ta = wi.minFontScaleX, Aa = wi.minFontScaleY, fo = wi.glyphOffset, Ka = wi.isSDF, zo = wi.sectionIndex, Vo = yn.vertexLength, Fo = fo[1];
                      V0(Kr, Fe.x, Fe.y, Fi.x, Fo + Fi.y, fa.x, fa.y, ot, Ka, va.x, va.y, Ta, Aa), V0(Kr, Fe.x, Fe.y, Zi.x, Fo + Zi.y, fa.x + fa.w, fa.y, ot, Ka, Za.x, va.y, Ta, Aa), V0(Kr, Fe.x, Fe.y, Yi.x, Fo + Yi.y, fa.x, fa.y + fa.h, ot, Ka, va.x, Za.y, Ta, Aa), V0(Kr, Fe.x, Fe.y, ma.x, Fo + ma.y, fa.x + fa.w, fa.y + fa.h, ot, Ka, Za.x, Za.y, Ta, Aa), Ug(D.dynamicLayoutVertexArray, Fe, vi), Rr.emplaceBack(Vo, Vo + 1, Vo + 2), Rr.emplaceBack(Vo + 1, Vo + 2, Vo + 3), yn.vertexLength += 4, yn.primitiveLength += 2, this.glyphOffsetArray.emplaceBack(fo[0]), (pi === W.length - 1 || zo !== W[pi + 1].sectionIndex) && D.programConfigurations.populatePaintArrays(Kr.length, Ht, Ht.index, {}, Fr, ni && ni[zo]);
                    }
                    D.placedSymbolArray.emplaceBack(Fe.x, Fe.y, Qn, this.glyphOffsetArray.length - Qn, Bn, Ze, nr, Fe.segment, ot ? ot[0] : 0, ot ? ot[1] : 0, xt[0], xt[1], ve, 0, !1, 0, wr);
                  }, es.prototype._addCollisionDebugVertex = function(D, W, ot, xt, Pt, Ht) {
                    return W.emplaceBack(0, 0), D.emplaceBack(ot.x, ot.y, xt, Pt, Math.round(Ht.x), Math.round(Ht.y));
                  }, es.prototype.addCollisionDebugVertices = function(D, W, ot, xt, Pt, Ht, ve) {
                    var Fe = Pt.segments.prepareSegment(4, Pt.layoutVertexArray, Pt.indexArray), Ze = Fe.vertexLength, nr = Pt.layoutVertexArray, wr = Pt.collisionVertexArray, Fr = ve.anchorX, Rr = ve.anchorY;
                    this._addCollisionDebugVertex(nr, wr, Ht, Fr, Rr, new u(D, W)), this._addCollisionDebugVertex(nr, wr, Ht, Fr, Rr, new u(ot, W)), this._addCollisionDebugVertex(nr, wr, Ht, Fr, Rr, new u(ot, xt)), this._addCollisionDebugVertex(nr, wr, Ht, Fr, Rr, new u(D, xt)), Fe.vertexLength += 4;
                    var Kr = Pt.indexArray;
                    Kr.emplaceBack(Ze, Ze + 1), Kr.emplaceBack(Ze + 1, Ze + 2), Kr.emplaceBack(Ze + 2, Ze + 3), Kr.emplaceBack(Ze + 3, Ze), Fe.primitiveLength += 4;
                  }, es.prototype.addDebugCollisionBoxes = function(D, W, ot, xt) {
                    for (var Pt = D; Pt < W; Pt++) {
                      var Ht = this.collisionBoxArray.get(Pt), ve = Ht.x1, Fe = Ht.y1, Ze = Ht.x2, nr = Ht.y2;
                      this.addCollisionDebugVertices(ve, Fe, Ze, nr, xt ? this.textCollisionBox : this.iconCollisionBox, Ht.anchorPoint, ot);
                    }
                  }, es.prototype.generateCollisionDebugBuffers = function() {
                    this.hasDebugData() && this.destroyDebugData(), this.textCollisionBox = new sp(Fd, wv.members, fh), this.iconCollisionBox = new sp(Fd, wv.members, fh);
                    for (var D = 0; D < this.symbolInstances.length; D++) {
                      var W = this.symbolInstances.get(D);
                      this.addDebugCollisionBoxes(W.textBoxStartIndex, W.textBoxEndIndex, W, !0), this.addDebugCollisionBoxes(W.verticalTextBoxStartIndex, W.verticalTextBoxEndIndex, W, !0), this.addDebugCollisionBoxes(W.iconBoxStartIndex, W.iconBoxEndIndex, W, !1), this.addDebugCollisionBoxes(W.verticalIconBoxStartIndex, W.verticalIconBoxEndIndex, W, !1);
                    }
                  }, es.prototype._deserializeCollisionBoxesForSymbol = function(D, W, ot, xt, Pt, Ht, ve, Fe, Ze) {
                    for (var nr = {}, wr = W; wr < ot; wr++) {
                      var Fr = D.get(wr);
                      nr.textBox = {
                        x1: Fr.x1,
                        y1: Fr.y1,
                        x2: Fr.x2,
                        y2: Fr.y2,
                        anchorPointX: Fr.anchorPointX,
                        anchorPointY: Fr.anchorPointY
                      }, nr.textFeatureIndex = Fr.featureIndex;
                      break;
                    }
                    for (var Rr = xt; Rr < Pt; Rr++) {
                      var Kr = D.get(Rr);
                      nr.verticalTextBox = {
                        x1: Kr.x1,
                        y1: Kr.y1,
                        x2: Kr.x2,
                        y2: Kr.y2,
                        anchorPointX: Kr.anchorPointX,
                        anchorPointY: Kr.anchorPointY
                      }, nr.verticalTextFeatureIndex = Kr.featureIndex;
                      break;
                    }
                    for (var yn = Ht; yn < ve; yn++) {
                      var Qn = D.get(yn);
                      nr.iconBox = {
                        x1: Qn.x1,
                        y1: Qn.y1,
                        x2: Qn.x2,
                        y2: Qn.y2,
                        anchorPointX: Qn.anchorPointX,
                        anchorPointY: Qn.anchorPointY
                      }, nr.iconFeatureIndex = Qn.featureIndex;
                      break;
                    }
                    for (var Bn = Fe; Bn < Ze; Bn++) {
                      var vi = D.get(Bn);
                      nr.verticalIconBox = {
                        x1: vi.x1,
                        y1: vi.y1,
                        x2: vi.x2,
                        y2: vi.y2,
                        anchorPointX: vi.anchorPointX,
                        anchorPointY: vi.anchorPointY
                      }, nr.verticalIconFeatureIndex = vi.featureIndex;
                      break;
                    }
                    return nr;
                  }, es.prototype.deserializeCollisionBoxes = function(D) {
                    this.collisionArrays = [];
                    for (var W = 0; W < this.symbolInstances.length; W++) {
                      var ot = this.symbolInstances.get(W);
                      this.collisionArrays.push(this._deserializeCollisionBoxesForSymbol(D, ot.textBoxStartIndex, ot.textBoxEndIndex, ot.verticalTextBoxStartIndex, ot.verticalTextBoxEndIndex, ot.iconBoxStartIndex, ot.iconBoxEndIndex, ot.verticalIconBoxStartIndex, ot.verticalIconBoxEndIndex));
                    }
                  }, es.prototype.hasTextData = function() {
                    return this.text.segments.get().length > 0;
                  }, es.prototype.hasIconData = function() {
                    return this.icon.segments.get().length > 0;
                  }, es.prototype.hasDebugData = function() {
                    return this.textCollisionBox && this.iconCollisionBox;
                  }, es.prototype.hasTextCollisionBoxData = function() {
                    return this.hasDebugData() && this.textCollisionBox.segments.get().length > 0;
                  }, es.prototype.hasIconCollisionBoxData = function() {
                    return this.hasDebugData() && this.iconCollisionBox.segments.get().length > 0;
                  }, es.prototype.addIndicesForPlacedSymbol = function(D, W) {
                    for (var ot = D.placedSymbolArray.get(W), xt = ot.vertexStartIndex + ot.numGlyphs * 4, Pt = ot.vertexStartIndex; Pt < xt; Pt += 4)
                      D.indexArray.emplaceBack(Pt, Pt + 1, Pt + 2), D.indexArray.emplaceBack(Pt + 1, Pt + 2, Pt + 3);
                  }, es.prototype.getSortedSymbolIndexes = function(D) {
                    if (this.sortedAngle === D && this.symbolInstanceIndexes !== void 0)
                      return this.symbolInstanceIndexes;
                    for (var W = Math.sin(D), ot = Math.cos(D), xt = [], Pt = [], Ht = [], ve = 0; ve < this.symbolInstances.length; ++ve) {
                      Ht.push(ve);
                      var Fe = this.symbolInstances.get(ve);
                      xt.push(Math.round(W * Fe.anchorX + ot * Fe.anchorY) | 0), Pt.push(Fe.featureIndex);
                    }
                    return Ht.sort(function(Ze, nr) {
                      return xt[Ze] - xt[nr] || Pt[nr] - Pt[Ze];
                    }), Ht;
                  }, es.prototype.addToSortKeyRanges = function(D, W) {
                    var ot = this.sortKeyRanges[this.sortKeyRanges.length - 1];
                    ot && ot.sortKey === W ? ot.symbolInstanceEnd = D + 1 : this.sortKeyRanges.push({
                      sortKey: W,
                      symbolInstanceStart: D,
                      symbolInstanceEnd: D + 1
                    });
                  }, es.prototype.sortFeatures = function(D) {
                    var W = this;
                    if (this.sortFeaturesByY && this.sortedAngle !== D && !(this.text.segments.get().length > 1 || this.icon.segments.get().length > 1)) {
                      this.symbolInstanceIndexes = this.getSortedSymbolIndexes(D), this.sortedAngle = D, this.text.indexArray.clear(), this.icon.indexArray.clear(), this.featureSortOrder = [];
                      for (var ot = 0, xt = this.symbolInstanceIndexes; ot < xt.length; ot += 1) {
                        var Pt = xt[ot], Ht = this.symbolInstances.get(Pt);
                        this.featureSortOrder.push(Ht.featureIndex), [
                          Ht.rightJustifiedTextSymbolIndex,
                          Ht.centerJustifiedTextSymbolIndex,
                          Ht.leftJustifiedTextSymbolIndex
                        ].forEach(function(ve, Fe, Ze) {
                          ve >= 0 && Ze.indexOf(ve) === Fe && W.addIndicesForPlacedSymbol(W.text, ve);
                        }), Ht.verticalPlacedTextSymbolIndex >= 0 && this.addIndicesForPlacedSymbol(this.text, Ht.verticalPlacedTextSymbolIndex), Ht.placedIconSymbolIndex >= 0 && this.addIndicesForPlacedSymbol(this.icon, Ht.placedIconSymbolIndex), Ht.verticalPlacedIconSymbolIndex >= 0 && this.addIndicesForPlacedSymbol(this.icon, Ht.verticalPlacedIconSymbolIndex);
                      }
                      this.text.indexBuffer && this.text.indexBuffer.updateData(this.text.indexArray), this.icon.indexBuffer && this.icon.indexBuffer.updateData(this.icon.indexArray);
                    }
                  }, Kt("SymbolBucket", es, {
                    omit: [
                      "layers",
                      "collisionBoxArray",
                      "features",
                      "compareText"
                    ]
                  }), es.MAX_GLYPHS = 65535, es.addDynamicAttributes = Ug;
                  function vm(I, D) {
                    return D.replace(/{([^{}]+)}/g, function(W, ot) {
                      return ot in I ? String(I[ot]) : "";
                    });
                  }
                  var pm = new So({
                    "symbol-placement": new ta($r.layout_symbol["symbol-placement"]),
                    "symbol-spacing": new ta($r.layout_symbol["symbol-spacing"]),
                    "symbol-avoid-edges": new ta($r.layout_symbol["symbol-avoid-edges"]),
                    "symbol-sort-key": new wa($r.layout_symbol["symbol-sort-key"]),
                    "symbol-z-order": new ta($r.layout_symbol["symbol-z-order"]),
                    "icon-allow-overlap": new ta($r.layout_symbol["icon-allow-overlap"]),
                    "icon-ignore-placement": new ta($r.layout_symbol["icon-ignore-placement"]),
                    "icon-optional": new ta($r.layout_symbol["icon-optional"]),
                    "icon-rotation-alignment": new ta($r.layout_symbol["icon-rotation-alignment"]),
                    "icon-size": new wa($r.layout_symbol["icon-size"]),
                    "icon-text-fit": new ta($r.layout_symbol["icon-text-fit"]),
                    "icon-text-fit-padding": new ta($r.layout_symbol["icon-text-fit-padding"]),
                    "icon-image": new wa($r.layout_symbol["icon-image"]),
                    "icon-rotate": new wa($r.layout_symbol["icon-rotate"]),
                    "icon-padding": new ta($r.layout_symbol["icon-padding"]),
                    "icon-keep-upright": new ta($r.layout_symbol["icon-keep-upright"]),
                    "icon-offset": new wa($r.layout_symbol["icon-offset"]),
                    "icon-anchor": new wa($r.layout_symbol["icon-anchor"]),
                    "icon-pitch-alignment": new ta($r.layout_symbol["icon-pitch-alignment"]),
                    "text-pitch-alignment": new ta($r.layout_symbol["text-pitch-alignment"]),
                    "text-rotation-alignment": new ta($r.layout_symbol["text-rotation-alignment"]),
                    "text-field": new wa($r.layout_symbol["text-field"]),
                    "text-font": new wa($r.layout_symbol["text-font"]),
                    "text-size": new wa($r.layout_symbol["text-size"]),
                    "text-max-width": new wa($r.layout_symbol["text-max-width"]),
                    "text-line-height": new ta($r.layout_symbol["text-line-height"]),
                    "text-letter-spacing": new wa($r.layout_symbol["text-letter-spacing"]),
                    "text-justify": new wa($r.layout_symbol["text-justify"]),
                    "text-radial-offset": new wa($r.layout_symbol["text-radial-offset"]),
                    "text-variable-anchor": new ta($r.layout_symbol["text-variable-anchor"]),
                    "text-anchor": new wa($r.layout_symbol["text-anchor"]),
                    "text-max-angle": new ta($r.layout_symbol["text-max-angle"]),
                    "text-writing-mode": new ta($r.layout_symbol["text-writing-mode"]),
                    "text-rotate": new wa($r.layout_symbol["text-rotate"]),
                    "text-padding": new ta($r.layout_symbol["text-padding"]),
                    "text-keep-upright": new ta($r.layout_symbol["text-keep-upright"]),
                    "text-transform": new wa($r.layout_symbol["text-transform"]),
                    "text-offset": new wa($r.layout_symbol["text-offset"]),
                    "text-allow-overlap": new ta($r.layout_symbol["text-allow-overlap"]),
                    "text-ignore-placement": new ta($r.layout_symbol["text-ignore-placement"]),
                    "text-optional": new ta($r.layout_symbol["text-optional"])
                  }), Vg = new So({
                    "icon-opacity": new wa($r.paint_symbol["icon-opacity"]),
                    "icon-color": new wa($r.paint_symbol["icon-color"]),
                    "icon-halo-color": new wa($r.paint_symbol["icon-halo-color"]),
                    "icon-halo-width": new wa($r.paint_symbol["icon-halo-width"]),
                    "icon-halo-blur": new wa($r.paint_symbol["icon-halo-blur"]),
                    "icon-translate": new ta($r.paint_symbol["icon-translate"]),
                    "icon-translate-anchor": new ta($r.paint_symbol["icon-translate-anchor"]),
                    "text-opacity": new wa($r.paint_symbol["text-opacity"]),
                    "text-color": new wa($r.paint_symbol["text-color"], {
                      runtimeType: _i,
                      getOverride: function(I) {
                        return I.textColor;
                      },
                      hasOverride: function(I) {
                        return !!I.textColor;
                      }
                    }),
                    "text-halo-color": new wa($r.paint_symbol["text-halo-color"]),
                    "text-halo-width": new wa($r.paint_symbol["text-halo-width"]),
                    "text-halo-blur": new wa($r.paint_symbol["text-halo-blur"]),
                    "text-translate": new ta($r.paint_symbol["text-translate"]),
                    "text-translate-anchor": new ta($r.paint_symbol["text-translate-anchor"])
                  }), e0 = {
                    paint: Vg,
                    layout: pm
                  }, lp = function(D) {
                    this.type = D.property.overrides ? D.property.overrides.runtimeType : wn, this.defaultValue = D;
                  };
                  lp.prototype.evaluate = function(D) {
                    if (D.formattedSection) {
                      var W = this.defaultValue.property.overrides;
                      if (W && W.hasOverride(D.formattedSection))
                        return W.getOverride(D.formattedSection);
                    }
                    return D.feature && D.featureState ? this.defaultValue.evaluate(D.feature, D.featureState) : this.defaultValue.property.specification.default;
                  }, lp.prototype.eachChild = function(D) {
                    if (!this.defaultValue.isConstant()) {
                      var W = this.defaultValue.value;
                      D(W._styleExpression.expression);
                    }
                  }, lp.prototype.outputDefined = function() {
                    return !1;
                  }, lp.prototype.serialize = function() {
                    return null;
                  }, Kt("FormatSectionOverride", lp, { omit: ["defaultValue"] });
                  var Xx = function(I) {
                    function D(W) {
                      I.call(this, W, e0);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype.recalculate = function(ot, xt) {
                      if (I.prototype.recalculate.call(this, ot, xt), this.layout.get("icon-rotation-alignment") === "auto" && (this.layout.get("symbol-placement") !== "point" ? this.layout._values["icon-rotation-alignment"] = "map" : this.layout._values["icon-rotation-alignment"] = "viewport"), this.layout.get("text-rotation-alignment") === "auto" && (this.layout.get("symbol-placement") !== "point" ? this.layout._values["text-rotation-alignment"] = "map" : this.layout._values["text-rotation-alignment"] = "viewport"), this.layout.get("text-pitch-alignment") === "auto" && (this.layout._values["text-pitch-alignment"] = this.layout.get("text-rotation-alignment")), this.layout.get("icon-pitch-alignment") === "auto" && (this.layout._values["icon-pitch-alignment"] = this.layout.get("icon-rotation-alignment")), this.layout.get("symbol-placement") === "point") {
                        var Pt = this.layout.get("text-writing-mode");
                        if (Pt) {
                          for (var Ht = [], ve = 0, Fe = Pt; ve < Fe.length; ve += 1) {
                            var Ze = Fe[ve];
                            Ht.indexOf(Ze) < 0 && Ht.push(Ze);
                          }
                          this.layout._values["text-writing-mode"] = Ht;
                        } else
                          this.layout._values["text-writing-mode"] = ["horizontal"];
                      }
                      this._setPaintOverrides();
                    }, D.prototype.getValueAndResolveTokens = function(ot, xt, Pt, Ht) {
                      var ve = this.layout.get(ot).evaluate(xt, {}, Pt, Ht), Fe = this._unevaluatedLayout._values[ot];
                      return !Fe.isDataDriven() && !Qs(Fe.value) && ve ? vm(xt.properties, ve) : ve;
                    }, D.prototype.createBucket = function(ot) {
                      return new es(ot);
                    }, D.prototype.queryRadius = function() {
                      return 0;
                    }, D.prototype.queryIntersectsFeature = function() {
                      return !1;
                    }, D.prototype._setPaintOverrides = function() {
                      for (var ot = 0, xt = e0.paint.overridableProperties; ot < xt.length; ot += 1) {
                        var Pt = xt[ot];
                        if (D.hasPaintOverride(this.layout, Pt)) {
                          var Ht = this.paint.get(Pt), ve = new lp(Ht), Fe = new Cl(ve, Ht.property.specification), Ze = null;
                          Ht.value.kind === "constant" || Ht.value.kind === "source" ? Ze = new ws("source", Fe) : Ze = new Gl("composite", Fe, Ht.value.zoomStops, Ht.value._interpolationType), this.paint._values[Pt] = new Ao(Ht.property, Ze, Ht.parameters);
                        }
                      }
                    }, D.prototype._handleOverridablePaintPropertyUpdate = function(ot, xt, Pt) {
                      return !this.layout || xt.isDataDriven() || Pt.isDataDriven() ? !1 : D.hasPaintOverride(this.layout, ot);
                    }, D.hasPaintOverride = function(ot, xt) {
                      var Pt = ot.get("text-field"), Ht = e0.paint.properties[xt], ve = !1, Fe = function(wr) {
                        for (var Fr = 0, Rr = wr; Fr < Rr.length; Fr += 1) {
                          var Kr = Rr[Fr];
                          if (Ht.overrides && Ht.overrides.hasOverride(Kr)) {
                            ve = !0;
                            return;
                          }
                        }
                      };
                      if (Pt.value.kind === "constant" && Pt.value.value instanceof jo)
                        Fe(Pt.value.value.sections);
                      else if (Pt.value.kind === "source") {
                        var Ze = function(wr) {
                          if (!ve)
                            if (wr instanceof yo && qo(wr.value) === ra) {
                              var Fr = wr.value;
                              Fe(Fr.sections);
                            } else wr instanceof is ? Fe(wr.sections) : wr.eachChild(Ze);
                        }, nr = Pt.value;
                        nr._styleExpression && Ze(nr._styleExpression.expression);
                      }
                      return ve;
                    }, D;
                  }(Qi), Yx = new So({
                    "background-color": new ta($r.paint_background["background-color"]),
                    "background-pattern": new al($r.paint_background["background-pattern"]),
                    "background-opacity": new ta($r.paint_background["background-opacity"])
                  }), Kx = { paint: Yx }, gm = function(I) {
                    function D(W) {
                      I.call(this, W, Kx);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D;
                  }(Qi), ym = new So({
                    "raster-opacity": new ta($r.paint_raster["raster-opacity"]),
                    "raster-hue-rotate": new ta($r.paint_raster["raster-hue-rotate"]),
                    "raster-brightness-min": new ta($r.paint_raster["raster-brightness-min"]),
                    "raster-brightness-max": new ta($r.paint_raster["raster-brightness-max"]),
                    "raster-saturation": new ta($r.paint_raster["raster-saturation"]),
                    "raster-contrast": new ta($r.paint_raster["raster-contrast"]),
                    "raster-resampling": new ta($r.paint_raster["raster-resampling"]),
                    "raster-fade-duration": new ta($r.paint_raster["raster-fade-duration"])
                  }), r0 = { paint: ym }, xd = function(I) {
                    function D(W) {
                      I.call(this, W, r0);
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D;
                  }(Qi);
                  function av(I) {
                    var D = [], W = I.id;
                    return W === void 0 && D.push({ message: "layers." + W + ': missing required property "id"' }), I.render === void 0 && D.push({ message: "layers." + W + ': missing required method "render"' }), I.renderingMode && I.renderingMode !== "2d" && I.renderingMode !== "3d" && D.push({ message: "layers." + W + ': property "renderingMode" must be either "2d" or "3d"' }), D;
                  }
                  var mm = function(I) {
                    function D(W) {
                      I.call(this, W, {}), this.implementation = W;
                    }
                    return I && (D.__proto__ = I), D.prototype = Object.create(I && I.prototype), D.prototype.constructor = D, D.prototype.is3D = function() {
                      return this.implementation.renderingMode === "3d";
                    }, D.prototype.hasOffscreenPass = function() {
                      return this.implementation.prerender !== void 0;
                    }, D.prototype.recalculate = function() {
                    }, D.prototype.updateTransitions = function() {
                    }, D.prototype.hasTransition = function() {
                    }, D.prototype.serialize = function() {
                    }, D.prototype.onAdd = function(ot) {
                      this.implementation.onAdd && this.implementation.onAdd(ot, ot.painter.context.gl);
                    }, D.prototype.onRemove = function(ot) {
                      this.implementation.onRemove && this.implementation.onRemove(ot, ot.painter.context.gl);
                    }, D;
                  }(Qi), Jx = {
                    circle: bn,
                    heatmap: Xa,
                    hillshade: Ya,
                    fill: X1,
                    "fill-extrusion": M0,
                    line: dx,
                    symbol: Xx,
                    background: gm,
                    raster: xd
                  };
                  function Qx(I) {
                    return I.type === "custom" ? new mm(I) : new Jx[I.type](I);
                  }
                  var H0 = r.HTMLImageElement, xm = r.HTMLCanvasElement, bm = r.HTMLVideoElement, n0 = r.ImageData, up = r.ImageBitmap, Mv = function(D, W, ot, xt) {
                    this.context = D, this.format = ot, this.texture = D.gl.createTexture(), this.update(W, xt);
                  };
                  Mv.prototype.update = function(D, W, ot) {
                    var xt = D.width, Pt = D.height, Ht = (!this.size || this.size[0] !== xt || this.size[1] !== Pt) && !ot, ve = this, Fe = ve.context, Ze = Fe.gl;
                    if (this.useMipmap = !!(W && W.useMipmap), Ze.bindTexture(Ze.TEXTURE_2D, this.texture), Fe.pixelStoreUnpackFlipY.set(!1), Fe.pixelStoreUnpack.set(1), Fe.pixelStoreUnpackPremultiplyAlpha.set(this.format === Ze.RGBA && (!W || W.premultiply !== !1)), Ht)
                      this.size = [
                        xt,
                        Pt
                      ], D instanceof H0 || D instanceof xm || D instanceof bm || D instanceof n0 || up && D instanceof up ? Ze.texImage2D(Ze.TEXTURE_2D, 0, this.format, this.format, Ze.UNSIGNED_BYTE, D) : Ze.texImage2D(Ze.TEXTURE_2D, 0, this.format, xt, Pt, 0, this.format, Ze.UNSIGNED_BYTE, D.data);
                    else {
                      var nr = ot || {
                        x: 0,
                        y: 0
                      }, wr = nr.x, Fr = nr.y;
                      D instanceof H0 || D instanceof xm || D instanceof bm || D instanceof n0 || up && D instanceof up ? Ze.texSubImage2D(Ze.TEXTURE_2D, 0, wr, Fr, Ze.RGBA, Ze.UNSIGNED_BYTE, D) : Ze.texSubImage2D(Ze.TEXTURE_2D, 0, wr, Fr, xt, Pt, Ze.RGBA, Ze.UNSIGNED_BYTE, D.data);
                    }
                    this.useMipmap && this.isSizePowerOfTwo() && Ze.generateMipmap(Ze.TEXTURE_2D);
                  }, Mv.prototype.bind = function(D, W, ot) {
                    var xt = this, Pt = xt.context, Ht = Pt.gl;
                    Ht.bindTexture(Ht.TEXTURE_2D, this.texture), ot === Ht.LINEAR_MIPMAP_NEAREST && !this.isSizePowerOfTwo() && (ot = Ht.LINEAR), D !== this.filter && (Ht.texParameteri(Ht.TEXTURE_2D, Ht.TEXTURE_MAG_FILTER, D), Ht.texParameteri(Ht.TEXTURE_2D, Ht.TEXTURE_MIN_FILTER, ot || D), this.filter = D), W !== this.wrap && (Ht.texParameteri(Ht.TEXTURE_2D, Ht.TEXTURE_WRAP_S, W), Ht.texParameteri(Ht.TEXTURE_2D, Ht.TEXTURE_WRAP_T, W), this.wrap = W);
                  }, Mv.prototype.isSizePowerOfTwo = function() {
                    return this.size[0] === this.size[1] && Math.log(this.size[0]) / Math.LN2 % 1 === 0;
                  }, Mv.prototype.destroy = function() {
                    var D = this.context, W = D.gl;
                    W.deleteTexture(this.texture), this.texture = null;
                  };
                  var i0 = function(D) {
                    var W = this;
                    this._callback = D, this._triggered = !1, typeof MessageChannel < "u" && (this._channel = new MessageChannel(), this._channel.port2.onmessage = function() {
                      W._triggered = !1, W._callback();
                    });
                  };
                  i0.prototype.trigger = function() {
                    var D = this;
                    this._triggered || (this._triggered = !0, this._channel ? this._channel.port1.postMessage(!0) : setTimeout(function() {
                      D._triggered = !1, D._callback();
                    }, 0));
                  }, i0.prototype.remove = function() {
                    delete this._channel, this._callback = function() {
                    };
                  };
                  var ov = function(D, W, ot) {
                    this.target = D, this.parent = W, this.mapId = ot, this.callbacks = {}, this.tasks = {}, this.taskQueue = [], this.cancelCallbacks = {}, h([
                      "receive",
                      "process"
                    ], this), this.invoker = new i0(this.process), this.target.addEventListener("message", this.receive, !1), this.globalScope = q() ? D : r;
                  };
                  ov.prototype.send = function(D, W, ot, xt, Pt) {
                    var Ht = this;
                    Pt === void 0 && (Pt = !1);
                    var ve = Math.round(Math.random() * 1e18).toString(36).substring(0, 10);
                    ot && (this.callbacks[ve] = ot);
                    var Fe = vt(this.globalScope) ? void 0 : [];
                    return this.target.postMessage({
                      id: ve,
                      type: D,
                      hasCallback: !!ot,
                      targetMapId: xt,
                      mustQueue: Pt,
                      sourceMapId: this.mapId,
                      data: er(W, Fe)
                    }, Fe), {
                      cancel: function() {
                        ot && delete Ht.callbacks[ve], Ht.target.postMessage({
                          id: ve,
                          type: "<cancel>",
                          targetMapId: xt,
                          sourceMapId: Ht.mapId
                        });
                      }
                    };
                  }, ov.prototype.receive = function(D) {
                    var W = D.data, ot = W.id;
                    if (ot && !(W.targetMapId && this.mapId !== W.targetMapId))
                      if (W.type === "<cancel>") {
                        delete this.tasks[ot];
                        var xt = this.cancelCallbacks[ot];
                        delete this.cancelCallbacks[ot], xt && xt();
                      } else
                        q() || W.mustQueue ? (this.tasks[ot] = W, this.taskQueue.push(ot), this.invoker.trigger()) : this.processTask(ot, W);
                  }, ov.prototype.process = function() {
                    if (this.taskQueue.length) {
                      var D = this.taskQueue.shift(), W = this.tasks[D];
                      delete this.tasks[D], this.taskQueue.length && this.invoker.trigger(), W && this.processTask(D, W);
                    }
                  }, ov.prototype.processTask = function(D, W) {
                    var ot = this;
                    if (W.type === "<response>") {
                      var xt = this.callbacks[D];
                      delete this.callbacks[D], xt && (W.error ? xt(We(W.error)) : xt(null, We(W.data)));
                    } else {
                      var Pt = !1, Ht = vt(this.globalScope) ? void 0 : [], ve = W.hasCallback ? function(Fr, Rr) {
                        Pt = !0, delete ot.cancelCallbacks[D], ot.target.postMessage({
                          id: D,
                          type: "<response>",
                          sourceMapId: ot.mapId,
                          error: Fr ? er(Fr) : null,
                          data: er(Rr, Ht)
                        }, Ht);
                      } : function(Fr) {
                        Pt = !0;
                      }, Fe = null, Ze = We(W.data);
                      if (this.parent[W.type])
                        Fe = this.parent[W.type](W.sourceMapId, Ze, ve);
                      else if (this.parent.getWorkerSource) {
                        var nr = W.type.split("."), wr = this.parent.getWorkerSource(W.sourceMapId, nr[0], Ze.source);
                        Fe = wr[nr[1]](Ze, ve);
                      } else
                        ve(new Error("Could not find function " + W.type));
                      !Pt && Fe && Fe.cancel && (this.cancelCallbacks[D] = Fe.cancel);
                    }
                  }, ov.prototype.remove = function() {
                    this.invoker.remove(), this.target.removeEventListener("message", this.receive, !1);
                  };
                  function cp(I, D, W) {
                    D = Math.pow(2, W) - D - 1;
                    var ot = wm(I * 256, D * 256, W), xt = wm((I + 1) * 256, (D + 1) * 256, W);
                    return ot[0] + "," + ot[1] + "," + xt[0] + "," + xt[1];
                  }
                  function wm(I, D, W) {
                    var ot = 2 * Math.PI * 6378137 / 256 / Math.pow(2, W), xt = I * ot - 2 * Math.PI * 6378137 / 2, Pt = D * ot - 2 * Math.PI * 6378137 / 2;
                    return [xt, Pt];
                  }
                  var el = function(D, W) {
                    D && (W ? this.setSouthWest(D).setNorthEast(W) : D.length === 4 ? this.setSouthWest([
                      D[0],
                      D[1]
                    ]).setNorthEast([
                      D[2],
                      D[3]
                    ]) : this.setSouthWest(D[0]).setNorthEast(D[1]));
                  };
                  el.prototype.setNorthEast = function(D) {
                    return this._ne = D instanceof ys ? new ys(D.lng, D.lat) : ys.convert(D), this;
                  }, el.prototype.setSouthWest = function(D) {
                    return this._sw = D instanceof ys ? new ys(D.lng, D.lat) : ys.convert(D), this;
                  }, el.prototype.extend = function(D) {
                    var W = this._sw, ot = this._ne, xt, Pt;
                    if (D instanceof ys)
                      xt = D, Pt = D;
                    else if (D instanceof el) {
                      if (xt = D._sw, Pt = D._ne, !xt || !Pt)
                        return this;
                    } else {
                      if (Array.isArray(D))
                        if (D.length === 4 || D.every(Array.isArray)) {
                          var Ht = D;
                          return this.extend(el.convert(Ht));
                        } else {
                          var ve = D;
                          return this.extend(ys.convert(ve));
                        }
                      return this;
                    }
                    return !W && !ot ? (this._sw = new ys(xt.lng, xt.lat), this._ne = new ys(Pt.lng, Pt.lat)) : (W.lng = Math.min(xt.lng, W.lng), W.lat = Math.min(xt.lat, W.lat), ot.lng = Math.max(Pt.lng, ot.lng), ot.lat = Math.max(Pt.lat, ot.lat)), this;
                  }, el.prototype.getCenter = function() {
                    return new ys((this._sw.lng + this._ne.lng) / 2, (this._sw.lat + this._ne.lat) / 2);
                  }, el.prototype.getSouthWest = function() {
                    return this._sw;
                  }, el.prototype.getNorthEast = function() {
                    return this._ne;
                  }, el.prototype.getNorthWest = function() {
                    return new ys(this.getWest(), this.getNorth());
                  }, el.prototype.getSouthEast = function() {
                    return new ys(this.getEast(), this.getSouth());
                  }, el.prototype.getWest = function() {
                    return this._sw.lng;
                  }, el.prototype.getSouth = function() {
                    return this._sw.lat;
                  }, el.prototype.getEast = function() {
                    return this._ne.lng;
                  }, el.prototype.getNorth = function() {
                    return this._ne.lat;
                  }, el.prototype.toArray = function() {
                    return [
                      this._sw.toArray(),
                      this._ne.toArray()
                    ];
                  }, el.prototype.toString = function() {
                    return "LngLatBounds(" + this._sw.toString() + ", " + this._ne.toString() + ")";
                  }, el.prototype.isEmpty = function() {
                    return !(this._sw && this._ne);
                  }, el.prototype.contains = function(D) {
                    var W = ys.convert(D), ot = W.lng, xt = W.lat, Pt = this._sw.lat <= xt && xt <= this._ne.lat, Ht = this._sw.lng <= ot && ot <= this._ne.lng;
                    return this._sw.lng > this._ne.lng && (Ht = this._sw.lng >= ot && ot >= this._ne.lng), Pt && Ht;
                  }, el.convert = function(D) {
                    return !D || D instanceof el ? D : new el(D);
                  };
                  var _m = 63710088e-1, ys = function(D, W) {
                    if (isNaN(D) || isNaN(W))
                      throw new Error("Invalid LngLat object: (" + D + ", " + W + ")");
                    if (this.lng = +D, this.lat = +W, this.lat > 90 || this.lat < -90)
                      throw new Error("Invalid LngLat latitude value: must be between -90 and 90");
                  };
                  ys.prototype.wrap = function() {
                    return new ys(x(this.lng, -180, 180), this.lat);
                  }, ys.prototype.toArray = function() {
                    return [
                      this.lng,
                      this.lat
                    ];
                  }, ys.prototype.toString = function() {
                    return "LngLat(" + this.lng + ", " + this.lat + ")";
                  }, ys.prototype.distanceTo = function(D) {
                    var W = Math.PI / 180, ot = this.lat * W, xt = D.lat * W, Pt = Math.sin(ot) * Math.sin(xt) + Math.cos(ot) * Math.cos(xt) * Math.cos((D.lng - this.lng) * W), Ht = _m * Math.acos(Math.min(Pt, 1));
                    return Ht;
                  }, ys.prototype.toBounds = function(D) {
                    D === void 0 && (D = 0);
                    var W = 40075017, ot = 360 * D / W, xt = ot / Math.cos(Math.PI / 180 * this.lat);
                    return new el(new ys(this.lng - xt, this.lat - ot), new ys(this.lng + xt, this.lat + ot));
                  }, ys.convert = function(D) {
                    if (D instanceof ys)
                      return D;
                    if (Array.isArray(D) && (D.length === 2 || D.length === 3))
                      return new ys(Number(D[0]), Number(D[1]));
                    if (!Array.isArray(D) && typeof D == "object" && D !== null)
                      return new ys(Number("lng" in D ? D.lng : D.lon), Number(D.lat));
                    throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: <lng>, lat: <lat>}, an object {lon: <lng>, lat: <lat>}, or an array of [<lng>, <lat>]");
                  };
                  var Tm = 2 * Math.PI * _m;
                  function G0(I) {
                    return Tm * Math.cos(I * Math.PI / 180);
                  }
                  function Hg(I) {
                    return (180 + I) / 360;
                  }
                  function a0(I) {
                    return (180 - 180 / Math.PI * Math.log(Math.tan(Math.PI / 4 + I * Math.PI / 360))) / 360;
                  }
                  function Am(I, D) {
                    return I / G0(D);
                  }
                  function Sm(I) {
                    return I * 360 - 180;
                  }
                  function Gg(I) {
                    var D = 180 - I * 360;
                    return 360 / Math.PI * Math.atan(Math.exp(D * Math.PI / 180)) - 90;
                  }
                  function $x(I, D) {
                    return I * G0(Gg(D));
                  }
                  function qx(I) {
                    return 1 / Math.cos(I * Math.PI / 180);
                  }
                  var sv = function(D, W, ot) {
                    ot === void 0 && (ot = 0), this.x = +D, this.y = +W, this.z = +ot;
                  };
                  sv.fromLngLat = function(D, W) {
                    W === void 0 && (W = 0);
                    var ot = ys.convert(D);
                    return new sv(Hg(ot.lng), a0(ot.lat), Am(W, ot.lat));
                  }, sv.prototype.toLngLat = function() {
                    return new ys(Sm(this.x), Gg(this.y));
                  }, sv.prototype.toAltitude = function() {
                    return $x(this.z, this.y);
                  }, sv.prototype.meterInMercatorCoordinateUnits = function() {
                    return 1 / Tm * qx(Gg(this.y));
                  };
                  var Ev = function(D, W, ot) {
                    this.z = D, this.x = W, this.y = ot, this.key = o0(0, D, D, W, ot);
                  };
                  Ev.prototype.equals = function(D) {
                    return this.z === D.z && this.x === D.x && this.y === D.y;
                  }, Ev.prototype.url = function(D, W) {
                    var ot = cp(this.x, this.y, this.z), xt = tb(this.z, this.x, this.y);
                    return D[(this.x + this.y) % D.length].replace("{prefix}", (this.x % 16).toString(16) + (this.y % 16).toString(16)).replace("{z}", String(this.z)).replace("{x}", String(this.x)).replace("{y}", String(W === "tms" ? Math.pow(2, this.z) - this.y - 1 : this.y)).replace("{quadkey}", xt).replace("{bbox-epsg-3857}", ot);
                  }, Ev.prototype.getTilePoint = function(D) {
                    var W = Math.pow(2, this.z);
                    return new u((D.x * W - this.x) * _a, (D.y * W - this.y) * _a);
                  }, Ev.prototype.toString = function() {
                    return this.z + "/" + this.x + "/" + this.y;
                  };
                  var Mm = function(D, W) {
                    this.wrap = D, this.canonical = W, this.key = o0(D, W.z, W.z, W.x, W.y);
                  }, ul = function(D, W, ot, xt, Pt) {
                    this.overscaledZ = D, this.wrap = W, this.canonical = new Ev(ot, +xt, +Pt), this.key = o0(W, D, ot, xt, Pt);
                  };
                  ul.prototype.equals = function(D) {
                    return this.overscaledZ === D.overscaledZ && this.wrap === D.wrap && this.canonical.equals(D.canonical);
                  }, ul.prototype.scaledTo = function(D) {
                    var W = this.canonical.z - D;
                    return D > this.canonical.z ? new ul(D, this.wrap, this.canonical.z, this.canonical.x, this.canonical.y) : new ul(D, this.wrap, D, this.canonical.x >> W, this.canonical.y >> W);
                  }, ul.prototype.calculateScaledKey = function(D, W) {
                    var ot = this.canonical.z - D;
                    return D > this.canonical.z ? o0(this.wrap * +W, D, this.canonical.z, this.canonical.x, this.canonical.y) : o0(this.wrap * +W, D, D, this.canonical.x >> ot, this.canonical.y >> ot);
                  }, ul.prototype.isChildOf = function(D) {
                    if (D.wrap !== this.wrap)
                      return !1;
                    var W = this.canonical.z - D.canonical.z;
                    return D.overscaledZ === 0 || D.overscaledZ < this.overscaledZ && D.canonical.x === this.canonical.x >> W && D.canonical.y === this.canonical.y >> W;
                  }, ul.prototype.children = function(D) {
                    if (this.overscaledZ >= D)
                      return [new ul(this.overscaledZ + 1, this.wrap, this.canonical.z, this.canonical.x, this.canonical.y)];
                    var W = this.canonical.z + 1, ot = this.canonical.x * 2, xt = this.canonical.y * 2;
                    return [
                      new ul(W, this.wrap, W, ot, xt),
                      new ul(W, this.wrap, W, ot + 1, xt),
                      new ul(W, this.wrap, W, ot, xt + 1),
                      new ul(W, this.wrap, W, ot + 1, xt + 1)
                    ];
                  }, ul.prototype.isLessThan = function(D) {
                    return this.wrap < D.wrap ? !0 : this.wrap > D.wrap ? !1 : this.overscaledZ < D.overscaledZ ? !0 : this.overscaledZ > D.overscaledZ ? !1 : this.canonical.x < D.canonical.x ? !0 : this.canonical.x > D.canonical.x ? !1 : this.canonical.y < D.canonical.y;
                  }, ul.prototype.wrapped = function() {
                    return new ul(this.overscaledZ, 0, this.canonical.z, this.canonical.x, this.canonical.y);
                  }, ul.prototype.unwrapTo = function(D) {
                    return new ul(this.overscaledZ, D, this.canonical.z, this.canonical.x, this.canonical.y);
                  }, ul.prototype.overscaleFactor = function() {
                    return Math.pow(2, this.overscaledZ - this.canonical.z);
                  }, ul.prototype.toUnwrapped = function() {
                    return new Mm(this.wrap, this.canonical);
                  }, ul.prototype.toString = function() {
                    return this.overscaledZ + "/" + this.canonical.x + "/" + this.canonical.y;
                  }, ul.prototype.getTilePoint = function(D) {
                    return this.canonical.getTilePoint(new sv(D.x - this.wrap, D.y));
                  };
                  function o0(I, D, W, ot, xt) {
                    I *= 2, I < 0 && (I = I * -1 - 1);
                    var Pt = 1 << W;
                    return (Pt * Pt * I + Pt * xt + ot).toString(36) + W.toString(36) + D.toString(36);
                  }
                  function tb(I, D, W) {
                    for (var ot = "", xt, Pt = I; Pt > 0; Pt--)
                      xt = 1 << Pt - 1, ot += (D & xt ? 1 : 0) + (W & xt ? 2 : 0);
                    return ot;
                  }
                  Kt("CanonicalTileID", Ev), Kt("OverscaledTileID", ul, { omit: ["posMatrix"] });
                  var Zd = function(D, W, ot) {
                    if (this.uid = D, W.height !== W.width)
                      throw new RangeError("DEM tiles must be square");
                    if (ot && ot !== "mapbox" && ot !== "terrarium")
                      return U('"' + ot + '" is not a valid encoding type. Valid types include "mapbox" and "terrarium".');
                    this.stride = W.height;
                    var xt = this.dim = W.height - 2;
                    this.data = new Uint32Array(W.data.buffer), this.encoding = ot || "mapbox";
                    for (var Pt = 0; Pt < xt; Pt++)
                      this.data[this._idx(-1, Pt)] = this.data[this._idx(0, Pt)], this.data[this._idx(xt, Pt)] = this.data[this._idx(xt - 1, Pt)], this.data[this._idx(Pt, -1)] = this.data[this._idx(Pt, 0)], this.data[this._idx(Pt, xt)] = this.data[this._idx(Pt, xt - 1)];
                    this.data[this._idx(-1, -1)] = this.data[this._idx(0, 0)], this.data[this._idx(xt, -1)] = this.data[this._idx(xt - 1, 0)], this.data[this._idx(-1, xt)] = this.data[this._idx(0, xt - 1)], this.data[this._idx(xt, xt)] = this.data[this._idx(xt - 1, xt - 1)];
                  };
                  Zd.prototype.get = function(D, W) {
                    var ot = new Uint8Array(this.data.buffer), xt = this._idx(D, W) * 4, Pt = this.encoding === "terrarium" ? this._unpackTerrarium : this._unpackMapbox;
                    return Pt(ot[xt], ot[xt + 1], ot[xt + 2]);
                  }, Zd.prototype.getUnpackVector = function() {
                    return this.encoding === "terrarium" ? [
                      256,
                      1,
                      390625e-8,
                      32768
                    ] : [
                      6553.6,
                      25.6,
                      0.1,
                      1e4
                    ];
                  }, Zd.prototype._idx = function(D, W) {
                    if (D < -1 || D >= this.dim + 1 || W < -1 || W >= this.dim + 1)
                      throw new RangeError("out of range source coordinates for DEM data");
                    return (W + 1) * this.stride + (D + 1);
                  }, Zd.prototype._unpackMapbox = function(D, W, ot) {
                    return (D * 256 * 256 + W * 256 + ot) / 10 - 1e4;
                  }, Zd.prototype._unpackTerrarium = function(D, W, ot) {
                    return D * 256 + W + ot / 256 - 32768;
                  }, Zd.prototype.getPixels = function() {
                    return new Oi({
                      width: this.stride,
                      height: this.stride
                    }, new Uint8Array(this.data.buffer));
                  }, Zd.prototype.backfillBorder = function(D, W, ot) {
                    if (this.dim !== D.dim)
                      throw new Error("dem dimension mismatch");
                    var xt = W * this.dim, Pt = W * this.dim + this.dim, Ht = ot * this.dim, ve = ot * this.dim + this.dim;
                    switch (W) {
                      case -1:
                        xt = Pt - 1;
                        break;
                      case 1:
                        Pt = xt + 1;
                        break;
                    }
                    switch (ot) {
                      case -1:
                        Ht = ve - 1;
                        break;
                      case 1:
                        ve = Ht + 1;
                        break;
                    }
                    for (var Fe = -W * this.dim, Ze = -ot * this.dim, nr = Ht; nr < ve; nr++)
                      for (var wr = xt; wr < Pt; wr++)
                        this.data[this._idx(wr, nr)] = D.data[this._idx(wr + Fe, nr + Ze)];
                  }, Kt("DEMData", Zd);
                  function eb(I, D) {
                    var W = {};
                    if (!D)
                      return W;
                    for (var ot = function() {
                      var Ht = Pt[xt], ve = Ht.layerIds.map(function(wr) {
                        return D.getLayer(wr);
                      }).filter(Boolean);
                      if (ve.length !== 0) {
                        Ht.layers = ve, Ht.stateDependentLayerIds && (Ht.stateDependentLayers = Ht.stateDependentLayerIds.map(function(wr) {
                          return ve.filter(function(Fr) {
                            return Fr.id === wr;
                          })[0];
                        }));
                        for (var Fe = 0, Ze = ve; Fe < Ze.length; Fe += 1) {
                          var nr = Ze[Fe];
                          W[nr.id] = Ht;
                        }
                      }
                    }, xt = 0, Pt = I; xt < Pt.length; xt += 1)
                      ot();
                    return W;
                  }
                  var W0 = function(D) {
                    this._stringToNumber = {}, this._numberToString = [];
                    for (var W = 0; W < D.length; W++) {
                      var ot = D[W];
                      this._stringToNumber[ot] = W, this._numberToString[W] = ot;
                    }
                  };
                  W0.prototype.encode = function(D) {
                    return this._stringToNumber[D];
                  }, W0.prototype.decode = function(D) {
                    return this._numberToString[D];
                  };
                  var fp = function(D, W, ot, xt, Pt) {
                    this.type = "Feature", this._vectorTileFeature = D, D._z = W, D._x = ot, D._y = xt, this.properties = D.properties, this.id = Pt;
                  }, bd = { geometry: { configurable: !0 } };
                  bd.geometry.get = function() {
                    return this._geometry === void 0 && (this._geometry = this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x, this._vectorTileFeature._y, this._vectorTileFeature._z).geometry), this._geometry;
                  }, bd.geometry.set = function(I) {
                    this._geometry = I;
                  }, fp.prototype.toJSON = function() {
                    var D = { geometry: this.geometry };
                    for (var W in this)
                      W === "_geometry" || W === "_vectorTileFeature" || (D[W] = this[W]);
                    return D;
                  }, Object.defineProperties(fp.prototype, bd);
                  var Cv = function() {
                    this.state = {}, this.stateChanges = {}, this.deletedStates = {};
                  };
                  Cv.prototype.updateState = function(D, W, ot) {
                    var xt = String(W);
                    if (this.stateChanges[D] = this.stateChanges[D] || {}, this.stateChanges[D][xt] = this.stateChanges[D][xt] || {}, _(this.stateChanges[D][xt], ot), this.deletedStates[D] === null) {
                      this.deletedStates[D] = {};
                      for (var Pt in this.state[D])
                        Pt !== xt && (this.deletedStates[D][Pt] = null);
                    } else {
                      var Ht = this.deletedStates[D] && this.deletedStates[D][xt] === null;
                      if (Ht) {
                        this.deletedStates[D][xt] = {};
                        for (var ve in this.state[D][xt])
                          ot[ve] || (this.deletedStates[D][xt][ve] = null);
                      } else
                        for (var Fe in ot) {
                          var Ze = this.deletedStates[D] && this.deletedStates[D][xt] && this.deletedStates[D][xt][Fe] === null;
                          Ze && delete this.deletedStates[D][xt][Fe];
                        }
                    }
                  }, Cv.prototype.removeFeatureState = function(D, W, ot) {
                    var xt = this.deletedStates[D] === null;
                    if (!xt) {
                      var Pt = String(W);
                      if (this.deletedStates[D] = this.deletedStates[D] || {}, ot && W !== void 0)
                        this.deletedStates[D][Pt] !== null && (this.deletedStates[D][Pt] = this.deletedStates[D][Pt] || {}, this.deletedStates[D][Pt][ot] = null);
                      else if (W !== void 0) {
                        var Ht = this.stateChanges[D] && this.stateChanges[D][Pt];
                        if (Ht) {
                          this.deletedStates[D][Pt] = {};
                          for (ot in this.stateChanges[D][Pt])
                            this.deletedStates[D][Pt][ot] = null;
                        } else
                          this.deletedStates[D][Pt] = null;
                      } else
                        this.deletedStates[D] = null;
                    }
                  }, Cv.prototype.getState = function(D, W) {
                    var ot = String(W), xt = this.state[D] || {}, Pt = this.stateChanges[D] || {}, Ht = _({}, xt[ot], Pt[ot]);
                    if (this.deletedStates[D] === null)
                      return {};
                    if (this.deletedStates[D]) {
                      var ve = this.deletedStates[D][W];
                      if (ve === null)
                        return {};
                      for (var Fe in ve)
                        delete Ht[Fe];
                    }
                    return Ht;
                  }, Cv.prototype.initializeTileState = function(D, W) {
                    D.setFeatureState(this.state, W);
                  }, Cv.prototype.coalesceChanges = function(D, W) {
                    var ot = {};
                    for (var xt in this.stateChanges) {
                      this.state[xt] = this.state[xt] || {};
                      var Pt = {};
                      for (var Ht in this.stateChanges[xt])
                        this.state[xt][Ht] || (this.state[xt][Ht] = {}), _(this.state[xt][Ht], this.stateChanges[xt][Ht]), Pt[Ht] = this.state[xt][Ht];
                      ot[xt] = Pt;
                    }
                    for (var ve in this.deletedStates) {
                      this.state[ve] = this.state[ve] || {};
                      var Fe = {};
                      if (this.deletedStates[ve] === null)
                        for (var Ze in this.state[ve])
                          Fe[Ze] = {}, this.state[ve][Ze] = {};
                      else
                        for (var nr in this.deletedStates[ve]) {
                          var wr = this.deletedStates[ve][nr] === null;
                          if (wr)
                            this.state[ve][nr] = {};
                          else
                            for (var Fr = 0, Rr = Object.keys(this.deletedStates[ve][nr]); Fr < Rr.length; Fr += 1) {
                              var Kr = Rr[Fr];
                              delete this.state[ve][nr][Kr];
                            }
                          Fe[nr] = this.state[ve][nr];
                        }
                      ot[ve] = ot[ve] || {}, _(ot[ve], Fe);
                    }
                    if (this.stateChanges = {}, this.deletedStates = {}, Object.keys(ot).length !== 0)
                      for (var yn in D) {
                        var Qn = D[yn];
                        Qn.setFeatureState(ot, W);
                      }
                  };
                  var wd = function(D, W) {
                    this.tileID = D, this.x = D.canonical.x, this.y = D.canonical.y, this.z = D.canonical.z, this.grid = new Ga(_a, 16, 0), this.grid3D = new Ga(_a, 16, 0), this.featureIndexArray = new zh(), this.promoteId = W;
                  };
                  wd.prototype.insert = function(D, W, ot, xt, Pt, Ht) {
                    var ve = this.featureIndexArray.length;
                    this.featureIndexArray.emplaceBack(ot, xt, Pt);
                    for (var Fe = Ht ? this.grid3D : this.grid, Ze = 0; Ze < W.length; Ze++) {
                      for (var nr = W[Ze], wr = [
                        1 / 0,
                        1 / 0,
                        -1 / 0,
                        -1 / 0
                      ], Fr = 0; Fr < nr.length; Fr++) {
                        var Rr = nr[Fr];
                        wr[0] = Math.min(wr[0], Rr.x), wr[1] = Math.min(wr[1], Rr.y), wr[2] = Math.max(wr[2], Rr.x), wr[3] = Math.max(wr[3], Rr.y);
                      }
                      wr[0] < _a && wr[1] < _a && wr[2] >= 0 && wr[3] >= 0 && Fe.insert(ve, wr[0], wr[1], wr[2], wr[3]);
                    }
                  }, wd.prototype.loadVTLayers = function() {
                    return this.vtLayers || (this.vtLayers = new Yv.VectorTile(new L0(this.rawTileData)).layers, this.sourceLayerCoder = new W0(this.vtLayers ? Object.keys(this.vtLayers).sort() : ["_geojsonTileLayer"])), this.vtLayers;
                  }, wd.prototype.query = function(D, W, ot, xt) {
                    var Pt = this;
                    this.loadVTLayers();
                    for (var Ht = D.params || {}, ve = _a / D.tileSize / D.scale, Fe = Wl(Ht.filter), Ze = D.queryGeometry, nr = D.queryPadding * ve, wr = jg(Ze), Fr = this.grid.query(wr.minX - nr, wr.minY - nr, wr.maxX + nr, wr.maxY + nr), Rr = jg(D.cameraQueryGeometry), Kr = this.grid3D.query(Rr.minX - nr, Rr.minY - nr, Rr.maxX + nr, Rr.maxY + nr, function(Fi, Zi, Yi, ma) {
                      return fc(D.cameraQueryGeometry, Fi - nr, Zi - nr, Yi + nr, ma + nr);
                    }), yn = 0, Qn = Kr; yn < Qn.length; yn += 1) {
                      var Bn = Qn[yn];
                      Fr.push(Bn);
                    }
                    Fr.sort(Em);
                    for (var vi = {}, ni, pi = function(Fi) {
                      var Zi = Fr[Fi];
                      if (Zi !== ni) {
                        ni = Zi;
                        var Yi = Pt.featureIndexArray.get(Zi), ma = null;
                        Pt.loadMatchingFeature(vi, Yi.bucketIndex, Yi.sourceLayerIndex, Yi.featureIndex, Fe, Ht.layers, Ht.availableImages, W, ot, xt, function(fa, va, Za) {
                          return ma || (ma = Mo(fa)), va.queryIntersectsFeature(Ze, fa, Za, ma, Pt.z, D.transform, ve, D.pixelPosMatrix);
                        });
                      }
                    }, wi = 0; wi < Fr.length; wi++)
                      pi(wi);
                    return vi;
                  }, wd.prototype.loadMatchingFeature = function(D, W, ot, xt, Pt, Ht, ve, Fe, Ze, nr, wr) {
                    var Fr = this.bucketLayerIDs[W];
                    if (!(Ht && !B(Ht, Fr))) {
                      var Rr = this.sourceLayerCoder.decode(ot), Kr = this.vtLayers[Rr], yn = Kr.feature(xt);
                      if (Pt.needGeometry) {
                        var Qn = Zo(yn, !0);
                        if (!Pt.filter(new ba(this.tileID.overscaledZ), Qn, this.tileID.canonical))
                          return;
                      } else if (!Pt.filter(new ba(this.tileID.overscaledZ), yn))
                        return;
                      for (var Bn = this.getId(yn, Rr), vi = 0; vi < Fr.length; vi++) {
                        var ni = Fr[vi];
                        if (!(Ht && Ht.indexOf(ni) < 0)) {
                          var pi = Fe[ni];
                          if (pi) {
                            var wi = {};
                            Bn !== void 0 && nr && (wi = nr.getState(pi.sourceLayer || "_geojsonTileLayer", Bn));
                            var Fi = _({}, Ze[ni]);
                            Fi.paint = Wg(Fi.paint, pi.paint, yn, wi, ve), Fi.layout = Wg(Fi.layout, pi.layout, yn, wi, ve);
                            var Zi = !wr || wr(yn, pi, wi);
                            if (Zi) {
                              var Yi = new fp(yn, this.z, this.x, this.y, Bn);
                              Yi.layer = Fi;
                              var ma = D[ni];
                              ma === void 0 && (ma = D[ni] = []), ma.push({
                                featureIndex: xt,
                                feature: Yi,
                                intersectionZ: Zi
                              });
                            }
                          }
                        }
                      }
                    }
                  }, wd.prototype.lookupSymbolFeatures = function(D, W, ot, xt, Pt, Ht, ve, Fe) {
                    var Ze = {};
                    this.loadVTLayers();
                    for (var nr = Wl(Pt), wr = 0, Fr = D; wr < Fr.length; wr += 1) {
                      var Rr = Fr[wr];
                      this.loadMatchingFeature(Ze, ot, xt, Rr, nr, Ht, ve, Fe, W);
                    }
                    return Ze;
                  }, wd.prototype.hasLayer = function(D) {
                    for (var W = 0, ot = this.bucketLayerIDs; W < ot.length; W += 1)
                      for (var xt = ot[W], Pt = 0, Ht = xt; Pt < Ht.length; Pt += 1) {
                        var ve = Ht[Pt];
                        if (D === ve)
                          return !0;
                      }
                    return !1;
                  }, wd.prototype.getId = function(D, W) {
                    var ot = D.id;
                    if (this.promoteId) {
                      var xt = typeof this.promoteId == "string" ? this.promoteId : this.promoteId[W];
                      ot = D.properties[xt], typeof ot == "boolean" && (ot = Number(ot));
                    }
                    return ot;
                  }, Kt("FeatureIndex", wd, {
                    omit: [
                      "rawTileData",
                      "sourceLayerCoder"
                    ]
                  });
                  function Wg(I, D, W, ot, xt) {
                    return w(I, function(Pt, Ht) {
                      var ve = D instanceof aa ? D.get(Ht) : null;
                      return ve && ve.evaluate ? ve.evaluate(W, ot, xt) : ve;
                    });
                  }
                  function jg(I) {
                    for (var D = 1 / 0, W = 1 / 0, ot = -1 / 0, xt = -1 / 0, Pt = 0, Ht = I; Pt < Ht.length; Pt += 1) {
                      var ve = Ht[Pt];
                      D = Math.min(D, ve.x), W = Math.min(W, ve.y), ot = Math.max(ot, ve.x), xt = Math.max(xt, ve.y);
                    }
                    return {
                      minX: D,
                      minY: W,
                      maxX: ot,
                      maxY: xt
                    };
                  }
                  function Em(I, D) {
                    return D - I;
                  }
                  var rb = 3e4, cl = function(D, W) {
                    this.tileID = D, this.uid = C(), this.uses = 0, this.tileSize = W, this.buckets = {}, this.expirationTime = null, this.queryPadding = 0, this.hasSymbolBuckets = !1, this.hasRTLText = !1, this.dependencies = {}, this.expiredRequestCount = 0, this.state = "loading";
                  };
                  cl.prototype.registerFadeDuration = function(D) {
                    var W = D + this.timeAdded;
                    W < ct.now() || this.fadeEndTime && W < this.fadeEndTime || (this.fadeEndTime = W);
                  }, cl.prototype.wasRequested = function() {
                    return this.state === "errored" || this.state === "loaded" || this.state === "reloading";
                  }, cl.prototype.loadVectorData = function(D, W, ot) {
                    if (this.hasData() && this.unloadVectorData(), this.state = "loaded", !D) {
                      this.collisionBoxArray = new ev();
                      return;
                    }
                    D.featureIndex && (this.latestFeatureIndex = D.featureIndex, D.rawTileData ? (this.latestRawTileData = D.rawTileData, this.latestFeatureIndex.rawTileData = D.rawTileData) : this.latestRawTileData && (this.latestFeatureIndex.rawTileData = this.latestRawTileData)), this.collisionBoxArray = D.collisionBoxArray, this.buckets = eb(D.buckets, W.style), this.hasSymbolBuckets = !1;
                    for (var xt in this.buckets) {
                      var Pt = this.buckets[xt];
                      if (Pt instanceof es)
                        if (this.hasSymbolBuckets = !0, ot)
                          Pt.justReloaded = !0;
                        else
                          break;
                    }
                    if (this.hasRTLText = !1, this.hasSymbolBuckets)
                      for (var Ht in this.buckets) {
                        var ve = this.buckets[Ht];
                        if (ve instanceof es && ve.hasRTLText) {
                          this.hasRTLText = !0, Ba();
                          break;
                        }
                      }
                    this.queryPadding = 0;
                    for (var Fe in this.buckets) {
                      var Ze = this.buckets[Fe];
                      this.queryPadding = Math.max(this.queryPadding, W.style.getLayer(Fe).queryRadius(Ze));
                    }
                    D.imageAtlas && (this.imageAtlas = D.imageAtlas), D.glyphAtlasImage && (this.glyphAtlasImage = D.glyphAtlasImage);
                  }, cl.prototype.unloadVectorData = function() {
                    for (var D in this.buckets)
                      this.buckets[D].destroy();
                    this.buckets = {}, this.imageAtlasTexture && this.imageAtlasTexture.destroy(), this.imageAtlas && (this.imageAtlas = null), this.glyphAtlasTexture && this.glyphAtlasTexture.destroy(), this.latestFeatureIndex = null, this.state = "unloaded";
                  }, cl.prototype.getBucket = function(D) {
                    return this.buckets[D.id];
                  }, cl.prototype.upload = function(D) {
                    for (var W in this.buckets) {
                      var ot = this.buckets[W];
                      ot.uploadPending() && ot.upload(D);
                    }
                    var xt = D.gl;
                    this.imageAtlas && !this.imageAtlas.uploaded && (this.imageAtlasTexture = new Mv(D, this.imageAtlas.image, xt.RGBA), this.imageAtlas.uploaded = !0), this.glyphAtlasImage && (this.glyphAtlasTexture = new Mv(D, this.glyphAtlasImage, xt.ALPHA), this.glyphAtlasImage = null);
                  }, cl.prototype.prepare = function(D) {
                    this.imageAtlas && this.imageAtlas.patchUpdatedImages(D, this.imageAtlasTexture);
                  }, cl.prototype.queryRenderedFeatures = function(D, W, ot, xt, Pt, Ht, ve, Fe, Ze, nr) {
                    return !this.latestFeatureIndex || !this.latestFeatureIndex.rawTileData ? {} : this.latestFeatureIndex.query({
                      queryGeometry: xt,
                      cameraQueryGeometry: Pt,
                      scale: Ht,
                      tileSize: this.tileSize,
                      pixelPosMatrix: nr,
                      transform: Fe,
                      params: ve,
                      queryPadding: this.queryPadding * Ze
                    }, D, W, ot);
                  }, cl.prototype.querySourceFeatures = function(D, W) {
                    var ot = this.latestFeatureIndex;
                    if (!(!ot || !ot.rawTileData)) {
                      var xt = ot.loadVTLayers(), Pt = W ? W.sourceLayer : "", Ht = xt._geojsonTileLayer || xt[Pt];
                      if (Ht)
                        for (var ve = Wl(W && W.filter), Fe = this.tileID.canonical, Ze = Fe.z, nr = Fe.x, wr = Fe.y, Fr = {
                          z: Ze,
                          x: nr,
                          y: wr
                        }, Rr = 0; Rr < Ht.length; Rr++) {
                          var Kr = Ht.feature(Rr);
                          if (ve.needGeometry) {
                            var yn = Zo(Kr, !0);
                            if (!ve.filter(new ba(this.tileID.overscaledZ), yn, this.tileID.canonical))
                              continue;
                          } else if (!ve.filter(new ba(this.tileID.overscaledZ), Kr))
                            continue;
                          var Qn = ot.getId(Kr, Pt), Bn = new fp(Kr, Ze, nr, wr, Qn);
                          Bn.tile = Fr, D.push(Bn);
                        }
                    }
                  }, cl.prototype.hasData = function() {
                    return this.state === "loaded" || this.state === "reloading" || this.state === "expired";
                  }, cl.prototype.patternsLoaded = function() {
                    return this.imageAtlas && !!Object.keys(this.imageAtlas.patternPositions).length;
                  }, cl.prototype.setExpiryData = function(D) {
                    var W = this.expirationTime;
                    if (D.cacheControl) {
                      var ot = rt(D.cacheControl);
                      ot["max-age"] && (this.expirationTime = Date.now() + ot["max-age"] * 1e3);
                    } else D.expires && (this.expirationTime = new Date(D.expires).getTime());
                    if (this.expirationTime) {
                      var xt = Date.now(), Pt = !1;
                      if (this.expirationTime > xt)
                        Pt = !1;
                      else if (!W)
                        Pt = !0;
                      else if (this.expirationTime < W)
                        Pt = !0;
                      else {
                        var Ht = this.expirationTime - W;
                        Ht ? this.expirationTime = xt + Math.max(Ht, rb) : Pt = !0;
                      }
                      Pt ? (this.expiredRequestCount++, this.state = "expired") : this.expiredRequestCount = 0;
                    }
                  }, cl.prototype.getExpiryTimeout = function() {
                    if (this.expirationTime)
                      return this.expiredRequestCount ? 1e3 * (1 << Math.min(this.expiredRequestCount - 1, 31)) : Math.min(this.expirationTime - (/* @__PURE__ */ new Date()).getTime(), Math.pow(2, 31) - 1);
                  }, cl.prototype.setFeatureState = function(D, W) {
                    if (!(!this.latestFeatureIndex || !this.latestFeatureIndex.rawTileData || Object.keys(D).length === 0)) {
                      var ot = this.latestFeatureIndex.loadVTLayers();
                      for (var xt in this.buckets)
                        if (W.style.hasLayer(xt)) {
                          var Pt = this.buckets[xt], Ht = Pt.layers[0].sourceLayer || "_geojsonTileLayer", ve = ot[Ht], Fe = D[Ht];
                          if (!(!ve || !Fe || Object.keys(Fe).length === 0)) {
                            Pt.update(Fe, ve, this.imageAtlas && this.imageAtlas.patternPositions || {});
                            var Ze = W && W.style && W.style.getLayer(xt);
                            Ze && (this.queryPadding = Math.max(this.queryPadding, Ze.queryRadius(Pt)));
                          }
                        }
                    }
                  }, cl.prototype.holdingForFade = function() {
                    return this.symbolFadeHoldUntil !== void 0;
                  }, cl.prototype.symbolFadeFinished = function() {
                    return !this.symbolFadeHoldUntil || this.symbolFadeHoldUntil < ct.now();
                  }, cl.prototype.clearFadeHold = function() {
                    this.symbolFadeHoldUntil = void 0;
                  }, cl.prototype.setHoldDuration = function(D) {
                    this.symbolFadeHoldUntil = ct.now() + D;
                  }, cl.prototype.setDependencies = function(D, W) {
                    for (var ot = {}, xt = 0, Pt = W; xt < Pt.length; xt += 1) {
                      var Ht = Pt[xt];
                      ot[Ht] = !0;
                    }
                    this.dependencies[D] = ot;
                  }, cl.prototype.hasDependency = function(D, W) {
                    for (var ot = 0, xt = D; ot < xt.length; ot += 1) {
                      var Pt = xt[ot], Ht = this.dependencies[Pt];
                      if (Ht)
                        for (var ve = 0, Fe = W; ve < Fe.length; ve += 1) {
                          var Ze = Fe[ve];
                          if (Ht[Ze])
                            return !0;
                        }
                    }
                    return !1;
                  };
                  var nb = [
                    "type",
                    "source",
                    "source-layer",
                    "minzoom",
                    "maxzoom",
                    "filter",
                    "layout"
                  ], lv = r.performance, s0 = function(D) {
                    this._marks = {
                      start: [
                        D.url,
                        "start"
                      ].join("#"),
                      end: [
                        D.url,
                        "end"
                      ].join("#"),
                      measure: D.url.toString()
                    }, lv.mark(this._marks.start);
                  };
                  s0.prototype.finish = function() {
                    lv.mark(this._marks.end);
                    var D = lv.getEntriesByName(this._marks.measure);
                    return D.length === 0 && (lv.measure(this._marks.measure, this._marks.start, this._marks.end), D = lv.getEntriesByName(this._marks.measure), lv.clearMarks(this._marks.start), lv.clearMarks(this._marks.end), lv.clearMeasures(this._marks.measure)), D;
                  }, n.Actor = ov, n.AlphaImage = Ci, n.CanonicalTileID = Ev, n.CollisionBoxArray = ev, n.Color = io, n.DEMData = Zd, n.DataConstantProperty = ta, n.DictionaryCoder = W0, n.EXTENT = _a, n.ErrorEvent = tr, n.EvaluationParameters = ba, n.Event = Tr, n.Evented = yr, n.FeatureIndex = wd, n.FillBucket = dc, n.FillExtrusionBucket = zf, n.ImageAtlas = qv, n.ImagePosition = Zp, n.LineBucket = _u, n.LngLat = ys, n.LngLatBounds = el, n.MercatorCoordinate = sv, n.ONE_EM = Dl, n.OverscaledTileID = ul, n.Point = u, n.Point$1 = u, n.Properties = So, n.Protobuf = L0, n.RGBAImage = Oi, n.RequestManager = Rt, n.RequestPerformance = s0, n.ResourceType = dr, n.SegmentVector = Ps, n.SourceFeatureState = Cv, n.StructArrayLayout1ui2 = Ws, n.StructArrayLayout2f1f2i16 = gu, n.StructArrayLayout2i4 = oh, n.StructArrayLayout3ui6 = ol, n.StructArrayLayout4i8 = Dh, n.SymbolBucket = es, n.Texture = Mv, n.Tile = cl, n.Transitionable = Co, n.Uniform1f = En, n.Uniform1i = hn, n.Uniform2f = Mn, n.Uniform3f = _n, n.Uniform4f = In, n.UniformColor = Kn, n.UniformMatrix4f = Ei, n.UnwrappedTileID = Mm, n.ValidationError = mn, n.WritingMode = lf, n.ZoomHistory = gr, n.add = nv, n.addDynamicAttributes = Ug, n.asyncAll = c, n.bezier = o, n.bindAll = h, n.browser = ct, n.cacheEntryPossiblyAdded = xe, n.clamp = g, n.clearTileCache = Le, n.clipLine = fm, n.clone = vd, n.clone$1 = O, n.clone$2 = zp, n.collisionCircleLayout = gx, n.config = lt, n.create = rv, n.create$1 = Rl, n.create$2 = Nd, n.createCommonjsModule = s, n.createExpression = Du, n.createLayout = Yo, n.createStyleLayer = Qx, n.cross = Tt, n.deepEqual = i, n.dot = yt, n.dot$1 = pr, n.ease = y, n.emitValidationErrors = Fa, n.endsWith = E, n.enforceCacheSizeLimit = me, n.evaluateSizeForFeature = Av, n.evaluateSizeForZoom = om, n.evaluateVariableOffset = vc, n.evented = ya, n.extend = _, n.featureFilter = Wl, n.filterObject = z, n.fromRotation = dd, n.getAnchorAlignment = D0, n.getAnchorJustification = B0, n.getArrayBuffer = lr, n.getImage = oe, n.getJSON = rr, n.getRTLTextPluginStatus = Oa, n.getReferrer = we, n.getVideo = de, n.identity = Oh, n.invert = dh, n.isChar = xr, n.isMapboxURL = Wt, n.keysDifference = f, n.makeRequest = Ye, n.mapObject = w, n.mercatorXfromLng = Hg, n.mercatorYfromLat = a0, n.mercatorZfromAltitude = Am, n.mul = Gv, n.multiply = vh, n.mvt = Yv, n.nextPowerOfTwo = L, n.normalize = J, n.number = ls, n.offscreenCanvasSupported = Je, n.ortho = kp, n.parseGlyphPBF = zx, n.pbf = L0, n.performSymbolLayout = Bg, n.perspective = yv, n.pick = S, n.plugin = Ui, n.polygonIntersectsPolygon = to, n.postMapLoadEvent = ee, n.postTurnstileEvent = $t, n.potpack = Dg, n.refProperties = nb, n.register = Kt, n.registerForPluginStateChange = lo, n.renderColorRamp = ao, n.rotate = Ud, n.rotateX = xu, n.rotateZ = Bh, n.scale = $s, n.scale$1 = je, n.scale$2 = R, n.setCacheLimits = qt, n.setRTLTextPlugin = Go, n.sphericalToCartesian = G, n.sqrLen = vn, n.styleSpec = $r, n.sub = be, n.symbolSize = Nx, n.transformMat3 = Nt, n.transformMat4 = br, n.translate = ps, n.triggerPluginCompletionEvent = sa, n.uniqueId = C, n.validateCustomStyleLayer = av, n.validateLight = Ni, n.validateStyle = gi, n.values = v, n.vectorTile = Yv, n.version = T, n.warnOnce = U, n.webpSupported = pt, n.window = r, n.wrap = x;
                }), P(["./shared"], function(n) {
                  function s(we) {
                    var ue = typeof we;
                    if (ue === "number" || ue === "boolean" || ue === "string" || we === void 0 || we === null)
                      return JSON.stringify(we);
                    if (Array.isArray(we)) {
                      for (var Pe = "[", Ue = 0, Ye = we; Ue < Ye.length; Ue += 1) {
                        var rr = Ye[Ue];
                        Pe += s(rr) + ",";
                      }
                      return Pe + "]";
                    }
                    for (var lr = Object.keys(we).sort(), hr = "{", Sr = 0; Sr < lr.length; Sr++)
                      hr += JSON.stringify(lr[Sr]) + ":" + s(we[lr[Sr]]) + ",";
                    return hr + "}";
                  }
                  function T(we) {
                    for (var ue = "", Pe = 0, Ue = n.refProperties; Pe < Ue.length; Pe += 1) {
                      var Ye = Ue[Pe];
                      ue += "/" + s(we[Ye]);
                    }
                    return ue;
                  }
                  function A(we, ue) {
                    for (var Pe = {}, Ue = 0; Ue < we.length; Ue++) {
                      var Ye = ue && ue[we[Ue].id] || T(we[Ue]);
                      ue && (ue[we[Ue].id] = Ye);
                      var rr = Pe[Ye];
                      rr || (rr = Pe[Ye] = []), rr.push(we[Ue]);
                    }
                    var lr = [];
                    for (var hr in Pe)
                      lr.push(Pe[hr]);
                    return lr;
                  }
                  var p = function(ue) {
                    this.keyCache = {}, ue && this.replace(ue);
                  };
                  p.prototype.replace = function(ue) {
                    this._layerConfigs = {}, this._layers = {}, this.update(ue, []);
                  }, p.prototype.update = function(ue, Pe) {
                    for (var Ue = this, Ye = 0, rr = ue; Ye < rr.length; Ye += 1) {
                      var lr = rr[Ye];
                      this._layerConfigs[lr.id] = lr;
                      var hr = this._layers[lr.id] = n.createStyleLayer(lr);
                      hr._featureFilter = n.featureFilter(hr.filter), this.keyCache[lr.id] && delete this.keyCache[lr.id];
                    }
                    for (var Sr = 0, Dr = Pe; Sr < Dr.length; Sr += 1) {
                      var Or = Dr[Sr];
                      delete this.keyCache[Or], delete this._layerConfigs[Or], delete this._layers[Or];
                    }
                    this.familiesBySource = {};
                    for (var Br = A(n.values(this._layerConfigs), this.keyCache), Nr = 0, Xr = Br; Nr < Xr.length; Nr += 1) {
                      var Gr = Xr[Nr], oe = Gr.map(function(yr) {
                        return Ue._layers[yr.id];
                      }), de = oe[0];
                      if (de.visibility !== "none") {
                        var or = de.source || "", Er = this.familiesBySource[or];
                        Er || (Er = this.familiesBySource[or] = {});
                        var Tr = de.sourceLayer || "_geojsonTileLayer", tr = Er[Tr];
                        tr || (tr = Er[Tr] = []), tr.push(oe);
                      }
                    }
                  };
                  var u = 1, t = function(ue) {
                    var Pe = {}, Ue = [];
                    for (var Ye in ue) {
                      var rr = ue[Ye], lr = Pe[Ye] = {};
                      for (var hr in rr) {
                        var Sr = rr[+hr];
                        if (!(!Sr || Sr.bitmap.width === 0 || Sr.bitmap.height === 0)) {
                          var Dr = {
                            x: 0,
                            y: 0,
                            w: Sr.bitmap.width + 2 * u,
                            h: Sr.bitmap.height + 2 * u
                          };
                          Ue.push(Dr), lr[hr] = {
                            rect: Dr,
                            metrics: Sr.metrics
                          };
                        }
                      }
                    }
                    var Or = n.potpack(Ue), Br = Or.w, Nr = Or.h, Xr = new n.AlphaImage({
                      width: Br || 1,
                      height: Nr || 1
                    });
                    for (var Gr in ue) {
                      var oe = ue[Gr];
                      for (var de in oe) {
                        var or = oe[+de];
                        if (!(!or || or.bitmap.width === 0 || or.bitmap.height === 0)) {
                          var Er = Pe[Gr][de].rect;
                          n.AlphaImage.copy(or.bitmap, Xr, {
                            x: 0,
                            y: 0
                          }, {
                            x: Er.x + u,
                            y: Er.y + u
                          }, or.bitmap);
                        }
                      }
                    }
                    this.image = Xr, this.positions = Pe;
                  };
                  n.register("GlyphAtlas", t);
                  var r = function(ue) {
                    this.tileID = new n.OverscaledTileID(ue.tileID.overscaledZ, ue.tileID.wrap, ue.tileID.canonical.z, ue.tileID.canonical.x, ue.tileID.canonical.y), this.uid = ue.uid, this.zoom = ue.zoom, this.pixelRatio = ue.pixelRatio, this.tileSize = ue.tileSize, this.source = ue.source, this.overscaling = this.tileID.overscaleFactor(), this.showCollisionBoxes = ue.showCollisionBoxes, this.collectResourceTiming = !!ue.collectResourceTiming, this.returnDependencies = !!ue.returnDependencies, this.promoteId = ue.promoteId;
                  };
                  r.prototype.parse = function(ue, Pe, Ue, Ye, rr) {
                    var lr = this;
                    this.status = "parsing", this.data = ue, this.collisionBoxArray = new n.CollisionBoxArray();
                    var hr = new n.DictionaryCoder(Object.keys(ue.layers).sort()), Sr = new n.FeatureIndex(this.tileID, this.promoteId);
                    Sr.bucketLayerIDs = [];
                    var Dr = {}, Or = {
                      featureIndex: Sr,
                      iconDependencies: {},
                      patternDependencies: {},
                      glyphDependencies: {},
                      availableImages: Ue
                    }, Br = Pe.familiesBySource[this.source];
                    for (var Nr in Br) {
                      var Xr = ue.layers[Nr];
                      if (Xr) {
                        Xr.version === 1 && n.warnOnce('Vector tile source "' + this.source + '" layer "' + Nr + '" does not use vector tile spec v2 and therefore may have some rendering errors.');
                        for (var Gr = hr.encode(Nr), oe = [], de = 0; de < Xr.length; de++) {
                          var or = Xr.feature(de), Er = Sr.getId(or, Nr);
                          oe.push({
                            feature: or,
                            id: Er,
                            index: de,
                            sourceLayerIndex: Gr
                          });
                        }
                        for (var Tr = 0, tr = Br[Nr]; Tr < tr.length; Tr += 1) {
                          var yr = tr[Tr], Ir = yr[0];
                          if (!(Ir.minzoom && this.zoom < Math.floor(Ir.minzoom)) && !(Ir.maxzoom && this.zoom >= Ir.maxzoom) && Ir.visibility !== "none") {
                            i(yr, this.zoom, Ue);
                            var Cr = Dr[Ir.id] = Ir.createBucket({
                              index: Sr.bucketLayerIDs.length,
                              layers: yr,
                              zoom: this.zoom,
                              pixelRatio: this.pixelRatio,
                              overscaling: this.overscaling,
                              collisionBoxArray: this.collisionBoxArray,
                              sourceLayerIndex: Gr,
                              sourceID: this.source
                            });
                            Cr.populate(oe, Or, this.tileID.canonical), Sr.bucketLayerIDs.push(yr.map(function(jr) {
                              return jr.id;
                            }));
                          }
                        }
                      }
                    }
                    var _r, Zr, ln, Jr, Zn = n.mapObject(Or.glyphDependencies, function(jr) {
                      return Object.keys(jr).map(Number);
                    });
                    Object.keys(Zn).length ? Ye.send("getGlyphs", {
                      uid: this.uid,
                      stacks: Zn
                    }, function(jr, zr) {
                      _r || (_r = jr, Zr = zr, Vn.call(lr));
                    }) : Zr = {};
                    var fn = Object.keys(Or.iconDependencies);
                    fn.length ? Ye.send("getImages", {
                      icons: fn,
                      source: this.source,
                      tileID: this.tileID,
                      type: "icons"
                    }, function(jr, zr) {
                      _r || (_r = jr, ln = zr, Vn.call(lr));
                    }) : ln = {};
                    var hi = Object.keys(Or.patternDependencies);
                    hi.length ? Ye.send("getImages", {
                      icons: hi,
                      source: this.source,
                      tileID: this.tileID,
                      type: "patterns"
                    }, function(jr, zr) {
                      _r || (_r = jr, Jr = zr, Vn.call(lr));
                    }) : Jr = {}, Vn.call(this);
                    function Vn() {
                      if (_r)
                        return rr(_r);
                      if (Zr && ln && Jr) {
                        var jr = new t(Zr), zr = new n.ImageAtlas(ln, Jr);
                        for (var Tn in Dr) {
                          var sn = Dr[Tn];
                          sn instanceof n.SymbolBucket ? (i(sn.layers, this.zoom, Ue), n.performSymbolLayout(sn, Zr, jr.positions, ln, zr.iconPositions, this.showCollisionBoxes, this.tileID.canonical)) : sn.hasPattern && (sn instanceof n.LineBucket || sn instanceof n.FillBucket || sn instanceof n.FillExtrusionBucket) && (i(sn.layers, this.zoom, Ue), sn.addFeatures(Or, this.tileID.canonical, zr.patternPositions));
                        }
                        this.status = "done", rr(null, {
                          buckets: n.values(Dr).filter(function($n) {
                            return !$n.isEmpty();
                          }),
                          featureIndex: Sr,
                          collisionBoxArray: this.collisionBoxArray,
                          glyphAtlasImage: jr.image,
                          imageAtlas: zr,
                          glyphMap: this.returnDependencies ? Zr : null,
                          iconMap: this.returnDependencies ? ln : null,
                          glyphPositions: this.returnDependencies ? jr.positions : null
                        });
                      }
                    }
                  };
                  function i(we, ue, Pe) {
                    for (var Ue = new n.EvaluationParameters(ue), Ye = 0, rr = we; Ye < rr.length; Ye += 1) {
                      var lr = rr[Ye];
                      lr.recalculate(Ue, Pe);
                    }
                  }
                  function a(we, ue) {
                    var Pe = n.getArrayBuffer(we.request, function(Ue, Ye, rr, lr) {
                      Ue ? ue(Ue) : Ye && ue(null, {
                        vectorTile: new n.vectorTile.VectorTile(new n.pbf(Ye)),
                        rawData: Ye,
                        cacheControl: rr,
                        expires: lr
                      });
                    });
                    return function() {
                      Pe.cancel(), ue();
                    };
                  }
                  var l = function(ue, Pe, Ue, Ye) {
                    this.actor = ue, this.layerIndex = Pe, this.availableImages = Ue, this.loadVectorData = Ye || a, this.loading = {}, this.loaded = {};
                  };
                  l.prototype.loadTile = function(ue, Pe) {
                    var Ue = this, Ye = ue.uid;
                    this.loading || (this.loading = {});
                    var rr = ue && ue.request && ue.request.collectResourceTiming ? new n.RequestPerformance(ue.request) : !1, lr = this.loading[Ye] = new r(ue);
                    lr.abort = this.loadVectorData(ue, function(hr, Sr) {
                      if (delete Ue.loading[Ye], hr || !Sr)
                        return lr.status = "done", Ue.loaded[Ye] = lr, Pe(hr);
                      var Dr = Sr.rawData, Or = {};
                      Sr.expires && (Or.expires = Sr.expires), Sr.cacheControl && (Or.cacheControl = Sr.cacheControl);
                      var Br = {};
                      if (rr) {
                        var Nr = rr.finish();
                        Nr && (Br.resourceTiming = JSON.parse(JSON.stringify(Nr)));
                      }
                      lr.vectorTile = Sr.vectorTile, lr.parse(Sr.vectorTile, Ue.layerIndex, Ue.availableImages, Ue.actor, function(Xr, Gr) {
                        if (Xr || !Gr)
                          return Pe(Xr);
                        Pe(null, n.extend({ rawTileData: Dr.slice(0) }, Gr, Or, Br));
                      }), Ue.loaded = Ue.loaded || {}, Ue.loaded[Ye] = lr;
                    });
                  }, l.prototype.reloadTile = function(ue, Pe) {
                    var Ue = this, Ye = this.loaded, rr = ue.uid, lr = this;
                    if (Ye && Ye[rr]) {
                      var hr = Ye[rr];
                      hr.showCollisionBoxes = ue.showCollisionBoxes;
                      var Sr = function(Dr, Or) {
                        var Br = hr.reloadCallback;
                        Br && (delete hr.reloadCallback, hr.parse(hr.vectorTile, lr.layerIndex, Ue.availableImages, lr.actor, Br)), Pe(Dr, Or);
                      };
                      hr.status === "parsing" ? hr.reloadCallback = Sr : hr.status === "done" && (hr.vectorTile ? hr.parse(hr.vectorTile, this.layerIndex, this.availableImages, this.actor, Sr) : Sr());
                    }
                  }, l.prototype.abortTile = function(ue, Pe) {
                    var Ue = this.loading, Ye = ue.uid;
                    Ue && Ue[Ye] && Ue[Ye].abort && (Ue[Ye].abort(), delete Ue[Ye]), Pe();
                  }, l.prototype.removeTile = function(ue, Pe) {
                    var Ue = this.loaded, Ye = ue.uid;
                    Ue && Ue[Ye] && delete Ue[Ye], Pe();
                  };
                  var o = n.window.ImageBitmap, y = function() {
                    this.loaded = {};
                  };
                  y.prototype.loadTile = function(ue, Pe) {
                    var Ue = ue.uid, Ye = ue.encoding, rr = ue.rawImageData, lr = o && rr instanceof o ? this.getImageData(rr) : rr, hr = new n.DEMData(Ue, lr, Ye);
                    this.loaded = this.loaded || {}, this.loaded[Ue] = hr, Pe(null, hr);
                  }, y.prototype.getImageData = function(ue) {
                    (!this.offscreenCanvas || !this.offscreenCanvasContext) && (this.offscreenCanvas = new OffscreenCanvas(ue.width, ue.height), this.offscreenCanvasContext = this.offscreenCanvas.getContext("2d")), this.offscreenCanvas.width = ue.width, this.offscreenCanvas.height = ue.height, this.offscreenCanvasContext.drawImage(ue, 0, 0, ue.width, ue.height);
                    var Pe = this.offscreenCanvasContext.getImageData(-1, -1, ue.width + 2, ue.height + 2);
                    return this.offscreenCanvasContext.clearRect(0, 0, this.offscreenCanvas.width, this.offscreenCanvas.height), new n.RGBAImage({
                      width: Pe.width,
                      height: Pe.height
                    }, Pe.data);
                  }, y.prototype.removeTile = function(ue) {
                    var Pe = this.loaded, Ue = ue.uid;
                    Pe && Pe[Ue] && delete Pe[Ue];
                  };
                  var g = x;
                  function x(we, ue) {
                    var Pe = we && we.type, Ue;
                    if (Pe === "FeatureCollection")
                      for (Ue = 0; Ue < we.features.length; Ue++)
                        x(we.features[Ue], ue);
                    else if (Pe === "GeometryCollection")
                      for (Ue = 0; Ue < we.geometries.length; Ue++)
                        x(we.geometries[Ue], ue);
                    else if (Pe === "Feature")
                      x(we.geometry, ue);
                    else if (Pe === "Polygon")
                      c(we.coordinates, ue);
                    else if (Pe === "MultiPolygon")
                      for (Ue = 0; Ue < we.coordinates.length; Ue++)
                        c(we.coordinates[Ue], ue);
                    return we;
                  }
                  function c(we, ue) {
                    if (we.length !== 0) {
                      v(we[0], ue);
                      for (var Pe = 1; Pe < we.length; Pe++)
                        v(we[Pe], !ue);
                    }
                  }
                  function v(we, ue) {
                    for (var Pe = 0, Ue = 0, Ye = we.length, rr = Ye - 1; Ue < Ye; rr = Ue++)
                      Pe += (we[Ue][0] - we[rr][0]) * (we[rr][1] + we[Ue][1]);
                    Pe >= 0 != !!ue && we.reverse();
                  }
                  var f = n.vectorTile.VectorTileFeature.prototype.toGeoJSON, _ = function(ue) {
                    this._feature = ue, this.extent = n.EXTENT, this.type = ue.type, this.properties = ue.tags, "id" in ue && !isNaN(ue.id) && (this.id = parseInt(ue.id, 10));
                  };
                  _.prototype.loadGeometry = function() {
                    if (this._feature.type === 1) {
                      for (var ue = [], Pe = 0, Ue = this._feature.geometry; Pe < Ue.length; Pe += 1) {
                        var Ye = Ue[Pe];
                        ue.push([new n.Point$1(Ye[0], Ye[1])]);
                      }
                      return ue;
                    } else {
                      for (var rr = [], lr = 0, hr = this._feature.geometry; lr < hr.length; lr += 1) {
                        for (var Sr = hr[lr], Dr = [], Or = 0, Br = Sr; Or < Br.length; Or += 1) {
                          var Nr = Br[Or];
                          Dr.push(new n.Point$1(Nr[0], Nr[1]));
                        }
                        rr.push(Dr);
                      }
                      return rr;
                    }
                  }, _.prototype.toGeoJSON = function(ue, Pe, Ue) {
                    return f.call(this, ue, Pe, Ue);
                  };
                  var S = function(ue) {
                    this.layers = { _geojsonTileLayer: this }, this.name = "_geojsonTileLayer", this.extent = n.EXTENT, this.length = ue.length, this._features = ue;
                  };
                  S.prototype.feature = function(ue) {
                    return new _(this._features[ue]);
                  };
                  var M = n.vectorTile.VectorTileFeature, C = m;
                  function m(we, ue) {
                    this.options = ue || {}, this.features = we, this.length = we.length;
                  }
                  m.prototype.feature = function(we) {
                    return new L(this.features[we], this.options.extent);
                  };
                  function L(we, ue) {
                    this.id = typeof we.id == "number" ? we.id : void 0, this.type = we.type, this.rawGeometry = we.type === 1 ? [we.geometry] : we.geometry, this.properties = we.tags, this.extent = ue || 4096;
                  }
                  L.prototype.loadGeometry = function() {
                    var we = this.rawGeometry;
                    this.geometry = [];
                    for (var ue = 0; ue < we.length; ue++) {
                      for (var Pe = we[ue], Ue = [], Ye = 0; Ye < Pe.length; Ye++)
                        Ue.push(new n.Point$1(Pe[Ye][0], Pe[Ye][1]));
                      this.geometry.push(Ue);
                    }
                    return this.geometry;
                  }, L.prototype.bbox = function() {
                    this.geometry || this.loadGeometry();
                    for (var we = this.geometry, ue = 1 / 0, Pe = -1 / 0, Ue = 1 / 0, Ye = -1 / 0, rr = 0; rr < we.length; rr++)
                      for (var lr = we[rr], hr = 0; hr < lr.length; hr++) {
                        var Sr = lr[hr];
                        ue = Math.min(ue, Sr.x), Pe = Math.max(Pe, Sr.x), Ue = Math.min(Ue, Sr.y), Ye = Math.max(Ye, Sr.y);
                      }
                    return [
                      ue,
                      Ue,
                      Pe,
                      Ye
                    ];
                  }, L.prototype.toGeoJSON = M.prototype.toGeoJSON;
                  var d = z, h = z, E = O, w = C;
                  function z(we) {
                    var ue = new n.pbf();
                    return B(we, ue), ue.finish();
                  }
                  function O(we, ue) {
                    ue = ue || {};
                    var Pe = {};
                    for (var Ue in we)
                      Pe[Ue] = new C(we[Ue].features, ue), Pe[Ue].name = Ue, Pe[Ue].version = ue.version, Pe[Ue].extent = ue.extent;
                    return z({ layers: Pe });
                  }
                  function B(we, ue) {
                    for (var Pe in we.layers)
                      ue.writeMessage(3, V, we.layers[Pe]);
                  }
                  function V(we, ue) {
                    ue.writeVarintField(15, we.version || 1), ue.writeStringField(1, we.name || ""), ue.writeVarintField(5, we.extent || 4096);
                    var Pe, Ue = {
                      keys: [],
                      values: [],
                      keycache: {},
                      valuecache: {}
                    };
                    for (Pe = 0; Pe < we.length; Pe++)
                      Ue.feature = we.feature(Pe), ue.writeMessage(2, U, Ue);
                    var Ye = Ue.keys;
                    for (Pe = 0; Pe < Ye.length; Pe++)
                      ue.writeStringField(3, Ye[Pe]);
                    var rr = Ue.values;
                    for (Pe = 0; Pe < rr.length; Pe++)
                      ue.writeMessage(4, rt, rr[Pe]);
                  }
                  function U(we, ue) {
                    var Pe = we.feature;
                    Pe.id !== void 0 && ue.writeVarintField(1, Pe.id), ue.writeMessage(2, H, we), ue.writeVarintField(3, Pe.type), ue.writeMessage(4, q, Pe);
                  }
                  function H(we, ue) {
                    var Pe = we.feature, Ue = we.keys, Ye = we.values, rr = we.keycache, lr = we.valuecache;
                    for (var hr in Pe.properties) {
                      var Sr = rr[hr];
                      typeof Sr > "u" && (Ue.push(hr), Sr = Ue.length - 1, rr[hr] = Sr), ue.writeVarint(Sr);
                      var Dr = Pe.properties[hr], Or = typeof Dr;
                      Or !== "string" && Or !== "boolean" && Or !== "number" && (Dr = JSON.stringify(Dr));
                      var Br = Or + ":" + Dr, Nr = lr[Br];
                      typeof Nr > "u" && (Ye.push(Dr), Nr = Ye.length - 1, lr[Br] = Nr), ue.writeVarint(Nr);
                    }
                  }
                  function F(we, ue) {
                    return (ue << 3) + (we & 7);
                  }
                  function G(we) {
                    return we << 1 ^ we >> 31;
                  }
                  function q(we, ue) {
                    for (var Pe = we.loadGeometry(), Ue = we.type, Ye = 0, rr = 0, lr = Pe.length, hr = 0; hr < lr; hr++) {
                      var Sr = Pe[hr], Dr = 1;
                      Ue === 1 && (Dr = Sr.length), ue.writeVarint(F(1, Dr));
                      for (var Or = Ue === 3 ? Sr.length - 1 : Sr.length, Br = 0; Br < Or; Br++) {
                        Br === 1 && Ue !== 1 && ue.writeVarint(F(2, Or - 1));
                        var Nr = Sr[Br].x - Ye, Xr = Sr[Br].y - rr;
                        ue.writeVarint(G(Nr)), ue.writeVarint(G(Xr)), Ye += Nr, rr += Xr;
                      }
                      Ue === 3 && ue.writeVarint(F(7, 1));
                    }
                  }
                  function rt(we, ue) {
                    var Pe = typeof we;
                    Pe === "string" ? ue.writeStringField(1, we) : Pe === "boolean" ? ue.writeBooleanField(7, we) : Pe === "number" && (we % 1 !== 0 ? ue.writeDoubleField(3, we) : we < 0 ? ue.writeSVarintField(6, we) : ue.writeVarintField(5, we));
                  }
                  d.fromVectorTileJs = h, d.fromGeojsonVt = E, d.GeoJSONWrapper = w;
                  function st(we, ue, Pe, Ue, Ye, rr) {
                    if (!(Ye - Ue <= Pe)) {
                      var lr = Ue + Ye >> 1;
                      vt(we, ue, lr, Ue, Ye, rr % 2), st(we, ue, Pe, Ue, lr - 1, rr + 1), st(we, ue, Pe, lr + 1, Ye, rr + 1);
                    }
                  }
                  function vt(we, ue, Pe, Ue, Ye, rr) {
                    for (; Ye > Ue; ) {
                      if (Ye - Ue > 600) {
                        var lr = Ye - Ue + 1, hr = Pe - Ue + 1, Sr = Math.log(lr), Dr = 0.5 * Math.exp(2 * Sr / 3), Or = 0.5 * Math.sqrt(Sr * Dr * (lr - Dr) / lr) * (hr - lr / 2 < 0 ? -1 : 1), Br = Math.max(Ue, Math.floor(Pe - hr * Dr / lr + Or)), Nr = Math.min(Ye, Math.floor(Pe + (lr - hr) * Dr / lr + Or));
                        vt(we, ue, Pe, Br, Nr, rr);
                      }
                      var Xr = ue[2 * Pe + rr], Gr = Ue, oe = Ye;
                      for (ht(we, ue, Ue, Pe), ue[2 * Ye + rr] > Xr && ht(we, ue, Ue, Ye); Gr < oe; ) {
                        for (ht(we, ue, Gr, oe), Gr++, oe--; ue[2 * Gr + rr] < Xr; )
                          Gr++;
                        for (; ue[2 * oe + rr] > Xr; )
                          oe--;
                      }
                      ue[2 * Ue + rr] === Xr ? ht(we, ue, Ue, oe) : (oe++, ht(we, ue, oe, Ye)), oe <= Pe && (Ue = oe + 1), Pe <= oe && (Ye = oe - 1);
                    }
                  }
                  function ht(we, ue, Pe, Ue) {
                    et(we, Pe, Ue), et(ue, 2 * Pe, 2 * Ue), et(ue, 2 * Pe + 1, 2 * Ue + 1);
                  }
                  function et(we, ue, Pe) {
                    var Ue = we[ue];
                    we[ue] = we[Pe], we[Pe] = Ue;
                  }
                  function Q(we, ue, Pe, Ue, Ye, rr, lr) {
                    for (var hr = [
                      0,
                      we.length - 1,
                      0
                    ], Sr = [], Dr, Or; hr.length; ) {
                      var Br = hr.pop(), Nr = hr.pop(), Xr = hr.pop();
                      if (Nr - Xr <= lr) {
                        for (var Gr = Xr; Gr <= Nr; Gr++)
                          Dr = ue[2 * Gr], Or = ue[2 * Gr + 1], Dr >= Pe && Dr <= Ye && Or >= Ue && Or <= rr && Sr.push(we[Gr]);
                        continue;
                      }
                      var oe = Math.floor((Xr + Nr) / 2);
                      Dr = ue[2 * oe], Or = ue[2 * oe + 1], Dr >= Pe && Dr <= Ye && Or >= Ue && Or <= rr && Sr.push(we[oe]);
                      var de = (Br + 1) % 2;
                      (Br === 0 ? Pe <= Dr : Ue <= Or) && (hr.push(Xr), hr.push(oe - 1), hr.push(de)), (Br === 0 ? Ye >= Dr : rr >= Or) && (hr.push(oe + 1), hr.push(Nr), hr.push(de));
                    }
                    return Sr;
                  }
                  function j(we, ue, Pe, Ue, Ye, rr) {
                    for (var lr = [
                      0,
                      we.length - 1,
                      0
                    ], hr = [], Sr = Ye * Ye; lr.length; ) {
                      var Dr = lr.pop(), Or = lr.pop(), Br = lr.pop();
                      if (Or - Br <= rr) {
                        for (var Nr = Br; Nr <= Or; Nr++)
                          at(ue[2 * Nr], ue[2 * Nr + 1], Pe, Ue) <= Sr && hr.push(we[Nr]);
                        continue;
                      }
                      var Xr = Math.floor((Br + Or) / 2), Gr = ue[2 * Xr], oe = ue[2 * Xr + 1];
                      at(Gr, oe, Pe, Ue) <= Sr && hr.push(we[Xr]);
                      var de = (Dr + 1) % 2;
                      (Dr === 0 ? Pe - Ye <= Gr : Ue - Ye <= oe) && (lr.push(Br), lr.push(Xr - 1), lr.push(de)), (Dr === 0 ? Pe + Ye >= Gr : Ue + Ye >= oe) && (lr.push(Xr + 1), lr.push(Or), lr.push(de));
                    }
                    return hr;
                  }
                  function at(we, ue, Pe, Ue) {
                    var Ye = we - Pe, rr = ue - Ue;
                    return Ye * Ye + rr * rr;
                  }
                  var ut = function(we) {
                    return we[0];
                  }, nt = function(we) {
                    return we[1];
                  }, X = function(ue, Pe, Ue, Ye, rr) {
                    Pe === void 0 && (Pe = ut), Ue === void 0 && (Ue = nt), Ye === void 0 && (Ye = 64), rr === void 0 && (rr = Float64Array), this.nodeSize = Ye, this.points = ue;
                    for (var lr = ue.length < 65536 ? Uint16Array : Uint32Array, hr = this.ids = new lr(ue.length), Sr = this.coords = new rr(ue.length * 2), Dr = 0; Dr < ue.length; Dr++)
                      hr[Dr] = Dr, Sr[2 * Dr] = Pe(ue[Dr]), Sr[2 * Dr + 1] = Ue(ue[Dr]);
                    st(hr, Sr, Ye, 0, hr.length - 1, 0);
                  };
                  X.prototype.range = function(ue, Pe, Ue, Ye) {
                    return Q(this.ids, this.coords, ue, Pe, Ue, Ye, this.nodeSize);
                  }, X.prototype.within = function(ue, Pe, Ue) {
                    return j(this.ids, this.coords, ue, Pe, Ue, this.nodeSize);
                  };
                  var ct = {
                    minZoom: 0,
                    maxZoom: 16,
                    minPoints: 2,
                    radius: 40,
                    extent: 512,
                    nodeSize: 64,
                    log: !1,
                    generateId: !1,
                    reduce: null,
                    map: function(we) {
                      return we;
                    }
                  }, lt = function(ue) {
                    this.options = zt(Object.create(ct), ue), this.trees = new Array(this.options.maxZoom + 1);
                  };
                  lt.prototype.load = function(ue) {
                    var Pe = this.options, Ue = Pe.log, Ye = Pe.minZoom, rr = Pe.maxZoom, lr = Pe.nodeSize;
                    Ue && console.time("total time");
                    var hr = "prepare " + ue.length + " points";
                    Ue && console.time(hr), this.points = ue;
                    for (var Sr = [], Dr = 0; Dr < ue.length; Dr++)
                      ue[Dr].geometry && Sr.push(wt(ue[Dr], Dr));
                    this.trees[rr + 1] = new X(Sr, Rt, Wt, lr, Float32Array), Ue && console.timeEnd(hr);
                    for (var Or = rr; Or >= Ye; Or--) {
                      var Br = +Date.now();
                      Sr = this._cluster(Sr, Or), this.trees[Or] = new X(Sr, Rt, Wt, lr, Float32Array), Ue && console.log("z%d: %d clusters in %dms", Or, Sr.length, +Date.now() - Br);
                    }
                    return Ue && console.timeEnd("total time"), this;
                  }, lt.prototype.getClusters = function(ue, Pe) {
                    var Ue = ((ue[0] + 180) % 360 + 360) % 360 - 180, Ye = Math.max(-90, Math.min(90, ue[1])), rr = ue[2] === 180 ? 180 : ((ue[2] + 180) % 360 + 360) % 360 - 180, lr = Math.max(-90, Math.min(90, ue[3]));
                    if (ue[2] - ue[0] >= 360)
                      Ue = -180, rr = 180;
                    else if (Ue > rr) {
                      var hr = this.getClusters([
                        Ue,
                        Ye,
                        180,
                        lr
                      ], Pe), Sr = this.getClusters([
                        -180,
                        Ye,
                        rr,
                        lr
                      ], Pe);
                      return hr.concat(Sr);
                    }
                    for (var Dr = this.trees[this._limitZoom(Pe)], Or = Dr.range(Gt(Ue), Jt(lr), Gt(rr), Jt(Ye)), Br = [], Nr = 0, Xr = Or; Nr < Xr.length; Nr += 1) {
                      var Gr = Xr[Nr], oe = Dr.points[Gr];
                      Br.push(oe.numPoints ? Et(oe) : this.points[oe.index]);
                    }
                    return Br;
                  }, lt.prototype.getChildren = function(ue) {
                    var Pe = this._getOriginId(ue), Ue = this._getOriginZoom(ue), Ye = "No cluster with the specified id.", rr = this.trees[Ue];
                    if (!rr)
                      throw new Error(Ye);
                    var lr = rr.points[Pe];
                    if (!lr)
                      throw new Error(Ye);
                    for (var hr = this.options.radius / (this.options.extent * Math.pow(2, Ue - 1)), Sr = rr.within(lr.x, lr.y, hr), Dr = [], Or = 0, Br = Sr; Or < Br.length; Or += 1) {
                      var Nr = Br[Or], Xr = rr.points[Nr];
                      Xr.parentId === ue && Dr.push(Xr.numPoints ? Et(Xr) : this.points[Xr.index]);
                    }
                    if (Dr.length === 0)
                      throw new Error(Ye);
                    return Dr;
                  }, lt.prototype.getLeaves = function(ue, Pe, Ue) {
                    Pe = Pe || 10, Ue = Ue || 0;
                    var Ye = [];
                    return this._appendLeaves(Ye, ue, Pe, Ue, 0), Ye;
                  }, lt.prototype.getTile = function(ue, Pe, Ue) {
                    var Ye = this.trees[this._limitZoom(ue)], rr = Math.pow(2, ue), lr = this.options, hr = lr.extent, Sr = lr.radius, Dr = Sr / hr, Or = (Ue - Dr) / rr, Br = (Ue + 1 + Dr) / rr, Nr = { features: [] };
                    return this._addTileFeatures(Ye.range((Pe - Dr) / rr, Or, (Pe + 1 + Dr) / rr, Br), Ye.points, Pe, Ue, rr, Nr), Pe === 0 && this._addTileFeatures(Ye.range(1 - Dr / rr, Or, 1, Br), Ye.points, rr, Ue, rr, Nr), Pe === rr - 1 && this._addTileFeatures(Ye.range(0, Or, Dr / rr, Br), Ye.points, -1, Ue, rr, Nr), Nr.features.length ? Nr : null;
                  }, lt.prototype.getClusterExpansionZoom = function(ue) {
                    for (var Pe = this._getOriginZoom(ue) - 1; Pe <= this.options.maxZoom; ) {
                      var Ue = this.getChildren(ue);
                      if (Pe++, Ue.length !== 1)
                        break;
                      ue = Ue[0].properties.cluster_id;
                    }
                    return Pe;
                  }, lt.prototype._appendLeaves = function(ue, Pe, Ue, Ye, rr) {
                    for (var lr = this.getChildren(Pe), hr = 0, Sr = lr; hr < Sr.length; hr += 1) {
                      var Dr = Sr[hr], Or = Dr.properties;
                      if (Or && Or.cluster ? rr + Or.point_count <= Ye ? rr += Or.point_count : rr = this._appendLeaves(ue, Or.cluster_id, Ue, Ye, rr) : rr < Ye ? rr++ : ue.push(Dr), ue.length === Ue)
                        break;
                    }
                    return rr;
                  }, lt.prototype._addTileFeatures = function(ue, Pe, Ue, Ye, rr, lr) {
                    for (var hr = 0, Sr = ue; hr < Sr.length; hr += 1) {
                      var Dr = Sr[hr], Or = Pe[Dr], Br = Or.numPoints, Nr = {
                        type: 1,
                        geometry: [[
                          Math.round(this.options.extent * (Or.x * rr - Ue)),
                          Math.round(this.options.extent * (Or.y * rr - Ye))
                        ]],
                        tags: Br ? Ct(Or) : this.points[Or.index].properties
                      }, Xr = void 0;
                      Br ? Xr = Or.id : this.options.generateId ? Xr = Or.index : this.points[Or.index].id && (Xr = this.points[Or.index].id), Xr !== void 0 && (Nr.id = Xr), lr.features.push(Nr);
                    }
                  }, lt.prototype._limitZoom = function(ue) {
                    return Math.max(this.options.minZoom, Math.min(+ue, this.options.maxZoom + 1));
                  }, lt.prototype._cluster = function(ue, Pe) {
                    for (var Ue = [], Ye = this.options, rr = Ye.radius, lr = Ye.extent, hr = Ye.reduce, Sr = Ye.minPoints, Dr = rr / (lr * Math.pow(2, Pe)), Or = 0; Or < ue.length; Or++) {
                      var Br = ue[Or];
                      if (!(Br.zoom <= Pe)) {
                        Br.zoom = Pe;
                        for (var Nr = this.trees[Pe + 1], Xr = Nr.within(Br.x, Br.y, Dr), Gr = Br.numPoints || 1, oe = Gr, de = 0, or = Xr; de < or.length; de += 1) {
                          var Er = or[de], Tr = Nr.points[Er];
                          Tr.zoom > Pe && (oe += Tr.numPoints || 1);
                        }
                        if (oe >= Sr) {
                          for (var tr = Br.x * Gr, yr = Br.y * Gr, Ir = hr && Gr > 1 ? this._map(Br, !0) : null, Cr = (Or << 5) + (Pe + 1) + this.points.length, _r = 0, Zr = Xr; _r < Zr.length; _r += 1) {
                            var ln = Zr[_r], Jr = Nr.points[ln];
                            if (!(Jr.zoom <= Pe)) {
                              Jr.zoom = Pe;
                              var Zn = Jr.numPoints || 1;
                              tr += Jr.x * Zn, yr += Jr.y * Zn, Jr.parentId = Cr, hr && (Ir || (Ir = this._map(Br, !0)), hr(Ir, this._map(Jr)));
                            }
                          }
                          Br.parentId = Cr, Ue.push(pt(tr / oe, yr / oe, Cr, oe, Ir));
                        } else if (Ue.push(Br), oe > 1)
                          for (var fn = 0, hi = Xr; fn < hi.length; fn += 1) {
                            var Vn = hi[fn], jr = Nr.points[Vn];
                            jr.zoom <= Pe || (jr.zoom = Pe, Ue.push(jr));
                          }
                      }
                    }
                    return Ue;
                  }, lt.prototype._getOriginId = function(ue) {
                    return ue - this.points.length >> 5;
                  }, lt.prototype._getOriginZoom = function(ue) {
                    return (ue - this.points.length) % 32;
                  }, lt.prototype._map = function(ue, Pe) {
                    if (ue.numPoints)
                      return Pe ? zt({}, ue.properties) : ue.properties;
                    var Ue = this.points[ue.index].properties, Ye = this.options.map(Ue);
                    return Pe && Ye === Ue ? zt({}, Ye) : Ye;
                  };
                  function pt(we, ue, Pe, Ue, Ye) {
                    return {
                      x: we,
                      y: ue,
                      zoom: 1 / 0,
                      id: Pe,
                      parentId: -1,
                      numPoints: Ue,
                      properties: Ye
                    };
                  }
                  function wt(we, ue) {
                    var Pe = we.geometry.coordinates, Ue = Pe[0], Ye = Pe[1];
                    return {
                      x: Gt(Ue),
                      y: Jt(Ye),
                      zoom: 1 / 0,
                      index: ue,
                      parentId: -1
                    };
                  }
                  function Et(we) {
                    return {
                      type: "Feature",
                      id: we.id,
                      properties: Ct(we),
                      geometry: {
                        type: "Point",
                        coordinates: [
                          Qt(we.x),
                          Vt(we.y)
                        ]
                      }
                    };
                  }
                  function Ct(we) {
                    var ue = we.numPoints, Pe = ue >= 1e4 ? Math.round(ue / 1e3) + "k" : ue >= 1e3 ? Math.round(ue / 100) / 10 + "k" : ue;
                    return zt(zt({}, we.properties), {
                      cluster: !0,
                      cluster_id: we.id,
                      point_count: ue,
                      point_count_abbreviated: Pe
                    });
                  }
                  function Gt(we) {
                    return we / 360 + 0.5;
                  }
                  function Jt(we) {
                    var ue = Math.sin(we * Math.PI / 180), Pe = 0.5 - 0.25 * Math.log((1 + ue) / (1 - ue)) / Math.PI;
                    return Pe < 0 ? 0 : Pe > 1 ? 1 : Pe;
                  }
                  function Qt(we) {
                    return (we - 0.5) * 360;
                  }
                  function Vt(we) {
                    var ue = (180 - we * 360) * Math.PI / 180;
                    return 360 * Math.atan(Math.exp(ue)) / Math.PI - 90;
                  }
                  function zt(we, ue) {
                    for (var Pe in ue)
                      we[Pe] = ue[Pe];
                    return we;
                  }
                  function Rt(we) {
                    return we.x;
                  }
                  function Wt(we) {
                    return we.y;
                  }
                  function kt(we, ue, Pe, Ue) {
                    for (var Ye = Ue, rr = Pe - ue >> 1, lr = Pe - ue, hr, Sr = we[ue], Dr = we[ue + 1], Or = we[Pe], Br = we[Pe + 1], Nr = ue + 3; Nr < Pe; Nr += 3) {
                      var Xr = re(we[Nr], we[Nr + 1], Sr, Dr, Or, Br);
                      if (Xr > Ye)
                        hr = Nr, Ye = Xr;
                      else if (Xr === Ye) {
                        var Gr = Math.abs(Nr - rr);
                        Gr < lr && (hr = Nr, lr = Gr);
                      }
                    }
                    Ye > Ue && (hr - ue > 3 && kt(we, ue, hr, Ue), we[hr + 2] = Ye, Pe - hr > 3 && kt(we, hr, Pe, Ue));
                  }
                  function re(we, ue, Pe, Ue, Ye, rr) {
                    var lr = Ye - Pe, hr = rr - Ue;
                    if (lr !== 0 || hr !== 0) {
                      var Sr = ((we - Pe) * lr + (ue - Ue) * hr) / (lr * lr + hr * hr);
                      Sr > 1 ? (Pe = Ye, Ue = rr) : Sr > 0 && (Pe += lr * Sr, Ue += hr * Sr);
                    }
                    return lr = we - Pe, hr = ue - Ue, lr * lr + hr * hr;
                  }
                  function ge(we, ue, Pe, Ue) {
                    var Ye = {
                      id: typeof we > "u" ? null : we,
                      type: ue,
                      geometry: Pe,
                      tags: Ue,
                      minX: 1 / 0,
                      minY: 1 / 0,
                      maxX: -1 / 0,
                      maxY: -1 / 0
                    };
                    return _e(Ye), Ye;
                  }
                  function _e(we) {
                    var ue = we.geometry, Pe = we.type;
                    if (Pe === "Point" || Pe === "MultiPoint" || Pe === "LineString")
                      ce(we, ue);
                    else if (Pe === "Polygon" || Pe === "MultiLineString")
                      for (var Ue = 0; Ue < ue.length; Ue++)
                        ce(we, ue[Ue]);
                    else if (Pe === "MultiPolygon")
                      for (Ue = 0; Ue < ue.length; Ue++)
                        for (var Ye = 0; Ye < ue[Ue].length; Ye++)
                          ce(we, ue[Ue][Ye]);
                  }
                  function ce(we, ue) {
                    for (var Pe = 0; Pe < ue.length; Pe += 3)
                      we.minX = Math.min(we.minX, ue[Pe]), we.minY = Math.min(we.minY, ue[Pe + 1]), we.maxX = Math.max(we.maxX, ue[Pe]), we.maxY = Math.max(we.maxY, ue[Pe + 1]);
                  }
                  function ae(we, ue) {
                    var Pe = [];
                    if (we.type === "FeatureCollection")
                      for (var Ue = 0; Ue < we.features.length; Ue++)
                        Se(Pe, we.features[Ue], ue, Ue);
                    else we.type === "Feature" ? Se(Pe, we, ue) : Se(Pe, { geometry: we }, ue);
                    return Pe;
                  }
                  function Se(we, ue, Pe, Ue) {
                    if (ue.geometry) {
                      var Ye = ue.geometry.coordinates, rr = ue.geometry.type, lr = Math.pow(Pe.tolerance / ((1 << Pe.maxZoom) * Pe.extent), 2), hr = [], Sr = ue.id;
                      if (Pe.promoteId ? Sr = ue.properties[Pe.promoteId] : Pe.generateId && (Sr = Ue || 0), rr === "Point")
                        ze(Ye, hr);
                      else if (rr === "MultiPoint")
                        for (var Dr = 0; Dr < Ye.length; Dr++)
                          ze(Ye[Dr], hr);
                      else if (rr === "LineString")
                        Ne(Ye, hr, lr, !1);
                      else if (rr === "MultiLineString")
                        if (Pe.lineMetrics) {
                          for (Dr = 0; Dr < Ye.length; Dr++)
                            hr = [], Ne(Ye[Dr], hr, lr, !1), we.push(ge(Sr, "LineString", hr, ue.properties));
                          return;
                        } else
                          Ve(Ye, hr, lr, !1);
                      else if (rr === "Polygon")
                        Ve(Ye, hr, lr, !0);
                      else if (rr === "MultiPolygon")
                        for (Dr = 0; Dr < Ye.length; Dr++) {
                          var Or = [];
                          Ve(Ye[Dr], Or, lr, !0), hr.push(Or);
                        }
                      else if (rr === "GeometryCollection") {
                        for (Dr = 0; Dr < ue.geometry.geometries.length; Dr++)
                          Se(we, {
                            id: Sr,
                            geometry: ue.geometry.geometries[Dr],
                            properties: ue.properties
                          }, Pe, Ue);
                        return;
                      } else
                        throw new Error("Input data is not a valid GeoJSON object.");
                      we.push(ge(Sr, rr, hr, ue.properties));
                    }
                  }
                  function ze(we, ue) {
                    ue.push(Oe(we[0])), ue.push(ur(we[1])), ue.push(0);
                  }
                  function Ne(we, ue, Pe, Ue) {
                    for (var Ye, rr, lr = 0, hr = 0; hr < we.length; hr++) {
                      var Sr = Oe(we[hr][0]), Dr = ur(we[hr][1]);
                      ue.push(Sr), ue.push(Dr), ue.push(0), hr > 0 && (Ue ? lr += (Ye * Dr - Sr * rr) / 2 : lr += Math.sqrt(Math.pow(Sr - Ye, 2) + Math.pow(Dr - rr, 2))), Ye = Sr, rr = Dr;
                    }
                    var Or = ue.length - 3;
                    ue[2] = 1, kt(ue, 0, Or, Pe), ue[Or + 2] = 1, ue.size = Math.abs(lr), ue.start = 0, ue.end = ue.size;
                  }
                  function Ve(we, ue, Pe, Ue) {
                    for (var Ye = 0; Ye < we.length; Ye++) {
                      var rr = [];
                      Ne(we[Ye], rr, Pe, Ue), ue.push(rr);
                    }
                  }
                  function Oe(we) {
                    return we / 360 + 0.5;
                  }
                  function ur(we) {
                    var ue = Math.sin(we * Math.PI / 180), Pe = 0.5 - 0.25 * Math.log((1 + ue) / (1 - ue)) / Math.PI;
                    return Pe < 0 ? 0 : Pe > 1 ? 1 : Pe;
                  }
                  function ie(we, ue, Pe, Ue, Ye, rr, lr, hr) {
                    if (Pe /= ue, Ue /= ue, rr >= Pe && lr < Ue)
                      return we;
                    if (lr < Pe || rr >= Ue)
                      return null;
                    for (var Sr = [], Dr = 0; Dr < we.length; Dr++) {
                      var Or = we[Dr], Br = Or.geometry, Nr = Or.type, Xr = Ye === 0 ? Or.minX : Or.minY, Gr = Ye === 0 ? Or.maxX : Or.maxY;
                      if (Xr >= Pe && Gr < Ue) {
                        Sr.push(Or);
                        continue;
                      } else if (Gr < Pe || Xr >= Ue)
                        continue;
                      var oe = [];
                      if (Nr === "Point" || Nr === "MultiPoint")
                        $t(Br, oe, Pe, Ue, Ye);
                      else if (Nr === "LineString")
                        jt(Br, oe, Pe, Ue, Ye, !1, hr.lineMetrics);
                      else if (Nr === "MultiLineString")
                        Bt(Br, oe, Pe, Ue, Ye, !1);
                      else if (Nr === "Polygon")
                        Bt(Br, oe, Pe, Ue, Ye, !0);
                      else if (Nr === "MultiPolygon")
                        for (var de = 0; de < Br.length; de++) {
                          var or = [];
                          Bt(Br[de], or, Pe, Ue, Ye, !0), or.length && oe.push(or);
                        }
                      if (oe.length) {
                        if (hr.lineMetrics && Nr === "LineString") {
                          for (de = 0; de < oe.length; de++)
                            Sr.push(ge(Or.id, Nr, oe[de], Or.tags));
                          continue;
                        }
                        (Nr === "LineString" || Nr === "MultiLineString") && (oe.length === 1 ? (Nr = "LineString", oe = oe[0]) : Nr = "MultiLineString"), (Nr === "Point" || Nr === "MultiPoint") && (Nr = oe.length === 3 ? "Point" : "MultiPoint"), Sr.push(ge(Or.id, Nr, oe, Or.tags));
                      }
                    }
                    return Sr.length ? Sr : null;
                  }
                  function $t(we, ue, Pe, Ue, Ye) {
                    for (var rr = 0; rr < we.length; rr += 3) {
                      var lr = we[rr + Ye];
                      lr >= Pe && lr <= Ue && (ue.push(we[rr]), ue.push(we[rr + 1]), ue.push(we[rr + 2]));
                    }
                  }
                  function jt(we, ue, Pe, Ue, Ye, rr, lr) {
                    for (var hr = ee(we), Sr = Ye === 0 ? Zt : ye, Dr = we.start, Or, Br, Nr = 0; Nr < we.length - 3; Nr += 3) {
                      var Xr = we[Nr], Gr = we[Nr + 1], oe = we[Nr + 2], de = we[Nr + 3], or = we[Nr + 4], Er = Ye === 0 ? Xr : Gr, Tr = Ye === 0 ? de : or, tr = !1;
                      lr && (Or = Math.sqrt(Math.pow(Xr - de, 2) + Math.pow(Gr - or, 2))), Er < Pe ? Tr > Pe && (Br = Sr(hr, Xr, Gr, de, or, Pe), lr && (hr.start = Dr + Or * Br)) : Er > Ue ? Tr < Ue && (Br = Sr(hr, Xr, Gr, de, or, Ue), lr && (hr.start = Dr + Or * Br)) : Xt(hr, Xr, Gr, oe), Tr < Pe && Er >= Pe && (Br = Sr(hr, Xr, Gr, de, or, Pe), tr = !0), Tr > Ue && Er <= Ue && (Br = Sr(hr, Xr, Gr, de, or, Ue), tr = !0), !rr && tr && (lr && (hr.end = Dr + Or * Br), ue.push(hr), hr = ee(we)), lr && (Dr += Or);
                    }
                    var yr = we.length - 3;
                    Xr = we[yr], Gr = we[yr + 1], oe = we[yr + 2], Er = Ye === 0 ? Xr : Gr, Er >= Pe && Er <= Ue && Xt(hr, Xr, Gr, oe), yr = hr.length - 3, rr && yr >= 3 && (hr[yr] !== hr[0] || hr[yr + 1] !== hr[1]) && Xt(hr, hr[0], hr[1], hr[2]), hr.length && ue.push(hr);
                  }
                  function ee(we) {
                    var ue = [];
                    return ue.size = we.size, ue.start = we.start, ue.end = we.end, ue;
                  }
                  function Bt(we, ue, Pe, Ue, Ye, rr) {
                    for (var lr = 0; lr < we.length; lr++)
                      jt(we[lr], ue, Pe, Ue, Ye, rr, !1);
                  }
                  function Xt(we, ue, Pe, Ue) {
                    we.push(ue), we.push(Pe), we.push(Ue);
                  }
                  function Zt(we, ue, Pe, Ue, Ye, rr) {
                    var lr = (rr - ue) / (Ue - ue);
                    return we.push(rr), we.push(Pe + (Ye - Pe) * lr), we.push(1), lr;
                  }
                  function ye(we, ue, Pe, Ue, Ye, rr) {
                    var lr = (rr - Pe) / (Ye - Pe);
                    return we.push(ue + (Ue - ue) * lr), we.push(rr), we.push(1), lr;
                  }
                  function Mt(we, ue) {
                    var Pe = ue.buffer / ue.extent, Ue = we, Ye = ie(we, 1, -1 - Pe, Pe, 0, -1, 2, ue), rr = ie(we, 1, 1 - Pe, 2 + Pe, 0, -1, 2, ue);
                    return (Ye || rr) && (Ue = ie(we, 1, -Pe, 1 + Pe, 0, -1, 2, ue) || [], Ye && (Ue = St(Ye, 1).concat(Ue)), rr && (Ue = Ue.concat(St(rr, -1)))), Ue;
                  }
                  function St(we, ue) {
                    for (var Pe = [], Ue = 0; Ue < we.length; Ue++) {
                      var Ye = we[Ue], rr = Ye.type, lr;
                      if (rr === "Point" || rr === "MultiPoint" || rr === "LineString")
                        lr = Lt(Ye.geometry, ue);
                      else if (rr === "MultiLineString" || rr === "Polygon") {
                        lr = [];
                        for (var hr = 0; hr < Ye.geometry.length; hr++)
                          lr.push(Lt(Ye.geometry[hr], ue));
                      } else if (rr === "MultiPolygon")
                        for (lr = [], hr = 0; hr < Ye.geometry.length; hr++) {
                          for (var Sr = [], Dr = 0; Dr < Ye.geometry[hr].length; Dr++)
                            Sr.push(Lt(Ye.geometry[hr][Dr], ue));
                          lr.push(Sr);
                        }
                      Pe.push(ge(Ye.id, rr, lr, Ye.tags));
                    }
                    return Pe;
                  }
                  function Lt(we, ue) {
                    var Pe = [];
                    Pe.size = we.size, we.start !== void 0 && (Pe.start = we.start, Pe.end = we.end);
                    for (var Ue = 0; Ue < we.length; Ue += 3)
                      Pe.push(we[Ue] + ue, we[Ue + 1], we[Ue + 2]);
                    return Pe;
                  }
                  function te(we, ue) {
                    if (we.transformed)
                      return we;
                    var Pe = 1 << we.z, Ue = we.x, Ye = we.y, rr, lr, hr;
                    for (rr = 0; rr < we.features.length; rr++) {
                      var Sr = we.features[rr], Dr = Sr.geometry, Or = Sr.type;
                      if (Sr.geometry = [], Or === 1)
                        for (lr = 0; lr < Dr.length; lr += 2)
                          Sr.geometry.push(fe(Dr[lr], Dr[lr + 1], ue, Pe, Ue, Ye));
                      else
                        for (lr = 0; lr < Dr.length; lr++) {
                          var Br = [];
                          for (hr = 0; hr < Dr[lr].length; hr += 2)
                            Br.push(fe(Dr[lr][hr], Dr[lr][hr + 1], ue, Pe, Ue, Ye));
                          Sr.geometry.push(Br);
                        }
                    }
                    return we.transformed = !0, we;
                  }
                  function fe(we, ue, Pe, Ue, Ye, rr) {
                    return [
                      Math.round(Pe * (we * Ue - Ye)),
                      Math.round(Pe * (ue * Ue - rr))
                    ];
                  }
                  function Me(we, ue, Pe, Ue, Ye) {
                    for (var rr = ue === Ye.maxZoom ? 0 : Ye.tolerance / ((1 << ue) * Ye.extent), lr = {
                      features: [],
                      numPoints: 0,
                      numSimplified: 0,
                      numFeatures: 0,
                      source: null,
                      x: Pe,
                      y: Ue,
                      z: ue,
                      transformed: !1,
                      minX: 2,
                      minY: 1,
                      maxX: -1,
                      maxY: 0
                    }, hr = 0; hr < we.length; hr++) {
                      lr.numFeatures++, ir(lr, we[hr], rr, Ye);
                      var Sr = we[hr].minX, Dr = we[hr].minY, Or = we[hr].maxX, Br = we[hr].maxY;
                      Sr < lr.minX && (lr.minX = Sr), Dr < lr.minY && (lr.minY = Dr), Or > lr.maxX && (lr.maxX = Or), Br > lr.maxY && (lr.maxY = Br);
                    }
                    return lr;
                  }
                  function ir(we, ue, Pe, Ue) {
                    var Ye = ue.geometry, rr = ue.type, lr = [];
                    if (rr === "Point" || rr === "MultiPoint")
                      for (var hr = 0; hr < Ye.length; hr += 3)
                        lr.push(Ye[hr]), lr.push(Ye[hr + 1]), we.numPoints++, we.numSimplified++;
                    else if (rr === "LineString")
                      mr(lr, Ye, we, Pe, !1, !1);
                    else if (rr === "MultiLineString" || rr === "Polygon")
                      for (hr = 0; hr < Ye.length; hr++)
                        mr(lr, Ye[hr], we, Pe, rr === "Polygon", hr === 0);
                    else if (rr === "MultiPolygon")
                      for (var Sr = 0; Sr < Ye.length; Sr++) {
                        var Dr = Ye[Sr];
                        for (hr = 0; hr < Dr.length; hr++)
                          mr(lr, Dr[hr], we, Pe, !0, hr === 0);
                      }
                    if (lr.length) {
                      var Or = ue.tags || null;
                      if (rr === "LineString" && Ue.lineMetrics) {
                        Or = {};
                        for (var Br in ue.tags)
                          Or[Br] = ue.tags[Br];
                        Or.mapbox_clip_start = Ye.start / Ye.size, Or.mapbox_clip_end = Ye.end / Ye.size;
                      }
                      var Nr = {
                        geometry: lr,
                        type: rr === "Polygon" || rr === "MultiPolygon" ? 3 : rr === "LineString" || rr === "MultiLineString" ? 2 : 1,
                        tags: Or
                      };
                      ue.id !== null && (Nr.id = ue.id), we.features.push(Nr);
                    }
                  }
                  function mr(we, ue, Pe, Ue, Ye, rr) {
                    var lr = Ue * Ue;
                    if (Ue > 0 && ue.size < (Ye ? lr : Ue)) {
                      Pe.numPoints += ue.length / 3;
                      return;
                    }
                    for (var hr = [], Sr = 0; Sr < ue.length; Sr += 3)
                      (Ue === 0 || ue[Sr + 2] > lr) && (Pe.numSimplified++, hr.push(ue[Sr]), hr.push(ue[Sr + 1])), Pe.numPoints++;
                    Ye && Xe(hr, rr), we.push(hr);
                  }
                  function Xe(we, ue) {
                    for (var Pe = 0, Ue = 0, Ye = we.length, rr = Ye - 2; Ue < Ye; rr = Ue, Ue += 2)
                      Pe += (we[Ue] - we[rr]) * (we[Ue + 1] + we[rr + 1]);
                    if (Pe > 0 === ue)
                      for (Ue = 0, Ye = we.length; Ue < Ye / 2; Ue += 2) {
                        var lr = we[Ue], hr = we[Ue + 1];
                        we[Ue] = we[Ye - 2 - Ue], we[Ue + 1] = we[Ye - 1 - Ue], we[Ye - 2 - Ue] = lr, we[Ye - 1 - Ue] = hr;
                      }
                  }
                  function xe(we, ue) {
                    return new me(we, ue);
                  }
                  function me(we, ue) {
                    ue = this.options = qt(Object.create(this.options), ue);
                    var Pe = ue.debug;
                    if (Pe && console.time("preprocess data"), ue.maxZoom < 0 || ue.maxZoom > 24)
                      throw new Error("maxZoom should be in the 0-24 range");
                    if (ue.promoteId && ue.generateId)
                      throw new Error("promoteId and generateId cannot be used together.");
                    var Ue = ae(we, ue);
                    this.tiles = {}, this.tileCoords = [], Pe && (console.timeEnd("preprocess data"), console.log("index: maxZoom: %d, maxPoints: %d", ue.indexMaxZoom, ue.indexMaxPoints), console.time("generate tiles"), this.stats = {}, this.total = 0), Ue = Mt(Ue, ue), Ue.length && this.splitTile(Ue, 0, 0, 0), Pe && (Ue.length && console.log("features: %d, points: %d", this.tiles[0].numFeatures, this.tiles[0].numPoints), console.timeEnd("generate tiles"), console.log("tiles generated:", this.total, JSON.stringify(this.stats)));
                  }
                  me.prototype.options = {
                    maxZoom: 14,
                    indexMaxZoom: 5,
                    indexMaxPoints: 1e5,
                    tolerance: 3,
                    extent: 4096,
                    buffer: 64,
                    lineMetrics: !1,
                    promoteId: null,
                    generateId: !1,
                    debug: 0
                  }, me.prototype.splitTile = function(we, ue, Pe, Ue, Ye, rr, lr) {
                    for (var hr = [
                      we,
                      ue,
                      Pe,
                      Ue
                    ], Sr = this.options, Dr = Sr.debug; hr.length; ) {
                      Ue = hr.pop(), Pe = hr.pop(), ue = hr.pop(), we = hr.pop();
                      var Or = 1 << ue, Br = Le(ue, Pe, Ue), Nr = this.tiles[Br];
                      if (!Nr && (Dr > 1 && console.time("creation"), Nr = this.tiles[Br] = Me(we, ue, Pe, Ue, Sr), this.tileCoords.push({
                        z: ue,
                        x: Pe,
                        y: Ue
                      }), Dr)) {
                        Dr > 1 && (console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)", ue, Pe, Ue, Nr.numFeatures, Nr.numPoints, Nr.numSimplified), console.timeEnd("creation"));
                        var Xr = "z" + ue;
                        this.stats[Xr] = (this.stats[Xr] || 0) + 1, this.total++;
                      }
                      if (Nr.source = we, Ye) {
                        if (ue === Sr.maxZoom || ue === Ye)
                          continue;
                        var Gr = 1 << Ye - ue;
                        if (Pe !== Math.floor(rr / Gr) || Ue !== Math.floor(lr / Gr))
                          continue;
                      } else if (ue === Sr.indexMaxZoom || Nr.numPoints <= Sr.indexMaxPoints)
                        continue;
                      if (Nr.source = null, we.length !== 0) {
                        Dr > 1 && console.time("clipping");
                        var oe = 0.5 * Sr.buffer / Sr.extent, de = 0.5 - oe, or = 0.5 + oe, Er = 1 + oe, Tr, tr, yr, Ir, Cr, _r;
                        Tr = tr = yr = Ir = null, Cr = ie(we, Or, Pe - oe, Pe + or, 0, Nr.minX, Nr.maxX, Sr), _r = ie(we, Or, Pe + de, Pe + Er, 0, Nr.minX, Nr.maxX, Sr), we = null, Cr && (Tr = ie(Cr, Or, Ue - oe, Ue + or, 1, Nr.minY, Nr.maxY, Sr), tr = ie(Cr, Or, Ue + de, Ue + Er, 1, Nr.minY, Nr.maxY, Sr), Cr = null), _r && (yr = ie(_r, Or, Ue - oe, Ue + or, 1, Nr.minY, Nr.maxY, Sr), Ir = ie(_r, Or, Ue + de, Ue + Er, 1, Nr.minY, Nr.maxY, Sr), _r = null), Dr > 1 && console.timeEnd("clipping"), hr.push(Tr || [], ue + 1, Pe * 2, Ue * 2), hr.push(tr || [], ue + 1, Pe * 2, Ue * 2 + 1), hr.push(yr || [], ue + 1, Pe * 2 + 1, Ue * 2), hr.push(Ir || [], ue + 1, Pe * 2 + 1, Ue * 2 + 1);
                      }
                    }
                  }, me.prototype.getTile = function(we, ue, Pe) {
                    var Ue = this.options, Ye = Ue.extent, rr = Ue.debug;
                    if (we < 0 || we > 24)
                      return null;
                    var lr = 1 << we;
                    ue = (ue % lr + lr) % lr;
                    var hr = Le(we, ue, Pe);
                    if (this.tiles[hr])
                      return te(this.tiles[hr], Ye);
                    rr > 1 && console.log("drilling down to z%d-%d-%d", we, ue, Pe);
                    for (var Sr = we, Dr = ue, Or = Pe, Br; !Br && Sr > 0; )
                      Sr--, Dr = Math.floor(Dr / 2), Or = Math.floor(Or / 2), Br = this.tiles[Le(Sr, Dr, Or)];
                    return !Br || !Br.source ? null : (rr > 1 && console.log("found parent tile z%d-%d-%d", Sr, Dr, Or), rr > 1 && console.time("drilling down"), this.splitTile(Br.source, Sr, Dr, Or, we, ue, Pe), rr > 1 && console.timeEnd("drilling down"), this.tiles[hr] ? te(this.tiles[hr], Ye) : null);
                  };
                  function Le(we, ue, Pe) {
                    return ((1 << we) * Pe + ue) * 32 + we;
                  }
                  function qt(we, ue) {
                    for (var Pe in ue)
                      we[Pe] = ue[Pe];
                    return we;
                  }
                  function De(we, ue) {
                    var Pe = we.tileID.canonical;
                    if (!this._geoJSONIndex)
                      return ue(null, null);
                    var Ue = this._geoJSONIndex.getTile(Pe.z, Pe.x, Pe.y);
                    if (!Ue)
                      return ue(null, null);
                    var Ye = new S(Ue.features), rr = d(Ye);
                    (rr.byteOffset !== 0 || rr.byteLength !== rr.buffer.byteLength) && (rr = new Uint8Array(rr)), ue(null, {
                      vectorTile: Ye,
                      rawData: rr.buffer
                    });
                  }
                  var Je = function(we) {
                    function ue(Pe, Ue, Ye, rr) {
                      we.call(this, Pe, Ue, Ye, De), rr && (this.loadGeoJSON = rr);
                    }
                    return we && (ue.__proto__ = we), ue.prototype = Object.create(we && we.prototype), ue.prototype.constructor = ue, ue.prototype.loadData = function(Ue, Ye) {
                      this._pendingCallback && this._pendingCallback(null, { abandoned: !0 }), this._pendingCallback = Ye, this._pendingLoadDataParams = Ue, this._state && this._state !== "Idle" ? this._state = "NeedsLoadData" : (this._state = "Coalescing", this._loadData());
                    }, ue.prototype._loadData = function() {
                      var Ue = this;
                      if (!(!this._pendingCallback || !this._pendingLoadDataParams)) {
                        var Ye = this._pendingCallback, rr = this._pendingLoadDataParams;
                        delete this._pendingCallback, delete this._pendingLoadDataParams;
                        var lr = rr && rr.request && rr.request.collectResourceTiming ? new n.RequestPerformance(rr.request) : !1;
                        this.loadGeoJSON(rr, function(hr, Sr) {
                          if (hr || !Sr)
                            return Ye(hr);
                          if (typeof Sr != "object")
                            return Ye(new Error("Input data given to '" + rr.source + "' is not a valid GeoJSON object."));
                          g(Sr, !0);
                          try {
                            if (rr.filter) {
                              var Dr = n.createExpression(rr.filter, {
                                type: "boolean",
                                "property-type": "data-driven",
                                overridable: !1,
                                transition: !1
                              });
                              if (Dr.result === "error")
                                throw new Error(Dr.value.map(function(Xr) {
                                  return Xr.key + ": " + Xr.message;
                                }).join(", "));
                              var Or = Sr.features.filter(function(Xr) {
                                return Dr.value.evaluate({ zoom: 0 }, Xr);
                              });
                              Sr = {
                                type: "FeatureCollection",
                                features: Or
                              };
                            }
                            Ue._geoJSONIndex = rr.cluster ? new lt(dr(rr)).load(Sr.features) : xe(Sr, rr.geojsonVtOptions);
                          } catch (Xr) {
                            return Ye(Xr);
                          }
                          Ue.loaded = {};
                          var Br = {};
                          if (lr) {
                            var Nr = lr.finish();
                            Nr && (Br.resourceTiming = {}, Br.resourceTiming[rr.source] = JSON.parse(JSON.stringify(Nr)));
                          }
                          Ye(null, Br);
                        });
                      }
                    }, ue.prototype.coalesce = function() {
                      this._state === "Coalescing" ? this._state = "Idle" : this._state === "NeedsLoadData" && (this._state = "Coalescing", this._loadData());
                    }, ue.prototype.reloadTile = function(Ue, Ye) {
                      var rr = this.loaded, lr = Ue.uid;
                      return rr && rr[lr] ? we.prototype.reloadTile.call(this, Ue, Ye) : this.loadTile(Ue, Ye);
                    }, ue.prototype.loadGeoJSON = function(Ue, Ye) {
                      if (Ue.request)
                        n.getJSON(Ue.request, Ye);
                      else if (typeof Ue.data == "string")
                        try {
                          return Ye(null, JSON.parse(Ue.data));
                        } catch {
                          return Ye(new Error("Input data given to '" + Ue.source + "' is not a valid GeoJSON object."));
                        }
                      else
                        return Ye(new Error("Input data given to '" + Ue.source + "' is not a valid GeoJSON object."));
                    }, ue.prototype.removeSource = function(Ue, Ye) {
                      this._pendingCallback && this._pendingCallback(null, { abandoned: !0 }), Ye();
                    }, ue.prototype.getClusterExpansionZoom = function(Ue, Ye) {
                      try {
                        Ye(null, this._geoJSONIndex.getClusterExpansionZoom(Ue.clusterId));
                      } catch (rr) {
                        Ye(rr);
                      }
                    }, ue.prototype.getClusterChildren = function(Ue, Ye) {
                      try {
                        Ye(null, this._geoJSONIndex.getChildren(Ue.clusterId));
                      } catch (rr) {
                        Ye(rr);
                      }
                    }, ue.prototype.getClusterLeaves = function(Ue, Ye) {
                      try {
                        Ye(null, this._geoJSONIndex.getLeaves(Ue.clusterId, Ue.limit, Ue.offset));
                      } catch (rr) {
                        Ye(rr);
                      }
                    }, ue;
                  }(l);
                  function dr(we) {
                    var ue = we.superclusterOptions, Pe = we.clusterProperties;
                    if (!Pe || !ue)
                      return ue;
                    for (var Ue = {}, Ye = {}, rr = {
                      accumulated: null,
                      zoom: 0
                    }, lr = { properties: null }, hr = Object.keys(Pe), Sr = 0, Dr = hr; Sr < Dr.length; Sr += 1) {
                      var Or = Dr[Sr], Br = Pe[Or], Nr = Br[0], Xr = Br[1], Gr = n.createExpression(Xr), oe = n.createExpression(typeof Nr == "string" ? [
                        Nr,
                        ["accumulated"],
                        [
                          "get",
                          Or
                        ]
                      ] : Nr);
                      Ue[Or] = Gr.value, Ye[Or] = oe.value;
                    }
                    return ue.map = function(de) {
                      lr.properties = de;
                      for (var or = {}, Er = 0, Tr = hr; Er < Tr.length; Er += 1) {
                        var tr = Tr[Er];
                        or[tr] = Ue[tr].evaluate(rr, lr);
                      }
                      return or;
                    }, ue.reduce = function(de, or) {
                      lr.properties = or;
                      for (var Er = 0, Tr = hr; Er < Tr.length; Er += 1) {
                        var tr = Tr[Er];
                        rr.accumulated = de[tr], de[tr] = Ye[tr].evaluate(rr, lr);
                      }
                    }, ue;
                  }
                  var qe = function(ue) {
                    var Pe = this;
                    this.self = ue, this.actor = new n.Actor(ue, this), this.layerIndexes = {}, this.availableImages = {}, this.workerSourceTypes = {
                      vector: l,
                      geojson: Je
                    }, this.workerSources = {}, this.demWorkerSources = {}, this.self.registerWorkerSource = function(Ue, Ye) {
                      if (Pe.workerSourceTypes[Ue])
                        throw new Error('Worker source with name "' + Ue + '" already registered.');
                      Pe.workerSourceTypes[Ue] = Ye;
                    }, this.self.registerRTLTextPlugin = function(Ue) {
                      if (n.plugin.isParsed())
                        throw new Error("RTL text plugin already registered.");
                      n.plugin.applyArabicShaping = Ue.applyArabicShaping, n.plugin.processBidirectionalText = Ue.processBidirectionalText, n.plugin.processStyledBidirectionalText = Ue.processStyledBidirectionalText;
                    };
                  };
                  return qe.prototype.setReferrer = function(ue, Pe) {
                    this.referrer = Pe;
                  }, qe.prototype.setImages = function(ue, Pe, Ue) {
                    this.availableImages[ue] = Pe;
                    for (var Ye in this.workerSources[ue]) {
                      var rr = this.workerSources[ue][Ye];
                      for (var lr in rr)
                        rr[lr].availableImages = Pe;
                    }
                    Ue();
                  }, qe.prototype.setLayers = function(ue, Pe, Ue) {
                    this.getLayerIndex(ue).replace(Pe), Ue();
                  }, qe.prototype.updateLayers = function(ue, Pe, Ue) {
                    this.getLayerIndex(ue).update(Pe.layers, Pe.removedIds), Ue();
                  }, qe.prototype.loadTile = function(ue, Pe, Ue) {
                    this.getWorkerSource(ue, Pe.type, Pe.source).loadTile(Pe, Ue);
                  }, qe.prototype.loadDEMTile = function(ue, Pe, Ue) {
                    this.getDEMWorkerSource(ue, Pe.source).loadTile(Pe, Ue);
                  }, qe.prototype.reloadTile = function(ue, Pe, Ue) {
                    this.getWorkerSource(ue, Pe.type, Pe.source).reloadTile(Pe, Ue);
                  }, qe.prototype.abortTile = function(ue, Pe, Ue) {
                    this.getWorkerSource(ue, Pe.type, Pe.source).abortTile(Pe, Ue);
                  }, qe.prototype.removeTile = function(ue, Pe, Ue) {
                    this.getWorkerSource(ue, Pe.type, Pe.source).removeTile(Pe, Ue);
                  }, qe.prototype.removeDEMTile = function(ue, Pe) {
                    this.getDEMWorkerSource(ue, Pe.source).removeTile(Pe);
                  }, qe.prototype.removeSource = function(ue, Pe, Ue) {
                    if (!(!this.workerSources[ue] || !this.workerSources[ue][Pe.type] || !this.workerSources[ue][Pe.type][Pe.source])) {
                      var Ye = this.workerSources[ue][Pe.type][Pe.source];
                      delete this.workerSources[ue][Pe.type][Pe.source], Ye.removeSource !== void 0 ? Ye.removeSource(Pe, Ue) : Ue();
                    }
                  }, qe.prototype.loadWorkerSource = function(ue, Pe, Ue) {
                    try {
                      this.self.importScripts(Pe.url), Ue();
                    } catch (Ye) {
                      Ue(Ye.toString());
                    }
                  }, qe.prototype.syncRTLPluginState = function(ue, Pe, Ue) {
                    try {
                      n.plugin.setState(Pe);
                      var Ye = n.plugin.getPluginURL();
                      if (n.plugin.isLoaded() && !n.plugin.isParsed() && Ye != null) {
                        this.self.importScripts(Ye);
                        var rr = n.plugin.isParsed(), lr = rr ? void 0 : new Error("RTL Text Plugin failed to import scripts from " + Ye);
                        Ue(lr, rr);
                      }
                    } catch (hr) {
                      Ue(hr.toString());
                    }
                  }, qe.prototype.getAvailableImages = function(ue) {
                    var Pe = this.availableImages[ue];
                    return Pe || (Pe = []), Pe;
                  }, qe.prototype.getLayerIndex = function(ue) {
                    var Pe = this.layerIndexes[ue];
                    return Pe || (Pe = this.layerIndexes[ue] = new p()), Pe;
                  }, qe.prototype.getWorkerSource = function(ue, Pe, Ue) {
                    var Ye = this;
                    if (this.workerSources[ue] || (this.workerSources[ue] = {}), this.workerSources[ue][Pe] || (this.workerSources[ue][Pe] = {}), !this.workerSources[ue][Pe][Ue]) {
                      var rr = {
                        send: function(lr, hr, Sr) {
                          Ye.actor.send(lr, hr, Sr, ue);
                        }
                      };
                      this.workerSources[ue][Pe][Ue] = new this.workerSourceTypes[Pe](rr, this.getLayerIndex(ue), this.getAvailableImages(ue));
                    }
                    return this.workerSources[ue][Pe][Ue];
                  }, qe.prototype.getDEMWorkerSource = function(ue, Pe) {
                    return this.demWorkerSources[ue] || (this.demWorkerSources[ue] = {}), this.demWorkerSources[ue][Pe] || (this.demWorkerSources[ue][Pe] = new y()), this.demWorkerSources[ue][Pe];
                  }, qe.prototype.enforceCacheSizeLimit = function(ue, Pe) {
                    n.enforceCacheSizeLimit(Pe);
                  }, typeof WorkerGlobalScope < "u" && typeof self < "u" && self instanceof WorkerGlobalScope && (self.worker = new qe(self)), qe;
                }), P(["./shared"], function(n) {
                  var s = n.createCommonjsModule(function(mt) {
                    mt.exports ? mt.exports = tt : window && (window.mapboxgl = window.mapboxgl || {}, window.mapboxgl.supported = tt, window.mapboxgl.notSupportedReason = bt);
                    function tt(_n) {
                      return !bt(_n);
                    }
                    function bt(_n) {
                      if (!it())
                        return "not a browser";
                      if (!_t())
                        return "insufficent Array support";
                      if (!Yt())
                        return "insufficient Function support";
                      if (!le())
                        return "insufficient Object support";
                      if (!Ee())
                        return "insufficient JSON support";
                      if (!$e())
                        return "insufficient worker support";
                      if (!vr())
                        return "insufficient Uint8ClampedArray support";
                      if (!Lr())
                        return "insufficient ArrayBuffer support";
                      if (!Hr())
                        return "insufficient Canvas/getImageData support";
                      if (!hn(_n && _n.failIfMajorPerformanceCaveat))
                        return "insufficient WebGL support";
                    }
                    function it() {
                      return typeof window < "u" && typeof document < "u";
                    }
                    function _t() {
                      return Array.prototype && Array.prototype.every && Array.prototype.filter && Array.prototype.forEach && Array.prototype.indexOf && Array.prototype.lastIndexOf && Array.prototype.map && Array.prototype.some && Array.prototype.reduce && Array.prototype.reduceRight && Array.isArray;
                    }
                    function Yt() {
                      return Function.prototype && Function.prototype.bind;
                    }
                    function le() {
                      return Object.keys && Object.create && Object.getPrototypeOf && Object.getOwnPropertyNames && Object.isSealed && Object.isFrozen && Object.isExtensible && Object.getOwnPropertyDescriptor && Object.defineProperty && Object.defineProperties && Object.seal && Object.freeze && Object.preventExtensions;
                    }
                    function Ee() {
                      return "JSON" in window && "parse" in JSON && "stringify" in JSON;
                    }
                    function $e() {
                      if (!("Worker" in window && "Blob" in window && "URL" in window))
                        return !1;
                      var _n = new Blob([""], { type: "text/javascript" }), In = URL.createObjectURL(_n), Kn, xi;
                      try {
                        xi = new Worker(In), Kn = !0;
                      } catch {
                        Kn = !1;
                      }
                      return xi && xi.terminate(), URL.revokeObjectURL(In), Kn;
                    }
                    function vr() {
                      return "Uint8ClampedArray" in window;
                    }
                    function Lr() {
                      return ArrayBuffer.isView;
                    }
                    function Hr() {
                      var _n = document.createElement("canvas");
                      _n.width = _n.height = 1;
                      var In = _n.getContext("2d");
                      if (!In)
                        return !1;
                      var Kn = In.getImageData(0, 0, 1, 1);
                      return Kn && Kn.width === _n.width;
                    }
                    var Ur = {};
                    function hn(_n) {
                      return Ur[_n] === void 0 && (Ur[_n] = Mn(_n)), Ur[_n];
                    }
                    tt.webGLContextAttributes = {
                      antialias: !1,
                      alpha: !0,
                      stencil: !0,
                      depth: !0
                    };
                    function En(_n) {
                      var In = document.createElement("canvas"), Kn = Object.create(tt.webGLContextAttributes);
                      return Kn.failIfMajorPerformanceCaveat = _n, In.probablySupportsContext ? In.probablySupportsContext("webgl", Kn) || In.probablySupportsContext("experimental-webgl", Kn) : In.supportsContext ? In.supportsContext("webgl", Kn) || In.supportsContext("experimental-webgl", Kn) : In.getContext("webgl", Kn) || In.getContext("experimental-webgl", Kn);
                    }
                    function Mn(_n) {
                      var In = En(_n);
                      if (!In)
                        return !1;
                      var Kn = In.createShader(In.VERTEX_SHADER);
                      return !Kn || In.isContextLost() ? !1 : (In.shaderSource(Kn, "void main() {}"), In.compileShader(Kn), In.getShaderParameter(Kn, In.COMPILE_STATUS) === !0);
                    }
                  }), T = {};
                  T.create = function(mt, tt, bt) {
                    var it = n.window.document.createElement(mt);
                    return tt !== void 0 && (it.className = tt), bt && bt.appendChild(it), it;
                  }, T.createNS = function(mt, tt) {
                    var bt = n.window.document.createElementNS(mt, tt);
                    return bt;
                  };
                  var A = n.window.document && n.window.document.documentElement.style;
                  function p(mt) {
                    if (!A)
                      return mt[0];
                    for (var tt = 0; tt < mt.length; tt++)
                      if (mt[tt] in A)
                        return mt[tt];
                    return mt[0];
                  }
                  var u = p([
                    "userSelect",
                    "MozUserSelect",
                    "WebkitUserSelect",
                    "msUserSelect"
                  ]), t;
                  T.disableDrag = function() {
                    A && u && (t = A[u], A[u] = "none");
                  }, T.enableDrag = function() {
                    A && u && (A[u] = t);
                  };
                  var r = p([
                    "transform",
                    "WebkitTransform"
                  ]);
                  T.setTransform = function(mt, tt) {
                    mt.style[r] = tt;
                  };
                  var i = !1;
                  try {
                    var a = Object.defineProperty({}, "passive", {
                      get: function() {
                        i = !0;
                      }
                    });
                    n.window.addEventListener("test", a, a), n.window.removeEventListener("test", a, a);
                  } catch {
                    i = !1;
                  }
                  T.addEventListener = function(mt, tt, bt, it) {
                    it === void 0 && (it = {}), "passive" in it && i ? mt.addEventListener(tt, bt, it) : mt.addEventListener(tt, bt, it.capture);
                  }, T.removeEventListener = function(mt, tt, bt, it) {
                    it === void 0 && (it = {}), "passive" in it && i ? mt.removeEventListener(tt, bt, it) : mt.removeEventListener(tt, bt, it.capture);
                  };
                  var l = function(mt) {
                    mt.preventDefault(), mt.stopPropagation(), n.window.removeEventListener("click", l, !0);
                  };
                  T.suppressClick = function() {
                    n.window.addEventListener("click", l, !0), n.window.setTimeout(function() {
                      n.window.removeEventListener("click", l, !0);
                    }, 0);
                  }, T.mousePos = function(mt, tt) {
                    var bt = mt.getBoundingClientRect();
                    return new n.Point(tt.clientX - bt.left - mt.clientLeft, tt.clientY - bt.top - mt.clientTop);
                  }, T.touchPos = function(mt, tt) {
                    for (var bt = mt.getBoundingClientRect(), it = [], _t = 0; _t < tt.length; _t++)
                      it.push(new n.Point(tt[_t].clientX - bt.left - mt.clientLeft, tt[_t].clientY - bt.top - mt.clientTop));
                    return it;
                  }, T.mouseButton = function(mt) {
                    return typeof n.window.InstallTrigger < "u" && mt.button === 2 && mt.ctrlKey && n.window.navigator.platform.toUpperCase().indexOf("MAC") >= 0 ? 0 : mt.button;
                  }, T.remove = function(mt) {
                    mt.parentNode && mt.parentNode.removeChild(mt);
                  };
                  function o(mt, tt, bt) {
                    var it, _t, Yt, le = n.browser.devicePixelRatio > 1 ? "@2x" : "", Ee = n.getJSON(tt.transformRequest(tt.normalizeSpriteURL(mt, le, ".json"), n.ResourceType.SpriteJSON), function(Lr, Hr) {
                      Ee = null, Yt || (Yt = Lr, it = Hr, vr());
                    }), $e = n.getImage(tt.transformRequest(tt.normalizeSpriteURL(mt, le, ".png"), n.ResourceType.SpriteImage), function(Lr, Hr) {
                      $e = null, Yt || (Yt = Lr, _t = Hr, vr());
                    });
                    function vr() {
                      if (Yt)
                        bt(Yt);
                      else if (it && _t) {
                        var Lr = n.browser.getImageData(_t), Hr = {};
                        for (var Ur in it) {
                          var hn = it[Ur], En = hn.width, Mn = hn.height, _n = hn.x, In = hn.y, Kn = hn.sdf, xi = hn.pixelRatio, Ei = hn.stretchX, zi = hn.stretchY, Vi = hn.content, Di = new n.RGBAImage({
                            width: En,
                            height: Mn
                          });
                          n.RGBAImage.copy(Lr, Di, {
                            x: _n,
                            y: In
                          }, {
                            x: 0,
                            y: 0
                          }, {
                            width: En,
                            height: Mn
                          }), Hr[Ur] = {
                            data: Di,
                            pixelRatio: xi,
                            sdf: Kn,
                            stretchX: Ei,
                            stretchY: zi,
                            content: Vi
                          };
                        }
                        bt(null, Hr);
                      }
                    }
                    return {
                      cancel: function() {
                        Ee && (Ee.cancel(), Ee = null), $e && ($e.cancel(), $e = null);
                      }
                    };
                  }
                  function y(mt) {
                    var tt = mt.userImage;
                    if (tt && tt.render) {
                      var bt = tt.render();
                      if (bt)
                        return mt.data.replace(new Uint8Array(tt.data.buffer)), !0;
                    }
                    return !1;
                  }
                  var g = 1, x = function(mt) {
                    function tt() {
                      mt.call(this), this.images = {}, this.updatedImages = {}, this.callbackDispatchedThisFrame = {}, this.loaded = !1, this.requestors = [], this.patterns = {}, this.atlasImage = new n.RGBAImage({
                        width: 1,
                        height: 1
                      }), this.dirty = !0;
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.isLoaded = function() {
                      return this.loaded;
                    }, tt.prototype.setLoaded = function(it) {
                      if (this.loaded !== it && (this.loaded = it, it)) {
                        for (var _t = 0, Yt = this.requestors; _t < Yt.length; _t += 1) {
                          var le = Yt[_t], Ee = le.ids, $e = le.callback;
                          this._notify(Ee, $e);
                        }
                        this.requestors = [];
                      }
                    }, tt.prototype.getImage = function(it) {
                      return this.images[it];
                    }, tt.prototype.addImage = function(it, _t) {
                      this._validate(it, _t) && (this.images[it] = _t);
                    }, tt.prototype._validate = function(it, _t) {
                      var Yt = !0;
                      return this._validateStretch(_t.stretchX, _t.data && _t.data.width) || (this.fire(new n.ErrorEvent(new Error('Image "' + it + '" has invalid "stretchX" value'))), Yt = !1), this._validateStretch(_t.stretchY, _t.data && _t.data.height) || (this.fire(new n.ErrorEvent(new Error('Image "' + it + '" has invalid "stretchY" value'))), Yt = !1), this._validateContent(_t.content, _t) || (this.fire(new n.ErrorEvent(new Error('Image "' + it + '" has invalid "content" value'))), Yt = !1), Yt;
                    }, tt.prototype._validateStretch = function(it, _t) {
                      if (!it)
                        return !0;
                      for (var Yt = 0, le = 0, Ee = it; le < Ee.length; le += 1) {
                        var $e = Ee[le];
                        if ($e[0] < Yt || $e[1] < $e[0] || _t < $e[1])
                          return !1;
                        Yt = $e[1];
                      }
                      return !0;
                    }, tt.prototype._validateContent = function(it, _t) {
                      return it ? !(it.length !== 4 || it[0] < 0 || _t.data.width < it[0] || it[1] < 0 || _t.data.height < it[1] || it[2] < 0 || _t.data.width < it[2] || it[3] < 0 || _t.data.height < it[3] || it[2] < it[0] || it[3] < it[1]) : !0;
                    }, tt.prototype.updateImage = function(it, _t) {
                      var Yt = this.images[it];
                      _t.version = Yt.version + 1, this.images[it] = _t, this.updatedImages[it] = !0;
                    }, tt.prototype.removeImage = function(it) {
                      var _t = this.images[it];
                      delete this.images[it], delete this.patterns[it], _t.userImage && _t.userImage.onRemove && _t.userImage.onRemove();
                    }, tt.prototype.listImages = function() {
                      return Object.keys(this.images);
                    }, tt.prototype.getImages = function(it, _t) {
                      var Yt = !0;
                      if (!this.isLoaded())
                        for (var le = 0, Ee = it; le < Ee.length; le += 1) {
                          var $e = Ee[le];
                          this.images[$e] || (Yt = !1);
                        }
                      this.isLoaded() || Yt ? this._notify(it, _t) : this.requestors.push({
                        ids: it,
                        callback: _t
                      });
                    }, tt.prototype._notify = function(it, _t) {
                      for (var Yt = {}, le = 0, Ee = it; le < Ee.length; le += 1) {
                        var $e = Ee[le];
                        this.images[$e] || this.fire(new n.Event("styleimagemissing", { id: $e }));
                        var vr = this.images[$e];
                        vr ? Yt[$e] = {
                          data: vr.data.clone(),
                          pixelRatio: vr.pixelRatio,
                          sdf: vr.sdf,
                          version: vr.version,
                          stretchX: vr.stretchX,
                          stretchY: vr.stretchY,
                          content: vr.content,
                          hasRenderCallback: !!(vr.userImage && vr.userImage.render)
                        } : n.warnOnce('Image "' + $e + '" could not be loaded. Please make sure you have added the image with map.addImage() or a "sprite" property in your style. You can provide missing images by listening for the "styleimagemissing" map event.');
                      }
                      _t(null, Yt);
                    }, tt.prototype.getPixelSize = function() {
                      var it = this.atlasImage, _t = it.width, Yt = it.height;
                      return {
                        width: _t,
                        height: Yt
                      };
                    }, tt.prototype.getPattern = function(it) {
                      var _t = this.patterns[it], Yt = this.getImage(it);
                      if (!Yt)
                        return null;
                      if (_t && _t.position.version === Yt.version)
                        return _t.position;
                      if (_t)
                        _t.position.version = Yt.version;
                      else {
                        var le = Yt.data.width + g * 2, Ee = Yt.data.height + g * 2, $e = {
                          w: le,
                          h: Ee,
                          x: 0,
                          y: 0
                        }, vr = new n.ImagePosition($e, Yt);
                        this.patterns[it] = {
                          bin: $e,
                          position: vr
                        };
                      }
                      return this._updatePatternAtlas(), this.patterns[it].position;
                    }, tt.prototype.bind = function(it) {
                      var _t = it.gl;
                      this.atlasTexture ? this.dirty && (this.atlasTexture.update(this.atlasImage), this.dirty = !1) : this.atlasTexture = new n.Texture(it, this.atlasImage, _t.RGBA), this.atlasTexture.bind(_t.LINEAR, _t.CLAMP_TO_EDGE);
                    }, tt.prototype._updatePatternAtlas = function() {
                      var it = [];
                      for (var _t in this.patterns)
                        it.push(this.patterns[_t].bin);
                      var Yt = n.potpack(it), le = Yt.w, Ee = Yt.h, $e = this.atlasImage;
                      $e.resize({
                        width: le || 1,
                        height: Ee || 1
                      });
                      for (var vr in this.patterns) {
                        var Lr = this.patterns[vr], Hr = Lr.bin, Ur = Hr.x + g, hn = Hr.y + g, En = this.images[vr].data, Mn = En.width, _n = En.height;
                        n.RGBAImage.copy(En, $e, {
                          x: 0,
                          y: 0
                        }, {
                          x: Ur,
                          y: hn
                        }, {
                          width: Mn,
                          height: _n
                        }), n.RGBAImage.copy(En, $e, {
                          x: 0,
                          y: _n - 1
                        }, {
                          x: Ur,
                          y: hn - 1
                        }, {
                          width: Mn,
                          height: 1
                        }), n.RGBAImage.copy(En, $e, {
                          x: 0,
                          y: 0
                        }, {
                          x: Ur,
                          y: hn + _n
                        }, {
                          width: Mn,
                          height: 1
                        }), n.RGBAImage.copy(En, $e, {
                          x: Mn - 1,
                          y: 0
                        }, {
                          x: Ur - 1,
                          y: hn
                        }, {
                          width: 1,
                          height: _n
                        }), n.RGBAImage.copy(En, $e, {
                          x: 0,
                          y: 0
                        }, {
                          x: Ur + Mn,
                          y: hn
                        }, {
                          width: 1,
                          height: _n
                        });
                      }
                      this.dirty = !0;
                    }, tt.prototype.beginFrame = function() {
                      this.callbackDispatchedThisFrame = {};
                    }, tt.prototype.dispatchRenderCallbacks = function(it) {
                      for (var _t = 0, Yt = it; _t < Yt.length; _t += 1) {
                        var le = Yt[_t];
                        if (!this.callbackDispatchedThisFrame[le]) {
                          this.callbackDispatchedThisFrame[le] = !0;
                          var Ee = this.images[le], $e = y(Ee);
                          $e && this.updateImage(le, Ee);
                        }
                      }
                    }, tt;
                  }(n.Evented);
                  function c(mt, tt, bt, it, _t) {
                    var Yt = tt * 256, le = Yt + 255, Ee = it.transformRequest(it.normalizeGlyphsURL(bt).replace("{fontstack}", mt).replace("{range}", Yt + "-" + le), n.ResourceType.Glyphs);
                    n.getArrayBuffer(Ee, function($e, vr) {
                      if ($e)
                        _t($e);
                      else if (vr) {
                        for (var Lr = {}, Hr = 0, Ur = n.parseGlyphPBF(vr); Hr < Ur.length; Hr += 1) {
                          var hn = Ur[Hr];
                          Lr[hn.id] = hn;
                        }
                        _t(null, Lr);
                      }
                    });
                  }
                  var v = S, f = S, _ = 1e20;
                  function S(mt, tt, bt, it, _t, Yt) {
                    this.fontSize = mt || 24, this.buffer = tt === void 0 ? 3 : tt, this.cutoff = it || 0.25, this.fontFamily = _t || "sans-serif", this.fontWeight = Yt || "normal", this.radius = bt || 8;
                    var le = this.size = this.fontSize + this.buffer * 2;
                    this.canvas = document.createElement("canvas"), this.canvas.width = this.canvas.height = le, this.ctx = this.canvas.getContext("2d"), this.ctx.font = this.fontWeight + " " + this.fontSize + "px " + this.fontFamily, this.ctx.textBaseline = "middle", this.ctx.fillStyle = "black", this.gridOuter = new Float64Array(le * le), this.gridInner = new Float64Array(le * le), this.f = new Float64Array(le), this.d = new Float64Array(le), this.z = new Float64Array(le + 1), this.v = new Int16Array(le), this.middle = Math.round(le / 2 * (navigator.userAgent.indexOf("Gecko/") >= 0 ? 1.2 : 1));
                  }
                  S.prototype.draw = function(mt) {
                    this.ctx.clearRect(0, 0, this.size, this.size), this.ctx.fillText(mt, this.buffer, this.middle);
                    for (var tt = this.ctx.getImageData(0, 0, this.size, this.size), bt = new Uint8ClampedArray(this.size * this.size), it = 0; it < this.size * this.size; it++) {
                      var _t = tt.data[it * 4 + 3] / 255;
                      this.gridOuter[it] = _t === 1 ? 0 : _t === 0 ? _ : Math.pow(Math.max(0, 0.5 - _t), 2), this.gridInner[it] = _t === 1 ? _ : _t === 0 ? 0 : Math.pow(Math.max(0, _t - 0.5), 2);
                    }
                    for (M(this.gridOuter, this.size, this.size, this.f, this.d, this.v, this.z), M(this.gridInner, this.size, this.size, this.f, this.d, this.v, this.z), it = 0; it < this.size * this.size; it++) {
                      var Yt = this.gridOuter[it] - this.gridInner[it];
                      bt[it] = Math.max(0, Math.min(255, Math.round(255 - 255 * (Yt / this.radius + this.cutoff))));
                    }
                    return bt;
                  };
                  function M(mt, tt, bt, it, _t, Yt, le) {
                    for (var Ee = 0; Ee < tt; Ee++) {
                      for (var $e = 0; $e < bt; $e++)
                        it[$e] = mt[$e * tt + Ee];
                      for (C(it, _t, Yt, le, bt), $e = 0; $e < bt; $e++)
                        mt[$e * tt + Ee] = _t[$e];
                    }
                    for ($e = 0; $e < bt; $e++) {
                      for (Ee = 0; Ee < tt; Ee++)
                        it[Ee] = mt[$e * tt + Ee];
                      for (C(it, _t, Yt, le, tt), Ee = 0; Ee < tt; Ee++)
                        mt[$e * tt + Ee] = Math.sqrt(_t[Ee]);
                    }
                  }
                  function C(mt, tt, bt, it, _t) {
                    bt[0] = 0, it[0] = -_, it[1] = +_;
                    for (var Yt = 1, le = 0; Yt < _t; Yt++) {
                      for (var Ee = (mt[Yt] + Yt * Yt - (mt[bt[le]] + bt[le] * bt[le])) / (2 * Yt - 2 * bt[le]); Ee <= it[le]; )
                        le--, Ee = (mt[Yt] + Yt * Yt - (mt[bt[le]] + bt[le] * bt[le])) / (2 * Yt - 2 * bt[le]);
                      le++, bt[le] = Yt, it[le] = Ee, it[le + 1] = +_;
                    }
                    for (Yt = 0, le = 0; Yt < _t; Yt++) {
                      for (; it[le + 1] < Yt; )
                        le++;
                      tt[Yt] = (Yt - bt[le]) * (Yt - bt[le]) + mt[bt[le]];
                    }
                  }
                  v.default = f;
                  var m = function(tt, bt) {
                    this.requestManager = tt, this.localIdeographFontFamily = bt, this.entries = {};
                  };
                  m.prototype.setURL = function(tt) {
                    this.url = tt;
                  }, m.prototype.getGlyphs = function(tt, bt) {
                    var it = this, _t = [];
                    for (var Yt in tt)
                      for (var le = 0, Ee = tt[Yt]; le < Ee.length; le += 1) {
                        var $e = Ee[le];
                        _t.push({
                          stack: Yt,
                          id: $e
                        });
                      }
                    n.asyncAll(_t, function(vr, Lr) {
                      var Hr = vr.stack, Ur = vr.id, hn = it.entries[Hr];
                      hn || (hn = it.entries[Hr] = {
                        glyphs: {},
                        requests: {},
                        ranges: {}
                      });
                      var En = hn.glyphs[Ur];
                      if (En !== void 0) {
                        Lr(null, {
                          stack: Hr,
                          id: Ur,
                          glyph: En
                        });
                        return;
                      }
                      if (En = it._tinySDF(hn, Hr, Ur), En) {
                        hn.glyphs[Ur] = En, Lr(null, {
                          stack: Hr,
                          id: Ur,
                          glyph: En
                        });
                        return;
                      }
                      var Mn = Math.floor(Ur / 256);
                      if (Mn * 256 > 65535) {
                        Lr(new Error("glyphs > 65535 not supported"));
                        return;
                      }
                      if (hn.ranges[Mn]) {
                        Lr(null, {
                          stack: Hr,
                          id: Ur,
                          glyph: En
                        });
                        return;
                      }
                      var _n = hn.requests[Mn];
                      _n || (_n = hn.requests[Mn] = [], m.loadGlyphRange(Hr, Mn, it.url, it.requestManager, function(In, Kn) {
                        if (Kn) {
                          for (var xi in Kn)
                            it._doesCharSupportLocalGlyph(+xi) || (hn.glyphs[+xi] = Kn[+xi]);
                          hn.ranges[Mn] = !0;
                        }
                        for (var Ei = 0, zi = _n; Ei < zi.length; Ei += 1) {
                          var Vi = zi[Ei];
                          Vi(In, Kn);
                        }
                        delete hn.requests[Mn];
                      })), _n.push(function(In, Kn) {
                        In ? Lr(In) : Kn && Lr(null, {
                          stack: Hr,
                          id: Ur,
                          glyph: Kn[Ur] || null
                        });
                      });
                    }, function(vr, Lr) {
                      if (vr)
                        bt(vr);
                      else if (Lr) {
                        for (var Hr = {}, Ur = 0, hn = Lr; Ur < hn.length; Ur += 1) {
                          var En = hn[Ur], Mn = En.stack, _n = En.id, In = En.glyph;
                          (Hr[Mn] || (Hr[Mn] = {}))[_n] = In && {
                            id: In.id,
                            bitmap: In.bitmap.clone(),
                            metrics: In.metrics
                          };
                        }
                        bt(null, Hr);
                      }
                    });
                  }, m.prototype._doesCharSupportLocalGlyph = function(tt) {
                    return !!this.localIdeographFontFamily && (n.isChar["CJK Unified Ideographs"](tt) || n.isChar["Hangul Syllables"](tt) || n.isChar.Hiragana(tt) || n.isChar.Katakana(tt));
                  }, m.prototype._tinySDF = function(tt, bt, it) {
                    var _t = this.localIdeographFontFamily;
                    if (_t && this._doesCharSupportLocalGlyph(it)) {
                      var Yt = tt.tinySDF;
                      if (!Yt) {
                        var le = "400";
                        /bold/i.test(bt) ? le = "900" : /medium/i.test(bt) ? le = "500" : /light/i.test(bt) && (le = "200"), Yt = tt.tinySDF = new m.TinySDF(24, 3, 8, 0.25, _t, le);
                      }
                      return {
                        id: it,
                        bitmap: new n.AlphaImage({
                          width: 30,
                          height: 30
                        }, Yt.draw(String.fromCharCode(it))),
                        metrics: {
                          width: 24,
                          height: 24,
                          left: 0,
                          top: -8,
                          advance: 24
                        }
                      };
                    }
                  }, m.loadGlyphRange = c, m.TinySDF = v;
                  var L = function() {
                    this.specification = n.styleSpec.light.position;
                  };
                  L.prototype.possiblyEvaluate = function(tt, bt) {
                    return n.sphericalToCartesian(tt.expression.evaluate(bt));
                  }, L.prototype.interpolate = function(tt, bt, it) {
                    return {
                      x: n.number(tt.x, bt.x, it),
                      y: n.number(tt.y, bt.y, it),
                      z: n.number(tt.z, bt.z, it)
                    };
                  };
                  var d = new n.Properties({
                    anchor: new n.DataConstantProperty(n.styleSpec.light.anchor),
                    position: new L(),
                    color: new n.DataConstantProperty(n.styleSpec.light.color),
                    intensity: new n.DataConstantProperty(n.styleSpec.light.intensity)
                  }), h = "-transition", E = function(mt) {
                    function tt(bt) {
                      mt.call(this), this._transitionable = new n.Transitionable(d), this.setLight(bt), this._transitioning = this._transitionable.untransitioned();
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getLight = function() {
                      return this._transitionable.serialize();
                    }, tt.prototype.setLight = function(it, _t) {
                      if (_t === void 0 && (_t = {}), !this._validate(n.validateLight, it, _t))
                        for (var Yt in it) {
                          var le = it[Yt];
                          n.endsWith(Yt, h) ? this._transitionable.setTransition(Yt.slice(0, -h.length), le) : this._transitionable.setValue(Yt, le);
                        }
                    }, tt.prototype.updateTransitions = function(it) {
                      this._transitioning = this._transitionable.transitioned(it, this._transitioning);
                    }, tt.prototype.hasTransition = function() {
                      return this._transitioning.hasTransition();
                    }, tt.prototype.recalculate = function(it) {
                      this.properties = this._transitioning.possiblyEvaluate(it);
                    }, tt.prototype._validate = function(it, _t, Yt) {
                      return Yt && Yt.validate === !1 ? !1 : n.emitValidationErrors(this, it.call(n.validateStyle, n.extend({
                        value: _t,
                        style: {
                          glyphs: !0,
                          sprite: !0
                        },
                        styleSpec: n.styleSpec
                      })));
                    }, tt;
                  }(n.Evented), w = function(tt, bt) {
                    this.width = tt, this.height = bt, this.nextRow = 0, this.data = new Uint8Array(this.width * this.height), this.dashEntry = {};
                  };
                  w.prototype.getDash = function(tt, bt) {
                    var it = tt.join(",") + String(bt);
                    return this.dashEntry[it] || (this.dashEntry[it] = this.addDash(tt, bt)), this.dashEntry[it];
                  }, w.prototype.getDashRanges = function(tt, bt, it) {
                    var _t = tt.length % 2 === 1, Yt = [], le = _t ? -tt[tt.length - 1] * it : 0, Ee = tt[0] * it, $e = !0;
                    Yt.push({
                      left: le,
                      right: Ee,
                      isDash: $e,
                      zeroLength: tt[0] === 0
                    });
                    for (var vr = tt[0], Lr = 1; Lr < tt.length; Lr++) {
                      $e = !$e;
                      var Hr = tt[Lr];
                      le = vr * it, vr += Hr, Ee = vr * it, Yt.push({
                        left: le,
                        right: Ee,
                        isDash: $e,
                        zeroLength: Hr === 0
                      });
                    }
                    return Yt;
                  }, w.prototype.addRoundDash = function(tt, bt, it) {
                    for (var _t = bt / 2, Yt = -it; Yt <= it; Yt++)
                      for (var le = this.nextRow + it + Yt, Ee = this.width * le, $e = 0, vr = tt[$e], Lr = 0; Lr < this.width; Lr++) {
                        Lr / vr.right > 1 && (vr = tt[++$e]);
                        var Hr = Math.abs(Lr - vr.left), Ur = Math.abs(Lr - vr.right), hn = Math.min(Hr, Ur), En = void 0, Mn = Yt / it * (_t + 1);
                        if (vr.isDash) {
                          var _n = _t - Math.abs(Mn);
                          En = Math.sqrt(hn * hn + _n * _n);
                        } else
                          En = _t - Math.sqrt(hn * hn + Mn * Mn);
                        this.data[Ee + Lr] = Math.max(0, Math.min(255, En + 128));
                      }
                  }, w.prototype.addRegularDash = function(tt) {
                    for (var bt = tt.length - 1; bt >= 0; --bt) {
                      var it = tt[bt], _t = tt[bt + 1];
                      it.zeroLength ? tt.splice(bt, 1) : _t && _t.isDash === it.isDash && (_t.left = it.left, tt.splice(bt, 1));
                    }
                    var Yt = tt[0], le = tt[tt.length - 1];
                    Yt.isDash === le.isDash && (Yt.left = le.left - this.width, le.right = Yt.right + this.width);
                    for (var Ee = this.width * this.nextRow, $e = 0, vr = tt[$e], Lr = 0; Lr < this.width; Lr++) {
                      Lr / vr.right > 1 && (vr = tt[++$e]);
                      var Hr = Math.abs(Lr - vr.left), Ur = Math.abs(Lr - vr.right), hn = Math.min(Hr, Ur), En = vr.isDash ? hn : -hn;
                      this.data[Ee + Lr] = Math.max(0, Math.min(255, En + 128));
                    }
                  }, w.prototype.addDash = function(tt, bt) {
                    var it = bt ? 7 : 0, _t = 2 * it + 1;
                    if (this.nextRow + _t > this.height)
                      return n.warnOnce("LineAtlas out of space"), null;
                    for (var Yt = 0, le = 0; le < tt.length; le++)
                      Yt += tt[le];
                    if (Yt !== 0) {
                      var Ee = this.width / Yt, $e = this.getDashRanges(tt, this.width, Ee);
                      bt ? this.addRoundDash($e, Ee, it) : this.addRegularDash($e);
                    }
                    var vr = {
                      y: (this.nextRow + it + 0.5) / this.height,
                      height: 2 * it / this.height,
                      width: Yt
                    };
                    return this.nextRow += _t, this.dirty = !0, vr;
                  }, w.prototype.bind = function(tt) {
                    var bt = tt.gl;
                    this.texture ? (bt.bindTexture(bt.TEXTURE_2D, this.texture), this.dirty && (this.dirty = !1, bt.texSubImage2D(bt.TEXTURE_2D, 0, 0, 0, this.width, this.height, bt.ALPHA, bt.UNSIGNED_BYTE, this.data))) : (this.texture = bt.createTexture(), bt.bindTexture(bt.TEXTURE_2D, this.texture), bt.texParameteri(bt.TEXTURE_2D, bt.TEXTURE_WRAP_S, bt.REPEAT), bt.texParameteri(bt.TEXTURE_2D, bt.TEXTURE_WRAP_T, bt.REPEAT), bt.texParameteri(bt.TEXTURE_2D, bt.TEXTURE_MIN_FILTER, bt.LINEAR), bt.texParameteri(bt.TEXTURE_2D, bt.TEXTURE_MAG_FILTER, bt.LINEAR), bt.texImage2D(bt.TEXTURE_2D, 0, bt.ALPHA, this.width, this.height, 0, bt.ALPHA, bt.UNSIGNED_BYTE, this.data));
                  };
                  var z = function mt(tt, bt) {
                    this.workerPool = tt, this.actors = [], this.currentActor = 0, this.id = n.uniqueId();
                    for (var it = this.workerPool.acquire(this.id), _t = 0; _t < it.length; _t++) {
                      var Yt = it[_t], le = new mt.Actor(Yt, bt, this.id);
                      le.name = "Worker " + _t, this.actors.push(le);
                    }
                  };
                  z.prototype.broadcast = function(tt, bt, it) {
                    it = it || function() {
                    }, n.asyncAll(this.actors, function(_t, Yt) {
                      _t.send(tt, bt, Yt);
                    }, it);
                  }, z.prototype.getActor = function() {
                    return this.currentActor = (this.currentActor + 1) % this.actors.length, this.actors[this.currentActor];
                  }, z.prototype.remove = function() {
                    this.actors.forEach(function(tt) {
                      tt.remove();
                    }), this.actors = [], this.workerPool.release(this.id);
                  }, z.Actor = n.Actor;
                  function O(mt, tt, bt) {
                    var it = function(_t, Yt) {
                      if (_t)
                        return bt(_t);
                      if (Yt) {
                        var le = n.pick(n.extend(Yt, mt), [
                          "tiles",
                          "minzoom",
                          "maxzoom",
                          "attribution",
                          "mapbox_logo",
                          "bounds",
                          "scheme",
                          "tileSize",
                          "encoding"
                        ]);
                        Yt.vector_layers && (le.vectorLayers = Yt.vector_layers, le.vectorLayerIds = le.vectorLayers.map(function(Ee) {
                          return Ee.id;
                        })), le.tiles = tt.canonicalizeTileset(le, mt.url), bt(null, le);
                      }
                    };
                    return mt.url ? n.getJSON(tt.transformRequest(tt.normalizeSourceURL(mt.url), n.ResourceType.Source), it) : n.browser.frame(function() {
                      return it(null, mt);
                    });
                  }
                  var B = function(tt, bt, it) {
                    this.bounds = n.LngLatBounds.convert(this.validateBounds(tt)), this.minzoom = bt || 0, this.maxzoom = it || 24;
                  };
                  B.prototype.validateBounds = function(tt) {
                    return !Array.isArray(tt) || tt.length !== 4 ? [
                      -180,
                      -90,
                      180,
                      90
                    ] : [
                      Math.max(-180, tt[0]),
                      Math.max(-90, tt[1]),
                      Math.min(180, tt[2]),
                      Math.min(90, tt[3])
                    ];
                  }, B.prototype.contains = function(tt) {
                    var bt = Math.pow(2, tt.z), it = {
                      minX: Math.floor(n.mercatorXfromLng(this.bounds.getWest()) * bt),
                      minY: Math.floor(n.mercatorYfromLat(this.bounds.getNorth()) * bt),
                      maxX: Math.ceil(n.mercatorXfromLng(this.bounds.getEast()) * bt),
                      maxY: Math.ceil(n.mercatorYfromLat(this.bounds.getSouth()) * bt)
                    }, _t = tt.x >= it.minX && tt.x < it.maxX && tt.y >= it.minY && tt.y < it.maxY;
                    return _t;
                  };
                  var V = function(mt) {
                    function tt(bt, it, _t, Yt) {
                      if (mt.call(this), this.id = bt, this.dispatcher = _t, this.type = "vector", this.minzoom = 0, this.maxzoom = 22, this.scheme = "xyz", this.tileSize = 512, this.reparseOverscaled = !0, this.isTileClipped = !0, this._loaded = !1, n.extend(this, n.pick(it, [
                        "url",
                        "scheme",
                        "tileSize",
                        "promoteId"
                      ])), this._options = n.extend({ type: "vector" }, it), this._collectResourceTiming = it.collectResourceTiming, this.tileSize !== 512)
                        throw new Error("vector tile sources must have a tileSize of 512");
                      this.setEventedParent(Yt);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.load = function() {
                      var it = this;
                      this._loaded = !1, this.fire(new n.Event("dataloading", { dataType: "source" })), this._tileJSONRequest = O(this._options, this.map._requestManager, function(_t, Yt) {
                        it._tileJSONRequest = null, it._loaded = !0, _t ? it.fire(new n.ErrorEvent(_t)) : Yt && (n.extend(it, Yt), Yt.bounds && (it.tileBounds = new B(Yt.bounds, it.minzoom, it.maxzoom)), n.postTurnstileEvent(Yt.tiles, it.map._requestManager._customAccessToken), n.postMapLoadEvent(Yt.tiles, it.map._getMapId(), it.map._requestManager._skuToken, it.map._requestManager._customAccessToken), it.fire(new n.Event("data", {
                          dataType: "source",
                          sourceDataType: "metadata"
                        })), it.fire(new n.Event("data", {
                          dataType: "source",
                          sourceDataType: "content"
                        })));
                      });
                    }, tt.prototype.loaded = function() {
                      return this._loaded;
                    }, tt.prototype.hasTile = function(it) {
                      return !this.tileBounds || this.tileBounds.contains(it.canonical);
                    }, tt.prototype.onAdd = function(it) {
                      this.map = it, this.load();
                    }, tt.prototype.setSourceProperty = function(it) {
                      this._tileJSONRequest && this._tileJSONRequest.cancel(), it();
                      var _t = this.map.style.sourceCaches[this.id];
                      _t.clearTiles(), this.load();
                    }, tt.prototype.setTiles = function(it) {
                      var _t = this;
                      return this.setSourceProperty(function() {
                        _t._options.tiles = it;
                      }), this;
                    }, tt.prototype.setUrl = function(it) {
                      var _t = this;
                      return this.setSourceProperty(function() {
                        _t.url = it, _t._options.url = it;
                      }), this;
                    }, tt.prototype.onRemove = function() {
                      this._tileJSONRequest && (this._tileJSONRequest.cancel(), this._tileJSONRequest = null);
                    }, tt.prototype.serialize = function() {
                      return n.extend({}, this._options);
                    }, tt.prototype.loadTile = function(it, _t) {
                      var Yt = this.map._requestManager.normalizeTileURL(it.tileID.canonical.url(this.tiles, this.scheme)), le = {
                        request: this.map._requestManager.transformRequest(Yt, n.ResourceType.Tile),
                        uid: it.uid,
                        tileID: it.tileID,
                        zoom: it.tileID.overscaledZ,
                        tileSize: this.tileSize * it.tileID.overscaleFactor(),
                        type: this.type,
                        source: this.id,
                        pixelRatio: n.browser.devicePixelRatio,
                        showCollisionBoxes: this.map.showCollisionBoxes,
                        promoteId: this.promoteId
                      };
                      le.request.collectResourceTiming = this._collectResourceTiming, !it.actor || it.state === "expired" ? (it.actor = this.dispatcher.getActor(), it.request = it.actor.send("loadTile", le, Ee.bind(this))) : it.state === "loading" ? it.reloadCallback = _t : it.request = it.actor.send("reloadTile", le, Ee.bind(this));
                      function Ee($e, vr) {
                        if (delete it.request, it.aborted)
                          return _t(null);
                        if ($e && $e.status !== 404)
                          return _t($e);
                        vr && vr.resourceTiming && (it.resourceTiming = vr.resourceTiming), this.map._refreshExpiredTiles && vr && it.setExpiryData(vr), it.loadVectorData(vr, this.map.painter), n.cacheEntryPossiblyAdded(this.dispatcher), _t(null), it.reloadCallback && (this.loadTile(it, it.reloadCallback), it.reloadCallback = null);
                      }
                    }, tt.prototype.abortTile = function(it) {
                      it.request && (it.request.cancel(), delete it.request), it.actor && it.actor.send("abortTile", {
                        uid: it.uid,
                        type: this.type,
                        source: this.id
                      }, void 0);
                    }, tt.prototype.unloadTile = function(it) {
                      it.unloadVectorData(), it.actor && it.actor.send("removeTile", {
                        uid: it.uid,
                        type: this.type,
                        source: this.id
                      }, void 0);
                    }, tt.prototype.hasTransition = function() {
                      return !1;
                    }, tt;
                  }(n.Evented), U = function(mt) {
                    function tt(bt, it, _t, Yt) {
                      mt.call(this), this.id = bt, this.dispatcher = _t, this.setEventedParent(Yt), this.type = "raster", this.minzoom = 0, this.maxzoom = 22, this.roundZoom = !0, this.scheme = "xyz", this.tileSize = 512, this._loaded = !1, this._options = n.extend({ type: "raster" }, it), n.extend(this, n.pick(it, [
                        "url",
                        "scheme",
                        "tileSize"
                      ]));
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.load = function() {
                      var it = this;
                      this._loaded = !1, this.fire(new n.Event("dataloading", { dataType: "source" })), this._tileJSONRequest = O(this._options, this.map._requestManager, function(_t, Yt) {
                        it._tileJSONRequest = null, it._loaded = !0, _t ? it.fire(new n.ErrorEvent(_t)) : Yt && (n.extend(it, Yt), Yt.bounds && (it.tileBounds = new B(Yt.bounds, it.minzoom, it.maxzoom)), n.postTurnstileEvent(Yt.tiles), n.postMapLoadEvent(Yt.tiles, it.map._getMapId(), it.map._requestManager._skuToken), it.fire(new n.Event("data", {
                          dataType: "source",
                          sourceDataType: "metadata"
                        })), it.fire(new n.Event("data", {
                          dataType: "source",
                          sourceDataType: "content"
                        })));
                      });
                    }, tt.prototype.loaded = function() {
                      return this._loaded;
                    }, tt.prototype.onAdd = function(it) {
                      this.map = it, this.load();
                    }, tt.prototype.onRemove = function() {
                      this._tileJSONRequest && (this._tileJSONRequest.cancel(), this._tileJSONRequest = null);
                    }, tt.prototype.serialize = function() {
                      return n.extend({}, this._options);
                    }, tt.prototype.hasTile = function(it) {
                      return !this.tileBounds || this.tileBounds.contains(it.canonical);
                    }, tt.prototype.loadTile = function(it, _t) {
                      var Yt = this, le = this.map._requestManager.normalizeTileURL(it.tileID.canonical.url(this.tiles, this.scheme), this.tileSize);
                      it.request = n.getImage(this.map._requestManager.transformRequest(le, n.ResourceType.Tile), function(Ee, $e) {
                        if (delete it.request, it.aborted)
                          it.state = "unloaded", _t(null);
                        else if (Ee)
                          it.state = "errored", _t(Ee);
                        else if ($e) {
                          Yt.map._refreshExpiredTiles && it.setExpiryData($e), delete $e.cacheControl, delete $e.expires;
                          var vr = Yt.map.painter.context, Lr = vr.gl;
                          it.texture = Yt.map.painter.getTileTexture($e.width), it.texture ? it.texture.update($e, { useMipmap: !0 }) : (it.texture = new n.Texture(vr, $e, Lr.RGBA, { useMipmap: !0 }), it.texture.bind(Lr.LINEAR, Lr.CLAMP_TO_EDGE, Lr.LINEAR_MIPMAP_NEAREST), vr.extTextureFilterAnisotropic && Lr.texParameterf(Lr.TEXTURE_2D, vr.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT, vr.extTextureFilterAnisotropicMax)), it.state = "loaded", n.cacheEntryPossiblyAdded(Yt.dispatcher), _t(null);
                        }
                      });
                    }, tt.prototype.abortTile = function(it, _t) {
                      it.request && (it.request.cancel(), delete it.request), _t();
                    }, tt.prototype.unloadTile = function(it, _t) {
                      it.texture && this.map.painter.saveTileTexture(it.texture), _t();
                    }, tt.prototype.hasTransition = function() {
                      return !1;
                    }, tt;
                  }(n.Evented), H = function(mt) {
                    function tt(bt, it, _t, Yt) {
                      mt.call(this, bt, it, _t, Yt), this.type = "raster-dem", this.maxzoom = 22, this._options = n.extend({ type: "raster-dem" }, it), this.encoding = it.encoding || "mapbox";
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.serialize = function() {
                      return {
                        type: "raster-dem",
                        url: this.url,
                        tileSize: this.tileSize,
                        tiles: this.tiles,
                        bounds: this.bounds,
                        encoding: this.encoding
                      };
                    }, tt.prototype.loadTile = function(it, _t) {
                      var Yt = this.map._requestManager.normalizeTileURL(it.tileID.canonical.url(this.tiles, this.scheme), this.tileSize);
                      it.request = n.getImage(this.map._requestManager.transformRequest(Yt, n.ResourceType.Tile), le.bind(this)), it.neighboringTiles = this._getNeighboringTiles(it.tileID);
                      function le($e, vr) {
                        if (delete it.request, it.aborted)
                          it.state = "unloaded", _t(null);
                        else if ($e)
                          it.state = "errored", _t($e);
                        else if (vr) {
                          this.map._refreshExpiredTiles && it.setExpiryData(vr), delete vr.cacheControl, delete vr.expires;
                          var Lr = n.window.ImageBitmap && vr instanceof n.window.ImageBitmap && n.offscreenCanvasSupported(), Hr = Lr ? vr : n.browser.getImageData(vr, 1), Ur = {
                            uid: it.uid,
                            coord: it.tileID,
                            source: this.id,
                            rawImageData: Hr,
                            encoding: this.encoding
                          };
                          (!it.actor || it.state === "expired") && (it.actor = this.dispatcher.getActor(), it.actor.send("loadDEMTile", Ur, Ee.bind(this)));
                        }
                      }
                      function Ee($e, vr) {
                        $e && (it.state = "errored", _t($e)), vr && (it.dem = vr, it.needsHillshadePrepare = !0, it.state = "loaded", _t(null));
                      }
                    }, tt.prototype._getNeighboringTiles = function(it) {
                      var _t = it.canonical, Yt = Math.pow(2, _t.z), le = (_t.x - 1 + Yt) % Yt, Ee = _t.x === 0 ? it.wrap - 1 : it.wrap, $e = (_t.x + 1 + Yt) % Yt, vr = _t.x + 1 === Yt ? it.wrap + 1 : it.wrap, Lr = {};
                      return Lr[new n.OverscaledTileID(it.overscaledZ, Ee, _t.z, le, _t.y).key] = { backfilled: !1 }, Lr[new n.OverscaledTileID(it.overscaledZ, vr, _t.z, $e, _t.y).key] = { backfilled: !1 }, _t.y > 0 && (Lr[new n.OverscaledTileID(it.overscaledZ, Ee, _t.z, le, _t.y - 1).key] = { backfilled: !1 }, Lr[new n.OverscaledTileID(it.overscaledZ, it.wrap, _t.z, _t.x, _t.y - 1).key] = { backfilled: !1 }, Lr[new n.OverscaledTileID(it.overscaledZ, vr, _t.z, $e, _t.y - 1).key] = { backfilled: !1 }), _t.y + 1 < Yt && (Lr[new n.OverscaledTileID(it.overscaledZ, Ee, _t.z, le, _t.y + 1).key] = { backfilled: !1 }, Lr[new n.OverscaledTileID(it.overscaledZ, it.wrap, _t.z, _t.x, _t.y + 1).key] = { backfilled: !1 }, Lr[new n.OverscaledTileID(it.overscaledZ, vr, _t.z, $e, _t.y + 1).key] = { backfilled: !1 }), Lr;
                    }, tt.prototype.unloadTile = function(it) {
                      it.demTexture && this.map.painter.saveTileTexture(it.demTexture), it.fbo && (it.fbo.destroy(), delete it.fbo), it.dem && delete it.dem, delete it.neighboringTiles, it.state = "unloaded", it.actor && it.actor.send("removeDEMTile", {
                        uid: it.uid,
                        source: this.id
                      });
                    }, tt;
                  }(U), F = function(mt) {
                    function tt(bt, it, _t, Yt) {
                      mt.call(this), this.id = bt, this.type = "geojson", this.minzoom = 0, this.maxzoom = 18, this.tileSize = 512, this.isTileClipped = !0, this.reparseOverscaled = !0, this._removed = !1, this._loaded = !1, this.actor = _t.getActor(), this.setEventedParent(Yt), this._data = it.data, this._options = n.extend({}, it), this._collectResourceTiming = it.collectResourceTiming, this._resourceTiming = [], it.maxzoom !== void 0 && (this.maxzoom = it.maxzoom), it.type && (this.type = it.type), it.attribution && (this.attribution = it.attribution), this.promoteId = it.promoteId;
                      var le = n.EXTENT / this.tileSize;
                      this.workerOptions = n.extend({
                        source: this.id,
                        cluster: it.cluster || !1,
                        geojsonVtOptions: {
                          buffer: (it.buffer !== void 0 ? it.buffer : 128) * le,
                          tolerance: (it.tolerance !== void 0 ? it.tolerance : 0.375) * le,
                          extent: n.EXTENT,
                          maxZoom: this.maxzoom,
                          lineMetrics: it.lineMetrics || !1,
                          generateId: it.generateId || !1
                        },
                        superclusterOptions: {
                          maxZoom: it.clusterMaxZoom !== void 0 ? Math.min(it.clusterMaxZoom, this.maxzoom - 1) : this.maxzoom - 1,
                          minPoints: Math.max(2, it.clusterMinPoints || 2),
                          extent: n.EXTENT,
                          radius: (it.clusterRadius || 50) * le,
                          log: !1,
                          generateId: it.generateId || !1
                        },
                        clusterProperties: it.clusterProperties,
                        filter: it.filter
                      }, it.workerOptions);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.load = function() {
                      var it = this;
                      this.fire(new n.Event("dataloading", { dataType: "source" })), this._updateWorkerData(function(_t) {
                        if (_t) {
                          it.fire(new n.ErrorEvent(_t));
                          return;
                        }
                        var Yt = {
                          dataType: "source",
                          sourceDataType: "metadata"
                        };
                        it._collectResourceTiming && it._resourceTiming && it._resourceTiming.length > 0 && (Yt.resourceTiming = it._resourceTiming, it._resourceTiming = []), it.fire(new n.Event("data", Yt));
                      });
                    }, tt.prototype.onAdd = function(it) {
                      this.map = it, this.load();
                    }, tt.prototype.setData = function(it) {
                      var _t = this;
                      return this._data = it, this.fire(new n.Event("dataloading", { dataType: "source" })), this._updateWorkerData(function(Yt) {
                        if (Yt) {
                          _t.fire(new n.ErrorEvent(Yt));
                          return;
                        }
                        var le = {
                          dataType: "source",
                          sourceDataType: "content"
                        };
                        _t._collectResourceTiming && _t._resourceTiming && _t._resourceTiming.length > 0 && (le.resourceTiming = _t._resourceTiming, _t._resourceTiming = []), _t.fire(new n.Event("data", le));
                      }), this;
                    }, tt.prototype.getClusterExpansionZoom = function(it, _t) {
                      return this.actor.send("geojson.getClusterExpansionZoom", {
                        clusterId: it,
                        source: this.id
                      }, _t), this;
                    }, tt.prototype.getClusterChildren = function(it, _t) {
                      return this.actor.send("geojson.getClusterChildren", {
                        clusterId: it,
                        source: this.id
                      }, _t), this;
                    }, tt.prototype.getClusterLeaves = function(it, _t, Yt, le) {
                      return this.actor.send("geojson.getClusterLeaves", {
                        source: this.id,
                        clusterId: it,
                        limit: _t,
                        offset: Yt
                      }, le), this;
                    }, tt.prototype._updateWorkerData = function(it) {
                      var _t = this;
                      this._loaded = !1;
                      var Yt = n.extend({}, this.workerOptions), le = this._data;
                      typeof le == "string" ? (Yt.request = this.map._requestManager.transformRequest(n.browser.resolveURL(le), n.ResourceType.Source), Yt.request.collectResourceTiming = this._collectResourceTiming) : Yt.data = JSON.stringify(le), this.actor.send(this.type + ".loadData", Yt, function(Ee, $e) {
                        _t._removed || $e && $e.abandoned || (_t._loaded = !0, $e && $e.resourceTiming && $e.resourceTiming[_t.id] && (_t._resourceTiming = $e.resourceTiming[_t.id].slice(0)), _t.actor.send(_t.type + ".coalesce", { source: Yt.source }, null), it(Ee));
                      });
                    }, tt.prototype.loaded = function() {
                      return this._loaded;
                    }, tt.prototype.loadTile = function(it, _t) {
                      var Yt = this, le = it.actor ? "reloadTile" : "loadTile";
                      it.actor = this.actor;
                      var Ee = {
                        type: this.type,
                        uid: it.uid,
                        tileID: it.tileID,
                        zoom: it.tileID.overscaledZ,
                        maxZoom: this.maxzoom,
                        tileSize: this.tileSize,
                        source: this.id,
                        pixelRatio: n.browser.devicePixelRatio,
                        showCollisionBoxes: this.map.showCollisionBoxes,
                        promoteId: this.promoteId
                      };
                      it.request = this.actor.send(le, Ee, function($e, vr) {
                        return delete it.request, it.unloadVectorData(), it.aborted ? _t(null) : $e ? _t($e) : (it.loadVectorData(vr, Yt.map.painter, le === "reloadTile"), _t(null));
                      });
                    }, tt.prototype.abortTile = function(it) {
                      it.request && (it.request.cancel(), delete it.request), it.aborted = !0;
                    }, tt.prototype.unloadTile = function(it) {
                      it.unloadVectorData(), this.actor.send("removeTile", {
                        uid: it.uid,
                        type: this.type,
                        source: this.id
                      });
                    }, tt.prototype.onRemove = function() {
                      this._removed = !0, this.actor.send("removeSource", {
                        type: this.type,
                        source: this.id
                      });
                    }, tt.prototype.serialize = function() {
                      return n.extend({}, this._options, {
                        type: this.type,
                        data: this._data
                      });
                    }, tt.prototype.hasTransition = function() {
                      return !1;
                    }, tt;
                  }(n.Evented), G = n.createLayout([
                    {
                      name: "a_pos",
                      type: "Int16",
                      components: 2
                    },
                    {
                      name: "a_texture_pos",
                      type: "Int16",
                      components: 2
                    }
                  ]), q = function(mt) {
                    function tt(bt, it, _t, Yt) {
                      mt.call(this), this.id = bt, this.dispatcher = _t, this.coordinates = it.coordinates, this.type = "image", this.minzoom = 0, this.maxzoom = 22, this.tileSize = 512, this.tiles = {}, this._loaded = !1, this.setEventedParent(Yt), this.options = it;
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.load = function(it, _t) {
                      var Yt = this;
                      this._loaded = !1, this.fire(new n.Event("dataloading", { dataType: "source" })), this.url = this.options.url, n.getImage(this.map._requestManager.transformRequest(this.url, n.ResourceType.Image), function(le, Ee) {
                        Yt._loaded = !0, le ? Yt.fire(new n.ErrorEvent(le)) : Ee && (Yt.image = Ee, it && (Yt.coordinates = it), _t && _t(), Yt._finishLoading());
                      });
                    }, tt.prototype.loaded = function() {
                      return this._loaded;
                    }, tt.prototype.updateImage = function(it) {
                      var _t = this;
                      return !this.image || !it.url ? this : (this.options.url = it.url, this.load(it.coordinates, function() {
                        _t.texture = null;
                      }), this);
                    }, tt.prototype._finishLoading = function() {
                      this.map && (this.setCoordinates(this.coordinates), this.fire(new n.Event("data", {
                        dataType: "source",
                        sourceDataType: "metadata"
                      })));
                    }, tt.prototype.onAdd = function(it) {
                      this.map = it, this.load();
                    }, tt.prototype.setCoordinates = function(it) {
                      var _t = this;
                      this.coordinates = it;
                      var Yt = it.map(n.MercatorCoordinate.fromLngLat);
                      this.tileID = rt(Yt), this.minzoom = this.maxzoom = this.tileID.z;
                      var le = Yt.map(function(Ee) {
                        return _t.tileID.getTilePoint(Ee)._round();
                      });
                      return this._boundsArray = new n.StructArrayLayout4i8(), this._boundsArray.emplaceBack(le[0].x, le[0].y, 0, 0), this._boundsArray.emplaceBack(le[1].x, le[1].y, n.EXTENT, 0), this._boundsArray.emplaceBack(le[3].x, le[3].y, 0, n.EXTENT), this._boundsArray.emplaceBack(le[2].x, le[2].y, n.EXTENT, n.EXTENT), this.boundsBuffer && (this.boundsBuffer.destroy(), delete this.boundsBuffer), this.fire(new n.Event("data", {
                        dataType: "source",
                        sourceDataType: "content"
                      })), this;
                    }, tt.prototype.prepare = function() {
                      if (!(Object.keys(this.tiles).length === 0 || !this.image)) {
                        var it = this.map.painter.context, _t = it.gl;
                        this.boundsBuffer || (this.boundsBuffer = it.createVertexBuffer(this._boundsArray, G.members)), this.boundsSegments || (this.boundsSegments = n.SegmentVector.simpleSegment(0, 0, 4, 2)), this.texture || (this.texture = new n.Texture(it, this.image, _t.RGBA), this.texture.bind(_t.LINEAR, _t.CLAMP_TO_EDGE));
                        for (var Yt in this.tiles) {
                          var le = this.tiles[Yt];
                          le.state !== "loaded" && (le.state = "loaded", le.texture = this.texture);
                        }
                      }
                    }, tt.prototype.loadTile = function(it, _t) {
                      this.tileID && this.tileID.equals(it.tileID.canonical) ? (this.tiles[String(it.tileID.wrap)] = it, it.buckets = {}, _t(null)) : (it.state = "errored", _t(null));
                    }, tt.prototype.serialize = function() {
                      return {
                        type: "image",
                        url: this.options.url,
                        coordinates: this.coordinates
                      };
                    }, tt.prototype.hasTransition = function() {
                      return !1;
                    }, tt;
                  }(n.Evented);
                  function rt(mt) {
                    for (var tt = 1 / 0, bt = 1 / 0, it = -1 / 0, _t = -1 / 0, Yt = 0, le = mt; Yt < le.length; Yt += 1) {
                      var Ee = le[Yt];
                      tt = Math.min(tt, Ee.x), bt = Math.min(bt, Ee.y), it = Math.max(it, Ee.x), _t = Math.max(_t, Ee.y);
                    }
                    var $e = it - tt, vr = _t - bt, Lr = Math.max($e, vr), Hr = Math.max(0, Math.floor(-Math.log(Lr) / Math.LN2)), Ur = Math.pow(2, Hr);
                    return new n.CanonicalTileID(Hr, Math.floor((tt + it) / 2 * Ur), Math.floor((bt + _t) / 2 * Ur));
                  }
                  var st = function(mt) {
                    function tt(bt, it, _t, Yt) {
                      mt.call(this, bt, it, _t, Yt), this.roundZoom = !0, this.type = "video", this.options = it;
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.load = function() {
                      var it = this;
                      this._loaded = !1;
                      var _t = this.options;
                      this.urls = [];
                      for (var Yt = 0, le = _t.urls; Yt < le.length; Yt += 1) {
                        var Ee = le[Yt];
                        this.urls.push(this.map._requestManager.transformRequest(Ee, n.ResourceType.Source).url);
                      }
                      n.getVideo(this.urls, function($e, vr) {
                        it._loaded = !0, $e ? it.fire(new n.ErrorEvent($e)) : vr && (it.video = vr, it.video.loop = !0, it.video.addEventListener("playing", function() {
                          it.map.triggerRepaint();
                        }), it.map && it.video.play(), it._finishLoading());
                      });
                    }, tt.prototype.pause = function() {
                      this.video && this.video.pause();
                    }, tt.prototype.play = function() {
                      this.video && this.video.play();
                    }, tt.prototype.seek = function(it) {
                      if (this.video) {
                        var _t = this.video.seekable;
                        it < _t.start(0) || it > _t.end(0) ? this.fire(new n.ErrorEvent(new n.ValidationError("sources." + this.id, null, "Playback for this video can be set only between the " + _t.start(0) + " and " + _t.end(0) + "-second mark."))) : this.video.currentTime = it;
                      }
                    }, tt.prototype.getVideo = function() {
                      return this.video;
                    }, tt.prototype.onAdd = function(it) {
                      this.map || (this.map = it, this.load(), this.video && (this.video.play(), this.setCoordinates(this.coordinates)));
                    }, tt.prototype.prepare = function() {
                      if (!(Object.keys(this.tiles).length === 0 || this.video.readyState < 2)) {
                        var it = this.map.painter.context, _t = it.gl;
                        this.boundsBuffer || (this.boundsBuffer = it.createVertexBuffer(this._boundsArray, G.members)), this.boundsSegments || (this.boundsSegments = n.SegmentVector.simpleSegment(0, 0, 4, 2)), this.texture ? this.video.paused || (this.texture.bind(_t.LINEAR, _t.CLAMP_TO_EDGE), _t.texSubImage2D(_t.TEXTURE_2D, 0, 0, 0, _t.RGBA, _t.UNSIGNED_BYTE, this.video)) : (this.texture = new n.Texture(it, this.video, _t.RGBA), this.texture.bind(_t.LINEAR, _t.CLAMP_TO_EDGE));
                        for (var Yt in this.tiles) {
                          var le = this.tiles[Yt];
                          le.state !== "loaded" && (le.state = "loaded", le.texture = this.texture);
                        }
                      }
                    }, tt.prototype.serialize = function() {
                      return {
                        type: "video",
                        urls: this.urls,
                        coordinates: this.coordinates
                      };
                    }, tt.prototype.hasTransition = function() {
                      return this.video && !this.video.paused;
                    }, tt;
                  }(q), vt = function(mt) {
                    function tt(bt, it, _t, Yt) {
                      mt.call(this, bt, it, _t, Yt), it.coordinates ? (!Array.isArray(it.coordinates) || it.coordinates.length !== 4 || it.coordinates.some(function(le) {
                        return !Array.isArray(le) || le.length !== 2 || le.some(function(Ee) {
                          return typeof Ee != "number";
                        });
                      })) && this.fire(new n.ErrorEvent(new n.ValidationError("sources." + bt, null, '"coordinates" property must be an array of 4 longitude/latitude array pairs'))) : this.fire(new n.ErrorEvent(new n.ValidationError("sources." + bt, null, 'missing required property "coordinates"'))), it.animate && typeof it.animate != "boolean" && this.fire(new n.ErrorEvent(new n.ValidationError("sources." + bt, null, 'optional "animate" property must be a boolean value'))), it.canvas ? typeof it.canvas != "string" && !(it.canvas instanceof n.window.HTMLCanvasElement) && this.fire(new n.ErrorEvent(new n.ValidationError("sources." + bt, null, '"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))) : this.fire(new n.ErrorEvent(new n.ValidationError("sources." + bt, null, 'missing required property "canvas"'))), this.options = it, this.animate = it.animate !== void 0 ? it.animate : !0;
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.load = function() {
                      if (this._loaded = !0, this.canvas || (this.canvas = this.options.canvas instanceof n.window.HTMLCanvasElement ? this.options.canvas : n.window.document.getElementById(this.options.canvas)), this.width = this.canvas.width, this.height = this.canvas.height, this._hasInvalidDimensions()) {
                        this.fire(new n.ErrorEvent(new Error("Canvas dimensions cannot be less than or equal to zero.")));
                        return;
                      }
                      this.play = function() {
                        this._playing = !0, this.map.triggerRepaint();
                      }, this.pause = function() {
                        this._playing && (this.prepare(), this._playing = !1);
                      }, this._finishLoading();
                    }, tt.prototype.getCanvas = function() {
                      return this.canvas;
                    }, tt.prototype.onAdd = function(it) {
                      this.map = it, this.load(), this.canvas && this.animate && this.play();
                    }, tt.prototype.onRemove = function() {
                      this.pause();
                    }, tt.prototype.prepare = function() {
                      var it = !1;
                      if (this.canvas.width !== this.width && (this.width = this.canvas.width, it = !0), this.canvas.height !== this.height && (this.height = this.canvas.height, it = !0), !this._hasInvalidDimensions() && Object.keys(this.tiles).length !== 0) {
                        var _t = this.map.painter.context, Yt = _t.gl;
                        this.boundsBuffer || (this.boundsBuffer = _t.createVertexBuffer(this._boundsArray, G.members)), this.boundsSegments || (this.boundsSegments = n.SegmentVector.simpleSegment(0, 0, 4, 2)), this.texture ? (it || this._playing) && this.texture.update(this.canvas, { premultiply: !0 }) : this.texture = new n.Texture(_t, this.canvas, Yt.RGBA, { premultiply: !0 });
                        for (var le in this.tiles) {
                          var Ee = this.tiles[le];
                          Ee.state !== "loaded" && (Ee.state = "loaded", Ee.texture = this.texture);
                        }
                      }
                    }, tt.prototype.serialize = function() {
                      return {
                        type: "canvas",
                        coordinates: this.coordinates
                      };
                    }, tt.prototype.hasTransition = function() {
                      return this._playing;
                    }, tt.prototype._hasInvalidDimensions = function() {
                      for (var it = 0, _t = [
                        this.canvas.width,
                        this.canvas.height
                      ]; it < _t.length; it += 1) {
                        var Yt = _t[it];
                        if (isNaN(Yt) || Yt <= 0)
                          return !0;
                      }
                      return !1;
                    }, tt;
                  }(q), ht = {
                    vector: V,
                    raster: U,
                    "raster-dem": H,
                    geojson: F,
                    video: st,
                    image: q,
                    canvas: vt
                  }, et = function(mt, tt, bt, it) {
                    var _t = new ht[tt.type](mt, tt, bt, it);
                    if (_t.id !== mt)
                      throw new Error("Expected Source id to be " + mt + " instead of " + _t.id);
                    return n.bindAll([
                      "load",
                      "abort",
                      "unload",
                      "serialize",
                      "prepare"
                    ], _t), _t;
                  }, Q = function(mt) {
                    return ht[mt];
                  }, j = function(mt, tt) {
                    ht[mt] = tt;
                  };
                  function at(mt, tt) {
                    var bt = n.identity([]);
                    return n.translate(bt, bt, [
                      1,
                      1,
                      0
                    ]), n.scale(bt, bt, [
                      mt.width * 0.5,
                      mt.height * 0.5,
                      1
                    ]), n.multiply(bt, bt, mt.calculatePosMatrix(tt.toUnwrapped()));
                  }
                  function ut(mt, tt, bt) {
                    if (mt)
                      for (var it = 0, _t = mt; it < _t.length; it += 1) {
                        var Yt = _t[it], le = tt[Yt];
                        if (le && le.source === bt && le.type === "fill-extrusion")
                          return !0;
                      }
                    else
                      for (var Ee in tt) {
                        var $e = tt[Ee];
                        if ($e.source === bt && $e.type === "fill-extrusion")
                          return !0;
                      }
                    return !1;
                  }
                  function nt(mt, tt, bt, it, _t, Yt) {
                    var le = ut(_t && _t.layers, tt, mt.id), Ee = Yt.maxPitchScaleFactor(), $e = mt.tilesIn(it, Ee, le);
                    $e.sort(lt);
                    for (var vr = [], Lr = 0, Hr = $e; Lr < Hr.length; Lr += 1) {
                      var Ur = Hr[Lr];
                      vr.push({
                        wrappedTileID: Ur.tileID.wrapped().key,
                        queryResults: Ur.tile.queryRenderedFeatures(tt, bt, mt._state, Ur.queryGeometry, Ur.cameraQueryGeometry, Ur.scale, _t, Yt, Ee, at(mt.transform, Ur.tileID))
                      });
                    }
                    var hn = pt(vr);
                    for (var En in hn)
                      hn[En].forEach(function(Mn) {
                        var _n = Mn.feature, In = mt.getFeatureState(_n.layer["source-layer"], _n.id);
                        _n.source = _n.layer.source, _n.layer["source-layer"] && (_n.sourceLayer = _n.layer["source-layer"]), _n.state = In;
                      });
                    return hn;
                  }
                  function X(mt, tt, bt, it, _t, Yt, le) {
                    for (var Ee = {}, $e = Yt.queryRenderedSymbols(it), vr = [], Lr = 0, Hr = Object.keys($e).map(Number); Lr < Hr.length; Lr += 1) {
                      var Ur = Hr[Lr];
                      vr.push(le[Ur]);
                    }
                    vr.sort(lt);
                    for (var hn = function() {
                      var Kn = Mn[En], xi = Kn.featureIndex.lookupSymbolFeatures($e[Kn.bucketInstanceId], tt, Kn.bucketIndex, Kn.sourceLayerIndex, _t.filter, _t.layers, _t.availableImages, mt);
                      for (var Ei in xi) {
                        var zi = Ee[Ei] = Ee[Ei] || [], Vi = xi[Ei];
                        Vi.sort(function(na, da) {
                          var la = Kn.featureSortOrder;
                          if (la) {
                            var Da = la.indexOf(na.featureIndex), wo = la.indexOf(da.featureIndex);
                            return wo - Da;
                          } else
                            return da.featureIndex - na.featureIndex;
                        });
                        for (var Di = 0, Hi = Vi; Di < Hi.length; Di += 1) {
                          var Ki = Hi[Di];
                          zi.push(Ki);
                        }
                      }
                    }, En = 0, Mn = vr; En < Mn.length; En += 1)
                      hn();
                    var _n = function(Kn) {
                      Ee[Kn].forEach(function(xi) {
                        var Ei = xi.feature, zi = mt[Kn], Vi = bt[zi.source], Di = Vi.getFeatureState(Ei.layer["source-layer"], Ei.id);
                        Ei.source = Ei.layer.source, Ei.layer["source-layer"] && (Ei.sourceLayer = Ei.layer["source-layer"]), Ei.state = Di;
                      });
                    };
                    for (var In in Ee)
                      _n(In);
                    return Ee;
                  }
                  function ct(mt, tt) {
                    for (var bt = mt.getRenderableIds().map(function($e) {
                      return mt.getTileByID($e);
                    }), it = [], _t = {}, Yt = 0; Yt < bt.length; Yt++) {
                      var le = bt[Yt], Ee = le.tileID.canonical.key;
                      _t[Ee] || (_t[Ee] = !0, le.querySourceFeatures(it, tt));
                    }
                    return it;
                  }
                  function lt(mt, tt) {
                    var bt = mt.tileID, it = tt.tileID;
                    return bt.overscaledZ - it.overscaledZ || bt.canonical.y - it.canonical.y || bt.wrap - it.wrap || bt.canonical.x - it.canonical.x;
                  }
                  function pt(mt) {
                    for (var tt = {}, bt = {}, it = 0, _t = mt; it < _t.length; it += 1) {
                      var Yt = _t[it], le = Yt.queryResults, Ee = Yt.wrappedTileID, $e = bt[Ee] = bt[Ee] || {};
                      for (var vr in le)
                        for (var Lr = le[vr], Hr = $e[vr] = $e[vr] || {}, Ur = tt[vr] = tt[vr] || [], hn = 0, En = Lr; hn < En.length; hn += 1) {
                          var Mn = En[hn];
                          Hr[Mn.featureIndex] || (Hr[Mn.featureIndex] = !0, Ur.push(Mn));
                        }
                    }
                    return tt;
                  }
                  var wt = function(tt, bt) {
                    this.max = tt, this.onRemove = bt, this.reset();
                  };
                  wt.prototype.reset = function() {
                    for (var tt in this.data)
                      for (var bt = 0, it = this.data[tt]; bt < it.length; bt += 1) {
                        var _t = it[bt];
                        _t.timeout && clearTimeout(_t.timeout), this.onRemove(_t.value);
                      }
                    return this.data = {}, this.order = [], this;
                  }, wt.prototype.add = function(tt, bt, it) {
                    var _t = this, Yt = tt.wrapped().key;
                    this.data[Yt] === void 0 && (this.data[Yt] = []);
                    var le = {
                      value: bt,
                      timeout: void 0
                    };
                    if (it !== void 0 && (le.timeout = setTimeout(function() {
                      _t.remove(tt, le);
                    }, it)), this.data[Yt].push(le), this.order.push(Yt), this.order.length > this.max) {
                      var Ee = this._getAndRemoveByKey(this.order[0]);
                      Ee && this.onRemove(Ee);
                    }
                    return this;
                  }, wt.prototype.has = function(tt) {
                    return tt.wrapped().key in this.data;
                  }, wt.prototype.getAndRemove = function(tt) {
                    return this.has(tt) ? this._getAndRemoveByKey(tt.wrapped().key) : null;
                  }, wt.prototype._getAndRemoveByKey = function(tt) {
                    var bt = this.data[tt].shift();
                    return bt.timeout && clearTimeout(bt.timeout), this.data[tt].length === 0 && delete this.data[tt], this.order.splice(this.order.indexOf(tt), 1), bt.value;
                  }, wt.prototype.getByKey = function(tt) {
                    var bt = this.data[tt];
                    return bt ? bt[0].value : null;
                  }, wt.prototype.get = function(tt) {
                    if (!this.has(tt))
                      return null;
                    var bt = this.data[tt.wrapped().key][0];
                    return bt.value;
                  }, wt.prototype.remove = function(tt, bt) {
                    if (!this.has(tt))
                      return this;
                    var it = tt.wrapped().key, _t = bt === void 0 ? 0 : this.data[it].indexOf(bt), Yt = this.data[it][_t];
                    return this.data[it].splice(_t, 1), Yt.timeout && clearTimeout(Yt.timeout), this.data[it].length === 0 && delete this.data[it], this.onRemove(Yt.value), this.order.splice(this.order.indexOf(it), 1), this;
                  }, wt.prototype.setMaxSize = function(tt) {
                    for (this.max = tt; this.order.length > this.max; ) {
                      var bt = this._getAndRemoveByKey(this.order[0]);
                      bt && this.onRemove(bt);
                    }
                    return this;
                  }, wt.prototype.filter = function(tt) {
                    var bt = [];
                    for (var it in this.data)
                      for (var _t = 0, Yt = this.data[it]; _t < Yt.length; _t += 1) {
                        var le = Yt[_t];
                        tt(le.value) || bt.push(le);
                      }
                    for (var Ee = 0, $e = bt; Ee < $e.length; Ee += 1) {
                      var vr = $e[Ee];
                      this.remove(vr.value.tileID, vr);
                    }
                  };
                  var Et = function(tt, bt, it) {
                    this.context = tt;
                    var _t = tt.gl;
                    this.buffer = _t.createBuffer(), this.dynamicDraw = !!it, this.context.unbindVAO(), tt.bindElementBuffer.set(this.buffer), _t.bufferData(_t.ELEMENT_ARRAY_BUFFER, bt.arrayBuffer, this.dynamicDraw ? _t.DYNAMIC_DRAW : _t.STATIC_DRAW), this.dynamicDraw || delete bt.arrayBuffer;
                  };
                  Et.prototype.bind = function() {
                    this.context.bindElementBuffer.set(this.buffer);
                  }, Et.prototype.updateData = function(tt) {
                    var bt = this.context.gl;
                    this.context.unbindVAO(), this.bind(), bt.bufferSubData(bt.ELEMENT_ARRAY_BUFFER, 0, tt.arrayBuffer);
                  }, Et.prototype.destroy = function() {
                    var tt = this.context.gl;
                    this.buffer && (tt.deleteBuffer(this.buffer), delete this.buffer);
                  };
                  var Ct = {
                    Int8: "BYTE",
                    Uint8: "UNSIGNED_BYTE",
                    Int16: "SHORT",
                    Uint16: "UNSIGNED_SHORT",
                    Int32: "INT",
                    Uint32: "UNSIGNED_INT",
                    Float32: "FLOAT"
                  }, Gt = function(tt, bt, it, _t) {
                    this.length = bt.length, this.attributes = it, this.itemSize = bt.bytesPerElement, this.dynamicDraw = _t, this.context = tt;
                    var Yt = tt.gl;
                    this.buffer = Yt.createBuffer(), tt.bindVertexBuffer.set(this.buffer), Yt.bufferData(Yt.ARRAY_BUFFER, bt.arrayBuffer, this.dynamicDraw ? Yt.DYNAMIC_DRAW : Yt.STATIC_DRAW), this.dynamicDraw || delete bt.arrayBuffer;
                  };
                  Gt.prototype.bind = function() {
                    this.context.bindVertexBuffer.set(this.buffer);
                  }, Gt.prototype.updateData = function(tt) {
                    var bt = this.context.gl;
                    this.bind(), bt.bufferSubData(bt.ARRAY_BUFFER, 0, tt.arrayBuffer);
                  }, Gt.prototype.enableAttributes = function(tt, bt) {
                    for (var it = 0; it < this.attributes.length; it++) {
                      var _t = this.attributes[it], Yt = bt.attributes[_t.name];
                      Yt !== void 0 && tt.enableVertexAttribArray(Yt);
                    }
                  }, Gt.prototype.setVertexAttribPointers = function(tt, bt, it) {
                    for (var _t = 0; _t < this.attributes.length; _t++) {
                      var Yt = this.attributes[_t], le = bt.attributes[Yt.name];
                      le !== void 0 && tt.vertexAttribPointer(le, Yt.components, tt[Ct[Yt.type]], !1, this.itemSize, Yt.offset + this.itemSize * (it || 0));
                    }
                  }, Gt.prototype.destroy = function() {
                    var tt = this.context.gl;
                    this.buffer && (tt.deleteBuffer(this.buffer), delete this.buffer);
                  };
                  var Jt = function(tt) {
                    this.gl = tt.gl, this.default = this.getDefault(), this.current = this.default, this.dirty = !1;
                  };
                  Jt.prototype.get = function() {
                    return this.current;
                  }, Jt.prototype.set = function(tt) {
                  }, Jt.prototype.getDefault = function() {
                    return this.default;
                  }, Jt.prototype.setDefault = function() {
                    this.set(this.default);
                  };
                  var Qt = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return n.Color.transparent;
                    }, tt.prototype.set = function(it) {
                      var _t = this.current;
                      it.r === _t.r && it.g === _t.g && it.b === _t.b && it.a === _t.a && !this.dirty || (this.gl.clearColor(it.r, it.g, it.b, it.a), this.current = it, this.dirty = !1);
                    }, tt;
                  }(Jt), Vt = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return 1;
                    }, tt.prototype.set = function(it) {
                      it === this.current && !this.dirty || (this.gl.clearDepth(it), this.current = it, this.dirty = !1);
                    }, tt;
                  }(Jt), zt = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return 0;
                    }, tt.prototype.set = function(it) {
                      it === this.current && !this.dirty || (this.gl.clearStencil(it), this.current = it, this.dirty = !1);
                    }, tt;
                  }(Jt), Rt = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return [
                        !0,
                        !0,
                        !0,
                        !0
                      ];
                    }, tt.prototype.set = function(it) {
                      var _t = this.current;
                      it[0] === _t[0] && it[1] === _t[1] && it[2] === _t[2] && it[3] === _t[3] && !this.dirty || (this.gl.colorMask(it[0], it[1], it[2], it[3]), this.current = it, this.dirty = !1);
                    }, tt;
                  }(Jt), Wt = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return !0;
                    }, tt.prototype.set = function(it) {
                      it === this.current && !this.dirty || (this.gl.depthMask(it), this.current = it, this.dirty = !1);
                    }, tt;
                  }(Jt), kt = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return 255;
                    }, tt.prototype.set = function(it) {
                      it === this.current && !this.dirty || (this.gl.stencilMask(it), this.current = it, this.dirty = !1);
                    }, tt;
                  }(Jt), re = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return {
                        func: this.gl.ALWAYS,
                        ref: 0,
                        mask: 255
                      };
                    }, tt.prototype.set = function(it) {
                      var _t = this.current;
                      it.func === _t.func && it.ref === _t.ref && it.mask === _t.mask && !this.dirty || (this.gl.stencilFunc(it.func, it.ref, it.mask), this.current = it, this.dirty = !1);
                    }, tt;
                  }(Jt), ge = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      var it = this.gl;
                      return [
                        it.KEEP,
                        it.KEEP,
                        it.KEEP
                      ];
                    }, tt.prototype.set = function(it) {
                      var _t = this.current;
                      it[0] === _t[0] && it[1] === _t[1] && it[2] === _t[2] && !this.dirty || (this.gl.stencilOp(it[0], it[1], it[2]), this.current = it, this.dirty = !1);
                    }, tt;
                  }(Jt), _e = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return !1;
                    }, tt.prototype.set = function(it) {
                      if (!(it === this.current && !this.dirty)) {
                        var _t = this.gl;
                        it ? _t.enable(_t.STENCIL_TEST) : _t.disable(_t.STENCIL_TEST), this.current = it, this.dirty = !1;
                      }
                    }, tt;
                  }(Jt), ce = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return [
                        0,
                        1
                      ];
                    }, tt.prototype.set = function(it) {
                      var _t = this.current;
                      it[0] === _t[0] && it[1] === _t[1] && !this.dirty || (this.gl.depthRange(it[0], it[1]), this.current = it, this.dirty = !1);
                    }, tt;
                  }(Jt), ae = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return !1;
                    }, tt.prototype.set = function(it) {
                      if (!(it === this.current && !this.dirty)) {
                        var _t = this.gl;
                        it ? _t.enable(_t.DEPTH_TEST) : _t.disable(_t.DEPTH_TEST), this.current = it, this.dirty = !1;
                      }
                    }, tt;
                  }(Jt), Se = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return this.gl.LESS;
                    }, tt.prototype.set = function(it) {
                      it === this.current && !this.dirty || (this.gl.depthFunc(it), this.current = it, this.dirty = !1);
                    }, tt;
                  }(Jt), ze = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return !1;
                    }, tt.prototype.set = function(it) {
                      if (!(it === this.current && !this.dirty)) {
                        var _t = this.gl;
                        it ? _t.enable(_t.BLEND) : _t.disable(_t.BLEND), this.current = it, this.dirty = !1;
                      }
                    }, tt;
                  }(Jt), Ne = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      var it = this.gl;
                      return [
                        it.ONE,
                        it.ZERO
                      ];
                    }, tt.prototype.set = function(it) {
                      var _t = this.current;
                      it[0] === _t[0] && it[1] === _t[1] && !this.dirty || (this.gl.blendFunc(it[0], it[1]), this.current = it, this.dirty = !1);
                    }, tt;
                  }(Jt), Ve = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return n.Color.transparent;
                    }, tt.prototype.set = function(it) {
                      var _t = this.current;
                      it.r === _t.r && it.g === _t.g && it.b === _t.b && it.a === _t.a && !this.dirty || (this.gl.blendColor(it.r, it.g, it.b, it.a), this.current = it, this.dirty = !1);
                    }, tt;
                  }(Jt), Oe = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return this.gl.FUNC_ADD;
                    }, tt.prototype.set = function(it) {
                      it === this.current && !this.dirty || (this.gl.blendEquation(it), this.current = it, this.dirty = !1);
                    }, tt;
                  }(Jt), ur = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return !1;
                    }, tt.prototype.set = function(it) {
                      if (!(it === this.current && !this.dirty)) {
                        var _t = this.gl;
                        it ? _t.enable(_t.CULL_FACE) : _t.disable(_t.CULL_FACE), this.current = it, this.dirty = !1;
                      }
                    }, tt;
                  }(Jt), ie = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return this.gl.BACK;
                    }, tt.prototype.set = function(it) {
                      it === this.current && !this.dirty || (this.gl.cullFace(it), this.current = it, this.dirty = !1);
                    }, tt;
                  }(Jt), $t = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return this.gl.CCW;
                    }, tt.prototype.set = function(it) {
                      it === this.current && !this.dirty || (this.gl.frontFace(it), this.current = it, this.dirty = !1);
                    }, tt;
                  }(Jt), jt = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return null;
                    }, tt.prototype.set = function(it) {
                      it === this.current && !this.dirty || (this.gl.useProgram(it), this.current = it, this.dirty = !1);
                    }, tt;
                  }(Jt), ee = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return this.gl.TEXTURE0;
                    }, tt.prototype.set = function(it) {
                      it === this.current && !this.dirty || (this.gl.activeTexture(it), this.current = it, this.dirty = !1);
                    }, tt;
                  }(Jt), Bt = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      var it = this.gl;
                      return [
                        0,
                        0,
                        it.drawingBufferWidth,
                        it.drawingBufferHeight
                      ];
                    }, tt.prototype.set = function(it) {
                      var _t = this.current;
                      it[0] === _t[0] && it[1] === _t[1] && it[2] === _t[2] && it[3] === _t[3] && !this.dirty || (this.gl.viewport(it[0], it[1], it[2], it[3]), this.current = it, this.dirty = !1);
                    }, tt;
                  }(Jt), Xt = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return null;
                    }, tt.prototype.set = function(it) {
                      if (!(it === this.current && !this.dirty)) {
                        var _t = this.gl;
                        _t.bindFramebuffer(_t.FRAMEBUFFER, it), this.current = it, this.dirty = !1;
                      }
                    }, tt;
                  }(Jt), Zt = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return null;
                    }, tt.prototype.set = function(it) {
                      if (!(it === this.current && !this.dirty)) {
                        var _t = this.gl;
                        _t.bindRenderbuffer(_t.RENDERBUFFER, it), this.current = it, this.dirty = !1;
                      }
                    }, tt;
                  }(Jt), ye = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return null;
                    }, tt.prototype.set = function(it) {
                      if (!(it === this.current && !this.dirty)) {
                        var _t = this.gl;
                        _t.bindTexture(_t.TEXTURE_2D, it), this.current = it, this.dirty = !1;
                      }
                    }, tt;
                  }(Jt), Mt = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return null;
                    }, tt.prototype.set = function(it) {
                      if (!(it === this.current && !this.dirty)) {
                        var _t = this.gl;
                        _t.bindBuffer(_t.ARRAY_BUFFER, it), this.current = it, this.dirty = !1;
                      }
                    }, tt;
                  }(Jt), St = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return null;
                    }, tt.prototype.set = function(it) {
                      var _t = this.gl;
                      _t.bindBuffer(_t.ELEMENT_ARRAY_BUFFER, it), this.current = it, this.dirty = !1;
                    }, tt;
                  }(Jt), Lt = function(mt) {
                    function tt(bt) {
                      mt.call(this, bt), this.vao = bt.extVertexArrayObject;
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return null;
                    }, tt.prototype.set = function(it) {
                      !this.vao || it === this.current && !this.dirty || (this.vao.bindVertexArrayOES(it), this.current = it, this.dirty = !1);
                    }, tt;
                  }(Jt), te = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return 4;
                    }, tt.prototype.set = function(it) {
                      if (!(it === this.current && !this.dirty)) {
                        var _t = this.gl;
                        _t.pixelStorei(_t.UNPACK_ALIGNMENT, it), this.current = it, this.dirty = !1;
                      }
                    }, tt;
                  }(Jt), fe = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return !1;
                    }, tt.prototype.set = function(it) {
                      if (!(it === this.current && !this.dirty)) {
                        var _t = this.gl;
                        _t.pixelStorei(_t.UNPACK_PREMULTIPLY_ALPHA_WEBGL, it), this.current = it, this.dirty = !1;
                      }
                    }, tt;
                  }(Jt), Me = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return !1;
                    }, tt.prototype.set = function(it) {
                      if (!(it === this.current && !this.dirty)) {
                        var _t = this.gl;
                        _t.pixelStorei(_t.UNPACK_FLIP_Y_WEBGL, it), this.current = it, this.dirty = !1;
                      }
                    }, tt;
                  }(Jt), ir = function(mt) {
                    function tt(bt, it) {
                      mt.call(this, bt), this.context = bt, this.parent = it;
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getDefault = function() {
                      return null;
                    }, tt;
                  }(Jt), mr = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.setDirty = function() {
                      this.dirty = !0;
                    }, tt.prototype.set = function(it) {
                      if (!(it === this.current && !this.dirty)) {
                        this.context.bindFramebuffer.set(this.parent);
                        var _t = this.gl;
                        _t.framebufferTexture2D(_t.FRAMEBUFFER, _t.COLOR_ATTACHMENT0, _t.TEXTURE_2D, it, 0), this.current = it, this.dirty = !1;
                      }
                    }, tt;
                  }(ir), Xe = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.set = function(it) {
                      if (!(it === this.current && !this.dirty)) {
                        this.context.bindFramebuffer.set(this.parent);
                        var _t = this.gl;
                        _t.framebufferRenderbuffer(_t.FRAMEBUFFER, _t.DEPTH_ATTACHMENT, _t.RENDERBUFFER, it), this.current = it, this.dirty = !1;
                      }
                    }, tt;
                  }(ir), xe = function(tt, bt, it, _t) {
                    this.context = tt, this.width = bt, this.height = it;
                    var Yt = tt.gl, le = this.framebuffer = Yt.createFramebuffer();
                    this.colorAttachment = new mr(tt, le), _t && (this.depthAttachment = new Xe(tt, le));
                  };
                  xe.prototype.destroy = function() {
                    var tt = this.context.gl, bt = this.colorAttachment.get();
                    if (bt && tt.deleteTexture(bt), this.depthAttachment) {
                      var it = this.depthAttachment.get();
                      it && tt.deleteRenderbuffer(it);
                    }
                    tt.deleteFramebuffer(this.framebuffer);
                  };
                  var me = 519, Le = function(tt, bt, it) {
                    this.func = tt, this.mask = bt, this.range = it;
                  };
                  Le.ReadOnly = !1, Le.ReadWrite = !0, Le.disabled = new Le(me, Le.ReadOnly, [
                    0,
                    1
                  ]);
                  var qt = 519, De = 7680, Je = function(tt, bt, it, _t, Yt, le) {
                    this.test = tt, this.ref = bt, this.mask = it, this.fail = _t, this.depthFail = Yt, this.pass = le;
                  };
                  Je.disabled = new Je({
                    func: qt,
                    mask: 0
                  }, 0, 0, De, De, De);
                  var dr = 0, qe = 1, we = 771, ue = function(tt, bt, it) {
                    this.blendFunction = tt, this.blendColor = bt, this.mask = it;
                  };
                  ue.Replace = [
                    qe,
                    dr
                  ], ue.disabled = new ue(ue.Replace, n.Color.transparent, [
                    !1,
                    !1,
                    !1,
                    !1
                  ]), ue.unblended = new ue(ue.Replace, n.Color.transparent, [
                    !0,
                    !0,
                    !0,
                    !0
                  ]), ue.alphaBlended = new ue([
                    qe,
                    we
                  ], n.Color.transparent, [
                    !0,
                    !0,
                    !0,
                    !0
                  ]);
                  var Pe = 1029, Ue = 2305, Ye = function(tt, bt, it) {
                    this.enable = tt, this.mode = bt, this.frontFace = it;
                  };
                  Ye.disabled = new Ye(!1, Pe, Ue), Ye.backCCW = new Ye(!0, Pe, Ue);
                  var rr = function(tt) {
                    this.gl = tt, this.extVertexArrayObject = this.gl.getExtension("OES_vertex_array_object"), this.clearColor = new Qt(this), this.clearDepth = new Vt(this), this.clearStencil = new zt(this), this.colorMask = new Rt(this), this.depthMask = new Wt(this), this.stencilMask = new kt(this), this.stencilFunc = new re(this), this.stencilOp = new ge(this), this.stencilTest = new _e(this), this.depthRange = new ce(this), this.depthTest = new ae(this), this.depthFunc = new Se(this), this.blend = new ze(this), this.blendFunc = new Ne(this), this.blendColor = new Ve(this), this.blendEquation = new Oe(this), this.cullFace = new ur(this), this.cullFaceSide = new ie(this), this.frontFace = new $t(this), this.program = new jt(this), this.activeTexture = new ee(this), this.viewport = new Bt(this), this.bindFramebuffer = new Xt(this), this.bindRenderbuffer = new Zt(this), this.bindTexture = new ye(this), this.bindVertexBuffer = new Mt(this), this.bindElementBuffer = new St(this), this.bindVertexArrayOES = this.extVertexArrayObject && new Lt(this), this.pixelStoreUnpack = new te(this), this.pixelStoreUnpackPremultiplyAlpha = new fe(this), this.pixelStoreUnpackFlipY = new Me(this), this.extTextureFilterAnisotropic = tt.getExtension("EXT_texture_filter_anisotropic") || tt.getExtension("MOZ_EXT_texture_filter_anisotropic") || tt.getExtension("WEBKIT_EXT_texture_filter_anisotropic"), this.extTextureFilterAnisotropic && (this.extTextureFilterAnisotropicMax = tt.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT)), this.extTextureHalfFloat = tt.getExtension("OES_texture_half_float"), this.extTextureHalfFloat && (tt.getExtension("OES_texture_half_float_linear"), this.extRenderToTextureHalfFloat = tt.getExtension("EXT_color_buffer_half_float")), this.extTimerQuery = tt.getExtension("EXT_disjoint_timer_query"), this.maxTextureSize = tt.getParameter(tt.MAX_TEXTURE_SIZE);
                  };
                  rr.prototype.setDefault = function() {
                    this.unbindVAO(), this.clearColor.setDefault(), this.clearDepth.setDefault(), this.clearStencil.setDefault(), this.colorMask.setDefault(), this.depthMask.setDefault(), this.stencilMask.setDefault(), this.stencilFunc.setDefault(), this.stencilOp.setDefault(), this.stencilTest.setDefault(), this.depthRange.setDefault(), this.depthTest.setDefault(), this.depthFunc.setDefault(), this.blend.setDefault(), this.blendFunc.setDefault(), this.blendColor.setDefault(), this.blendEquation.setDefault(), this.cullFace.setDefault(), this.cullFaceSide.setDefault(), this.frontFace.setDefault(), this.program.setDefault(), this.activeTexture.setDefault(), this.bindFramebuffer.setDefault(), this.pixelStoreUnpack.setDefault(), this.pixelStoreUnpackPremultiplyAlpha.setDefault(), this.pixelStoreUnpackFlipY.setDefault();
                  }, rr.prototype.setDirty = function() {
                    this.clearColor.dirty = !0, this.clearDepth.dirty = !0, this.clearStencil.dirty = !0, this.colorMask.dirty = !0, this.depthMask.dirty = !0, this.stencilMask.dirty = !0, this.stencilFunc.dirty = !0, this.stencilOp.dirty = !0, this.stencilTest.dirty = !0, this.depthRange.dirty = !0, this.depthTest.dirty = !0, this.depthFunc.dirty = !0, this.blend.dirty = !0, this.blendFunc.dirty = !0, this.blendColor.dirty = !0, this.blendEquation.dirty = !0, this.cullFace.dirty = !0, this.cullFaceSide.dirty = !0, this.frontFace.dirty = !0, this.program.dirty = !0, this.activeTexture.dirty = !0, this.viewport.dirty = !0, this.bindFramebuffer.dirty = !0, this.bindRenderbuffer.dirty = !0, this.bindTexture.dirty = !0, this.bindVertexBuffer.dirty = !0, this.bindElementBuffer.dirty = !0, this.extVertexArrayObject && (this.bindVertexArrayOES.dirty = !0), this.pixelStoreUnpack.dirty = !0, this.pixelStoreUnpackPremultiplyAlpha.dirty = !0, this.pixelStoreUnpackFlipY.dirty = !0;
                  }, rr.prototype.createIndexBuffer = function(tt, bt) {
                    return new Et(this, tt, bt);
                  }, rr.prototype.createVertexBuffer = function(tt, bt, it) {
                    return new Gt(this, tt, bt, it);
                  }, rr.prototype.createRenderbuffer = function(tt, bt, it) {
                    var _t = this.gl, Yt = _t.createRenderbuffer();
                    return this.bindRenderbuffer.set(Yt), _t.renderbufferStorage(_t.RENDERBUFFER, tt, bt, it), this.bindRenderbuffer.set(null), Yt;
                  }, rr.prototype.createFramebuffer = function(tt, bt, it) {
                    return new xe(this, tt, bt, it);
                  }, rr.prototype.clear = function(tt) {
                    var bt = tt.color, it = tt.depth, _t = this.gl, Yt = 0;
                    bt && (Yt |= _t.COLOR_BUFFER_BIT, this.clearColor.set(bt), this.colorMask.set([
                      !0,
                      !0,
                      !0,
                      !0
                    ])), typeof it < "u" && (Yt |= _t.DEPTH_BUFFER_BIT, this.depthRange.set([
                      0,
                      1
                    ]), this.clearDepth.set(it), this.depthMask.set(!0)), _t.clear(Yt);
                  }, rr.prototype.setCullFace = function(tt) {
                    tt.enable === !1 ? this.cullFace.set(!1) : (this.cullFace.set(!0), this.cullFaceSide.set(tt.mode), this.frontFace.set(tt.frontFace));
                  }, rr.prototype.setDepthMode = function(tt) {
                    tt.func === this.gl.ALWAYS && !tt.mask ? this.depthTest.set(!1) : (this.depthTest.set(!0), this.depthFunc.set(tt.func), this.depthMask.set(tt.mask), this.depthRange.set(tt.range));
                  }, rr.prototype.setStencilMode = function(tt) {
                    tt.test.func === this.gl.ALWAYS && !tt.mask ? this.stencilTest.set(!1) : (this.stencilTest.set(!0), this.stencilMask.set(tt.mask), this.stencilOp.set([
                      tt.fail,
                      tt.depthFail,
                      tt.pass
                    ]), this.stencilFunc.set({
                      func: tt.test.func,
                      ref: tt.ref,
                      mask: tt.test.mask
                    }));
                  }, rr.prototype.setColorMode = function(tt) {
                    n.deepEqual(tt.blendFunction, ue.Replace) ? this.blend.set(!1) : (this.blend.set(!0), this.blendFunc.set(tt.blendFunction), this.blendColor.set(tt.blendColor)), this.colorMask.set(tt.mask);
                  }, rr.prototype.unbindVAO = function() {
                    this.extVertexArrayObject && this.bindVertexArrayOES.set(null);
                  };
                  var lr = function(mt) {
                    function tt(bt, it, _t) {
                      var Yt = this;
                      mt.call(this), this.id = bt, this.dispatcher = _t, this.on("data", function(le) {
                        le.dataType === "source" && le.sourceDataType === "metadata" && (Yt._sourceLoaded = !0), Yt._sourceLoaded && !Yt._paused && le.dataType === "source" && le.sourceDataType === "content" && (Yt.reload(), Yt.transform && Yt.update(Yt.transform));
                      }), this.on("error", function() {
                        Yt._sourceErrored = !0;
                      }), this._source = et(bt, it, _t, this), this._tiles = {}, this._cache = new wt(0, this._unloadTile.bind(this)), this._timers = {}, this._cacheTimers = {}, this._maxTileCacheSize = null, this._loadedParentTiles = {}, this._coveredTiles = {}, this._state = new n.SourceFeatureState();
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.onAdd = function(it) {
                      this.map = it, this._maxTileCacheSize = it ? it._maxTileCacheSize : null, this._source && this._source.onAdd && this._source.onAdd(it);
                    }, tt.prototype.onRemove = function(it) {
                      this._source && this._source.onRemove && this._source.onRemove(it);
                    }, tt.prototype.loaded = function() {
                      if (this._sourceErrored)
                        return !0;
                      if (!this._sourceLoaded || !this._source.loaded())
                        return !1;
                      for (var it in this._tiles) {
                        var _t = this._tiles[it];
                        if (_t.state !== "loaded" && _t.state !== "errored")
                          return !1;
                      }
                      return !0;
                    }, tt.prototype.getSource = function() {
                      return this._source;
                    }, tt.prototype.pause = function() {
                      this._paused = !0;
                    }, tt.prototype.resume = function() {
                      if (this._paused) {
                        var it = this._shouldReloadOnResume;
                        this._paused = !1, this._shouldReloadOnResume = !1, it && this.reload(), this.transform && this.update(this.transform);
                      }
                    }, tt.prototype._loadTile = function(it, _t) {
                      return this._source.loadTile(it, _t);
                    }, tt.prototype._unloadTile = function(it) {
                      if (this._source.unloadTile)
                        return this._source.unloadTile(it, function() {
                        });
                    }, tt.prototype._abortTile = function(it) {
                      if (this._source.abortTile)
                        return this._source.abortTile(it, function() {
                        });
                    }, tt.prototype.serialize = function() {
                      return this._source.serialize();
                    }, tt.prototype.prepare = function(it) {
                      this._source.prepare && this._source.prepare(), this._state.coalesceChanges(this._tiles, this.map ? this.map.painter : null);
                      for (var _t in this._tiles) {
                        var Yt = this._tiles[_t];
                        Yt.upload(it), Yt.prepare(this.map.style.imageManager);
                      }
                    }, tt.prototype.getIds = function() {
                      return n.values(this._tiles).map(function(it) {
                        return it.tileID;
                      }).sort(hr).map(function(it) {
                        return it.key;
                      });
                    }, tt.prototype.getRenderableIds = function(it) {
                      var _t = this, Yt = [];
                      for (var le in this._tiles)
                        this._isIdRenderable(le, it) && Yt.push(this._tiles[le]);
                      return it ? Yt.sort(function(Ee, $e) {
                        var vr = Ee.tileID, Lr = $e.tileID, Hr = new n.Point(vr.canonical.x, vr.canonical.y)._rotate(_t.transform.angle), Ur = new n.Point(Lr.canonical.x, Lr.canonical.y)._rotate(_t.transform.angle);
                        return vr.overscaledZ - Lr.overscaledZ || Ur.y - Hr.y || Ur.x - Hr.x;
                      }).map(function(Ee) {
                        return Ee.tileID.key;
                      }) : Yt.map(function(Ee) {
                        return Ee.tileID;
                      }).sort(hr).map(function(Ee) {
                        return Ee.key;
                      });
                    }, tt.prototype.hasRenderableParent = function(it) {
                      var _t = this.findLoadedParent(it, 0);
                      return _t ? this._isIdRenderable(_t.tileID.key) : !1;
                    }, tt.prototype._isIdRenderable = function(it, _t) {
                      return this._tiles[it] && this._tiles[it].hasData() && !this._coveredTiles[it] && (_t || !this._tiles[it].holdingForFade());
                    }, tt.prototype.reload = function() {
                      if (this._paused) {
                        this._shouldReloadOnResume = !0;
                        return;
                      }
                      this._cache.reset();
                      for (var it in this._tiles)
                        this._tiles[it].state !== "errored" && this._reloadTile(it, "reloading");
                    }, tt.prototype._reloadTile = function(it, _t) {
                      var Yt = this._tiles[it];
                      Yt && (Yt.state !== "loading" && (Yt.state = _t), this._loadTile(Yt, this._tileLoaded.bind(this, Yt, it, _t)));
                    }, tt.prototype._tileLoaded = function(it, _t, Yt, le) {
                      if (le) {
                        it.state = "errored", le.status !== 404 ? this._source.fire(new n.ErrorEvent(le, { tile: it })) : this.update(this.transform);
                        return;
                      }
                      it.timeAdded = n.browser.now(), Yt === "expired" && (it.refreshedUponExpiration = !0), this._setTileReloadTimer(_t, it), this.getSource().type === "raster-dem" && it.dem && this._backfillDEM(it), this._state.initializeTileState(it, this.map ? this.map.painter : null), this._source.fire(new n.Event("data", {
                        dataType: "source",
                        tile: it,
                        coord: it.tileID
                      }));
                    }, tt.prototype._backfillDEM = function(it) {
                      for (var _t = this.getRenderableIds(), Yt = 0; Yt < _t.length; Yt++) {
                        var le = _t[Yt];
                        if (it.neighboringTiles && it.neighboringTiles[le]) {
                          var Ee = this.getTileByID(le);
                          $e(it, Ee), $e(Ee, it);
                        }
                      }
                      function $e(vr, Lr) {
                        vr.needsHillshadePrepare = !0;
                        var Hr = Lr.tileID.canonical.x - vr.tileID.canonical.x, Ur = Lr.tileID.canonical.y - vr.tileID.canonical.y, hn = Math.pow(2, vr.tileID.canonical.z), En = Lr.tileID.key;
                        Hr === 0 && Ur === 0 || Math.abs(Ur) > 1 || (Math.abs(Hr) > 1 && (Math.abs(Hr + hn) === 1 ? Hr += hn : Math.abs(Hr - hn) === 1 && (Hr -= hn)), !(!Lr.dem || !vr.dem) && (vr.dem.backfillBorder(Lr.dem, Hr, Ur), vr.neighboringTiles && vr.neighboringTiles[En] && (vr.neighboringTiles[En].backfilled = !0)));
                      }
                    }, tt.prototype.getTile = function(it) {
                      return this.getTileByID(it.key);
                    }, tt.prototype.getTileByID = function(it) {
                      return this._tiles[it];
                    }, tt.prototype._retainLoadedChildren = function(it, _t, Yt, le) {
                      for (var Ee in this._tiles) {
                        var $e = this._tiles[Ee];
                        if (!(le[Ee] || !$e.hasData() || $e.tileID.overscaledZ <= _t || $e.tileID.overscaledZ > Yt)) {
                          for (var vr = $e.tileID; $e && $e.tileID.overscaledZ > _t + 1; ) {
                            var Lr = $e.tileID.scaledTo($e.tileID.overscaledZ - 1);
                            $e = this._tiles[Lr.key], $e && $e.hasData() && (vr = Lr);
                          }
                          for (var Hr = vr; Hr.overscaledZ > _t; )
                            if (Hr = Hr.scaledTo(Hr.overscaledZ - 1), it[Hr.key]) {
                              le[vr.key] = vr;
                              break;
                            }
                        }
                      }
                    }, tt.prototype.findLoadedParent = function(it, _t) {
                      if (it.key in this._loadedParentTiles) {
                        var Yt = this._loadedParentTiles[it.key];
                        return Yt && Yt.tileID.overscaledZ >= _t ? Yt : null;
                      }
                      for (var le = it.overscaledZ - 1; le >= _t; le--) {
                        var Ee = it.scaledTo(le), $e = this._getLoadedTile(Ee);
                        if ($e)
                          return $e;
                      }
                    }, tt.prototype._getLoadedTile = function(it) {
                      var _t = this._tiles[it.key];
                      if (_t && _t.hasData())
                        return _t;
                      var Yt = this._cache.getByKey(it.wrapped().key);
                      return Yt;
                    }, tt.prototype.updateCacheSize = function(it) {
                      var _t = Math.ceil(it.width / this._source.tileSize) + 1, Yt = Math.ceil(it.height / this._source.tileSize) + 1, le = _t * Yt, Ee = 5, $e = Math.floor(le * Ee), vr = typeof this._maxTileCacheSize == "number" ? Math.min(this._maxTileCacheSize, $e) : $e;
                      this._cache.setMaxSize(vr);
                    }, tt.prototype.handleWrapJump = function(it) {
                      var _t = this._prevLng === void 0 ? it : this._prevLng, Yt = it - _t, le = Yt / 360, Ee = Math.round(le);
                      if (this._prevLng = it, Ee) {
                        var $e = {};
                        for (var vr in this._tiles) {
                          var Lr = this._tiles[vr];
                          Lr.tileID = Lr.tileID.unwrapTo(Lr.tileID.wrap + Ee), $e[Lr.tileID.key] = Lr;
                        }
                        this._tiles = $e;
                        for (var Hr in this._timers)
                          clearTimeout(this._timers[Hr]), delete this._timers[Hr];
                        for (var Ur in this._tiles) {
                          var hn = this._tiles[Ur];
                          this._setTileReloadTimer(Ur, hn);
                        }
                      }
                    }, tt.prototype.update = function(it) {
                      var _t = this;
                      if (this.transform = it, !(!this._sourceLoaded || this._paused)) {
                        this.updateCacheSize(it), this.handleWrapJump(this.transform.center.lng), this._coveredTiles = {};
                        var Yt;
                        this.used ? this._source.tileID ? Yt = it.getVisibleUnwrappedCoordinates(this._source.tileID).map(function(na) {
                          return new n.OverscaledTileID(na.canonical.z, na.wrap, na.canonical.z, na.canonical.x, na.canonical.y);
                        }) : (Yt = it.coveringTiles({
                          tileSize: this._source.tileSize,
                          minzoom: this._source.minzoom,
                          maxzoom: this._source.maxzoom,
                          roundZoom: this._source.roundZoom,
                          reparseOverscaled: this._source.reparseOverscaled
                        }), this._source.hasTile && (Yt = Yt.filter(function(na) {
                          return _t._source.hasTile(na);
                        }))) : Yt = [];
                        var le = it.coveringZoomLevel(this._source), Ee = Math.max(le - tt.maxOverzooming, this._source.minzoom), $e = Math.max(le + tt.maxUnderzooming, this._source.minzoom), vr = this._updateRetainedTiles(Yt, le);
                        if (Sr(this._source.type)) {
                          for (var Lr = {}, Hr = {}, Ur = Object.keys(vr), hn = 0, En = Ur; hn < En.length; hn += 1) {
                            var Mn = En[hn], _n = vr[Mn], In = this._tiles[Mn];
                            if (!(!In || In.fadeEndTime && In.fadeEndTime <= n.browser.now())) {
                              var Kn = this.findLoadedParent(_n, Ee);
                              Kn && (this._addTile(Kn.tileID), Lr[Kn.tileID.key] = Kn.tileID), Hr[Mn] = _n;
                            }
                          }
                          this._retainLoadedChildren(Hr, le, $e, vr);
                          for (var xi in Lr)
                            vr[xi] || (this._coveredTiles[xi] = !0, vr[xi] = Lr[xi]);
                        }
                        for (var Ei in vr)
                          this._tiles[Ei].clearFadeHold();
                        for (var zi = n.keysDifference(this._tiles, vr), Vi = 0, Di = zi; Vi < Di.length; Vi += 1) {
                          var Hi = Di[Vi], Ki = this._tiles[Hi];
                          Ki.hasSymbolBuckets && !Ki.holdingForFade() ? Ki.setHoldDuration(this.map._fadeDuration) : (!Ki.hasSymbolBuckets || Ki.symbolFadeFinished()) && this._removeTile(Hi);
                        }
                        this._updateLoadedParentTileCache();
                      }
                    }, tt.prototype.releaseSymbolFadeTiles = function() {
                      for (var it in this._tiles)
                        this._tiles[it].holdingForFade() && this._removeTile(it);
                    }, tt.prototype._updateRetainedTiles = function(it, _t) {
                      for (var Yt = {}, le = {}, Ee = Math.max(_t - tt.maxOverzooming, this._source.minzoom), $e = Math.max(_t + tt.maxUnderzooming, this._source.minzoom), vr = {}, Lr = 0, Hr = it; Lr < Hr.length; Lr += 1) {
                        var Ur = Hr[Lr], hn = this._addTile(Ur);
                        Yt[Ur.key] = Ur, !hn.hasData() && _t < this._source.maxzoom && (vr[Ur.key] = Ur);
                      }
                      this._retainLoadedChildren(vr, _t, $e, Yt);
                      for (var En = 0, Mn = it; En < Mn.length; En += 1) {
                        var _n = Mn[En], In = this._tiles[_n.key];
                        if (!In.hasData()) {
                          if (_t + 1 > this._source.maxzoom) {
                            var Kn = _n.children(this._source.maxzoom)[0], xi = this.getTile(Kn);
                            if (xi && xi.hasData()) {
                              Yt[Kn.key] = Kn;
                              continue;
                            }
                          } else {
                            var Ei = _n.children(this._source.maxzoom);
                            if (Yt[Ei[0].key] && Yt[Ei[1].key] && Yt[Ei[2].key] && Yt[Ei[3].key])
                              continue;
                          }
                          for (var zi = In.wasRequested(), Vi = _n.overscaledZ - 1; Vi >= Ee; --Vi) {
                            var Di = _n.scaledTo(Vi);
                            if (le[Di.key] || (le[Di.key] = !0, In = this.getTile(Di), !In && zi && (In = this._addTile(Di)), In && (Yt[Di.key] = Di, zi = In.wasRequested(), In.hasData())))
                              break;
                          }
                        }
                      }
                      return Yt;
                    }, tt.prototype._updateLoadedParentTileCache = function() {
                      this._loadedParentTiles = {};
                      for (var it in this._tiles) {
                        for (var _t = [], Yt = void 0, le = this._tiles[it].tileID; le.overscaledZ > 0; ) {
                          if (le.key in this._loadedParentTiles) {
                            Yt = this._loadedParentTiles[le.key];
                            break;
                          }
                          _t.push(le.key);
                          var Ee = le.scaledTo(le.overscaledZ - 1);
                          if (Yt = this._getLoadedTile(Ee), Yt)
                            break;
                          le = Ee;
                        }
                        for (var $e = 0, vr = _t; $e < vr.length; $e += 1) {
                          var Lr = vr[$e];
                          this._loadedParentTiles[Lr] = Yt;
                        }
                      }
                    }, tt.prototype._addTile = function(it) {
                      var _t = this._tiles[it.key];
                      if (_t)
                        return _t;
                      _t = this._cache.getAndRemove(it), _t && (this._setTileReloadTimer(it.key, _t), _t.tileID = it, this._state.initializeTileState(_t, this.map ? this.map.painter : null), this._cacheTimers[it.key] && (clearTimeout(this._cacheTimers[it.key]), delete this._cacheTimers[it.key], this._setTileReloadTimer(it.key, _t)));
                      var Yt = !!_t;
                      return Yt || (_t = new n.Tile(it, this._source.tileSize * it.overscaleFactor()), this._loadTile(_t, this._tileLoaded.bind(this, _t, it.key, _t.state))), _t ? (_t.uses++, this._tiles[it.key] = _t, Yt || this._source.fire(new n.Event("dataloading", {
                        tile: _t,
                        coord: _t.tileID,
                        dataType: "source"
                      })), _t) : null;
                    }, tt.prototype._setTileReloadTimer = function(it, _t) {
                      var Yt = this;
                      it in this._timers && (clearTimeout(this._timers[it]), delete this._timers[it]);
                      var le = _t.getExpiryTimeout();
                      le && (this._timers[it] = setTimeout(function() {
                        Yt._reloadTile(it, "expired"), delete Yt._timers[it];
                      }, le));
                    }, tt.prototype._removeTile = function(it) {
                      var _t = this._tiles[it];
                      _t && (_t.uses--, delete this._tiles[it], this._timers[it] && (clearTimeout(this._timers[it]), delete this._timers[it]), !(_t.uses > 0) && (_t.hasData() && _t.state !== "reloading" ? this._cache.add(_t.tileID, _t, _t.getExpiryTimeout()) : (_t.aborted = !0, this._abortTile(_t), this._unloadTile(_t))));
                    }, tt.prototype.clearTiles = function() {
                      this._shouldReloadOnResume = !1, this._paused = !1;
                      for (var it in this._tiles)
                        this._removeTile(it);
                      this._cache.reset();
                    }, tt.prototype.tilesIn = function(it, _t, Yt) {
                      var le = this, Ee = [], $e = this.transform;
                      if (!$e)
                        return Ee;
                      for (var vr = Yt ? $e.getCameraQueryGeometry(it) : it, Lr = it.map(function(Vi) {
                        return $e.pointCoordinate(Vi);
                      }), Hr = vr.map(function(Vi) {
                        return $e.pointCoordinate(Vi);
                      }), Ur = this.getIds(), hn = 1 / 0, En = 1 / 0, Mn = -1 / 0, _n = -1 / 0, In = 0, Kn = Hr; In < Kn.length; In += 1) {
                        var xi = Kn[In];
                        hn = Math.min(hn, xi.x), En = Math.min(En, xi.y), Mn = Math.max(Mn, xi.x), _n = Math.max(_n, xi.y);
                      }
                      for (var Ei = function(Vi) {
                        var Di = le._tiles[Ur[Vi]];
                        if (!Di.holdingForFade()) {
                          var Hi = Di.tileID, Ki = Math.pow(2, $e.zoom - Di.tileID.overscaledZ), na = _t * Di.queryPadding * n.EXTENT / Di.tileSize / Ki, da = [
                            Hi.getTilePoint(new n.MercatorCoordinate(hn, En)),
                            Hi.getTilePoint(new n.MercatorCoordinate(Mn, _n))
                          ];
                          if (da[0].x - na < n.EXTENT && da[0].y - na < n.EXTENT && da[1].x + na >= 0 && da[1].y + na >= 0) {
                            var la = Lr.map(function(wo) {
                              return Hi.getTilePoint(wo);
                            }), Da = Hr.map(function(wo) {
                              return Hi.getTilePoint(wo);
                            });
                            Ee.push({
                              tile: Di,
                              tileID: Hi,
                              queryGeometry: la,
                              cameraQueryGeometry: Da,
                              scale: Ki
                            });
                          }
                        }
                      }, zi = 0; zi < Ur.length; zi++)
                        Ei(zi);
                      return Ee;
                    }, tt.prototype.getVisibleCoordinates = function(it) {
                      for (var _t = this, Yt = this.getRenderableIds(it).map(function(vr) {
                        return _t._tiles[vr].tileID;
                      }), le = 0, Ee = Yt; le < Ee.length; le += 1) {
                        var $e = Ee[le];
                        $e.posMatrix = this.transform.calculatePosMatrix($e.toUnwrapped());
                      }
                      return Yt;
                    }, tt.prototype.hasTransition = function() {
                      if (this._source.hasTransition())
                        return !0;
                      if (Sr(this._source.type))
                        for (var it in this._tiles) {
                          var _t = this._tiles[it];
                          if (_t.fadeEndTime !== void 0 && _t.fadeEndTime >= n.browser.now())
                            return !0;
                        }
                      return !1;
                    }, tt.prototype.setFeatureState = function(it, _t, Yt) {
                      it = it || "_geojsonTileLayer", this._state.updateState(it, _t, Yt);
                    }, tt.prototype.removeFeatureState = function(it, _t, Yt) {
                      it = it || "_geojsonTileLayer", this._state.removeFeatureState(it, _t, Yt);
                    }, tt.prototype.getFeatureState = function(it, _t) {
                      return it = it || "_geojsonTileLayer", this._state.getState(it, _t);
                    }, tt.prototype.setDependencies = function(it, _t, Yt) {
                      var le = this._tiles[it];
                      le && le.setDependencies(_t, Yt);
                    }, tt.prototype.reloadTilesForDependencies = function(it, _t) {
                      for (var Yt in this._tiles) {
                        var le = this._tiles[Yt];
                        le.hasDependency(it, _t) && this._reloadTile(Yt, "reloading");
                      }
                      this._cache.filter(function(Ee) {
                        return !Ee.hasDependency(it, _t);
                      });
                    }, tt;
                  }(n.Evented);
                  lr.maxOverzooming = 10, lr.maxUnderzooming = 3;
                  function hr(mt, tt) {
                    var bt = Math.abs(mt.wrap * 2) - +(mt.wrap < 0), it = Math.abs(tt.wrap * 2) - +(tt.wrap < 0);
                    return mt.overscaledZ - tt.overscaledZ || it - bt || tt.canonical.y - mt.canonical.y || tt.canonical.x - mt.canonical.x;
                  }
                  function Sr(mt) {
                    return mt === "raster" || mt === "image" || mt === "video";
                  }
                  function Dr() {
                    return new n.window.Worker(Ps.workerUrl);
                  }
                  var Or = "mapboxgl_preloaded_worker_pool", Br = function() {
                    this.active = {};
                  };
                  Br.prototype.acquire = function(tt) {
                    if (!this.workers)
                      for (this.workers = []; this.workers.length < Br.workerCount; )
                        this.workers.push(new Dr());
                    return this.active[tt] = !0, this.workers.slice();
                  }, Br.prototype.release = function(tt) {
                    delete this.active[tt], this.numActive() === 0 && (this.workers.forEach(function(bt) {
                      bt.terminate();
                    }), this.workers = null);
                  }, Br.prototype.isPreloaded = function() {
                    return !!this.active[Or];
                  }, Br.prototype.numActive = function() {
                    return Object.keys(this.active).length;
                  };
                  var Nr = Math.floor(n.browser.hardwareConcurrency / 2);
                  Br.workerCount = Math.max(Math.min(Nr, 6), 1);
                  var Xr;
                  function Gr() {
                    return Xr || (Xr = new Br()), Xr;
                  }
                  function oe() {
                    var mt = Gr();
                    mt.acquire(Or);
                  }
                  function de() {
                    var mt = Xr;
                    mt && (mt.isPreloaded() && mt.numActive() === 1 ? (mt.release(Or), Xr = null) : console.warn("Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()"));
                  }
                  function or(mt, tt) {
                    var bt = {};
                    for (var it in mt)
                      it !== "ref" && (bt[it] = mt[it]);
                    return n.refProperties.forEach(function(_t) {
                      _t in tt && (bt[_t] = tt[_t]);
                    }), bt;
                  }
                  function Er(mt) {
                    mt = mt.slice();
                    for (var tt = /* @__PURE__ */ Object.create(null), bt = 0; bt < mt.length; bt++)
                      tt[mt[bt].id] = mt[bt];
                    for (var it = 0; it < mt.length; it++)
                      "ref" in mt[it] && (mt[it] = or(mt[it], tt[mt[it].ref]));
                    return mt;
                  }
                  function Tr() {
                    var mt = {}, tt = n.styleSpec.$version;
                    for (var bt in n.styleSpec.$root) {
                      var it = n.styleSpec.$root[bt];
                      if (it.required) {
                        var _t = null;
                        bt === "version" ? _t = tt : it.type === "array" ? _t = [] : _t = {}, _t != null && (mt[bt] = _t);
                      }
                    }
                    return mt;
                  }
                  var tr = {
                    setStyle: "setStyle",
                    addLayer: "addLayer",
                    removeLayer: "removeLayer",
                    setPaintProperty: "setPaintProperty",
                    setLayoutProperty: "setLayoutProperty",
                    setFilter: "setFilter",
                    addSource: "addSource",
                    removeSource: "removeSource",
                    setGeoJSONSourceData: "setGeoJSONSourceData",
                    setLayerZoomRange: "setLayerZoomRange",
                    setLayerProperty: "setLayerProperty",
                    setCenter: "setCenter",
                    setZoom: "setZoom",
                    setBearing: "setBearing",
                    setPitch: "setPitch",
                    setSprite: "setSprite",
                    setGlyphs: "setGlyphs",
                    setTransition: "setTransition",
                    setLight: "setLight"
                  };
                  function yr(mt, tt, bt) {
                    bt.push({
                      command: tr.addSource,
                      args: [
                        mt,
                        tt[mt]
                      ]
                    });
                  }
                  function Ir(mt, tt, bt) {
                    tt.push({
                      command: tr.removeSource,
                      args: [mt]
                    }), bt[mt] = !0;
                  }
                  function Cr(mt, tt, bt, it) {
                    Ir(mt, bt, it), yr(mt, tt, bt);
                  }
                  function _r(mt, tt, bt) {
                    var it;
                    for (it in mt[bt])
                      if (mt[bt].hasOwnProperty(it) && it !== "data" && !n.deepEqual(mt[bt][it], tt[bt][it]))
                        return !1;
                    for (it in tt[bt])
                      if (tt[bt].hasOwnProperty(it) && it !== "data" && !n.deepEqual(mt[bt][it], tt[bt][it]))
                        return !1;
                    return !0;
                  }
                  function Zr(mt, tt, bt, it) {
                    mt = mt || {}, tt = tt || {};
                    var _t;
                    for (_t in mt)
                      mt.hasOwnProperty(_t) && (tt.hasOwnProperty(_t) || Ir(_t, bt, it));
                    for (_t in tt)
                      tt.hasOwnProperty(_t) && (mt.hasOwnProperty(_t) ? n.deepEqual(mt[_t], tt[_t]) || (mt[_t].type === "geojson" && tt[_t].type === "geojson" && _r(mt, tt, _t) ? bt.push({
                        command: tr.setGeoJSONSourceData,
                        args: [
                          _t,
                          tt[_t].data
                        ]
                      }) : Cr(_t, tt, bt, it)) : yr(_t, tt, bt));
                  }
                  function ln(mt, tt, bt, it, _t, Yt) {
                    mt = mt || {}, tt = tt || {};
                    var le;
                    for (le in mt)
                      mt.hasOwnProperty(le) && (n.deepEqual(mt[le], tt[le]) || bt.push({
                        command: Yt,
                        args: [
                          it,
                          le,
                          tt[le],
                          _t
                        ]
                      }));
                    for (le in tt)
                      !tt.hasOwnProperty(le) || mt.hasOwnProperty(le) || n.deepEqual(mt[le], tt[le]) || bt.push({
                        command: Yt,
                        args: [
                          it,
                          le,
                          tt[le],
                          _t
                        ]
                      });
                  }
                  function Jr(mt) {
                    return mt.id;
                  }
                  function Zn(mt, tt) {
                    return mt[tt.id] = tt, mt;
                  }
                  function fn(mt, tt, bt) {
                    mt = mt || [], tt = tt || [];
                    var it = mt.map(Jr), _t = tt.map(Jr), Yt = mt.reduce(Zn, {}), le = tt.reduce(Zn, {}), Ee = it.slice(), $e = /* @__PURE__ */ Object.create(null), vr, Lr, Hr, Ur, hn, En, Mn;
                    for (vr = 0, Lr = 0; vr < it.length; vr++)
                      Hr = it[vr], le.hasOwnProperty(Hr) ? Lr++ : (bt.push({
                        command: tr.removeLayer,
                        args: [Hr]
                      }), Ee.splice(Ee.indexOf(Hr, Lr), 1));
                    for (vr = 0, Lr = 0; vr < _t.length; vr++)
                      Hr = _t[_t.length - 1 - vr], Ee[Ee.length - 1 - vr] !== Hr && (Yt.hasOwnProperty(Hr) ? (bt.push({
                        command: tr.removeLayer,
                        args: [Hr]
                      }), Ee.splice(Ee.lastIndexOf(Hr, Ee.length - Lr), 1)) : Lr++, En = Ee[Ee.length - vr], bt.push({
                        command: tr.addLayer,
                        args: [
                          le[Hr],
                          En
                        ]
                      }), Ee.splice(Ee.length - vr, 0, Hr), $e[Hr] = !0);
                    for (vr = 0; vr < _t.length; vr++)
                      if (Hr = _t[vr], Ur = Yt[Hr], hn = le[Hr], !($e[Hr] || n.deepEqual(Ur, hn))) {
                        if (!n.deepEqual(Ur.source, hn.source) || !n.deepEqual(Ur["source-layer"], hn["source-layer"]) || !n.deepEqual(Ur.type, hn.type)) {
                          bt.push({
                            command: tr.removeLayer,
                            args: [Hr]
                          }), En = Ee[Ee.lastIndexOf(Hr) + 1], bt.push({
                            command: tr.addLayer,
                            args: [
                              hn,
                              En
                            ]
                          });
                          continue;
                        }
                        ln(Ur.layout, hn.layout, bt, Hr, null, tr.setLayoutProperty), ln(Ur.paint, hn.paint, bt, Hr, null, tr.setPaintProperty), n.deepEqual(Ur.filter, hn.filter) || bt.push({
                          command: tr.setFilter,
                          args: [
                            Hr,
                            hn.filter
                          ]
                        }), (!n.deepEqual(Ur.minzoom, hn.minzoom) || !n.deepEqual(Ur.maxzoom, hn.maxzoom)) && bt.push({
                          command: tr.setLayerZoomRange,
                          args: [
                            Hr,
                            hn.minzoom,
                            hn.maxzoom
                          ]
                        });
                        for (Mn in Ur)
                          Ur.hasOwnProperty(Mn) && (Mn === "layout" || Mn === "paint" || Mn === "filter" || Mn === "metadata" || Mn === "minzoom" || Mn === "maxzoom" || (Mn.indexOf("paint.") === 0 ? ln(Ur[Mn], hn[Mn], bt, Hr, Mn.slice(6), tr.setPaintProperty) : n.deepEqual(Ur[Mn], hn[Mn]) || bt.push({
                            command: tr.setLayerProperty,
                            args: [
                              Hr,
                              Mn,
                              hn[Mn]
                            ]
                          })));
                        for (Mn in hn)
                          !hn.hasOwnProperty(Mn) || Ur.hasOwnProperty(Mn) || Mn === "layout" || Mn === "paint" || Mn === "filter" || Mn === "metadata" || Mn === "minzoom" || Mn === "maxzoom" || (Mn.indexOf("paint.") === 0 ? ln(Ur[Mn], hn[Mn], bt, Hr, Mn.slice(6), tr.setPaintProperty) : n.deepEqual(Ur[Mn], hn[Mn]) || bt.push({
                            command: tr.setLayerProperty,
                            args: [
                              Hr,
                              Mn,
                              hn[Mn]
                            ]
                          }));
                      }
                  }
                  function hi(mt, tt) {
                    if (!mt)
                      return [{
                        command: tr.setStyle,
                        args: [tt]
                      }];
                    var bt = [];
                    try {
                      if (!n.deepEqual(mt.version, tt.version))
                        return [{
                          command: tr.setStyle,
                          args: [tt]
                        }];
                      n.deepEqual(mt.center, tt.center) || bt.push({
                        command: tr.setCenter,
                        args: [tt.center]
                      }), n.deepEqual(mt.zoom, tt.zoom) || bt.push({
                        command: tr.setZoom,
                        args: [tt.zoom]
                      }), n.deepEqual(mt.bearing, tt.bearing) || bt.push({
                        command: tr.setBearing,
                        args: [tt.bearing]
                      }), n.deepEqual(mt.pitch, tt.pitch) || bt.push({
                        command: tr.setPitch,
                        args: [tt.pitch]
                      }), n.deepEqual(mt.sprite, tt.sprite) || bt.push({
                        command: tr.setSprite,
                        args: [tt.sprite]
                      }), n.deepEqual(mt.glyphs, tt.glyphs) || bt.push({
                        command: tr.setGlyphs,
                        args: [tt.glyphs]
                      }), n.deepEqual(mt.transition, tt.transition) || bt.push({
                        command: tr.setTransition,
                        args: [tt.transition]
                      }), n.deepEqual(mt.light, tt.light) || bt.push({
                        command: tr.setLight,
                        args: [tt.light]
                      });
                      var it = {}, _t = [];
                      Zr(mt.sources, tt.sources, _t, it);
                      var Yt = [];
                      mt.layers && mt.layers.forEach(function(le) {
                        it[le.source] ? bt.push({
                          command: tr.removeLayer,
                          args: [le.id]
                        }) : Yt.push(le);
                      }), bt = bt.concat(_t), fn(Yt, tt.layers, bt);
                    } catch (le) {
                      console.warn("Unable to compute style diff:", le), bt = [{
                        command: tr.setStyle,
                        args: [tt]
                      }];
                    }
                    return bt;
                  }
                  var Vn = function(tt, bt) {
                    this.reset(tt, bt);
                  };
                  Vn.prototype.reset = function(tt, bt) {
                    this.points = tt || [], this._distances = [0];
                    for (var it = 1; it < this.points.length; it++)
                      this._distances[it] = this._distances[it - 1] + this.points[it].dist(this.points[it - 1]);
                    this.length = this._distances[this._distances.length - 1], this.padding = Math.min(bt || 0, this.length * 0.5), this.paddedLength = this.length - this.padding * 2;
                  }, Vn.prototype.lerp = function(tt) {
                    if (this.points.length === 1)
                      return this.points[0];
                    tt = n.clamp(tt, 0, 1);
                    for (var bt = 1, it = this._distances[bt], _t = tt * this.paddedLength + this.padding; it < _t && bt < this._distances.length; )
                      it = this._distances[++bt];
                    var Yt = bt - 1, le = this._distances[Yt], Ee = it - le, $e = Ee > 0 ? (_t - le) / Ee : 0;
                    return this.points[Yt].mult(1 - $e).add(this.points[bt].mult($e));
                  };
                  var jr = function(tt, bt, it) {
                    var _t = this.boxCells = [], Yt = this.circleCells = [];
                    this.xCellCount = Math.ceil(tt / it), this.yCellCount = Math.ceil(bt / it);
                    for (var le = 0; le < this.xCellCount * this.yCellCount; le++)
                      _t.push([]), Yt.push([]);
                    this.circleKeys = [], this.boxKeys = [], this.bboxes = [], this.circles = [], this.width = tt, this.height = bt, this.xScale = this.xCellCount / tt, this.yScale = this.yCellCount / bt, this.boxUid = 0, this.circleUid = 0;
                  };
                  jr.prototype.keysLength = function() {
                    return this.boxKeys.length + this.circleKeys.length;
                  }, jr.prototype.insert = function(tt, bt, it, _t, Yt) {
                    this._forEachCell(bt, it, _t, Yt, this._insertBoxCell, this.boxUid++), this.boxKeys.push(tt), this.bboxes.push(bt), this.bboxes.push(it), this.bboxes.push(_t), this.bboxes.push(Yt);
                  }, jr.prototype.insertCircle = function(tt, bt, it, _t) {
                    this._forEachCell(bt - _t, it - _t, bt + _t, it + _t, this._insertCircleCell, this.circleUid++), this.circleKeys.push(tt), this.circles.push(bt), this.circles.push(it), this.circles.push(_t);
                  }, jr.prototype._insertBoxCell = function(tt, bt, it, _t, Yt, le) {
                    this.boxCells[Yt].push(le);
                  }, jr.prototype._insertCircleCell = function(tt, bt, it, _t, Yt, le) {
                    this.circleCells[Yt].push(le);
                  }, jr.prototype._query = function(tt, bt, it, _t, Yt, le) {
                    if (it < 0 || tt > this.width || _t < 0 || bt > this.height)
                      return Yt ? !1 : [];
                    var Ee = [];
                    if (tt <= 0 && bt <= 0 && this.width <= it && this.height <= _t) {
                      if (Yt)
                        return !0;
                      for (var $e = 0; $e < this.boxKeys.length; $e++)
                        Ee.push({
                          key: this.boxKeys[$e],
                          x1: this.bboxes[$e * 4],
                          y1: this.bboxes[$e * 4 + 1],
                          x2: this.bboxes[$e * 4 + 2],
                          y2: this.bboxes[$e * 4 + 3]
                        });
                      for (var vr = 0; vr < this.circleKeys.length; vr++) {
                        var Lr = this.circles[vr * 3], Hr = this.circles[vr * 3 + 1], Ur = this.circles[vr * 3 + 2];
                        Ee.push({
                          key: this.circleKeys[vr],
                          x1: Lr - Ur,
                          y1: Hr - Ur,
                          x2: Lr + Ur,
                          y2: Hr + Ur
                        });
                      }
                      return le ? Ee.filter(le) : Ee;
                    } else {
                      var hn = {
                        hitTest: Yt,
                        seenUids: {
                          box: {},
                          circle: {}
                        }
                      };
                      return this._forEachCell(tt, bt, it, _t, this._queryCell, Ee, hn, le), Yt ? Ee.length > 0 : Ee;
                    }
                  }, jr.prototype._queryCircle = function(tt, bt, it, _t, Yt) {
                    var le = tt - it, Ee = tt + it, $e = bt - it, vr = bt + it;
                    if (Ee < 0 || le > this.width || vr < 0 || $e > this.height)
                      return _t ? !1 : [];
                    var Lr = [], Hr = {
                      hitTest: _t,
                      circle: {
                        x: tt,
                        y: bt,
                        radius: it
                      },
                      seenUids: {
                        box: {},
                        circle: {}
                      }
                    };
                    return this._forEachCell(le, $e, Ee, vr, this._queryCellCircle, Lr, Hr, Yt), _t ? Lr.length > 0 : Lr;
                  }, jr.prototype.query = function(tt, bt, it, _t, Yt) {
                    return this._query(tt, bt, it, _t, !1, Yt);
                  }, jr.prototype.hitTest = function(tt, bt, it, _t, Yt) {
                    return this._query(tt, bt, it, _t, !0, Yt);
                  }, jr.prototype.hitTestCircle = function(tt, bt, it, _t) {
                    return this._queryCircle(tt, bt, it, !0, _t);
                  }, jr.prototype._queryCell = function(tt, bt, it, _t, Yt, le, Ee, $e) {
                    var vr = Ee.seenUids, Lr = this.boxCells[Yt];
                    if (Lr !== null)
                      for (var Hr = this.bboxes, Ur = 0, hn = Lr; Ur < hn.length; Ur += 1) {
                        var En = hn[Ur];
                        if (!vr.box[En]) {
                          vr.box[En] = !0;
                          var Mn = En * 4;
                          if (tt <= Hr[Mn + 2] && bt <= Hr[Mn + 3] && it >= Hr[Mn + 0] && _t >= Hr[Mn + 1] && (!$e || $e(this.boxKeys[En]))) {
                            if (Ee.hitTest)
                              return le.push(!0), !0;
                            le.push({
                              key: this.boxKeys[En],
                              x1: Hr[Mn],
                              y1: Hr[Mn + 1],
                              x2: Hr[Mn + 2],
                              y2: Hr[Mn + 3]
                            });
                          }
                        }
                      }
                    var _n = this.circleCells[Yt];
                    if (_n !== null)
                      for (var In = this.circles, Kn = 0, xi = _n; Kn < xi.length; Kn += 1) {
                        var Ei = xi[Kn];
                        if (!vr.circle[Ei]) {
                          vr.circle[Ei] = !0;
                          var zi = Ei * 3;
                          if (this._circleAndRectCollide(In[zi], In[zi + 1], In[zi + 2], tt, bt, it, _t) && (!$e || $e(this.circleKeys[Ei]))) {
                            if (Ee.hitTest)
                              return le.push(!0), !0;
                            var Vi = In[zi], Di = In[zi + 1], Hi = In[zi + 2];
                            le.push({
                              key: this.circleKeys[Ei],
                              x1: Vi - Hi,
                              y1: Di - Hi,
                              x2: Vi + Hi,
                              y2: Di + Hi
                            });
                          }
                        }
                      }
                  }, jr.prototype._queryCellCircle = function(tt, bt, it, _t, Yt, le, Ee, $e) {
                    var vr = Ee.circle, Lr = Ee.seenUids, Hr = this.boxCells[Yt];
                    if (Hr !== null)
                      for (var Ur = this.bboxes, hn = 0, En = Hr; hn < En.length; hn += 1) {
                        var Mn = En[hn];
                        if (!Lr.box[Mn]) {
                          Lr.box[Mn] = !0;
                          var _n = Mn * 4;
                          if (this._circleAndRectCollide(vr.x, vr.y, vr.radius, Ur[_n + 0], Ur[_n + 1], Ur[_n + 2], Ur[_n + 3]) && (!$e || $e(this.boxKeys[Mn])))
                            return le.push(!0), !0;
                        }
                      }
                    var In = this.circleCells[Yt];
                    if (In !== null)
                      for (var Kn = this.circles, xi = 0, Ei = In; xi < Ei.length; xi += 1) {
                        var zi = Ei[xi];
                        if (!Lr.circle[zi]) {
                          Lr.circle[zi] = !0;
                          var Vi = zi * 3;
                          if (this._circlesCollide(Kn[Vi], Kn[Vi + 1], Kn[Vi + 2], vr.x, vr.y, vr.radius) && (!$e || $e(this.circleKeys[zi])))
                            return le.push(!0), !0;
                        }
                      }
                  }, jr.prototype._forEachCell = function(tt, bt, it, _t, Yt, le, Ee, $e) {
                    for (var vr = this._convertToXCellCoord(tt), Lr = this._convertToYCellCoord(bt), Hr = this._convertToXCellCoord(it), Ur = this._convertToYCellCoord(_t), hn = vr; hn <= Hr; hn++)
                      for (var En = Lr; En <= Ur; En++) {
                        var Mn = this.xCellCount * En + hn;
                        if (Yt.call(this, tt, bt, it, _t, Mn, le, Ee, $e))
                          return;
                      }
                  }, jr.prototype._convertToXCellCoord = function(tt) {
                    return Math.max(0, Math.min(this.xCellCount - 1, Math.floor(tt * this.xScale)));
                  }, jr.prototype._convertToYCellCoord = function(tt) {
                    return Math.max(0, Math.min(this.yCellCount - 1, Math.floor(tt * this.yScale)));
                  }, jr.prototype._circlesCollide = function(tt, bt, it, _t, Yt, le) {
                    var Ee = _t - tt, $e = Yt - bt, vr = it + le;
                    return vr * vr > Ee * Ee + $e * $e;
                  }, jr.prototype._circleAndRectCollide = function(tt, bt, it, _t, Yt, le, Ee) {
                    var $e = (le - _t) / 2, vr = Math.abs(tt - (_t + $e));
                    if (vr > $e + it)
                      return !1;
                    var Lr = (Ee - Yt) / 2, Hr = Math.abs(bt - (Yt + Lr));
                    if (Hr > Lr + it)
                      return !1;
                    if (vr <= $e || Hr <= Lr)
                      return !0;
                    var Ur = vr - $e, hn = Hr - Lr;
                    return Ur * Ur + hn * hn <= it * it;
                  };
                  function zr(mt, tt, bt, it, _t) {
                    var Yt = n.create();
                    return tt ? (n.scale(Yt, Yt, [
                      1 / _t,
                      1 / _t,
                      1
                    ]), bt || n.rotateZ(Yt, Yt, it.angle)) : n.multiply(Yt, it.labelPlaneMatrix, mt), Yt;
                  }
                  function Tn(mt, tt, bt, it, _t) {
                    if (tt) {
                      var Yt = n.clone(mt);
                      return n.scale(Yt, Yt, [
                        _t,
                        _t,
                        1
                      ]), bt || n.rotateZ(Yt, Yt, -it.angle), Yt;
                    } else
                      return it.glCoordMatrix;
                  }
                  function sn(mt, tt) {
                    var bt = [
                      mt.x,
                      mt.y,
                      0,
                      1
                    ];
                    rn(bt, bt, tt);
                    var it = bt[3];
                    return {
                      point: new n.Point(bt[0] / it, bt[1] / it),
                      signedDistanceFromCamera: it
                    };
                  }
                  function $n(mt, tt) {
                    return 0.5 + 0.5 * (mt / tt);
                  }
                  function kn(mt, tt) {
                    var bt = mt[0] / mt[3], it = mt[1] / mt[3], _t = bt >= -tt[0] && bt <= tt[0] && it >= -tt[1] && it <= tt[1];
                    return _t;
                  }
                  function An(mt, tt, bt, it, _t, Yt, le, Ee) {
                    var $e = it ? mt.textSizeData : mt.iconSizeData, vr = n.evaluateSizeForZoom($e, bt.transform.zoom), Lr = [
                      256 / bt.width * 2 + 1,
                      256 / bt.height * 2 + 1
                    ], Hr = it ? mt.text.dynamicLayoutVertexArray : mt.icon.dynamicLayoutVertexArray;
                    Hr.clear();
                    for (var Ur = mt.lineVertexArray, hn = it ? mt.text.placedSymbolArray : mt.icon.placedSymbolArray, En = bt.transform.width / bt.transform.height, Mn = !1, _n = 0; _n < hn.length; _n++) {
                      var In = hn.get(_n);
                      if (In.hidden || In.writingMode === n.WritingMode.vertical && !Mn) {
                        ci(In.numGlyphs, Hr);
                        continue;
                      }
                      Mn = !1;
                      var Kn = [
                        In.anchorX,
                        In.anchorY,
                        0,
                        1
                      ];
                      if (n.transformMat4(Kn, Kn, tt), !kn(Kn, Lr)) {
                        ci(In.numGlyphs, Hr);
                        continue;
                      }
                      var xi = Kn[3], Ei = $n(bt.transform.cameraToCenterDistance, xi), zi = n.evaluateSizeForFeature($e, vr, In), Vi = le ? zi / Ei : zi * Ei, Di = new n.Point(In.anchorX, In.anchorY), Hi = sn(Di, _t).point, Ki = {}, na = qi(In, Vi, !1, Ee, tt, _t, Yt, mt.glyphOffsetArray, Ur, Hr, Hi, Di, Ki, En);
                      Mn = na.useVertical, (na.notEnoughRoom || Mn || na.needsFlipping && qi(In, Vi, !0, Ee, tt, _t, Yt, mt.glyphOffsetArray, Ur, Hr, Hi, Di, Ki, En).notEnoughRoom) && ci(In.numGlyphs, Hr);
                    }
                    it ? mt.text.dynamicLayoutVertexBuffer.updateData(Hr) : mt.icon.dynamicLayoutVertexBuffer.updateData(Hr);
                  }
                  function qn(mt, tt, bt, it, _t, Yt, le, Ee, $e, vr, Lr) {
                    var Hr = Ee.glyphStartIndex + Ee.numGlyphs, Ur = Ee.lineStartIndex, hn = Ee.lineStartIndex + Ee.lineLength, En = tt.getoffsetX(Ee.glyphStartIndex), Mn = tt.getoffsetX(Hr - 1), _n = Mi(mt * En, bt, it, _t, Yt, le, Ee.segment, Ur, hn, $e, vr, Lr);
                    if (!_n)
                      return null;
                    var In = Mi(mt * Mn, bt, it, _t, Yt, le, Ee.segment, Ur, hn, $e, vr, Lr);
                    return In ? {
                      first: _n,
                      last: In
                    } : null;
                  }
                  function si(mt, tt, bt, it) {
                    if (mt === n.WritingMode.horizontal) {
                      var _t = Math.abs(bt.y - tt.y), Yt = Math.abs(bt.x - tt.x) * it;
                      if (_t > Yt)
                        return { useVertical: !0 };
                    }
                    return (mt === n.WritingMode.vertical ? tt.y < bt.y : tt.x > bt.x) ? { needsFlipping: !0 } : null;
                  }
                  function qi(mt, tt, bt, it, _t, Yt, le, Ee, $e, vr, Lr, Hr, Ur, hn) {
                    var En = tt / 24, Mn = mt.lineOffsetX * En, _n = mt.lineOffsetY * En, In;
                    if (mt.numGlyphs > 1) {
                      var Kn = mt.glyphStartIndex + mt.numGlyphs, xi = mt.lineStartIndex, Ei = mt.lineStartIndex + mt.lineLength, zi = qn(En, Ee, Mn, _n, bt, Lr, Hr, mt, $e, Yt, Ur);
                      if (!zi)
                        return { notEnoughRoom: !0 };
                      var Vi = sn(zi.first.point, le).point, Di = sn(zi.last.point, le).point;
                      if (it && !bt) {
                        var Hi = si(mt.writingMode, Vi, Di, hn);
                        if (Hi)
                          return Hi;
                      }
                      In = [zi.first];
                      for (var Ki = mt.glyphStartIndex + 1; Ki < Kn - 1; Ki++)
                        In.push(Mi(En * Ee.getoffsetX(Ki), Mn, _n, bt, Lr, Hr, mt.segment, xi, Ei, $e, Yt, Ur));
                      In.push(zi.last);
                    } else {
                      if (it && !bt) {
                        var na = sn(Hr, _t).point, da = mt.lineStartIndex + mt.segment + 1, la = new n.Point($e.getx(da), $e.gety(da)), Da = sn(la, _t), wo = Da.signedDistanceFromCamera > 0 ? Da.point : ha(Hr, la, na, 1, _t), uo = si(mt.writingMode, na, wo, hn);
                        if (uo)
                          return uo;
                      }
                      var _a = Mi(En * Ee.getoffsetX(mt.glyphStartIndex), Mn, _n, bt, Lr, Hr, mt.segment, mt.lineStartIndex, mt.lineStartIndex + mt.lineLength, $e, Yt, Ur);
                      if (!_a)
                        return { notEnoughRoom: !0 };
                      In = [_a];
                    }
                    for (var co = 0, $a = In; co < $a.length; co += 1) {
                      var po = $a[co];
                      n.addDynamicAttributes(vr, po.point, po.angle);
                    }
                    return {};
                  }
                  function ha(mt, tt, bt, it, _t) {
                    var Yt = sn(mt.add(mt.sub(tt)._unit()), _t).point, le = bt.sub(Yt);
                    return bt.add(le._mult(it / le.mag()));
                  }
                  function Mi(mt, tt, bt, it, _t, Yt, le, Ee, $e, vr, Lr, Hr) {
                    var Ur = it ? mt - tt : mt + tt, hn = Ur > 0 ? 1 : -1, En = 0;
                    it && (hn *= -1, En = Math.PI), hn < 0 && (En += Math.PI);
                    for (var Mn = hn > 0 ? Ee + le : Ee + le + 1, _n = _t, In = _t, Kn = 0, xi = 0, Ei = Math.abs(Ur), zi = []; Kn + xi <= Ei; ) {
                      if (Mn += hn, Mn < Ee || Mn >= $e)
                        return null;
                      if (In = _n, zi.push(_n), _n = Hr[Mn], _n === void 0) {
                        var Vi = new n.Point(vr.getx(Mn), vr.gety(Mn)), Di = sn(Vi, Lr);
                        if (Di.signedDistanceFromCamera > 0)
                          _n = Hr[Mn] = Di.point;
                        else {
                          var Hi = Mn - hn, Ki = Kn === 0 ? Yt : new n.Point(vr.getx(Hi), vr.gety(Hi));
                          _n = ha(Ki, Vi, In, Ei - Kn + 1, Lr);
                        }
                      }
                      Kn += xi, xi = In.dist(_n);
                    }
                    var na = (Ei - Kn) / xi, da = _n.sub(In), la = da.mult(na)._add(In);
                    la._add(da._unit()._perp()._mult(bt * hn));
                    var Da = En + Math.atan2(_n.y - In.y, _n.x - In.x);
                    return zi.push(la), {
                      point: la,
                      angle: Da,
                      path: zi
                    };
                  }
                  var Ji = new Float32Array([
                    -1 / 0,
                    -1 / 0,
                    0,
                    -1 / 0,
                    -1 / 0,
                    0,
                    -1 / 0,
                    -1 / 0,
                    0,
                    -1 / 0,
                    -1 / 0,
                    0
                  ]);
                  function ci(mt, tt) {
                    for (var bt = 0; bt < mt; bt++) {
                      var it = tt.length;
                      tt.resize(it + 4), tt.float32.set(Ji, it * 3);
                    }
                  }
                  function rn(mt, tt, bt) {
                    var it = tt[0], _t = tt[1];
                    return mt[0] = bt[0] * it + bt[4] * _t + bt[12], mt[1] = bt[1] * it + bt[5] * _t + bt[13], mt[3] = bt[3] * it + bt[7] * _t + bt[15], mt;
                  }
                  var Cn = 100, Un = function(tt, bt, it) {
                    bt === void 0 && (bt = new jr(tt.width + 2 * Cn, tt.height + 2 * Cn, 25)), it === void 0 && (it = new jr(tt.width + 2 * Cn, tt.height + 2 * Cn, 25)), this.transform = tt, this.grid = bt, this.ignoredGrid = it, this.pitchfactor = Math.cos(tt._pitch) * tt.cameraToCenterDistance, this.screenRightBoundary = tt.width + Cn, this.screenBottomBoundary = tt.height + Cn, this.gridRightBoundary = tt.width + 2 * Cn, this.gridBottomBoundary = tt.height + 2 * Cn;
                  };
                  Un.prototype.placeCollisionBox = function(tt, bt, it, _t, Yt) {
                    var le = this.projectAndGetPerspectiveRatio(_t, tt.anchorPointX, tt.anchorPointY), Ee = it * le.perspectiveRatio, $e = tt.x1 * Ee + le.point.x, vr = tt.y1 * Ee + le.point.y, Lr = tt.x2 * Ee + le.point.x, Hr = tt.y2 * Ee + le.point.y;
                    return !this.isInsideGrid($e, vr, Lr, Hr) || !bt && this.grid.hitTest($e, vr, Lr, Hr, Yt) ? {
                      box: [],
                      offscreen: !1
                    } : {
                      box: [
                        $e,
                        vr,
                        Lr,
                        Hr
                      ],
                      offscreen: this.isOffscreen($e, vr, Lr, Hr)
                    };
                  }, Un.prototype.placeCollisionCircles = function(tt, bt, it, _t, Yt, le, Ee, $e, vr, Lr, Hr, Ur, hn) {
                    var En = [], Mn = new n.Point(bt.anchorX, bt.anchorY), _n = sn(Mn, le), In = $n(this.transform.cameraToCenterDistance, _n.signedDistanceFromCamera), Kn = Lr ? Yt / In : Yt * In, xi = Kn / n.ONE_EM, Ei = sn(Mn, Ee).point, zi = {}, Vi = bt.lineOffsetX * xi, Di = bt.lineOffsetY * xi, Hi = qn(xi, _t, Vi, Di, !1, Ei, Mn, bt, it, Ee, zi), Ki = !1, na = !1, da = !0;
                    if (Hi) {
                      for (var la = Ur * 0.5 * In + hn, Da = new n.Point(-Cn, -Cn), wo = new n.Point(this.screenRightBoundary, this.screenBottomBoundary), uo = new Vn(), _a = Hi.first, co = Hi.last, $a = [], po = _a.path.length - 1; po >= 1; po--)
                        $a.push(_a.path[po]);
                      for (var Mo = 1; Mo < co.path.length; Mo++)
                        $a.push(co.path[Mo]);
                      var Zo = la * 2.5;
                      if ($e) {
                        var _o = $a.map(function(mu) {
                          return sn(mu, $e);
                        });
                        _o.some(function(mu) {
                          return mu.signedDistanceFromCamera <= 0;
                        }) ? $a = [] : $a = _o.map(function(mu) {
                          return mu.point;
                        });
                      }
                      var ko = [];
                      if ($a.length > 0) {
                        for (var to = $a[0].clone(), Eo = $a[0].clone(), As = 1; As < $a.length; As++)
                          to.x = Math.min(to.x, $a[As].x), to.y = Math.min(to.y, $a[As].y), Eo.x = Math.max(Eo.x, $a[As].x), Eo.y = Math.max(Eo.y, $a[As].y);
                        to.x >= Da.x && Eo.x <= wo.x && to.y >= Da.y && Eo.y <= wo.y ? ko = [$a] : Eo.x < Da.x || to.x > wo.x || Eo.y < Da.y || to.y > wo.y ? ko = [] : ko = n.clipLine([$a], Da.x, Da.y, wo.x, wo.y);
                      }
                      for (var js = 0, lc = ko; js < lc.length; js += 1) {
                        var uc = lc[js];
                        uo.reset(uc, la * 0.25);
                        var Pl = 0;
                        uo.length <= 0.5 * la ? Pl = 1 : Pl = Math.ceil(uo.paddedLength / Zo) + 1;
                        for (var au = 0; au < Pl; au++) {
                          var nf = au / Math.max(Pl - 1, 1), cc = uo.lerp(nf), Zl = cc.x + Cn, fc = cc.y + Cn;
                          En.push(Zl, fc, la, 0);
                          var Ou = Zl - la, Il = fc - la, Qo = Zl + la, af = fc + la;
                          if (da = da && this.isOffscreen(Ou, Il, Qo, af), na = na || this.isInsideGrid(Ou, Il, Qo, af), !tt && this.grid.hitTestCircle(Zl, fc, la, Hr) && (Ki = !0, !vr))
                            return {
                              circles: [],
                              offscreen: !1,
                              collisionDetected: Ki
                            };
                        }
                      }
                    }
                    return {
                      circles: !vr && Ki || !na ? [] : En,
                      offscreen: da,
                      collisionDetected: Ki
                    };
                  }, Un.prototype.queryRenderedSymbols = function(tt) {
                    if (tt.length === 0 || this.grid.keysLength() === 0 && this.ignoredGrid.keysLength() === 0)
                      return {};
                    for (var bt = [], it = 1 / 0, _t = 1 / 0, Yt = -1 / 0, le = -1 / 0, Ee = 0, $e = tt; Ee < $e.length; Ee += 1) {
                      var vr = $e[Ee], Lr = new n.Point(vr.x + Cn, vr.y + Cn);
                      it = Math.min(it, Lr.x), _t = Math.min(_t, Lr.y), Yt = Math.max(Yt, Lr.x), le = Math.max(le, Lr.y), bt.push(Lr);
                    }
                    for (var Hr = this.grid.query(it, _t, Yt, le).concat(this.ignoredGrid.query(it, _t, Yt, le)), Ur = {}, hn = {}, En = 0, Mn = Hr; En < Mn.length; En += 1) {
                      var _n = Mn[En], In = _n.key;
                      if (Ur[In.bucketInstanceId] === void 0 && (Ur[In.bucketInstanceId] = {}), !Ur[In.bucketInstanceId][In.featureIndex]) {
                        var Kn = [
                          new n.Point(_n.x1, _n.y1),
                          new n.Point(_n.x2, _n.y1),
                          new n.Point(_n.x2, _n.y2),
                          new n.Point(_n.x1, _n.y2)
                        ];
                        n.polygonIntersectsPolygon(bt, Kn) && (Ur[In.bucketInstanceId][In.featureIndex] = !0, hn[In.bucketInstanceId] === void 0 && (hn[In.bucketInstanceId] = []), hn[In.bucketInstanceId].push(In.featureIndex));
                      }
                    }
                    return hn;
                  }, Un.prototype.insertCollisionBox = function(tt, bt, it, _t, Yt) {
                    var le = bt ? this.ignoredGrid : this.grid, Ee = {
                      bucketInstanceId: it,
                      featureIndex: _t,
                      collisionGroupID: Yt
                    };
                    le.insert(Ee, tt[0], tt[1], tt[2], tt[3]);
                  }, Un.prototype.insertCollisionCircles = function(tt, bt, it, _t, Yt) {
                    for (var le = bt ? this.ignoredGrid : this.grid, Ee = {
                      bucketInstanceId: it,
                      featureIndex: _t,
                      collisionGroupID: Yt
                    }, $e = 0; $e < tt.length; $e += 4)
                      le.insertCircle(Ee, tt[$e], tt[$e + 1], tt[$e + 2]);
                  }, Un.prototype.projectAndGetPerspectiveRatio = function(tt, bt, it) {
                    var _t = [
                      bt,
                      it,
                      0,
                      1
                    ];
                    rn(_t, _t, tt);
                    var Yt = new n.Point((_t[0] / _t[3] + 1) / 2 * this.transform.width + Cn, (-_t[1] / _t[3] + 1) / 2 * this.transform.height + Cn);
                    return {
                      point: Yt,
                      perspectiveRatio: 0.5 + 0.5 * (this.transform.cameraToCenterDistance / _t[3])
                    };
                  }, Un.prototype.isOffscreen = function(tt, bt, it, _t) {
                    return it < Cn || tt >= this.screenRightBoundary || _t < Cn || bt > this.screenBottomBoundary;
                  }, Un.prototype.isInsideGrid = function(tt, bt, it, _t) {
                    return it >= 0 && tt < this.gridRightBoundary && _t >= 0 && bt < this.gridBottomBoundary;
                  }, Un.prototype.getViewportMatrix = function() {
                    var tt = n.identity([]);
                    return n.translate(tt, tt, [
                      -Cn,
                      -Cn,
                      0
                    ]), tt;
                  };
                  function Fn(mt, tt, bt) {
                    return tt * (n.EXTENT / (mt.tileSize * Math.pow(2, bt - mt.tileID.overscaledZ)));
                  }
                  var mi = function(tt, bt, it, _t) {
                    tt ? this.opacity = Math.max(0, Math.min(1, tt.opacity + (tt.placed ? bt : -bt))) : this.opacity = _t && it ? 1 : 0, this.placed = it;
                  };
                  mi.prototype.isHidden = function() {
                    return this.opacity === 0 && !this.placed;
                  };
                  var Nn = function(tt, bt, it, _t, Yt) {
                    this.text = new mi(tt ? tt.text : null, bt, it, Yt), this.icon = new mi(tt ? tt.icon : null, bt, _t, Yt);
                  };
                  Nn.prototype.isHidden = function() {
                    return this.text.isHidden() && this.icon.isHidden();
                  };
                  var di = function(tt, bt, it) {
                    this.text = tt, this.icon = bt, this.skipFade = it;
                  }, Ai = function() {
                    this.invProjMatrix = n.create(), this.viewportMatrix = n.create(), this.circles = [];
                  }, Gi = function(tt, bt, it, _t, Yt) {
                    this.bucketInstanceId = tt, this.featureIndex = bt, this.sourceLayerIndex = it, this.bucketIndex = _t, this.tileID = Yt;
                  }, ia = function(tt) {
                    this.crossSourceCollisions = tt, this.maxGroupID = 0, this.collisionGroups = {};
                  };
                  ia.prototype.get = function(tt) {
                    if (this.crossSourceCollisions)
                      return {
                        ID: 0,
                        predicate: null
                      };
                    if (!this.collisionGroups[tt]) {
                      var bt = ++this.maxGroupID;
                      this.collisionGroups[tt] = {
                        ID: bt,
                        predicate: function(it) {
                          return it.collisionGroupID === bt;
                        }
                      };
                    }
                    return this.collisionGroups[tt];
                  };
                  function Ca(mt, tt, bt, it, _t) {
                    var Yt = n.getAnchorAlignment(mt), le = Yt.horizontalAlign, Ee = Yt.verticalAlign, $e = -(le - 0.5) * tt, vr = -(Ee - 0.5) * bt, Lr = n.evaluateVariableOffset(mt, it);
                    return new n.Point($e + Lr[0] * _t, vr + Lr[1] * _t);
                  }
                  function Qr(mt, tt, bt, it, _t, Yt) {
                    var le = mt.x1, Ee = mt.x2, $e = mt.y1, vr = mt.y2, Lr = mt.anchorPointX, Hr = mt.anchorPointY, Ur = new n.Point(tt, bt);
                    return it && Ur._rotate(_t ? Yt : -Yt), {
                      x1: le + Ur.x,
                      y1: $e + Ur.y,
                      x2: Ee + Ur.x,
                      y2: vr + Ur.y,
                      anchorPointX: Lr,
                      anchorPointY: Hr
                    };
                  }
                  var pn = function(tt, bt, it, _t) {
                    this.transform = tt.clone(), this.collisionIndex = new Un(this.transform), this.placements = {}, this.opacities = {}, this.variableOffsets = {}, this.stale = !1, this.commitTime = 0, this.fadeDuration = bt, this.retainedQueryData = {}, this.collisionGroups = new ia(it), this.collisionCircleArrays = {}, this.prevPlacement = _t, _t && (_t.prevPlacement = void 0), this.placedOrientations = {};
                  };
                  pn.prototype.getBucketParts = function(tt, bt, it, _t) {
                    var Yt = it.getBucket(bt), le = it.latestFeatureIndex;
                    if (!(!Yt || !le || bt.id !== Yt.layerIds[0])) {
                      var Ee = it.collisionBoxArray, $e = Yt.layers[0].layout, vr = Math.pow(2, this.transform.zoom - it.tileID.overscaledZ), Lr = it.tileSize / n.EXTENT, Hr = this.transform.calculatePosMatrix(it.tileID.toUnwrapped()), Ur = $e.get("text-pitch-alignment") === "map", hn = $e.get("text-rotation-alignment") === "map", En = Fn(it, 1, this.transform.zoom), Mn = zr(Hr, Ur, hn, this.transform, En), _n = null;
                      if (Ur) {
                        var In = Tn(Hr, Ur, hn, this.transform, En);
                        _n = n.multiply([], this.transform.labelPlaneMatrix, In);
                      }
                      this.retainedQueryData[Yt.bucketInstanceId] = new Gi(Yt.bucketInstanceId, le, Yt.sourceLayerIndex, Yt.index, it.tileID);
                      var Kn = {
                        bucket: Yt,
                        layout: $e,
                        posMatrix: Hr,
                        textLabelPlaneMatrix: Mn,
                        labelToScreenMatrix: _n,
                        scale: vr,
                        textPixelRatio: Lr,
                        holdingForFade: it.holdingForFade(),
                        collisionBoxArray: Ee,
                        partiallyEvaluatedTextSize: n.evaluateSizeForZoom(Yt.textSizeData, this.transform.zoom),
                        collisionGroup: this.collisionGroups.get(Yt.sourceID)
                      };
                      if (_t)
                        for (var xi = 0, Ei = Yt.sortKeyRanges; xi < Ei.length; xi += 1) {
                          var zi = Ei[xi], Vi = zi.sortKey, Di = zi.symbolInstanceStart, Hi = zi.symbolInstanceEnd;
                          tt.push({
                            sortKey: Vi,
                            symbolInstanceStart: Di,
                            symbolInstanceEnd: Hi,
                            parameters: Kn
                          });
                        }
                      else
                        tt.push({
                          symbolInstanceStart: 0,
                          symbolInstanceEnd: Yt.symbolInstances.length,
                          parameters: Kn
                        });
                    }
                  }, pn.prototype.attemptAnchorPlacement = function(tt, bt, it, _t, Yt, le, Ee, $e, vr, Lr, Hr, Ur, hn, En, Mn) {
                    var _n = [
                      Ur.textOffset0,
                      Ur.textOffset1
                    ], In = Ca(tt, it, _t, _n, Yt), Kn = this.collisionIndex.placeCollisionBox(Qr(bt, In.x, In.y, le, Ee, this.transform.angle), Hr, $e, vr, Lr.predicate);
                    if (Mn) {
                      var xi = this.collisionIndex.placeCollisionBox(Qr(Mn, In.x, In.y, le, Ee, this.transform.angle), Hr, $e, vr, Lr.predicate);
                      if (xi.box.length === 0)
                        return;
                    }
                    if (Kn.box.length > 0) {
                      var Ei;
                      return this.prevPlacement && this.prevPlacement.variableOffsets[Ur.crossTileID] && this.prevPlacement.placements[Ur.crossTileID] && this.prevPlacement.placements[Ur.crossTileID].text && (Ei = this.prevPlacement.variableOffsets[Ur.crossTileID].anchor), this.variableOffsets[Ur.crossTileID] = {
                        textOffset: _n,
                        width: it,
                        height: _t,
                        anchor: tt,
                        textBoxScale: Yt,
                        prevAnchor: Ei
                      }, this.markUsedJustification(hn, tt, Ur, En), hn.allowVerticalPlacement && (this.markUsedOrientation(hn, En, Ur), this.placedOrientations[Ur.crossTileID] = En), {
                        shift: In,
                        placedGlyphBoxes: Kn
                      };
                    }
                  }, pn.prototype.placeLayerBucketPart = function(tt, bt, it) {
                    var _t = this, Yt = tt.parameters, le = Yt.bucket, Ee = Yt.layout, $e = Yt.posMatrix, vr = Yt.textLabelPlaneMatrix, Lr = Yt.labelToScreenMatrix, Hr = Yt.textPixelRatio, Ur = Yt.holdingForFade, hn = Yt.collisionBoxArray, En = Yt.partiallyEvaluatedTextSize, Mn = Yt.collisionGroup, _n = Ee.get("text-optional"), In = Ee.get("icon-optional"), Kn = Ee.get("text-allow-overlap"), xi = Ee.get("icon-allow-overlap"), Ei = Ee.get("text-rotation-alignment") === "map", zi = Ee.get("text-pitch-alignment") === "map", Vi = Ee.get("icon-text-fit") !== "none", Di = Ee.get("symbol-z-order") === "viewport-y", Hi = Kn && (xi || !le.hasIconData() || In), Ki = xi && (Kn || !le.hasTextData() || _n);
                    !le.collisionArrays && hn && le.deserializeCollisionBoxes(hn);
                    var na = function(_a, co) {
                      if (!bt[_a.crossTileID]) {
                        if (Ur) {
                          _t.placements[_a.crossTileID] = new di(!1, !1, !1);
                          return;
                        }
                        var $a = !1, po = !1, Mo = !0, Zo = null, _o = {
                          box: null,
                          offscreen: null
                        }, ko = {
                          box: null,
                          offscreen: null
                        }, to = null, Eo = null, As = null, js = 0, lc = 0, uc = 0;
                        co.textFeatureIndex ? js = co.textFeatureIndex : _a.useRuntimeCollisionCircles && (js = _a.featureIndex), co.verticalTextFeatureIndex && (lc = co.verticalTextFeatureIndex);
                        var Pl = co.textBox;
                        if (Pl) {
                          var au = function(ps) {
                            var $s = n.WritingMode.horizontal;
                            if (le.allowVerticalPlacement && !ps && _t.prevPlacement) {
                              var xu = _t.prevPlacement.placedOrientations[_a.crossTileID];
                              xu && (_t.placedOrientations[_a.crossTileID] = xu, $s = xu, _t.markUsedOrientation(le, $s, _a));
                            }
                            return $s;
                          }, nf = function(ps, $s) {
                            if (le.allowVerticalPlacement && _a.numVerticalGlyphVertices > 0 && co.verticalTextBox)
                              for (var xu = 0, Bh = le.writingModes; xu < Bh.length; xu += 1) {
                                var yv = Bh[xu];
                                if (yv === n.WritingMode.vertical ? (_o = $s(), ko = _o) : _o = ps(), _o && _o.box && _o.box.length)
                                  break;
                              }
                            else
                              _o = ps();
                          };
                          if (Ee.get("text-variable-anchor")) {
                            var Ou = Ee.get("text-variable-anchor");
                            if (_t.prevPlacement && _t.prevPlacement.variableOffsets[_a.crossTileID]) {
                              var Il = _t.prevPlacement.variableOffsets[_a.crossTileID];
                              Ou.indexOf(Il.anchor) > 0 && (Ou = Ou.filter(function(ps) {
                                return ps !== Il.anchor;
                              }), Ou.unshift(Il.anchor));
                            }
                            var Qo = function(ps, $s, xu) {
                              for (var Bh = ps.x2 - ps.x1, yv = ps.y2 - ps.y1, kp = _a.textBoxScale, Gv = Vi && !xi ? $s : null, pd = {
                                box: [],
                                offscreen: !1
                              }, zp = Kn ? Ou.length * 2 : Ou.length, nv = 0; nv < zp; ++nv) {
                                var Ot = Ou[nv % Ou.length], R = nv >= Ou.length, J = _t.attemptAnchorPlacement(Ot, ps, Bh, yv, kp, Ei, zi, Hr, $e, Mn, R, _a, le, xu, Gv);
                                if (J && (pd = J.placedGlyphBoxes, pd && pd.box && pd.box.length)) {
                                  $a = !0, Zo = J.shift;
                                  break;
                                }
                              }
                              return pd;
                            }, af = function() {
                              return Qo(Pl, co.iconBox, n.WritingMode.horizontal);
                            }, mu = function() {
                              var ps = co.verticalTextBox, $s = _o && _o.box && _o.box.length;
                              return le.allowVerticalPlacement && !$s && _a.numVerticalGlyphVertices > 0 && ps ? Qo(ps, co.verticalIconBox, n.WritingMode.vertical) : {
                                box: null,
                                offscreen: null
                              };
                            };
                            nf(af, mu), _o && ($a = _o.box, Mo = _o.offscreen);
                            var Fh = au(_o && _o.box);
                            if (!$a && _t.prevPlacement) {
                              var hh = _t.prevPlacement.variableOffsets[_a.crossTileID];
                              hh && (_t.variableOffsets[_a.crossTileID] = hh, _t.markUsedJustification(le, hh.anchor, _a, Fh));
                            }
                          } else {
                            var cc = function(ps, $s) {
                              var xu = _t.collisionIndex.placeCollisionBox(ps, Kn, Hr, $e, Mn.predicate);
                              return xu && xu.box && xu.box.length && (_t.markUsedOrientation(le, $s, _a), _t.placedOrientations[_a.crossTileID] = $s), xu;
                            }, Zl = function() {
                              return cc(Pl, n.WritingMode.horizontal);
                            }, fc = function() {
                              var ps = co.verticalTextBox;
                              return le.allowVerticalPlacement && _a.numVerticalGlyphVertices > 0 && ps ? cc(ps, n.WritingMode.vertical) : {
                                box: null,
                                offscreen: null
                              };
                            };
                            nf(Zl, fc), au(_o && _o.box && _o.box.length);
                          }
                        }
                        if (to = _o, $a = to && to.box && to.box.length > 0, Mo = to && to.offscreen, _a.useRuntimeCollisionCircles) {
                          var Is = le.text.placedSymbolArray.get(_a.centerJustifiedTextSymbolIndex), Nd = n.evaluateSizeForFeature(le.textSizeData, En, Is), Ud = Ee.get("text-padding"), Rl = _a.collisionCircleDiameter;
                          Eo = _t.collisionIndex.placeCollisionCircles(Kn, Is, le.lineVertexArray, le.glyphOffsetArray, Nd, $e, vr, Lr, it, zi, Mn.predicate, Rl, Ud), $a = Kn || Eo.circles.length > 0 && !Eo.collisionDetected, Mo = Mo && Eo.offscreen;
                        }
                        if (co.iconFeatureIndex && (uc = co.iconFeatureIndex), co.iconBox) {
                          var dd = function(ps) {
                            var $s = Vi && Zo ? Qr(ps, Zo.x, Zo.y, Ei, zi, _t.transform.angle) : ps;
                            return _t.collisionIndex.placeCollisionBox($s, xi, Hr, $e, Mn.predicate);
                          };
                          ko && ko.box && ko.box.length && co.verticalIconBox ? (As = dd(co.verticalIconBox), po = As.box.length > 0) : (As = dd(co.iconBox), po = As.box.length > 0), Mo = Mo && As.offscreen;
                        }
                        var rv = _n || _a.numHorizontalGlyphVertices === 0 && _a.numVerticalGlyphVertices === 0, vd = In || _a.numIconVertices === 0;
                        if (!rv && !vd ? po = $a = po && $a : vd ? rv || (po = po && $a) : $a = po && $a, $a && to && to.box && (ko && ko.box && lc ? _t.collisionIndex.insertCollisionBox(to.box, Ee.get("text-ignore-placement"), le.bucketInstanceId, lc, Mn.ID) : _t.collisionIndex.insertCollisionBox(to.box, Ee.get("text-ignore-placement"), le.bucketInstanceId, js, Mn.ID)), po && As && _t.collisionIndex.insertCollisionBox(As.box, Ee.get("icon-ignore-placement"), le.bucketInstanceId, uc, Mn.ID), Eo && ($a && _t.collisionIndex.insertCollisionCircles(Eo.circles, Ee.get("text-ignore-placement"), le.bucketInstanceId, js, Mn.ID), it)) {
                          var Oh = le.bucketInstanceId, dh = _t.collisionCircleArrays[Oh];
                          dh === void 0 && (dh = _t.collisionCircleArrays[Oh] = new Ai());
                          for (var vh = 0; vh < Eo.circles.length; vh += 4)
                            dh.circles.push(Eo.circles[vh + 0]), dh.circles.push(Eo.circles[vh + 1]), dh.circles.push(Eo.circles[vh + 2]), dh.circles.push(Eo.collisionDetected ? 1 : 0);
                        }
                        _t.placements[_a.crossTileID] = new di($a || Hi, po || Ki, Mo || le.justReloaded), bt[_a.crossTileID] = !0;
                      }
                    };
                    if (Di)
                      for (var da = le.getSortedSymbolIndexes(this.transform.angle), la = da.length - 1; la >= 0; --la) {
                        var Da = da[la];
                        na(le.symbolInstances.get(Da), le.collisionArrays[Da]);
                      }
                    else
                      for (var wo = tt.symbolInstanceStart; wo < tt.symbolInstanceEnd; wo++)
                        na(le.symbolInstances.get(wo), le.collisionArrays[wo]);
                    if (it && le.bucketInstanceId in this.collisionCircleArrays) {
                      var uo = this.collisionCircleArrays[le.bucketInstanceId];
                      n.invert(uo.invProjMatrix, $e), uo.viewportMatrix = this.collisionIndex.getViewportMatrix();
                    }
                    le.justReloaded = !1;
                  }, pn.prototype.markUsedJustification = function(tt, bt, it, _t) {
                    var Yt = {
                      left: it.leftJustifiedTextSymbolIndex,
                      center: it.centerJustifiedTextSymbolIndex,
                      right: it.rightJustifiedTextSymbolIndex
                    }, le;
                    _t === n.WritingMode.vertical ? le = it.verticalPlacedTextSymbolIndex : le = Yt[n.getAnchorJustification(bt)];
                    for (var Ee = [
                      it.leftJustifiedTextSymbolIndex,
                      it.centerJustifiedTextSymbolIndex,
                      it.rightJustifiedTextSymbolIndex,
                      it.verticalPlacedTextSymbolIndex
                    ], $e = 0, vr = Ee; $e < vr.length; $e += 1) {
                      var Lr = vr[$e];
                      Lr >= 0 && (le >= 0 && Lr !== le ? tt.text.placedSymbolArray.get(Lr).crossTileID = 0 : tt.text.placedSymbolArray.get(Lr).crossTileID = it.crossTileID);
                    }
                  }, pn.prototype.markUsedOrientation = function(tt, bt, it) {
                    for (var _t = bt === n.WritingMode.horizontal || bt === n.WritingMode.horizontalOnly ? bt : 0, Yt = bt === n.WritingMode.vertical ? bt : 0, le = [
                      it.leftJustifiedTextSymbolIndex,
                      it.centerJustifiedTextSymbolIndex,
                      it.rightJustifiedTextSymbolIndex
                    ], Ee = 0, $e = le; Ee < $e.length; Ee += 1) {
                      var vr = $e[Ee];
                      tt.text.placedSymbolArray.get(vr).placedOrientation = _t;
                    }
                    it.verticalPlacedTextSymbolIndex && (tt.text.placedSymbolArray.get(it.verticalPlacedTextSymbolIndex).placedOrientation = Yt);
                  }, pn.prototype.commit = function(tt) {
                    this.commitTime = tt, this.zoomAtLastRecencyCheck = this.transform.zoom;
                    var bt = this.prevPlacement, it = !1;
                    this.prevZoomAdjustment = bt ? bt.zoomAdjustment(this.transform.zoom) : 0;
                    var _t = bt ? bt.symbolFadeChange(tt) : 1, Yt = bt ? bt.opacities : {}, le = bt ? bt.variableOffsets : {}, Ee = bt ? bt.placedOrientations : {};
                    for (var $e in this.placements) {
                      var vr = this.placements[$e], Lr = Yt[$e];
                      Lr ? (this.opacities[$e] = new Nn(Lr, _t, vr.text, vr.icon), it = it || vr.text !== Lr.text.placed || vr.icon !== Lr.icon.placed) : (this.opacities[$e] = new Nn(null, _t, vr.text, vr.icon, vr.skipFade), it = it || vr.text || vr.icon);
                    }
                    for (var Hr in Yt) {
                      var Ur = Yt[Hr];
                      if (!this.opacities[Hr]) {
                        var hn = new Nn(Ur, _t, !1, !1);
                        hn.isHidden() || (this.opacities[Hr] = hn, it = it || Ur.text.placed || Ur.icon.placed);
                      }
                    }
                    for (var En in le)
                      !this.variableOffsets[En] && this.opacities[En] && !this.opacities[En].isHidden() && (this.variableOffsets[En] = le[En]);
                    for (var Mn in Ee)
                      !this.placedOrientations[Mn] && this.opacities[Mn] && !this.opacities[Mn].isHidden() && (this.placedOrientations[Mn] = Ee[Mn]);
                    it ? this.lastPlacementChangeTime = tt : typeof this.lastPlacementChangeTime != "number" && (this.lastPlacementChangeTime = bt ? bt.lastPlacementChangeTime : tt);
                  }, pn.prototype.updateLayerOpacities = function(tt, bt) {
                    for (var it = {}, _t = 0, Yt = bt; _t < Yt.length; _t += 1) {
                      var le = Yt[_t], Ee = le.getBucket(tt);
                      Ee && le.latestFeatureIndex && tt.id === Ee.layerIds[0] && this.updateBucketOpacities(Ee, it, le.collisionBoxArray);
                    }
                  }, pn.prototype.updateBucketOpacities = function(tt, bt, it) {
                    var _t = this;
                    tt.hasTextData() && tt.text.opacityVertexArray.clear(), tt.hasIconData() && tt.icon.opacityVertexArray.clear(), tt.hasIconCollisionBoxData() && tt.iconCollisionBox.collisionVertexArray.clear(), tt.hasTextCollisionBoxData() && tt.textCollisionBox.collisionVertexArray.clear();
                    var Yt = tt.layers[0].layout, le = new Nn(null, 0, !1, !1, !0), Ee = Yt.get("text-allow-overlap"), $e = Yt.get("icon-allow-overlap"), vr = Yt.get("text-variable-anchor"), Lr = Yt.get("text-rotation-alignment") === "map", Hr = Yt.get("text-pitch-alignment") === "map", Ur = Yt.get("icon-text-fit") !== "none", hn = new Nn(null, 0, Ee && ($e || !tt.hasIconData() || Yt.get("icon-optional")), $e && (Ee || !tt.hasTextData() || Yt.get("text-optional")), !0);
                    !tt.collisionArrays && it && (tt.hasIconCollisionBoxData() || tt.hasTextCollisionBoxData()) && tt.deserializeCollisionBoxes(it);
                    for (var En = function(Kn, xi, Ei) {
                      for (var zi = 0; zi < xi / 4; zi++)
                        Kn.opacityVertexArray.emplaceBack(Ei);
                    }, Mn = function(Kn) {
                      var xi = tt.symbolInstances.get(Kn), Ei = xi.numHorizontalGlyphVertices, zi = xi.numVerticalGlyphVertices, Vi = xi.crossTileID, Di = bt[Vi], Hi = _t.opacities[Vi];
                      Di ? Hi = le : Hi || (Hi = hn, _t.opacities[Vi] = Hi), bt[Vi] = !0;
                      var Ki = Ei > 0 || zi > 0, na = xi.numIconVertices > 0, da = _t.placedOrientations[xi.crossTileID], la = da === n.WritingMode.vertical, Da = da === n.WritingMode.horizontal || da === n.WritingMode.horizontalOnly;
                      if (Ki) {
                        var wo = wn(Hi.text), uo = la ? Dn : wo;
                        En(tt.text, Ei, uo);
                        var _a = Da ? Dn : wo;
                        En(tt.text, zi, _a);
                        var co = Hi.text.isHidden();
                        [
                          xi.rightJustifiedTextSymbolIndex,
                          xi.centerJustifiedTextSymbolIndex,
                          xi.leftJustifiedTextSymbolIndex
                        ].forEach(function(uc) {
                          uc >= 0 && (tt.text.placedSymbolArray.get(uc).hidden = co || la ? 1 : 0);
                        }), xi.verticalPlacedTextSymbolIndex >= 0 && (tt.text.placedSymbolArray.get(xi.verticalPlacedTextSymbolIndex).hidden = co || Da ? 1 : 0);
                        var $a = _t.variableOffsets[xi.crossTileID];
                        $a && _t.markUsedJustification(tt, $a.anchor, xi, da);
                        var po = _t.placedOrientations[xi.crossTileID];
                        po && (_t.markUsedJustification(tt, "left", xi, po), _t.markUsedOrientation(tt, po, xi));
                      }
                      if (na) {
                        var Mo = wn(Hi.icon), Zo = !(Ur && xi.verticalPlacedIconSymbolIndex && la);
                        if (xi.placedIconSymbolIndex >= 0) {
                          var _o = Zo ? Mo : Dn;
                          En(tt.icon, xi.numIconVertices, _o), tt.icon.placedSymbolArray.get(xi.placedIconSymbolIndex).hidden = Hi.icon.isHidden();
                        }
                        if (xi.verticalPlacedIconSymbolIndex >= 0) {
                          var ko = Zo ? Dn : Mo;
                          En(tt.icon, xi.numVerticalIconVertices, ko), tt.icon.placedSymbolArray.get(xi.verticalPlacedIconSymbolIndex).hidden = Hi.icon.isHidden();
                        }
                      }
                      if (tt.hasIconCollisionBoxData() || tt.hasTextCollisionBoxData()) {
                        var to = tt.collisionArrays[Kn];
                        if (to) {
                          var Eo = new n.Point(0, 0);
                          if (to.textBox || to.verticalTextBox) {
                            var As = !0;
                            if (vr) {
                              var js = _t.variableOffsets[Vi];
                              js ? (Eo = Ca(js.anchor, js.width, js.height, js.textOffset, js.textBoxScale), Lr && Eo._rotate(Hr ? _t.transform.angle : -_t.transform.angle)) : As = !1;
                            }
                            to.textBox && $r(tt.textCollisionBox.collisionVertexArray, Hi.text.placed, !As || la, Eo.x, Eo.y), to.verticalTextBox && $r(tt.textCollisionBox.collisionVertexArray, Hi.text.placed, !As || Da, Eo.x, Eo.y);
                          }
                          var lc = !!(!Da && to.verticalIconBox);
                          to.iconBox && $r(tt.iconCollisionBox.collisionVertexArray, Hi.icon.placed, lc, Ur ? Eo.x : 0, Ur ? Eo.y : 0), to.verticalIconBox && $r(tt.iconCollisionBox.collisionVertexArray, Hi.icon.placed, !lc, Ur ? Eo.x : 0, Ur ? Eo.y : 0);
                        }
                      }
                    }, _n = 0; _n < tt.symbolInstances.length; _n++)
                      Mn(_n);
                    if (tt.sortFeatures(this.transform.angle), this.retainedQueryData[tt.bucketInstanceId] && (this.retainedQueryData[tt.bucketInstanceId].featureSortOrder = tt.featureSortOrder), tt.hasTextData() && tt.text.opacityVertexBuffer && tt.text.opacityVertexBuffer.updateData(tt.text.opacityVertexArray), tt.hasIconData() && tt.icon.opacityVertexBuffer && tt.icon.opacityVertexBuffer.updateData(tt.icon.opacityVertexArray), tt.hasIconCollisionBoxData() && tt.iconCollisionBox.collisionVertexBuffer && tt.iconCollisionBox.collisionVertexBuffer.updateData(tt.iconCollisionBox.collisionVertexArray), tt.hasTextCollisionBoxData() && tt.textCollisionBox.collisionVertexBuffer && tt.textCollisionBox.collisionVertexBuffer.updateData(tt.textCollisionBox.collisionVertexArray), tt.bucketInstanceId in this.collisionCircleArrays) {
                      var In = this.collisionCircleArrays[tt.bucketInstanceId];
                      tt.placementInvProjMatrix = In.invProjMatrix, tt.placementViewportMatrix = In.viewportMatrix, tt.collisionCircleArray = In.circles, delete this.collisionCircleArrays[tt.bucketInstanceId];
                    }
                  }, pn.prototype.symbolFadeChange = function(tt) {
                    return this.fadeDuration === 0 ? 1 : (tt - this.commitTime) / this.fadeDuration + this.prevZoomAdjustment;
                  }, pn.prototype.zoomAdjustment = function(tt) {
                    return Math.max(0, (this.transform.zoom - tt) / 1.5);
                  }, pn.prototype.hasTransitions = function(tt) {
                    return this.stale || tt - this.lastPlacementChangeTime < this.fadeDuration;
                  }, pn.prototype.stillRecent = function(tt, bt) {
                    var it = this.zoomAtLastRecencyCheck === bt ? 1 - this.zoomAdjustment(bt) : 1;
                    return this.zoomAtLastRecencyCheck = bt, this.commitTime + this.fadeDuration * it > tt;
                  }, pn.prototype.setStale = function() {
                    this.stale = !0;
                  };
                  function $r(mt, tt, bt, it, _t) {
                    mt.emplaceBack(tt ? 1 : 0, bt ? 1 : 0, it || 0, _t || 0), mt.emplaceBack(tt ? 1 : 0, bt ? 1 : 0, it || 0, _t || 0), mt.emplaceBack(tt ? 1 : 0, bt ? 1 : 0, it || 0, _t || 0), mt.emplaceBack(tt ? 1 : 0, bt ? 1 : 0, it || 0, _t || 0);
                  }
                  var mn = Math.pow(2, 25), Wn = Math.pow(2, 24), yi = Math.pow(2, 17), ei = Math.pow(2, 16), Jn = Math.pow(2, 9), en = Math.pow(2, 8), Sn = Math.pow(2, 1);
                  function wn(mt) {
                    if (mt.opacity === 0 && !mt.placed)
                      return 0;
                    if (mt.opacity === 1 && mt.placed)
                      return 4294967295;
                    var tt = mt.placed ? 1 : 0, bt = Math.floor(mt.opacity * 127);
                    return bt * mn + tt * Wn + bt * yi + tt * ei + bt * Jn + tt * en + bt * Sn + tt;
                  }
                  var Dn = 0, li = function(tt) {
                    this._sortAcrossTiles = tt.layout.get("symbol-z-order") !== "viewport-y" && tt.layout.get("symbol-sort-key").constantOr(1) !== void 0, this._currentTileIndex = 0, this._currentPartIndex = 0, this._seenCrossTileIDs = {}, this._bucketParts = [];
                  };
                  li.prototype.continuePlacement = function(tt, bt, it, _t, Yt) {
                    for (var le = this._bucketParts; this._currentTileIndex < tt.length; ) {
                      var Ee = tt[this._currentTileIndex];
                      if (bt.getBucketParts(le, _t, Ee, this._sortAcrossTiles), this._currentTileIndex++, Yt())
                        return !0;
                    }
                    for (this._sortAcrossTiles && (this._sortAcrossTiles = !1, le.sort(function(vr, Lr) {
                      return vr.sortKey - Lr.sortKey;
                    })); this._currentPartIndex < le.length; ) {
                      var $e = le[this._currentPartIndex];
                      if (bt.placeLayerBucketPart($e, this._seenCrossTileIDs, it), this._currentPartIndex++, Yt())
                        return !0;
                    }
                    return !1;
                  };
                  var fi = function(tt, bt, it, _t, Yt, le, Ee) {
                    this.placement = new pn(tt, Yt, le, Ee), this._currentPlacementIndex = bt.length - 1, this._forceFullPlacement = it, this._showCollisionBoxes = _t, this._done = !1;
                  };
                  fi.prototype.isDone = function() {
                    return this._done;
                  }, fi.prototype.continuePlacement = function(tt, bt, it) {
                    for (var _t = this, Yt = n.browser.now(), le = function() {
                      var Hr = n.browser.now() - Yt;
                      return _t._forceFullPlacement ? !1 : Hr > 2;
                    }; this._currentPlacementIndex >= 0; ) {
                      var Ee = tt[this._currentPlacementIndex], $e = bt[Ee], vr = this.placement.collisionIndex.transform.zoom;
                      if ($e.type === "symbol" && (!$e.minzoom || $e.minzoom <= vr) && (!$e.maxzoom || $e.maxzoom > vr)) {
                        this._inProgressLayer || (this._inProgressLayer = new li($e));
                        var Lr = this._inProgressLayer.continuePlacement(it[$e.source], this.placement, this._showCollisionBoxes, $e, le);
                        if (Lr)
                          return;
                        delete this._inProgressLayer;
                      }
                      this._currentPlacementIndex--;
                    }
                    this._done = !0;
                  }, fi.prototype.commit = function(tt) {
                    return this.placement.commit(tt), this.placement;
                  };
                  var _i = 512 / n.EXTENT / 2, Ti = function(tt, bt, it) {
                    this.tileID = tt, this.indexedSymbolInstances = {}, this.bucketInstanceId = it;
                    for (var _t = 0; _t < bt.length; _t++) {
                      var Yt = bt.get(_t), le = Yt.key;
                      this.indexedSymbolInstances[le] || (this.indexedSymbolInstances[le] = []), this.indexedSymbolInstances[le].push({
                        crossTileID: Yt.crossTileID,
                        coord: this.getScaledCoordinates(Yt, tt)
                      });
                    }
                  };
                  Ti.prototype.getScaledCoordinates = function(tt, bt) {
                    var it = bt.canonical.z - this.tileID.canonical.z, _t = _i / Math.pow(2, it);
                    return {
                      x: Math.floor((bt.canonical.x * n.EXTENT + tt.anchorX) * _t),
                      y: Math.floor((bt.canonical.y * n.EXTENT + tt.anchorY) * _t)
                    };
                  }, Ti.prototype.findMatches = function(tt, bt, it) {
                    for (var _t = this.tileID.canonical.z < bt.canonical.z ? 1 : Math.pow(2, this.tileID.canonical.z - bt.canonical.z), Yt = 0; Yt < tt.length; Yt++) {
                      var le = tt.get(Yt);
                      if (!le.crossTileID) {
                        var Ee = this.indexedSymbolInstances[le.key];
                        if (Ee)
                          for (var $e = this.getScaledCoordinates(le, bt), vr = 0, Lr = Ee; vr < Lr.length; vr += 1) {
                            var Hr = Lr[vr];
                            if (Math.abs(Hr.coord.x - $e.x) <= _t && Math.abs(Hr.coord.y - $e.y) <= _t && !it[Hr.crossTileID]) {
                              it[Hr.crossTileID] = !0, le.crossTileID = Hr.crossTileID;
                              break;
                            }
                          }
                      }
                    }
                  };
                  var bi = function() {
                    this.maxCrossTileID = 0;
                  };
                  bi.prototype.generate = function() {
                    return ++this.maxCrossTileID;
                  };
                  var ki = function() {
                    this.indexes = {}, this.usedCrossTileIDs = {}, this.lng = 0;
                  };
                  ki.prototype.handleWrapJump = function(tt) {
                    var bt = Math.round((tt - this.lng) / 360);
                    if (bt !== 0)
                      for (var it in this.indexes) {
                        var _t = this.indexes[it], Yt = {};
                        for (var le in _t) {
                          var Ee = _t[le];
                          Ee.tileID = Ee.tileID.unwrapTo(Ee.tileID.wrap + bt), Yt[Ee.tileID.key] = Ee;
                        }
                        this.indexes[it] = Yt;
                      }
                    this.lng = tt;
                  }, ki.prototype.addBucket = function(tt, bt, it) {
                    if (this.indexes[tt.overscaledZ] && this.indexes[tt.overscaledZ][tt.key]) {
                      if (this.indexes[tt.overscaledZ][tt.key].bucketInstanceId === bt.bucketInstanceId)
                        return !1;
                      this.removeBucketCrossTileIDs(tt.overscaledZ, this.indexes[tt.overscaledZ][tt.key]);
                    }
                    for (var _t = 0; _t < bt.symbolInstances.length; _t++) {
                      var Yt = bt.symbolInstances.get(_t);
                      Yt.crossTileID = 0;
                    }
                    this.usedCrossTileIDs[tt.overscaledZ] || (this.usedCrossTileIDs[tt.overscaledZ] = {});
                    var le = this.usedCrossTileIDs[tt.overscaledZ];
                    for (var Ee in this.indexes) {
                      var $e = this.indexes[Ee];
                      if (Number(Ee) > tt.overscaledZ)
                        for (var vr in $e) {
                          var Lr = $e[vr];
                          Lr.tileID.isChildOf(tt) && Lr.findMatches(bt.symbolInstances, tt, le);
                        }
                      else {
                        var Hr = tt.scaledTo(Number(Ee)), Ur = $e[Hr.key];
                        Ur && Ur.findMatches(bt.symbolInstances, tt, le);
                      }
                    }
                    for (var hn = 0; hn < bt.symbolInstances.length; hn++) {
                      var En = bt.symbolInstances.get(hn);
                      En.crossTileID || (En.crossTileID = it.generate(), le[En.crossTileID] = !0);
                    }
                    return this.indexes[tt.overscaledZ] === void 0 && (this.indexes[tt.overscaledZ] = {}), this.indexes[tt.overscaledZ][tt.key] = new Ti(tt, bt.symbolInstances, bt.bucketInstanceId), !0;
                  }, ki.prototype.removeBucketCrossTileIDs = function(tt, bt) {
                    for (var it in bt.indexedSymbolInstances)
                      for (var _t = 0, Yt = bt.indexedSymbolInstances[it]; _t < Yt.length; _t += 1) {
                        var le = Yt[_t];
                        delete this.usedCrossTileIDs[tt][le.crossTileID];
                      }
                  }, ki.prototype.removeStaleBuckets = function(tt) {
                    var bt = !1;
                    for (var it in this.indexes) {
                      var _t = this.indexes[it];
                      for (var Yt in _t)
                        tt[_t[Yt].bucketInstanceId] || (this.removeBucketCrossTileIDs(it, _t[Yt]), delete _t[Yt], bt = !0);
                    }
                    return bt;
                  };
                  var Bi = function() {
                    this.layerIndexes = {}, this.crossTileIDs = new bi(), this.maxBucketInstanceId = 0, this.bucketsInCurrentPlacement = {};
                  };
                  Bi.prototype.addLayer = function(tt, bt, it) {
                    var _t = this.layerIndexes[tt.id];
                    _t === void 0 && (_t = this.layerIndexes[tt.id] = new ki());
                    var Yt = !1, le = {};
                    _t.handleWrapJump(it);
                    for (var Ee = 0, $e = bt; Ee < $e.length; Ee += 1) {
                      var vr = $e[Ee], Lr = vr.getBucket(tt);
                      !Lr || tt.id !== Lr.layerIds[0] || (Lr.bucketInstanceId || (Lr.bucketInstanceId = ++this.maxBucketInstanceId), _t.addBucket(vr.tileID, Lr, this.crossTileIDs) && (Yt = !0), le[Lr.bucketInstanceId] = !0);
                    }
                    return _t.removeStaleBuckets(le) && (Yt = !0), Yt;
                  }, Bi.prototype.pruneUnusedLayers = function(tt) {
                    var bt = {};
                    tt.forEach(function(_t) {
                      bt[_t] = !0;
                    });
                    for (var it in this.layerIndexes)
                      bt[it] || delete this.layerIndexes[it];
                  };
                  var ra = function(mt, tt) {
                    return n.emitValidationErrors(mt, tt && tt.filter(function(bt) {
                      return bt.identifier !== "source.canvas";
                    }));
                  }, Ea = n.pick(tr, [
                    "addLayer",
                    "removeLayer",
                    "setPaintProperty",
                    "setLayoutProperty",
                    "setFilter",
                    "addSource",
                    "removeSource",
                    "setLayerZoomRange",
                    "setLight",
                    "setTransition",
                    "setGeoJSONSourceData"
                  ]), Io = n.pick(tr, [
                    "setCenter",
                    "setZoom",
                    "setBearing",
                    "setPitch"
                  ]), go = Tr(), Ss = function(mt) {
                    function tt(bt, it) {
                      var _t = this;
                      it === void 0 && (it = {}), mt.call(this), this.map = bt, this.dispatcher = new z(Gr(), this), this.imageManager = new x(), this.imageManager.setEventedParent(this), this.glyphManager = new m(bt._requestManager, it.localIdeographFontFamily), this.lineAtlas = new w(256, 512), this.crossTileSymbolIndex = new Bi(), this._layers = {}, this._serializedLayers = {}, this._order = [], this.sourceCaches = {}, this.zoomHistory = new n.ZoomHistory(), this._loaded = !1, this._availableImages = [], this._resetUpdates(), this.dispatcher.broadcast("setReferrer", n.getReferrer());
                      var Yt = this;
                      this._rtlTextPluginCallback = tt.registerForPluginStateChange(function(le) {
                        var Ee = {
                          pluginStatus: le.pluginStatus,
                          pluginURL: le.pluginURL
                        };
                        Yt.dispatcher.broadcast("syncRTLPluginState", Ee, function($e, vr) {
                          if (n.triggerPluginCompletionEvent($e), vr) {
                            var Lr = vr.every(function(Ur) {
                              return Ur;
                            });
                            if (Lr)
                              for (var Hr in Yt.sourceCaches)
                                Yt.sourceCaches[Hr].reload();
                          }
                        });
                      }), this.on("data", function(le) {
                        if (!(le.dataType !== "source" || le.sourceDataType !== "metadata")) {
                          var Ee = _t.sourceCaches[le.sourceId];
                          if (Ee) {
                            var $e = Ee.getSource();
                            if (!(!$e || !$e.vectorLayerIds))
                              for (var vr in _t._layers) {
                                var Lr = _t._layers[vr];
                                Lr.source === $e.id && _t._validateLayer(Lr);
                              }
                          }
                        }
                      });
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.loadURL = function(it, _t) {
                      var Yt = this;
                      _t === void 0 && (_t = {}), this.fire(new n.Event("dataloading", { dataType: "style" }));
                      var le = typeof _t.validate == "boolean" ? _t.validate : !n.isMapboxURL(it);
                      it = this.map._requestManager.normalizeStyleURL(it, _t.accessToken);
                      var Ee = this.map._requestManager.transformRequest(it, n.ResourceType.Style);
                      this._request = n.getJSON(Ee, function($e, vr) {
                        Yt._request = null, $e ? Yt.fire(new n.ErrorEvent($e)) : vr && Yt._load(vr, le);
                      });
                    }, tt.prototype.loadJSON = function(it, _t) {
                      var Yt = this;
                      _t === void 0 && (_t = {}), this.fire(new n.Event("dataloading", { dataType: "style" })), this._request = n.browser.frame(function() {
                        Yt._request = null, Yt._load(it, _t.validate !== !1);
                      });
                    }, tt.prototype.loadEmpty = function() {
                      this.fire(new n.Event("dataloading", { dataType: "style" })), this._load(go, !1);
                    }, tt.prototype._load = function(it, _t) {
                      if (!(_t && ra(this, n.validateStyle(it)))) {
                        this._loaded = !0, this.stylesheet = it;
                        for (var Yt in it.sources)
                          this.addSource(Yt, it.sources[Yt], { validate: !1 });
                        it.sprite ? this._loadSprite(it.sprite) : this.imageManager.setLoaded(!0), this.glyphManager.setURL(it.glyphs);
                        var le = Er(this.stylesheet.layers);
                        this._order = le.map(function(Lr) {
                          return Lr.id;
                        }), this._layers = {}, this._serializedLayers = {};
                        for (var Ee = 0, $e = le; Ee < $e.length; Ee += 1) {
                          var vr = $e[Ee];
                          vr = n.createStyleLayer(vr), vr.setEventedParent(this, { layer: { id: vr.id } }), this._layers[vr.id] = vr, this._serializedLayers[vr.id] = vr.serialize();
                        }
                        this.dispatcher.broadcast("setLayers", this._serializeLayers(this._order)), this.light = new E(this.stylesheet.light), this.fire(new n.Event("data", { dataType: "style" })), this.fire(new n.Event("style.load"));
                      }
                    }, tt.prototype._loadSprite = function(it) {
                      var _t = this;
                      this._spriteRequest = o(it, this.map._requestManager, function(Yt, le) {
                        if (_t._spriteRequest = null, Yt)
                          _t.fire(new n.ErrorEvent(Yt));
                        else if (le)
                          for (var Ee in le)
                            _t.imageManager.addImage(Ee, le[Ee]);
                        _t.imageManager.setLoaded(!0), _t._availableImages = _t.imageManager.listImages(), _t.dispatcher.broadcast("setImages", _t._availableImages), _t.fire(new n.Event("data", { dataType: "style" }));
                      });
                    }, tt.prototype._validateLayer = function(it) {
                      var _t = this.sourceCaches[it.source];
                      if (_t) {
                        var Yt = it.sourceLayer;
                        if (Yt) {
                          var le = _t.getSource();
                          (le.type === "geojson" || le.vectorLayerIds && le.vectorLayerIds.indexOf(Yt) === -1) && this.fire(new n.ErrorEvent(new Error('Source layer "' + Yt + '" does not exist on source "' + le.id + '" as specified by style layer "' + it.id + '"')));
                        }
                      }
                    }, tt.prototype.loaded = function() {
                      if (!this._loaded || Object.keys(this._updatedSources).length)
                        return !1;
                      for (var it in this.sourceCaches)
                        if (!this.sourceCaches[it].loaded())
                          return !1;
                      return !!this.imageManager.isLoaded();
                    }, tt.prototype._serializeLayers = function(it) {
                      for (var _t = [], Yt = 0, le = it; Yt < le.length; Yt += 1) {
                        var Ee = le[Yt], $e = this._layers[Ee];
                        $e.type !== "custom" && _t.push($e.serialize());
                      }
                      return _t;
                    }, tt.prototype.hasTransitions = function() {
                      if (this.light && this.light.hasTransition())
                        return !0;
                      for (var it in this.sourceCaches)
                        if (this.sourceCaches[it].hasTransition())
                          return !0;
                      for (var _t in this._layers)
                        if (this._layers[_t].hasTransition())
                          return !0;
                      return !1;
                    }, tt.prototype._checkLoaded = function() {
                      if (!this._loaded)
                        throw new Error("Style is not done loading");
                    }, tt.prototype.update = function(it) {
                      if (this._loaded) {
                        var _t = this._changed;
                        if (this._changed) {
                          var Yt = Object.keys(this._updatedLayers), le = Object.keys(this._removedLayers);
                          (Yt.length || le.length) && this._updateWorkerLayers(Yt, le);
                          for (var Ee in this._updatedSources) {
                            var $e = this._updatedSources[Ee];
                            $e === "reload" ? this._reloadSource(Ee) : $e === "clear" && this._clearSource(Ee);
                          }
                          this._updateTilesForChangedImages();
                          for (var vr in this._updatedPaintProps)
                            this._layers[vr].updateTransitions(it);
                          this.light.updateTransitions(it), this._resetUpdates();
                        }
                        var Lr = {};
                        for (var Hr in this.sourceCaches) {
                          var Ur = this.sourceCaches[Hr];
                          Lr[Hr] = Ur.used, Ur.used = !1;
                        }
                        for (var hn = 0, En = this._order; hn < En.length; hn += 1) {
                          var Mn = En[hn], _n = this._layers[Mn];
                          _n.recalculate(it, this._availableImages), !_n.isHidden(it.zoom) && _n.source && (this.sourceCaches[_n.source].used = !0);
                        }
                        for (var In in Lr) {
                          var Kn = this.sourceCaches[In];
                          Lr[In] !== Kn.used && Kn.fire(new n.Event("data", {
                            sourceDataType: "visibility",
                            dataType: "source",
                            sourceId: In
                          }));
                        }
                        this.light.recalculate(it), this.z = it.zoom, _t && this.fire(new n.Event("data", { dataType: "style" }));
                      }
                    }, tt.prototype._updateTilesForChangedImages = function() {
                      var it = Object.keys(this._changedImages);
                      if (it.length) {
                        for (var _t in this.sourceCaches)
                          this.sourceCaches[_t].reloadTilesForDependencies([
                            "icons",
                            "patterns"
                          ], it);
                        this._changedImages = {};
                      }
                    }, tt.prototype._updateWorkerLayers = function(it, _t) {
                      this.dispatcher.broadcast("updateLayers", {
                        layers: this._serializeLayers(it),
                        removedIds: _t
                      });
                    }, tt.prototype._resetUpdates = function() {
                      this._changed = !1, this._updatedLayers = {}, this._removedLayers = {}, this._updatedSources = {}, this._updatedPaintProps = {}, this._changedImages = {};
                    }, tt.prototype.setState = function(it) {
                      var _t = this;
                      if (this._checkLoaded(), ra(this, n.validateStyle(it)))
                        return !1;
                      it = n.clone$1(it), it.layers = Er(it.layers);
                      var Yt = hi(this.serialize(), it).filter(function(Ee) {
                        return !(Ee.command in Io);
                      });
                      if (Yt.length === 0)
                        return !1;
                      var le = Yt.filter(function(Ee) {
                        return !(Ee.command in Ea);
                      });
                      if (le.length > 0)
                        throw new Error("Unimplemented: " + le.map(function(Ee) {
                          return Ee.command;
                        }).join(", ") + ".");
                      return Yt.forEach(function(Ee) {
                        Ee.command !== "setTransition" && _t[Ee.command].apply(_t, Ee.args);
                      }), this.stylesheet = it, !0;
                    }, tt.prototype.addImage = function(it, _t) {
                      if (this.getImage(it))
                        return this.fire(new n.ErrorEvent(new Error("An image with this name already exists.")));
                      this.imageManager.addImage(it, _t), this._afterImageUpdated(it);
                    }, tt.prototype.updateImage = function(it, _t) {
                      this.imageManager.updateImage(it, _t);
                    }, tt.prototype.getImage = function(it) {
                      return this.imageManager.getImage(it);
                    }, tt.prototype.removeImage = function(it) {
                      if (!this.getImage(it))
                        return this.fire(new n.ErrorEvent(new Error("No image with this name exists.")));
                      this.imageManager.removeImage(it), this._afterImageUpdated(it);
                    }, tt.prototype._afterImageUpdated = function(it) {
                      this._availableImages = this.imageManager.listImages(), this._changedImages[it] = !0, this._changed = !0, this.dispatcher.broadcast("setImages", this._availableImages), this.fire(new n.Event("data", { dataType: "style" }));
                    }, tt.prototype.listImages = function() {
                      return this._checkLoaded(), this.imageManager.listImages();
                    }, tt.prototype.addSource = function(it, _t, Yt) {
                      var le = this;
                      if (Yt === void 0 && (Yt = {}), this._checkLoaded(), this.sourceCaches[it] !== void 0)
                        throw new Error("There is already a source with this ID");
                      if (!_t.type)
                        throw new Error("The type property must be defined, but only the following properties were given: " + Object.keys(_t).join(", ") + ".");
                      var Ee = [
                        "vector",
                        "raster",
                        "geojson",
                        "video",
                        "image"
                      ], $e = Ee.indexOf(_t.type) >= 0;
                      if (!($e && this._validate(n.validateStyle.source, "sources." + it, _t, null, Yt))) {
                        this.map && this.map._collectResourceTiming && (_t.collectResourceTiming = !0);
                        var vr = this.sourceCaches[it] = new lr(it, _t, this.dispatcher);
                        vr.style = this, vr.setEventedParent(this, function() {
                          return {
                            isSourceLoaded: le.loaded(),
                            source: vr.serialize(),
                            sourceId: it
                          };
                        }), vr.onAdd(this.map), this._changed = !0;
                      }
                    }, tt.prototype.removeSource = function(it) {
                      if (this._checkLoaded(), this.sourceCaches[it] === void 0)
                        throw new Error("There is no source with this ID");
                      for (var _t in this._layers)
                        if (this._layers[_t].source === it)
                          return this.fire(new n.ErrorEvent(new Error('Source "' + it + '" cannot be removed while layer "' + _t + '" is using it.')));
                      var Yt = this.sourceCaches[it];
                      delete this.sourceCaches[it], delete this._updatedSources[it], Yt.fire(new n.Event("data", {
                        sourceDataType: "metadata",
                        dataType: "source",
                        sourceId: it
                      })), Yt.setEventedParent(null), Yt.clearTiles(), Yt.onRemove && Yt.onRemove(this.map), this._changed = !0;
                    }, tt.prototype.setGeoJSONSourceData = function(it, _t) {
                      this._checkLoaded();
                      var Yt = this.sourceCaches[it].getSource();
                      Yt.setData(_t), this._changed = !0;
                    }, tt.prototype.getSource = function(it) {
                      return this.sourceCaches[it] && this.sourceCaches[it].getSource();
                    }, tt.prototype.addLayer = function(it, _t, Yt) {
                      Yt === void 0 && (Yt = {}), this._checkLoaded();
                      var le = it.id;
                      if (this.getLayer(le)) {
                        this.fire(new n.ErrorEvent(new Error('Layer with id "' + le + '" already exists on this map')));
                        return;
                      }
                      var Ee;
                      if (it.type === "custom") {
                        if (ra(this, n.validateCustomStyleLayer(it)))
                          return;
                        Ee = n.createStyleLayer(it);
                      } else {
                        if (typeof it.source == "object" && (this.addSource(le, it.source), it = n.clone$1(it), it = n.extend(it, { source: le })), this._validate(n.validateStyle.layer, "layers." + le, it, { arrayIndex: -1 }, Yt))
                          return;
                        Ee = n.createStyleLayer(it), this._validateLayer(Ee), Ee.setEventedParent(this, { layer: { id: le } }), this._serializedLayers[Ee.id] = Ee.serialize();
                      }
                      var $e = _t ? this._order.indexOf(_t) : this._order.length;
                      if (_t && $e === -1) {
                        this.fire(new n.ErrorEvent(new Error('Layer with id "' + _t + '" does not exist on this map.')));
                        return;
                      }
                      if (this._order.splice($e, 0, le), this._layerOrderChanged = !0, this._layers[le] = Ee, this._removedLayers[le] && Ee.source && Ee.type !== "custom") {
                        var vr = this._removedLayers[le];
                        delete this._removedLayers[le], vr.type !== Ee.type ? this._updatedSources[Ee.source] = "clear" : (this._updatedSources[Ee.source] = "reload", this.sourceCaches[Ee.source].pause());
                      }
                      this._updateLayer(Ee), Ee.onAdd && Ee.onAdd(this.map);
                    }, tt.prototype.moveLayer = function(it, _t) {
                      this._checkLoaded(), this._changed = !0;
                      var Yt = this._layers[it];
                      if (!Yt) {
                        this.fire(new n.ErrorEvent(new Error("The layer '" + it + "' does not exist in the map's style and cannot be moved.")));
                        return;
                      }
                      if (it !== _t) {
                        var le = this._order.indexOf(it);
                        this._order.splice(le, 1);
                        var Ee = _t ? this._order.indexOf(_t) : this._order.length;
                        if (_t && Ee === -1) {
                          this.fire(new n.ErrorEvent(new Error('Layer with id "' + _t + '" does not exist on this map.')));
                          return;
                        }
                        this._order.splice(Ee, 0, it), this._layerOrderChanged = !0;
                      }
                    }, tt.prototype.removeLayer = function(it) {
                      this._checkLoaded();
                      var _t = this._layers[it];
                      if (!_t) {
                        this.fire(new n.ErrorEvent(new Error("The layer '" + it + "' does not exist in the map's style and cannot be removed.")));
                        return;
                      }
                      _t.setEventedParent(null);
                      var Yt = this._order.indexOf(it);
                      this._order.splice(Yt, 1), this._layerOrderChanged = !0, this._changed = !0, this._removedLayers[it] = _t, delete this._layers[it], delete this._serializedLayers[it], delete this._updatedLayers[it], delete this._updatedPaintProps[it], _t.onRemove && _t.onRemove(this.map);
                    }, tt.prototype.getLayer = function(it) {
                      return this._layers[it];
                    }, tt.prototype.hasLayer = function(it) {
                      return it in this._layers;
                    }, tt.prototype.setLayerZoomRange = function(it, _t, Yt) {
                      this._checkLoaded();
                      var le = this.getLayer(it);
                      if (!le) {
                        this.fire(new n.ErrorEvent(new Error("The layer '" + it + "' does not exist in the map's style and cannot have zoom extent.")));
                        return;
                      }
                      le.minzoom === _t && le.maxzoom === Yt || (_t != null && (le.minzoom = _t), Yt != null && (le.maxzoom = Yt), this._updateLayer(le));
                    }, tt.prototype.setFilter = function(it, _t, Yt) {
                      Yt === void 0 && (Yt = {}), this._checkLoaded();
                      var le = this.getLayer(it);
                      if (!le) {
                        this.fire(new n.ErrorEvent(new Error("The layer '" + it + "' does not exist in the map's style and cannot be filtered.")));
                        return;
                      }
                      if (!n.deepEqual(le.filter, _t)) {
                        if (_t == null) {
                          le.filter = void 0, this._updateLayer(le);
                          return;
                        }
                        this._validate(n.validateStyle.filter, "layers." + le.id + ".filter", _t, null, Yt) || (le.filter = n.clone$1(_t), this._updateLayer(le));
                      }
                    }, tt.prototype.getFilter = function(it) {
                      return n.clone$1(this.getLayer(it).filter);
                    }, tt.prototype.setLayoutProperty = function(it, _t, Yt, le) {
                      le === void 0 && (le = {}), this._checkLoaded();
                      var Ee = this.getLayer(it);
                      if (!Ee) {
                        this.fire(new n.ErrorEvent(new Error("The layer '" + it + "' does not exist in the map's style and cannot be styled.")));
                        return;
                      }
                      n.deepEqual(Ee.getLayoutProperty(_t), Yt) || (Ee.setLayoutProperty(_t, Yt, le), this._updateLayer(Ee));
                    }, tt.prototype.getLayoutProperty = function(it, _t) {
                      var Yt = this.getLayer(it);
                      if (!Yt) {
                        this.fire(new n.ErrorEvent(new Error("The layer '" + it + "' does not exist in the map's style.")));
                        return;
                      }
                      return Yt.getLayoutProperty(_t);
                    }, tt.prototype.setPaintProperty = function(it, _t, Yt, le) {
                      le === void 0 && (le = {}), this._checkLoaded();
                      var Ee = this.getLayer(it);
                      if (!Ee) {
                        this.fire(new n.ErrorEvent(new Error("The layer '" + it + "' does not exist in the map's style and cannot be styled.")));
                        return;
                      }
                      if (!n.deepEqual(Ee.getPaintProperty(_t), Yt)) {
                        var $e = Ee.setPaintProperty(_t, Yt, le);
                        $e && this._updateLayer(Ee), this._changed = !0, this._updatedPaintProps[it] = !0;
                      }
                    }, tt.prototype.getPaintProperty = function(it, _t) {
                      return this.getLayer(it).getPaintProperty(_t);
                    }, tt.prototype.setFeatureState = function(it, _t) {
                      this._checkLoaded();
                      var Yt = it.source, le = it.sourceLayer, Ee = this.sourceCaches[Yt];
                      if (Ee === void 0) {
                        this.fire(new n.ErrorEvent(new Error("The source '" + Yt + "' does not exist in the map's style.")));
                        return;
                      }
                      var $e = Ee.getSource().type;
                      if ($e === "geojson" && le) {
                        this.fire(new n.ErrorEvent(new Error("GeoJSON sources cannot have a sourceLayer parameter.")));
                        return;
                      }
                      if ($e === "vector" && !le) {
                        this.fire(new n.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));
                        return;
                      }
                      it.id === void 0 && this.fire(new n.ErrorEvent(new Error("The feature id parameter must be provided."))), Ee.setFeatureState(le, it.id, _t);
                    }, tt.prototype.removeFeatureState = function(it, _t) {
                      this._checkLoaded();
                      var Yt = it.source, le = this.sourceCaches[Yt];
                      if (le === void 0) {
                        this.fire(new n.ErrorEvent(new Error("The source '" + Yt + "' does not exist in the map's style.")));
                        return;
                      }
                      var Ee = le.getSource().type, $e = Ee === "vector" ? it.sourceLayer : void 0;
                      if (Ee === "vector" && !$e) {
                        this.fire(new n.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));
                        return;
                      }
                      if (_t && typeof it.id != "string" && typeof it.id != "number") {
                        this.fire(new n.ErrorEvent(new Error("A feature id is required to remove its specific state property.")));
                        return;
                      }
                      le.removeFeatureState($e, it.id, _t);
                    }, tt.prototype.getFeatureState = function(it) {
                      this._checkLoaded();
                      var _t = it.source, Yt = it.sourceLayer, le = this.sourceCaches[_t];
                      if (le === void 0) {
                        this.fire(new n.ErrorEvent(new Error("The source '" + _t + "' does not exist in the map's style.")));
                        return;
                      }
                      var Ee = le.getSource().type;
                      if (Ee === "vector" && !Yt) {
                        this.fire(new n.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));
                        return;
                      }
                      return it.id === void 0 && this.fire(new n.ErrorEvent(new Error("The feature id parameter must be provided."))), le.getFeatureState(Yt, it.id);
                    }, tt.prototype.getTransition = function() {
                      return n.extend({
                        duration: 300,
                        delay: 0
                      }, this.stylesheet && this.stylesheet.transition);
                    }, tt.prototype.serialize = function() {
                      return n.filterObject({
                        version: this.stylesheet.version,
                        name: this.stylesheet.name,
                        metadata: this.stylesheet.metadata,
                        light: this.stylesheet.light,
                        center: this.stylesheet.center,
                        zoom: this.stylesheet.zoom,
                        bearing: this.stylesheet.bearing,
                        pitch: this.stylesheet.pitch,
                        sprite: this.stylesheet.sprite,
                        glyphs: this.stylesheet.glyphs,
                        transition: this.stylesheet.transition,
                        sources: n.mapObject(this.sourceCaches, function(it) {
                          return it.serialize();
                        }),
                        layers: this._serializeLayers(this._order)
                      }, function(it) {
                        return it !== void 0;
                      });
                    }, tt.prototype._updateLayer = function(it) {
                      this._updatedLayers[it.id] = !0, it.source && !this._updatedSources[it.source] && this.sourceCaches[it.source].getSource().type !== "raster" && (this._updatedSources[it.source] = "reload", this.sourceCaches[it.source].pause()), this._changed = !0;
                    }, tt.prototype._flattenAndSortRenderedFeatures = function(it) {
                      for (var _t = this, Yt = function(Da) {
                        return _t._layers[Da].type === "fill-extrusion";
                      }, le = {}, Ee = [], $e = this._order.length - 1; $e >= 0; $e--) {
                        var vr = this._order[$e];
                        if (Yt(vr)) {
                          le[vr] = $e;
                          for (var Lr = 0, Hr = it; Lr < Hr.length; Lr += 1) {
                            var Ur = Hr[Lr], hn = Ur[vr];
                            if (hn)
                              for (var En = 0, Mn = hn; En < Mn.length; En += 1) {
                                var _n = Mn[En];
                                Ee.push(_n);
                              }
                          }
                        }
                      }
                      Ee.sort(function(Da, wo) {
                        return wo.intersectionZ - Da.intersectionZ;
                      });
                      for (var In = [], Kn = this._order.length - 1; Kn >= 0; Kn--) {
                        var xi = this._order[Kn];
                        if (Yt(xi))
                          for (var Ei = Ee.length - 1; Ei >= 0; Ei--) {
                            var zi = Ee[Ei].feature;
                            if (le[zi.layer.id] < Kn)
                              break;
                            In.push(zi), Ee.pop();
                          }
                        else
                          for (var Vi = 0, Di = it; Vi < Di.length; Vi += 1) {
                            var Hi = Di[Vi], Ki = Hi[xi];
                            if (Ki)
                              for (var na = 0, da = Ki; na < da.length; na += 1) {
                                var la = da[na];
                                In.push(la.feature);
                              }
                          }
                      }
                      return In;
                    }, tt.prototype.queryRenderedFeatures = function(it, _t, Yt) {
                      _t && _t.filter && this._validate(n.validateStyle.filter, "queryRenderedFeatures.filter", _t.filter, null, _t);
                      var le = {};
                      if (_t && _t.layers) {
                        if (!Array.isArray(_t.layers))
                          return this.fire(new n.ErrorEvent(new Error("parameters.layers must be an Array."))), [];
                        for (var Ee = 0, $e = _t.layers; Ee < $e.length; Ee += 1) {
                          var vr = $e[Ee], Lr = this._layers[vr];
                          if (!Lr)
                            return this.fire(new n.ErrorEvent(new Error("The layer '" + vr + "' does not exist in the map's style and cannot be queried for features."))), [];
                          le[Lr.source] = !0;
                        }
                      }
                      var Hr = [];
                      _t.availableImages = this._availableImages;
                      for (var Ur in this.sourceCaches)
                        _t.layers && !le[Ur] || Hr.push(nt(this.sourceCaches[Ur], this._layers, this._serializedLayers, it, _t, Yt));
                      return this.placement && Hr.push(X(this._layers, this._serializedLayers, this.sourceCaches, it, _t, this.placement.collisionIndex, this.placement.retainedQueryData)), this._flattenAndSortRenderedFeatures(Hr);
                    }, tt.prototype.querySourceFeatures = function(it, _t) {
                      _t && _t.filter && this._validate(n.validateStyle.filter, "querySourceFeatures.filter", _t.filter, null, _t);
                      var Yt = this.sourceCaches[it];
                      return Yt ? ct(Yt, _t) : [];
                    }, tt.prototype.addSourceType = function(it, _t, Yt) {
                      if (tt.getSourceType(it))
                        return Yt(new Error('A source type called "' + it + '" already exists.'));
                      if (tt.setSourceType(it, _t), !_t.workerSourceURL)
                        return Yt(null, null);
                      this.dispatcher.broadcast("loadWorkerSource", {
                        name: it,
                        url: _t.workerSourceURL
                      }, Yt);
                    }, tt.prototype.getLight = function() {
                      return this.light.getLight();
                    }, tt.prototype.setLight = function(it, _t) {
                      _t === void 0 && (_t = {}), this._checkLoaded();
                      var Yt = this.light.getLight(), le = !1;
                      for (var Ee in it)
                        if (!n.deepEqual(it[Ee], Yt[Ee])) {
                          le = !0;
                          break;
                        }
                      if (le) {
                        var $e = {
                          now: n.browser.now(),
                          transition: n.extend({
                            duration: 300,
                            delay: 0
                          }, this.stylesheet.transition)
                        };
                        this.light.setLight(it, _t), this.light.updateTransitions($e);
                      }
                    }, tt.prototype._validate = function(it, _t, Yt, le, Ee) {
                      return Ee === void 0 && (Ee = {}), Ee && Ee.validate === !1 ? !1 : ra(this, it.call(n.validateStyle, n.extend({
                        key: _t,
                        style: this.serialize(),
                        value: Yt,
                        styleSpec: n.styleSpec
                      }, le)));
                    }, tt.prototype._remove = function() {
                      this._request && (this._request.cancel(), this._request = null), this._spriteRequest && (this._spriteRequest.cancel(), this._spriteRequest = null), n.evented.off("pluginStateChange", this._rtlTextPluginCallback);
                      for (var it in this._layers) {
                        var _t = this._layers[it];
                        _t.setEventedParent(null);
                      }
                      for (var Yt in this.sourceCaches)
                        this.sourceCaches[Yt].clearTiles(), this.sourceCaches[Yt].setEventedParent(null);
                      this.imageManager.setEventedParent(null), this.setEventedParent(null), this.dispatcher.remove();
                    }, tt.prototype._clearSource = function(it) {
                      this.sourceCaches[it].clearTiles();
                    }, tt.prototype._reloadSource = function(it) {
                      this.sourceCaches[it].resume(), this.sourceCaches[it].reload();
                    }, tt.prototype._updateSources = function(it) {
                      for (var _t in this.sourceCaches)
                        this.sourceCaches[_t].update(it);
                    }, tt.prototype._generateCollisionBoxes = function() {
                      for (var it in this.sourceCaches)
                        this._reloadSource(it);
                    }, tt.prototype._updatePlacement = function(it, _t, Yt, le, Ee) {
                      Ee === void 0 && (Ee = !1);
                      for (var $e = !1, vr = !1, Lr = {}, Hr = 0, Ur = this._order; Hr < Ur.length; Hr += 1) {
                        var hn = Ur[Hr], En = this._layers[hn];
                        if (En.type === "symbol") {
                          if (!Lr[En.source]) {
                            var Mn = this.sourceCaches[En.source];
                            Lr[En.source] = Mn.getRenderableIds(!0).map(function(Vi) {
                              return Mn.getTileByID(Vi);
                            }).sort(function(Vi, Di) {
                              return Di.tileID.overscaledZ - Vi.tileID.overscaledZ || (Vi.tileID.isLessThan(Di.tileID) ? -1 : 1);
                            });
                          }
                          var _n = this.crossTileSymbolIndex.addLayer(En, Lr[En.source], it.center.lng);
                          $e = $e || _n;
                        }
                      }
                      if (this.crossTileSymbolIndex.pruneUnusedLayers(this._order), Ee = Ee || this._layerOrderChanged || Yt === 0, (Ee || !this.pauseablePlacement || this.pauseablePlacement.isDone() && !this.placement.stillRecent(n.browser.now(), it.zoom)) && (this.pauseablePlacement = new fi(it, this._order, Ee, _t, Yt, le, this.placement), this._layerOrderChanged = !1), this.pauseablePlacement.isDone() ? this.placement.setStale() : (this.pauseablePlacement.continuePlacement(this._order, this._layers, Lr), this.pauseablePlacement.isDone() && (this.placement = this.pauseablePlacement.commit(n.browser.now()), vr = !0), $e && this.pauseablePlacement.placement.setStale()), vr || $e)
                        for (var In = 0, Kn = this._order; In < Kn.length; In += 1) {
                          var xi = Kn[In], Ei = this._layers[xi];
                          Ei.type === "symbol" && this.placement.updateLayerOpacities(Ei, Lr[Ei.source]);
                        }
                      var zi = !this.pauseablePlacement.isDone() || this.placement.hasTransitions(n.browser.now());
                      return zi;
                    }, tt.prototype._releaseSymbolFadeTiles = function() {
                      for (var it in this.sourceCaches)
                        this.sourceCaches[it].releaseSymbolFadeTiles();
                    }, tt.prototype.getImages = function(it, _t, Yt) {
                      this.imageManager.getImages(_t.icons, Yt), this._updateTilesForChangedImages();
                      var le = this.sourceCaches[_t.source];
                      le && le.setDependencies(_t.tileID.key, _t.type, _t.icons);
                    }, tt.prototype.getGlyphs = function(it, _t, Yt) {
                      this.glyphManager.getGlyphs(_t.stacks, Yt);
                    }, tt.prototype.getResource = function(it, _t, Yt) {
                      return n.makeRequest(_t, Yt);
                    }, tt;
                  }(n.Evented);
                  Ss.getSourceType = Q, Ss.setSourceType = j, Ss.registerForPluginStateChange = n.registerForPluginStateChange;
                  var Bs = n.createLayout([{
                    name: "a_pos",
                    type: "Int16",
                    components: 2
                  }]), so = `#ifdef GL_ES
precision mediump float;
#else
#if !defined(lowp)
#define lowp
#endif
#if !defined(mediump)
#define mediump
#endif
#if !defined(highp)
#define highp
#endif
#endif`, Ql = `#ifdef GL_ES
precision highp float;
#else
#if !defined(lowp)
#define lowp
#endif
#if !defined(mediump)
#define mediump
#endif
#if !defined(highp)
#define highp
#endif
#endif
vec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(unpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0
);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;}`, Zu = `uniform vec4 u_color;uniform float u_opacity;void main() {gl_FragColor=u_color*u_opacity;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, Ns = "attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}", io = `uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_mix)*u_opacity;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, vf = "uniform mat4 u_matrix;uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);}", yl = `varying vec3 v_data;
#pragma mapbox: define highp vec4 color
#pragma mapbox: define mediump float radius
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
#pragma mapbox: define highp vec4 stroke_color
#pragma mapbox: define mediump float stroke_width
#pragma mapbox: define lowp float stroke_opacity
void main() {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize mediump float radius
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize highp vec4 stroke_color
#pragma mapbox: initialize mediump float stroke_width
#pragma mapbox: initialize lowp float stroke_opacity
vec2 extrude=v_data.xy;float extrude_length=length(extrude);lowp float antialiasblur=v_data.z;float antialiased_blur=-max(blur,antialiasblur);float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width));gl_FragColor=opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, jo = `uniform mat4 u_matrix;uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;attribute vec2 a_pos;varying vec3 v_data;
#pragma mapbox: define highp vec4 color
#pragma mapbox: define mediump float radius
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
#pragma mapbox: define highp vec4 stroke_color
#pragma mapbox: define mediump float stroke_width
#pragma mapbox: define lowp float stroke_opacity
void main(void) {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize mediump float radius
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize highp vec4 stroke_color
#pragma mapbox: initialize mediump float stroke_width
#pragma mapbox: initialize lowp float stroke_opacity
vec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);if (u_pitch_with_map) {vec2 corner_position=circle_center;if (u_scale_with_map) {corner_position+=extrude*(radius+stroke_width)*u_extrude_scale;} else {vec4 projected_center=u_matrix*vec4(circle_center,0,1);corner_position+=extrude*(radius+stroke_width)*u_extrude_scale*(projected_center.w/u_camera_to_center_distance);}gl_Position=u_matrix*vec4(corner_position,0,1);} else {gl_Position=u_matrix*vec4(circle_center,0,1);if (u_scale_with_map) {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*u_camera_to_center_distance;} else {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*gl_Position.w;}}lowp float antialiasblur=1.0/u_device_pixel_ratio/(radius+stroke_width);v_data=vec3(extrude.x,extrude.y,antialiasblur);}`, Ys = "void main() {gl_FragColor=vec4(1.0);}", uu = "attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}", ss = `uniform highp float u_intensity;varying vec2 v_extrude;
#pragma mapbox: define highp float weight
#define GAUSS_COEF 0.3989422804014327
void main() {
#pragma mapbox: initialize highp float weight
float d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);gl_FragColor=vec4(val,1.0,1.0,1.0);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, qo = `uniform mat4 u_matrix;uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;attribute vec2 a_pos;varying vec2 v_extrude;
#pragma mapbox: define highp float weight
#pragma mapbox: define mediump float radius
const highp float ZERO=1.0/255.0/16.0;
#define GAUSS_COEF 0.3989422804014327
void main(void) {
#pragma mapbox: initialize highp float weight
#pragma mapbox: initialize mediump float radius
vec2 unscaled_extrude=vec2(mod(a_pos,2.0)*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec4 pos=vec4(floor(a_pos*0.5)+extrude,0,1);gl_Position=u_matrix*pos;}`, Ol = `uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;varying vec2 v_pos;void main() {float t=texture2D(u_image,v_pos).r;vec4 color=texture2D(u_color_ramp,vec2(t,0.5));gl_FragColor=color*u_opacity;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(0.0);
#endif
}`, yo = "uniform mat4 u_matrix;uniform vec2 u_world;attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}", ds = "varying float v_placed;varying float v_notUsed;void main() {float alpha=0.5;gl_FragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}", Ks = "attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);gl_Position=u_matrix*vec4(a_pos,0.0,1.0);gl_Position.xy+=(a_extrude+a_shift)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}", zs = "varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}", is = "attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd  =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz  /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}", wl = "uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}", Th = "attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,0,1);}", Us = `#pragma mapbox: define highp vec4 color
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize lowp float opacity
gl_FragColor=color*opacity;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, Gf = `attribute vec2 a_pos;uniform mat4 u_matrix;
#pragma mapbox: define highp vec4 color
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize lowp float opacity
gl_Position=u_matrix*vec4(a_pos,0,1);}`, _l = `varying vec2 v_pos;
#pragma mapbox: define highp vec4 outline_color
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize highp vec4 outline_color
#pragma mapbox: initialize lowp float opacity
float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, bs = `attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;
#pragma mapbox: define highp vec4 outline_color
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize highp vec4 outline_color
#pragma mapbox: initialize lowp float opacity
gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}`, pf = `uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp vec4 pattern_from
#pragma mapbox: define lowp vec4 pattern_to
void main() {
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump vec4 pattern_from
#pragma mapbox: initialize mediump vec4 pattern_to
vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, $l = `uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp vec4 pattern_from
#pragma mapbox: define lowp vec4 pattern_to
#pragma mapbox: define lowp float pixel_ratio_from
#pragma mapbox: define lowp float pixel_ratio_to
void main() {
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump vec4 pattern_from
#pragma mapbox: initialize mediump vec4 pattern_to
#pragma mapbox: initialize lowp float pixel_ratio_from
#pragma mapbox: initialize lowp float pixel_ratio_to
vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}`, Bl = `uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp vec4 pattern_from
#pragma mapbox: define lowp vec4 pattern_to
void main() {
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump vec4 pattern_from
#pragma mapbox: initialize mediump vec4 pattern_to
vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, gf = `uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp vec4 pattern_from
#pragma mapbox: define lowp vec4 pattern_to
#pragma mapbox: define lowp float pixel_ratio_from
#pragma mapbox: define lowp float pixel_ratio_to
void main() {
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump vec4 pattern_from
#pragma mapbox: initialize mediump vec4 pattern_to
#pragma mapbox: initialize lowp float pixel_ratio_from
#pragma mapbox: initialize lowp float pixel_ratio_to
vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}`, yf = `varying vec4 v_color;void main() {gl_FragColor=v_color;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, Wf = `uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec4 v_color;
#pragma mapbox: define highp float base
#pragma mapbox: define highp float height
#pragma mapbox: define highp vec4 color
void main() {
#pragma mapbox: initialize highp float base
#pragma mapbox: initialize highp float height
#pragma mapbox: initialize highp vec4 color
vec3 normal=a_normal_ed.xyz;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}`, Xu = `uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;
#pragma mapbox: define lowp float base
#pragma mapbox: define lowp float height
#pragma mapbox: define lowp vec4 pattern_from
#pragma mapbox: define lowp vec4 pattern_to
#pragma mapbox: define lowp float pixel_ratio_from
#pragma mapbox: define lowp float pixel_ratio_to
void main() {
#pragma mapbox: initialize lowp float base
#pragma mapbox: initialize lowp float height
#pragma mapbox: initialize mediump vec4 pattern_from
#pragma mapbox: initialize mediump vec4 pattern_to
#pragma mapbox: initialize lowp float pixel_ratio_from
#pragma mapbox: initialize lowp float pixel_ratio_to
vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, Pd = `uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;
#pragma mapbox: define lowp float base
#pragma mapbox: define lowp float height
#pragma mapbox: define lowp vec4 pattern_from
#pragma mapbox: define lowp vec4 pattern_to
#pragma mapbox: define lowp float pixel_ratio_from
#pragma mapbox: define lowp float pixel_ratio_to
void main() {
#pragma mapbox: initialize lowp float base
#pragma mapbox: initialize lowp float height
#pragma mapbox: initialize mediump vec4 pattern_from
#pragma mapbox: initialize mediump vec4 pattern_to
#pragma mapbox: initialize lowp float pixel_ratio_from
#pragma mapbox: initialize lowp float pixel_ratio_to
vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0
? a_pos
: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}`, Id = `#ifdef GL_ES
precision highp float;
#endif
uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/pow(2.0,exaggeration+(19.2562-u_zoom));gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, td = "uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}", Ah = `uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;
#define PI 3.141592653589793
void main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, Rd = "uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}", mc = `uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;
#pragma mapbox: define highp vec4 color
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, ed = `
#define scale 0.015873016
attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar;
#pragma mapbox: define highp vec4 color
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
#pragma mapbox: define mediump float gapwidth
#pragma mapbox: define lowp float offset
#pragma mapbox: define mediump float width
void main() {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump float gapwidth
#pragma mapbox: initialize lowp float offset
#pragma mapbox: initialize mediump float width
float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}`, mf = `uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp vec2 v_uv;
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,v_uv);gl_FragColor=color*(alpha*opacity);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, xc = `
#define scale 0.015873016
attribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_uv_x;attribute float a_split_index;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp vec2 v_uv;
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
#pragma mapbox: define mediump float gapwidth
#pragma mapbox: define lowp float offset
#pragma mapbox: define mediump float width
void main() {
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump float gapwidth
#pragma mapbox: initialize lowp float offset
#pragma mapbox: initialize mediump float width
float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}`, Fc = `uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;
#pragma mapbox: define lowp vec4 pattern_from
#pragma mapbox: define lowp vec4 pattern_to
#pragma mapbox: define lowp float pixel_ratio_from
#pragma mapbox: define lowp float pixel_ratio_to
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize mediump vec4 pattern_from
#pragma mapbox: initialize mediump vec4 pattern_to
#pragma mapbox: initialize lowp float pixel_ratio_from
#pragma mapbox: initialize lowp float pixel_ratio_to
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, Vs = `
#define scale 0.015873016
#define LINE_DISTANCE_SCALE 2.0
attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp float offset
#pragma mapbox: define mediump float gapwidth
#pragma mapbox: define mediump float width
#pragma mapbox: define lowp float floorwidth
#pragma mapbox: define lowp vec4 pattern_from
#pragma mapbox: define lowp vec4 pattern_to
#pragma mapbox: define lowp float pixel_ratio_from
#pragma mapbox: define lowp float pixel_ratio_to
void main() {
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize lowp float offset
#pragma mapbox: initialize mediump float gapwidth
#pragma mapbox: initialize mediump float width
#pragma mapbox: initialize lowp float floorwidth
#pragma mapbox: initialize mediump vec4 pattern_from
#pragma mapbox: initialize mediump vec4 pattern_to
#pragma mapbox: initialize lowp float pixel_ratio_from
#pragma mapbox: initialize lowp float pixel_ratio_to
float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}`, Hs = `uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;
#pragma mapbox: define highp vec4 color
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
#pragma mapbox: define mediump float width
#pragma mapbox: define lowp float floorwidth
void main() {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump float width
#pragma mapbox: initialize lowp float floorwidth
float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, jf = `
#define scale 0.015873016
#define LINE_DISTANCE_SCALE 2.0
attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;
#pragma mapbox: define highp vec4 color
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
#pragma mapbox: define mediump float gapwidth
#pragma mapbox: define lowp float offset
#pragma mapbox: define mediump float width
#pragma mapbox: define lowp float floorwidth
void main() {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump float gapwidth
#pragma mapbox: initialize lowp float offset
#pragma mapbox: initialize mediump float width
#pragma mapbox: initialize lowp float floorwidth
float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}`, Tl = `uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, rd = "uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}", Zf = `uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize lowp float opacity
lowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, nd = `const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity;
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize lowp float opacity
vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?
camera_to_anchor_distance/u_camera_to_center_distance :
u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),0.0,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));}`, id = `#define SDF_PX 8.0
uniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;
#pragma mapbox: define highp vec4 fill_color
#pragma mapbox: define highp vec4 halo_color
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp float halo_width
#pragma mapbox: define lowp float halo_blur
void main() {
#pragma mapbox: initialize highp vec4 fill_color
#pragma mapbox: initialize highp vec4 halo_color
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize lowp float halo_width
#pragma mapbox: initialize lowp float halo_blur
float EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, Xf = `const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1;
#pragma mapbox: define highp vec4 fill_color
#pragma mapbox: define highp vec4 halo_color
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp float halo_width
#pragma mapbox: define lowp float halo_blur
void main() {
#pragma mapbox: initialize highp vec4 fill_color
#pragma mapbox: initialize highp vec4 halo_color
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize lowp float halo_width
#pragma mapbox: initialize lowp float halo_blur
vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?
camera_to_anchor_distance/u_camera_to_center_distance :
u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}`, ql = `#define SDF_PX 8.0
#define SDF 1.0
#define ICON 0.0
uniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;
#pragma mapbox: define highp vec4 fill_color
#pragma mapbox: define highp vec4 halo_color
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp float halo_width
#pragma mapbox: define lowp float halo_blur
void main() {
#pragma mapbox: initialize highp vec4 fill_color
#pragma mapbox: initialize highp vec4 halo_color
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize lowp float halo_width
#pragma mapbox: initialize lowp float halo_blur
float fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
return;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, Oc = `const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1;
#pragma mapbox: define highp vec4 fill_color
#pragma mapbox: define highp vec4 halo_color
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp float halo_width
#pragma mapbox: define lowp float halo_blur
void main() {
#pragma mapbox: initialize highp vec4 fill_color
#pragma mapbox: initialize highp vec4 halo_color
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize lowp float halo_width
#pragma mapbox: initialize lowp float halo_blur
vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?
camera_to_anchor_distance/u_camera_to_center_distance :
u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}`, Yu = Ro(so, Ql), xf = Ro(Zu, Ns), Ku = Ro(io, vf), cu = Ro(yl, jo), Sh = Ro(Ys, uu), Bc = Ro(ss, qo), Js = Ro(Ol, yo), ls = Ro(ds, Ks), bc = Ro(zs, is), Ho = Ro(wl, Th), Yf = Ro(Us, Gf), Nc = Ro(_l, bs), Uc = Ro(pf, $l), Gs = Ro(Bl, gf), Vc = Ro(yf, Wf), Cu = Ro(Xu, Pd), Hc = Ro(Id, td), Mh = Ro(Ah, Rd), Al = Ro(mc, ed), Eh = Ro(mf, xc), Gc = Ro(Fc, Vs), Ch = Ro(Hs, jf), Wc = Ro(Tl, rd), Kf = Ro(Zf, nd), jc = Ro(id, Xf), Ju = Ro(ql, Oc);
                  function Ro(mt, tt) {
                    var bt = /#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g, it = tt.match(/attribute ([\w]+) ([\w]+)/g), _t = mt.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g), Yt = tt.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g), le = Yt ? Yt.concat(_t) : _t, Ee = {};
                    return mt = mt.replace(bt, function($e, vr, Lr, Hr, Ur) {
                      return Ee[Ur] = !0, vr === "define" ? `
#ifndef HAS_UNIFORM_u_` + Ur + `
varying ` + Lr + " " + Hr + " " + Ur + `;
#else
uniform ` + Lr + " " + Hr + " u_" + Ur + `;
#endif
` : `
#ifdef HAS_UNIFORM_u_` + Ur + `
    ` + Lr + " " + Hr + " " + Ur + " = u_" + Ur + `;
#endif
`;
                    }), tt = tt.replace(bt, function($e, vr, Lr, Hr, Ur) {
                      var hn = Hr === "float" ? "vec2" : "vec4", En = Ur.match(/color/) ? "color" : hn;
                      return Ee[Ur] ? vr === "define" ? `
#ifndef HAS_UNIFORM_u_` + Ur + `
uniform lowp float u_` + Ur + `_t;
attribute ` + Lr + " " + hn + " a_" + Ur + `;
varying ` + Lr + " " + Hr + " " + Ur + `;
#else
uniform ` + Lr + " " + Hr + " u_" + Ur + `;
#endif
` : En === "vec4" ? `
#ifndef HAS_UNIFORM_u_` + Ur + `
    ` + Ur + " = a_" + Ur + `;
#else
    ` + Lr + " " + Hr + " " + Ur + " = u_" + Ur + `;
#endif
` : `
#ifndef HAS_UNIFORM_u_` + Ur + `
    ` + Ur + " = unpack_mix_" + En + "(a_" + Ur + ", u_" + Ur + `_t);
#else
    ` + Lr + " " + Hr + " " + Ur + " = u_" + Ur + `;
#endif
` : vr === "define" ? `
#ifndef HAS_UNIFORM_u_` + Ur + `
uniform lowp float u_` + Ur + `_t;
attribute ` + Lr + " " + hn + " a_" + Ur + `;
#else
uniform ` + Lr + " " + Hr + " u_" + Ur + `;
#endif
` : En === "vec4" ? `
#ifndef HAS_UNIFORM_u_` + Ur + `
    ` + Lr + " " + Hr + " " + Ur + " = a_" + Ur + `;
#else
    ` + Lr + " " + Hr + " " + Ur + " = u_" + Ur + `;
#endif
` : `
#ifndef HAS_UNIFORM_u_` + Ur + `
    ` + Lr + " " + Hr + " " + Ur + " = unpack_mix_" + En + "(a_" + Ur + ", u_" + Ur + `_t);
#else
    ` + Lr + " " + Hr + " " + Ur + " = u_" + Ur + `;
#endif
`;
                    }), {
                      fragmentSource: mt,
                      vertexSource: tt,
                      staticAttributes: it,
                      staticUniforms: le
                    };
                  }
                  var ad = /* @__PURE__ */ Object.freeze({
                    __proto__: null,
                    prelude: Yu,
                    background: xf,
                    backgroundPattern: Ku,
                    circle: cu,
                    clippingMask: Sh,
                    heatmap: Bc,
                    heatmapTexture: Js,
                    collisionBox: ls,
                    collisionCircle: bc,
                    debug: Ho,
                    fill: Yf,
                    fillOutline: Nc,
                    fillOutlinePattern: Uc,
                    fillPattern: Gs,
                    fillExtrusion: Vc,
                    fillExtrusionPattern: Cu,
                    hillshadePrepare: Hc,
                    hillshade: Mh,
                    line: Al,
                    lineGradient: Eh,
                    linePattern: Gc,
                    lineSDF: Ch,
                    raster: Wc,
                    symbolIcon: Kf,
                    symbolSDF: jc,
                    symbolTextAndIcon: Ju
                  }), tu = function() {
                    this.boundProgram = null, this.boundLayoutVertexBuffer = null, this.boundPaintVertexBuffers = [], this.boundIndexBuffer = null, this.boundVertexOffset = null, this.boundDynamicVertexBuffer = null, this.vao = null;
                  };
                  tu.prototype.bind = function(tt, bt, it, _t, Yt, le, Ee, $e) {
                    this.context = tt;
                    for (var vr = this.boundPaintVertexBuffers.length !== _t.length, Lr = 0; !vr && Lr < _t.length; Lr++)
                      this.boundPaintVertexBuffers[Lr] !== _t[Lr] && (vr = !0);
                    var Hr = !this.vao || this.boundProgram !== bt || this.boundLayoutVertexBuffer !== it || vr || this.boundIndexBuffer !== Yt || this.boundVertexOffset !== le || this.boundDynamicVertexBuffer !== Ee || this.boundDynamicVertexBuffer2 !== $e;
                    !tt.extVertexArrayObject || Hr ? this.freshBind(bt, it, _t, Yt, le, Ee, $e) : (tt.bindVertexArrayOES.set(this.vao), Ee && Ee.bind(), Yt && Yt.dynamicDraw && Yt.bind(), $e && $e.bind());
                  }, tu.prototype.freshBind = function(tt, bt, it, _t, Yt, le, Ee) {
                    var $e, vr = tt.numAttributes, Lr = this.context, Hr = Lr.gl;
                    if (Lr.extVertexArrayObject)
                      this.vao && this.destroy(), this.vao = Lr.extVertexArrayObject.createVertexArrayOES(), Lr.bindVertexArrayOES.set(this.vao), $e = 0, this.boundProgram = tt, this.boundLayoutVertexBuffer = bt, this.boundPaintVertexBuffers = it, this.boundIndexBuffer = _t, this.boundVertexOffset = Yt, this.boundDynamicVertexBuffer = le, this.boundDynamicVertexBuffer2 = Ee;
                    else {
                      $e = Lr.currentNumAttributes || 0;
                      for (var Ur = vr; Ur < $e; Ur++)
                        Hr.disableVertexAttribArray(Ur);
                    }
                    bt.enableAttributes(Hr, tt);
                    for (var hn = 0, En = it; hn < En.length; hn += 1) {
                      var Mn = En[hn];
                      Mn.enableAttributes(Hr, tt);
                    }
                    le && le.enableAttributes(Hr, tt), Ee && Ee.enableAttributes(Hr, tt), bt.bind(), bt.setVertexAttribPointers(Hr, tt, Yt);
                    for (var _n = 0, In = it; _n < In.length; _n += 1) {
                      var Kn = In[_n];
                      Kn.bind(), Kn.setVertexAttribPointers(Hr, tt, Yt);
                    }
                    le && (le.bind(), le.setVertexAttribPointers(Hr, tt, Yt)), _t && _t.bind(), Ee && (Ee.bind(), Ee.setVertexAttribPointers(Hr, tt, Yt)), Lr.currentNumAttributes = vr;
                  }, tu.prototype.destroy = function() {
                    this.vao && (this.context.extVertexArrayObject.deleteVertexArrayOES(this.vao), this.vao = null);
                  };
                  function bf(mt) {
                    for (var tt = [], bt = 0; bt < mt.length; bt++)
                      if (mt[bt] !== null) {
                        var it = mt[bt].split(" ");
                        tt.push(it.pop());
                      }
                    return tt;
                  }
                  var Jf = function(tt, bt, it, _t, Yt, le) {
                    var Ee = tt.gl;
                    this.program = Ee.createProgram();
                    for (var $e = bf(it.staticAttributes), vr = _t ? _t.getBinderAttributes() : [], Lr = $e.concat(vr), Hr = it.staticUniforms ? bf(it.staticUniforms) : [], Ur = _t ? _t.getBinderUniforms() : [], hn = Hr.concat(Ur), En = [], Mn = 0, _n = hn; Mn < _n.length; Mn += 1) {
                      var In = _n[Mn];
                      En.indexOf(In) < 0 && En.push(In);
                    }
                    var Kn = _t ? _t.defines() : [];
                    le && Kn.push("#define OVERDRAW_INSPECTOR;");
                    var xi = Kn.concat(Yu.fragmentSource, it.fragmentSource).join(`
`), Ei = Kn.concat(Yu.vertexSource, it.vertexSource).join(`
`), zi = Ee.createShader(Ee.FRAGMENT_SHADER);
                    if (Ee.isContextLost()) {
                      this.failedToCreate = !0;
                      return;
                    }
                    Ee.shaderSource(zi, xi), Ee.compileShader(zi), Ee.attachShader(this.program, zi);
                    var Vi = Ee.createShader(Ee.VERTEX_SHADER);
                    if (Ee.isContextLost()) {
                      this.failedToCreate = !0;
                      return;
                    }
                    Ee.shaderSource(Vi, Ei), Ee.compileShader(Vi), Ee.attachShader(this.program, Vi), this.attributes = {};
                    var Di = {};
                    this.numAttributes = Lr.length;
                    for (var Hi = 0; Hi < this.numAttributes; Hi++)
                      Lr[Hi] && (Ee.bindAttribLocation(this.program, Hi, Lr[Hi]), this.attributes[Lr[Hi]] = Hi);
                    Ee.linkProgram(this.program), Ee.deleteShader(Vi), Ee.deleteShader(zi);
                    for (var Ki = 0; Ki < En.length; Ki++) {
                      var na = En[Ki];
                      if (na && !Di[na]) {
                        var da = Ee.getUniformLocation(this.program, na);
                        da && (Di[na] = da);
                      }
                    }
                    this.fixedUniforms = Yt(tt, Di), this.binderUniforms = _t ? _t.getUniforms(tt, Di) : [];
                  };
                  Jf.prototype.draw = function(tt, bt, it, _t, Yt, le, Ee, $e, vr, Lr, Hr, Ur, hn, En, Mn, _n) {
                    var In, Kn = tt.gl;
                    if (!this.failedToCreate) {
                      tt.program.set(this.program), tt.setDepthMode(it), tt.setStencilMode(_t), tt.setColorMode(Yt), tt.setCullFace(le);
                      for (var xi in this.fixedUniforms)
                        this.fixedUniforms[xi].set(Ee[xi]);
                      En && En.setUniforms(tt, this.binderUniforms, Ur, { zoom: hn });
                      for (var Ei = (In = {}, In[Kn.LINES] = 2, In[Kn.TRIANGLES] = 3, In[Kn.LINE_STRIP] = 1, In)[bt], zi = 0, Vi = Hr.get(); zi < Vi.length; zi += 1) {
                        var Di = Vi[zi], Hi = Di.vaos || (Di.vaos = {}), Ki = Hi[$e] || (Hi[$e] = new tu());
                        Ki.bind(tt, this, vr, En ? En.getPaintVertexBuffers() : [], Lr, Di.vertexOffset, Mn, _n), Kn.drawElements(bt, Di.primitiveLength * Ei, Kn.UNSIGNED_SHORT, Di.primitiveOffset * Ei * 2);
                      }
                    }
                  };
                  function Sl(mt, tt, bt) {
                    var it = 1 / Fn(bt, 1, tt.transform.tileZoom), _t = Math.pow(2, bt.tileID.overscaledZ), Yt = bt.tileSize * Math.pow(2, tt.transform.tileZoom) / _t, le = Yt * (bt.tileID.canonical.x + bt.tileID.wrap * _t), Ee = Yt * bt.tileID.canonical.y;
                    return {
                      u_image: 0,
                      u_texsize: bt.imageAtlasTexture.size,
                      u_scale: [
                        it,
                        mt.fromScale,
                        mt.toScale
                      ],
                      u_fade: mt.t,
                      u_pixel_coord_upper: [
                        le >> 16,
                        Ee >> 16
                      ],
                      u_pixel_coord_lower: [
                        le & 65535,
                        Ee & 65535
                      ]
                    };
                  }
                  function Qu(mt, tt, bt, it) {
                    var _t = bt.imageManager.getPattern(mt.from.toString()), Yt = bt.imageManager.getPattern(mt.to.toString()), le = bt.imageManager.getPixelSize(), Ee = le.width, $e = le.height, vr = Math.pow(2, it.tileID.overscaledZ), Lr = it.tileSize * Math.pow(2, bt.transform.tileZoom) / vr, Hr = Lr * (it.tileID.canonical.x + it.tileID.wrap * vr), Ur = Lr * it.tileID.canonical.y;
                    return {
                      u_image: 0,
                      u_pattern_tl_a: _t.tl,
                      u_pattern_br_a: _t.br,
                      u_pattern_tl_b: Yt.tl,
                      u_pattern_br_b: Yt.br,
                      u_texsize: [
                        Ee,
                        $e
                      ],
                      u_mix: tt.t,
                      u_pattern_size_a: _t.displaySize,
                      u_pattern_size_b: Yt.displaySize,
                      u_scale_a: tt.fromScale,
                      u_scale_b: tt.toScale,
                      u_tile_units_to_pixels: 1 / Fn(it, 1, bt.transform.tileZoom),
                      u_pixel_coord_upper: [
                        Hr >> 16,
                        Ur >> 16
                      ],
                      u_pixel_coord_lower: [
                        Hr & 65535,
                        Ur & 65535
                      ]
                    };
                  }
                  var wf = function(mt, tt) {
                    return {
                      u_matrix: new n.UniformMatrix4f(mt, tt.u_matrix),
                      u_lightpos: new n.Uniform3f(mt, tt.u_lightpos),
                      u_lightintensity: new n.Uniform1f(mt, tt.u_lightintensity),
                      u_lightcolor: new n.Uniform3f(mt, tt.u_lightcolor),
                      u_vertical_gradient: new n.Uniform1f(mt, tt.u_vertical_gradient),
                      u_opacity: new n.Uniform1f(mt, tt.u_opacity)
                    };
                  }, vs = function(mt, tt) {
                    return {
                      u_matrix: new n.UniformMatrix4f(mt, tt.u_matrix),
                      u_lightpos: new n.Uniform3f(mt, tt.u_lightpos),
                      u_lightintensity: new n.Uniform1f(mt, tt.u_lightintensity),
                      u_lightcolor: new n.Uniform3f(mt, tt.u_lightcolor),
                      u_vertical_gradient: new n.Uniform1f(mt, tt.u_vertical_gradient),
                      u_height_factor: new n.Uniform1f(mt, tt.u_height_factor),
                      u_image: new n.Uniform1i(mt, tt.u_image),
                      u_texsize: new n.Uniform2f(mt, tt.u_texsize),
                      u_pixel_coord_upper: new n.Uniform2f(mt, tt.u_pixel_coord_upper),
                      u_pixel_coord_lower: new n.Uniform2f(mt, tt.u_pixel_coord_lower),
                      u_scale: new n.Uniform3f(mt, tt.u_scale),
                      u_fade: new n.Uniform1f(mt, tt.u_fade),
                      u_opacity: new n.Uniform1f(mt, tt.u_opacity)
                    };
                  }, _f = function(mt, tt, bt, it) {
                    var _t = tt.style.light, Yt = _t.properties.get("position"), le = [
                      Yt.x,
                      Yt.y,
                      Yt.z
                    ], Ee = n.create$1();
                    _t.properties.get("anchor") === "viewport" && n.fromRotation(Ee, -tt.transform.angle), n.transformMat3(le, le, Ee);
                    var $e = _t.properties.get("color");
                    return {
                      u_matrix: mt,
                      u_lightpos: le,
                      u_lightintensity: _t.properties.get("intensity"),
                      u_lightcolor: [
                        $e.r,
                        $e.g,
                        $e.b
                      ],
                      u_vertical_gradient: +bt,
                      u_opacity: it
                    };
                  }, Nl = function(mt, tt, bt, it, _t, Yt, le) {
                    return n.extend(_f(mt, tt, bt, it), Sl(Yt, tt, le), { u_height_factor: -Math.pow(2, _t.overscaledZ) / le.tileSize / 8 });
                  }, eu = function(mt, tt) {
                    return { u_matrix: new n.UniformMatrix4f(mt, tt.u_matrix) };
                  }, $u = function(mt, tt) {
                    return {
                      u_matrix: new n.UniformMatrix4f(mt, tt.u_matrix),
                      u_image: new n.Uniform1i(mt, tt.u_image),
                      u_texsize: new n.Uniform2f(mt, tt.u_texsize),
                      u_pixel_coord_upper: new n.Uniform2f(mt, tt.u_pixel_coord_upper),
                      u_pixel_coord_lower: new n.Uniform2f(mt, tt.u_pixel_coord_lower),
                      u_scale: new n.Uniform3f(mt, tt.u_scale),
                      u_fade: new n.Uniform1f(mt, tt.u_fade)
                    };
                  }, Lu = function(mt, tt) {
                    return {
                      u_matrix: new n.UniformMatrix4f(mt, tt.u_matrix),
                      u_world: new n.Uniform2f(mt, tt.u_world)
                    };
                  }, ru = function(mt, tt) {
                    return {
                      u_matrix: new n.UniformMatrix4f(mt, tt.u_matrix),
                      u_world: new n.Uniform2f(mt, tt.u_world),
                      u_image: new n.Uniform1i(mt, tt.u_image),
                      u_texsize: new n.Uniform2f(mt, tt.u_texsize),
                      u_pixel_coord_upper: new n.Uniform2f(mt, tt.u_pixel_coord_upper),
                      u_pixel_coord_lower: new n.Uniform2f(mt, tt.u_pixel_coord_lower),
                      u_scale: new n.Uniform3f(mt, tt.u_scale),
                      u_fade: new n.Uniform1f(mt, tt.u_fade)
                    };
                  }, nu = function(mt) {
                    return { u_matrix: mt };
                  }, Ul = function(mt, tt, bt, it) {
                    return n.extend(nu(mt), Sl(bt, tt, it));
                  }, Ml = function(mt, tt) {
                    return {
                      u_matrix: mt,
                      u_world: tt
                    };
                  }, Tf = function(mt, tt, bt, it, _t) {
                    return n.extend(Ul(mt, tt, bt, it), { u_world: _t });
                  }, wc = function(mt, tt) {
                    return {
                      u_camera_to_center_distance: new n.Uniform1f(mt, tt.u_camera_to_center_distance),
                      u_scale_with_map: new n.Uniform1i(mt, tt.u_scale_with_map),
                      u_pitch_with_map: new n.Uniform1i(mt, tt.u_pitch_with_map),
                      u_extrude_scale: new n.Uniform2f(mt, tt.u_extrude_scale),
                      u_device_pixel_ratio: new n.Uniform1f(mt, tt.u_device_pixel_ratio),
                      u_matrix: new n.UniformMatrix4f(mt, tt.u_matrix)
                    };
                  }, od = function(mt, tt, bt, it) {
                    var _t = mt.transform, Yt, le;
                    if (it.paint.get("circle-pitch-alignment") === "map") {
                      var Ee = Fn(bt, 1, _t.zoom);
                      Yt = !0, le = [
                        Ee,
                        Ee
                      ];
                    } else
                      Yt = !1, le = _t.pixelsToGLUnits;
                    return {
                      u_camera_to_center_distance: _t.cameraToCenterDistance,
                      u_scale_with_map: +(it.paint.get("circle-pitch-scale") === "map"),
                      u_matrix: mt.translatePosMatrix(tt.posMatrix, bt, it.paint.get("circle-translate"), it.paint.get("circle-translate-anchor")),
                      u_pitch_with_map: +Yt,
                      u_device_pixel_ratio: n.browser.devicePixelRatio,
                      u_extrude_scale: le
                    };
                  }, Dd = function(mt, tt) {
                    return {
                      u_matrix: new n.UniformMatrix4f(mt, tt.u_matrix),
                      u_camera_to_center_distance: new n.Uniform1f(mt, tt.u_camera_to_center_distance),
                      u_pixels_to_tile_units: new n.Uniform1f(mt, tt.u_pixels_to_tile_units),
                      u_extrude_scale: new n.Uniform2f(mt, tt.u_extrude_scale),
                      u_overscale_factor: new n.Uniform1f(mt, tt.u_overscale_factor)
                    };
                  }, kd = function(mt, tt) {
                    return {
                      u_matrix: new n.UniformMatrix4f(mt, tt.u_matrix),
                      u_inv_matrix: new n.UniformMatrix4f(mt, tt.u_inv_matrix),
                      u_camera_to_center_distance: new n.Uniform1f(mt, tt.u_camera_to_center_distance),
                      u_viewport_size: new n.Uniform2f(mt, tt.u_viewport_size)
                    };
                  }, Qf = function(mt, tt, bt) {
                    var it = Fn(bt, 1, tt.zoom), _t = Math.pow(2, tt.zoom - bt.tileID.overscaledZ), Yt = bt.tileID.overscaleFactor();
                    return {
                      u_matrix: mt,
                      u_camera_to_center_distance: tt.cameraToCenterDistance,
                      u_pixels_to_tile_units: it,
                      u_extrude_scale: [
                        tt.pixelsToGLUnits[0] / (it * _t),
                        tt.pixelsToGLUnits[1] / (it * _t)
                      ],
                      u_overscale_factor: Yt
                    };
                  }, Zc = function(mt, tt, bt) {
                    return {
                      u_matrix: mt,
                      u_inv_matrix: tt,
                      u_camera_to_center_distance: bt.cameraToCenterDistance,
                      u_viewport_size: [
                        bt.width,
                        bt.height
                      ]
                    };
                  }, Xc = function(mt, tt) {
                    return {
                      u_color: new n.UniformColor(mt, tt.u_color),
                      u_matrix: new n.UniformMatrix4f(mt, tt.u_matrix),
                      u_overlay: new n.Uniform1i(mt, tt.u_overlay),
                      u_overlay_scale: new n.Uniform1f(mt, tt.u_overlay_scale)
                    };
                  }, xs = function(mt, tt, bt) {
                    return bt === void 0 && (bt = 1), {
                      u_matrix: mt,
                      u_color: tt,
                      u_overlay: 0,
                      u_overlay_scale: bt
                    };
                  }, El = function(mt, tt) {
                    return { u_matrix: new n.UniformMatrix4f(mt, tt.u_matrix) };
                  }, Yc = function(mt) {
                    return { u_matrix: mt };
                  }, sd = function(mt, tt) {
                    return {
                      u_extrude_scale: new n.Uniform1f(mt, tt.u_extrude_scale),
                      u_intensity: new n.Uniform1f(mt, tt.u_intensity),
                      u_matrix: new n.UniformMatrix4f(mt, tt.u_matrix)
                    };
                  }, Kc = function(mt, tt) {
                    return {
                      u_matrix: new n.UniformMatrix4f(mt, tt.u_matrix),
                      u_world: new n.Uniform2f(mt, tt.u_world),
                      u_image: new n.Uniform1i(mt, tt.u_image),
                      u_color_ramp: new n.Uniform1i(mt, tt.u_color_ramp),
                      u_opacity: new n.Uniform1f(mt, tt.u_opacity)
                    };
                  }, Vl = function(mt, tt, bt, it) {
                    return {
                      u_matrix: mt,
                      u_extrude_scale: Fn(tt, 1, bt),
                      u_intensity: it
                    };
                  }, ld = function(mt, tt, bt, it) {
                    var _t = n.create();
                    n.ortho(_t, 0, mt.width, mt.height, 0, 0, 1);
                    var Yt = mt.context.gl;
                    return {
                      u_matrix: _t,
                      u_world: [
                        Yt.drawingBufferWidth,
                        Yt.drawingBufferHeight
                      ],
                      u_image: bt,
                      u_color_ramp: it,
                      u_opacity: tt.paint.get("heatmap-opacity")
                    };
                  }, $f = function(mt, tt) {
                    return {
                      u_matrix: new n.UniformMatrix4f(mt, tt.u_matrix),
                      u_image: new n.Uniform1i(mt, tt.u_image),
                      u_latrange: new n.Uniform2f(mt, tt.u_latrange),
                      u_light: new n.Uniform2f(mt, tt.u_light),
                      u_shadow: new n.UniformColor(mt, tt.u_shadow),
                      u_highlight: new n.UniformColor(mt, tt.u_highlight),
                      u_accent: new n.UniformColor(mt, tt.u_accent)
                    };
                  }, qf = function(mt, tt) {
                    return {
                      u_matrix: new n.UniformMatrix4f(mt, tt.u_matrix),
                      u_image: new n.Uniform1i(mt, tt.u_image),
                      u_dimension: new n.Uniform2f(mt, tt.u_dimension),
                      u_zoom: new n.Uniform1f(mt, tt.u_zoom),
                      u_unpack: new n.Uniform4f(mt, tt.u_unpack)
                    };
                  }, Jc = function(mt, tt, bt) {
                    var it = bt.paint.get("hillshade-shadow-color"), _t = bt.paint.get("hillshade-highlight-color"), Yt = bt.paint.get("hillshade-accent-color"), le = bt.paint.get("hillshade-illumination-direction") * (Math.PI / 180);
                    bt.paint.get("hillshade-illumination-anchor") === "viewport" && (le -= mt.transform.angle);
                    var Ee = !mt.options.moving;
                    return {
                      u_matrix: mt.transform.calculatePosMatrix(tt.tileID.toUnwrapped(), Ee),
                      u_image: 0,
                      u_latrange: Fs(mt, tt.tileID),
                      u_light: [
                        bt.paint.get("hillshade-exaggeration"),
                        le
                      ],
                      u_shadow: it,
                      u_highlight: _t,
                      u_accent: Yt
                    };
                  }, th = function(mt, tt) {
                    var bt = tt.stride, it = n.create();
                    return n.ortho(it, 0, n.EXTENT, -n.EXTENT, 0, 0, 1), n.translate(it, it, [
                      0,
                      -n.EXTENT,
                      0
                    ]), {
                      u_matrix: it,
                      u_image: 1,
                      u_dimension: [
                        bt,
                        bt
                      ],
                      u_zoom: mt.overscaledZ,
                      u_unpack: tt.getUnpackVector()
                    };
                  };
                  function Fs(mt, tt) {
                    var bt = Math.pow(2, tt.canonical.z), it = tt.canonical.y;
                    return [
                      new n.MercatorCoordinate(0, it / bt).toLngLat().lat,
                      new n.MercatorCoordinate(0, (it + 1) / bt).toLngLat().lat
                    ];
                  }
                  var Ms = function(mt, tt) {
                    return {
                      u_matrix: new n.UniformMatrix4f(mt, tt.u_matrix),
                      u_ratio: new n.Uniform1f(mt, tt.u_ratio),
                      u_device_pixel_ratio: new n.Uniform1f(mt, tt.u_device_pixel_ratio),
                      u_units_to_pixels: new n.Uniform2f(mt, tt.u_units_to_pixels)
                    };
                  }, fu = function(mt, tt) {
                    return {
                      u_matrix: new n.UniformMatrix4f(mt, tt.u_matrix),
                      u_ratio: new n.Uniform1f(mt, tt.u_ratio),
                      u_device_pixel_ratio: new n.Uniform1f(mt, tt.u_device_pixel_ratio),
                      u_units_to_pixels: new n.Uniform2f(mt, tt.u_units_to_pixels),
                      u_image: new n.Uniform1i(mt, tt.u_image),
                      u_image_height: new n.Uniform1f(mt, tt.u_image_height)
                    };
                  }, qu = function(mt, tt) {
                    return {
                      u_matrix: new n.UniformMatrix4f(mt, tt.u_matrix),
                      u_texsize: new n.Uniform2f(mt, tt.u_texsize),
                      u_ratio: new n.Uniform1f(mt, tt.u_ratio),
                      u_device_pixel_ratio: new n.Uniform1f(mt, tt.u_device_pixel_ratio),
                      u_image: new n.Uniform1i(mt, tt.u_image),
                      u_units_to_pixels: new n.Uniform2f(mt, tt.u_units_to_pixels),
                      u_scale: new n.Uniform3f(mt, tt.u_scale),
                      u_fade: new n.Uniform1f(mt, tt.u_fade)
                    };
                  }, Qc = function(mt, tt) {
                    return {
                      u_matrix: new n.UniformMatrix4f(mt, tt.u_matrix),
                      u_ratio: new n.Uniform1f(mt, tt.u_ratio),
                      u_device_pixel_ratio: new n.Uniform1f(mt, tt.u_device_pixel_ratio),
                      u_units_to_pixels: new n.Uniform2f(mt, tt.u_units_to_pixels),
                      u_patternscale_a: new n.Uniform2f(mt, tt.u_patternscale_a),
                      u_patternscale_b: new n.Uniform2f(mt, tt.u_patternscale_b),
                      u_sdfgamma: new n.Uniform1f(mt, tt.u_sdfgamma),
                      u_image: new n.Uniform1i(mt, tt.u_image),
                      u_tex_y_a: new n.Uniform1f(mt, tt.u_tex_y_a),
                      u_tex_y_b: new n.Uniform1f(mt, tt.u_tex_y_b),
                      u_mix: new n.Uniform1f(mt, tt.u_mix)
                    };
                  }, tc = function(mt, tt, bt) {
                    var it = mt.transform;
                    return {
                      u_matrix: rc(mt, tt, bt),
                      u_ratio: 1 / Fn(tt, 1, it.zoom),
                      u_device_pixel_ratio: n.browser.devicePixelRatio,
                      u_units_to_pixels: [
                        1 / it.pixelsToGLUnits[0],
                        1 / it.pixelsToGLUnits[1]
                      ]
                    };
                  }, Pu = function(mt, tt, bt, it) {
                    return n.extend(tc(mt, tt, bt), {
                      u_image: 0,
                      u_image_height: it
                    });
                  }, ec = function(mt, tt, bt, it) {
                    var _t = mt.transform, Yt = _c(tt, _t);
                    return {
                      u_matrix: rc(mt, tt, bt),
                      u_texsize: tt.imageAtlasTexture.size,
                      u_ratio: 1 / Fn(tt, 1, _t.zoom),
                      u_device_pixel_ratio: n.browser.devicePixelRatio,
                      u_image: 0,
                      u_scale: [
                        Yt,
                        it.fromScale,
                        it.toScale
                      ],
                      u_fade: it.t,
                      u_units_to_pixels: [
                        1 / _t.pixelsToGLUnits[0],
                        1 / _t.pixelsToGLUnits[1]
                      ]
                    };
                  }, Hl = function(mt, tt, bt, it, _t) {
                    var Yt = mt.transform, le = mt.lineAtlas, Ee = _c(tt, Yt), $e = bt.layout.get("line-cap") === "round", vr = le.getDash(it.from, $e), Lr = le.getDash(it.to, $e), Hr = vr.width * _t.fromScale, Ur = Lr.width * _t.toScale;
                    return n.extend(tc(mt, tt, bt), {
                      u_patternscale_a: [
                        Ee / Hr,
                        -vr.height / 2
                      ],
                      u_patternscale_b: [
                        Ee / Ur,
                        -Lr.height / 2
                      ],
                      u_sdfgamma: le.width / (Math.min(Hr, Ur) * 256 * n.browser.devicePixelRatio) / 2,
                      u_image: 0,
                      u_tex_y_a: vr.y,
                      u_tex_y_b: Lr.y,
                      u_mix: _t.t
                    });
                  };
                  function _c(mt, tt) {
                    return 1 / Fn(mt, 1, tt.tileZoom);
                  }
                  function rc(mt, tt, bt) {
                    return mt.translatePosMatrix(tt.tileID.posMatrix, tt, bt.paint.get("line-translate"), bt.paint.get("line-translate-anchor"));
                  }
                  var Iu = function(mt, tt) {
                    return {
                      u_matrix: new n.UniformMatrix4f(mt, tt.u_matrix),
                      u_tl_parent: new n.Uniform2f(mt, tt.u_tl_parent),
                      u_scale_parent: new n.Uniform1f(mt, tt.u_scale_parent),
                      u_buffer_scale: new n.Uniform1f(mt, tt.u_buffer_scale),
                      u_fade_t: new n.Uniform1f(mt, tt.u_fade_t),
                      u_opacity: new n.Uniform1f(mt, tt.u_opacity),
                      u_image0: new n.Uniform1i(mt, tt.u_image0),
                      u_image1: new n.Uniform1i(mt, tt.u_image1),
                      u_brightness_low: new n.Uniform1f(mt, tt.u_brightness_low),
                      u_brightness_high: new n.Uniform1f(mt, tt.u_brightness_high),
                      u_saturation_factor: new n.Uniform1f(mt, tt.u_saturation_factor),
                      u_contrast_factor: new n.Uniform1f(mt, tt.u_contrast_factor),
                      u_spin_weights: new n.Uniform3f(mt, tt.u_spin_weights)
                    };
                  }, Af = function(mt, tt, bt, it, _t) {
                    return {
                      u_matrix: mt,
                      u_tl_parent: tt,
                      u_scale_parent: bt,
                      u_buffer_scale: 1,
                      u_fade_t: it.mix,
                      u_opacity: it.opacity * _t.paint.get("raster-opacity"),
                      u_image0: 0,
                      u_image1: 1,
                      u_brightness_low: _t.paint.get("raster-brightness-min"),
                      u_brightness_high: _t.paint.get("raster-brightness-max"),
                      u_saturation_factor: Ac(_t.paint.get("raster-saturation")),
                      u_contrast_factor: No(_t.paint.get("raster-contrast")),
                      u_spin_weights: Tc(_t.paint.get("raster-hue-rotate"))
                    };
                  };
                  function Tc(mt) {
                    mt *= Math.PI / 180;
                    var tt = Math.sin(mt), bt = Math.cos(mt);
                    return [
                      (2 * bt + 1) / 3,
                      (-Math.sqrt(3) * tt - bt + 1) / 3,
                      (Math.sqrt(3) * tt - bt + 1) / 3
                    ];
                  }
                  function No(mt) {
                    return mt > 0 ? 1 / (1 - mt) : 1 + mt;
                  }
                  function Ac(mt) {
                    return mt > 0 ? 1 - 1 / (1.001 - mt) : -mt;
                  }
                  var Sc = function(mt, tt) {
                    return {
                      u_is_size_zoom_constant: new n.Uniform1i(mt, tt.u_is_size_zoom_constant),
                      u_is_size_feature_constant: new n.Uniform1i(mt, tt.u_is_size_feature_constant),
                      u_size_t: new n.Uniform1f(mt, tt.u_size_t),
                      u_size: new n.Uniform1f(mt, tt.u_size),
                      u_camera_to_center_distance: new n.Uniform1f(mt, tt.u_camera_to_center_distance),
                      u_pitch: new n.Uniform1f(mt, tt.u_pitch),
                      u_rotate_symbol: new n.Uniform1i(mt, tt.u_rotate_symbol),
                      u_aspect_ratio: new n.Uniform1f(mt, tt.u_aspect_ratio),
                      u_fade_change: new n.Uniform1f(mt, tt.u_fade_change),
                      u_matrix: new n.UniformMatrix4f(mt, tt.u_matrix),
                      u_label_plane_matrix: new n.UniformMatrix4f(mt, tt.u_label_plane_matrix),
                      u_coord_matrix: new n.UniformMatrix4f(mt, tt.u_coord_matrix),
                      u_is_text: new n.Uniform1i(mt, tt.u_is_text),
                      u_pitch_with_map: new n.Uniform1i(mt, tt.u_pitch_with_map),
                      u_texsize: new n.Uniform2f(mt, tt.u_texsize),
                      u_texture: new n.Uniform1i(mt, tt.u_texture)
                    };
                  }, Sf = function(mt, tt) {
                    return {
                      u_is_size_zoom_constant: new n.Uniform1i(mt, tt.u_is_size_zoom_constant),
                      u_is_size_feature_constant: new n.Uniform1i(mt, tt.u_is_size_feature_constant),
                      u_size_t: new n.Uniform1f(mt, tt.u_size_t),
                      u_size: new n.Uniform1f(mt, tt.u_size),
                      u_camera_to_center_distance: new n.Uniform1f(mt, tt.u_camera_to_center_distance),
                      u_pitch: new n.Uniform1f(mt, tt.u_pitch),
                      u_rotate_symbol: new n.Uniform1i(mt, tt.u_rotate_symbol),
                      u_aspect_ratio: new n.Uniform1f(mt, tt.u_aspect_ratio),
                      u_fade_change: new n.Uniform1f(mt, tt.u_fade_change),
                      u_matrix: new n.UniformMatrix4f(mt, tt.u_matrix),
                      u_label_plane_matrix: new n.UniformMatrix4f(mt, tt.u_label_plane_matrix),
                      u_coord_matrix: new n.UniformMatrix4f(mt, tt.u_coord_matrix),
                      u_is_text: new n.Uniform1i(mt, tt.u_is_text),
                      u_pitch_with_map: new n.Uniform1i(mt, tt.u_pitch_with_map),
                      u_texsize: new n.Uniform2f(mt, tt.u_texsize),
                      u_texture: new n.Uniform1i(mt, tt.u_texture),
                      u_gamma_scale: new n.Uniform1f(mt, tt.u_gamma_scale),
                      u_device_pixel_ratio: new n.Uniform1f(mt, tt.u_device_pixel_ratio),
                      u_is_halo: new n.Uniform1i(mt, tt.u_is_halo)
                    };
                  }, Ru = function(mt, tt) {
                    return {
                      u_is_size_zoom_constant: new n.Uniform1i(mt, tt.u_is_size_zoom_constant),
                      u_is_size_feature_constant: new n.Uniform1i(mt, tt.u_is_size_feature_constant),
                      u_size_t: new n.Uniform1f(mt, tt.u_size_t),
                      u_size: new n.Uniform1f(mt, tt.u_size),
                      u_camera_to_center_distance: new n.Uniform1f(mt, tt.u_camera_to_center_distance),
                      u_pitch: new n.Uniform1f(mt, tt.u_pitch),
                      u_rotate_symbol: new n.Uniform1i(mt, tt.u_rotate_symbol),
                      u_aspect_ratio: new n.Uniform1f(mt, tt.u_aspect_ratio),
                      u_fade_change: new n.Uniform1f(mt, tt.u_fade_change),
                      u_matrix: new n.UniformMatrix4f(mt, tt.u_matrix),
                      u_label_plane_matrix: new n.UniformMatrix4f(mt, tt.u_label_plane_matrix),
                      u_coord_matrix: new n.UniformMatrix4f(mt, tt.u_coord_matrix),
                      u_is_text: new n.Uniform1i(mt, tt.u_is_text),
                      u_pitch_with_map: new n.Uniform1i(mt, tt.u_pitch_with_map),
                      u_texsize: new n.Uniform2f(mt, tt.u_texsize),
                      u_texsize_icon: new n.Uniform2f(mt, tt.u_texsize_icon),
                      u_texture: new n.Uniform1i(mt, tt.u_texture),
                      u_texture_icon: new n.Uniform1i(mt, tt.u_texture_icon),
                      u_gamma_scale: new n.Uniform1f(mt, tt.u_gamma_scale),
                      u_device_pixel_ratio: new n.Uniform1f(mt, tt.u_device_pixel_ratio),
                      u_is_halo: new n.Uniform1i(mt, tt.u_is_halo)
                    };
                  }, Mf = function(mt, tt, bt, it, _t, Yt, le, Ee, $e, vr) {
                    var Lr = _t.transform;
                    return {
                      u_is_size_zoom_constant: +(mt === "constant" || mt === "source"),
                      u_is_size_feature_constant: +(mt === "constant" || mt === "camera"),
                      u_size_t: tt ? tt.uSizeT : 0,
                      u_size: tt ? tt.uSize : 0,
                      u_camera_to_center_distance: Lr.cameraToCenterDistance,
                      u_pitch: Lr.pitch / 360 * 2 * Math.PI,
                      u_rotate_symbol: +bt,
                      u_aspect_ratio: Lr.width / Lr.height,
                      u_fade_change: _t.options.fadeDuration ? _t.symbolFadeChange : 1,
                      u_matrix: Yt,
                      u_label_plane_matrix: le,
                      u_coord_matrix: Ee,
                      u_is_text: +$e,
                      u_pitch_with_map: +it,
                      u_texsize: vr,
                      u_texture: 0
                    };
                  }, eh = function(mt, tt, bt, it, _t, Yt, le, Ee, $e, vr, Lr) {
                    var Hr = _t.transform;
                    return n.extend(Mf(mt, tt, bt, it, _t, Yt, le, Ee, $e, vr), {
                      u_gamma_scale: it ? Math.cos(Hr._pitch) * Hr.cameraToCenterDistance : 1,
                      u_device_pixel_ratio: n.browser.devicePixelRatio,
                      u_is_halo: +Lr
                    });
                  }, Ef = function(mt, tt, bt, it, _t, Yt, le, Ee, $e, vr) {
                    return n.extend(eh(mt, tt, bt, it, _t, Yt, le, Ee, !0, $e, !0), {
                      u_texsize_icon: vr,
                      u_texture_icon: 1
                    });
                  }, hu = function(mt, tt) {
                    return {
                      u_matrix: new n.UniformMatrix4f(mt, tt.u_matrix),
                      u_opacity: new n.Uniform1f(mt, tt.u_opacity),
                      u_color: new n.UniformColor(mt, tt.u_color)
                    };
                  }, vo = function(mt, tt) {
                    return {
                      u_matrix: new n.UniformMatrix4f(mt, tt.u_matrix),
                      u_opacity: new n.Uniform1f(mt, tt.u_opacity),
                      u_image: new n.Uniform1i(mt, tt.u_image),
                      u_pattern_tl_a: new n.Uniform2f(mt, tt.u_pattern_tl_a),
                      u_pattern_br_a: new n.Uniform2f(mt, tt.u_pattern_br_a),
                      u_pattern_tl_b: new n.Uniform2f(mt, tt.u_pattern_tl_b),
                      u_pattern_br_b: new n.Uniform2f(mt, tt.u_pattern_br_b),
                      u_texsize: new n.Uniform2f(mt, tt.u_texsize),
                      u_mix: new n.Uniform1f(mt, tt.u_mix),
                      u_pattern_size_a: new n.Uniform2f(mt, tt.u_pattern_size_a),
                      u_pattern_size_b: new n.Uniform2f(mt, tt.u_pattern_size_b),
                      u_scale_a: new n.Uniform1f(mt, tt.u_scale_a),
                      u_scale_b: new n.Uniform1f(mt, tt.u_scale_b),
                      u_pixel_coord_upper: new n.Uniform2f(mt, tt.u_pixel_coord_upper),
                      u_pixel_coord_lower: new n.Uniform2f(mt, tt.u_pixel_coord_lower),
                      u_tile_units_to_pixels: new n.Uniform1f(mt, tt.u_tile_units_to_pixels)
                    };
                  }, Cl = function(mt, tt, bt) {
                    return {
                      u_matrix: mt,
                      u_opacity: tt,
                      u_color: bt
                    };
                  }, Qs = function(mt, tt, bt, it, _t, Yt) {
                    return n.extend(Qu(it, Yt, bt, _t), {
                      u_matrix: mt,
                      u_opacity: tt
                    });
                  }, Du = {
                    fillExtrusion: wf,
                    fillExtrusionPattern: vs,
                    fill: eu,
                    fillPattern: $u,
                    fillOutline: Lu,
                    fillOutlinePattern: ru,
                    circle: wc,
                    collisionBox: Dd,
                    collisionCircle: kd,
                    debug: Xc,
                    clippingMask: El,
                    heatmap: sd,
                    heatmapTexture: Kc,
                    hillshade: $f,
                    hillshadePrepare: qf,
                    line: Ms,
                    lineGradient: fu,
                    linePattern: qu,
                    lineSDF: Qc,
                    raster: Iu,
                    symbolIcon: Sc,
                    symbolSDF: Sf,
                    symbolTextAndIcon: Ru,
                    background: hu,
                    backgroundPattern: vo
                  }, ws;
                  function Gl(mt, tt, bt, it, _t, Yt, le) {
                    for (var Ee = mt.context, $e = Ee.gl, vr = mt.useProgram("collisionBox"), Lr = [], Hr = 0, Ur = 0, hn = 0; hn < it.length; hn++) {
                      var En = it[hn], Mn = tt.getTile(En), _n = Mn.getBucket(bt);
                      if (_n) {
                        var In = En.posMatrix;
                        (_t[0] !== 0 || _t[1] !== 0) && (In = mt.translatePosMatrix(En.posMatrix, Mn, _t, Yt));
                        var Kn = le ? _n.textCollisionBox : _n.iconCollisionBox, xi = _n.collisionCircleArray;
                        if (xi.length > 0) {
                          var Ei = n.create(), zi = In;
                          n.mul(Ei, _n.placementInvProjMatrix, mt.transform.glCoordMatrix), n.mul(Ei, Ei, _n.placementViewportMatrix), Lr.push({
                            circleArray: xi,
                            circleOffset: Ur,
                            transform: zi,
                            invTransform: Ei
                          }), Hr += xi.length / 4, Ur = Hr;
                        }
                        Kn && vr.draw(Ee, $e.LINES, Le.disabled, Je.disabled, mt.colorModeForRenderPass(), Ye.disabled, Qf(In, mt.transform, Mn), bt.id, Kn.layoutVertexBuffer, Kn.indexBuffer, Kn.segments, null, mt.transform.zoom, null, null, Kn.collisionVertexBuffer);
                      }
                    }
                    if (!(!le || !Lr.length)) {
                      var Vi = mt.useProgram("collisionCircle"), Di = new n.StructArrayLayout2f1f2i16();
                      Di.resize(Hr * 4), Di._trim();
                      for (var Hi = 0, Ki = 0, na = Lr; Ki < na.length; Ki += 1)
                        for (var da = na[Ki], la = 0; la < da.circleArray.length / 4; la++) {
                          var Da = la * 4, wo = da.circleArray[Da + 0], uo = da.circleArray[Da + 1], _a = da.circleArray[Da + 2], co = da.circleArray[Da + 3];
                          Di.emplace(Hi++, wo, uo, _a, co, 0), Di.emplace(Hi++, wo, uo, _a, co, 1), Di.emplace(Hi++, wo, uo, _a, co, 2), Di.emplace(Hi++, wo, uo, _a, co, 3);
                        }
                      (!ws || ws.length < Hr * 2) && (ws = Lh(Hr));
                      for (var $a = Ee.createIndexBuffer(ws, !0), po = Ee.createVertexBuffer(Di, n.collisionCircleLayout.members, !0), Mo = 0, Zo = Lr; Mo < Zo.length; Mo += 1) {
                        var _o = Zo[Mo], ko = Zc(_o.transform, _o.invTransform, mt.transform);
                        Vi.draw(Ee, $e.TRIANGLES, Le.disabled, Je.disabled, mt.colorModeForRenderPass(), Ye.disabled, ko, bt.id, po, $a, n.SegmentVector.simpleSegment(0, _o.circleOffset * 2, _o.circleArray.length, _o.circleArray.length / 2), null, mt.transform.zoom, null, null, null);
                      }
                      po.destroy(), $a.destroy();
                    }
                  }
                  function Lh(mt) {
                    var tt = mt * 2, bt = new n.StructArrayLayout3ui6();
                    bt.resize(tt), bt._trim();
                    for (var it = 0; it < tt; it++) {
                      var _t = it * 6;
                      bt.uint16[_t + 0] = it * 4 + 0, bt.uint16[_t + 1] = it * 4 + 1, bt.uint16[_t + 2] = it * 4 + 2, bt.uint16[_t + 3] = it * 4 + 2, bt.uint16[_t + 4] = it * 4 + 3, bt.uint16[_t + 5] = it * 4 + 0;
                    }
                    return bt;
                  }
                  var Ll = n.identity(new Float32Array(16));
                  function rh(mt, tt, bt, it, _t) {
                    if (mt.renderPass === "translucent") {
                      var Yt = Je.disabled, le = mt.colorModeForRenderPass(), Ee = bt.layout.get("text-variable-anchor");
                      Ee && nh(it, mt, bt, tt, bt.layout.get("text-rotation-alignment"), bt.layout.get("text-pitch-alignment"), _t), bt.paint.get("icon-opacity").constantOr(1) !== 0 && Mc(mt, tt, bt, it, !1, bt.paint.get("icon-translate"), bt.paint.get("icon-translate-anchor"), bt.layout.get("icon-rotation-alignment"), bt.layout.get("icon-pitch-alignment"), bt.layout.get("icon-keep-upright"), Yt, le), bt.paint.get("text-opacity").constantOr(1) !== 0 && Mc(mt, tt, bt, it, !0, bt.paint.get("text-translate"), bt.paint.get("text-translate-anchor"), bt.layout.get("text-rotation-alignment"), bt.layout.get("text-pitch-alignment"), bt.layout.get("text-keep-upright"), Yt, le), tt.map.showCollisionBoxes && (Gl(mt, tt, bt, it, bt.paint.get("text-translate"), bt.paint.get("text-translate-anchor"), !0), Gl(mt, tt, bt, it, bt.paint.get("icon-translate"), bt.paint.get("icon-translate-anchor"), !1));
                    }
                  }
                  function nc(mt, tt, bt, it, _t, Yt) {
                    var le = n.getAnchorAlignment(mt), Ee = le.horizontalAlign, $e = le.verticalAlign, vr = -(Ee - 0.5) * tt, Lr = -($e - 0.5) * bt, Hr = n.evaluateVariableOffset(mt, it);
                    return new n.Point((vr / _t + Hr[0]) * Yt, (Lr / _t + Hr[1]) * Yt);
                  }
                  function nh(mt, tt, bt, it, _t, Yt, le) {
                    for (var Ee = tt.transform, $e = _t === "map", vr = Yt === "map", Lr = 0, Hr = mt; Lr < Hr.length; Lr += 1) {
                      var Ur = Hr[Lr], hn = it.getTile(Ur), En = hn.getBucket(bt);
                      if (!(!En || !En.text || !En.text.segments.get().length)) {
                        var Mn = En.textSizeData, _n = n.evaluateSizeForZoom(Mn, Ee.zoom), In = Fn(hn, 1, tt.transform.zoom), Kn = zr(Ur.posMatrix, vr, $e, tt.transform, In), xi = bt.layout.get("icon-text-fit") !== "none" && En.hasIconData();
                        if (_n) {
                          var Ei = Math.pow(2, Ee.zoom - hn.tileID.overscaledZ);
                          $c(En, $e, vr, le, n.symbolSize, Ee, Kn, Ur.posMatrix, Ei, _n, xi);
                        }
                      }
                    }
                  }
                  function $c(mt, tt, bt, it, _t, Yt, le, Ee, $e, vr, Lr) {
                    var Hr = mt.text.placedSymbolArray, Ur = mt.text.dynamicLayoutVertexArray, hn = mt.icon.dynamicLayoutVertexArray, En = {};
                    Ur.clear();
                    for (var Mn = 0; Mn < Hr.length; Mn++) {
                      var _n = Hr.get(Mn), In = mt.allowVerticalPlacement && !_n.placedOrientation, Kn = !_n.hidden && _n.crossTileID && !In ? it[_n.crossTileID] : null;
                      if (!Kn)
                        ci(_n.numGlyphs, Ur);
                      else {
                        var xi = new n.Point(_n.anchorX, _n.anchorY), Ei = sn(xi, bt ? Ee : le), zi = $n(Yt.cameraToCenterDistance, Ei.signedDistanceFromCamera), Vi = _t.evaluateSizeForFeature(mt.textSizeData, vr, _n) * zi / n.ONE_EM;
                        bt && (Vi *= mt.tilePixelRatio / $e);
                        for (var Di = Kn.width, Hi = Kn.height, Ki = Kn.anchor, na = Kn.textOffset, da = Kn.textBoxScale, la = nc(Ki, Di, Hi, na, da, Vi), Da = bt ? sn(xi.add(la), le).point : Ei.point.add(tt ? la.rotate(-Yt.angle) : la), wo = mt.allowVerticalPlacement && _n.placedOrientation === n.WritingMode.vertical ? Math.PI / 2 : 0, uo = 0; uo < _n.numGlyphs; uo++)
                          n.addDynamicAttributes(Ur, Da, wo);
                        Lr && _n.associatedIconIndex >= 0 && (En[_n.associatedIconIndex] = {
                          shiftedAnchor: Da,
                          angle: wo
                        });
                      }
                    }
                    if (Lr) {
                      hn.clear();
                      for (var _a = mt.icon.placedSymbolArray, co = 0; co < _a.length; co++) {
                        var $a = _a.get(co);
                        if ($a.hidden)
                          ci($a.numGlyphs, hn);
                        else {
                          var po = En[co];
                          if (!po)
                            ci($a.numGlyphs, hn);
                          else
                            for (var Mo = 0; Mo < $a.numGlyphs; Mo++)
                              n.addDynamicAttributes(hn, po.shiftedAnchor, po.angle);
                        }
                      }
                      mt.icon.dynamicLayoutVertexBuffer.updateData(hn);
                    }
                    mt.text.dynamicLayoutVertexBuffer.updateData(Ur);
                  }
                  function Es(mt, tt, bt) {
                    return bt.iconsInText && tt ? "symbolTextAndIcon" : mt ? "symbolSDF" : "symbolIcon";
                  }
                  function Mc(mt, tt, bt, it, _t, Yt, le, Ee, $e, vr, Lr, Hr) {
                    for (var Ur = mt.context, hn = Ur.gl, En = mt.transform, Mn = Ee === "map", _n = $e === "map", In = Mn && bt.layout.get("symbol-placement") !== "point", Kn = Mn && !_n && !In, xi = bt.layout.get("symbol-sort-key").constantOr(1) !== void 0, Ei = !1, zi = mt.depthModeForSublayer(0, Le.ReadOnly), Vi = bt.layout.get("text-variable-anchor"), Di = [], Hi = 0, Ki = it; Hi < Ki.length; Hi += 1) {
                      var na = Ki[Hi], da = tt.getTile(na), la = da.getBucket(bt);
                      if (la) {
                        var Da = _t ? la.text : la.icon;
                        if (!(!Da || !Da.segments.get().length)) {
                          var wo = Da.programConfigurations.get(bt.id), uo = _t || la.sdfIcons, _a = _t ? la.textSizeData : la.iconSizeData, co = _n || En.pitch !== 0, $a = mt.useProgram(Es(uo, _t, la), wo), po = n.evaluateSizeForZoom(_a, En.zoom), Mo = void 0, Zo = [
                            0,
                            0
                          ], _o = void 0, ko = void 0, to = null, Eo = void 0;
                          if (_t) {
                            if (_o = da.glyphAtlasTexture, ko = hn.LINEAR, Mo = da.glyphAtlasTexture.size, la.iconsInText) {
                              Zo = da.imageAtlasTexture.size, to = da.imageAtlasTexture;
                              var As = _a.kind === "composite" || _a.kind === "camera";
                              Eo = co || mt.options.rotating || mt.options.zooming || As ? hn.LINEAR : hn.NEAREST;
                            }
                          } else {
                            var js = bt.layout.get("icon-size").constantOr(0) !== 1 || la.iconsNeedLinear;
                            _o = da.imageAtlasTexture, ko = uo || mt.options.rotating || mt.options.zooming || js || co ? hn.LINEAR : hn.NEAREST, Mo = da.imageAtlasTexture.size;
                          }
                          var lc = Fn(da, 1, mt.transform.zoom), uc = zr(na.posMatrix, _n, Mn, mt.transform, lc), Pl = Tn(na.posMatrix, _n, Mn, mt.transform, lc), au = Vi && la.hasTextData(), nf = bt.layout.get("icon-text-fit") !== "none" && au && la.hasIconData();
                          In && An(la, na.posMatrix, mt, _t, uc, Pl, _n, vr);
                          var cc = mt.translatePosMatrix(na.posMatrix, da, Yt, le), Zl = In || _t && Vi || nf ? Ll : uc, fc = mt.translatePosMatrix(Pl, da, Yt, le, !0), Ou = uo && bt.paint.get(_t ? "text-halo-width" : "icon-halo-width").constantOr(1) !== 0, Il = void 0;
                          uo ? la.iconsInText ? Il = Ef(_a.kind, po, Kn, _n, mt, cc, Zl, fc, Mo, Zo) : Il = eh(_a.kind, po, Kn, _n, mt, cc, Zl, fc, _t, Mo, !0) : Il = Mf(_a.kind, po, Kn, _n, mt, cc, Zl, fc, _t, Mo);
                          var Qo = {
                            program: $a,
                            buffers: Da,
                            uniformValues: Il,
                            atlasTexture: _o,
                            atlasTextureIcon: to,
                            atlasInterpolation: ko,
                            atlasInterpolationIcon: Eo,
                            isSDF: uo,
                            hasHalo: Ou
                          };
                          if (xi && la.canOverlap) {
                            Ei = !0;
                            for (var af = Da.segments.get(), mu = 0, Fh = af; mu < Fh.length; mu += 1) {
                              var hh = Fh[mu];
                              Di.push({
                                segments: new n.SegmentVector([hh]),
                                sortKey: hh.sortKey,
                                state: Qo
                              });
                            }
                          } else
                            Di.push({
                              segments: Da.segments,
                              sortKey: 0,
                              state: Qo
                            });
                        }
                      }
                    }
                    Ei && Di.sort(function(rv, vd) {
                      return rv.sortKey - vd.sortKey;
                    });
                    for (var Is = 0, Nd = Di; Is < Nd.length; Is += 1) {
                      var Ud = Nd[Is], Rl = Ud.state;
                      if (Ur.activeTexture.set(hn.TEXTURE0), Rl.atlasTexture.bind(Rl.atlasInterpolation, hn.CLAMP_TO_EDGE), Rl.atlasTextureIcon && (Ur.activeTexture.set(hn.TEXTURE1), Rl.atlasTextureIcon && Rl.atlasTextureIcon.bind(Rl.atlasInterpolationIcon, hn.CLAMP_TO_EDGE)), Rl.isSDF) {
                        var dd = Rl.uniformValues;
                        Rl.hasHalo && (dd.u_is_halo = 1, iu(Rl.buffers, Ud.segments, bt, mt, Rl.program, zi, Lr, Hr, dd)), dd.u_is_halo = 0;
                      }
                      iu(Rl.buffers, Ud.segments, bt, mt, Rl.program, zi, Lr, Hr, Rl.uniformValues);
                    }
                  }
                  function iu(mt, tt, bt, it, _t, Yt, le, Ee, $e) {
                    var vr = it.context, Lr = vr.gl;
                    _t.draw(vr, Lr.TRIANGLES, Yt, le, Ee, Ye.disabled, $e, bt.id, mt.layoutVertexBuffer, mt.indexBuffer, tt, bt.paint, it.transform.zoom, mt.programConfigurations.get(bt.id), mt.dynamicLayoutVertexBuffer, mt.opacityVertexBuffer);
                  }
                  function Ec(mt, tt, bt, it) {
                    if (mt.renderPass === "translucent") {
                      var _t = bt.paint.get("circle-opacity"), Yt = bt.paint.get("circle-stroke-width"), le = bt.paint.get("circle-stroke-opacity"), Ee = bt.layout.get("circle-sort-key").constantOr(1) !== void 0;
                      if (!(_t.constantOr(1) === 0 && (Yt.constantOr(1) === 0 || le.constantOr(1) === 0))) {
                        for (var $e = mt.context, vr = $e.gl, Lr = mt.depthModeForSublayer(0, Le.ReadOnly), Hr = Je.disabled, Ur = mt.colorModeForRenderPass(), hn = [], En = 0; En < it.length; En++) {
                          var Mn = it[En], _n = tt.getTile(Mn), In = _n.getBucket(bt);
                          if (In) {
                            var Kn = In.programConfigurations.get(bt.id), xi = mt.useProgram("circle", Kn), Ei = In.layoutVertexBuffer, zi = In.indexBuffer, Vi = od(mt, Mn, _n, bt), Di = {
                              programConfiguration: Kn,
                              program: xi,
                              layoutVertexBuffer: Ei,
                              indexBuffer: zi,
                              uniformValues: Vi
                            };
                            if (Ee)
                              for (var Hi = In.segments.get(), Ki = 0, na = Hi; Ki < na.length; Ki += 1) {
                                var da = na[Ki];
                                hn.push({
                                  segments: new n.SegmentVector([da]),
                                  sortKey: da.sortKey,
                                  state: Di
                                });
                              }
                            else
                              hn.push({
                                segments: In.segments,
                                sortKey: 0,
                                state: Di
                              });
                          }
                        }
                        Ee && hn.sort(function(_o, ko) {
                          return _o.sortKey - ko.sortKey;
                        });
                        for (var la = 0, Da = hn; la < Da.length; la += 1) {
                          var wo = Da[la], uo = wo.state, _a = uo.programConfiguration, co = uo.program, $a = uo.layoutVertexBuffer, po = uo.indexBuffer, Mo = uo.uniformValues, Zo = wo.segments;
                          co.draw($e, vr.TRIANGLES, Lr, Hr, Ur, Ye.disabled, Mo, bt.id, $a, po, Zo, bt.paint, mt.transform.zoom, _a);
                        }
                      }
                    }
                  }
                  function ku(mt, tt, bt, it) {
                    if (bt.paint.get("heatmap-opacity") !== 0)
                      if (mt.renderPass === "offscreen") {
                        var _t = mt.context, Yt = _t.gl, le = Je.disabled, Ee = new ue([
                          Yt.ONE,
                          Yt.ONE
                        ], n.Color.transparent, [
                          !0,
                          !0,
                          !0,
                          !0
                        ]);
                        Ph(_t, mt, bt), _t.clear({ color: n.Color.transparent });
                        for (var $e = 0; $e < it.length; $e++) {
                          var vr = it[$e];
                          if (!tt.hasRenderableParent(vr)) {
                            var Lr = tt.getTile(vr), Hr = Lr.getBucket(bt);
                            if (Hr) {
                              var Ur = Hr.programConfigurations.get(bt.id), hn = mt.useProgram("heatmap", Ur), En = mt.transform, Mn = En.zoom;
                              hn.draw(_t, Yt.TRIANGLES, Le.disabled, le, Ee, Ye.disabled, Vl(vr.posMatrix, Lr, Mn, bt.paint.get("heatmap-intensity")), bt.id, Hr.layoutVertexBuffer, Hr.indexBuffer, Hr.segments, bt.paint, mt.transform.zoom, Ur);
                            }
                          }
                        }
                        _t.viewport.set([
                          0,
                          0,
                          mt.width,
                          mt.height
                        ]);
                      } else mt.renderPass === "translucent" && (mt.context.setColorMode(mt.colorModeForRenderPass()), ic(mt, bt));
                  }
                  function Ph(mt, tt, bt) {
                    var it = mt.gl;
                    mt.activeTexture.set(it.TEXTURE1), mt.viewport.set([
                      0,
                      0,
                      tt.width / 4,
                      tt.height / 4
                    ]);
                    var _t = bt.heatmapFbo;
                    if (_t)
                      it.bindTexture(it.TEXTURE_2D, _t.colorAttachment.get()), mt.bindFramebuffer.set(_t.framebuffer);
                    else {
                      var Yt = it.createTexture();
                      it.bindTexture(it.TEXTURE_2D, Yt), it.texParameteri(it.TEXTURE_2D, it.TEXTURE_WRAP_S, it.CLAMP_TO_EDGE), it.texParameteri(it.TEXTURE_2D, it.TEXTURE_WRAP_T, it.CLAMP_TO_EDGE), it.texParameteri(it.TEXTURE_2D, it.TEXTURE_MIN_FILTER, it.LINEAR), it.texParameteri(it.TEXTURE_2D, it.TEXTURE_MAG_FILTER, it.LINEAR), _t = bt.heatmapFbo = mt.createFramebuffer(tt.width / 4, tt.height / 4, !1), oo(mt, tt, Yt, _t);
                    }
                  }
                  function oo(mt, tt, bt, it) {
                    var _t = mt.gl, Yt = mt.extRenderToTextureHalfFloat ? mt.extTextureHalfFloat.HALF_FLOAT_OES : _t.UNSIGNED_BYTE;
                    _t.texImage2D(_t.TEXTURE_2D, 0, _t.RGBA, tt.width / 4, tt.height / 4, 0, _t.RGBA, Yt, null), it.colorAttachment.set(bt);
                  }
                  function ic(mt, tt) {
                    var bt = mt.context, it = bt.gl, _t = tt.heatmapFbo;
                    if (_t) {
                      bt.activeTexture.set(it.TEXTURE0), it.bindTexture(it.TEXTURE_2D, _t.colorAttachment.get()), bt.activeTexture.set(it.TEXTURE1);
                      var Yt = tt.colorRampTexture;
                      Yt || (Yt = tt.colorRampTexture = new n.Texture(bt, tt.colorRamp, it.RGBA)), Yt.bind(it.LINEAR, it.CLAMP_TO_EDGE), mt.useProgram("heatmapTexture").draw(bt, it.TRIANGLES, Le.disabled, Je.disabled, mt.colorModeForRenderPass(), Ye.disabled, ld(mt, tt, 0, 1), tt.id, mt.viewportBuffer, mt.quadTriangleIndexBuffer, mt.viewportSegments, tt.paint, mt.transform.zoom);
                    }
                  }
                  function ih(mt, tt, bt, it) {
                    if (mt.renderPass === "translucent") {
                      var _t = bt.paint.get("line-opacity"), Yt = bt.paint.get("line-width");
                      if (!(_t.constantOr(1) === 0 || Yt.constantOr(1) === 0))
                        for (var le = mt.depthModeForSublayer(0, Le.ReadOnly), Ee = mt.colorModeForRenderPass(), $e = bt.paint.get("line-dasharray"), vr = bt.paint.get("line-pattern"), Lr = vr.constantOr(1), Hr = bt.paint.get("line-gradient"), Ur = bt.getCrossfadeParameters(), hn = Lr ? "linePattern" : $e ? "lineSDF" : Hr ? "lineGradient" : "line", En = mt.context, Mn = En.gl, _n = !0, In = 0, Kn = it; In < Kn.length; In += 1) {
                          var xi = Kn[In], Ei = tt.getTile(xi);
                          if (!(Lr && !Ei.patternsLoaded())) {
                            var zi = Ei.getBucket(bt);
                            if (zi) {
                              var Vi = zi.programConfigurations.get(bt.id), Di = mt.context.program.get(), Hi = mt.useProgram(hn, Vi), Ki = _n || Hi.program !== Di, na = vr.constantOr(null);
                              if (na && Ei.imageAtlas) {
                                var da = Ei.imageAtlas, la = da.patternPositions[na.to.toString()], Da = da.patternPositions[na.from.toString()];
                                la && Da && Vi.setConstantPatternPositions(la, Da);
                              }
                              var wo = Lr ? ec(mt, Ei, bt, Ur) : $e ? Hl(mt, Ei, bt, $e, Ur) : Hr ? Pu(mt, Ei, bt, zi.lineClipsArray.length) : tc(mt, Ei, bt);
                              if (Lr)
                                En.activeTexture.set(Mn.TEXTURE0), Ei.imageAtlasTexture.bind(Mn.LINEAR, Mn.CLAMP_TO_EDGE), Vi.updatePaintBuffers(Ur);
                              else if ($e && (Ki || mt.lineAtlas.dirty))
                                En.activeTexture.set(Mn.TEXTURE0), mt.lineAtlas.bind(En);
                              else if (Hr) {
                                var uo = zi.gradients[bt.id], _a = uo.texture;
                                if (bt.gradientVersion !== uo.version) {
                                  var co = 256;
                                  if (bt.stepInterpolant) {
                                    var $a = tt.getSource().maxzoom, po = xi.canonical.z === $a ? Math.ceil(1 << mt.transform.maxZoom - xi.canonical.z) : 1, Mo = zi.maxLineLength / n.EXTENT, Zo = 1024, _o = Mo * Zo * po;
                                    co = n.clamp(n.nextPowerOfTwo(_o), 256, En.maxTextureSize);
                                  }
                                  uo.gradient = n.renderColorRamp({
                                    expression: bt.gradientExpression(),
                                    evaluationKey: "lineProgress",
                                    resolution: co,
                                    image: uo.gradient || void 0,
                                    clips: zi.lineClipsArray
                                  }), uo.texture ? uo.texture.update(uo.gradient) : uo.texture = new n.Texture(En, uo.gradient, Mn.RGBA), uo.version = bt.gradientVersion, _a = uo.texture;
                                }
                                En.activeTexture.set(Mn.TEXTURE0), _a.bind(bt.stepInterpolant ? Mn.NEAREST : Mn.LINEAR, Mn.CLAMP_TO_EDGE);
                              }
                              Hi.draw(En, Mn.TRIANGLES, le, mt.stencilModeForClipping(xi), Ee, Ye.disabled, wo, bt.id, zi.layoutVertexBuffer, zi.indexBuffer, zi.segments, bt.paint, mt.transform.zoom, Vi, zi.layoutVertexBuffer2), _n = !1;
                            }
                          }
                        }
                    }
                  }
                  function du(mt, tt, bt, it) {
                    var _t = bt.paint.get("fill-color"), Yt = bt.paint.get("fill-opacity");
                    if (Yt.constantOr(1) !== 0) {
                      var le = mt.colorModeForRenderPass(), Ee = bt.paint.get("fill-pattern"), $e = mt.opaquePassEnabledForLayer() && !Ee.constantOr(1) && _t.constantOr(n.Color.transparent).a === 1 && Yt.constantOr(0) === 1 ? "opaque" : "translucent";
                      if (mt.renderPass === $e) {
                        var vr = mt.depthModeForSublayer(1, mt.renderPass === "opaque" ? Le.ReadWrite : Le.ReadOnly);
                        Wl(mt, tt, bt, it, vr, le, !1);
                      }
                      if (mt.renderPass === "translucent" && bt.paint.get("fill-antialias")) {
                        var Lr = mt.depthModeForSublayer(bt.getPaintProperty("fill-outline-color") ? 2 : 0, Le.ReadOnly);
                        Wl(mt, tt, bt, it, Lr, le, !0);
                      }
                    }
                  }
                  function Wl(mt, tt, bt, it, _t, Yt, le) {
                    var Ee = mt.context.gl, $e = bt.paint.get("fill-pattern"), vr = $e && $e.constantOr(1), Lr = bt.getCrossfadeParameters(), Hr, Ur, hn, En, Mn;
                    le ? (Ur = vr && !bt.getPaintProperty("fill-outline-color") ? "fillOutlinePattern" : "fillOutline", Hr = Ee.LINES) : (Ur = vr ? "fillPattern" : "fill", Hr = Ee.TRIANGLES);
                    for (var _n = 0, In = it; _n < In.length; _n += 1) {
                      var Kn = In[_n], xi = tt.getTile(Kn);
                      if (!(vr && !xi.patternsLoaded())) {
                        var Ei = xi.getBucket(bt);
                        if (Ei) {
                          var zi = Ei.programConfigurations.get(bt.id), Vi = mt.useProgram(Ur, zi);
                          vr && (mt.context.activeTexture.set(Ee.TEXTURE0), xi.imageAtlasTexture.bind(Ee.LINEAR, Ee.CLAMP_TO_EDGE), zi.updatePaintBuffers(Lr));
                          var Di = $e.constantOr(null);
                          if (Di && xi.imageAtlas) {
                            var Hi = xi.imageAtlas, Ki = Hi.patternPositions[Di.to.toString()], na = Hi.patternPositions[Di.from.toString()];
                            Ki && na && zi.setConstantPatternPositions(Ki, na);
                          }
                          var da = mt.translatePosMatrix(Kn.posMatrix, xi, bt.paint.get("fill-translate"), bt.paint.get("fill-translate-anchor"));
                          if (!le)
                            En = Ei.indexBuffer, Mn = Ei.segments, hn = vr ? Ul(da, mt, Lr, xi) : nu(da);
                          else {
                            En = Ei.indexBuffer2, Mn = Ei.segments2;
                            var la = [
                              Ee.drawingBufferWidth,
                              Ee.drawingBufferHeight
                            ];
                            hn = Ur === "fillOutlinePattern" && vr ? Tf(da, mt, Lr, xi, la) : Ml(da, la);
                          }
                          Vi.draw(mt.context, Hr, _t, mt.stencilModeForClipping(Kn), Yt, Ye.disabled, hn, bt.id, Ei.layoutVertexBuffer, En, Mn, bt.paint, mt.transform.zoom, zi);
                        }
                      }
                    }
                  }
                  function Ih(mt, tt, bt, it) {
                    var _t = bt.paint.get("fill-extrusion-opacity");
                    if (_t !== 0 && mt.renderPass === "translucent") {
                      var Yt = new Le(mt.context.gl.LEQUAL, Le.ReadWrite, mt.depthRangeFor3D);
                      if (_t === 1 && !bt.paint.get("fill-extrusion-pattern").constantOr(1)) {
                        var le = mt.colorModeForRenderPass();
                        Cf(mt, tt, bt, it, Yt, Je.disabled, le);
                      } else
                        Cf(mt, tt, bt, it, Yt, Je.disabled, ue.disabled), Cf(mt, tt, bt, it, Yt, mt.stencilModeFor3D(), mt.colorModeForRenderPass());
                    }
                  }
                  function Cf(mt, tt, bt, it, _t, Yt, le) {
                    for (var Ee = mt.context, $e = Ee.gl, vr = bt.paint.get("fill-extrusion-pattern"), Lr = vr.constantOr(1), Hr = bt.getCrossfadeParameters(), Ur = bt.paint.get("fill-extrusion-opacity"), hn = 0, En = it; hn < En.length; hn += 1) {
                      var Mn = En[hn], _n = tt.getTile(Mn), In = _n.getBucket(bt);
                      if (In) {
                        var Kn = In.programConfigurations.get(bt.id), xi = mt.useProgram(Lr ? "fillExtrusionPattern" : "fillExtrusion", Kn);
                        Lr && (mt.context.activeTexture.set($e.TEXTURE0), _n.imageAtlasTexture.bind($e.LINEAR, $e.CLAMP_TO_EDGE), Kn.updatePaintBuffers(Hr));
                        var Ei = vr.constantOr(null);
                        if (Ei && _n.imageAtlas) {
                          var zi = _n.imageAtlas, Vi = zi.patternPositions[Ei.to.toString()], Di = zi.patternPositions[Ei.from.toString()];
                          Vi && Di && Kn.setConstantPatternPositions(Vi, Di);
                        }
                        var Hi = mt.translatePosMatrix(Mn.posMatrix, _n, bt.paint.get("fill-extrusion-translate"), bt.paint.get("fill-extrusion-translate-anchor")), Ki = bt.paint.get("fill-extrusion-vertical-gradient"), na = Lr ? Nl(Hi, mt, Ki, Ur, Mn, Hr, _n) : _f(Hi, mt, Ki, Ur);
                        xi.draw(Ee, Ee.gl.TRIANGLES, _t, Yt, le, Ye.backCCW, na, bt.id, In.layoutVertexBuffer, In.indexBuffer, In.segments, bt.paint, mt.transform.zoom, Kn);
                      }
                    }
                  }
                  function qc(mt, tt, bt, it) {
                    if (!(mt.renderPass !== "offscreen" && mt.renderPass !== "translucent")) {
                      for (var _t = mt.context, Yt = mt.depthModeForSublayer(0, Le.ReadOnly), le = mt.colorModeForRenderPass(), Ee = mt.renderPass === "translucent" ? mt.stencilConfigForOverlap(it) : [
                        {},
                        it
                      ], $e = Ee[0], vr = Ee[1], Lr = 0, Hr = vr; Lr < Hr.length; Lr += 1) {
                        var Ur = Hr[Lr], hn = tt.getTile(Ur);
                        hn.needsHillshadePrepare && mt.renderPass === "offscreen" ? ud(mt, hn, bt, Yt, Je.disabled, le) : mt.renderPass === "translucent" && ah(mt, hn, bt, Yt, $e[Ur.overscaledZ], le);
                      }
                      _t.viewport.set([
                        0,
                        0,
                        mt.width,
                        mt.height
                      ]);
                    }
                  }
                  function ah(mt, tt, bt, it, _t, Yt) {
                    var le = mt.context, Ee = le.gl, $e = tt.fbo;
                    if ($e) {
                      var vr = mt.useProgram("hillshade");
                      le.activeTexture.set(Ee.TEXTURE0), Ee.bindTexture(Ee.TEXTURE_2D, $e.colorAttachment.get());
                      var Lr = Jc(mt, tt, bt);
                      vr.draw(le, Ee.TRIANGLES, it, _t, Yt, Ye.disabled, Lr, bt.id, mt.rasterBoundsBuffer, mt.quadTriangleIndexBuffer, mt.rasterBoundsSegments);
                    }
                  }
                  function ud(mt, tt, bt, it, _t, Yt) {
                    var le = mt.context, Ee = le.gl, $e = tt.dem;
                    if ($e && $e.data) {
                      var vr = $e.dim, Lr = $e.stride, Hr = $e.getPixels();
                      if (le.activeTexture.set(Ee.TEXTURE1), le.pixelStoreUnpackPremultiplyAlpha.set(!1), tt.demTexture = tt.demTexture || mt.getTileTexture(Lr), tt.demTexture) {
                        var Ur = tt.demTexture;
                        Ur.update(Hr, { premultiply: !1 }), Ur.bind(Ee.NEAREST, Ee.CLAMP_TO_EDGE);
                      } else
                        tt.demTexture = new n.Texture(le, Hr, Ee.RGBA, { premultiply: !1 }), tt.demTexture.bind(Ee.NEAREST, Ee.CLAMP_TO_EDGE);
                      le.activeTexture.set(Ee.TEXTURE0);
                      var hn = tt.fbo;
                      if (!hn) {
                        var En = new n.Texture(le, {
                          width: vr,
                          height: vr,
                          data: null
                        }, Ee.RGBA);
                        En.bind(Ee.LINEAR, Ee.CLAMP_TO_EDGE), hn = tt.fbo = le.createFramebuffer(vr, vr, !0), hn.colorAttachment.set(En.texture);
                      }
                      le.bindFramebuffer.set(hn.framebuffer), le.viewport.set([
                        0,
                        0,
                        vr,
                        vr
                      ]), mt.useProgram("hillshadePrepare").draw(le, Ee.TRIANGLES, it, _t, Yt, Ye.disabled, th(tt.tileID, $e), bt.id, mt.rasterBoundsBuffer, mt.quadTriangleIndexBuffer, mt.rasterBoundsSegments), tt.needsHillshadePrepare = !1;
                    }
                  }
                  function Cc(mt, tt, bt, it) {
                    if (mt.renderPass === "translucent" && bt.paint.get("raster-opacity") !== 0 && it.length)
                      for (var _t = mt.context, Yt = _t.gl, le = tt.getSource(), Ee = mt.useProgram("raster"), $e = mt.colorModeForRenderPass(), vr = le instanceof q ? [
                        {},
                        it
                      ] : mt.stencilConfigForOverlap(it), Lr = vr[0], Hr = vr[1], Ur = Hr[Hr.length - 1].overscaledZ, hn = !mt.options.moving, En = 0, Mn = Hr; En < Mn.length; En += 1) {
                        var _n = Mn[En], In = mt.depthModeForSublayer(_n.overscaledZ - Ur, bt.paint.get("raster-opacity") === 1 ? Le.ReadWrite : Le.ReadOnly, Yt.LESS), Kn = tt.getTile(_n), xi = mt.transform.calculatePosMatrix(_n.toUnwrapped(), hn);
                        Kn.registerFadeDuration(bt.paint.get("raster-fade-duration"));
                        var Ei = tt.findLoadedParent(_n, 0), zi = tf(Kn, Ei, tt, bt, mt.transform), Vi = void 0, Di = void 0, Hi = bt.paint.get("raster-resampling") === "nearest" ? Yt.NEAREST : Yt.LINEAR;
                        _t.activeTexture.set(Yt.TEXTURE0), Kn.texture.bind(Hi, Yt.CLAMP_TO_EDGE, Yt.LINEAR_MIPMAP_NEAREST), _t.activeTexture.set(Yt.TEXTURE1), Ei ? (Ei.texture.bind(Hi, Yt.CLAMP_TO_EDGE, Yt.LINEAR_MIPMAP_NEAREST), Vi = Math.pow(2, Ei.tileID.overscaledZ - Kn.tileID.overscaledZ), Di = [
                          Kn.tileID.canonical.x * Vi % 1,
                          Kn.tileID.canonical.y * Vi % 1
                        ]) : Kn.texture.bind(Hi, Yt.CLAMP_TO_EDGE, Yt.LINEAR_MIPMAP_NEAREST);
                        var Ki = Af(xi, Di || [
                          0,
                          0
                        ], Vi || 1, zi, bt);
                        le instanceof q ? Ee.draw(_t, Yt.TRIANGLES, In, Je.disabled, $e, Ye.disabled, Ki, bt.id, le.boundsBuffer, mt.quadTriangleIndexBuffer, le.boundsSegments) : Ee.draw(_t, Yt.TRIANGLES, In, Lr[_n.overscaledZ], $e, Ye.disabled, Ki, bt.id, mt.rasterBoundsBuffer, mt.quadTriangleIndexBuffer, mt.rasterBoundsSegments);
                      }
                  }
                  function tf(mt, tt, bt, it, _t) {
                    var Yt = it.paint.get("raster-fade-duration");
                    if (Yt > 0) {
                      var le = n.browser.now(), Ee = (le - mt.timeAdded) / Yt, $e = tt ? (le - tt.timeAdded) / Yt : -1, vr = bt.getSource(), Lr = _t.coveringZoomLevel({
                        tileSize: vr.tileSize,
                        roundZoom: vr.roundZoom
                      }), Hr = !tt || Math.abs(tt.tileID.overscaledZ - Lr) > Math.abs(mt.tileID.overscaledZ - Lr), Ur = Hr && mt.refreshedUponExpiration ? 1 : n.clamp(Hr ? Ee : 1 - $e, 0, 1);
                      return mt.refreshedUponExpiration && Ee >= 1 && (mt.refreshedUponExpiration = !1), tt ? {
                        opacity: 1,
                        mix: 1 - Ur
                      } : {
                        opacity: Ur,
                        mix: 0
                      };
                    } else
                      return {
                        opacity: 1,
                        mix: 0
                      };
                  }
                  function vu(mt, tt, bt) {
                    var it = bt.paint.get("background-color"), _t = bt.paint.get("background-opacity");
                    if (_t !== 0) {
                      var Yt = mt.context, le = Yt.gl, Ee = mt.transform, $e = Ee.tileSize, vr = bt.paint.get("background-pattern");
                      if (!mt.isPatternMissing(vr)) {
                        var Lr = !vr && it.a === 1 && _t === 1 && mt.opaquePassEnabledForLayer() ? "opaque" : "translucent";
                        if (mt.renderPass === Lr) {
                          var Hr = Je.disabled, Ur = mt.depthModeForSublayer(0, Lr === "opaque" ? Le.ReadWrite : Le.ReadOnly), hn = mt.colorModeForRenderPass(), En = mt.useProgram(vr ? "backgroundPattern" : "background"), Mn = Ee.coveringTiles({ tileSize: $e });
                          vr && (Yt.activeTexture.set(le.TEXTURE0), mt.imageManager.bind(mt.context));
                          for (var _n = bt.getCrossfadeParameters(), In = 0, Kn = Mn; In < Kn.length; In += 1) {
                            var xi = Kn[In], Ei = mt.transform.calculatePosMatrix(xi.toUnwrapped()), zi = vr ? Qs(Ei, _t, mt, vr, {
                              tileID: xi,
                              tileSize: $e
                            }, _n) : Cl(Ei, _t, it);
                            En.draw(Yt, le.TRIANGLES, Ur, Hr, hn, Ye.disabled, zi, bt.id, mt.tileExtentBuffer, mt.quadTriangleIndexBuffer, mt.tileExtentSegments);
                          }
                        }
                      }
                    }
                  }
                  var ef = new n.Color(1, 0, 0, 1), pu = new n.Color(0, 1, 0, 1), cd = new n.Color(0, 0, 1, 1), he = new n.Color(1, 0, 1, 1), Ae = new n.Color(0, 1, 1, 1);
                  function Be(mt) {
                    var tt = mt.transform.padding, bt = 3;
                    sr(mt, mt.transform.height - (tt.top || 0), bt, ef), sr(mt, tt.bottom || 0, bt, pu), ar(mt, tt.left || 0, bt, cd), ar(mt, mt.transform.width - (tt.right || 0), bt, he);
                    var it = mt.transform.centerPoint;
                    Ge(mt, it.x, mt.transform.height - it.y, Ae);
                  }
                  function Ge(mt, tt, bt, it) {
                    var _t = 20, Yt = 2;
                    fr(mt, tt - Yt / 2, bt - _t / 2, Yt, _t, it), fr(mt, tt - _t / 2, bt - Yt / 2, _t, Yt, it);
                  }
                  function sr(mt, tt, bt, it) {
                    fr(mt, 0, tt + bt / 2, mt.transform.width, bt, it);
                  }
                  function ar(mt, tt, bt, it) {
                    fr(mt, tt - bt / 2, 0, bt, mt.transform.height, it);
                  }
                  function fr(mt, tt, bt, it, _t, Yt) {
                    var le = mt.context, Ee = le.gl;
                    Ee.enable(Ee.SCISSOR_TEST), Ee.scissor(tt * n.browser.devicePixelRatio, bt * n.browser.devicePixelRatio, it * n.browser.devicePixelRatio, _t * n.browser.devicePixelRatio), le.clear({ color: Yt }), Ee.disable(Ee.SCISSOR_TEST);
                  }
                  function Wr(mt, tt, bt) {
                    for (var it = 0; it < bt.length; it++)
                      Yr(mt, tt, bt[it]);
                  }
                  function Yr(mt, tt, bt) {
                    var it = mt.context, _t = it.gl, Yt = bt.posMatrix, le = mt.useProgram("debug"), Ee = Le.disabled, $e = Je.disabled, vr = mt.colorModeForRenderPass(), Lr = "$debug";
                    it.activeTexture.set(_t.TEXTURE0), mt.emptyTexture.bind(_t.LINEAR, _t.CLAMP_TO_EDGE), le.draw(it, _t.LINE_STRIP, Ee, $e, vr, Ye.disabled, xs(Yt, n.Color.red), Lr, mt.debugBuffer, mt.tileBorderIndexBuffer, mt.debugSegments);
                    var Hr = tt.getTileByID(bt.key).latestRawTileData, Ur = Hr && Hr.byteLength || 0, hn = Math.floor(Ur / 1024), En = tt.getTile(bt).tileSize, Mn = 512 / Math.min(En, 512) * (bt.overscaledZ / mt.transform.zoom) * 0.5, _n = bt.canonical.toString();
                    bt.overscaledZ !== bt.canonical.z && (_n += " => " + bt.overscaledZ);
                    var In = _n + " " + hn + "kb";
                    Pr(mt, In), le.draw(it, _t.TRIANGLES, Ee, $e, ue.alphaBlended, Ye.disabled, xs(Yt, n.Color.transparent, Mn), Lr, mt.debugBuffer, mt.quadTriangleIndexBuffer, mt.debugSegments);
                  }
                  function Pr(mt, tt) {
                    mt.initDebugOverlayCanvas();
                    var bt = mt.debugOverlayCanvas, it = mt.context.gl, _t = mt.debugOverlayCanvas.getContext("2d");
                    _t.clearRect(0, 0, bt.width, bt.height), _t.shadowColor = "white", _t.shadowBlur = 2, _t.lineWidth = 1.5, _t.strokeStyle = "white", _t.textBaseline = "top", _t.font = "bold 36px Open Sans, sans-serif", _t.fillText(tt, 5, 5), _t.strokeText(tt, 5, 5), mt.debugOverlayTexture.update(bt), mt.debugOverlayTexture.bind(it.LINEAR, it.CLAMP_TO_EDGE);
                  }
                  function tn(mt, tt, bt) {
                    var it = mt.context, _t = bt.implementation;
                    if (mt.renderPass === "offscreen") {
                      var Yt = _t.prerender;
                      Yt && (mt.setCustomLayerDefaults(), it.setColorMode(mt.colorModeForRenderPass()), Yt.call(_t, it.gl, mt.transform.customLayerMatrix()), it.setDirty(), mt.setBaseState());
                    } else if (mt.renderPass === "translucent") {
                      mt.setCustomLayerDefaults(), it.setColorMode(mt.colorModeForRenderPass()), it.setStencilMode(Je.disabled);
                      var le = _t.renderingMode === "3d" ? new Le(mt.context.gl.LEQUAL, Le.ReadWrite, mt.depthRangeFor3D) : mt.depthModeForSublayer(0, Le.ReadOnly);
                      it.setDepthMode(le), _t.render(it.gl, mt.transform.customLayerMatrix()), it.setDirty(), mt.setBaseState(), it.bindFramebuffer.set(null);
                    }
                  }
                  var un = {
                    symbol: rh,
                    circle: Ec,
                    heatmap: ku,
                    line: ih,
                    fill: du,
                    "fill-extrusion": Ih,
                    hillshade: qc,
                    raster: Cc,
                    background: vu,
                    debug: Wr,
                    custom: tn
                  }, dn = function(tt, bt) {
                    this.context = new rr(tt), this.transform = bt, this._tileTextures = {}, this.setup(), this.numSublayers = lr.maxUnderzooming + lr.maxOverzooming + 1, this.depthEpsilon = 1 / Math.pow(2, 16), this.crossTileSymbolIndex = new Bi(), this.gpuTimers = {};
                  };
                  dn.prototype.resize = function(tt, bt) {
                    if (this.width = tt * n.browser.devicePixelRatio, this.height = bt * n.browser.devicePixelRatio, this.context.viewport.set([
                      0,
                      0,
                      this.width,
                      this.height
                    ]), this.style)
                      for (var it = 0, _t = this.style._order; it < _t.length; it += 1) {
                        var Yt = _t[it];
                        this.style._layers[Yt].resize();
                      }
                  }, dn.prototype.setup = function() {
                    var tt = this.context, bt = new n.StructArrayLayout2i4();
                    bt.emplaceBack(0, 0), bt.emplaceBack(n.EXTENT, 0), bt.emplaceBack(0, n.EXTENT), bt.emplaceBack(n.EXTENT, n.EXTENT), this.tileExtentBuffer = tt.createVertexBuffer(bt, Bs.members), this.tileExtentSegments = n.SegmentVector.simpleSegment(0, 0, 4, 2);
                    var it = new n.StructArrayLayout2i4();
                    it.emplaceBack(0, 0), it.emplaceBack(n.EXTENT, 0), it.emplaceBack(0, n.EXTENT), it.emplaceBack(n.EXTENT, n.EXTENT), this.debugBuffer = tt.createVertexBuffer(it, Bs.members), this.debugSegments = n.SegmentVector.simpleSegment(0, 0, 4, 5);
                    var _t = new n.StructArrayLayout4i8();
                    _t.emplaceBack(0, 0, 0, 0), _t.emplaceBack(n.EXTENT, 0, n.EXTENT, 0), _t.emplaceBack(0, n.EXTENT, 0, n.EXTENT), _t.emplaceBack(n.EXTENT, n.EXTENT, n.EXTENT, n.EXTENT), this.rasterBoundsBuffer = tt.createVertexBuffer(_t, G.members), this.rasterBoundsSegments = n.SegmentVector.simpleSegment(0, 0, 4, 2);
                    var Yt = new n.StructArrayLayout2i4();
                    Yt.emplaceBack(0, 0), Yt.emplaceBack(1, 0), Yt.emplaceBack(0, 1), Yt.emplaceBack(1, 1), this.viewportBuffer = tt.createVertexBuffer(Yt, Bs.members), this.viewportSegments = n.SegmentVector.simpleSegment(0, 0, 4, 2);
                    var le = new n.StructArrayLayout1ui2();
                    le.emplaceBack(0), le.emplaceBack(1), le.emplaceBack(3), le.emplaceBack(2), le.emplaceBack(0), this.tileBorderIndexBuffer = tt.createIndexBuffer(le);
                    var Ee = new n.StructArrayLayout3ui6();
                    Ee.emplaceBack(0, 1, 2), Ee.emplaceBack(2, 1, 3), this.quadTriangleIndexBuffer = tt.createIndexBuffer(Ee), this.emptyTexture = new n.Texture(tt, {
                      width: 1,
                      height: 1,
                      data: new Uint8Array([
                        0,
                        0,
                        0,
                        0
                      ])
                    }, tt.gl.RGBA);
                    var $e = this.context.gl;
                    this.stencilClearMode = new Je({
                      func: $e.ALWAYS,
                      mask: 0
                    }, 0, 255, $e.ZERO, $e.ZERO, $e.ZERO);
                  }, dn.prototype.clearStencil = function() {
                    var tt = this.context, bt = tt.gl;
                    this.nextStencilID = 1, this.currentStencilSource = void 0;
                    var it = n.create();
                    n.ortho(it, 0, this.width, this.height, 0, 0, 1), n.scale(it, it, [
                      bt.drawingBufferWidth,
                      bt.drawingBufferHeight,
                      0
                    ]), this.useProgram("clippingMask").draw(tt, bt.TRIANGLES, Le.disabled, this.stencilClearMode, ue.disabled, Ye.disabled, Yc(it), "$clipping", this.viewportBuffer, this.quadTriangleIndexBuffer, this.viewportSegments);
                  }, dn.prototype._renderTileClippingMasks = function(tt, bt) {
                    if (!(this.currentStencilSource === tt.source || !tt.isTileClipped() || !bt || !bt.length)) {
                      this.currentStencilSource = tt.source;
                      var it = this.context, _t = it.gl;
                      this.nextStencilID + bt.length > 256 && this.clearStencil(), it.setColorMode(ue.disabled), it.setDepthMode(Le.disabled);
                      var Yt = this.useProgram("clippingMask");
                      this._tileClippingMaskIDs = {};
                      for (var le = 0, Ee = bt; le < Ee.length; le += 1) {
                        var $e = Ee[le], vr = this._tileClippingMaskIDs[$e.key] = this.nextStencilID++;
                        Yt.draw(it, _t.TRIANGLES, Le.disabled, new Je({
                          func: _t.ALWAYS,
                          mask: 0
                        }, vr, 255, _t.KEEP, _t.KEEP, _t.REPLACE), ue.disabled, Ye.disabled, Yc($e.posMatrix), "$clipping", this.tileExtentBuffer, this.quadTriangleIndexBuffer, this.tileExtentSegments);
                      }
                    }
                  }, dn.prototype.stencilModeFor3D = function() {
                    this.currentStencilSource = void 0, this.nextStencilID + 1 > 256 && this.clearStencil();
                    var tt = this.nextStencilID++, bt = this.context.gl;
                    return new Je({
                      func: bt.NOTEQUAL,
                      mask: 255
                    }, tt, 255, bt.KEEP, bt.KEEP, bt.REPLACE);
                  }, dn.prototype.stencilModeForClipping = function(tt) {
                    var bt = this.context.gl;
                    return new Je({
                      func: bt.EQUAL,
                      mask: 255
                    }, this._tileClippingMaskIDs[tt.key], 0, bt.KEEP, bt.KEEP, bt.REPLACE);
                  }, dn.prototype.stencilConfigForOverlap = function(tt) {
                    var bt, it = this.context.gl, _t = tt.sort(function(vr, Lr) {
                      return Lr.overscaledZ - vr.overscaledZ;
                    }), Yt = _t[_t.length - 1].overscaledZ, le = _t[0].overscaledZ - Yt + 1;
                    if (le > 1) {
                      this.currentStencilSource = void 0, this.nextStencilID + le > 256 && this.clearStencil();
                      for (var Ee = {}, $e = 0; $e < le; $e++)
                        Ee[$e + Yt] = new Je({
                          func: it.GEQUAL,
                          mask: 255
                        }, $e + this.nextStencilID, 255, it.KEEP, it.KEEP, it.REPLACE);
                      return this.nextStencilID += le, [
                        Ee,
                        _t
                      ];
                    }
                    return [
                      (bt = {}, bt[Yt] = Je.disabled, bt),
                      _t
                    ];
                  }, dn.prototype.colorModeForRenderPass = function() {
                    var tt = this.context.gl;
                    if (this._showOverdrawInspector) {
                      var bt = 8, it = 1 / bt;
                      return new ue([
                        tt.CONSTANT_COLOR,
                        tt.ONE
                      ], new n.Color(it, it, it, 0), [
                        !0,
                        !0,
                        !0,
                        !0
                      ]);
                    } else return this.renderPass === "opaque" ? ue.unblended : ue.alphaBlended;
                  }, dn.prototype.depthModeForSublayer = function(tt, bt, it) {
                    if (!this.opaquePassEnabledForLayer())
                      return Le.disabled;
                    var _t = 1 - ((1 + this.currentLayer) * this.numSublayers + tt) * this.depthEpsilon;
                    return new Le(it || this.context.gl.LEQUAL, bt, [
                      _t,
                      _t
                    ]);
                  }, dn.prototype.opaquePassEnabledForLayer = function() {
                    return this.currentLayer < this.opaquePassCutoff;
                  }, dn.prototype.render = function(tt, bt) {
                    var it = this;
                    this.style = tt, this.options = bt, this.lineAtlas = tt.lineAtlas, this.imageManager = tt.imageManager, this.glyphManager = tt.glyphManager, this.symbolFadeChange = tt.placement.symbolFadeChange(n.browser.now()), this.imageManager.beginFrame();
                    var _t = this.style._order, Yt = this.style.sourceCaches;
                    for (var le in Yt) {
                      var Ee = Yt[le];
                      Ee.used && Ee.prepare(this.context);
                    }
                    var $e = {}, vr = {}, Lr = {};
                    for (var Hr in Yt) {
                      var Ur = Yt[Hr];
                      $e[Hr] = Ur.getVisibleCoordinates(), vr[Hr] = $e[Hr].slice().reverse(), Lr[Hr] = Ur.getVisibleCoordinates(!0).reverse();
                    }
                    this.opaquePassCutoff = 1 / 0;
                    for (var hn = 0; hn < _t.length; hn++) {
                      var En = _t[hn];
                      if (this.style._layers[En].is3D()) {
                        this.opaquePassCutoff = hn;
                        break;
                      }
                    }
                    this.renderPass = "offscreen";
                    for (var Mn = 0, _n = _t; Mn < _n.length; Mn += 1) {
                      var In = _n[Mn], Kn = this.style._layers[In];
                      if (!(!Kn.hasOffscreenPass() || Kn.isHidden(this.transform.zoom))) {
                        var xi = vr[Kn.source];
                        Kn.type !== "custom" && !xi.length || this.renderLayer(this, Yt[Kn.source], Kn, xi);
                      }
                    }
                    for (this.context.bindFramebuffer.set(null), this.context.clear({
                      color: bt.showOverdrawInspector ? n.Color.black : n.Color.transparent,
                      depth: 1
                    }), this.clearStencil(), this._showOverdrawInspector = bt.showOverdrawInspector, this.depthRangeFor3D = [
                      0,
                      1 - (tt._order.length + 2) * this.numSublayers * this.depthEpsilon
                    ], this.renderPass = "opaque", this.currentLayer = _t.length - 1; this.currentLayer >= 0; this.currentLayer--) {
                      var Ei = this.style._layers[_t[this.currentLayer]], zi = Yt[Ei.source], Vi = $e[Ei.source];
                      this._renderTileClippingMasks(Ei, Vi), this.renderLayer(this, zi, Ei, Vi);
                    }
                    for (this.renderPass = "translucent", this.currentLayer = 0; this.currentLayer < _t.length; this.currentLayer++) {
                      var Di = this.style._layers[_t[this.currentLayer]], Hi = Yt[Di.source], Ki = (Di.type === "symbol" ? Lr : vr)[Di.source];
                      this._renderTileClippingMasks(Di, $e[Di.source]), this.renderLayer(this, Hi, Di, Ki);
                    }
                    if (this.options.showTileBoundaries) {
                      var na, da, la = n.values(this.style._layers);
                      la.forEach(function(Da) {
                        Da.source && !Da.isHidden(it.transform.zoom) && (Da.source !== (da && da.id) && (da = it.style.sourceCaches[Da.source]), (!na || na.getSource().maxzoom < da.getSource().maxzoom) && (na = da));
                      }), na && un.debug(this, na, na.getVisibleCoordinates());
                    }
                    this.options.showPadding && Be(this), this.context.setDefault();
                  }, dn.prototype.renderLayer = function(tt, bt, it, _t) {
                    it.isHidden(this.transform.zoom) || it.type !== "background" && it.type !== "custom" && !_t.length || (this.id = it.id, this.gpuTimingStart(it), un[it.type](tt, bt, it, _t, this.style.placement.variableOffsets), this.gpuTimingEnd());
                  }, dn.prototype.gpuTimingStart = function(tt) {
                    if (this.options.gpuTiming) {
                      var bt = this.context.extTimerQuery, it = this.gpuTimers[tt.id];
                      it || (it = this.gpuTimers[tt.id] = {
                        calls: 0,
                        cpuTime: 0,
                        query: bt.createQueryEXT()
                      }), it.calls++, bt.beginQueryEXT(bt.TIME_ELAPSED_EXT, it.query);
                    }
                  }, dn.prototype.gpuTimingEnd = function() {
                    if (this.options.gpuTiming) {
                      var tt = this.context.extTimerQuery;
                      tt.endQueryEXT(tt.TIME_ELAPSED_EXT);
                    }
                  }, dn.prototype.collectGpuTimers = function() {
                    var tt = this.gpuTimers;
                    return this.gpuTimers = {}, tt;
                  }, dn.prototype.queryGpuTimers = function(tt) {
                    var bt = {};
                    for (var it in tt) {
                      var _t = tt[it], Yt = this.context.extTimerQuery, le = Yt.getQueryObjectEXT(_t.query, Yt.QUERY_RESULT_EXT) / (1e3 * 1e3);
                      Yt.deleteQueryEXT(_t.query), bt[it] = le;
                    }
                    return bt;
                  }, dn.prototype.translatePosMatrix = function(tt, bt, it, _t, Yt) {
                    if (!it[0] && !it[1])
                      return tt;
                    var le = Yt ? _t === "map" ? this.transform.angle : 0 : _t === "viewport" ? -this.transform.angle : 0;
                    if (le) {
                      var Ee = Math.sin(le), $e = Math.cos(le);
                      it = [
                        it[0] * $e - it[1] * Ee,
                        it[0] * Ee + it[1] * $e
                      ];
                    }
                    var vr = [
                      Yt ? it[0] : Fn(bt, it[0], this.transform.zoom),
                      Yt ? it[1] : Fn(bt, it[1], this.transform.zoom),
                      0
                    ], Lr = new Float32Array(16);
                    return n.translate(Lr, tt, vr), Lr;
                  }, dn.prototype.saveTileTexture = function(tt) {
                    var bt = this._tileTextures[tt.size[0]];
                    bt ? bt.push(tt) : this._tileTextures[tt.size[0]] = [tt];
                  }, dn.prototype.getTileTexture = function(tt) {
                    var bt = this._tileTextures[tt];
                    return bt && bt.length > 0 ? bt.pop() : null;
                  }, dn.prototype.isPatternMissing = function(tt) {
                    if (!tt)
                      return !1;
                    if (!tt.from || !tt.to)
                      return !0;
                    var bt = this.imageManager.getPattern(tt.from.toString()), it = this.imageManager.getPattern(tt.to.toString());
                    return !bt || !it;
                  }, dn.prototype.useProgram = function(tt, bt) {
                    this.cache = this.cache || {};
                    var it = "" + tt + (bt ? bt.cacheKey : "") + (this._showOverdrawInspector ? "/overdraw" : "");
                    return this.cache[it] || (this.cache[it] = new Jf(this.context, tt, ad[tt], bt, Du[tt], this._showOverdrawInspector)), this.cache[it];
                  }, dn.prototype.setCustomLayerDefaults = function() {
                    this.context.unbindVAO(), this.context.cullFace.setDefault(), this.context.activeTexture.setDefault(), this.context.pixelStoreUnpack.setDefault(), this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(), this.context.pixelStoreUnpackFlipY.setDefault();
                  }, dn.prototype.setBaseState = function() {
                    var tt = this.context.gl;
                    this.context.cullFace.set(!1), this.context.viewport.set([
                      0,
                      0,
                      this.width,
                      this.height
                    ]), this.context.blendEquation.set(tt.FUNC_ADD);
                  }, dn.prototype.initDebugOverlayCanvas = function() {
                    if (this.debugOverlayCanvas == null) {
                      this.debugOverlayCanvas = n.window.document.createElement("canvas"), this.debugOverlayCanvas.width = 512, this.debugOverlayCanvas.height = 512;
                      var tt = this.context.gl;
                      this.debugOverlayTexture = new n.Texture(this.context, this.debugOverlayCanvas, tt.RGBA);
                    }
                  }, dn.prototype.destroy = function() {
                    this.emptyTexture.destroy(), this.debugOverlayTexture && this.debugOverlayTexture.destroy();
                  };
                  var On = function(tt, bt) {
                    this.points = tt, this.planes = bt;
                  };
                  On.fromInvProjectionMatrix = function(tt, bt, it) {
                    var _t = [
                      [
                        -1,
                        1,
                        -1,
                        1
                      ],
                      [
                        1,
                        1,
                        -1,
                        1
                      ],
                      [
                        1,
                        -1,
                        -1,
                        1
                      ],
                      [
                        -1,
                        -1,
                        -1,
                        1
                      ],
                      [
                        -1,
                        1,
                        1,
                        1
                      ],
                      [
                        1,
                        1,
                        1,
                        1
                      ],
                      [
                        1,
                        -1,
                        1,
                        1
                      ],
                      [
                        -1,
                        -1,
                        1,
                        1
                      ]
                    ], Yt = Math.pow(2, it), le = _t.map(function(vr) {
                      return n.transformMat4([], vr, tt);
                    }).map(function(vr) {
                      return n.scale$1([], vr, 1 / vr[3] / bt * Yt);
                    }), Ee = [
                      [
                        0,
                        1,
                        2
                      ],
                      [
                        6,
                        5,
                        4
                      ],
                      [
                        0,
                        3,
                        7
                      ],
                      [
                        2,
                        1,
                        5
                      ],
                      [
                        3,
                        2,
                        6
                      ],
                      [
                        0,
                        4,
                        5
                      ]
                    ], $e = Ee.map(function(vr) {
                      var Lr = n.sub([], le[vr[0]], le[vr[1]]), Hr = n.sub([], le[vr[2]], le[vr[1]]), Ur = n.normalize([], n.cross([], Lr, Hr)), hn = -n.dot(Ur, le[vr[1]]);
                      return Ur.concat(hn);
                    });
                    return new On(le, $e);
                  };
                  var ai = function(tt, bt) {
                    this.min = tt, this.max = bt, this.center = n.scale$2([], n.add([], this.min, this.max), 0.5);
                  };
                  ai.prototype.quadrant = function(tt) {
                    for (var bt = [
                      tt % 2 === 0,
                      tt < 2
                    ], it = n.clone$2(this.min), _t = n.clone$2(this.max), Yt = 0; Yt < bt.length; Yt++)
                      it[Yt] = bt[Yt] ? this.min[Yt] : this.center[Yt], _t[Yt] = bt[Yt] ? this.center[Yt] : this.max[Yt];
                    return _t[2] = this.max[2], new ai(it, _t);
                  }, ai.prototype.distanceX = function(tt) {
                    var bt = Math.max(Math.min(this.max[0], tt[0]), this.min[0]);
                    return bt - tt[0];
                  }, ai.prototype.distanceY = function(tt) {
                    var bt = Math.max(Math.min(this.max[1], tt[1]), this.min[1]);
                    return bt - tt[1];
                  }, ai.prototype.intersects = function(tt) {
                    for (var bt = [
                      [
                        this.min[0],
                        this.min[1],
                        0,
                        1
                      ],
                      [
                        this.max[0],
                        this.min[1],
                        0,
                        1
                      ],
                      [
                        this.max[0],
                        this.max[1],
                        0,
                        1
                      ],
                      [
                        this.min[0],
                        this.max[1],
                        0,
                        1
                      ]
                    ], it = !0, _t = 0; _t < tt.planes.length; _t++) {
                      for (var Yt = tt.planes[_t], le = 0, Ee = 0; Ee < bt.length; Ee++)
                        le += n.dot$1(Yt, bt[Ee]) >= 0;
                      if (le === 0)
                        return 0;
                      le !== bt.length && (it = !1);
                    }
                    if (it)
                      return 2;
                    for (var $e = 0; $e < 3; $e++) {
                      for (var vr = Number.MAX_VALUE, Lr = -Number.MAX_VALUE, Hr = 0; Hr < tt.points.length; Hr++) {
                        var Ur = tt.points[Hr][$e] - this.min[$e];
                        vr = Math.min(vr, Ur), Lr = Math.max(Lr, Ur);
                      }
                      if (Lr < 0 || vr > this.max[$e] - this.min[$e])
                        return 0;
                    }
                    return 1;
                  };
                  var ri = function(tt, bt, it, _t) {
                    if (tt === void 0 && (tt = 0), bt === void 0 && (bt = 0), it === void 0 && (it = 0), _t === void 0 && (_t = 0), isNaN(tt) || tt < 0 || isNaN(bt) || bt < 0 || isNaN(it) || it < 0 || isNaN(_t) || _t < 0)
                      throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");
                    this.top = tt, this.bottom = bt, this.left = it, this.right = _t;
                  };
                  ri.prototype.interpolate = function(tt, bt, it) {
                    return bt.top != null && tt.top != null && (this.top = n.number(tt.top, bt.top, it)), bt.bottom != null && tt.bottom != null && (this.bottom = n.number(tt.bottom, bt.bottom, it)), bt.left != null && tt.left != null && (this.left = n.number(tt.left, bt.left, it)), bt.right != null && tt.right != null && (this.right = n.number(tt.right, bt.right, it)), this;
                  }, ri.prototype.getCenter = function(tt, bt) {
                    var it = n.clamp((this.left + tt - this.right) / 2, 0, tt), _t = n.clamp((this.top + bt - this.bottom) / 2, 0, bt);
                    return new n.Point(it, _t);
                  }, ri.prototype.equals = function(tt) {
                    return this.top === tt.top && this.bottom === tt.bottom && this.left === tt.left && this.right === tt.right;
                  }, ri.prototype.clone = function() {
                    return new ri(this.top, this.bottom, this.left, this.right);
                  }, ri.prototype.toJSON = function() {
                    return {
                      top: this.top,
                      bottom: this.bottom,
                      left: this.left,
                      right: this.right
                    };
                  };
                  var gi = function(tt, bt, it, _t, Yt) {
                    this.tileSize = 512, this.maxValidLatitude = 85.051129, this._renderWorldCopies = Yt === void 0 ? !0 : Yt, this._minZoom = tt || 0, this._maxZoom = bt || 22, this._minPitch = it ?? 0, this._maxPitch = _t ?? 60, this.setMaxBounds(), this.width = 0, this.height = 0, this._center = new n.LngLat(0, 0), this.zoom = 0, this.angle = 0, this._fov = 0.6435011087932844, this._pitch = 0, this._unmodified = !0, this._edgeInsets = new ri(), this._posMatrixCache = {}, this._alignedPosMatrixCache = {};
                  }, Ni = {
                    minZoom: { configurable: !0 },
                    maxZoom: { configurable: !0 },
                    minPitch: { configurable: !0 },
                    maxPitch: { configurable: !0 },
                    renderWorldCopies: { configurable: !0 },
                    worldSize: { configurable: !0 },
                    centerOffset: { configurable: !0 },
                    size: { configurable: !0 },
                    bearing: { configurable: !0 },
                    pitch: { configurable: !0 },
                    fov: { configurable: !0 },
                    zoom: { configurable: !0 },
                    center: { configurable: !0 },
                    padding: { configurable: !0 },
                    centerPoint: { configurable: !0 },
                    unmodified: { configurable: !0 },
                    point: { configurable: !0 }
                  };
                  gi.prototype.clone = function() {
                    var tt = new gi(this._minZoom, this._maxZoom, this._minPitch, this.maxPitch, this._renderWorldCopies);
                    return tt.tileSize = this.tileSize, tt.latRange = this.latRange, tt.width = this.width, tt.height = this.height, tt._center = this._center, tt.zoom = this.zoom, tt.angle = this.angle, tt._fov = this._fov, tt._pitch = this._pitch, tt._unmodified = this._unmodified, tt._edgeInsets = this._edgeInsets.clone(), tt._calcMatrices(), tt;
                  }, Ni.minZoom.get = function() {
                    return this._minZoom;
                  }, Ni.minZoom.set = function(mt) {
                    this._minZoom !== mt && (this._minZoom = mt, this.zoom = Math.max(this.zoom, mt));
                  }, Ni.maxZoom.get = function() {
                    return this._maxZoom;
                  }, Ni.maxZoom.set = function(mt) {
                    this._maxZoom !== mt && (this._maxZoom = mt, this.zoom = Math.min(this.zoom, mt));
                  }, Ni.minPitch.get = function() {
                    return this._minPitch;
                  }, Ni.minPitch.set = function(mt) {
                    this._minPitch !== mt && (this._minPitch = mt, this.pitch = Math.max(this.pitch, mt));
                  }, Ni.maxPitch.get = function() {
                    return this._maxPitch;
                  }, Ni.maxPitch.set = function(mt) {
                    this._maxPitch !== mt && (this._maxPitch = mt, this.pitch = Math.min(this.pitch, mt));
                  }, Ni.renderWorldCopies.get = function() {
                    return this._renderWorldCopies;
                  }, Ni.renderWorldCopies.set = function(mt) {
                    mt === void 0 ? mt = !0 : mt === null && (mt = !1), this._renderWorldCopies = mt;
                  }, Ni.worldSize.get = function() {
                    return this.tileSize * this.scale;
                  }, Ni.centerOffset.get = function() {
                    return this.centerPoint._sub(this.size._div(2));
                  }, Ni.size.get = function() {
                    return new n.Point(this.width, this.height);
                  }, Ni.bearing.get = function() {
                    return -this.angle / Math.PI * 180;
                  }, Ni.bearing.set = function(mt) {
                    var tt = -n.wrap(mt, -180, 180) * Math.PI / 180;
                    this.angle !== tt && (this._unmodified = !1, this.angle = tt, this._calcMatrices(), this.rotationMatrix = n.create$2(), n.rotate(this.rotationMatrix, this.rotationMatrix, this.angle));
                  }, Ni.pitch.get = function() {
                    return this._pitch / Math.PI * 180;
                  }, Ni.pitch.set = function(mt) {
                    var tt = n.clamp(mt, this.minPitch, this.maxPitch) / 180 * Math.PI;
                    this._pitch !== tt && (this._unmodified = !1, this._pitch = tt, this._calcMatrices());
                  }, Ni.fov.get = function() {
                    return this._fov / Math.PI * 180;
                  }, Ni.fov.set = function(mt) {
                    mt = Math.max(0.01, Math.min(60, mt)), this._fov !== mt && (this._unmodified = !1, this._fov = mt / 180 * Math.PI, this._calcMatrices());
                  }, Ni.zoom.get = function() {
                    return this._zoom;
                  }, Ni.zoom.set = function(mt) {
                    var tt = Math.min(Math.max(mt, this.minZoom), this.maxZoom);
                    this._zoom !== tt && (this._unmodified = !1, this._zoom = tt, this.scale = this.zoomScale(tt), this.tileZoom = Math.floor(tt), this.zoomFraction = tt - this.tileZoom, this._constrain(), this._calcMatrices());
                  }, Ni.center.get = function() {
                    return this._center;
                  }, Ni.center.set = function(mt) {
                    mt.lat === this._center.lat && mt.lng === this._center.lng || (this._unmodified = !1, this._center = mt, this._constrain(), this._calcMatrices());
                  }, Ni.padding.get = function() {
                    return this._edgeInsets.toJSON();
                  }, Ni.padding.set = function(mt) {
                    this._edgeInsets.equals(mt) || (this._unmodified = !1, this._edgeInsets.interpolate(this._edgeInsets, mt, 1), this._calcMatrices());
                  }, Ni.centerPoint.get = function() {
                    return this._edgeInsets.getCenter(this.width, this.height);
                  }, gi.prototype.isPaddingEqual = function(tt) {
                    return this._edgeInsets.equals(tt);
                  }, gi.prototype.interpolatePadding = function(tt, bt, it) {
                    this._unmodified = !1, this._edgeInsets.interpolate(tt, bt, it), this._constrain(), this._calcMatrices();
                  }, gi.prototype.coveringZoomLevel = function(tt) {
                    var bt = (tt.roundZoom ? Math.round : Math.floor)(this.zoom + this.scaleZoom(this.tileSize / tt.tileSize));
                    return Math.max(0, bt);
                  }, gi.prototype.getVisibleUnwrappedCoordinates = function(tt) {
                    var bt = [new n.UnwrappedTileID(0, tt)];
                    if (this._renderWorldCopies)
                      for (var it = this.pointCoordinate(new n.Point(0, 0)), _t = this.pointCoordinate(new n.Point(this.width, 0)), Yt = this.pointCoordinate(new n.Point(this.width, this.height)), le = this.pointCoordinate(new n.Point(0, this.height)), Ee = Math.floor(Math.min(it.x, _t.x, Yt.x, le.x)), $e = Math.floor(Math.max(it.x, _t.x, Yt.x, le.x)), vr = 1, Lr = Ee - vr; Lr <= $e + vr; Lr++)
                        Lr !== 0 && bt.push(new n.UnwrappedTileID(Lr, tt));
                    return bt;
                  }, gi.prototype.coveringTiles = function(tt) {
                    var bt = this.coveringZoomLevel(tt), it = bt;
                    if (tt.minzoom !== void 0 && bt < tt.minzoom)
                      return [];
                    tt.maxzoom !== void 0 && bt > tt.maxzoom && (bt = tt.maxzoom);
                    var _t = n.MercatorCoordinate.fromLngLat(this.center), Yt = Math.pow(2, bt), le = [
                      Yt * _t.x,
                      Yt * _t.y,
                      0
                    ], Ee = On.fromInvProjectionMatrix(this.invProjMatrix, this.worldSize, bt), $e = tt.minzoom || 0;
                    this.pitch <= 60 && this._edgeInsets.top < 0.1 && ($e = bt);
                    var vr = 3, Lr = function(la) {
                      return {
                        aabb: new ai([
                          la * Yt,
                          0,
                          0
                        ], [
                          (la + 1) * Yt,
                          Yt,
                          0
                        ]),
                        zoom: 0,
                        x: 0,
                        y: 0,
                        wrap: la,
                        fullyVisible: !1
                      };
                    }, Hr = [], Ur = [], hn = bt, En = tt.reparseOverscaled ? it : bt;
                    if (this._renderWorldCopies)
                      for (var Mn = 1; Mn <= 3; Mn++)
                        Hr.push(Lr(-Mn)), Hr.push(Lr(Mn));
                    for (Hr.push(Lr(0)); Hr.length > 0; ) {
                      var _n = Hr.pop(), In = _n.x, Kn = _n.y, xi = _n.fullyVisible;
                      if (!xi) {
                        var Ei = _n.aabb.intersects(Ee);
                        if (Ei === 0)
                          continue;
                        xi = Ei === 2;
                      }
                      var zi = _n.aabb.distanceX(le), Vi = _n.aabb.distanceY(le), Di = Math.max(Math.abs(zi), Math.abs(Vi)), Hi = vr + (1 << hn - _n.zoom) - 2;
                      if (_n.zoom === hn || Di > Hi && _n.zoom >= $e) {
                        Ur.push({
                          tileID: new n.OverscaledTileID(_n.zoom === hn ? En : _n.zoom, _n.wrap, _n.zoom, In, Kn),
                          distanceSq: n.sqrLen([
                            le[0] - 0.5 - In,
                            le[1] - 0.5 - Kn
                          ])
                        });
                        continue;
                      }
                      for (var Ki = 0; Ki < 4; Ki++) {
                        var na = (In << 1) + Ki % 2, da = (Kn << 1) + (Ki >> 1);
                        Hr.push({
                          aabb: _n.aabb.quadrant(Ki),
                          zoom: _n.zoom + 1,
                          x: na,
                          y: da,
                          wrap: _n.wrap,
                          fullyVisible: xi
                        });
                      }
                    }
                    return Ur.sort(function(la, Da) {
                      return la.distanceSq - Da.distanceSq;
                    }).map(function(la) {
                      return la.tileID;
                    });
                  }, gi.prototype.resize = function(tt, bt) {
                    this.width = tt, this.height = bt, this.pixelsToGLUnits = [
                      2 / tt,
                      -2 / bt
                    ], this._constrain(), this._calcMatrices();
                  }, Ni.unmodified.get = function() {
                    return this._unmodified;
                  }, gi.prototype.zoomScale = function(tt) {
                    return Math.pow(2, tt);
                  }, gi.prototype.scaleZoom = function(tt) {
                    return Math.log(tt) / Math.LN2;
                  }, gi.prototype.project = function(tt) {
                    var bt = n.clamp(tt.lat, -this.maxValidLatitude, this.maxValidLatitude);
                    return new n.Point(n.mercatorXfromLng(tt.lng) * this.worldSize, n.mercatorYfromLat(bt) * this.worldSize);
                  }, gi.prototype.unproject = function(tt) {
                    return new n.MercatorCoordinate(tt.x / this.worldSize, tt.y / this.worldSize).toLngLat();
                  }, Ni.point.get = function() {
                    return this.project(this.center);
                  }, gi.prototype.setLocationAtPoint = function(tt, bt) {
                    var it = this.pointCoordinate(bt), _t = this.pointCoordinate(this.centerPoint), Yt = this.locationCoordinate(tt), le = new n.MercatorCoordinate(Yt.x - (it.x - _t.x), Yt.y - (it.y - _t.y));
                    this.center = this.coordinateLocation(le), this._renderWorldCopies && (this.center = this.center.wrap());
                  }, gi.prototype.locationPoint = function(tt) {
                    return this.coordinatePoint(this.locationCoordinate(tt));
                  }, gi.prototype.pointLocation = function(tt) {
                    return this.coordinateLocation(this.pointCoordinate(tt));
                  }, gi.prototype.locationCoordinate = function(tt) {
                    return n.MercatorCoordinate.fromLngLat(tt);
                  }, gi.prototype.coordinateLocation = function(tt) {
                    return tt.toLngLat();
                  }, gi.prototype.pointCoordinate = function(tt) {
                    var bt = 0, it = [
                      tt.x,
                      tt.y,
                      0,
                      1
                    ], _t = [
                      tt.x,
                      tt.y,
                      1,
                      1
                    ];
                    n.transformMat4(it, it, this.pixelMatrixInverse), n.transformMat4(_t, _t, this.pixelMatrixInverse);
                    var Yt = it[3], le = _t[3], Ee = it[0] / Yt, $e = _t[0] / le, vr = it[1] / Yt, Lr = _t[1] / le, Hr = it[2] / Yt, Ur = _t[2] / le, hn = Hr === Ur ? 0 : (bt - Hr) / (Ur - Hr);
                    return new n.MercatorCoordinate(n.number(Ee, $e, hn) / this.worldSize, n.number(vr, Lr, hn) / this.worldSize);
                  }, gi.prototype.coordinatePoint = function(tt) {
                    var bt = [
                      tt.x * this.worldSize,
                      tt.y * this.worldSize,
                      0,
                      1
                    ];
                    return n.transformMat4(bt, bt, this.pixelMatrix), new n.Point(bt[0] / bt[3], bt[1] / bt[3]);
                  }, gi.prototype.getBounds = function() {
                    return new n.LngLatBounds().extend(this.pointLocation(new n.Point(0, 0))).extend(this.pointLocation(new n.Point(this.width, 0))).extend(this.pointLocation(new n.Point(this.width, this.height))).extend(this.pointLocation(new n.Point(0, this.height)));
                  }, gi.prototype.getMaxBounds = function() {
                    return !this.latRange || this.latRange.length !== 2 || !this.lngRange || this.lngRange.length !== 2 ? null : new n.LngLatBounds([
                      this.lngRange[0],
                      this.latRange[0]
                    ], [
                      this.lngRange[1],
                      this.latRange[1]
                    ]);
                  }, gi.prototype.setMaxBounds = function(tt) {
                    tt ? (this.lngRange = [
                      tt.getWest(),
                      tt.getEast()
                    ], this.latRange = [
                      tt.getSouth(),
                      tt.getNorth()
                    ], this._constrain()) : (this.lngRange = null, this.latRange = [
                      -this.maxValidLatitude,
                      this.maxValidLatitude
                    ]);
                  }, gi.prototype.calculatePosMatrix = function(tt, bt) {
                    bt === void 0 && (bt = !1);
                    var it = tt.key, _t = bt ? this._alignedPosMatrixCache : this._posMatrixCache;
                    if (_t[it])
                      return _t[it];
                    var Yt = tt.canonical, le = this.worldSize / this.zoomScale(Yt.z), Ee = Yt.x + Math.pow(2, Yt.z) * tt.wrap, $e = n.identity(new Float64Array(16));
                    return n.translate($e, $e, [
                      Ee * le,
                      Yt.y * le,
                      0
                    ]), n.scale($e, $e, [
                      le / n.EXTENT,
                      le / n.EXTENT,
                      1
                    ]), n.multiply($e, bt ? this.alignedProjMatrix : this.projMatrix, $e), _t[it] = new Float32Array($e), _t[it];
                  }, gi.prototype.customLayerMatrix = function() {
                    return this.mercatorMatrix.slice();
                  }, gi.prototype._constrain = function() {
                    if (!(!this.center || !this.width || !this.height || this._constraining)) {
                      this._constraining = !0;
                      var tt = -90, bt = 90, it = -180, _t = 180, Yt, le, Ee, $e, vr = this.size, Lr = this._unmodified;
                      if (this.latRange) {
                        var Hr = this.latRange;
                        tt = n.mercatorYfromLat(Hr[1]) * this.worldSize, bt = n.mercatorYfromLat(Hr[0]) * this.worldSize, Yt = bt - tt < vr.y ? vr.y / (bt - tt) : 0;
                      }
                      if (this.lngRange) {
                        var Ur = this.lngRange;
                        it = n.mercatorXfromLng(Ur[0]) * this.worldSize, _t = n.mercatorXfromLng(Ur[1]) * this.worldSize, le = _t - it < vr.x ? vr.x / (_t - it) : 0;
                      }
                      var hn = this.point, En = Math.max(le || 0, Yt || 0);
                      if (En) {
                        this.center = this.unproject(new n.Point(le ? (_t + it) / 2 : hn.x, Yt ? (bt + tt) / 2 : hn.y)), this.zoom += this.scaleZoom(En), this._unmodified = Lr, this._constraining = !1;
                        return;
                      }
                      if (this.latRange) {
                        var Mn = hn.y, _n = vr.y / 2;
                        Mn - _n < tt && ($e = tt + _n), Mn + _n > bt && ($e = bt - _n);
                      }
                      if (this.lngRange) {
                        var In = hn.x, Kn = vr.x / 2;
                        In - Kn < it && (Ee = it + Kn), In + Kn > _t && (Ee = _t - Kn);
                      }
                      (Ee !== void 0 || $e !== void 0) && (this.center = this.unproject(new n.Point(Ee !== void 0 ? Ee : hn.x, $e !== void 0 ? $e : hn.y))), this._unmodified = Lr, this._constraining = !1;
                    }
                  }, gi.prototype._calcMatrices = function() {
                    if (this.height) {
                      var tt = this._fov / 2, bt = this.centerOffset;
                      this.cameraToCenterDistance = 0.5 / Math.tan(tt) * this.height;
                      var it = Math.PI / 2 + this._pitch, _t = this._fov * (0.5 + bt.y / this.height), Yt = Math.sin(_t) * this.cameraToCenterDistance / Math.sin(n.clamp(Math.PI - it - _t, 0.01, Math.PI - 0.01)), le = this.point, Ee = le.x, $e = le.y, vr = Math.cos(Math.PI / 2 - this._pitch) * Yt + this.cameraToCenterDistance, Lr = vr * 1.01, Hr = this.height / 50, Ur = new Float64Array(16);
                      n.perspective(Ur, this._fov, this.width / this.height, Hr, Lr), Ur[8] = -bt.x * 2 / this.width, Ur[9] = bt.y * 2 / this.height, n.scale(Ur, Ur, [
                        1,
                        -1,
                        1
                      ]), n.translate(Ur, Ur, [
                        0,
                        0,
                        -this.cameraToCenterDistance
                      ]), n.rotateX(Ur, Ur, this._pitch), n.rotateZ(Ur, Ur, this.angle), n.translate(Ur, Ur, [
                        -Ee,
                        -$e,
                        0
                      ]), this.mercatorMatrix = n.scale([], Ur, [
                        this.worldSize,
                        this.worldSize,
                        this.worldSize
                      ]), n.scale(Ur, Ur, [
                        1,
                        1,
                        n.mercatorZfromAltitude(1, this.center.lat) * this.worldSize,
                        1
                      ]), this.projMatrix = Ur, this.invProjMatrix = n.invert([], this.projMatrix);
                      var hn = this.width % 2 / 2, En = this.height % 2 / 2, Mn = Math.cos(this.angle), _n = Math.sin(this.angle), In = Ee - Math.round(Ee) + Mn * hn + _n * En, Kn = $e - Math.round($e) + Mn * En + _n * hn, xi = new Float64Array(Ur);
                      if (n.translate(xi, xi, [
                        In > 0.5 ? In - 1 : In,
                        Kn > 0.5 ? Kn - 1 : Kn,
                        0
                      ]), this.alignedProjMatrix = xi, Ur = n.create(), n.scale(Ur, Ur, [
                        this.width / 2,
                        -this.height / 2,
                        1
                      ]), n.translate(Ur, Ur, [
                        1,
                        -1,
                        0
                      ]), this.labelPlaneMatrix = Ur, Ur = n.create(), n.scale(Ur, Ur, [
                        1,
                        -1,
                        1
                      ]), n.translate(Ur, Ur, [
                        -1,
                        -1,
                        0
                      ]), n.scale(Ur, Ur, [
                        2 / this.width,
                        2 / this.height,
                        1
                      ]), this.glCoordMatrix = Ur, this.pixelMatrix = n.multiply(new Float64Array(16), this.labelPlaneMatrix, this.projMatrix), Ur = n.invert(new Float64Array(16), this.pixelMatrix), !Ur)
                        throw new Error("failed to invert matrix");
                      this.pixelMatrixInverse = Ur, this._posMatrixCache = {}, this._alignedPosMatrixCache = {};
                    }
                  }, gi.prototype.maxPitchScaleFactor = function() {
                    if (!this.pixelMatrixInverse)
                      return 1;
                    var tt = this.pointCoordinate(new n.Point(0, 0)), bt = [
                      tt.x * this.worldSize,
                      tt.y * this.worldSize,
                      0,
                      1
                    ], it = n.transformMat4(bt, bt, this.pixelMatrix);
                    return it[3] / this.cameraToCenterDistance;
                  }, gi.prototype.getCameraPoint = function() {
                    var tt = this._pitch, bt = Math.tan(tt) * (this.cameraToCenterDistance || 1);
                    return this.centerPoint.add(new n.Point(0, bt));
                  }, gi.prototype.getCameraQueryGeometry = function(tt) {
                    var bt = this.getCameraPoint();
                    if (tt.length === 1)
                      return [
                        tt[0],
                        bt
                      ];
                    for (var it = bt.x, _t = bt.y, Yt = bt.x, le = bt.y, Ee = 0, $e = tt; Ee < $e.length; Ee += 1) {
                      var vr = $e[Ee];
                      it = Math.min(it, vr.x), _t = Math.min(_t, vr.y), Yt = Math.max(Yt, vr.x), le = Math.max(le, vr.y);
                    }
                    return [
                      new n.Point(it, _t),
                      new n.Point(Yt, _t),
                      new n.Point(Yt, le),
                      new n.Point(it, le),
                      new n.Point(it, _t)
                    ];
                  }, Object.defineProperties(gi.prototype, Ni);
                  function Ia(mt, tt) {
                    var bt = !1, it = null, _t = function() {
                      it = null, bt && (mt(), it = setTimeout(_t, tt), bt = !1);
                    };
                    return function() {
                      return bt = !0, it || _t(), it;
                    };
                  }
                  var Pa = function(tt) {
                    this._hashName = tt && encodeURIComponent(tt), n.bindAll([
                      "_getCurrentHash",
                      "_onHashChange",
                      "_updateHash"
                    ], this), this._updateHash = Ia(this._updateHashUnthrottled.bind(this), 30 * 1e3 / 100);
                  };
                  Pa.prototype.addTo = function(tt) {
                    return this._map = tt, n.window.addEventListener("hashchange", this._onHashChange, !1), this._map.on("moveend", this._updateHash), this;
                  }, Pa.prototype.remove = function() {
                    return n.window.removeEventListener("hashchange", this._onHashChange, !1), this._map.off("moveend", this._updateHash), clearTimeout(this._updateHash()), delete this._map, this;
                  }, Pa.prototype.getHashString = function(tt) {
                    var bt = this._map.getCenter(), it = Math.round(this._map.getZoom() * 100) / 100, _t = Math.ceil((it * Math.LN2 + Math.log(512 / 360 / 0.5)) / Math.LN10), Yt = Math.pow(10, _t), le = Math.round(bt.lng * Yt) / Yt, Ee = Math.round(bt.lat * Yt) / Yt, $e = this._map.getBearing(), vr = this._map.getPitch(), Lr = "";
                    if (tt ? Lr += "/" + le + "/" + Ee + "/" + it : Lr += it + "/" + Ee + "/" + le, ($e || vr) && (Lr += "/" + Math.round($e * 10) / 10), vr && (Lr += "/" + Math.round(vr)), this._hashName) {
                      var Hr = this._hashName, Ur = !1, hn = n.window.location.hash.slice(1).split("&").map(function(En) {
                        var Mn = En.split("=")[0];
                        return Mn === Hr ? (Ur = !0, Mn + "=" + Lr) : En;
                      }).filter(function(En) {
                        return En;
                      });
                      return Ur || hn.push(Hr + "=" + Lr), "#" + hn.join("&");
                    }
                    return "#" + Lr;
                  }, Pa.prototype._getCurrentHash = function() {
                    var tt = this, bt = n.window.location.hash.replace("#", "");
                    if (this._hashName) {
                      var it;
                      return bt.split("&").map(function(_t) {
                        return _t.split("=");
                      }).forEach(function(_t) {
                        _t[0] === tt._hashName && (it = _t);
                      }), (it && it[1] || "").split("/");
                    }
                    return bt.split("/");
                  }, Pa.prototype._onHashChange = function() {
                    var tt = this._getCurrentHash();
                    if (tt.length >= 3 && !tt.some(function(it) {
                      return isNaN(it);
                    })) {
                      var bt = this._map.dragRotate.isEnabled() && this._map.touchZoomRotate.isEnabled() ? +(tt[3] || 0) : this._map.getBearing();
                      return this._map.jumpTo({
                        center: [
                          +tt[2],
                          +tt[1]
                        ],
                        zoom: +tt[0],
                        bearing: bt,
                        pitch: +(tt[4] || 0)
                      }), !0;
                    }
                    return !1;
                  }, Pa.prototype._updateHashUnthrottled = function() {
                    var tt = n.window.location.href.replace(/(#.+)?$/, this.getHashString());
                    try {
                      n.window.history.replaceState(n.window.history.state, null, tt);
                    } catch {
                    }
                  };
                  var Fa = {
                    linearity: 0.3,
                    easing: n.bezier(0, 0, 0.3, 1)
                  }, Ga = n.extend({
                    deceleration: 2500,
                    maxSpeed: 1400
                  }, Fa), Na = n.extend({
                    deceleration: 20,
                    maxSpeed: 1400
                  }, Fa), To = n.extend({
                    deceleration: 1e3,
                    maxSpeed: 360
                  }, Fa), Do = n.extend({
                    deceleration: 1e3,
                    maxSpeed: 90
                  }, Fa), gt = function(tt) {
                    this._map = tt, this.clear();
                  };
                  gt.prototype.clear = function() {
                    this._inertiaBuffer = [];
                  }, gt.prototype.record = function(tt) {
                    this._drainInertiaBuffer(), this._inertiaBuffer.push({
                      time: n.browser.now(),
                      settings: tt
                    });
                  }, gt.prototype._drainInertiaBuffer = function() {
                    for (var tt = this._inertiaBuffer, bt = n.browser.now(), it = 160; tt.length > 0 && bt - tt[0].time > it; )
                      tt.shift();
                  }, gt.prototype._onMoveEnd = function(tt) {
                    if (this._drainInertiaBuffer(), !(this._inertiaBuffer.length < 2)) {
                      for (var bt = {
                        zoom: 0,
                        bearing: 0,
                        pitch: 0,
                        pan: new n.Point(0, 0),
                        pinchAround: void 0,
                        around: void 0
                      }, it = 0, _t = this._inertiaBuffer; it < _t.length; it += 1) {
                        var Yt = _t[it], le = Yt.settings;
                        bt.zoom += le.zoomDelta || 0, bt.bearing += le.bearingDelta || 0, bt.pitch += le.pitchDelta || 0, le.panDelta && bt.pan._add(le.panDelta), le.around && (bt.around = le.around), le.pinchAround && (bt.pinchAround = le.pinchAround);
                      }
                      var Ee = this._inertiaBuffer[this._inertiaBuffer.length - 1], $e = Ee.time - this._inertiaBuffer[0].time, vr = {};
                      if (bt.pan.mag()) {
                        var Lr = Kt(bt.pan.mag(), $e, n.extend({}, Ga, tt || {}));
                        vr.offset = bt.pan.mult(Lr.amount / bt.pan.mag()), vr.center = this._map.transform.center, Ft(vr, Lr);
                      }
                      if (bt.zoom) {
                        var Hr = Kt(bt.zoom, $e, Na);
                        vr.zoom = this._map.transform.zoom + Hr.amount, Ft(vr, Hr);
                      }
                      if (bt.bearing) {
                        var Ur = Kt(bt.bearing, $e, To);
                        vr.bearing = this._map.transform.bearing + n.clamp(Ur.amount, -179, 179), Ft(vr, Ur);
                      }
                      if (bt.pitch) {
                        var hn = Kt(bt.pitch, $e, Do);
                        vr.pitch = this._map.transform.pitch + hn.amount, Ft(vr, hn);
                      }
                      if (vr.zoom || vr.bearing) {
                        var En = bt.pinchAround === void 0 ? bt.around : bt.pinchAround;
                        vr.around = En ? this._map.unproject(En) : this._map.getCenter();
                      }
                      return this.clear(), n.extend(vr, { noMoveStart: !0 });
                    }
                  };
                  function Ft(mt, tt) {
                    (!mt.duration || mt.duration < tt.duration) && (mt.duration = tt.duration, mt.easing = tt.easing);
                  }
                  function Kt(mt, tt, bt) {
                    var it = bt.maxSpeed, _t = bt.linearity, Yt = bt.deceleration, le = n.clamp(mt * _t / (tt / 1e3), -it, it), Ee = Math.abs(le) / (Yt * _t);
                    return {
                      easing: bt.easing,
                      duration: Ee * 1e3,
                      amount: le * (Ee / 2)
                    };
                  }
                  var pe = function(mt) {
                    function tt(it, _t, Yt, le) {
                      le === void 0 && (le = {});
                      var Ee = T.mousePos(_t.getCanvasContainer(), Yt), $e = _t.unproject(Ee);
                      mt.call(this, it, n.extend({
                        point: Ee,
                        lngLat: $e,
                        originalEvent: Yt
                      }, le)), this._defaultPrevented = !1, this.target = _t;
                    }
                    mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt;
                    var bt = { defaultPrevented: { configurable: !0 } };
                    return tt.prototype.preventDefault = function() {
                      this._defaultPrevented = !0;
                    }, bt.defaultPrevented.get = function() {
                      return this._defaultPrevented;
                    }, Object.defineProperties(tt.prototype, bt), tt;
                  }(n.Event), Te = function(mt) {
                    function tt(it, _t, Yt) {
                      var le = it === "touchend" ? Yt.changedTouches : Yt.touches, Ee = T.touchPos(_t.getCanvasContainer(), le), $e = Ee.map(function(Hr) {
                        return _t.unproject(Hr);
                      }), vr = Ee.reduce(function(Hr, Ur, hn, En) {
                        return Hr.add(Ur.div(En.length));
                      }, new n.Point(0, 0)), Lr = _t.unproject(vr);
                      mt.call(this, it, {
                        points: Ee,
                        point: vr,
                        lngLats: $e,
                        lngLat: Lr,
                        originalEvent: Yt
                      }), this._defaultPrevented = !1;
                    }
                    mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt;
                    var bt = { defaultPrevented: { configurable: !0 } };
                    return tt.prototype.preventDefault = function() {
                      this._defaultPrevented = !0;
                    }, bt.defaultPrevented.get = function() {
                      return this._defaultPrevented;
                    }, Object.defineProperties(tt.prototype, bt), tt;
                  }(n.Event), Ce = function(mt) {
                    function tt(it, _t, Yt) {
                      mt.call(this, it, { originalEvent: Yt }), this._defaultPrevented = !1;
                    }
                    mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt;
                    var bt = { defaultPrevented: { configurable: !0 } };
                    return tt.prototype.preventDefault = function() {
                      this._defaultPrevented = !0;
                    }, bt.defaultPrevented.get = function() {
                      return this._defaultPrevented;
                    }, Object.defineProperties(tt.prototype, bt), tt;
                  }(n.Event), er = function(tt, bt) {
                    this._map = tt, this._clickTolerance = bt.clickTolerance;
                  };
                  er.prototype.reset = function() {
                    delete this._mousedownPos;
                  }, er.prototype.wheel = function(tt) {
                    return this._firePreventable(new Ce(tt.type, this._map, tt));
                  }, er.prototype.mousedown = function(tt, bt) {
                    return this._mousedownPos = bt, this._firePreventable(new pe(tt.type, this._map, tt));
                  }, er.prototype.mouseup = function(tt) {
                    this._map.fire(new pe(tt.type, this._map, tt));
                  }, er.prototype.click = function(tt, bt) {
                    this._mousedownPos && this._mousedownPos.dist(bt) >= this._clickTolerance || this._map.fire(new pe(tt.type, this._map, tt));
                  }, er.prototype.dblclick = function(tt) {
                    return this._firePreventable(new pe(tt.type, this._map, tt));
                  }, er.prototype.mouseover = function(tt) {
                    this._map.fire(new pe(tt.type, this._map, tt));
                  }, er.prototype.mouseout = function(tt) {
                    this._map.fire(new pe(tt.type, this._map, tt));
                  }, er.prototype.touchstart = function(tt) {
                    return this._firePreventable(new Te(tt.type, this._map, tt));
                  }, er.prototype.touchmove = function(tt) {
                    this._map.fire(new Te(tt.type, this._map, tt));
                  }, er.prototype.touchend = function(tt) {
                    this._map.fire(new Te(tt.type, this._map, tt));
                  }, er.prototype.touchcancel = function(tt) {
                    this._map.fire(new Te(tt.type, this._map, tt));
                  }, er.prototype._firePreventable = function(tt) {
                    if (this._map.fire(tt), tt.defaultPrevented)
                      return {};
                  }, er.prototype.isEnabled = function() {
                    return !0;
                  }, er.prototype.isActive = function() {
                    return !1;
                  }, er.prototype.enable = function() {
                  }, er.prototype.disable = function() {
                  };
                  var We = function(tt) {
                    this._map = tt;
                  };
                  We.prototype.reset = function() {
                    this._delayContextMenu = !1, delete this._contextMenuEvent;
                  }, We.prototype.mousemove = function(tt) {
                    this._map.fire(new pe(tt.type, this._map, tt));
                  }, We.prototype.mousedown = function() {
                    this._delayContextMenu = !0;
                  }, We.prototype.mouseup = function() {
                    this._delayContextMenu = !1, this._contextMenuEvent && (this._map.fire(new pe("contextmenu", this._map, this._contextMenuEvent)), delete this._contextMenuEvent);
                  }, We.prototype.contextmenu = function(tt) {
                    this._delayContextMenu ? this._contextMenuEvent = tt : this._map.fire(new pe(tt.type, this._map, tt)), this._map.listens("contextmenu") && tt.preventDefault();
                  }, We.prototype.isEnabled = function() {
                    return !0;
                  }, We.prototype.isActive = function() {
                    return !1;
                  }, We.prototype.enable = function() {
                  }, We.prototype.disable = function() {
                  };
                  var gr = function(tt, bt) {
                    this._map = tt, this._el = tt.getCanvasContainer(), this._container = tt.getContainer(), this._clickTolerance = bt.clickTolerance || 1;
                  };
                  gr.prototype.isEnabled = function() {
                    return !!this._enabled;
                  }, gr.prototype.isActive = function() {
                    return !!this._active;
                  }, gr.prototype.enable = function() {
                    this.isEnabled() || (this._enabled = !0);
                  }, gr.prototype.disable = function() {
                    this.isEnabled() && (this._enabled = !1);
                  }, gr.prototype.mousedown = function(tt, bt) {
                    this.isEnabled() && tt.shiftKey && tt.button === 0 && (T.disableDrag(), this._startPos = this._lastPos = bt, this._active = !0);
                  }, gr.prototype.mousemoveWindow = function(tt, bt) {
                    if (this._active) {
                      var it = bt;
                      if (!(this._lastPos.equals(it) || !this._box && it.dist(this._startPos) < this._clickTolerance)) {
                        var _t = this._startPos;
                        this._lastPos = it, this._box || (this._box = T.create("div", "mapboxgl-boxzoom", this._container), this._container.classList.add("mapboxgl-crosshair"), this._fireEvent("boxzoomstart", tt));
                        var Yt = Math.min(_t.x, it.x), le = Math.max(_t.x, it.x), Ee = Math.min(_t.y, it.y), $e = Math.max(_t.y, it.y);
                        T.setTransform(this._box, "translate(" + Yt + "px," + Ee + "px)"), this._box.style.width = le - Yt + "px", this._box.style.height = $e - Ee + "px";
                      }
                    }
                  }, gr.prototype.mouseupWindow = function(tt, bt) {
                    var it = this;
                    if (this._active && tt.button === 0) {
                      var _t = this._startPos, Yt = bt;
                      if (this.reset(), T.suppressClick(), _t.x === Yt.x && _t.y === Yt.y)
                        this._fireEvent("boxzoomcancel", tt);
                      else
                        return this._map.fire(new n.Event("boxzoomend", { originalEvent: tt })), {
                          cameraAnimation: function(le) {
                            return le.fitScreenCoordinates(_t, Yt, it._map.getBearing(), { linear: !0 });
                          }
                        };
                    }
                  }, gr.prototype.keydown = function(tt) {
                    this._active && tt.keyCode === 27 && (this.reset(), this._fireEvent("boxzoomcancel", tt));
                  }, gr.prototype.reset = function() {
                    this._active = !1, this._container.classList.remove("mapboxgl-crosshair"), this._box && (T.remove(this._box), this._box = null), T.enableDrag(), delete this._startPos, delete this._lastPos;
                  }, gr.prototype._fireEvent = function(tt, bt) {
                    return this._map.fire(new n.Event(tt, { originalEvent: bt }));
                  };
                  function xr(mt, tt) {
                    for (var bt = {}, it = 0; it < mt.length; it++)
                      bt[mt[it].identifier] = tt[it];
                    return bt;
                  }
                  function kr(mt) {
                    for (var tt = new n.Point(0, 0), bt = 0, it = mt; bt < it.length; bt += 1) {
                      var _t = it[bt];
                      tt._add(_t);
                    }
                    return tt.div(mt.length);
                  }
                  var an = 500, on = 500, Ln = 30, Hn = function(tt) {
                    this.reset(), this.numTouches = tt.numTouches;
                  };
                  Hn.prototype.reset = function() {
                    delete this.centroid, delete this.startTime, delete this.touches, this.aborted = !1;
                  }, Hn.prototype.touchstart = function(tt, bt, it) {
                    (this.centroid || it.length > this.numTouches) && (this.aborted = !0), !this.aborted && (this.startTime === void 0 && (this.startTime = tt.timeStamp), it.length === this.numTouches && (this.centroid = kr(bt), this.touches = xr(it, bt)));
                  }, Hn.prototype.touchmove = function(tt, bt, it) {
                    if (!(this.aborted || !this.centroid)) {
                      var _t = xr(it, bt);
                      for (var Yt in this.touches) {
                        var le = this.touches[Yt], Ee = _t[Yt];
                        (!Ee || Ee.dist(le) > Ln) && (this.aborted = !0);
                      }
                    }
                  }, Hn.prototype.touchend = function(tt, bt, it) {
                    if ((!this.centroid || tt.timeStamp - this.startTime > on) && (this.aborted = !0), it.length === 0) {
                      var _t = !this.aborted && this.centroid;
                      if (this.reset(), _t)
                        return _t;
                    }
                  };
                  var cn = function(tt) {
                    this.singleTap = new Hn(tt), this.numTaps = tt.numTaps, this.reset();
                  };
                  cn.prototype.reset = function() {
                    this.lastTime = 1 / 0, delete this.lastTap, this.count = 0, this.singleTap.reset();
                  }, cn.prototype.touchstart = function(tt, bt, it) {
                    this.singleTap.touchstart(tt, bt, it);
                  }, cn.prototype.touchmove = function(tt, bt, it) {
                    this.singleTap.touchmove(tt, bt, it);
                  }, cn.prototype.touchend = function(tt, bt, it) {
                    var _t = this.singleTap.touchend(tt, bt, it);
                    if (_t) {
                      var Yt = tt.timeStamp - this.lastTime < an, le = !this.lastTap || this.lastTap.dist(_t) < Ln;
                      if ((!Yt || !le) && this.reset(), this.count++, this.lastTime = tt.timeStamp, this.lastTap = _t, this.count === this.numTaps)
                        return this.reset(), _t;
                    }
                  };
                  var xn = function() {
                    this._zoomIn = new cn({
                      numTouches: 1,
                      numTaps: 2
                    }), this._zoomOut = new cn({
                      numTouches: 2,
                      numTaps: 1
                    }), this.reset();
                  };
                  xn.prototype.reset = function() {
                    this._active = !1, this._zoomIn.reset(), this._zoomOut.reset();
                  }, xn.prototype.touchstart = function(tt, bt, it) {
                    this._zoomIn.touchstart(tt, bt, it), this._zoomOut.touchstart(tt, bt, it);
                  }, xn.prototype.touchmove = function(tt, bt, it) {
                    this._zoomIn.touchmove(tt, bt, it), this._zoomOut.touchmove(tt, bt, it);
                  }, xn.prototype.touchend = function(tt, bt, it) {
                    var _t = this, Yt = this._zoomIn.touchend(tt, bt, it), le = this._zoomOut.touchend(tt, bt, it);
                    if (Yt)
                      return this._active = !0, tt.preventDefault(), setTimeout(function() {
                        return _t.reset();
                      }, 0), {
                        cameraAnimation: function(Ee) {
                          return Ee.easeTo({
                            duration: 300,
                            zoom: Ee.getZoom() + 1,
                            around: Ee.unproject(Yt)
                          }, { originalEvent: tt });
                        }
                      };
                    if (le)
                      return this._active = !0, tt.preventDefault(), setTimeout(function() {
                        return _t.reset();
                      }, 0), {
                        cameraAnimation: function(Ee) {
                          return Ee.easeTo({
                            duration: 300,
                            zoom: Ee.getZoom() - 1,
                            around: Ee.unproject(le)
                          }, { originalEvent: tt });
                        }
                      };
                  }, xn.prototype.touchcancel = function() {
                    this.reset();
                  }, xn.prototype.enable = function() {
                    this._enabled = !0;
                  }, xn.prototype.disable = function() {
                    this._enabled = !1, this.reset();
                  }, xn.prototype.isEnabled = function() {
                    return this._enabled;
                  }, xn.prototype.isActive = function() {
                    return this._active;
                  };
                  var Pn = 0, Yn = 2, ti = {};
                  ti[Pn] = 1, ti[Yn] = 2;
                  function zn(mt, tt) {
                    var bt = ti[tt];
                    return mt.buttons === void 0 || (mt.buttons & bt) !== bt;
                  }
                  var Li = function(tt) {
                    this.reset(), this._clickTolerance = tt.clickTolerance || 1;
                  };
                  Li.prototype.reset = function() {
                    this._active = !1, this._moved = !1, delete this._lastPoint, delete this._eventButton;
                  }, Li.prototype._correctButton = function(tt, bt) {
                    return !1;
                  }, Li.prototype._move = function(tt, bt) {
                    return {};
                  }, Li.prototype.mousedown = function(tt, bt) {
                    if (!this._lastPoint) {
                      var it = T.mouseButton(tt);
                      this._correctButton(tt, it) && (this._lastPoint = bt, this._eventButton = it);
                    }
                  }, Li.prototype.mousemoveWindow = function(tt, bt) {
                    var it = this._lastPoint;
                    if (it) {
                      if (tt.preventDefault(), zn(tt, this._eventButton)) {
                        this.reset();
                        return;
                      }
                      if (!(!this._moved && bt.dist(it) < this._clickTolerance))
                        return this._moved = !0, this._lastPoint = bt, this._move(it, bt);
                    }
                  }, Li.prototype.mouseupWindow = function(tt) {
                    if (this._lastPoint) {
                      var bt = T.mouseButton(tt);
                      bt === this._eventButton && (this._moved && T.suppressClick(), this.reset());
                    }
                  }, Li.prototype.enable = function() {
                    this._enabled = !0;
                  }, Li.prototype.disable = function() {
                    this._enabled = !1, this.reset();
                  }, Li.prototype.isEnabled = function() {
                    return this._enabled;
                  }, Li.prototype.isActive = function() {
                    return this._active;
                  };
                  var Xi = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.mousedown = function(it, _t) {
                      mt.prototype.mousedown.call(this, it, _t), this._lastPoint && (this._active = !0);
                    }, tt.prototype._correctButton = function(it, _t) {
                      return _t === Pn && !it.ctrlKey;
                    }, tt.prototype._move = function(it, _t) {
                      return {
                        around: _t,
                        panDelta: _t.sub(it)
                      };
                    }, tt;
                  }(Li), oa = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype._correctButton = function(it, _t) {
                      return _t === Pn && it.ctrlKey || _t === Yn;
                    }, tt.prototype._move = function(it, _t) {
                      var Yt = 0.8, le = (_t.x - it.x) * Yt;
                      if (le)
                        return this._active = !0, { bearingDelta: le };
                    }, tt.prototype.contextmenu = function(it) {
                      it.preventDefault();
                    }, tt;
                  }(Li), ji = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype._correctButton = function(it, _t) {
                      return _t === Pn && it.ctrlKey || _t === Yn;
                    }, tt.prototype._move = function(it, _t) {
                      var Yt = -0.5, le = (_t.y - it.y) * Yt;
                      if (le)
                        return this._active = !0, { pitchDelta: le };
                    }, tt.prototype.contextmenu = function(it) {
                      it.preventDefault();
                    }, tt;
                  }(Li), ea = function(tt) {
                    this._minTouches = 1, this._clickTolerance = tt.clickTolerance || 1, this.reset();
                  };
                  ea.prototype.reset = function() {
                    this._active = !1, this._touches = {}, this._sum = new n.Point(0, 0);
                  }, ea.prototype.touchstart = function(tt, bt, it) {
                    return this._calculateTransform(tt, bt, it);
                  }, ea.prototype.touchmove = function(tt, bt, it) {
                    if (!(!this._active || it.length < this._minTouches))
                      return tt.preventDefault(), this._calculateTransform(tt, bt, it);
                  }, ea.prototype.touchend = function(tt, bt, it) {
                    this._calculateTransform(tt, bt, it), this._active && it.length < this._minTouches && this.reset();
                  }, ea.prototype.touchcancel = function() {
                    this.reset();
                  }, ea.prototype._calculateTransform = function(tt, bt, it) {
                    it.length > 0 && (this._active = !0);
                    var _t = xr(it, bt), Yt = new n.Point(0, 0), le = new n.Point(0, 0), Ee = 0;
                    for (var $e in _t) {
                      var vr = _t[$e], Lr = this._touches[$e];
                      Lr && (Yt._add(vr), le._add(vr.sub(Lr)), Ee++, _t[$e] = vr);
                    }
                    if (this._touches = _t, !(Ee < this._minTouches || !le.mag())) {
                      var Hr = le.div(Ee);
                      if (this._sum._add(Hr), !(this._sum.mag() < this._clickTolerance)) {
                        var Ur = Yt.div(Ee);
                        return {
                          around: Ur,
                          panDelta: Hr
                        };
                      }
                    }
                  }, ea.prototype.enable = function() {
                    this._enabled = !0;
                  }, ea.prototype.disable = function() {
                    this._enabled = !1, this.reset();
                  }, ea.prototype.isEnabled = function() {
                    return this._enabled;
                  }, ea.prototype.isActive = function() {
                    return this._active;
                  };
                  var sa = function() {
                    this.reset();
                  };
                  sa.prototype.reset = function() {
                    this._active = !1, delete this._firstTwoTouches;
                  }, sa.prototype._start = function(tt) {
                  }, sa.prototype._move = function(tt, bt, it) {
                    return {};
                  }, sa.prototype.touchstart = function(tt, bt, it) {
                    this._firstTwoTouches || it.length < 2 || (this._firstTwoTouches = [
                      it[0].identifier,
                      it[1].identifier
                    ], this._start([
                      bt[0],
                      bt[1]
                    ]));
                  }, sa.prototype.touchmove = function(tt, bt, it) {
                    if (this._firstTwoTouches) {
                      tt.preventDefault();
                      var _t = this._firstTwoTouches, Yt = _t[0], le = _t[1], Ee = Wa(it, bt, Yt), $e = Wa(it, bt, le);
                      if (!(!Ee || !$e)) {
                        var vr = this._aroundCenter ? null : Ee.add($e).div(2);
                        return this._move([
                          Ee,
                          $e
                        ], vr, tt);
                      }
                    }
                  }, sa.prototype.touchend = function(tt, bt, it) {
                    if (this._firstTwoTouches) {
                      var _t = this._firstTwoTouches, Yt = _t[0], le = _t[1], Ee = Wa(it, bt, Yt), $e = Wa(it, bt, le);
                      Ee && $e || (this._active && T.suppressClick(), this.reset());
                    }
                  }, sa.prototype.touchcancel = function() {
                    this.reset();
                  }, sa.prototype.enable = function(tt) {
                    this._enabled = !0, this._aroundCenter = !!tt && tt.around === "center";
                  }, sa.prototype.disable = function() {
                    this._enabled = !1, this.reset();
                  }, sa.prototype.isEnabled = function() {
                    return this._enabled;
                  }, sa.prototype.isActive = function() {
                    return this._active;
                  };
                  function Wa(mt, tt, bt) {
                    for (var it = 0; it < mt.length; it++)
                      if (mt[it].identifier === bt)
                        return tt[it];
                  }
                  var ya = 0.1;
                  function Oa(mt, tt) {
                    return Math.log(mt / tt) / Math.LN2;
                  }
                  var lo = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.reset = function() {
                      mt.prototype.reset.call(this), delete this._distance, delete this._startDistance;
                    }, tt.prototype._start = function(it) {
                      this._startDistance = this._distance = it[0].dist(it[1]);
                    }, tt.prototype._move = function(it, _t) {
                      var Yt = this._distance;
                      if (this._distance = it[0].dist(it[1]), !(!this._active && Math.abs(Oa(this._distance, this._startDistance)) < ya))
                        return this._active = !0, {
                          zoomDelta: Oa(this._distance, Yt),
                          pinchAround: _t
                        };
                    }, tt;
                  }(sa), Go = 25;
                  function Po(mt, tt) {
                    return mt.angleWith(tt) * 180 / Math.PI;
                  }
                  var Ui = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.reset = function() {
                      mt.prototype.reset.call(this), delete this._minDiameter, delete this._startVector, delete this._vector;
                    }, tt.prototype._start = function(it) {
                      this._startVector = this._vector = it[0].sub(it[1]), this._minDiameter = it[0].dist(it[1]);
                    }, tt.prototype._move = function(it, _t) {
                      var Yt = this._vector;
                      if (this._vector = it[0].sub(it[1]), !(!this._active && this._isBelowThreshold(this._vector)))
                        return this._active = !0, {
                          bearingDelta: Po(this._vector, Yt),
                          pinchAround: _t
                        };
                    }, tt.prototype._isBelowThreshold = function(it) {
                      this._minDiameter = Math.min(this._minDiameter, it.mag());
                      var _t = Math.PI * this._minDiameter, Yt = Go / _t * 360, le = Po(it, this._startVector);
                      return Math.abs(le) < Yt;
                    }, tt;
                  }(sa);
                  function Ba(mt) {
                    return Math.abs(mt.y) > Math.abs(mt.x);
                  }
                  var ba = 100, xo = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.reset = function() {
                      mt.prototype.reset.call(this), this._valid = void 0, delete this._firstMove, delete this._lastPoints;
                    }, tt.prototype._start = function(it) {
                      this._lastPoints = it, Ba(it[0].sub(it[1])) && (this._valid = !1);
                    }, tt.prototype._move = function(it, _t, Yt) {
                      var le = it[0].sub(this._lastPoints[0]), Ee = it[1].sub(this._lastPoints[1]);
                      if (this._valid = this.gestureBeginsVertically(le, Ee, Yt.timeStamp), !!this._valid) {
                        this._lastPoints = it, this._active = !0;
                        var $e = (le.y + Ee.y) / 2, vr = -0.5;
                        return { pitchDelta: $e * vr };
                      }
                    }, tt.prototype.gestureBeginsVertically = function(it, _t, Yt) {
                      if (this._valid !== void 0)
                        return this._valid;
                      var le = 2, Ee = it.mag() >= le, $e = _t.mag() >= le;
                      if (!(!Ee && !$e)) {
                        if (!Ee || !$e)
                          return this._firstMove === void 0 && (this._firstMove = Yt), Yt - this._firstMove < ba ? void 0 : !1;
                        var vr = it.y > 0 == _t.y > 0;
                        return Ba(it) && Ba(_t) && vr;
                      }
                    }, tt;
                  }(sa), Xo = {
                    panStep: 100,
                    bearingStep: 15,
                    pitchStep: 10
                  }, Co = function() {
                    var tt = Xo;
                    this._panStep = tt.panStep, this._bearingStep = tt.bearingStep, this._pitchStep = tt.pitchStep, this._rotationDisabled = !1;
                  };
                  Co.prototype.reset = function() {
                    this._active = !1;
                  }, Co.prototype.keydown = function(tt) {
                    var bt = this;
                    if (!(tt.altKey || tt.ctrlKey || tt.metaKey)) {
                      var it = 0, _t = 0, Yt = 0, le = 0, Ee = 0;
                      switch (tt.keyCode) {
                        case 61:
                        case 107:
                        case 171:
                        case 187:
                          it = 1;
                          break;
                        case 189:
                        case 109:
                        case 173:
                          it = -1;
                          break;
                        case 37:
                          tt.shiftKey ? _t = -1 : (tt.preventDefault(), le = -1);
                          break;
                        case 39:
                          tt.shiftKey ? _t = 1 : (tt.preventDefault(), le = 1);
                          break;
                        case 38:
                          tt.shiftKey ? Yt = 1 : (tt.preventDefault(), Ee = -1);
                          break;
                        case 40:
                          tt.shiftKey ? Yt = -1 : (tt.preventDefault(), Ee = 1);
                          break;
                        default:
                          return;
                      }
                      return this._rotationDisabled && (_t = 0, Yt = 0), {
                        cameraAnimation: function($e) {
                          var vr = $e.getZoom();
                          $e.easeTo({
                            duration: 300,
                            easeId: "keyboardHandler",
                            easing: Cs,
                            zoom: it ? Math.round(vr) + it * (tt.shiftKey ? 2 : 1) : vr,
                            bearing: $e.getBearing() + _t * bt._bearingStep,
                            pitch: $e.getPitch() + Yt * bt._pitchStep,
                            offset: [
                              -le * bt._panStep,
                              -Ee * bt._panStep
                            ],
                            center: $e.getCenter()
                          }, { originalEvent: tt });
                        }
                      };
                    }
                  }, Co.prototype.enable = function() {
                    this._enabled = !0;
                  }, Co.prototype.disable = function() {
                    this._enabled = !1, this.reset();
                  }, Co.prototype.isEnabled = function() {
                    return this._enabled;
                  }, Co.prototype.isActive = function() {
                    return this._active;
                  }, Co.prototype.disableRotation = function() {
                    this._rotationDisabled = !0;
                  }, Co.prototype.enableRotation = function() {
                    this._rotationDisabled = !1;
                  };
                  function Cs(mt) {
                    return mt * (2 - mt);
                  }
                  var ns = 4.000244140625, us = 1 / 100, Ao = 1 / 450, aa = 2, ta = function(tt, bt) {
                    this._map = tt, this._el = tt.getCanvasContainer(), this._handler = bt, this._delta = 0, this._defaultZoomRate = us, this._wheelZoomRate = Ao, n.bindAll(["_onTimeout"], this);
                  };
                  ta.prototype.setZoomRate = function(tt) {
                    this._defaultZoomRate = tt;
                  }, ta.prototype.setWheelZoomRate = function(tt) {
                    this._wheelZoomRate = tt;
                  }, ta.prototype.isEnabled = function() {
                    return !!this._enabled;
                  }, ta.prototype.isActive = function() {
                    return !!this._active || this._finishTimeout !== void 0;
                  }, ta.prototype.isZooming = function() {
                    return !!this._zooming;
                  }, ta.prototype.enable = function(tt) {
                    this.isEnabled() || (this._enabled = !0, this._aroundCenter = tt && tt.around === "center");
                  }, ta.prototype.disable = function() {
                    this.isEnabled() && (this._enabled = !1);
                  }, ta.prototype.wheel = function(tt) {
                    if (this.isEnabled()) {
                      var bt = tt.deltaMode === n.window.WheelEvent.DOM_DELTA_LINE ? tt.deltaY * 40 : tt.deltaY, it = n.browser.now(), _t = it - (this._lastWheelEventTime || 0);
                      this._lastWheelEventTime = it, bt !== 0 && bt % ns === 0 ? this._type = "wheel" : bt !== 0 && Math.abs(bt) < 4 ? this._type = "trackpad" : _t > 400 ? (this._type = null, this._lastValue = bt, this._timeout = setTimeout(this._onTimeout, 40, tt)) : this._type || (this._type = Math.abs(_t * bt) < 200 ? "trackpad" : "wheel", this._timeout && (clearTimeout(this._timeout), this._timeout = null, bt += this._lastValue)), tt.shiftKey && bt && (bt = bt / 4), this._type && (this._lastWheelEvent = tt, this._delta -= bt, this._active || this._start(tt)), tt.preventDefault();
                    }
                  }, ta.prototype._onTimeout = function(tt) {
                    this._type = "wheel", this._delta -= this._lastValue, this._active || this._start(tt);
                  }, ta.prototype._start = function(tt) {
                    if (this._delta) {
                      this._frameId && (this._frameId = null), this._active = !0, this.isZooming() || (this._zooming = !0), this._finishTimeout && (clearTimeout(this._finishTimeout), delete this._finishTimeout);
                      var bt = T.mousePos(this._el, tt);
                      this._around = n.LngLat.convert(this._aroundCenter ? this._map.getCenter() : this._map.unproject(bt)), this._aroundPoint = this._map.transform.locationPoint(this._around), this._frameId || (this._frameId = !0, this._handler._triggerRenderFrame());
                    }
                  }, ta.prototype.renderFrame = function() {
                    var tt = this;
                    if (this._frameId && (this._frameId = null, !!this.isActive())) {
                      var bt = this._map.transform;
                      if (this._delta !== 0) {
                        var it = this._type === "wheel" && Math.abs(this._delta) > ns ? this._wheelZoomRate : this._defaultZoomRate, _t = aa / (1 + Math.exp(-Math.abs(this._delta * it)));
                        this._delta < 0 && _t !== 0 && (_t = 1 / _t);
                        var Yt = typeof this._targetZoom == "number" ? bt.zoomScale(this._targetZoom) : bt.scale;
                        this._targetZoom = Math.min(bt.maxZoom, Math.max(bt.minZoom, bt.scaleZoom(Yt * _t))), this._type === "wheel" && (this._startZoom = bt.zoom, this._easing = this._smoothOutEasing(200)), this._delta = 0;
                      }
                      var le = typeof this._targetZoom == "number" ? this._targetZoom : bt.zoom, Ee = this._startZoom, $e = this._easing, vr = !1, Lr;
                      if (this._type === "wheel" && Ee && $e) {
                        var Hr = Math.min((n.browser.now() - this._lastWheelEventTime) / 200, 1), Ur = $e(Hr);
                        Lr = n.number(Ee, le, Ur), Hr < 1 ? this._frameId || (this._frameId = !0) : vr = !0;
                      } else
                        Lr = le, vr = !0;
                      return this._active = !0, vr && (this._active = !1, this._finishTimeout = setTimeout(function() {
                        tt._zooming = !1, tt._handler._triggerRenderFrame(), delete tt._targetZoom, delete tt._finishTimeout;
                      }, 200)), {
                        noInertia: !0,
                        needsRenderFrame: !vr,
                        zoomDelta: Lr - bt.zoom,
                        around: this._aroundPoint,
                        originalEvent: this._lastWheelEvent
                      };
                    }
                  }, ta.prototype._smoothOutEasing = function(tt) {
                    var bt = n.ease;
                    if (this._prevEase) {
                      var it = this._prevEase, _t = (n.browser.now() - it.start) / it.duration, Yt = it.easing(_t + 0.01) - it.easing(_t), le = 0.27 / Math.sqrt(Yt * Yt + 1e-4) * 0.01, Ee = Math.sqrt(0.27 * 0.27 - le * le);
                      bt = n.bezier(le, Ee, 0.25, 1);
                    }
                    return this._prevEase = {
                      start: n.browser.now(),
                      duration: tt,
                      easing: bt
                    }, bt;
                  }, ta.prototype.reset = function() {
                    this._active = !1;
                  };
                  var wa = function(tt, bt) {
                    this._clickZoom = tt, this._tapZoom = bt;
                  };
                  wa.prototype.enable = function() {
                    this._clickZoom.enable(), this._tapZoom.enable();
                  }, wa.prototype.disable = function() {
                    this._clickZoom.disable(), this._tapZoom.disable();
                  }, wa.prototype.isEnabled = function() {
                    return this._clickZoom.isEnabled() && this._tapZoom.isEnabled();
                  }, wa.prototype.isActive = function() {
                    return this._clickZoom.isActive() || this._tapZoom.isActive();
                  };
                  var il = function() {
                    this.reset();
                  };
                  il.prototype.reset = function() {
                    this._active = !1;
                  }, il.prototype.dblclick = function(tt, bt) {
                    return tt.preventDefault(), {
                      cameraAnimation: function(it) {
                        it.easeTo({
                          duration: 300,
                          zoom: it.getZoom() + (tt.shiftKey ? -1 : 1),
                          around: it.unproject(bt)
                        }, { originalEvent: tt });
                      }
                    };
                  }, il.prototype.enable = function() {
                    this._enabled = !0;
                  }, il.prototype.disable = function() {
                    this._enabled = !1, this.reset();
                  }, il.prototype.isEnabled = function() {
                    return this._enabled;
                  }, il.prototype.isActive = function() {
                    return this._active;
                  };
                  var al = function() {
                    this._tap = new cn({
                      numTouches: 1,
                      numTaps: 1
                    }), this.reset();
                  };
                  al.prototype.reset = function() {
                    this._active = !1, delete this._swipePoint, delete this._swipeTouch, delete this._tapTime, this._tap.reset();
                  }, al.prototype.touchstart = function(tt, bt, it) {
                    this._swipePoint || (this._tapTime && tt.timeStamp - this._tapTime > an && this.reset(), this._tapTime ? it.length > 0 && (this._swipePoint = bt[0], this._swipeTouch = it[0].identifier) : this._tap.touchstart(tt, bt, it));
                  }, al.prototype.touchmove = function(tt, bt, it) {
                    if (!this._tapTime)
                      this._tap.touchmove(tt, bt, it);
                    else if (this._swipePoint) {
                      if (it[0].identifier !== this._swipeTouch)
                        return;
                      var _t = bt[0], Yt = _t.y - this._swipePoint.y;
                      return this._swipePoint = _t, tt.preventDefault(), this._active = !0, { zoomDelta: Yt / 128 };
                    }
                  }, al.prototype.touchend = function(tt, bt, it) {
                    if (this._tapTime)
                      this._swipePoint && it.length === 0 && this.reset();
                    else {
                      var _t = this._tap.touchend(tt, bt, it);
                      _t && (this._tapTime = tt.timeStamp);
                    }
                  }, al.prototype.touchcancel = function() {
                    this.reset();
                  }, al.prototype.enable = function() {
                    this._enabled = !0;
                  }, al.prototype.disable = function() {
                    this._enabled = !1, this.reset();
                  }, al.prototype.isEnabled = function() {
                    return this._enabled;
                  }, al.prototype.isActive = function() {
                    return this._active;
                  };
                  var as = function(tt, bt, it) {
                    this._el = tt, this._mousePan = bt, this._touchPan = it;
                  };
                  as.prototype.enable = function(tt) {
                    this._inertiaOptions = tt || {}, this._mousePan.enable(), this._touchPan.enable(), this._el.classList.add("mapboxgl-touch-drag-pan");
                  }, as.prototype.disable = function() {
                    this._mousePan.disable(), this._touchPan.disable(), this._el.classList.remove("mapboxgl-touch-drag-pan");
                  }, as.prototype.isEnabled = function() {
                    return this._mousePan.isEnabled() && this._touchPan.isEnabled();
                  }, as.prototype.isActive = function() {
                    return this._mousePan.isActive() || this._touchPan.isActive();
                  };
                  var So = function(tt, bt, it) {
                    this._pitchWithRotate = tt.pitchWithRotate, this._mouseRotate = bt, this._mousePitch = it;
                  };
                  So.prototype.enable = function() {
                    this._mouseRotate.enable(), this._pitchWithRotate && this._mousePitch.enable();
                  }, So.prototype.disable = function() {
                    this._mouseRotate.disable(), this._mousePitch.disable();
                  }, So.prototype.isEnabled = function() {
                    return this._mouseRotate.isEnabled() && (!this._pitchWithRotate || this._mousePitch.isEnabled());
                  }, So.prototype.isActive = function() {
                    return this._mouseRotate.isActive() || this._mousePitch.isActive();
                  };
                  var _s = function(tt, bt, it, _t) {
                    this._el = tt, this._touchZoom = bt, this._touchRotate = it, this._tapDragZoom = _t, this._rotationDisabled = !1, this._enabled = !0;
                  };
                  _s.prototype.enable = function(tt) {
                    this._touchZoom.enable(tt), this._rotationDisabled || this._touchRotate.enable(tt), this._tapDragZoom.enable(), this._el.classList.add("mapboxgl-touch-zoom-rotate");
                  }, _s.prototype.disable = function() {
                    this._touchZoom.disable(), this._touchRotate.disable(), this._tapDragZoom.disable(), this._el.classList.remove("mapboxgl-touch-zoom-rotate");
                  }, _s.prototype.isEnabled = function() {
                    return this._touchZoom.isEnabled() && (this._rotationDisabled || this._touchRotate.isEnabled()) && this._tapDragZoom.isEnabled();
                  }, _s.prototype.isActive = function() {
                    return this._touchZoom.isActive() || this._touchRotate.isActive() || this._tapDragZoom.isActive();
                  }, _s.prototype.disableRotation = function() {
                    this._rotationDisabled = !0, this._touchRotate.disable();
                  }, _s.prototype.enableRotation = function() {
                    this._rotationDisabled = !1, this._touchZoom.isEnabled() && this._touchRotate.enable();
                  };
                  var Qi = function(mt) {
                    return mt.zoom || mt.drag || mt.pitch || mt.rotate;
                  }, jl = function(mt) {
                    function tt() {
                      mt.apply(this, arguments);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt;
                  }(n.Event);
                  function zu(mt) {
                    return mt.panDelta && mt.panDelta.mag() || mt.zoomDelta || mt.bearingDelta || mt.pitchDelta;
                  }
                  var Jo = function(tt, bt) {
                    this._map = tt, this._el = this._map.getCanvasContainer(), this._handlers = [], this._handlersById = {}, this._changes = [], this._inertia = new gt(tt), this._bearingSnap = bt.bearingSnap, this._previousActiveHandlers = {}, this._eventsInProgress = {}, this._addDefaultHandlers(bt), n.bindAll([
                      "handleEvent",
                      "handleWindowEvent"
                    ], this);
                    var it = this._el;
                    this._listeners = [
                      [
                        it,
                        "touchstart",
                        { passive: !0 }
                      ],
                      [
                        it,
                        "touchmove",
                        { passive: !1 }
                      ],
                      [
                        it,
                        "touchend",
                        void 0
                      ],
                      [
                        it,
                        "touchcancel",
                        void 0
                      ],
                      [
                        it,
                        "mousedown",
                        void 0
                      ],
                      [
                        it,
                        "mousemove",
                        void 0
                      ],
                      [
                        it,
                        "mouseup",
                        void 0
                      ],
                      [
                        n.window.document,
                        "mousemove",
                        { capture: !0 }
                      ],
                      [
                        n.window.document,
                        "mouseup",
                        void 0
                      ],
                      [
                        it,
                        "mouseover",
                        void 0
                      ],
                      [
                        it,
                        "mouseout",
                        void 0
                      ],
                      [
                        it,
                        "dblclick",
                        void 0
                      ],
                      [
                        it,
                        "click",
                        void 0
                      ],
                      [
                        it,
                        "keydown",
                        { capture: !1 }
                      ],
                      [
                        it,
                        "keyup",
                        void 0
                      ],
                      [
                        it,
                        "wheel",
                        { passive: !1 }
                      ],
                      [
                        it,
                        "contextmenu",
                        void 0
                      ],
                      [
                        n.window,
                        "blur",
                        void 0
                      ]
                    ];
                    for (var _t = 0, Yt = this._listeners; _t < Yt.length; _t += 1) {
                      var le = Yt[_t], Ee = le[0], $e = le[1], vr = le[2];
                      T.addEventListener(Ee, $e, Ee === n.window.document ? this.handleWindowEvent : this.handleEvent, vr);
                    }
                  };
                  Jo.prototype.destroy = function() {
                    for (var tt = 0, bt = this._listeners; tt < bt.length; tt += 1) {
                      var it = bt[tt], _t = it[0], Yt = it[1], le = it[2];
                      T.removeEventListener(_t, Yt, _t === n.window.document ? this.handleWindowEvent : this.handleEvent, le);
                    }
                  }, Jo.prototype._addDefaultHandlers = function(tt) {
                    var bt = this._map, it = bt.getCanvasContainer();
                    this._add("mapEvent", new er(bt, tt));
                    var _t = bt.boxZoom = new gr(bt, tt);
                    this._add("boxZoom", _t);
                    var Yt = new xn(), le = new il();
                    bt.doubleClickZoom = new wa(le, Yt), this._add("tapZoom", Yt), this._add("clickZoom", le);
                    var Ee = new al();
                    this._add("tapDragZoom", Ee);
                    var $e = bt.touchPitch = new xo();
                    this._add("touchPitch", $e);
                    var vr = new oa(tt), Lr = new ji(tt);
                    bt.dragRotate = new So(tt, vr, Lr), this._add("mouseRotate", vr, ["mousePitch"]), this._add("mousePitch", Lr, ["mouseRotate"]);
                    var Hr = new Xi(tt), Ur = new ea(tt);
                    bt.dragPan = new as(it, Hr, Ur), this._add("mousePan", Hr), this._add("touchPan", Ur, [
                      "touchZoom",
                      "touchRotate"
                    ]);
                    var hn = new Ui(), En = new lo();
                    bt.touchZoomRotate = new _s(it, En, hn, Ee), this._add("touchRotate", hn, [
                      "touchPan",
                      "touchZoom"
                    ]), this._add("touchZoom", En, [
                      "touchPan",
                      "touchRotate"
                    ]);
                    var Mn = bt.scrollZoom = new ta(bt, this);
                    this._add("scrollZoom", Mn, ["mousePan"]);
                    var _n = bt.keyboard = new Co();
                    this._add("keyboard", _n), this._add("blockableMapEvent", new We(bt));
                    for (var In = 0, Kn = [
                      "boxZoom",
                      "doubleClickZoom",
                      "tapDragZoom",
                      "touchPitch",
                      "dragRotate",
                      "dragPan",
                      "touchZoomRotate",
                      "scrollZoom",
                      "keyboard"
                    ]; In < Kn.length; In += 1) {
                      var xi = Kn[In];
                      tt.interactive && tt[xi] && bt[xi].enable(tt[xi]);
                    }
                  }, Jo.prototype._add = function(tt, bt, it) {
                    this._handlers.push({
                      handlerName: tt,
                      handler: bt,
                      allowed: it
                    }), this._handlersById[tt] = bt;
                  }, Jo.prototype.stop = function(tt) {
                    if (!this._updatingCamera) {
                      for (var bt = 0, it = this._handlers; bt < it.length; bt += 1) {
                        var _t = it[bt], Yt = _t.handler;
                        Yt.reset();
                      }
                      this._inertia.clear(), this._fireEvents({}, {}, tt), this._changes = [];
                    }
                  }, Jo.prototype.isActive = function() {
                    for (var tt = 0, bt = this._handlers; tt < bt.length; tt += 1) {
                      var it = bt[tt], _t = it.handler;
                      if (_t.isActive())
                        return !0;
                    }
                    return !1;
                  }, Jo.prototype.isZooming = function() {
                    return !!this._eventsInProgress.zoom || this._map.scrollZoom.isZooming();
                  }, Jo.prototype.isRotating = function() {
                    return !!this._eventsInProgress.rotate;
                  }, Jo.prototype.isMoving = function() {
                    return !!Qi(this._eventsInProgress) || this.isZooming();
                  }, Jo.prototype._blockedByActive = function(tt, bt, it) {
                    for (var _t in tt)
                      if (_t !== it && (!bt || bt.indexOf(_t) < 0))
                        return !0;
                    return !1;
                  }, Jo.prototype.handleWindowEvent = function(tt) {
                    this.handleEvent(tt, tt.type + "Window");
                  }, Jo.prototype._getMapTouches = function(tt) {
                    for (var bt = [], it = 0, _t = tt; it < _t.length; it += 1) {
                      var Yt = _t[it], le = Yt.target;
                      this._el.contains(le) && bt.push(Yt);
                    }
                    return bt;
                  }, Jo.prototype.handleEvent = function(tt, bt) {
                    if (tt.type === "blur") {
                      this.stop(!0);
                      return;
                    }
                    this._updatingCamera = !0;
                    for (var it = tt.type === "renderFrame" ? void 0 : tt, _t = { needsRenderFrame: !1 }, Yt = {}, le = {}, Ee = tt.touches ? this._getMapTouches(tt.touches) : void 0, $e = Ee ? T.touchPos(this._el, Ee) : T.mousePos(this._el, tt), vr = 0, Lr = this._handlers; vr < Lr.length; vr += 1) {
                      var Hr = Lr[vr], Ur = Hr.handlerName, hn = Hr.handler, En = Hr.allowed;
                      if (hn.isEnabled()) {
                        var Mn = void 0;
                        this._blockedByActive(le, En, Ur) ? hn.reset() : hn[bt || tt.type] && (Mn = hn[bt || tt.type](tt, $e, Ee), this.mergeHandlerResult(_t, Yt, Mn, Ur, it), Mn && Mn.needsRenderFrame && this._triggerRenderFrame()), (Mn || hn.isActive()) && (le[Ur] = hn);
                      }
                    }
                    var _n = {};
                    for (var In in this._previousActiveHandlers)
                      le[In] || (_n[In] = it);
                    this._previousActiveHandlers = le, (Object.keys(_n).length || zu(_t)) && (this._changes.push([
                      _t,
                      Yt,
                      _n
                    ]), this._triggerRenderFrame()), (Object.keys(le).length || zu(_t)) && this._map._stop(!0), this._updatingCamera = !1;
                    var Kn = _t.cameraAnimation;
                    Kn && (this._inertia.clear(), this._fireEvents({}, {}, !0), this._changes = [], Kn(this._map));
                  }, Jo.prototype.mergeHandlerResult = function(tt, bt, it, _t, Yt) {
                    if (it) {
                      n.extend(tt, it);
                      var le = {
                        handlerName: _t,
                        originalEvent: it.originalEvent || Yt
                      };
                      it.zoomDelta !== void 0 && (bt.zoom = le), it.panDelta !== void 0 && (bt.drag = le), it.pitchDelta !== void 0 && (bt.pitch = le), it.bearingDelta !== void 0 && (bt.rotate = le);
                    }
                  }, Jo.prototype._applyChanges = function() {
                    for (var tt = {}, bt = {}, it = {}, _t = 0, Yt = this._changes; _t < Yt.length; _t += 1) {
                      var le = Yt[_t], Ee = le[0], $e = le[1], vr = le[2];
                      Ee.panDelta && (tt.panDelta = (tt.panDelta || new n.Point(0, 0))._add(Ee.panDelta)), Ee.zoomDelta && (tt.zoomDelta = (tt.zoomDelta || 0) + Ee.zoomDelta), Ee.bearingDelta && (tt.bearingDelta = (tt.bearingDelta || 0) + Ee.bearingDelta), Ee.pitchDelta && (tt.pitchDelta = (tt.pitchDelta || 0) + Ee.pitchDelta), Ee.around !== void 0 && (tt.around = Ee.around), Ee.pinchAround !== void 0 && (tt.pinchAround = Ee.pinchAround), Ee.noInertia && (tt.noInertia = Ee.noInertia), n.extend(bt, $e), n.extend(it, vr);
                    }
                    this._updateMapTransform(tt, bt, it), this._changes = [];
                  }, Jo.prototype._updateMapTransform = function(tt, bt, it) {
                    var _t = this._map, Yt = _t.transform;
                    if (!zu(tt))
                      return this._fireEvents(bt, it, !0);
                    var le = tt.panDelta, Ee = tt.zoomDelta, $e = tt.bearingDelta, vr = tt.pitchDelta, Lr = tt.around, Hr = tt.pinchAround;
                    Hr !== void 0 && (Lr = Hr), _t._stop(!0), Lr = Lr || _t.transform.centerPoint;
                    var Ur = Yt.pointLocation(le ? Lr.sub(le) : Lr);
                    $e && (Yt.bearing += $e), vr && (Yt.pitch += vr), Ee && (Yt.zoom += Ee), Yt.setLocationAtPoint(Ur, Lr), this._map._update(), tt.noInertia || this._inertia.record(tt), this._fireEvents(bt, it, !0);
                  }, Jo.prototype._fireEvents = function(tt, bt, it) {
                    var _t = this, Yt = Qi(this._eventsInProgress), le = Qi(tt), Ee = {};
                    for (var $e in tt) {
                      var vr = tt[$e], Lr = vr.originalEvent;
                      this._eventsInProgress[$e] || (Ee[$e + "start"] = Lr), this._eventsInProgress[$e] = tt[$e];
                    }
                    !Yt && le && this._fireEvent("movestart", le.originalEvent);
                    for (var Hr in Ee)
                      this._fireEvent(Hr, Ee[Hr]);
                    le && this._fireEvent("move", le.originalEvent);
                    for (var Ur in tt) {
                      var hn = tt[Ur], En = hn.originalEvent;
                      this._fireEvent(Ur, En);
                    }
                    var Mn = {}, _n;
                    for (var In in this._eventsInProgress) {
                      var Kn = this._eventsInProgress[In], xi = Kn.handlerName, Ei = Kn.originalEvent;
                      this._handlersById[xi].isActive() || (delete this._eventsInProgress[In], _n = bt[xi] || Ei, Mn[In + "end"] = _n);
                    }
                    for (var zi in Mn)
                      this._fireEvent(zi, Mn[zi]);
                    var Vi = Qi(this._eventsInProgress);
                    if (it && (Yt || le) && !Vi) {
                      this._updatingCamera = !0;
                      var Di = this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions), Hi = function(Ki) {
                        return Ki !== 0 && -_t._bearingSnap < Ki && Ki < _t._bearingSnap;
                      };
                      Di ? (Hi(Di.bearing || this._map.getBearing()) && (Di.bearing = 0), this._map.easeTo(Di, { originalEvent: _n })) : (this._map.fire(new n.Event("moveend", { originalEvent: _n })), Hi(this._map.getBearing()) && this._map.resetNorth()), this._updatingCamera = !1;
                    }
                  }, Jo.prototype._fireEvent = function(tt, bt) {
                    this._map.fire(new n.Event(tt, bt ? { originalEvent: bt } : {}));
                  }, Jo.prototype._requestFrame = function() {
                    var tt = this;
                    return this._map.triggerRepaint(), this._map._renderTaskQueue.add(function(bt) {
                      delete tt._frameId, tt.handleEvent(new jl("renderFrame", { timeStamp: bt })), tt._applyChanges();
                    });
                  }, Jo.prototype._triggerRenderFrame = function() {
                    this._frameId === void 0 && (this._frameId = this._requestFrame());
                  };
                  var Fu = function(mt) {
                    function tt(bt, it) {
                      mt.call(this), this._moving = !1, this._zooming = !1, this.transform = bt, this._bearingSnap = it.bearingSnap, n.bindAll(["_renderFrameCallback"], this);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.getCenter = function() {
                      return new n.LngLat(this.transform.center.lng, this.transform.center.lat);
                    }, tt.prototype.setCenter = function(it, _t) {
                      return this.jumpTo({ center: it }, _t);
                    }, tt.prototype.panBy = function(it, _t, Yt) {
                      return it = n.Point.convert(it).mult(-1), this.panTo(this.transform.center, n.extend({ offset: it }, _t), Yt);
                    }, tt.prototype.panTo = function(it, _t, Yt) {
                      return this.easeTo(n.extend({ center: it }, _t), Yt);
                    }, tt.prototype.getZoom = function() {
                      return this.transform.zoom;
                    }, tt.prototype.setZoom = function(it, _t) {
                      return this.jumpTo({ zoom: it }, _t), this;
                    }, tt.prototype.zoomTo = function(it, _t, Yt) {
                      return this.easeTo(n.extend({ zoom: it }, _t), Yt);
                    }, tt.prototype.zoomIn = function(it, _t) {
                      return this.zoomTo(this.getZoom() + 1, it, _t), this;
                    }, tt.prototype.zoomOut = function(it, _t) {
                      return this.zoomTo(this.getZoom() - 1, it, _t), this;
                    }, tt.prototype.getBearing = function() {
                      return this.transform.bearing;
                    }, tt.prototype.setBearing = function(it, _t) {
                      return this.jumpTo({ bearing: it }, _t), this;
                    }, tt.prototype.getPadding = function() {
                      return this.transform.padding;
                    }, tt.prototype.setPadding = function(it, _t) {
                      return this.jumpTo({ padding: it }, _t), this;
                    }, tt.prototype.rotateTo = function(it, _t, Yt) {
                      return this.easeTo(n.extend({ bearing: it }, _t), Yt);
                    }, tt.prototype.resetNorth = function(it, _t) {
                      return this.rotateTo(0, n.extend({ duration: 1e3 }, it), _t), this;
                    }, tt.prototype.resetNorthPitch = function(it, _t) {
                      return this.easeTo(n.extend({
                        bearing: 0,
                        pitch: 0,
                        duration: 1e3
                      }, it), _t), this;
                    }, tt.prototype.snapToNorth = function(it, _t) {
                      return Math.abs(this.getBearing()) < this._bearingSnap ? this.resetNorth(it, _t) : this;
                    }, tt.prototype.getPitch = function() {
                      return this.transform.pitch;
                    }, tt.prototype.setPitch = function(it, _t) {
                      return this.jumpTo({ pitch: it }, _t), this;
                    }, tt.prototype.cameraForBounds = function(it, _t) {
                      it = n.LngLatBounds.convert(it);
                      var Yt = _t && _t.bearing || 0;
                      return this._cameraForBoxAndBearing(it.getNorthWest(), it.getSouthEast(), Yt, _t);
                    }, tt.prototype._cameraForBoxAndBearing = function(it, _t, Yt, le) {
                      var Ee = {
                        top: 0,
                        bottom: 0,
                        right: 0,
                        left: 0
                      };
                      if (le = n.extend({
                        padding: Ee,
                        offset: [
                          0,
                          0
                        ],
                        maxZoom: this.transform.maxZoom
                      }, le), typeof le.padding == "number") {
                        var $e = le.padding;
                        le.padding = {
                          top: $e,
                          bottom: $e,
                          right: $e,
                          left: $e
                        };
                      }
                      le.padding = n.extend(Ee, le.padding);
                      var vr = this.transform, Lr = vr.padding, Hr = vr.project(n.LngLat.convert(it)), Ur = vr.project(n.LngLat.convert(_t)), hn = Hr.rotate(-Yt * Math.PI / 180), En = Ur.rotate(-Yt * Math.PI / 180), Mn = new n.Point(Math.max(hn.x, En.x), Math.max(hn.y, En.y)), _n = new n.Point(Math.min(hn.x, En.x), Math.min(hn.y, En.y)), In = Mn.sub(_n), Kn = (vr.width - (Lr.left + Lr.right + le.padding.left + le.padding.right)) / In.x, xi = (vr.height - (Lr.top + Lr.bottom + le.padding.top + le.padding.bottom)) / In.y;
                      if (xi < 0 || Kn < 0) {
                        n.warnOnce("Map cannot fit within canvas with the given bounds, padding, and/or offset.");
                        return;
                      }
                      var Ei = Math.min(vr.scaleZoom(vr.scale * Math.min(Kn, xi)), le.maxZoom), zi = typeof le.offset.x == "number" ? new n.Point(le.offset.x, le.offset.y) : n.Point.convert(le.offset), Vi = (le.padding.left - le.padding.right) / 2, Di = (le.padding.top - le.padding.bottom) / 2, Hi = new n.Point(Vi, Di), Ki = Hi.rotate(Yt * Math.PI / 180), na = zi.add(Ki), da = na.mult(vr.scale / vr.zoomScale(Ei)), la = vr.unproject(Hr.add(Ur).div(2).sub(da));
                      return {
                        center: la,
                        zoom: Ei,
                        bearing: Yt
                      };
                    }, tt.prototype.fitBounds = function(it, _t, Yt) {
                      return this._fitInternal(this.cameraForBounds(it, _t), _t, Yt);
                    }, tt.prototype.fitScreenCoordinates = function(it, _t, Yt, le, Ee) {
                      return this._fitInternal(this._cameraForBoxAndBearing(this.transform.pointLocation(n.Point.convert(it)), this.transform.pointLocation(n.Point.convert(_t)), Yt, le), le, Ee);
                    }, tt.prototype._fitInternal = function(it, _t, Yt) {
                      return it ? (_t = n.extend(it, _t), delete _t.padding, _t.linear ? this.easeTo(_t, Yt) : this.flyTo(_t, Yt)) : this;
                    }, tt.prototype.jumpTo = function(it, _t) {
                      this.stop();
                      var Yt = this.transform, le = !1, Ee = !1, $e = !1;
                      return "zoom" in it && Yt.zoom !== +it.zoom && (le = !0, Yt.zoom = +it.zoom), it.center !== void 0 && (Yt.center = n.LngLat.convert(it.center)), "bearing" in it && Yt.bearing !== +it.bearing && (Ee = !0, Yt.bearing = +it.bearing), "pitch" in it && Yt.pitch !== +it.pitch && ($e = !0, Yt.pitch = +it.pitch), it.padding != null && !Yt.isPaddingEqual(it.padding) && (Yt.padding = it.padding), this.fire(new n.Event("movestart", _t)).fire(new n.Event("move", _t)), le && this.fire(new n.Event("zoomstart", _t)).fire(new n.Event("zoom", _t)).fire(new n.Event("zoomend", _t)), Ee && this.fire(new n.Event("rotatestart", _t)).fire(new n.Event("rotate", _t)).fire(new n.Event("rotateend", _t)), $e && this.fire(new n.Event("pitchstart", _t)).fire(new n.Event("pitch", _t)).fire(new n.Event("pitchend", _t)), this.fire(new n.Event("moveend", _t));
                    }, tt.prototype.easeTo = function(it, _t) {
                      var Yt = this;
                      this._stop(!1, it.easeId), it = n.extend({
                        offset: [
                          0,
                          0
                        ],
                        duration: 500,
                        easing: n.ease
                      }, it), (it.animate === !1 || !it.essential && n.browser.prefersReducedMotion) && (it.duration = 0);
                      var le = this.transform, Ee = this.getZoom(), $e = this.getBearing(), vr = this.getPitch(), Lr = this.getPadding(), Hr = "zoom" in it ? +it.zoom : Ee, Ur = "bearing" in it ? this._normalizeBearing(it.bearing, $e) : $e, hn = "pitch" in it ? +it.pitch : vr, En = "padding" in it ? it.padding : le.padding, Mn = n.Point.convert(it.offset), _n = le.centerPoint.add(Mn), In = le.pointLocation(_n), Kn = n.LngLat.convert(it.center || In);
                      this._normalizeCenter(Kn);
                      var xi = le.project(In), Ei = le.project(Kn).sub(xi), zi = le.zoomScale(Hr - Ee), Vi, Di;
                      it.around && (Vi = n.LngLat.convert(it.around), Di = le.locationPoint(Vi));
                      var Hi = {
                        moving: this._moving,
                        zooming: this._zooming,
                        rotating: this._rotating,
                        pitching: this._pitching
                      };
                      return this._zooming = this._zooming || Hr !== Ee, this._rotating = this._rotating || $e !== Ur, this._pitching = this._pitching || hn !== vr, this._padding = !le.isPaddingEqual(En), this._easeId = it.easeId, this._prepareEase(_t, it.noMoveStart, Hi), this._ease(function(Ki) {
                        if (Yt._zooming && (le.zoom = n.number(Ee, Hr, Ki)), Yt._rotating && (le.bearing = n.number($e, Ur, Ki)), Yt._pitching && (le.pitch = n.number(vr, hn, Ki)), Yt._padding && (le.interpolatePadding(Lr, En, Ki), _n = le.centerPoint.add(Mn)), Vi)
                          le.setLocationAtPoint(Vi, Di);
                        else {
                          var na = le.zoomScale(le.zoom - Ee), da = Hr > Ee ? Math.min(2, zi) : Math.max(0.5, zi), la = Math.pow(da, 1 - Ki), Da = le.unproject(xi.add(Ei.mult(Ki * la)).mult(na));
                          le.setLocationAtPoint(le.renderWorldCopies ? Da.wrap() : Da, _n);
                        }
                        Yt._fireMoveEvents(_t);
                      }, function(Ki) {
                        Yt._afterEase(_t, Ki);
                      }, it), this;
                    }, tt.prototype._prepareEase = function(it, _t, Yt) {
                      Yt === void 0 && (Yt = {}), this._moving = !0, !_t && !Yt.moving && this.fire(new n.Event("movestart", it)), this._zooming && !Yt.zooming && this.fire(new n.Event("zoomstart", it)), this._rotating && !Yt.rotating && this.fire(new n.Event("rotatestart", it)), this._pitching && !Yt.pitching && this.fire(new n.Event("pitchstart", it));
                    }, tt.prototype._fireMoveEvents = function(it) {
                      this.fire(new n.Event("move", it)), this._zooming && this.fire(new n.Event("zoom", it)), this._rotating && this.fire(new n.Event("rotate", it)), this._pitching && this.fire(new n.Event("pitch", it));
                    }, tt.prototype._afterEase = function(it, _t) {
                      if (!(this._easeId && _t && this._easeId === _t)) {
                        delete this._easeId;
                        var Yt = this._zooming, le = this._rotating, Ee = this._pitching;
                        this._moving = !1, this._zooming = !1, this._rotating = !1, this._pitching = !1, this._padding = !1, Yt && this.fire(new n.Event("zoomend", it)), le && this.fire(new n.Event("rotateend", it)), Ee && this.fire(new n.Event("pitchend", it)), this.fire(new n.Event("moveend", it));
                      }
                    }, tt.prototype.flyTo = function(it, _t) {
                      var Yt = this;
                      if (!it.essential && n.browser.prefersReducedMotion) {
                        var le = n.pick(it, [
                          "center",
                          "zoom",
                          "bearing",
                          "pitch",
                          "around"
                        ]);
                        return this.jumpTo(le, _t);
                      }
                      this.stop(), it = n.extend({
                        offset: [
                          0,
                          0
                        ],
                        speed: 1.2,
                        curve: 1.42,
                        easing: n.ease
                      }, it);
                      var Ee = this.transform, $e = this.getZoom(), vr = this.getBearing(), Lr = this.getPitch(), Hr = this.getPadding(), Ur = "zoom" in it ? n.clamp(+it.zoom, Ee.minZoom, Ee.maxZoom) : $e, hn = "bearing" in it ? this._normalizeBearing(it.bearing, vr) : vr, En = "pitch" in it ? +it.pitch : Lr, Mn = "padding" in it ? it.padding : Ee.padding, _n = Ee.zoomScale(Ur - $e), In = n.Point.convert(it.offset), Kn = Ee.centerPoint.add(In), xi = Ee.pointLocation(Kn), Ei = n.LngLat.convert(it.center || xi);
                      this._normalizeCenter(Ei);
                      var zi = Ee.project(xi), Vi = Ee.project(Ei).sub(zi), Di = it.curve, Hi = Math.max(Ee.width, Ee.height), Ki = Hi / _n, na = Vi.mag();
                      if ("minZoom" in it) {
                        var da = n.clamp(Math.min(it.minZoom, $e, Ur), Ee.minZoom, Ee.maxZoom), la = Hi / Ee.zoomScale(da - $e);
                        Di = Math.sqrt(la / na * 2);
                      }
                      var Da = Di * Di;
                      function wo(to) {
                        var Eo = (Ki * Ki - Hi * Hi + (to ? -1 : 1) * Da * Da * na * na) / (2 * (to ? Ki : Hi) * Da * na);
                        return Math.log(Math.sqrt(Eo * Eo + 1) - Eo);
                      }
                      function uo(to) {
                        return (Math.exp(to) - Math.exp(-to)) / 2;
                      }
                      function _a(to) {
                        return (Math.exp(to) + Math.exp(-to)) / 2;
                      }
                      function co(to) {
                        return uo(to) / _a(to);
                      }
                      var $a = wo(0), po = function(to) {
                        return _a($a) / _a($a + Di * to);
                      }, Mo = function(to) {
                        return Hi * ((_a($a) * co($a + Di * to) - uo($a)) / Da) / na;
                      }, Zo = (wo(1) - $a) / Di;
                      if (Math.abs(na) < 1e-6 || !isFinite(Zo)) {
                        if (Math.abs(Hi - Ki) < 1e-6)
                          return this.easeTo(it, _t);
                        var _o = Ki < Hi ? -1 : 1;
                        Zo = Math.abs(Math.log(Ki / Hi)) / Di, Mo = function() {
                          return 0;
                        }, po = function(to) {
                          return Math.exp(_o * Di * to);
                        };
                      }
                      if ("duration" in it)
                        it.duration = +it.duration;
                      else {
                        var ko = "screenSpeed" in it ? +it.screenSpeed / Di : +it.speed;
                        it.duration = 1e3 * Zo / ko;
                      }
                      return it.maxDuration && it.duration > it.maxDuration && (it.duration = 0), this._zooming = !0, this._rotating = vr !== hn, this._pitching = En !== Lr, this._padding = !Ee.isPaddingEqual(Mn), this._prepareEase(_t, !1), this._ease(function(to) {
                        var Eo = to * Zo, As = 1 / po(Eo);
                        Ee.zoom = to === 1 ? Ur : $e + Ee.scaleZoom(As), Yt._rotating && (Ee.bearing = n.number(vr, hn, to)), Yt._pitching && (Ee.pitch = n.number(Lr, En, to)), Yt._padding && (Ee.interpolatePadding(Hr, Mn, to), Kn = Ee.centerPoint.add(In));
                        var js = to === 1 ? Ei : Ee.unproject(zi.add(Vi.mult(Mo(Eo))).mult(As));
                        Ee.setLocationAtPoint(Ee.renderWorldCopies ? js.wrap() : js, Kn), Yt._fireMoveEvents(_t);
                      }, function() {
                        return Yt._afterEase(_t);
                      }, it), this;
                    }, tt.prototype.isEasing = function() {
                      return !!this._easeFrameId;
                    }, tt.prototype.stop = function() {
                      return this._stop();
                    }, tt.prototype._stop = function(it, _t) {
                      if (this._easeFrameId && (this._cancelRenderFrame(this._easeFrameId), delete this._easeFrameId, delete this._onEaseFrame), this._onEaseEnd) {
                        var Yt = this._onEaseEnd;
                        delete this._onEaseEnd, Yt.call(this, _t);
                      }
                      if (!it) {
                        var le = this.handlers;
                        le && le.stop(!1);
                      }
                      return this;
                    }, tt.prototype._ease = function(it, _t, Yt) {
                      Yt.animate === !1 || Yt.duration === 0 ? (it(1), _t()) : (this._easeStart = n.browser.now(), this._easeOptions = Yt, this._onEaseFrame = it, this._onEaseEnd = _t, this._easeFrameId = this._requestRenderFrame(this._renderFrameCallback));
                    }, tt.prototype._renderFrameCallback = function() {
                      var it = Math.min((n.browser.now() - this._easeStart) / this._easeOptions.duration, 1);
                      this._onEaseFrame(this._easeOptions.easing(it)), it < 1 ? this._easeFrameId = this._requestRenderFrame(this._renderFrameCallback) : this.stop();
                    }, tt.prototype._normalizeBearing = function(it, _t) {
                      it = n.wrap(it, -180, 180);
                      var Yt = Math.abs(it - _t);
                      return Math.abs(it - 360 - _t) < Yt && (it -= 360), Math.abs(it + 360 - _t) < Yt && (it += 360), it;
                    }, tt.prototype._normalizeCenter = function(it) {
                      var _t = this.transform;
                      if (!(!_t.renderWorldCopies || _t.lngRange)) {
                        var Yt = it.lng - _t.center.lng;
                        it.lng += Yt > 180 ? -360 : Yt < -180 ? 360 : 0;
                      }
                    }, tt;
                  }(n.Evented), qa = function(tt) {
                    tt === void 0 && (tt = {}), this.options = tt, n.bindAll([
                      "_toggleAttribution",
                      "_updateEditLink",
                      "_updateData",
                      "_updateCompact"
                    ], this);
                  };
                  qa.prototype.getDefaultPosition = function() {
                    return "bottom-right";
                  }, qa.prototype.onAdd = function(tt) {
                    var bt = this.options && this.options.compact;
                    return this._map = tt, this._container = T.create("div", "mapboxgl-ctrl mapboxgl-ctrl-attrib"), this._compactButton = T.create("button", "mapboxgl-ctrl-attrib-button", this._container), this._compactButton.addEventListener("click", this._toggleAttribution), this._setElementTitle(this._compactButton, "ToggleAttribution"), this._innerContainer = T.create("div", "mapboxgl-ctrl-attrib-inner", this._container), this._innerContainer.setAttribute("role", "list"), bt && this._container.classList.add("mapboxgl-compact"), this._updateAttributions(), this._updateEditLink(), this._map.on("styledata", this._updateData), this._map.on("sourcedata", this._updateData), this._map.on("moveend", this._updateEditLink), bt === void 0 && (this._map.on("resize", this._updateCompact), this._updateCompact()), this._container;
                  }, qa.prototype.onRemove = function() {
                    T.remove(this._container), this._map.off("styledata", this._updateData), this._map.off("sourcedata", this._updateData), this._map.off("moveend", this._updateEditLink), this._map.off("resize", this._updateCompact), this._map = void 0, this._attribHTML = void 0;
                  }, qa.prototype._setElementTitle = function(tt, bt) {
                    var it = this._map._getUIString("AttributionControl." + bt);
                    tt.title = it, tt.setAttribute("aria-label", it);
                  }, qa.prototype._toggleAttribution = function() {
                    this._container.classList.contains("mapboxgl-compact-show") ? (this._container.classList.remove("mapboxgl-compact-show"), this._compactButton.setAttribute("aria-pressed", "false")) : (this._container.classList.add("mapboxgl-compact-show"), this._compactButton.setAttribute("aria-pressed", "true"));
                  }, qa.prototype._updateEditLink = function() {
                    var tt = this._editLink;
                    tt || (tt = this._editLink = this._container.querySelector(".mapbox-improve-map"));
                    var bt = [
                      {
                        key: "owner",
                        value: this.styleOwner
                      },
                      {
                        key: "id",
                        value: this.styleId
                      },
                      {
                        key: "access_token",
                        value: this._map._requestManager._customAccessToken || n.config.ACCESS_TOKEN
                      }
                    ];
                    if (tt) {
                      var it = bt.reduce(function(_t, Yt, le) {
                        return Yt.value && (_t += Yt.key + "=" + Yt.value + (le < bt.length - 1 ? "&" : "")), _t;
                      }, "?");
                      tt.href = n.config.FEEDBACK_URL + "/" + it + (this._map._hash ? this._map._hash.getHashString(!0) : ""), tt.rel = "noopener nofollow", this._setElementTitle(tt, "MapFeedback");
                    }
                  }, qa.prototype._updateData = function(tt) {
                    tt && (tt.sourceDataType === "metadata" || tt.sourceDataType === "visibility" || tt.dataType === "style") && (this._updateAttributions(), this._updateEditLink());
                  }, qa.prototype._updateAttributions = function() {
                    if (this._map.style) {
                      var tt = [];
                      if (this.options.customAttribution && (Array.isArray(this.options.customAttribution) ? tt = tt.concat(this.options.customAttribution.map(function($e) {
                        return typeof $e != "string" ? "" : $e;
                      })) : typeof this.options.customAttribution == "string" && tt.push(this.options.customAttribution)), this._map.style.stylesheet) {
                        var bt = this._map.style.stylesheet;
                        this.styleOwner = bt.owner, this.styleId = bt.id;
                      }
                      var it = this._map.style.sourceCaches;
                      for (var _t in it) {
                        var Yt = it[_t];
                        if (Yt.used) {
                          var le = Yt.getSource();
                          le.attribution && tt.indexOf(le.attribution) < 0 && tt.push(le.attribution);
                        }
                      }
                      tt.sort(function($e, vr) {
                        return $e.length - vr.length;
                      }), tt = tt.filter(function($e, vr) {
                        for (var Lr = vr + 1; Lr < tt.length; Lr++)
                          if (tt[Lr].indexOf($e) >= 0)
                            return !1;
                        return !0;
                      });
                      var Ee = tt.join(" | ");
                      Ee !== this._attribHTML && (this._attribHTML = Ee, tt.length ? (this._innerContainer.innerHTML = Ee, this._container.classList.remove("mapboxgl-attrib-empty")) : this._container.classList.add("mapboxgl-attrib-empty"), this._editLink = null);
                    }
                  }, qa.prototype._updateCompact = function() {
                    this._map.getCanvasContainer().offsetWidth <= 640 ? this._container.classList.add("mapboxgl-compact") : this._container.classList.remove("mapboxgl-compact", "mapboxgl-compact-show");
                  };
                  var Yo = function() {
                    n.bindAll(["_updateLogo"], this), n.bindAll(["_updateCompact"], this);
                  };
                  Yo.prototype.onAdd = function(tt) {
                    this._map = tt, this._container = T.create("div", "mapboxgl-ctrl");
                    var bt = T.create("a", "mapboxgl-ctrl-logo");
                    return bt.target = "_blank", bt.rel = "noopener nofollow", bt.href = "https://www.mapbox.com/", bt.setAttribute("aria-label", this._map._getUIString("LogoControl.Title")), bt.setAttribute("rel", "noopener nofollow"), this._container.appendChild(bt), this._container.style.display = "none", this._map.on("sourcedata", this._updateLogo), this._updateLogo(), this._map.on("resize", this._updateCompact), this._updateCompact(), this._container;
                  }, Yo.prototype.onRemove = function() {
                    T.remove(this._container), this._map.off("sourcedata", this._updateLogo), this._map.off("resize", this._updateCompact);
                  }, Yo.prototype.getDefaultPosition = function() {
                    return "bottom-left";
                  }, Yo.prototype._updateLogo = function(tt) {
                    (!tt || tt.sourceDataType === "metadata") && (this._container.style.display = this._logoRequired() ? "block" : "none");
                  }, Yo.prototype._logoRequired = function() {
                    if (this._map.style) {
                      var tt = this._map.style.sourceCaches;
                      for (var bt in tt) {
                        var it = tt[bt].getSource();
                        if (it.mapbox_logo)
                          return !0;
                      }
                      return !1;
                    }
                  }, Yo.prototype._updateCompact = function() {
                    var tt = this._container.children;
                    if (tt.length) {
                      var bt = tt[0];
                      this._map.getCanvasContainer().offsetWidth < 250 ? bt.classList.add("mapboxgl-compact") : bt.classList.remove("mapboxgl-compact");
                    }
                  };
                  var Rh = function() {
                    this._queue = [], this._id = 0, this._cleared = !1, this._currentlyRunning = !1;
                  };
                  Rh.prototype.add = function(tt) {
                    var bt = ++this._id, it = this._queue;
                    return it.push({
                      callback: tt,
                      id: bt,
                      cancelled: !1
                    }), bt;
                  }, Rh.prototype.remove = function(tt) {
                    for (var bt = this._currentlyRunning, it = bt ? this._queue.concat(bt) : this._queue, _t = 0, Yt = it; _t < Yt.length; _t += 1) {
                      var le = Yt[_t];
                      if (le.id === tt) {
                        le.cancelled = !0;
                        return;
                      }
                    }
                  }, Rh.prototype.run = function(tt) {
                    tt === void 0 && (tt = 0);
                    var bt = this._currentlyRunning = this._queue;
                    this._queue = [];
                    for (var it = 0, _t = bt; it < _t.length; it += 1) {
                      var Yt = _t[it];
                      if (!Yt.cancelled && (Yt.callback(tt), this._cleared))
                        break;
                    }
                    this._cleared = !1, this._currentlyRunning = !1;
                  }, Rh.prototype.clear = function() {
                    this._currentlyRunning && (this._cleared = !0), this._queue = [];
                  };
                  var Hv = {
                    "AttributionControl.ToggleAttribution": "Toggle attribution",
                    "AttributionControl.MapFeedback": "Map feedback",
                    "FullscreenControl.Enter": "Enter fullscreen",
                    "FullscreenControl.Exit": "Exit fullscreen",
                    "GeolocateControl.FindMyLocation": "Find my location",
                    "GeolocateControl.LocationNotAvailable": "Location not available",
                    "LogoControl.Title": "Mapbox logo",
                    "NavigationControl.ResetBearing": "Reset bearing to north",
                    "NavigationControl.ZoomIn": "Zoom in",
                    "NavigationControl.ZoomOut": "Zoom out",
                    "ScaleControl.Feet": "ft",
                    "ScaleControl.Meters": "m",
                    "ScaleControl.Kilometers": "km",
                    "ScaleControl.Miles": "mi",
                    "ScaleControl.NauticalMiles": "nm"
                  }, oh = n.window.HTMLImageElement, Dh = n.window.HTMLElement, Lf = n.window.ImageBitmap, sh = -2, fd = 22, Os = 0, Ko = 60, lh = {
                    center: [
                      0,
                      0
                    ],
                    zoom: 0,
                    bearing: 0,
                    pitch: 0,
                    minZoom: sh,
                    maxZoom: fd,
                    minPitch: Os,
                    maxPitch: Ko,
                    interactive: !0,
                    scrollZoom: !0,
                    boxZoom: !0,
                    dragRotate: !0,
                    dragPan: !0,
                    keyboard: !0,
                    doubleClickZoom: !0,
                    touchZoomRotate: !0,
                    touchPitch: !0,
                    bearingSnap: 7,
                    clickTolerance: 3,
                    pitchWithRotate: !0,
                    hash: !1,
                    attributionControl: !0,
                    failIfMajorPerformanceCaveat: !1,
                    preserveDrawingBuffer: !1,
                    trackResize: !0,
                    renderWorldCopies: !0,
                    refreshExpiredTiles: !0,
                    maxTileCacheSize: null,
                    localIdeographFontFamily: "sans-serif",
                    transformRequest: null,
                    accessToken: null,
                    fadeDuration: 300,
                    crossSourceCollisions: !0
                  }, zd = function(mt) {
                    function tt(it) {
                      var _t = this;
                      if (it = n.extend({}, lh, it), it.minZoom != null && it.maxZoom != null && it.minZoom > it.maxZoom)
                        throw new Error("maxZoom must be greater than or equal to minZoom");
                      if (it.minPitch != null && it.maxPitch != null && it.minPitch > it.maxPitch)
                        throw new Error("maxPitch must be greater than or equal to minPitch");
                      if (it.minPitch != null && it.minPitch < Os)
                        throw new Error("minPitch must be greater than or equal to " + Os);
                      if (it.maxPitch != null && it.maxPitch > Ko)
                        throw new Error("maxPitch must be less than or equal to " + Ko);
                      var Yt = new gi(it.minZoom, it.maxZoom, it.minPitch, it.maxPitch, it.renderWorldCopies);
                      if (mt.call(this, Yt, it), this._interactive = it.interactive, this._maxTileCacheSize = it.maxTileCacheSize, this._failIfMajorPerformanceCaveat = it.failIfMajorPerformanceCaveat, this._preserveDrawingBuffer = it.preserveDrawingBuffer, this._antialias = it.antialias, this._trackResize = it.trackResize, this._bearingSnap = it.bearingSnap, this._refreshExpiredTiles = it.refreshExpiredTiles, this._fadeDuration = it.fadeDuration, this._crossSourceCollisions = it.crossSourceCollisions, this._crossFadingFactor = 1, this._collectResourceTiming = it.collectResourceTiming, this._renderTaskQueue = new Rh(), this._controls = [], this._mapId = n.uniqueId(), this._locale = n.extend({}, Hv, it.locale), this._clickTolerance = it.clickTolerance, this._requestManager = new n.RequestManager(it.transformRequest, it.accessToken), typeof it.container == "string") {
                        if (this._container = n.window.document.getElementById(it.container), !this._container)
                          throw new Error("Container '" + it.container + "' not found.");
                      } else if (it.container instanceof Dh)
                        this._container = it.container;
                      else
                        throw new Error("Invalid type: 'container' must be a String or HTMLElement.");
                      if (it.maxBounds && this.setMaxBounds(it.maxBounds), n.bindAll([
                        "_onWindowOnline",
                        "_onWindowResize",
                        "_onMapScroll",
                        "_contextLost",
                        "_contextRestored"
                      ], this), this._setupContainer(), this._setupPainter(), this.painter === void 0)
                        throw new Error("Failed to initialize WebGL.");
                      this.on("move", function() {
                        return _t._update(!1);
                      }), this.on("moveend", function() {
                        return _t._update(!1);
                      }), this.on("zoom", function() {
                        return _t._update(!0);
                      }), typeof n.window < "u" && (n.window.addEventListener("online", this._onWindowOnline, !1), n.window.addEventListener("resize", this._onWindowResize, !1), n.window.addEventListener("orientationchange", this._onWindowResize, !1)), this.handlers = new Jo(this, it);
                      var le = typeof it.hash == "string" && it.hash || void 0;
                      this._hash = it.hash && new Pa(le).addTo(this), (!this._hash || !this._hash._onHashChange()) && (this.jumpTo({
                        center: it.center,
                        zoom: it.zoom,
                        bearing: it.bearing,
                        pitch: it.pitch
                      }), it.bounds && (this.resize(), this.fitBounds(it.bounds, n.extend({}, it.fitBoundsOptions, { duration: 0 })))), this.resize(), this._localIdeographFontFamily = it.localIdeographFontFamily, it.style && this.setStyle(it.style, { localIdeographFontFamily: it.localIdeographFontFamily }), it.attributionControl && this.addControl(new qa({ customAttribution: it.customAttribution })), this.addControl(new Yo(), it.logoPosition), this.on("style.load", function() {
                        _t.transform.unmodified && _t.jumpTo(_t.style.stylesheet);
                      }), this.on("data", function(Ee) {
                        _t._update(Ee.dataType === "style"), _t.fire(new n.Event(Ee.dataType + "data", Ee));
                      }), this.on("dataloading", function(Ee) {
                        _t.fire(new n.Event(Ee.dataType + "dataloading", Ee));
                      });
                    }
                    mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt;
                    var bt = {
                      showTileBoundaries: { configurable: !0 },
                      showPadding: { configurable: !0 },
                      showCollisionBoxes: { configurable: !0 },
                      showOverdrawInspector: { configurable: !0 },
                      repaint: { configurable: !0 },
                      vertices: { configurable: !0 },
                      version: { configurable: !0 }
                    };
                    return tt.prototype._getMapId = function() {
                      return this._mapId;
                    }, tt.prototype.addControl = function(_t, Yt) {
                      if (Yt === void 0 && (_t.getDefaultPosition ? Yt = _t.getDefaultPosition() : Yt = "top-right"), !_t || !_t.onAdd)
                        return this.fire(new n.ErrorEvent(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));
                      var le = _t.onAdd(this);
                      this._controls.push(_t);
                      var Ee = this._controlPositions[Yt];
                      return Yt.indexOf("bottom") !== -1 ? Ee.insertBefore(le, Ee.firstChild) : Ee.appendChild(le), this;
                    }, tt.prototype.removeControl = function(_t) {
                      if (!_t || !_t.onRemove)
                        return this.fire(new n.ErrorEvent(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));
                      var Yt = this._controls.indexOf(_t);
                      return Yt > -1 && this._controls.splice(Yt, 1), _t.onRemove(this), this;
                    }, tt.prototype.hasControl = function(_t) {
                      return this._controls.indexOf(_t) > -1;
                    }, tt.prototype.resize = function(_t) {
                      var Yt = this._containerDimensions(), le = Yt[0], Ee = Yt[1];
                      this._resizeCanvas(le, Ee), this.transform.resize(le, Ee), this.painter.resize(le, Ee);
                      var $e = !this._moving;
                      return $e && (this.stop(), this.fire(new n.Event("movestart", _t)).fire(new n.Event("move", _t))), this.fire(new n.Event("resize", _t)), $e && this.fire(new n.Event("moveend", _t)), this;
                    }, tt.prototype.getBounds = function() {
                      return this.transform.getBounds();
                    }, tt.prototype.getMaxBounds = function() {
                      return this.transform.getMaxBounds();
                    }, tt.prototype.setMaxBounds = function(_t) {
                      return this.transform.setMaxBounds(n.LngLatBounds.convert(_t)), this._update();
                    }, tt.prototype.setMinZoom = function(_t) {
                      if (_t = _t ?? sh, _t >= sh && _t <= this.transform.maxZoom)
                        return this.transform.minZoom = _t, this._update(), this.getZoom() < _t && this.setZoom(_t), this;
                      throw new Error("minZoom must be between " + sh + " and the current maxZoom, inclusive");
                    }, tt.prototype.getMinZoom = function() {
                      return this.transform.minZoom;
                    }, tt.prototype.setMaxZoom = function(_t) {
                      if (_t = _t ?? fd, _t >= this.transform.minZoom)
                        return this.transform.maxZoom = _t, this._update(), this.getZoom() > _t && this.setZoom(_t), this;
                      throw new Error("maxZoom must be greater than the current minZoom");
                    }, tt.prototype.getMaxZoom = function() {
                      return this.transform.maxZoom;
                    }, tt.prototype.setMinPitch = function(_t) {
                      if (_t = _t ?? Os, _t < Os)
                        throw new Error("minPitch must be greater than or equal to " + Os);
                      if (_t >= Os && _t <= this.transform.maxPitch)
                        return this.transform.minPitch = _t, this._update(), this.getPitch() < _t && this.setPitch(_t), this;
                      throw new Error("minPitch must be between " + Os + " and the current maxPitch, inclusive");
                    }, tt.prototype.getMinPitch = function() {
                      return this.transform.minPitch;
                    }, tt.prototype.setMaxPitch = function(_t) {
                      if (_t = _t ?? Ko, _t > Ko)
                        throw new Error("maxPitch must be less than or equal to " + Ko);
                      if (_t >= this.transform.minPitch)
                        return this.transform.maxPitch = _t, this._update(), this.getPitch() > _t && this.setPitch(_t), this;
                      throw new Error("maxPitch must be greater than the current minPitch");
                    }, tt.prototype.getMaxPitch = function() {
                      return this.transform.maxPitch;
                    }, tt.prototype.getRenderWorldCopies = function() {
                      return this.transform.renderWorldCopies;
                    }, tt.prototype.setRenderWorldCopies = function(_t) {
                      return this.transform.renderWorldCopies = _t, this._update();
                    }, tt.prototype.project = function(_t) {
                      return this.transform.locationPoint(n.LngLat.convert(_t));
                    }, tt.prototype.unproject = function(_t) {
                      return this.transform.pointLocation(n.Point.convert(_t));
                    }, tt.prototype.isMoving = function() {
                      return this._moving || this.handlers.isMoving();
                    }, tt.prototype.isZooming = function() {
                      return this._zooming || this.handlers.isZooming();
                    }, tt.prototype.isRotating = function() {
                      return this._rotating || this.handlers.isRotating();
                    }, tt.prototype._createDelegatedListener = function(_t, Yt, le) {
                      var Ee = this, $e;
                      if (_t === "mouseenter" || _t === "mouseover") {
                        var vr = !1, Lr = function(_n) {
                          var In = Ee.getLayer(Yt) ? Ee.queryRenderedFeatures(_n.point, { layers: [Yt] }) : [];
                          In.length ? vr || (vr = !0, le.call(Ee, new pe(_t, Ee, _n.originalEvent, { features: In }))) : vr = !1;
                        }, Hr = function() {
                          vr = !1;
                        };
                        return {
                          layer: Yt,
                          listener: le,
                          delegates: {
                            mousemove: Lr,
                            mouseout: Hr
                          }
                        };
                      } else if (_t === "mouseleave" || _t === "mouseout") {
                        var Ur = !1, hn = function(_n) {
                          var In = Ee.getLayer(Yt) ? Ee.queryRenderedFeatures(_n.point, { layers: [Yt] }) : [];
                          In.length ? Ur = !0 : Ur && (Ur = !1, le.call(Ee, new pe(_t, Ee, _n.originalEvent)));
                        }, En = function(_n) {
                          Ur && (Ur = !1, le.call(Ee, new pe(_t, Ee, _n.originalEvent)));
                        };
                        return {
                          layer: Yt,
                          listener: le,
                          delegates: {
                            mousemove: hn,
                            mouseout: En
                          }
                        };
                      } else {
                        var Mn = function(_n) {
                          var In = Ee.getLayer(Yt) ? Ee.queryRenderedFeatures(_n.point, { layers: [Yt] }) : [];
                          In.length && (_n.features = In, le.call(Ee, _n), delete _n.features);
                        };
                        return {
                          layer: Yt,
                          listener: le,
                          delegates: ($e = {}, $e[_t] = Mn, $e)
                        };
                      }
                    }, tt.prototype.on = function(_t, Yt, le) {
                      if (le === void 0)
                        return mt.prototype.on.call(this, _t, Yt);
                      var Ee = this._createDelegatedListener(_t, Yt, le);
                      this._delegatedListeners = this._delegatedListeners || {}, this._delegatedListeners[_t] = this._delegatedListeners[_t] || [], this._delegatedListeners[_t].push(Ee);
                      for (var $e in Ee.delegates)
                        this.on($e, Ee.delegates[$e]);
                      return this;
                    }, tt.prototype.once = function(_t, Yt, le) {
                      if (le === void 0)
                        return mt.prototype.once.call(this, _t, Yt);
                      var Ee = this._createDelegatedListener(_t, Yt, le);
                      for (var $e in Ee.delegates)
                        this.once($e, Ee.delegates[$e]);
                      return this;
                    }, tt.prototype.off = function(_t, Yt, le) {
                      var Ee = this;
                      if (le === void 0)
                        return mt.prototype.off.call(this, _t, Yt);
                      var $e = function(vr) {
                        for (var Lr = vr[_t], Hr = 0; Hr < Lr.length; Hr++) {
                          var Ur = Lr[Hr];
                          if (Ur.layer === Yt && Ur.listener === le) {
                            for (var hn in Ur.delegates)
                              Ee.off(hn, Ur.delegates[hn]);
                            return Lr.splice(Hr, 1), Ee;
                          }
                        }
                      };
                      return this._delegatedListeners && this._delegatedListeners[_t] && $e(this._delegatedListeners), this;
                    }, tt.prototype.queryRenderedFeatures = function(_t, Yt) {
                      if (!this.style)
                        return [];
                      Yt === void 0 && _t !== void 0 && !(_t instanceof n.Point) && !Array.isArray(_t) && (Yt = _t, _t = void 0), Yt = Yt || {}, _t = _t || [
                        [
                          0,
                          0
                        ],
                        [
                          this.transform.width,
                          this.transform.height
                        ]
                      ];
                      var le;
                      if (_t instanceof n.Point || typeof _t[0] == "number")
                        le = [n.Point.convert(_t)];
                      else {
                        var Ee = n.Point.convert(_t[0]), $e = n.Point.convert(_t[1]);
                        le = [
                          Ee,
                          new n.Point($e.x, Ee.y),
                          $e,
                          new n.Point(Ee.x, $e.y),
                          Ee
                        ];
                      }
                      return this.style.queryRenderedFeatures(le, Yt, this.transform);
                    }, tt.prototype.querySourceFeatures = function(_t, Yt) {
                      return this.style.querySourceFeatures(_t, Yt);
                    }, tt.prototype.setStyle = function(_t, Yt) {
                      return Yt = n.extend({}, { localIdeographFontFamily: this._localIdeographFontFamily }, Yt), Yt.diff !== !1 && Yt.localIdeographFontFamily === this._localIdeographFontFamily && this.style && _t ? (this._diffStyle(_t, Yt), this) : (this._localIdeographFontFamily = Yt.localIdeographFontFamily, this._updateStyle(_t, Yt));
                    }, tt.prototype._getUIString = function(_t) {
                      var Yt = this._locale[_t];
                      if (Yt == null)
                        throw new Error("Missing UI string '" + _t + "'");
                      return Yt;
                    }, tt.prototype._updateStyle = function(_t, Yt) {
                      if (this.style && (this.style.setEventedParent(null), this.style._remove()), _t)
                        this.style = new Ss(this, Yt || {});
                      else
                        return delete this.style, this;
                      return this.style.setEventedParent(this, { style: this.style }), typeof _t == "string" ? this.style.loadURL(_t) : this.style.loadJSON(_t), this;
                    }, tt.prototype._lazyInitEmptyStyle = function() {
                      this.style || (this.style = new Ss(this, {}), this.style.setEventedParent(this, { style: this.style }), this.style.loadEmpty());
                    }, tt.prototype._diffStyle = function(_t, Yt) {
                      var le = this;
                      if (typeof _t == "string") {
                        var Ee = this._requestManager.normalizeStyleURL(_t), $e = this._requestManager.transformRequest(Ee, n.ResourceType.Style);
                        n.getJSON($e, function(vr, Lr) {
                          vr ? le.fire(new n.ErrorEvent(vr)) : Lr && le._updateDiff(Lr, Yt);
                        });
                      } else typeof _t == "object" && this._updateDiff(_t, Yt);
                    }, tt.prototype._updateDiff = function(_t, Yt) {
                      try {
                        this.style.setState(_t) && this._update(!0);
                      } catch (le) {
                        n.warnOnce("Unable to perform style diff: " + (le.message || le.error || le) + ".  Rebuilding the style from scratch."), this._updateStyle(_t, Yt);
                      }
                    }, tt.prototype.getStyle = function() {
                      if (this.style)
                        return this.style.serialize();
                    }, tt.prototype.isStyleLoaded = function() {
                      return this.style ? this.style.loaded() : n.warnOnce("There is no style added to the map.");
                    }, tt.prototype.addSource = function(_t, Yt) {
                      return this._lazyInitEmptyStyle(), this.style.addSource(_t, Yt), this._update(!0);
                    }, tt.prototype.isSourceLoaded = function(_t) {
                      var Yt = this.style && this.style.sourceCaches[_t];
                      if (Yt === void 0) {
                        this.fire(new n.ErrorEvent(new Error("There is no source with ID '" + _t + "'")));
                        return;
                      }
                      return Yt.loaded();
                    }, tt.prototype.areTilesLoaded = function() {
                      var _t = this.style && this.style.sourceCaches;
                      for (var Yt in _t) {
                        var le = _t[Yt], Ee = le._tiles;
                        for (var $e in Ee) {
                          var vr = Ee[$e];
                          if (!(vr.state === "loaded" || vr.state === "errored"))
                            return !1;
                        }
                      }
                      return !0;
                    }, tt.prototype.addSourceType = function(_t, Yt, le) {
                      return this._lazyInitEmptyStyle(), this.style.addSourceType(_t, Yt, le);
                    }, tt.prototype.removeSource = function(_t) {
                      return this.style.removeSource(_t), this._update(!0);
                    }, tt.prototype.getSource = function(_t) {
                      return this.style.getSource(_t);
                    }, tt.prototype.addImage = function(_t, Yt, le) {
                      le === void 0 && (le = {});
                      var Ee = le.pixelRatio;
                      Ee === void 0 && (Ee = 1);
                      var $e = le.sdf;
                      $e === void 0 && ($e = !1);
                      var vr = le.stretchX, Lr = le.stretchY, Hr = le.content;
                      this._lazyInitEmptyStyle();
                      var Ur = 0;
                      if (Yt instanceof oh || Lf && Yt instanceof Lf) {
                        var hn = n.browser.getImageData(Yt), En = hn.width, Mn = hn.height, _n = hn.data;
                        this.style.addImage(_t, {
                          data: new n.RGBAImage({
                            width: En,
                            height: Mn
                          }, _n),
                          pixelRatio: Ee,
                          stretchX: vr,
                          stretchY: Lr,
                          content: Hr,
                          sdf: $e,
                          version: Ur
                        });
                      } else {
                        if (Yt.width === void 0 || Yt.height === void 0)
                          return this.fire(new n.ErrorEvent(new Error("Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));
                        var In = Yt.width, Kn = Yt.height, xi = Yt.data, Ei = Yt;
                        this.style.addImage(_t, {
                          data: new n.RGBAImage({
                            width: In,
                            height: Kn
                          }, new Uint8Array(xi)),
                          pixelRatio: Ee,
                          stretchX: vr,
                          stretchY: Lr,
                          content: Hr,
                          sdf: $e,
                          version: Ur,
                          userImage: Ei
                        }), Ei.onAdd && Ei.onAdd(this, _t);
                      }
                    }, tt.prototype.updateImage = function(_t, Yt) {
                      var le = this.style.getImage(_t);
                      if (!le)
                        return this.fire(new n.ErrorEvent(new Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));
                      var Ee = Yt instanceof oh || Lf && Yt instanceof Lf ? n.browser.getImageData(Yt) : Yt, $e = Ee.width, vr = Ee.height, Lr = Ee.data;
                      if ($e === void 0 || vr === void 0)
                        return this.fire(new n.ErrorEvent(new Error("Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));
                      if ($e !== le.data.width || vr !== le.data.height)
                        return this.fire(new n.ErrorEvent(new Error("The width and height of the updated image must be that same as the previous version of the image")));
                      var Hr = !(Yt instanceof oh || Lf && Yt instanceof Lf);
                      le.data.replace(Lr, Hr), this.style.updateImage(_t, le);
                    }, tt.prototype.hasImage = function(_t) {
                      return _t ? !!this.style.getImage(_t) : (this.fire(new n.ErrorEvent(new Error("Missing required image id"))), !1);
                    }, tt.prototype.removeImage = function(_t) {
                      this.style.removeImage(_t);
                    }, tt.prototype.loadImage = function(_t, Yt) {
                      n.getImage(this._requestManager.transformRequest(_t, n.ResourceType.Image), Yt);
                    }, tt.prototype.listImages = function() {
                      return this.style.listImages();
                    }, tt.prototype.addLayer = function(_t, Yt) {
                      return this._lazyInitEmptyStyle(), this.style.addLayer(_t, Yt), this._update(!0);
                    }, tt.prototype.moveLayer = function(_t, Yt) {
                      return this.style.moveLayer(_t, Yt), this._update(!0);
                    }, tt.prototype.removeLayer = function(_t) {
                      return this.style.removeLayer(_t), this._update(!0);
                    }, tt.prototype.getLayer = function(_t) {
                      return this.style.getLayer(_t);
                    }, tt.prototype.setLayerZoomRange = function(_t, Yt, le) {
                      return this.style.setLayerZoomRange(_t, Yt, le), this._update(!0);
                    }, tt.prototype.setFilter = function(_t, Yt, le) {
                      return le === void 0 && (le = {}), this.style.setFilter(_t, Yt, le), this._update(!0);
                    }, tt.prototype.getFilter = function(_t) {
                      return this.style.getFilter(_t);
                    }, tt.prototype.setPaintProperty = function(_t, Yt, le, Ee) {
                      return Ee === void 0 && (Ee = {}), this.style.setPaintProperty(_t, Yt, le, Ee), this._update(!0);
                    }, tt.prototype.getPaintProperty = function(_t, Yt) {
                      return this.style.getPaintProperty(_t, Yt);
                    }, tt.prototype.setLayoutProperty = function(_t, Yt, le, Ee) {
                      return Ee === void 0 && (Ee = {}), this.style.setLayoutProperty(_t, Yt, le, Ee), this._update(!0);
                    }, tt.prototype.getLayoutProperty = function(_t, Yt) {
                      return this.style.getLayoutProperty(_t, Yt);
                    }, tt.prototype.setLight = function(_t, Yt) {
                      return Yt === void 0 && (Yt = {}), this._lazyInitEmptyStyle(), this.style.setLight(_t, Yt), this._update(!0);
                    }, tt.prototype.getLight = function() {
                      return this.style.getLight();
                    }, tt.prototype.setFeatureState = function(_t, Yt) {
                      return this.style.setFeatureState(_t, Yt), this._update();
                    }, tt.prototype.removeFeatureState = function(_t, Yt) {
                      return this.style.removeFeatureState(_t, Yt), this._update();
                    }, tt.prototype.getFeatureState = function(_t) {
                      return this.style.getFeatureState(_t);
                    }, tt.prototype.getContainer = function() {
                      return this._container;
                    }, tt.prototype.getCanvasContainer = function() {
                      return this._canvasContainer;
                    }, tt.prototype.getCanvas = function() {
                      return this._canvas;
                    }, tt.prototype._containerDimensions = function() {
                      var _t = 0, Yt = 0;
                      return this._container && (_t = this._container.clientWidth || 400, Yt = this._container.clientHeight || 300), [
                        _t,
                        Yt
                      ];
                    }, tt.prototype._detectMissingCSS = function() {
                      var _t = n.window.getComputedStyle(this._missingCSSCanary).getPropertyValue("background-color");
                      _t !== "rgb(250, 128, 114)" && n.warnOnce("This page appears to be missing CSS declarations for Mapbox GL JS, which may cause the map to display incorrectly. Please ensure your page includes mapbox-gl.css, as described in https://www.mapbox.com/mapbox-gl-js/api/.");
                    }, tt.prototype._setupContainer = function() {
                      var _t = this._container;
                      _t.classList.add("mapboxgl-map");
                      var Yt = this._missingCSSCanary = T.create("div", "mapboxgl-canary", _t);
                      Yt.style.visibility = "hidden", this._detectMissingCSS();
                      var le = this._canvasContainer = T.create("div", "mapboxgl-canvas-container", _t);
                      this._interactive && le.classList.add("mapboxgl-interactive"), this._canvas = T.create("canvas", "mapboxgl-canvas", le), this._canvas.addEventListener("webglcontextlost", this._contextLost, !1), this._canvas.addEventListener("webglcontextrestored", this._contextRestored, !1), this._canvas.setAttribute("tabindex", "0"), this._canvas.setAttribute("aria-label", "Map"), this._canvas.setAttribute("role", "region");
                      var Ee = this._containerDimensions();
                      this._resizeCanvas(Ee[0], Ee[1]);
                      var $e = this._controlContainer = T.create("div", "mapboxgl-control-container", _t), vr = this._controlPositions = {};
                      [
                        "top-left",
                        "top-right",
                        "bottom-left",
                        "bottom-right"
                      ].forEach(function(Lr) {
                        vr[Lr] = T.create("div", "mapboxgl-ctrl-" + Lr, $e);
                      }), this._container.addEventListener("scroll", this._onMapScroll, !1);
                    }, tt.prototype._resizeCanvas = function(_t, Yt) {
                      var le = n.browser.devicePixelRatio || 1;
                      this._canvas.width = le * _t, this._canvas.height = le * Yt, this._canvas.style.width = _t + "px", this._canvas.style.height = Yt + "px";
                    }, tt.prototype._setupPainter = function() {
                      var _t = n.extend({}, s.webGLContextAttributes, {
                        failIfMajorPerformanceCaveat: this._failIfMajorPerformanceCaveat,
                        preserveDrawingBuffer: this._preserveDrawingBuffer,
                        antialias: this._antialias || !1
                      }), Yt = this._canvas.getContext("webgl", _t) || this._canvas.getContext("experimental-webgl", _t);
                      if (!Yt) {
                        this.fire(new n.ErrorEvent(new Error("Failed to initialize WebGL")));
                        return;
                      }
                      this.painter = new dn(Yt, this.transform), n.webpSupported.testSupport(Yt);
                    }, tt.prototype._contextLost = function(_t) {
                      _t.preventDefault(), this._frame && (this._frame.cancel(), this._frame = null), this.fire(new n.Event("webglcontextlost", { originalEvent: _t }));
                    }, tt.prototype._contextRestored = function(_t) {
                      this._setupPainter(), this.resize(), this._update(), this.fire(new n.Event("webglcontextrestored", { originalEvent: _t }));
                    }, tt.prototype._onMapScroll = function(_t) {
                      if (_t.target === this._container)
                        return this._container.scrollTop = 0, this._container.scrollLeft = 0, !1;
                    }, tt.prototype.loaded = function() {
                      return !this._styleDirty && !this._sourcesDirty && !!this.style && this.style.loaded();
                    }, tt.prototype._update = function(_t) {
                      return this.style ? (this._styleDirty = this._styleDirty || _t, this._sourcesDirty = !0, this.triggerRepaint(), this) : this;
                    }, tt.prototype._requestRenderFrame = function(_t) {
                      return this._update(), this._renderTaskQueue.add(_t);
                    }, tt.prototype._cancelRenderFrame = function(_t) {
                      this._renderTaskQueue.remove(_t);
                    }, tt.prototype._render = function(_t) {
                      var Yt = this, le, Ee = 0, $e = this.painter.context.extTimerQuery;
                      if (this.listens("gpu-timing-frame") && (le = $e.createQueryEXT(), $e.beginQueryEXT($e.TIME_ELAPSED_EXT, le), Ee = n.browser.now()), this.painter.context.setDirty(), this.painter.setBaseState(), this._renderTaskQueue.run(_t), !this._removed) {
                        var vr = !1;
                        if (this.style && this._styleDirty) {
                          this._styleDirty = !1;
                          var Lr = this.transform.zoom, Hr = n.browser.now();
                          this.style.zoomHistory.update(Lr, Hr);
                          var Ur = new n.EvaluationParameters(Lr, {
                            now: Hr,
                            fadeDuration: this._fadeDuration,
                            zoomHistory: this.style.zoomHistory,
                            transition: this.style.getTransition()
                          }), hn = Ur.crossFadingFactor();
                          (hn !== 1 || hn !== this._crossFadingFactor) && (vr = !0, this._crossFadingFactor = hn), this.style.update(Ur);
                        }
                        if (this.style && this._sourcesDirty && (this._sourcesDirty = !1, this.style._updateSources(this.transform)), this._placementDirty = this.style && this.style._updatePlacement(this.painter.transform, this.showCollisionBoxes, this._fadeDuration, this._crossSourceCollisions), this.painter.render(this.style, {
                          showTileBoundaries: this.showTileBoundaries,
                          showOverdrawInspector: this._showOverdrawInspector,
                          rotating: this.isRotating(),
                          zooming: this.isZooming(),
                          moving: this.isMoving(),
                          fadeDuration: this._fadeDuration,
                          showPadding: this.showPadding,
                          gpuTiming: !!this.listens("gpu-timing-layer")
                        }), this.fire(new n.Event("render")), this.loaded() && !this._loaded && (this._loaded = !0, this.fire(new n.Event("load"))), this.style && (this.style.hasTransitions() || vr) && (this._styleDirty = !0), this.style && !this._placementDirty && this.style._releaseSymbolFadeTiles(), this.listens("gpu-timing-frame")) {
                          var En = n.browser.now() - Ee;
                          $e.endQueryEXT($e.TIME_ELAPSED_EXT, le), setTimeout(function() {
                            var In = $e.getQueryObjectEXT(le, $e.QUERY_RESULT_EXT) / 1e6;
                            $e.deleteQueryEXT(le), Yt.fire(new n.Event("gpu-timing-frame", {
                              cpuTime: En,
                              gpuTime: In
                            }));
                          }, 50);
                        }
                        if (this.listens("gpu-timing-layer")) {
                          var Mn = this.painter.collectGpuTimers();
                          setTimeout(function() {
                            var In = Yt.painter.queryGpuTimers(Mn);
                            Yt.fire(new n.Event("gpu-timing-layer", { layerTimes: In }));
                          }, 50);
                        }
                        var _n = this._sourcesDirty || this._styleDirty || this._placementDirty;
                        return _n || this._repaint ? this.triggerRepaint() : !this.isMoving() && this.loaded() && this.fire(new n.Event("idle")), this._loaded && !this._fullyLoaded && !_n && (this._fullyLoaded = !0), this;
                      }
                    }, tt.prototype.remove = function() {
                      this._hash && this._hash.remove();
                      for (var _t = 0, Yt = this._controls; _t < Yt.length; _t += 1) {
                        var le = Yt[_t];
                        le.onRemove(this);
                      }
                      this._controls = [], this._frame && (this._frame.cancel(), this._frame = null), this._renderTaskQueue.clear(), this.painter.destroy(), this.handlers.destroy(), delete this.handlers, this.setStyle(null), typeof n.window < "u" && (n.window.removeEventListener("resize", this._onWindowResize, !1), n.window.removeEventListener("orientationchange", this._onWindowResize, !1), n.window.removeEventListener("online", this._onWindowOnline, !1));
                      var Ee = this.painter.context.gl.getExtension("WEBGL_lose_context");
                      Ee && Ee.loseContext && Ee.loseContext(), uh(this._canvasContainer), uh(this._controlContainer), uh(this._missingCSSCanary), this._container.classList.remove("mapboxgl-map"), this._removed = !0, this.fire(new n.Event("remove"));
                    }, tt.prototype.triggerRepaint = function() {
                      var _t = this;
                      this.style && !this._frame && (this._frame = n.browser.frame(function(Yt) {
                        _t._frame = null, _t._render(Yt);
                      }));
                    }, tt.prototype._onWindowOnline = function() {
                      this._update();
                    }, tt.prototype._onWindowResize = function(_t) {
                      this._trackResize && this.resize({ originalEvent: _t })._update();
                    }, bt.showTileBoundaries.get = function() {
                      return !!this._showTileBoundaries;
                    }, bt.showTileBoundaries.set = function(it) {
                      this._showTileBoundaries !== it && (this._showTileBoundaries = it, this._update());
                    }, bt.showPadding.get = function() {
                      return !!this._showPadding;
                    }, bt.showPadding.set = function(it) {
                      this._showPadding !== it && (this._showPadding = it, this._update());
                    }, bt.showCollisionBoxes.get = function() {
                      return !!this._showCollisionBoxes;
                    }, bt.showCollisionBoxes.set = function(it) {
                      this._showCollisionBoxes !== it && (this._showCollisionBoxes = it, it ? this.style._generateCollisionBoxes() : this._update());
                    }, bt.showOverdrawInspector.get = function() {
                      return !!this._showOverdrawInspector;
                    }, bt.showOverdrawInspector.set = function(it) {
                      this._showOverdrawInspector !== it && (this._showOverdrawInspector = it, this._update());
                    }, bt.repaint.get = function() {
                      return !!this._repaint;
                    }, bt.repaint.set = function(it) {
                      this._repaint !== it && (this._repaint = it, this.triggerRepaint());
                    }, bt.vertices.get = function() {
                      return !!this._vertices;
                    }, bt.vertices.set = function(it) {
                      this._vertices = it, this._update();
                    }, tt.prototype._setCacheLimits = function(_t, Yt) {
                      n.setCacheLimits(_t, Yt);
                    }, bt.version.get = function() {
                      return n.version;
                    }, Object.defineProperties(tt.prototype, bt), tt;
                  }(Fu);
                  function uh(mt) {
                    mt.parentNode && mt.parentNode.removeChild(mt);
                  }
                  var Fd = {
                    showCompass: !0,
                    showZoom: !0,
                    visualizePitch: !1
                  }, gu = function(tt) {
                    var bt = this;
                    this.options = n.extend({}, Fd, tt), this._container = T.create("div", "mapboxgl-ctrl mapboxgl-ctrl-group"), this._container.addEventListener("contextmenu", function(it) {
                      return it.preventDefault();
                    }), this.options.showZoom && (n.bindAll([
                      "_setButtonTitle",
                      "_updateZoomButtons"
                    ], this), this._zoomInButton = this._createButton("mapboxgl-ctrl-zoom-in", function(it) {
                      return bt._map.zoomIn({}, { originalEvent: it });
                    }), T.create("span", "mapboxgl-ctrl-icon", this._zoomInButton).setAttribute("aria-hidden", !0), this._zoomOutButton = this._createButton("mapboxgl-ctrl-zoom-out", function(it) {
                      return bt._map.zoomOut({}, { originalEvent: it });
                    }), T.create("span", "mapboxgl-ctrl-icon", this._zoomOutButton).setAttribute("aria-hidden", !0)), this.options.showCompass && (n.bindAll(["_rotateCompassArrow"], this), this._compass = this._createButton("mapboxgl-ctrl-compass", function(it) {
                      bt.options.visualizePitch ? bt._map.resetNorthPitch({}, { originalEvent: it }) : bt._map.resetNorth({}, { originalEvent: it });
                    }), this._compassIcon = T.create("span", "mapboxgl-ctrl-icon", this._compass), this._compassIcon.setAttribute("aria-hidden", !0));
                  };
                  gu.prototype._updateZoomButtons = function() {
                    var tt = this._map.getZoom(), bt = tt === this._map.getMaxZoom(), it = tt === this._map.getMinZoom();
                    this._zoomInButton.disabled = bt, this._zoomOutButton.disabled = it, this._zoomInButton.setAttribute("aria-disabled", bt.toString()), this._zoomOutButton.setAttribute("aria-disabled", it.toString());
                  }, gu.prototype._rotateCompassArrow = function() {
                    var tt = this.options.visualizePitch ? "scale(" + 1 / Math.pow(Math.cos(this._map.transform.pitch * (Math.PI / 180)), 0.5) + ") rotateX(" + this._map.transform.pitch + "deg) rotateZ(" + this._map.transform.angle * (180 / Math.PI) + "deg)" : "rotate(" + this._map.transform.angle * (180 / Math.PI) + "deg)";
                    this._compassIcon.style.transform = tt;
                  }, gu.prototype.onAdd = function(tt) {
                    return this._map = tt, this.options.showZoom && (this._setButtonTitle(this._zoomInButton, "ZoomIn"), this._setButtonTitle(this._zoomOutButton, "ZoomOut"), this._map.on("zoom", this._updateZoomButtons), this._updateZoomButtons()), this.options.showCompass && (this._setButtonTitle(this._compass, "ResetBearing"), this.options.visualizePitch && this._map.on("pitch", this._rotateCompassArrow), this._map.on("rotate", this._rotateCompassArrow), this._rotateCompassArrow(), this._handler = new yu(this._map, this._compass, this.options.visualizePitch)), this._container;
                  }, gu.prototype.onRemove = function() {
                    T.remove(this._container), this.options.showZoom && this._map.off("zoom", this._updateZoomButtons), this.options.showCompass && (this.options.visualizePitch && this._map.off("pitch", this._rotateCompassArrow), this._map.off("rotate", this._rotateCompassArrow), this._handler.off(), delete this._handler), delete this._map;
                  }, gu.prototype._createButton = function(tt, bt) {
                    var it = T.create("button", tt, this._container);
                    return it.type = "button", it.addEventListener("click", bt), it;
                  }, gu.prototype._setButtonTitle = function(tt, bt) {
                    var it = this._map._getUIString("NavigationControl." + bt);
                    tt.title = it, tt.setAttribute("aria-label", it);
                  };
                  var yu = function(tt, bt, it) {
                    it === void 0 && (it = !1), this._clickTolerance = 10, this.element = bt, this.mouseRotate = new oa({ clickTolerance: tt.dragRotate._mouseRotate._clickTolerance }), this.map = tt, it && (this.mousePitch = new ji({ clickTolerance: tt.dragRotate._mousePitch._clickTolerance })), n.bindAll([
                      "mousedown",
                      "mousemove",
                      "mouseup",
                      "touchstart",
                      "touchmove",
                      "touchend",
                      "reset"
                    ], this), T.addEventListener(bt, "mousedown", this.mousedown), T.addEventListener(bt, "touchstart", this.touchstart, { passive: !1 }), T.addEventListener(bt, "touchmove", this.touchmove), T.addEventListener(bt, "touchend", this.touchend), T.addEventListener(bt, "touchcancel", this.reset);
                  };
                  yu.prototype.down = function(tt, bt) {
                    this.mouseRotate.mousedown(tt, bt), this.mousePitch && this.mousePitch.mousedown(tt, bt), T.disableDrag();
                  }, yu.prototype.move = function(tt, bt) {
                    var it = this.map, _t = this.mouseRotate.mousemoveWindow(tt, bt);
                    if (_t && _t.bearingDelta && it.setBearing(it.getBearing() + _t.bearingDelta), this.mousePitch) {
                      var Yt = this.mousePitch.mousemoveWindow(tt, bt);
                      Yt && Yt.pitchDelta && it.setPitch(it.getPitch() + Yt.pitchDelta);
                    }
                  }, yu.prototype.off = function() {
                    var tt = this.element;
                    T.removeEventListener(tt, "mousedown", this.mousedown), T.removeEventListener(tt, "touchstart", this.touchstart, { passive: !1 }), T.removeEventListener(tt, "touchmove", this.touchmove), T.removeEventListener(tt, "touchend", this.touchend), T.removeEventListener(tt, "touchcancel", this.reset), this.offTemp();
                  }, yu.prototype.offTemp = function() {
                    T.enableDrag(), T.removeEventListener(n.window, "mousemove", this.mousemove), T.removeEventListener(n.window, "mouseup", this.mouseup);
                  }, yu.prototype.mousedown = function(tt) {
                    this.down(n.extend({}, tt, {
                      ctrlKey: !0,
                      preventDefault: function() {
                        return tt.preventDefault();
                      }
                    }), T.mousePos(this.element, tt)), T.addEventListener(n.window, "mousemove", this.mousemove), T.addEventListener(n.window, "mouseup", this.mouseup);
                  }, yu.prototype.mousemove = function(tt) {
                    this.move(tt, T.mousePos(this.element, tt));
                  }, yu.prototype.mouseup = function(tt) {
                    this.mouseRotate.mouseupWindow(tt), this.mousePitch && this.mousePitch.mouseupWindow(tt), this.offTemp();
                  }, yu.prototype.touchstart = function(tt) {
                    tt.targetTouches.length !== 1 ? this.reset() : (this._startPos = this._lastPos = T.touchPos(this.element, tt.targetTouches)[0], this.down({
                      type: "mousedown",
                      button: 0,
                      ctrlKey: !0,
                      preventDefault: function() {
                        return tt.preventDefault();
                      }
                    }, this._startPos));
                  }, yu.prototype.touchmove = function(tt) {
                    tt.targetTouches.length !== 1 ? this.reset() : (this._lastPos = T.touchPos(this.element, tt.targetTouches)[0], this.move({
                      preventDefault: function() {
                        return tt.preventDefault();
                      }
                    }, this._lastPos));
                  }, yu.prototype.touchend = function(tt) {
                    tt.targetTouches.length === 0 && this._startPos && this._lastPos && this._startPos.dist(this._lastPos) < this._clickTolerance && this.element.click(), this.reset();
                  }, yu.prototype.reset = function() {
                    this.mouseRotate.reset(), this.mousePitch && this.mousePitch.reset(), delete this._startPos, delete this._lastPos, this.offTemp();
                  };
                  function ol(mt, tt, bt) {
                    if (mt = new n.LngLat(mt.lng, mt.lat), tt) {
                      var it = new n.LngLat(mt.lng - 360, mt.lat), _t = new n.LngLat(mt.lng + 360, mt.lat), Yt = bt.locationPoint(mt).distSqr(tt);
                      bt.locationPoint(it).distSqr(tt) < Yt ? mt = it : bt.locationPoint(_t).distSqr(tt) < Yt && (mt = _t);
                    }
                    for (; Math.abs(mt.lng - bt.center.lng) > 180; ) {
                      var le = bt.locationPoint(mt);
                      if (le.x >= 0 && le.y >= 0 && le.x <= bt.width && le.y <= bt.height)
                        break;
                      mt.lng > bt.center.lng ? mt.lng -= 360 : mt.lng += 360;
                    }
                    return mt;
                  }
                  var ch = {
                    center: "translate(-50%,-50%)",
                    top: "translate(-50%,0)",
                    "top-left": "translate(0,0)",
                    "top-right": "translate(-100%,0)",
                    bottom: "translate(-50%,-100%)",
                    "bottom-left": "translate(0,-100%)",
                    "bottom-right": "translate(-100%,-100%)",
                    left: "translate(0,-50%)",
                    right: "translate(-100%,-50%)"
                  };
                  function ka(mt, tt, bt) {
                    var it = mt.classList;
                    for (var _t in ch)
                      it.remove("mapboxgl-" + bt + "-anchor-" + _t);
                    it.add("mapboxgl-" + bt + "-anchor-" + tt);
                  }
                  var Ua = function(mt) {
                    function tt(bt, it) {
                      if (mt.call(this), (bt instanceof n.window.HTMLElement || it) && (bt = n.extend({ element: bt }, it)), n.bindAll([
                        "_update",
                        "_onMove",
                        "_onUp",
                        "_addDragHandler",
                        "_onMapClick",
                        "_onKeyPress"
                      ], this), this._anchor = bt && bt.anchor || "center", this._color = bt && bt.color || "#3FB1CE", this._scale = bt && bt.scale || 1, this._draggable = bt && bt.draggable || !1, this._clickTolerance = bt && bt.clickTolerance || 0, this._isDragging = !1, this._state = "inactive", this._rotation = bt && bt.rotation || 0, this._rotationAlignment = bt && bt.rotationAlignment || "auto", this._pitchAlignment = bt && bt.pitchAlignment && bt.pitchAlignment !== "auto" ? bt.pitchAlignment : this._rotationAlignment, !bt || !bt.element) {
                        this._defaultMarker = !0, this._element = T.create("div"), this._element.setAttribute("aria-label", "Map marker");
                        var _t = T.createNS("http://www.w3.org/2000/svg", "svg"), Yt = 41, le = 27;
                        _t.setAttributeNS(null, "display", "block"), _t.setAttributeNS(null, "height", Yt + "px"), _t.setAttributeNS(null, "width", le + "px"), _t.setAttributeNS(null, "viewBox", "0 0 " + le + " " + Yt);
                        var Ee = T.createNS("http://www.w3.org/2000/svg", "g");
                        Ee.setAttributeNS(null, "stroke", "none"), Ee.setAttributeNS(null, "stroke-width", "1"), Ee.setAttributeNS(null, "fill", "none"), Ee.setAttributeNS(null, "fill-rule", "evenodd");
                        var $e = T.createNS("http://www.w3.org/2000/svg", "g");
                        $e.setAttributeNS(null, "fill-rule", "nonzero");
                        var vr = T.createNS("http://www.w3.org/2000/svg", "g");
                        vr.setAttributeNS(null, "transform", "translate(3.0, 29.0)"), vr.setAttributeNS(null, "fill", "#000000");
                        for (var Lr = [
                          {
                            rx: "10.5",
                            ry: "5.25002273"
                          },
                          {
                            rx: "10.5",
                            ry: "5.25002273"
                          },
                          {
                            rx: "9.5",
                            ry: "4.77275007"
                          },
                          {
                            rx: "8.5",
                            ry: "4.29549936"
                          },
                          {
                            rx: "7.5",
                            ry: "3.81822308"
                          },
                          {
                            rx: "6.5",
                            ry: "3.34094679"
                          },
                          {
                            rx: "5.5",
                            ry: "2.86367051"
                          },
                          {
                            rx: "4.5",
                            ry: "2.38636864"
                          }
                        ], Hr = 0, Ur = Lr; Hr < Ur.length; Hr += 1) {
                          var hn = Ur[Hr], En = T.createNS("http://www.w3.org/2000/svg", "ellipse");
                          En.setAttributeNS(null, "opacity", "0.04"), En.setAttributeNS(null, "cx", "10.5"), En.setAttributeNS(null, "cy", "5.80029008"), En.setAttributeNS(null, "rx", hn.rx), En.setAttributeNS(null, "ry", hn.ry), vr.appendChild(En);
                        }
                        var Mn = T.createNS("http://www.w3.org/2000/svg", "g");
                        Mn.setAttributeNS(null, "fill", this._color);
                        var _n = T.createNS("http://www.w3.org/2000/svg", "path");
                        _n.setAttributeNS(null, "d", "M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z"), Mn.appendChild(_n);
                        var In = T.createNS("http://www.w3.org/2000/svg", "g");
                        In.setAttributeNS(null, "opacity", "0.25"), In.setAttributeNS(null, "fill", "#000000");
                        var Kn = T.createNS("http://www.w3.org/2000/svg", "path");
                        Kn.setAttributeNS(null, "d", "M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z"), In.appendChild(Kn);
                        var xi = T.createNS("http://www.w3.org/2000/svg", "g");
                        xi.setAttributeNS(null, "transform", "translate(6.0, 7.0)"), xi.setAttributeNS(null, "fill", "#FFFFFF");
                        var Ei = T.createNS("http://www.w3.org/2000/svg", "g");
                        Ei.setAttributeNS(null, "transform", "translate(8.0, 8.0)");
                        var zi = T.createNS("http://www.w3.org/2000/svg", "circle");
                        zi.setAttributeNS(null, "fill", "#000000"), zi.setAttributeNS(null, "opacity", "0.25"), zi.setAttributeNS(null, "cx", "5.5"), zi.setAttributeNS(null, "cy", "5.5"), zi.setAttributeNS(null, "r", "5.4999962");
                        var Vi = T.createNS("http://www.w3.org/2000/svg", "circle");
                        Vi.setAttributeNS(null, "fill", "#FFFFFF"), Vi.setAttributeNS(null, "cx", "5.5"), Vi.setAttributeNS(null, "cy", "5.5"), Vi.setAttributeNS(null, "r", "5.4999962"), Ei.appendChild(zi), Ei.appendChild(Vi), $e.appendChild(vr), $e.appendChild(Mn), $e.appendChild(In), $e.appendChild(xi), $e.appendChild(Ei), _t.appendChild($e), _t.setAttributeNS(null, "height", Yt * this._scale + "px"), _t.setAttributeNS(null, "width", le * this._scale + "px"), this._element.appendChild(_t), this._offset = n.Point.convert(bt && bt.offset || [
                          0,
                          -14
                        ]);
                      } else
                        this._element = bt.element, this._offset = n.Point.convert(bt && bt.offset || [
                          0,
                          0
                        ]);
                      this._element.classList.add("mapboxgl-marker"), this._element.addEventListener("dragstart", function(Di) {
                        Di.preventDefault();
                      }), this._element.addEventListener("mousedown", function(Di) {
                        Di.preventDefault();
                      }), ka(this._element, this._anchor, "marker"), this._popup = null;
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.addTo = function(it) {
                      return this.remove(), this._map = it, it.getCanvasContainer().appendChild(this._element), it.on("move", this._update), it.on("moveend", this._update), this.setDraggable(this._draggable), this._update(), this._map.on("click", this._onMapClick), this;
                    }, tt.prototype.remove = function() {
                      return this._map && (this._map.off("click", this._onMapClick), this._map.off("move", this._update), this._map.off("moveend", this._update), this._map.off("mousedown", this._addDragHandler), this._map.off("touchstart", this._addDragHandler), this._map.off("mouseup", this._onUp), this._map.off("touchend", this._onUp), this._map.off("mousemove", this._onMove), this._map.off("touchmove", this._onMove), delete this._map), T.remove(this._element), this._popup && this._popup.remove(), this;
                    }, tt.prototype.getLngLat = function() {
                      return this._lngLat;
                    }, tt.prototype.setLngLat = function(it) {
                      return this._lngLat = n.LngLat.convert(it), this._pos = null, this._popup && this._popup.setLngLat(this._lngLat), this._update(), this;
                    }, tt.prototype.getElement = function() {
                      return this._element;
                    }, tt.prototype.setPopup = function(it) {
                      if (this._popup && (this._popup.remove(), this._popup = null, this._element.removeEventListener("keypress", this._onKeyPress), this._originalTabIndex || this._element.removeAttribute("tabindex")), it) {
                        if (!("offset" in it.options)) {
                          var _t = 38.1, Yt = 13.5, le = Math.sqrt(Math.pow(Yt, 2) / 2);
                          it.options.offset = this._defaultMarker ? {
                            top: [
                              0,
                              0
                            ],
                            "top-left": [
                              0,
                              0
                            ],
                            "top-right": [
                              0,
                              0
                            ],
                            bottom: [
                              0,
                              -_t
                            ],
                            "bottom-left": [
                              le,
                              (_t - Yt + le) * -1
                            ],
                            "bottom-right": [
                              -le,
                              (_t - Yt + le) * -1
                            ],
                            left: [
                              Yt,
                              (_t - Yt) * -1
                            ],
                            right: [
                              -Yt,
                              (_t - Yt) * -1
                            ]
                          } : this._offset;
                        }
                        this._popup = it, this._lngLat && this._popup.setLngLat(this._lngLat), this._originalTabIndex = this._element.getAttribute("tabindex"), this._originalTabIndex || this._element.setAttribute("tabindex", "0"), this._element.addEventListener("keypress", this._onKeyPress);
                      }
                      return this;
                    }, tt.prototype._onKeyPress = function(it) {
                      var _t = it.code, Yt = it.charCode || it.keyCode;
                      (_t === "Space" || _t === "Enter" || Yt === 32 || Yt === 13) && this.togglePopup();
                    }, tt.prototype._onMapClick = function(it) {
                      var _t = it.originalEvent.target, Yt = this._element;
                      this._popup && (_t === Yt || Yt.contains(_t)) && this.togglePopup();
                    }, tt.prototype.getPopup = function() {
                      return this._popup;
                    }, tt.prototype.togglePopup = function() {
                      var it = this._popup;
                      if (it)
                        it.isOpen() ? it.remove() : it.addTo(this._map);
                      else return this;
                      return this;
                    }, tt.prototype._update = function(it) {
                      if (this._map) {
                        this._map.transform.renderWorldCopies && (this._lngLat = ol(this._lngLat, this._pos, this._map.transform)), this._pos = this._map.project(this._lngLat)._add(this._offset);
                        var _t = "";
                        this._rotationAlignment === "viewport" || this._rotationAlignment === "auto" ? _t = "rotateZ(" + this._rotation + "deg)" : this._rotationAlignment === "map" && (_t = "rotateZ(" + (this._rotation - this._map.getBearing()) + "deg)");
                        var Yt = "";
                        this._pitchAlignment === "viewport" || this._pitchAlignment === "auto" ? Yt = "rotateX(0deg)" : this._pitchAlignment === "map" && (Yt = "rotateX(" + this._map.getPitch() + "deg)"), (!it || it.type === "moveend") && (this._pos = this._pos.round()), T.setTransform(this._element, ch[this._anchor] + " translate(" + this._pos.x + "px, " + this._pos.y + "px) " + Yt + " " + _t);
                      }
                    }, tt.prototype.getOffset = function() {
                      return this._offset;
                    }, tt.prototype.setOffset = function(it) {
                      return this._offset = n.Point.convert(it), this._update(), this;
                    }, tt.prototype._onMove = function(it) {
                      if (!this._isDragging) {
                        var _t = this._clickTolerance || this._map._clickTolerance;
                        this._isDragging = it.point.dist(this._pointerdownPos) >= _t;
                      }
                      this._isDragging && (this._pos = it.point.sub(this._positionDelta), this._lngLat = this._map.unproject(this._pos), this.setLngLat(this._lngLat), this._element.style.pointerEvents = "none", this._state === "pending" && (this._state = "active", this.fire(new n.Event("dragstart"))), this.fire(new n.Event("drag")));
                    }, tt.prototype._onUp = function() {
                      this._element.style.pointerEvents = "auto", this._positionDelta = null, this._pointerdownPos = null, this._isDragging = !1, this._map.off("mousemove", this._onMove), this._map.off("touchmove", this._onMove), this._state === "active" && this.fire(new n.Event("dragend")), this._state = "inactive";
                    }, tt.prototype._addDragHandler = function(it) {
                      this._element.contains(it.originalEvent.target) && (it.preventDefault(), this._positionDelta = it.point.sub(this._pos).add(this._offset), this._pointerdownPos = it.point, this._state = "pending", this._map.on("mousemove", this._onMove), this._map.on("touchmove", this._onMove), this._map.once("mouseup", this._onUp), this._map.once("touchend", this._onUp));
                    }, tt.prototype.setDraggable = function(it) {
                      return this._draggable = !!it, this._map && (it ? (this._map.on("mousedown", this._addDragHandler), this._map.on("touchstart", this._addDragHandler)) : (this._map.off("mousedown", this._addDragHandler), this._map.off("touchstart", this._addDragHandler))), this;
                    }, tt.prototype.isDraggable = function() {
                      return this._draggable;
                    }, tt.prototype.setRotation = function(it) {
                      return this._rotation = it || 0, this._update(), this;
                    }, tt.prototype.getRotation = function() {
                      return this._rotation;
                    }, tt.prototype.setRotationAlignment = function(it) {
                      return this._rotationAlignment = it || "auto", this._update(), this;
                    }, tt.prototype.getRotationAlignment = function() {
                      return this._rotationAlignment;
                    }, tt.prototype.setPitchAlignment = function(it) {
                      return this._pitchAlignment = it && it !== "auto" ? it : this._rotationAlignment, this._update(), this;
                    }, tt.prototype.getPitchAlignment = function() {
                      return this._pitchAlignment;
                    }, tt;
                  }(n.Evented), kh = {
                    positionOptions: {
                      enableHighAccuracy: !1,
                      maximumAge: 0,
                      timeout: 6e3
                    },
                    fitBoundsOptions: { maxZoom: 15 },
                    trackUserLocation: !1,
                    showAccuracyCircle: !0,
                    showUserLocation: !0
                  }, ac;
                  function fh(mt) {
                    ac !== void 0 ? mt(ac) : n.window.navigator.permissions !== void 0 ? n.window.navigator.permissions.query({ name: "geolocation" }).then(function(tt) {
                      ac = tt.state !== "denied", mt(ac);
                    }) : (ac = !!n.window.navigator.geolocation, mt(ac));
                  }
                  var Ws = 0, rf = !1, oc = function(mt) {
                    function tt(bt) {
                      mt.call(this), this.options = n.extend({}, kh, bt), n.bindAll([
                        "_onSuccess",
                        "_onError",
                        "_onZoom",
                        "_finish",
                        "_setupUI",
                        "_updateCamera",
                        "_updateMarker"
                      ], this);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.onAdd = function(it) {
                      return this._map = it, this._container = T.create("div", "mapboxgl-ctrl mapboxgl-ctrl-group"), fh(this._setupUI), this._container;
                    }, tt.prototype.onRemove = function() {
                      this._geolocationWatchID !== void 0 && (n.window.navigator.geolocation.clearWatch(this._geolocationWatchID), this._geolocationWatchID = void 0), this.options.showUserLocation && this._userLocationDotMarker && this._userLocationDotMarker.remove(), this.options.showAccuracyCircle && this._accuracyCircleMarker && this._accuracyCircleMarker.remove(), T.remove(this._container), this._map.off("zoom", this._onZoom), this._map = void 0, Ws = 0, rf = !1;
                    }, tt.prototype._isOutOfMapMaxBounds = function(it) {
                      var _t = this._map.getMaxBounds(), Yt = it.coords;
                      return _t && (Yt.longitude < _t.getWest() || Yt.longitude > _t.getEast() || Yt.latitude < _t.getSouth() || Yt.latitude > _t.getNorth());
                    }, tt.prototype._setErrorState = function() {
                      switch (this._watchState) {
                        case "WAITING_ACTIVE":
                          this._watchState = "ACTIVE_ERROR", this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"), this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");
                          break;
                        case "ACTIVE_LOCK":
                          this._watchState = "ACTIVE_ERROR", this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"), this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error"), this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting");
                          break;
                        case "BACKGROUND":
                          this._watchState = "BACKGROUND_ERROR", this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"), this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error"), this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting");
                          break;
                      }
                    }, tt.prototype._onSuccess = function(it) {
                      if (this._map) {
                        if (this._isOutOfMapMaxBounds(it)) {
                          this._setErrorState(), this.fire(new n.Event("outofmaxbounds", it)), this._updateMarker(), this._finish();
                          return;
                        }
                        if (this.options.trackUserLocation)
                          switch (this._lastKnownPosition = it, this._watchState) {
                            case "WAITING_ACTIVE":
                            case "ACTIVE_LOCK":
                            case "ACTIVE_ERROR":
                              this._watchState = "ACTIVE_LOCK", this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"), this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"), this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");
                              break;
                            case "BACKGROUND":
                            case "BACKGROUND_ERROR":
                              this._watchState = "BACKGROUND", this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"), this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"), this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background");
                              break;
                          }
                        this.options.showUserLocation && this._watchState !== "OFF" && this._updateMarker(it), (!this.options.trackUserLocation || this._watchState === "ACTIVE_LOCK") && this._updateCamera(it), this.options.showUserLocation && this._dotElement.classList.remove("mapboxgl-user-location-dot-stale"), this.fire(new n.Event("geolocate", it)), this._finish();
                      }
                    }, tt.prototype._updateCamera = function(it) {
                      var _t = new n.LngLat(it.coords.longitude, it.coords.latitude), Yt = it.coords.accuracy, le = this._map.getBearing(), Ee = n.extend({ bearing: le }, this.options.fitBoundsOptions);
                      this._map.fitBounds(_t.toBounds(Yt), Ee, { geolocateSource: !0 });
                    }, tt.prototype._updateMarker = function(it) {
                      if (it) {
                        var _t = new n.LngLat(it.coords.longitude, it.coords.latitude);
                        this._accuracyCircleMarker.setLngLat(_t).addTo(this._map), this._userLocationDotMarker.setLngLat(_t).addTo(this._map), this._accuracy = it.coords.accuracy, this.options.showUserLocation && this.options.showAccuracyCircle && this._updateCircleRadius();
                      } else
                        this._userLocationDotMarker.remove(), this._accuracyCircleMarker.remove();
                    }, tt.prototype._updateCircleRadius = function() {
                      var it = this._map._container.clientHeight / 2, _t = this._map.unproject([
                        0,
                        it
                      ]), Yt = this._map.unproject([
                        1,
                        it
                      ]), le = _t.distanceTo(Yt), Ee = Math.ceil(2 * this._accuracy / le);
                      this._circleElement.style.width = Ee + "px", this._circleElement.style.height = Ee + "px";
                    }, tt.prototype._onZoom = function() {
                      this.options.showUserLocation && this.options.showAccuracyCircle && this._updateCircleRadius();
                    }, tt.prototype._onError = function(it) {
                      if (this._map) {
                        if (this.options.trackUserLocation)
                          if (it.code === 1) {
                            this._watchState = "OFF", this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"), this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"), this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"), this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"), this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"), this._geolocateButton.disabled = !0;
                            var _t = this._map._getUIString("GeolocateControl.LocationNotAvailable");
                            this._geolocateButton.title = _t, this._geolocateButton.setAttribute("aria-label", _t), this._geolocationWatchID !== void 0 && this._clearWatch();
                          } else {
                            if (it.code === 3 && rf)
                              return;
                            this._setErrorState();
                          }
                        this._watchState !== "OFF" && this.options.showUserLocation && this._dotElement.classList.add("mapboxgl-user-location-dot-stale"), this.fire(new n.Event("error", it)), this._finish();
                      }
                    }, tt.prototype._finish = function() {
                      this._timeoutId && clearTimeout(this._timeoutId), this._timeoutId = void 0;
                    }, tt.prototype._setupUI = function(it) {
                      var _t = this;
                      if (this._container.addEventListener("contextmenu", function(Ee) {
                        return Ee.preventDefault();
                      }), this._geolocateButton = T.create("button", "mapboxgl-ctrl-geolocate", this._container), T.create("span", "mapboxgl-ctrl-icon", this._geolocateButton).setAttribute("aria-hidden", !0), this._geolocateButton.type = "button", it === !1) {
                        n.warnOnce("Geolocation support is not available so the GeolocateControl will be disabled.");
                        var Yt = this._map._getUIString("GeolocateControl.LocationNotAvailable");
                        this._geolocateButton.disabled = !0, this._geolocateButton.title = Yt, this._geolocateButton.setAttribute("aria-label", Yt);
                      } else {
                        var le = this._map._getUIString("GeolocateControl.FindMyLocation");
                        this._geolocateButton.title = le, this._geolocateButton.setAttribute("aria-label", le);
                      }
                      this.options.trackUserLocation && (this._geolocateButton.setAttribute("aria-pressed", "false"), this._watchState = "OFF"), this.options.showUserLocation && (this._dotElement = T.create("div", "mapboxgl-user-location-dot"), this._userLocationDotMarker = new Ua(this._dotElement), this._circleElement = T.create("div", "mapboxgl-user-location-accuracy-circle"), this._accuracyCircleMarker = new Ua({
                        element: this._circleElement,
                        pitchAlignment: "map"
                      }), this.options.trackUserLocation && (this._watchState = "OFF"), this._map.on("zoom", this._onZoom)), this._geolocateButton.addEventListener("click", this.trigger.bind(this)), this._setup = !0, this.options.trackUserLocation && this._map.on("movestart", function(Ee) {
                        var $e = Ee.originalEvent && Ee.originalEvent.type === "resize";
                        !Ee.geolocateSource && _t._watchState === "ACTIVE_LOCK" && !$e && (_t._watchState = "BACKGROUND", _t._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background"), _t._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"), _t.fire(new n.Event("trackuserlocationend")));
                      });
                    }, tt.prototype.trigger = function() {
                      if (!this._setup)
                        return n.warnOnce("Geolocate control triggered before added to a map"), !1;
                      if (this.options.trackUserLocation) {
                        switch (this._watchState) {
                          case "OFF":
                            this._watchState = "WAITING_ACTIVE", this.fire(new n.Event("trackuserlocationstart"));
                            break;
                          case "WAITING_ACTIVE":
                          case "ACTIVE_LOCK":
                          case "ACTIVE_ERROR":
                          case "BACKGROUND_ERROR":
                            Ws--, rf = !1, this._watchState = "OFF", this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"), this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"), this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"), this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"), this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"), this.fire(new n.Event("trackuserlocationend"));
                            break;
                          case "BACKGROUND":
                            this._watchState = "ACTIVE_LOCK", this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"), this._lastKnownPosition && this._updateCamera(this._lastKnownPosition), this.fire(new n.Event("trackuserlocationstart"));
                            break;
                        }
                        switch (this._watchState) {
                          case "WAITING_ACTIVE":
                            this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"), this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");
                            break;
                          case "ACTIVE_LOCK":
                            this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");
                            break;
                          case "ACTIVE_ERROR":
                            this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"), this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");
                            break;
                          case "BACKGROUND":
                            this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background");
                            break;
                          case "BACKGROUND_ERROR":
                            this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"), this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error");
                            break;
                        }
                        if (this._watchState === "OFF" && this._geolocationWatchID !== void 0)
                          this._clearWatch();
                        else if (this._geolocationWatchID === void 0) {
                          this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"), this._geolocateButton.setAttribute("aria-pressed", "true"), Ws++;
                          var it;
                          Ws > 1 ? (it = {
                            maximumAge: 6e5,
                            timeout: 0
                          }, rf = !0) : (it = this.options.positionOptions, rf = !1), this._geolocationWatchID = n.window.navigator.geolocation.watchPosition(this._onSuccess, this._onError, it);
                        }
                      } else
                        n.window.navigator.geolocation.getCurrentPosition(this._onSuccess, this._onError, this.options.positionOptions), this._timeoutId = setTimeout(this._finish, 1e4);
                      return !0;
                    }, tt.prototype._clearWatch = function() {
                      n.window.navigator.geolocation.clearWatch(this._geolocationWatchID), this._geolocationWatchID = void 0, this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"), this._geolocateButton.setAttribute("aria-pressed", "false"), this.options.showUserLocation && this._updateMarker(null);
                    }, tt;
                  }(n.Evented), ev = {
                    maxWidth: 100,
                    unit: "metric"
                  }, Lc = function(tt) {
                    this.options = n.extend({}, ev, tt), n.bindAll([
                      "_onMove",
                      "setUnit"
                    ], this);
                  };
                  Lc.prototype.getDefaultPosition = function() {
                    return "bottom-left";
                  }, Lc.prototype._onMove = function() {
                    Od(this._map, this._container, this.options);
                  }, Lc.prototype.onAdd = function(tt) {
                    return this._map = tt, this._container = T.create("div", "mapboxgl-ctrl mapboxgl-ctrl-scale", tt.getContainer()), this._map.on("move", this._onMove), this._onMove(), this._container;
                  }, Lc.prototype.onRemove = function() {
                    T.remove(this._container), this._map.off("move", this._onMove), this._map = void 0;
                  }, Lc.prototype.setUnit = function(tt) {
                    this.options.unit = tt, Od(this._map, this._container, this.options);
                  };
                  function Od(mt, tt, bt) {
                    var it = bt && bt.maxWidth || 100, _t = mt._container.clientHeight / 2, Yt = mt.unproject([
                      0,
                      _t
                    ]), le = mt.unproject([
                      it,
                      _t
                    ]), Ee = Yt.distanceTo(le);
                    if (bt && bt.unit === "imperial") {
                      var $e = 3.2808 * Ee;
                      if ($e > 5280) {
                        var vr = $e / 5280;
                        Pf(tt, it, vr, mt._getUIString("ScaleControl.Miles"));
                      } else
                        Pf(tt, it, $e, mt._getUIString("ScaleControl.Feet"));
                    } else if (bt && bt.unit === "nautical") {
                      var Lr = Ee / 1852;
                      Pf(tt, it, Lr, mt._getUIString("ScaleControl.NauticalMiles"));
                    } else Ee >= 1e3 ? Pf(tt, it, Ee / 1e3, mt._getUIString("ScaleControl.Kilometers")) : Pf(tt, it, Ee, mt._getUIString("ScaleControl.Meters"));
                  }
                  function Pf(mt, tt, bt, it) {
                    var _t = Ls(bt), Yt = _t / bt;
                    mt.style.width = tt * Yt + "px", mt.innerHTML = _t + "&nbsp;" + it;
                  }
                  function Ts(mt) {
                    var tt = Math.pow(10, Math.ceil(-Math.log(mt) / Math.LN10));
                    return Math.round(mt * tt) / tt;
                  }
                  function Ls(mt) {
                    var tt = Math.pow(10, ("" + Math.floor(mt)).length - 1), bt = mt / tt;
                    return bt = bt >= 10 ? 10 : bt >= 5 ? 5 : bt >= 3 ? 3 : bt >= 2 ? 2 : bt >= 1 ? 1 : Ts(bt), tt * bt;
                  }
                  var sc = function(tt) {
                    this._fullscreen = !1, tt && tt.container && (tt.container instanceof n.window.HTMLElement ? this._container = tt.container : n.warnOnce("Full screen control 'container' must be a DOM element.")), n.bindAll([
                      "_onClickFullscreen",
                      "_changeIcon"
                    ], this), "onfullscreenchange" in n.window.document ? this._fullscreenchange = "fullscreenchange" : "onmozfullscreenchange" in n.window.document ? this._fullscreenchange = "mozfullscreenchange" : "onwebkitfullscreenchange" in n.window.document ? this._fullscreenchange = "webkitfullscreenchange" : "onmsfullscreenchange" in n.window.document && (this._fullscreenchange = "MSFullscreenChange");
                  };
                  sc.prototype.onAdd = function(tt) {
                    return this._map = tt, this._container || (this._container = this._map.getContainer()), this._controlContainer = T.create("div", "mapboxgl-ctrl mapboxgl-ctrl-group"), this._checkFullscreenSupport() ? this._setupUI() : (this._controlContainer.style.display = "none", n.warnOnce("This device does not support fullscreen mode.")), this._controlContainer;
                  }, sc.prototype.onRemove = function() {
                    T.remove(this._controlContainer), this._map = null, n.window.document.removeEventListener(this._fullscreenchange, this._changeIcon);
                  }, sc.prototype._checkFullscreenSupport = function() {
                    return !!(n.window.document.fullscreenEnabled || n.window.document.mozFullScreenEnabled || n.window.document.msFullscreenEnabled || n.window.document.webkitFullscreenEnabled);
                  }, sc.prototype._setupUI = function() {
                    var tt = this._fullscreenButton = T.create("button", "mapboxgl-ctrl-fullscreen", this._controlContainer);
                    T.create("span", "mapboxgl-ctrl-icon", tt).setAttribute("aria-hidden", !0), tt.type = "button", this._updateTitle(), this._fullscreenButton.addEventListener("click", this._onClickFullscreen), n.window.document.addEventListener(this._fullscreenchange, this._changeIcon);
                  }, sc.prototype._updateTitle = function() {
                    var tt = this._getTitle();
                    this._fullscreenButton.setAttribute("aria-label", tt), this._fullscreenButton.title = tt;
                  }, sc.prototype._getTitle = function() {
                    return this._map._getUIString(this._isFullscreen() ? "FullscreenControl.Exit" : "FullscreenControl.Enter");
                  }, sc.prototype._isFullscreen = function() {
                    return this._fullscreen;
                  }, sc.prototype._changeIcon = function() {
                    var tt = n.window.document.fullscreenElement || n.window.document.mozFullScreenElement || n.window.document.webkitFullscreenElement || n.window.document.msFullscreenElement;
                    tt === this._container !== this._fullscreen && (this._fullscreen = !this._fullscreen, this._fullscreenButton.classList.toggle("mapboxgl-ctrl-shrink"), this._fullscreenButton.classList.toggle("mapboxgl-ctrl-fullscreen"), this._updateTitle());
                  }, sc.prototype._onClickFullscreen = function() {
                    this._isFullscreen() ? n.window.document.exitFullscreen ? n.window.document.exitFullscreen() : n.window.document.mozCancelFullScreen ? n.window.document.mozCancelFullScreen() : n.window.document.msExitFullscreen ? n.window.document.msExitFullscreen() : n.window.document.webkitCancelFullScreen && n.window.document.webkitCancelFullScreen() : this._container.requestFullscreen ? this._container.requestFullscreen() : this._container.mozRequestFullScreen ? this._container.mozRequestFullScreen() : this._container.msRequestFullscreen ? this._container.msRequestFullscreen() : this._container.webkitRequestFullscreen && this._container.webkitRequestFullscreen();
                  };
                  var gv = {
                    closeButton: !0,
                    closeOnClick: !0,
                    focusAfterOpen: !0,
                    className: "",
                    maxWidth: "240px"
                  }, zh = [
                    "a[href]",
                    "[tabindex]:not([tabindex='-1'])",
                    "[contenteditable]:not([contenteditable='false'])",
                    "button:not([disabled])",
                    "input:not([disabled])",
                    "select:not([disabled])",
                    "textarea:not([disabled])"
                  ].join(", "), Bd = function(mt) {
                    function tt(bt) {
                      mt.call(this), this.options = n.extend(Object.create(gv), bt), n.bindAll([
                        "_update",
                        "_onClose",
                        "remove",
                        "_onMouseMove",
                        "_onMouseUp",
                        "_onDrag"
                      ], this);
                    }
                    return mt && (tt.__proto__ = mt), tt.prototype = Object.create(mt && mt.prototype), tt.prototype.constructor = tt, tt.prototype.addTo = function(it) {
                      return this._map && this.remove(), this._map = it, this.options.closeOnClick && this._map.on("click", this._onClose), this.options.closeOnMove && this._map.on("move", this._onClose), this._map.on("remove", this.remove), this._update(), this._focusFirstElement(), this._trackPointer ? (this._map.on("mousemove", this._onMouseMove), this._map.on("mouseup", this._onMouseUp), this._container && this._container.classList.add("mapboxgl-popup-track-pointer"), this._map._canvasContainer.classList.add("mapboxgl-track-pointer")) : this._map.on("move", this._update), this.fire(new n.Event("open")), this;
                    }, tt.prototype.isOpen = function() {
                      return !!this._map;
                    }, tt.prototype.remove = function() {
                      return this._content && T.remove(this._content), this._container && (T.remove(this._container), delete this._container), this._map && (this._map.off("move", this._update), this._map.off("move", this._onClose), this._map.off("click", this._onClose), this._map.off("remove", this.remove), this._map.off("mousemove", this._onMouseMove), this._map.off("mouseup", this._onMouseUp), this._map.off("drag", this._onDrag), delete this._map), this.fire(new n.Event("close")), this;
                    }, tt.prototype.getLngLat = function() {
                      return this._lngLat;
                    }, tt.prototype.setLngLat = function(it) {
                      return this._lngLat = n.LngLat.convert(it), this._pos = null, this._trackPointer = !1, this._update(), this._map && (this._map.on("move", this._update), this._map.off("mousemove", this._onMouseMove), this._container && this._container.classList.remove("mapboxgl-popup-track-pointer"), this._map._canvasContainer.classList.remove("mapboxgl-track-pointer")), this;
                    }, tt.prototype.trackPointer = function() {
                      return this._trackPointer = !0, this._pos = null, this._update(), this._map && (this._map.off("move", this._update), this._map.on("mousemove", this._onMouseMove), this._map.on("drag", this._onDrag), this._container && this._container.classList.add("mapboxgl-popup-track-pointer"), this._map._canvasContainer.classList.add("mapboxgl-track-pointer")), this;
                    }, tt.prototype.getElement = function() {
                      return this._container;
                    }, tt.prototype.setText = function(it) {
                      return this.setDOMContent(n.window.document.createTextNode(it));
                    }, tt.prototype.setHTML = function(it) {
                      var _t = n.window.document.createDocumentFragment(), Yt = n.window.document.createElement("body"), le;
                      for (Yt.innerHTML = it; le = Yt.firstChild, !!le; )
                        _t.appendChild(le);
                      return this.setDOMContent(_t);
                    }, tt.prototype.getMaxWidth = function() {
                      return this._container && this._container.style.maxWidth;
                    }, tt.prototype.setMaxWidth = function(it) {
                      return this.options.maxWidth = it, this._update(), this;
                    }, tt.prototype.setDOMContent = function(it) {
                      if (this._content)
                        for (; this._content.hasChildNodes(); )
                          this._content.firstChild && this._content.removeChild(this._content.firstChild);
                      else
                        this._content = T.create("div", "mapboxgl-popup-content", this._container);
                      return this._content.appendChild(it), this._createCloseButton(), this._update(), this._focusFirstElement(), this;
                    }, tt.prototype.addClassName = function(it) {
                      this._container && this._container.classList.add(it);
                    }, tt.prototype.removeClassName = function(it) {
                      this._container && this._container.classList.remove(it);
                    }, tt.prototype.setOffset = function(it) {
                      return this.options.offset = it, this._update(), this;
                    }, tt.prototype.toggleClassName = function(it) {
                      if (this._container)
                        return this._container.classList.toggle(it);
                    }, tt.prototype._createCloseButton = function() {
                      this.options.closeButton && (this._closeButton = T.create("button", "mapboxgl-popup-close-button", this._content), this._closeButton.type = "button", this._closeButton.setAttribute("aria-label", "Close popup"), this._closeButton.innerHTML = "&#215;", this._closeButton.addEventListener("click", this._onClose));
                    }, tt.prototype._onMouseUp = function(it) {
                      this._update(it.point);
                    }, tt.prototype._onMouseMove = function(it) {
                      this._update(it.point);
                    }, tt.prototype._onDrag = function(it) {
                      this._update(it.point);
                    }, tt.prototype._update = function(it) {
                      var _t = this, Yt = this._lngLat || this._trackPointer;
                      if (!(!this._map || !Yt || !this._content) && (this._container || (this._container = T.create("div", "mapboxgl-popup", this._map.getContainer()), this._tip = T.create("div", "mapboxgl-popup-tip", this._container), this._container.appendChild(this._content), this.options.className && this.options.className.split(" ").forEach(function(hn) {
                        return _t._container.classList.add(hn);
                      }), this._trackPointer && this._container.classList.add("mapboxgl-popup-track-pointer")), this.options.maxWidth && this._container.style.maxWidth !== this.options.maxWidth && (this._container.style.maxWidth = this.options.maxWidth), this._map.transform.renderWorldCopies && !this._trackPointer && (this._lngLat = ol(this._lngLat, this._pos, this._map.transform)), !(this._trackPointer && !it))) {
                        var le = this._pos = this._trackPointer && it ? it : this._map.project(this._lngLat), Ee = this.options.anchor, $e = hd(this.options.offset);
                        if (!Ee) {
                          var vr = this._container.offsetWidth, Lr = this._container.offsetHeight, Hr;
                          le.y + $e.bottom.y < Lr ? Hr = ["top"] : le.y > this._map.transform.height - Lr ? Hr = ["bottom"] : Hr = [], le.x < vr / 2 ? Hr.push("left") : le.x > this._map.transform.width - vr / 2 && Hr.push("right"), Hr.length === 0 ? Ee = "bottom" : Ee = Hr.join("-");
                        }
                        var Ur = le.add($e[Ee]).round();
                        T.setTransform(this._container, ch[Ee] + " translate(" + Ur.x + "px," + Ur.y + "px)"), ka(this._container, Ee, "popup");
                      }
                    }, tt.prototype._focusFirstElement = function() {
                      if (!(!this.options.focusAfterOpen || !this._container)) {
                        var it = this._container.querySelector(zh);
                        it && it.focus();
                      }
                    }, tt.prototype._onClose = function() {
                      this.remove();
                    }, tt;
                  }(n.Evented);
                  function hd(mt) {
                    if (mt)
                      if (typeof mt == "number") {
                        var tt = Math.round(Math.sqrt(0.5 * Math.pow(mt, 2)));
                        return {
                          center: new n.Point(0, 0),
                          top: new n.Point(0, mt),
                          "top-left": new n.Point(tt, tt),
                          "top-right": new n.Point(-tt, tt),
                          bottom: new n.Point(0, -mt),
                          "bottom-left": new n.Point(tt, -tt),
                          "bottom-right": new n.Point(-tt, -tt),
                          left: new n.Point(mt, 0),
                          right: new n.Point(-mt, 0)
                        };
                      } else if (mt instanceof n.Point || Array.isArray(mt)) {
                        var bt = n.Point.convert(mt);
                        return {
                          center: bt,
                          top: bt,
                          "top-left": bt,
                          "top-right": bt,
                          bottom: bt,
                          "bottom-left": bt,
                          "bottom-right": bt,
                          left: bt,
                          right: bt
                        };
                      } else
                        return {
                          center: n.Point.convert(mt.center || [
                            0,
                            0
                          ]),
                          top: n.Point.convert(mt.top || [
                            0,
                            0
                          ]),
                          "top-left": n.Point.convert(mt["top-left"] || [
                            0,
                            0
                          ]),
                          "top-right": n.Point.convert(mt["top-right"] || [
                            0,
                            0
                          ]),
                          bottom: n.Point.convert(mt.bottom || [
                            0,
                            0
                          ]),
                          "bottom-left": n.Point.convert(mt["bottom-left"] || [
                            0,
                            0
                          ]),
                          "bottom-right": n.Point.convert(mt["bottom-right"] || [
                            0,
                            0
                          ]),
                          left: n.Point.convert(mt.left || [
                            0,
                            0
                          ]),
                          right: n.Point.convert(mt.right || [
                            0,
                            0
                          ])
                        };
                    else return hd(new n.Point(0, 0));
                  }
                  var Ps = {
                    version: n.version,
                    supported: s,
                    setRTLTextPlugin: n.setRTLTextPlugin,
                    getRTLTextPluginStatus: n.getRTLTextPluginStatus,
                    Map: zd,
                    NavigationControl: gu,
                    GeolocateControl: oc,
                    AttributionControl: qa,
                    ScaleControl: Lc,
                    FullscreenControl: sc,
                    Popup: Bd,
                    Marker: Ua,
                    Style: Ss,
                    LngLat: n.LngLat,
                    LngLatBounds: n.LngLatBounds,
                    Point: n.Point,
                    MercatorCoordinate: n.MercatorCoordinate,
                    Evented: n.Evented,
                    config: n.config,
                    prewarm: oe,
                    clearPrewarmedResources: de,
                    get accessToken() {
                      return n.config.ACCESS_TOKEN;
                    },
                    set accessToken(mt) {
                      n.config.ACCESS_TOKEN = mt;
                    },
                    get baseApiUrl() {
                      return n.config.API_URL;
                    },
                    set baseApiUrl(mt) {
                      n.config.API_URL = mt;
                    },
                    get workerCount() {
                      return Br.workerCount;
                    },
                    set workerCount(mt) {
                      Br.workerCount = mt;
                    },
                    get maxParallelImageRequests() {
                      return n.config.MAX_PARALLEL_IMAGE_REQUESTS;
                    },
                    set maxParallelImageRequests(mt) {
                      n.config.MAX_PARALLEL_IMAGE_REQUESTS = mt;
                    },
                    clearStorage: function(tt) {
                      n.clearTileCache(tt);
                    },
                    workerUrl: ""
                  };
                  return Ps;
                }), b;
              });
            }
          ),
          /***/
          27549: (
            /***/
            function(Y, K, e) {
              Y.exports = e(55366);
            }
          ),
          /***/
          55366: (
            /***/
            function(Y, K, e) {
              var b = e(31625), P = e(75144), n = e(5137), s = e(78112), T = e(6807), A = e(68650), p = e(83473), u = e(60201), t = e(10275), r = e(62914), i = 1073741824;
              Y.exports = function(o, y) {
                y || (y = {}), o = p(o, "float64"), y = T(y, {
                  bounds: "range bounds dataBox databox",
                  maxDepth: "depth maxDepth maxdepth level maxLevel maxlevel levels",
                  dtype: "type dtype format out dst output destination"
                  // sort: 'sortBy sortby sort',
                  // pick: 'pick levelPoint',
                  // nodeSize: 'node nodeSize minNodeSize minSize size'
                });
                var g = A(y.maxDepth, 255), x = A(y.bounds, s(o, 2));
                x[0] === x[2] && x[2]++, x[1] === x[3] && x[3]++;
                var c = a(o, x), v = o.length >>> 1, f;
                y.dtype || (y.dtype = "array"), typeof y.dtype == "string" ? f = new (t(y.dtype))(v) : y.dtype && (f = y.dtype, Array.isArray(f) && (f.length = v));
                for (var _ = 0; _ < v; ++_)
                  f[_] = _;
                var S = [], M = [], C = [], m = [];
                O(0, 0, 1, f, 0, 1);
                for (var L = 0, d = 0; d < S.length; d++) {
                  var h = S[d];
                  if (f.set)
                    f.set(h, L);
                  else
                    for (var E = 0, w = h.length; E < w; E++)
                      f[E + L] = h[E];
                  var z = L + S[d].length;
                  m[d] = [L, z], L = z;
                }
                return f.range = B, f;
                function O(H, F, G, q, rt, st) {
                  if (!q.length)
                    return null;
                  var vt = S[rt] || (S[rt] = []), ht = C[rt] || (C[rt] = []), et = M[rt] || (M[rt] = []), Q = vt.length;
                  if (rt++, rt > g || st > i) {
                    for (var j = 0; j < q.length; j++)
                      vt.push(q[j]), ht.push(st), et.push(null, null, null, null);
                    return Q;
                  }
                  if (vt.push(q[0]), ht.push(st), q.length <= 1)
                    return et.push(null, null, null, null), Q;
                  for (var at = G * 0.5, ut = H + at, nt = F + at, X = [], ct = [], lt = [], pt = [], wt = 1, Et = q.length; wt < Et; wt++) {
                    var Ct = q[wt], Gt = c[Ct * 2], Jt = c[Ct * 2 + 1];
                    Gt < ut ? Jt < nt ? X.push(Ct) : ct.push(Ct) : Jt < nt ? lt.push(Ct) : pt.push(Ct);
                  }
                  return st <<= 2, et.push(
                    O(H, F, at, X, rt, st),
                    O(H, nt, at, ct, rt, st + 1),
                    O(ut, F, at, lt, rt, st + 2),
                    O(ut, nt, at, pt, rt, st + 3)
                  ), Q;
                }
                function B() {
                  for (var H = [], F = arguments.length; F--; ) H[F] = arguments[F];
                  var G;
                  if (u(H[H.length - 1])) {
                    var q = H.pop();
                    !H.length && (q.x != null || q.l != null || q.left != null) && (H = [q], G = {}), G = T(q, {
                      level: "level maxLevel",
                      d: "d diam diameter r radius px pxSize pixel pixelSize maxD size minSize",
                      lod: "lod details ranges offsets"
                    });
                  } else
                    G = {};
                  H.length || (H = x);
                  var rt = n.apply(void 0, H), st = [
                    Math.min(rt.x, rt.x + rt.width),
                    Math.min(rt.y, rt.y + rt.height),
                    Math.max(rt.x, rt.x + rt.width),
                    Math.max(rt.y, rt.y + rt.height)
                  ], vt = st[0], ht = st[1], et = st[2], Q = st[3], j = a([vt, ht, et, Q], x), at = j[0], ut = j[1], nt = j[2], X = j[3], ct = A(G.level, S.length);
                  if (G.d != null) {
                    var lt;
                    typeof G.d == "number" ? lt = [G.d, G.d] : G.d.length && (lt = G.d), ct = Math.min(
                      Math.max(
                        Math.ceil(-r(Math.abs(lt[0]) / (x[2] - x[0]))),
                        Math.ceil(-r(Math.abs(lt[1]) / (x[3] - x[1])))
                      ),
                      ct
                    );
                  }
                  if (ct = Math.min(ct, S.length), G.lod)
                    return V(at, ut, nt, X, ct);
                  var pt = [];
                  wt(0, 0, 1, 0, 0, 1);
                  function wt(Ct, Gt, Jt, Qt, Vt, zt) {
                    if (!(Vt === null || zt === null)) {
                      var Rt = Ct + Jt, Wt = Gt + Jt;
                      if (!(at > Rt || ut > Wt || nt < Ct || X < Gt) && !(Qt >= ct) && Vt !== zt) {
                        var kt = S[Qt];
                        zt === void 0 && (zt = kt.length);
                        for (var re = Vt; re < zt; re++) {
                          var ge = kt[re], _e = o[ge * 2], ce = o[ge * 2 + 1];
                          _e >= vt && _e <= et && ce >= ht && ce <= Q && pt.push(ge);
                        }
                        var ae = M[Qt], Se = ae[Vt * 4 + 0], ze = ae[Vt * 4 + 1], Ne = ae[Vt * 4 + 2], Ve = ae[Vt * 4 + 3], Oe = Et(ae, Vt + 1), ur = Jt * 0.5, ie = Qt + 1;
                        wt(Ct, Gt, ur, ie, Se, ze || Ne || Ve || Oe), wt(Ct, Gt + ur, ur, ie, ze, Ne || Ve || Oe), wt(Ct + ur, Gt, ur, ie, Ne, Ve || Oe), wt(Ct + ur, Gt + ur, ur, ie, Ve, Oe);
                      }
                    }
                  }
                  function Et(Ct, Gt) {
                    for (var Jt = null, Qt = 0; Jt === null; )
                      if (Jt = Ct[Gt * 4 + Qt], Qt++, Qt > Ct.length)
                        return null;
                    return Jt;
                  }
                  return pt;
                }
                function V(H, F, G, q, rt) {
                  for (var st = [], vt = 0; vt < rt; vt++) {
                    var ht = C[vt], et = m[vt][0], Q = U(H, F, vt), j = U(G, q, vt), at = b.ge(ht, Q), ut = b.gt(ht, j, at, ht.length - 1);
                    st[vt] = [at + et, ut + et];
                  }
                  return st;
                }
                function U(H, F, G) {
                  for (var q = 1, rt = 0.5, st = 0.5, vt = 0.5, ht = 0; ht < G; ht++)
                    q <<= 2, q += H < rt ? F < st ? 0 : 1 : F < st ? 2 : 3, vt *= 0.5, rt += H < rt ? -vt : vt, st += F < st ? -vt : vt;
                  return q;
                }
              };
              function a(l, o) {
                for (var y = o[0], g = o[1], x = o[2], c = o[3], v = 1 / (x - y), f = 1 / (c - g), _ = new Array(l.length), S = 0, M = l.length / 2; S < M; S++)
                  _[2 * S] = P((l[2 * S] - y) * v, 0, 1), _[2 * S + 1] = P((l[2 * S + 1] - g) * f, 0, 1);
                return _;
              }
            }
          ),
          /***/
          16844: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e) {
                var b = 0, P = 0, n = 0, s = 0;
                return e.map(function(T) {
                  T = T.slice();
                  var A = T[0], p = A.toUpperCase();
                  if (A != p)
                    switch (T[0] = p, A) {
                      case "a":
                        T[6] += n, T[7] += s;
                        break;
                      case "v":
                        T[1] += s;
                        break;
                      case "h":
                        T[1] += n;
                        break;
                      default:
                        for (var u = 1; u < T.length; )
                          T[u++] += n, T[u++] += s;
                    }
                  switch (p) {
                    case "Z":
                      n = b, s = P;
                      break;
                    case "H":
                      n = T[1];
                      break;
                    case "V":
                      s = T[1];
                      break;
                    case "M":
                      n = b = T[1], s = P = T[2];
                      break;
                    default:
                      n = T[T.length - 2], s = T[T.length - 1];
                  }
                  return T;
                });
              }
            }
          ),
          /***/
          78112: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e, b) {
                if (!e || e.length == null) throw Error("Argument should be an array");
                b == null ? b = 1 : b = Math.floor(b);
                for (var P = Array(b * 2), n = 0; n < b; n++) {
                  for (var s = -1 / 0, T = 1 / 0, A = n, p = e.length; A < p; A += b)
                    e[A] > s && (s = e[A]), e[A] < T && (T = e[A]);
                  P[n] = T, P[b + n] = s;
                }
                return P;
              }
            }
          ),
          /***/
          33055: (
            /***/
            function(Y) {
              Y.exports = function(K, e, b) {
                if (typeof Array.prototype.findIndex == "function")
                  return K.findIndex(e, b);
                if (typeof e != "function")
                  throw new TypeError("predicate must be a function");
                var P = Object(K), n = P.length;
                if (n === 0)
                  return -1;
                for (var s = 0; s < n; s++)
                  if (e.call(b, P[s], s, P))
                    return s;
                return -1;
              };
            }
          ),
          /***/
          90956: (
            /***/
            function(Y, K, e) {
              var b = e(78112);
              Y.exports = P;
              function P(n, s, T) {
                if (!n || n.length == null) throw Error("Argument should be an array");
                s == null && (s = 1), T == null && (T = b(n, s));
                for (var A = 0; A < s; A++) {
                  var p = T[s + A], u = T[A], t = A, r = n.length;
                  if (p === 1 / 0 && u === -1 / 0)
                    for (t = A; t < r; t += s)
                      n[t] = n[t] === p ? 1 : n[t] === u ? 0 : 0.5;
                  else if (p === 1 / 0)
                    for (t = A; t < r; t += s)
                      n[t] = n[t] === p ? 1 : 0;
                  else if (u === -1 / 0)
                    for (t = A; t < r; t += s)
                      n[t] = n[t] === u ? 0 : 1;
                  else {
                    var i = p - u;
                    for (t = A; t < r; t += s)
                      isNaN(n[t]) || (n[t] = i === 0 ? 0.5 : (n[t] - u) / i);
                  }
                }
                return n;
              }
            }
          ),
          /***/
          27902: (
            /***/
            function(Y) {
              Y.exports = function(e, b) {
                var P = typeof e == "number", n = typeof b == "number";
                P && !n ? (b = e, e = 0) : !P && !n && (e = 0, b = 0), e = e | 0, b = b | 0;
                var s = b - e;
                if (s < 0)
                  throw new Error("array length must be positive");
                for (var T = new Array(s), A = 0, p = e; A < s; A++, p++)
                  T[A] = p;
                return T;
              };
            }
          ),
          /***/
          85672: (
            /***/
            function(Y, K, e) {
              var b = e(33282);
              function P(vt) {
                "@babel/helpers - typeof";
                return P = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(ht) {
                  return typeof ht;
                } : function(ht) {
                  return ht && typeof Symbol == "function" && ht.constructor === Symbol && ht !== Symbol.prototype ? "symbol" : typeof ht;
                }, P(vt);
              }
              function n(vt, ht, et) {
                return Object.defineProperty(vt, "prototype", { writable: !1 }), vt;
              }
              function s(vt, ht) {
                if (!(vt instanceof ht))
                  throw new TypeError("Cannot call a class as a function");
              }
              var T = e(34585), A = T.codes, p = A.ERR_AMBIGUOUS_ARGUMENT, u = A.ERR_INVALID_ARG_TYPE, t = A.ERR_INVALID_ARG_VALUE, r = A.ERR_INVALID_RETURN_VALUE, i = A.ERR_MISSING_ARGS, a = e(68586), l = e(56557), o = l.inspect, y = e(56557).types, g = y.isPromise, x = y.isRegExp, c = e(68686)(), v = e(9622)(), f = e(63063)("RegExp.prototype.test"), _, S;
              function M() {
                var vt = e(23879);
                _ = vt.isDeepEqual, S = vt.isDeepStrictEqual;
              }
              var C = !1, m = Y.exports = w, L = {};
              function d(vt) {
                throw vt.message instanceof Error ? vt.message : new a(vt);
              }
              function h(vt, ht, et, Q, j) {
                var at = arguments.length, ut;
                if (at === 0)
                  ut = "Failed";
                else if (at === 1)
                  et = vt, vt = void 0;
                else {
                  if (C === !1) {
                    C = !0;
                    var nt = b.emitWarning ? b.emitWarning : console.warn.bind(console);
                    nt("assert.fail() with more than one argument is deprecated. Please use assert.strictEqual() instead or only pass a message.", "DeprecationWarning", "DEP0094");
                  }
                  at === 2 && (Q = "!=");
                }
                if (et instanceof Error) throw et;
                var X = {
                  actual: vt,
                  expected: ht,
                  operator: Q === void 0 ? "fail" : Q,
                  stackStartFn: j || h
                };
                et !== void 0 && (X.message = et);
                var ct = new a(X);
                throw ut && (ct.message = ut, ct.generatedMessage = !0), ct;
              }
              m.fail = h, m.AssertionError = a;
              function E(vt, ht, et, Q) {
                if (!et) {
                  var j = !1;
                  if (ht === 0)
                    j = !0, Q = "No value argument passed to `assert.ok()`";
                  else if (Q instanceof Error)
                    throw Q;
                  var at = new a({
                    actual: et,
                    expected: !0,
                    message: Q,
                    operator: "==",
                    stackStartFn: vt
                  });
                  throw at.generatedMessage = j, at;
                }
              }
              function w() {
                for (var vt = arguments.length, ht = new Array(vt), et = 0; et < vt; et++)
                  ht[et] = arguments[et];
                E.apply(void 0, [w, ht.length].concat(ht));
              }
              m.ok = w, m.equal = function vt(ht, et, Q) {
                if (arguments.length < 2)
                  throw new i("actual", "expected");
                ht != et && d({
                  actual: ht,
                  expected: et,
                  message: Q,
                  operator: "==",
                  stackStartFn: vt
                });
              }, m.notEqual = function vt(ht, et, Q) {
                if (arguments.length < 2)
                  throw new i("actual", "expected");
                ht == et && d({
                  actual: ht,
                  expected: et,
                  message: Q,
                  operator: "!=",
                  stackStartFn: vt
                });
              }, m.deepEqual = function vt(ht, et, Q) {
                if (arguments.length < 2)
                  throw new i("actual", "expected");
                _ === void 0 && M(), _(ht, et) || d({
                  actual: ht,
                  expected: et,
                  message: Q,
                  operator: "deepEqual",
                  stackStartFn: vt
                });
              }, m.notDeepEqual = function vt(ht, et, Q) {
                if (arguments.length < 2)
                  throw new i("actual", "expected");
                _ === void 0 && M(), _(ht, et) && d({
                  actual: ht,
                  expected: et,
                  message: Q,
                  operator: "notDeepEqual",
                  stackStartFn: vt
                });
              }, m.deepStrictEqual = function vt(ht, et, Q) {
                if (arguments.length < 2)
                  throw new i("actual", "expected");
                _ === void 0 && M(), S(ht, et) || d({
                  actual: ht,
                  expected: et,
                  message: Q,
                  operator: "deepStrictEqual",
                  stackStartFn: vt
                });
              }, m.notDeepStrictEqual = z;
              function z(vt, ht, et) {
                if (arguments.length < 2)
                  throw new i("actual", "expected");
                _ === void 0 && M(), S(vt, ht) && d({
                  actual: vt,
                  expected: ht,
                  message: et,
                  operator: "notDeepStrictEqual",
                  stackStartFn: z
                });
              }
              m.strictEqual = function vt(ht, et, Q) {
                if (arguments.length < 2)
                  throw new i("actual", "expected");
                v(ht, et) || d({
                  actual: ht,
                  expected: et,
                  message: Q,
                  operator: "strictEqual",
                  stackStartFn: vt
                });
              }, m.notStrictEqual = function vt(ht, et, Q) {
                if (arguments.length < 2)
                  throw new i("actual", "expected");
                v(ht, et) && d({
                  actual: ht,
                  expected: et,
                  message: Q,
                  operator: "notStrictEqual",
                  stackStartFn: vt
                });
              };
              var O = /* @__PURE__ */ n(function vt(ht, et, Q) {
                var j = this;
                s(this, vt), et.forEach(function(at) {
                  at in ht && (Q !== void 0 && typeof Q[at] == "string" && x(ht[at]) && f(ht[at], Q[at]) ? j[at] = Q[at] : j[at] = ht[at]);
                });
              });
              function B(vt, ht, et, Q, j, at) {
                if (!(et in vt) || !S(vt[et], ht[et])) {
                  if (!Q) {
                    var ut = new O(vt, j), nt = new O(ht, j, vt), X = new a({
                      actual: ut,
                      expected: nt,
                      operator: "deepStrictEqual",
                      stackStartFn: at
                    });
                    throw X.actual = vt, X.expected = ht, X.operator = at.name, X;
                  }
                  d({
                    actual: vt,
                    expected: ht,
                    message: Q,
                    operator: at.name,
                    stackStartFn: at
                  });
                }
              }
              function V(vt, ht, et, Q) {
                if (typeof ht != "function") {
                  if (x(ht)) return f(ht, vt);
                  if (arguments.length === 2)
                    throw new u("expected", ["Function", "RegExp"], ht);
                  if (P(vt) !== "object" || vt === null) {
                    var j = new a({
                      actual: vt,
                      expected: ht,
                      message: et,
                      operator: "deepStrictEqual",
                      stackStartFn: Q
                    });
                    throw j.operator = Q.name, j;
                  }
                  var at = Object.keys(ht);
                  if (ht instanceof Error)
                    at.push("name", "message");
                  else if (at.length === 0)
                    throw new t("error", ht, "may not be an empty object");
                  return _ === void 0 && M(), at.forEach(function(ut) {
                    typeof vt[ut] == "string" && x(ht[ut]) && f(ht[ut], vt[ut]) || B(vt, ht, ut, et, at, Q);
                  }), !0;
                }
                return ht.prototype !== void 0 && vt instanceof ht ? !0 : Error.isPrototypeOf(ht) ? !1 : ht.call({}, vt) === !0;
              }
              function U(vt) {
                if (typeof vt != "function")
                  throw new u("fn", "Function", vt);
                try {
                  vt();
                } catch (ht) {
                  return ht;
                }
                return L;
              }
              function H(vt) {
                return g(vt) || vt !== null && P(vt) === "object" && typeof vt.then == "function" && typeof vt.catch == "function";
              }
              function F(vt) {
                return Promise.resolve().then(function() {
                  var ht;
                  if (typeof vt == "function") {
                    if (ht = vt(), !H(ht))
                      throw new r("instance of Promise", "promiseFn", ht);
                  } else if (H(vt))
                    ht = vt;
                  else
                    throw new u("promiseFn", ["Function", "Promise"], vt);
                  return Promise.resolve().then(function() {
                    return ht;
                  }).then(function() {
                    return L;
                  }).catch(function(et) {
                    return et;
                  });
                });
              }
              function G(vt, ht, et, Q) {
                if (typeof et == "string") {
                  if (arguments.length === 4)
                    throw new u("error", ["Object", "Error", "Function", "RegExp"], et);
                  if (P(ht) === "object" && ht !== null) {
                    if (ht.message === et)
                      throw new p("error/message", 'The error message "'.concat(ht.message, '" is identical to the message.'));
                  } else if (ht === et)
                    throw new p("error/message", 'The error "'.concat(ht, '" is identical to the message.'));
                  Q = et, et = void 0;
                } else if (et != null && P(et) !== "object" && typeof et != "function")
                  throw new u("error", ["Object", "Error", "Function", "RegExp"], et);
                if (ht === L) {
                  var j = "";
                  et && et.name && (j += " (".concat(et.name, ")")), j += Q ? ": ".concat(Q) : ".";
                  var at = vt.name === "rejects" ? "rejection" : "exception";
                  d({
                    actual: void 0,
                    expected: et,
                    operator: vt.name,
                    message: "Missing expected ".concat(at).concat(j),
                    stackStartFn: vt
                  });
                }
                if (et && !V(ht, et, Q, vt))
                  throw ht;
              }
              function q(vt, ht, et, Q) {
                if (ht !== L) {
                  if (typeof et == "string" && (Q = et, et = void 0), !et || V(ht, et)) {
                    var j = Q ? ": ".concat(Q) : ".", at = vt.name === "doesNotReject" ? "rejection" : "exception";
                    d({
                      actual: ht,
                      expected: et,
                      operator: vt.name,
                      message: "Got unwanted ".concat(at).concat(j, `
`) + 'Actual message: "'.concat(ht && ht.message, '"'),
                      stackStartFn: vt
                    });
                  }
                  throw ht;
                }
              }
              m.throws = function vt(ht) {
                for (var et = arguments.length, Q = new Array(et > 1 ? et - 1 : 0), j = 1; j < et; j++)
                  Q[j - 1] = arguments[j];
                G.apply(void 0, [vt, U(ht)].concat(Q));
              }, m.rejects = function vt(ht) {
                for (var et = arguments.length, Q = new Array(et > 1 ? et - 1 : 0), j = 1; j < et; j++)
                  Q[j - 1] = arguments[j];
                return F(ht).then(function(at) {
                  return G.apply(void 0, [vt, at].concat(Q));
                });
              }, m.doesNotThrow = function vt(ht) {
                for (var et = arguments.length, Q = new Array(et > 1 ? et - 1 : 0), j = 1; j < et; j++)
                  Q[j - 1] = arguments[j];
                q.apply(void 0, [vt, U(ht)].concat(Q));
              }, m.doesNotReject = function vt(ht) {
                for (var et = arguments.length, Q = new Array(et > 1 ? et - 1 : 0), j = 1; j < et; j++)
                  Q[j - 1] = arguments[j];
                return F(ht).then(function(at) {
                  return q.apply(void 0, [vt, at].concat(Q));
                });
              }, m.ifError = function vt(ht) {
                if (ht != null) {
                  var et = "ifError got unwanted exception: ";
                  P(ht) === "object" && typeof ht.message == "string" ? ht.message.length === 0 && ht.constructor ? et += ht.constructor.name : et += ht.message : et += o(ht);
                  var Q = new a({
                    actual: ht,
                    expected: null,
                    operator: "ifError",
                    message: et,
                    stackStartFn: vt
                  }), j = ht.stack;
                  if (typeof j == "string") {
                    var at = j.split(`
`);
                    at.shift();
                    for (var ut = Q.stack.split(`
`), nt = 0; nt < at.length; nt++) {
                      var X = ut.indexOf(at[nt]);
                      if (X !== -1) {
                        ut = ut.slice(0, X);
                        break;
                      }
                    }
                    Q.stack = "".concat(ut.join(`
`), `
`).concat(at.join(`
`));
                  }
                  throw Q;
                }
              };
              function rt(vt, ht, et, Q, j) {
                if (!x(ht))
                  throw new u("regexp", "RegExp", ht);
                var at = j === "match";
                if (typeof vt != "string" || f(ht, vt) !== at) {
                  if (et instanceof Error)
                    throw et;
                  var ut = !et;
                  et = et || (typeof vt != "string" ? 'The "string" argument must be of type string. Received type ' + "".concat(P(vt), " (").concat(o(vt), ")") : (at ? "The input did not match the regular expression " : "The input was expected to not match the regular expression ") + "".concat(o(ht), `. Input:

`).concat(o(vt), `
`));
                  var nt = new a({
                    actual: vt,
                    expected: ht,
                    message: et,
                    operator: j,
                    stackStartFn: Q
                  });
                  throw nt.generatedMessage = ut, nt;
                }
              }
              m.match = function vt(ht, et, Q) {
                rt(ht, et, Q, vt, "match");
              }, m.doesNotMatch = function vt(ht, et, Q) {
                rt(ht, et, Q, vt, "doesNotMatch");
              };
              function st() {
                for (var vt = arguments.length, ht = new Array(vt), et = 0; et < vt; et++)
                  ht[et] = arguments[et];
                E.apply(void 0, [st, ht.length].concat(ht));
              }
              m.strict = c(st, m, {
                equal: m.strictEqual,
                deepEqual: m.deepStrictEqual,
                notEqual: m.notStrictEqual,
                notDeepEqual: m.notDeepStrictEqual
              }), m.strict.strict = m.strict;
            }
          ),
          /***/
          68586: (
            /***/
            function(Y, K, e) {
              var b = e(33282);
              function P(F, G) {
                var q = Object.keys(F);
                if (Object.getOwnPropertySymbols) {
                  var rt = Object.getOwnPropertySymbols(F);
                  G && (rt = rt.filter(function(st) {
                    return Object.getOwnPropertyDescriptor(F, st).enumerable;
                  })), q.push.apply(q, rt);
                }
                return q;
              }
              function n(F) {
                for (var G = 1; G < arguments.length; G++) {
                  var q = arguments[G] != null ? arguments[G] : {};
                  G % 2 ? P(Object(q), !0).forEach(function(rt) {
                    s(F, rt, q[rt]);
                  }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(F, Object.getOwnPropertyDescriptors(q)) : P(Object(q)).forEach(function(rt) {
                    Object.defineProperty(F, rt, Object.getOwnPropertyDescriptor(q, rt));
                  });
                }
                return F;
              }
              function s(F, G, q) {
                return G = u(G), G in F ? Object.defineProperty(F, G, { value: q, enumerable: !0, configurable: !0, writable: !0 }) : F[G] = q, F;
              }
              function T(F, G) {
                if (!(F instanceof G))
                  throw new TypeError("Cannot call a class as a function");
              }
              function A(F, G) {
                for (var q = 0; q < G.length; q++) {
                  var rt = G[q];
                  rt.enumerable = rt.enumerable || !1, rt.configurable = !0, "value" in rt && (rt.writable = !0), Object.defineProperty(F, u(rt.key), rt);
                }
              }
              function p(F, G, q) {
                return G && A(F.prototype, G), Object.defineProperty(F, "prototype", { writable: !1 }), F;
              }
              function u(F) {
                var G = t(F, "string");
                return f(G) === "symbol" ? G : String(G);
              }
              function t(F, G) {
                if (f(F) !== "object" || F === null) return F;
                var q = F[Symbol.toPrimitive];
                if (q !== void 0) {
                  var rt = q.call(F, G || "default");
                  if (f(rt) !== "object") return rt;
                  throw new TypeError("@@toPrimitive must return a primitive value.");
                }
                return (G === "string" ? String : Number)(F);
              }
              function r(F, G) {
                if (typeof G != "function" && G !== null)
                  throw new TypeError("Super expression must either be null or a function");
                F.prototype = Object.create(G && G.prototype, { constructor: { value: F, writable: !0, configurable: !0 } }), Object.defineProperty(F, "prototype", { writable: !1 }), G && c(F, G);
              }
              function i(F) {
                var G = g();
                return function() {
                  var rt = v(F), st;
                  if (G) {
                    var vt = v(this).constructor;
                    st = Reflect.construct(rt, arguments, vt);
                  } else
                    st = rt.apply(this, arguments);
                  return a(this, st);
                };
              }
              function a(F, G) {
                if (G && (f(G) === "object" || typeof G == "function"))
                  return G;
                if (G !== void 0)
                  throw new TypeError("Derived constructors may only return object or undefined");
                return l(F);
              }
              function l(F) {
                if (F === void 0)
                  throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                return F;
              }
              function o(F) {
                var G = typeof Map == "function" ? /* @__PURE__ */ new Map() : void 0;
                return o = function(rt) {
                  if (rt === null || !x(rt)) return rt;
                  if (typeof rt != "function")
                    throw new TypeError("Super expression must either be null or a function");
                  if (typeof G < "u") {
                    if (G.has(rt)) return G.get(rt);
                    G.set(rt, st);
                  }
                  function st() {
                    return y(rt, arguments, v(this).constructor);
                  }
                  return st.prototype = Object.create(rt.prototype, { constructor: { value: st, enumerable: !1, writable: !0, configurable: !0 } }), c(st, rt);
                }, o(F);
              }
              function y(F, G, q) {
                return g() ? y = Reflect.construct.bind() : y = function(st, vt, ht) {
                  var et = [null];
                  et.push.apply(et, vt);
                  var Q = Function.bind.apply(st, et), j = new Q();
                  return ht && c(j, ht.prototype), j;
                }, y.apply(null, arguments);
              }
              function g() {
                if (typeof Reflect > "u" || !Reflect.construct || Reflect.construct.sham) return !1;
                if (typeof Proxy == "function") return !0;
                try {
                  return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
                  })), !0;
                } catch {
                  return !1;
                }
              }
              function x(F) {
                return Function.toString.call(F).indexOf("[native code]") !== -1;
              }
              function c(F, G) {
                return c = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(rt, st) {
                  return rt.__proto__ = st, rt;
                }, c(F, G);
              }
              function v(F) {
                return v = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(q) {
                  return q.__proto__ || Object.getPrototypeOf(q);
                }, v(F);
              }
              function f(F) {
                "@babel/helpers - typeof";
                return f = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(G) {
                  return typeof G;
                } : function(G) {
                  return G && typeof Symbol == "function" && G.constructor === Symbol && G !== Symbol.prototype ? "symbol" : typeof G;
                }, f(F);
              }
              var _ = e(56557), S = _.inspect, M = e(34585), C = M.codes.ERR_INVALID_ARG_TYPE;
              function m(F, G, q) {
                return (q === void 0 || q > F.length) && (q = F.length), F.substring(q - G.length, q) === G;
              }
              function L(F, G) {
                if (G = Math.floor(G), F.length == 0 || G == 0) return "";
                var q = F.length * G;
                for (G = Math.floor(Math.log(G) / Math.log(2)); G; )
                  F += F, G--;
                return F += F.substring(0, q - F.length), F;
              }
              var d = "", h = "", E = "", w = "", z = {
                deepStrictEqual: "Expected values to be strictly deep-equal:",
                strictEqual: "Expected values to be strictly equal:",
                strictEqualObject: 'Expected "actual" to be reference-equal to "expected":',
                deepEqual: "Expected values to be loosely deep-equal:",
                equal: "Expected values to be loosely equal:",
                notDeepStrictEqual: 'Expected "actual" not to be strictly deep-equal to:',
                notStrictEqual: 'Expected "actual" to be strictly unequal to:',
                notStrictEqualObject: 'Expected "actual" not to be reference-equal to "expected":',
                notDeepEqual: 'Expected "actual" not to be loosely deep-equal to:',
                notEqual: 'Expected "actual" to be loosely unequal to:',
                notIdentical: "Values identical but not reference-equal:"
              }, O = 10;
              function B(F) {
                var G = Object.keys(F), q = Object.create(Object.getPrototypeOf(F));
                return G.forEach(function(rt) {
                  q[rt] = F[rt];
                }), Object.defineProperty(q, "message", {
                  value: F.message
                }), q;
              }
              function V(F) {
                return S(F, {
                  compact: !1,
                  customInspect: !1,
                  depth: 1e3,
                  maxArrayLength: 1 / 0,
                  // Assert compares only enumerable properties (with a few exceptions).
                  showHidden: !1,
                  // Having a long line as error is better than wrapping the line for
                  // comparison for now.
                  // TODO(BridgeAR): `breakLength` should be limited as soon as soon as we
                  // have meta information about the inspected properties (i.e., know where
                  // in what line the property starts and ends).
                  breakLength: 1 / 0,
                  // Assert does not detect proxies currently.
                  showProxy: !1,
                  sorted: !0,
                  // Inspect getters as we also check them when comparing entries.
                  getters: !0
                });
              }
              function U(F, G, q) {
                var rt = "", st = "", vt = 0, ht = "", et = !1, Q = V(F), j = Q.split(`
`), at = V(G).split(`
`), ut = 0, nt = "";
                if (q === "strictEqual" && f(F) === "object" && f(G) === "object" && F !== null && G !== null && (q = "strictEqualObject"), j.length === 1 && at.length === 1 && j[0] !== at[0]) {
                  var X = j[0].length + at[0].length;
                  if (X <= O) {
                    if ((f(F) !== "object" || F === null) && (f(G) !== "object" || G === null) && (F !== 0 || G !== 0))
                      return "".concat(z[q], `

`) + "".concat(j[0], " !== ").concat(at[0], `
`);
                  } else if (q !== "strictEqualObject") {
                    var ct = b.stderr && b.stderr.isTTY ? b.stderr.columns : 80;
                    if (X < ct) {
                      for (; j[0][ut] === at[0][ut]; )
                        ut++;
                      ut > 2 && (nt = `
  `.concat(L(" ", ut), "^"), ut = 0);
                    }
                  }
                }
                for (var lt = j[j.length - 1], pt = at[at.length - 1]; lt === pt && (ut++ < 2 ? ht = `
  `.concat(lt).concat(ht) : rt = lt, j.pop(), at.pop(), !(j.length === 0 || at.length === 0)); )
                  lt = j[j.length - 1], pt = at[at.length - 1];
                var wt = Math.max(j.length, at.length);
                if (wt === 0) {
                  var Et = Q.split(`
`);
                  if (Et.length > 30)
                    for (Et[26] = "".concat(d, "...").concat(w); Et.length > 27; )
                      Et.pop();
                  return "".concat(z.notIdentical, `

`).concat(Et.join(`
`), `
`);
                }
                ut > 3 && (ht = `
`.concat(d, "...").concat(w).concat(ht), et = !0), rt !== "" && (ht = `
  `.concat(rt).concat(ht), rt = "");
                var Ct = 0, Gt = z[q] + `
`.concat(h, "+ actual").concat(w, " ").concat(E, "- expected").concat(w), Jt = " ".concat(d, "...").concat(w, " Lines skipped");
                for (ut = 0; ut < wt; ut++) {
                  var Qt = ut - vt;
                  if (j.length < ut + 1)
                    Qt > 1 && ut > 2 && (Qt > 4 ? (st += `
`.concat(d, "...").concat(w), et = !0) : Qt > 3 && (st += `
  `.concat(at[ut - 2]), Ct++), st += `
  `.concat(at[ut - 1]), Ct++), vt = ut, rt += `
`.concat(E, "-").concat(w, " ").concat(at[ut]), Ct++;
                  else if (at.length < ut + 1)
                    Qt > 1 && ut > 2 && (Qt > 4 ? (st += `
`.concat(d, "...").concat(w), et = !0) : Qt > 3 && (st += `
  `.concat(j[ut - 2]), Ct++), st += `
  `.concat(j[ut - 1]), Ct++), vt = ut, st += `
`.concat(h, "+").concat(w, " ").concat(j[ut]), Ct++;
                  else {
                    var Vt = at[ut], zt = j[ut], Rt = zt !== Vt && (!m(zt, ",") || zt.slice(0, -1) !== Vt);
                    Rt && m(Vt, ",") && Vt.slice(0, -1) === zt && (Rt = !1, zt += ","), Rt ? (Qt > 1 && ut > 2 && (Qt > 4 ? (st += `
`.concat(d, "...").concat(w), et = !0) : Qt > 3 && (st += `
  `.concat(j[ut - 2]), Ct++), st += `
  `.concat(j[ut - 1]), Ct++), vt = ut, st += `
`.concat(h, "+").concat(w, " ").concat(zt), rt += `
`.concat(E, "-").concat(w, " ").concat(Vt), Ct += 2) : (st += rt, rt = "", (Qt === 1 || ut === 0) && (st += `
  `.concat(zt), Ct++));
                  }
                  if (Ct > 20 && ut < wt - 2)
                    return "".concat(Gt).concat(Jt, `
`).concat(st, `
`).concat(d, "...").concat(w).concat(rt, `
`) + "".concat(d, "...").concat(w);
                }
                return "".concat(Gt).concat(et ? Jt : "", `
`).concat(st).concat(rt).concat(ht).concat(nt);
              }
              var H = /* @__PURE__ */ function(F, G) {
                r(rt, F);
                var q = i(rt);
                function rt(st) {
                  var vt;
                  if (T(this, rt), f(st) !== "object" || st === null)
                    throw new C("options", "Object", st);
                  var ht = st.message, et = st.operator, Q = st.stackStartFn, j = st.actual, at = st.expected, ut = Error.stackTraceLimit;
                  if (Error.stackTraceLimit = 0, ht != null)
                    vt = q.call(this, String(ht));
                  else if (b.stderr && b.stderr.isTTY && (b.stderr && b.stderr.getColorDepth && b.stderr.getColorDepth() !== 1 ? (d = "\x1B[34m", h = "\x1B[32m", w = "\x1B[39m", E = "\x1B[31m") : (d = "", h = "", w = "", E = "")), f(j) === "object" && j !== null && f(at) === "object" && at !== null && "stack" in j && j instanceof Error && "stack" in at && at instanceof Error && (j = B(j), at = B(at)), et === "deepStrictEqual" || et === "strictEqual")
                    vt = q.call(this, U(j, at, et));
                  else if (et === "notDeepStrictEqual" || et === "notStrictEqual") {
                    var nt = z[et], X = V(j).split(`
`);
                    if (et === "notStrictEqual" && f(j) === "object" && j !== null && (nt = z.notStrictEqualObject), X.length > 30)
                      for (X[26] = "".concat(d, "...").concat(w); X.length > 27; )
                        X.pop();
                    X.length === 1 ? vt = q.call(this, "".concat(nt, " ").concat(X[0])) : vt = q.call(this, "".concat(nt, `

`).concat(X.join(`
`), `
`));
                  } else {
                    var ct = V(j), lt = "", pt = z[et];
                    et === "notDeepEqual" || et === "notEqual" ? (ct = "".concat(z[et], `

`).concat(ct), ct.length > 1024 && (ct = "".concat(ct.slice(0, 1021), "..."))) : (lt = "".concat(V(at)), ct.length > 512 && (ct = "".concat(ct.slice(0, 509), "...")), lt.length > 512 && (lt = "".concat(lt.slice(0, 509), "...")), et === "deepEqual" || et === "equal" ? ct = "".concat(pt, `

`).concat(ct, `

should equal

`) : lt = " ".concat(et, " ").concat(lt)), vt = q.call(this, "".concat(ct).concat(lt));
                  }
                  return Error.stackTraceLimit = ut, vt.generatedMessage = !ht, Object.defineProperty(l(vt), "name", {
                    value: "AssertionError [ERR_ASSERTION]",
                    enumerable: !1,
                    writable: !0,
                    configurable: !0
                  }), vt.code = "ERR_ASSERTION", vt.actual = j, vt.expected = at, vt.operator = et, Error.captureStackTrace && Error.captureStackTrace(l(vt), Q), vt.stack, vt.name = "AssertionError", a(vt);
                }
                return p(rt, [{
                  key: "toString",
                  value: function() {
                    return "".concat(this.name, " [").concat(this.code, "]: ").concat(this.message);
                  }
                }, {
                  key: G,
                  value: function(vt, ht) {
                    return S(this, n(n({}, ht), {}, {
                      customInspect: !1,
                      depth: 0
                    }));
                  }
                }]), rt;
              }(/* @__PURE__ */ o(Error), S.custom);
              Y.exports = H;
            }
          ),
          /***/
          34585: (
            /***/
            function(Y, K, e) {
              function b(v) {
                "@babel/helpers - typeof";
                return b = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(f) {
                  return typeof f;
                } : function(f) {
                  return f && typeof Symbol == "function" && f.constructor === Symbol && f !== Symbol.prototype ? "symbol" : typeof f;
                }, b(v);
              }
              function P(v, f, _) {
                return Object.defineProperty(v, "prototype", { writable: !1 }), v;
              }
              function n(v, f) {
                if (!(v instanceof f))
                  throw new TypeError("Cannot call a class as a function");
              }
              function s(v, f) {
                if (typeof f != "function" && f !== null)
                  throw new TypeError("Super expression must either be null or a function");
                v.prototype = Object.create(f && f.prototype, { constructor: { value: v, writable: !0, configurable: !0 } }), Object.defineProperty(v, "prototype", { writable: !1 }), f && T(v, f);
              }
              function T(v, f) {
                return T = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(S, M) {
                  return S.__proto__ = M, S;
                }, T(v, f);
              }
              function A(v) {
                var f = t();
                return function() {
                  var S = r(v), M;
                  if (f) {
                    var C = r(this).constructor;
                    M = Reflect.construct(S, arguments, C);
                  } else
                    M = S.apply(this, arguments);
                  return p(this, M);
                };
              }
              function p(v, f) {
                if (f && (b(f) === "object" || typeof f == "function"))
                  return f;
                if (f !== void 0)
                  throw new TypeError("Derived constructors may only return object or undefined");
                return u(v);
              }
              function u(v) {
                if (v === void 0)
                  throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                return v;
              }
              function t() {
                if (typeof Reflect > "u" || !Reflect.construct || Reflect.construct.sham) return !1;
                if (typeof Proxy == "function") return !0;
                try {
                  return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
                  })), !0;
                } catch {
                  return !1;
                }
              }
              function r(v) {
                return r = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(_) {
                  return _.__proto__ || Object.getPrototypeOf(_);
                }, r(v);
              }
              var i = {}, a, l;
              function o(v, f, _) {
                _ || (_ = Error);
                function S(C, m, L) {
                  return typeof f == "string" ? f : f(C, m, L);
                }
                var M = /* @__PURE__ */ function(C) {
                  s(L, C);
                  var m = A(L);
                  function L(d, h, E) {
                    var w;
                    return n(this, L), w = m.call(this, S(d, h, E)), w.code = v, w;
                  }
                  return P(L);
                }(_);
                i[v] = M;
              }
              function y(v, f) {
                if (Array.isArray(v)) {
                  var _ = v.length;
                  return v = v.map(function(S) {
                    return String(S);
                  }), _ > 2 ? "one of ".concat(f, " ").concat(v.slice(0, _ - 1).join(", "), ", or ") + v[_ - 1] : _ === 2 ? "one of ".concat(f, " ").concat(v[0], " or ").concat(v[1]) : "of ".concat(f, " ").concat(v[0]);
                } else
                  return "of ".concat(f, " ").concat(String(v));
              }
              function g(v, f, _) {
                return v.substr(0, f.length) === f;
              }
              function x(v, f, _) {
                return (_ === void 0 || _ > v.length) && (_ = v.length), v.substring(_ - f.length, _) === f;
              }
              function c(v, f, _) {
                return typeof _ != "number" && (_ = 0), _ + f.length > v.length ? !1 : v.indexOf(f, _) !== -1;
              }
              o("ERR_AMBIGUOUS_ARGUMENT", 'The "%s" argument is ambiguous. %s', TypeError), o("ERR_INVALID_ARG_TYPE", function(v, f, _) {
                a === void 0 && (a = e(85672)), a(typeof v == "string", "'name' must be a string");
                var S;
                typeof f == "string" && g(f, "not ") ? (S = "must not be", f = f.replace(/^not /, "")) : S = "must be";
                var M;
                if (x(v, " argument"))
                  M = "The ".concat(v, " ").concat(S, " ").concat(y(f, "type"));
                else {
                  var C = c(v, ".") ? "property" : "argument";
                  M = 'The "'.concat(v, '" ').concat(C, " ").concat(S, " ").concat(y(f, "type"));
                }
                return M += ". Received type ".concat(b(_)), M;
              }, TypeError), o("ERR_INVALID_ARG_VALUE", function(v, f) {
                var _ = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "is invalid";
                l === void 0 && (l = e(56557));
                var S = l.inspect(f);
                return S.length > 128 && (S = "".concat(S.slice(0, 128), "...")), "The argument '".concat(v, "' ").concat(_, ". Received ").concat(S);
              }, TypeError), o("ERR_INVALID_RETURN_VALUE", function(v, f, _) {
                var S;
                return _ && _.constructor && _.constructor.name ? S = "instance of ".concat(_.constructor.name) : S = "type ".concat(b(_)), "Expected ".concat(v, ' to be returned from the "').concat(f, '"') + " function but got ".concat(S, ".");
              }, TypeError), o("ERR_MISSING_ARGS", function() {
                for (var v = arguments.length, f = new Array(v), _ = 0; _ < v; _++)
                  f[_] = arguments[_];
                a === void 0 && (a = e(85672)), a(f.length > 0, "At least one arg needs to be specified");
                var S = "The ", M = f.length;
                switch (f = f.map(function(C) {
                  return '"'.concat(C, '"');
                }), M) {
                  case 1:
                    S += "".concat(f[0], " argument");
                    break;
                  case 2:
                    S += "".concat(f[0], " and ").concat(f[1], " arguments");
                    break;
                  default:
                    S += f.slice(0, M - 1).join(", "), S += ", and ".concat(f[M - 1], " arguments");
                    break;
                }
                return "".concat(S, " must be specified");
              }, TypeError), Y.exports.codes = i;
            }
          ),
          /***/
          23879: (
            /***/
            function(Y, K, e) {
              function b(zt, Rt) {
                return A(zt) || T(zt, Rt) || n(zt, Rt) || P();
              }
              function P() {
                throw new TypeError(`Invalid attempt to destructure non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`);
              }
              function n(zt, Rt) {
                if (zt) {
                  if (typeof zt == "string") return s(zt, Rt);
                  var Wt = Object.prototype.toString.call(zt).slice(8, -1);
                  if (Wt === "Object" && zt.constructor && (Wt = zt.constructor.name), Wt === "Map" || Wt === "Set") return Array.from(zt);
                  if (Wt === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(Wt)) return s(zt, Rt);
                }
              }
              function s(zt, Rt) {
                (Rt == null || Rt > zt.length) && (Rt = zt.length);
                for (var Wt = 0, kt = new Array(Rt); Wt < Rt; Wt++) kt[Wt] = zt[Wt];
                return kt;
              }
              function T(zt, Rt) {
                var Wt = zt == null ? null : typeof Symbol < "u" && zt[Symbol.iterator] || zt["@@iterator"];
                if (Wt != null) {
                  var kt, re, ge, _e, ce = [], ae = !0, Se = !1;
                  try {
                    if (ge = (Wt = Wt.call(zt)).next, Rt !== 0) for (; !(ae = (kt = ge.call(Wt)).done) && (ce.push(kt.value), ce.length !== Rt); ae = !0) ;
                  } catch (ze) {
                    Se = !0, re = ze;
                  } finally {
                    try {
                      if (!ae && Wt.return != null && (_e = Wt.return(), Object(_e) !== _e)) return;
                    } finally {
                      if (Se) throw re;
                    }
                  }
                  return ce;
                }
              }
              function A(zt) {
                if (Array.isArray(zt)) return zt;
              }
              function p(zt) {
                "@babel/helpers - typeof";
                return p = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(Rt) {
                  return typeof Rt;
                } : function(Rt) {
                  return Rt && typeof Symbol == "function" && Rt.constructor === Symbol && Rt !== Symbol.prototype ? "symbol" : typeof Rt;
                }, p(zt);
              }
              var u = /a/g.flags !== void 0, t = function(Rt) {
                var Wt = [];
                return Rt.forEach(function(kt) {
                  return Wt.push(kt);
                }), Wt;
              }, r = function(Rt) {
                var Wt = [];
                return Rt.forEach(function(kt, re) {
                  return Wt.push([re, kt]);
                }), Wt;
              }, i = Object.is ? Object.is : e(13969), a = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols : function() {
                return [];
              }, l = Number.isNaN ? Number.isNaN : e(63057);
              function o(zt) {
                return zt.call.bind(zt);
              }
              var y = o(Object.prototype.hasOwnProperty), g = o(Object.prototype.propertyIsEnumerable), x = o(Object.prototype.toString), c = e(56557).types, v = c.isAnyArrayBuffer, f = c.isArrayBufferView, _ = c.isDate, S = c.isMap, M = c.isRegExp, C = c.isSet, m = c.isNativeError, L = c.isBoxedPrimitive, d = c.isNumberObject, h = c.isStringObject, E = c.isBooleanObject, w = c.isBigIntObject, z = c.isSymbolObject, O = c.isFloat32Array, B = c.isFloat64Array;
              function V(zt) {
                if (zt.length === 0 || zt.length > 10) return !0;
                for (var Rt = 0; Rt < zt.length; Rt++) {
                  var Wt = zt.charCodeAt(Rt);
                  if (Wt < 48 || Wt > 57) return !0;
                }
                return zt.length === 10 && zt >= Math.pow(2, 32);
              }
              function U(zt) {
                return Object.keys(zt).filter(V).concat(a(zt).filter(Object.prototype.propertyIsEnumerable.bind(zt)));
              }
              /*!
               * The buffer module from node.js, for the browser.
               *
               * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
               * @license  MIT
               */
              function H(zt, Rt) {
                if (zt === Rt)
                  return 0;
                for (var Wt = zt.length, kt = Rt.length, re = 0, ge = Math.min(Wt, kt); re < ge; ++re)
                  if (zt[re] !== Rt[re]) {
                    Wt = zt[re], kt = Rt[re];
                    break;
                  }
                return Wt < kt ? -1 : kt < Wt ? 1 : 0;
              }
              var F = !0, G = !1, q = 0, rt = 1, st = 2, vt = 3;
              function ht(zt, Rt) {
                return u ? zt.source === Rt.source && zt.flags === Rt.flags : RegExp.prototype.toString.call(zt) === RegExp.prototype.toString.call(Rt);
              }
              function et(zt, Rt) {
                if (zt.byteLength !== Rt.byteLength)
                  return !1;
                for (var Wt = 0; Wt < zt.byteLength; Wt++)
                  if (zt[Wt] !== Rt[Wt])
                    return !1;
                return !0;
              }
              function Q(zt, Rt) {
                return zt.byteLength !== Rt.byteLength ? !1 : H(new Uint8Array(zt.buffer, zt.byteOffset, zt.byteLength), new Uint8Array(Rt.buffer, Rt.byteOffset, Rt.byteLength)) === 0;
              }
              function j(zt, Rt) {
                return zt.byteLength === Rt.byteLength && H(new Uint8Array(zt), new Uint8Array(Rt)) === 0;
              }
              function at(zt, Rt) {
                return d(zt) ? d(Rt) && i(Number.prototype.valueOf.call(zt), Number.prototype.valueOf.call(Rt)) : h(zt) ? h(Rt) && String.prototype.valueOf.call(zt) === String.prototype.valueOf.call(Rt) : E(zt) ? E(Rt) && Boolean.prototype.valueOf.call(zt) === Boolean.prototype.valueOf.call(Rt) : w(zt) ? w(Rt) && BigInt.prototype.valueOf.call(zt) === BigInt.prototype.valueOf.call(Rt) : z(Rt) && Symbol.prototype.valueOf.call(zt) === Symbol.prototype.valueOf.call(Rt);
              }
              function ut(zt, Rt, Wt, kt) {
                if (zt === Rt)
                  return zt !== 0 ? !0 : Wt ? i(zt, Rt) : !0;
                if (Wt) {
                  if (p(zt) !== "object")
                    return typeof zt == "number" && l(zt) && l(Rt);
                  if (p(Rt) !== "object" || zt === null || Rt === null || Object.getPrototypeOf(zt) !== Object.getPrototypeOf(Rt))
                    return !1;
                } else {
                  if (zt === null || p(zt) !== "object")
                    return Rt === null || p(Rt) !== "object" ? zt == Rt : !1;
                  if (Rt === null || p(Rt) !== "object")
                    return !1;
                }
                var re = x(zt), ge = x(Rt);
                if (re !== ge)
                  return !1;
                if (Array.isArray(zt)) {
                  if (zt.length !== Rt.length)
                    return !1;
                  var _e = U(zt), ce = U(Rt);
                  return _e.length !== ce.length ? !1 : X(zt, Rt, Wt, kt, rt, _e);
                }
                if (re === "[object Object]" && (!S(zt) && S(Rt) || !C(zt) && C(Rt)))
                  return !1;
                if (_(zt)) {
                  if (!_(Rt) || Date.prototype.getTime.call(zt) !== Date.prototype.getTime.call(Rt))
                    return !1;
                } else if (M(zt)) {
                  if (!M(Rt) || !ht(zt, Rt))
                    return !1;
                } else if (m(zt) || zt instanceof Error) {
                  if (zt.message !== Rt.message || zt.name !== Rt.name)
                    return !1;
                } else if (f(zt)) {
                  if (!Wt && (O(zt) || B(zt))) {
                    if (!et(zt, Rt))
                      return !1;
                  } else if (!Q(zt, Rt))
                    return !1;
                  var ae = U(zt), Se = U(Rt);
                  return ae.length !== Se.length ? !1 : X(zt, Rt, Wt, kt, q, ae);
                } else {
                  if (C(zt))
                    return !C(Rt) || zt.size !== Rt.size ? !1 : X(zt, Rt, Wt, kt, st);
                  if (S(zt))
                    return !S(Rt) || zt.size !== Rt.size ? !1 : X(zt, Rt, Wt, kt, vt);
                  if (v(zt)) {
                    if (!j(zt, Rt))
                      return !1;
                  } else if (L(zt) && !at(zt, Rt))
                    return !1;
                }
                return X(zt, Rt, Wt, kt, q);
              }
              function nt(zt, Rt) {
                return Rt.filter(function(Wt) {
                  return g(zt, Wt);
                });
              }
              function X(zt, Rt, Wt, kt, re, ge) {
                if (arguments.length === 5) {
                  ge = Object.keys(zt);
                  var _e = Object.keys(Rt);
                  if (ge.length !== _e.length)
                    return !1;
                }
                for (var ce = 0; ce < ge.length; ce++)
                  if (!y(Rt, ge[ce]))
                    return !1;
                if (Wt && arguments.length === 5) {
                  var ae = a(zt);
                  if (ae.length !== 0) {
                    var Se = 0;
                    for (ce = 0; ce < ae.length; ce++) {
                      var ze = ae[ce];
                      if (g(zt, ze)) {
                        if (!g(Rt, ze))
                          return !1;
                        ge.push(ze), Se++;
                      } else if (g(Rt, ze))
                        return !1;
                    }
                    var Ne = a(Rt);
                    if (ae.length !== Ne.length && nt(Rt, Ne).length !== Se)
                      return !1;
                  } else {
                    var Ve = a(Rt);
                    if (Ve.length !== 0 && nt(Rt, Ve).length !== 0)
                      return !1;
                  }
                }
                if (ge.length === 0 && (re === q || re === rt && zt.length === 0 || zt.size === 0))
                  return !0;
                if (kt === void 0)
                  kt = {
                    val1: /* @__PURE__ */ new Map(),
                    val2: /* @__PURE__ */ new Map(),
                    position: 0
                  };
                else {
                  var Oe = kt.val1.get(zt);
                  if (Oe !== void 0) {
                    var ur = kt.val2.get(Rt);
                    if (ur !== void 0)
                      return Oe === ur;
                  }
                  kt.position++;
                }
                kt.val1.set(zt, kt.position), kt.val2.set(Rt, kt.position);
                var ie = Jt(zt, Rt, Wt, ge, kt, re);
                return kt.val1.delete(zt), kt.val2.delete(Rt), ie;
              }
              function ct(zt, Rt, Wt, kt) {
                for (var re = t(zt), ge = 0; ge < re.length; ge++) {
                  var _e = re[ge];
                  if (ut(Rt, _e, Wt, kt))
                    return zt.delete(_e), !0;
                }
                return !1;
              }
              function lt(zt) {
                switch (p(zt)) {
                  case "undefined":
                    return null;
                  case "object":
                    return;
                  case "symbol":
                    return !1;
                  case "string":
                    zt = +zt;
                  case "number":
                    if (l(zt))
                      return !1;
                }
                return !0;
              }
              function pt(zt, Rt, Wt) {
                var kt = lt(Wt);
                return kt ?? (Rt.has(kt) && !zt.has(kt));
              }
              function wt(zt, Rt, Wt, kt, re) {
                var ge = lt(Wt);
                if (ge != null)
                  return ge;
                var _e = Rt.get(ge);
                return _e === void 0 && !Rt.has(ge) || !ut(kt, _e, !1, re) ? !1 : !zt.has(ge) && ut(kt, _e, !1, re);
              }
              function Et(zt, Rt, Wt, kt) {
                for (var re = null, ge = t(zt), _e = 0; _e < ge.length; _e++) {
                  var ce = ge[_e];
                  if (p(ce) === "object" && ce !== null)
                    re === null && (re = /* @__PURE__ */ new Set()), re.add(ce);
                  else if (!Rt.has(ce)) {
                    if (Wt || !pt(zt, Rt, ce))
                      return !1;
                    re === null && (re = /* @__PURE__ */ new Set()), re.add(ce);
                  }
                }
                if (re !== null) {
                  for (var ae = t(Rt), Se = 0; Se < ae.length; Se++) {
                    var ze = ae[Se];
                    if (p(ze) === "object" && ze !== null) {
                      if (!ct(re, ze, Wt, kt)) return !1;
                    } else if (!Wt && !zt.has(ze) && !ct(re, ze, Wt, kt))
                      return !1;
                  }
                  return re.size === 0;
                }
                return !0;
              }
              function Ct(zt, Rt, Wt, kt, re, ge) {
                for (var _e = t(zt), ce = 0; ce < _e.length; ce++) {
                  var ae = _e[ce];
                  if (ut(Wt, ae, re, ge) && ut(kt, Rt.get(ae), re, ge))
                    return zt.delete(ae), !0;
                }
                return !1;
              }
              function Gt(zt, Rt, Wt, kt) {
                for (var re = null, ge = r(zt), _e = 0; _e < ge.length; _e++) {
                  var ce = b(ge[_e], 2), ae = ce[0], Se = ce[1];
                  if (p(ae) === "object" && ae !== null)
                    re === null && (re = /* @__PURE__ */ new Set()), re.add(ae);
                  else {
                    var ze = Rt.get(ae);
                    if (ze === void 0 && !Rt.has(ae) || !ut(Se, ze, Wt, kt)) {
                      if (Wt || !wt(zt, Rt, ae, Se, kt)) return !1;
                      re === null && (re = /* @__PURE__ */ new Set()), re.add(ae);
                    }
                  }
                }
                if (re !== null) {
                  for (var Ne = r(Rt), Ve = 0; Ve < Ne.length; Ve++) {
                    var Oe = b(Ne[Ve], 2), ur = Oe[0], ie = Oe[1];
                    if (p(ur) === "object" && ur !== null) {
                      if (!Ct(re, zt, ur, ie, Wt, kt)) return !1;
                    } else if (!Wt && (!zt.has(ur) || !ut(zt.get(ur), ie, !1, kt)) && !Ct(re, zt, ur, ie, !1, kt))
                      return !1;
                  }
                  return re.size === 0;
                }
                return !0;
              }
              function Jt(zt, Rt, Wt, kt, re, ge) {
                var _e = 0;
                if (ge === st) {
                  if (!Et(zt, Rt, Wt, re))
                    return !1;
                } else if (ge === vt) {
                  if (!Gt(zt, Rt, Wt, re))
                    return !1;
                } else if (ge === rt)
                  for (; _e < zt.length; _e++)
                    if (y(zt, _e)) {
                      if (!y(Rt, _e) || !ut(zt[_e], Rt[_e], Wt, re))
                        return !1;
                    } else {
                      if (y(Rt, _e))
                        return !1;
                      for (var ce = Object.keys(zt); _e < ce.length; _e++) {
                        var ae = ce[_e];
                        if (!y(Rt, ae) || !ut(zt[ae], Rt[ae], Wt, re))
                          return !1;
                      }
                      return ce.length === Object.keys(Rt).length;
                    }
                for (_e = 0; _e < kt.length; _e++) {
                  var Se = kt[_e];
                  if (!ut(zt[Se], Rt[Se], Wt, re))
                    return !1;
                }
                return !0;
              }
              function Qt(zt, Rt) {
                return ut(zt, Rt, G);
              }
              function Vt(zt, Rt) {
                return ut(zt, Rt, F);
              }
              Y.exports = {
                isDeepEqual: Qt,
                isDeepStrictEqual: Vt
              };
            }
          ),
          /***/
          93229: (
            /***/
            function(Y, K, e) {
              e.r(K), e.d(K, {
                /* harmony export */
                decode: function() {
                  return (
                    /* binding */
                    T
                  );
                },
                /* harmony export */
                encode: function() {
                  return (
                    /* binding */
                    s
                  );
                }
                /* harmony export */
              });
              for (var b = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", P = typeof Uint8Array > "u" ? [] : new Uint8Array(256), n = 0; n < b.length; n++)
                P[b.charCodeAt(n)] = n;
              var s = function(A) {
                var p = new Uint8Array(A), u, t = p.length, r = "";
                for (u = 0; u < t; u += 3)
                  r += b[p[u] >> 2], r += b[(p[u] & 3) << 4 | p[u + 1] >> 4], r += b[(p[u + 1] & 15) << 2 | p[u + 2] >> 6], r += b[p[u + 2] & 63];
                return t % 3 === 2 ? r = r.substring(0, r.length - 1) + "=" : t % 3 === 1 && (r = r.substring(0, r.length - 2) + "=="), r;
              }, T = function(A) {
                var p = A.length * 0.75, u = A.length, t, r = 0, i, a, l, o;
                A[A.length - 1] === "=" && (p--, A[A.length - 2] === "=" && p--);
                var y = new ArrayBuffer(p), g = new Uint8Array(y);
                for (t = 0; t < u; t += 4)
                  i = P[A.charCodeAt(t)], a = P[A.charCodeAt(t + 1)], l = P[A.charCodeAt(t + 2)], o = P[A.charCodeAt(t + 3)], g[r++] = i << 2 | a >> 4, g[r++] = (a & 15) << 4 | l >> 2, g[r++] = (l & 3) << 6 | o & 63;
                return y;
              };
            }
          ),
          /***/
          76226: (
            /***/
            function(Y, K) {
              K.byteLength = p, K.toByteArray = t, K.fromByteArray = a;
              for (var e = [], b = [], P = typeof Uint8Array < "u" ? Uint8Array : Array, n = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", s = 0, T = n.length; s < T; ++s)
                e[s] = n[s], b[n.charCodeAt(s)] = s;
              b[45] = 62, b[95] = 63;
              function A(l) {
                var o = l.length;
                if (o % 4 > 0)
                  throw new Error("Invalid string. Length must be a multiple of 4");
                var y = l.indexOf("=");
                y === -1 && (y = o);
                var g = y === o ? 0 : 4 - y % 4;
                return [y, g];
              }
              function p(l) {
                var o = A(l), y = o[0], g = o[1];
                return (y + g) * 3 / 4 - g;
              }
              function u(l, o, y) {
                return (o + y) * 3 / 4 - y;
              }
              function t(l) {
                var o, y = A(l), g = y[0], x = y[1], c = new P(u(l, g, x)), v = 0, f = x > 0 ? g - 4 : g, _;
                for (_ = 0; _ < f; _ += 4)
                  o = b[l.charCodeAt(_)] << 18 | b[l.charCodeAt(_ + 1)] << 12 | b[l.charCodeAt(_ + 2)] << 6 | b[l.charCodeAt(_ + 3)], c[v++] = o >> 16 & 255, c[v++] = o >> 8 & 255, c[v++] = o & 255;
                return x === 2 && (o = b[l.charCodeAt(_)] << 2 | b[l.charCodeAt(_ + 1)] >> 4, c[v++] = o & 255), x === 1 && (o = b[l.charCodeAt(_)] << 10 | b[l.charCodeAt(_ + 1)] << 4 | b[l.charCodeAt(_ + 2)] >> 2, c[v++] = o >> 8 & 255, c[v++] = o & 255), c;
              }
              function r(l) {
                return e[l >> 18 & 63] + e[l >> 12 & 63] + e[l >> 6 & 63] + e[l & 63];
              }
              function i(l, o, y) {
                for (var g, x = [], c = o; c < y; c += 3)
                  g = (l[c] << 16 & 16711680) + (l[c + 1] << 8 & 65280) + (l[c + 2] & 255), x.push(r(g));
                return x.join("");
              }
              function a(l) {
                for (var o, y = l.length, g = y % 3, x = [], c = 16383, v = 0, f = y - g; v < f; v += c)
                  x.push(i(
                    l,
                    v,
                    v + c > f ? f : v + c
                  ));
                return g === 1 ? (o = l[y - 1], x.push(
                  e[o >> 2] + e[o << 4 & 63] + "=="
                )) : g === 2 && (o = (l[y - 2] << 8) + l[y - 1], x.push(
                  e[o >> 10] + e[o >> 4 & 63] + e[o << 2 & 63] + "="
                )), x.join("");
              }
            }
          ),
          /***/
          31625: (
            /***/
            function(Y) {
              function K(T, A, p, u, t) {
                for (var r = t + 1; u <= t; ) {
                  var i = u + t >>> 1, a = T[i], l = p !== void 0 ? p(a, A) : a - A;
                  l >= 0 ? (r = i, t = i - 1) : u = i + 1;
                }
                return r;
              }
              function e(T, A, p, u, t) {
                for (var r = t + 1; u <= t; ) {
                  var i = u + t >>> 1, a = T[i], l = p !== void 0 ? p(a, A) : a - A;
                  l > 0 ? (r = i, t = i - 1) : u = i + 1;
                }
                return r;
              }
              function b(T, A, p, u, t) {
                for (var r = u - 1; u <= t; ) {
                  var i = u + t >>> 1, a = T[i], l = p !== void 0 ? p(a, A) : a - A;
                  l < 0 ? (r = i, u = i + 1) : t = i - 1;
                }
                return r;
              }
              function P(T, A, p, u, t) {
                for (var r = u - 1; u <= t; ) {
                  var i = u + t >>> 1, a = T[i], l = p !== void 0 ? p(a, A) : a - A;
                  l <= 0 ? (r = i, u = i + 1) : t = i - 1;
                }
                return r;
              }
              function n(T, A, p, u, t) {
                for (; u <= t; ) {
                  var r = u + t >>> 1, i = T[r], a = p !== void 0 ? p(i, A) : i - A;
                  if (a === 0)
                    return r;
                  a <= 0 ? u = r + 1 : t = r - 1;
                }
                return -1;
              }
              function s(T, A, p, u, t, r) {
                return typeof p == "function" ? r(T, A, p, u === void 0 ? 0 : u | 0, t === void 0 ? T.length - 1 : t | 0) : r(T, A, void 0, p === void 0 ? 0 : p | 0, u === void 0 ? T.length - 1 : u | 0);
              }
              Y.exports = {
                ge: function(T, A, p, u, t) {
                  return s(T, A, p, u, t, K);
                },
                gt: function(T, A, p, u, t) {
                  return s(T, A, p, u, t, e);
                },
                lt: function(T, A, p, u, t) {
                  return s(T, A, p, u, t, b);
                },
                le: function(T, A, p, u, t) {
                  return s(T, A, p, u, t, P);
                },
                eq: function(T, A, p, u, t) {
                  return s(T, A, p, u, t, n);
                }
              };
            }
          ),
          /***/
          54689: (
            /***/
            function(Y, K) {
              "use restrict";
              var e = 32;
              K.INT_BITS = e, K.INT_MAX = 2147483647, K.INT_MIN = -1 << e - 1, K.sign = function(n) {
                return (n > 0) - (n < 0);
              }, K.abs = function(n) {
                var s = n >> e - 1;
                return (n ^ s) - s;
              }, K.min = function(n, s) {
                return s ^ (n ^ s) & -(n < s);
              }, K.max = function(n, s) {
                return n ^ (n ^ s) & -(n < s);
              }, K.isPow2 = function(n) {
                return !(n & n - 1) && !!n;
              }, K.log2 = function(n) {
                var s, T;
                return s = (n > 65535) << 4, n >>>= s, T = (n > 255) << 3, n >>>= T, s |= T, T = (n > 15) << 2, n >>>= T, s |= T, T = (n > 3) << 1, n >>>= T, s |= T, s | n >> 1;
              }, K.log10 = function(n) {
                return n >= 1e9 ? 9 : n >= 1e8 ? 8 : n >= 1e7 ? 7 : n >= 1e6 ? 6 : n >= 1e5 ? 5 : n >= 1e4 ? 4 : n >= 1e3 ? 3 : n >= 100 ? 2 : n >= 10 ? 1 : 0;
              }, K.popCount = function(n) {
                return n = n - (n >>> 1 & 1431655765), n = (n & 858993459) + (n >>> 2 & 858993459), (n + (n >>> 4) & 252645135) * 16843009 >>> 24;
              };
              function b(n) {
                var s = 32;
                return n &= -n, n && s--, n & 65535 && (s -= 16), n & 16711935 && (s -= 8), n & 252645135 && (s -= 4), n & 858993459 && (s -= 2), n & 1431655765 && (s -= 1), s;
              }
              K.countTrailingZeros = b, K.nextPow2 = function(n) {
                return n += n === 0, --n, n |= n >>> 1, n |= n >>> 2, n |= n >>> 4, n |= n >>> 8, n |= n >>> 16, n + 1;
              }, K.prevPow2 = function(n) {
                return n |= n >>> 1, n |= n >>> 2, n |= n >>> 4, n |= n >>> 8, n |= n >>> 16, n - (n >>> 1);
              }, K.parity = function(n) {
                return n ^= n >>> 16, n ^= n >>> 8, n ^= n >>> 4, n &= 15, 27030 >>> n & 1;
              };
              var P = new Array(256);
              (function(n) {
                for (var s = 0; s < 256; ++s) {
                  var T = s, A = s, p = 7;
                  for (T >>>= 1; T; T >>>= 1)
                    A <<= 1, A |= T & 1, --p;
                  n[s] = A << p & 255;
                }
              })(P), K.reverse = function(n) {
                return P[n & 255] << 24 | P[n >>> 8 & 255] << 16 | P[n >>> 16 & 255] << 8 | P[n >>> 24 & 255];
              }, K.interleave2 = function(n, s) {
                return n &= 65535, n = (n | n << 8) & 16711935, n = (n | n << 4) & 252645135, n = (n | n << 2) & 858993459, n = (n | n << 1) & 1431655765, s &= 65535, s = (s | s << 8) & 16711935, s = (s | s << 4) & 252645135, s = (s | s << 2) & 858993459, s = (s | s << 1) & 1431655765, n | s << 1;
              }, K.deinterleave2 = function(n, s) {
                return n = n >>> s & 1431655765, n = (n | n >>> 1) & 858993459, n = (n | n >>> 2) & 252645135, n = (n | n >>> 4) & 16711935, n = (n | n >>> 16) & 65535, n << 16 >> 16;
              }, K.interleave3 = function(n, s, T) {
                return n &= 1023, n = (n | n << 16) & 4278190335, n = (n | n << 8) & 251719695, n = (n | n << 4) & 3272356035, n = (n | n << 2) & 1227133513, s &= 1023, s = (s | s << 16) & 4278190335, s = (s | s << 8) & 251719695, s = (s | s << 4) & 3272356035, s = (s | s << 2) & 1227133513, n |= s << 1, T &= 1023, T = (T | T << 16) & 4278190335, T = (T | T << 8) & 251719695, T = (T | T << 4) & 3272356035, T = (T | T << 2) & 1227133513, n | T << 2;
              }, K.deinterleave3 = function(n, s) {
                return n = n >>> s & 1227133513, n = (n | n >>> 2) & 3272356035, n = (n | n >>> 4) & 251719695, n = (n | n >>> 8) & 4278190335, n = (n | n >>> 16) & 1023, n << 22 >> 22;
              }, K.nextCombination = function(n) {
                var s = n | n - 1;
                return s + 1 | (~s & -~s) - 1 >>> b(n) + 1;
              };
            }
          ),
          /***/
          88772: (
            /***/
            function(Y, K, e) {
              var b = e(75144);
              Y.exports = n;
              var P = 1e20;
              function n(A, p) {
                p || (p = {});
                var u = p.cutoff == null ? 0.25 : p.cutoff, t = p.radius == null ? 8 : p.radius, r = p.channel || 0, i, a, l, o, y, g, x, c, v, f, _;
                if (ArrayBuffer.isView(A) || Array.isArray(A)) {
                  if (!p.width || !p.height) throw Error("For raw data width and height should be provided by options");
                  i = p.width, a = p.height, o = A, p.stride ? g = p.stride : g = Math.floor(A.length / i / a);
                } else
                  window.HTMLCanvasElement && A instanceof window.HTMLCanvasElement ? (c = A, x = c.getContext("2d"), i = c.width, a = c.height, v = x.getImageData(0, 0, i, a), o = v.data, g = 4) : window.CanvasRenderingContext2D && A instanceof window.CanvasRenderingContext2D ? (c = A.canvas, x = A, i = c.width, a = c.height, v = x.getImageData(0, 0, i, a), o = v.data, g = 4) : window.ImageData && A instanceof window.ImageData && (v = A, i = A.width, a = A.height, o = v.data, g = 4);
                if (l = Math.max(i, a), window.Uint8ClampedArray && o instanceof window.Uint8ClampedArray || window.Uint8Array && o instanceof window.Uint8Array)
                  for (y = o, o = Array(i * a), f = 0, _ = y.length; f < _; f++)
                    o[f] = y[f * g + r] / 255;
                else if (g !== 1) throw Error("Raw data can have only 1 value per pixel");
                var S = Array(i * a), M = Array(i * a), C = Array(l), m = Array(l), L = Array(l + 1), d = Array(l);
                for (f = 0, _ = i * a; f < _; f++) {
                  var h = o[f];
                  S[f] = h === 1 ? 0 : h === 0 ? P : Math.pow(Math.max(0, 0.5 - h), 2), M[f] = h === 1 ? P : h === 0 ? 0 : Math.pow(Math.max(0, h - 0.5), 2);
                }
                s(S, i, a, C, m, d, L), s(M, i, a, C, m, d, L);
                var E = window.Float32Array ? new Float32Array(i * a) : new Array(i * a);
                for (f = 0, _ = i * a; f < _; f++)
                  E[f] = b(1 - ((S[f] - M[f]) / t + u), 0, 1);
                return E;
              }
              function s(A, p, u, t, r, i, a) {
                for (var l = 0; l < p; l++) {
                  for (var o = 0; o < u; o++)
                    t[o] = A[o * p + l];
                  for (T(t, r, i, a, u), o = 0; o < u; o++)
                    A[o * p + l] = r[o];
                }
                for (o = 0; o < u; o++) {
                  for (l = 0; l < p; l++)
                    t[l] = A[o * p + l];
                  for (T(t, r, i, a, p), l = 0; l < p; l++)
                    A[o * p + l] = Math.sqrt(r[l]);
                }
              }
              function T(A, p, u, t, r) {
                u[0] = 0, t[0] = -P, t[1] = +P;
                for (var i = 1, a = 0; i < r; i++) {
                  for (var l = (A[i] + i * i - (A[u[a]] + u[a] * u[a])) / (2 * i - 2 * u[a]); l <= t[a]; )
                    a--, l = (A[i] + i * i - (A[u[a]] + u[a] * u[a])) / (2 * i - 2 * u[a]);
                  a++, u[a] = i, t[a] = l, t[a + 1] = +P;
                }
                for (i = 0, a = 0; i < r; i++) {
                  for (; t[a + 1] < i; ) a++;
                  p[i] = (i - u[a]) * (i - u[a]) + A[u[a]];
                }
              }
            }
          ),
          /***/
          63063: (
            /***/
            function(Y, K, e) {
              var b = e(71129), P = e(87227), n = P(b("String.prototype.indexOf"));
              Y.exports = function(T, A) {
                var p = b(T, !!A);
                return typeof p == "function" && n(T, ".prototype.") > -1 ? P(p) : p;
              };
            }
          ),
          /***/
          87227: (
            /***/
            function(Y, K, e) {
              var b = e(87547), P = e(71129), n = e(73285), s = e(48631), T = P("%Function.prototype.apply%"), A = P("%Function.prototype.call%"), p = P("%Reflect.apply%", !0) || b.call(A, T), u = e(40891), t = P("%Math.max%");
              Y.exports = function(a) {
                if (typeof a != "function")
                  throw new s("a function is required");
                var l = p(b, A, arguments);
                return n(
                  l,
                  1 + t(0, a.length - (arguments.length - 1)),
                  !0
                );
              };
              var r = function() {
                return p(b, T, arguments);
              };
              u ? u(Y.exports, "apply", { value: r }) : Y.exports.apply = r;
            }
          ),
          /***/
          75144: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e, b, P) {
                return b < P ? e < b ? b : e > P ? P : e : e < P ? P : e > b ? b : e;
              }
            }
          ),
          /***/
          46762: (
            /***/
            function(Y, K, e) {
              var b = e(75144);
              Y.exports = P, Y.exports.to = P, Y.exports.from = n;
              function P(s, T) {
                T == null && (T = !0);
                var A = s[0], p = s[1], u = s[2], t = s[3];
                t == null && (t = T ? 1 : 255), T && (A *= 255, p *= 255, u *= 255, t *= 255), A = b(A, 0, 255) & 255, p = b(p, 0, 255) & 255, u = b(u, 0, 255) & 255, t = b(t, 0, 255) & 255;
                var r = A * 16777216 + (p << 16) + (u << 8) + t;
                return r;
              }
              function n(s, T) {
                s = +s;
                var A = s >>> 24, p = (s & 16711680) >>> 16, u = (s & 65280) >>> 8, t = s & 255;
                return T === !1 ? [A, p, u, t] : [A / 255, p / 255, u / 255, t / 255];
              }
            }
          ),
          /***/
          86040: (
            /***/
            function(Y) {
              Y.exports = {
                aliceblue: [240, 248, 255],
                antiquewhite: [250, 235, 215],
                aqua: [0, 255, 255],
                aquamarine: [127, 255, 212],
                azure: [240, 255, 255],
                beige: [245, 245, 220],
                bisque: [255, 228, 196],
                black: [0, 0, 0],
                blanchedalmond: [255, 235, 205],
                blue: [0, 0, 255],
                blueviolet: [138, 43, 226],
                brown: [165, 42, 42],
                burlywood: [222, 184, 135],
                cadetblue: [95, 158, 160],
                chartreuse: [127, 255, 0],
                chocolate: [210, 105, 30],
                coral: [255, 127, 80],
                cornflowerblue: [100, 149, 237],
                cornsilk: [255, 248, 220],
                crimson: [220, 20, 60],
                cyan: [0, 255, 255],
                darkblue: [0, 0, 139],
                darkcyan: [0, 139, 139],
                darkgoldenrod: [184, 134, 11],
                darkgray: [169, 169, 169],
                darkgreen: [0, 100, 0],
                darkgrey: [169, 169, 169],
                darkkhaki: [189, 183, 107],
                darkmagenta: [139, 0, 139],
                darkolivegreen: [85, 107, 47],
                darkorange: [255, 140, 0],
                darkorchid: [153, 50, 204],
                darkred: [139, 0, 0],
                darksalmon: [233, 150, 122],
                darkseagreen: [143, 188, 143],
                darkslateblue: [72, 61, 139],
                darkslategray: [47, 79, 79],
                darkslategrey: [47, 79, 79],
                darkturquoise: [0, 206, 209],
                darkviolet: [148, 0, 211],
                deeppink: [255, 20, 147],
                deepskyblue: [0, 191, 255],
                dimgray: [105, 105, 105],
                dimgrey: [105, 105, 105],
                dodgerblue: [30, 144, 255],
                firebrick: [178, 34, 34],
                floralwhite: [255, 250, 240],
                forestgreen: [34, 139, 34],
                fuchsia: [255, 0, 255],
                gainsboro: [220, 220, 220],
                ghostwhite: [248, 248, 255],
                gold: [255, 215, 0],
                goldenrod: [218, 165, 32],
                gray: [128, 128, 128],
                green: [0, 128, 0],
                greenyellow: [173, 255, 47],
                grey: [128, 128, 128],
                honeydew: [240, 255, 240],
                hotpink: [255, 105, 180],
                indianred: [205, 92, 92],
                indigo: [75, 0, 130],
                ivory: [255, 255, 240],
                khaki: [240, 230, 140],
                lavender: [230, 230, 250],
                lavenderblush: [255, 240, 245],
                lawngreen: [124, 252, 0],
                lemonchiffon: [255, 250, 205],
                lightblue: [173, 216, 230],
                lightcoral: [240, 128, 128],
                lightcyan: [224, 255, 255],
                lightgoldenrodyellow: [250, 250, 210],
                lightgray: [211, 211, 211],
                lightgreen: [144, 238, 144],
                lightgrey: [211, 211, 211],
                lightpink: [255, 182, 193],
                lightsalmon: [255, 160, 122],
                lightseagreen: [32, 178, 170],
                lightskyblue: [135, 206, 250],
                lightslategray: [119, 136, 153],
                lightslategrey: [119, 136, 153],
                lightsteelblue: [176, 196, 222],
                lightyellow: [255, 255, 224],
                lime: [0, 255, 0],
                limegreen: [50, 205, 50],
                linen: [250, 240, 230],
                magenta: [255, 0, 255],
                maroon: [128, 0, 0],
                mediumaquamarine: [102, 205, 170],
                mediumblue: [0, 0, 205],
                mediumorchid: [186, 85, 211],
                mediumpurple: [147, 112, 219],
                mediumseagreen: [60, 179, 113],
                mediumslateblue: [123, 104, 238],
                mediumspringgreen: [0, 250, 154],
                mediumturquoise: [72, 209, 204],
                mediumvioletred: [199, 21, 133],
                midnightblue: [25, 25, 112],
                mintcream: [245, 255, 250],
                mistyrose: [255, 228, 225],
                moccasin: [255, 228, 181],
                navajowhite: [255, 222, 173],
                navy: [0, 0, 128],
                oldlace: [253, 245, 230],
                olive: [128, 128, 0],
                olivedrab: [107, 142, 35],
                orange: [255, 165, 0],
                orangered: [255, 69, 0],
                orchid: [218, 112, 214],
                palegoldenrod: [238, 232, 170],
                palegreen: [152, 251, 152],
                paleturquoise: [175, 238, 238],
                palevioletred: [219, 112, 147],
                papayawhip: [255, 239, 213],
                peachpuff: [255, 218, 185],
                peru: [205, 133, 63],
                pink: [255, 192, 203],
                plum: [221, 160, 221],
                powderblue: [176, 224, 230],
                purple: [128, 0, 128],
                rebeccapurple: [102, 51, 153],
                red: [255, 0, 0],
                rosybrown: [188, 143, 143],
                royalblue: [65, 105, 225],
                saddlebrown: [139, 69, 19],
                salmon: [250, 128, 114],
                sandybrown: [244, 164, 96],
                seagreen: [46, 139, 87],
                seashell: [255, 245, 238],
                sienna: [160, 82, 45],
                silver: [192, 192, 192],
                skyblue: [135, 206, 235],
                slateblue: [106, 90, 205],
                slategray: [112, 128, 144],
                slategrey: [112, 128, 144],
                snow: [255, 250, 250],
                springgreen: [0, 255, 127],
                steelblue: [70, 130, 180],
                tan: [210, 180, 140],
                teal: [0, 128, 128],
                thistle: [216, 191, 216],
                tomato: [255, 99, 71],
                turquoise: [64, 224, 208],
                violet: [238, 130, 238],
                wheat: [245, 222, 179],
                white: [255, 255, 255],
                whitesmoke: [245, 245, 245],
                yellow: [255, 255, 0],
                yellowgreen: [154, 205, 50]
              };
            }
          ),
          /***/
          162: (
            /***/
            function(Y, K, e) {
              var b = e(16401), P = e(75144), n = e(10275);
              Y.exports = function(A, p) {
                (p === "float" || !p) && (p = "array"), p === "uint" && (p = "uint8"), p === "uint_clamped" && (p = "uint8_clamped");
                var u = n(p), t = new u(4), r = p !== "uint8" && p !== "uint8_clamped";
                return (!A.length || typeof A == "string") && (A = b(A), A[0] /= 255, A[1] /= 255, A[2] /= 255), s(A) ? (t[0] = A[0], t[1] = A[1], t[2] = A[2], t[3] = A[3] != null ? A[3] : 255, r && (t[0] /= 255, t[1] /= 255, t[2] /= 255, t[3] /= 255), t) : (r ? (t[0] = A[0], t[1] = A[1], t[2] = A[2], t[3] = A[3] != null ? A[3] : 1) : (t[0] = P(Math.floor(A[0] * 255), 0, 255), t[1] = P(Math.floor(A[1] * 255), 0, 255), t[2] = P(Math.floor(A[2] * 255), 0, 255), t[3] = A[3] == null ? 255 : P(Math.floor(A[3] * 255), 0, 255)), t);
              };
              function s(T) {
                return !!(T instanceof Uint8Array || T instanceof Uint8ClampedArray || Array.isArray(T) && (T[0] > 1 || T[0] === 0) && (T[1] > 1 || T[1] === 0) && (T[2] > 1 || T[2] === 0) && (!T[3] || T[3] > 1));
              }
            }
          ),
          /***/
          16401: (
            /***/
            function(Y, K, e) {
              var b = e(10826), P = e(52132), n = e(75144);
              Y.exports = function(T) {
                var A, p = b(T);
                return p.space ? (A = Array(3), A[0] = n(p.values[0], 0, 255), A[1] = n(p.values[1], 0, 255), A[2] = n(p.values[2], 0, 255), p.space[0] === "h" && (A = P.rgb(A)), A.push(n(p.alpha, 0, 1)), A) : [];
              };
            }
          ),
          /***/
          10826: (
            /***/
            function(Y, K, e) {
              var b = e(86040);
              Y.exports = n;
              var P = {
                red: 0,
                orange: 60,
                yellow: 120,
                green: 180,
                blue: 240,
                purple: 300
              };
              function n(s) {
                var T, A = [], p = 1, u;
                if (typeof s == "string")
                  if (s = s.toLowerCase(), b[s])
                    A = b[s].slice(), u = "rgb";
                  else if (s === "transparent")
                    p = 0, u = "rgb", A = [0, 0, 0];
                  else if (/^#[A-Fa-f0-9]+$/.test(s)) {
                    var t = s.slice(1), r = t.length, i = r <= 4;
                    p = 1, i ? (A = [
                      parseInt(t[0] + t[0], 16),
                      parseInt(t[1] + t[1], 16),
                      parseInt(t[2] + t[2], 16)
                    ], r === 4 && (p = parseInt(t[3] + t[3], 16) / 255)) : (A = [
                      parseInt(t[0] + t[1], 16),
                      parseInt(t[2] + t[3], 16),
                      parseInt(t[4] + t[5], 16)
                    ], r === 8 && (p = parseInt(t[6] + t[7], 16) / 255)), A[0] || (A[0] = 0), A[1] || (A[1] = 0), A[2] || (A[2] = 0), u = "rgb";
                  } else if (T = /^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\s*\(([^\)]*)\)/.exec(s)) {
                    var a = T[1], l = a === "rgb", t = a.replace(/a$/, "");
                    u = t;
                    var r = t === "cmyk" ? 4 : t === "gray" ? 1 : 3;
                    A = T[2].trim().split(/\s*[,\/]\s*|\s+/).map(function(g, x) {
                      if (/%$/.test(g))
                        return x === r ? parseFloat(g) / 100 : t === "rgb" ? parseFloat(g) * 255 / 100 : parseFloat(g);
                      if (t[x] === "h") {
                        if (/deg$/.test(g))
                          return parseFloat(g);
                        if (P[g] !== void 0)
                          return P[g];
                      }
                      return parseFloat(g);
                    }), a === t && A.push(1), p = l || A[r] === void 0 ? 1 : A[r], A = A.slice(0, r);
                  } else s.length > 10 && /[0-9](?:\s|\/)/.test(s) && (A = s.match(/([0-9]+)/g).map(function(o) {
                    return parseFloat(o);
                  }), u = s.match(/([a-z])/ig).join("").toLowerCase());
                else isNaN(s) ? Array.isArray(s) || s.length ? (A = [s[0], s[1], s[2]], u = "rgb", p = s.length === 4 ? s[3] : 1) : s instanceof Object && (s.r != null || s.red != null || s.R != null ? (u = "rgb", A = [
                  s.r || s.red || s.R || 0,
                  s.g || s.green || s.G || 0,
                  s.b || s.blue || s.B || 0
                ]) : (u = "hsl", A = [
                  s.h || s.hue || s.H || 0,
                  s.s || s.saturation || s.S || 0,
                  s.l || s.lightness || s.L || s.b || s.brightness
                ]), p = s.a || s.alpha || s.opacity || 1, s.opacity != null && (p /= 100)) : (u = "rgb", A = [s >>> 16, (s & 65280) >>> 8, s & 255]);
                return {
                  space: u,
                  values: A,
                  alpha: p
                };
              }
            }
          ),
          /***/
          52132: (
            /***/
            function(Y, K, e) {
              var b = e(10520);
              Y.exports = {
                name: "hsl",
                min: [0, 0, 0],
                max: [360, 100, 100],
                channel: ["hue", "saturation", "lightness"],
                alias: ["HSL"],
                rgb: function(P) {
                  var n = P[0] / 360, s = P[1] / 100, T = P[2] / 100, A, p, u, t, r;
                  if (s === 0)
                    return r = T * 255, [r, r, r];
                  T < 0.5 ? p = T * (1 + s) : p = T + s - T * s, A = 2 * T - p, t = [0, 0, 0];
                  for (var i = 0; i < 3; i++)
                    u = n + 0.3333333333333333 * -(i - 1), u < 0 ? u++ : u > 1 && u--, 6 * u < 1 ? r = A + (p - A) * 6 * u : 2 * u < 1 ? r = p : 3 * u < 2 ? r = A + (p - A) * (0.6666666666666666 - u) * 6 : r = A, t[i] = r * 255;
                  return t;
                }
              }, b.hsl = function(P) {
                var n = P[0] / 255, s = P[1] / 255, T = P[2] / 255, A = Math.min(n, s, T), p = Math.max(n, s, T), u = p - A, t, r, i;
                return p === A ? t = 0 : n === p ? t = (s - T) / u : s === p ? t = 2 + (T - n) / u : T === p && (t = 4 + (n - s) / u), t = Math.min(t * 60, 360), t < 0 && (t += 360), i = (A + p) / 2, p === A ? r = 0 : i <= 0.5 ? r = u / (p + A) : r = u / (2 - p - A), [t, r * 100, i * 100];
              };
            }
          ),
          /***/
          10520: (
            /***/
            function(Y) {
              Y.exports = {
                name: "rgb",
                min: [0, 0, 0],
                max: [255, 255, 255],
                channel: ["red", "green", "blue"],
                alias: ["RGB"]
              };
            }
          ),
          /***/
          78171: (
            /***/
            function(Y) {
              Y.exports = {
                AFG: "afghan",
                ALA: "\\b\\wland",
                ALB: "albania",
                DZA: "algeria",
                ASM: "^(?=.*americ).*samoa",
                AND: "andorra",
                AGO: "angola",
                AIA: "anguill?a",
                ATA: "antarctica",
                ATG: "antigua",
                ARG: "argentin",
                ARM: "armenia",
                ABW: "^(?!.*bonaire).*\\baruba",
                AUS: "australia",
                AUT: "^(?!.*hungary).*austria|\\baustri.*\\bemp",
                AZE: "azerbaijan",
                BHS: "bahamas",
                BHR: "bahrain",
                BGD: "bangladesh|^(?=.*east).*paki?stan",
                BRB: "barbados",
                BLR: "belarus|byelo",
                BEL: "^(?!.*luxem).*belgium",
                BLZ: "belize|^(?=.*british).*honduras",
                BEN: "benin|dahome",
                BMU: "bermuda",
                BTN: "bhutan",
                BOL: "bolivia",
                BES: "^(?=.*bonaire).*eustatius|^(?=.*carib).*netherlands|\\bbes.?islands",
                BIH: "herzegovina|bosnia",
                BWA: "botswana|bechuana",
                BVT: "bouvet",
                BRA: "brazil",
                IOT: "british.?indian.?ocean",
                BRN: "brunei",
                BGR: "bulgaria",
                BFA: "burkina|\\bfaso|upper.?volta",
                BDI: "burundi",
                CPV: "verde",
                KHM: "cambodia|kampuchea|khmer",
                CMR: "cameroon",
                CAN: "canada",
                CYM: "cayman",
                CAF: "\\bcentral.african.republic",
                TCD: "\\bchad",
                CHL: "\\bchile",
                CHN: "^(?!.*\\bmac)(?!.*\\bhong)(?!.*\\btai)(?!.*\\brep).*china|^(?=.*peo)(?=.*rep).*china",
                CXR: "christmas",
                CCK: "\\bcocos|keeling",
                COL: "colombia",
                COM: "comoro",
                COG: "^(?!.*\\bdem)(?!.*\\bd[\\.]?r)(?!.*kinshasa)(?!.*zaire)(?!.*belg)(?!.*l.opoldville)(?!.*free).*\\bcongo",
                COK: "\\bcook",
                CRI: "costa.?rica",
                CIV: "ivoire|ivory",
                HRV: "croatia",
                CUB: "\\bcuba",
                CUW: "^(?!.*bonaire).*\\bcura(c|ç)ao",
                CYP: "cyprus",
                CSK: "czechoslovakia",
                CZE: "^(?=.*rep).*czech|czechia|bohemia",
                COD: "\\bdem.*congo|congo.*\\bdem|congo.*\\bd[\\.]?r|\\bd[\\.]?r.*congo|belgian.?congo|congo.?free.?state|kinshasa|zaire|l.opoldville|drc|droc|rdc",
                DNK: "denmark",
                DJI: "djibouti",
                DMA: "dominica(?!n)",
                DOM: "dominican.rep",
                ECU: "ecuador",
                EGY: "egypt",
                SLV: "el.?salvador",
                GNQ: "guine.*eq|eq.*guine|^(?=.*span).*guinea",
                ERI: "eritrea",
                EST: "estonia",
                ETH: "ethiopia|abyssinia",
                FLK: "falkland|malvinas",
                FRO: "faroe|faeroe",
                FJI: "fiji",
                FIN: "finland",
                FRA: "^(?!.*\\bdep)(?!.*martinique).*france|french.?republic|\\bgaul",
                GUF: "^(?=.*french).*guiana",
                PYF: "french.?polynesia|tahiti",
                ATF: "french.?southern",
                GAB: "gabon",
                GMB: "gambia",
                GEO: "^(?!.*south).*georgia",
                DDR: "german.?democratic.?republic|democratic.?republic.*germany|east.germany",
                DEU: "^(?!.*east).*germany|^(?=.*\\bfed.*\\brep).*german",
                GHA: "ghana|gold.?coast",
                GIB: "gibraltar",
                GRC: "greece|hellenic|hellas",
                GRL: "greenland",
                GRD: "grenada",
                GLP: "guadeloupe",
                GUM: "\\bguam",
                GTM: "guatemala",
                GGY: "guernsey",
                GIN: "^(?!.*eq)(?!.*span)(?!.*bissau)(?!.*portu)(?!.*new).*guinea",
                GNB: "bissau|^(?=.*portu).*guinea",
                GUY: "guyana|british.?guiana",
                HTI: "haiti",
                HMD: "heard.*mcdonald",
                VAT: "holy.?see|vatican|papal.?st",
                HND: "^(?!.*brit).*honduras",
                HKG: "hong.?kong",
                HUN: "^(?!.*austr).*hungary",
                ISL: "iceland",
                IND: "india(?!.*ocea)",
                IDN: "indonesia",
                IRN: "\\biran|persia",
                IRQ: "\\biraq|mesopotamia",
                IRL: "(^ireland)|(^republic.*ireland)",
                IMN: "^(?=.*isle).*\\bman",
                ISR: "israel",
                ITA: "italy",
                JAM: "jamaica",
                JPN: "japan",
                JEY: "jersey",
                JOR: "jordan",
                KAZ: "kazak",
                KEN: "kenya|british.?east.?africa|east.?africa.?prot",
                KIR: "kiribati",
                PRK: "^(?=.*democrat|people|north|d.*p.*.r).*\\bkorea|dprk|korea.*(d.*p.*r)",
                KWT: "kuwait",
                KGZ: "kyrgyz|kirghiz",
                LAO: "\\blaos?\\b",
                LVA: "latvia",
                LBN: "lebanon",
                LSO: "lesotho|basuto",
                LBR: "liberia",
                LBY: "libya",
                LIE: "liechtenstein",
                LTU: "lithuania",
                LUX: "^(?!.*belg).*luxem",
                MAC: "maca(o|u)",
                MDG: "madagascar|malagasy",
                MWI: "malawi|nyasa",
                MYS: "malaysia",
                MDV: "maldive",
                MLI: "\\bmali\\b",
                MLT: "\\bmalta",
                MHL: "marshall",
                MTQ: "martinique",
                MRT: "mauritania",
                MUS: "mauritius",
                MYT: "\\bmayotte",
                MEX: "\\bmexic",
                FSM: "fed.*micronesia|micronesia.*fed",
                MCO: "monaco",
                MNG: "mongolia",
                MNE: "^(?!.*serbia).*montenegro",
                MSR: "montserrat",
                MAR: "morocco|\\bmaroc",
                MOZ: "mozambique",
                MMR: "myanmar|burma",
                NAM: "namibia",
                NRU: "nauru",
                NPL: "nepal",
                NLD: "^(?!.*\\bant)(?!.*\\bcarib).*netherlands",
                ANT: "^(?=.*\\bant).*(nether|dutch)",
                NCL: "new.?caledonia",
                NZL: "new.?zealand",
                NIC: "nicaragua",
                NER: "\\bniger(?!ia)",
                NGA: "nigeria",
                NIU: "niue",
                NFK: "norfolk",
                MNP: "mariana",
                NOR: "norway",
                OMN: "\\boman|trucial",
                PAK: "^(?!.*east).*paki?stan",
                PLW: "palau",
                PSE: "palestin|\\bgaza|west.?bank",
                PAN: "panama",
                PNG: "papua|new.?guinea",
                PRY: "paraguay",
                PER: "peru",
                PHL: "philippines",
                PCN: "pitcairn",
                POL: "poland",
                PRT: "portugal",
                PRI: "puerto.?rico",
                QAT: "qatar",
                KOR: "^(?!.*d.*p.*r)(?!.*democrat)(?!.*people)(?!.*north).*\\bkorea(?!.*d.*p.*r)",
                MDA: "moldov|b(a|e)ssarabia",
                REU: "r(e|é)union",
                ROU: "r(o|u|ou)mania",
                RUS: "\\brussia|soviet.?union|u\\.?s\\.?s\\.?r|socialist.?republics",
                RWA: "rwanda",
                BLM: "barth(e|é)lemy",
                SHN: "helena",
                KNA: "kitts|\\bnevis",
                LCA: "\\blucia",
                MAF: "^(?=.*collectivity).*martin|^(?=.*france).*martin(?!ique)|^(?=.*french).*martin(?!ique)",
                SPM: "miquelon",
                VCT: "vincent",
                WSM: "^(?!.*amer).*samoa",
                SMR: "san.?marino",
                STP: "\\bs(a|ã)o.?tom(e|é)",
                SAU: "\\bsa\\w*.?arabia",
                SEN: "senegal",
                SRB: "^(?!.*monte).*serbia",
                SYC: "seychell",
                SLE: "sierra",
                SGP: "singapore",
                SXM: "^(?!.*martin)(?!.*saba).*maarten",
                SVK: "^(?!.*cze).*slovak",
                SVN: "slovenia",
                SLB: "solomon",
                SOM: "somali",
                ZAF: "south.africa|s\\\\..?africa",
                SGS: "south.?georgia|sandwich",
                SSD: "\\bs\\w*.?sudan",
                ESP: "spain",
                LKA: "sri.?lanka|ceylon",
                SDN: "^(?!.*\\bs(?!u)).*sudan",
                SUR: "surinam|dutch.?guiana",
                SJM: "svalbard",
                SWZ: "swaziland",
                SWE: "sweden",
                CHE: "switz|swiss",
                SYR: "syria",
                TWN: "taiwan|taipei|formosa|^(?!.*peo)(?=.*rep).*china",
                TJK: "tajik",
                THA: "thailand|\\bsiam",
                MKD: "macedonia|fyrom",
                TLS: "^(?=.*leste).*timor|^(?=.*east).*timor",
                TGO: "togo",
                TKL: "tokelau",
                TON: "tonga",
                TTO: "trinidad|tobago",
                TUN: "tunisia",
                TUR: "turkey",
                TKM: "turkmen",
                TCA: "turks",
                TUV: "tuvalu",
                UGA: "uganda",
                UKR: "ukrain",
                ARE: "emirates|^u\\.?a\\.?e\\.?$|united.?arab.?em",
                GBR: "united.?kingdom|britain|^u\\.?k\\.?$",
                TZA: "tanzania",
                USA: "united.?states\\b(?!.*islands)|\\bu\\.?s\\.?a\\.?\\b|^\\s*u\\.?s\\.?\\b(?!.*islands)",
                UMI: "minor.?outlying.?is",
                URY: "uruguay",
                UZB: "uzbek",
                VUT: "vanuatu|new.?hebrides",
                VEN: "venezuela",
                VNM: "^(?!.*republic).*viet.?nam|^(?=.*socialist).*viet.?nam",
                VGB: "^(?=.*\\bu\\.?\\s?k).*virgin|^(?=.*brit).*virgin|^(?=.*kingdom).*virgin",
                VIR: "^(?=.*\\bu\\.?\\s?s).*virgin|^(?=.*states).*virgin",
                WLF: "futuna|wallis",
                ESH: "western.sahara",
                YEM: "^(?!.*arab)(?!.*north)(?!.*sana)(?!.*peo)(?!.*dem)(?!.*south)(?!.*aden)(?!.*\\bp\\.?d\\.?r).*yemen",
                YMD: "^(?=.*peo).*yemen|^(?!.*rep)(?=.*dem).*yemen|^(?=.*south).*yemen|^(?=.*aden).*yemen|^(?=.*\\bp\\.?d\\.?r).*yemen",
                YUG: "yugoslavia",
                ZMB: "zambia|northern.?rhodesia",
                EAZ: "zanzibar",
                ZWE: "zimbabwe|^(?!.*northern).*rhodesia"
              };
            }
          ),
          /***/
          59518: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                parse: e(86029),
                stringify: e(38211)
              };
            }
          ),
          /***/
          87724: (
            /***/
            function(Y, K, e) {
              var b = e(23648);
              Y.exports = {
                isSize: function(n) {
                  return /^[\d\.]/.test(n) || n.indexOf("/") !== -1 || b.indexOf(n) !== -1;
                }
              };
            }
          ),
          /***/
          86029: (
            /***/
            function(Y, K, e) {
              var b = e(80886), P = e(54324), n = e(94316), s = e(99803), T = e(87486), A = e(2362), p = e(28089), u = e(87724).isSize;
              Y.exports = r;
              var t = r.cache = {};
              function r(a) {
                if (typeof a != "string") throw new Error("Font argument must be a string.");
                if (t[a]) return t[a];
                if (a === "")
                  throw new Error("Cannot parse an empty string.");
                if (n.indexOf(a) !== -1)
                  return t[a] = { system: a };
                for (var l = {
                  style: "normal",
                  variant: "normal",
                  weight: "normal",
                  stretch: "normal",
                  lineHeight: "normal",
                  size: "1rem",
                  family: ["serif"]
                }, o = p(a, /\s+/), y; y = o.shift(); ) {
                  if (P.indexOf(y) !== -1)
                    return ["style", "variant", "weight", "stretch"].forEach(function(x) {
                      l[x] = y;
                    }), t[a] = l;
                  if (T.indexOf(y) !== -1) {
                    l.style = y;
                    continue;
                  }
                  if (y === "normal" || y === "small-caps") {
                    l.variant = y;
                    continue;
                  }
                  if (A.indexOf(y) !== -1) {
                    l.stretch = y;
                    continue;
                  }
                  if (s.indexOf(y) !== -1) {
                    l.weight = y;
                    continue;
                  }
                  if (u(y)) {
                    var g = p(y, "/");
                    if (l.size = g[0], g[1] != null ? l.lineHeight = i(g[1]) : o[0] === "/" && (o.shift(), l.lineHeight = i(o.shift())), !o.length)
                      throw new Error("Missing required font-family.");
                    return l.family = p(o.join(" "), /\s*,\s*/).map(b), t[a] = l;
                  }
                  throw new Error("Unknown or unsupported font token: " + y);
                }
                throw new Error("Missing required font-size.");
              }
              function i(a) {
                var l = parseFloat(a);
                return l.toString() === a ? l : a;
              }
            }
          ),
          /***/
          38211: (
            /***/
            function(Y, K, e) {
              var b = e(6807), P = e(87724).isSize, n = a(e(54324)), s = a(e(94316)), T = a(e(99803)), A = a(e(87486)), p = a(e(2362)), u = { normal: 1, "small-caps": 1 }, t = {
                serif: 1,
                "sans-serif": 1,
                monospace: 1,
                cursive: 1,
                fantasy: 1,
                "system-ui": 1
              }, r = {
                style: "normal",
                variant: "normal",
                weight: "normal",
                stretch: "normal",
                size: "1rem",
                lineHeight: "normal",
                family: "serif"
              };
              Y.exports = function(o) {
                if (o = b(o, {
                  style: "style fontstyle fontStyle font-style slope distinction",
                  variant: "variant font-variant fontVariant fontvariant var capitalization",
                  weight: "weight w font-weight fontWeight fontweight",
                  stretch: "stretch font-stretch fontStretch fontstretch width",
                  size: "size s font-size fontSize fontsize height em emSize",
                  lineHeight: "lh line-height lineHeight lineheight leading",
                  family: "font family fontFamily font-family fontfamily type typeface face",
                  system: "system reserved default global"
                }), o.system)
                  return o.system && i(o.system, s), o.system;
                if (i(o.style, A), i(o.variant, u), i(o.weight, T), i(o.stretch, p), o.size == null && (o.size = r.size), typeof o.size == "number" && (o.size += "px"), !P) throw Error("Bad size value `" + o.size + "`");
                o.family || (o.family = r.family), Array.isArray(o.family) && (o.family.length || (o.family = [r.family]), o.family = o.family.map(function(g) {
                  return t[g] ? g : '"' + g + '"';
                }).join(", "));
                var y = [];
                return y.push(o.style), o.variant !== o.style && y.push(o.variant), o.weight !== o.variant && o.weight !== o.style && y.push(o.weight), o.stretch !== o.weight && o.stretch !== o.variant && o.stretch !== o.style && y.push(o.stretch), y.push(o.size + (o.lineHeight == null || o.lineHeight === "normal" || o.lineHeight + "" == "1" ? "" : "/" + o.lineHeight)), y.push(o.family), y.filter(Boolean).join(" ");
              };
              function i(l, o) {
                if (l && !o[l] && !n[l]) throw Error("Unknown keyword `" + l + "`");
                return l;
              }
              function a(l) {
                for (var o = {}, y = 0; y < l.length; y++)
                  o[l[y]] = 1;
                return o;
              }
            }
          ),
          /***/
          51070: (
            /***/
            function(Y) {
              Y.exports = function(K) {
                var e = [];
                return e.toString = function() {
                  return this.map(function(P) {
                    var n = "", s = typeof P[5] < "u";
                    return P[4] && (n += "@supports (".concat(P[4], ") {")), P[2] && (n += "@media ".concat(P[2], " {")), s && (n += "@layer".concat(P[5].length > 0 ? " ".concat(P[5]) : "", " {")), n += K(P), s && (n += "}"), P[2] && (n += "}"), P[4] && (n += "}"), n;
                  }).join("");
                }, e.i = function(P, n, s, T, A) {
                  typeof P == "string" && (P = [[null, P, void 0]]);
                  var p = {};
                  if (s)
                    for (var u = 0; u < this.length; u++) {
                      var t = this[u][0];
                      t != null && (p[t] = !0);
                    }
                  for (var r = 0; r < P.length; r++) {
                    var i = [].concat(P[r]);
                    s && p[i[0]] || (typeof A < "u" && (typeof i[5] > "u" || (i[1] = "@layer".concat(i[5].length > 0 ? " ".concat(i[5]) : "", " {").concat(i[1], "}")), i[5] = A), n && (i[2] && (i[1] = "@media ".concat(i[2], " {").concat(i[1], "}")), i[2] = n), T && (i[4] ? (i[1] = "@supports (".concat(i[4], ") {").concat(i[1], "}"), i[4] = T) : i[4] = "".concat(T)), e.push(i));
                  }
                }, e;
              };
            }
          ),
          /***/
          62133: (
            /***/
            function(Y) {
              Y.exports = function(K, e) {
                return e || (e = {}), K && (K = String(K.__esModule ? K.default : K), /^['"].*['"]$/.test(K) && (K = K.slice(1, -1)), e.hash && (K += e.hash), /["'() \t\n]|(%20)/.test(K) || e.needQuotes ? '"'.concat(K.replace(/"/g, '\\"').replace(/\n/g, "\\n"), '"') : K);
              };
            }
          ),
          /***/
          22413: (
            /***/
            function(Y) {
              Y.exports = function(K) {
                return K[1];
              };
            }
          ),
          /***/
          84510: (
            /***/
            function(Y, K, e) {
              var b = e(80299), P = e(9557), n = e(6887), s = e(86591), T = e(76504), A = e(29854), p = Function.prototype.bind, u = Object.defineProperty, t = Object.prototype.hasOwnProperty, r;
              r = function(i, a, l) {
                var o = P(a) && n(a.value), y;
                return y = s(a), delete y.writable, delete y.value, y.get = function() {
                  return !l.overwriteDefinition && t.call(this, i) ? o : (a.value = p.call(o, l.resolveContext ? l.resolveContext(this) : this), u(this, i, a), this[i]);
                }, y;
              }, Y.exports = function(i) {
                var a = T(arguments[1]);
                return b(a.resolveContext) && n(a.resolveContext), A(i, function(l, o) {
                  return r(o, l, a);
                });
              };
            }
          ),
          /***/
          91819: (
            /***/
            function(Y, K, e) {
              var b = e(80299), P = e(63461), n = e(1920), s = e(76504), T = e(2338), A = Y.exports = function(p, u) {
                var t, r, i, a, l;
                return arguments.length < 2 || typeof p != "string" ? (a = u, u = p, p = null) : a = arguments[2], b(p) ? (t = T.call(p, "c"), r = T.call(p, "e"), i = T.call(p, "w")) : (t = i = !0, r = !1), l = { value: u, configurable: t, enumerable: r, writable: i }, a ? n(s(a), l) : l;
              };
              A.gs = function(p, u, t) {
                var r, i, a, l;
                return typeof p != "string" ? (a = t, t = u, u = p, p = null) : a = arguments[3], b(u) ? P(u) ? b(t) ? P(t) || (a = t, t = void 0) : t = void 0 : (a = u, u = t = void 0) : u = void 0, b(p) ? (r = T.call(p, "c"), i = T.call(p, "e")) : (r = !0, i = !1), l = { get: u, set: t, configurable: r, enumerable: i }, a ? n(s(a), l) : l;
              };
            }
          ),
          /***/
          29725: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                V_: function() {
                  return (
                    /* reexport */
                    b
                  );
                },
                T9: function() {
                  return (
                    /* reexport */
                    s
                  );
                },
                i2: function() {
                  return (
                    /* reexport */
                    A
                  );
                },
                Am: function() {
                  return (
                    /* reexport */
                    p
                  );
                },
                jk: function() {
                  return (
                    /* reexport */
                    u
                  );
                },
                y1: function() {
                  return (
                    /* reexport */
                    t
                  );
                },
                cz: function() {
                  return (
                    /* reexport */
                    r
                  );
                }
              });
              function b(i, a) {
                return i < a ? -1 : i > a ? 1 : i >= a ? 0 : NaN;
              }
              function P(i) {
                return i.length === 1 && (i = n(i)), {
                  left: function(a, l, o, y) {
                    for (o == null && (o = 0), y == null && (y = a.length); o < y; ) {
                      var g = o + y >>> 1;
                      i(a[g], l) < 0 ? o = g + 1 : y = g;
                    }
                    return o;
                  },
                  right: function(a, l, o, y) {
                    for (o == null && (o = 0), y == null && (y = a.length); o < y; ) {
                      var g = o + y >>> 1;
                      i(a[g], l) > 0 ? y = g : o = g + 1;
                    }
                    return o;
                  }
                };
              }
              function n(i) {
                return function(a, l) {
                  return b(i(a), l);
                };
              }
              P(b);
              function s(i, a) {
                var l = i.length, o = -1, y, g;
                if (a == null) {
                  for (; ++o < l; )
                    if ((y = i[o]) != null && y >= y)
                      for (g = y; ++o < l; )
                        (y = i[o]) != null && y > g && (g = y);
                } else
                  for (; ++o < l; )
                    if ((y = a(i[o], o, i)) != null && y >= y)
                      for (g = y; ++o < l; )
                        (y = a(i[o], o, i)) != null && y > g && (g = y);
                return g;
              }
              function T(i) {
                return i === null ? NaN : +i;
              }
              function A(i, a) {
                var l = i.length, o = l, y = -1, g, x = 0;
                if (a == null)
                  for (; ++y < l; )
                    isNaN(g = T(i[y])) ? --o : x += g;
                else
                  for (; ++y < l; )
                    isNaN(g = T(a(i[y], y, i))) ? --o : x += g;
                if (o) return x / o;
              }
              function p(i) {
                for (var a = i.length, l, o = -1, y = 0, g, x; ++o < a; ) y += i[o].length;
                for (g = new Array(y); --a >= 0; )
                  for (x = i[a], l = x.length; --l >= 0; )
                    g[--y] = x[l];
                return g;
              }
              function u(i, a) {
                var l = i.length, o = -1, y, g;
                if (a == null) {
                  for (; ++o < l; )
                    if ((y = i[o]) != null && y >= y)
                      for (g = y; ++o < l; )
                        (y = i[o]) != null && g > y && (g = y);
                } else
                  for (; ++o < l; )
                    if ((y = a(i[o], o, i)) != null && y >= y)
                      for (g = y; ++o < l; )
                        (y = a(i[o], o, i)) != null && g > y && (g = y);
                return g;
              }
              function t(i, a, l) {
                i = +i, a = +a, l = (y = arguments.length) < 2 ? (a = i, i = 0, 1) : y < 3 ? 1 : +l;
                for (var o = -1, y = Math.max(0, Math.ceil((a - i) / l)) | 0, g = new Array(y); ++o < y; )
                  g[o] = i + o * l;
                return g;
              }
              function r(i, a) {
                var l = i.length, o = -1, y, g = 0;
                if (a == null)
                  for (; ++o < l; )
                    (y = +i[o]) && (g += y);
                else
                  for (; ++o < l; )
                    (y = +a(i[o], o, i)) && (g += y);
                return g;
              }
            }
          ),
          /***/
          4575: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                Tj: function() {
                  return (
                    /* reexport */
                    s
                  );
                },
                $I: function() {
                  return (
                    /* reexport */
                    T
                  );
                }
              });
              var b = "$";
              function P() {
              }
              P.prototype = n.prototype = {
                constructor: P,
                has: function(a) {
                  return b + a in this;
                },
                get: function(a) {
                  return this[b + a];
                },
                set: function(a, l) {
                  return this[b + a] = l, this;
                },
                remove: function(a) {
                  var l = b + a;
                  return l in this && delete this[l];
                },
                clear: function() {
                  for (var a in this) a[0] === b && delete this[a];
                },
                keys: function() {
                  var a = [];
                  for (var l in this) l[0] === b && a.push(l.slice(1));
                  return a;
                },
                values: function() {
                  var a = [];
                  for (var l in this) l[0] === b && a.push(this[l]);
                  return a;
                },
                entries: function() {
                  var a = [];
                  for (var l in this) l[0] === b && a.push({ key: l.slice(1), value: this[l] });
                  return a;
                },
                size: function() {
                  var a = 0;
                  for (var l in this) l[0] === b && ++a;
                  return a;
                },
                empty: function() {
                  for (var a in this) if (a[0] === b) return !1;
                  return !0;
                },
                each: function(a) {
                  for (var l in this) l[0] === b && a(this[l], l.slice(1), this);
                }
              };
              function n(a, l) {
                var o = new P();
                if (a instanceof P) a.each(function(v, f) {
                  o.set(f, v);
                });
                else if (Array.isArray(a)) {
                  var y = -1, g = a.length, x;
                  if (l == null) for (; ++y < g; ) o.set(y, a[y]);
                  else for (; ++y < g; ) o.set(l(x = a[y], y, a), x);
                } else if (a) for (var c in a) o.set(c, a[c]);
                return o;
              }
              var s = n;
              function T() {
                var a = [], l = [], o, y, g;
                function x(v, f, _, S) {
                  if (f >= a.length)
                    return o != null && v.sort(o), y != null ? y(v) : v;
                  for (var M = -1, C = v.length, m = a[f++], L, d, h = s(), E, w = _(); ++M < C; )
                    (E = h.get(L = m(d = v[M]) + "")) ? E.push(d) : h.set(L, [d]);
                  return h.each(function(z, O) {
                    S(w, O, x(z, f, _, S));
                  }), w;
                }
                function c(v, f) {
                  if (++f > a.length) return v;
                  var _, S = l[f - 1];
                  return y != null && f >= a.length ? _ = v.entries() : (_ = [], v.each(function(M, C) {
                    _.push({ key: C, values: c(M, f) });
                  })), S != null ? _.sort(function(M, C) {
                    return S(M.key, C.key);
                  }) : _;
                }
                return g = {
                  object: function(v) {
                    return x(v, 0, A, p);
                  },
                  map: function(v) {
                    return x(v, 0, u, t);
                  },
                  entries: function(v) {
                    return c(x(v, 0, u, t), 0);
                  },
                  key: function(v) {
                    return a.push(v), g;
                  },
                  sortKeys: function(v) {
                    return l[a.length - 1] = v, g;
                  },
                  sortValues: function(v) {
                    return o = v, g;
                  },
                  rollup: function(v) {
                    return y = v, g;
                  }
                };
              }
              function A() {
                return {};
              }
              function p(a, l, o) {
                a[l] = o;
              }
              function u() {
                return s();
              }
              function t(a, l, o) {
                a.set(l, o);
              }
              function r() {
              }
              var i = s.prototype;
              r.prototype = {
                constructor: r,
                has: i.has,
                add: function(a) {
                  return a += "", this[b + a] = a, this;
                },
                remove: i.remove,
                clear: i.clear,
                values: i.keys,
                size: i.size,
                empty: i.empty,
                each: i.each
              };
            }
          ),
          /***/
          32702: (
            /***/
            function(Y, K, e) {
              e.r(K), e.d(K, {
                forceCenter: function() {
                  return (
                    /* reexport */
                    b
                  );
                },
                forceCollide: function() {
                  return (
                    /* reexport */
                    h
                  );
                },
                forceLink: function() {
                  return (
                    /* reexport */
                    O
                  );
                },
                forceManyBody: function() {
                  return (
                    /* reexport */
                    re
                  );
                },
                forceRadial: function() {
                  return (
                    /* reexport */
                    ge
                  );
                },
                forceSimulation: function() {
                  return (
                    /* reexport */
                    kt
                  );
                },
                forceX: function() {
                  return (
                    /* reexport */
                    _e
                  );
                },
                forceY: function() {
                  return (
                    /* reexport */
                    ce
                  );
                }
              });
              function b(ae, Se) {
                var ze;
                ae == null && (ae = 0), Se == null && (Se = 0);
                function Ne() {
                  var Ve, Oe = ze.length, ur, ie = 0, $t = 0;
                  for (Ve = 0; Ve < Oe; ++Ve)
                    ur = ze[Ve], ie += ur.x, $t += ur.y;
                  for (ie = ie / Oe - ae, $t = $t / Oe - Se, Ve = 0; Ve < Oe; ++Ve)
                    ur = ze[Ve], ur.x -= ie, ur.y -= $t;
                }
                return Ne.initialize = function(Ve) {
                  ze = Ve;
                }, Ne.x = function(Ve) {
                  return arguments.length ? (ae = +Ve, Ne) : ae;
                }, Ne.y = function(Ve) {
                  return arguments.length ? (Se = +Ve, Ne) : Se;
                }, Ne;
              }
              function P(ae) {
                return function() {
                  return ae;
                };
              }
              function n() {
                return (Math.random() - 0.5) * 1e-6;
              }
              function s(ae) {
                var Se = +this._x.call(null, ae), ze = +this._y.call(null, ae);
                return T(this.cover(Se, ze), Se, ze, ae);
              }
              function T(ae, Se, ze, Ne) {
                if (isNaN(Se) || isNaN(ze)) return ae;
                var Ve, Oe = ae._root, ur = { data: Ne }, ie = ae._x0, $t = ae._y0, jt = ae._x1, ee = ae._y1, Bt, Xt, Zt, ye, Mt, St, Lt, te;
                if (!Oe) return ae._root = ur, ae;
                for (; Oe.length; )
                  if ((Mt = Se >= (Bt = (ie + jt) / 2)) ? ie = Bt : jt = Bt, (St = ze >= (Xt = ($t + ee) / 2)) ? $t = Xt : ee = Xt, Ve = Oe, !(Oe = Oe[Lt = St << 1 | Mt])) return Ve[Lt] = ur, ae;
                if (Zt = +ae._x.call(null, Oe.data), ye = +ae._y.call(null, Oe.data), Se === Zt && ze === ye) return ur.next = Oe, Ve ? Ve[Lt] = ur : ae._root = ur, ae;
                do
                  Ve = Ve ? Ve[Lt] = new Array(4) : ae._root = new Array(4), (Mt = Se >= (Bt = (ie + jt) / 2)) ? ie = Bt : jt = Bt, (St = ze >= (Xt = ($t + ee) / 2)) ? $t = Xt : ee = Xt;
                while ((Lt = St << 1 | Mt) === (te = (ye >= Xt) << 1 | Zt >= Bt));
                return Ve[te] = Oe, Ve[Lt] = ur, ae;
              }
              function A(ae) {
                var Se, ze, Ne = ae.length, Ve, Oe, ur = new Array(Ne), ie = new Array(Ne), $t = 1 / 0, jt = 1 / 0, ee = -1 / 0, Bt = -1 / 0;
                for (ze = 0; ze < Ne; ++ze)
                  isNaN(Ve = +this._x.call(null, Se = ae[ze])) || isNaN(Oe = +this._y.call(null, Se)) || (ur[ze] = Ve, ie[ze] = Oe, Ve < $t && ($t = Ve), Ve > ee && (ee = Ve), Oe < jt && (jt = Oe), Oe > Bt && (Bt = Oe));
                if ($t > ee || jt > Bt) return this;
                for (this.cover($t, jt).cover(ee, Bt), ze = 0; ze < Ne; ++ze)
                  T(this, ur[ze], ie[ze], ae[ze]);
                return this;
              }
              function p(ae, Se) {
                if (isNaN(ae = +ae) || isNaN(Se = +Se)) return this;
                var ze = this._x0, Ne = this._y0, Ve = this._x1, Oe = this._y1;
                if (isNaN(ze))
                  Ve = (ze = Math.floor(ae)) + 1, Oe = (Ne = Math.floor(Se)) + 1;
                else {
                  for (var ur = Ve - ze, ie = this._root, $t, jt; ze > ae || ae >= Ve || Ne > Se || Se >= Oe; )
                    switch (jt = (Se < Ne) << 1 | ae < ze, $t = new Array(4), $t[jt] = ie, ie = $t, ur *= 2, jt) {
                      case 0:
                        Ve = ze + ur, Oe = Ne + ur;
                        break;
                      case 1:
                        ze = Ve - ur, Oe = Ne + ur;
                        break;
                      case 2:
                        Ve = ze + ur, Ne = Oe - ur;
                        break;
                      case 3:
                        ze = Ve - ur, Ne = Oe - ur;
                        break;
                    }
                  this._root && this._root.length && (this._root = ie);
                }
                return this._x0 = ze, this._y0 = Ne, this._x1 = Ve, this._y1 = Oe, this;
              }
              function u() {
                var ae = [];
                return this.visit(function(Se) {
                  if (!Se.length) do
                    ae.push(Se.data);
                  while (Se = Se.next);
                }), ae;
              }
              function t(ae) {
                return arguments.length ? this.cover(+ae[0][0], +ae[0][1]).cover(+ae[1][0], +ae[1][1]) : isNaN(this._x0) ? void 0 : [[this._x0, this._y0], [this._x1, this._y1]];
              }
              function r(ae, Se, ze, Ne, Ve) {
                this.node = ae, this.x0 = Se, this.y0 = ze, this.x1 = Ne, this.y1 = Ve;
              }
              function i(ae, Se, ze) {
                var Ne, Ve = this._x0, Oe = this._y0, ur, ie, $t, jt, ee = this._x1, Bt = this._y1, Xt = [], Zt = this._root, ye, Mt;
                for (Zt && Xt.push(new r(Zt, Ve, Oe, ee, Bt)), ze == null ? ze = 1 / 0 : (Ve = ae - ze, Oe = Se - ze, ee = ae + ze, Bt = Se + ze, ze *= ze); ye = Xt.pop(); )
                  if (!(!(Zt = ye.node) || (ur = ye.x0) > ee || (ie = ye.y0) > Bt || ($t = ye.x1) < Ve || (jt = ye.y1) < Oe))
                    if (Zt.length) {
                      var St = (ur + $t) / 2, Lt = (ie + jt) / 2;
                      Xt.push(
                        new r(Zt[3], St, Lt, $t, jt),
                        new r(Zt[2], ur, Lt, St, jt),
                        new r(Zt[1], St, ie, $t, Lt),
                        new r(Zt[0], ur, ie, St, Lt)
                      ), (Mt = (Se >= Lt) << 1 | ae >= St) && (ye = Xt[Xt.length - 1], Xt[Xt.length - 1] = Xt[Xt.length - 1 - Mt], Xt[Xt.length - 1 - Mt] = ye);
                    } else {
                      var te = ae - +this._x.call(null, Zt.data), fe = Se - +this._y.call(null, Zt.data), Me = te * te + fe * fe;
                      if (Me < ze) {
                        var ir = Math.sqrt(ze = Me);
                        Ve = ae - ir, Oe = Se - ir, ee = ae + ir, Bt = Se + ir, Ne = Zt.data;
                      }
                    }
                return Ne;
              }
              function a(ae) {
                if (isNaN(ee = +this._x.call(null, ae)) || isNaN(Bt = +this._y.call(null, ae))) return this;
                var Se, ze = this._root, Ne, Ve, Oe, ur = this._x0, ie = this._y0, $t = this._x1, jt = this._y1, ee, Bt, Xt, Zt, ye, Mt, St, Lt;
                if (!ze) return this;
                if (ze.length) for (; ; ) {
                  if ((ye = ee >= (Xt = (ur + $t) / 2)) ? ur = Xt : $t = Xt, (Mt = Bt >= (Zt = (ie + jt) / 2)) ? ie = Zt : jt = Zt, Se = ze, !(ze = ze[St = Mt << 1 | ye])) return this;
                  if (!ze.length) break;
                  (Se[St + 1 & 3] || Se[St + 2 & 3] || Se[St + 3 & 3]) && (Ne = Se, Lt = St);
                }
                for (; ze.data !== ae; ) if (Ve = ze, !(ze = ze.next)) return this;
                return (Oe = ze.next) && delete ze.next, Ve ? (Oe ? Ve.next = Oe : delete Ve.next, this) : Se ? (Oe ? Se[St] = Oe : delete Se[St], (ze = Se[0] || Se[1] || Se[2] || Se[3]) && ze === (Se[3] || Se[2] || Se[1] || Se[0]) && !ze.length && (Ne ? Ne[Lt] = ze : this._root = ze), this) : (this._root = Oe, this);
              }
              function l(ae) {
                for (var Se = 0, ze = ae.length; Se < ze; ++Se) this.remove(ae[Se]);
                return this;
              }
              function o() {
                return this._root;
              }
              function y() {
                var ae = 0;
                return this.visit(function(Se) {
                  if (!Se.length) do
                    ++ae;
                  while (Se = Se.next);
                }), ae;
              }
              function g(ae) {
                var Se = [], ze, Ne = this._root, Ve, Oe, ur, ie, $t;
                for (Ne && Se.push(new r(Ne, this._x0, this._y0, this._x1, this._y1)); ze = Se.pop(); )
                  if (!ae(Ne = ze.node, Oe = ze.x0, ur = ze.y0, ie = ze.x1, $t = ze.y1) && Ne.length) {
                    var jt = (Oe + ie) / 2, ee = (ur + $t) / 2;
                    (Ve = Ne[3]) && Se.push(new r(Ve, jt, ee, ie, $t)), (Ve = Ne[2]) && Se.push(new r(Ve, Oe, ee, jt, $t)), (Ve = Ne[1]) && Se.push(new r(Ve, jt, ur, ie, ee)), (Ve = Ne[0]) && Se.push(new r(Ve, Oe, ur, jt, ee));
                  }
                return this;
              }
              function x(ae) {
                var Se = [], ze = [], Ne;
                for (this._root && Se.push(new r(this._root, this._x0, this._y0, this._x1, this._y1)); Ne = Se.pop(); ) {
                  var Ve = Ne.node;
                  if (Ve.length) {
                    var Oe, ur = Ne.x0, ie = Ne.y0, $t = Ne.x1, jt = Ne.y1, ee = (ur + $t) / 2, Bt = (ie + jt) / 2;
                    (Oe = Ve[0]) && Se.push(new r(Oe, ur, ie, ee, Bt)), (Oe = Ve[1]) && Se.push(new r(Oe, ee, ie, $t, Bt)), (Oe = Ve[2]) && Se.push(new r(Oe, ur, Bt, ee, jt)), (Oe = Ve[3]) && Se.push(new r(Oe, ee, Bt, $t, jt));
                  }
                  ze.push(Ne);
                }
                for (; Ne = ze.pop(); )
                  ae(Ne.node, Ne.x0, Ne.y0, Ne.x1, Ne.y1);
                return this;
              }
              function c(ae) {
                return ae[0];
              }
              function v(ae) {
                return arguments.length ? (this._x = ae, this) : this._x;
              }
              function f(ae) {
                return ae[1];
              }
              function _(ae) {
                return arguments.length ? (this._y = ae, this) : this._y;
              }
              function S(ae, Se, ze) {
                var Ne = new M(Se ?? c, ze ?? f, NaN, NaN, NaN, NaN);
                return ae == null ? Ne : Ne.addAll(ae);
              }
              function M(ae, Se, ze, Ne, Ve, Oe) {
                this._x = ae, this._y = Se, this._x0 = ze, this._y0 = Ne, this._x1 = Ve, this._y1 = Oe, this._root = void 0;
              }
              function C(ae) {
                for (var Se = { data: ae.data }, ze = Se; ae = ae.next; ) ze = ze.next = { data: ae.data };
                return Se;
              }
              var m = S.prototype = M.prototype;
              m.copy = function() {
                var ae = new M(this._x, this._y, this._x0, this._y0, this._x1, this._y1), Se = this._root, ze, Ne;
                if (!Se) return ae;
                if (!Se.length) return ae._root = C(Se), ae;
                for (ze = [{ source: Se, target: ae._root = new Array(4) }]; Se = ze.pop(); )
                  for (var Ve = 0; Ve < 4; ++Ve)
                    (Ne = Se.source[Ve]) && (Ne.length ? ze.push({ source: Ne, target: Se.target[Ve] = new Array(4) }) : Se.target[Ve] = C(Ne));
                return ae;
              }, m.add = s, m.addAll = A, m.cover = p, m.data = u, m.extent = t, m.find = i, m.remove = a, m.removeAll = l, m.root = o, m.size = y, m.visit = g, m.visitAfter = x, m.x = v, m.y = _;
              function L(ae) {
                return ae.x + ae.vx;
              }
              function d(ae) {
                return ae.y + ae.vy;
              }
              function h(ae) {
                var Se, ze, Ne = 1, Ve = 1;
                typeof ae != "function" && (ae = P(ae == null ? 1 : +ae));
                function Oe() {
                  for (var $t, jt = Se.length, ee, Bt, Xt, Zt, ye, Mt, St = 0; St < Ve; ++St)
                    for (ee = S(Se, L, d).visitAfter(ur), $t = 0; $t < jt; ++$t)
                      Bt = Se[$t], ye = ze[Bt.index], Mt = ye * ye, Xt = Bt.x + Bt.vx, Zt = Bt.y + Bt.vy, ee.visit(Lt);
                  function Lt(te, fe, Me, ir, mr) {
                    var Xe = te.data, xe = te.r, me = ye + xe;
                    if (Xe) {
                      if (Xe.index > Bt.index) {
                        var Le = Xt - Xe.x - Xe.vx, qt = Zt - Xe.y - Xe.vy, De = Le * Le + qt * qt;
                        De < me * me && (Le === 0 && (Le = n(), De += Le * Le), qt === 0 && (qt = n(), De += qt * qt), De = (me - (De = Math.sqrt(De))) / De * Ne, Bt.vx += (Le *= De) * (me = (xe *= xe) / (Mt + xe)), Bt.vy += (qt *= De) * me, Xe.vx -= Le * (me = 1 - me), Xe.vy -= qt * me);
                      }
                      return;
                    }
                    return fe > Xt + me || ir < Xt - me || Me > Zt + me || mr < Zt - me;
                  }
                }
                function ur($t) {
                  if ($t.data) return $t.r = ze[$t.data.index];
                  for (var jt = $t.r = 0; jt < 4; ++jt)
                    $t[jt] && $t[jt].r > $t.r && ($t.r = $t[jt].r);
                }
                function ie() {
                  if (Se) {
                    var $t, jt = Se.length, ee;
                    for (ze = new Array(jt), $t = 0; $t < jt; ++$t) ee = Se[$t], ze[ee.index] = +ae(ee, $t, Se);
                  }
                }
                return Oe.initialize = function($t) {
                  Se = $t, ie();
                }, Oe.iterations = function($t) {
                  return arguments.length ? (Ve = +$t, Oe) : Ve;
                }, Oe.strength = function($t) {
                  return arguments.length ? (Ne = +$t, Oe) : Ne;
                }, Oe.radius = function($t) {
                  return arguments.length ? (ae = typeof $t == "function" ? $t : P(+$t), ie(), Oe) : ae;
                }, Oe;
              }
              var E = e(4575);
              function w(ae) {
                return ae.index;
              }
              function z(ae, Se) {
                var ze = ae.get(Se);
                if (!ze) throw new Error("missing: " + Se);
                return ze;
              }
              function O(ae) {
                var Se = w, ze = ee, Ne, Ve = P(30), Oe, ur, ie, $t, jt = 1;
                ae == null && (ae = []);
                function ee(Mt) {
                  return 1 / Math.min(ie[Mt.source.index], ie[Mt.target.index]);
                }
                function Bt(Mt) {
                  for (var St = 0, Lt = ae.length; St < jt; ++St)
                    for (var te = 0, fe, Me, ir, mr, Xe, xe, me; te < Lt; ++te)
                      fe = ae[te], Me = fe.source, ir = fe.target, mr = ir.x + ir.vx - Me.x - Me.vx || n(), Xe = ir.y + ir.vy - Me.y - Me.vy || n(), xe = Math.sqrt(mr * mr + Xe * Xe), xe = (xe - Oe[te]) / xe * Mt * Ne[te], mr *= xe, Xe *= xe, ir.vx -= mr * (me = $t[te]), ir.vy -= Xe * me, Me.vx += mr * (me = 1 - me), Me.vy += Xe * me;
                }
                function Xt() {
                  if (ur) {
                    var Mt, St = ur.length, Lt = ae.length, te = (0, E.Tj)(ur, Se), fe;
                    for (Mt = 0, ie = new Array(St); Mt < Lt; ++Mt)
                      fe = ae[Mt], fe.index = Mt, typeof fe.source != "object" && (fe.source = z(te, fe.source)), typeof fe.target != "object" && (fe.target = z(te, fe.target)), ie[fe.source.index] = (ie[fe.source.index] || 0) + 1, ie[fe.target.index] = (ie[fe.target.index] || 0) + 1;
                    for (Mt = 0, $t = new Array(Lt); Mt < Lt; ++Mt)
                      fe = ae[Mt], $t[Mt] = ie[fe.source.index] / (ie[fe.source.index] + ie[fe.target.index]);
                    Ne = new Array(Lt), Zt(), Oe = new Array(Lt), ye();
                  }
                }
                function Zt() {
                  if (ur)
                    for (var Mt = 0, St = ae.length; Mt < St; ++Mt)
                      Ne[Mt] = +ze(ae[Mt], Mt, ae);
                }
                function ye() {
                  if (ur)
                    for (var Mt = 0, St = ae.length; Mt < St; ++Mt)
                      Oe[Mt] = +Ve(ae[Mt], Mt, ae);
                }
                return Bt.initialize = function(Mt) {
                  ur = Mt, Xt();
                }, Bt.links = function(Mt) {
                  return arguments.length ? (ae = Mt, Xt(), Bt) : ae;
                }, Bt.id = function(Mt) {
                  return arguments.length ? (Se = Mt, Bt) : Se;
                }, Bt.iterations = function(Mt) {
                  return arguments.length ? (jt = +Mt, Bt) : jt;
                }, Bt.strength = function(Mt) {
                  return arguments.length ? (ze = typeof Mt == "function" ? Mt : P(+Mt), Zt(), Bt) : ze;
                }, Bt.distance = function(Mt) {
                  return arguments.length ? (Ve = typeof Mt == "function" ? Mt : P(+Mt), ye(), Bt) : Ve;
                }, Bt;
              }
              var B = { value: function() {
              } };
              function V() {
                for (var ae = 0, Se = arguments.length, ze = {}, Ne; ae < Se; ++ae) {
                  if (!(Ne = arguments[ae] + "") || Ne in ze || /[\s.]/.test(Ne)) throw new Error("illegal type: " + Ne);
                  ze[Ne] = [];
                }
                return new U(ze);
              }
              function U(ae) {
                this._ = ae;
              }
              function H(ae, Se) {
                return ae.trim().split(/^|\s+/).map(function(ze) {
                  var Ne = "", Ve = ze.indexOf(".");
                  if (Ve >= 0 && (Ne = ze.slice(Ve + 1), ze = ze.slice(0, Ve)), ze && !Se.hasOwnProperty(ze)) throw new Error("unknown type: " + ze);
                  return { type: ze, name: Ne };
                });
              }
              U.prototype = V.prototype = {
                constructor: U,
                on: function(ae, Se) {
                  var ze = this._, Ne = H(ae + "", ze), Ve, Oe = -1, ur = Ne.length;
                  if (arguments.length < 2) {
                    for (; ++Oe < ur; ) if ((Ve = (ae = Ne[Oe]).type) && (Ve = F(ze[Ve], ae.name))) return Ve;
                    return;
                  }
                  if (Se != null && typeof Se != "function") throw new Error("invalid callback: " + Se);
                  for (; ++Oe < ur; )
                    if (Ve = (ae = Ne[Oe]).type) ze[Ve] = G(ze[Ve], ae.name, Se);
                    else if (Se == null) for (Ve in ze) ze[Ve] = G(ze[Ve], ae.name, null);
                  return this;
                },
                copy: function() {
                  var ae = {}, Se = this._;
                  for (var ze in Se) ae[ze] = Se[ze].slice();
                  return new U(ae);
                },
                call: function(ae, Se) {
                  if ((Ve = arguments.length - 2) > 0) for (var ze = new Array(Ve), Ne = 0, Ve, Oe; Ne < Ve; ++Ne) ze[Ne] = arguments[Ne + 2];
                  if (!this._.hasOwnProperty(ae)) throw new Error("unknown type: " + ae);
                  for (Oe = this._[ae], Ne = 0, Ve = Oe.length; Ne < Ve; ++Ne) Oe[Ne].value.apply(Se, ze);
                },
                apply: function(ae, Se, ze) {
                  if (!this._.hasOwnProperty(ae)) throw new Error("unknown type: " + ae);
                  for (var Ne = this._[ae], Ve = 0, Oe = Ne.length; Ve < Oe; ++Ve) Ne[Ve].value.apply(Se, ze);
                }
              };
              function F(ae, Se) {
                for (var ze = 0, Ne = ae.length, Ve; ze < Ne; ++ze)
                  if ((Ve = ae[ze]).name === Se)
                    return Ve.value;
              }
              function G(ae, Se, ze) {
                for (var Ne = 0, Ve = ae.length; Ne < Ve; ++Ne)
                  if (ae[Ne].name === Se) {
                    ae[Ne] = B, ae = ae.slice(0, Ne).concat(ae.slice(Ne + 1));
                    break;
                  }
                return ze != null && ae.push({ name: Se, value: ze }), ae;
              }
              var q = V, rt = 0, st = 0, vt = 0, ht = 1e3, et, Q, j = 0, at = 0, ut = 0, nt = typeof performance == "object" && performance.now ? performance : Date, X = typeof window == "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(ae) {
                setTimeout(ae, 17);
              };
              function ct() {
                return at || (X(lt), at = nt.now() + ut);
              }
              function lt() {
                at = 0;
              }
              function pt() {
                this._call = this._time = this._next = null;
              }
              pt.prototype = wt.prototype = {
                constructor: pt,
                restart: function(ae, Se, ze) {
                  if (typeof ae != "function") throw new TypeError("callback is not a function");
                  ze = (ze == null ? ct() : +ze) + (Se == null ? 0 : +Se), !this._next && Q !== this && (Q ? Q._next = this : et = this, Q = this), this._call = ae, this._time = ze, Qt();
                },
                stop: function() {
                  this._call && (this._call = null, this._time = 1 / 0, Qt());
                }
              };
              function wt(ae, Se, ze) {
                var Ne = new pt();
                return Ne.restart(ae, Se, ze), Ne;
              }
              function Et() {
                ct(), ++rt;
                for (var ae = et, Se; ae; )
                  (Se = at - ae._time) >= 0 && ae._call.call(null, Se), ae = ae._next;
                --rt;
              }
              function Ct() {
                at = (j = nt.now()) + ut, rt = st = 0;
                try {
                  Et();
                } finally {
                  rt = 0, Jt(), at = 0;
                }
              }
              function Gt() {
                var ae = nt.now(), Se = ae - j;
                Se > ht && (ut -= Se, j = ae);
              }
              function Jt() {
                for (var ae, Se = et, ze, Ne = 1 / 0; Se; )
                  Se._call ? (Ne > Se._time && (Ne = Se._time), ae = Se, Se = Se._next) : (ze = Se._next, Se._next = null, Se = ae ? ae._next = ze : et = ze);
                Q = ae, Qt(Ne);
              }
              function Qt(ae) {
                if (!rt) {
                  st && (st = clearTimeout(st));
                  var Se = ae - at;
                  Se > 24 ? (ae < 1 / 0 && (st = setTimeout(Ct, ae - nt.now() - ut)), vt && (vt = clearInterval(vt))) : (vt || (j = nt.now(), vt = setInterval(Gt, ht)), rt = 1, X(Ct));
                }
              }
              function Vt(ae) {
                return ae.x;
              }
              function zt(ae) {
                return ae.y;
              }
              var Rt = 10, Wt = Math.PI * (3 - Math.sqrt(5));
              function kt(ae) {
                var Se, ze = 1, Ne = 1e-3, Ve = 1 - Math.pow(Ne, 1 / 300), Oe = 0, ur = 0.6, ie = (0, E.Tj)(), $t = wt(ee), jt = q("tick", "end");
                ae == null && (ae = []);
                function ee() {
                  Bt(), jt.call("tick", Se), ze < Ne && ($t.stop(), jt.call("end", Se));
                }
                function Bt(ye) {
                  var Mt, St = ae.length, Lt;
                  ye === void 0 && (ye = 1);
                  for (var te = 0; te < ye; ++te)
                    for (ze += (Oe - ze) * Ve, ie.each(function(fe) {
                      fe(ze);
                    }), Mt = 0; Mt < St; ++Mt)
                      Lt = ae[Mt], Lt.fx == null ? Lt.x += Lt.vx *= ur : (Lt.x = Lt.fx, Lt.vx = 0), Lt.fy == null ? Lt.y += Lt.vy *= ur : (Lt.y = Lt.fy, Lt.vy = 0);
                  return Se;
                }
                function Xt() {
                  for (var ye = 0, Mt = ae.length, St; ye < Mt; ++ye) {
                    if (St = ae[ye], St.index = ye, St.fx != null && (St.x = St.fx), St.fy != null && (St.y = St.fy), isNaN(St.x) || isNaN(St.y)) {
                      var Lt = Rt * Math.sqrt(ye), te = ye * Wt;
                      St.x = Lt * Math.cos(te), St.y = Lt * Math.sin(te);
                    }
                    (isNaN(St.vx) || isNaN(St.vy)) && (St.vx = St.vy = 0);
                  }
                }
                function Zt(ye) {
                  return ye.initialize && ye.initialize(ae), ye;
                }
                return Xt(), Se = {
                  tick: Bt,
                  restart: function() {
                    return $t.restart(ee), Se;
                  },
                  stop: function() {
                    return $t.stop(), Se;
                  },
                  nodes: function(ye) {
                    return arguments.length ? (ae = ye, Xt(), ie.each(Zt), Se) : ae;
                  },
                  alpha: function(ye) {
                    return arguments.length ? (ze = +ye, Se) : ze;
                  },
                  alphaMin: function(ye) {
                    return arguments.length ? (Ne = +ye, Se) : Ne;
                  },
                  alphaDecay: function(ye) {
                    return arguments.length ? (Ve = +ye, Se) : +Ve;
                  },
                  alphaTarget: function(ye) {
                    return arguments.length ? (Oe = +ye, Se) : Oe;
                  },
                  velocityDecay: function(ye) {
                    return arguments.length ? (ur = 1 - ye, Se) : 1 - ur;
                  },
                  force: function(ye, Mt) {
                    return arguments.length > 1 ? (Mt == null ? ie.remove(ye) : ie.set(ye, Zt(Mt)), Se) : ie.get(ye);
                  },
                  find: function(ye, Mt, St) {
                    var Lt = 0, te = ae.length, fe, Me, ir, mr, Xe;
                    for (St == null ? St = 1 / 0 : St *= St, Lt = 0; Lt < te; ++Lt)
                      mr = ae[Lt], fe = ye - mr.x, Me = Mt - mr.y, ir = fe * fe + Me * Me, ir < St && (Xe = mr, St = ir);
                    return Xe;
                  },
                  on: function(ye, Mt) {
                    return arguments.length > 1 ? (jt.on(ye, Mt), Se) : jt.on(ye);
                  }
                };
              }
              function re() {
                var ae, Se, ze, Ne = P(-30), Ve, Oe = 1, ur = 1 / 0, ie = 0.81;
                function $t(Xt) {
                  var Zt, ye = ae.length, Mt = S(ae, Vt, zt).visitAfter(ee);
                  for (ze = Xt, Zt = 0; Zt < ye; ++Zt) Se = ae[Zt], Mt.visit(Bt);
                }
                function jt() {
                  if (ae) {
                    var Xt, Zt = ae.length, ye;
                    for (Ve = new Array(Zt), Xt = 0; Xt < Zt; ++Xt) ye = ae[Xt], Ve[ye.index] = +Ne(ye, Xt, ae);
                  }
                }
                function ee(Xt) {
                  var Zt = 0, ye, Mt, St = 0, Lt, te, fe;
                  if (Xt.length) {
                    for (Lt = te = fe = 0; fe < 4; ++fe)
                      (ye = Xt[fe]) && (Mt = Math.abs(ye.value)) && (Zt += ye.value, St += Mt, Lt += Mt * ye.x, te += Mt * ye.y);
                    Xt.x = Lt / St, Xt.y = te / St;
                  } else {
                    ye = Xt, ye.x = ye.data.x, ye.y = ye.data.y;
                    do
                      Zt += Ve[ye.data.index];
                    while (ye = ye.next);
                  }
                  Xt.value = Zt;
                }
                function Bt(Xt, Zt, ye, Mt) {
                  if (!Xt.value) return !0;
                  var St = Xt.x - Se.x, Lt = Xt.y - Se.y, te = Mt - Zt, fe = St * St + Lt * Lt;
                  if (te * te / ie < fe)
                    return fe < ur && (St === 0 && (St = n(), fe += St * St), Lt === 0 && (Lt = n(), fe += Lt * Lt), fe < Oe && (fe = Math.sqrt(Oe * fe)), Se.vx += St * Xt.value * ze / fe, Se.vy += Lt * Xt.value * ze / fe), !0;
                  if (Xt.length || fe >= ur) return;
                  (Xt.data !== Se || Xt.next) && (St === 0 && (St = n(), fe += St * St), Lt === 0 && (Lt = n(), fe += Lt * Lt), fe < Oe && (fe = Math.sqrt(Oe * fe)));
                  do
                    Xt.data !== Se && (te = Ve[Xt.data.index] * ze / fe, Se.vx += St * te, Se.vy += Lt * te);
                  while (Xt = Xt.next);
                }
                return $t.initialize = function(Xt) {
                  ae = Xt, jt();
                }, $t.strength = function(Xt) {
                  return arguments.length ? (Ne = typeof Xt == "function" ? Xt : P(+Xt), jt(), $t) : Ne;
                }, $t.distanceMin = function(Xt) {
                  return arguments.length ? (Oe = Xt * Xt, $t) : Math.sqrt(Oe);
                }, $t.distanceMax = function(Xt) {
                  return arguments.length ? (ur = Xt * Xt, $t) : Math.sqrt(ur);
                }, $t.theta = function(Xt) {
                  return arguments.length ? (ie = Xt * Xt, $t) : Math.sqrt(ie);
                }, $t;
              }
              function ge(ae, Se, ze) {
                var Ne, Ve = P(0.1), Oe, ur;
                typeof ae != "function" && (ae = P(+ae)), Se == null && (Se = 0), ze == null && (ze = 0);
                function ie(jt) {
                  for (var ee = 0, Bt = Ne.length; ee < Bt; ++ee) {
                    var Xt = Ne[ee], Zt = Xt.x - Se || 1e-6, ye = Xt.y - ze || 1e-6, Mt = Math.sqrt(Zt * Zt + ye * ye), St = (ur[ee] - Mt) * Oe[ee] * jt / Mt;
                    Xt.vx += Zt * St, Xt.vy += ye * St;
                  }
                }
                function $t() {
                  if (Ne) {
                    var jt, ee = Ne.length;
                    for (Oe = new Array(ee), ur = new Array(ee), jt = 0; jt < ee; ++jt)
                      ur[jt] = +ae(Ne[jt], jt, Ne), Oe[jt] = isNaN(ur[jt]) ? 0 : +Ve(Ne[jt], jt, Ne);
                  }
                }
                return ie.initialize = function(jt) {
                  Ne = jt, $t();
                }, ie.strength = function(jt) {
                  return arguments.length ? (Ve = typeof jt == "function" ? jt : P(+jt), $t(), ie) : Ve;
                }, ie.radius = function(jt) {
                  return arguments.length ? (ae = typeof jt == "function" ? jt : P(+jt), $t(), ie) : ae;
                }, ie.x = function(jt) {
                  return arguments.length ? (Se = +jt, ie) : Se;
                }, ie.y = function(jt) {
                  return arguments.length ? (ze = +jt, ie) : ze;
                }, ie;
              }
              function _e(ae) {
                var Se = P(0.1), ze, Ne, Ve;
                typeof ae != "function" && (ae = P(ae == null ? 0 : +ae));
                function Oe(ie) {
                  for (var $t = 0, jt = ze.length, ee; $t < jt; ++$t)
                    ee = ze[$t], ee.vx += (Ve[$t] - ee.x) * Ne[$t] * ie;
                }
                function ur() {
                  if (ze) {
                    var ie, $t = ze.length;
                    for (Ne = new Array($t), Ve = new Array($t), ie = 0; ie < $t; ++ie)
                      Ne[ie] = isNaN(Ve[ie] = +ae(ze[ie], ie, ze)) ? 0 : +Se(ze[ie], ie, ze);
                  }
                }
                return Oe.initialize = function(ie) {
                  ze = ie, ur();
                }, Oe.strength = function(ie) {
                  return arguments.length ? (Se = typeof ie == "function" ? ie : P(+ie), ur(), Oe) : Se;
                }, Oe.x = function(ie) {
                  return arguments.length ? (ae = typeof ie == "function" ? ie : P(+ie), ur(), Oe) : ae;
                }, Oe;
              }
              function ce(ae) {
                var Se = P(0.1), ze, Ne, Ve;
                typeof ae != "function" && (ae = P(ae == null ? 0 : +ae));
                function Oe(ie) {
                  for (var $t = 0, jt = ze.length, ee; $t < jt; ++$t)
                    ee = ze[$t], ee.vy += (Ve[$t] - ee.y) * Ne[$t] * ie;
                }
                function ur() {
                  if (ze) {
                    var ie, $t = ze.length;
                    for (Ne = new Array($t), Ve = new Array($t), ie = 0; ie < $t; ++ie)
                      Ne[ie] = isNaN(Ve[ie] = +ae(ze[ie], ie, ze)) ? 0 : +Se(ze[ie], ie, ze);
                  }
                }
                return Oe.initialize = function(ie) {
                  ze = ie, ur();
                }, Oe.strength = function(ie) {
                  return arguments.length ? (Se = typeof ie == "function" ? ie : P(+ie), ur(), Oe) : Se;
                }, Oe.y = function(ie) {
                  return arguments.length ? (ae = typeof ie == "function" ? ie : P(+ie), ur(), Oe) : ae;
                }, Oe;
              }
            }
          ),
          /***/
          36464: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                GP: function() {
                  return (
                    /* reexport */
                    v
                  );
                },
                OE: function() {
                  return (
                    /* reexport */
                    x
                  );
                }
              });
              function b(_) {
                return Math.abs(_ = Math.round(_)) >= 1e21 ? _.toLocaleString("en").replace(/,/g, "") : _.toString(10);
              }
              function P(_, S) {
                if ((M = (_ = S ? _.toExponential(S - 1) : _.toExponential()).indexOf("e")) < 0) return null;
                var M, C = _.slice(0, M);
                return [
                  C.length > 1 ? C[0] + C.slice(2) : C,
                  +_.slice(M + 1)
                ];
              }
              function n(_) {
                return _ = P(Math.abs(_)), _ ? _[1] : NaN;
              }
              function s(_, S) {
                return function(M, C) {
                  for (var m = M.length, L = [], d = 0, h = _[0], E = 0; m > 0 && h > 0 && (E + h + 1 > C && (h = Math.max(1, C - E)), L.push(M.substring(m -= h, m + h)), !((E += h + 1) > C)); )
                    h = _[d = (d + 1) % _.length];
                  return L.reverse().join(S);
                };
              }
              function T(_) {
                return function(S) {
                  return S.replace(/[0-9]/g, function(M) {
                    return _[+M];
                  });
                };
              }
              var A = /^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;
              function p(_) {
                if (!(S = A.exec(_))) throw new Error("invalid format: " + _);
                var S;
                return new u({
                  fill: S[1],
                  align: S[2],
                  sign: S[3],
                  symbol: S[4],
                  zero: S[5],
                  width: S[6],
                  comma: S[7],
                  precision: S[8] && S[8].slice(1),
                  trim: S[9],
                  type: S[10]
                });
              }
              p.prototype = u.prototype;
              function u(_) {
                this.fill = _.fill === void 0 ? " " : _.fill + "", this.align = _.align === void 0 ? ">" : _.align + "", this.sign = _.sign === void 0 ? "-" : _.sign + "", this.symbol = _.symbol === void 0 ? "" : _.symbol + "", this.zero = !!_.zero, this.width = _.width === void 0 ? void 0 : +_.width, this.comma = !!_.comma, this.precision = _.precision === void 0 ? void 0 : +_.precision, this.trim = !!_.trim, this.type = _.type === void 0 ? "" : _.type + "";
              }
              u.prototype.toString = function() {
                return this.fill + this.align + this.sign + this.symbol + (this.zero ? "0" : "") + (this.width === void 0 ? "" : Math.max(1, this.width | 0)) + (this.comma ? "," : "") + (this.precision === void 0 ? "" : "." + Math.max(0, this.precision | 0)) + (this.trim ? "~" : "") + this.type;
              };
              function t(_) {
                t: for (var S = _.length, M = 1, C = -1, m; M < S; ++M)
                  switch (_[M]) {
                    case ".":
                      C = m = M;
                      break;
                    case "0":
                      C === 0 && (C = M), m = M;
                      break;
                    default:
                      if (!+_[M]) break t;
                      C > 0 && (C = 0);
                      break;
                  }
                return C > 0 ? _.slice(0, C) + _.slice(m + 1) : _;
              }
              var r;
              function i(_, S) {
                var M = P(_, S);
                if (!M) return _ + "";
                var C = M[0], m = M[1], L = m - (r = Math.max(-8, Math.min(8, Math.floor(m / 3))) * 3) + 1, d = C.length;
                return L === d ? C : L > d ? C + new Array(L - d + 1).join("0") : L > 0 ? C.slice(0, L) + "." + C.slice(L) : "0." + new Array(1 - L).join("0") + P(_, Math.max(0, S + L - 1))[0];
              }
              function a(_, S) {
                var M = P(_, S);
                if (!M) return _ + "";
                var C = M[0], m = M[1];
                return m < 0 ? "0." + new Array(-m).join("0") + C : C.length > m + 1 ? C.slice(0, m + 1) + "." + C.slice(m + 1) : C + new Array(m - C.length + 2).join("0");
              }
              var l = {
                "%": function(_, S) {
                  return (_ * 100).toFixed(S);
                },
                b: function(_) {
                  return Math.round(_).toString(2);
                },
                c: function(_) {
                  return _ + "";
                },
                d: b,
                e: function(_, S) {
                  return _.toExponential(S);
                },
                f: function(_, S) {
                  return _.toFixed(S);
                },
                g: function(_, S) {
                  return _.toPrecision(S);
                },
                o: function(_) {
                  return Math.round(_).toString(8);
                },
                p: function(_, S) {
                  return a(_ * 100, S);
                },
                r: a,
                s: i,
                X: function(_) {
                  return Math.round(_).toString(16).toUpperCase();
                },
                x: function(_) {
                  return Math.round(_).toString(16);
                }
              };
              function o(_) {
                return _;
              }
              var y = Array.prototype.map, g = ["y", "z", "a", "f", "p", "n", "µ", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y"];
              function x(_) {
                var S = _.grouping === void 0 || _.thousands === void 0 ? o : s(y.call(_.grouping, Number), _.thousands + ""), M = _.currency === void 0 ? "" : _.currency[0] + "", C = _.currency === void 0 ? "" : _.currency[1] + "", m = _.decimal === void 0 ? "." : _.decimal + "", L = _.numerals === void 0 ? o : T(y.call(_.numerals, String)), d = _.percent === void 0 ? "%" : _.percent + "", h = _.minus === void 0 ? "-" : _.minus + "", E = _.nan === void 0 ? "NaN" : _.nan + "";
                function w(O) {
                  O = p(O);
                  var B = O.fill, V = O.align, U = O.sign, H = O.symbol, F = O.zero, G = O.width, q = O.comma, rt = O.precision, st = O.trim, vt = O.type;
                  vt === "n" ? (q = !0, vt = "g") : l[vt] || (rt === void 0 && (rt = 12), st = !0, vt = "g"), (F || B === "0" && V === "=") && (F = !0, B = "0", V = "=");
                  var ht = H === "$" ? M : H === "#" && /[boxX]/.test(vt) ? "0" + vt.toLowerCase() : "", et = H === "$" ? C : /[%p]/.test(vt) ? d : "", Q = l[vt], j = /[defgprs%]/.test(vt);
                  rt = rt === void 0 ? 6 : /[gprs]/.test(vt) ? Math.max(1, Math.min(21, rt)) : Math.max(0, Math.min(20, rt));
                  function at(ut) {
                    var nt = ht, X = et, ct, lt, pt;
                    if (vt === "c")
                      X = Q(ut) + X, ut = "";
                    else {
                      ut = +ut;
                      var wt = ut < 0 || 1 / ut < 0;
                      if (ut = isNaN(ut) ? E : Q(Math.abs(ut), rt), st && (ut = t(ut)), wt && +ut == 0 && U !== "+" && (wt = !1), nt = (wt ? U === "(" ? U : h : U === "-" || U === "(" ? "" : U) + nt, X = (vt === "s" ? g[8 + r / 3] : "") + X + (wt && U === "(" ? ")" : ""), j) {
                        for (ct = -1, lt = ut.length; ++ct < lt; )
                          if (pt = ut.charCodeAt(ct), 48 > pt || pt > 57) {
                            X = (pt === 46 ? m + ut.slice(ct + 1) : ut.slice(ct)) + X, ut = ut.slice(0, ct);
                            break;
                          }
                      }
                    }
                    q && !F && (ut = S(ut, 1 / 0));
                    var Et = nt.length + ut.length + X.length, Ct = Et < G ? new Array(G - Et + 1).join(B) : "";
                    switch (q && F && (ut = S(Ct + ut, Ct.length ? G - X.length : 1 / 0), Ct = ""), V) {
                      case "<":
                        ut = nt + ut + X + Ct;
                        break;
                      case "=":
                        ut = nt + Ct + ut + X;
                        break;
                      case "^":
                        ut = Ct.slice(0, Et = Ct.length >> 1) + nt + ut + X + Ct.slice(Et);
                        break;
                      default:
                        ut = Ct + nt + ut + X;
                        break;
                    }
                    return L(ut);
                  }
                  return at.toString = function() {
                    return O + "";
                  }, at;
                }
                function z(O, B) {
                  var V = w((O = p(O), O.type = "f", O)), U = Math.max(-8, Math.min(8, Math.floor(n(B) / 3))) * 3, H = Math.pow(10, -U), F = g[8 + U / 3];
                  return function(G) {
                    return V(H * G) + F;
                  };
                }
                return {
                  format: w,
                  formatPrefix: z
                };
              }
              var c, v;
              f({
                decimal: ".",
                thousands: ",",
                grouping: [3],
                currency: ["$", ""],
                minus: "-"
              });
              function f(_) {
                return c = x(_), v = c.format, c.formatPrefix, c;
              }
            }
          ),
          /***/
          75987: (
            /***/
            function(Y, K, e) {
              e.r(K), e.d(K, {
                geoAiry: function() {
                  return (
                    /* reexport */
                    F
                  );
                },
                geoAiryRaw: function() {
                  return (
                    /* reexport */
                    H
                  );
                },
                geoAitoff: function() {
                  return (
                    /* reexport */
                    q
                  );
                },
                geoAitoffRaw: function() {
                  return (
                    /* reexport */
                    G
                  );
                },
                geoArmadillo: function() {
                  return (
                    /* reexport */
                    st
                  );
                },
                geoArmadilloRaw: function() {
                  return (
                    /* reexport */
                    rt
                  );
                },
                geoAugust: function() {
                  return (
                    /* reexport */
                    ht
                  );
                },
                geoAugustRaw: function() {
                  return (
                    /* reexport */
                    vt
                  );
                },
                geoBaker: function() {
                  return (
                    /* reexport */
                    at
                  );
                },
                geoBakerRaw: function() {
                  return (
                    /* reexport */
                    j
                  );
                },
                geoBerghaus: function() {
                  return (
                    /* reexport */
                    X
                  );
                },
                geoBerghausRaw: function() {
                  return (
                    /* reexport */
                    nt
                  );
                },
                geoBertin1953: function() {
                  return (
                    /* reexport */
                    Jt
                  );
                },
                geoBertin1953Raw: function() {
                  return (
                    /* reexport */
                    Gt
                  );
                },
                geoBoggs: function() {
                  return (
                    /* reexport */
                    ge
                  );
                },
                geoBoggsRaw: function() {
                  return (
                    /* reexport */
                    re
                  );
                },
                geoBonne: function() {
                  return (
                    /* reexport */
                    ze
                  );
                },
                geoBonneRaw: function() {
                  return (
                    /* reexport */
                    Se
                  );
                },
                geoBottomley: function() {
                  return (
                    /* reexport */
                    Ve
                  );
                },
                geoBottomleyRaw: function() {
                  return (
                    /* reexport */
                    Ne
                  );
                },
                geoBromley: function() {
                  return (
                    /* reexport */
                    ur
                  );
                },
                geoBromleyRaw: function() {
                  return (
                    /* reexport */
                    Oe
                  );
                },
                geoChamberlin: function() {
                  return (
                    /* reexport */
                    Mt
                  );
                },
                geoChamberlinAfrica: function() {
                  return (
                    /* reexport */
                    ye
                  );
                },
                geoChamberlinRaw: function() {
                  return (
                    /* reexport */
                    Xt
                  );
                },
                geoCollignon: function() {
                  return (
                    /* reexport */
                    Lt
                  );
                },
                geoCollignonRaw: function() {
                  return (
                    /* reexport */
                    St
                  );
                },
                geoCraig: function() {
                  return (
                    /* reexport */
                    fe
                  );
                },
                geoCraigRaw: function() {
                  return (
                    /* reexport */
                    te
                  );
                },
                geoCraster: function() {
                  return (
                    /* reexport */
                    mr
                  );
                },
                geoCrasterRaw: function() {
                  return (
                    /* reexport */
                    ir
                  );
                },
                geoCylindricalEqualArea: function() {
                  return (
                    /* reexport */
                    xe
                  );
                },
                geoCylindricalEqualAreaRaw: function() {
                  return (
                    /* reexport */
                    Xe
                  );
                },
                geoCylindricalStereographic: function() {
                  return (
                    /* reexport */
                    Le
                  );
                },
                geoCylindricalStereographicRaw: function() {
                  return (
                    /* reexport */
                    me
                  );
                },
                geoEckert1: function() {
                  return (
                    /* reexport */
                    De
                  );
                },
                geoEckert1Raw: function() {
                  return (
                    /* reexport */
                    qt
                  );
                },
                geoEckert2: function() {
                  return (
                    /* reexport */
                    dr
                  );
                },
                geoEckert2Raw: function() {
                  return (
                    /* reexport */
                    Je
                  );
                },
                geoEckert3: function() {
                  return (
                    /* reexport */
                    we
                  );
                },
                geoEckert3Raw: function() {
                  return (
                    /* reexport */
                    qe
                  );
                },
                geoEckert4: function() {
                  return (
                    /* reexport */
                    Pe
                  );
                },
                geoEckert4Raw: function() {
                  return (
                    /* reexport */
                    ue
                  );
                },
                geoEckert5: function() {
                  return (
                    /* reexport */
                    Ye
                  );
                },
                geoEckert5Raw: function() {
                  return (
                    /* reexport */
                    Ue
                  );
                },
                geoEckert6: function() {
                  return (
                    /* reexport */
                    lr
                  );
                },
                geoEckert6Raw: function() {
                  return (
                    /* reexport */
                    rr
                  );
                },
                geoEisenlohr: function() {
                  return (
                    /* reexport */
                    Dr
                  );
                },
                geoEisenlohrRaw: function() {
                  return (
                    /* reexport */
                    Sr
                  );
                },
                geoFahey: function() {
                  return (
                    /* reexport */
                    Nr
                  );
                },
                geoFaheyRaw: function() {
                  return (
                    /* reexport */
                    Br
                  );
                },
                geoFoucaut: function() {
                  return (
                    /* reexport */
                    Gr
                  );
                },
                geoFoucautRaw: function() {
                  return (
                    /* reexport */
                    Xr
                  );
                },
                geoFoucautSinusoidal: function() {
                  return (
                    /* reexport */
                    de
                  );
                },
                geoFoucautSinusoidalRaw: function() {
                  return (
                    /* reexport */
                    oe
                  );
                },
                geoGilbert: function() {
                  return (
                    /* reexport */
                    yr
                  );
                },
                geoGingery: function() {
                  return (
                    /* reexport */
                    Zr
                  );
                },
                geoGingeryRaw: function() {
                  return (
                    /* reexport */
                    Ir
                  );
                },
                geoGinzburg4: function() {
                  return (
                    /* reexport */
                    Zn
                  );
                },
                geoGinzburg4Raw: function() {
                  return (
                    /* reexport */
                    Jr
                  );
                },
                geoGinzburg5: function() {
                  return (
                    /* reexport */
                    hi
                  );
                },
                geoGinzburg5Raw: function() {
                  return (
                    /* reexport */
                    fn
                  );
                },
                geoGinzburg6: function() {
                  return (
                    /* reexport */
                    jr
                  );
                },
                geoGinzburg6Raw: function() {
                  return (
                    /* reexport */
                    Vn
                  );
                },
                geoGinzburg8: function() {
                  return (
                    /* reexport */
                    Tn
                  );
                },
                geoGinzburg8Raw: function() {
                  return (
                    /* reexport */
                    zr
                  );
                },
                geoGinzburg9: function() {
                  return (
                    /* reexport */
                    $n
                  );
                },
                geoGinzburg9Raw: function() {
                  return (
                    /* reexport */
                    sn
                  );
                },
                geoGringorten: function() {
                  return (
                    /* reexport */
                    qi
                  );
                },
                geoGringortenQuincuncial: function() {
                  return (
                    /* reexport */
                    ld
                  );
                },
                geoGringortenRaw: function() {
                  return (
                    /* reexport */
                    An
                  );
                },
                geoGuyou: function() {
                  return (
                    /* reexport */
                    Fn
                  );
                },
                geoGuyouRaw: function() {
                  return (
                    /* reexport */
                    rn
                  );
                },
                geoHammer: function() {
                  return (
                    /* reexport */
                    wt
                  );
                },
                geoHammerRaw: function() {
                  return (
                    /* reexport */
                    lt
                  );
                },
                geoHammerRetroazimuthal: function() {
                  return (
                    /* reexport */
                    Ai
                  );
                },
                geoHammerRetroazimuthalRaw: function() {
                  return (
                    /* reexport */
                    Nn
                  );
                },
                geoHealpix: function() {
                  return (
                    /* reexport */
                    Jn
                  );
                },
                geoHealpixRaw: function() {
                  return (
                    /* reexport */
                    $r
                  );
                },
                geoHill: function() {
                  return (
                    /* reexport */
                    Sn
                  );
                },
                geoHillRaw: function() {
                  return (
                    /* reexport */
                    en
                  );
                },
                geoHomolosine: function() {
                  return (
                    /* reexport */
                    Ti
                  );
                },
                geoHomolosineRaw: function() {
                  return (
                    /* reexport */
                    _i
                  );
                },
                geoHufnagel: function() {
                  return (
                    /* reexport */
                    ki
                  );
                },
                geoHufnagelRaw: function() {
                  return (
                    /* reexport */
                    bi
                  );
                },
                geoHyperelliptical: function() {
                  return (
                    /* reexport */
                    Io
                  );
                },
                geoHyperellipticalRaw: function() {
                  return (
                    /* reexport */
                    Ea
                  );
                },
                geoInterrupt: function() {
                  return (
                    /* reexport */
                    so
                  );
                },
                geoInterruptedBoggs: function() {
                  return (
                    /* reexport */
                    Zu
                  );
                },
                geoInterruptedHomolosine: function() {
                  return (
                    /* reexport */
                    io
                  );
                },
                geoInterruptedMollweide: function() {
                  return (
                    /* reexport */
                    yl
                  );
                },
                geoInterruptedMollweideHemispheres: function() {
                  return (
                    /* reexport */
                    Ys
                  );
                },
                geoInterruptedQuarticAuthalic: function() {
                  return (
                    /* reexport */
                    Ku
                  );
                },
                geoInterruptedSinuMollweide: function() {
                  return (
                    /* reexport */
                    ss
                  );
                },
                geoInterruptedSinusoidal: function() {
                  return (
                    /* reexport */
                    Ol
                  );
                },
                geoKavrayskiy7: function() {
                  return (
                    /* reexport */
                    ds
                  );
                },
                geoKavrayskiy7Raw: function() {
                  return (
                    /* reexport */
                    yo
                  );
                },
                geoLagrange: function() {
                  return (
                    /* reexport */
                    zs
                  );
                },
                geoLagrangeRaw: function() {
                  return (
                    /* reexport */
                    Ks
                  );
                },
                geoLarrivee: function() {
                  return (
                    /* reexport */
                    Th
                  );
                },
                geoLarriveeRaw: function() {
                  return (
                    /* reexport */
                    wl
                  );
                },
                geoLaskowski: function() {
                  return (
                    /* reexport */
                    Gf
                  );
                },
                geoLaskowskiRaw: function() {
                  return (
                    /* reexport */
                    Us
                  );
                },
                geoLittrow: function() {
                  return (
                    /* reexport */
                    bs
                  );
                },
                geoLittrowRaw: function() {
                  return (
                    /* reexport */
                    _l
                  );
                },
                geoLoximuthal: function() {
                  return (
                    /* reexport */
                    $l
                  );
                },
                geoLoximuthalRaw: function() {
                  return (
                    /* reexport */
                    pf
                  );
                },
                geoMiller: function() {
                  return (
                    /* reexport */
                    gf
                  );
                },
                geoMillerRaw: function() {
                  return (
                    /* reexport */
                    Bl
                  );
                },
                geoModifiedStereographic: function() {
                  return (
                    /* reexport */
                    xc
                  );
                },
                geoModifiedStereographicAlaska: function() {
                  return (
                    /* reexport */
                    Ah
                  );
                },
                geoModifiedStereographicGs48: function() {
                  return (
                    /* reexport */
                    Rd
                  );
                },
                geoModifiedStereographicGs50: function() {
                  return (
                    /* reexport */
                    mc
                  );
                },
                geoModifiedStereographicLee: function() {
                  return (
                    /* reexport */
                    mf
                  );
                },
                geoModifiedStereographicMiller: function() {
                  return (
                    /* reexport */
                    ed
                  );
                },
                geoModifiedStereographicRaw: function() {
                  return (
                    /* reexport */
                    yf
                  );
                },
                geoMollweide: function() {
                  return (
                    /* reexport */
                    Rt
                  );
                },
                geoMollweideRaw: function() {
                  return (
                    /* reexport */
                    zt
                  );
                },
                geoMtFlatPolarParabolic: function() {
                  return (
                    /* reexport */
                    jf
                  );
                },
                geoMtFlatPolarParabolicRaw: function() {
                  return (
                    /* reexport */
                    Hs
                  );
                },
                geoMtFlatPolarQuartic: function() {
                  return (
                    /* reexport */
                    rd
                  );
                },
                geoMtFlatPolarQuarticRaw: function() {
                  return (
                    /* reexport */
                    Tl
                  );
                },
                geoMtFlatPolarSinusoidal: function() {
                  return (
                    /* reexport */
                    nd
                  );
                },
                geoMtFlatPolarSinusoidalRaw: function() {
                  return (
                    /* reexport */
                    Zf
                  );
                },
                geoNaturalEarth: function() {
                  return (
                    /* reexport */
                    id.A
                  );
                },
                geoNaturalEarth2: function() {
                  return (
                    /* reexport */
                    ql
                  );
                },
                geoNaturalEarth2Raw: function() {
                  return (
                    /* reexport */
                    Xf
                  );
                },
                geoNaturalEarthRaw: function() {
                  return (
                    /* reexport */
                    id.P
                  );
                },
                geoNellHammer: function() {
                  return (
                    /* reexport */
                    Yu
                  );
                },
                geoNellHammerRaw: function() {
                  return (
                    /* reexport */
                    Oc
                  );
                },
                geoNicolosi: function() {
                  return (
                    /* reexport */
                    Sh
                  );
                },
                geoNicolosiRaw: function() {
                  return (
                    /* reexport */
                    cu
                  );
                },
                geoPatterson: function() {
                  return (
                    /* reexport */
                    Cu
                  );
                },
                geoPattersonRaw: function() {
                  return (
                    /* reexport */
                    Vc
                  );
                },
                geoPeirceQuincuncial: function() {
                  return (
                    /* reexport */
                    $f
                  );
                },
                geoPierceQuincuncial: function() {
                  return (
                    /* reexport */
                    $f
                  );
                },
                geoPolyconic: function() {
                  return (
                    /* reexport */
                    Mh
                  );
                },
                geoPolyconicRaw: function() {
                  return (
                    /* reexport */
                    Hc
                  );
                },
                geoPolyhedral: function() {
                  return (
                    /* reexport */
                    Ro
                  );
                },
                geoPolyhedralButterfly: function() {
                  return (
                    /* reexport */
                    _f
                  );
                },
                geoPolyhedralCollignon: function() {
                  return (
                    /* reexport */
                    $u
                  );
                },
                geoPolyhedralWaterman: function() {
                  return (
                    /* reexport */
                    Lu
                  );
                },
                geoProject: function() {
                  return (
                    /* reexport */
                    Dd
                  );
                },
                geoQuantize: function() {
                  return (
                    /* reexport */
                    qf
                  );
                },
                geoQuincuncial: function() {
                  return (
                    /* reexport */
                    Vl
                  );
                },
                geoRectangularPolyconic: function() {
                  return (
                    /* reexport */
                    th
                  );
                },
                geoRectangularPolyconicRaw: function() {
                  return (
                    /* reexport */
                    Jc
                  );
                },
                geoRobinson: function() {
                  return (
                    /* reexport */
                    fu
                  );
                },
                geoRobinsonRaw: function() {
                  return (
                    /* reexport */
                    Ms
                  );
                },
                geoSatellite: function() {
                  return (
                    /* reexport */
                    tc
                  );
                },
                geoSatelliteRaw: function() {
                  return (
                    /* reexport */
                    Qc
                  );
                },
                geoSinuMollweide: function() {
                  return (
                    /* reexport */
                    fi
                  );
                },
                geoSinuMollweideRaw: function() {
                  return (
                    /* reexport */
                    li
                  );
                },
                geoSinusoidal: function() {
                  return (
                    /* reexport */
                    ae
                  );
                },
                geoSinusoidalRaw: function() {
                  return (
                    /* reexport */
                    ce
                  );
                },
                geoStitch: function() {
                  return (
                    /* reexport */
                    Qs
                  );
                },
                geoTimes: function() {
                  return (
                    /* reexport */
                    ws
                  );
                },
                geoTimesRaw: function() {
                  return (
                    /* reexport */
                    Du
                  );
                },
                geoTwoPointAzimuthal: function() {
                  return (
                    /* reexport */
                    rh
                  );
                },
                geoTwoPointAzimuthalRaw: function() {
                  return (
                    /* reexport */
                    Lh
                  );
                },
                geoTwoPointAzimuthalUsa: function() {
                  return (
                    /* reexport */
                    Ll
                  );
                },
                geoTwoPointEquidistant: function() {
                  return (
                    /* reexport */
                    $c
                  );
                },
                geoTwoPointEquidistantRaw: function() {
                  return (
                    /* reexport */
                    nc
                  );
                },
                geoTwoPointEquidistantUsa: function() {
                  return (
                    /* reexport */
                    nh
                  );
                },
                geoVanDerGrinten: function() {
                  return (
                    /* reexport */
                    Mc
                  );
                },
                geoVanDerGrinten2: function() {
                  return (
                    /* reexport */
                    Ec
                  );
                },
                geoVanDerGrinten2Raw: function() {
                  return (
                    /* reexport */
                    iu
                  );
                },
                geoVanDerGrinten3: function() {
                  return (
                    /* reexport */
                    Ph
                  );
                },
                geoVanDerGrinten3Raw: function() {
                  return (
                    /* reexport */
                    ku
                  );
                },
                geoVanDerGrinten4: function() {
                  return (
                    /* reexport */
                    ic
                  );
                },
                geoVanDerGrinten4Raw: function() {
                  return (
                    /* reexport */
                    oo
                  );
                },
                geoVanDerGrintenRaw: function() {
                  return (
                    /* reexport */
                    Es
                  );
                },
                geoWagner: function() {
                  return (
                    /* reexport */
                    Wl
                  );
                },
                geoWagner4: function() {
                  return (
                    /* reexport */
                    ud
                  );
                },
                geoWagner4Raw: function() {
                  return (
                    /* reexport */
                    ah
                  );
                },
                geoWagner6: function() {
                  return (
                    /* reexport */
                    tf
                  );
                },
                geoWagner6Raw: function() {
                  return (
                    /* reexport */
                    Cc
                  );
                },
                geoWagner7: function() {
                  return (
                    /* reexport */
                    Ih
                  );
                },
                geoWagnerRaw: function() {
                  return (
                    /* reexport */
                    du
                  );
                },
                geoWiechel: function() {
                  return (
                    /* reexport */
                    ef
                  );
                },
                geoWiechelRaw: function() {
                  return (
                    /* reexport */
                    vu
                  );
                },
                geoWinkel3: function() {
                  return (
                    /* reexport */
                    cd
                  );
                },
                geoWinkel3Raw: function() {
                  return (
                    /* reexport */
                    pu
                  );
                }
              });
              var b = e(94684), P = Math.abs, n = Math.atan, s = Math.atan2, T = Math.cos, A = Math.exp, p = Math.floor, u = Math.log, t = Math.max, r = Math.min, i = Math.pow, a = Math.round, l = Math.sign || function(he) {
                return he > 0 ? 1 : he < 0 ? -1 : 0;
              }, o = Math.sin, y = Math.tan, g = 1e-6, x = 1e-12, c = Math.PI, v = c / 2, f = c / 4, _ = Math.SQRT1_2, S = w(2), M = w(c), C = c * 2, m = 180 / c, L = c / 180;
              function d(he) {
                return he ? he / Math.sin(he) : 1;
              }
              function h(he) {
                return he > 1 ? v : he < -1 ? -v : Math.asin(he);
              }
              function E(he) {
                return he > 1 ? 0 : he < -1 ? c : Math.acos(he);
              }
              function w(he) {
                return he > 0 ? Math.sqrt(he) : 0;
              }
              function z(he) {
                return he = A(2 * he), (he - 1) / (he + 1);
              }
              function O(he) {
                return (A(he) - A(-he)) / 2;
              }
              function B(he) {
                return (A(he) + A(-he)) / 2;
              }
              function V(he) {
                return u(he + w(he * he + 1));
              }
              function U(he) {
                return u(he + w(he * he - 1));
              }
              function H(he) {
                var Ae = y(he / 2), Be = 2 * u(T(he / 2)) / (Ae * Ae);
                function Ge(sr, ar) {
                  var fr = T(sr), Wr = T(ar), Yr = o(ar), Pr = Wr * fr, tn = -((1 - Pr ? u((1 + Pr) / 2) / (1 - Pr) : -0.5) + Be / (1 + Pr));
                  return [tn * Wr * o(sr), tn * Yr];
                }
                return Ge.invert = function(sr, ar) {
                  var fr = w(sr * sr + ar * ar), Wr = -he / 2, Yr = 50, Pr;
                  if (!fr) return [0, 0];
                  do {
                    var tn = Wr / 2, un = T(tn), dn = o(tn), On = dn / un, ai = -u(P(un));
                    Wr -= Pr = (2 / On * ai - Be * On - fr) / (-ai / (dn * dn) + 1 - Be / (2 * un * un)) * (un < 0 ? 0.7 : 1);
                  } while (P(Pr) > g && --Yr > 0);
                  var ri = o(Wr);
                  return [s(sr * ri, fr * T(Wr)), h(ar * ri / fr)];
                }, Ge;
              }
              function F() {
                var he = v, Ae = (0, b.U)(H), Be = Ae(he);
                return Be.radius = function(Ge) {
                  return arguments.length ? Ae(he = Ge * L) : he * m;
                }, Be.scale(179.976).clipAngle(147);
              }
              function G(he, Ae) {
                var Be = T(Ae), Ge = d(E(Be * T(he /= 2)));
                return [2 * Be * o(he) * Ge, o(Ae) * Ge];
              }
              G.invert = function(he, Ae) {
                if (!(he * he + 4 * Ae * Ae > c * c + g)) {
                  var Be = he, Ge = Ae, sr = 25;
                  do {
                    var ar = o(Be), fr = o(Be / 2), Wr = T(Be / 2), Yr = o(Ge), Pr = T(Ge), tn = o(2 * Ge), un = Yr * Yr, dn = Pr * Pr, On = fr * fr, ai = 1 - dn * Wr * Wr, ri = ai ? E(Pr * Wr) * w(gi = 1 / ai) : gi = 0, gi, Ni = 2 * ri * Pr * fr - he, Ia = ri * Yr - Ae, Pa = gi * (dn * On + ri * Pr * Wr * un), Fa = gi * (0.5 * ar * tn - ri * 2 * Yr * fr), Ga = gi * 0.25 * (tn * fr - ri * Yr * dn * ar), Na = gi * (un * Wr + ri * On * Pr), To = Fa * Ga - Na * Pa;
                    if (!To) break;
                    var Do = (Ia * Fa - Ni * Na) / To, gt = (Ni * Ga - Ia * Pa) / To;
                    Be -= Do, Ge -= gt;
                  } while ((P(Do) > g || P(gt) > g) && --sr > 0);
                  return [Be, Ge];
                }
              };
              function q() {
                return (0, b.A)(G).scale(152.63);
              }
              function rt(he) {
                var Ae = o(he), Be = T(he), Ge = he >= 0 ? 1 : -1, sr = y(Ge * he), ar = (1 + Ae - Be) / 2;
                function fr(Wr, Yr) {
                  var Pr = T(Yr), tn = T(Wr /= 2);
                  return [
                    (1 + Pr) * o(Wr),
                    (Ge * Yr > -s(tn, sr) - 1e-3 ? 0 : -Ge * 10) + ar + o(Yr) * Be - (1 + Pr) * Ae * tn
                    // TODO D3 core should allow null or [NaN, NaN] to be returned.
                  ];
                }
                return fr.invert = function(Wr, Yr) {
                  var Pr = 0, tn = 0, un = 50;
                  do {
                    var dn = T(Pr), On = o(Pr), ai = T(tn), ri = o(tn), gi = 1 + ai, Ni = gi * On - Wr, Ia = ar + ri * Be - gi * Ae * dn - Yr, Pa = gi * dn / 2, Fa = -On * ri, Ga = Ae * gi * On / 2, Na = Be * ai + Ae * dn * ri, To = Fa * Ga - Na * Pa, Do = (Ia * Fa - Ni * Na) / To / 2, gt = (Ni * Ga - Ia * Pa) / To;
                    P(gt) > 2 && (gt /= 2), Pr -= Do, tn -= gt;
                  } while ((P(Do) > g || P(gt) > g) && --un > 0);
                  return Ge * tn > -s(T(Pr), sr) - 1e-3 ? [Pr * 2, tn] : null;
                }, fr;
              }
              function st() {
                var he = 20 * L, Ae = he >= 0 ? 1 : -1, Be = y(Ae * he), Ge = (0, b.U)(rt), sr = Ge(he), ar = sr.stream;
                return sr.parallel = function(fr) {
                  return arguments.length ? (Be = y((Ae = (he = fr * L) >= 0 ? 1 : -1) * he), Ge(he)) : he * m;
                }, sr.stream = function(fr) {
                  var Wr = sr.rotate(), Yr = ar(fr), Pr = (sr.rotate([0, 0]), ar(fr)), tn = sr.precision();
                  return sr.rotate(Wr), Yr.sphere = function() {
                    Pr.polygonStart(), Pr.lineStart();
                    for (var un = Ae * -180; Ae * un < 180; un += Ae * 90)
                      Pr.point(un, Ae * 90);
                    if (he) for (; Ae * (un -= 3 * Ae * tn) >= -180; )
                      Pr.point(un, Ae * -s(T(un * L / 2), Be) * m);
                    Pr.lineEnd(), Pr.polygonEnd();
                  }, Yr;
                }, sr.scale(218.695).center([0, 28.0974]);
              }
              function vt(he, Ae) {
                var Be = y(Ae / 2), Ge = w(1 - Be * Be), sr = 1 + Ge * T(he /= 2), ar = o(he) * Ge / sr, fr = Be / sr, Wr = ar * ar, Yr = fr * fr;
                return [
                  1.3333333333333333 * ar * (3 + Wr - 3 * Yr),
                  1.3333333333333333 * fr * (3 + 3 * Wr - Yr)
                ];
              }
              vt.invert = function(he, Ae) {
                if (he *= 0.375, Ae *= 0.375, !he && P(Ae) > 1) return null;
                var Be = he * he, Ge = Ae * Ae, sr = 1 + Be + Ge, ar = w((sr - w(sr * sr - 4 * Ae * Ae)) / 2), fr = h(ar) / 3, Wr = ar ? U(P(Ae / ar)) / 3 : V(P(he)) / 3, Yr = T(fr), Pr = B(Wr), tn = Pr * Pr - Yr * Yr;
                return [
                  l(he) * 2 * s(O(Wr) * Yr, 0.25 - tn),
                  l(Ae) * 2 * s(Pr * o(fr), 0.25 + tn)
                ];
              };
              function ht() {
                return (0, b.A)(vt).scale(66.1603);
              }
              var et = w(8), Q = u(1 + S);
              function j(he, Ae) {
                var Be = P(Ae);
                return Be < f ? [he, u(y(f + Ae / 2))] : [he * T(Be) * (2 * S - 1 / o(Be)), l(Ae) * (2 * S * (Be - f) - u(y(Be / 2)))];
              }
              j.invert = function(he, Ae) {
                if ((ar = P(Ae)) < Q) return [he, 2 * n(A(Ae)) - v];
                var Be = f, Ge = 25, sr, ar;
                do {
                  var fr = T(Be / 2), Wr = y(Be / 2);
                  Be -= sr = (et * (Be - f) - u(Wr) - ar) / (et - fr * fr / (2 * Wr));
                } while (P(sr) > x && --Ge > 0);
                return [he / (T(Be) * (et - 1 / o(Be))), l(Ae) * Be];
              };
              function at() {
                return (0, b.A)(j).scale(112.314);
              }
              var ut = e(61957);
              function nt(he) {
                var Ae = 2 * c / he;
                function Be(Ge, sr) {
                  var ar = (0, ut.j)(Ge, sr);
                  if (P(Ge) > v) {
                    var fr = s(ar[1], ar[0]), Wr = w(ar[0] * ar[0] + ar[1] * ar[1]), Yr = Ae * a((fr - v) / Ae) + v, Pr = s(o(fr -= Yr), 2 - T(fr));
                    fr = Yr + h(c / Wr * o(Pr)) - Pr, ar[0] = Wr * T(fr), ar[1] = Wr * o(fr);
                  }
                  return ar;
                }
                return Be.invert = function(Ge, sr) {
                  var ar = w(Ge * Ge + sr * sr);
                  if (ar > v) {
                    var fr = s(sr, Ge), Wr = Ae * a((fr - v) / Ae) + v, Yr = fr > Wr ? -1 : 1, Pr = ar * T(Wr - fr), tn = 1 / y(Yr * E((Pr - c) / w(c * (c - 2 * Pr) + ar * ar)));
                    fr = Wr + 2 * n((tn + Yr * w(tn * tn - 3)) / 3), Ge = ar * T(fr), sr = ar * o(fr);
                  }
                  return ut.j.invert(Ge, sr);
                }, Be;
              }
              function X() {
                var he = 5, Ae = (0, b.U)(nt), Be = Ae(he), Ge = Be.stream, sr = 0.01, ar = -T(sr * L), fr = o(sr * L);
                return Be.lobes = function(Wr) {
                  return arguments.length ? Ae(he = +Wr) : he;
                }, Be.stream = function(Wr) {
                  var Yr = Be.rotate(), Pr = Ge(Wr), tn = (Be.rotate([0, 0]), Ge(Wr));
                  return Be.rotate(Yr), Pr.sphere = function() {
                    tn.polygonStart(), tn.lineStart();
                    for (var un = 0, dn = 360 / he, On = 2 * c / he, ai = 90 - 180 / he, ri = v; un < he; ++un, ai -= dn, ri -= On)
                      tn.point(s(fr * T(ri), ar) * m, h(fr * o(ri)) * m), ai < -90 ? (tn.point(-90, -180 - ai - sr), tn.point(-90, -180 - ai + sr)) : (tn.point(90, ai + sr), tn.point(90, ai - sr));
                    tn.lineEnd(), tn.polygonEnd();
                  }, Pr;
                }, Be.scale(87.8076).center([0, 17.1875]).clipAngle(179.999);
              }
              var ct = e(30729);
              function lt(he, Ae) {
                if (arguments.length < 2 && (Ae = he), Ae === 1) return ct.n;
                if (Ae === 1 / 0) return pt;
                function Be(Ge, sr) {
                  var ar = (0, ct.n)(Ge / Ae, sr);
                  return ar[0] *= he, ar;
                }
                return Be.invert = function(Ge, sr) {
                  var ar = ct.n.invert(Ge / he, sr);
                  return ar[0] *= Ae, ar;
                }, Be;
              }
              function pt(he, Ae) {
                return [
                  he * T(Ae) / T(Ae /= 2),
                  2 * o(Ae)
                ];
              }
              pt.invert = function(he, Ae) {
                var Be = 2 * h(Ae / 2);
                return [
                  he * T(Be / 2) / T(Be),
                  Be
                ];
              };
              function wt() {
                var he = 2, Ae = (0, b.U)(lt), Be = Ae(he);
                return Be.coefficient = function(Ge) {
                  return arguments.length ? Ae(he = +Ge) : he;
                }, Be.scale(169.529);
              }
              function Et(he, Ae, Be) {
                var Ge = 100, sr, ar, fr;
                Be = Be === void 0 ? 0 : +Be, Ae = +Ae;
                do
                  ar = he(Be), fr = he(Be + g), ar === fr && (fr = ar + g), Be -= sr = -1 * g * (ar - Ae) / (ar - fr);
                while (Ge-- > 0 && P(sr) > g);
                return Ge < 0 ? NaN : Be;
              }
              function Ct(he, Ae, Be) {
                return Ae === void 0 && (Ae = 40), Be === void 0 && (Be = x), function(Ge, sr, ar, fr) {
                  var Wr, Yr, Pr;
                  ar = ar === void 0 ? 0 : +ar, fr = fr === void 0 ? 0 : +fr;
                  for (var tn = 0; tn < Ae; tn++) {
                    var un = he(ar, fr), dn = un[0] - Ge, On = un[1] - sr;
                    if (P(dn) < Be && P(On) < Be) break;
                    var ai = dn * dn + On * On;
                    if (ai > Wr) {
                      ar -= Yr /= 2, fr -= Pr /= 2;
                      continue;
                    }
                    Wr = ai;
                    var ri = (ar > 0 ? -1 : 1) * Be, gi = (fr > 0 ? -1 : 1) * Be, Ni = he(ar + ri, fr), Ia = he(ar, fr + gi), Pa = (Ni[0] - un[0]) / ri, Fa = (Ni[1] - un[1]) / ri, Ga = (Ia[0] - un[0]) / gi, Na = (Ia[1] - un[1]) / gi, To = Na * Pa - Fa * Ga, Do = (P(To) < 0.5 ? 0.5 : 1) / To;
                    if (Yr = (On * Ga - dn * Na) * Do, Pr = (dn * Fa - On * Pa) * Do, ar += Yr, fr += Pr, P(Yr) < Be && P(Pr) < Be) break;
                  }
                  return [ar, fr];
                };
              }
              function Gt() {
                var he = lt(1.68, 2), Ae = 1.4, Be = 12;
                function Ge(sr, ar) {
                  if (sr + ar < -Ae) {
                    var fr = (sr - ar + 1.6) * (sr + ar + Ae) / 8;
                    sr += fr, ar -= 0.8 * fr * o(ar + c / 2);
                  }
                  var Wr = he(sr, ar), Yr = (1 - T(sr * ar)) / Be;
                  return Wr[1] < 0 && (Wr[0] *= 1 + Yr), Wr[1] > 0 && (Wr[1] *= 1 + Yr / 1.5 * Wr[0] * Wr[0]), Wr;
                }
                return Ge.invert = Ct(Ge), Ge;
              }
              function Jt() {
                return (0, b.A)(Gt()).rotate([-16.5, -42]).scale(176.57).center([7.93, 0.09]);
              }
              function Qt(he, Ae) {
                var Be = he * o(Ae), Ge = 30, sr;
                do
                  Ae -= sr = (Ae + o(Ae) - Be) / (1 + T(Ae));
                while (P(sr) > g && --Ge > 0);
                return Ae / 2;
              }
              function Vt(he, Ae, Be) {
                function Ge(sr, ar) {
                  return [he * sr * T(ar = Qt(Be, ar)), Ae * o(ar)];
                }
                return Ge.invert = function(sr, ar) {
                  return ar = h(ar / Ae), [sr / (he * T(ar)), h((2 * ar + o(2 * ar)) / Be)];
                }, Ge;
              }
              var zt = Vt(S / v, S, c);
              function Rt() {
                return (0, b.A)(zt).scale(169.529);
              }
              var Wt = 2.00276, kt = 1.11072;
              function re(he, Ae) {
                var Be = Qt(c, Ae);
                return [Wt * he / (1 / T(Ae) + kt / T(Be)), (Ae + S * o(Be)) / Wt];
              }
              re.invert = function(he, Ae) {
                var Be = Wt * Ae, Ge = Ae < 0 ? -f : f, sr = 25, ar, fr;
                do
                  fr = Be - S * o(Ge), Ge -= ar = (o(2 * Ge) + 2 * Ge - c * o(fr)) / (2 * T(2 * Ge) + 2 + c * T(fr) * S * T(Ge));
                while (P(ar) > g && --sr > 0);
                return fr = Be - S * o(Ge), [he * (1 / T(fr) + kt / T(Ge)) / Wt, fr];
              };
              function ge() {
                return (0, b.A)(re).scale(160.857);
              }
              function _e(he) {
                var Ae = 0, Be = (0, b.U)(he), Ge = Be(Ae);
                return Ge.parallel = function(sr) {
                  return arguments.length ? Be(Ae = sr * L) : Ae * m;
                }, Ge;
              }
              function ce(he, Ae) {
                return [he * T(Ae), Ae];
              }
              ce.invert = function(he, Ae) {
                return [he / T(Ae), Ae];
              };
              function ae() {
                return (0, b.A)(ce).scale(152.63);
              }
              function Se(he) {
                if (!he) return ce;
                var Ae = 1 / y(he);
                function Be(Ge, sr) {
                  var ar = Ae + he - sr, fr = ar && Ge * T(sr) / ar;
                  return [ar * o(fr), Ae - ar * T(fr)];
                }
                return Be.invert = function(Ge, sr) {
                  var ar = w(Ge * Ge + (sr = Ae - sr) * sr), fr = Ae + he - ar;
                  return [ar / T(fr) * s(Ge, sr), fr];
                }, Be;
              }
              function ze() {
                return _e(Se).scale(123.082).center([0, 26.1441]).parallel(45);
              }
              function Ne(he) {
                function Ae(Be, Ge) {
                  var sr = v - Ge, ar = sr && Be * he * o(sr) / sr;
                  return [sr * o(ar) / he, v - sr * T(ar)];
                }
                return Ae.invert = function(Be, Ge) {
                  var sr = Be * he, ar = v - Ge, fr = w(sr * sr + ar * ar), Wr = s(sr, ar);
                  return [(fr ? fr / o(fr) : 1) * Wr / he, v - fr];
                }, Ae;
              }
              function Ve() {
                var he = 0.5, Ae = (0, b.U)(Ne), Be = Ae(he);
                return Be.fraction = function(Ge) {
                  return arguments.length ? Ae(he = +Ge) : he;
                }, Be.scale(158.837);
              }
              var Oe = Vt(1, 4 / c, c);
              function ur() {
                return (0, b.A)(Oe).scale(152.63);
              }
              var ie = e(30021), $t = e(30915);
              function jt(he, Ae, Be, Ge, sr, ar) {
                var fr = T(ar), Wr;
                if (P(he) > 1 || P(ar) > 1)
                  Wr = E(Be * sr + Ae * Ge * fr);
                else {
                  var Yr = o(he / 2), Pr = o(ar / 2);
                  Wr = 2 * h(w(Yr * Yr + Ae * Ge * Pr * Pr));
                }
                return P(Wr) > g ? [Wr, s(Ge * o(ar), Ae * sr - Be * Ge * fr)] : [0, 0];
              }
              function ee(he, Ae, Be) {
                return E((he * he + Ae * Ae - Be * Be) / (2 * he * Ae));
              }
              function Bt(he) {
                return he - 2 * c * p((he + c) / (2 * c));
              }
              function Xt(he, Ae, Be) {
                for (var Ge = [
                  [he[0], he[1], o(he[1]), T(he[1])],
                  [Ae[0], Ae[1], o(Ae[1]), T(Ae[1])],
                  [Be[0], Be[1], o(Be[1]), T(Be[1])]
                ], sr = Ge[2], ar, fr = 0; fr < 3; ++fr, sr = ar)
                  ar = Ge[fr], sr.v = jt(ar[1] - sr[1], sr[3], sr[2], ar[3], ar[2], ar[0] - sr[0]), sr.point = [0, 0];
                var Wr = ee(Ge[0].v[0], Ge[2].v[0], Ge[1].v[0]), Yr = ee(Ge[0].v[0], Ge[1].v[0], Ge[2].v[0]), Pr = c - Wr;
                Ge[2].point[1] = 0, Ge[0].point[0] = -(Ge[1].point[0] = Ge[0].v[0] / 2);
                var tn = [
                  Ge[2].point[0] = Ge[0].point[0] + Ge[2].v[0] * T(Wr),
                  2 * (Ge[0].point[1] = Ge[1].point[1] = Ge[2].v[0] * o(Wr))
                ];
                function un(dn, On) {
                  var ai = o(On), ri = T(On), gi = new Array(3), Ni;
                  for (Ni = 0; Ni < 3; ++Ni) {
                    var Ia = Ge[Ni];
                    if (gi[Ni] = jt(On - Ia[1], Ia[3], Ia[2], ri, ai, dn - Ia[0]), !gi[Ni][0]) return Ia.point;
                    gi[Ni][1] = Bt(gi[Ni][1] - Ia.v[1]);
                  }
                  var Pa = tn.slice();
                  for (Ni = 0; Ni < 3; ++Ni) {
                    var Fa = Ni == 2 ? 0 : Ni + 1, Ga = ee(Ge[Ni].v[0], gi[Ni][0], gi[Fa][0]);
                    gi[Ni][1] < 0 && (Ga = -Ga), Ni ? Ni == 1 ? (Ga = Yr - Ga, Pa[0] -= gi[Ni][0] * T(Ga), Pa[1] -= gi[Ni][0] * o(Ga)) : (Ga = Pr - Ga, Pa[0] += gi[Ni][0] * T(Ga), Pa[1] += gi[Ni][0] * o(Ga)) : (Pa[0] += gi[Ni][0] * T(Ga), Pa[1] -= gi[Ni][0] * o(Ga));
                  }
                  return Pa[0] /= 3, Pa[1] /= 3, Pa;
                }
                return un;
              }
              function Zt(he) {
                return he[0] *= L, he[1] *= L, he;
              }
              function ye() {
                return Mt([0, 22], [45, 22], [22.5, -22]).scale(380).center([22.5, 2]);
              }
              function Mt(he, Ae, Be) {
                var Ge = (0, ie.A)({ type: "MultiPoint", coordinates: [he, Ae, Be] }), sr = [-Ge[0], -Ge[1]], ar = (0, $t.A)(sr), fr = Xt(Zt(ar(he)), Zt(ar(Ae)), Zt(ar(Be)));
                fr.invert = Ct(fr);
                var Wr = (0, b.A)(fr).rotate(sr), Yr = Wr.center;
                return delete Wr.rotate, Wr.center = function(Pr) {
                  return arguments.length ? Yr(ar(Pr)) : ar.invert(Yr());
                }, Wr.clipAngle(90);
              }
              function St(he, Ae) {
                var Be = w(1 - o(Ae));
                return [2 / M * he * Be, M * (1 - Be)];
              }
              St.invert = function(he, Ae) {
                var Be = (Be = Ae / M - 1) * Be;
                return [Be > 0 ? he * w(c / Be) / 2 : 0, h(1 - Be)];
              };
              function Lt() {
                return (0, b.A)(St).scale(95.6464).center([0, 30]);
              }
              function te(he) {
                var Ae = y(he);
                function Be(Ge, sr) {
                  return [Ge, (Ge ? Ge / o(Ge) : 1) * (o(sr) * T(Ge) - Ae * T(sr))];
                }
                return Be.invert = Ae ? function(Ge, sr) {
                  Ge && (sr *= o(Ge) / Ge);
                  var ar = T(Ge);
                  return [Ge, 2 * s(w(ar * ar + Ae * Ae - sr * sr) - ar, Ae - sr)];
                } : function(Ge, sr) {
                  return [Ge, h(Ge ? sr * y(Ge) / Ge : sr)];
                }, Be;
              }
              function fe() {
                return _e(te).scale(249.828).clipAngle(90);
              }
              var Me = w(3);
              function ir(he, Ae) {
                return [Me * he * (2 * T(2 * Ae / 3) - 1) / M, Me * M * o(Ae / 3)];
              }
              ir.invert = function(he, Ae) {
                var Be = 3 * h(Ae / (Me * M));
                return [M * he / (Me * (2 * T(2 * Be / 3) - 1)), Be];
              };
              function mr() {
                return (0, b.A)(ir).scale(156.19);
              }
              function Xe(he) {
                var Ae = T(he);
                function Be(Ge, sr) {
                  return [Ge * Ae, o(sr) / Ae];
                }
                return Be.invert = function(Ge, sr) {
                  return [Ge / Ae, h(sr * Ae)];
                }, Be;
              }
              function xe() {
                return _e(Xe).parallel(38.58).scale(195.044);
              }
              function me(he) {
                var Ae = T(he);
                function Be(Ge, sr) {
                  return [Ge * Ae, (1 + Ae) * y(sr / 2)];
                }
                return Be.invert = function(Ge, sr) {
                  return [Ge / Ae, n(sr / (1 + Ae)) * 2];
                }, Be;
              }
              function Le() {
                return _e(me).scale(124.75);
              }
              function qt(he, Ae) {
                var Be = w(8 / (3 * c));
                return [
                  Be * he * (1 - P(Ae) / c),
                  Be * Ae
                ];
              }
              qt.invert = function(he, Ae) {
                var Be = w(8 / (3 * c)), Ge = Ae / Be;
                return [
                  he / (Be * (1 - P(Ge) / c)),
                  Ge
                ];
              };
              function De() {
                return (0, b.A)(qt).scale(165.664);
              }
              function Je(he, Ae) {
                var Be = w(4 - 3 * o(P(Ae)));
                return [
                  2 / w(6 * c) * he * Be,
                  l(Ae) * w(2 * c / 3) * (2 - Be)
                ];
              }
              Je.invert = function(he, Ae) {
                var Be = 2 - P(Ae) / w(2 * c / 3);
                return [
                  he * w(6 * c) / (2 * Be),
                  l(Ae) * h((4 - Be * Be) / 3)
                ];
              };
              function dr() {
                return (0, b.A)(Je).scale(165.664);
              }
              function qe(he, Ae) {
                var Be = w(c * (4 + c));
                return [
                  2 / Be * he * (1 + w(1 - 4 * Ae * Ae / (c * c))),
                  4 / Be * Ae
                ];
              }
              qe.invert = function(he, Ae) {
                var Be = w(c * (4 + c)) / 2;
                return [
                  he * Be / (1 + w(1 - Ae * Ae * (4 + c) / (4 * c))),
                  Ae * Be / 2
                ];
              };
              function we() {
                return (0, b.A)(qe).scale(180.739);
              }
              function ue(he, Ae) {
                var Be = (2 + v) * o(Ae);
                Ae /= 2;
                for (var Ge = 0, sr = 1 / 0; Ge < 10 && P(sr) > g; Ge++) {
                  var ar = T(Ae);
                  Ae -= sr = (Ae + o(Ae) * (ar + 2) - Be) / (2 * ar * (1 + ar));
                }
                return [
                  2 / w(c * (4 + c)) * he * (1 + T(Ae)),
                  2 * w(c / (4 + c)) * o(Ae)
                ];
              }
              ue.invert = function(he, Ae) {
                var Be = Ae * w((4 + c) / c) / 2, Ge = h(Be), sr = T(Ge);
                return [
                  he / (2 / w(c * (4 + c)) * (1 + sr)),
                  h((Ge + Be * (sr + 2)) / (2 + v))
                ];
              };
              function Pe() {
                return (0, b.A)(ue).scale(180.739);
              }
              function Ue(he, Ae) {
                return [
                  he * (1 + T(Ae)) / w(2 + c),
                  2 * Ae / w(2 + c)
                ];
              }
              Ue.invert = function(he, Ae) {
                var Be = w(2 + c), Ge = Ae * Be / 2;
                return [
                  Be * he / (1 + T(Ge)),
                  Ge
                ];
              };
              function Ye() {
                return (0, b.A)(Ue).scale(173.044);
              }
              function rr(he, Ae) {
                for (var Be = (1 + v) * o(Ae), Ge = 0, sr = 1 / 0; Ge < 10 && P(sr) > g; Ge++)
                  Ae -= sr = (Ae + o(Ae) - Be) / (1 + T(Ae));
                return Be = w(2 + c), [
                  he * (1 + T(Ae)) / Be,
                  2 * Ae / Be
                ];
              }
              rr.invert = function(he, Ae) {
                var Be = 1 + v, Ge = w(Be / 2);
                return [
                  he * 2 * Ge / (1 + T(Ae *= Ge)),
                  h((Ae + o(Ae)) / Be)
                ];
              };
              function lr() {
                return (0, b.A)(rr).scale(173.044);
              }
              var hr = 3 + 2 * S;
              function Sr(he, Ae) {
                var Be = o(he /= 2), Ge = T(he), sr = w(T(Ae)), ar = T(Ae /= 2), fr = o(Ae) / (ar + S * Ge * sr), Wr = w(2 / (1 + fr * fr)), Yr = w((S * ar + (Ge + Be) * sr) / (S * ar + (Ge - Be) * sr));
                return [
                  hr * (Wr * (Yr - 1 / Yr) - 2 * u(Yr)),
                  hr * (Wr * fr * (Yr + 1 / Yr) - 2 * n(fr))
                ];
              }
              Sr.invert = function(he, Ae) {
                if (!(ar = vt.invert(he / 1.2, Ae * 1.065))) return null;
                var Be = ar[0], Ge = ar[1], sr = 20, ar;
                he /= hr, Ae /= hr;
                do {
                  var fr = Be / 2, Wr = Ge / 2, Yr = o(fr), Pr = T(fr), tn = o(Wr), un = T(Wr), dn = T(Ge), On = w(dn), ai = tn / (un + S * Pr * On), ri = ai * ai, gi = w(2 / (1 + ri)), Ni = S * un + (Pr + Yr) * On, Ia = S * un + (Pr - Yr) * On, Pa = Ni / Ia, Fa = w(Pa), Ga = Fa - 1 / Fa, Na = Fa + 1 / Fa, To = gi * Ga - 2 * u(Fa) - he, Do = gi * ai * Na - 2 * n(ai) - Ae, gt = tn && _ * On * Yr * ri / tn, Ft = (S * Pr * un + On) / (2 * (un + S * Pr * On) * (un + S * Pr * On) * On), Kt = -0.5 * ai * gi * gi * gi, pe = Kt * gt, Te = Kt * Ft, Ce = (Ce = 2 * un + S * On * (Pr - Yr)) * Ce * Fa, er = (S * Pr * un * On + dn) / Ce, We = -(S * Yr * tn) / (On * Ce), gr = Ga * pe - 2 * er / Fa + gi * (er + er / Pa), xr = Ga * Te - 2 * We / Fa + gi * (We + We / Pa), kr = ai * Na * pe - 2 * gt / (1 + ri) + gi * Na * gt + gi * ai * (er - er / Pa), an = ai * Na * Te - 2 * Ft / (1 + ri) + gi * Na * Ft + gi * ai * (We - We / Pa), on = xr * kr - an * gr;
                  if (!on) break;
                  var Ln = (Do * xr - To * an) / on, Hn = (To * kr - Do * gr) / on;
                  Be -= Ln, Ge = t(-v, r(v, Ge - Hn));
                } while ((P(Ln) > g || P(Hn) > g) && --sr > 0);
                return P(P(Ge) - v) < g ? [0, Ge] : sr && [Be, Ge];
              };
              function Dr() {
                return (0, b.A)(Sr).scale(62.5271);
              }
              var Or = T(35 * L);
              function Br(he, Ae) {
                var Be = y(Ae / 2);
                return [he * Or * w(1 - Be * Be), (1 + Or) * Be];
              }
              Br.invert = function(he, Ae) {
                var Be = Ae / (1 + Or);
                return [he && he / (Or * w(1 - Be * Be)), 2 * n(Be)];
              };
              function Nr() {
                return (0, b.A)(Br).scale(137.152);
              }
              function Xr(he, Ae) {
                var Be = Ae / 2, Ge = T(Be);
                return [2 * he / M * T(Ae) * Ge * Ge, M * y(Be)];
              }
              Xr.invert = function(he, Ae) {
                var Be = n(Ae / M), Ge = T(Be), sr = 2 * Be;
                return [he * M / 2 / (T(sr) * Ge * Ge), sr];
              };
              function Gr() {
                return (0, b.A)(Xr).scale(135.264);
              }
              function oe(he) {
                var Ae = 1 - he, Be = ar(c, 0)[0] - ar(-c, 0)[0], Ge = ar(0, v)[1] - ar(0, -v)[1], sr = w(2 * Ge / Be);
                function ar(Yr, Pr) {
                  var tn = T(Pr), un = o(Pr);
                  return [
                    tn / (Ae + he * tn) * Yr,
                    Ae * Pr + he * un
                  ];
                }
                function fr(Yr, Pr) {
                  var tn = ar(Yr, Pr);
                  return [tn[0] * sr, tn[1] / sr];
                }
                function Wr(Yr) {
                  return fr(0, Yr)[1];
                }
                return fr.invert = function(Yr, Pr) {
                  var tn = Et(Wr, Pr), un = Yr / sr * (he + Ae / T(tn));
                  return [un, tn];
                }, fr;
              }
              function de() {
                var he = 0.5, Ae = (0, b.U)(oe), Be = Ae(he);
                return Be.alpha = function(Ge) {
                  return arguments.length ? Ae(he = +Ge) : he;
                }, Be.scale(168.725);
              }
              var or = e(53253), Er = e(18139);
              function Tr(he) {
                return [he[0] / 2, h(y(he[1] / 2 * L)) * m];
              }
              function tr(he) {
                return [he[0] * 2, 2 * n(o(he[1] * L)) * m];
              }
              function yr(he) {
                he == null && (he = or.A);
                var Ae = he(), Be = (0, Er.A)().scale(m).precision(0).clipAngle(null).translate([0, 0]);
                function Ge(ar) {
                  return Ae(Tr(ar));
                }
                Ae.invert && (Ge.invert = function(ar) {
                  return tr(Ae.invert(ar));
                }), Ge.stream = function(ar) {
                  var fr = Ae.stream(ar), Wr = Be.stream({
                    point: function(Yr, Pr) {
                      fr.point(Yr / 2, h(y(-Pr / 2 * L)) * m);
                    },
                    lineStart: function() {
                      fr.lineStart();
                    },
                    lineEnd: function() {
                      fr.lineEnd();
                    },
                    polygonStart: function() {
                      fr.polygonStart();
                    },
                    polygonEnd: function() {
                      fr.polygonEnd();
                    }
                  });
                  return Wr.sphere = fr.sphere, Wr;
                };
                function sr(ar) {
                  Ge[ar] = function() {
                    return arguments.length ? (Ae[ar].apply(Ae, arguments), Ge) : Ae[ar]();
                  };
                }
                return Ge.rotate = function(ar) {
                  return arguments.length ? (Be.rotate(ar), Ge) : Be.rotate();
                }, Ge.center = function(ar) {
                  return arguments.length ? (Ae.center(Tr(ar)), Ge) : tr(Ae.center());
                }, sr("angle"), sr("clipAngle"), sr("clipExtent"), sr("fitExtent"), sr("fitHeight"), sr("fitSize"), sr("fitWidth"), sr("scale"), sr("translate"), sr("precision"), Ge.scale(249.5);
              }
              function Ir(he, Ae) {
                var Be = 2 * c / Ae, Ge = he * he;
                function sr(ar, fr) {
                  var Wr = (0, ut.j)(ar, fr), Yr = Wr[0], Pr = Wr[1], tn = Yr * Yr + Pr * Pr;
                  if (tn > Ge) {
                    var un = w(tn), dn = s(Pr, Yr), On = Be * a(dn / Be), ai = dn - On, ri = he * T(ai), gi = (he * o(ai) - ai * o(ri)) / (v - ri), Ni = Cr(ai, gi), Ia = (c - he) / _r(Ni, ri, c);
                    Yr = un;
                    var Pa = 50, Fa;
                    do
                      Yr -= Fa = (he + _r(Ni, ri, Yr) * Ia - un) / (Ni(Yr) * Ia);
                    while (P(Fa) > g && --Pa > 0);
                    Pr = ai * o(Yr), Yr < v && (Pr -= gi * (Yr - v));
                    var Ga = o(On), Na = T(On);
                    Wr[0] = Yr * Na - Pr * Ga, Wr[1] = Yr * Ga + Pr * Na;
                  }
                  return Wr;
                }
                return sr.invert = function(ar, fr) {
                  var Wr = ar * ar + fr * fr;
                  if (Wr > Ge) {
                    var Yr = w(Wr), Pr = s(fr, ar), tn = Be * a(Pr / Be), un = Pr - tn;
                    ar = Yr * T(un), fr = Yr * o(un);
                    for (var dn = ar - v, On = o(ar), ai = fr / On, ri = ar < v ? 1 / 0 : 0, gi = 10; ; ) {
                      var Ni = he * o(ai), Ia = he * T(ai), Pa = o(Ia), Fa = v - Ia, Ga = (Ni - ai * Pa) / Fa, Na = Cr(ai, Ga);
                      if (P(ri) < x || !--gi) break;
                      ai -= ri = (ai * On - Ga * dn - fr) / (On - dn * 2 * (Fa * (Ia + ai * Ni * T(Ia) - Pa) - Ni * (Ni - ai * Pa)) / (Fa * Fa));
                    }
                    Yr = he + _r(Na, Ia, ar) * (c - he) / _r(Na, Ia, c), Pr = tn + ai, ar = Yr * T(Pr), fr = Yr * o(Pr);
                  }
                  return ut.j.invert(ar, fr);
                }, sr;
              }
              function Cr(he, Ae) {
                return function(Be) {
                  var Ge = he * T(Be);
                  return Be < v && (Ge -= Ae), w(1 + Ge * Ge);
                };
              }
              function _r(he, Ae, Be) {
                for (var Ge = 50, sr = (Be - Ae) / Ge, ar = he(Ae) + he(Be), fr = 1, Wr = Ae; fr < Ge; ++fr) ar += 2 * he(Wr += sr);
                return ar * 0.5 * sr;
              }
              function Zr() {
                var he = 6, Ae = 30 * L, Be = T(Ae), Ge = o(Ae), sr = (0, b.U)(Ir), ar = sr(Ae, he), fr = ar.stream, Wr = 0.01, Yr = -T(Wr * L), Pr = o(Wr * L);
                return ar.radius = function(tn) {
                  return arguments.length ? (Be = T(Ae = tn * L), Ge = o(Ae), sr(Ae, he)) : Ae * m;
                }, ar.lobes = function(tn) {
                  return arguments.length ? sr(Ae, he = +tn) : he;
                }, ar.stream = function(tn) {
                  var un = ar.rotate(), dn = fr(tn), On = (ar.rotate([0, 0]), fr(tn));
                  return ar.rotate(un), dn.sphere = function() {
                    On.polygonStart(), On.lineStart();
                    for (var ai = 0, ri = 2 * c / he, gi = 0; ai < he; ++ai, gi -= ri)
                      On.point(s(Pr * T(gi), Yr) * m, h(Pr * o(gi)) * m), On.point(s(Ge * T(gi - ri / 2), Be) * m, h(Ge * o(gi - ri / 2)) * m);
                    On.lineEnd(), On.polygonEnd();
                  }, dn;
                }, ar.rotate([90, -40]).scale(91.7095).clipAngle(179.999);
              }
              function ln(he, Ae, Be, Ge, sr, ar, fr, Wr) {
                arguments.length < 8 && (Wr = 0);
                function Yr(Pr, tn) {
                  if (!tn) return [he * Pr / c, 0];
                  var un = tn * tn, dn = he + un * (Ae + un * (Be + un * Ge)), On = tn * (sr - 1 + un * (ar - Wr + un * fr)), ai = (dn * dn + On * On) / (2 * On), ri = Pr * h(dn / ai) / c;
                  return [ai * o(ri), tn * (1 + un * Wr) + ai * (1 - T(ri))];
                }
                return Yr.invert = function(Pr, tn) {
                  var un = c * Pr / he, dn = tn, On, ai, ri = 50;
                  do {
                    var gi = dn * dn, Ni = he + gi * (Ae + gi * (Be + gi * Ge)), Ia = dn * (sr - 1 + gi * (ar - Wr + gi * fr)), Pa = Ni * Ni + Ia * Ia, Fa = 2 * Ia, Ga = Pa / Fa, Na = Ga * Ga, To = h(Ni / Ga) / c, Do = un * To, gt = Ni * Ni, Ft = (2 * Ae + gi * (4 * Be + gi * 6 * Ge)) * dn, Kt = sr + gi * (3 * ar + gi * 5 * fr), pe = 2 * (Ni * Ft + Ia * (Kt - 1)), Te = 2 * (Kt - 1), Ce = (pe * Fa - Pa * Te) / (Fa * Fa), er = T(Do), We = o(Do), gr = Ga * er, xr = Ga * We, kr = un / c * (1 / w(1 - gt / Na)) * (Ft * Ga - Ni * Ce) / Na, an = xr - Pr, on = dn * (1 + gi * Wr) + Ga - gr - tn, Ln = Ce * We + gr * kr, Hn = gr * To, cn = 1 + Ce - (Ce * er - xr * kr), xn = xr * To, Pn = Ln * xn - cn * Hn;
                    if (!Pn) break;
                    un -= On = (on * Ln - an * cn) / Pn, dn -= ai = (an * xn - on * Hn) / Pn;
                  } while ((P(On) > g || P(ai) > g) && --ri > 0);
                  return [un, dn];
                }, Yr;
              }
              var Jr = ln(2.8284, -1.6988, 0.75432, -0.18071, 1.76003, -0.38914, 0.042555);
              function Zn() {
                return (0, b.A)(Jr).scale(149.995);
              }
              var fn = ln(2.583819, -0.835827, 0.170354, -0.038094, 1.543313, -0.411435, 0.082742);
              function hi() {
                return (0, b.A)(fn).scale(153.93);
              }
              var Vn = ln(5 / 6 * c, -0.62636, -0.0344, 0, 1.3493, -0.05524, 0, 0.045);
              function jr() {
                return (0, b.A)(Vn).scale(130.945);
              }
              function zr(he, Ae) {
                var Be = he * he, Ge = Ae * Ae;
                return [
                  he * (1 - 0.162388 * Ge) * (0.87 - 952426e-9 * Be * Be),
                  Ae * (1 + Ge / 12)
                ];
              }
              zr.invert = function(he, Ae) {
                var Be = he, Ge = Ae, sr = 50, ar;
                do {
                  var fr = Ge * Ge;
                  Ge -= ar = (Ge * (1 + fr / 12) - Ae) / (1 + fr / 4);
                } while (P(ar) > g && --sr > 0);
                sr = 50, he /= 1 - 0.162388 * fr;
                do {
                  var Wr = (Wr = Be * Be) * Wr;
                  Be -= ar = (Be * (0.87 - 952426e-9 * Wr) - he) / (0.87 - 476213e-8 * Wr);
                } while (P(ar) > g && --sr > 0);
                return [Be, Ge];
              };
              function Tn() {
                return (0, b.A)(zr).scale(131.747);
              }
              var sn = ln(2.6516, -0.76534, 0.19123, -0.047094, 1.36289, -0.13965, 0.031762);
              function $n() {
                return (0, b.A)(sn).scale(131.087);
              }
              function kn(he) {
                var Ae = he(v, 0)[0] - he(-v, 0)[0];
                function Be(Ge, sr) {
                  var ar = Ge > 0 ? -0.5 : 0.5, fr = he(Ge + ar * c, sr);
                  return fr[0] -= ar * Ae, fr;
                }
                return he.invert && (Be.invert = function(Ge, sr) {
                  var ar = Ge > 0 ? -0.5 : 0.5, fr = he.invert(Ge + ar * Ae, sr), Wr = fr[0] - ar * c;
                  return Wr < -c ? Wr += 2 * c : Wr > c && (Wr -= 2 * c), fr[0] = Wr, fr;
                }), Be;
              }
              function An(he, Ae) {
                var Be = l(he), Ge = l(Ae), sr = T(Ae), ar = T(he) * sr, fr = o(he) * sr, Wr = o(Ge * Ae);
                he = P(s(fr, Wr)), Ae = h(ar), P(he - v) > g && (he %= v);
                var Yr = qn(he > c / 4 ? v - he : he, Ae);
                return he > c / 4 && (Wr = Yr[0], Yr[0] = -Yr[1], Yr[1] = -Wr), Yr[0] *= Be, Yr[1] *= -Ge, Yr;
              }
              An.invert = function(he, Ae) {
                P(he) > 1 && (he = l(he) * 2 - he), P(Ae) > 1 && (Ae = l(Ae) * 2 - Ae);
                var Be = l(he), Ge = l(Ae), sr = -Be * he, ar = -Ge * Ae, fr = ar / sr < 1, Wr = si(fr ? ar : sr, fr ? sr : ar), Yr = Wr[0], Pr = Wr[1], tn = T(Pr);
                return fr && (Yr = -v - Yr), [Be * (s(o(Yr) * tn, -o(Pr)) + c), Ge * h(T(Yr) * tn)];
              };
              function qn(he, Ae) {
                if (Ae === v) return [0, 0];
                var Be = o(Ae), Ge = Be * Be, sr = Ge * Ge, ar = 1 + sr, fr = 1 + 3 * sr, Wr = 1 - sr, Yr = h(1 / w(ar)), Pr = Wr + Ge * ar * Yr, tn = (1 - Be) / Pr, un = w(tn), dn = tn * ar, On = w(dn), ai = un * Wr, ri, gi;
                if (he === 0) return [0, -(ai + Ge * On)];
                var Ni = T(Ae), Ia = 1 / Ni, Pa = 2 * Be * Ni, Fa = (-3 * Ge + Yr * fr) * Pa, Ga = (-Pr * Ni - (1 - Be) * Fa) / (Pr * Pr), Na = 0.5 * Ga / un, To = Wr * Na - 2 * Ge * un * Pa, Do = Ge * ar * Ga + tn * fr * Pa, gt = -Ia * Pa, Ft = -Ia * Do, Kt = -2 * Ia * To, pe = 4 * he / c, Te;
                if (he > 0.222 * c || Ae < c / 4 && he > 0.175 * c) {
                  if (ri = (ai + Ge * w(dn * (1 + sr) - ai * ai)) / (1 + sr), he > c / 4) return [ri, ri];
                  var Ce = ri, er = 0.5 * ri;
                  ri = 0.5 * (er + Ce), gi = 50;
                  do {
                    var We = w(dn - ri * ri), gr = ri * (Kt + gt * We) + Ft * h(ri / On) - pe;
                    if (!gr) break;
                    gr < 0 ? er = ri : Ce = ri, ri = 0.5 * (er + Ce);
                  } while (P(Ce - er) > g && --gi > 0);
                } else {
                  ri = g, gi = 25;
                  do {
                    var xr = ri * ri, kr = w(dn - xr), an = Kt + gt * kr, on = ri * an + Ft * h(ri / On) - pe, Ln = an + (Ft - gt * xr) / kr;
                    ri -= Te = kr ? on / Ln : 0;
                  } while (P(Te) > g && --gi > 0);
                }
                return [ri, -ai - Ge * w(dn - ri * ri)];
              }
              function si(he, Ae) {
                for (var Be = 0, Ge = 1, sr = 0.5, ar = 50; ; ) {
                  var fr = sr * sr, Wr = w(sr), Yr = h(1 / w(1 + fr)), Pr = 1 - fr + sr * (1 + fr) * Yr, tn = (1 - Wr) / Pr, un = w(tn), dn = tn * (1 + fr), On = un * (1 - fr), ai = dn - he * he, ri = w(ai), gi = Ae + On + sr * ri;
                  if (P(Ge - Be) < x || --ar === 0 || gi === 0) break;
                  gi > 0 ? Be = sr : Ge = sr, sr = 0.5 * (Be + Ge);
                }
                if (!ar) return null;
                var Ni = h(Wr), Ia = T(Ni), Pa = 1 / Ia, Fa = 2 * Wr * Ia, Ga = (-3 * sr + Yr * (1 + 3 * fr)) * Fa, Na = (-Pr * Ia - (1 - Wr) * Ga) / (Pr * Pr), To = 0.5 * Na / un, Do = (1 - fr) * To - 2 * sr * un * Fa, gt = -2 * Pa * Do, Ft = -Pa * Fa, Kt = -Pa * (sr * (1 + fr) * Na + tn * (1 + 3 * fr) * Fa);
                return [c / 4 * (he * (gt + Ft * ri) + Kt * h(he / w(dn))), Ni];
              }
              function qi() {
                return (0, b.A)(kn(An)).scale(239.75);
              }
              function ha(he, Ae, Be) {
                var Ge, sr, ar;
                return he ? (Ge = Mi(he, Be), Ae ? (sr = Mi(Ae, 1 - Be), ar = sr[1] * sr[1] + Be * Ge[0] * Ge[0] * sr[0] * sr[0], [
                  [Ge[0] * sr[2] / ar, Ge[1] * Ge[2] * sr[0] * sr[1] / ar],
                  [Ge[1] * sr[1] / ar, -Ge[0] * Ge[2] * sr[0] * sr[2] / ar],
                  [Ge[2] * sr[1] * sr[2] / ar, -Be * Ge[0] * Ge[1] * sr[0] / ar]
                ]) : [[Ge[0], 0], [Ge[1], 0], [Ge[2], 0]]) : (sr = Mi(Ae, 1 - Be), [
                  [0, sr[0] / sr[1]],
                  [1 / sr[1], 0],
                  [sr[2] / sr[1], 0]
                ]);
              }
              function Mi(he, Ae) {
                var Be, Ge, sr, ar, fr;
                if (Ae < g)
                  return ar = o(he), Ge = T(he), Be = Ae * (he - ar * Ge) / 4, [
                    ar - Be * Ge,
                    Ge + Be * ar,
                    1 - Ae * ar * ar / 2,
                    he - Be
                  ];
                if (Ae >= 1 - g)
                  return Be = (1 - Ae) / 4, Ge = B(he), ar = z(he), sr = 1 / Ge, fr = Ge * O(he), [
                    ar + Be * (fr - he) / (Ge * Ge),
                    sr - Be * ar * sr * (fr - he),
                    sr + Be * ar * sr * (fr + he),
                    2 * n(A(he)) - v + Be * (fr - he) / Ge
                  ];
                var Wr = [1, 0, 0, 0, 0, 0, 0, 0, 0], Yr = [w(Ae), 0, 0, 0, 0, 0, 0, 0, 0], Pr = 0;
                for (Ge = w(1 - Ae), fr = 1; P(Yr[Pr] / Wr[Pr]) > g && Pr < 8; )
                  Be = Wr[Pr++], Yr[Pr] = (Be - Ge) / 2, Wr[Pr] = (Be + Ge) / 2, Ge = w(Be * Ge), fr *= 2;
                sr = fr * Wr[Pr] * he;
                do
                  ar = Yr[Pr] * o(Ge = sr) / Wr[Pr], sr = (h(ar) + sr) / 2;
                while (--Pr);
                return [o(sr), ar = T(sr), ar / T(sr - Ge), sr];
              }
              function Ji(he, Ae, Be) {
                var Ge = P(he), sr = P(Ae), ar = O(sr);
                if (Ge) {
                  var fr = 1 / o(Ge), Wr = 1 / (y(Ge) * y(Ge)), Yr = -(Wr + Be * (ar * ar * fr * fr) - 1 + Be), Pr = (Be - 1) * Wr, tn = (-Yr + w(Yr * Yr - 4 * Pr)) / 2;
                  return [
                    ci(n(1 / w(tn)), Be) * l(he),
                    ci(n(w((tn / Wr - 1) / Be)), 1 - Be) * l(Ae)
                  ];
                }
                return [
                  0,
                  ci(n(ar), 1 - Be) * l(Ae)
                ];
              }
              function ci(he, Ae) {
                if (!Ae) return he;
                if (Ae === 1) return u(y(he / 2 + f));
                for (var Be = 1, Ge = w(1 - Ae), sr = w(Ae), ar = 0; P(sr) > g; ar++) {
                  if (he % c) {
                    var fr = n(Ge * y(he) / Be);
                    fr < 0 && (fr += c), he += fr + ~~(he / c) * c;
                  } else he += he;
                  sr = (Be + Ge) / 2, Ge = w(Be * Ge), sr = ((Be = sr) - Ge) / 2;
                }
                return he / (i(2, ar) * Be);
              }
              function rn(he, Ae) {
                var Be = (S - 1) / (S + 1), Ge = w(1 - Be * Be), sr = ci(v, Ge * Ge), ar = -1, fr = u(y(c / 4 + P(Ae) / 2)), Wr = A(ar * fr) / w(Be), Yr = Cn(Wr * T(ar * he), Wr * o(ar * he)), Pr = Ji(Yr[0], Yr[1], Ge * Ge);
                return [-Pr[1], (Ae >= 0 ? 1 : -1) * (0.5 * sr - Pr[0])];
              }
              function Cn(he, Ae) {
                var Be = he * he, Ge = Ae + 1, sr = 1 - Be - Ae * Ae;
                return [
                  0.5 * ((he >= 0 ? v : -v) - s(sr, 2 * he)),
                  -0.25 * u(sr * sr + 4 * Be) + 0.5 * u(Ge * Ge + Be)
                ];
              }
              function Un(he, Ae) {
                var Be = Ae[0] * Ae[0] + Ae[1] * Ae[1];
                return [
                  (he[0] * Ae[0] + he[1] * Ae[1]) / Be,
                  (he[1] * Ae[0] - he[0] * Ae[1]) / Be
                ];
              }
              rn.invert = function(he, Ae) {
                var Be = (S - 1) / (S + 1), Ge = w(1 - Be * Be), sr = ci(v, Ge * Ge), ar = -1, fr = ha(0.5 * sr - Ae, -he, Ge * Ge), Wr = Un(fr[0], fr[1]), Yr = s(Wr[1], Wr[0]) / ar;
                return [
                  Yr,
                  2 * n(A(0.5 / ar * u(Be * Wr[0] * Wr[0] + Be * Wr[1] * Wr[1]))) - v
                ];
              };
              function Fn() {
                return (0, b.A)(kn(rn)).scale(151.496);
              }
              var mi = e(39127);
              function Nn(he) {
                var Ae = o(he), Be = T(he), Ge = di(he);
                Ge.invert = di(-he);
                function sr(ar, fr) {
                  var Wr = Ge(ar, fr);
                  ar = Wr[0], fr = Wr[1];
                  var Yr = o(fr), Pr = T(fr), tn = T(ar), un = E(Ae * Yr + Be * Pr * tn), dn = o(un), On = P(dn) > g ? un / dn : 1;
                  return [
                    On * Be * o(ar),
                    (P(ar) > v ? On : -On) * (Ae * Pr - Be * Yr * tn)
                  ];
                }
                return sr.invert = function(ar, fr) {
                  var Wr = w(ar * ar + fr * fr), Yr = -o(Wr), Pr = T(Wr), tn = Wr * Pr, un = -fr * Yr, dn = Wr * Ae, On = w(tn * tn + un * un - dn * dn), ai = s(tn * dn + un * On, un * dn - tn * On), ri = (Wr > v ? -1 : 1) * s(ar * Yr, Wr * T(ai) * Pr + fr * o(ai) * Yr);
                  return Ge.invert(ri, ai);
                }, sr;
              }
              function di(he) {
                var Ae = o(he), Be = T(he);
                return function(Ge, sr) {
                  var ar = T(sr), fr = T(Ge) * ar, Wr = o(Ge) * ar, Yr = o(sr);
                  return [
                    s(Wr, fr * Be - Yr * Ae),
                    h(Yr * Be + fr * Ae)
                  ];
                };
              }
              function Ai() {
                var he = 0, Ae = (0, b.U)(Nn), Be = Ae(he), Ge = Be.rotate, sr = Be.stream, ar = (0, mi.A)();
                return Be.parallel = function(fr) {
                  if (!arguments.length) return he * m;
                  var Wr = Be.rotate();
                  return Ae(he = fr * L).rotate(Wr);
                }, Be.rotate = function(fr) {
                  return arguments.length ? (Ge.call(Be, [fr[0], fr[1] - he * m]), ar.center([-fr[0], -fr[1]]), Be) : (fr = Ge.call(Be), fr[1] += he * m, fr);
                }, Be.stream = function(fr) {
                  return fr = sr(fr), fr.sphere = function() {
                    fr.polygonStart();
                    var Wr = 0.01, Yr = ar.radius(90 - Wr)().coordinates[0], Pr = Yr.length - 1, tn = -1, un;
                    for (fr.lineStart(); ++tn < Pr; ) fr.point((un = Yr[tn])[0], un[1]);
                    for (fr.lineEnd(), Yr = ar.radius(90 + Wr)().coordinates[0], Pr = Yr.length - 1, fr.lineStart(); --tn >= 0; ) fr.point((un = Yr[tn])[0], un[1]);
                    fr.lineEnd(), fr.polygonEnd();
                  }, fr;
                }, Be.scale(79.4187).parallel(45).clipAngle(179.999);
              }
              var Gi = e(29725), ia = e(20465), Ca = 3, Qr = h(1 - 1 / Ca) * m, pn = Xe(0);
              function $r(he) {
                var Ae = Qr * L, Be = St(c, Ae)[0] - St(-c, Ae)[0], Ge = pn(0, Ae)[1], sr = St(0, Ae)[1], ar = M - sr, fr = C / he, Wr = 4 / C, Yr = Ge + ar * ar * 4 / C;
                function Pr(tn, un) {
                  var dn, On = P(un);
                  if (On > Ae) {
                    var ai = r(he - 1, t(0, p((tn + c) / fr)));
                    tn += c * (he - 1) / he - ai * fr, dn = St(tn, On), dn[0] = dn[0] * C / Be - C * (he - 1) / (2 * he) + ai * C / he, dn[1] = Ge + (dn[1] - sr) * 4 * ar / C, un < 0 && (dn[1] = -dn[1]);
                  } else
                    dn = pn(tn, un);
                  return dn[0] *= Wr, dn[1] /= Yr, dn;
                }
                return Pr.invert = function(tn, un) {
                  tn /= Wr, un *= Yr;
                  var dn = P(un);
                  if (dn > Ge) {
                    var On = r(he - 1, t(0, p((tn + c) / fr)));
                    tn = (tn + c * (he - 1) / he - On * fr) * Be / C;
                    var ai = St.invert(tn, 0.25 * (dn - Ge) * C / ar + sr);
                    return ai[0] -= c * (he - 1) / he - On * fr, un < 0 && (ai[1] = -ai[1]), ai;
                  }
                  return pn.invert(tn, un);
                }, Pr;
              }
              function mn(he, Ae) {
                return [he, Ae & 1 ? 90 - g : Qr];
              }
              function Wn(he, Ae) {
                return [he, Ae & 1 ? -90 + g : -Qr];
              }
              function yi(he) {
                return [he[0] * (1 - g), he[1]];
              }
              function ei(he) {
                var Ae = [].concat(
                  (0, Gi.y1)(-180, 180 + he / 2, he).map(mn),
                  (0, Gi.y1)(180, -180 - he / 2, -he).map(Wn)
                );
                return {
                  type: "Polygon",
                  coordinates: [he === 180 ? Ae.map(yi) : Ae]
                };
              }
              function Jn() {
                var he = 4, Ae = (0, b.U)($r), Be = Ae(he), Ge = Be.stream;
                return Be.lobes = function(sr) {
                  return arguments.length ? Ae(he = +sr) : he;
                }, Be.stream = function(sr) {
                  var ar = Be.rotate(), fr = Ge(sr), Wr = (Be.rotate([0, 0]), Ge(sr));
                  return Be.rotate(ar), fr.sphere = function() {
                    (0, ia.A)(ei(180 / he), Wr);
                  }, fr;
                }, Be.scale(239.75);
              }
              function en(he) {
                var Ae = 1 + he, Be = o(1 / Ae), Ge = h(Be), sr = 2 * w(c / (ar = c + 4 * Ge * Ae)), ar, fr = 0.5 * sr * (Ae + w(he * (2 + he))), Wr = he * he, Yr = Ae * Ae;
                function Pr(tn, un) {
                  var dn = 1 - o(un), On, ai;
                  if (dn && dn < 2) {
                    var ri = v - un, gi = 25, Ni;
                    do {
                      var Ia = o(ri), Pa = T(ri), Fa = Ge + s(Ia, Ae - Pa), Ga = 1 + Yr - 2 * Ae * Pa;
                      ri -= Ni = (ri - Wr * Ge - Ae * Ia + Ga * Fa - 0.5 * dn * ar) / (2 * Ae * Ia * Fa);
                    } while (P(Ni) > x && --gi > 0);
                    On = sr * w(Ga), ai = tn * Fa / c;
                  } else
                    On = sr * (he + dn), ai = tn * Ge / c;
                  return [
                    On * o(ai),
                    fr - On * T(ai)
                  ];
                }
                return Pr.invert = function(tn, un) {
                  var dn = tn * tn + (un -= fr) * un, On = (1 + Yr - dn / (sr * sr)) / (2 * Ae), ai = E(On), ri = o(ai), gi = Ge + s(ri, Ae - On);
                  return [
                    h(tn / w(dn)) * c / gi,
                    h(1 - 2 * (ai - Wr * Ge - Ae * ri + (1 + Yr - 2 * Ae * On) * gi) / ar)
                  ];
                }, Pr;
              }
              function Sn() {
                var he = 1, Ae = (0, b.U)(en), Be = Ae(he);
                return Be.ratio = function(Ge) {
                  return arguments.length ? Ae(he = +Ge) : he;
                }, Be.scale(167.774).center([0, 18.67]);
              }
              var wn = 0.7109889596207567, Dn = 0.0528035274542;
              function li(he, Ae) {
                return Ae > -wn ? (he = zt(he, Ae), he[1] += Dn, he) : ce(he, Ae);
              }
              li.invert = function(he, Ae) {
                return Ae > -wn ? zt.invert(he, Ae - Dn) : ce.invert(he, Ae);
              };
              function fi() {
                return (0, b.A)(li).rotate([-20, -55]).scale(164.263).center([0, -5.4036]);
              }
              function _i(he, Ae) {
                return P(Ae) > wn ? (he = zt(he, Ae), he[1] -= Ae > 0 ? Dn : -Dn, he) : ce(he, Ae);
              }
              _i.invert = function(he, Ae) {
                return P(Ae) > wn ? zt.invert(he, Ae + (Ae > 0 ? Dn : -Dn)) : ce.invert(he, Ae);
              };
              function Ti() {
                return (0, b.A)(_i).scale(152.63);
              }
              function bi(he, Ae, Be, Ge) {
                var sr = w(
                  4 * c / (2 * Be + (1 + he - Ae / 2) * o(2 * Be) + (he + Ae) / 2 * o(4 * Be) + Ae / 2 * o(6 * Be))
                ), ar = w(
                  Ge * o(Be) * w((1 + he * T(2 * Be) + Ae * T(4 * Be)) / (1 + he + Ae))
                ), fr = Be * Yr(1);
                function Wr(un) {
                  return w(1 + he * T(2 * un) + Ae * T(4 * un));
                }
                function Yr(un) {
                  var dn = un * Be;
                  return (2 * dn + (1 + he - Ae / 2) * o(2 * dn) + (he + Ae) / 2 * o(4 * dn) + Ae / 2 * o(6 * dn)) / Be;
                }
                function Pr(un) {
                  return Wr(un) * o(un);
                }
                var tn = function(un, dn) {
                  var On = Be * Et(Yr, fr * o(dn) / Be, dn / c);
                  isNaN(On) && (On = Be * l(dn));
                  var ai = sr * Wr(On);
                  return [ai * ar * un / c * T(On), ai / ar * o(On)];
                };
                return tn.invert = function(un, dn) {
                  var On = Et(Pr, dn * ar / sr);
                  return [
                    un * c / (T(On) * sr * ar * Wr(On)),
                    h(Be * Yr(On / Be) / fr)
                  ];
                }, Be === 0 && (sr = w(Ge / c), tn = function(un, dn) {
                  return [un * sr, o(dn) / sr];
                }, tn.invert = function(un, dn) {
                  return [un / sr, h(dn * sr)];
                }), tn;
              }
              function ki() {
                var he = 1, Ae = 0, Be = 45 * L, Ge = 2, sr = (0, b.U)(bi), ar = sr(he, Ae, Be, Ge);
                return ar.a = function(fr) {
                  return arguments.length ? sr(he = +fr, Ae, Be, Ge) : he;
                }, ar.b = function(fr) {
                  return arguments.length ? sr(he, Ae = +fr, Be, Ge) : Ae;
                }, ar.psiMax = function(fr) {
                  return arguments.length ? sr(he, Ae, Be = +fr * L, Ge) : Be * m;
                }, ar.ratio = function(fr) {
                  return arguments.length ? sr(he, Ae, Be, Ge = +fr) : Ge;
                }, ar.scale(180.739);
              }
              function Bi(he, Ae, Be, Ge, sr, ar, fr, Wr, Yr, Pr, tn) {
                if (tn.nanEncountered)
                  return NaN;
                var un, dn, On, ai, ri, gi, Ni, Ia, Pa, Fa;
                if (un = Be - Ae, dn = he(Ae + un * 0.25), On = he(Be - un * 0.25), isNaN(dn)) {
                  tn.nanEncountered = !0;
                  return;
                }
                if (isNaN(On)) {
                  tn.nanEncountered = !0;
                  return;
                }
                return ai = un * (Ge + 4 * dn + sr) / 12, ri = un * (sr + 4 * On + ar) / 12, gi = ai + ri, Fa = (gi - fr) / 15, Pr > Yr ? (tn.maxDepthCount++, gi + Fa) : Math.abs(Fa) < Wr ? gi + Fa : (Ni = Ae + un * 0.5, Ia = Bi(he, Ae, Ni, Ge, dn, sr, ai, Wr * 0.5, Yr, Pr + 1, tn), isNaN(Ia) ? (tn.nanEncountered = !0, NaN) : (Pa = Bi(he, Ni, Be, sr, On, ar, ri, Wr * 0.5, Yr, Pr + 1, tn), isNaN(Pa) ? (tn.nanEncountered = !0, NaN) : Ia + Pa));
              }
              function ra(he, Ae, Be, Ge, sr) {
                var ar = {
                  maxDepthCount: 0,
                  nanEncountered: !1
                };
                sr === void 0 && (sr = 20);
                var fr = he(Ae), Wr = he(0.5 * (Ae + Be)), Yr = he(Be), Pr = (fr + 4 * Wr + Yr) * (Be - Ae) / 6, tn = Bi(he, Ae, Be, fr, Wr, Yr, Pr, Ge, sr, 1, ar);
                return tn;
              }
              function Ea(he, Ae, Be) {
                function Ge(On) {
                  return he + (1 - he) * i(1 - i(On, Ae), 1 / Ae);
                }
                function sr(On) {
                  return ra(Ge, 0, On, 1e-4);
                }
                for (var ar = 1 / sr(1), fr = 1e3, Wr = (1 + 1e-8) * ar, Yr = [], Pr = 0; Pr <= fr; Pr++)
                  Yr.push(sr(Pr / fr) * Wr);
                function tn(On) {
                  var ai = 0, ri = fr, gi = fr >> 1;
                  do
                    Yr[gi] > On ? ri = gi : ai = gi, gi = ai + ri >> 1;
                  while (gi > ai);
                  var Ni = Yr[gi + 1] - Yr[gi];
                  return Ni && (Ni = (On - Yr[gi + 1]) / Ni), (gi + 1 + Ni) / fr;
                }
                var un = 2 * tn(1) / c * ar / Be, dn = function(On, ai) {
                  var ri = tn(P(o(ai))), gi = Ge(ri) * On;
                  return ri /= un, [gi, ai >= 0 ? ri : -ri];
                };
                return dn.invert = function(On, ai) {
                  var ri;
                  return ai *= un, P(ai) < 1 && (ri = l(ai) * h(sr(P(ai)) * ar)), [On / Ge(P(ai)), ri];
                }, dn;
              }
              function Io() {
                var he = 0, Ae = 2.5, Be = 1.183136, Ge = (0, b.U)(Ea), sr = Ge(he, Ae, Be);
                return sr.alpha = function(ar) {
                  return arguments.length ? Ge(he = +ar, Ae, Be) : he;
                }, sr.k = function(ar) {
                  return arguments.length ? Ge(he, Ae = +ar, Be) : Ae;
                }, sr.gamma = function(ar) {
                  return arguments.length ? Ge(he, Ae, Be = +ar) : Be;
                }, sr.scale(152.63);
              }
              function go(he, Ae) {
                return P(he[0] - Ae[0]) < g && P(he[1] - Ae[1]) < g;
              }
              function Ss(he, Ae) {
                for (var Be = -1, Ge = he.length, sr = he[0], ar, fr, Wr, Yr = []; ++Be < Ge; ) {
                  ar = he[Be], fr = (ar[0] - sr[0]) / Ae, Wr = (ar[1] - sr[1]) / Ae;
                  for (var Pr = 0; Pr < Ae; ++Pr) Yr.push([sr[0] + Pr * fr, sr[1] + Pr * Wr]);
                  sr = ar;
                }
                return Yr.push(ar), Yr;
              }
              function Bs(he) {
                var Ae = [], Be, Ge, sr, ar, fr, Wr, Yr, Pr = he[0].length;
                for (Yr = 0; Yr < Pr; ++Yr)
                  Be = he[0][Yr], Ge = Be[0][0], sr = Be[0][1], ar = Be[1][1], fr = Be[2][0], Wr = Be[2][1], Ae.push(Ss([
                    [Ge + g, sr + g],
                    [Ge + g, ar - g],
                    [fr - g, ar - g],
                    [fr - g, Wr + g]
                  ], 30));
                for (Yr = he[1].length - 1; Yr >= 0; --Yr)
                  Be = he[1][Yr], Ge = Be[0][0], sr = Be[0][1], ar = Be[1][1], fr = Be[2][0], Wr = Be[2][1], Ae.push(Ss([
                    [fr - g, Wr - g],
                    [fr - g, ar + g],
                    [Ge + g, ar + g],
                    [Ge + g, sr - g]
                  ], 30));
                return {
                  type: "Polygon",
                  coordinates: [(0, Gi.Am)(Ae)]
                };
              }
              function so(he, Ae, Be) {
                var Ge, sr;
                function ar(Yr, Pr) {
                  for (var tn = Pr < 0 ? -1 : 1, un = Ae[+(Pr < 0)], dn = 0, On = un.length - 1; dn < On && Yr > un[dn][2][0]; ++dn) ;
                  var ai = he(Yr - un[dn][1][0], Pr);
                  return ai[0] += he(un[dn][1][0], tn * Pr > tn * un[dn][0][1] ? un[dn][0][1] : Pr)[0], ai;
                }
                Be ? ar.invert = Be(ar) : he.invert && (ar.invert = function(Yr, Pr) {
                  for (var tn = sr[+(Pr < 0)], un = Ae[+(Pr < 0)], dn = 0, On = tn.length; dn < On; ++dn) {
                    var ai = tn[dn];
                    if (ai[0][0] <= Yr && Yr < ai[1][0] && ai[0][1] <= Pr && Pr < ai[1][1]) {
                      var ri = he.invert(Yr - he(un[dn][1][0], 0)[0], Pr);
                      return ri[0] += un[dn][1][0], go(ar(ri[0], ri[1]), [Yr, Pr]) ? ri : null;
                    }
                  }
                });
                var fr = (0, b.A)(ar), Wr = fr.stream;
                return fr.stream = function(Yr) {
                  var Pr = fr.rotate(), tn = Wr(Yr), un = (fr.rotate([0, 0]), Wr(Yr));
                  return fr.rotate(Pr), tn.sphere = function() {
                    (0, ia.A)(Ge, un);
                  }, tn;
                }, fr.lobes = function(Yr) {
                  return arguments.length ? (Ge = Bs(Yr), Ae = Yr.map(function(Pr) {
                    return Pr.map(function(tn) {
                      return [
                        [tn[0][0] * L, tn[0][1] * L],
                        [tn[1][0] * L, tn[1][1] * L],
                        [tn[2][0] * L, tn[2][1] * L]
                      ];
                    });
                  }), sr = Ae.map(function(Pr) {
                    return Pr.map(function(tn) {
                      var un = he(tn[0][0], tn[0][1])[0], dn = he(tn[2][0], tn[2][1])[0], On = he(tn[1][0], tn[0][1])[1], ai = he(tn[1][0], tn[1][1])[1], ri;
                      return On > ai && (ri = On, On = ai, ai = ri), [[un, On], [dn, ai]];
                    });
                  }), fr) : Ae.map(function(Pr) {
                    return Pr.map(function(tn) {
                      return [
                        [tn[0][0] * m, tn[0][1] * m],
                        [tn[1][0] * m, tn[1][1] * m],
                        [tn[2][0] * m, tn[2][1] * m]
                      ];
                    });
                  });
                }, Ae != null && fr.lobes(Ae), fr;
              }
              var Ql = [[
                // northern hemisphere
                [[-180, 0], [-100, 90], [-40, 0]],
                [[-40, 0], [30, 90], [180, 0]]
              ], [
                // southern hemisphere
                [[-180, 0], [-160, -90], [-100, 0]],
                [[-100, 0], [-60, -90], [-20, 0]],
                [[-20, 0], [20, -90], [80, 0]],
                [[80, 0], [140, -90], [180, 0]]
              ]];
              function Zu() {
                return so(re, Ql).scale(160.857);
              }
              var Ns = [[
                // northern hemisphere
                [[-180, 0], [-100, 90], [-40, 0]],
                [[-40, 0], [30, 90], [180, 0]]
              ], [
                // southern hemisphere
                [[-180, 0], [-160, -90], [-100, 0]],
                [[-100, 0], [-60, -90], [-20, 0]],
                [[-20, 0], [20, -90], [80, 0]],
                [[80, 0], [140, -90], [180, 0]]
              ]];
              function io() {
                return so(_i, Ns).scale(152.63);
              }
              var vf = [[
                // northern hemisphere
                [[-180, 0], [-100, 90], [-40, 0]],
                [[-40, 0], [30, 90], [180, 0]]
              ], [
                // southern hemisphere
                [[-180, 0], [-160, -90], [-100, 0]],
                [[-100, 0], [-60, -90], [-20, 0]],
                [[-20, 0], [20, -90], [80, 0]],
                [[80, 0], [140, -90], [180, 0]]
              ]];
              function yl() {
                return so(zt, vf).scale(169.529);
              }
              var jo = [[
                // northern hemisphere
                [[-180, 0], [-90, 90], [0, 0]],
                [[0, 0], [90, 90], [180, 0]]
              ], [
                // southern hemisphere
                [[-180, 0], [-90, -90], [0, 0]],
                [[0, 0], [90, -90], [180, 0]]
              ]];
              function Ys() {
                return so(zt, jo).scale(169.529).rotate([20, 0]);
              }
              var uu = [[
                // northern hemisphere
                [[-180, 35], [-30, 90], [0, 35]],
                [[0, 35], [30, 90], [180, 35]]
              ], [
                // southern hemisphere
                [[-180, -10], [-102, -90], [-65, -10]],
                [[-65, -10], [5, -90], [77, -10]],
                [[77, -10], [103, -90], [180, -10]]
              ]];
              function ss() {
                return so(li, uu, Ct).rotate([-20, -55]).scale(164.263).center([0, -5.4036]);
              }
              var qo = [[
                // northern hemisphere
                [[-180, 0], [-110, 90], [-40, 0]],
                [[-40, 0], [0, 90], [40, 0]],
                [[40, 0], [110, 90], [180, 0]]
              ], [
                // southern hemisphere
                [[-180, 0], [-110, -90], [-40, 0]],
                [[-40, 0], [0, -90], [40, 0]],
                [[40, 0], [110, -90], [180, 0]]
              ]];
              function Ol() {
                return so(ce, qo).scale(152.63).rotate([-20, 0]);
              }
              function yo(he, Ae) {
                return [3 / C * he * w(c * c / 3 - Ae * Ae), Ae];
              }
              yo.invert = function(he, Ae) {
                return [C / 3 * he / w(c * c / 3 - Ae * Ae), Ae];
              };
              function ds() {
                return (0, b.A)(yo).scale(158.837);
              }
              function Ks(he) {
                function Ae(Be, Ge) {
                  if (P(P(Ge) - v) < g) return [0, Ge < 0 ? -2 : 2];
                  var sr = o(Ge), ar = i((1 + sr) / (1 - sr), he / 2), fr = 0.5 * (ar + 1 / ar) + T(Be *= he);
                  return [
                    2 * o(Be) / fr,
                    (ar - 1 / ar) / fr
                  ];
                }
                return Ae.invert = function(Be, Ge) {
                  var sr = P(Ge);
                  if (P(sr - 2) < g) return Be ? null : [0, l(Ge) * v];
                  if (sr > 2) return null;
                  Be /= 2, Ge /= 2;
                  var ar = Be * Be, fr = Ge * Ge, Wr = 2 * Ge / (1 + ar + fr);
                  return Wr = i((1 + Wr) / (1 - Wr), 1 / he), [
                    s(2 * Be, 1 - ar - fr) / he,
                    h((Wr - 1) / (Wr + 1))
                  ];
                }, Ae;
              }
              function zs() {
                var he = 0.5, Ae = (0, b.U)(Ks), Be = Ae(he);
                return Be.spacing = function(Ge) {
                  return arguments.length ? Ae(he = +Ge) : he;
                }, Be.scale(124.75);
              }
              var is = c / S;
              function wl(he, Ae) {
                return [
                  he * (1 + w(T(Ae))) / 2,
                  Ae / (T(Ae / 2) * T(he / 6))
                ];
              }
              wl.invert = function(he, Ae) {
                var Be = P(he), Ge = P(Ae), sr = g, ar = v;
                Ge < is ? ar *= Ge / is : sr += 6 * E(is / Ge);
                for (var fr = 0; fr < 25; fr++) {
                  var Wr = o(ar), Yr = w(T(ar)), Pr = o(ar / 2), tn = T(ar / 2), un = o(sr / 6), dn = T(sr / 6), On = 0.5 * sr * (1 + Yr) - Be, ai = ar / (tn * dn) - Ge, ri = Yr ? -0.25 * sr * Wr / Yr : 0, gi = 0.5 * (1 + Yr), Ni = (1 + 0.5 * ar * Pr / tn) / (tn * dn), Ia = ar / tn * (un / 6) / (dn * dn), Pa = ri * Ia - Ni * gi, Fa = (On * Ia - ai * gi) / Pa, Ga = (ai * ri - On * Ni) / Pa;
                  if (ar -= Fa, sr -= Ga, P(Fa) < g && P(Ga) < g) break;
                }
                return [he < 0 ? -sr : sr, Ae < 0 ? -ar : ar];
              };
              function Th() {
                return (0, b.A)(wl).scale(97.2672);
              }
              function Us(he, Ae) {
                var Be = he * he, Ge = Ae * Ae;
                return [
                  he * (0.975534 + Ge * (-0.119161 + Be * -0.0143059 + Ge * -0.0547009)),
                  Ae * (1.00384 + Be * (0.0802894 + Ge * -0.02855 + Be * 199025e-9) + Ge * (0.0998909 + Ge * -0.0491032))
                ];
              }
              Us.invert = function(he, Ae) {
                var Be = l(he) * c, Ge = Ae / 2, sr = 50;
                do {
                  var ar = Be * Be, fr = Ge * Ge, Wr = Be * Ge, Yr = Be * (0.975534 + fr * (-0.119161 + ar * -0.0143059 + fr * -0.0547009)) - he, Pr = Ge * (1.00384 + ar * (0.0802894 + fr * -0.02855 + ar * 199025e-9) + fr * (0.0998909 + fr * -0.0491032)) - Ae, tn = 0.975534 - fr * (0.119161 + 3 * ar * 0.0143059 + fr * 0.0547009), un = -Wr * (2 * 0.119161 + 4 * 0.0547009 * fr + 2 * 0.0143059 * ar), dn = Wr * (2 * 0.0802894 + 4 * 199025e-9 * ar + 2 * -0.02855 * fr), On = 1.00384 + ar * (0.0802894 + 199025e-9 * ar) + fr * (3 * (0.0998909 - 0.02855 * ar) - 5 * 0.0491032 * fr), ai = un * dn - On * tn, ri = (Pr * un - Yr * On) / ai, gi = (Yr * dn - Pr * tn) / ai;
                  Be -= ri, Ge -= gi;
                } while ((P(ri) > g || P(gi) > g) && --sr > 0);
                return sr && [Be, Ge];
              };
              function Gf() {
                return (0, b.A)(Us).scale(139.98);
              }
              function _l(he, Ae) {
                return [
                  o(he) / T(Ae),
                  y(Ae) * T(he)
                ];
              }
              _l.invert = function(he, Ae) {
                var Be = he * he, Ge = Ae * Ae, sr = Ge + 1, ar = Be + sr, fr = he ? _ * w((ar - w(ar * ar - 4 * Be)) / Be) : 1 / w(sr);
                return [
                  h(he * fr),
                  l(Ae) * E(fr)
                ];
              };
              function bs() {
                return (0, b.A)(_l).scale(144.049).clipAngle(89.999);
              }
              function pf(he) {
                var Ae = T(he), Be = y(f + he / 2);
                function Ge(sr, ar) {
                  var fr = ar - he, Wr = P(fr) < g ? sr * Ae : P(Wr = f + ar / 2) < g || P(P(Wr) - v) < g ? 0 : sr * fr / u(y(Wr) / Be);
                  return [Wr, fr];
                }
                return Ge.invert = function(sr, ar) {
                  var fr, Wr = ar + he;
                  return [
                    P(ar) < g ? sr / Ae : P(fr = f + Wr / 2) < g || P(P(fr) - v) < g ? 0 : sr * u(y(fr) / Be) / ar,
                    Wr
                  ];
                }, Ge;
              }
              function $l() {
                return _e(pf).parallel(40).scale(158.837);
              }
              function Bl(he, Ae) {
                return [he, 1.25 * u(y(f + 0.4 * Ae))];
              }
              Bl.invert = function(he, Ae) {
                return [he, 2.5 * n(A(0.8 * Ae)) - 0.625 * c];
              };
              function gf() {
                return (0, b.A)(Bl).scale(108.318);
              }
              function yf(he) {
                var Ae = he.length - 1;
                function Be(Ge, sr) {
                  for (var ar = T(sr), fr = 2 / (1 + ar * T(Ge)), Wr = fr * ar * o(Ge), Yr = fr * o(sr), Pr = Ae, tn = he[Pr], un = tn[0], dn = tn[1], On; --Pr >= 0; )
                    tn = he[Pr], un = tn[0] + Wr * (On = un) - Yr * dn, dn = tn[1] + Wr * dn + Yr * On;
                  return un = Wr * (On = un) - Yr * dn, dn = Wr * dn + Yr * On, [un, dn];
                }
                return Be.invert = function(Ge, sr) {
                  var ar = 20, fr = Ge, Wr = sr;
                  do {
                    for (var Yr = Ae, Pr = he[Yr], tn = Pr[0], un = Pr[1], dn = 0, On = 0, ai; --Yr >= 0; )
                      Pr = he[Yr], dn = tn + fr * (ai = dn) - Wr * On, On = un + fr * On + Wr * ai, tn = Pr[0] + fr * (ai = tn) - Wr * un, un = Pr[1] + fr * un + Wr * ai;
                    dn = tn + fr * (ai = dn) - Wr * On, On = un + fr * On + Wr * ai, tn = fr * (ai = tn) - Wr * un - Ge, un = fr * un + Wr * ai - sr;
                    var ri = dn * dn + On * On, gi, Ni;
                    fr -= gi = (tn * dn + un * On) / ri, Wr -= Ni = (un * dn - tn * On) / ri;
                  } while (P(gi) + P(Ni) > g * g && --ar > 0);
                  if (ar) {
                    var Ia = w(fr * fr + Wr * Wr), Pa = 2 * n(Ia * 0.5), Fa = o(Pa);
                    return [s(fr * Fa, Ia * T(Pa)), Ia ? h(Wr * Fa / Ia) : 0];
                  }
                }, Be;
              }
              var Wf = [[0.9972523, 0], [52513e-7, -41175e-7], [74606e-7, 48125e-7], [-0.0153783, -0.1968253], [0.0636871, -0.1408027], [0.3660976, -0.2937382]], Xu = [[0.98879, 0], [0, 0], [-0.050909, 0], [0, 0], [0.075528, 0]], Pd = [[0.984299, 0], [0.0211642, 37608e-7], [-0.1036018, -0.0575102], [-0.0329095, -0.0320119], [0.0499471, 0.1223335], [0.026046, 0.0899805], [7388e-7, -0.1435792], [75848e-7, -0.1334108], [-0.0216473, 0.0776645], [-0.0225161, 0.0853673]], Id = [[0.9245, 0], [0, 0], [0.01943, 0]], td = [[0.721316, 0], [0, 0], [-881625e-8, -617325e-8]];
              function Ah() {
                return xc(Wf, [152, -64]).scale(1400).center([-160.908, 62.4864]).clipAngle(30).angle(7.8);
              }
              function Rd() {
                return xc(Xu, [95, -38]).scale(1e3).clipAngle(55).center([-96.5563, 38.8675]);
              }
              function mc() {
                return xc(Pd, [120, -45]).scale(359.513).clipAngle(55).center([-117.474, 53.0628]);
              }
              function ed() {
                return xc(Id, [-20, -18]).scale(209.091).center([20, 16.7214]).clipAngle(82);
              }
              function mf() {
                return xc(td, [165, 10]).scale(250).clipAngle(130).center([-165, -10]);
              }
              function xc(he, Ae) {
                var Be = (0, b.A)(yf(he)).rotate(Ae).clipAngle(90), Ge = (0, $t.A)(Ae), sr = Be.center;
                return delete Be.rotate, Be.center = function(ar) {
                  return arguments.length ? sr(Ge(ar)) : Ge.invert(sr());
                }, Be;
              }
              var Fc = w(6), Vs = w(7);
              function Hs(he, Ae) {
                var Be = h(7 * o(Ae) / (3 * Fc));
                return [
                  Fc * he * (2 * T(2 * Be / 3) - 1) / Vs,
                  9 * o(Be / 3) / Vs
                ];
              }
              Hs.invert = function(he, Ae) {
                var Be = 3 * h(Ae * Vs / 9);
                return [
                  he * Vs / (Fc * (2 * T(2 * Be / 3) - 1)),
                  h(o(Be) * 3 * Fc / 7)
                ];
              };
              function jf() {
                return (0, b.A)(Hs).scale(164.859);
              }
              function Tl(he, Ae) {
                for (var Be = (1 + _) * o(Ae), Ge = Ae, sr = 0, ar; sr < 25 && (Ge -= ar = (o(Ge / 2) + o(Ge) - Be) / (0.5 * T(Ge / 2) + T(Ge)), !(P(ar) < g)); sr++)
                  ;
                return [
                  he * (1 + 2 * T(Ge) / T(Ge / 2)) / (3 * S),
                  2 * w(3) * o(Ge / 2) / w(2 + S)
                ];
              }
              Tl.invert = function(he, Ae) {
                var Be = Ae * w(2 + S) / (2 * w(3)), Ge = 2 * h(Be);
                return [
                  3 * S * he / (1 + 2 * T(Ge) / T(Ge / 2)),
                  h((Be + o(Ge)) / (1 + _))
                ];
              };
              function rd() {
                return (0, b.A)(Tl).scale(188.209);
              }
              function Zf(he, Ae) {
                for (var Be = w(6 / (4 + c)), Ge = (1 + c / 4) * o(Ae), sr = Ae / 2, ar = 0, fr; ar < 25 && (sr -= fr = (sr / 2 + o(sr) - Ge) / (0.5 + T(sr)), !(P(fr) < g)); ar++)
                  ;
                return [
                  Be * (0.5 + T(sr)) * he / 1.5,
                  Be * sr
                ];
              }
              Zf.invert = function(he, Ae) {
                var Be = w(6 / (4 + c)), Ge = Ae / Be;
                return P(P(Ge) - v) < g && (Ge = Ge < 0 ? -v : v), [
                  1.5 * he / (Be * (0.5 + T(Ge))),
                  h((Ge / 2 + o(Ge)) / (1 + c / 4))
                ];
              };
              function nd() {
                return (0, b.A)(Zf).scale(166.518);
              }
              var id = e(57949);
              function Xf(he, Ae) {
                var Be = Ae * Ae, Ge = Be * Be, sr = Be * Ge;
                return [
                  he * (0.84719 - 0.13063 * Be + sr * sr * (-0.04515 + 0.05494 * Be - 0.02326 * Ge + 331e-5 * sr)),
                  Ae * (1.01183 + Ge * Ge * (-0.02625 + 0.01926 * Be - 396e-5 * Ge))
                ];
              }
              Xf.invert = function(he, Ae) {
                var Be = Ae, Ge = 25, sr, ar, fr, Wr;
                do
                  ar = Be * Be, fr = ar * ar, Be -= sr = (Be * (1.01183 + fr * fr * (-0.02625 + 0.01926 * ar - 396e-5 * fr)) - Ae) / (1.01183 + fr * fr * (-0.23625 + 0.21186 * ar + -0.05148 * fr));
                while (P(sr) > x && --Ge > 0);
                return ar = Be * Be, fr = ar * ar, Wr = ar * fr, [
                  he / (0.84719 - 0.13063 * ar + Wr * Wr * (-0.04515 + 0.05494 * ar - 0.02326 * fr + 331e-5 * Wr)),
                  Be
                ];
              };
              function ql() {
                return (0, b.A)(Xf).scale(175.295);
              }
              function Oc(he, Ae) {
                return [
                  he * (1 + T(Ae)) / 2,
                  2 * (Ae - y(Ae / 2))
                ];
              }
              Oc.invert = function(he, Ae) {
                for (var Be = Ae / 2, Ge = 0, sr = 1 / 0; Ge < 10 && P(sr) > g; ++Ge) {
                  var ar = T(Ae / 2);
                  Ae -= sr = (Ae - y(Ae / 2) - Be) / (1 - 0.5 / (ar * ar));
                }
                return [
                  2 * he / (1 + T(Ae)),
                  Ae
                ];
              };
              function Yu() {
                return (0, b.A)(Oc).scale(152.63);
              }
              var xf = [[
                // northern hemisphere
                [[-180, 0], [-90, 90], [0, 0]],
                [[0, 0], [90, 90], [180, 0]]
              ], [
                // southern hemisphere
                [[-180, 0], [-90, -90], [0, 0]],
                [[0, 0], [90, -90], [180, 0]]
              ]];
              function Ku() {
                return so(lt(1 / 0), xf).rotate([20, 0]).scale(152.63);
              }
              function cu(he, Ae) {
                var Be = o(Ae), Ge = T(Ae), sr = l(he);
                if (he === 0 || P(Ae) === v) return [0, Ae];
                if (Ae === 0) return [he, 0];
                if (P(he) === v) return [he * Ge, v * Be];
                var ar = c / (2 * he) - 2 * he / c, fr = 2 * Ae / c, Wr = (1 - fr * fr) / (Be - fr), Yr = ar * ar, Pr = Wr * Wr, tn = 1 + Yr / Pr, un = 1 + Pr / Yr, dn = (ar * Be / Wr - ar / 2) / tn, On = (Pr * Be / Yr + Wr / 2) / un, ai = dn * dn + Ge * Ge / tn, ri = On * On - (Pr * Be * Be / Yr + Wr * Be - 1) / un;
                return [
                  v * (dn + w(ai) * sr),
                  v * (On + w(ri < 0 ? 0 : ri) * l(-Ae * ar) * sr)
                ];
              }
              cu.invert = function(he, Ae) {
                he /= v, Ae /= v;
                var Be = he * he, Ge = Ae * Ae, sr = Be + Ge, ar = c * c;
                return [
                  he ? (sr - 1 + w((1 - sr) * (1 - sr) + 4 * Be)) / (2 * he) * v : 0,
                  Et(function(fr) {
                    return sr * (c * o(fr) - 2 * fr) * c + 4 * fr * fr * (Ae - o(fr)) + 2 * c * fr - ar * Ae;
                  }, 0)
                ];
              };
              function Sh() {
                return (0, b.A)(cu).scale(127.267);
              }
              var Bc = 1.0148, Js = 0.23185, ls = -0.14499, bc = 0.02406, Ho = Bc, Yf = 5 * Js, Nc = 7 * ls, Uc = 9 * bc, Gs = 1.790857183;
              function Vc(he, Ae) {
                var Be = Ae * Ae;
                return [
                  he,
                  Ae * (Bc + Be * Be * (Js + Be * (ls + bc * Be)))
                ];
              }
              Vc.invert = function(he, Ae) {
                Ae > Gs ? Ae = Gs : Ae < -Gs && (Ae = -Gs);
                var Be = Ae, Ge;
                do {
                  var sr = Be * Be;
                  Be -= Ge = (Be * (Bc + sr * sr * (Js + sr * (ls + bc * sr))) - Ae) / (Ho + sr * sr * (Yf + sr * (Nc + Uc * sr)));
                } while (P(Ge) > g);
                return [he, Be];
              };
              function Cu() {
                return (0, b.A)(Vc).scale(139.319);
              }
              function Hc(he, Ae) {
                if (P(Ae) < g) return [he, 0];
                var Be = y(Ae), Ge = he * o(Ae);
                return [
                  o(Ge) / Be,
                  Ae + (1 - T(Ge)) / Be
                ];
              }
              Hc.invert = function(he, Ae) {
                if (P(Ae) < g) return [he, 0];
                var Be = he * he + Ae * Ae, Ge = Ae * 0.5, sr = 10, ar;
                do {
                  var fr = y(Ge), Wr = 1 / T(Ge), Yr = Be - 2 * Ae * Ge + Ge * Ge;
                  Ge -= ar = (fr * Yr + 2 * (Ge - Ae)) / (2 + Yr * Wr * Wr + 2 * (Ge - Ae) * fr);
                } while (P(ar) > g && --sr > 0);
                return fr = y(Ge), [
                  (P(Ae) < P(Ge + 1 / fr) ? h(he * fr) : l(Ae) * l(he) * (E(P(he * fr)) + v)) / o(Ge),
                  Ge
                ];
              };
              function Mh() {
                return (0, b.A)(Hc).scale(103.74);
              }
              var Al = e(43212), Eh = e(81758);
              function Gc(he, Ae) {
                var Be = Kf(he[1], he[0]), Ge = Kf(Ae[1], Ae[0]), sr = Ju(Be, Ge), ar = jc(Be) / jc(Ge);
                return Wc([
                  1,
                  0,
                  he[0][0],
                  0,
                  1,
                  he[0][1]
                ], Wc([
                  ar,
                  0,
                  0,
                  0,
                  ar,
                  0
                ], Wc([
                  T(sr),
                  o(sr),
                  0,
                  -o(sr),
                  T(sr),
                  0
                ], [
                  1,
                  0,
                  -Ae[0][0],
                  0,
                  1,
                  -Ae[0][1]
                ])));
              }
              function Ch(he) {
                var Ae = 1 / (he[0] * he[4] - he[1] * he[3]);
                return [
                  Ae * he[4],
                  -Ae * he[1],
                  Ae * (he[1] * he[5] - he[2] * he[4]),
                  -Ae * he[3],
                  Ae * he[0],
                  Ae * (he[2] * he[3] - he[0] * he[5])
                ];
              }
              function Wc(he, Ae) {
                return [
                  he[0] * Ae[0] + he[1] * Ae[3],
                  he[0] * Ae[1] + he[1] * Ae[4],
                  he[0] * Ae[2] + he[1] * Ae[5] + he[2],
                  he[3] * Ae[0] + he[4] * Ae[3],
                  he[3] * Ae[1] + he[4] * Ae[4],
                  he[3] * Ae[2] + he[4] * Ae[5] + he[5]
                ];
              }
              function Kf(he, Ae) {
                return [he[0] - Ae[0], he[1] - Ae[1]];
              }
              function jc(he) {
                return w(he[0] * he[0] + he[1] * he[1]);
              }
              function Ju(he, Ae) {
                return s(he[0] * Ae[1] - he[1] * Ae[0], he[0] * Ae[0] + he[1] * Ae[1]);
              }
              function Ro(he, Ae, Be) {
                Ge(he, { transform: null });
                function Ge(Pr, tn) {
                  if (Pr.edges = Jf(Pr.face), tn.face) {
                    var un = Pr.shared = bf(Pr.face, tn.face), dn = Gc(un.map(tn.project), un.map(Pr.project));
                    Pr.transform = tn.transform ? Wc(tn.transform, dn) : dn;
                    for (var On = tn.edges, ai = 0, ri = On.length; ai < ri; ++ai)
                      tu(un[0], On[ai][1]) && tu(un[1], On[ai][0]) && (On[ai] = Pr), tu(un[0], On[ai][0]) && tu(un[1], On[ai][1]) && (On[ai] = Pr);
                    for (On = Pr.edges, ai = 0, ri = On.length; ai < ri; ++ai)
                      tu(un[0], On[ai][0]) && tu(un[1], On[ai][1]) && (On[ai] = tn), tu(un[0], On[ai][1]) && tu(un[1], On[ai][0]) && (On[ai] = tn);
                  } else
                    Pr.transform = tn.transform;
                  return Pr.children && Pr.children.forEach(function(gi) {
                    Ge(gi, Pr);
                  }), Pr;
                }
                function sr(Pr, tn) {
                  var un = Ae(Pr, tn), dn = un.project([Pr * m, tn * m]), On;
                  return (On = un.transform) ? [
                    On[0] * dn[0] + On[1] * dn[1] + On[2],
                    -(On[3] * dn[0] + On[4] * dn[1] + On[5])
                  ] : (dn[1] = -dn[1], dn);
                }
                Sl(he) && (sr.invert = function(Pr, tn) {
                  var un = ar(he, [Pr, -tn]);
                  return un && (un[0] *= L, un[1] *= L, un);
                });
                function ar(Pr, tn) {
                  var un = Pr.project.invert, dn = Pr.transform, On = tn;
                  if (dn && (dn = Ch(dn), On = [
                    dn[0] * On[0] + dn[1] * On[1] + dn[2],
                    dn[3] * On[0] + dn[4] * On[1] + dn[5]
                  ]), un && Pr === fr(ai = un(On))) return ai;
                  for (var ai, ri = Pr.children, gi = 0, Ni = ri && ri.length; gi < Ni; ++gi)
                    if (ai = ar(ri[gi], tn)) return ai;
                }
                function fr(Pr) {
                  return Ae(Pr[0] * L, Pr[1] * L);
                }
                var Wr = (0, b.A)(sr), Yr = Wr.stream;
                return Wr.stream = function(Pr) {
                  var tn = Wr.rotate(), un = Yr(Pr), dn = (Wr.rotate([0, 0]), Yr(Pr));
                  return Wr.rotate(tn), un.sphere = function() {
                    dn.polygonStart(), dn.lineStart(), ad(dn, he), dn.lineEnd(), dn.polygonEnd();
                  }, un;
                }, Wr.angle(Be == null ? -30 : Be * m);
              }
              function ad(he, Ae, Be) {
                var Ge, sr = Ae.edges, ar = sr.length, fr, Wr = { type: "MultiPoint", coordinates: Ae.face }, Yr = Ae.face.filter(function(ri) {
                  return P(ri[1]) !== 90;
                }), Pr = (0, Al.A)({ type: "MultiPoint", coordinates: Yr }), tn = !1, un = -1, dn = Pr[1][0] - Pr[0][0], On = dn === 180 || dn === 360 ? [(Pr[0][0] + Pr[1][0]) / 2, (Pr[0][1] + Pr[1][1]) / 2] : (0, ie.A)(Wr);
                if (Be) for (; ++un < ar && sr[un] !== Be; )
                  ;
                ++un;
                for (var ai = 0; ai < ar; ++ai)
                  fr = sr[(ai + un) % ar], Array.isArray(fr) ? (tn || (he.point((Ge = (0, Eh.A)(fr[0], On)(g))[0], Ge[1]), tn = !0), he.point((Ge = (0, Eh.A)(fr[1], On)(g))[0], Ge[1])) : (tn = !1, fr !== Be && ad(he, fr, Ae));
              }
              function tu(he, Ae) {
                return he && Ae && he[0] === Ae[0] && he[1] === Ae[1];
              }
              function bf(he, Ae) {
                for (var Be, Ge, sr = he.length, ar = null, fr = 0; fr < sr; ++fr) {
                  Be = he[fr];
                  for (var Wr = Ae.length; --Wr >= 0; )
                    if (Ge = Ae[Wr], Be[0] === Ge[0] && Be[1] === Ge[1]) {
                      if (ar) return [ar, Be];
                      ar = Be;
                    }
                }
              }
              function Jf(he) {
                for (var Ae = he.length, Be = [], Ge = he[Ae - 1], sr = 0; sr < Ae; ++sr) Be.push([Ge, Ge = he[sr]]);
                return Be;
              }
              function Sl(he) {
                return he.project.invert || he.children && he.children.some(Sl);
              }
              var Qu = e(48419), wf = [
                [0, 90],
                [-90, 0],
                [0, 0],
                [90, 0],
                [180, 0],
                [0, -90]
              ], vs = [
                [0, 2, 1],
                [0, 3, 2],
                [5, 1, 2],
                [5, 2, 3],
                [0, 1, 4],
                [0, 4, 3],
                [5, 4, 1],
                [5, 3, 4]
              ].map(function(he) {
                return he.map(function(Ae) {
                  return wf[Ae];
                });
              });
              function _f(he) {
                he = he || function(Be) {
                  var Ge = (0, ie.A)({ type: "MultiPoint", coordinates: Be });
                  return (0, Qu.A)().scale(1).translate([0, 0]).rotate([-Ge[0], -Ge[1]]);
                };
                var Ae = vs.map(function(Be) {
                  return { face: Be, project: he(Be) };
                });
                return [-1, 0, 0, 1, 0, 1, 4, 5].forEach(function(Be, Ge) {
                  var sr = Ae[Be];
                  sr && (sr.children || (sr.children = [])).push(Ae[Ge]);
                }), Ro(Ae[0], function(Be, Ge) {
                  return Ae[Be < -c / 2 ? Ge < 0 ? 6 : 4 : Be < 0 ? Ge < 0 ? 2 : 0 : Be < c / 2 ? Ge < 0 ? 3 : 1 : Ge < 0 ? 7 : 5];
                }).angle(-30).scale(101.858).center([0, 45]);
              }
              var Nl = 2 / w(3);
              function eu(he, Ae) {
                var Be = St(he, Ae);
                return [Be[0] * Nl, Be[1]];
              }
              eu.invert = function(he, Ae) {
                return St.invert(he / Nl, Ae);
              };
              function $u(he) {
                he = he || function(Be) {
                  var Ge = (0, ie.A)({ type: "MultiPoint", coordinates: Be });
                  return (0, b.A)(eu).translate([0, 0]).scale(1).rotate(Ge[1] > 0 ? [-Ge[0], 0] : [180 - Ge[0], 180]);
                };
                var Ae = vs.map(function(Be) {
                  return { face: Be, project: he(Be) };
                });
                return [-1, 0, 0, 1, 0, 1, 4, 5].forEach(function(Be, Ge) {
                  var sr = Ae[Be];
                  sr && (sr.children || (sr.children = [])).push(Ae[Ge]);
                }), Ro(Ae[0], function(Be, Ge) {
                  return Ae[Be < -c / 2 ? Ge < 0 ? 6 : 4 : Be < 0 ? Ge < 0 ? 2 : 0 : Be < c / 2 ? Ge < 0 ? 3 : 1 : Ge < 0 ? 7 : 5];
                }).angle(-30).scale(121.906).center([0, 48.5904]);
              }
              function Lu(he) {
                he = he || function(fr) {
                  var Wr = fr.length === 6 ? (0, ie.A)({ type: "MultiPoint", coordinates: fr }) : fr[0];
                  return (0, Qu.A)().scale(1).translate([0, 0]).rotate([-Wr[0], -Wr[1]]);
                };
                var Ae = vs.map(function(fr) {
                  for (var Wr = fr.map(Ml), Yr = Wr.length, Pr = Wr[Yr - 1], tn, un = [], dn = 0; dn < Yr; ++dn)
                    tn = Wr[dn], un.push(Ul([
                      Pr[0] * 0.9486832980505138 + tn[0] * 0.31622776601683794,
                      Pr[1] * 0.9486832980505138 + tn[1] * 0.31622776601683794,
                      Pr[2] * 0.9486832980505138 + tn[2] * 0.31622776601683794
                    ]), Ul([
                      tn[0] * 0.9486832980505138 + Pr[0] * 0.31622776601683794,
                      tn[1] * 0.9486832980505138 + Pr[1] * 0.31622776601683794,
                      tn[2] * 0.9486832980505138 + Pr[2] * 0.31622776601683794
                    ])), Pr = tn;
                  return un;
                }), Be = [], Ge = [-1, 0, 0, 1, 0, 1, 4, 5];
                Ae.forEach(function(fr, Wr) {
                  for (var Yr = vs[Wr], Pr = Yr.length, tn = Be[Wr] = [], un = 0; un < Pr; ++un)
                    Ae.push([
                      Yr[un],
                      fr[(un * 2 + 2) % (2 * Pr)],
                      fr[(un * 2 + 1) % (2 * Pr)]
                    ]), Ge.push(Wr), tn.push(nu(
                      Ml(fr[(un * 2 + 2) % (2 * Pr)]),
                      Ml(fr[(un * 2 + 1) % (2 * Pr)])
                    ));
                });
                var sr = Ae.map(function(fr) {
                  return {
                    project: he(fr),
                    face: fr
                  };
                });
                Ge.forEach(function(fr, Wr) {
                  var Yr = sr[fr];
                  Yr && (Yr.children || (Yr.children = [])).push(sr[Wr]);
                });
                function ar(fr, Wr) {
                  var Yr = T(Wr), Pr = [Yr * T(fr), Yr * o(fr), o(Wr)], tn = fr < -c / 2 ? Wr < 0 ? 6 : 4 : fr < 0 ? Wr < 0 ? 2 : 0 : fr < c / 2 ? Wr < 0 ? 3 : 1 : Wr < 0 ? 7 : 5, un = Be[tn];
                  return sr[ru(un[0], Pr) < 0 ? 8 + 3 * tn : ru(un[1], Pr) < 0 ? 8 + 3 * tn + 1 : ru(un[2], Pr) < 0 ? 8 + 3 * tn + 2 : tn];
                }
                return Ro(sr[0], ar).angle(-30).scale(110.625).center([0, 45]);
              }
              function ru(he, Ae) {
                for (var Be = 0, Ge = he.length, sr = 0; Be < Ge; ++Be) sr += he[Be] * Ae[Be];
                return sr;
              }
              function nu(he, Ae) {
                return [
                  he[1] * Ae[2] - he[2] * Ae[1],
                  he[2] * Ae[0] - he[0] * Ae[2],
                  he[0] * Ae[1] - he[1] * Ae[0]
                ];
              }
              function Ul(he) {
                return [
                  s(he[1], he[0]) * m,
                  h(t(-1, r(1, he[2]))) * m
                ];
              }
              function Ml(he) {
                var Ae = he[0] * L, Be = he[1] * L, Ge = T(Be);
                return [
                  Ge * T(Ae),
                  Ge * o(Ae),
                  o(Be)
                ];
              }
              function Tf() {
              }
              function wc(he) {
                if ((Be = he.length) < 4) return !1;
                for (var Ae = 0, Be, Ge = he[Be - 1][1] * he[0][0] - he[Be - 1][0] * he[0][1]; ++Ae < Be; ) Ge += he[Ae - 1][1] * he[Ae][0] - he[Ae - 1][0] * he[Ae][1];
                return Ge <= 0;
              }
              function od(he, Ae) {
                for (var Be = Ae[0], Ge = Ae[1], sr = !1, ar = 0, fr = he.length, Wr = fr - 1; ar < fr; Wr = ar++) {
                  var Yr = he[ar], Pr = Yr[0], tn = Yr[1], un = he[Wr], dn = un[0], On = un[1];
                  tn > Ge ^ On > Ge && Be < (dn - Pr) * (Ge - tn) / (On - tn) + Pr && (sr = !sr);
                }
                return sr;
              }
              function Dd(he, Ae) {
                var Be = Ae.stream, Ge;
                if (!Be) throw new Error("invalid projection");
                switch (he && he.type) {
                  case "Feature":
                    Ge = Qf;
                    break;
                  case "FeatureCollection":
                    Ge = kd;
                    break;
                  default:
                    Ge = Xc;
                    break;
                }
                return Ge(he, Be);
              }
              function kd(he, Ae) {
                return {
                  type: "FeatureCollection",
                  features: he.features.map(function(Be) {
                    return Qf(Be, Ae);
                  })
                };
              }
              function Qf(he, Ae) {
                return {
                  type: "Feature",
                  id: he.id,
                  properties: he.properties,
                  geometry: Xc(he.geometry, Ae)
                };
              }
              function Zc(he, Ae) {
                return {
                  type: "GeometryCollection",
                  geometries: he.geometries.map(function(Be) {
                    return Xc(Be, Ae);
                  })
                };
              }
              function Xc(he, Ae) {
                if (!he) return null;
                if (he.type === "GeometryCollection") return Zc(he, Ae);
                var Be;
                switch (he.type) {
                  case "Point":
                    Be = Yc;
                    break;
                  case "MultiPoint":
                    Be = Yc;
                    break;
                  case "LineString":
                    Be = sd;
                    break;
                  case "MultiLineString":
                    Be = sd;
                    break;
                  case "Polygon":
                    Be = Kc;
                    break;
                  case "MultiPolygon":
                    Be = Kc;
                    break;
                  case "Sphere":
                    Be = Kc;
                    break;
                  default:
                    return null;
                }
                return (0, ia.A)(he, Ae(Be)), Be.result();
              }
              var xs = [], El = [], Yc = {
                point: function(he, Ae) {
                  xs.push([he, Ae]);
                },
                result: function() {
                  var he = xs.length ? xs.length < 2 ? { type: "Point", coordinates: xs[0] } : { type: "MultiPoint", coordinates: xs } : null;
                  return xs = [], he;
                }
              }, sd = {
                lineStart: Tf,
                point: function(he, Ae) {
                  xs.push([he, Ae]);
                },
                lineEnd: function() {
                  xs.length && (El.push(xs), xs = []);
                },
                result: function() {
                  var he = El.length ? El.length < 2 ? { type: "LineString", coordinates: El[0] } : { type: "MultiLineString", coordinates: El } : null;
                  return El = [], he;
                }
              }, Kc = {
                polygonStart: Tf,
                lineStart: Tf,
                point: function(he, Ae) {
                  xs.push([he, Ae]);
                },
                lineEnd: function() {
                  var he = xs.length;
                  if (he) {
                    do
                      xs.push(xs[0].slice());
                    while (++he < 4);
                    El.push(xs), xs = [];
                  }
                },
                polygonEnd: Tf,
                result: function() {
                  if (!El.length) return null;
                  var he = [], Ae = [];
                  return El.forEach(function(Be) {
                    wc(Be) ? he.push([Be]) : Ae.push(Be);
                  }), Ae.forEach(function(Be) {
                    var Ge = Be[0];
                    he.some(function(sr) {
                      if (od(sr[0], Ge))
                        return sr.push(Be), !0;
                    }) || he.push([Be]);
                  }), El = [], he.length ? he.length > 1 ? { type: "MultiPolygon", coordinates: he } : { type: "Polygon", coordinates: he[0] } : null;
                }
              };
              function Vl(he) {
                var Ae = he(v, 0)[0] - he(-v, 0)[0];
                function Be(Ge, sr) {
                  var ar = P(Ge) < v, fr = he(ar ? Ge : Ge > 0 ? Ge - c : Ge + c, sr), Wr = (fr[0] - fr[1]) * _, Yr = (fr[0] + fr[1]) * _;
                  if (ar) return [Wr, Yr];
                  var Pr = Ae * _, tn = Wr > 0 ^ Yr > 0 ? -1 : 1;
                  return [tn * Wr - l(Yr) * Pr, tn * Yr - l(Wr) * Pr];
                }
                return he.invert && (Be.invert = function(Ge, sr) {
                  var ar = (Ge + sr) * _, fr = (sr - Ge) * _, Wr = P(ar) < 0.5 * Ae && P(fr) < 0.5 * Ae;
                  if (!Wr) {
                    var Yr = Ae * _, Pr = ar > 0 ^ fr > 0 ? -1 : 1, tn = -Pr * Ge + (fr > 0 ? 1 : -1) * Yr, un = -Pr * sr + (ar > 0 ? 1 : -1) * Yr;
                    ar = (-tn - un) * _, fr = (tn - un) * _;
                  }
                  var dn = he.invert(ar, fr);
                  return Wr || (dn[0] += ar > 0 ? c : -c), dn;
                }), (0, b.A)(Be).rotate([-90, -90, 45]).clipAngle(179.999);
              }
              function ld() {
                return Vl(An).scale(176.423);
              }
              function $f() {
                return Vl(rn).scale(111.48);
              }
              function qf(he, Ae) {
                if (!(0 <= (Ae = +Ae) && Ae <= 20)) throw new Error("invalid digits");
                function Be(Pr) {
                  var tn = Pr.length, un = 2, dn = new Array(tn);
                  for (dn[0] = +Pr[0].toFixed(Ae), dn[1] = +Pr[1].toFixed(Ae); un < tn; ) dn[un] = Pr[un], ++un;
                  return dn;
                }
                function Ge(Pr) {
                  return Pr.map(Be);
                }
                function sr(Pr) {
                  for (var tn = Be(Pr[0]), un = [tn], dn = 1; dn < Pr.length; dn++) {
                    var On = Be(Pr[dn]);
                    (On.length > 2 || On[0] != tn[0] || On[1] != tn[1]) && (un.push(On), tn = On);
                  }
                  return un.length === 1 && Pr.length > 1 && un.push(Be(Pr[Pr.length - 1])), un;
                }
                function ar(Pr) {
                  return Pr.map(sr);
                }
                function fr(Pr) {
                  if (Pr == null) return Pr;
                  var tn;
                  switch (Pr.type) {
                    case "GeometryCollection":
                      tn = { type: "GeometryCollection", geometries: Pr.geometries.map(fr) };
                      break;
                    case "Point":
                      tn = { type: "Point", coordinates: Be(Pr.coordinates) };
                      break;
                    case "MultiPoint":
                      tn = { type: Pr.type, coordinates: Ge(Pr.coordinates) };
                      break;
                    case "LineString":
                      tn = { type: Pr.type, coordinates: sr(Pr.coordinates) };
                      break;
                    case "MultiLineString":
                    case "Polygon":
                      tn = { type: Pr.type, coordinates: ar(Pr.coordinates) };
                      break;
                    case "MultiPolygon":
                      tn = { type: "MultiPolygon", coordinates: Pr.coordinates.map(ar) };
                      break;
                    default:
                      return Pr;
                  }
                  return Pr.bbox != null && (tn.bbox = Pr.bbox), tn;
                }
                function Wr(Pr) {
                  var tn = { type: "Feature", properties: Pr.properties, geometry: fr(Pr.geometry) };
                  return Pr.id != null && (tn.id = Pr.id), Pr.bbox != null && (tn.bbox = Pr.bbox), tn;
                }
                if (he != null) switch (he.type) {
                  case "Feature":
                    return Wr(he);
                  case "FeatureCollection": {
                    var Yr = { type: "FeatureCollection", features: he.features.map(Wr) };
                    return he.bbox != null && (Yr.bbox = he.bbox), Yr;
                  }
                  default:
                    return fr(he);
                }
                return he;
              }
              function Jc(he) {
                var Ae = o(he);
                function Be(Ge, sr) {
                  var ar = Ae ? y(Ge * Ae / 2) / Ae : Ge / 2;
                  if (!sr) return [2 * ar, -he];
                  var fr = 2 * n(ar * o(sr)), Wr = 1 / y(sr);
                  return [
                    o(fr) * Wr,
                    sr + (1 - T(fr)) * Wr - he
                  ];
                }
                return Be.invert = function(Ge, sr) {
                  if (P(sr += he) < g) return [Ae ? 2 * n(Ae * Ge / 2) / Ae : Ge, 0];
                  var ar = Ge * Ge + sr * sr, fr = 0, Wr = 10, Yr;
                  do {
                    var Pr = y(fr), tn = 1 / T(fr), un = ar - 2 * sr * fr + fr * fr;
                    fr -= Yr = (Pr * un + 2 * (fr - sr)) / (2 + un * tn * tn + 2 * (fr - sr) * Pr);
                  } while (P(Yr) > g && --Wr > 0);
                  var dn = Ge * (Pr = y(fr)), On = y(P(sr) < P(fr + 1 / Pr) ? h(dn) * 0.5 : E(dn) * 0.5 + c / 4) / o(fr);
                  return [
                    Ae ? 2 * n(Ae * On) / Ae : 2 * On,
                    fr
                  ];
                }, Be;
              }
              function th() {
                return _e(Jc).scale(131.215);
              }
              var Fs = [
                [0.9986, -0.062],
                [1, 0],
                [0.9986, 0.062],
                [0.9954, 0.124],
                [0.99, 0.186],
                [0.9822, 0.248],
                [0.973, 0.31],
                [0.96, 0.372],
                [0.9427, 0.434],
                [0.9216, 0.4958],
                [0.8962, 0.5571],
                [0.8679, 0.6176],
                [0.835, 0.6769],
                [0.7986, 0.7346],
                [0.7597, 0.7903],
                [0.7186, 0.8435],
                [0.6732, 0.8936],
                [0.6213, 0.9394],
                [0.5722, 0.9761],
                [0.5322, 1]
              ];
              Fs.forEach(function(he) {
                he[1] *= 1.0144;
              });
              function Ms(he, Ae) {
                var Be = r(18, P(Ae) * 36 / c), Ge = p(Be), sr = Be - Ge, ar = (un = Fs[Ge])[0], fr = un[1], Wr = (un = Fs[++Ge])[0], Yr = un[1], Pr = (un = Fs[r(19, ++Ge)])[0], tn = un[1], un;
                return [
                  he * (Wr + sr * (Pr - ar) / 2 + sr * sr * (Pr - 2 * Wr + ar) / 2),
                  (Ae > 0 ? v : -v) * (Yr + sr * (tn - fr) / 2 + sr * sr * (tn - 2 * Yr + fr) / 2)
                ];
              }
              Ms.invert = function(he, Ae) {
                var Be = Ae / v, Ge = Be * 90, sr = r(18, P(Ge / 5)), ar = t(0, p(sr));
                do {
                  var fr = Fs[ar][1], Wr = Fs[ar + 1][1], Yr = Fs[r(19, ar + 2)][1], Pr = Yr - fr, tn = Yr - 2 * Wr + fr, un = 2 * (P(Be) - Wr) / Pr, dn = tn / Pr, On = un * (1 - dn * un * (1 - 2 * dn * un));
                  if (On >= 0 || ar === 1) {
                    Ge = (Ae >= 0 ? 5 : -5) * (On + sr);
                    var ai = 50, ri;
                    do
                      sr = r(18, P(Ge) / 5), ar = p(sr), On = sr - ar, fr = Fs[ar][1], Wr = Fs[ar + 1][1], Yr = Fs[r(19, ar + 2)][1], Ge -= (ri = (Ae >= 0 ? v : -v) * (Wr + On * (Yr - fr) / 2 + On * On * (Yr - 2 * Wr + fr) / 2) - Ae) * m;
                    while (P(ri) > x && --ai > 0);
                    break;
                  }
                } while (--ar >= 0);
                var gi = Fs[ar][0], Ni = Fs[ar + 1][0], Ia = Fs[r(19, ar + 2)][0];
                return [
                  he / (Ni + On * (Ia - gi) / 2 + On * On * (Ia - 2 * Ni + gi) / 2),
                  Ge * L
                ];
              };
              function fu() {
                return (0, b.A)(Ms).scale(152.63);
              }
              function qu(he) {
                function Ae(Be, Ge) {
                  var sr = T(Ge), ar = (he - 1) / (he - sr * T(Be));
                  return [
                    ar * sr * o(Be),
                    ar * o(Ge)
                  ];
                }
                return Ae.invert = function(Be, Ge) {
                  var sr = Be * Be + Ge * Ge, ar = w(sr), fr = (he - w(1 - sr * (he + 1) / (he - 1))) / ((he - 1) / ar + ar / (he - 1));
                  return [
                    s(Be * fr, ar * w(1 - fr * fr)),
                    ar ? h(Ge * fr / ar) : 0
                  ];
                }, Ae;
              }
              function Qc(he, Ae) {
                var Be = qu(he);
                if (!Ae) return Be;
                var Ge = T(Ae), sr = o(Ae);
                function ar(fr, Wr) {
                  var Yr = Be(fr, Wr), Pr = Yr[1], tn = Pr * sr / (he - 1) + Ge;
                  return [
                    Yr[0] * Ge / tn,
                    Pr / tn
                  ];
                }
                return ar.invert = function(fr, Wr) {
                  var Yr = (he - 1) / (he - 1 - Wr * sr);
                  return Be.invert(Yr * fr, Yr * Wr * Ge);
                }, ar;
              }
              function tc() {
                var he = 2, Ae = 0, Be = (0, b.U)(Qc), Ge = Be(he, Ae);
                return Ge.distance = function(sr) {
                  return arguments.length ? Be(he = +sr, Ae) : he;
                }, Ge.tilt = function(sr) {
                  return arguments.length ? Be(he, Ae = sr * L) : Ae * m;
                }, Ge.scale(432.147).clipAngle(E(1 / he) * m - 1e-6);
              }
              var Pu = 1e-4, ec = 1e4, Hl = -180, _c = Hl + Pu, rc = 180, Iu = rc - Pu, Af = -90, Tc = Af + Pu, No = 90, Ac = No - Pu;
              function Sc(he) {
                return he.length > 0;
              }
              function Sf(he) {
                return Math.floor(he * ec) / ec;
              }
              function Ru(he) {
                return he === Af || he === No ? [0, he] : [Hl, Sf(he)];
              }
              function Mf(he) {
                var Ae = he[0], Be = he[1], Ge = !1;
                return Ae <= _c ? (Ae = Hl, Ge = !0) : Ae >= Iu && (Ae = rc, Ge = !0), Be <= Tc ? (Be = Af, Ge = !0) : Be >= Ac && (Be = No, Ge = !0), Ge ? [Ae, Be] : he;
              }
              function eh(he) {
                return he.map(Mf);
              }
              function Ef(he, Ae, Be) {
                for (var Ge = 0, sr = he.length; Ge < sr; ++Ge) {
                  var ar = he[Ge].slice();
                  Be.push({ index: -1, polygon: Ae, ring: ar });
                  for (var fr = 0, Wr = ar.length; fr < Wr; ++fr) {
                    var Yr = ar[fr], Pr = Yr[0], tn = Yr[1];
                    if (Pr <= _c || Pr >= Iu || tn <= Tc || tn >= Ac) {
                      ar[fr] = Mf(Yr);
                      for (var un = fr + 1; un < Wr; ++un) {
                        var dn = ar[un], On = dn[0], ai = dn[1];
                        if (On > _c && On < Iu && ai > Tc && ai < Ac) break;
                      }
                      if (un === fr + 1) continue;
                      if (fr) {
                        var ri = { index: -1, polygon: Ae, ring: ar.slice(0, fr + 1) };
                        ri.ring[ri.ring.length - 1] = Ru(tn), Be[Be.length - 1] = ri;
                      } else Be.pop();
                      if (un >= Wr) break;
                      Be.push({ index: -1, polygon: Ae, ring: ar = ar.slice(un - 1) }), ar[0] = Ru(ar[0][1]), fr = -1, Wr = ar.length;
                    }
                  }
                }
              }
              function hu(he) {
                var Ae, Be = he.length, Ge = {}, sr = {}, ar, fr, Wr, Yr, Pr;
                for (Ae = 0; Ae < Be; ++Ae) {
                  if (ar = he[Ae], fr = ar.ring[0], Yr = ar.ring[ar.ring.length - 1], fr[0] === Yr[0] && fr[1] === Yr[1]) {
                    ar.polygon.push(ar.ring), he[Ae] = null;
                    continue;
                  }
                  ar.index = Ae, Ge[fr] = sr[Yr] = ar;
                }
                for (Ae = 0; Ae < Be; ++Ae)
                  if (ar = he[Ae], ar) {
                    if (fr = ar.ring[0], Yr = ar.ring[ar.ring.length - 1], Wr = sr[fr], Pr = Ge[Yr], delete Ge[fr], delete sr[Yr], fr[0] === Yr[0] && fr[1] === Yr[1]) {
                      ar.polygon.push(ar.ring);
                      continue;
                    }
                    Wr ? (delete sr[fr], delete Ge[Wr.ring[0]], Wr.ring.pop(), he[Wr.index] = null, ar = { index: -1, polygon: Wr.polygon, ring: Wr.ring.concat(ar.ring) }, Wr === Pr ? ar.polygon.push(ar.ring) : (ar.index = Be++, he.push(Ge[ar.ring[0]] = sr[ar.ring[ar.ring.length - 1]] = ar))) : Pr ? (delete Ge[Yr], delete sr[Pr.ring[Pr.ring.length - 1]], ar.ring.pop(), ar = { index: Be++, polygon: Pr.polygon, ring: ar.ring.concat(Pr.ring) }, he[Pr.index] = null, he.push(Ge[ar.ring[0]] = sr[ar.ring[ar.ring.length - 1]] = ar)) : (ar.ring.push(ar.ring[0]), ar.polygon.push(ar.ring));
                  }
              }
              function vo(he) {
                var Ae = { type: "Feature", geometry: Cl(he.geometry) };
                return he.id != null && (Ae.id = he.id), he.bbox != null && (Ae.bbox = he.bbox), he.properties != null && (Ae.properties = he.properties), Ae;
              }
              function Cl(he) {
                if (he == null) return he;
                var Ae, Be, Ge, sr;
                switch (he.type) {
                  case "GeometryCollection":
                    Ae = { type: "GeometryCollection", geometries: he.geometries.map(Cl) };
                    break;
                  case "Point":
                    Ae = { type: "Point", coordinates: Mf(he.coordinates) };
                    break;
                  case "MultiPoint":
                  case "LineString":
                    Ae = { type: he.type, coordinates: eh(he.coordinates) };
                    break;
                  case "MultiLineString":
                    Ae = { type: "MultiLineString", coordinates: he.coordinates.map(eh) };
                    break;
                  case "Polygon": {
                    var ar = [];
                    Ef(he.coordinates, ar, Be = []), hu(Be), Ae = { type: "Polygon", coordinates: ar };
                    break;
                  }
                  case "MultiPolygon": {
                    Be = [], Ge = -1, sr = he.coordinates.length;
                    for (var fr = new Array(sr); ++Ge < sr; ) Ef(he.coordinates[Ge], fr[Ge] = [], Be);
                    hu(Be), Ae = { type: "MultiPolygon", coordinates: fr.filter(Sc) };
                    break;
                  }
                  default:
                    return he;
                }
                return he.bbox != null && (Ae.bbox = he.bbox), Ae;
              }
              function Qs(he) {
                if (he == null) return he;
                switch (he.type) {
                  case "Feature":
                    return vo(he);
                  case "FeatureCollection": {
                    var Ae = { type: "FeatureCollection", features: he.features.map(vo) };
                    return he.bbox != null && (Ae.bbox = he.bbox), Ae;
                  }
                  default:
                    return Cl(he);
                }
              }
              function Du(he, Ae) {
                var Be = y(Ae / 2), Ge = o(f * Be);
                return [
                  he * (0.74482 - 0.34588 * Ge * Ge),
                  1.70711 * Be
                ];
              }
              Du.invert = function(he, Ae) {
                var Be = Ae / 1.70711, Ge = o(f * Be);
                return [
                  he / (0.74482 - 0.34588 * Ge * Ge),
                  2 * n(Be)
                ];
              };
              function ws() {
                return (0, b.A)(Du).scale(146.153);
              }
              function Gl(he, Ae, Be) {
                var Ge = (0, Eh.A)(Ae, Be), sr = Ge(0.5), ar = (0, $t.A)([-sr[0], -sr[1]])(Ae), fr = Ge.distance / 2, Wr = -h(o(ar[1] * L) / o(fr)), Yr = [-sr[0], -sr[1], -(ar[0] > 0 ? c - Wr : Wr) * m], Pr = (0, b.A)(he(fr)).rotate(Yr), tn = (0, $t.A)(Yr), un = Pr.center;
                return delete Pr.rotate, Pr.center = function(dn) {
                  return arguments.length ? un(tn(dn)) : tn.invert(un());
                }, Pr.clipAngle(90);
              }
              function Lh(he) {
                var Ae = T(he);
                function Be(Ge, sr) {
                  var ar = (0, Qu.T)(Ge, sr);
                  return ar[0] *= Ae, ar;
                }
                return Be.invert = function(Ge, sr) {
                  return Qu.T.invert(Ge / Ae, sr);
                }, Be;
              }
              function Ll() {
                return rh([-158, 21.5], [-77, 39]).clipAngle(60).scale(400);
              }
              function rh(he, Ae) {
                return Gl(Lh, he, Ae);
              }
              function nc(he) {
                if (!(he *= 2)) return ut.j;
                var Ae = -he / 2, Be = -Ae, Ge = he * he, sr = y(Be), ar = 0.5 / o(Be);
                function fr(Wr, Yr) {
                  var Pr = E(T(Yr) * T(Wr - Ae)), tn = E(T(Yr) * T(Wr - Be)), un = Yr < 0 ? -1 : 1;
                  return Pr *= Pr, tn *= tn, [
                    (Pr - tn) / (2 * he),
                    un * w(4 * Ge * tn - (Ge - Pr + tn) * (Ge - Pr + tn)) / (2 * he)
                  ];
                }
                return fr.invert = function(Wr, Yr) {
                  var Pr = Yr * Yr, tn = T(w(Pr + (dn = Wr + Ae) * dn)), un = T(w(Pr + (dn = Wr + Be) * dn)), dn, On;
                  return [
                    s(On = tn - un, dn = (tn + un) * sr),
                    (Yr < 0 ? -1 : 1) * E(w(dn * dn + On * On) * ar)
                  ];
                }, fr;
              }
              function nh() {
                return $c([-158, 21.5], [-77, 39]).clipAngle(130).scale(122.571);
              }
              function $c(he, Ae) {
                return Gl(nc, he, Ae);
              }
              function Es(he, Ae) {
                if (P(Ae) < g) return [he, 0];
                var Be = P(Ae / v), Ge = h(Be);
                if (P(he) < g || P(P(Ae) - v) < g) return [0, l(Ae) * c * y(Ge / 2)];
                var sr = T(Ge), ar = P(c / he - he / c) / 2, fr = ar * ar, Wr = sr / (Be + sr - 1), Yr = Wr * (2 / Be - 1), Pr = Yr * Yr, tn = Pr + fr, un = Wr - Pr, dn = fr + Wr;
                return [
                  l(he) * c * (ar * un + w(fr * un * un - tn * (Wr * Wr - Pr))) / tn,
                  l(Ae) * c * (Yr * dn - ar * w((fr + 1) * tn - dn * dn)) / tn
                ];
              }
              Es.invert = function(he, Ae) {
                if (P(Ae) < g) return [he, 0];
                if (P(he) < g) return [0, v * o(2 * n(Ae / c))];
                var Be = (he /= c) * he, Ge = (Ae /= c) * Ae, sr = Be + Ge, ar = sr * sr, fr = -P(Ae) * (1 + sr), Wr = fr - 2 * Ge + Be, Yr = -2 * fr + 1 + 2 * Ge + ar, Pr = Ge / Yr + (2 * Wr * Wr * Wr / (Yr * Yr * Yr) - 9 * fr * Wr / (Yr * Yr)) / 27, tn = (fr - Wr * Wr / (3 * Yr)) / Yr, un = 2 * w(-tn / 3), dn = E(3 * Pr / (tn * un)) / 3;
                return [
                  c * (sr - 1 + w(1 + 2 * (Be - Ge) + ar)) / (2 * he),
                  l(Ae) * c * (-un * T(dn + c / 3) - Wr / (3 * Yr))
                ];
              };
              function Mc() {
                return (0, b.A)(Es).scale(79.4183);
              }
              function iu(he, Ae) {
                if (P(Ae) < g) return [he, 0];
                var Be = P(Ae / v), Ge = h(Be);
                if (P(he) < g || P(P(Ae) - v) < g) return [0, l(Ae) * c * y(Ge / 2)];
                var sr = T(Ge), ar = P(c / he - he / c) / 2, fr = ar * ar, Wr = sr * (w(1 + fr) - ar * sr) / (1 + fr * Be * Be);
                return [
                  l(he) * c * Wr,
                  l(Ae) * c * w(1 - Wr * (2 * ar + Wr))
                ];
              }
              iu.invert = function(he, Ae) {
                if (!he) return [0, v * o(2 * n(Ae / c))];
                var Be = P(he / c), Ge = (1 - Be * Be - (Ae /= c) * Ae) / (2 * Be), sr = Ge * Ge, ar = w(sr + 1);
                return [
                  l(he) * c * (ar - Ge),
                  l(Ae) * v * o(2 * s(w((1 - 2 * Ge * Be) * (Ge + ar) - Be), w(ar + Ge + Be)))
                ];
              };
              function Ec() {
                return (0, b.A)(iu).scale(79.4183);
              }
              function ku(he, Ae) {
                if (P(Ae) < g) return [he, 0];
                var Be = Ae / v, Ge = h(Be);
                if (P(he) < g || P(P(Ae) - v) < g) return [0, c * y(Ge / 2)];
                var sr = (c / he - he / c) / 2, ar = Be / (1 + T(Ge));
                return [
                  c * (l(he) * w(sr * sr + 1 - ar * ar) - sr),
                  c * ar
                ];
              }
              ku.invert = function(he, Ae) {
                if (!Ae) return [he, 0];
                var Be = Ae / c, Ge = (c * c * (1 - Be * Be) - he * he) / (2 * c * he);
                return [
                  he ? c * (l(he) * w(Ge * Ge + 1) - Ge) : 0,
                  v * o(2 * n(Be))
                ];
              };
              function Ph() {
                return (0, b.A)(ku).scale(79.4183);
              }
              function oo(he, Ae) {
                if (!Ae) return [he, 0];
                var Be = P(Ae);
                if (!he || Be === v) return [0, Ae];
                var Ge = Be / v, sr = Ge * Ge, ar = (8 * Ge - sr * (sr + 2) - 5) / (2 * sr * (Ge - 1)), fr = ar * ar, Wr = Ge * ar, Yr = sr + fr + 2 * Wr, Pr = Ge + 3 * ar, tn = he / v, un = tn + 1 / tn, dn = l(P(he) - v) * w(un * un - 4), On = dn * dn, ai = Yr * (sr + fr * On - 1) + (1 - sr) * (sr * (Pr * Pr + 4 * fr) + 12 * Wr * fr + 4 * fr * fr), ri = (dn * (Yr + fr - 1) + 2 * w(ai)) / (4 * Yr + On);
                return [
                  l(he) * v * ri,
                  l(Ae) * v * w(1 + dn * P(ri) - ri * ri)
                ];
              }
              oo.invert = function(he, Ae) {
                var Be;
                if (!he || !Ae) return [he, Ae];
                Ae /= c;
                var Ge = l(he) * he / v, sr = (Ge * Ge - 1 + 4 * Ae * Ae) / P(Ge), ar = sr * sr, fr = 2 * Ae, Wr = 50;
                do {
                  var Yr = fr * fr, Pr = (8 * fr - Yr * (Yr + 2) - 5) / (2 * Yr * (fr - 1)), tn = (3 * fr - Yr * fr - 10) / (2 * Yr * fr), un = Pr * Pr, dn = fr * Pr, On = fr + Pr, ai = On * On, ri = fr + 3 * Pr, gi = ai * (Yr + un * ar - 1) + (1 - Yr) * (Yr * (ri * ri + 4 * un) + un * (12 * dn + 4 * un)), Ni = -2 * On * (4 * dn * un + (1 - 4 * Yr + 3 * Yr * Yr) * (1 + tn) + un * (-6 + 14 * Yr - ar + (-8 + 8 * Yr - 2 * ar) * tn) + dn * (-8 + 12 * Yr + (-10 + 10 * Yr - ar) * tn)), Ia = w(gi), Pa = sr * (ai + un - 1) + 2 * Ia - Ge * (4 * ai + ar), Fa = sr * (2 * Pr * tn + 2 * On * (1 + tn)) + Ni / Ia - 8 * On * (sr * (-1 + un + ai) + 2 * Ia) * (1 + tn) / (ar + 4 * ai);
                  fr -= Be = Pa / Fa;
                } while (Be > g && --Wr > 0);
                return [
                  l(he) * (w(sr * sr + 4) + sr) * c / 4,
                  v * fr
                ];
              };
              function ic() {
                return (0, b.A)(oo).scale(127.16);
              }
              function ih(he, Ae, Be, Ge, sr) {
                function ar(fr, Wr) {
                  var Yr = Be * o(Ge * Wr), Pr = w(1 - Yr * Yr), tn = w(2 / (1 + Pr * T(fr *= sr)));
                  return [
                    he * Pr * tn * o(fr),
                    Ae * Yr * tn
                  ];
                }
                return ar.invert = function(fr, Wr) {
                  var Yr = fr / he, Pr = Wr / Ae, tn = w(Yr * Yr + Pr * Pr), un = 2 * h(tn / 2);
                  return [
                    s(fr * y(un), he * tn) / sr,
                    tn && h(Wr * o(un) / (Ae * Be * tn)) / Ge
                  ];
                }, ar;
              }
              function du(he, Ae, Be, Ge) {
                var sr = c / 3;
                he = t(he, g), Ae = t(Ae, g), he = r(he, v), Ae = r(Ae, c - g), Be = t(Be, 0), Be = r(Be, 100 - g), Ge = t(Ge, g);
                var ar = Be / 100 + 1, fr = Ge / 100, Wr = E(ar * T(sr)) / sr, Yr = o(he) / o(Wr * v), Pr = Ae / c, tn = w(fr * o(he / 2) / o(Ae / 2)), un = tn / w(Pr * Yr * Wr), dn = 1 / (tn * w(Pr * Yr * Wr));
                return ih(un, dn, Yr, Wr, Pr);
              }
              function Wl() {
                var he = 65 * L, Ae = 60 * L, Be = 20, Ge = 200, sr = (0, b.U)(du), ar = sr(he, Ae, Be, Ge);
                return ar.poleline = function(fr) {
                  return arguments.length ? sr(he = +fr * L, Ae, Be, Ge) : he * m;
                }, ar.parallels = function(fr) {
                  return arguments.length ? sr(he, Ae = +fr * L, Be, Ge) : Ae * m;
                }, ar.inflation = function(fr) {
                  return arguments.length ? sr(he, Ae, Be = +fr, Ge) : Be;
                }, ar.ratio = function(fr) {
                  return arguments.length ? sr(he, Ae, Be, Ge = +fr) : Ge;
                }, ar.scale(163.775);
              }
              function Ih() {
                return Wl().poleline(65).parallels(60).inflation(0).ratio(200).scale(172.633);
              }
              var Cf = 4 * c + 3 * w(3), qc = 2 * w(2 * c * w(3) / Cf), ah = Vt(qc * w(3) / c, qc, Cf / 6);
              function ud() {
                return (0, b.A)(ah).scale(176.84);
              }
              function Cc(he, Ae) {
                return [he * w(1 - 3 * Ae * Ae / (c * c)), Ae];
              }
              Cc.invert = function(he, Ae) {
                return [he / w(1 - 3 * Ae * Ae / (c * c)), Ae];
              };
              function tf() {
                return (0, b.A)(Cc).scale(152.63);
              }
              function vu(he, Ae) {
                var Be = T(Ae), Ge = T(he) * Be, sr = 1 - Ge, ar = T(he = s(o(he) * Be, -o(Ae))), fr = o(he);
                return Be = w(1 - Ge * Ge), [
                  fr * Be - ar * sr,
                  -ar * Be - fr * sr
                ];
              }
              vu.invert = function(he, Ae) {
                var Be = (he * he + Ae * Ae) / -2, Ge = w(-Be * (2 + Be)), sr = Ae * Be + he * Ge, ar = he * Be - Ae * Ge, fr = w(ar * ar + sr * sr);
                return [
                  s(Ge * sr, fr * (1 + Be)),
                  fr ? -h(Ge * ar / fr) : 0
                ];
              };
              function ef() {
                return (0, b.A)(vu).rotate([0, -90, 45]).scale(124.75).clipAngle(179.999);
              }
              function pu(he, Ae) {
                var Be = G(he, Ae);
                return [
                  (Be[0] + he / v) / 2,
                  (Be[1] + Ae) / 2
                ];
              }
              pu.invert = function(he, Ae) {
                var Be = he, Ge = Ae, sr = 25;
                do {
                  var ar = T(Ge), fr = o(Ge), Wr = o(2 * Ge), Yr = fr * fr, Pr = ar * ar, tn = o(Be), un = T(Be / 2), dn = o(Be / 2), On = dn * dn, ai = 1 - Pr * un * un, ri = ai ? E(ar * un) * w(gi = 1 / ai) : gi = 0, gi, Ni = 0.5 * (2 * ri * ar * dn + Be / v) - he, Ia = 0.5 * (ri * fr + Ge) - Ae, Pa = 0.5 * gi * (Pr * On + ri * ar * un * Yr) + 0.5 / v, Fa = gi * (tn * Wr / 4 - ri * fr * dn), Ga = 0.125 * gi * (Wr * dn - ri * fr * Pr * tn), Na = 0.5 * gi * (Yr * un + ri * On * ar) + 0.5, To = Fa * Ga - Na * Pa, Do = (Ia * Fa - Ni * Na) / To, gt = (Ni * Ga - Ia * Pa) / To;
                  Be -= Do, Ge -= gt;
                } while ((P(Do) > g || P(gt) > g) && --sr > 0);
                return [Be, Ge];
              };
              function cd() {
                return (0, b.A)(pu).scale(158.837);
              }
            }
          ),
          /***/
          49353: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                A: function() {
                  return (
                    /* export default binding */
                    b
                  );
                }
                /* harmony export */
              });
              function b() {
                return new P();
              }
              function P() {
                this.reset();
              }
              P.prototype = {
                constructor: P,
                reset: function() {
                  this.s = // rounded value
                  this.t = 0;
                },
                add: function(T) {
                  s(n, T, this.t), s(this, n.s, this.s), this.s ? this.t += n.t : this.s = n.t;
                },
                valueOf: function() {
                  return this.s;
                }
              };
              var n = new P();
              function s(T, A, p) {
                var u = T.s = A + p, t = u - A, r = u - t;
                T.t = A - r + (p - t);
              }
            }
          ),
          /***/
          43976: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                Ay: function() {
                  return (
                    /* export default binding */
                    x
                  );
                },
                /* harmony export */
                B0: function() {
                  return (
                    /* binding */
                    T
                  );
                },
                /* harmony export */
                Y7: function() {
                  return (
                    /* binding */
                    a
                  );
                }
                /* harmony export */
              });
              var b = e(49353), P = e(61323), n = e(53341), s = e(20465), T = (0, b.A)(), A = (0, b.A)(), p, u, t, r, i, a = {
                point: n.A,
                lineStart: n.A,
                lineEnd: n.A,
                polygonStart: function() {
                  T.reset(), a.lineStart = l, a.lineEnd = o;
                },
                polygonEnd: function() {
                  var c = +T;
                  A.add(c < 0 ? P.FA + c : c), this.lineStart = this.lineEnd = this.point = n.A;
                },
                sphere: function() {
                  A.add(P.FA);
                }
              };
              function l() {
                a.point = y;
              }
              function o() {
                g(p, u);
              }
              function y(c, v) {
                a.point = g, p = c, u = v, c *= P.F2, v *= P.F2, t = c, r = (0, P.gn)(v = v / 2 + P.gz), i = (0, P.F8)(v);
              }
              function g(c, v) {
                c *= P.F2, v *= P.F2, v = v / 2 + P.gz;
                var f = c - t, _ = f >= 0 ? 1 : -1, S = _ * f, M = (0, P.gn)(v), C = (0, P.F8)(v), m = i * C, L = r * M + m * (0, P.gn)(S), d = m * _ * (0, P.F8)(S);
                T.add((0, P.FP)(d, L)), t = c, r = M, i = C;
              }
              function x(c) {
                return A.reset(), (0, s.A)(c, a), A * 2;
              }
            }
          ),
          /***/
          43212: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                A: function() {
                  return (
                    /* export default binding */
                    h
                  );
                }
                /* harmony export */
              });
              var b = e(49353), P = e(43976), n = e(20375), s = e(61323), T = e(20465), A, p, u, t, r, i, a, l, o = (0, b.A)(), y, g, x = {
                point: c,
                lineStart: f,
                lineEnd: _,
                polygonStart: function() {
                  x.point = S, x.lineStart = M, x.lineEnd = C, o.reset(), P.Y7.polygonStart();
                },
                polygonEnd: function() {
                  P.Y7.polygonEnd(), x.point = c, x.lineStart = f, x.lineEnd = _, P.B0 < 0 ? (A = -(u = 180), p = -(t = 90)) : o > s.Ni ? t = 90 : o < -s.Ni && (p = -90), g[0] = A, g[1] = u;
                },
                sphere: function() {
                  A = -(u = 180), p = -(t = 90);
                }
              };
              function c(E, w) {
                y.push(g = [A = E, u = E]), w < p && (p = w), w > t && (t = w);
              }
              function v(E, w) {
                var z = (0, n.jf)([E * s.F2, w * s.F2]);
                if (l) {
                  var O = (0, n.r8)(l, z), B = [O[1], -O[0], 0], V = (0, n.r8)(B, O);
                  (0, n.Cx)(V), V = (0, n.EV)(V);
                  var U = E - r, H = U > 0 ? 1 : -1, F = V[0] * s.uj * H, G, q = (0, s.tn)(U) > 180;
                  q ^ (H * r < F && F < H * E) ? (G = V[1] * s.uj, G > t && (t = G)) : (F = (F + 360) % 360 - 180, q ^ (H * r < F && F < H * E) ? (G = -V[1] * s.uj, G < p && (p = G)) : (w < p && (p = w), w > t && (t = w))), q ? E < r ? m(A, E) > m(A, u) && (u = E) : m(E, u) > m(A, u) && (A = E) : u >= A ? (E < A && (A = E), E > u && (u = E)) : E > r ? m(A, E) > m(A, u) && (u = E) : m(E, u) > m(A, u) && (A = E);
                } else
                  y.push(g = [A = E, u = E]);
                w < p && (p = w), w > t && (t = w), l = z, r = E;
              }
              function f() {
                x.point = v;
              }
              function _() {
                g[0] = A, g[1] = u, x.point = c, l = null;
              }
              function S(E, w) {
                if (l) {
                  var z = E - r;
                  o.add((0, s.tn)(z) > 180 ? z + (z > 0 ? 360 : -360) : z);
                } else
                  i = E, a = w;
                P.Y7.point(E, w), v(E, w);
              }
              function M() {
                P.Y7.lineStart();
              }
              function C() {
                S(i, a), P.Y7.lineEnd(), (0, s.tn)(o) > s.Ni && (A = -(u = 180)), g[0] = A, g[1] = u, l = null;
              }
              function m(E, w) {
                return (w -= E) < 0 ? w + 360 : w;
              }
              function L(E, w) {
                return E[0] - w[0];
              }
              function d(E, w) {
                return E[0] <= E[1] ? E[0] <= w && w <= E[1] : w < E[0] || E[1] < w;
              }
              function h(E) {
                var w, z, O, B, V, U, H;
                if (t = u = -(A = p = 1 / 0), y = [], (0, T.A)(E, x), z = y.length) {
                  for (y.sort(L), w = 1, O = y[0], V = [O]; w < z; ++w)
                    B = y[w], d(O, B[0]) || d(O, B[1]) ? (m(O[0], B[1]) > m(O[0], O[1]) && (O[1] = B[1]), m(B[0], O[1]) > m(O[0], O[1]) && (O[0] = B[0])) : V.push(O = B);
                  for (U = -1 / 0, z = V.length - 1, w = 0, O = V[z]; w <= z; O = B, ++w)
                    B = V[w], (H = m(O[1], B[0])) > U && (U = H, A = B[0], u = O[1]);
                }
                return y = g = null, A === 1 / 0 || p === 1 / 0 ? [[NaN, NaN], [NaN, NaN]] : [[A, p], [u, t]];
              }
            }
          ),
          /***/
          20375: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                Cx: function() {
                  return (
                    /* binding */
                    u
                  );
                },
                /* harmony export */
                EV: function() {
                  return (
                    /* binding */
                    P
                  );
                },
                /* harmony export */
                W8: function() {
                  return (
                    /* binding */
                    s
                  );
                },
                /* harmony export */
                ep: function() {
                  return (
                    /* binding */
                    A
                  );
                },
                /* harmony export */
                jf: function() {
                  return (
                    /* binding */
                    n
                  );
                },
                /* harmony export */
                ly: function() {
                  return (
                    /* binding */
                    p
                  );
                },
                /* harmony export */
                r8: function() {
                  return (
                    /* binding */
                    T
                  );
                }
                /* harmony export */
              });
              var b = e(61323);
              function P(t) {
                return [(0, b.FP)(t[1], t[0]), (0, b.qR)(t[2])];
              }
              function n(t) {
                var r = t[0], i = t[1], a = (0, b.gn)(i);
                return [a * (0, b.gn)(r), a * (0, b.F8)(r), (0, b.F8)(i)];
              }
              function s(t, r) {
                return t[0] * r[0] + t[1] * r[1] + t[2] * r[2];
              }
              function T(t, r) {
                return [t[1] * r[2] - t[2] * r[1], t[2] * r[0] - t[0] * r[2], t[0] * r[1] - t[1] * r[0]];
              }
              function A(t, r) {
                t[0] += r[0], t[1] += r[1], t[2] += r[2];
              }
              function p(t, r) {
                return [t[0] * r, t[1] * r, t[2] * r];
              }
              function u(t) {
                var r = (0, b.RZ)(t[0] * t[0] + t[1] * t[1] + t[2] * t[2]);
                t[0] /= r, t[1] /= r, t[2] /= r;
              }
            }
          ),
          /***/
          30021: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                A: function() {
                  return (
                    /* export default binding */
                    z
                  );
                }
                /* harmony export */
              });
              var b = e(61323), P = e(53341), n = e(20465), s, T, A, p, u, t, r, i, a, l, o, y, g, x, c, v, f = {
                sphere: P.A,
                point: _,
                lineStart: M,
                lineEnd: L,
                polygonStart: function() {
                  f.lineStart = d, f.lineEnd = h;
                },
                polygonEnd: function() {
                  f.lineStart = M, f.lineEnd = L;
                }
              };
              function _(O, B) {
                O *= b.F2, B *= b.F2;
                var V = (0, b.gn)(B);
                S(V * (0, b.gn)(O), V * (0, b.F8)(O), (0, b.F8)(B));
              }
              function S(O, B, V) {
                ++s, A += (O - A) / s, p += (B - p) / s, u += (V - u) / s;
              }
              function M() {
                f.point = C;
              }
              function C(O, B) {
                O *= b.F2, B *= b.F2;
                var V = (0, b.gn)(B);
                x = V * (0, b.gn)(O), c = V * (0, b.F8)(O), v = (0, b.F8)(B), f.point = m, S(x, c, v);
              }
              function m(O, B) {
                O *= b.F2, B *= b.F2;
                var V = (0, b.gn)(B), U = V * (0, b.gn)(O), H = V * (0, b.F8)(O), F = (0, b.F8)(B), G = (0, b.FP)((0, b.RZ)((G = c * F - v * H) * G + (G = v * U - x * F) * G + (G = x * H - c * U) * G), x * U + c * H + v * F);
                T += G, t += G * (x + (x = U)), r += G * (c + (c = H)), i += G * (v + (v = F)), S(x, c, v);
              }
              function L() {
                f.point = _;
              }
              function d() {
                f.point = E;
              }
              function h() {
                w(y, g), f.point = _;
              }
              function E(O, B) {
                y = O, g = B, O *= b.F2, B *= b.F2, f.point = w;
                var V = (0, b.gn)(B);
                x = V * (0, b.gn)(O), c = V * (0, b.F8)(O), v = (0, b.F8)(B), S(x, c, v);
              }
              function w(O, B) {
                O *= b.F2, B *= b.F2;
                var V = (0, b.gn)(B), U = V * (0, b.gn)(O), H = V * (0, b.F8)(O), F = (0, b.F8)(B), G = c * F - v * H, q = v * U - x * F, rt = x * H - c * U, st = (0, b.RZ)(G * G + q * q + rt * rt), vt = (0, b.qR)(st), ht = st && -vt / st;
                a += ht * G, l += ht * q, o += ht * rt, T += vt, t += vt * (x + (x = U)), r += vt * (c + (c = H)), i += vt * (v + (v = F)), S(x, c, v);
              }
              function z(O) {
                s = T = A = p = u = t = r = i = a = l = o = 0, (0, n.A)(O, f);
                var B = a, V = l, U = o, H = B * B + V * V + U * U;
                return H < b.$t && (B = t, V = r, U = i, T < b.Ni && (B = A, V = p, U = u), H = B * B + V * V + U * U, H < b.$t) ? [NaN, NaN] : [(0, b.FP)(V, B) * b.uj, (0, b.qR)(U / (0, b.RZ)(H)) * b.uj];
              }
            }
          ),
          /***/
          39127: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                J: function() {
                  return (
                    /* binding */
                    T
                  );
                },
                A: function() {
                  return (
                    /* binding */
                    p
                  );
                }
              });
              var b = e(20375);
              function P(u) {
                return function() {
                  return u;
                };
              }
              var n = e(61323), s = e(30915);
              function T(u, t, r, i, a, l) {
                if (r) {
                  var o = (0, n.gn)(t), y = (0, n.F8)(t), g = i * r;
                  a == null ? (a = t + i * n.FA, l = t - g / 2) : (a = A(o, a), l = A(o, l), (i > 0 ? a < l : a > l) && (a += i * n.FA));
                  for (var x, c = a; i > 0 ? c > l : c < l; c -= g)
                    x = (0, b.EV)([o, -y * (0, n.gn)(c), -y * (0, n.F8)(c)]), u.point(x[0], x[1]);
                }
              }
              function A(u, t) {
                t = (0, b.jf)(t), t[0] -= u, (0, b.Cx)(t);
                var r = (0, n.HQ)(-t[1]);
                return ((-t[2] < 0 ? -r : r) + n.FA - n.Ni) % n.FA;
              }
              function p() {
                var u = P([0, 0]), t = P(90), r = P(6), i, a, l = { point: o };
                function o(g, x) {
                  i.push(g = a(g, x)), g[0] *= n.uj, g[1] *= n.uj;
                }
                function y() {
                  var g = u.apply(this, arguments), x = t.apply(this, arguments) * n.F2, c = r.apply(this, arguments) * n.F2;
                  return i = [], a = (0, s.y)(-g[0] * n.F2, -g[1] * n.F2, 0).invert, T(l, x, c, 1), g = { type: "Polygon", coordinates: [i] }, i = a = null, g;
                }
                return y.center = function(g) {
                  return arguments.length ? (u = typeof g == "function" ? g : P([+g[0], +g[1]]), y) : u;
                }, y.radius = function(g) {
                  return arguments.length ? (t = typeof g == "function" ? g : P(+g), y) : t;
                }, y.precision = function(g) {
                  return arguments.length ? (r = typeof g == "function" ? g : P(+g), y) : r;
                }, y;
              }
            }
          ),
          /***/
          42413: (
            /***/
            function(Y, K, e) {
              var b = e(13720), P = e(61323);
              K.A = (0, b.A)(
                function() {
                  return !0;
                },
                n,
                T,
                [-P.pi, -P.TW]
              );
              function n(A) {
                var p = NaN, u = NaN, t = NaN, r;
                return {
                  lineStart: function() {
                    A.lineStart(), r = 1;
                  },
                  point: function(i, a) {
                    var l = i > 0 ? P.pi : -P.pi, o = (0, P.tn)(i - p);
                    (0, P.tn)(o - P.pi) < P.Ni ? (A.point(p, u = (u + a) / 2 > 0 ? P.TW : -P.TW), A.point(t, u), A.lineEnd(), A.lineStart(), A.point(l, u), A.point(i, u), r = 0) : t !== l && o >= P.pi && ((0, P.tn)(p - t) < P.Ni && (p -= t * P.Ni), (0, P.tn)(i - l) < P.Ni && (i -= l * P.Ni), u = s(p, u, i, a), A.point(t, u), A.lineEnd(), A.lineStart(), A.point(l, u), r = 0), A.point(p = i, u = a), t = l;
                  },
                  lineEnd: function() {
                    A.lineEnd(), p = u = NaN;
                  },
                  clean: function() {
                    return 2 - r;
                  }
                };
              }
              function s(A, p, u, t) {
                var r, i, a = (0, P.F8)(A - u);
                return (0, P.tn)(a) > P.Ni ? (0, P.rY)(((0, P.F8)(p) * (i = (0, P.gn)(t)) * (0, P.F8)(u) - (0, P.F8)(t) * (r = (0, P.gn)(p)) * (0, P.F8)(A)) / (r * i * a)) : (p + t) / 2;
              }
              function T(A, p, u, t) {
                var r;
                if (A == null)
                  r = u * P.TW, t.point(-P.pi, r), t.point(0, r), t.point(P.pi, r), t.point(P.pi, 0), t.point(P.pi, -r), t.point(0, -r), t.point(-P.pi, -r), t.point(-P.pi, 0), t.point(-P.pi, r);
                else if ((0, P.tn)(A[0] - p[0]) > P.Ni) {
                  var i = A[0] < p[0] ? P.pi : -P.pi;
                  r = u * i / 2, t.point(-i, r), t.point(0, r), t.point(i, r);
                } else
                  t.point(p[0], p[1]);
              }
            }
          ),
          /***/
          39608: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                A: function() {
                  return (
                    /* export default binding */
                    P
                  );
                }
                /* harmony export */
              });
              var b = e(53341);
              function P() {
                var n = [], s;
                return {
                  point: function(T, A, p) {
                    s.push([T, A, p]);
                  },
                  lineStart: function() {
                    n.push(s = []);
                  },
                  lineEnd: b.A,
                  rejoin: function() {
                    n.length > 1 && n.push(n.pop().concat(n.shift()));
                  },
                  result: function() {
                    var T = n;
                    return n = [], s = null, T;
                  }
                };
              }
            }
          ),
          /***/
          47402: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                A: function() {
                  return (
                    /* export default binding */
                    A
                  );
                }
                /* harmony export */
              });
              var b = e(20375), P = e(39127), n = e(61323), s = e(28759), T = e(13720);
              function A(p) {
                var u = (0, n.gn)(p), t = 6 * n.F2, r = u > 0, i = (0, n.tn)(u) > n.Ni;
                function a(x, c, v, f) {
                  (0, P.J)(f, p, t, v, x, c);
                }
                function l(x, c) {
                  return (0, n.gn)(x) * (0, n.gn)(c) > u;
                }
                function o(x) {
                  var c, v, f, _, S;
                  return {
                    lineStart: function() {
                      _ = f = !1, S = 1;
                    },
                    point: function(M, C) {
                      var m = [M, C], L, d = l(M, C), h = r ? d ? 0 : g(M, C) : d ? g(M + (M < 0 ? n.pi : -n.pi), C) : 0;
                      if (!c && (_ = f = d) && x.lineStart(), d !== f && (L = y(c, m), (!L || (0, s.A)(c, L) || (0, s.A)(m, L)) && (m[2] = 1)), d !== f)
                        S = 0, d ? (x.lineStart(), L = y(m, c), x.point(L[0], L[1])) : (L = y(c, m), x.point(L[0], L[1], 2), x.lineEnd()), c = L;
                      else if (i && c && r ^ d) {
                        var E;
                        !(h & v) && (E = y(m, c, !0)) && (S = 0, r ? (x.lineStart(), x.point(E[0][0], E[0][1]), x.point(E[1][0], E[1][1]), x.lineEnd()) : (x.point(E[1][0], E[1][1]), x.lineEnd(), x.lineStart(), x.point(E[0][0], E[0][1], 3)));
                      }
                      d && (!c || !(0, s.A)(c, m)) && x.point(m[0], m[1]), c = m, f = d, v = h;
                    },
                    lineEnd: function() {
                      f && x.lineEnd(), c = null;
                    },
                    // Rejoin first and last segments if there were intersections and the first
                    // and last points were visible.
                    clean: function() {
                      return S | (_ && f) << 1;
                    }
                  };
                }
                function y(x, c, v) {
                  var f = (0, b.jf)(x), _ = (0, b.jf)(c), S = [1, 0, 0], M = (0, b.r8)(f, _), C = (0, b.W8)(M, M), m = M[0], L = C - m * m;
                  if (!L) return !v && x;
                  var d = u * C / L, h = -u * m / L, E = (0, b.r8)(S, M), w = (0, b.ly)(S, d), z = (0, b.ly)(M, h);
                  (0, b.ep)(w, z);
                  var O = E, B = (0, b.W8)(w, O), V = (0, b.W8)(O, O), U = B * B - V * ((0, b.W8)(w, w) - 1);
                  if (!(U < 0)) {
                    var H = (0, n.RZ)(U), F = (0, b.ly)(O, (-B - H) / V);
                    if ((0, b.ep)(F, w), F = (0, b.EV)(F), !v) return F;
                    var G = x[0], q = c[0], rt = x[1], st = c[1], vt;
                    q < G && (vt = G, G = q, q = vt);
                    var ht = q - G, et = (0, n.tn)(ht - n.pi) < n.Ni, Q = et || ht < n.Ni;
                    if (!et && st < rt && (vt = rt, rt = st, st = vt), Q ? et ? rt + st > 0 ^ F[1] < ((0, n.tn)(F[0] - G) < n.Ni ? rt : st) : rt <= F[1] && F[1] <= st : ht > n.pi ^ (G <= F[0] && F[0] <= q)) {
                      var j = (0, b.ly)(O, (-B + H) / V);
                      return (0, b.ep)(j, w), [F, (0, b.EV)(j)];
                    }
                  }
                }
                function g(x, c) {
                  var v = r ? p : n.pi - p, f = 0;
                  return x < -v ? f |= 1 : x > v && (f |= 2), c < -v ? f |= 4 : c > v && (f |= 8), f;
                }
                return (0, T.A)(l, o, a, r ? [0, -p] : [-n.pi, p - n.pi]);
              }
            }
          ),
          /***/
          13720: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                A: function() {
                  return (
                    /* export default binding */
                    A
                  );
                }
                /* harmony export */
              });
              var b = e(39608), P = e(19119), n = e(61323), s = e(2274), T = e(29725);
              function A(t, r, i, a) {
                return function(l) {
                  var o = r(l), y = (0, b.A)(), g = r(y), x = !1, c, v, f, _ = {
                    point: S,
                    lineStart: C,
                    lineEnd: m,
                    polygonStart: function() {
                      _.point = L, _.lineStart = d, _.lineEnd = h, v = [], c = [];
                    },
                    polygonEnd: function() {
                      _.point = S, _.lineStart = C, _.lineEnd = m, v = (0, T.Am)(v);
                      var E = (0, s.A)(c, a);
                      v.length ? (x || (l.polygonStart(), x = !0), (0, P.A)(v, u, E, i, l)) : E && (x || (l.polygonStart(), x = !0), l.lineStart(), i(null, null, 1, l), l.lineEnd()), x && (l.polygonEnd(), x = !1), v = c = null;
                    },
                    sphere: function() {
                      l.polygonStart(), l.lineStart(), i(null, null, 1, l), l.lineEnd(), l.polygonEnd();
                    }
                  };
                  function S(E, w) {
                    t(E, w) && l.point(E, w);
                  }
                  function M(E, w) {
                    o.point(E, w);
                  }
                  function C() {
                    _.point = M, o.lineStart();
                  }
                  function m() {
                    _.point = S, o.lineEnd();
                  }
                  function L(E, w) {
                    f.push([E, w]), g.point(E, w);
                  }
                  function d() {
                    g.lineStart(), f = [];
                  }
                  function h() {
                    L(f[0][0], f[0][1]), g.lineEnd();
                    var E = g.clean(), w = y.result(), z, O = w.length, B, V, U;
                    if (f.pop(), c.push(f), f = null, !!O) {
                      if (E & 1) {
                        if (V = w[0], (B = V.length - 1) > 0) {
                          for (x || (l.polygonStart(), x = !0), l.lineStart(), z = 0; z < B; ++z) l.point((U = V[z])[0], U[1]);
                          l.lineEnd();
                        }
                        return;
                      }
                      O > 1 && E & 2 && w.push(w.pop().concat(w.shift())), v.push(w.filter(p));
                    }
                  }
                  return _;
                };
              }
              function p(t) {
                return t.length > 1;
              }
              function u(t, r) {
                return ((t = t.x)[0] < 0 ? t[1] - n.TW - n.Ni : n.TW - t[1]) - ((r = r.x)[0] < 0 ? r[1] - n.TW - n.Ni : n.TW - r[1]);
              }
            }
          ),
          /***/
          21503: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                A: function() {
                  return (
                    /* binding */
                    u
                  );
                }
              });
              var b = e(61323), P = e(39608);
              function n(t, r, i, a, l, o) {
                var y = t[0], g = t[1], x = r[0], c = r[1], v = 0, f = 1, _ = x - y, S = c - g, M;
                if (M = i - y, !(!_ && M > 0)) {
                  if (M /= _, _ < 0) {
                    if (M < v) return;
                    M < f && (f = M);
                  } else if (_ > 0) {
                    if (M > f) return;
                    M > v && (v = M);
                  }
                  if (M = l - y, !(!_ && M < 0)) {
                    if (M /= _, _ < 0) {
                      if (M > f) return;
                      M > v && (v = M);
                    } else if (_ > 0) {
                      if (M < v) return;
                      M < f && (f = M);
                    }
                    if (M = a - g, !(!S && M > 0)) {
                      if (M /= S, S < 0) {
                        if (M < v) return;
                        M < f && (f = M);
                      } else if (S > 0) {
                        if (M > f) return;
                        M > v && (v = M);
                      }
                      if (M = o - g, !(!S && M < 0)) {
                        if (M /= S, S < 0) {
                          if (M > f) return;
                          M > v && (v = M);
                        } else if (S > 0) {
                          if (M < v) return;
                          M < f && (f = M);
                        }
                        return v > 0 && (t[0] = y + v * _, t[1] = g + v * S), f < 1 && (r[0] = y + f * _, r[1] = g + f * S), !0;
                      }
                    }
                  }
                }
              }
              var s = e(19119), T = e(29725), A = 1e9, p = -A;
              function u(t, r, i, a) {
                function l(c, v) {
                  return t <= c && c <= i && r <= v && v <= a;
                }
                function o(c, v, f, _) {
                  var S = 0, M = 0;
                  if (c == null || (S = y(c, f)) !== (M = y(v, f)) || x(c, v) < 0 ^ f > 0)
                    do
                      _.point(S === 0 || S === 3 ? t : i, S > 1 ? a : r);
                    while ((S = (S + f + 4) % 4) !== M);
                  else
                    _.point(v[0], v[1]);
                }
                function y(c, v) {
                  return (0, b.tn)(c[0] - t) < b.Ni ? v > 0 ? 0 : 3 : (0, b.tn)(c[0] - i) < b.Ni ? v > 0 ? 2 : 1 : (0, b.tn)(c[1] - r) < b.Ni ? v > 0 ? 1 : 0 : v > 0 ? 3 : 2;
                }
                function g(c, v) {
                  return x(c.x, v.x);
                }
                function x(c, v) {
                  var f = y(c, 1), _ = y(v, 1);
                  return f !== _ ? f - _ : f === 0 ? v[1] - c[1] : f === 1 ? c[0] - v[0] : f === 2 ? c[1] - v[1] : v[0] - c[0];
                }
                return function(c) {
                  var v = c, f = (0, P.A)(), _, S, M, C, m, L, d, h, E, w, z, O = {
                    point: B,
                    lineStart: F,
                    lineEnd: G,
                    polygonStart: U,
                    polygonEnd: H
                  };
                  function B(rt, st) {
                    l(rt, st) && v.point(rt, st);
                  }
                  function V() {
                    for (var rt = 0, st = 0, vt = S.length; st < vt; ++st)
                      for (var ht = S[st], et = 1, Q = ht.length, j = ht[0], at, ut, nt = j[0], X = j[1]; et < Q; ++et)
                        at = nt, ut = X, j = ht[et], nt = j[0], X = j[1], ut <= a ? X > a && (nt - at) * (a - ut) > (X - ut) * (t - at) && ++rt : X <= a && (nt - at) * (a - ut) < (X - ut) * (t - at) && --rt;
                    return rt;
                  }
                  function U() {
                    v = f, _ = [], S = [], z = !0;
                  }
                  function H() {
                    var rt = V(), st = z && rt, vt = (_ = (0, T.Am)(_)).length;
                    (st || vt) && (c.polygonStart(), st && (c.lineStart(), o(null, null, 1, c), c.lineEnd()), vt && (0, s.A)(_, g, rt, o, c), c.polygonEnd()), v = c, _ = S = M = null;
                  }
                  function F() {
                    O.point = q, S && S.push(M = []), w = !0, E = !1, d = h = NaN;
                  }
                  function G() {
                    _ && (q(C, m), L && E && f.rejoin(), _.push(f.result())), O.point = B, E && v.lineEnd();
                  }
                  function q(rt, st) {
                    var vt = l(rt, st);
                    if (S && M.push([rt, st]), w)
                      C = rt, m = st, L = vt, w = !1, vt && (v.lineStart(), v.point(rt, st));
                    else if (vt && E) v.point(rt, st);
                    else {
                      var ht = [d = Math.max(p, Math.min(A, d)), h = Math.max(p, Math.min(A, h))], et = [rt = Math.max(p, Math.min(A, rt)), st = Math.max(p, Math.min(A, st))];
                      n(ht, et, t, r, i, a) ? (E || (v.lineStart(), v.point(ht[0], ht[1])), v.point(et[0], et[1]), vt || v.lineEnd(), z = !1) : vt && (v.lineStart(), v.point(rt, st), z = !1);
                    }
                    d = rt, h = st, E = vt;
                  }
                  return O;
                };
              }
            }
          ),
          /***/
          19119: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                A: function() {
                  return (
                    /* export default binding */
                    s
                  );
                }
                /* harmony export */
              });
              var b = e(28759), P = e(61323);
              function n(A, p, u, t) {
                this.x = A, this.z = p, this.o = u, this.e = t, this.v = !1, this.n = this.p = null;
              }
              function s(A, p, u, t, r) {
                var i = [], a = [], l, o;
                if (A.forEach(function(f) {
                  if (!((_ = f.length - 1) <= 0)) {
                    var _, S = f[0], M = f[_], C;
                    if ((0, b.A)(S, M)) {
                      if (!S[2] && !M[2]) {
                        for (r.lineStart(), l = 0; l < _; ++l) r.point((S = f[l])[0], S[1]);
                        r.lineEnd();
                        return;
                      }
                      M[0] += 2 * P.Ni;
                    }
                    i.push(C = new n(S, f, null, !0)), a.push(C.o = new n(S, null, C, !1)), i.push(C = new n(M, f, null, !1)), a.push(C.o = new n(M, null, C, !0));
                  }
                }), !!i.length) {
                  for (a.sort(p), T(i), T(a), l = 0, o = a.length; l < o; ++l)
                    a[l].e = u = !u;
                  for (var y = i[0], g, x; ; ) {
                    for (var c = y, v = !0; c.v; ) if ((c = c.n) === y) return;
                    g = c.z, r.lineStart();
                    do {
                      if (c.v = c.o.v = !0, c.e) {
                        if (v)
                          for (l = 0, o = g.length; l < o; ++l) r.point((x = g[l])[0], x[1]);
                        else
                          t(c.x, c.n.x, 1, r);
                        c = c.n;
                      } else {
                        if (v)
                          for (g = c.p.z, l = g.length - 1; l >= 0; --l) r.point((x = g[l])[0], x[1]);
                        else
                          t(c.x, c.p.x, -1, r);
                        c = c.p;
                      }
                      c = c.o, g = c.z, v = !v;
                    } while (!c.v);
                    r.lineEnd();
                  }
                }
              }
              function T(A) {
                if (p = A.length) {
                  for (var p, u = 0, t = A[0], r; ++u < p; )
                    t.n = r = A[u], r.p = t, t = r;
                  t.n = r = A[0], r.p = t;
                }
              }
            }
          ),
          /***/
          19057: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                A: function() {
                  return (
                    /* export default binding */
                    b
                  );
                }
                /* harmony export */
              });
              function b(P, n) {
                function s(T, A) {
                  return T = P(T, A), n(T[0], T[1]);
                }
                return P.invert && n.invert && (s.invert = function(T, A) {
                  return T = n.invert(T, A), T && P.invert(T[0], T[1]);
                }), s;
              }
            }
          ),
          /***/
          26827: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                A: function() {
                  return (
                    /* export default binding */
                    b
                  );
                }
                /* harmony export */
              });
              function b(P) {
                return P;
              }
            }
          ),
          /***/
          70884: (
            /***/
            function(Y, K, e) {
              e.r(K), e.d(K, {
                geoAlbers: function() {
                  return (
                    /* reexport */
                    dr
                  );
                },
                geoAlbersUsa: function() {
                  return (
                    /* reexport */
                    ue
                  );
                },
                geoArea: function() {
                  return (
                    /* reexport */
                    b.Ay
                  );
                },
                geoAzimuthalEqualArea: function() {
                  return (
                    /* reexport */
                    Pe.A
                  );
                },
                geoAzimuthalEqualAreaRaw: function() {
                  return (
                    /* reexport */
                    Pe.n
                  );
                },
                geoAzimuthalEquidistant: function() {
                  return (
                    /* reexport */
                    Ue.A
                  );
                },
                geoAzimuthalEquidistantRaw: function() {
                  return (
                    /* reexport */
                    Ue.j
                  );
                },
                geoBounds: function() {
                  return (
                    /* reexport */
                    P.A
                  );
                },
                geoCentroid: function() {
                  return (
                    /* reexport */
                    n.A
                  );
                },
                geoCircle: function() {
                  return (
                    /* reexport */
                    s.A
                  );
                },
                geoClipAntimeridian: function() {
                  return (
                    /* reexport */
                    T.A
                  );
                },
                geoClipCircle: function() {
                  return (
                    /* reexport */
                    A.A
                  );
                },
                geoClipExtent: function() {
                  return (
                    /* reexport */
                    u
                  );
                },
                geoClipRectangle: function() {
                  return (
                    /* reexport */
                    p.A
                  );
                },
                geoConicConformal: function() {
                  return (
                    /* reexport */
                    Or
                  );
                },
                geoConicConformalRaw: function() {
                  return (
                    /* reexport */
                    Dr
                  );
                },
                geoConicEqualArea: function() {
                  return (
                    /* reexport */
                    Je
                  );
                },
                geoConicEqualAreaRaw: function() {
                  return (
                    /* reexport */
                    De
                  );
                },
                geoConicEquidistant: function() {
                  return (
                    /* reexport */
                    Xr
                  );
                },
                geoConicEquidistantRaw: function() {
                  return (
                    /* reexport */
                    Nr
                  );
                },
                geoContains: function() {
                  return (
                    /* reexport */
                    U
                  );
                },
                geoDistance: function() {
                  return (
                    /* reexport */
                    L
                  );
                },
                geoEqualEarth: function() {
                  return (
                    /* reexport */
                    yr
                  );
                },
                geoEqualEarthRaw: function() {
                  return (
                    /* reexport */
                    tr
                  );
                },
                geoEquirectangular: function() {
                  return (
                    /* reexport */
                    Br.A
                  );
                },
                geoEquirectangularRaw: function() {
                  return (
                    /* reexport */
                    Br.f
                  );
                },
                geoGnomonic: function() {
                  return (
                    /* reexport */
                    Ir.A
                  );
                },
                geoGnomonicRaw: function() {
                  return (
                    /* reexport */
                    Ir.T
                  );
                },
                geoGraticule: function() {
                  return (
                    /* reexport */
                    q
                  );
                },
                geoGraticule10: function() {
                  return (
                    /* reexport */
                    rt
                  );
                },
                geoIdentity: function() {
                  return (
                    /* reexport */
                    _r
                  );
                },
                geoInterpolate: function() {
                  return (
                    /* reexport */
                    st.A
                  );
                },
                geoLength: function() {
                  return (
                    /* reexport */
                    M
                  );
                },
                geoMercator: function() {
                  return (
                    /* reexport */
                    lr
                  );
                },
                geoMercatorRaw: function() {
                  return (
                    /* reexport */
                    rr
                  );
                },
                geoNaturalEarth1: function() {
                  return (
                    /* reexport */
                    Zr.A
                  );
                },
                geoNaturalEarth1Raw: function() {
                  return (
                    /* reexport */
                    Zr.P
                  );
                },
                geoOrthographic: function() {
                  return (
                    /* reexport */
                    ln.A
                  );
                },
                geoOrthographicRaw: function() {
                  return (
                    /* reexport */
                    ln.x
                  );
                },
                geoPath: function() {
                  return (
                    /* reexport */
                    xe
                  );
                },
                geoProjection: function() {
                  return (
                    /* reexport */
                    me.A
                  );
                },
                geoProjectionMutator: function() {
                  return (
                    /* reexport */
                    me.U
                  );
                },
                geoRotation: function() {
                  return (
                    /* reexport */
                    Ye.A
                  );
                },
                geoStereographic: function() {
                  return (
                    /* reexport */
                    fn
                  );
                },
                geoStereographicRaw: function() {
                  return (
                    /* reexport */
                    Zn
                  );
                },
                geoStream: function() {
                  return (
                    /* reexport */
                    l.A
                  );
                },
                geoTransform: function() {
                  return (
                    /* reexport */
                    Cr.A
                  );
                },
                geoTransverseMercator: function() {
                  return (
                    /* reexport */
                    Vn
                  );
                },
                geoTransverseMercatorRaw: function() {
                  return (
                    /* reexport */
                    hi
                  );
                }
              });
              var b = e(43976), P = e(43212), n = e(30021), s = e(39127), T = e(42413), A = e(47402), p = e(21503);
              function u() {
                var jr = 0, zr = 0, Tn = 960, sn = 500, $n, kn, An;
                return An = {
                  stream: function(qn) {
                    return $n && kn === qn ? $n : $n = (0, p.A)(jr, zr, Tn, sn)(kn = qn);
                  },
                  extent: function(qn) {
                    return arguments.length ? (jr = +qn[0][0], zr = +qn[0][1], Tn = +qn[1][0], sn = +qn[1][1], $n = kn = null, An) : [[jr, zr], [Tn, sn]];
                  }
                };
              }
              var t = e(2274), r = e(49353), i = e(61323), a = e(53341), l = e(20465), o = (0, r.A)(), y, g, x, c = {
                sphere: a.A,
                point: a.A,
                lineStart: v,
                lineEnd: a.A,
                polygonStart: a.A,
                polygonEnd: a.A
              };
              function v() {
                c.point = _, c.lineEnd = f;
              }
              function f() {
                c.point = c.lineEnd = a.A;
              }
              function _(jr, zr) {
                jr *= i.F2, zr *= i.F2, y = jr, g = (0, i.F8)(zr), x = (0, i.gn)(zr), c.point = S;
              }
              function S(jr, zr) {
                jr *= i.F2, zr *= i.F2;
                var Tn = (0, i.F8)(zr), sn = (0, i.gn)(zr), $n = (0, i.tn)(jr - y), kn = (0, i.gn)($n), An = (0, i.F8)($n), qn = sn * An, si = x * Tn - g * sn * kn, qi = g * Tn + x * sn * kn;
                o.add((0, i.FP)((0, i.RZ)(qn * qn + si * si), qi)), y = jr, g = Tn, x = sn;
              }
              function M(jr) {
                return o.reset(), (0, l.A)(jr, c), +o;
              }
              var C = [null, null], m = { type: "LineString", coordinates: C };
              function L(jr, zr) {
                return C[0] = jr, C[1] = zr, M(m);
              }
              var d = {
                Feature: function(jr, zr) {
                  return E(jr.geometry, zr);
                },
                FeatureCollection: function(jr, zr) {
                  for (var Tn = jr.features, sn = -1, $n = Tn.length; ++sn < $n; ) if (E(Tn[sn].geometry, zr)) return !0;
                  return !1;
                }
              }, h = {
                Sphere: function() {
                  return !0;
                },
                Point: function(jr, zr) {
                  return w(jr.coordinates, zr);
                },
                MultiPoint: function(jr, zr) {
                  for (var Tn = jr.coordinates, sn = -1, $n = Tn.length; ++sn < $n; ) if (w(Tn[sn], zr)) return !0;
                  return !1;
                },
                LineString: function(jr, zr) {
                  return z(jr.coordinates, zr);
                },
                MultiLineString: function(jr, zr) {
                  for (var Tn = jr.coordinates, sn = -1, $n = Tn.length; ++sn < $n; ) if (z(Tn[sn], zr)) return !0;
                  return !1;
                },
                Polygon: function(jr, zr) {
                  return O(jr.coordinates, zr);
                },
                MultiPolygon: function(jr, zr) {
                  for (var Tn = jr.coordinates, sn = -1, $n = Tn.length; ++sn < $n; ) if (O(Tn[sn], zr)) return !0;
                  return !1;
                },
                GeometryCollection: function(jr, zr) {
                  for (var Tn = jr.geometries, sn = -1, $n = Tn.length; ++sn < $n; ) if (E(Tn[sn], zr)) return !0;
                  return !1;
                }
              };
              function E(jr, zr) {
                return jr && h.hasOwnProperty(jr.type) ? h[jr.type](jr, zr) : !1;
              }
              function w(jr, zr) {
                return L(jr, zr) === 0;
              }
              function z(jr, zr) {
                for (var Tn, sn, $n, kn = 0, An = jr.length; kn < An; kn++) {
                  if (sn = L(jr[kn], zr), sn === 0 || kn > 0 && ($n = L(jr[kn], jr[kn - 1]), $n > 0 && Tn <= $n && sn <= $n && (Tn + sn - $n) * (1 - Math.pow((Tn - sn) / $n, 2)) < i.$t * $n))
                    return !0;
                  Tn = sn;
                }
                return !1;
              }
              function O(jr, zr) {
                return !!(0, t.A)(jr.map(B), V(zr));
              }
              function B(jr) {
                return jr = jr.map(V), jr.pop(), jr;
              }
              function V(jr) {
                return [jr[0] * i.F2, jr[1] * i.F2];
              }
              function U(jr, zr) {
                return (jr && d.hasOwnProperty(jr.type) ? d[jr.type] : E)(jr, zr);
              }
              var H = e(29725);
              function F(jr, zr, Tn) {
                var sn = (0, H.y1)(jr, zr - i.Ni, Tn).concat(zr);
                return function($n) {
                  return sn.map(function(kn) {
                    return [$n, kn];
                  });
                };
              }
              function G(jr, zr, Tn) {
                var sn = (0, H.y1)(jr, zr - i.Ni, Tn).concat(zr);
                return function($n) {
                  return sn.map(function(kn) {
                    return [kn, $n];
                  });
                };
              }
              function q() {
                var jr, zr, Tn, sn, $n, kn, An, qn, si = 10, qi = si, ha = 90, Mi = 360, Ji, ci, rn, Cn, Un = 2.5;
                function Fn() {
                  return { type: "MultiLineString", coordinates: mi() };
                }
                function mi() {
                  return (0, H.y1)((0, i.mk)(sn / ha) * ha, Tn, ha).map(rn).concat((0, H.y1)((0, i.mk)(qn / Mi) * Mi, An, Mi).map(Cn)).concat((0, H.y1)((0, i.mk)(zr / si) * si, jr, si).filter(function(Nn) {
                    return (0, i.tn)(Nn % ha) > i.Ni;
                  }).map(Ji)).concat((0, H.y1)((0, i.mk)(kn / qi) * qi, $n, qi).filter(function(Nn) {
                    return (0, i.tn)(Nn % Mi) > i.Ni;
                  }).map(ci));
                }
                return Fn.lines = function() {
                  return mi().map(function(Nn) {
                    return { type: "LineString", coordinates: Nn };
                  });
                }, Fn.outline = function() {
                  return {
                    type: "Polygon",
                    coordinates: [
                      rn(sn).concat(
                        Cn(An).slice(1),
                        rn(Tn).reverse().slice(1),
                        Cn(qn).reverse().slice(1)
                      )
                    ]
                  };
                }, Fn.extent = function(Nn) {
                  return arguments.length ? Fn.extentMajor(Nn).extentMinor(Nn) : Fn.extentMinor();
                }, Fn.extentMajor = function(Nn) {
                  return arguments.length ? (sn = +Nn[0][0], Tn = +Nn[1][0], qn = +Nn[0][1], An = +Nn[1][1], sn > Tn && (Nn = sn, sn = Tn, Tn = Nn), qn > An && (Nn = qn, qn = An, An = Nn), Fn.precision(Un)) : [[sn, qn], [Tn, An]];
                }, Fn.extentMinor = function(Nn) {
                  return arguments.length ? (zr = +Nn[0][0], jr = +Nn[1][0], kn = +Nn[0][1], $n = +Nn[1][1], zr > jr && (Nn = zr, zr = jr, jr = Nn), kn > $n && (Nn = kn, kn = $n, $n = Nn), Fn.precision(Un)) : [[zr, kn], [jr, $n]];
                }, Fn.step = function(Nn) {
                  return arguments.length ? Fn.stepMajor(Nn).stepMinor(Nn) : Fn.stepMinor();
                }, Fn.stepMajor = function(Nn) {
                  return arguments.length ? (ha = +Nn[0], Mi = +Nn[1], Fn) : [ha, Mi];
                }, Fn.stepMinor = function(Nn) {
                  return arguments.length ? (si = +Nn[0], qi = +Nn[1], Fn) : [si, qi];
                }, Fn.precision = function(Nn) {
                  return arguments.length ? (Un = +Nn, Ji = F(kn, $n, 90), ci = G(zr, jr, Un), rn = F(qn, An, 90), Cn = G(sn, Tn, Un), Fn) : Un;
                }, Fn.extentMajor([[-180, -90 + i.Ni], [180, 90 - i.Ni]]).extentMinor([[-180, -80 - i.Ni], [180, 80 + i.Ni]]);
              }
              function rt() {
                return q()();
              }
              var st = e(81758), vt = e(26827), ht = (0, r.A)(), et = (0, r.A)(), Q, j, at, ut, nt = {
                point: a.A,
                lineStart: a.A,
                lineEnd: a.A,
                polygonStart: function() {
                  nt.lineStart = X, nt.lineEnd = pt;
                },
                polygonEnd: function() {
                  nt.lineStart = nt.lineEnd = nt.point = a.A, ht.add((0, i.tn)(et)), et.reset();
                },
                result: function() {
                  var jr = ht / 2;
                  return ht.reset(), jr;
                }
              };
              function X() {
                nt.point = ct;
              }
              function ct(jr, zr) {
                nt.point = lt, Q = at = jr, j = ut = zr;
              }
              function lt(jr, zr) {
                et.add(ut * jr - at * zr), at = jr, ut = zr;
              }
              function pt() {
                lt(Q, j);
              }
              var wt = nt, Et = e(33028), Ct = 0, Gt = 0, Jt = 0, Qt = 0, Vt = 0, zt = 0, Rt = 0, Wt = 0, kt = 0, re, ge, _e, ce, ae = {
                point: Se,
                lineStart: ze,
                lineEnd: Oe,
                polygonStart: function() {
                  ae.lineStart = ur, ae.lineEnd = ie;
                },
                polygonEnd: function() {
                  ae.point = Se, ae.lineStart = ze, ae.lineEnd = Oe;
                },
                result: function() {
                  var jr = kt ? [Rt / kt, Wt / kt] : zt ? [Qt / zt, Vt / zt] : Jt ? [Ct / Jt, Gt / Jt] : [NaN, NaN];
                  return Ct = Gt = Jt = Qt = Vt = zt = Rt = Wt = kt = 0, jr;
                }
              };
              function Se(jr, zr) {
                Ct += jr, Gt += zr, ++Jt;
              }
              function ze() {
                ae.point = Ne;
              }
              function Ne(jr, zr) {
                ae.point = Ve, Se(_e = jr, ce = zr);
              }
              function Ve(jr, zr) {
                var Tn = jr - _e, sn = zr - ce, $n = (0, i.RZ)(Tn * Tn + sn * sn);
                Qt += $n * (_e + jr) / 2, Vt += $n * (ce + zr) / 2, zt += $n, Se(_e = jr, ce = zr);
              }
              function Oe() {
                ae.point = Se;
              }
              function ur() {
                ae.point = $t;
              }
              function ie() {
                jt(re, ge);
              }
              function $t(jr, zr) {
                ae.point = jt, Se(re = _e = jr, ge = ce = zr);
              }
              function jt(jr, zr) {
                var Tn = jr - _e, sn = zr - ce, $n = (0, i.RZ)(Tn * Tn + sn * sn);
                Qt += $n * (_e + jr) / 2, Vt += $n * (ce + zr) / 2, zt += $n, $n = ce * jr - _e * zr, Rt += $n * (_e + jr), Wt += $n * (ce + zr), kt += $n * 3, Se(_e = jr, ce = zr);
              }
              var ee = ae;
              function Bt(jr) {
                this._context = jr;
              }
              Bt.prototype = {
                _radius: 4.5,
                pointRadius: function(jr) {
                  return this._radius = jr, this;
                },
                polygonStart: function() {
                  this._line = 0;
                },
                polygonEnd: function() {
                  this._line = NaN;
                },
                lineStart: function() {
                  this._point = 0;
                },
                lineEnd: function() {
                  this._line === 0 && this._context.closePath(), this._point = NaN;
                },
                point: function(jr, zr) {
                  switch (this._point) {
                    case 0: {
                      this._context.moveTo(jr, zr), this._point = 1;
                      break;
                    }
                    case 1: {
                      this._context.lineTo(jr, zr);
                      break;
                    }
                    default: {
                      this._context.moveTo(jr + this._radius, zr), this._context.arc(jr, zr, this._radius, 0, i.FA);
                      break;
                    }
                  }
                },
                result: a.A
              };
              var Xt = (0, r.A)(), Zt, ye, Mt, St, Lt, te = {
                point: a.A,
                lineStart: function() {
                  te.point = fe;
                },
                lineEnd: function() {
                  Zt && Me(ye, Mt), te.point = a.A;
                },
                polygonStart: function() {
                  Zt = !0;
                },
                polygonEnd: function() {
                  Zt = null;
                },
                result: function() {
                  var jr = +Xt;
                  return Xt.reset(), jr;
                }
              };
              function fe(jr, zr) {
                te.point = Me, ye = St = jr, Mt = Lt = zr;
              }
              function Me(jr, zr) {
                St -= jr, Lt -= zr, Xt.add((0, i.RZ)(St * St + Lt * Lt)), St = jr, Lt = zr;
              }
              var ir = te;
              function mr() {
                this._string = [];
              }
              mr.prototype = {
                _radius: 4.5,
                _circle: Xe(4.5),
                pointRadius: function(jr) {
                  return (jr = +jr) !== this._radius && (this._radius = jr, this._circle = null), this;
                },
                polygonStart: function() {
                  this._line = 0;
                },
                polygonEnd: function() {
                  this._line = NaN;
                },
                lineStart: function() {
                  this._point = 0;
                },
                lineEnd: function() {
                  this._line === 0 && this._string.push("Z"), this._point = NaN;
                },
                point: function(jr, zr) {
                  switch (this._point) {
                    case 0: {
                      this._string.push("M", jr, ",", zr), this._point = 1;
                      break;
                    }
                    case 1: {
                      this._string.push("L", jr, ",", zr);
                      break;
                    }
                    default: {
                      this._circle == null && (this._circle = Xe(this._radius)), this._string.push("M", jr, ",", zr, this._circle);
                      break;
                    }
                  }
                },
                result: function() {
                  if (this._string.length) {
                    var jr = this._string.join("");
                    return this._string = [], jr;
                  } else
                    return null;
                }
              };
              function Xe(jr) {
                return "m0," + jr + "a" + jr + "," + jr + " 0 1,1 0," + -2 * jr + "a" + jr + "," + jr + " 0 1,1 0," + 2 * jr + "z";
              }
              function xe(jr, zr) {
                var Tn = 4.5, sn, $n;
                function kn(An) {
                  return An && (typeof Tn == "function" && $n.pointRadius(+Tn.apply(this, arguments)), (0, l.A)(An, sn($n))), $n.result();
                }
                return kn.area = function(An) {
                  return (0, l.A)(An, sn(wt)), wt.result();
                }, kn.measure = function(An) {
                  return (0, l.A)(An, sn(ir)), ir.result();
                }, kn.bounds = function(An) {
                  return (0, l.A)(An, sn(Et.A)), Et.A.result();
                }, kn.centroid = function(An) {
                  return (0, l.A)(An, sn(ee)), ee.result();
                }, kn.projection = function(An) {
                  return arguments.length ? (sn = An == null ? (jr = null, vt.A) : (jr = An).stream, kn) : jr;
                }, kn.context = function(An) {
                  return arguments.length ? ($n = An == null ? (zr = null, new mr()) : new Bt(zr = An), typeof Tn != "function" && $n.pointRadius(Tn), kn) : zr;
                }, kn.pointRadius = function(An) {
                  return arguments.length ? (Tn = typeof An == "function" ? An : ($n.pointRadius(+An), +An), kn) : Tn;
                }, kn.projection(jr).context(zr);
              }
              var me = e(94684);
              function Le(jr) {
                var zr = 0, Tn = i.pi / 3, sn = (0, me.U)(jr), $n = sn(zr, Tn);
                return $n.parallels = function(kn) {
                  return arguments.length ? sn(zr = kn[0] * i.F2, Tn = kn[1] * i.F2) : [zr * i.uj, Tn * i.uj];
                }, $n;
              }
              function qt(jr) {
                var zr = (0, i.gn)(jr);
                function Tn(sn, $n) {
                  return [sn * zr, (0, i.F8)($n) / zr];
                }
                return Tn.invert = function(sn, $n) {
                  return [sn / zr, (0, i.qR)($n * zr)];
                }, Tn;
              }
              function De(jr, zr) {
                var Tn = (0, i.F8)(jr), sn = (Tn + (0, i.F8)(zr)) / 2;
                if ((0, i.tn)(sn) < i.Ni) return qt(jr);
                var $n = 1 + Tn * (2 * sn - Tn), kn = (0, i.RZ)($n) / sn;
                function An(qn, si) {
                  var qi = (0, i.RZ)($n - 2 * sn * (0, i.F8)(si)) / sn;
                  return [qi * (0, i.F8)(qn *= sn), kn - qi * (0, i.gn)(qn)];
                }
                return An.invert = function(qn, si) {
                  var qi = kn - si, ha = (0, i.FP)(qn, (0, i.tn)(qi)) * (0, i._S)(qi);
                  return qi * sn < 0 && (ha -= i.pi * (0, i._S)(qn) * (0, i._S)(qi)), [ha / sn, (0, i.qR)(($n - (qn * qn + qi * qi) * sn * sn) / (2 * sn))];
                }, An;
              }
              function Je() {
                return Le(De).scale(155.424).center([0, 33.6442]);
              }
              function dr() {
                return Je().parallels([29.5, 45.5]).scale(1070).translate([480, 250]).rotate([96, 0]).center([-0.6, 38.7]);
              }
              var qe = e(7944);
              function we(jr) {
                var zr = jr.length;
                return {
                  point: function(Tn, sn) {
                    for (var $n = -1; ++$n < zr; ) jr[$n].point(Tn, sn);
                  },
                  sphere: function() {
                    for (var Tn = -1; ++Tn < zr; ) jr[Tn].sphere();
                  },
                  lineStart: function() {
                    for (var Tn = -1; ++Tn < zr; ) jr[Tn].lineStart();
                  },
                  lineEnd: function() {
                    for (var Tn = -1; ++Tn < zr; ) jr[Tn].lineEnd();
                  },
                  polygonStart: function() {
                    for (var Tn = -1; ++Tn < zr; ) jr[Tn].polygonStart();
                  },
                  polygonEnd: function() {
                    for (var Tn = -1; ++Tn < zr; ) jr[Tn].polygonEnd();
                  }
                };
              }
              function ue() {
                var jr, zr, Tn = dr(), sn, $n = Je().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), kn, An = Je().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), qn, si, qi = { point: function(Ji, ci) {
                  si = [Ji, ci];
                } };
                function ha(Ji) {
                  var ci = Ji[0], rn = Ji[1];
                  return si = null, sn.point(ci, rn), si || (kn.point(ci, rn), si) || (qn.point(ci, rn), si);
                }
                ha.invert = function(Ji) {
                  var ci = Tn.scale(), rn = Tn.translate(), Cn = (Ji[0] - rn[0]) / ci, Un = (Ji[1] - rn[1]) / ci;
                  return (Un >= 0.12 && Un < 0.234 && Cn >= -0.425 && Cn < -0.214 ? $n : Un >= 0.166 && Un < 0.234 && Cn >= -0.214 && Cn < -0.115 ? An : Tn).invert(Ji);
                }, ha.stream = function(Ji) {
                  return jr && zr === Ji ? jr : jr = we([Tn.stream(zr = Ji), $n.stream(Ji), An.stream(Ji)]);
                }, ha.precision = function(Ji) {
                  return arguments.length ? (Tn.precision(Ji), $n.precision(Ji), An.precision(Ji), Mi()) : Tn.precision();
                }, ha.scale = function(Ji) {
                  return arguments.length ? (Tn.scale(Ji), $n.scale(Ji * 0.35), An.scale(Ji), ha.translate(Tn.translate())) : Tn.scale();
                }, ha.translate = function(Ji) {
                  if (!arguments.length) return Tn.translate();
                  var ci = Tn.scale(), rn = +Ji[0], Cn = +Ji[1];
                  return sn = Tn.translate(Ji).clipExtent([[rn - 0.455 * ci, Cn - 0.238 * ci], [rn + 0.455 * ci, Cn + 0.238 * ci]]).stream(qi), kn = $n.translate([rn - 0.307 * ci, Cn + 0.201 * ci]).clipExtent([[rn - 0.425 * ci + i.Ni, Cn + 0.12 * ci + i.Ni], [rn - 0.214 * ci - i.Ni, Cn + 0.234 * ci - i.Ni]]).stream(qi), qn = An.translate([rn - 0.205 * ci, Cn + 0.212 * ci]).clipExtent([[rn - 0.214 * ci + i.Ni, Cn + 0.166 * ci + i.Ni], [rn - 0.115 * ci - i.Ni, Cn + 0.234 * ci - i.Ni]]).stream(qi), Mi();
                }, ha.fitExtent = function(Ji, ci) {
                  return (0, qe.sp)(ha, Ji, ci);
                }, ha.fitSize = function(Ji, ci) {
                  return (0, qe.Hv)(ha, Ji, ci);
                }, ha.fitWidth = function(Ji, ci) {
                  return (0, qe.G0)(ha, Ji, ci);
                }, ha.fitHeight = function(Ji, ci) {
                  return (0, qe.FL)(ha, Ji, ci);
                };
                function Mi() {
                  return jr = zr = null, ha;
                }
                return ha.scale(1070);
              }
              var Pe = e(30729), Ue = e(61957), Ye = e(30915);
              function rr(jr, zr) {
                return [jr, (0, i.Rm)((0, i.Ml)((i.TW + zr) / 2))];
              }
              rr.invert = function(jr, zr) {
                return [jr, 2 * (0, i.rY)((0, i.oN)(zr)) - i.TW];
              };
              function lr() {
                return hr(rr).scale(961 / i.FA);
              }
              function hr(jr) {
                var zr = (0, me.A)(jr), Tn = zr.center, sn = zr.scale, $n = zr.translate, kn = zr.clipExtent, An = null, qn, si, qi;
                zr.scale = function(Mi) {
                  return arguments.length ? (sn(Mi), ha()) : sn();
                }, zr.translate = function(Mi) {
                  return arguments.length ? ($n(Mi), ha()) : $n();
                }, zr.center = function(Mi) {
                  return arguments.length ? (Tn(Mi), ha()) : Tn();
                }, zr.clipExtent = function(Mi) {
                  return arguments.length ? (Mi == null ? An = qn = si = qi = null : (An = +Mi[0][0], qn = +Mi[0][1], si = +Mi[1][0], qi = +Mi[1][1]), ha()) : An == null ? null : [[An, qn], [si, qi]];
                };
                function ha() {
                  var Mi = i.pi * sn(), Ji = zr((0, Ye.A)(zr.rotate()).invert([0, 0]));
                  return kn(An == null ? [[Ji[0] - Mi, Ji[1] - Mi], [Ji[0] + Mi, Ji[1] + Mi]] : jr === rr ? [[Math.max(Ji[0] - Mi, An), qn], [Math.min(Ji[0] + Mi, si), qi]] : [[An, Math.max(Ji[1] - Mi, qn)], [si, Math.min(Ji[1] + Mi, qi)]]);
                }
                return ha();
              }
              function Sr(jr) {
                return (0, i.Ml)((i.TW + jr) / 2);
              }
              function Dr(jr, zr) {
                var Tn = (0, i.gn)(jr), sn = jr === zr ? (0, i.F8)(jr) : (0, i.Rm)(Tn / (0, i.gn)(zr)) / (0, i.Rm)(Sr(zr) / Sr(jr)), $n = Tn * (0, i.n7)(Sr(jr), sn) / sn;
                if (!sn) return rr;
                function kn(An, qn) {
                  $n > 0 ? qn < -i.TW + i.Ni && (qn = -i.TW + i.Ni) : qn > i.TW - i.Ni && (qn = i.TW - i.Ni);
                  var si = $n / (0, i.n7)(Sr(qn), sn);
                  return [si * (0, i.F8)(sn * An), $n - si * (0, i.gn)(sn * An)];
                }
                return kn.invert = function(An, qn) {
                  var si = $n - qn, qi = (0, i._S)(sn) * (0, i.RZ)(An * An + si * si), ha = (0, i.FP)(An, (0, i.tn)(si)) * (0, i._S)(si);
                  return si * sn < 0 && (ha -= i.pi * (0, i._S)(An) * (0, i._S)(si)), [ha / sn, 2 * (0, i.rY)((0, i.n7)($n / qi, 1 / sn)) - i.TW];
                }, kn;
              }
              function Or() {
                return Le(Dr).scale(109.5).parallels([30, 30]);
              }
              var Br = e(18139);
              function Nr(jr, zr) {
                var Tn = (0, i.gn)(jr), sn = jr === zr ? (0, i.F8)(jr) : (Tn - (0, i.gn)(zr)) / (zr - jr), $n = Tn / sn + jr;
                if ((0, i.tn)(sn) < i.Ni) return Br.f;
                function kn(An, qn) {
                  var si = $n - qn, qi = sn * An;
                  return [si * (0, i.F8)(qi), $n - si * (0, i.gn)(qi)];
                }
                return kn.invert = function(An, qn) {
                  var si = $n - qn, qi = (0, i.FP)(An, (0, i.tn)(si)) * (0, i._S)(si);
                  return si * sn < 0 && (qi -= i.pi * (0, i._S)(An) * (0, i._S)(si)), [qi / sn, $n - (0, i._S)(sn) * (0, i.RZ)(An * An + si * si)];
                }, kn;
              }
              function Xr() {
                return Le(Nr).scale(131.154).center([0, 13.9389]);
              }
              var Gr = 1.340264, oe = -0.081106, de = 893e-6, or = 3796e-6, Er = (0, i.RZ)(3) / 2, Tr = 12;
              function tr(jr, zr) {
                var Tn = (0, i.qR)(Er * (0, i.F8)(zr)), sn = Tn * Tn, $n = sn * sn * sn;
                return [
                  jr * (0, i.gn)(Tn) / (Er * (Gr + 3 * oe * sn + $n * (7 * de + 9 * or * sn))),
                  Tn * (Gr + oe * sn + $n * (de + or * sn))
                ];
              }
              tr.invert = function(jr, zr) {
                for (var Tn = zr, sn = Tn * Tn, $n = sn * sn * sn, kn = 0, An, qn, si; kn < Tr && (qn = Tn * (Gr + oe * sn + $n * (de + or * sn)) - zr, si = Gr + 3 * oe * sn + $n * (7 * de + 9 * or * sn), Tn -= An = qn / si, sn = Tn * Tn, $n = sn * sn * sn, !((0, i.tn)(An) < i.$t)); ++kn)
                  ;
                return [
                  Er * jr * (Gr + 3 * oe * sn + $n * (7 * de + 9 * or * sn)) / (0, i.gn)(Tn),
                  (0, i.qR)((0, i.F8)(Tn) / Er)
                ];
              };
              function yr() {
                return (0, me.A)(tr).scale(177.158);
              }
              var Ir = e(48419), Cr = e(913);
              function _r() {
                var jr = 1, zr = 0, Tn = 0, sn = 1, $n = 1, kn = 0, An, qn, si = null, qi, ha, Mi, Ji = 1, ci = 1, rn = (0, Cr.G)({
                  point: function(di, Ai) {
                    var Gi = Nn([di, Ai]);
                    this.stream.point(Gi[0], Gi[1]);
                  }
                }), Cn = vt.A, Un, Fn;
                function mi() {
                  return Ji = jr * sn, ci = jr * $n, Un = Fn = null, Nn;
                }
                function Nn(di) {
                  var Ai = di[0] * Ji, Gi = di[1] * ci;
                  if (kn) {
                    var ia = Gi * An - Ai * qn;
                    Ai = Ai * An + Gi * qn, Gi = ia;
                  }
                  return [Ai + zr, Gi + Tn];
                }
                return Nn.invert = function(di) {
                  var Ai = di[0] - zr, Gi = di[1] - Tn;
                  if (kn) {
                    var ia = Gi * An + Ai * qn;
                    Ai = Ai * An - Gi * qn, Gi = ia;
                  }
                  return [Ai / Ji, Gi / ci];
                }, Nn.stream = function(di) {
                  return Un && Fn === di ? Un : Un = rn(Cn(Fn = di));
                }, Nn.postclip = function(di) {
                  return arguments.length ? (Cn = di, si = qi = ha = Mi = null, mi()) : Cn;
                }, Nn.clipExtent = function(di) {
                  return arguments.length ? (Cn = di == null ? (si = qi = ha = Mi = null, vt.A) : (0, p.A)(si = +di[0][0], qi = +di[0][1], ha = +di[1][0], Mi = +di[1][1]), mi()) : si == null ? null : [[si, qi], [ha, Mi]];
                }, Nn.scale = function(di) {
                  return arguments.length ? (jr = +di, mi()) : jr;
                }, Nn.translate = function(di) {
                  return arguments.length ? (zr = +di[0], Tn = +di[1], mi()) : [zr, Tn];
                }, Nn.angle = function(di) {
                  return arguments.length ? (kn = di % 360 * i.F2, qn = (0, i.F8)(kn), An = (0, i.gn)(kn), mi()) : kn * i.uj;
                }, Nn.reflectX = function(di) {
                  return arguments.length ? (sn = di ? -1 : 1, mi()) : sn < 0;
                }, Nn.reflectY = function(di) {
                  return arguments.length ? ($n = di ? -1 : 1, mi()) : $n < 0;
                }, Nn.fitExtent = function(di, Ai) {
                  return (0, qe.sp)(Nn, di, Ai);
                }, Nn.fitSize = function(di, Ai) {
                  return (0, qe.Hv)(Nn, di, Ai);
                }, Nn.fitWidth = function(di, Ai) {
                  return (0, qe.G0)(Nn, di, Ai);
                }, Nn.fitHeight = function(di, Ai) {
                  return (0, qe.FL)(Nn, di, Ai);
                }, Nn;
              }
              var Zr = e(57949), ln = e(53253), Jr = e(57738);
              function Zn(jr, zr) {
                var Tn = (0, i.gn)(zr), sn = 1 + (0, i.gn)(jr) * Tn;
                return [Tn * (0, i.F8)(jr) / sn, (0, i.F8)(zr) / sn];
              }
              Zn.invert = (0, Jr.I)(function(jr) {
                return 2 * (0, i.rY)(jr);
              });
              function fn() {
                return (0, me.A)(Zn).scale(250).clipAngle(142);
              }
              function hi(jr, zr) {
                return [(0, i.Rm)((0, i.Ml)((i.TW + zr) / 2)), -jr];
              }
              hi.invert = function(jr, zr) {
                return [-zr, 2 * (0, i.rY)((0, i.oN)(jr)) - i.TW];
              };
              function Vn() {
                var jr = hr(hi), zr = jr.center, Tn = jr.rotate;
                return jr.center = function(sn) {
                  return arguments.length ? zr([-sn[1], sn[0]]) : (sn = zr(), [sn[1], -sn[0]]);
                }, jr.rotate = function(sn) {
                  return arguments.length ? Tn([sn[0], sn[1], sn.length > 2 ? sn[2] + 90 : 90]) : (sn = Tn(), [sn[0], sn[1], sn[2] - 90]);
                }, Tn([0, 0, 90]).scale(159.155);
              }
            }
          ),
          /***/
          81758: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                A: function() {
                  return (
                    /* export default binding */
                    P
                  );
                }
                /* harmony export */
              });
              var b = e(61323);
              function P(n, s) {
                var T = n[0] * b.F2, A = n[1] * b.F2, p = s[0] * b.F2, u = s[1] * b.F2, t = (0, b.gn)(A), r = (0, b.F8)(A), i = (0, b.gn)(u), a = (0, b.F8)(u), l = t * (0, b.gn)(T), o = t * (0, b.F8)(T), y = i * (0, b.gn)(p), g = i * (0, b.F8)(p), x = 2 * (0, b.qR)((0, b.RZ)((0, b.bo)(u - A) + t * i * (0, b.bo)(p - T))), c = (0, b.F8)(x), v = x ? function(f) {
                  var _ = (0, b.F8)(f *= x) / c, S = (0, b.F8)(x - f) / c, M = S * l + _ * y, C = S * o + _ * g, m = S * r + _ * a;
                  return [
                    (0, b.FP)(C, M) * b.uj,
                    (0, b.FP)(m, (0, b.RZ)(M * M + C * C)) * b.uj
                  ];
                } : function() {
                  return [T * b.uj, A * b.uj];
                };
                return v.distance = x, v;
              }
            }
          ),
          /***/
          61323: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                $t: function() {
                  return (
                    /* binding */
                    P
                  );
                },
                /* harmony export */
                F2: function() {
                  return (
                    /* binding */
                    u
                  );
                },
                /* harmony export */
                F8: function() {
                  return (
                    /* binding */
                    x
                  );
                },
                /* harmony export */
                FA: function() {
                  return (
                    /* binding */
                    A
                  );
                },
                /* harmony export */
                FP: function() {
                  return (
                    /* binding */
                    i
                  );
                },
                /* harmony export */
                HQ: function() {
                  return (
                    /* binding */
                    _
                  );
                },
                /* harmony export */
                Ml: function() {
                  return (
                    /* binding */
                    f
                  );
                },
                /* harmony export */
                Ni: function() {
                  return (
                    /* binding */
                    b
                  );
                },
                /* harmony export */
                RZ: function() {
                  return (
                    /* binding */
                    v
                  );
                },
                /* harmony export */
                Rm: function() {
                  return (
                    /* binding */
                    y
                  );
                },
                /* harmony export */
                TW: function() {
                  return (
                    /* binding */
                    s
                  );
                },
                /* harmony export */
                _S: function() {
                  return (
                    /* binding */
                    c
                  );
                },
                /* harmony export */
                bo: function() {
                  return (
                    /* binding */
                    M
                  );
                },
                /* harmony export */
                gn: function() {
                  return (
                    /* binding */
                    a
                  );
                },
                /* harmony export */
                gz: function() {
                  return (
                    /* binding */
                    T
                  );
                },
                /* harmony export */
                mk: function() {
                  return (
                    /* binding */
                    l
                  );
                },
                /* harmony export */
                n7: function() {
                  return (
                    /* binding */
                    g
                  );
                },
                /* harmony export */
                oN: function() {
                  return (
                    /* binding */
                    o
                  );
                },
                /* harmony export */
                pi: function() {
                  return (
                    /* binding */
                    n
                  );
                },
                /* harmony export */
                qR: function() {
                  return (
                    /* binding */
                    S
                  );
                },
                /* harmony export */
                rY: function() {
                  return (
                    /* binding */
                    r
                  );
                },
                /* harmony export */
                tn: function() {
                  return (
                    /* binding */
                    t
                  );
                },
                /* harmony export */
                uj: function() {
                  return (
                    /* binding */
                    p
                  );
                }
                /* harmony export */
              });
              var b = 1e-6, P = 1e-12, n = Math.PI, s = n / 2, T = n / 4, A = n * 2, p = 180 / n, u = n / 180, t = Math.abs, r = Math.atan, i = Math.atan2, a = Math.cos, l = Math.ceil, o = Math.exp, y = Math.log, g = Math.pow, x = Math.sin, c = Math.sign || function(C) {
                return C > 0 ? 1 : C < 0 ? -1 : 0;
              }, v = Math.sqrt, f = Math.tan;
              function _(C) {
                return C > 1 ? 0 : C < -1 ? n : Math.acos(C);
              }
              function S(C) {
                return C > 1 ? s : C < -1 ? -s : Math.asin(C);
              }
              function M(C) {
                return (C = x(C / 2)) * C;
              }
            }
          ),
          /***/
          53341: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                A: function() {
                  return (
                    /* binding */
                    b
                  );
                }
                /* harmony export */
              });
              function b() {
              }
            }
          ),
          /***/
          33028: (
            /***/
            function(Y, K, e) {
              var b = e(53341), P = 1 / 0, n = P, s = -P, T = s, A = {
                point: p,
                lineStart: b.A,
                lineEnd: b.A,
                polygonStart: b.A,
                polygonEnd: b.A,
                result: function() {
                  var u = [[P, n], [s, T]];
                  return s = T = -(n = P = 1 / 0), u;
                }
              };
              function p(u, t) {
                u < P && (P = u), u > s && (s = u), t < n && (n = t), t > T && (T = t);
              }
              K.A = A;
            }
          ),
          /***/
          28759: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                A: function() {
                  return (
                    /* export default binding */
                    P
                  );
                }
                /* harmony export */
              });
              var b = e(61323);
              function P(n, s) {
                return (0, b.tn)(n[0] - s[0]) < b.Ni && (0, b.tn)(n[1] - s[1]) < b.Ni;
              }
            }
          ),
          /***/
          2274: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                A: function() {
                  return (
                    /* export default binding */
                    A
                  );
                }
                /* harmony export */
              });
              var b = e(49353), P = e(20375), n = e(61323), s = (0, b.A)();
              function T(p) {
                return (0, n.tn)(p[0]) <= n.pi ? p[0] : (0, n._S)(p[0]) * (((0, n.tn)(p[0]) + n.pi) % n.FA - n.pi);
              }
              function A(p, u) {
                var t = T(u), r = u[1], i = (0, n.F8)(r), a = [(0, n.F8)(t), -(0, n.gn)(t), 0], l = 0, o = 0;
                s.reset(), i === 1 ? r = n.TW + n.Ni : i === -1 && (r = -n.TW - n.Ni);
                for (var y = 0, g = p.length; y < g; ++y)
                  if (c = (x = p[y]).length)
                    for (var x, c, v = x[c - 1], f = T(v), _ = v[1] / 2 + n.gz, S = (0, n.F8)(_), M = (0, n.gn)(_), C = 0; C < c; ++C, f = L, S = h, M = E, v = m) {
                      var m = x[C], L = T(m), d = m[1] / 2 + n.gz, h = (0, n.F8)(d), E = (0, n.gn)(d), w = L - f, z = w >= 0 ? 1 : -1, O = z * w, B = O > n.pi, V = S * h;
                      if (s.add((0, n.FP)(V * z * (0, n.F8)(O), M * E + V * (0, n.gn)(O))), l += B ? w + z * n.FA : w, B ^ f >= t ^ L >= t) {
                        var U = (0, P.r8)((0, P.jf)(v), (0, P.jf)(m));
                        (0, P.Cx)(U);
                        var H = (0, P.r8)(a, U);
                        (0, P.Cx)(H);
                        var F = (B ^ w >= 0 ? -1 : 1) * (0, n.qR)(H[2]);
                        (r > F || r === F && (U[0] || U[1])) && (o += B ^ w >= 0 ? 1 : -1);
                      }
                    }
                return (l < -n.Ni || l < n.Ni && s < -n.Ni) ^ o & 1;
              }
            }
          ),
          /***/
          57738: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                I: function() {
                  return (
                    /* binding */
                    n
                  );
                },
                /* harmony export */
                c: function() {
                  return (
                    /* binding */
                    P
                  );
                }
                /* harmony export */
              });
              var b = e(61323);
              function P(s) {
                return function(T, A) {
                  var p = (0, b.gn)(T), u = (0, b.gn)(A), t = s(p * u);
                  return [
                    t * u * (0, b.F8)(T),
                    t * (0, b.F8)(A)
                  ];
                };
              }
              function n(s) {
                return function(T, A) {
                  var p = (0, b.RZ)(T * T + A * A), u = s(p), t = (0, b.F8)(u), r = (0, b.gn)(u);
                  return [
                    (0, b.FP)(T * t, p * r),
                    (0, b.qR)(p && A * t / p)
                  ];
                };
              }
            }
          ),
          /***/
          30729: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                A: function() {
                  return (
                    /* export default binding */
                    T
                  );
                },
                /* harmony export */
                n: function() {
                  return (
                    /* binding */
                    s
                  );
                }
                /* harmony export */
              });
              var b = e(61323), P = e(57738), n = e(94684), s = (0, P.c)(function(A) {
                return (0, b.RZ)(2 / (1 + A));
              });
              s.invert = (0, P.I)(function(A) {
                return 2 * (0, b.qR)(A / 2);
              });
              function T() {
                return (0, n.A)(s).scale(124.75).clipAngle(179.999);
              }
            }
          ),
          /***/
          61957: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                A: function() {
                  return (
                    /* export default binding */
                    T
                  );
                },
                /* harmony export */
                j: function() {
                  return (
                    /* binding */
                    s
                  );
                }
                /* harmony export */
              });
              var b = e(61323), P = e(57738), n = e(94684), s = (0, P.c)(function(A) {
                return (A = (0, b.HQ)(A)) && A / (0, b.F8)(A);
              });
              s.invert = (0, P.I)(function(A) {
                return A;
              });
              function T() {
                return (0, n.A)(s).scale(79.4188).clipAngle(179.999);
              }
            }
          ),
          /***/
          18139: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                A: function() {
                  return (
                    /* export default binding */
                    n
                  );
                },
                /* harmony export */
                f: function() {
                  return (
                    /* binding */
                    P
                  );
                }
                /* harmony export */
              });
              var b = e(94684);
              function P(s, T) {
                return [s, T];
              }
              P.invert = P;
              function n() {
                return (0, b.A)(P).scale(152.63);
              }
            }
          ),
          /***/
          7944: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                FL: function() {
                  return (
                    /* binding */
                    p
                  );
                },
                /* harmony export */
                G0: function() {
                  return (
                    /* binding */
                    A
                  );
                },
                /* harmony export */
                Hv: function() {
                  return (
                    /* binding */
                    T
                  );
                },
                /* harmony export */
                sp: function() {
                  return (
                    /* binding */
                    s
                  );
                }
                /* harmony export */
              });
              var b = e(20465), P = e(33028);
              function n(u, t, r) {
                var i = u.clipExtent && u.clipExtent();
                return u.scale(150).translate([0, 0]), i != null && u.clipExtent(null), (0, b.A)(r, u.stream(P.A)), t(P.A.result()), i != null && u.clipExtent(i), u;
              }
              function s(u, t, r) {
                return n(u, function(i) {
                  var a = t[1][0] - t[0][0], l = t[1][1] - t[0][1], o = Math.min(a / (i[1][0] - i[0][0]), l / (i[1][1] - i[0][1])), y = +t[0][0] + (a - o * (i[1][0] + i[0][0])) / 2, g = +t[0][1] + (l - o * (i[1][1] + i[0][1])) / 2;
                  u.scale(150 * o).translate([y, g]);
                }, r);
              }
              function T(u, t, r) {
                return s(u, [[0, 0], t], r);
              }
              function A(u, t, r) {
                return n(u, function(i) {
                  var a = +t, l = a / (i[1][0] - i[0][0]), o = (a - l * (i[1][0] + i[0][0])) / 2, y = -l * i[0][1];
                  u.scale(150 * l).translate([o, y]);
                }, r);
              }
              function p(u, t, r) {
                return n(u, function(i) {
                  var a = +t, l = a / (i[1][1] - i[0][1]), o = -l * i[0][0], y = (a - l * (i[1][1] + i[0][1])) / 2;
                  u.scale(150 * l).translate([o, y]);
                }, r);
              }
            }
          ),
          /***/
          48419: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                A: function() {
                  return (
                    /* export default binding */
                    T
                  );
                },
                /* harmony export */
                T: function() {
                  return (
                    /* binding */
                    s
                  );
                }
                /* harmony export */
              });
              var b = e(61323), P = e(57738), n = e(94684);
              function s(A, p) {
                var u = (0, b.gn)(p), t = (0, b.gn)(A) * u;
                return [u * (0, b.F8)(A) / t, (0, b.F8)(p) / t];
              }
              s.invert = (0, P.I)(b.rY);
              function T() {
                return (0, n.A)(s).scale(144.049).clipAngle(60);
              }
            }
          ),
          /***/
          94684: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                A: function() {
                  return (
                    /* binding */
                    f
                  );
                },
                U: function() {
                  return (
                    /* binding */
                    _
                  );
                }
              });
              var b = e(42413), P = e(47402), n = e(21503), s = e(19057), T = e(26827), A = e(61323), p = e(30915), u = e(913), t = e(7944), r = e(20375), i = 16, a = (0, A.gn)(30 * A.F2);
              function l(S, M) {
                return +M ? y(S, M) : o(S);
              }
              function o(S) {
                return (0, u.G)({
                  point: function(M, C) {
                    M = S(M, C), this.stream.point(M[0], M[1]);
                  }
                });
              }
              function y(S, M) {
                function C(m, L, d, h, E, w, z, O, B, V, U, H, F, G) {
                  var q = z - m, rt = O - L, st = q * q + rt * rt;
                  if (st > 4 * M && F--) {
                    var vt = h + V, ht = E + U, et = w + H, Q = (0, A.RZ)(vt * vt + ht * ht + et * et), j = (0, A.qR)(et /= Q), at = (0, A.tn)((0, A.tn)(et) - 1) < A.Ni || (0, A.tn)(d - B) < A.Ni ? (d + B) / 2 : (0, A.FP)(ht, vt), ut = S(at, j), nt = ut[0], X = ut[1], ct = nt - m, lt = X - L, pt = rt * ct - q * lt;
                    (pt * pt / st > M || (0, A.tn)((q * ct + rt * lt) / st - 0.5) > 0.3 || h * V + E * U + w * H < a) && (C(m, L, d, h, E, w, nt, X, at, vt /= Q, ht /= Q, et, F, G), G.point(nt, X), C(nt, X, at, vt, ht, et, z, O, B, V, U, H, F, G));
                  }
                }
                return function(m) {
                  var L, d, h, E, w, z, O, B, V, U, H, F, G = {
                    point: q,
                    lineStart: rt,
                    lineEnd: vt,
                    polygonStart: function() {
                      m.polygonStart(), G.lineStart = ht;
                    },
                    polygonEnd: function() {
                      m.polygonEnd(), G.lineStart = rt;
                    }
                  };
                  function q(j, at) {
                    j = S(j, at), m.point(j[0], j[1]);
                  }
                  function rt() {
                    B = NaN, G.point = st, m.lineStart();
                  }
                  function st(j, at) {
                    var ut = (0, r.jf)([j, at]), nt = S(j, at);
                    C(B, V, O, U, H, F, B = nt[0], V = nt[1], O = j, U = ut[0], H = ut[1], F = ut[2], i, m), m.point(B, V);
                  }
                  function vt() {
                    G.point = q, m.lineEnd();
                  }
                  function ht() {
                    rt(), G.point = et, G.lineEnd = Q;
                  }
                  function et(j, at) {
                    st(L = j, at), d = B, h = V, E = U, w = H, z = F, G.point = st;
                  }
                  function Q() {
                    C(B, V, O, U, H, F, d, h, L, E, w, z, i, m), G.lineEnd = vt, vt();
                  }
                  return G;
                };
              }
              var g = (0, u.G)({
                point: function(S, M) {
                  this.stream.point(S * A.F2, M * A.F2);
                }
              });
              function x(S) {
                return (0, u.G)({
                  point: function(M, C) {
                    var m = S(M, C);
                    return this.stream.point(m[0], m[1]);
                  }
                });
              }
              function c(S, M, C, m, L) {
                function d(h, E) {
                  return h *= m, E *= L, [M + S * h, C - S * E];
                }
                return d.invert = function(h, E) {
                  return [(h - M) / S * m, (C - E) / S * L];
                }, d;
              }
              function v(S, M, C, m, L, d) {
                var h = (0, A.gn)(d), E = (0, A.F8)(d), w = h * S, z = E * S, O = h / S, B = E / S, V = (E * C - h * M) / S, U = (E * M + h * C) / S;
                function H(F, G) {
                  return F *= m, G *= L, [w * F - z * G + M, C - z * F - w * G];
                }
                return H.invert = function(F, G) {
                  return [m * (O * F - B * G + V), L * (U - B * F - O * G)];
                }, H;
              }
              function f(S) {
                return _(function() {
                  return S;
                })();
              }
              function _(S) {
                var M, C = 150, m = 480, L = 250, d = 0, h = 0, E = 0, w = 0, z = 0, O, B = 0, V = 1, U = 1, H = null, F = b.A, G = null, q, rt, st, vt = T.A, ht = 0.5, et, Q, j, at, ut;
                function nt(pt) {
                  return j(pt[0] * A.F2, pt[1] * A.F2);
                }
                function X(pt) {
                  return pt = j.invert(pt[0], pt[1]), pt && [pt[0] * A.uj, pt[1] * A.uj];
                }
                nt.stream = function(pt) {
                  return at && ut === pt ? at : at = g(x(O)(F(et(vt(ut = pt)))));
                }, nt.preclip = function(pt) {
                  return arguments.length ? (F = pt, H = void 0, lt()) : F;
                }, nt.postclip = function(pt) {
                  return arguments.length ? (vt = pt, G = q = rt = st = null, lt()) : vt;
                }, nt.clipAngle = function(pt) {
                  return arguments.length ? (F = +pt ? (0, P.A)(H = pt * A.F2) : (H = null, b.A), lt()) : H * A.uj;
                }, nt.clipExtent = function(pt) {
                  return arguments.length ? (vt = pt == null ? (G = q = rt = st = null, T.A) : (0, n.A)(G = +pt[0][0], q = +pt[0][1], rt = +pt[1][0], st = +pt[1][1]), lt()) : G == null ? null : [[G, q], [rt, st]];
                }, nt.scale = function(pt) {
                  return arguments.length ? (C = +pt, ct()) : C;
                }, nt.translate = function(pt) {
                  return arguments.length ? (m = +pt[0], L = +pt[1], ct()) : [m, L];
                }, nt.center = function(pt) {
                  return arguments.length ? (d = pt[0] % 360 * A.F2, h = pt[1] % 360 * A.F2, ct()) : [d * A.uj, h * A.uj];
                }, nt.rotate = function(pt) {
                  return arguments.length ? (E = pt[0] % 360 * A.F2, w = pt[1] % 360 * A.F2, z = pt.length > 2 ? pt[2] % 360 * A.F2 : 0, ct()) : [E * A.uj, w * A.uj, z * A.uj];
                }, nt.angle = function(pt) {
                  return arguments.length ? (B = pt % 360 * A.F2, ct()) : B * A.uj;
                }, nt.reflectX = function(pt) {
                  return arguments.length ? (V = pt ? -1 : 1, ct()) : V < 0;
                }, nt.reflectY = function(pt) {
                  return arguments.length ? (U = pt ? -1 : 1, ct()) : U < 0;
                }, nt.precision = function(pt) {
                  return arguments.length ? (et = l(Q, ht = pt * pt), lt()) : (0, A.RZ)(ht);
                }, nt.fitExtent = function(pt, wt) {
                  return (0, t.sp)(nt, pt, wt);
                }, nt.fitSize = function(pt, wt) {
                  return (0, t.Hv)(nt, pt, wt);
                }, nt.fitWidth = function(pt, wt) {
                  return (0, t.G0)(nt, pt, wt);
                }, nt.fitHeight = function(pt, wt) {
                  return (0, t.FL)(nt, pt, wt);
                };
                function ct() {
                  var pt = v(C, 0, 0, V, U, B).apply(null, M(d, h)), wt = (B ? v : c)(C, m - pt[0], L - pt[1], V, U, B);
                  return O = (0, p.y)(E, w, z), Q = (0, s.A)(M, wt), j = (0, s.A)(O, Q), et = l(Q, ht), lt();
                }
                function lt() {
                  return at = ut = null, nt;
                }
                return function() {
                  return M = S.apply(this, arguments), nt.invert = M.invert && X, ct();
                };
              }
            }
          ),
          /***/
          57949: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                A: function() {
                  return (
                    /* export default binding */
                    s
                  );
                },
                /* harmony export */
                P: function() {
                  return (
                    /* binding */
                    n
                  );
                }
                /* harmony export */
              });
              var b = e(94684), P = e(61323);
              function n(T, A) {
                var p = A * A, u = p * p;
                return [
                  T * (0.8707 - 0.131979 * p + u * (-0.013791 + u * (3971e-6 * p - 1529e-6 * u))),
                  A * (1.007226 + p * (0.015085 + u * (-0.044475 + 0.028874 * p - 5916e-6 * u)))
                ];
              }
              n.invert = function(T, A) {
                var p = A, u = 25, t;
                do {
                  var r = p * p, i = r * r;
                  p -= t = (p * (1.007226 + r * (0.015085 + i * (-0.044475 + 0.028874 * r - 5916e-6 * i))) - A) / (1.007226 + r * (0.045255 + i * (-0.311325 + 0.259866 * r - 0.06507600000000001 * i)));
                } while ((0, P.tn)(t) > P.Ni && --u > 0);
                return [
                  T / (0.8707 + (r = p * p) * (-0.131979 + r * (-0.013791 + r * r * r * (3971e-6 - 1529e-6 * r)))),
                  p
                ];
              };
              function s() {
                return (0, b.A)(n).scale(175.295);
              }
            }
          ),
          /***/
          53253: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                A: function() {
                  return (
                    /* export default binding */
                    T
                  );
                },
                /* harmony export */
                x: function() {
                  return (
                    /* binding */
                    s
                  );
                }
                /* harmony export */
              });
              var b = e(61323), P = e(57738), n = e(94684);
              function s(A, p) {
                return [(0, b.gn)(p) * (0, b.F8)(A), (0, b.F8)(p)];
              }
              s.invert = (0, P.I)(b.qR);
              function T() {
                return (0, n.A)(s).scale(249.5).clipAngle(90 + b.Ni);
              }
            }
          ),
          /***/
          30915: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                A: function() {
                  return (
                    /* export default binding */
                    u
                  );
                },
                /* harmony export */
                y: function() {
                  return (
                    /* binding */
                    s
                  );
                }
                /* harmony export */
              });
              var b = e(19057), P = e(61323);
              function n(t, r) {
                return [(0, P.tn)(t) > P.pi ? t + Math.round(-t / P.FA) * P.FA : t, r];
              }
              n.invert = n;
              function s(t, r, i) {
                return (t %= P.FA) ? r || i ? (0, b.A)(A(t), p(r, i)) : A(t) : r || i ? p(r, i) : n;
              }
              function T(t) {
                return function(r, i) {
                  return r += t, [r > P.pi ? r - P.FA : r < -P.pi ? r + P.FA : r, i];
                };
              }
              function A(t) {
                var r = T(t);
                return r.invert = T(-t), r;
              }
              function p(t, r) {
                var i = (0, P.gn)(t), a = (0, P.F8)(t), l = (0, P.gn)(r), o = (0, P.F8)(r);
                function y(g, x) {
                  var c = (0, P.gn)(x), v = (0, P.gn)(g) * c, f = (0, P.F8)(g) * c, _ = (0, P.F8)(x), S = _ * i + v * a;
                  return [
                    (0, P.FP)(f * l - S * o, v * i - _ * a),
                    (0, P.qR)(S * l + f * o)
                  ];
                }
                return y.invert = function(g, x) {
                  var c = (0, P.gn)(x), v = (0, P.gn)(g) * c, f = (0, P.F8)(g) * c, _ = (0, P.F8)(x), S = _ * l - f * o;
                  return [
                    (0, P.FP)(f * l + _ * o, v * i + S * a),
                    (0, P.qR)(S * i - v * a)
                  ];
                }, y;
              }
              function u(t) {
                t = s(t[0] * P.F2, t[1] * P.F2, t.length > 2 ? t[2] * P.F2 : 0);
                function r(i) {
                  return i = t(i[0] * P.F2, i[1] * P.F2), i[0] *= P.uj, i[1] *= P.uj, i;
                }
                return r.invert = function(i) {
                  return i = t.invert(i[0] * P.F2, i[1] * P.F2), i[0] *= P.uj, i[1] *= P.uj, i;
                }, r;
              }
            }
          ),
          /***/
          20465: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                A: function() {
                  return (
                    /* export default binding */
                    A
                  );
                }
                /* harmony export */
              });
              function b(p, u) {
                p && n.hasOwnProperty(p.type) && n[p.type](p, u);
              }
              var P = {
                Feature: function(p, u) {
                  b(p.geometry, u);
                },
                FeatureCollection: function(p, u) {
                  for (var t = p.features, r = -1, i = t.length; ++r < i; ) b(t[r].geometry, u);
                }
              }, n = {
                Sphere: function(p, u) {
                  u.sphere();
                },
                Point: function(p, u) {
                  p = p.coordinates, u.point(p[0], p[1], p[2]);
                },
                MultiPoint: function(p, u) {
                  for (var t = p.coordinates, r = -1, i = t.length; ++r < i; ) p = t[r], u.point(p[0], p[1], p[2]);
                },
                LineString: function(p, u) {
                  s(p.coordinates, u, 0);
                },
                MultiLineString: function(p, u) {
                  for (var t = p.coordinates, r = -1, i = t.length; ++r < i; ) s(t[r], u, 0);
                },
                Polygon: function(p, u) {
                  T(p.coordinates, u);
                },
                MultiPolygon: function(p, u) {
                  for (var t = p.coordinates, r = -1, i = t.length; ++r < i; ) T(t[r], u);
                },
                GeometryCollection: function(p, u) {
                  for (var t = p.geometries, r = -1, i = t.length; ++r < i; ) b(t[r], u);
                }
              };
              function s(p, u, t) {
                var r = -1, i = p.length - t, a;
                for (u.lineStart(); ++r < i; ) a = p[r], u.point(a[0], a[1], a[2]);
                u.lineEnd();
              }
              function T(p, u) {
                var t = -1, r = p.length;
                for (u.polygonStart(); ++t < r; ) s(p[t], u, 1);
                u.polygonEnd();
              }
              function A(p, u) {
                p && P.hasOwnProperty(p.type) ? P[p.type](p, u) : b(p, u);
              }
            }
          ),
          /***/
          913: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                A: function() {
                  return (
                    /* export default binding */
                    b
                  );
                },
                /* harmony export */
                G: function() {
                  return (
                    /* binding */
                    P
                  );
                }
                /* harmony export */
              });
              function b(s) {
                return {
                  stream: P(s)
                };
              }
              function P(s) {
                return function(T) {
                  var A = new n();
                  for (var p in s) A[p] = s[p];
                  return A.stream = T, A;
                };
              }
              function n() {
              }
              n.prototype = {
                constructor: n,
                point: function(s, T) {
                  this.stream.point(s, T);
                },
                sphere: function() {
                  this.stream.sphere();
                },
                lineStart: function() {
                  this.stream.lineStart();
                },
                lineEnd: function() {
                  this.stream.lineEnd();
                },
                polygonStart: function() {
                  this.stream.polygonStart();
                },
                polygonEnd: function() {
                  this.stream.polygonEnd();
                }
              };
            }
          ),
          /***/
          92264: (
            /***/
            function(Y, K, e) {
              e.r(K), e.d(K, {
                cluster: function() {
                  return (
                    /* reexport */
                    u
                  );
                },
                hierarchy: function() {
                  return (
                    /* reexport */
                    S
                  );
                },
                pack: function() {
                  return (
                    /* reexport */
                    X
                  );
                },
                packEnclose: function() {
                  return (
                    /* reexport */
                    w
                  );
                },
                packSiblings: function() {
                  return (
                    /* reexport */
                    et
                  );
                },
                partition: function() {
                  return (
                    /* reexport */
                    Ct
                  );
                },
                stratify: function() {
                  return (
                    /* reexport */
                    Rt
                  );
                },
                tree: function() {
                  return (
                    /* reexport */
                    ze
                  );
                },
                treemap: function() {
                  return (
                    /* reexport */
                    ie
                  );
                },
                treemapBinary: function() {
                  return (
                    /* reexport */
                    $t
                  );
                },
                treemapDice: function() {
                  return (
                    /* reexport */
                    Et
                  );
                },
                treemapResquarify: function() {
                  return (
                    /* reexport */
                    ee
                  );
                },
                treemapSlice: function() {
                  return (
                    /* reexport */
                    Ne
                  );
                },
                treemapSliceDice: function() {
                  return (
                    /* reexport */
                    jt
                  );
                },
                treemapSquarify: function() {
                  return (
                    /* reexport */
                    ur
                  );
                }
              });
              function b(Bt, Xt) {
                return Bt.parent === Xt.parent ? 1 : 2;
              }
              function P(Bt) {
                return Bt.reduce(n, 0) / Bt.length;
              }
              function n(Bt, Xt) {
                return Bt + Xt.x;
              }
              function s(Bt) {
                return 1 + Bt.reduce(T, 0);
              }
              function T(Bt, Xt) {
                return Math.max(Bt, Xt.y);
              }
              function A(Bt) {
                for (var Xt; Xt = Bt.children; ) Bt = Xt[0];
                return Bt;
              }
              function p(Bt) {
                for (var Xt; Xt = Bt.children; ) Bt = Xt[Xt.length - 1];
                return Bt;
              }
              function u() {
                var Bt = b, Xt = 1, Zt = 1, ye = !1;
                function Mt(St) {
                  var Lt, te = 0;
                  St.eachAfter(function(Xe) {
                    var xe = Xe.children;
                    xe ? (Xe.x = P(xe), Xe.y = s(xe)) : (Xe.x = Lt ? te += Bt(Xe, Lt) : 0, Xe.y = 0, Lt = Xe);
                  });
                  var fe = A(St), Me = p(St), ir = fe.x - Bt(fe, Me) / 2, mr = Me.x + Bt(Me, fe) / 2;
                  return St.eachAfter(ye ? function(Xe) {
                    Xe.x = (Xe.x - St.x) * Xt, Xe.y = (St.y - Xe.y) * Zt;
                  } : function(Xe) {
                    Xe.x = (Xe.x - ir) / (mr - ir) * Xt, Xe.y = (1 - (St.y ? Xe.y / St.y : 1)) * Zt;
                  });
                }
                return Mt.separation = function(St) {
                  return arguments.length ? (Bt = St, Mt) : Bt;
                }, Mt.size = function(St) {
                  return arguments.length ? (ye = !1, Xt = +St[0], Zt = +St[1], Mt) : ye ? null : [Xt, Zt];
                }, Mt.nodeSize = function(St) {
                  return arguments.length ? (ye = !0, Xt = +St[0], Zt = +St[1], Mt) : ye ? [Xt, Zt] : null;
                }, Mt;
              }
              function t(Bt) {
                var Xt = 0, Zt = Bt.children, ye = Zt && Zt.length;
                if (!ye) Xt = 1;
                else for (; --ye >= 0; ) Xt += Zt[ye].value;
                Bt.value = Xt;
              }
              function r() {
                return this.eachAfter(t);
              }
              function i(Bt) {
                var Xt = this, Zt, ye = [Xt], Mt, St, Lt;
                do
                  for (Zt = ye.reverse(), ye = []; Xt = Zt.pop(); )
                    if (Bt(Xt), Mt = Xt.children, Mt) for (St = 0, Lt = Mt.length; St < Lt; ++St)
                      ye.push(Mt[St]);
                while (ye.length);
                return this;
              }
              function a(Bt) {
                for (var Xt = this, Zt = [Xt], ye, Mt; Xt = Zt.pop(); )
                  if (Bt(Xt), ye = Xt.children, ye) for (Mt = ye.length - 1; Mt >= 0; --Mt)
                    Zt.push(ye[Mt]);
                return this;
              }
              function l(Bt) {
                for (var Xt = this, Zt = [Xt], ye = [], Mt, St, Lt; Xt = Zt.pop(); )
                  if (ye.push(Xt), Mt = Xt.children, Mt) for (St = 0, Lt = Mt.length; St < Lt; ++St)
                    Zt.push(Mt[St]);
                for (; Xt = ye.pop(); )
                  Bt(Xt);
                return this;
              }
              function o(Bt) {
                return this.eachAfter(function(Xt) {
                  for (var Zt = +Bt(Xt.data) || 0, ye = Xt.children, Mt = ye && ye.length; --Mt >= 0; ) Zt += ye[Mt].value;
                  Xt.value = Zt;
                });
              }
              function y(Bt) {
                return this.eachBefore(function(Xt) {
                  Xt.children && Xt.children.sort(Bt);
                });
              }
              function g(Bt) {
                for (var Xt = this, Zt = x(Xt, Bt), ye = [Xt]; Xt !== Zt; )
                  Xt = Xt.parent, ye.push(Xt);
                for (var Mt = ye.length; Bt !== Zt; )
                  ye.splice(Mt, 0, Bt), Bt = Bt.parent;
                return ye;
              }
              function x(Bt, Xt) {
                if (Bt === Xt) return Bt;
                var Zt = Bt.ancestors(), ye = Xt.ancestors(), Mt = null;
                for (Bt = Zt.pop(), Xt = ye.pop(); Bt === Xt; )
                  Mt = Bt, Bt = Zt.pop(), Xt = ye.pop();
                return Mt;
              }
              function c() {
                for (var Bt = this, Xt = [Bt]; Bt = Bt.parent; )
                  Xt.push(Bt);
                return Xt;
              }
              function v() {
                var Bt = [];
                return this.each(function(Xt) {
                  Bt.push(Xt);
                }), Bt;
              }
              function f() {
                var Bt = [];
                return this.eachBefore(function(Xt) {
                  Xt.children || Bt.push(Xt);
                }), Bt;
              }
              function _() {
                var Bt = this, Xt = [];
                return Bt.each(function(Zt) {
                  Zt !== Bt && Xt.push({ source: Zt.parent, target: Zt });
                }), Xt;
              }
              function S(Bt, Xt) {
                var Zt = new d(Bt), ye = +Bt.value && (Zt.value = Bt.value), Mt, St = [Zt], Lt, te, fe, Me;
                for (Xt == null && (Xt = C); Mt = St.pop(); )
                  if (ye && (Mt.value = +Mt.data.value), (te = Xt(Mt.data)) && (Me = te.length))
                    for (Mt.children = new Array(Me), fe = Me - 1; fe >= 0; --fe)
                      St.push(Lt = Mt.children[fe] = new d(te[fe])), Lt.parent = Mt, Lt.depth = Mt.depth + 1;
                return Zt.eachBefore(L);
              }
              function M() {
                return S(this).eachBefore(m);
              }
              function C(Bt) {
                return Bt.children;
              }
              function m(Bt) {
                Bt.data = Bt.data.data;
              }
              function L(Bt) {
                var Xt = 0;
                do
                  Bt.height = Xt;
                while ((Bt = Bt.parent) && Bt.height < ++Xt);
              }
              function d(Bt) {
                this.data = Bt, this.depth = this.height = 0, this.parent = null;
              }
              d.prototype = S.prototype = {
                constructor: d,
                count: r,
                each: i,
                eachAfter: l,
                eachBefore: a,
                sum: o,
                sort: y,
                path: g,
                ancestors: c,
                descendants: v,
                leaves: f,
                links: _,
                copy: M
              };
              var h = Array.prototype.slice;
              function E(Bt) {
                for (var Xt = Bt.length, Zt, ye; Xt; )
                  ye = Math.random() * Xt-- | 0, Zt = Bt[Xt], Bt[Xt] = Bt[ye], Bt[ye] = Zt;
                return Bt;
              }
              function w(Bt) {
                for (var Xt = 0, Zt = (Bt = E(h.call(Bt))).length, ye = [], Mt, St; Xt < Zt; )
                  Mt = Bt[Xt], St && B(St, Mt) ? ++Xt : (St = U(ye = z(ye, Mt)), Xt = 0);
                return St;
              }
              function z(Bt, Xt) {
                var Zt, ye;
                if (V(Xt, Bt)) return [Xt];
                for (Zt = 0; Zt < Bt.length; ++Zt)
                  if (O(Xt, Bt[Zt]) && V(F(Bt[Zt], Xt), Bt))
                    return [Bt[Zt], Xt];
                for (Zt = 0; Zt < Bt.length - 1; ++Zt)
                  for (ye = Zt + 1; ye < Bt.length; ++ye)
                    if (O(F(Bt[Zt], Bt[ye]), Xt) && O(F(Bt[Zt], Xt), Bt[ye]) && O(F(Bt[ye], Xt), Bt[Zt]) && V(G(Bt[Zt], Bt[ye], Xt), Bt))
                      return [Bt[Zt], Bt[ye], Xt];
                throw new Error();
              }
              function O(Bt, Xt) {
                var Zt = Bt.r - Xt.r, ye = Xt.x - Bt.x, Mt = Xt.y - Bt.y;
                return Zt < 0 || Zt * Zt < ye * ye + Mt * Mt;
              }
              function B(Bt, Xt) {
                var Zt = Bt.r - Xt.r + 1e-6, ye = Xt.x - Bt.x, Mt = Xt.y - Bt.y;
                return Zt > 0 && Zt * Zt > ye * ye + Mt * Mt;
              }
              function V(Bt, Xt) {
                for (var Zt = 0; Zt < Xt.length; ++Zt)
                  if (!B(Bt, Xt[Zt]))
                    return !1;
                return !0;
              }
              function U(Bt) {
                switch (Bt.length) {
                  case 1:
                    return H(Bt[0]);
                  case 2:
                    return F(Bt[0], Bt[1]);
                  case 3:
                    return G(Bt[0], Bt[1], Bt[2]);
                }
              }
              function H(Bt) {
                return {
                  x: Bt.x,
                  y: Bt.y,
                  r: Bt.r
                };
              }
              function F(Bt, Xt) {
                var Zt = Bt.x, ye = Bt.y, Mt = Bt.r, St = Xt.x, Lt = Xt.y, te = Xt.r, fe = St - Zt, Me = Lt - ye, ir = te - Mt, mr = Math.sqrt(fe * fe + Me * Me);
                return {
                  x: (Zt + St + fe / mr * ir) / 2,
                  y: (ye + Lt + Me / mr * ir) / 2,
                  r: (mr + Mt + te) / 2
                };
              }
              function G(Bt, Xt, Zt) {
                var ye = Bt.x, Mt = Bt.y, St = Bt.r, Lt = Xt.x, te = Xt.y, fe = Xt.r, Me = Zt.x, ir = Zt.y, mr = Zt.r, Xe = ye - Lt, xe = ye - Me, me = Mt - te, Le = Mt - ir, qt = fe - St, De = mr - St, Je = ye * ye + Mt * Mt - St * St, dr = Je - Lt * Lt - te * te + fe * fe, qe = Je - Me * Me - ir * ir + mr * mr, we = xe * me - Xe * Le, ue = (me * qe - Le * dr) / (we * 2) - ye, Pe = (Le * qt - me * De) / we, Ue = (xe * dr - Xe * qe) / (we * 2) - Mt, Ye = (Xe * De - xe * qt) / we, rr = Pe * Pe + Ye * Ye - 1, lr = 2 * (St + ue * Pe + Ue * Ye), hr = ue * ue + Ue * Ue - St * St, Sr = -(rr ? (lr + Math.sqrt(lr * lr - 4 * rr * hr)) / (2 * rr) : hr / lr);
                return {
                  x: ye + ue + Pe * Sr,
                  y: Mt + Ue + Ye * Sr,
                  r: Sr
                };
              }
              function q(Bt, Xt, Zt) {
                var ye = Bt.x - Xt.x, Mt, St, Lt = Bt.y - Xt.y, te, fe, Me = ye * ye + Lt * Lt;
                Me ? (St = Xt.r + Zt.r, St *= St, fe = Bt.r + Zt.r, fe *= fe, St > fe ? (Mt = (Me + fe - St) / (2 * Me), te = Math.sqrt(Math.max(0, fe / Me - Mt * Mt)), Zt.x = Bt.x - Mt * ye - te * Lt, Zt.y = Bt.y - Mt * Lt + te * ye) : (Mt = (Me + St - fe) / (2 * Me), te = Math.sqrt(Math.max(0, St / Me - Mt * Mt)), Zt.x = Xt.x + Mt * ye - te * Lt, Zt.y = Xt.y + Mt * Lt + te * ye)) : (Zt.x = Xt.x + Zt.r, Zt.y = Xt.y);
              }
              function rt(Bt, Xt) {
                var Zt = Bt.r + Xt.r - 1e-6, ye = Xt.x - Bt.x, Mt = Xt.y - Bt.y;
                return Zt > 0 && Zt * Zt > ye * ye + Mt * Mt;
              }
              function st(Bt) {
                var Xt = Bt._, Zt = Bt.next._, ye = Xt.r + Zt.r, Mt = (Xt.x * Zt.r + Zt.x * Xt.r) / ye, St = (Xt.y * Zt.r + Zt.y * Xt.r) / ye;
                return Mt * Mt + St * St;
              }
              function vt(Bt) {
                this._ = Bt, this.next = null, this.previous = null;
              }
              function ht(Bt) {
                if (!(Mt = Bt.length)) return 0;
                var Xt, Zt, ye, Mt, St, Lt, te, fe, Me, ir, mr;
                if (Xt = Bt[0], Xt.x = 0, Xt.y = 0, !(Mt > 1)) return Xt.r;
                if (Zt = Bt[1], Xt.x = -Zt.r, Zt.x = Xt.r, Zt.y = 0, !(Mt > 2)) return Xt.r + Zt.r;
                q(Zt, Xt, ye = Bt[2]), Xt = new vt(Xt), Zt = new vt(Zt), ye = new vt(ye), Xt.next = ye.previous = Zt, Zt.next = Xt.previous = ye, ye.next = Zt.previous = Xt;
                t: for (te = 3; te < Mt; ++te) {
                  q(Xt._, Zt._, ye = Bt[te]), ye = new vt(ye), fe = Zt.next, Me = Xt.previous, ir = Zt._.r, mr = Xt._.r;
                  do
                    if (ir <= mr) {
                      if (rt(fe._, ye._)) {
                        Zt = fe, Xt.next = Zt, Zt.previous = Xt, --te;
                        continue t;
                      }
                      ir += fe._.r, fe = fe.next;
                    } else {
                      if (rt(Me._, ye._)) {
                        Xt = Me, Xt.next = Zt, Zt.previous = Xt, --te;
                        continue t;
                      }
                      mr += Me._.r, Me = Me.previous;
                    }
                  while (fe !== Me.next);
                  for (ye.previous = Xt, ye.next = Zt, Xt.next = Zt.previous = Zt = ye, St = st(Xt); (ye = ye.next) !== Zt; )
                    (Lt = st(ye)) < St && (Xt = ye, St = Lt);
                  Zt = Xt.next;
                }
                for (Xt = [Zt._], ye = Zt; (ye = ye.next) !== Zt; ) Xt.push(ye._);
                for (ye = w(Xt), te = 0; te < Mt; ++te) Xt = Bt[te], Xt.x -= ye.x, Xt.y -= ye.y;
                return ye.r;
              }
              function et(Bt) {
                return ht(Bt), Bt;
              }
              function Q(Bt) {
                return Bt == null ? null : j(Bt);
              }
              function j(Bt) {
                if (typeof Bt != "function") throw new Error();
                return Bt;
              }
              function at() {
                return 0;
              }
              function ut(Bt) {
                return function() {
                  return Bt;
                };
              }
              function nt(Bt) {
                return Math.sqrt(Bt.value);
              }
              function X() {
                var Bt = null, Xt = 1, Zt = 1, ye = at;
                function Mt(St) {
                  return St.x = Xt / 2, St.y = Zt / 2, Bt ? St.eachBefore(ct(Bt)).eachAfter(lt(ye, 0.5)).eachBefore(pt(1)) : St.eachBefore(ct(nt)).eachAfter(lt(at, 1)).eachAfter(lt(ye, St.r / Math.min(Xt, Zt))).eachBefore(pt(Math.min(Xt, Zt) / (2 * St.r))), St;
                }
                return Mt.radius = function(St) {
                  return arguments.length ? (Bt = Q(St), Mt) : Bt;
                }, Mt.size = function(St) {
                  return arguments.length ? (Xt = +St[0], Zt = +St[1], Mt) : [Xt, Zt];
                }, Mt.padding = function(St) {
                  return arguments.length ? (ye = typeof St == "function" ? St : ut(+St), Mt) : ye;
                }, Mt;
              }
              function ct(Bt) {
                return function(Xt) {
                  Xt.children || (Xt.r = Math.max(0, +Bt(Xt) || 0));
                };
              }
              function lt(Bt, Xt) {
                return function(Zt) {
                  if (ye = Zt.children) {
                    var ye, Mt, St = ye.length, Lt = Bt(Zt) * Xt || 0, te;
                    if (Lt) for (Mt = 0; Mt < St; ++Mt) ye[Mt].r += Lt;
                    if (te = ht(ye), Lt) for (Mt = 0; Mt < St; ++Mt) ye[Mt].r -= Lt;
                    Zt.r = te + Lt;
                  }
                };
              }
              function pt(Bt) {
                return function(Xt) {
                  var Zt = Xt.parent;
                  Xt.r *= Bt, Zt && (Xt.x = Zt.x + Bt * Xt.x, Xt.y = Zt.y + Bt * Xt.y);
                };
              }
              function wt(Bt) {
                Bt.x0 = Math.round(Bt.x0), Bt.y0 = Math.round(Bt.y0), Bt.x1 = Math.round(Bt.x1), Bt.y1 = Math.round(Bt.y1);
              }
              function Et(Bt, Xt, Zt, ye, Mt) {
                for (var St = Bt.children, Lt, te = -1, fe = St.length, Me = Bt.value && (ye - Xt) / Bt.value; ++te < fe; )
                  Lt = St[te], Lt.y0 = Zt, Lt.y1 = Mt, Lt.x0 = Xt, Lt.x1 = Xt += Lt.value * Me;
              }
              function Ct() {
                var Bt = 1, Xt = 1, Zt = 0, ye = !1;
                function Mt(Lt) {
                  var te = Lt.height + 1;
                  return Lt.x0 = Lt.y0 = Zt, Lt.x1 = Bt, Lt.y1 = Xt / te, Lt.eachBefore(St(Xt, te)), ye && Lt.eachBefore(wt), Lt;
                }
                function St(Lt, te) {
                  return function(fe) {
                    fe.children && Et(fe, fe.x0, Lt * (fe.depth + 1) / te, fe.x1, Lt * (fe.depth + 2) / te);
                    var Me = fe.x0, ir = fe.y0, mr = fe.x1 - Zt, Xe = fe.y1 - Zt;
                    mr < Me && (Me = mr = (Me + mr) / 2), Xe < ir && (ir = Xe = (ir + Xe) / 2), fe.x0 = Me, fe.y0 = ir, fe.x1 = mr, fe.y1 = Xe;
                  };
                }
                return Mt.round = function(Lt) {
                  return arguments.length ? (ye = !!Lt, Mt) : ye;
                }, Mt.size = function(Lt) {
                  return arguments.length ? (Bt = +Lt[0], Xt = +Lt[1], Mt) : [Bt, Xt];
                }, Mt.padding = function(Lt) {
                  return arguments.length ? (Zt = +Lt, Mt) : Zt;
                }, Mt;
              }
              var Gt = "$", Jt = { depth: -1 }, Qt = {};
              function Vt(Bt) {
                return Bt.id;
              }
              function zt(Bt) {
                return Bt.parentId;
              }
              function Rt() {
                var Bt = Vt, Xt = zt;
                function Zt(ye) {
                  var Mt, St, Lt = ye.length, te, fe, Me, ir = new Array(Lt), mr, Xe, xe = {};
                  for (St = 0; St < Lt; ++St)
                    Mt = ye[St], Me = ir[St] = new d(Mt), (mr = Bt(Mt, St, ye)) != null && (mr += "") && (Xe = Gt + (Me.id = mr), xe[Xe] = Xe in xe ? Qt : Me);
                  for (St = 0; St < Lt; ++St)
                    if (Me = ir[St], mr = Xt(ye[St], St, ye), mr == null || !(mr += "")) {
                      if (te) throw new Error("multiple roots");
                      te = Me;
                    } else {
                      if (fe = xe[Gt + mr], !fe) throw new Error("missing: " + mr);
                      if (fe === Qt) throw new Error("ambiguous: " + mr);
                      fe.children ? fe.children.push(Me) : fe.children = [Me], Me.parent = fe;
                    }
                  if (!te) throw new Error("no root");
                  if (te.parent = Jt, te.eachBefore(function(me) {
                    me.depth = me.parent.depth + 1, --Lt;
                  }).eachBefore(L), te.parent = null, Lt > 0) throw new Error("cycle");
                  return te;
                }
                return Zt.id = function(ye) {
                  return arguments.length ? (Bt = j(ye), Zt) : Bt;
                }, Zt.parentId = function(ye) {
                  return arguments.length ? (Xt = j(ye), Zt) : Xt;
                }, Zt;
              }
              function Wt(Bt, Xt) {
                return Bt.parent === Xt.parent ? 1 : 2;
              }
              function kt(Bt) {
                var Xt = Bt.children;
                return Xt ? Xt[0] : Bt.t;
              }
              function re(Bt) {
                var Xt = Bt.children;
                return Xt ? Xt[Xt.length - 1] : Bt.t;
              }
              function ge(Bt, Xt, Zt) {
                var ye = Zt / (Xt.i - Bt.i);
                Xt.c -= ye, Xt.s += Zt, Bt.c += ye, Xt.z += Zt, Xt.m += Zt;
              }
              function _e(Bt) {
                for (var Xt = 0, Zt = 0, ye = Bt.children, Mt = ye.length, St; --Mt >= 0; )
                  St = ye[Mt], St.z += Xt, St.m += Xt, Xt += St.s + (Zt += St.c);
              }
              function ce(Bt, Xt, Zt) {
                return Bt.a.parent === Xt.parent ? Bt.a : Zt;
              }
              function ae(Bt, Xt) {
                this._ = Bt, this.parent = null, this.children = null, this.A = null, this.a = this, this.z = 0, this.m = 0, this.c = 0, this.s = 0, this.t = null, this.i = Xt;
              }
              ae.prototype = Object.create(d.prototype);
              function Se(Bt) {
                for (var Xt = new ae(Bt, 0), Zt, ye = [Xt], Mt, St, Lt, te; Zt = ye.pop(); )
                  if (St = Zt._.children)
                    for (Zt.children = new Array(te = St.length), Lt = te - 1; Lt >= 0; --Lt)
                      ye.push(Mt = Zt.children[Lt] = new ae(St[Lt], Lt)), Mt.parent = Zt;
                return (Xt.parent = new ae(null, 0)).children = [Xt], Xt;
              }
              function ze() {
                var Bt = Wt, Xt = 1, Zt = 1, ye = null;
                function Mt(Me) {
                  var ir = Se(Me);
                  if (ir.eachAfter(St), ir.parent.m = -ir.z, ir.eachBefore(Lt), ye) Me.eachBefore(fe);
                  else {
                    var mr = Me, Xe = Me, xe = Me;
                    Me.eachBefore(function(Je) {
                      Je.x < mr.x && (mr = Je), Je.x > Xe.x && (Xe = Je), Je.depth > xe.depth && (xe = Je);
                    });
                    var me = mr === Xe ? 1 : Bt(mr, Xe) / 2, Le = me - mr.x, qt = Xt / (Xe.x + me + Le), De = Zt / (xe.depth || 1);
                    Me.eachBefore(function(Je) {
                      Je.x = (Je.x + Le) * qt, Je.y = Je.depth * De;
                    });
                  }
                  return Me;
                }
                function St(Me) {
                  var ir = Me.children, mr = Me.parent.children, Xe = Me.i ? mr[Me.i - 1] : null;
                  if (ir) {
                    _e(Me);
                    var xe = (ir[0].z + ir[ir.length - 1].z) / 2;
                    Xe ? (Me.z = Xe.z + Bt(Me._, Xe._), Me.m = Me.z - xe) : Me.z = xe;
                  } else Xe && (Me.z = Xe.z + Bt(Me._, Xe._));
                  Me.parent.A = te(Me, Xe, Me.parent.A || mr[0]);
                }
                function Lt(Me) {
                  Me._.x = Me.z + Me.parent.m, Me.m += Me.parent.m;
                }
                function te(Me, ir, mr) {
                  if (ir) {
                    for (var Xe = Me, xe = Me, me = ir, Le = Xe.parent.children[0], qt = Xe.m, De = xe.m, Je = me.m, dr = Le.m, qe; me = re(me), Xe = kt(Xe), me && Xe; )
                      Le = kt(Le), xe = re(xe), xe.a = Me, qe = me.z + Je - Xe.z - qt + Bt(me._, Xe._), qe > 0 && (ge(ce(me, Me, mr), Me, qe), qt += qe, De += qe), Je += me.m, qt += Xe.m, dr += Le.m, De += xe.m;
                    me && !re(xe) && (xe.t = me, xe.m += Je - De), Xe && !kt(Le) && (Le.t = Xe, Le.m += qt - dr, mr = Me);
                  }
                  return mr;
                }
                function fe(Me) {
                  Me.x *= Xt, Me.y = Me.depth * Zt;
                }
                return Mt.separation = function(Me) {
                  return arguments.length ? (Bt = Me, Mt) : Bt;
                }, Mt.size = function(Me) {
                  return arguments.length ? (ye = !1, Xt = +Me[0], Zt = +Me[1], Mt) : ye ? null : [Xt, Zt];
                }, Mt.nodeSize = function(Me) {
                  return arguments.length ? (ye = !0, Xt = +Me[0], Zt = +Me[1], Mt) : ye ? [Xt, Zt] : null;
                }, Mt;
              }
              function Ne(Bt, Xt, Zt, ye, Mt) {
                for (var St = Bt.children, Lt, te = -1, fe = St.length, Me = Bt.value && (Mt - Zt) / Bt.value; ++te < fe; )
                  Lt = St[te], Lt.x0 = Xt, Lt.x1 = ye, Lt.y0 = Zt, Lt.y1 = Zt += Lt.value * Me;
              }
              var Ve = (1 + Math.sqrt(5)) / 2;
              function Oe(Bt, Xt, Zt, ye, Mt, St) {
                for (var Lt = [], te = Xt.children, fe, Me, ir = 0, mr = 0, Xe = te.length, xe, me, Le = Xt.value, qt, De, Je, dr, qe, we, ue; ir < Xe; ) {
                  xe = Mt - Zt, me = St - ye;
                  do
                    qt = te[mr++].value;
                  while (!qt && mr < Xe);
                  for (De = Je = qt, we = Math.max(me / xe, xe / me) / (Le * Bt), ue = qt * qt * we, qe = Math.max(Je / ue, ue / De); mr < Xe; ++mr) {
                    if (qt += Me = te[mr].value, Me < De && (De = Me), Me > Je && (Je = Me), ue = qt * qt * we, dr = Math.max(Je / ue, ue / De), dr > qe) {
                      qt -= Me;
                      break;
                    }
                    qe = dr;
                  }
                  Lt.push(fe = { value: qt, dice: xe < me, children: te.slice(ir, mr) }), fe.dice ? Et(fe, Zt, ye, Mt, Le ? ye += me * qt / Le : St) : Ne(fe, Zt, ye, Le ? Zt += xe * qt / Le : Mt, St), Le -= qt, ir = mr;
                }
                return Lt;
              }
              var ur = function Bt(Xt) {
                function Zt(ye, Mt, St, Lt, te) {
                  Oe(Xt, ye, Mt, St, Lt, te);
                }
                return Zt.ratio = function(ye) {
                  return Bt((ye = +ye) > 1 ? ye : 1);
                }, Zt;
              }(Ve);
              function ie() {
                var Bt = ur, Xt = !1, Zt = 1, ye = 1, Mt = [0], St = at, Lt = at, te = at, fe = at, Me = at;
                function ir(Xe) {
                  return Xe.x0 = Xe.y0 = 0, Xe.x1 = Zt, Xe.y1 = ye, Xe.eachBefore(mr), Mt = [0], Xt && Xe.eachBefore(wt), Xe;
                }
                function mr(Xe) {
                  var xe = Mt[Xe.depth], me = Xe.x0 + xe, Le = Xe.y0 + xe, qt = Xe.x1 - xe, De = Xe.y1 - xe;
                  qt < me && (me = qt = (me + qt) / 2), De < Le && (Le = De = (Le + De) / 2), Xe.x0 = me, Xe.y0 = Le, Xe.x1 = qt, Xe.y1 = De, Xe.children && (xe = Mt[Xe.depth + 1] = St(Xe) / 2, me += Me(Xe) - xe, Le += Lt(Xe) - xe, qt -= te(Xe) - xe, De -= fe(Xe) - xe, qt < me && (me = qt = (me + qt) / 2), De < Le && (Le = De = (Le + De) / 2), Bt(Xe, me, Le, qt, De));
                }
                return ir.round = function(Xe) {
                  return arguments.length ? (Xt = !!Xe, ir) : Xt;
                }, ir.size = function(Xe) {
                  return arguments.length ? (Zt = +Xe[0], ye = +Xe[1], ir) : [Zt, ye];
                }, ir.tile = function(Xe) {
                  return arguments.length ? (Bt = j(Xe), ir) : Bt;
                }, ir.padding = function(Xe) {
                  return arguments.length ? ir.paddingInner(Xe).paddingOuter(Xe) : ir.paddingInner();
                }, ir.paddingInner = function(Xe) {
                  return arguments.length ? (St = typeof Xe == "function" ? Xe : ut(+Xe), ir) : St;
                }, ir.paddingOuter = function(Xe) {
                  return arguments.length ? ir.paddingTop(Xe).paddingRight(Xe).paddingBottom(Xe).paddingLeft(Xe) : ir.paddingTop();
                }, ir.paddingTop = function(Xe) {
                  return arguments.length ? (Lt = typeof Xe == "function" ? Xe : ut(+Xe), ir) : Lt;
                }, ir.paddingRight = function(Xe) {
                  return arguments.length ? (te = typeof Xe == "function" ? Xe : ut(+Xe), ir) : te;
                }, ir.paddingBottom = function(Xe) {
                  return arguments.length ? (fe = typeof Xe == "function" ? Xe : ut(+Xe), ir) : fe;
                }, ir.paddingLeft = function(Xe) {
                  return arguments.length ? (Me = typeof Xe == "function" ? Xe : ut(+Xe), ir) : Me;
                }, ir;
              }
              function $t(Bt, Xt, Zt, ye, Mt) {
                var St = Bt.children, Lt, te = St.length, fe, Me = new Array(te + 1);
                for (Me[0] = fe = Lt = 0; Lt < te; ++Lt)
                  Me[Lt + 1] = fe += St[Lt].value;
                ir(0, te, Bt.value, Xt, Zt, ye, Mt);
                function ir(mr, Xe, xe, me, Le, qt, De) {
                  if (mr >= Xe - 1) {
                    var Je = St[mr];
                    Je.x0 = me, Je.y0 = Le, Je.x1 = qt, Je.y1 = De;
                    return;
                  }
                  for (var dr = Me[mr], qe = xe / 2 + dr, we = mr + 1, ue = Xe - 1; we < ue; ) {
                    var Pe = we + ue >>> 1;
                    Me[Pe] < qe ? we = Pe + 1 : ue = Pe;
                  }
                  qe - Me[we - 1] < Me[we] - qe && mr + 1 < we && --we;
                  var Ue = Me[we] - dr, Ye = xe - Ue;
                  if (qt - me > De - Le) {
                    var rr = (me * Ye + qt * Ue) / xe;
                    ir(mr, we, Ue, me, Le, rr, De), ir(we, Xe, Ye, rr, Le, qt, De);
                  } else {
                    var lr = (Le * Ye + De * Ue) / xe;
                    ir(mr, we, Ue, me, Le, qt, lr), ir(we, Xe, Ye, me, lr, qt, De);
                  }
                }
              }
              function jt(Bt, Xt, Zt, ye, Mt) {
                (Bt.depth & 1 ? Ne : Et)(Bt, Xt, Zt, ye, Mt);
              }
              var ee = function Bt(Xt) {
                function Zt(ye, Mt, St, Lt, te) {
                  if ((fe = ye._squarify) && fe.ratio === Xt)
                    for (var fe, Me, ir, mr, Xe = -1, xe, me = fe.length, Le = ye.value; ++Xe < me; ) {
                      for (Me = fe[Xe], ir = Me.children, mr = Me.value = 0, xe = ir.length; mr < xe; ++mr) Me.value += ir[mr].value;
                      Me.dice ? Et(Me, Mt, St, Lt, St += (te - St) * Me.value / Le) : Ne(Me, Mt, St, Mt += (Lt - Mt) * Me.value / Le, te), Le -= Me.value;
                    }
                  else
                    ye._squarify = fe = Oe(Xt, ye, Mt, St, Lt, te), fe.ratio = Xt;
                }
                return Zt.ratio = function(ye) {
                  return Bt((ye = +ye) > 1 ? ye : 1);
                }, Zt;
              }(Ve);
            }
          ),
          /***/
          48544: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                pq: function() {
                  return (
                    /* binding */
                    g
                  );
                }
              });
              var b = Math.PI, P = 2 * b, n = 1e-6, s = P - n;
              function T() {
                this._x0 = this._y0 = // start of current subpath
                this._x1 = this._y1 = null, this._ = "";
              }
              function A() {
                return new T();
              }
              T.prototype = A.prototype = {
                constructor: T,
                moveTo: function(x, c) {
                  this._ += "M" + (this._x0 = this._x1 = +x) + "," + (this._y0 = this._y1 = +c);
                },
                closePath: function() {
                  this._x1 !== null && (this._x1 = this._x0, this._y1 = this._y0, this._ += "Z");
                },
                lineTo: function(x, c) {
                  this._ += "L" + (this._x1 = +x) + "," + (this._y1 = +c);
                },
                quadraticCurveTo: function(x, c, v, f) {
                  this._ += "Q" + +x + "," + +c + "," + (this._x1 = +v) + "," + (this._y1 = +f);
                },
                bezierCurveTo: function(x, c, v, f, _, S) {
                  this._ += "C" + +x + "," + +c + "," + +v + "," + +f + "," + (this._x1 = +_) + "," + (this._y1 = +S);
                },
                arcTo: function(x, c, v, f, _) {
                  x = +x, c = +c, v = +v, f = +f, _ = +_;
                  var S = this._x1, M = this._y1, C = v - x, m = f - c, L = S - x, d = M - c, h = L * L + d * d;
                  if (_ < 0) throw new Error("negative radius: " + _);
                  if (this._x1 === null)
                    this._ += "M" + (this._x1 = x) + "," + (this._y1 = c);
                  else if (h > n) if (!(Math.abs(d * C - m * L) > n) || !_)
                    this._ += "L" + (this._x1 = x) + "," + (this._y1 = c);
                  else {
                    var E = v - S, w = f - M, z = C * C + m * m, O = E * E + w * w, B = Math.sqrt(z), V = Math.sqrt(h), U = _ * Math.tan((b - Math.acos((z + h - O) / (2 * B * V))) / 2), H = U / V, F = U / B;
                    Math.abs(H - 1) > n && (this._ += "L" + (x + H * L) + "," + (c + H * d)), this._ += "A" + _ + "," + _ + ",0,0," + +(d * E > L * w) + "," + (this._x1 = x + F * C) + "," + (this._y1 = c + F * m);
                  }
                },
                arc: function(x, c, v, f, _, S) {
                  x = +x, c = +c, v = +v, S = !!S;
                  var M = v * Math.cos(f), C = v * Math.sin(f), m = x + M, L = c + C, d = 1 ^ S, h = S ? f - _ : _ - f;
                  if (v < 0) throw new Error("negative radius: " + v);
                  this._x1 === null ? this._ += "M" + m + "," + L : (Math.abs(this._x1 - m) > n || Math.abs(this._y1 - L) > n) && (this._ += "L" + m + "," + L), v && (h < 0 && (h = h % P + P), h > s ? this._ += "A" + v + "," + v + ",0,1," + d + "," + (x - M) + "," + (c - C) + "A" + v + "," + v + ",0,1," + d + "," + (this._x1 = m) + "," + (this._y1 = L) : h > n && (this._ += "A" + v + "," + v + ",0," + +(h >= b) + "," + d + "," + (this._x1 = x + v * Math.cos(_)) + "," + (this._y1 = c + v * Math.sin(_))));
                },
                rect: function(x, c, v, f) {
                  this._ += "M" + (this._x0 = this._x1 = +x) + "," + (this._y0 = this._y1 = +c) + "h" + +v + "v" + +f + "h" + -v + "Z";
                },
                toString: function() {
                  return this._;
                }
              };
              var p = A, u = Array.prototype.slice;
              function t(x) {
                return function() {
                  return x;
                };
              }
              function r(x) {
                return x[0];
              }
              function i(x) {
                return x[1];
              }
              function a(x) {
                return x.source;
              }
              function l(x) {
                return x.target;
              }
              function o(x) {
                var c = a, v = l, f = r, _ = i, S = null;
                function M() {
                  var C, m = u.call(arguments), L = c.apply(this, m), d = v.apply(this, m);
                  if (S || (S = C = p()), x(S, +f.apply(this, (m[0] = L, m)), +_.apply(this, m), +f.apply(this, (m[0] = d, m)), +_.apply(this, m)), C) return S = null, C + "" || null;
                }
                return M.source = function(C) {
                  return arguments.length ? (c = C, M) : c;
                }, M.target = function(C) {
                  return arguments.length ? (v = C, M) : v;
                }, M.x = function(C) {
                  return arguments.length ? (f = typeof C == "function" ? C : t(+C), M) : f;
                }, M.y = function(C) {
                  return arguments.length ? (_ = typeof C == "function" ? C : t(+C), M) : _;
                }, M.context = function(C) {
                  return arguments.length ? (S = C ?? null, M) : S;
                }, M;
              }
              function y(x, c, v, f, _) {
                x.moveTo(c, v), x.bezierCurveTo(c = (c + f) / 2, v, c, _, f, _);
              }
              function g() {
                return o(y);
              }
            }
          ),
          /***/
          42696: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                DC: function() {
                  return (
                    /* reexport */
                    $t
                  );
                },
                de: function() {
                  return (
                    /* reexport */
                    r
                  );
                },
                aL: function() {
                  return (
                    /* reexport */
                    jt
                  );
                }
              });
              var b = e(1681), P = e(72543), n = e(55735), s = e(47265), T = e(9830), A = e(59764);
              function p(Bt) {
                if (0 <= Bt.y && Bt.y < 100) {
                  var Xt = new Date(-1, Bt.m, Bt.d, Bt.H, Bt.M, Bt.S, Bt.L);
                  return Xt.setFullYear(Bt.y), Xt;
                }
                return new Date(Bt.y, Bt.m, Bt.d, Bt.H, Bt.M, Bt.S, Bt.L);
              }
              function u(Bt) {
                if (0 <= Bt.y && Bt.y < 100) {
                  var Xt = new Date(Date.UTC(-1, Bt.m, Bt.d, Bt.H, Bt.M, Bt.S, Bt.L));
                  return Xt.setUTCFullYear(Bt.y), Xt;
                }
                return new Date(Date.UTC(Bt.y, Bt.m, Bt.d, Bt.H, Bt.M, Bt.S, Bt.L));
              }
              function t(Bt, Xt, Zt) {
                return { y: Bt, m: Xt, d: Zt, H: 0, M: 0, S: 0, L: 0 };
              }
              function r(Bt) {
                var Xt = Bt.dateTime, Zt = Bt.date, ye = Bt.time, Mt = Bt.periods, St = Bt.days, Lt = Bt.shortDays, te = Bt.months, fe = Bt.shortMonths, Me = x(Mt), ir = c(Mt), mr = x(St), Xe = c(St), xe = x(Lt), me = c(Lt), Le = x(te), qt = c(te), De = x(fe), Je = c(fe), dr = {
                  a: Nr,
                  A: Xr,
                  b: Gr,
                  B: oe,
                  c: null,
                  d: q,
                  e: q,
                  f: et,
                  H: rt,
                  I: st,
                  j: vt,
                  L: ht,
                  m: Q,
                  M: j,
                  p: de,
                  q: or,
                  Q: Oe,
                  s: ur,
                  S: at,
                  u: ut,
                  U: nt,
                  V: X,
                  w: ct,
                  W: lt,
                  x: null,
                  X: null,
                  y: pt,
                  Y: wt,
                  Z: Et,
                  "%": Ve
                }, qe = {
                  a: Er,
                  A: Tr,
                  b: tr,
                  B: yr,
                  c: null,
                  d: Ct,
                  e: Ct,
                  f: zt,
                  H: Gt,
                  I: Jt,
                  j: Qt,
                  L: Vt,
                  m: Rt,
                  M: Wt,
                  p: Ir,
                  q: Cr,
                  Q: Oe,
                  s: ur,
                  S: kt,
                  u: re,
                  U: ge,
                  V: _e,
                  w: ce,
                  W: ae,
                  x: null,
                  X: null,
                  y: Se,
                  Y: ze,
                  Z: Ne,
                  "%": Ve
                }, we = {
                  a: rr,
                  A: lr,
                  b: hr,
                  B: Sr,
                  c: Dr,
                  d: E,
                  e: E,
                  f: U,
                  H: z,
                  I: z,
                  j: w,
                  L: V,
                  m: h,
                  M: O,
                  p: Ye,
                  q: d,
                  Q: F,
                  s: G,
                  S: B,
                  u: f,
                  U: _,
                  V: S,
                  w: v,
                  W: M,
                  x: Or,
                  X: Br,
                  y: m,
                  Y: C,
                  Z: L,
                  "%": H
                };
                dr.x = ue(Zt, dr), dr.X = ue(ye, dr), dr.c = ue(Xt, dr), qe.x = ue(Zt, qe), qe.X = ue(ye, qe), qe.c = ue(Xt, qe);
                function ue(_r, Zr) {
                  return function(ln) {
                    var Jr = [], Zn = -1, fn = 0, hi = _r.length, Vn, jr, zr;
                    for (ln instanceof Date || (ln = /* @__PURE__ */ new Date(+ln)); ++Zn < hi; )
                      _r.charCodeAt(Zn) === 37 && (Jr.push(_r.slice(fn, Zn)), (jr = i[Vn = _r.charAt(++Zn)]) != null ? Vn = _r.charAt(++Zn) : jr = Vn === "e" ? " " : "0", (zr = Zr[Vn]) && (Vn = zr(ln, jr)), Jr.push(Vn), fn = Zn + 1);
                    return Jr.push(_r.slice(fn, Zn)), Jr.join("");
                  };
                }
                function Pe(_r, Zr) {
                  return function(ln) {
                    var Jr = t(1900, void 0, 1), Zn = Ue(Jr, _r, ln += "", 0), fn, hi;
                    if (Zn != ln.length) return null;
                    if ("Q" in Jr) return new Date(Jr.Q);
                    if ("s" in Jr) return new Date(Jr.s * 1e3 + ("L" in Jr ? Jr.L : 0));
                    if (Zr && !("Z" in Jr) && (Jr.Z = 0), "p" in Jr && (Jr.H = Jr.H % 12 + Jr.p * 12), Jr.m === void 0 && (Jr.m = "q" in Jr ? Jr.q : 0), "V" in Jr) {
                      if (Jr.V < 1 || Jr.V > 53) return null;
                      "w" in Jr || (Jr.w = 1), "Z" in Jr ? (fn = u(t(Jr.y, 0, 1)), hi = fn.getUTCDay(), fn = hi > 4 || hi === 0 ? b.rt.ceil(fn) : (0, b.rt)(fn), fn = P.A.offset(fn, (Jr.V - 1) * 7), Jr.y = fn.getUTCFullYear(), Jr.m = fn.getUTCMonth(), Jr.d = fn.getUTCDate() + (Jr.w + 6) % 7) : (fn = p(t(Jr.y, 0, 1)), hi = fn.getDay(), fn = hi > 4 || hi === 0 ? n.By.ceil(fn) : (0, n.By)(fn), fn = s.A.offset(fn, (Jr.V - 1) * 7), Jr.y = fn.getFullYear(), Jr.m = fn.getMonth(), Jr.d = fn.getDate() + (Jr.w + 6) % 7);
                    } else ("W" in Jr || "U" in Jr) && ("w" in Jr || (Jr.w = "u" in Jr ? Jr.u % 7 : "W" in Jr ? 1 : 0), hi = "Z" in Jr ? u(t(Jr.y, 0, 1)).getUTCDay() : p(t(Jr.y, 0, 1)).getDay(), Jr.m = 0, Jr.d = "W" in Jr ? (Jr.w + 6) % 7 + Jr.W * 7 - (hi + 5) % 7 : Jr.w + Jr.U * 7 - (hi + 6) % 7);
                    return "Z" in Jr ? (Jr.H += Jr.Z / 100 | 0, Jr.M += Jr.Z % 100, u(Jr)) : p(Jr);
                  };
                }
                function Ue(_r, Zr, ln, Jr) {
                  for (var Zn = 0, fn = Zr.length, hi = ln.length, Vn, jr; Zn < fn; ) {
                    if (Jr >= hi) return -1;
                    if (Vn = Zr.charCodeAt(Zn++), Vn === 37) {
                      if (Vn = Zr.charAt(Zn++), jr = we[Vn in i ? Zr.charAt(Zn++) : Vn], !jr || (Jr = jr(_r, ln, Jr)) < 0) return -1;
                    } else if (Vn != ln.charCodeAt(Jr++))
                      return -1;
                  }
                  return Jr;
                }
                function Ye(_r, Zr, ln) {
                  var Jr = Me.exec(Zr.slice(ln));
                  return Jr ? (_r.p = ir[Jr[0].toLowerCase()], ln + Jr[0].length) : -1;
                }
                function rr(_r, Zr, ln) {
                  var Jr = xe.exec(Zr.slice(ln));
                  return Jr ? (_r.w = me[Jr[0].toLowerCase()], ln + Jr[0].length) : -1;
                }
                function lr(_r, Zr, ln) {
                  var Jr = mr.exec(Zr.slice(ln));
                  return Jr ? (_r.w = Xe[Jr[0].toLowerCase()], ln + Jr[0].length) : -1;
                }
                function hr(_r, Zr, ln) {
                  var Jr = De.exec(Zr.slice(ln));
                  return Jr ? (_r.m = Je[Jr[0].toLowerCase()], ln + Jr[0].length) : -1;
                }
                function Sr(_r, Zr, ln) {
                  var Jr = Le.exec(Zr.slice(ln));
                  return Jr ? (_r.m = qt[Jr[0].toLowerCase()], ln + Jr[0].length) : -1;
                }
                function Dr(_r, Zr, ln) {
                  return Ue(_r, Xt, Zr, ln);
                }
                function Or(_r, Zr, ln) {
                  return Ue(_r, Zt, Zr, ln);
                }
                function Br(_r, Zr, ln) {
                  return Ue(_r, ye, Zr, ln);
                }
                function Nr(_r) {
                  return Lt[_r.getDay()];
                }
                function Xr(_r) {
                  return St[_r.getDay()];
                }
                function Gr(_r) {
                  return fe[_r.getMonth()];
                }
                function oe(_r) {
                  return te[_r.getMonth()];
                }
                function de(_r) {
                  return Mt[+(_r.getHours() >= 12)];
                }
                function or(_r) {
                  return 1 + ~~(_r.getMonth() / 3);
                }
                function Er(_r) {
                  return Lt[_r.getUTCDay()];
                }
                function Tr(_r) {
                  return St[_r.getUTCDay()];
                }
                function tr(_r) {
                  return fe[_r.getUTCMonth()];
                }
                function yr(_r) {
                  return te[_r.getUTCMonth()];
                }
                function Ir(_r) {
                  return Mt[+(_r.getUTCHours() >= 12)];
                }
                function Cr(_r) {
                  return 1 + ~~(_r.getUTCMonth() / 3);
                }
                return {
                  format: function(_r) {
                    var Zr = ue(_r += "", dr);
                    return Zr.toString = function() {
                      return _r;
                    }, Zr;
                  },
                  parse: function(_r) {
                    var Zr = Pe(_r += "", !1);
                    return Zr.toString = function() {
                      return _r;
                    }, Zr;
                  },
                  utcFormat: function(_r) {
                    var Zr = ue(_r += "", qe);
                    return Zr.toString = function() {
                      return _r;
                    }, Zr;
                  },
                  utcParse: function(_r) {
                    var Zr = Pe(_r += "", !0);
                    return Zr.toString = function() {
                      return _r;
                    }, Zr;
                  }
                };
              }
              var i = { "-": "", _: " ", 0: "0" }, a = /^\s*\d+/, l = /^%/, o = /[\\^$*+?|[\]().{}]/g;
              function y(Bt, Xt, Zt) {
                var ye = Bt < 0 ? "-" : "", Mt = (ye ? -Bt : Bt) + "", St = Mt.length;
                return ye + (St < Zt ? new Array(Zt - St + 1).join(Xt) + Mt : Mt);
              }
              function g(Bt) {
                return Bt.replace(o, "\\$&");
              }
              function x(Bt) {
                return new RegExp("^(?:" + Bt.map(g).join("|") + ")", "i");
              }
              function c(Bt) {
                for (var Xt = {}, Zt = -1, ye = Bt.length; ++Zt < ye; ) Xt[Bt[Zt].toLowerCase()] = Zt;
                return Xt;
              }
              function v(Bt, Xt, Zt) {
                var ye = a.exec(Xt.slice(Zt, Zt + 1));
                return ye ? (Bt.w = +ye[0], Zt + ye[0].length) : -1;
              }
              function f(Bt, Xt, Zt) {
                var ye = a.exec(Xt.slice(Zt, Zt + 1));
                return ye ? (Bt.u = +ye[0], Zt + ye[0].length) : -1;
              }
              function _(Bt, Xt, Zt) {
                var ye = a.exec(Xt.slice(Zt, Zt + 2));
                return ye ? (Bt.U = +ye[0], Zt + ye[0].length) : -1;
              }
              function S(Bt, Xt, Zt) {
                var ye = a.exec(Xt.slice(Zt, Zt + 2));
                return ye ? (Bt.V = +ye[0], Zt + ye[0].length) : -1;
              }
              function M(Bt, Xt, Zt) {
                var ye = a.exec(Xt.slice(Zt, Zt + 2));
                return ye ? (Bt.W = +ye[0], Zt + ye[0].length) : -1;
              }
              function C(Bt, Xt, Zt) {
                var ye = a.exec(Xt.slice(Zt, Zt + 4));
                return ye ? (Bt.y = +ye[0], Zt + ye[0].length) : -1;
              }
              function m(Bt, Xt, Zt) {
                var ye = a.exec(Xt.slice(Zt, Zt + 2));
                return ye ? (Bt.y = +ye[0] + (+ye[0] > 68 ? 1900 : 2e3), Zt + ye[0].length) : -1;
              }
              function L(Bt, Xt, Zt) {
                var ye = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(Xt.slice(Zt, Zt + 6));
                return ye ? (Bt.Z = ye[1] ? 0 : -(ye[2] + (ye[3] || "00")), Zt + ye[0].length) : -1;
              }
              function d(Bt, Xt, Zt) {
                var ye = a.exec(Xt.slice(Zt, Zt + 1));
                return ye ? (Bt.q = ye[0] * 3 - 3, Zt + ye[0].length) : -1;
              }
              function h(Bt, Xt, Zt) {
                var ye = a.exec(Xt.slice(Zt, Zt + 2));
                return ye ? (Bt.m = ye[0] - 1, Zt + ye[0].length) : -1;
              }
              function E(Bt, Xt, Zt) {
                var ye = a.exec(Xt.slice(Zt, Zt + 2));
                return ye ? (Bt.d = +ye[0], Zt + ye[0].length) : -1;
              }
              function w(Bt, Xt, Zt) {
                var ye = a.exec(Xt.slice(Zt, Zt + 3));
                return ye ? (Bt.m = 0, Bt.d = +ye[0], Zt + ye[0].length) : -1;
              }
              function z(Bt, Xt, Zt) {
                var ye = a.exec(Xt.slice(Zt, Zt + 2));
                return ye ? (Bt.H = +ye[0], Zt + ye[0].length) : -1;
              }
              function O(Bt, Xt, Zt) {
                var ye = a.exec(Xt.slice(Zt, Zt + 2));
                return ye ? (Bt.M = +ye[0], Zt + ye[0].length) : -1;
              }
              function B(Bt, Xt, Zt) {
                var ye = a.exec(Xt.slice(Zt, Zt + 2));
                return ye ? (Bt.S = +ye[0], Zt + ye[0].length) : -1;
              }
              function V(Bt, Xt, Zt) {
                var ye = a.exec(Xt.slice(Zt, Zt + 3));
                return ye ? (Bt.L = +ye[0], Zt + ye[0].length) : -1;
              }
              function U(Bt, Xt, Zt) {
                var ye = a.exec(Xt.slice(Zt, Zt + 6));
                return ye ? (Bt.L = Math.floor(ye[0] / 1e3), Zt + ye[0].length) : -1;
              }
              function H(Bt, Xt, Zt) {
                var ye = l.exec(Xt.slice(Zt, Zt + 1));
                return ye ? Zt + ye[0].length : -1;
              }
              function F(Bt, Xt, Zt) {
                var ye = a.exec(Xt.slice(Zt));
                return ye ? (Bt.Q = +ye[0], Zt + ye[0].length) : -1;
              }
              function G(Bt, Xt, Zt) {
                var ye = a.exec(Xt.slice(Zt));
                return ye ? (Bt.s = +ye[0], Zt + ye[0].length) : -1;
              }
              function q(Bt, Xt) {
                return y(Bt.getDate(), Xt, 2);
              }
              function rt(Bt, Xt) {
                return y(Bt.getHours(), Xt, 2);
              }
              function st(Bt, Xt) {
                return y(Bt.getHours() % 12 || 12, Xt, 2);
              }
              function vt(Bt, Xt) {
                return y(1 + s.A.count((0, T.A)(Bt), Bt), Xt, 3);
              }
              function ht(Bt, Xt) {
                return y(Bt.getMilliseconds(), Xt, 3);
              }
              function et(Bt, Xt) {
                return ht(Bt, Xt) + "000";
              }
              function Q(Bt, Xt) {
                return y(Bt.getMonth() + 1, Xt, 2);
              }
              function j(Bt, Xt) {
                return y(Bt.getMinutes(), Xt, 2);
              }
              function at(Bt, Xt) {
                return y(Bt.getSeconds(), Xt, 2);
              }
              function ut(Bt) {
                var Xt = Bt.getDay();
                return Xt === 0 ? 7 : Xt;
              }
              function nt(Bt, Xt) {
                return y(n.fz.count((0, T.A)(Bt) - 1, Bt), Xt, 2);
              }
              function X(Bt, Xt) {
                var Zt = Bt.getDay();
                return Bt = Zt >= 4 || Zt === 0 ? (0, n.dt)(Bt) : n.dt.ceil(Bt), y(n.dt.count((0, T.A)(Bt), Bt) + ((0, T.A)(Bt).getDay() === 4), Xt, 2);
              }
              function ct(Bt) {
                return Bt.getDay();
              }
              function lt(Bt, Xt) {
                return y(n.By.count((0, T.A)(Bt) - 1, Bt), Xt, 2);
              }
              function pt(Bt, Xt) {
                return y(Bt.getFullYear() % 100, Xt, 2);
              }
              function wt(Bt, Xt) {
                return y(Bt.getFullYear() % 1e4, Xt, 4);
              }
              function Et(Bt) {
                var Xt = Bt.getTimezoneOffset();
                return (Xt > 0 ? "-" : (Xt *= -1, "+")) + y(Xt / 60 | 0, "0", 2) + y(Xt % 60, "0", 2);
              }
              function Ct(Bt, Xt) {
                return y(Bt.getUTCDate(), Xt, 2);
              }
              function Gt(Bt, Xt) {
                return y(Bt.getUTCHours(), Xt, 2);
              }
              function Jt(Bt, Xt) {
                return y(Bt.getUTCHours() % 12 || 12, Xt, 2);
              }
              function Qt(Bt, Xt) {
                return y(1 + P.A.count((0, A.A)(Bt), Bt), Xt, 3);
              }
              function Vt(Bt, Xt) {
                return y(Bt.getUTCMilliseconds(), Xt, 3);
              }
              function zt(Bt, Xt) {
                return Vt(Bt, Xt) + "000";
              }
              function Rt(Bt, Xt) {
                return y(Bt.getUTCMonth() + 1, Xt, 2);
              }
              function Wt(Bt, Xt) {
                return y(Bt.getUTCMinutes(), Xt, 2);
              }
              function kt(Bt, Xt) {
                return y(Bt.getUTCSeconds(), Xt, 2);
              }
              function re(Bt) {
                var Xt = Bt.getUTCDay();
                return Xt === 0 ? 7 : Xt;
              }
              function ge(Bt, Xt) {
                return y(b.Hl.count((0, A.A)(Bt) - 1, Bt), Xt, 2);
              }
              function _e(Bt, Xt) {
                var Zt = Bt.getUTCDay();
                return Bt = Zt >= 4 || Zt === 0 ? (0, b.pT)(Bt) : b.pT.ceil(Bt), y(b.pT.count((0, A.A)(Bt), Bt) + ((0, A.A)(Bt).getUTCDay() === 4), Xt, 2);
              }
              function ce(Bt) {
                return Bt.getUTCDay();
              }
              function ae(Bt, Xt) {
                return y(b.rt.count((0, A.A)(Bt) - 1, Bt), Xt, 2);
              }
              function Se(Bt, Xt) {
                return y(Bt.getUTCFullYear() % 100, Xt, 2);
              }
              function ze(Bt, Xt) {
                return y(Bt.getUTCFullYear() % 1e4, Xt, 4);
              }
              function Ne() {
                return "+0000";
              }
              function Ve() {
                return "%";
              }
              function Oe(Bt) {
                return +Bt;
              }
              function ur(Bt) {
                return Math.floor(+Bt / 1e3);
              }
              var ie, $t, jt;
              ee({
                dateTime: "%x, %X",
                date: "%-m/%-d/%Y",
                time: "%-I:%M:%S %p",
                periods: ["AM", "PM"],
                days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
                shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
                months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
                shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
              });
              function ee(Bt) {
                return ie = r(Bt), $t = ie.format, ie.parse, jt = ie.utcFormat, ie.utcParse, ie;
              }
            }
          ),
          /***/
          47265: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                _: function() {
                  return (
                    /* binding */
                    s
                  );
                }
                /* harmony export */
              });
              var b = e(53398), P = e(66291), n = (0, b.A)(function(T) {
                T.setHours(0, 0, 0, 0);
              }, function(T, A) {
                T.setDate(T.getDate() + A);
              }, function(T, A) {
                return (A - T - (A.getTimezoneOffset() - T.getTimezoneOffset()) * P.rR) / P.Nm;
              }, function(T) {
                return T.getDate() - 1;
              });
              K.A = n;
              var s = n.range;
            }
          ),
          /***/
          66291: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                Fq: function() {
                  return (
                    /* binding */
                    T
                  );
                },
                /* harmony export */
                JJ: function() {
                  return (
                    /* binding */
                    n
                  );
                },
                /* harmony export */
                Nm: function() {
                  return (
                    /* binding */
                    s
                  );
                },
                /* harmony export */
                Tt: function() {
                  return (
                    /* binding */
                    b
                  );
                },
                /* harmony export */
                rR: function() {
                  return (
                    /* binding */
                    P
                  );
                }
                /* harmony export */
              });
              var b = 1e3, P = 6e4, n = 36e5, s = 864e5, T = 6048e5;
            }
          ),
          /***/
          50936: (
            /***/
            function(Y, K, e) {
              e.r(K), e.d(K, {
                timeDay: function() {
                  return (
                    /* reexport */
                    y.A
                  );
                },
                timeDays: function() {
                  return (
                    /* reexport */
                    y._
                  );
                },
                timeFriday: function() {
                  return (
                    /* reexport */
                    g.Sh
                  );
                },
                timeFridays: function() {
                  return (
                    /* reexport */
                    g.tz
                  );
                },
                timeHour: function() {
                  return (
                    /* reexport */
                    l
                  );
                },
                timeHours: function() {
                  return (
                    /* reexport */
                    o
                  );
                },
                timeInterval: function() {
                  return (
                    /* reexport */
                    b.A
                  );
                },
                timeMillisecond: function() {
                  return (
                    /* reexport */
                    n
                  );
                },
                timeMilliseconds: function() {
                  return (
                    /* reexport */
                    s
                  );
                },
                timeMinute: function() {
                  return (
                    /* reexport */
                    r
                  );
                },
                timeMinutes: function() {
                  return (
                    /* reexport */
                    i
                  );
                },
                timeMonday: function() {
                  return (
                    /* reexport */
                    g.By
                  );
                },
                timeMondays: function() {
                  return (
                    /* reexport */
                    g.KP
                  );
                },
                timeMonth: function() {
                  return (
                    /* reexport */
                    c
                  );
                },
                timeMonths: function() {
                  return (
                    /* reexport */
                    v
                  );
                },
                timeSaturday: function() {
                  return (
                    /* reexport */
                    g.kS
                  );
                },
                timeSaturdays: function() {
                  return (
                    /* reexport */
                    g.t$
                  );
                },
                timeSecond: function() {
                  return (
                    /* reexport */
                    p
                  );
                },
                timeSeconds: function() {
                  return (
                    /* reexport */
                    u
                  );
                },
                timeSunday: function() {
                  return (
                    /* reexport */
                    g.fz
                  );
                },
                timeSundays: function() {
                  return (
                    /* reexport */
                    g.se
                  );
                },
                timeThursday: function() {
                  return (
                    /* reexport */
                    g.dt
                  );
                },
                timeThursdays: function() {
                  return (
                    /* reexport */
                    g.Q$
                  );
                },
                timeTuesday: function() {
                  return (
                    /* reexport */
                    g.eQ
                  );
                },
                timeTuesdays: function() {
                  return (
                    /* reexport */
                    g.yW
                  );
                },
                timeWednesday: function() {
                  return (
                    /* reexport */
                    g.l3
                  );
                },
                timeWednesdays: function() {
                  return (
                    /* reexport */
                    g.gf
                  );
                },
                timeWeek: function() {
                  return (
                    /* reexport */
                    g.fz
                  );
                },
                timeWeeks: function() {
                  return (
                    /* reexport */
                    g.se
                  );
                },
                timeYear: function() {
                  return (
                    /* reexport */
                    f.A
                  );
                },
                timeYears: function() {
                  return (
                    /* reexport */
                    f.V
                  );
                },
                utcDay: function() {
                  return (
                    /* reexport */
                    d.A
                  );
                },
                utcDays: function() {
                  return (
                    /* reexport */
                    d.o
                  );
                },
                utcFriday: function() {
                  return (
                    /* reexport */
                    h.a1
                  );
                },
                utcFridays: function() {
                  return (
                    /* reexport */
                    h.Zn
                  );
                },
                utcHour: function() {
                  return (
                    /* reexport */
                    m
                  );
                },
                utcHours: function() {
                  return (
                    /* reexport */
                    L
                  );
                },
                utcMillisecond: function() {
                  return (
                    /* reexport */
                    n
                  );
                },
                utcMilliseconds: function() {
                  return (
                    /* reexport */
                    s
                  );
                },
                utcMinute: function() {
                  return (
                    /* reexport */
                    S
                  );
                },
                utcMinutes: function() {
                  return (
                    /* reexport */
                    M
                  );
                },
                utcMonday: function() {
                  return (
                    /* reexport */
                    h.rt
                  );
                },
                utcMondays: function() {
                  return (
                    /* reexport */
                    h.ON
                  );
                },
                utcMonth: function() {
                  return (
                    /* reexport */
                    w
                  );
                },
                utcMonths: function() {
                  return (
                    /* reexport */
                    z
                  );
                },
                utcSaturday: function() {
                  return (
                    /* reexport */
                    h.c8
                  );
                },
                utcSaturdays: function() {
                  return (
                    /* reexport */
                    h.Xo
                  );
                },
                utcSecond: function() {
                  return (
                    /* reexport */
                    p
                  );
                },
                utcSeconds: function() {
                  return (
                    /* reexport */
                    u
                  );
                },
                utcSunday: function() {
                  return (
                    /* reexport */
                    h.Hl
                  );
                },
                utcSundays: function() {
                  return (
                    /* reexport */
                    h.aZ
                  );
                },
                utcThursday: function() {
                  return (
                    /* reexport */
                    h.pT
                  );
                },
                utcThursdays: function() {
                  return (
                    /* reexport */
                    h.wr
                  );
                },
                utcTuesday: function() {
                  return (
                    /* reexport */
                    h.sr
                  );
                },
                utcTuesdays: function() {
                  return (
                    /* reexport */
                    h.jN
                  );
                },
                utcWednesday: function() {
                  return (
                    /* reexport */
                    h.z2
                  );
                },
                utcWednesdays: function() {
                  return (
                    /* reexport */
                    h.G6
                  );
                },
                utcWeek: function() {
                  return (
                    /* reexport */
                    h.Hl
                  );
                },
                utcWeeks: function() {
                  return (
                    /* reexport */
                    h.aZ
                  );
                },
                utcYear: function() {
                  return (
                    /* reexport */
                    O.A
                  );
                },
                utcYears: function() {
                  return (
                    /* reexport */
                    O.j
                  );
                }
              });
              var b = e(53398), P = (0, b.A)(function() {
              }, function(B, V) {
                B.setTime(+B + V);
              }, function(B, V) {
                return V - B;
              });
              P.every = function(B) {
                return B = Math.floor(B), !isFinite(B) || !(B > 0) ? null : B > 1 ? (0, b.A)(function(V) {
                  V.setTime(Math.floor(V / B) * B);
                }, function(V, U) {
                  V.setTime(+V + U * B);
                }, function(V, U) {
                  return (U - V) / B;
                }) : P;
              };
              var n = P, s = P.range, T = e(66291), A = (0, b.A)(function(B) {
                B.setTime(B - B.getMilliseconds());
              }, function(B, V) {
                B.setTime(+B + V * T.Tt);
              }, function(B, V) {
                return (V - B) / T.Tt;
              }, function(B) {
                return B.getUTCSeconds();
              }), p = A, u = A.range, t = (0, b.A)(function(B) {
                B.setTime(B - B.getMilliseconds() - B.getSeconds() * T.Tt);
              }, function(B, V) {
                B.setTime(+B + V * T.rR);
              }, function(B, V) {
                return (V - B) / T.rR;
              }, function(B) {
                return B.getMinutes();
              }), r = t, i = t.range, a = (0, b.A)(function(B) {
                B.setTime(B - B.getMilliseconds() - B.getSeconds() * T.Tt - B.getMinutes() * T.rR);
              }, function(B, V) {
                B.setTime(+B + V * T.JJ);
              }, function(B, V) {
                return (V - B) / T.JJ;
              }, function(B) {
                return B.getHours();
              }), l = a, o = a.range, y = e(47265), g = e(55735), x = (0, b.A)(function(B) {
                B.setDate(1), B.setHours(0, 0, 0, 0);
              }, function(B, V) {
                B.setMonth(B.getMonth() + V);
              }, function(B, V) {
                return V.getMonth() - B.getMonth() + (V.getFullYear() - B.getFullYear()) * 12;
              }, function(B) {
                return B.getMonth();
              }), c = x, v = x.range, f = e(9830), _ = (0, b.A)(function(B) {
                B.setUTCSeconds(0, 0);
              }, function(B, V) {
                B.setTime(+B + V * T.rR);
              }, function(B, V) {
                return (V - B) / T.rR;
              }, function(B) {
                return B.getUTCMinutes();
              }), S = _, M = _.range, C = (0, b.A)(function(B) {
                B.setUTCMinutes(0, 0, 0);
              }, function(B, V) {
                B.setTime(+B + V * T.JJ);
              }, function(B, V) {
                return (V - B) / T.JJ;
              }, function(B) {
                return B.getUTCHours();
              }), m = C, L = C.range, d = e(72543), h = e(1681), E = (0, b.A)(function(B) {
                B.setUTCDate(1), B.setUTCHours(0, 0, 0, 0);
              }, function(B, V) {
                B.setUTCMonth(B.getUTCMonth() + V);
              }, function(B, V) {
                return V.getUTCMonth() - B.getUTCMonth() + (V.getUTCFullYear() - B.getUTCFullYear()) * 12;
              }, function(B) {
                return B.getUTCMonth();
              }), w = E, z = E.range, O = e(59764);
            }
          ),
          /***/
          53398: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                A: function() {
                  return (
                    /* binding */
                    n
                  );
                }
                /* harmony export */
              });
              var b = /* @__PURE__ */ new Date(), P = /* @__PURE__ */ new Date();
              function n(s, T, A, p) {
                function u(t) {
                  return s(t = arguments.length === 0 ? /* @__PURE__ */ new Date() : /* @__PURE__ */ new Date(+t)), t;
                }
                return u.floor = function(t) {
                  return s(t = /* @__PURE__ */ new Date(+t)), t;
                }, u.ceil = function(t) {
                  return s(t = new Date(t - 1)), T(t, 1), s(t), t;
                }, u.round = function(t) {
                  var r = u(t), i = u.ceil(t);
                  return t - r < i - t ? r : i;
                }, u.offset = function(t, r) {
                  return T(t = /* @__PURE__ */ new Date(+t), r == null ? 1 : Math.floor(r)), t;
                }, u.range = function(t, r, i) {
                  var a = [], l;
                  if (t = u.ceil(t), i = i == null ? 1 : Math.floor(i), !(t < r) || !(i > 0)) return a;
                  do
                    a.push(l = /* @__PURE__ */ new Date(+t)), T(t, i), s(t);
                  while (l < t && t < r);
                  return a;
                }, u.filter = function(t) {
                  return n(function(r) {
                    if (r >= r) for (; s(r), !t(r); ) r.setTime(r - 1);
                  }, function(r, i) {
                    if (r >= r)
                      if (i < 0) for (; ++i <= 0; )
                        for (; T(r, -1), !t(r); )
                          ;
                      else for (; --i >= 0; )
                        for (; T(r, 1), !t(r); )
                          ;
                  });
                }, A && (u.count = function(t, r) {
                  return b.setTime(+t), P.setTime(+r), s(b), s(P), Math.floor(A(b, P));
                }, u.every = function(t) {
                  return t = Math.floor(t), !isFinite(t) || !(t > 0) ? null : t > 1 ? u.filter(p ? function(r) {
                    return p(r) % t === 0;
                  } : function(r) {
                    return u.count(0, r) % t === 0;
                  }) : u;
                }), u;
              }
            }
          ),
          /***/
          72543: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                o: function() {
                  return (
                    /* binding */
                    s
                  );
                }
                /* harmony export */
              });
              var b = e(53398), P = e(66291), n = (0, b.A)(function(T) {
                T.setUTCHours(0, 0, 0, 0);
              }, function(T, A) {
                T.setUTCDate(T.getUTCDate() + A);
              }, function(T, A) {
                return (A - T) / P.Nm;
              }, function(T) {
                return T.getUTCDate() - 1;
              });
              K.A = n;
              var s = n.range;
            }
          ),
          /***/
          1681: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                G6: function() {
                  return (
                    /* binding */
                    o
                  );
                },
                /* harmony export */
                Hl: function() {
                  return (
                    /* binding */
                    s
                  );
                },
                /* harmony export */
                ON: function() {
                  return (
                    /* binding */
                    a
                  );
                },
                /* harmony export */
                Xo: function() {
                  return (
                    /* binding */
                    x
                  );
                },
                /* harmony export */
                Zn: function() {
                  return (
                    /* binding */
                    g
                  );
                },
                /* harmony export */
                a1: function() {
                  return (
                    /* binding */
                    t
                  );
                },
                /* harmony export */
                aZ: function() {
                  return (
                    /* binding */
                    i
                  );
                },
                /* harmony export */
                c8: function() {
                  return (
                    /* binding */
                    r
                  );
                },
                /* harmony export */
                jN: function() {
                  return (
                    /* binding */
                    l
                  );
                },
                /* harmony export */
                pT: function() {
                  return (
                    /* binding */
                    u
                  );
                },
                /* harmony export */
                rt: function() {
                  return (
                    /* binding */
                    T
                  );
                },
                /* harmony export */
                sr: function() {
                  return (
                    /* binding */
                    A
                  );
                },
                /* harmony export */
                wr: function() {
                  return (
                    /* binding */
                    y
                  );
                },
                /* harmony export */
                z2: function() {
                  return (
                    /* binding */
                    p
                  );
                }
                /* harmony export */
              });
              var b = e(53398), P = e(66291);
              function n(c) {
                return (0, b.A)(function(v) {
                  v.setUTCDate(v.getUTCDate() - (v.getUTCDay() + 7 - c) % 7), v.setUTCHours(0, 0, 0, 0);
                }, function(v, f) {
                  v.setUTCDate(v.getUTCDate() + f * 7);
                }, function(v, f) {
                  return (f - v) / P.Fq;
                });
              }
              var s = n(0), T = n(1), A = n(2), p = n(3), u = n(4), t = n(5), r = n(6), i = s.range, a = T.range, l = A.range, o = p.range, y = u.range, g = t.range, x = r.range;
            }
          ),
          /***/
          59764: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                j: function() {
                  return (
                    /* binding */
                    n
                  );
                }
                /* harmony export */
              });
              var b = e(53398), P = (0, b.A)(function(s) {
                s.setUTCMonth(0, 1), s.setUTCHours(0, 0, 0, 0);
              }, function(s, T) {
                s.setUTCFullYear(s.getUTCFullYear() + T);
              }, function(s, T) {
                return T.getUTCFullYear() - s.getUTCFullYear();
              }, function(s) {
                return s.getUTCFullYear();
              });
              P.every = function(s) {
                return !isFinite(s = Math.floor(s)) || !(s > 0) ? null : (0, b.A)(function(T) {
                  T.setUTCFullYear(Math.floor(T.getUTCFullYear() / s) * s), T.setUTCMonth(0, 1), T.setUTCHours(0, 0, 0, 0);
                }, function(T, A) {
                  T.setUTCFullYear(T.getUTCFullYear() + A * s);
                });
              }, K.A = P;
              var n = P.range;
            }
          ),
          /***/
          55735: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                By: function() {
                  return (
                    /* binding */
                    T
                  );
                },
                /* harmony export */
                KP: function() {
                  return (
                    /* binding */
                    a
                  );
                },
                /* harmony export */
                Q$: function() {
                  return (
                    /* binding */
                    y
                  );
                },
                /* harmony export */
                Sh: function() {
                  return (
                    /* binding */
                    t
                  );
                },
                /* harmony export */
                dt: function() {
                  return (
                    /* binding */
                    u
                  );
                },
                /* harmony export */
                eQ: function() {
                  return (
                    /* binding */
                    A
                  );
                },
                /* harmony export */
                fz: function() {
                  return (
                    /* binding */
                    s
                  );
                },
                /* harmony export */
                gf: function() {
                  return (
                    /* binding */
                    o
                  );
                },
                /* harmony export */
                kS: function() {
                  return (
                    /* binding */
                    r
                  );
                },
                /* harmony export */
                l3: function() {
                  return (
                    /* binding */
                    p
                  );
                },
                /* harmony export */
                se: function() {
                  return (
                    /* binding */
                    i
                  );
                },
                /* harmony export */
                t$: function() {
                  return (
                    /* binding */
                    x
                  );
                },
                /* harmony export */
                tz: function() {
                  return (
                    /* binding */
                    g
                  );
                },
                /* harmony export */
                yW: function() {
                  return (
                    /* binding */
                    l
                  );
                }
                /* harmony export */
              });
              var b = e(53398), P = e(66291);
              function n(c) {
                return (0, b.A)(function(v) {
                  v.setDate(v.getDate() - (v.getDay() + 7 - c) % 7), v.setHours(0, 0, 0, 0);
                }, function(v, f) {
                  v.setDate(v.getDate() + f * 7);
                }, function(v, f) {
                  return (f - v - (f.getTimezoneOffset() - v.getTimezoneOffset()) * P.rR) / P.Fq;
                });
              }
              var s = n(0), T = n(1), A = n(2), p = n(3), u = n(4), t = n(5), r = n(6), i = s.range, a = T.range, l = A.range, o = p.range, y = u.range, g = t.range, x = r.range;
            }
          ),
          /***/
          9830: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                /* harmony export */
                V: function() {
                  return (
                    /* binding */
                    n
                  );
                }
                /* harmony export */
              });
              var b = e(53398), P = (0, b.A)(function(s) {
                s.setMonth(0, 1), s.setHours(0, 0, 0, 0);
              }, function(s, T) {
                s.setFullYear(s.getFullYear() + T);
              }, function(s, T) {
                return T.getFullYear() - s.getFullYear();
              }, function(s) {
                return s.getFullYear();
              });
              P.every = function(s) {
                return !isFinite(s = Math.floor(s)) || !(s > 0) ? null : (0, b.A)(function(T) {
                  T.setFullYear(Math.floor(T.getFullYear() / s) * s), T.setMonth(0, 1), T.setHours(0, 0, 0, 0);
                }, function(T, A) {
                  T.setFullYear(T.getFullYear() + A * s);
                });
              }, K.A = P;
              var n = P.range;
            }
          ),
          /***/
          70973: (
            /***/
            function(Y, K, e) {
              var b = e(40891), P = e(98800), n = e(48631), s = e(52991);
              Y.exports = function(A, p, u) {
                if (!A || typeof A != "object" && typeof A != "function")
                  throw new n("`obj` must be an object or a function`");
                if (typeof p != "string" && typeof p != "symbol")
                  throw new n("`property` must be a string or a symbol`");
                if (arguments.length > 3 && typeof arguments[3] != "boolean" && arguments[3] !== null)
                  throw new n("`nonEnumerable`, if provided, must be a boolean or null");
                if (arguments.length > 4 && typeof arguments[4] != "boolean" && arguments[4] !== null)
                  throw new n("`nonWritable`, if provided, must be a boolean or null");
                if (arguments.length > 5 && typeof arguments[5] != "boolean" && arguments[5] !== null)
                  throw new n("`nonConfigurable`, if provided, must be a boolean or null");
                if (arguments.length > 6 && typeof arguments[6] != "boolean")
                  throw new n("`loose`, if provided, must be a boolean");
                var t = arguments.length > 3 ? arguments[3] : null, r = arguments.length > 4 ? arguments[4] : null, i = arguments.length > 5 ? arguments[5] : null, a = arguments.length > 6 ? arguments[6] : !1, l = !!s && s(A, p);
                if (b)
                  b(A, p, {
                    configurable: i === null && l ? l.configurable : !i,
                    enumerable: t === null && l ? l.enumerable : !t,
                    value: u,
                    writable: r === null && l ? l.writable : !r
                  });
                else if (a || !t && !r && !i)
                  A[p] = u;
                else
                  throw new P("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");
              };
            }
          ),
          /***/
          97936: (
            /***/
            function(Y, K, e) {
              var b = e(99433), P = typeof Symbol == "function" && typeof Symbol("foo") == "symbol", n = Object.prototype.toString, s = Array.prototype.concat, T = Object.defineProperty, A = function(i) {
                return typeof i == "function" && n.call(i) === "[object Function]";
              }, p = e(74268)(), u = T && p, t = function(i, a, l, o) {
                if (a in i) {
                  if (o === !0) {
                    if (i[a] === l)
                      return;
                  } else if (!A(o) || !o())
                    return;
                }
                u ? T(i, a, {
                  configurable: !0,
                  enumerable: !1,
                  value: l,
                  writable: !0
                }) : i[a] = l;
              }, r = function(i, a) {
                var l = arguments.length > 2 ? arguments[2] : {}, o = b(a);
                P && (o = s.call(o, Object.getOwnPropertySymbols(a)));
                for (var y = 0; y < o.length; y += 1)
                  t(i, o[y], a[o[y]], l[o[y]]);
              };
              r.supportsDescriptors = !!u, Y.exports = r;
            }
          ),
          /***/
          68650: (
            /***/
            function(Y) {
              Y.exports = function() {
                for (var K = 0; K < arguments.length; K++)
                  if (arguments[K] !== void 0) return arguments[K];
              };
            }
          ),
          /***/
          44431: (
            /***/
            function(Y) {
              Y.exports = P;
              var K = P.canvas = document.createElement("canvas"), e = K.getContext("2d"), b = n([32, 126]);
              P.createPairs = n, P.ascii = b;
              function P(s, T) {
                Array.isArray(s) && (s = s.join(", "));
                var A = {}, p, u = 16, t = 0.05;
                T && (T.length === 2 && typeof T[0] == "number" ? p = n(T) : Array.isArray(T) ? p = T : (T.o ? p = n(T.o) : T.pairs && (p = T.pairs), T.fontSize && (u = T.fontSize), T.threshold != null && (t = T.threshold))), p || (p = b), e.font = u + "px " + s;
                for (var r = 0; r < p.length; r++) {
                  var i = p[r], a = e.measureText(i[0]).width + e.measureText(i[1]).width, l = e.measureText(i).width;
                  if (Math.abs(a - l) > u * t) {
                    var o = (l - a) / u;
                    A[i] = o * 1e3;
                  }
                }
                return A;
              }
              function n(s) {
                for (var T = [], A = s[0]; A <= s[1]; A++)
                  for (var p = String.fromCharCode(A), u = s[0]; u < s[1]; u++) {
                    var t = String.fromCharCode(u), r = p + t;
                    T.push(r);
                  }
                return T;
              }
            }
          ),
          /***/
          95620: (
            /***/
            function(Y, K, e) {
              var b = e(16844), P = e(60265), n = {
                M: "moveTo",
                C: "bezierCurveTo"
              };
              Y.exports = function(s, T) {
                s.beginPath(), P(b(T)).forEach(
                  function(A) {
                    var p = A[0], u = A.slice(1);
                    s[n[p]].apply(s, u);
                  }
                ), s.closePath();
              };
            }
          ),
          /***/
          10275: (
            /***/
            function(Y) {
              Y.exports = function(K) {
                switch (K) {
                  case "int8":
                    return Int8Array;
                  case "int16":
                    return Int16Array;
                  case "int32":
                    return Int32Array;
                  case "uint8":
                    return Uint8Array;
                  case "uint16":
                    return Uint16Array;
                  case "uint32":
                    return Uint32Array;
                  case "float32":
                    return Float32Array;
                  case "float64":
                    return Float64Array;
                  case "array":
                    return Array;
                  case "uint8_clamped":
                    return Uint8ClampedArray;
                }
              };
            }
          ),
          /***/
          49523: (
            /***/
            function(Y) {
              function K(P, n, s) {
                var T = P[s] | 0;
                if (T <= 0)
                  return [];
                var A = new Array(T), p;
                if (s === P.length - 1)
                  for (p = 0; p < T; ++p)
                    A[p] = n;
                else
                  for (p = 0; p < T; ++p)
                    A[p] = K(P, n, s + 1);
                return A;
              }
              function e(P, n) {
                var s, T;
                for (s = new Array(P), T = 0; T < P; ++T)
                  s[T] = n;
                return s;
              }
              function b(P, n) {
                switch (typeof n > "u" && (n = 0), typeof P) {
                  case "number":
                    if (P > 0)
                      return e(P | 0, n);
                    break;
                  case "object":
                    if (typeof P.length == "number")
                      return K(P, n, 0);
                    break;
                }
                return [];
              }
              Y.exports = b;
            }
          ),
          /***/
          25782: (
            /***/
            function(Y) {
              Y.exports = K, Y.exports.default = K;
              function K(z, O, B) {
                B = B || 2;
                var V = O && O.length, U = V ? O[0] * B : z.length, H = e(z, 0, U, B, !0), F = [];
                if (!H || H.next === H.prev) return F;
                var G, q, rt, st, vt, ht, et;
                if (V && (H = p(z, O, H, B)), z.length > 80 * B) {
                  G = rt = z[0], q = st = z[1];
                  for (var Q = B; Q < U; Q += B)
                    vt = z[Q], ht = z[Q + 1], vt < G && (G = vt), ht < q && (q = ht), vt > rt && (rt = vt), ht > st && (st = ht);
                  et = Math.max(rt - G, st - q), et = et !== 0 ? 32767 / et : 0;
                }
                return P(H, F, B, G, q, et, 0), F;
              }
              function e(z, O, B, V, U) {
                var H, F;
                if (U === w(z, O, B, V) > 0)
                  for (H = O; H < B; H += V) F = d(H, z[H], z[H + 1], F);
                else
                  for (H = B - V; H >= O; H -= V) F = d(H, z[H], z[H + 1], F);
                return F && v(F, F.next) && (h(F), F = F.next), F;
              }
              function b(z, O) {
                if (!z) return z;
                O || (O = z);
                var B = z, V;
                do
                  if (V = !1, !B.steiner && (v(B, B.next) || c(B.prev, B, B.next) === 0)) {
                    if (h(B), B = O = B.prev, B === B.next) break;
                    V = !0;
                  } else
                    B = B.next;
                while (V || B !== O);
                return O;
              }
              function P(z, O, B, V, U, H, F) {
                if (z) {
                  !F && H && a(z, V, U, H);
                  for (var G = z, q, rt; z.prev !== z.next; ) {
                    if (q = z.prev, rt = z.next, H ? s(z, V, U, H) : n(z)) {
                      O.push(q.i / B | 0), O.push(z.i / B | 0), O.push(rt.i / B | 0), h(z), z = rt.next, G = rt.next;
                      continue;
                    }
                    if (z = rt, z === G) {
                      F ? F === 1 ? (z = T(b(z), O, B), P(z, O, B, V, U, H, 2)) : F === 2 && A(z, O, B, V, U, H) : P(b(z), O, B, V, U, H, 1);
                      break;
                    }
                  }
                }
              }
              function n(z) {
                var O = z.prev, B = z, V = z.next;
                if (c(O, B, V) >= 0) return !1;
                for (var U = O.x, H = B.x, F = V.x, G = O.y, q = B.y, rt = V.y, st = U < H ? U < F ? U : F : H < F ? H : F, vt = G < q ? G < rt ? G : rt : q < rt ? q : rt, ht = U > H ? U > F ? U : F : H > F ? H : F, et = G > q ? G > rt ? G : rt : q > rt ? q : rt, Q = V.next; Q !== O; ) {
                  if (Q.x >= st && Q.x <= ht && Q.y >= vt && Q.y <= et && g(U, G, H, q, F, rt, Q.x, Q.y) && c(Q.prev, Q, Q.next) >= 0) return !1;
                  Q = Q.next;
                }
                return !0;
              }
              function s(z, O, B, V) {
                var U = z.prev, H = z, F = z.next;
                if (c(U, H, F) >= 0) return !1;
                for (var G = U.x, q = H.x, rt = F.x, st = U.y, vt = H.y, ht = F.y, et = G < q ? G < rt ? G : rt : q < rt ? q : rt, Q = st < vt ? st < ht ? st : ht : vt < ht ? vt : ht, j = G > q ? G > rt ? G : rt : q > rt ? q : rt, at = st > vt ? st > ht ? st : ht : vt > ht ? vt : ht, ut = o(et, Q, O, B, V), nt = o(j, at, O, B, V), X = z.prevZ, ct = z.nextZ; X && X.z >= ut && ct && ct.z <= nt; ) {
                  if (X.x >= et && X.x <= j && X.y >= Q && X.y <= at && X !== U && X !== F && g(G, st, q, vt, rt, ht, X.x, X.y) && c(X.prev, X, X.next) >= 0 || (X = X.prevZ, ct.x >= et && ct.x <= j && ct.y >= Q && ct.y <= at && ct !== U && ct !== F && g(G, st, q, vt, rt, ht, ct.x, ct.y) && c(ct.prev, ct, ct.next) >= 0)) return !1;
                  ct = ct.nextZ;
                }
                for (; X && X.z >= ut; ) {
                  if (X.x >= et && X.x <= j && X.y >= Q && X.y <= at && X !== U && X !== F && g(G, st, q, vt, rt, ht, X.x, X.y) && c(X.prev, X, X.next) >= 0) return !1;
                  X = X.prevZ;
                }
                for (; ct && ct.z <= nt; ) {
                  if (ct.x >= et && ct.x <= j && ct.y >= Q && ct.y <= at && ct !== U && ct !== F && g(G, st, q, vt, rt, ht, ct.x, ct.y) && c(ct.prev, ct, ct.next) >= 0) return !1;
                  ct = ct.nextZ;
                }
                return !0;
              }
              function T(z, O, B) {
                var V = z;
                do {
                  var U = V.prev, H = V.next.next;
                  !v(U, H) && f(U, V, V.next, H) && C(U, H) && C(H, U) && (O.push(U.i / B | 0), O.push(V.i / B | 0), O.push(H.i / B | 0), h(V), h(V.next), V = z = H), V = V.next;
                } while (V !== z);
                return b(V);
              }
              function A(z, O, B, V, U, H) {
                var F = z;
                do {
                  for (var G = F.next.next; G !== F.prev; ) {
                    if (F.i !== G.i && x(F, G)) {
                      var q = L(F, G);
                      F = b(F, F.next), q = b(q, q.next), P(F, O, B, V, U, H, 0), P(q, O, B, V, U, H, 0);
                      return;
                    }
                    G = G.next;
                  }
                  F = F.next;
                } while (F !== z);
              }
              function p(z, O, B, V) {
                var U = [], H, F, G, q, rt;
                for (H = 0, F = O.length; H < F; H++)
                  G = O[H] * V, q = H < F - 1 ? O[H + 1] * V : z.length, rt = e(z, G, q, V, !1), rt === rt.next && (rt.steiner = !0), U.push(y(rt));
                for (U.sort(u), H = 0; H < U.length; H++)
                  B = t(U[H], B);
                return B;
              }
              function u(z, O) {
                return z.x - O.x;
              }
              function t(z, O) {
                var B = r(z, O);
                if (!B)
                  return O;
                var V = L(B, z);
                return b(V, V.next), b(B, B.next);
              }
              function r(z, O) {
                var B = O, V = z.x, U = z.y, H = -1 / 0, F;
                do {
                  if (U <= B.y && U >= B.next.y && B.next.y !== B.y) {
                    var G = B.x + (U - B.y) * (B.next.x - B.x) / (B.next.y - B.y);
                    if (G <= V && G > H && (H = G, F = B.x < B.next.x ? B : B.next, G === V))
                      return F;
                  }
                  B = B.next;
                } while (B !== O);
                if (!F) return null;
                var q = F, rt = F.x, st = F.y, vt = 1 / 0, ht;
                B = F;
                do
                  V >= B.x && B.x >= rt && V !== B.x && g(U < st ? V : H, U, rt, st, U < st ? H : V, U, B.x, B.y) && (ht = Math.abs(U - B.y) / (V - B.x), C(B, z) && (ht < vt || ht === vt && (B.x > F.x || B.x === F.x && i(F, B))) && (F = B, vt = ht)), B = B.next;
                while (B !== q);
                return F;
              }
              function i(z, O) {
                return c(z.prev, z, O.prev) < 0 && c(O.next, z, z.next) < 0;
              }
              function a(z, O, B, V) {
                var U = z;
                do
                  U.z === 0 && (U.z = o(U.x, U.y, O, B, V)), U.prevZ = U.prev, U.nextZ = U.next, U = U.next;
                while (U !== z);
                U.prevZ.nextZ = null, U.prevZ = null, l(U);
              }
              function l(z) {
                var O, B, V, U, H, F, G, q, rt = 1;
                do {
                  for (B = z, z = null, H = null, F = 0; B; ) {
                    for (F++, V = B, G = 0, O = 0; O < rt && (G++, V = V.nextZ, !!V); O++)
                      ;
                    for (q = rt; G > 0 || q > 0 && V; )
                      G !== 0 && (q === 0 || !V || B.z <= V.z) ? (U = B, B = B.nextZ, G--) : (U = V, V = V.nextZ, q--), H ? H.nextZ = U : z = U, U.prevZ = H, H = U;
                    B = V;
                  }
                  H.nextZ = null, rt *= 2;
                } while (F > 1);
                return z;
              }
              function o(z, O, B, V, U) {
                return z = (z - B) * U | 0, O = (O - V) * U | 0, z = (z | z << 8) & 16711935, z = (z | z << 4) & 252645135, z = (z | z << 2) & 858993459, z = (z | z << 1) & 1431655765, O = (O | O << 8) & 16711935, O = (O | O << 4) & 252645135, O = (O | O << 2) & 858993459, O = (O | O << 1) & 1431655765, z | O << 1;
              }
              function y(z) {
                var O = z, B = z;
                do
                  (O.x < B.x || O.x === B.x && O.y < B.y) && (B = O), O = O.next;
                while (O !== z);
                return B;
              }
              function g(z, O, B, V, U, H, F, G) {
                return (U - F) * (O - G) >= (z - F) * (H - G) && (z - F) * (V - G) >= (B - F) * (O - G) && (B - F) * (H - G) >= (U - F) * (V - G);
              }
              function x(z, O) {
                return z.next.i !== O.i && z.prev.i !== O.i && !M(z, O) && // dones't intersect other edges
                (C(z, O) && C(O, z) && m(z, O) && // locally visible
                (c(z.prev, z, O.prev) || c(z, O.prev, O)) || // does not create opposite-facing sectors
                v(z, O) && c(z.prev, z, z.next) > 0 && c(O.prev, O, O.next) > 0);
              }
              function c(z, O, B) {
                return (O.y - z.y) * (B.x - O.x) - (O.x - z.x) * (B.y - O.y);
              }
              function v(z, O) {
                return z.x === O.x && z.y === O.y;
              }
              function f(z, O, B, V) {
                var U = S(c(z, O, B)), H = S(c(z, O, V)), F = S(c(B, V, z)), G = S(c(B, V, O));
                return !!(U !== H && F !== G || U === 0 && _(z, B, O) || H === 0 && _(z, V, O) || F === 0 && _(B, z, V) || G === 0 && _(B, O, V));
              }
              function _(z, O, B) {
                return O.x <= Math.max(z.x, B.x) && O.x >= Math.min(z.x, B.x) && O.y <= Math.max(z.y, B.y) && O.y >= Math.min(z.y, B.y);
              }
              function S(z) {
                return z > 0 ? 1 : z < 0 ? -1 : 0;
              }
              function M(z, O) {
                var B = z;
                do {
                  if (B.i !== z.i && B.next.i !== z.i && B.i !== O.i && B.next.i !== O.i && f(B, B.next, z, O)) return !0;
                  B = B.next;
                } while (B !== z);
                return !1;
              }
              function C(z, O) {
                return c(z.prev, z, z.next) < 0 ? c(z, O, z.next) >= 0 && c(z, z.prev, O) >= 0 : c(z, O, z.prev) < 0 || c(z, z.next, O) < 0;
              }
              function m(z, O) {
                var B = z, V = !1, U = (z.x + O.x) / 2, H = (z.y + O.y) / 2;
                do
                  B.y > H != B.next.y > H && B.next.y !== B.y && U < (B.next.x - B.x) * (H - B.y) / (B.next.y - B.y) + B.x && (V = !V), B = B.next;
                while (B !== z);
                return V;
              }
              function L(z, O) {
                var B = new E(z.i, z.x, z.y), V = new E(O.i, O.x, O.y), U = z.next, H = O.prev;
                return z.next = O, O.prev = z, B.next = U, U.prev = B, V.next = B, B.prev = V, H.next = V, V.prev = H, V;
              }
              function d(z, O, B, V) {
                var U = new E(z, O, B);
                return V ? (U.next = V.next, U.prev = V, V.next.prev = U, V.next = U) : (U.prev = U, U.next = U), U;
              }
              function h(z) {
                z.next.prev = z.prev, z.prev.next = z.next, z.prevZ && (z.prevZ.nextZ = z.nextZ), z.nextZ && (z.nextZ.prevZ = z.prevZ);
              }
              function E(z, O, B) {
                this.i = z, this.x = O, this.y = B, this.prev = null, this.next = null, this.z = 0, this.prevZ = null, this.nextZ = null, this.steiner = !1;
              }
              K.deviation = function(z, O, B, V) {
                var U = O && O.length, H = U ? O[0] * B : z.length, F = Math.abs(w(z, 0, H, B));
                if (U)
                  for (var G = 0, q = O.length; G < q; G++) {
                    var rt = O[G] * B, st = G < q - 1 ? O[G + 1] * B : z.length;
                    F -= Math.abs(w(z, rt, st, B));
                  }
                var vt = 0;
                for (G = 0; G < V.length; G += 3) {
                  var ht = V[G] * B, et = V[G + 1] * B, Q = V[G + 2] * B;
                  vt += Math.abs(
                    (z[ht] - z[Q]) * (z[et + 1] - z[ht + 1]) - (z[ht] - z[et]) * (z[Q + 1] - z[ht + 1])
                  );
                }
                return F === 0 && vt === 0 ? 0 : Math.abs((vt - F) / F);
              };
              function w(z, O, B, V) {
                for (var U = 0, H = O, F = B - V; H < B; H += V)
                  U += (z[F] - z[H]) * (z[H + 1] + z[F + 1]), F = H;
                return U;
              }
              K.flatten = function(z) {
                for (var O = z[0][0].length, B = { vertices: [], holes: [], dimensions: O }, V = 0, U = 0; U < z.length; U++) {
                  for (var H = 0; H < z[U].length; H++)
                    for (var F = 0; F < O; F++) B.vertices.push(z[U][H][F]);
                  U > 0 && (V += z[U - 1].length, B.holes.push(V));
                }
                return B;
              };
            }
          ),
          /***/
          96143: (
            /***/
            function(Y, K, e) {
              var b = e(26381);
              Y.exports = function(n, s) {
                var T = [], A = [], p = [], u = {}, t = [], r;
                function i(_) {
                  p[_] = !1, u.hasOwnProperty(_) && Object.keys(u[_]).forEach(function(S) {
                    delete u[_][S], p[S] && i(S);
                  });
                }
                function a(_) {
                  var S = !1;
                  A.push(_), p[_] = !0;
                  var M, C;
                  for (M = 0; M < t[_].length; M++)
                    C = t[_][M], C === r ? (l(r, A), S = !0) : p[C] || (S = a(C));
                  if (S)
                    i(_);
                  else
                    for (M = 0; M < t[_].length; M++) {
                      C = t[_][M];
                      var m = u[C];
                      m || (m = {}, u[C] = m), m[C] = !0;
                    }
                  return A.pop(), S;
                }
                function l(_, S) {
                  var M = [].concat(S).concat(_);
                  s ? s(a) : T.push(M);
                }
                function o(_) {
                  for (var S = 0; S < n.length; S++)
                    S < _ && (n[S] = []), n[S] = n[S].filter(function(M) {
                      return M >= _;
                    });
                }
                function y(_) {
                  o(_);
                  for (var S = n, M = b(S), C = M.components.filter(function(z) {
                    return z.length > 1;
                  }), m = 1 / 0, L, d = 0; d < C.length; d++)
                    for (var h = 0; h < C[d].length; h++)
                      C[d][h] < m && (m = C[d][h], L = d);
                  var E = C[L];
                  if (!E) return !1;
                  var w = n.map(function(z, O) {
                    return E.indexOf(O) === -1 ? [] : z.filter(function(B) {
                      return E.indexOf(B) !== -1;
                    });
                  });
                  return {
                    leastVertex: m,
                    adjList: w
                  };
                }
                r = 0;
                for (var g = n.length; r < g; ) {
                  var x = y(r);
                  if (r = x.leastVertex, t = x.adjList, t) {
                    for (var c = 0; c < t.length; c++)
                      for (var v = 0; v < t[c].length; v++) {
                        var f = t[c][v];
                        p[+f] = !1, u[f] = {};
                      }
                    a(r), r = r + 1;
                  } else
                    r = g;
                }
                if (!s)
                  return T;
              };
            }
          ),
          /***/
          40891: (
            /***/
            function(Y, K, e) {
              var b = e(71129), P = b("%Object.defineProperty%", !0) || !1;
              if (P)
                try {
                  P({}, "a", { value: 1 });
                } catch {
                  P = !1;
                }
              Y.exports = P;
            }
          ),
          /***/
          35465: (
            /***/
            function(Y) {
              Y.exports = EvalError;
            }
          ),
          /***/
          77731: (
            /***/
            function(Y) {
              Y.exports = Error;
            }
          ),
          /***/
          30582: (
            /***/
            function(Y) {
              Y.exports = RangeError;
            }
          ),
          /***/
          50294: (
            /***/
            function(Y) {
              Y.exports = ReferenceError;
            }
          ),
          /***/
          98800: (
            /***/
            function(Y) {
              Y.exports = SyntaxError;
            }
          ),
          /***/
          48631: (
            /***/
            function(Y) {
              Y.exports = TypeError;
            }
          ),
          /***/
          33149: (
            /***/
            function(Y) {
              Y.exports = URIError;
            }
          ),
          /***/
          91445: (
            /***/
            function(Y, K, e) {
              var b = e(69746);
              Y.exports = function() {
                return b(this).length = 0, this;
              };
            }
          ),
          /***/
          82377: (
            /***/
            function(Y, K, e) {
              Y.exports = e(57712)() ? Array.from : e(33468);
            }
          ),
          /***/
          57712: (
            /***/
            function(Y) {
              Y.exports = function() {
                var K = Array.from, e, b;
                return typeof K != "function" ? !1 : (e = ["raz", "dwa"], b = K(e), !!(b && b !== e && b[1] === "dwa"));
              };
            }
          ),
          /***/
          33468: (
            /***/
            function(Y, K, e) {
              var b = e(63008).iterator, P = e(82262), n = e(59356), s = e(54653), T = e(52359), A = e(69746), p = e(1974), u = e(48488), t = Array.isArray, r = Function.prototype.call, i = { configurable: !0, enumerable: !0, writable: !0, value: null }, a = Object.defineProperty;
              Y.exports = function(l) {
                var o = arguments[1], y = arguments[2], g, x, c, v, f, _, S, M, C, m;
                if (l = Object(A(l)), p(o) && T(o), !this || this === Array || !n(this)) {
                  if (!o) {
                    if (P(l))
                      return f = l.length, f !== 1 ? Array.apply(null, l) : (v = new Array(1), v[0] = l[0], v);
                    if (t(l)) {
                      for (v = new Array(f = l.length), x = 0; x < f; ++x) v[x] = l[x];
                      return v;
                    }
                  }
                  v = [];
                } else
                  g = this;
                if (!t(l)) {
                  if ((C = l[b]) !== void 0) {
                    for (S = T(C).call(l), g && (v = new g()), M = S.next(), x = 0; !M.done; )
                      m = o ? r.call(o, y, M.value, x) : M.value, g ? (i.value = m, a(v, x, i)) : v[x] = m, M = S.next(), ++x;
                    f = x;
                  } else if (u(l)) {
                    for (f = l.length, g && (v = new g()), x = 0, c = 0; x < f; ++x)
                      m = l[x], x + 1 < f && (_ = m.charCodeAt(0), _ >= 55296 && _ <= 56319 && (m += l[++x])), m = o ? r.call(o, y, m, c) : m, g ? (i.value = m, a(v, c, i)) : v[c] = m, ++c;
                    f = c;
                  }
                }
                if (f === void 0)
                  for (f = s(l.length), g && (v = new g(f)), x = 0; x < f; ++x)
                    m = o ? r.call(o, y, l[x], x) : l[x], g ? (i.value = m, a(v, x, i)) : v[x] = m;
                return g && (i.value = null, v.length = f), v;
              };
            }
          ),
          /***/
          82262: (
            /***/
            function(Y) {
              var K = Object.prototype.toString, e = K.call(/* @__PURE__ */ function() {
                return arguments;
              }());
              Y.exports = function(b) {
                return K.call(b) === e;
              };
            }
          ),
          /***/
          59356: (
            /***/
            function(Y) {
              var K = Object.prototype.toString, e = RegExp.prototype.test.bind(/^[object [A-Za-z0-9]*Function]$/);
              Y.exports = function(b) {
                return typeof b == "function" && e(K.call(b));
              };
            }
          ),
          /***/
          62039: (
            /***/
            function(Y) {
              Y.exports = function() {
              };
            }
          ),
          /***/
          53579: (
            /***/
            function(Y, K, e) {
              Y.exports = e(67394)() ? Math.sign : e(37122);
            }
          ),
          /***/
          67394: (
            /***/
            function(Y) {
              Y.exports = function() {
                var K = Math.sign;
                return typeof K != "function" ? !1 : K(10) === 1 && K(-20) === -1;
              };
            }
          ),
          /***/
          37122: (
            /***/
            function(Y) {
              Y.exports = function(K) {
                return K = Number(K), isNaN(K) || K === 0 ? K : K > 0 ? 1 : -1;
              };
            }
          ),
          /***/
          10226: (
            /***/
            function(Y, K, e) {
              var b = e(53579), P = Math.abs, n = Math.floor;
              Y.exports = function(s) {
                return isNaN(s) ? 0 : (s = Number(s), s === 0 || !isFinite(s) ? s : b(s) * n(P(s)));
              };
            }
          ),
          /***/
          54653: (
            /***/
            function(Y, K, e) {
              var b = e(10226), P = Math.max;
              Y.exports = function(n) {
                return P(0, b(n));
              };
            }
          ),
          /***/
          39395: (
            /***/
            function(Y, K, e) {
              var b = e(52359), P = e(69746), n = Function.prototype.bind, s = Function.prototype.call, T = Object.keys, A = Object.prototype.propertyIsEnumerable;
              Y.exports = function(p, u) {
                return function(t, r) {
                  var i, a = arguments[2], l = arguments[3];
                  return t = Object(P(t)), b(r), i = T(t), l && i.sort(typeof l == "function" ? n.call(l, t) : void 0), typeof p != "function" && (p = i[p]), s.call(p, i, function(o, y) {
                    return A.call(t, o) ? s.call(r, a, t[o], o, t, y) : u;
                  });
                };
              };
            }
          ),
          /***/
          1920: (
            /***/
            function(Y, K, e) {
              Y.exports = e(41271)() ? Object.assign : e(26399);
            }
          ),
          /***/
          41271: (
            /***/
            function(Y) {
              Y.exports = function() {
                var K = Object.assign, e;
                return typeof K != "function" ? !1 : (e = { foo: "raz" }, K(e, { bar: "dwa" }, { trzy: "trzy" }), e.foo + e.bar + e.trzy === "razdwatrzy");
              };
            }
          ),
          /***/
          26399: (
            /***/
            function(Y, K, e) {
              var b = e(36353), P = e(69746), n = Math.max;
              Y.exports = function(s, T) {
                var A, p, u = n(arguments.length, 2), t;
                for (s = Object(P(s)), t = function(r) {
                  try {
                    s[r] = T[r];
                  } catch (i) {
                    A || (A = i);
                  }
                }, p = 1; p < u; ++p)
                  T = arguments[p], b(T).forEach(t);
                if (A !== void 0) throw A;
                return s;
              };
            }
          ),
          /***/
          86591: (
            /***/
            function(Y, K, e) {
              var b = e(82377), P = e(1920), n = e(69746);
              Y.exports = function(s) {
                var T = Object(n(s)), A = arguments[1], p = Object(arguments[2]);
                if (T !== s && !A) return T;
                var u = {};
                return A ? b(A, function(t) {
                  (p.ensure || t in s) && (u[t] = s[t]);
                }) : P(u, s), u;
              };
            }
          ),
          /***/
          57842: (
            /***/
            function(Y, K, e) {
              var b = Object.create, P;
              e(90361)() || (P = e(45765)), Y.exports = function() {
                var n, s, T;
                return !P || P.level !== 1 ? b : (n = {}, s = {}, T = { configurable: !1, enumerable: !1, writable: !0, value: void 0 }, Object.getOwnPropertyNames(Object.prototype).forEach(function(A) {
                  if (A === "__proto__") {
                    s[A] = {
                      configurable: !0,
                      enumerable: !1,
                      writable: !0,
                      value: void 0
                    };
                    return;
                  }
                  s[A] = T;
                }), Object.defineProperties(n, s), Object.defineProperty(P, "nullPolyfill", {
                  configurable: !1,
                  enumerable: !1,
                  writable: !1,
                  value: n
                }), function(A, p) {
                  return b(A === null ? n : A, p);
                });
              }();
            }
          ),
          /***/
          82813: (
            /***/
            function(Y, K, e) {
              Y.exports = e(39395)("forEach");
            }
          ),
          /***/
          76064: (
            /***/
            function(Y, K, e) {
              var b = e(1974), P = { function: !0, object: !0 };
              Y.exports = function(n) {
                return b(n) && P[typeof n] || !1;
              };
            }
          ),
          /***/
          1974: (
            /***/
            function(Y, K, e) {
              var b = e(62039)();
              Y.exports = function(P) {
                return P !== b && P !== null;
              };
            }
          ),
          /***/
          36353: (
            /***/
            function(Y, K, e) {
              Y.exports = e(83800)() ? Object.keys : e(67044);
            }
          ),
          /***/
          83800: (
            /***/
            function(Y) {
              Y.exports = function() {
                try {
                  return Object.keys("primitive"), !0;
                } catch {
                  return !1;
                }
              };
            }
          ),
          /***/
          67044: (
            /***/
            function(Y, K, e) {
              var b = e(1974), P = Object.keys;
              Y.exports = function(n) {
                return P(b(n) ? Object(n) : n);
              };
            }
          ),
          /***/
          29854: (
            /***/
            function(Y, K, e) {
              var b = e(52359), P = e(82813), n = Function.prototype.call;
              Y.exports = function(s, T) {
                var A = {}, p = arguments[2];
                return b(T), P(s, function(u, t, r, i) {
                  A[t] = n.call(T, p, u, t, r, i);
                }), A;
              };
            }
          ),
          /***/
          76504: (
            /***/
            function(Y, K, e) {
              var b = e(1974), P = Array.prototype.forEach, n = Object.create, s = function(T, A) {
                var p;
                for (p in T) A[p] = T[p];
              };
              Y.exports = function(T) {
                var A = n(null);
                return P.call(arguments, function(p) {
                  b(p) && s(Object(p), A);
                }), A;
              };
            }
          ),
          /***/
          22834: (
            /***/
            function(Y, K, e) {
              Y.exports = e(90361)() ? Object.setPrototypeOf : e(45765);
            }
          ),
          /***/
          90361: (
            /***/
            function(Y) {
              var K = Object.create, e = Object.getPrototypeOf, b = {};
              Y.exports = function() {
                var P = Object.setPrototypeOf, n = arguments[0] || K;
                return typeof P != "function" ? !1 : e(P(n(null), b)) === b;
              };
            }
          ),
          /***/
          45765: (
            /***/
            function(Y, K, e) {
              var b = e(76064), P = e(69746), n = Object.prototype.isPrototypeOf, s = Object.defineProperty, T = { configurable: !0, enumerable: !1, writable: !0, value: void 0 }, A;
              A = function(p, u) {
                if (P(p), u === null || b(u)) return p;
                throw new TypeError("Prototype must be null or an object");
              }, Y.exports = function(p) {
                var u, t;
                return p ? (p.level === 2 ? p.set ? (t = p.set, u = function(r, i) {
                  return t.call(A(r, i), i), r;
                }) : u = function(r, i) {
                  return A(r, i).__proto__ = i, r;
                } : u = function r(i, a) {
                  var l;
                  return A(i, a), l = n.call(r.nullPolyfill, i), l && delete r.nullPolyfill.__proto__, a === null && (a = r.nullPolyfill), i.__proto__ = a, l && s(r.nullPolyfill, "__proto__", T), i;
                }, Object.defineProperty(u, "level", {
                  configurable: !1,
                  enumerable: !1,
                  writable: !1,
                  value: p.level
                })) : null;
              }(
                function() {
                  var p = /* @__PURE__ */ Object.create(null), u = {}, t, r = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__");
                  if (r) {
                    try {
                      t = r.set, t.call(p, u);
                    } catch {
                    }
                    if (Object.getPrototypeOf(p) === u) return { set: t, level: 2 };
                  }
                  return p.__proto__ = u, Object.getPrototypeOf(p) === u ? { level: 2 } : (p = {}, p.__proto__ = u, Object.getPrototypeOf(p) === u ? { level: 1 } : !1);
                }()
              ), e(57842);
            }
          ),
          /***/
          52359: (
            /***/
            function(Y) {
              Y.exports = function(K) {
                if (typeof K != "function") throw new TypeError(K + " is not a function");
                return K;
              };
            }
          ),
          /***/
          11004: (
            /***/
            function(Y, K, e) {
              var b = e(76064);
              Y.exports = function(P) {
                if (!b(P)) throw new TypeError(P + " is not an Object");
                return P;
              };
            }
          ),
          /***/
          69746: (
            /***/
            function(Y, K, e) {
              var b = e(1974);
              Y.exports = function(P) {
                if (!b(P)) throw new TypeError("Cannot use null or undefined");
                return P;
              };
            }
          ),
          /***/
          2338: (
            /***/
            function(Y, K, e) {
              Y.exports = e(65961)() ? String.prototype.contains : e(9461);
            }
          ),
          /***/
          65961: (
            /***/
            function(Y) {
              var K = "razdwatrzy";
              Y.exports = function() {
                return typeof K.contains != "function" ? !1 : K.contains("dwa") === !0 && K.contains("foo") === !1;
              };
            }
          ),
          /***/
          9461: (
            /***/
            function(Y) {
              var K = String.prototype.indexOf;
              Y.exports = function(e) {
                return K.call(this, e, arguments[1]) > -1;
              };
            }
          ),
          /***/
          48488: (
            /***/
            function(Y) {
              var K = Object.prototype.toString, e = K.call("");
              Y.exports = function(b) {
                return typeof b == "string" || b && typeof b == "object" && (b instanceof String || K.call(b) === e) || !1;
              };
            }
          ),
          /***/
          43497: (
            /***/
            function(Y) {
              var K = /* @__PURE__ */ Object.create(null), e = Math.random;
              Y.exports = function() {
                var b;
                do
                  b = e().toString(36).slice(2);
                while (K[b]);
                return b;
              };
            }
          ),
          /***/
          71343: (
            /***/
            function(Y, K, e) {
              var b = e(22834), P = e(2338), n = e(91819), s = e(63008), T = e(85490), A = Object.defineProperty, p;
              p = Y.exports = function(u, t) {
                if (!(this instanceof p)) throw new TypeError("Constructor requires 'new'");
                T.call(this, u), t ? P.call(t, "key+value") ? t = "key+value" : P.call(t, "key") ? t = "key" : t = "value" : t = "value", A(this, "__kind__", n("", t));
              }, b && b(p, T), delete p.prototype.constructor, p.prototype = Object.create(T.prototype, {
                _resolve: n(function(u) {
                  return this.__kind__ === "value" ? this.__list__[u] : this.__kind__ === "key+value" ? [u, this.__list__[u]] : u;
                })
              }), A(p.prototype, s.toStringTag, n("c", "Array Iterator"));
            }
          ),
          /***/
          58755: (
            /***/
            function(Y, K, e) {
              var b = e(82262), P = e(52359), n = e(48488), s = e(34494), T = Array.isArray, A = Function.prototype.call, p = Array.prototype.some;
              Y.exports = function(u, t) {
                var r, i = arguments[2], a, l, o, y, g, x, c;
                if (T(u) || b(u) ? r = "array" : n(u) ? r = "string" : u = s(u), P(t), l = function() {
                  o = !0;
                }, r === "array") {
                  p.call(u, function(v) {
                    return A.call(t, i, v, l), o;
                  });
                  return;
                }
                if (r === "string") {
                  for (g = u.length, y = 0; y < g && (x = u[y], y + 1 < g && (c = x.charCodeAt(0), c >= 55296 && c <= 56319 && (x += u[++y])), A.call(t, i, x, l), !o); ++y)
                    ;
                  return;
                }
                for (a = u.next(); !a.done; ) {
                  if (A.call(t, i, a.value, l), o) return;
                  a = u.next();
                }
              };
            }
          ),
          /***/
          34494: (
            /***/
            function(Y, K, e) {
              var b = e(82262), P = e(48488), n = e(71343), s = e(23417), T = e(82831), A = e(63008).iterator;
              Y.exports = function(p) {
                return typeof T(p)[A] == "function" ? p[A]() : b(p) ? new n(p) : P(p) ? new s(p) : new n(p);
              };
            }
          ),
          /***/
          85490: (
            /***/
            function(Y, K, e) {
              var b = e(91445), P = e(1920), n = e(52359), s = e(69746), T = e(91819), A = e(84510), p = e(63008), u = Object.defineProperty, t = Object.defineProperties, r;
              Y.exports = r = function(i, a) {
                if (!(this instanceof r)) throw new TypeError("Constructor requires 'new'");
                t(this, {
                  __list__: T("w", s(i)),
                  __context__: T("w", a),
                  __nextIndex__: T("w", 0)
                }), a && (n(a.on), a.on("_add", this._onAdd), a.on("_delete", this._onDelete), a.on("_clear", this._onClear));
              }, delete r.prototype.constructor, t(
                r.prototype,
                P(
                  {
                    _next: T(function() {
                      var i;
                      if (this.__list__) {
                        if (this.__redo__ && (i = this.__redo__.shift(), i !== void 0))
                          return i;
                        if (this.__nextIndex__ < this.__list__.length) return this.__nextIndex__++;
                        this._unBind();
                      }
                    }),
                    next: T(function() {
                      return this._createResult(this._next());
                    }),
                    _createResult: T(function(i) {
                      return i === void 0 ? { done: !0, value: void 0 } : { done: !1, value: this._resolve(i) };
                    }),
                    _resolve: T(function(i) {
                      return this.__list__[i];
                    }),
                    _unBind: T(function() {
                      this.__list__ = null, delete this.__redo__, this.__context__ && (this.__context__.off("_add", this._onAdd), this.__context__.off("_delete", this._onDelete), this.__context__.off("_clear", this._onClear), this.__context__ = null);
                    }),
                    toString: T(function() {
                      return "[object " + (this[p.toStringTag] || "Object") + "]";
                    })
                  },
                  A({
                    _onAdd: T(function(i) {
                      if (!(i >= this.__nextIndex__)) {
                        if (++this.__nextIndex__, !this.__redo__) {
                          u(this, "__redo__", T("c", [i]));
                          return;
                        }
                        this.__redo__.forEach(function(a, l) {
                          a >= i && (this.__redo__[l] = ++a);
                        }, this), this.__redo__.push(i);
                      }
                    }),
                    _onDelete: T(function(i) {
                      var a;
                      i >= this.__nextIndex__ || (--this.__nextIndex__, this.__redo__ && (a = this.__redo__.indexOf(i), a !== -1 && this.__redo__.splice(a, 1), this.__redo__.forEach(function(l, o) {
                        l > i && (this.__redo__[o] = --l);
                      }, this)));
                    }),
                    _onClear: T(function() {
                      this.__redo__ && b.call(this.__redo__), this.__nextIndex__ = 0;
                    })
                  })
                )
              ), u(
                r.prototype,
                p.iterator,
                T(function() {
                  return this;
                })
              );
            }
          ),
          /***/
          50567: (
            /***/
            function(Y, K, e) {
              var b = e(82262), P = e(1974), n = e(48488), s = e(63008).iterator, T = Array.isArray;
              Y.exports = function(A) {
                return P(A) ? T(A) || n(A) || b(A) ? !0 : typeof A[s] == "function" : !1;
              };
            }
          ),
          /***/
          23417: (
            /***/
            function(Y, K, e) {
              var b = e(22834), P = e(91819), n = e(63008), s = e(85490), T = Object.defineProperty, A;
              A = Y.exports = function(p) {
                if (!(this instanceof A)) throw new TypeError("Constructor requires 'new'");
                p = String(p), s.call(this, p), T(this, "__length__", P("", p.length));
              }, b && b(A, s), delete A.prototype.constructor, A.prototype = Object.create(s.prototype, {
                _next: P(function() {
                  if (this.__list__) {
                    if (this.__nextIndex__ < this.__length__) return this.__nextIndex__++;
                    this._unBind();
                  }
                }),
                _resolve: P(function(p) {
                  var u = this.__list__[p], t;
                  return this.__nextIndex__ === this.__length__ ? u : (t = u.charCodeAt(0), t >= 55296 && t <= 56319 ? u + this.__list__[this.__nextIndex__++] : u);
                })
              }), T(A.prototype, n.toStringTag, P("c", "String Iterator"));
            }
          ),
          /***/
          82831: (
            /***/
            function(Y, K, e) {
              var b = e(50567);
              Y.exports = function(P) {
                if (!b(P)) throw new TypeError(P + " is not iterable");
                return P;
              };
            }
          ),
          /***/
          63008: (
            /***/
            function(Y, K, e) {
              Y.exports = e(25143)() ? e(64725).Symbol : e(81905);
            }
          ),
          /***/
          25143: (
            /***/
            function(Y, K, e) {
              var b = e(64725), P = { object: !0, symbol: !0 };
              Y.exports = function() {
                var n = b.Symbol, s;
                if (typeof n != "function") return !1;
                s = n("test symbol");
                try {
                  String(s);
                } catch {
                  return !1;
                }
                return !(!P[typeof n.iterator] || !P[typeof n.toPrimitive] || !P[typeof n.toStringTag]);
              };
            }
          ),
          /***/
          41707: (
            /***/
            function(Y) {
              Y.exports = function(K) {
                return K ? typeof K == "symbol" ? !0 : !K.constructor || K.constructor.name !== "Symbol" ? !1 : K[K.constructor.toStringTag] === "Symbol" : !1;
              };
            }
          ),
          /***/
          74009: (
            /***/
            function(Y, K, e) {
              var b = e(91819), P = Object.create, n = Object.defineProperty, s = Object.prototype, T = P(null);
              Y.exports = function(A) {
                for (var p = 0, u, t; T[A + (p || "")]; ) ++p;
                return A += p || "", T[A] = !0, u = "@@" + A, n(
                  s,
                  u,
                  b.gs(null, function(r) {
                    t || (t = !0, n(this, u, b(r)), t = !1);
                  })
                ), u;
              };
            }
          ),
          /***/
          40313: (
            /***/
            function(Y, K, e) {
              var b = e(91819), P = e(64725).Symbol;
              Y.exports = function(n) {
                return Object.defineProperties(n, {
                  // To ensure proper interoperability with other native functions (e.g. Array.from)
                  // fallback to eventual native implementation of given symbol
                  hasInstance: b(
                    "",
                    P && P.hasInstance || n("hasInstance")
                  ),
                  isConcatSpreadable: b(
                    "",
                    P && P.isConcatSpreadable || n("isConcatSpreadable")
                  ),
                  iterator: b("", P && P.iterator || n("iterator")),
                  match: b("", P && P.match || n("match")),
                  replace: b("", P && P.replace || n("replace")),
                  search: b("", P && P.search || n("search")),
                  species: b("", P && P.species || n("species")),
                  split: b("", P && P.split || n("split")),
                  toPrimitive: b(
                    "",
                    P && P.toPrimitive || n("toPrimitive")
                  ),
                  toStringTag: b(
                    "",
                    P && P.toStringTag || n("toStringTag")
                  ),
                  unscopables: b(
                    "",
                    P && P.unscopables || n("unscopables")
                  )
                });
              };
            }
          ),
          /***/
          21290: (
            /***/
            function(Y, K, e) {
              var b = e(91819), P = e(91765), n = /* @__PURE__ */ Object.create(null);
              Y.exports = function(s) {
                return Object.defineProperties(s, {
                  for: b(function(T) {
                    return n[T] ? n[T] : n[T] = s(String(T));
                  }),
                  keyFor: b(function(T) {
                    var A;
                    P(T);
                    for (A in n)
                      if (n[A] === T) return A;
                  })
                });
              };
            }
          ),
          /***/
          81905: (
            /***/
            function(Y, K, e) {
              var b = e(91819), P = e(91765), n = e(64725).Symbol, s = e(74009), T = e(40313), A = e(21290), p = Object.create, u = Object.defineProperties, t = Object.defineProperty, r, i, a;
              if (typeof n == "function")
                try {
                  String(n()), a = !0;
                } catch {
                }
              else
                n = null;
              i = function(o) {
                if (this instanceof i) throw new TypeError("Symbol is not a constructor");
                return r(o);
              }, Y.exports = r = function l(o) {
                var y;
                if (this instanceof l) throw new TypeError("Symbol is not a constructor");
                return a ? n(o) : (y = p(i.prototype), o = o === void 0 ? "" : String(o), u(y, {
                  __description__: b("", o),
                  __name__: b("", s(o))
                }));
              }, T(r), A(r), u(i.prototype, {
                constructor: b(r),
                toString: b("", function() {
                  return this.__name__;
                })
              }), u(r.prototype, {
                toString: b(function() {
                  return "Symbol (" + P(this).__description__ + ")";
                }),
                valueOf: b(function() {
                  return P(this);
                })
              }), t(
                r.prototype,
                r.toPrimitive,
                b("", function() {
                  var l = P(this);
                  return typeof l == "symbol" ? l : l.toString();
                })
              ), t(r.prototype, r.toStringTag, b("c", "Symbol")), t(
                i.prototype,
                r.toStringTag,
                b("c", r.prototype[r.toStringTag])
              ), t(
                i.prototype,
                r.toPrimitive,
                b("c", r.prototype[r.toPrimitive])
              );
            }
          ),
          /***/
          91765: (
            /***/
            function(Y, K, e) {
              var b = e(41707);
              Y.exports = function(P) {
                if (!b(P)) throw new TypeError(P + " is not a symbol");
                return P;
              };
            }
          ),
          /***/
          93103: (
            /***/
            function(Y, K, e) {
              Y.exports = e(22742)() ? WeakMap : e(21780);
            }
          ),
          /***/
          22742: (
            /***/
            function(Y) {
              Y.exports = function() {
                var K, e;
                if (typeof WeakMap != "function") return !1;
                try {
                  K = new WeakMap([[e = {}, "one"], [{}, "two"], [{}, "three"]]);
                } catch {
                  return !1;
                }
                return !(String(K) !== "[object WeakMap]" || typeof K.set != "function" || K.set({}, 1) !== K || typeof K.delete != "function" || typeof K.has != "function" || K.get(e) !== "one");
              };
            }
          ),
          /***/
          81810: (
            /***/
            function(Y) {
              Y.exports = function() {
                return typeof WeakMap != "function" ? !1 : Object.prototype.toString.call(/* @__PURE__ */ new WeakMap()) === "[object WeakMap]";
              }();
            }
          ),
          /***/
          21780: (
            /***/
            function(Y, K, e) {
              var b = e(1974), P = e(22834), n = e(11004), s = e(69746), T = e(43497), A = e(91819), p = e(34494), u = e(58755), t = e(63008).toStringTag, r = e(81810), i = Array.isArray, a = Object.defineProperty, l = Object.prototype.hasOwnProperty, o = Object.getPrototypeOf, y;
              Y.exports = y = function() {
                var g = arguments[0], x;
                if (!(this instanceof y)) throw new TypeError("Constructor requires 'new'");
                return x = r && P && WeakMap !== y ? P(/* @__PURE__ */ new WeakMap(), o(this)) : this, b(g) && (i(g) || (g = p(g))), a(x, "__weakMapData__", A("c", "$weakMap$" + T())), g && u(g, function(c) {
                  s(c), x.set(c[0], c[1]);
                }), x;
              }, r && (P && P(y, WeakMap), y.prototype = Object.create(WeakMap.prototype, { constructor: A(y) })), Object.defineProperties(y.prototype, {
                delete: A(function(g) {
                  return l.call(n(g), this.__weakMapData__) ? (delete g[this.__weakMapData__], !0) : !1;
                }),
                get: A(function(g) {
                  if (l.call(n(g), this.__weakMapData__))
                    return g[this.__weakMapData__];
                }),
                has: A(function(g) {
                  return l.call(n(g), this.__weakMapData__);
                }),
                set: A(function(g, x) {
                  return a(n(g), this.__weakMapData__, A("c", x)), this;
                }),
                toString: A(function() {
                  return "[object WeakMap]";
                })
              }), a(y.prototype, t, A("c", "WeakMap"));
            }
          ),
          /***/
          7683: (
            /***/
            function(Y) {
              var K = typeof Reflect == "object" ? Reflect : null, e = K && typeof K.apply == "function" ? K.apply : function(f, _, S) {
                return Function.prototype.apply.call(f, _, S);
              }, b;
              K && typeof K.ownKeys == "function" ? b = K.ownKeys : Object.getOwnPropertySymbols ? b = function(f) {
                return Object.getOwnPropertyNames(f).concat(Object.getOwnPropertySymbols(f));
              } : b = function(f) {
                return Object.getOwnPropertyNames(f);
              };
              function P(v) {
                console && console.warn && console.warn(v);
              }
              var n = Number.isNaN || function(f) {
                return f !== f;
              };
              function s() {
                s.init.call(this);
              }
              Y.exports = s, Y.exports.once = g, s.EventEmitter = s, s.prototype._events = void 0, s.prototype._eventsCount = 0, s.prototype._maxListeners = void 0;
              var T = 10;
              function A(v) {
                if (typeof v != "function")
                  throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof v);
              }
              Object.defineProperty(s, "defaultMaxListeners", {
                enumerable: !0,
                get: function() {
                  return T;
                },
                set: function(v) {
                  if (typeof v != "number" || v < 0 || n(v))
                    throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + v + ".");
                  T = v;
                }
              }), s.init = function() {
                (this._events === void 0 || this._events === Object.getPrototypeOf(this)._events) && (this._events = /* @__PURE__ */ Object.create(null), this._eventsCount = 0), this._maxListeners = this._maxListeners || void 0;
              }, s.prototype.setMaxListeners = function(f) {
                if (typeof f != "number" || f < 0 || n(f))
                  throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + f + ".");
                return this._maxListeners = f, this;
              };
              function p(v) {
                return v._maxListeners === void 0 ? s.defaultMaxListeners : v._maxListeners;
              }
              s.prototype.getMaxListeners = function() {
                return p(this);
              }, s.prototype.emit = function(f) {
                for (var _ = [], S = 1; S < arguments.length; S++) _.push(arguments[S]);
                var M = f === "error", C = this._events;
                if (C !== void 0)
                  M = M && C.error === void 0;
                else if (!M)
                  return !1;
                if (M) {
                  var m;
                  if (_.length > 0 && (m = _[0]), m instanceof Error)
                    throw m;
                  var L = new Error("Unhandled error." + (m ? " (" + m.message + ")" : ""));
                  throw L.context = m, L;
                }
                var d = C[f];
                if (d === void 0)
                  return !1;
                if (typeof d == "function")
                  e(d, this, _);
                else
                  for (var h = d.length, E = l(d, h), S = 0; S < h; ++S)
                    e(E[S], this, _);
                return !0;
              };
              function u(v, f, _, S) {
                var M, C, m;
                if (A(_), C = v._events, C === void 0 ? (C = v._events = /* @__PURE__ */ Object.create(null), v._eventsCount = 0) : (C.newListener !== void 0 && (v.emit(
                  "newListener",
                  f,
                  _.listener ? _.listener : _
                ), C = v._events), m = C[f]), m === void 0)
                  m = C[f] = _, ++v._eventsCount;
                else if (typeof m == "function" ? m = C[f] = S ? [_, m] : [m, _] : S ? m.unshift(_) : m.push(_), M = p(v), M > 0 && m.length > M && !m.warned) {
                  m.warned = !0;
                  var L = new Error("Possible EventEmitter memory leak detected. " + m.length + " " + String(f) + " listeners added. Use emitter.setMaxListeners() to increase limit");
                  L.name = "MaxListenersExceededWarning", L.emitter = v, L.type = f, L.count = m.length, P(L);
                }
                return v;
              }
              s.prototype.addListener = function(f, _) {
                return u(this, f, _, !1);
              }, s.prototype.on = s.prototype.addListener, s.prototype.prependListener = function(f, _) {
                return u(this, f, _, !0);
              };
              function t() {
                if (!this.fired)
                  return this.target.removeListener(this.type, this.wrapFn), this.fired = !0, arguments.length === 0 ? this.listener.call(this.target) : this.listener.apply(this.target, arguments);
              }
              function r(v, f, _) {
                var S = { fired: !1, wrapFn: void 0, target: v, type: f, listener: _ }, M = t.bind(S);
                return M.listener = _, S.wrapFn = M, M;
              }
              s.prototype.once = function(f, _) {
                return A(_), this.on(f, r(this, f, _)), this;
              }, s.prototype.prependOnceListener = function(f, _) {
                return A(_), this.prependListener(f, r(this, f, _)), this;
              }, s.prototype.removeListener = function(f, _) {
                var S, M, C, m, L;
                if (A(_), M = this._events, M === void 0)
                  return this;
                if (S = M[f], S === void 0)
                  return this;
                if (S === _ || S.listener === _)
                  --this._eventsCount === 0 ? this._events = /* @__PURE__ */ Object.create(null) : (delete M[f], M.removeListener && this.emit("removeListener", f, S.listener || _));
                else if (typeof S != "function") {
                  for (C = -1, m = S.length - 1; m >= 0; m--)
                    if (S[m] === _ || S[m].listener === _) {
                      L = S[m].listener, C = m;
                      break;
                    }
                  if (C < 0)
                    return this;
                  C === 0 ? S.shift() : o(S, C), S.length === 1 && (M[f] = S[0]), M.removeListener !== void 0 && this.emit("removeListener", f, L || _);
                }
                return this;
              }, s.prototype.off = s.prototype.removeListener, s.prototype.removeAllListeners = function(f) {
                var _, S, M;
                if (S = this._events, S === void 0)
                  return this;
                if (S.removeListener === void 0)
                  return arguments.length === 0 ? (this._events = /* @__PURE__ */ Object.create(null), this._eventsCount = 0) : S[f] !== void 0 && (--this._eventsCount === 0 ? this._events = /* @__PURE__ */ Object.create(null) : delete S[f]), this;
                if (arguments.length === 0) {
                  var C = Object.keys(S), m;
                  for (M = 0; M < C.length; ++M)
                    m = C[M], m !== "removeListener" && this.removeAllListeners(m);
                  return this.removeAllListeners("removeListener"), this._events = /* @__PURE__ */ Object.create(null), this._eventsCount = 0, this;
                }
                if (_ = S[f], typeof _ == "function")
                  this.removeListener(f, _);
                else if (_ !== void 0)
                  for (M = _.length - 1; M >= 0; M--)
                    this.removeListener(f, _[M]);
                return this;
              };
              function i(v, f, _) {
                var S = v._events;
                if (S === void 0)
                  return [];
                var M = S[f];
                return M === void 0 ? [] : typeof M == "function" ? _ ? [M.listener || M] : [M] : _ ? y(M) : l(M, M.length);
              }
              s.prototype.listeners = function(f) {
                return i(this, f, !0);
              }, s.prototype.rawListeners = function(f) {
                return i(this, f, !1);
              }, s.listenerCount = function(v, f) {
                return typeof v.listenerCount == "function" ? v.listenerCount(f) : a.call(v, f);
              }, s.prototype.listenerCount = a;
              function a(v) {
                var f = this._events;
                if (f !== void 0) {
                  var _ = f[v];
                  if (typeof _ == "function")
                    return 1;
                  if (_ !== void 0)
                    return _.length;
                }
                return 0;
              }
              s.prototype.eventNames = function() {
                return this._eventsCount > 0 ? b(this._events) : [];
              };
              function l(v, f) {
                for (var _ = new Array(f), S = 0; S < f; ++S)
                  _[S] = v[S];
                return _;
              }
              function o(v, f) {
                for (; f + 1 < v.length; f++)
                  v[f] = v[f + 1];
                v.pop();
              }
              function y(v) {
                for (var f = new Array(v.length), _ = 0; _ < f.length; ++_)
                  f[_] = v[_].listener || v[_];
                return f;
              }
              function g(v, f) {
                return new Promise(function(_, S) {
                  function M(m) {
                    v.removeListener(f, C), S(m);
                  }
                  function C() {
                    typeof v.removeListener == "function" && v.removeListener("error", M), _([].slice.call(arguments));
                  }
                  c(v, f, C, { once: !0 }), f !== "error" && x(v, M, { once: !0 });
                });
              }
              function x(v, f, _) {
                typeof v.on == "function" && c(v, "error", f, _);
              }
              function c(v, f, _, S) {
                if (typeof v.on == "function")
                  S.once ? v.once(f, _) : v.on(f, _);
                else if (typeof v.addEventListener == "function")
                  v.addEventListener(f, function M(C) {
                    S.once && v.removeEventListener(f, M), _(C);
                  });
                else
                  throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof v);
              }
            }
          ),
          /***/
          77083: (
            /***/
            function(Y) {
              var K = function() {
                if (typeof self == "object" && self) return self;
                if (typeof window == "object" && window) return window;
                throw new Error("Unable to resolve global `this`");
              };
              Y.exports = function() {
                if (this) return this;
                try {
                  Object.defineProperty(Object.prototype, "__global__", {
                    get: function() {
                      return this;
                    },
                    configurable: !0
                  });
                } catch {
                  return K();
                }
                try {
                  return __global__ || K();
                } finally {
                  delete Object.prototype.__global__;
                }
              }();
            }
          ),
          /***/
          64725: (
            /***/
            function(Y, K, e) {
              Y.exports = e(17804)() ? globalThis : e(77083);
            }
          ),
          /***/
          17804: (
            /***/
            function(Y) {
              Y.exports = function() {
                return typeof globalThis != "object" || !globalThis ? !1 : globalThis.Array === Array;
              };
            }
          ),
          /***/
          10721: (
            /***/
            function(Y, K, e) {
              var b = e(9914);
              Y.exports = function(P) {
                var n = typeof P;
                if (n === "string") {
                  var s = P;
                  if (P = +P, P === 0 && b(s)) return !1;
                } else if (n !== "number") return !1;
                return P - P < 1;
              };
            }
          ),
          /***/
          83473: (
            /***/
            function(Y, K, e) {
              var b = e(10275);
              Y.exports = P;
              function P(n, s, T) {
                if (!n) throw new TypeError("must specify data as first parameter");
                if (T = +(T || 0) | 0, Array.isArray(n) && n[0] && typeof n[0][0] == "number") {
                  var A = n[0].length, p = n.length * A, u, t, r, i;
                  (!s || typeof s == "string") && (s = new (b(s || "float32"))(p + T));
                  var a = s.length - T;
                  if (p !== a)
                    throw new Error("source length " + p + " (" + A + "x" + n.length + ") does not match destination length " + a);
                  for (u = 0, r = T; u < n.length; u++)
                    for (t = 0; t < A; t++)
                      s[r++] = n[u][t] === null ? NaN : n[u][t];
                } else if (!s || typeof s == "string") {
                  var l = b(s || "float32");
                  if (Array.isArray(n) || s === "array")
                    for (s = new l(n.length + T), u = 0, r = T, i = s.length; r < i; r++, u++)
                      s[r] = n[u] === null ? NaN : n[u];
                  else
                    T === 0 ? s = new l(n) : (s = new l(n.length + T), s.set(n, T));
                } else
                  s.set(n, T);
                return s;
              }
            }
          ),
          /***/
          68950: (
            /***/
            function(Y, K, e) {
              var b = e(38211), P = [32, 126];
              Y.exports = n;
              function n(s) {
                s = s || {};
                var T = s.shape ? s.shape : s.canvas ? [s.canvas.width, s.canvas.height] : [512, 512], A = s.canvas || document.createElement("canvas"), p = s.font, u = typeof s.step == "number" ? [s.step, s.step] : s.step || [32, 32], t = s.chars || P;
                if (p && typeof p != "string" && (p = b(p)), !Array.isArray(t))
                  t = String(t).split("");
                else if (t.length === 2 && typeof t[0] == "number" && typeof t[1] == "number") {
                  for (var r = [], i = t[0], a = 0; i <= t[1]; i++)
                    r[a++] = String.fromCharCode(i);
                  t = r;
                }
                T = T.slice(), A.width = T[0], A.height = T[1];
                var l = A.getContext("2d");
                l.fillStyle = "#000", l.fillRect(0, 0, A.width, A.height), l.font = p, l.textAlign = "center", l.textBaseline = "middle", l.fillStyle = "#fff";
                for (var o = u[0] / 2, y = u[1] / 2, i = 0; i < t.length; i++)
                  l.fillText(t[i], o, y), (o += u[0]) > T[0] - u[0] / 2 && (o = u[0] / 2, y += u[1]);
                return A;
              }
            }
          ),
          /***/
          12673: (
            /***/
            function(Y) {
              Y.exports = K, K.canvas = document.createElement("canvas"), K.cache = {};
              function K(t, s) {
                s || (s = {}), (typeof t == "string" || Array.isArray(t)) && (s.family = t);
                var T = Array.isArray(s.family) ? s.family.join(", ") : s.family;
                if (!T) throw Error("`family` must be defined");
                var A = s.size || s.fontSize || s.em || 48, p = s.weight || s.fontWeight || "", u = s.style || s.fontStyle || "", t = [u, p, A].join(" ") + "px " + T, r = s.origin || "top";
                if (K.cache[T] && A <= K.cache[T].em)
                  return e(K.cache[T], r);
                var i = s.canvas || K.canvas, a = i.getContext("2d"), l = {
                  upper: s.upper !== void 0 ? s.upper : "H",
                  lower: s.lower !== void 0 ? s.lower : "x",
                  descent: s.descent !== void 0 ? s.descent : "p",
                  ascent: s.ascent !== void 0 ? s.ascent : "h",
                  tittle: s.tittle !== void 0 ? s.tittle : "i",
                  overshoot: s.overshoot !== void 0 ? s.overshoot : "O"
                }, o = Math.ceil(A * 1.5);
                i.height = o, i.width = o * 0.5, a.font = t;
                var y = "H", g = {
                  top: 0
                };
                a.clearRect(0, 0, o, o), a.textBaseline = "top", a.fillStyle = "black", a.fillText(y, 0, 0);
                var x = b(a.getImageData(0, 0, o, o));
                a.clearRect(0, 0, o, o), a.textBaseline = "bottom", a.fillText(y, 0, o);
                var c = b(a.getImageData(0, 0, o, o));
                g.lineHeight = g.bottom = o - c + x, a.clearRect(0, 0, o, o), a.textBaseline = "alphabetic", a.fillText(y, 0, o);
                var v = b(a.getImageData(0, 0, o, o)), f = o - v - 1 + x;
                g.baseline = g.alphabetic = f, a.clearRect(0, 0, o, o), a.textBaseline = "middle", a.fillText(y, 0, o * 0.5);
                var _ = b(a.getImageData(0, 0, o, o));
                g.median = g.middle = o - _ - 1 + x - o * 0.5, a.clearRect(0, 0, o, o), a.textBaseline = "hanging", a.fillText(y, 0, o * 0.5);
                var S = b(a.getImageData(0, 0, o, o));
                g.hanging = o - S - 1 + x - o * 0.5, a.clearRect(0, 0, o, o), a.textBaseline = "ideographic", a.fillText(y, 0, o);
                var M = b(a.getImageData(0, 0, o, o));
                if (g.ideographic = o - M - 1 + x, l.upper && (a.clearRect(0, 0, o, o), a.textBaseline = "top", a.fillText(l.upper, 0, 0), g.upper = b(a.getImageData(0, 0, o, o)), g.capHeight = g.baseline - g.upper), l.lower && (a.clearRect(0, 0, o, o), a.textBaseline = "top", a.fillText(l.lower, 0, 0), g.lower = b(a.getImageData(0, 0, o, o)), g.xHeight = g.baseline - g.lower), l.tittle && (a.clearRect(0, 0, o, o), a.textBaseline = "top", a.fillText(l.tittle, 0, 0), g.tittle = b(a.getImageData(0, 0, o, o))), l.ascent && (a.clearRect(0, 0, o, o), a.textBaseline = "top", a.fillText(l.ascent, 0, 0), g.ascent = b(a.getImageData(0, 0, o, o))), l.descent && (a.clearRect(0, 0, o, o), a.textBaseline = "top", a.fillText(l.descent, 0, 0), g.descent = P(a.getImageData(0, 0, o, o))), l.overshoot) {
                  a.clearRect(0, 0, o, o), a.textBaseline = "top", a.fillText(l.overshoot, 0, 0);
                  var C = P(a.getImageData(0, 0, o, o));
                  g.overshoot = C - f;
                }
                for (var m in g)
                  g[m] /= A;
                return g.em = A, K.cache[T] = g, e(g, r);
              }
              function e(n, s) {
                var T = {};
                typeof s == "string" && (s = n[s]);
                for (var A in n)
                  A !== "em" && (T[A] = n[A] - s);
                return T;
              }
              function b(n) {
                for (var s = n.height, T = n.data, A = 3; A < T.length; A += 4)
                  if (T[A] !== 0)
                    return Math.floor((A - 3) * 0.25 / s);
              }
              function P(n) {
                for (var s = n.height, T = n.data, A = T.length - 1; A > 0; A -= 4)
                  if (T[A] !== 0)
                    return Math.floor((A - 3) * 0.25 / s);
              }
            }
          ),
          /***/
          61262: (
            /***/
            function(Y, K, e) {
              var b = e(82756), P = Object.prototype.toString, n = Object.prototype.hasOwnProperty, s = function(t, r, i) {
                for (var a = 0, l = t.length; a < l; a++)
                  n.call(t, a) && (i == null ? r(t[a], a, t) : r.call(i, t[a], a, t));
              }, T = function(t, r, i) {
                for (var a = 0, l = t.length; a < l; a++)
                  i == null ? r(t.charAt(a), a, t) : r.call(i, t.charAt(a), a, t);
              }, A = function(t, r, i) {
                for (var a in t)
                  n.call(t, a) && (i == null ? r(t[a], a, t) : r.call(i, t[a], a, t));
              }, p = function(t, r, i) {
                if (!b(r))
                  throw new TypeError("iterator must be a function");
                var a;
                arguments.length >= 3 && (a = i), P.call(t) === "[object Array]" ? s(t, r, a) : typeof t == "string" ? T(t, r, a) : A(t, r, a);
              };
              Y.exports = p;
            }
          ),
          /***/
          31917: (
            /***/
            function(Y) {
              var K = "Function.prototype.bind called on incompatible ", e = Object.prototype.toString, b = Math.max, P = "[object Function]", n = function(p, u) {
                for (var t = [], r = 0; r < p.length; r += 1)
                  t[r] = p[r];
                for (var i = 0; i < u.length; i += 1)
                  t[i + p.length] = u[i];
                return t;
              }, s = function(p, u) {
                for (var t = [], r = u, i = 0; r < p.length; r += 1, i += 1)
                  t[i] = p[r];
                return t;
              }, T = function(A, p) {
                for (var u = "", t = 0; t < A.length; t += 1)
                  u += A[t], t + 1 < A.length && (u += p);
                return u;
              };
              Y.exports = function(p) {
                var u = this;
                if (typeof u != "function" || e.apply(u) !== P)
                  throw new TypeError(K + u);
                for (var t = s(arguments, 1), r, i = function() {
                  if (this instanceof r) {
                    var g = u.apply(
                      this,
                      n(t, arguments)
                    );
                    return Object(g) === g ? g : this;
                  }
                  return u.apply(
                    p,
                    n(t, arguments)
                  );
                }, a = b(0, u.length - t.length), l = [], o = 0; o < a; o++)
                  l[o] = "$" + o;
                if (r = Function("binder", "return function (" + T(l, ",") + "){ return binder.apply(this,arguments); }")(i), u.prototype) {
                  var y = function() {
                  };
                  y.prototype = u.prototype, r.prototype = new y(), y.prototype = null;
                }
                return r;
              };
            }
          ),
          /***/
          87547: (
            /***/
            function(Y, K, e) {
              var b = e(31917);
              Y.exports = Function.prototype.bind || b;
            }
          ),
          /***/
          72880: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e, b) {
                if (typeof e != "string")
                  throw new TypeError("must specify type string");
                if (b = b || {}, typeof document > "u" && !b.canvas)
                  return null;
                var P = b.canvas || document.createElement("canvas");
                typeof b.width == "number" && (P.width = b.width), typeof b.height == "number" && (P.height = b.height);
                var n = b, s;
                try {
                  var T = [e];
                  e.indexOf("webgl") === 0 && T.push("experimental-" + e);
                  for (var A = 0; A < T.length; A++)
                    if (s = P.getContext(T[A], n), s) return s;
                } catch {
                  s = null;
                }
                return s || null;
              }
            }
          ),
          /***/
          71129: (
            /***/
            function(Y, K, e) {
              var b, P = e(77731), n = e(35465), s = e(30582), T = e(50294), A = e(98800), p = e(48631), u = e(33149), t = Function, r = function(V) {
                try {
                  return t('"use strict"; return (' + V + ").constructor;")();
                } catch {
                }
              }, i = Object.getOwnPropertyDescriptor;
              if (i)
                try {
                  i({}, "");
                } catch {
                  i = null;
                }
              var a = function() {
                throw new p();
              }, l = i ? function() {
                try {
                  return arguments.callee, a;
                } catch {
                  try {
                    return i(arguments, "callee").get;
                  } catch {
                    return a;
                  }
                }
              }() : a, o = e(8771)(), y = e(58436)(), g = Object.getPrototypeOf || (y ? function(V) {
                return V.__proto__;
              } : null), x = {}, c = typeof Uint8Array > "u" || !g ? b : g(Uint8Array), v = {
                __proto__: null,
                "%AggregateError%": typeof AggregateError > "u" ? b : AggregateError,
                "%Array%": Array,
                "%ArrayBuffer%": typeof ArrayBuffer > "u" ? b : ArrayBuffer,
                "%ArrayIteratorPrototype%": o && g ? g([][Symbol.iterator]()) : b,
                "%AsyncFromSyncIteratorPrototype%": b,
                "%AsyncFunction%": x,
                "%AsyncGenerator%": x,
                "%AsyncGeneratorFunction%": x,
                "%AsyncIteratorPrototype%": x,
                "%Atomics%": typeof Atomics > "u" ? b : Atomics,
                "%BigInt%": typeof BigInt > "u" ? b : BigInt,
                "%BigInt64Array%": typeof BigInt64Array > "u" ? b : BigInt64Array,
                "%BigUint64Array%": typeof BigUint64Array > "u" ? b : BigUint64Array,
                "%Boolean%": Boolean,
                "%DataView%": typeof DataView > "u" ? b : DataView,
                "%Date%": Date,
                "%decodeURI%": decodeURI,
                "%decodeURIComponent%": decodeURIComponent,
                "%encodeURI%": encodeURI,
                "%encodeURIComponent%": encodeURIComponent,
                "%Error%": P,
                "%eval%": eval,
                // eslint-disable-line no-eval
                "%EvalError%": n,
                "%Float32Array%": typeof Float32Array > "u" ? b : Float32Array,
                "%Float64Array%": typeof Float64Array > "u" ? b : Float64Array,
                "%FinalizationRegistry%": typeof FinalizationRegistry > "u" ? b : FinalizationRegistry,
                "%Function%": t,
                "%GeneratorFunction%": x,
                "%Int8Array%": typeof Int8Array > "u" ? b : Int8Array,
                "%Int16Array%": typeof Int16Array > "u" ? b : Int16Array,
                "%Int32Array%": typeof Int32Array > "u" ? b : Int32Array,
                "%isFinite%": isFinite,
                "%isNaN%": isNaN,
                "%IteratorPrototype%": o && g ? g(g([][Symbol.iterator]())) : b,
                "%JSON%": typeof JSON == "object" ? JSON : b,
                "%Map%": typeof Map > "u" ? b : Map,
                "%MapIteratorPrototype%": typeof Map > "u" || !o || !g ? b : g((/* @__PURE__ */ new Map())[Symbol.iterator]()),
                "%Math%": Math,
                "%Number%": Number,
                "%Object%": Object,
                "%parseFloat%": parseFloat,
                "%parseInt%": parseInt,
                "%Promise%": typeof Promise > "u" ? b : Promise,
                "%Proxy%": typeof Proxy > "u" ? b : Proxy,
                "%RangeError%": s,
                "%ReferenceError%": T,
                "%Reflect%": typeof Reflect > "u" ? b : Reflect,
                "%RegExp%": RegExp,
                "%Set%": typeof Set > "u" ? b : Set,
                "%SetIteratorPrototype%": typeof Set > "u" || !o || !g ? b : g((/* @__PURE__ */ new Set())[Symbol.iterator]()),
                "%SharedArrayBuffer%": typeof SharedArrayBuffer > "u" ? b : SharedArrayBuffer,
                "%String%": String,
                "%StringIteratorPrototype%": o && g ? g(""[Symbol.iterator]()) : b,
                "%Symbol%": o ? Symbol : b,
                "%SyntaxError%": A,
                "%ThrowTypeError%": l,
                "%TypedArray%": c,
                "%TypeError%": p,
                "%Uint8Array%": typeof Uint8Array > "u" ? b : Uint8Array,
                "%Uint8ClampedArray%": typeof Uint8ClampedArray > "u" ? b : Uint8ClampedArray,
                "%Uint16Array%": typeof Uint16Array > "u" ? b : Uint16Array,
                "%Uint32Array%": typeof Uint32Array > "u" ? b : Uint32Array,
                "%URIError%": u,
                "%WeakMap%": typeof WeakMap > "u" ? b : WeakMap,
                "%WeakRef%": typeof WeakRef > "u" ? b : WeakRef,
                "%WeakSet%": typeof WeakSet > "u" ? b : WeakSet
              };
              if (g)
                try {
                  null.error;
                } catch (V) {
                  var f = g(g(V));
                  v["%Error.prototype%"] = f;
                }
              var _ = function V(U) {
                var H;
                if (U === "%AsyncFunction%")
                  H = r("async function () {}");
                else if (U === "%GeneratorFunction%")
                  H = r("function* () {}");
                else if (U === "%AsyncGeneratorFunction%")
                  H = r("async function* () {}");
                else if (U === "%AsyncGenerator%") {
                  var F = V("%AsyncGeneratorFunction%");
                  F && (H = F.prototype);
                } else if (U === "%AsyncIteratorPrototype%") {
                  var G = V("%AsyncGenerator%");
                  G && g && (H = g(G.prototype));
                }
                return v[U] = H, H;
              }, S = {
                __proto__: null,
                "%ArrayBufferPrototype%": ["ArrayBuffer", "prototype"],
                "%ArrayPrototype%": ["Array", "prototype"],
                "%ArrayProto_entries%": ["Array", "prototype", "entries"],
                "%ArrayProto_forEach%": ["Array", "prototype", "forEach"],
                "%ArrayProto_keys%": ["Array", "prototype", "keys"],
                "%ArrayProto_values%": ["Array", "prototype", "values"],
                "%AsyncFunctionPrototype%": ["AsyncFunction", "prototype"],
                "%AsyncGenerator%": ["AsyncGeneratorFunction", "prototype"],
                "%AsyncGeneratorPrototype%": ["AsyncGeneratorFunction", "prototype", "prototype"],
                "%BooleanPrototype%": ["Boolean", "prototype"],
                "%DataViewPrototype%": ["DataView", "prototype"],
                "%DatePrototype%": ["Date", "prototype"],
                "%ErrorPrototype%": ["Error", "prototype"],
                "%EvalErrorPrototype%": ["EvalError", "prototype"],
                "%Float32ArrayPrototype%": ["Float32Array", "prototype"],
                "%Float64ArrayPrototype%": ["Float64Array", "prototype"],
                "%FunctionPrototype%": ["Function", "prototype"],
                "%Generator%": ["GeneratorFunction", "prototype"],
                "%GeneratorPrototype%": ["GeneratorFunction", "prototype", "prototype"],
                "%Int8ArrayPrototype%": ["Int8Array", "prototype"],
                "%Int16ArrayPrototype%": ["Int16Array", "prototype"],
                "%Int32ArrayPrototype%": ["Int32Array", "prototype"],
                "%JSONParse%": ["JSON", "parse"],
                "%JSONStringify%": ["JSON", "stringify"],
                "%MapPrototype%": ["Map", "prototype"],
                "%NumberPrototype%": ["Number", "prototype"],
                "%ObjectPrototype%": ["Object", "prototype"],
                "%ObjProto_toString%": ["Object", "prototype", "toString"],
                "%ObjProto_valueOf%": ["Object", "prototype", "valueOf"],
                "%PromisePrototype%": ["Promise", "prototype"],
                "%PromiseProto_then%": ["Promise", "prototype", "then"],
                "%Promise_all%": ["Promise", "all"],
                "%Promise_reject%": ["Promise", "reject"],
                "%Promise_resolve%": ["Promise", "resolve"],
                "%RangeErrorPrototype%": ["RangeError", "prototype"],
                "%ReferenceErrorPrototype%": ["ReferenceError", "prototype"],
                "%RegExpPrototype%": ["RegExp", "prototype"],
                "%SetPrototype%": ["Set", "prototype"],
                "%SharedArrayBufferPrototype%": ["SharedArrayBuffer", "prototype"],
                "%StringPrototype%": ["String", "prototype"],
                "%SymbolPrototype%": ["Symbol", "prototype"],
                "%SyntaxErrorPrototype%": ["SyntaxError", "prototype"],
                "%TypedArrayPrototype%": ["TypedArray", "prototype"],
                "%TypeErrorPrototype%": ["TypeError", "prototype"],
                "%Uint8ArrayPrototype%": ["Uint8Array", "prototype"],
                "%Uint8ClampedArrayPrototype%": ["Uint8ClampedArray", "prototype"],
                "%Uint16ArrayPrototype%": ["Uint16Array", "prototype"],
                "%Uint32ArrayPrototype%": ["Uint32Array", "prototype"],
                "%URIErrorPrototype%": ["URIError", "prototype"],
                "%WeakMapPrototype%": ["WeakMap", "prototype"],
                "%WeakSetPrototype%": ["WeakSet", "prototype"]
              }, M = e(87547), C = e(80753), m = M.call(Function.call, Array.prototype.concat), L = M.call(Function.apply, Array.prototype.splice), d = M.call(Function.call, String.prototype.replace), h = M.call(Function.call, String.prototype.slice), E = M.call(Function.call, RegExp.prototype.exec), w = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g, z = /\\(\\)?/g, O = function(U) {
                var H = h(U, 0, 1), F = h(U, -1);
                if (H === "%" && F !== "%")
                  throw new A("invalid intrinsic syntax, expected closing `%`");
                if (F === "%" && H !== "%")
                  throw new A("invalid intrinsic syntax, expected opening `%`");
                var G = [];
                return d(U, w, function(q, rt, st, vt) {
                  G[G.length] = st ? d(vt, z, "$1") : rt || q;
                }), G;
              }, B = function(U, H) {
                var F = U, G;
                if (C(S, F) && (G = S[F], F = "%" + G[0] + "%"), C(v, F)) {
                  var q = v[F];
                  if (q === x && (q = _(F)), typeof q > "u" && !H)
                    throw new p("intrinsic " + U + " exists, but is not available. Please file an issue!");
                  return {
                    alias: G,
                    name: F,
                    value: q
                  };
                }
                throw new A("intrinsic " + U + " does not exist!");
              };
              Y.exports = function(U, H) {
                if (typeof U != "string" || U.length === 0)
                  throw new p("intrinsic name must be a non-empty string");
                if (arguments.length > 1 && typeof H != "boolean")
                  throw new p('"allowMissing" argument must be a boolean');
                if (E(/^%?[^%]*%?$/, U) === null)
                  throw new A("`%` may not be present anywhere but at the beginning and end of the intrinsic name");
                var F = O(U), G = F.length > 0 ? F[0] : "", q = B("%" + G + "%", H), rt = q.name, st = q.value, vt = !1, ht = q.alias;
                ht && (G = ht[0], L(F, m([0, 1], ht)));
                for (var et = 1, Q = !0; et < F.length; et += 1) {
                  var j = F[et], at = h(j, 0, 1), ut = h(j, -1);
                  if ((at === '"' || at === "'" || at === "`" || ut === '"' || ut === "'" || ut === "`") && at !== ut)
                    throw new A("property names with quotes must have matching quotes");
                  if ((j === "constructor" || !Q) && (vt = !0), G += "." + j, rt = "%" + G + "%", C(v, rt))
                    st = v[rt];
                  else if (st != null) {
                    if (!(j in st)) {
                      if (!H)
                        throw new p("base intrinsic for " + U + " exists, but the property is not available.");
                      return;
                    }
                    if (i && et + 1 >= F.length) {
                      var nt = i(st, j);
                      Q = !!nt, Q && "get" in nt && !("originalValue" in nt.get) ? st = nt.get : st = st[j];
                    } else
                      Q = C(st, j), st = st[j];
                    Q && !vt && (v[rt] = st);
                  }
                }
                return st;
              };
            }
          ),
          /***/
          84840: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e, b) {
                var P = b[0], n = b[1], s = b[2], T = b[3], A = b[4], p = b[5], u = b[6], t = b[7], r = b[8], i = b[9], a = b[10], l = b[11], o = b[12], y = b[13], g = b[14], x = b[15];
                return e[0] = p * (a * x - l * g) - i * (u * x - t * g) + y * (u * l - t * a), e[1] = -(n * (a * x - l * g) - i * (s * x - T * g) + y * (s * l - T * a)), e[2] = n * (u * x - t * g) - p * (s * x - T * g) + y * (s * t - T * u), e[3] = -(n * (u * l - t * a) - p * (s * l - T * a) + i * (s * t - T * u)), e[4] = -(A * (a * x - l * g) - r * (u * x - t * g) + o * (u * l - t * a)), e[5] = P * (a * x - l * g) - r * (s * x - T * g) + o * (s * l - T * a), e[6] = -(P * (u * x - t * g) - A * (s * x - T * g) + o * (s * t - T * u)), e[7] = P * (u * l - t * a) - A * (s * l - T * a) + r * (s * t - T * u), e[8] = A * (i * x - l * y) - r * (p * x - t * y) + o * (p * l - t * i), e[9] = -(P * (i * x - l * y) - r * (n * x - T * y) + o * (n * l - T * i)), e[10] = P * (p * x - t * y) - A * (n * x - T * y) + o * (n * t - T * p), e[11] = -(P * (p * l - t * i) - A * (n * l - T * i) + r * (n * t - T * p)), e[12] = -(A * (i * g - a * y) - r * (p * g - u * y) + o * (p * a - u * i)), e[13] = P * (i * g - a * y) - r * (n * g - s * y) + o * (n * a - s * i), e[14] = -(P * (p * g - u * y) - A * (n * g - s * y) + o * (n * u - s * p)), e[15] = P * (p * a - u * i) - A * (n * a - s * i) + r * (n * u - s * p), e;
              }
            }
          ),
          /***/
          99698: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e) {
                var b = new Float32Array(16);
                return b[0] = e[0], b[1] = e[1], b[2] = e[2], b[3] = e[3], b[4] = e[4], b[5] = e[5], b[6] = e[6], b[7] = e[7], b[8] = e[8], b[9] = e[9], b[10] = e[10], b[11] = e[11], b[12] = e[12], b[13] = e[13], b[14] = e[14], b[15] = e[15], b;
              }
            }
          ),
          /***/
          57938: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e, b) {
                return e[0] = b[0], e[1] = b[1], e[2] = b[2], e[3] = b[3], e[4] = b[4], e[5] = b[5], e[6] = b[6], e[7] = b[7], e[8] = b[8], e[9] = b[9], e[10] = b[10], e[11] = b[11], e[12] = b[12], e[13] = b[13], e[14] = b[14], e[15] = b[15], e;
              }
            }
          ),
          /***/
          87519: (
            /***/
            function(Y) {
              Y.exports = K;
              function K() {
                var e = new Float32Array(16);
                return e[0] = 1, e[1] = 0, e[2] = 0, e[3] = 0, e[4] = 0, e[5] = 1, e[6] = 0, e[7] = 0, e[8] = 0, e[9] = 0, e[10] = 1, e[11] = 0, e[12] = 0, e[13] = 0, e[14] = 0, e[15] = 1, e;
              }
            }
          ),
          /***/
          6900: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e) {
                var b = e[0], P = e[1], n = e[2], s = e[3], T = e[4], A = e[5], p = e[6], u = e[7], t = e[8], r = e[9], i = e[10], a = e[11], l = e[12], o = e[13], y = e[14], g = e[15], x = b * A - P * T, c = b * p - n * T, v = b * u - s * T, f = P * p - n * A, _ = P * u - s * A, S = n * u - s * p, M = t * o - r * l, C = t * y - i * l, m = t * g - a * l, L = r * y - i * o, d = r * g - a * o, h = i * g - a * y;
                return x * h - c * d + v * L + f * m - _ * C + S * M;
              }
            }
          ),
          /***/
          36472: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e, b) {
                var P = b[0], n = b[1], s = b[2], T = b[3], A = P + P, p = n + n, u = s + s, t = P * A, r = n * A, i = n * p, a = s * A, l = s * p, o = s * u, y = T * A, g = T * p, x = T * u;
                return e[0] = 1 - i - o, e[1] = r + x, e[2] = a - g, e[3] = 0, e[4] = r - x, e[5] = 1 - t - o, e[6] = l + y, e[7] = 0, e[8] = a + g, e[9] = l - y, e[10] = 1 - t - i, e[11] = 0, e[12] = 0, e[13] = 0, e[14] = 0, e[15] = 1, e;
              }
            }
          ),
          /***/
          43061: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e, b, P) {
                var n, s, T, A = P[0], p = P[1], u = P[2], t = Math.sqrt(A * A + p * p + u * u);
                return Math.abs(t) < 1e-6 ? null : (t = 1 / t, A *= t, p *= t, u *= t, n = Math.sin(b), s = Math.cos(b), T = 1 - s, e[0] = A * A * T + s, e[1] = p * A * T + u * n, e[2] = u * A * T - p * n, e[3] = 0, e[4] = A * p * T - u * n, e[5] = p * p * T + s, e[6] = u * p * T + A * n, e[7] = 0, e[8] = A * u * T + p * n, e[9] = p * u * T - A * n, e[10] = u * u * T + s, e[11] = 0, e[12] = 0, e[13] = 0, e[14] = 0, e[15] = 1, e);
              }
            }
          ),
          /***/
          33606: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e, b, P) {
                var n = b[0], s = b[1], T = b[2], A = b[3], p = n + n, u = s + s, t = T + T, r = n * p, i = n * u, a = n * t, l = s * u, o = s * t, y = T * t, g = A * p, x = A * u, c = A * t;
                return e[0] = 1 - (l + y), e[1] = i + c, e[2] = a - x, e[3] = 0, e[4] = i - c, e[5] = 1 - (r + y), e[6] = o + g, e[7] = 0, e[8] = a + x, e[9] = o - g, e[10] = 1 - (r + l), e[11] = 0, e[12] = P[0], e[13] = P[1], e[14] = P[2], e[15] = 1, e;
              }
            }
          ),
          /***/
          98698: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e, b) {
                return e[0] = b[0], e[1] = 0, e[2] = 0, e[3] = 0, e[4] = 0, e[5] = b[1], e[6] = 0, e[7] = 0, e[8] = 0, e[9] = 0, e[10] = b[2], e[11] = 0, e[12] = 0, e[13] = 0, e[14] = 0, e[15] = 1, e;
              }
            }
          ),
          /***/
          6924: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e, b) {
                return e[0] = 1, e[1] = 0, e[2] = 0, e[3] = 0, e[4] = 0, e[5] = 1, e[6] = 0, e[7] = 0, e[8] = 0, e[9] = 0, e[10] = 1, e[11] = 0, e[12] = b[0], e[13] = b[1], e[14] = b[2], e[15] = 1, e;
              }
            }
          ),
          /***/
          81181: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e, b) {
                var P = Math.sin(b), n = Math.cos(b);
                return e[0] = 1, e[1] = 0, e[2] = 0, e[3] = 0, e[4] = 0, e[5] = n, e[6] = P, e[7] = 0, e[8] = 0, e[9] = -P, e[10] = n, e[11] = 0, e[12] = 0, e[13] = 0, e[14] = 0, e[15] = 1, e;
              }
            }
          ),
          /***/
          95258: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e, b) {
                var P = Math.sin(b), n = Math.cos(b);
                return e[0] = n, e[1] = 0, e[2] = -P, e[3] = 0, e[4] = 0, e[5] = 1, e[6] = 0, e[7] = 0, e[8] = P, e[9] = 0, e[10] = n, e[11] = 0, e[12] = 0, e[13] = 0, e[14] = 0, e[15] = 1, e;
              }
            }
          ),
          /***/
          94815: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e, b) {
                var P = Math.sin(b), n = Math.cos(b);
                return e[0] = n, e[1] = P, e[2] = 0, e[3] = 0, e[4] = -P, e[5] = n, e[6] = 0, e[7] = 0, e[8] = 0, e[9] = 0, e[10] = 1, e[11] = 0, e[12] = 0, e[13] = 0, e[14] = 0, e[15] = 1, e;
              }
            }
          ),
          /***/
          87301: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e, b, P, n, s, T, A) {
                var p = 1 / (P - b), u = 1 / (s - n), t = 1 / (T - A);
                return e[0] = T * 2 * p, e[1] = 0, e[2] = 0, e[3] = 0, e[4] = 0, e[5] = T * 2 * u, e[6] = 0, e[7] = 0, e[8] = (P + b) * p, e[9] = (s + n) * u, e[10] = (A + T) * t, e[11] = -1, e[12] = 0, e[13] = 0, e[14] = A * T * 2 * t, e[15] = 0, e;
              }
            }
          ),
          /***/
          87193: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e) {
                return e[0] = 1, e[1] = 0, e[2] = 0, e[3] = 0, e[4] = 0, e[5] = 1, e[6] = 0, e[7] = 0, e[8] = 0, e[9] = 0, e[10] = 1, e[11] = 0, e[12] = 0, e[13] = 0, e[14] = 0, e[15] = 1, e;
              }
            }
          ),
          /***/
          11191: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                create: e(87519),
                clone: e(99698),
                copy: e(57938),
                identity: e(87193),
                transpose: e(10256),
                invert: e(96559),
                adjoint: e(84840),
                determinant: e(6900),
                multiply: e(14787),
                translate: e(4165),
                scale: e(8697),
                rotate: e(32416),
                rotateX: e(81066),
                rotateY: e(54201),
                rotateZ: e(33920),
                fromRotation: e(43061),
                fromRotationTranslation: e(33606),
                fromScaling: e(98698),
                fromTranslation: e(6924),
                fromXRotation: e(81181),
                fromYRotation: e(95258),
                fromZRotation: e(94815),
                fromQuat: e(36472),
                frustum: e(87301),
                perspective: e(5313),
                perspectiveFromFieldOfView: e(22253),
                ortho: e(4633),
                lookAt: e(26645),
                str: e(66992)
              };
            }
          ),
          /***/
          96559: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e, b) {
                var P = b[0], n = b[1], s = b[2], T = b[3], A = b[4], p = b[5], u = b[6], t = b[7], r = b[8], i = b[9], a = b[10], l = b[11], o = b[12], y = b[13], g = b[14], x = b[15], c = P * p - n * A, v = P * u - s * A, f = P * t - T * A, _ = n * u - s * p, S = n * t - T * p, M = s * t - T * u, C = r * y - i * o, m = r * g - a * o, L = r * x - l * o, d = i * g - a * y, h = i * x - l * y, E = a * x - l * g, w = c * E - v * h + f * d + _ * L - S * m + M * C;
                return w ? (w = 1 / w, e[0] = (p * E - u * h + t * d) * w, e[1] = (s * h - n * E - T * d) * w, e[2] = (y * M - g * S + x * _) * w, e[3] = (a * S - i * M - l * _) * w, e[4] = (u * L - A * E - t * m) * w, e[5] = (P * E - s * L + T * m) * w, e[6] = (g * f - o * M - x * v) * w, e[7] = (r * M - a * f + l * v) * w, e[8] = (A * h - p * L + t * C) * w, e[9] = (n * L - P * h - T * C) * w, e[10] = (o * S - y * f + x * c) * w, e[11] = (i * f - r * S - l * c) * w, e[12] = (p * m - A * d - u * C) * w, e[13] = (P * d - n * m + s * C) * w, e[14] = (y * v - o * _ - g * c) * w, e[15] = (r * _ - i * v + a * c) * w, e) : null;
              }
            }
          ),
          /***/
          26645: (
            /***/
            function(Y, K, e) {
              var b = e(87193);
              Y.exports = P;
              function P(n, s, T, A) {
                var p, u, t, r, i, a, l, o, y, g, x = s[0], c = s[1], v = s[2], f = A[0], _ = A[1], S = A[2], M = T[0], C = T[1], m = T[2];
                return Math.abs(x - M) < 1e-6 && Math.abs(c - C) < 1e-6 && Math.abs(v - m) < 1e-6 ? b(n) : (l = x - M, o = c - C, y = v - m, g = 1 / Math.sqrt(l * l + o * o + y * y), l *= g, o *= g, y *= g, p = _ * y - S * o, u = S * l - f * y, t = f * o - _ * l, g = Math.sqrt(p * p + u * u + t * t), g ? (g = 1 / g, p *= g, u *= g, t *= g) : (p = 0, u = 0, t = 0), r = o * t - y * u, i = y * p - l * t, a = l * u - o * p, g = Math.sqrt(r * r + i * i + a * a), g ? (g = 1 / g, r *= g, i *= g, a *= g) : (r = 0, i = 0, a = 0), n[0] = p, n[1] = r, n[2] = l, n[3] = 0, n[4] = u, n[5] = i, n[6] = o, n[7] = 0, n[8] = t, n[9] = a, n[10] = y, n[11] = 0, n[12] = -(p * x + u * c + t * v), n[13] = -(r * x + i * c + a * v), n[14] = -(l * x + o * c + y * v), n[15] = 1, n);
              }
            }
          ),
          /***/
          14787: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e, b, P) {
                var n = b[0], s = b[1], T = b[2], A = b[3], p = b[4], u = b[5], t = b[6], r = b[7], i = b[8], a = b[9], l = b[10], o = b[11], y = b[12], g = b[13], x = b[14], c = b[15], v = P[0], f = P[1], _ = P[2], S = P[3];
                return e[0] = v * n + f * p + _ * i + S * y, e[1] = v * s + f * u + _ * a + S * g, e[2] = v * T + f * t + _ * l + S * x, e[3] = v * A + f * r + _ * o + S * c, v = P[4], f = P[5], _ = P[6], S = P[7], e[4] = v * n + f * p + _ * i + S * y, e[5] = v * s + f * u + _ * a + S * g, e[6] = v * T + f * t + _ * l + S * x, e[7] = v * A + f * r + _ * o + S * c, v = P[8], f = P[9], _ = P[10], S = P[11], e[8] = v * n + f * p + _ * i + S * y, e[9] = v * s + f * u + _ * a + S * g, e[10] = v * T + f * t + _ * l + S * x, e[11] = v * A + f * r + _ * o + S * c, v = P[12], f = P[13], _ = P[14], S = P[15], e[12] = v * n + f * p + _ * i + S * y, e[13] = v * s + f * u + _ * a + S * g, e[14] = v * T + f * t + _ * l + S * x, e[15] = v * A + f * r + _ * o + S * c, e;
              }
            }
          ),
          /***/
          4633: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e, b, P, n, s, T, A) {
                var p = 1 / (b - P), u = 1 / (n - s), t = 1 / (T - A);
                return e[0] = -2 * p, e[1] = 0, e[2] = 0, e[3] = 0, e[4] = 0, e[5] = -2 * u, e[6] = 0, e[7] = 0, e[8] = 0, e[9] = 0, e[10] = 2 * t, e[11] = 0, e[12] = (b + P) * p, e[13] = (s + n) * u, e[14] = (A + T) * t, e[15] = 1, e;
              }
            }
          ),
          /***/
          5313: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e, b, P, n, s) {
                var T = 1 / Math.tan(b / 2), A = 1 / (n - s);
                return e[0] = T / P, e[1] = 0, e[2] = 0, e[3] = 0, e[4] = 0, e[5] = T, e[6] = 0, e[7] = 0, e[8] = 0, e[9] = 0, e[10] = (s + n) * A, e[11] = -1, e[12] = 0, e[13] = 0, e[14] = 2 * s * n * A, e[15] = 0, e;
              }
            }
          ),
          /***/
          22253: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e, b, P, n) {
                var s = Math.tan(b.upDegrees * Math.PI / 180), T = Math.tan(b.downDegrees * Math.PI / 180), A = Math.tan(b.leftDegrees * Math.PI / 180), p = Math.tan(b.rightDegrees * Math.PI / 180), u = 2 / (A + p), t = 2 / (s + T);
                return e[0] = u, e[1] = 0, e[2] = 0, e[3] = 0, e[4] = 0, e[5] = t, e[6] = 0, e[7] = 0, e[8] = -((A - p) * u * 0.5), e[9] = (s - T) * t * 0.5, e[10] = n / (P - n), e[11] = -1, e[12] = 0, e[13] = 0, e[14] = n * P / (P - n), e[15] = 0, e;
              }
            }
          ),
          /***/
          32416: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e, b, P, n) {
                var s = n[0], T = n[1], A = n[2], p = Math.sqrt(s * s + T * T + A * A), u, t, r, i, a, l, o, y, g, x, c, v, f, _, S, M, C, m, L, d, h, E, w, z;
                return Math.abs(p) < 1e-6 ? null : (p = 1 / p, s *= p, T *= p, A *= p, u = Math.sin(P), t = Math.cos(P), r = 1 - t, i = b[0], a = b[1], l = b[2], o = b[3], y = b[4], g = b[5], x = b[6], c = b[7], v = b[8], f = b[9], _ = b[10], S = b[11], M = s * s * r + t, C = T * s * r + A * u, m = A * s * r - T * u, L = s * T * r - A * u, d = T * T * r + t, h = A * T * r + s * u, E = s * A * r + T * u, w = T * A * r - s * u, z = A * A * r + t, e[0] = i * M + y * C + v * m, e[1] = a * M + g * C + f * m, e[2] = l * M + x * C + _ * m, e[3] = o * M + c * C + S * m, e[4] = i * L + y * d + v * h, e[5] = a * L + g * d + f * h, e[6] = l * L + x * d + _ * h, e[7] = o * L + c * d + S * h, e[8] = i * E + y * w + v * z, e[9] = a * E + g * w + f * z, e[10] = l * E + x * w + _ * z, e[11] = o * E + c * w + S * z, b !== e && (e[12] = b[12], e[13] = b[13], e[14] = b[14], e[15] = b[15]), e);
              }
            }
          ),
          /***/
          81066: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e, b, P) {
                var n = Math.sin(P), s = Math.cos(P), T = b[4], A = b[5], p = b[6], u = b[7], t = b[8], r = b[9], i = b[10], a = b[11];
                return b !== e && (e[0] = b[0], e[1] = b[1], e[2] = b[2], e[3] = b[3], e[12] = b[12], e[13] = b[13], e[14] = b[14], e[15] = b[15]), e[4] = T * s + t * n, e[5] = A * s + r * n, e[6] = p * s + i * n, e[7] = u * s + a * n, e[8] = t * s - T * n, e[9] = r * s - A * n, e[10] = i * s - p * n, e[11] = a * s - u * n, e;
              }
            }
          ),
          /***/
          54201: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e, b, P) {
                var n = Math.sin(P), s = Math.cos(P), T = b[0], A = b[1], p = b[2], u = b[3], t = b[8], r = b[9], i = b[10], a = b[11];
                return b !== e && (e[4] = b[4], e[5] = b[5], e[6] = b[6], e[7] = b[7], e[12] = b[12], e[13] = b[13], e[14] = b[14], e[15] = b[15]), e[0] = T * s - t * n, e[1] = A * s - r * n, e[2] = p * s - i * n, e[3] = u * s - a * n, e[8] = T * n + t * s, e[9] = A * n + r * s, e[10] = p * n + i * s, e[11] = u * n + a * s, e;
              }
            }
          ),
          /***/
          33920: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e, b, P) {
                var n = Math.sin(P), s = Math.cos(P), T = b[0], A = b[1], p = b[2], u = b[3], t = b[4], r = b[5], i = b[6], a = b[7];
                return b !== e && (e[8] = b[8], e[9] = b[9], e[10] = b[10], e[11] = b[11], e[12] = b[12], e[13] = b[13], e[14] = b[14], e[15] = b[15]), e[0] = T * s + t * n, e[1] = A * s + r * n, e[2] = p * s + i * n, e[3] = u * s + a * n, e[4] = t * s - T * n, e[5] = r * s - A * n, e[6] = i * s - p * n, e[7] = a * s - u * n, e;
              }
            }
          ),
          /***/
          8697: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e, b, P) {
                var n = P[0], s = P[1], T = P[2];
                return e[0] = b[0] * n, e[1] = b[1] * n, e[2] = b[2] * n, e[3] = b[3] * n, e[4] = b[4] * s, e[5] = b[5] * s, e[6] = b[6] * s, e[7] = b[7] * s, e[8] = b[8] * T, e[9] = b[9] * T, e[10] = b[10] * T, e[11] = b[11] * T, e[12] = b[12], e[13] = b[13], e[14] = b[14], e[15] = b[15], e;
              }
            }
          ),
          /***/
          66992: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e) {
                return "mat4(" + e[0] + ", " + e[1] + ", " + e[2] + ", " + e[3] + ", " + e[4] + ", " + e[5] + ", " + e[6] + ", " + e[7] + ", " + e[8] + ", " + e[9] + ", " + e[10] + ", " + e[11] + ", " + e[12] + ", " + e[13] + ", " + e[14] + ", " + e[15] + ")";
              }
            }
          ),
          /***/
          4165: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e, b, P) {
                var n = P[0], s = P[1], T = P[2], A, p, u, t, r, i, a, l, o, y, g, x;
                return b === e ? (e[12] = b[0] * n + b[4] * s + b[8] * T + b[12], e[13] = b[1] * n + b[5] * s + b[9] * T + b[13], e[14] = b[2] * n + b[6] * s + b[10] * T + b[14], e[15] = b[3] * n + b[7] * s + b[11] * T + b[15]) : (A = b[0], p = b[1], u = b[2], t = b[3], r = b[4], i = b[5], a = b[6], l = b[7], o = b[8], y = b[9], g = b[10], x = b[11], e[0] = A, e[1] = p, e[2] = u, e[3] = t, e[4] = r, e[5] = i, e[6] = a, e[7] = l, e[8] = o, e[9] = y, e[10] = g, e[11] = x, e[12] = A * n + r * s + o * T + b[12], e[13] = p * n + i * s + y * T + b[13], e[14] = u * n + a * s + g * T + b[14], e[15] = t * n + l * s + x * T + b[15]), e;
              }
            }
          ),
          /***/
          10256: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e, b) {
                if (e === b) {
                  var P = b[1], n = b[2], s = b[3], T = b[6], A = b[7], p = b[11];
                  e[1] = b[4], e[2] = b[8], e[3] = b[12], e[4] = P, e[6] = b[9], e[7] = b[13], e[8] = n, e[9] = T, e[11] = b[14], e[12] = s, e[13] = A, e[14] = p;
                } else
                  e[0] = b[0], e[1] = b[4], e[2] = b[8], e[3] = b[12], e[4] = b[1], e[5] = b[5], e[6] = b[9], e[7] = b[13], e[8] = b[2], e[9] = b[6], e[10] = b[10], e[11] = b[14], e[12] = b[3], e[13] = b[7], e[14] = b[11], e[15] = b[15];
                return e;
              }
            }
          ),
          /***/
          74024: (
            /***/
            function(Y, K, e) {
              var b = e(59518), P = e(6807), n = e(81330), s = e(38862), T = e(93103), A = e(162), p = e(68950), u = e(66127), t = e(5137), r = e(29388), i = e(4957), a = e(44626), l = e(44431), o = e(27976), y = e(12673), g = e(83473), x = e(54689), c = x.nextPow2, v = new T(), f = !1;
              if (document.body) {
                var _ = document.body.appendChild(document.createElement("div"));
                _.style.font = "italic small-caps bold condensed 16px/2 cursive", getComputedStyle(_).fontStretch && (f = !0), document.body.removeChild(_);
              }
              var S = function(m) {
                M(m) ? (m = { regl: m }, this.gl = m.regl._gl) : this.gl = s(m), this.shader = v.get(this.gl), this.shader ? this.regl = this.shader.regl : this.regl = m.regl || n({ gl: this.gl }), this.charBuffer = this.regl.buffer({ type: "uint8", usage: "stream" }), this.sizeBuffer = this.regl.buffer({ type: "float", usage: "stream" }), this.shader || (this.shader = this.createShader(), v.set(this.gl, this.shader)), this.batch = [], this.fontSize = [], this.font = [], this.fontAtlas = [], this.draw = this.shader.draw.bind(this), this.render = function() {
                  this.regl._refresh(), this.draw(this.batch);
                }, this.canvas = this.gl.canvas, this.update(r(m) ? m : {});
              };
              S.prototype.createShader = function() {
                var m = this.regl, L = m({
                  blend: {
                    enable: !0,
                    color: [0, 0, 0, 1],
                    func: {
                      srcRGB: "src alpha",
                      dstRGB: "one minus src alpha",
                      srcAlpha: "one minus dst alpha",
                      dstAlpha: "one"
                    }
                  },
                  stencil: { enable: !1 },
                  depth: { enable: !1 },
                  count: m.prop("count"),
                  offset: m.prop("offset"),
                  attributes: {
                    charOffset: {
                      offset: 4,
                      stride: 8,
                      buffer: m.this("sizeBuffer")
                    },
                    width: {
                      offset: 0,
                      stride: 8,
                      buffer: m.this("sizeBuffer")
                    },
                    char: m.this("charBuffer"),
                    position: m.this("position")
                  },
                  uniforms: {
                    atlasSize: function(h, E) {
                      return [E.atlas.width, E.atlas.height];
                    },
                    atlasDim: function(h, E) {
                      return [E.atlas.cols, E.atlas.rows];
                    },
                    atlas: function(h, E) {
                      return E.atlas.texture;
                    },
                    charStep: function(h, E) {
                      return E.atlas.step;
                    },
                    em: function(h, E) {
                      return E.atlas.em;
                    },
                    color: m.prop("color"),
                    opacity: m.prop("opacity"),
                    viewport: m.this("viewportArray"),
                    scale: m.this("scale"),
                    align: m.prop("align"),
                    baseline: m.prop("baseline"),
                    translate: m.this("translate"),
                    positionOffset: m.prop("positionOffset")
                  },
                  primitive: "points",
                  viewport: m.this("viewport"),
                  vert: `
			precision highp float;
			attribute float width, charOffset, char;
			attribute vec2 position;
			uniform float fontSize, charStep, em, align, baseline;
			uniform vec4 viewport;
			uniform vec4 color;
			uniform vec2 atlasSize, atlasDim, scale, translate, positionOffset;
			varying vec2 charCoord, charId;
			varying float charWidth;
			varying vec4 fontColor;
			void main () {
				vec2 offset = floor(em * (vec2(align + charOffset, baseline)
					+ vec2(positionOffset.x, -positionOffset.y)))
					/ (viewport.zw * scale.xy);

				vec2 position = (position + translate) * scale;
				position += offset * scale;

				charCoord = position * viewport.zw + viewport.xy;

				gl_Position = vec4(position * 2. - 1., 0, 1);

				gl_PointSize = charStep;

				charId.x = mod(char, atlasDim.x);
				charId.y = floor(char / atlasDim.x);

				charWidth = width * em;

				fontColor = color / 255.;
			}`,
                  frag: `
			precision highp float;
			uniform float fontSize, charStep, opacity;
			uniform vec2 atlasSize;
			uniform vec4 viewport;
			uniform sampler2D atlas;
			varying vec4 fontColor;
			varying vec2 charCoord, charId;
			varying float charWidth;

			float lightness(vec4 color) {
				return color.r * 0.299 + color.g * 0.587 + color.b * 0.114;
			}

			void main () {
				vec2 uv = gl_FragCoord.xy - charCoord + charStep * .5;
				float halfCharStep = floor(charStep * .5 + .5);

				// invert y and shift by 1px (FF expecially needs that)
				uv.y = charStep - uv.y;

				// ignore points outside of character bounding box
				float halfCharWidth = ceil(charWidth * .5);
				if (floor(uv.x) > halfCharStep + halfCharWidth ||
					floor(uv.x) < halfCharStep - halfCharWidth) return;

				uv += charId * charStep;
				uv = uv / atlasSize;

				vec4 color = fontColor;
				vec4 mask = texture2D(atlas, uv);

				float maskY = lightness(mask);
				// float colorY = lightness(color);
				color.a *= maskY;
				color.a *= opacity;

				// color.a += .1;

				// antialiasing, see yiq color space y-channel formula
				// color.rgb += (1. - color.rgb) * (1. - mask.rgb);

				gl_FragColor = color;
			}`
                }), d = {};
                return { regl: m, draw: L, atlas: d };
              }, S.prototype.update = function(m) {
                var L = this;
                if (typeof m == "string")
                  m = { text: m };
                else if (!m)
                  return;
                m = P(m, {
                  position: "position positions coord coords coordinates",
                  font: "font fontFace fontface typeface cssFont css-font family fontFamily",
                  fontSize: "fontSize fontsize size font-size",
                  text: "text texts chars characters value values symbols",
                  align: "align alignment textAlign textbaseline",
                  baseline: "baseline textBaseline textbaseline",
                  direction: "dir direction textDirection",
                  color: "color colour fill fill-color fillColor textColor textcolor",
                  kerning: "kerning kern",
                  range: "range dataBox",
                  viewport: "vp viewport viewBox viewbox viewPort",
                  opacity: "opacity alpha transparency visible visibility opaque",
                  offset: "offset positionOffset padding shift indent indentation"
                }, !0), m.opacity != null && (Array.isArray(m.opacity) ? this.opacity = m.opacity.map(function(kt) {
                  return parseFloat(kt);
                }) : this.opacity = parseFloat(m.opacity)), m.viewport != null && (this.viewport = t(m.viewport), this.viewportArray = [this.viewport.x, this.viewport.y, this.viewport.width, this.viewport.height]), this.viewport == null && (this.viewport = {
                  x: 0,
                  y: 0,
                  width: this.gl.drawingBufferWidth,
                  height: this.gl.drawingBufferHeight
                }, this.viewportArray = [this.viewport.x, this.viewport.y, this.viewport.width, this.viewport.height]), m.kerning != null && (this.kerning = m.kerning), m.offset != null && (typeof m.offset == "number" && (m.offset = [m.offset, 0]), this.positionOffset = g(m.offset)), m.direction && (this.direction = m.direction), m.range && (this.range = m.range, this.scale = [1 / (m.range[2] - m.range[0]), 1 / (m.range[3] - m.range[1])], this.translate = [-m.range[0], -m.range[1]]), m.scale && (this.scale = m.scale), m.translate && (this.translate = m.translate), this.scale || (this.scale = [1 / this.viewport.width, 1 / this.viewport.height]), this.translate || (this.translate = [0, 0]), !this.font.length && !m.font && (m.font = S.baseFontSize + "px sans-serif");
                var d = !1, h = !1;
                if (m.font && (Array.isArray(m.font) ? m.font : [m.font]).forEach(function(kt, re) {
                  if (typeof kt == "string")
                    try {
                      kt = b.parse(kt);
                    } catch {
                      kt = b.parse(S.baseFontSize + "px " + kt);
                    }
                  else {
                    var ge = kt.style, _e = kt.weight, ce = kt.stretch, ae = kt.variant;
                    kt = b.parse(b.stringify(kt)), ge && (kt.style = ge), _e && (kt.weight = _e), ce && (kt.stretch = ce), ae && (kt.variant = ae);
                  }
                  var Se = b.stringify({
                    size: S.baseFontSize,
                    family: kt.family,
                    stretch: f ? kt.stretch : void 0,
                    variant: kt.variant,
                    weight: kt.weight,
                    style: kt.style
                  }), ze = i(kt.size), Ne = Math.round(ze[0] * a(ze[1]));
                  if (Ne !== L.fontSize[re] && (h = !0, L.fontSize[re] = Ne), (!L.font[re] || Se != L.font[re].baseString) && (d = !0, L.font[re] = S.fonts[Se], !L.font[re])) {
                    var Ve = kt.family.join(", "), Oe = [kt.style];
                    kt.style != kt.variant && Oe.push(kt.variant), kt.variant != kt.weight && Oe.push(kt.weight), f && kt.weight != kt.stretch && Oe.push(kt.stretch), L.font[re] = {
                      baseString: Se,
                      // typeface
                      family: Ve,
                      weight: kt.weight,
                      stretch: kt.stretch,
                      style: kt.style,
                      variant: kt.variant,
                      // widths of characters
                      width: {},
                      // kernin pairs offsets
                      kerning: {},
                      metrics: y(Ve, {
                        origin: "top",
                        fontSize: S.baseFontSize,
                        fontStyle: Oe.join(" ")
                      })
                    }, S.fonts[Se] = L.font[re];
                  }
                }), (d || h) && this.font.forEach(function(kt, re) {
                  var ge = b.stringify({
                    size: L.fontSize[re],
                    family: kt.family,
                    stretch: f ? kt.stretch : void 0,
                    variant: kt.variant,
                    weight: kt.weight,
                    style: kt.style
                  });
                  if (L.fontAtlas[re] = L.shader.atlas[ge], !L.fontAtlas[re]) {
                    var _e = kt.metrics;
                    L.shader.atlas[ge] = L.fontAtlas[re] = {
                      fontString: ge,
                      // even step is better for rendered characters
                      step: Math.ceil(L.fontSize[re] * _e.bottom * 0.5) * 2,
                      em: L.fontSize[re],
                      cols: 0,
                      rows: 0,
                      height: 0,
                      width: 0,
                      chars: [],
                      ids: {},
                      texture: L.regl.texture()
                    };
                  }
                  m.text == null && (m.text = L.text);
                }), typeof m.text == "string" && m.position && m.position.length > 2) {
                  for (var E = Array(m.position.length * 0.5), w = 0; w < E.length; w++)
                    E[w] = m.text;
                  m.text = E;
                }
                var z;
                if (m.text != null || d) {
                  if (this.textOffsets = [0], Array.isArray(m.text)) {
                    this.count = m.text[0].length, this.counts = [this.count];
                    for (var O = 1; O < m.text.length; O++)
                      this.textOffsets[O] = this.textOffsets[O - 1] + m.text[O - 1].length, this.count += m.text[O].length, this.counts.push(m.text[O].length);
                    this.text = m.text.join("");
                  } else
                    this.text = m.text, this.count = this.text.length, this.counts = [this.count];
                  z = [], this.font.forEach(function(kt, re) {
                    S.atlasContext.font = kt.baseString;
                    for (var ge = L.fontAtlas[re], _e = 0; _e < L.text.length; _e++) {
                      var ce = L.text.charAt(_e);
                      if (ge.ids[ce] == null && (ge.ids[ce] = ge.chars.length, ge.chars.push(ce), z.push(ce)), kt.width[ce] == null && (kt.width[ce] = S.atlasContext.measureText(ce).width / S.baseFontSize, L.kerning)) {
                        var ae = [];
                        for (var Se in kt.width)
                          ae.push(Se + ce, ce + Se);
                        o(kt.kerning, l(kt.family, {
                          pairs: ae
                        }));
                      }
                    }
                  });
                }
                if (m.position)
                  if (m.position.length > 2) {
                    for (var B = !m.position[0].length, V = u.mallocFloat(this.count * 2), U = 0, H = 0; U < this.counts.length; U++) {
                      var F = this.counts[U];
                      if (B)
                        for (var G = 0; G < F; G++)
                          V[H++] = m.position[U * 2], V[H++] = m.position[U * 2 + 1];
                      else
                        for (var q = 0; q < F; q++)
                          V[H++] = m.position[U][0], V[H++] = m.position[U][1];
                    }
                    this.position.call ? this.position({
                      type: "float",
                      data: V
                    }) : this.position = this.regl.buffer({
                      type: "float",
                      data: V
                    }), u.freeFloat(V);
                  } else
                    this.position.destroy && this.position.destroy(), this.position = {
                      constant: m.position
                    };
                if (m.text || d) {
                  var rt = u.mallocUint8(this.count), st = u.mallocFloat(this.count * 2);
                  this.textWidth = [];
                  for (var vt = 0, ht = 0; vt < this.counts.length; vt++) {
                    for (var et = this.counts[vt], Q = this.font[vt] || this.font[0], j = this.fontAtlas[vt] || this.fontAtlas[0], at = 0; at < et; at++) {
                      var ut = this.text.charAt(ht), nt = this.text.charAt(ht - 1);
                      if (rt[ht] = j.ids[ut], st[ht * 2] = Q.width[ut], at) {
                        var X = st[ht * 2 - 2], ct = st[ht * 2], lt = st[ht * 2 - 1], pt = lt + X * 0.5 + ct * 0.5;
                        if (this.kerning) {
                          var wt = Q.kerning[nt + ut];
                          wt && (pt += wt * 1e-3);
                        }
                        st[ht * 2 + 1] = pt;
                      } else
                        st[ht * 2 + 1] = st[ht * 2] * 0.5;
                      ht++;
                    }
                    this.textWidth.push(
                      st.length ? (
                        // last offset + half last width
                        st[ht * 2 - 2] * 0.5 + st[ht * 2 - 1]
                      ) : 0
                    );
                  }
                  m.align || (m.align = this.align), this.charBuffer({ data: rt, type: "uint8", usage: "stream" }), this.sizeBuffer({ data: st, type: "float", usage: "stream" }), u.freeUint8(rt), u.freeFloat(st), z.length && this.font.forEach(function(kt, re) {
                    var ge = L.fontAtlas[re], _e = ge.step, ce = Math.floor(S.maxAtlasSize / _e), ae = Math.min(ce, ge.chars.length), Se = Math.ceil(ge.chars.length / ae), ze = c(ae * _e), Ne = c(Se * _e);
                    ge.width = ze, ge.height = Ne, ge.rows = Se, ge.cols = ae, ge.em && ge.texture({
                      data: p({
                        canvas: S.atlasCanvas,
                        font: ge.fontString,
                        chars: ge.chars,
                        shape: [ze, Ne],
                        step: [_e, _e]
                      })
                    });
                  });
                }
                if (m.align && (this.align = m.align, this.alignOffset = this.textWidth.map(function(kt, re) {
                  var ge = Array.isArray(L.align) ? L.align.length > 1 ? L.align[re] : L.align[0] : L.align;
                  if (typeof ge == "number")
                    return ge;
                  switch (ge) {
                    case "right":
                    case "end":
                      return -kt;
                    case "center":
                    case "centre":
                    case "middle":
                      return -kt * 0.5;
                  }
                  return 0;
                })), this.baseline == null && m.baseline == null && (m.baseline = 0), m.baseline != null && (this.baseline = m.baseline, Array.isArray(this.baseline) || (this.baseline = [this.baseline]), this.baselineOffset = this.baseline.map(function(kt, re) {
                  var ge = (L.font[re] || L.font[0]).metrics, _e = 0;
                  return _e += ge.bottom * 0.5, typeof kt == "number" ? _e += kt - ge.baseline : _e += -ge[kt], _e *= -1, _e;
                })), m.color != null)
                  if (m.color || (m.color = "transparent"), typeof m.color == "string" || !isNaN(m.color))
                    this.color = A(m.color, "uint8");
                  else {
                    var Et;
                    if (typeof m.color[0] == "number" && m.color.length > this.counts.length) {
                      var Ct = m.color.length;
                      Et = u.mallocUint8(Ct);
                      for (var Gt = (m.color.subarray || m.color.slice).bind(m.color), Jt = 0; Jt < Ct; Jt += 4)
                        Et.set(A(Gt(Jt, Jt + 4), "uint8"), Jt);
                    } else {
                      var Qt = m.color.length;
                      Et = u.mallocUint8(Qt * 4);
                      for (var Vt = 0; Vt < Qt; Vt++)
                        Et.set(A(m.color[Vt] || 0, "uint8"), Vt * 4);
                    }
                    this.color = Et;
                  }
                if (m.position || m.text || m.color || m.baseline || m.align || m.font || m.offset || m.opacity) {
                  var zt = this.color.length > 4 || this.baselineOffset.length > 1 || this.align && this.align.length > 1 || this.fontAtlas.length > 1 || this.positionOffset.length > 2;
                  if (zt) {
                    var Rt = Math.max(
                      this.position.length * 0.5 || 0,
                      this.color.length * 0.25 || 0,
                      this.baselineOffset.length || 0,
                      this.alignOffset.length || 0,
                      this.font.length || 0,
                      this.opacity.length || 0,
                      this.positionOffset.length * 0.5 || 0
                    );
                    this.batch = Array(Rt);
                    for (var Wt = 0; Wt < this.batch.length; Wt++)
                      this.batch[Wt] = {
                        count: this.counts.length > 1 ? this.counts[Wt] : this.counts[0],
                        offset: this.textOffsets.length > 1 ? this.textOffsets[Wt] : this.textOffsets[0],
                        color: this.color ? this.color.length <= 4 ? this.color : this.color.subarray(Wt * 4, Wt * 4 + 4) : [0, 0, 0, 255],
                        opacity: Array.isArray(this.opacity) ? this.opacity[Wt] : this.opacity,
                        baseline: this.baselineOffset[Wt] != null ? this.baselineOffset[Wt] : this.baselineOffset[0],
                        align: this.align ? this.alignOffset[Wt] != null ? this.alignOffset[Wt] : this.alignOffset[0] : 0,
                        atlas: this.fontAtlas[Wt] || this.fontAtlas[0],
                        positionOffset: this.positionOffset.length > 2 ? this.positionOffset.subarray(Wt * 2, Wt * 2 + 2) : this.positionOffset
                      };
                  } else
                    this.count ? this.batch = [{
                      count: this.count,
                      offset: 0,
                      color: this.color || [0, 0, 0, 255],
                      opacity: Array.isArray(this.opacity) ? this.opacity[0] : this.opacity,
                      baseline: this.baselineOffset[0],
                      align: this.alignOffset ? this.alignOffset[0] : 0,
                      atlas: this.fontAtlas[0],
                      positionOffset: this.positionOffset
                    }] : this.batch = [];
                }
              }, S.prototype.destroy = function() {
              }, S.prototype.kerning = !0, S.prototype.position = { constant: new Float32Array(2) }, S.prototype.translate = null, S.prototype.scale = null, S.prototype.font = null, S.prototype.text = "", S.prototype.positionOffset = [0, 0], S.prototype.opacity = 1, S.prototype.color = new Uint8Array([0, 0, 0, 255]), S.prototype.alignOffset = [0, 0], S.maxAtlasSize = 1024, S.atlasCanvas = document.createElement("canvas"), S.atlasContext = S.atlasCanvas.getContext("2d", { alpha: !1 }), S.baseFontSize = 64, S.fonts = {};
              function M(C) {
                return typeof C == "function" && C._gl && C.prop && C.texture && C.buffer;
              }
              Y.exports = S;
            }
          ),
          /***/
          38862: (
            /***/
            function(Y, K, e) {
              var b = e(6807);
              Y.exports = function(u) {
                if (u ? typeof u == "string" && (u = { container: u }) : u = {}, n(u) ? u = { container: u } : s(u) ? u = { container: u } : T(u) ? u = { gl: u } : u = b(u, {
                  container: "container target element el canvas holder parent parentNode wrapper use ref root node",
                  gl: "gl context webgl glContext",
                  attrs: "attributes attrs contextAttributes",
                  pixelRatio: "pixelRatio pxRatio px ratio pxratio pixelratio",
                  width: "w width",
                  height: "h height"
                }, !0), u.pixelRatio || (u.pixelRatio = e.g.pixelRatio || 1), u.gl)
                  return u.gl;
                if (u.canvas && (u.container = u.canvas.parentNode), u.container) {
                  if (typeof u.container == "string") {
                    var t = document.querySelector(u.container);
                    if (!t) throw Error("Element " + u.container + " is not found");
                    u.container = t;
                  }
                  n(u.container) ? (u.canvas = u.container, u.container = u.canvas.parentNode) : u.canvas || (u.canvas = A(), u.container.appendChild(u.canvas), P(u));
                } else if (!u.canvas)
                  if (typeof document < "u")
                    u.container = document.body || document.documentElement, u.canvas = A(), u.container.appendChild(u.canvas), P(u);
                  else
                    throw Error("Not DOM environment. Use headless-gl.");
                return u.gl || ["webgl", "experimental-webgl", "webgl-experimental"].some(function(r) {
                  try {
                    u.gl = u.canvas.getContext(r, u.attrs);
                  } catch {
                  }
                  return u.gl;
                }), u.gl;
              };
              function P(p) {
                if (p.container)
                  if (p.container == document.body)
                    document.body.style.width || (p.canvas.width = p.width || p.pixelRatio * e.g.innerWidth), document.body.style.height || (p.canvas.height = p.height || p.pixelRatio * e.g.innerHeight);
                  else {
                    var u = p.container.getBoundingClientRect();
                    p.canvas.width = p.width || u.right - u.left, p.canvas.height = p.height || u.bottom - u.top;
                  }
              }
              function n(p) {
                return typeof p.getContext == "function" && "width" in p && "height" in p;
              }
              function s(p) {
                return typeof p.nodeName == "string" && typeof p.appendChild == "function" && typeof p.getBoundingClientRect == "function";
              }
              function T(p) {
                return typeof p.drawArrays == "function" || typeof p.drawElements == "function";
              }
              function A() {
                var p = document.createElement("canvas");
                return p.style.position = "absolute", p.style.top = 0, p.style.left = 0, p;
              }
            }
          ),
          /***/
          76765: (
            /***/
            function(Y) {
              Y.exports = function(K) {
                typeof K == "string" && (K = [K]);
                for (var e = [].slice.call(arguments, 1), b = [], P = 0; P < K.length - 1; P++)
                  b.push(K[P], e[P] || "");
                return b.push(K[P]), b.join("");
              };
            }
          ),
          /***/
          52991: (
            /***/
            function(Y, K, e) {
              var b = e(71129), P = b("%Object.getOwnPropertyDescriptor%", !0);
              if (P)
                try {
                  P([], "length");
                } catch {
                  P = null;
                }
              Y.exports = P;
            }
          ),
          /***/
          39784: (
            /***/
            function(Y, K, e) {
              var b = e(78253), P;
              typeof e.g.matchMedia == "function" ? P = !e.g.matchMedia("(hover: none)").matches : P = b, Y.exports = P;
            }
          ),
          /***/
          74043: (
            /***/
            function(Y, K, e) {
              var b = e(78253);
              function P() {
                var n = !1;
                try {
                  var s = Object.defineProperty({}, "passive", {
                    get: function() {
                      n = !0;
                    }
                  });
                  window.addEventListener("test", null, s), window.removeEventListener("test", null, s);
                } catch {
                  n = !1;
                }
                return n;
              }
              Y.exports = b && P();
            }
          ),
          /***/
          74268: (
            /***/
            function(Y, K, e) {
              var b = e(40891), P = function() {
                return !!b;
              };
              P.hasArrayLengthDefineBug = function() {
                if (!b)
                  return null;
                try {
                  return b([], "length", { value: 1 }).length !== 1;
                } catch {
                  return !0;
                }
              }, Y.exports = P;
            }
          ),
          /***/
          58436: (
            /***/
            function(Y) {
              var K = {
                foo: {}
              }, e = Object;
              Y.exports = function() {
                return { __proto__: K }.foo === K.foo && !({ __proto__: null } instanceof e);
              };
            }
          ),
          /***/
          8771: (
            /***/
            function(Y, K, e) {
              var b = typeof Symbol < "u" && Symbol, P = e(59457);
              Y.exports = function() {
                return typeof b != "function" || typeof Symbol != "function" || typeof b("foo") != "symbol" || typeof Symbol("bar") != "symbol" ? !1 : P();
              };
            }
          ),
          /***/
          59457: (
            /***/
            function(Y) {
              Y.exports = function() {
                if (typeof Symbol != "function" || typeof Object.getOwnPropertySymbols != "function")
                  return !1;
                if (typeof Symbol.iterator == "symbol")
                  return !0;
                var e = {}, b = Symbol("test"), P = Object(b);
                if (typeof b == "string" || Object.prototype.toString.call(b) !== "[object Symbol]" || Object.prototype.toString.call(P) !== "[object Symbol]")
                  return !1;
                var n = 42;
                e[b] = n;
                for (b in e)
                  return !1;
                if (typeof Object.keys == "function" && Object.keys(e).length !== 0 || typeof Object.getOwnPropertyNames == "function" && Object.getOwnPropertyNames(e).length !== 0)
                  return !1;
                var s = Object.getOwnPropertySymbols(e);
                if (s.length !== 1 || s[0] !== b || !Object.prototype.propertyIsEnumerable.call(e, b))
                  return !1;
                if (typeof Object.getOwnPropertyDescriptor == "function") {
                  var T = Object.getOwnPropertyDescriptor(e, b);
                  if (T.value !== n || T.enumerable !== !0)
                    return !1;
                }
                return !0;
              };
            }
          ),
          /***/
          36912: (
            /***/
            function(Y, K, e) {
              var b = e(59457);
              Y.exports = function() {
                return b() && !!Symbol.toStringTag;
              };
            }
          ),
          /***/
          80753: (
            /***/
            function(Y, K, e) {
              var b = Function.prototype.call, P = Object.prototype.hasOwnProperty, n = e(87547);
              Y.exports = n.call(b, P);
            }
          ),
          /***/
          27415: (
            /***/
            function(Y, K) {
              /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
              K.read = function(e, b, P, n, s) {
                var T, A, p = s * 8 - n - 1, u = (1 << p) - 1, t = u >> 1, r = -7, i = P ? s - 1 : 0, a = P ? -1 : 1, l = e[b + i];
                for (i += a, T = l & (1 << -r) - 1, l >>= -r, r += p; r > 0; T = T * 256 + e[b + i], i += a, r -= 8)
                  ;
                for (A = T & (1 << -r) - 1, T >>= -r, r += n; r > 0; A = A * 256 + e[b + i], i += a, r -= 8)
                  ;
                if (T === 0)
                  T = 1 - t;
                else {
                  if (T === u)
                    return A ? NaN : (l ? -1 : 1) * (1 / 0);
                  A = A + Math.pow(2, n), T = T - t;
                }
                return (l ? -1 : 1) * A * Math.pow(2, T - n);
              }, K.write = function(e, b, P, n, s, T) {
                var A, p, u, t = T * 8 - s - 1, r = (1 << t) - 1, i = r >> 1, a = s === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0, l = n ? 0 : T - 1, o = n ? 1 : -1, y = b < 0 || b === 0 && 1 / b < 0 ? 1 : 0;
                for (b = Math.abs(b), isNaN(b) || b === 1 / 0 ? (p = isNaN(b) ? 1 : 0, A = r) : (A = Math.floor(Math.log(b) / Math.LN2), b * (u = Math.pow(2, -A)) < 1 && (A--, u *= 2), A + i >= 1 ? b += a / u : b += a * Math.pow(2, 1 - i), b * u >= 2 && (A++, u /= 2), A + i >= r ? (p = 0, A = r) : A + i >= 1 ? (p = (b * u - 1) * Math.pow(2, s), A = A + i) : (p = b * Math.pow(2, i - 1) * Math.pow(2, s), A = 0)); s >= 8; e[P + l] = p & 255, l += o, p /= 256, s -= 8)
                  ;
                for (A = A << s | p, t += s; t > 0; e[P + l] = A & 255, l += o, A /= 256, t -= 8)
                  ;
                e[P + l - o] |= y * 128;
              };
            }
          ),
          /***/
          28062: (
            /***/
            function(Y) {
              typeof Object.create == "function" ? Y.exports = function(e, b) {
                b && (e.super_ = b, e.prototype = Object.create(b.prototype, {
                  constructor: {
                    value: e,
                    enumerable: !1,
                    writable: !0,
                    configurable: !0
                  }
                }));
              } : Y.exports = function(e, b) {
                if (b) {
                  e.super_ = b;
                  var P = function() {
                  };
                  P.prototype = b.prototype, e.prototype = new P(), e.prototype.constructor = e;
                }
              };
            }
          ),
          /***/
          40280: (
            /***/
            function(Y, K, e) {
              var b = e(36912)(), P = e(63063), n = P("Object.prototype.toString"), s = function(u) {
                return b && u && typeof u == "object" && Symbol.toStringTag in u ? !1 : n(u) === "[object Arguments]";
              }, T = function(u) {
                return s(u) ? !0 : u !== null && typeof u == "object" && typeof u.length == "number" && u.length >= 0 && n(u) !== "[object Array]" && n(u.callee) === "[object Function]";
              }, A = function() {
                return s(arguments);
              }();
              s.isLegacyArguments = T, Y.exports = A ? s : T;
            }
          ),
          /***/
          78253: (
            /***/
            function(Y) {
              Y.exports = !0;
            }
          ),
          /***/
          82756: (
            /***/
            function(Y) {
              var K = Function.prototype.toString, e = typeof Reflect == "object" && Reflect !== null && Reflect.apply, b, P;
              if (typeof e == "function" && typeof Object.defineProperty == "function")
                try {
                  b = Object.defineProperty({}, "length", {
                    get: function() {
                      throw P;
                    }
                  }), P = {}, e(function() {
                    throw 42;
                  }, null, b);
                } catch (x) {
                  x !== P && (e = null);
                }
              else
                e = null;
              var n = /^\s*class\b/, s = function(c) {
                try {
                  var v = K.call(c);
                  return n.test(v);
                } catch {
                  return !1;
                }
              }, T = function(c) {
                try {
                  return s(c) ? !1 : (K.call(c), !0);
                } catch {
                  return !1;
                }
              }, A = Object.prototype.toString, p = "[object Object]", u = "[object Function]", t = "[object GeneratorFunction]", r = "[object HTMLAllCollection]", i = "[object HTML document.all class]", a = "[object HTMLCollection]", l = typeof Symbol == "function" && !!Symbol.toStringTag, o = !(0 in [,]), y = function() {
                return !1;
              };
              if (typeof document == "object") {
                var g = document.all;
                A.call(g) === A.call(document.all) && (y = function(c) {
                  if ((o || !c) && (typeof c > "u" || typeof c == "object"))
                    try {
                      var v = A.call(c);
                      return (v === r || v === i || v === a || v === p) && c("") == null;
                    } catch {
                    }
                  return !1;
                });
              }
              Y.exports = e ? function(c) {
                if (y(c))
                  return !0;
                if (!c || typeof c != "function" && typeof c != "object")
                  return !1;
                try {
                  e(c, null, b);
                } catch (v) {
                  if (v !== P)
                    return !1;
                }
                return !s(c) && T(c);
              } : function(c) {
                if (y(c))
                  return !0;
                if (!c || typeof c != "function" && typeof c != "object")
                  return !1;
                if (l)
                  return T(c);
                if (s(c))
                  return !1;
                var v = A.call(c);
                return v !== u && v !== t && !/^\[object HTML/.test(v) ? !1 : T(c);
              };
            }
          ),
          /***/
          80340: (
            /***/
            function(Y, K, e) {
              var b = Object.prototype.toString, P = Function.prototype.toString, n = /^\s*(?:function)?\*/, s = e(36912)(), T = Object.getPrototypeOf, A = function() {
                if (!s)
                  return !1;
                try {
                  return Function("return function*() {}")();
                } catch {
                }
              }, p;
              Y.exports = function(t) {
                if (typeof t != "function")
                  return !1;
                if (n.test(P.call(t)))
                  return !0;
                if (!s) {
                  var r = b.call(t);
                  return r === "[object GeneratorFunction]";
                }
                if (!T)
                  return !1;
                if (typeof p > "u") {
                  var i = A();
                  p = i ? T(i) : !1;
                }
                return T(t) === p;
              };
            }
          ),
          /***/
          39488: (
            /***/
            function(Y) {
              Y.exports = typeof navigator < "u" && (/MSIE/.test(navigator.userAgent) || /Trident\//.test(navigator.appVersion));
            }
          ),
          /***/
          73287: (
            /***/
            function(Y) {
              Y.exports = function(e) {
                return e !== e;
              };
            }
          ),
          /***/
          63057: (
            /***/
            function(Y, K, e) {
              var b = e(87227), P = e(97936), n = e(73287), s = e(60758), T = e(85684), A = b(s(), Number);
              P(A, {
                getPolyfill: s,
                implementation: n,
                shim: T
              }), Y.exports = A;
            }
          ),
          /***/
          60758: (
            /***/
            function(Y, K, e) {
              var b = e(73287);
              Y.exports = function() {
                return Number.isNaN && Number.isNaN(NaN) && !Number.isNaN("a") ? Number.isNaN : b;
              };
            }
          ),
          /***/
          85684: (
            /***/
            function(Y, K, e) {
              var b = e(97936), P = e(60758);
              Y.exports = function() {
                var s = P();
                return b(Number, { isNaN: s }, {
                  isNaN: function() {
                    return Number.isNaN !== s;
                  }
                }), s;
              };
            }
          ),
          /***/
          60201: (
            /***/
            function(Y) {
              Y.exports = function(K) {
                var e = typeof K;
                return K !== null && (e === "object" || e === "function");
              };
            }
          ),
          /***/
          29388: (
            /***/
            function(Y) {
              var K = Object.prototype.toString;
              Y.exports = function(e) {
                var b;
                return K.call(e) === "[object Object]" && (b = Object.getPrototypeOf(e), b === null || b === Object.getPrototypeOf({}));
              };
            }
          ),
          /***/
          9914: (
            /***/
            function(Y) {
              Y.exports = function(K) {
                for (var e = K.length, b, P = 0; P < e; P++)
                  if (b = K.charCodeAt(P), (b < 9 || b > 13) && b !== 32 && b !== 133 && b !== 160 && b !== 5760 && b !== 6158 && (b < 8192 || b > 8205) && b !== 8232 && b !== 8233 && b !== 8239 && b !== 8287 && b !== 8288 && b !== 12288 && b !== 65279)
                    return !1;
                return !0;
              };
            }
          ),
          /***/
          13986: (
            /***/
            function(Y) {
              Y.exports = function(e) {
                return typeof e != "string" ? !1 : (e = e.trim(), !!(/^[mzlhvcsqta]\s*[-+.0-9][^mlhvzcsqta]+/i.test(e) && /[\dz]$/i.test(e) && e.length > 4));
              };
            }
          ),
          /***/
          15628: (
            /***/
            function(Y, K, e) {
              var b = e(61262), P = e(70085), n = e(63063), s = n("Object.prototype.toString"), T = e(36912)(), A = e(52991), p = typeof globalThis > "u" ? e.g : globalThis, u = P(), t = n("Array.prototype.indexOf", !0) || function(y, g) {
                for (var x = 0; x < y.length; x += 1)
                  if (y[x] === g)
                    return x;
                return -1;
              }, r = n("String.prototype.slice"), i = {}, a = Object.getPrototypeOf;
              T && A && a && b(u, function(o) {
                var y = new p[o]();
                if (Symbol.toStringTag in y) {
                  var g = a(y), x = A(g, Symbol.toStringTag);
                  if (!x) {
                    var c = a(g);
                    x = A(c, Symbol.toStringTag);
                  }
                  i[o] = x.get;
                }
              });
              var l = function(y) {
                var g = !1;
                return b(i, function(x, c) {
                  if (!g)
                    try {
                      g = x.call(y) === c;
                    } catch {
                    }
                }), g;
              };
              Y.exports = function(y) {
                if (!y || typeof y != "object")
                  return !1;
                if (!T || !(Symbol.toStringTag in y)) {
                  var g = r(s(y), 8, -1);
                  return t(u, g) > -1;
                }
                return A ? l(y) : !1;
              };
            }
          ),
          /***/
          62914: (
            /***/
            function(Y) {
              Y.exports = Math.log2 || function(K) {
                return Math.log(K) * Math.LOG2E;
              };
            }
          ),
          /***/
          99978: (
            /***/
            function(Y, K, e) {
              Y.exports = P;
              var b = e(41926);
              function P(n, s) {
                s || (s = n, n = window);
                var T = 0, A = 0, p = 0, u = {
                  shift: !1,
                  alt: !1,
                  control: !1,
                  meta: !1
                }, t = !1;
                function r(_) {
                  var S = !1;
                  return "altKey" in _ && (S = S || _.altKey !== u.alt, u.alt = !!_.altKey), "shiftKey" in _ && (S = S || _.shiftKey !== u.shift, u.shift = !!_.shiftKey), "ctrlKey" in _ && (S = S || _.ctrlKey !== u.control, u.control = !!_.ctrlKey), "metaKey" in _ && (S = S || _.metaKey !== u.meta, u.meta = !!_.metaKey), S;
                }
                function i(_, S) {
                  var M = b.x(S), C = b.y(S);
                  "buttons" in S && (_ = S.buttons | 0), (_ !== T || M !== A || C !== p || r(S)) && (T = _ | 0, A = M || 0, p = C || 0, s && s(T, A, p, u));
                }
                function a(_) {
                  i(0, _);
                }
                function l() {
                  (T || A || p || u.shift || u.alt || u.meta || u.control) && (A = p = 0, T = 0, u.shift = u.alt = u.control = u.meta = !1, s && s(0, 0, 0, u));
                }
                function o(_) {
                  r(_) && s && s(T, A, p, u);
                }
                function y(_) {
                  b.buttons(_) === 0 ? i(0, _) : i(T, _);
                }
                function g(_) {
                  i(T | b.buttons(_), _);
                }
                function x(_) {
                  i(T & ~b.buttons(_), _);
                }
                function c() {
                  t || (t = !0, n.addEventListener("mousemove", y), n.addEventListener("mousedown", g), n.addEventListener("mouseup", x), n.addEventListener("mouseleave", a), n.addEventListener("mouseenter", a), n.addEventListener("mouseout", a), n.addEventListener("mouseover", a), n.addEventListener("blur", l), n.addEventListener("keyup", o), n.addEventListener("keydown", o), n.addEventListener("keypress", o), n !== window && (window.addEventListener("blur", l), window.addEventListener("keyup", o), window.addEventListener("keydown", o), window.addEventListener("keypress", o)));
                }
                function v() {
                  t && (t = !1, n.removeEventListener("mousemove", y), n.removeEventListener("mousedown", g), n.removeEventListener("mouseup", x), n.removeEventListener("mouseleave", a), n.removeEventListener("mouseenter", a), n.removeEventListener("mouseout", a), n.removeEventListener("mouseover", a), n.removeEventListener("blur", l), n.removeEventListener("keyup", o), n.removeEventListener("keydown", o), n.removeEventListener("keypress", o), n !== window && (window.removeEventListener("blur", l), window.removeEventListener("keyup", o), window.removeEventListener("keydown", o), window.removeEventListener("keypress", o)));
                }
                c();
                var f = {
                  element: n
                };
                return Object.defineProperties(f, {
                  enabled: {
                    get: function() {
                      return t;
                    },
                    set: function(_) {
                      _ ? c() : v();
                    },
                    enumerable: !0
                  },
                  buttons: {
                    get: function() {
                      return T;
                    },
                    enumerable: !0
                  },
                  x: {
                    get: function() {
                      return A;
                    },
                    enumerable: !0
                  },
                  y: {
                    get: function() {
                      return p;
                    },
                    enumerable: !0
                  },
                  mods: {
                    get: function() {
                      return u;
                    },
                    enumerable: !0
                  }
                }), f;
              }
            }
          ),
          /***/
          44039: (
            /***/
            function(Y) {
              var K = { left: 0, top: 0 };
              Y.exports = e;
              function e(P, n, s) {
                n = n || P.currentTarget || P.srcElement, Array.isArray(s) || (s = [0, 0]);
                var T = P.clientX || 0, A = P.clientY || 0, p = b(n);
                return s[0] = T - p.left, s[1] = A - p.top, s;
              }
              function b(P) {
                return P === window || P === document || P === document.body ? K : P.getBoundingClientRect();
              }
            }
          ),
          /***/
          41926: (
            /***/
            function(Y, K) {
              function e(s) {
                if (typeof s == "object") {
                  if ("buttons" in s)
                    return s.buttons;
                  if ("which" in s) {
                    var T = s.which;
                    if (T === 2)
                      return 4;
                    if (T === 3)
                      return 2;
                    if (T > 0)
                      return 1 << T - 1;
                  } else if ("button" in s) {
                    var T = s.button;
                    if (T === 1)
                      return 4;
                    if (T === 2)
                      return 2;
                    if (T >= 0)
                      return 1 << T;
                  }
                }
                return 0;
              }
              K.buttons = e;
              function b(s) {
                return s.target || s.srcElement || window;
              }
              K.element = b;
              function P(s) {
                if (typeof s == "object") {
                  if ("offsetX" in s)
                    return s.offsetX;
                  var T = b(s), A = T.getBoundingClientRect();
                  return s.clientX - A.left;
                }
                return 0;
              }
              K.x = P;
              function n(s) {
                if (typeof s == "object") {
                  if ("offsetY" in s)
                    return s.offsetY;
                  var T = b(s), A = T.getBoundingClientRect();
                  return s.clientY - A.top;
                }
                return 0;
              }
              K.y = n;
            }
          ),
          /***/
          20573: (
            /***/
            function(Y, K, e) {
              var b = e(44626);
              Y.exports = P;
              function P(n, s, T) {
                typeof n == "function" && (T = !!s, s = n, n = window);
                var A = b("ex", n), p = function(u) {
                  T && u.preventDefault();
                  var t = u.deltaX || 0, r = u.deltaY || 0, i = u.deltaZ || 0, a = u.deltaMode, l = 1;
                  switch (a) {
                    case 1:
                      l = A;
                      break;
                    case 2:
                      l = window.innerHeight;
                      break;
                  }
                  if (t *= l, r *= l, i *= l, t || r || i)
                    return s(t, r, i, u);
                };
                return n.addEventListener("wheel", p), p;
              }
            }
          ),
          /***/
          71116: (
            /***/
            function(Y, K, e) {
              var b;
              /*! Native Promise Only
                  v0.8.1 (c) Kyle Simpson
                  MIT License: http://getify.mit-license.org
              */
              (function(n, s, T) {
                s[n] = s[n] || T(), Y.exports ? Y.exports = s[n] : (b = (function() {
                  return s[n];
                }).call(K, e, K, Y), b !== void 0 && (Y.exports = b));
              })("Promise", typeof e.g < "u" ? e.g : this, function() {
                var n, s, T, A = Object.prototype.toString, p = typeof setImmediate < "u" ? function(f) {
                  return setImmediate(f);
                } : setTimeout;
                try {
                  Object.defineProperty({}, "x", {}), n = function(f, _, S, M) {
                    return Object.defineProperty(f, _, {
                      value: S,
                      writable: !0,
                      configurable: M !== !1
                    });
                  };
                } catch {
                  n = function(_, S, M) {
                    return _[S] = M, _;
                  };
                }
                T = /* @__PURE__ */ function() {
                  var f, _, S;
                  function M(C, m) {
                    this.fn = C, this.self = m, this.next = void 0;
                  }
                  return {
                    add: function(m, L) {
                      S = new M(m, L), _ ? _.next = S : f = S, _ = S, S = void 0;
                    },
                    drain: function() {
                      var m = f;
                      for (f = _ = s = void 0; m; )
                        m.fn.call(m.self), m = m.next;
                    }
                  };
                }();
                function u(v, f) {
                  T.add(v, f), s || (s = p(T.drain));
                }
                function t(v) {
                  var f, _ = typeof v;
                  return v != null && (_ == "object" || _ == "function") && (f = v.then), typeof f == "function" ? f : !1;
                }
                function r() {
                  for (var v = 0; v < this.chain.length; v++)
                    i(
                      this,
                      this.state === 1 ? this.chain[v].success : this.chain[v].failure,
                      this.chain[v]
                    );
                  this.chain.length = 0;
                }
                function i(v, f, _) {
                  var S, M;
                  try {
                    f === !1 ? _.reject(v.msg) : (f === !0 ? S = v.msg : S = f.call(void 0, v.msg), S === _.promise ? _.reject(TypeError("Promise-chain cycle")) : (M = t(S)) ? M.call(S, _.resolve, _.reject) : _.resolve(S));
                  } catch (C) {
                    _.reject(C);
                  }
                }
                function a(v) {
                  var f, _ = this;
                  if (!_.triggered) {
                    _.triggered = !0, _.def && (_ = _.def);
                    try {
                      (f = t(v)) ? u(function() {
                        var S = new y(_);
                        try {
                          f.call(
                            v,
                            function() {
                              a.apply(S, arguments);
                            },
                            function() {
                              l.apply(S, arguments);
                            }
                          );
                        } catch (M) {
                          l.call(S, M);
                        }
                      }) : (_.msg = v, _.state = 1, _.chain.length > 0 && u(r, _));
                    } catch (S) {
                      l.call(new y(_), S);
                    }
                  }
                }
                function l(v) {
                  var f = this;
                  f.triggered || (f.triggered = !0, f.def && (f = f.def), f.msg = v, f.state = 2, f.chain.length > 0 && u(r, f));
                }
                function o(v, f, _, S) {
                  for (var M = 0; M < f.length; M++)
                    (function(m) {
                      v.resolve(f[m]).then(
                        function(d) {
                          _(m, d);
                        },
                        S
                      );
                    })(M);
                }
                function y(v) {
                  this.def = v, this.triggered = !1;
                }
                function g(v) {
                  this.promise = v, this.state = 0, this.triggered = !1, this.chain = [], this.msg = void 0;
                }
                function x(v) {
                  if (typeof v != "function")
                    throw TypeError("Not a function");
                  if (this.__NPO__ !== 0)
                    throw TypeError("Not a promise");
                  this.__NPO__ = 1;
                  var f = new g(this);
                  this.then = function(S, M) {
                    var C = {
                      success: typeof S == "function" ? S : !0,
                      failure: typeof M == "function" ? M : !1
                    };
                    return C.promise = new this.constructor(function(L, d) {
                      if (typeof L != "function" || typeof d != "function")
                        throw TypeError("Not a function");
                      C.resolve = L, C.reject = d;
                    }), f.chain.push(C), f.state !== 0 && u(r, f), C.promise;
                  }, this.catch = function(S) {
                    return this.then(void 0, S);
                  };
                  try {
                    v.call(
                      void 0,
                      function(S) {
                        a.call(f, S);
                      },
                      function(S) {
                        l.call(f, S);
                      }
                    );
                  } catch (_) {
                    l.call(f, _);
                  }
                }
                var c = n(
                  {},
                  "constructor",
                  x,
                  /*configurable=*/
                  !1
                );
                return x.prototype = c, n(
                  c,
                  "__NPO__",
                  0,
                  /*configurable=*/
                  !1
                ), n(x, "resolve", function(f) {
                  var _ = this;
                  return f && typeof f == "object" && f.__NPO__ === 1 ? f : new _(function(M, C) {
                    if (typeof M != "function" || typeof C != "function")
                      throw TypeError("Not a function");
                    M(f);
                  });
                }), n(x, "reject", function(f) {
                  return new this(function(S, M) {
                    if (typeof S != "function" || typeof M != "function")
                      throw TypeError("Not a function");
                    M(f);
                  });
                }), n(x, "all", function(f) {
                  var _ = this;
                  return A.call(f) != "[object Array]" ? _.reject(TypeError("Not an array")) : f.length === 0 ? _.resolve([]) : new _(function(M, C) {
                    if (typeof M != "function" || typeof C != "function")
                      throw TypeError("Not a function");
                    var m = f.length, L = Array(m), d = 0;
                    o(_, f, function(E, w) {
                      L[E] = w, ++d === m && M(L);
                    }, C);
                  });
                }), n(x, "race", function(f) {
                  var _ = this;
                  return A.call(f) != "[object Array]" ? _.reject(TypeError("Not an array")) : new _(function(M, C) {
                    if (typeof M != "function" || typeof C != "function")
                      throw TypeError("Not a function");
                    o(_, f, function(L, d) {
                      M(d);
                    }, C);
                  });
                }), x;
              });
            }
          ),
          /***/
          60265: (
            /***/
            function(Y) {
              var K = Math.PI, e = A(120);
              Y.exports = b;
              function b(p) {
                for (var u, t = [], r = 0, i = 0, a = 0, l = 0, o = null, y = null, g = 0, x = 0, c = 0, v = p.length; c < v; c++) {
                  var f = p[c], _ = f[0];
                  switch (_) {
                    case "M":
                      a = f[1], l = f[2];
                      break;
                    case "A":
                      f = s(g, x, f[1], f[2], A(f[3]), f[4], f[5], f[6], f[7]), f.unshift("C"), f.length > 7 && (t.push(f.splice(0, 7)), f.unshift("C"));
                      break;
                    case "S":
                      var S = g, M = x;
                      (u == "C" || u == "S") && (S += S - r, M += M - i), f = ["C", S, M, f[1], f[2], f[3], f[4]];
                      break;
                    case "T":
                      u == "Q" || u == "T" ? (o = g * 2 - o, y = x * 2 - y) : (o = g, y = x), f = n(g, x, o, y, f[1], f[2]);
                      break;
                    case "Q":
                      o = f[1], y = f[2], f = n(g, x, f[1], f[2], f[3], f[4]);
                      break;
                    case "L":
                      f = P(g, x, f[1], f[2]);
                      break;
                    case "H":
                      f = P(g, x, f[1], x);
                      break;
                    case "V":
                      f = P(g, x, g, f[1]);
                      break;
                    case "Z":
                      f = P(g, x, a, l);
                      break;
                  }
                  u = _, g = f[f.length - 2], x = f[f.length - 1], f.length > 4 ? (r = f[f.length - 4], i = f[f.length - 3]) : (r = g, i = x), t.push(f);
                }
                return t;
              }
              function P(p, u, t, r) {
                return ["C", p, u, t, r, t, r];
              }
              function n(p, u, t, r, i, a) {
                return [
                  "C",
                  p / 3 + 0.6666666666666666 * t,
                  u / 3 + 0.6666666666666666 * r,
                  i / 3 + 0.6666666666666666 * t,
                  a / 3 + 0.6666666666666666 * r,
                  i,
                  a
                ];
              }
              function s(p, u, t, r, i, a, l, o, y, g) {
                if (g)
                  L = g[0], d = g[1], C = g[2], m = g[3];
                else {
                  var x = T(p, u, -i);
                  p = x.x, u = x.y, x = T(o, y, -i), o = x.x, y = x.y;
                  var c = (p - o) / 2, v = (u - y) / 2, f = c * c / (t * t) + v * v / (r * r);
                  f > 1 && (f = Math.sqrt(f), t = f * t, r = f * r);
                  var _ = t * t, S = r * r, M = (a == l ? -1 : 1) * Math.sqrt(Math.abs((_ * S - _ * v * v - S * c * c) / (_ * v * v + S * c * c)));
                  M == 1 / 0 && (M = 1);
                  var C = M * t * v / r + (p + o) / 2, m = M * -r * c / t + (u + y) / 2, L = Math.asin(((u - m) / r).toFixed(9)), d = Math.asin(((y - m) / r).toFixed(9));
                  L = p < C ? K - L : L, d = o < C ? K - d : d, L < 0 && (L = K * 2 + L), d < 0 && (d = K * 2 + d), l && L > d && (L = L - K * 2), !l && d > L && (d = d - K * 2);
                }
                if (Math.abs(d - L) > e) {
                  var h = d, E = o, w = y;
                  d = L + e * (l && d > L ? 1 : -1), o = C + t * Math.cos(d), y = m + r * Math.sin(d);
                  var z = s(o, y, t, r, i, 0, l, E, w, [d, h, C, m]);
                }
                var O = Math.tan((d - L) / 4), B = 4 / 3 * t * O, V = 4 / 3 * r * O, U = [
                  2 * p - (p + B * Math.sin(L)),
                  2 * u - (u - V * Math.cos(L)),
                  o + B * Math.sin(d),
                  y - V * Math.cos(d),
                  o,
                  y
                ];
                if (g) return U;
                z && (U = U.concat(z));
                for (var H = 0; H < U.length; ) {
                  var F = T(U[H], U[H + 1], i);
                  U[H++] = F.x, U[H++] = F.y;
                }
                return U;
              }
              function T(p, u, t) {
                return {
                  x: p * Math.cos(t) - u * Math.sin(t),
                  y: p * Math.sin(t) + u * Math.cos(t)
                };
              }
              function A(p) {
                return p * (K / 180);
              }
            }
          ),
          /***/
          27976: (
            /***/
            function(Y) {
              /*
              object-assign
              (c) Sindre Sorhus
              @license MIT
              */
              var K = Object.getOwnPropertySymbols, e = Object.prototype.hasOwnProperty, b = Object.prototype.propertyIsEnumerable;
              function P(s) {
                if (s == null)
                  throw new TypeError("Object.assign cannot be called with null or undefined");
                return Object(s);
              }
              function n() {
                try {
                  if (!Object.assign)
                    return !1;
                  var s = new String("abc");
                  if (s[5] = "de", Object.getOwnPropertyNames(s)[0] === "5")
                    return !1;
                  for (var T = {}, A = 0; A < 10; A++)
                    T["_" + String.fromCharCode(A)] = A;
                  var p = Object.getOwnPropertyNames(T).map(function(t) {
                    return T[t];
                  });
                  if (p.join("") !== "0123456789")
                    return !1;
                  var u = {};
                  return "abcdefghijklmnopqrst".split("").forEach(function(t) {
                    u[t] = t;
                  }), Object.keys(Object.assign({}, u)).join("") === "abcdefghijklmnopqrst";
                } catch {
                  return !1;
                }
              }
              Y.exports = n() ? Object.assign : function(s, T) {
                for (var A, p = P(s), u, t = 1; t < arguments.length; t++) {
                  A = Object(arguments[t]);
                  for (var r in A)
                    e.call(A, r) && (p[r] = A[r]);
                  if (K) {
                    u = K(A);
                    for (var i = 0; i < u.length; i++)
                      b.call(A, u[i]) && (p[u[i]] = A[u[i]]);
                  }
                }
                return p;
              };
            }
          ),
          /***/
          93063: (
            /***/
            function(Y) {
              var K = function(e) {
                return e !== e;
              };
              Y.exports = function(b, P) {
                return b === 0 && P === 0 ? 1 / b === 1 / P : !!(b === P || K(b) && K(P));
              };
            }
          ),
          /***/
          13969: (
            /***/
            function(Y, K, e) {
              var b = e(97936), P = e(87227), n = e(93063), s = e(9622), T = e(79796), A = P(s(), Object);
              b(A, {
                getPolyfill: s,
                implementation: n,
                shim: T
              }), Y.exports = A;
            }
          ),
          /***/
          9622: (
            /***/
            function(Y, K, e) {
              var b = e(93063);
              Y.exports = function() {
                return typeof Object.is == "function" ? Object.is : b;
              };
            }
          ),
          /***/
          79796: (
            /***/
            function(Y, K, e) {
              var b = e(9622), P = e(97936);
              Y.exports = function() {
                var s = b();
                return P(Object, { is: s }, {
                  is: function() {
                    return Object.is !== s;
                  }
                }), s;
              };
            }
          ),
          /***/
          61663: (
            /***/
            function(Y, K, e) {
              var b;
              if (!Object.keys) {
                var P = Object.prototype.hasOwnProperty, n = Object.prototype.toString, s = e(52385), T = Object.prototype.propertyIsEnumerable, A = !T.call({ toString: null }, "toString"), p = T.call(function() {
                }, "prototype"), u = [
                  "toString",
                  "toLocaleString",
                  "valueOf",
                  "hasOwnProperty",
                  "isPrototypeOf",
                  "propertyIsEnumerable",
                  "constructor"
                ], t = function(l) {
                  var o = l.constructor;
                  return o && o.prototype === l;
                }, r = {
                  $applicationCache: !0,
                  $console: !0,
                  $external: !0,
                  $frame: !0,
                  $frameElement: !0,
                  $frames: !0,
                  $innerHeight: !0,
                  $innerWidth: !0,
                  $onmozfullscreenchange: !0,
                  $onmozfullscreenerror: !0,
                  $outerHeight: !0,
                  $outerWidth: !0,
                  $pageXOffset: !0,
                  $pageYOffset: !0,
                  $parent: !0,
                  $scrollLeft: !0,
                  $scrollTop: !0,
                  $scrollX: !0,
                  $scrollY: !0,
                  $self: !0,
                  $webkitIndexedDB: !0,
                  $webkitStorageInfo: !0,
                  $window: !0
                }, i = function() {
                  if (typeof window > "u")
                    return !1;
                  for (var l in window)
                    try {
                      if (!r["$" + l] && P.call(window, l) && window[l] !== null && typeof window[l] == "object")
                        try {
                          t(window[l]);
                        } catch {
                          return !0;
                        }
                    } catch {
                      return !0;
                    }
                  return !1;
                }(), a = function(l) {
                  if (typeof window > "u" || !i)
                    return t(l);
                  try {
                    return t(l);
                  } catch {
                    return !1;
                  }
                };
                b = function(o) {
                  var y = o !== null && typeof o == "object", g = n.call(o) === "[object Function]", x = s(o), c = y && n.call(o) === "[object String]", v = [];
                  if (!y && !g && !x)
                    throw new TypeError("Object.keys called on a non-object");
                  var f = p && g;
                  if (c && o.length > 0 && !P.call(o, 0))
                    for (var _ = 0; _ < o.length; ++_)
                      v.push(String(_));
                  if (x && o.length > 0)
                    for (var S = 0; S < o.length; ++S)
                      v.push(String(S));
                  else
                    for (var M in o)
                      !(f && M === "prototype") && P.call(o, M) && v.push(String(M));
                  if (A)
                    for (var C = a(o), m = 0; m < u.length; ++m)
                      !(C && u[m] === "constructor") && P.call(o, u[m]) && v.push(u[m]);
                  return v;
                };
              }
              Y.exports = b;
            }
          ),
          /***/
          99433: (
            /***/
            function(Y, K, e) {
              var b = Array.prototype.slice, P = e(52385), n = Object.keys, s = n ? function(p) {
                return n(p);
              } : e(61663), T = Object.keys;
              s.shim = function() {
                if (Object.keys) {
                  var p = function() {
                    var u = Object.keys(arguments);
                    return u && u.length === arguments.length;
                  }(1, 2);
                  p || (Object.keys = function(t) {
                    return P(t) ? T(b.call(t)) : T(t);
                  });
                } else
                  Object.keys = s;
                return Object.keys || s;
              }, Y.exports = s;
            }
          ),
          /***/
          52385: (
            /***/
            function(Y) {
              var K = Object.prototype.toString;
              Y.exports = function(b) {
                var P = K.call(b), n = P === "[object Arguments]";
                return n || (n = P !== "[object Array]" && b !== null && typeof b == "object" && typeof b.length == "number" && b.length >= 0 && K.call(b.callee) === "[object Function]"), n;
              };
            }
          ),
          /***/
          96927: (
            /***/
            function(Y, K, e) {
              var b = e(99433), P = e(59457)(), n = e(63063), s = Object, T = n("Array.prototype.push"), A = n("Object.prototype.propertyIsEnumerable"), p = P ? Object.getOwnPropertySymbols : null;
              Y.exports = function(t, r) {
                if (t == null)
                  throw new TypeError("target must be an object");
                var i = s(t);
                if (arguments.length === 1)
                  return i;
                for (var a = 1; a < arguments.length; ++a) {
                  var l = s(arguments[a]), o = b(l), y = P && (Object.getOwnPropertySymbols || p);
                  if (y)
                    for (var g = y(l), x = 0; x < g.length; ++x) {
                      var c = g[x];
                      A(l, c) && T(o, c);
                    }
                  for (var v = 0; v < o.length; ++v) {
                    var f = o[v];
                    if (A(l, f)) {
                      var _ = l[f];
                      i[f] = _;
                    }
                  }
                }
                return i;
              };
            }
          ),
          /***/
          68686: (
            /***/
            function(Y, K, e) {
              var b = e(96927), P = function() {
                if (!Object.assign)
                  return !1;
                for (var s = "abcdefghijklmnopqrst", T = s.split(""), A = {}, p = 0; p < T.length; ++p)
                  A[T[p]] = T[p];
                var u = Object.assign({}, A), t = "";
                for (var r in u)
                  t += r;
                return s !== t;
              }, n = function() {
                if (!Object.assign || !Object.preventExtensions)
                  return !1;
                var s = Object.preventExtensions({ 1: 2 });
                try {
                  Object.assign(s, "xy");
                } catch {
                  return s[1] === "y";
                }
                return !1;
              };
              Y.exports = function() {
                return !Object.assign || P() || n() ? b : Object.assign;
              };
            }
          ),
          /***/
          59811: (
            /***/
            function(Y) {
              function K(P, n) {
                if (typeof P != "string") return [P];
                var s = [P];
                typeof n == "string" || Array.isArray(n) ? n = { brackets: n } : n || (n = {});
                var T = n.brackets ? Array.isArray(n.brackets) ? n.brackets : [n.brackets] : ["{}", "[]", "()"], A = n.escape || "___", p = !!n.flat;
                T.forEach(function(r) {
                  var i = new RegExp(["\\", r[0], "[^\\", r[0], "\\", r[1], "]*\\", r[1]].join("")), a = [];
                  function l(o, y, g) {
                    var x = s.push(o.slice(r[0].length, -r[1].length)) - 1;
                    return a.push(x), A + x + A;
                  }
                  s.forEach(function(o, y) {
                    for (var g, x = 0; o != g; )
                      if (g = o, o = o.replace(i, l), x++ > 1e4) throw Error("References have circular dependency. Please, check them.");
                    s[y] = o;
                  }), a = a.reverse(), s = s.map(function(o) {
                    return a.forEach(function(y) {
                      o = o.replace(new RegExp("(\\" + A + y + "\\" + A + ")", "g"), r[0] + "$1" + r[1]);
                    }), o;
                  });
                });
                var u = new RegExp("\\" + A + "([0-9]+)\\" + A);
                function t(r, i, a) {
                  for (var l = [], o, y = 0; o = u.exec(r); ) {
                    if (y++ > 1e4) throw Error("Circular references in parenthesis");
                    l.push(r.slice(0, o.index)), l.push(t(i[o[1]], i)), r = r.slice(o.index + o[0].length);
                  }
                  return l.push(r), l;
                }
                return p ? s : t(s[0], s);
              }
              function e(P, n) {
                if (n && n.flat) {
                  var s = n && n.escape || "___", T = P[0], A;
                  if (!T) return "";
                  for (var p = new RegExp("\\" + s + "([0-9]+)\\" + s), u = 0; T != A; ) {
                    if (u++ > 1e4) throw Error("Circular references in " + P);
                    A = T, T = T.replace(p, t);
                  }
                  return T;
                }
                return P.reduce(function r(i, a) {
                  return Array.isArray(a) && (a = a.reduce(r, "")), i + a;
                }, "");
                function t(r, i) {
                  if (P[i] == null) throw Error("Reference " + i + "is undefined");
                  return P[i];
                }
              }
              function b(P, n) {
                return Array.isArray(P) ? e(P, n) : K(P, n);
              }
              b.parse = K, b.stringify = e, Y.exports = b;
            }
          ),
          /***/
          5137: (
            /***/
            function(Y, K, e) {
              var b = e(6807);
              Y.exports = P;
              function P(n) {
                var s;
                return arguments.length > 1 && (n = arguments), typeof n == "string" ? n = n.split(/\s/).map(parseFloat) : typeof n == "number" && (n = [n]), n.length && typeof n[0] == "number" ? n.length === 1 ? s = {
                  width: n[0],
                  height: n[0],
                  x: 0,
                  y: 0
                } : n.length === 2 ? s = {
                  width: n[0],
                  height: n[1],
                  x: 0,
                  y: 0
                } : s = {
                  x: n[0],
                  y: n[1],
                  width: n[2] - n[0] || 0,
                  height: n[3] - n[1] || 0
                } : n && (n = b(n, {
                  left: "x l left Left",
                  top: "y t top Top",
                  width: "w width W Width",
                  height: "h height W Width",
                  bottom: "b bottom Bottom",
                  right: "r right Right"
                }), s = {
                  x: n.left || 0,
                  y: n.top || 0
                }, n.width == null ? n.right ? s.width = n.right - s.x : s.width = 0 : s.width = n.width, n.height == null ? n.bottom ? s.height = n.bottom - s.y : s.height = 0 : s.height = n.height), s;
              }
            }
          ),
          /***/
          26953: (
            /***/
            function(Y) {
              Y.exports = b;
              var K = { a: 7, c: 6, h: 1, l: 2, m: 2, q: 4, s: 4, t: 2, v: 1, z: 0 }, e = /([astvzqmhlc])([^astvzqmhlc]*)/ig;
              function b(s) {
                var T = [];
                return s.replace(e, function(A, p, u) {
                  var t = p.toLowerCase();
                  for (u = n(u), t == "m" && u.length > 2 && (T.push([p].concat(u.splice(0, 2))), t = "l", p = p == "m" ? "l" : "L"); ; ) {
                    if (u.length == K[t])
                      return u.unshift(p), T.push(u);
                    if (u.length < K[t]) throw new Error("malformed path data");
                    T.push([p].concat(u.splice(0, K[t])));
                  }
                }), T;
              }
              var P = /-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/ig;
              function n(s) {
                var T = s.match(P);
                return T ? T.map(Number) : [];
              }
            }
          ),
          /***/
          4957: (
            /***/
            function(Y) {
              Y.exports = function(e, b) {
                b || (b = [0, ""]), e = String(e);
                var P = parseFloat(e, 10);
                return b[0] = P, b[1] = e.match(/[\d.\-\+]*\s*(.*)/)[1] || "", b;
              };
            }
          ),
          /***/
          71879: (
            /***/
            function(Y, K, e) {
              var b = e(33282);
              (function() {
                var P, n, s, T, A, p;
                typeof performance < "u" && performance !== null && performance.now ? Y.exports = function() {
                  return performance.now();
                } : typeof b < "u" && b !== null && b.hrtime ? (Y.exports = function() {
                  return (P() - A) / 1e6;
                }, n = b.hrtime, P = function() {
                  var u;
                  return u = n(), u[0] * 1e9 + u[1];
                }, T = P(), p = b.uptime() * 1e9, A = T - p) : Date.now ? (Y.exports = function() {
                  return Date.now() - s;
                }, s = Date.now()) : (Y.exports = function() {
                  return (/* @__PURE__ */ new Date()).getTime() - s;
                }, s = (/* @__PURE__ */ new Date()).getTime());
              }).call(this);
            }
          ),
          /***/
          6807: (
            /***/
            function(Y) {
              Y.exports = function(P, n, s) {
                var T = {}, A, p;
                if (typeof n == "string" && (n = e(n)), Array.isArray(n)) {
                  var u = {};
                  for (p = 0; p < n.length; p++)
                    u[n[p]] = !0;
                  n = u;
                }
                for (A in n)
                  n[A] = e(n[A]);
                var t = {};
                for (A in n) {
                  var r = n[A];
                  if (Array.isArray(r))
                    for (p = 0; p < r.length; p++) {
                      var i = r[p];
                      if (s && (t[i] = !0), i in P) {
                        if (T[A] = P[i], s)
                          for (var a = p; a < r.length; a++)
                            t[r[a]] = !0;
                        break;
                      }
                    }
                  else A in P && (n[A] && (T[A] = P[A]), s && (t[A] = !0));
                }
                if (s)
                  for (A in P)
                    t[A] || (T[A] = P[A]);
                return T;
              };
              var K = {};
              function e(b) {
                return K[b] ? K[b] : (typeof b == "string" && (b = K[b] = b.split(/\s*,\s*|\s+/)), b);
              }
            }
          ),
          /***/
          52773: (
            /***/
            function(Y) {
              Y.exports = function(e, b, P, n) {
                var s = e[0], T = e[1], A = !1;
                P === void 0 && (P = 0), n === void 0 && (n = b.length);
                for (var p = n - P, u = 0, t = p - 1; u < p; t = u++) {
                  var r = b[u + P][0], i = b[u + P][1], a = b[t + P][0], l = b[t + P][1], o = i > T != l > T && s < (a - r) * (T - i) / (l - i) + r;
                  o && (A = !A);
                }
                return A;
              };
            }
          ),
          /***/
          11516: (
            /***/
            function(Y, K, e) {
              /*
               * @copyright 2016 Sean Connelly (@voidqk), http://syntheti.cc
               * @license MIT
               * @preserve Project Home: https://github.com/voidqk/polybooljs
               */
              var b = e(42391), P = e(92990), n = e(26202), s = e(22222), T = e(17527), A = e(24491), p = !1, u = P(), t;
              t = {
                // getter/setter for buildLog
                buildLog: function(i) {
                  return i === !0 ? p = b() : i === !1 && (p = !1), p === !1 ? !1 : p.list;
                },
                // getter/setter for epsilon
                epsilon: function(i) {
                  return u.epsilon(i);
                },
                // core API
                segments: function(i) {
                  var a = n(!0, u, p);
                  return i.regions.forEach(a.addRegion), {
                    segments: a.calculate(i.inverted),
                    inverted: i.inverted
                  };
                },
                combine: function(i, a) {
                  var l = n(!1, u, p);
                  return {
                    combined: l.calculate(
                      i.segments,
                      i.inverted,
                      a.segments,
                      a.inverted
                    ),
                    inverted1: i.inverted,
                    inverted2: a.inverted
                  };
                },
                selectUnion: function(i) {
                  return {
                    segments: T.union(i.combined, p),
                    inverted: i.inverted1 || i.inverted2
                  };
                },
                selectIntersect: function(i) {
                  return {
                    segments: T.intersect(i.combined, p),
                    inverted: i.inverted1 && i.inverted2
                  };
                },
                selectDifference: function(i) {
                  return {
                    segments: T.difference(i.combined, p),
                    inverted: i.inverted1 && !i.inverted2
                  };
                },
                selectDifferenceRev: function(i) {
                  return {
                    segments: T.differenceRev(i.combined, p),
                    inverted: !i.inverted1 && i.inverted2
                  };
                },
                selectXor: function(i) {
                  return {
                    segments: T.xor(i.combined, p),
                    inverted: i.inverted1 !== i.inverted2
                  };
                },
                polygon: function(i) {
                  return {
                    regions: s(i.segments, u, p),
                    inverted: i.inverted
                  };
                },
                // GeoJSON converters
                polygonFromGeoJSON: function(i) {
                  return A.toPolygon(t, i);
                },
                polygonToGeoJSON: function(i) {
                  return A.fromPolygon(t, u, i);
                },
                // helper functions for common operations
                union: function(i, a) {
                  return r(i, a, t.selectUnion);
                },
                intersect: function(i, a) {
                  return r(i, a, t.selectIntersect);
                },
                difference: function(i, a) {
                  return r(i, a, t.selectDifference);
                },
                differenceRev: function(i, a) {
                  return r(i, a, t.selectDifferenceRev);
                },
                xor: function(i, a) {
                  return r(i, a, t.selectXor);
                }
              };
              function r(i, a, l) {
                var o = t.segments(i), y = t.segments(a), g = t.combine(o, y), x = l(g);
                return t.polygon(x);
              }
              typeof window == "object" && (window.PolyBool = t), Y.exports = t;
            }
          ),
          /***/
          42391: (
            /***/
            function(Y) {
              function K() {
                var e, b = 0, P = !1;
                function n(s, T) {
                  return e.list.push({
                    type: s,
                    data: T ? JSON.parse(JSON.stringify(T)) : void 0
                  }), e;
                }
                return e = {
                  list: [],
                  segmentId: function() {
                    return b++;
                  },
                  checkIntersection: function(s, T) {
                    return n("check", { seg1: s, seg2: T });
                  },
                  segmentChop: function(s, T) {
                    return n("div_seg", { seg: s, pt: T }), n("chop", { seg: s, pt: T });
                  },
                  statusRemove: function(s) {
                    return n("pop_seg", { seg: s });
                  },
                  segmentUpdate: function(s) {
                    return n("seg_update", { seg: s });
                  },
                  segmentNew: function(s, T) {
                    return n("new_seg", { seg: s, primary: T });
                  },
                  segmentRemove: function(s) {
                    return n("rem_seg", { seg: s });
                  },
                  tempStatus: function(s, T, A) {
                    return n("temp_status", { seg: s, above: T, below: A });
                  },
                  rewind: function(s) {
                    return n("rewind", { seg: s });
                  },
                  status: function(s, T, A) {
                    return n("status", { seg: s, above: T, below: A });
                  },
                  vert: function(s) {
                    return s === P ? e : (P = s, n("vert", { x: s }));
                  },
                  log: function(s) {
                    return typeof s != "string" && (s = JSON.stringify(s, !1, "  ")), n("log", { txt: s });
                  },
                  reset: function() {
                    return n("reset");
                  },
                  selected: function(s) {
                    return n("selected", { segs: s });
                  },
                  chainStart: function(s) {
                    return n("chain_start", { seg: s });
                  },
                  chainRemoveHead: function(s, T) {
                    return n("chain_rem_head", { index: s, pt: T });
                  },
                  chainRemoveTail: function(s, T) {
                    return n("chain_rem_tail", { index: s, pt: T });
                  },
                  chainNew: function(s, T) {
                    return n("chain_new", { pt1: s, pt2: T });
                  },
                  chainMatch: function(s) {
                    return n("chain_match", { index: s });
                  },
                  chainClose: function(s) {
                    return n("chain_close", { index: s });
                  },
                  chainAddHead: function(s, T) {
                    return n("chain_add_head", { index: s, pt: T });
                  },
                  chainAddTail: function(s, T) {
                    return n("chain_add_tail", { index: s, pt: T });
                  },
                  chainConnect: function(s, T) {
                    return n("chain_con", { index1: s, index2: T });
                  },
                  chainReverse: function(s) {
                    return n("chain_rev", { index: s });
                  },
                  chainJoin: function(s, T) {
                    return n("chain_join", { index1: s, index2: T });
                  },
                  done: function() {
                    return n("done");
                  }
                }, e;
              }
              Y.exports = K;
            }
          ),
          /***/
          92990: (
            /***/
            function(Y) {
              function K(e) {
                typeof e != "number" && (e = 1e-10);
                var b = {
                  epsilon: function(P) {
                    return typeof P == "number" && (e = P), e;
                  },
                  pointAboveOrOnLine: function(P, n, s) {
                    var T = n[0], A = n[1], p = s[0], u = s[1], t = P[0], r = P[1];
                    return (p - T) * (r - A) - (u - A) * (t - T) >= -e;
                  },
                  pointBetween: function(P, n, s) {
                    var T = P[1] - n[1], A = s[0] - n[0], p = P[0] - n[0], u = s[1] - n[1], t = p * A + T * u;
                    if (t < e)
                      return !1;
                    var r = A * A + u * u;
                    return !(t - r > -e);
                  },
                  pointsSameX: function(P, n) {
                    return Math.abs(P[0] - n[0]) < e;
                  },
                  pointsSameY: function(P, n) {
                    return Math.abs(P[1] - n[1]) < e;
                  },
                  pointsSame: function(P, n) {
                    return b.pointsSameX(P, n) && b.pointsSameY(P, n);
                  },
                  pointsCompare: function(P, n) {
                    return b.pointsSameX(P, n) ? b.pointsSameY(P, n) ? 0 : P[1] < n[1] ? -1 : 1 : P[0] < n[0] ? -1 : 1;
                  },
                  pointsCollinear: function(P, n, s) {
                    var T = P[0] - n[0], A = P[1] - n[1], p = n[0] - s[0], u = n[1] - s[1];
                    return Math.abs(T * u - p * A) < e;
                  },
                  linesIntersect: function(P, n, s, T) {
                    var A = n[0] - P[0], p = n[1] - P[1], u = T[0] - s[0], t = T[1] - s[1], r = A * t - p * u;
                    if (Math.abs(r) < e)
                      return !1;
                    var i = P[0] - s[0], a = P[1] - s[1], l = (u * a - t * i) / r, o = (A * a - p * i) / r, y = {
                      alongA: 0,
                      alongB: 0,
                      pt: [
                        P[0] + l * A,
                        P[1] + l * p
                      ]
                    };
                    return l <= -e ? y.alongA = -2 : l < e ? y.alongA = -1 : l - 1 <= -e ? y.alongA = 0 : l - 1 < e ? y.alongA = 1 : y.alongA = 2, o <= -e ? y.alongB = -2 : o < e ? y.alongB = -1 : o - 1 <= -e ? y.alongB = 0 : o - 1 < e ? y.alongB = 1 : y.alongB = 2, y;
                  },
                  pointInsideRegion: function(P, n) {
                    for (var s = P[0], T = P[1], A = n[n.length - 1][0], p = n[n.length - 1][1], u = !1, t = 0; t < n.length; t++) {
                      var r = n[t][0], i = n[t][1];
                      i - T > e != p - T > e && (A - r) * (T - i) / (p - i) + r - s > e && (u = !u), A = r, p = i;
                    }
                    return u;
                  }
                };
                return b;
              }
              Y.exports = K;
            }
          ),
          /***/
          24491: (
            /***/
            function(Y) {
              var K = {
                // convert a GeoJSON object to a PolyBool polygon
                toPolygon: function(e, b) {
                  function P(T) {
                    if (T.length <= 0)
                      return e.segments({ inverted: !1, regions: [] });
                    function A(t) {
                      var r = t.slice(0, t.length - 1);
                      return e.segments({ inverted: !1, regions: [r] });
                    }
                    for (var p = A(T[0]), u = 1; u < T.length; u++)
                      p = e.selectDifference(e.combine(p, A(T[u])));
                    return p;
                  }
                  if (b.type === "Polygon")
                    return e.polygon(P(b.coordinates));
                  if (b.type === "MultiPolygon") {
                    for (var n = e.segments({ inverted: !1, regions: [] }), s = 0; s < b.coordinates.length; s++)
                      n = e.selectUnion(e.combine(n, P(b.coordinates[s])));
                    return e.polygon(n);
                  }
                  throw new Error("PolyBool: Cannot convert GeoJSON object to PolyBool polygon");
                },
                // convert a PolyBool polygon to a GeoJSON object
                fromPolygon: function(e, b, P) {
                  P = e.polygon(e.segments(P));
                  function n(l, o) {
                    return b.pointInsideRegion([
                      (l[0][0] + l[1][0]) * 0.5,
                      (l[0][1] + l[1][1]) * 0.5
                    ], o);
                  }
                  function s(l) {
                    return {
                      region: l,
                      children: []
                    };
                  }
                  var T = s(null);
                  function A(l, o) {
                    for (var y = 0; y < l.children.length; y++) {
                      var g = l.children[y];
                      if (n(o, g.region)) {
                        A(g, o);
                        return;
                      }
                    }
                    for (var x = s(o), y = 0; y < l.children.length; y++) {
                      var g = l.children[y];
                      n(g.region, o) && (x.children.push(g), l.children.splice(y, 1), y--);
                    }
                    l.children.push(x);
                  }
                  for (var p = 0; p < P.regions.length; p++) {
                    var u = P.regions[p];
                    u.length < 3 || A(T, u);
                  }
                  function t(l, o) {
                    for (var y = 0, g = l[l.length - 1][0], x = l[l.length - 1][1], c = [], v = 0; v < l.length; v++) {
                      var f = l[v][0], _ = l[v][1];
                      c.push([f, _]), y += _ * g - f * x, g = f, x = _;
                    }
                    var S = y < 0;
                    return S !== o && c.reverse(), c.push([c[0][0], c[0][1]]), c;
                  }
                  var r = [];
                  function i(l) {
                    var o = [t(l.region, !1)];
                    r.push(o);
                    for (var y = 0; y < l.children.length; y++)
                      o.push(a(l.children[y]));
                  }
                  function a(l) {
                    for (var o = 0; o < l.children.length; o++)
                      i(l.children[o]);
                    return t(l.region, !0);
                  }
                  for (var p = 0; p < T.children.length; p++)
                    i(T.children[p]);
                  return r.length <= 0 ? { type: "Polygon", coordinates: [] } : r.length == 1 ? { type: "Polygon", coordinates: r[0] } : {
                    // otherwise, use a GeoJSON MultiPolygon
                    type: "MultiPolygon",
                    coordinates: r
                  };
                }
              };
              Y.exports = K;
            }
          ),
          /***/
          26202: (
            /***/
            function(Y, K, e) {
              var b = e(48916);
              function P(n, s, T) {
                function A(x, c) {
                  return {
                    id: T ? T.segmentId() : -1,
                    start: x,
                    end: c,
                    myFill: {
                      above: null,
                      // is there fill above us?
                      below: null
                      // is there fill below us?
                    },
                    otherFill: null
                  };
                }
                function p(x, c, v) {
                  return {
                    id: T ? T.segmentId() : -1,
                    start: x,
                    end: c,
                    myFill: {
                      above: v.myFill.above,
                      below: v.myFill.below
                    },
                    otherFill: null
                  };
                }
                var u = b.create();
                function t(x, c, v, f, _, S) {
                  var M = s.pointsCompare(c, _);
                  return M !== 0 ? M : s.pointsSame(v, S) ? 0 : x !== f ? x ? 1 : -1 : s.pointAboveOrOnLine(
                    v,
                    f ? _ : S,
                    // order matters
                    f ? S : _
                  ) ? 1 : -1;
                }
                function r(x, c) {
                  u.insertBefore(x, function(v) {
                    var f = t(
                      x.isStart,
                      x.pt,
                      c,
                      v.isStart,
                      v.pt,
                      v.other.pt
                    );
                    return f < 0;
                  });
                }
                function i(x, c) {
                  var v = b.node({
                    isStart: !0,
                    pt: x.start,
                    seg: x,
                    primary: c,
                    other: null,
                    status: null
                  });
                  return r(v, x.end), v;
                }
                function a(x, c, v) {
                  var f = b.node({
                    isStart: !1,
                    pt: c.end,
                    seg: c,
                    primary: v,
                    other: x,
                    status: null
                  });
                  x.other = f, r(f, x.pt);
                }
                function l(x, c) {
                  var v = i(x, c);
                  return a(v, x, c), v;
                }
                function o(x, c) {
                  T && T.segmentChop(x.seg, c), x.other.remove(), x.seg.end = c, x.other.pt = c, r(x.other, x.pt);
                }
                function y(x, c) {
                  var v = p(c, x.seg.end, x.seg);
                  return o(x, c), l(v, x.primary);
                }
                function g(x, c) {
                  var v = b.create();
                  function f(B, V) {
                    var U = B.seg.start, H = B.seg.end, F = V.seg.start, G = V.seg.end;
                    return s.pointsCollinear(U, F, G) ? s.pointsCollinear(H, F, G) || s.pointAboveOrOnLine(H, F, G) ? 1 : -1 : s.pointAboveOrOnLine(U, F, G) ? 1 : -1;
                  }
                  function _(B) {
                    return v.findTransition(function(V) {
                      var U = f(B, V.ev);
                      return U > 0;
                    });
                  }
                  function S(B, V) {
                    var U = B.seg, H = V.seg, F = U.start, G = U.end, q = H.start, rt = H.end;
                    T && T.checkIntersection(U, H);
                    var st = s.linesIntersect(F, G, q, rt);
                    if (st === !1) {
                      if (!s.pointsCollinear(F, G, q) || s.pointsSame(F, rt) || s.pointsSame(G, q))
                        return !1;
                      var vt = s.pointsSame(F, q), ht = s.pointsSame(G, rt);
                      if (vt && ht)
                        return V;
                      var et = !vt && s.pointBetween(F, q, rt), Q = !ht && s.pointBetween(G, q, rt);
                      if (vt)
                        return Q ? y(V, G) : y(B, rt), V;
                      et && (ht || (Q ? y(V, G) : y(B, rt)), y(V, F));
                    } else
                      st.alongA === 0 && (st.alongB === -1 ? y(B, q) : st.alongB === 0 ? y(B, st.pt) : st.alongB === 1 && y(B, rt)), st.alongB === 0 && (st.alongA === -1 ? y(V, F) : st.alongA === 0 ? y(V, st.pt) : st.alongA === 1 && y(V, G));
                    return !1;
                  }
                  for (var M = []; !u.isEmpty(); ) {
                    var C = u.getHead();
                    if (T && T.vert(C.pt[0]), C.isStart) {
                      let B = function() {
                        if (L) {
                          var V = S(C, L);
                          if (V)
                            return V;
                        }
                        return d ? S(C, d) : !1;
                      };
                      T && T.segmentNew(C.seg, C.primary);
                      var m = _(C), L = m.before ? m.before.ev : null, d = m.after ? m.after.ev : null;
                      T && T.tempStatus(
                        C.seg,
                        L ? L.seg : !1,
                        d ? d.seg : !1
                      );
                      var h = B();
                      if (h) {
                        if (n) {
                          var E;
                          C.seg.myFill.below === null ? E = !0 : E = C.seg.myFill.above !== C.seg.myFill.below, E && (h.seg.myFill.above = !h.seg.myFill.above);
                        } else
                          h.seg.otherFill = C.seg.myFill;
                        T && T.segmentUpdate(h.seg), C.other.remove(), C.remove();
                      }
                      if (u.getHead() !== C) {
                        T && T.rewind(C.seg);
                        continue;
                      }
                      if (n) {
                        var E;
                        C.seg.myFill.below === null ? E = !0 : E = C.seg.myFill.above !== C.seg.myFill.below, d ? C.seg.myFill.below = d.seg.myFill.above : C.seg.myFill.below = x, E ? C.seg.myFill.above = !C.seg.myFill.below : C.seg.myFill.above = C.seg.myFill.below;
                      } else if (C.seg.otherFill === null) {
                        var w;
                        d ? C.primary === d.primary ? w = d.seg.otherFill.above : w = d.seg.myFill.above : w = C.primary ? c : x, C.seg.otherFill = {
                          above: w,
                          below: w
                        };
                      }
                      T && T.status(
                        C.seg,
                        L ? L.seg : !1,
                        d ? d.seg : !1
                      ), C.other.status = m.insert(b.node({ ev: C }));
                    } else {
                      var z = C.status;
                      if (z === null)
                        throw new Error("PolyBool: Zero-length segment detected; your epsilon is probably too small or too large");
                      if (v.exists(z.prev) && v.exists(z.next) && S(z.prev.ev, z.next.ev), T && T.statusRemove(z.ev.seg), z.remove(), !C.primary) {
                        var O = C.seg.myFill;
                        C.seg.myFill = C.seg.otherFill, C.seg.otherFill = O;
                      }
                      M.push(C.seg);
                    }
                    u.getHead().remove();
                  }
                  return T && T.done(), M;
                }
                return n ? {
                  addRegion: function(x) {
                    for (var c, v = x[x.length - 1], f = 0; f < x.length; f++) {
                      c = v, v = x[f];
                      var _ = s.pointsCompare(c, v);
                      _ !== 0 && l(
                        A(
                          _ < 0 ? c : v,
                          _ < 0 ? v : c
                        ),
                        !0
                      );
                    }
                  },
                  calculate: function(x) {
                    return g(x, !1);
                  }
                } : {
                  calculate: function(x, c, v, f) {
                    return x.forEach(function(_) {
                      l(p(_.start, _.end, _), !0);
                    }), v.forEach(function(_) {
                      l(p(_.start, _.end, _), !1);
                    }), g(c, f);
                  }
                };
              }
              Y.exports = P;
            }
          ),
          /***/
          48916: (
            /***/
            function(Y) {
              var K = {
                create: function() {
                  var e = {
                    root: { root: !0, next: null },
                    exists: function(b) {
                      return !(b === null || b === e.root);
                    },
                    isEmpty: function() {
                      return e.root.next === null;
                    },
                    getHead: function() {
                      return e.root.next;
                    },
                    insertBefore: function(b, P) {
                      for (var n = e.root, s = e.root.next; s !== null; ) {
                        if (P(s)) {
                          b.prev = s.prev, b.next = s, s.prev.next = b, s.prev = b;
                          return;
                        }
                        n = s, s = s.next;
                      }
                      n.next = b, b.prev = n, b.next = null;
                    },
                    findTransition: function(b) {
                      for (var P = e.root, n = e.root.next; n !== null && !b(n); )
                        P = n, n = n.next;
                      return {
                        before: P === e.root ? null : P,
                        after: n,
                        insert: function(s) {
                          return s.prev = P, s.next = n, P.next = s, n !== null && (n.prev = s), s;
                        }
                      };
                    }
                  };
                  return e;
                },
                node: function(e) {
                  return e.prev = null, e.next = null, e.remove = function() {
                    e.prev.next = e.next, e.next && (e.next.prev = e.prev), e.prev = null, e.next = null;
                  }, e;
                }
              };
              Y.exports = K;
            }
          ),
          /***/
          22222: (
            /***/
            function(Y) {
              function K(e, b, P) {
                var n = [], s = [];
                return e.forEach(function(T) {
                  var A = T.start, p = T.end;
                  if (b.pointsSame(A, p)) {
                    console.warn("PolyBool: Warning: Zero-length segment detected; your epsilon is probably too small or too large");
                    return;
                  }
                  P && P.chainStart(T);
                  var u = {
                    index: 0,
                    matches_head: !1,
                    matches_pt1: !1
                  }, t = {
                    index: 0,
                    matches_head: !1,
                    matches_pt1: !1
                  }, r = u;
                  function i(h, E, w) {
                    return r.index = h, r.matches_head = E, r.matches_pt1 = w, r === u ? (r = t, !1) : (r = null, !0);
                  }
                  for (var a = 0; a < n.length; a++) {
                    var l = n[a], o = l[0];
                    l[1];
                    var y = l[l.length - 1];
                    if (l[l.length - 2], b.pointsSame(o, A)) {
                      if (i(a, !0, !0))
                        break;
                    } else if (b.pointsSame(o, p)) {
                      if (i(a, !0, !1))
                        break;
                    } else if (b.pointsSame(y, A)) {
                      if (i(a, !1, !0))
                        break;
                    } else if (b.pointsSame(y, p) && i(a, !1, !1))
                      break;
                  }
                  if (r === u) {
                    n.push([A, p]), P && P.chainNew(A, p);
                    return;
                  }
                  if (r === t) {
                    P && P.chainMatch(u.index);
                    var g = u.index, x = u.matches_pt1 ? p : A, c = u.matches_head, l = n[g], v = c ? l[0] : l[l.length - 1], f = c ? l[1] : l[l.length - 2], _ = c ? l[l.length - 1] : l[0], S = c ? l[l.length - 2] : l[1];
                    if (b.pointsCollinear(f, v, x) && (c ? (P && P.chainRemoveHead(u.index, x), l.shift()) : (P && P.chainRemoveTail(u.index, x), l.pop()), v = f), b.pointsSame(_, x)) {
                      n.splice(g, 1), b.pointsCollinear(S, _, v) && (c ? (P && P.chainRemoveTail(u.index, v), l.pop()) : (P && P.chainRemoveHead(u.index, v), l.shift())), P && P.chainClose(u.index), s.push(l);
                      return;
                    }
                    c ? (P && P.chainAddHead(u.index, x), l.unshift(x)) : (P && P.chainAddTail(u.index, x), l.push(x));
                    return;
                  }
                  function M(h) {
                    P && P.chainReverse(h), n[h].reverse();
                  }
                  function C(h, E) {
                    var w = n[h], z = n[E], O = w[w.length - 1], B = w[w.length - 2], V = z[0], U = z[1];
                    b.pointsCollinear(B, O, V) && (P && P.chainRemoveTail(h, O), w.pop(), O = B), b.pointsCollinear(O, V, U) && (P && P.chainRemoveHead(E, V), z.shift()), P && P.chainJoin(h, E), n[h] = w.concat(z), n.splice(E, 1);
                  }
                  var m = u.index, L = t.index;
                  P && P.chainConnect(m, L);
                  var d = n[m].length < n[L].length;
                  u.matches_head ? t.matches_head ? d ? (M(m), C(m, L)) : (M(L), C(L, m)) : C(L, m) : t.matches_head ? C(m, L) : d ? (M(m), C(L, m)) : (M(L), C(m, L));
                }), s;
              }
              Y.exports = K;
            }
          ),
          /***/
          17527: (
            /***/
            function(Y) {
              function K(b, P, n) {
                var s = [];
                return b.forEach(function(T) {
                  var A = (T.myFill.above ? 8 : 0) + (T.myFill.below ? 4 : 0) + (T.otherFill && T.otherFill.above ? 2 : 0) + (T.otherFill && T.otherFill.below ? 1 : 0);
                  P[A] !== 0 && s.push({
                    id: n ? n.segmentId() : -1,
                    start: T.start,
                    end: T.end,
                    myFill: {
                      above: P[A] === 1,
                      // 1 if filled above
                      below: P[A] === 2
                      // 2 if filled below
                    },
                    otherFill: null
                  });
                }), n && n.selected(s), s;
              }
              var e = {
                union: function(b, P) {
                  return K(b, [
                    0,
                    2,
                    1,
                    0,
                    2,
                    2,
                    0,
                    0,
                    1,
                    0,
                    1,
                    0,
                    0,
                    0,
                    0,
                    0
                  ], P);
                },
                intersect: function(b, P) {
                  return K(b, [
                    0,
                    0,
                    0,
                    0,
                    0,
                    2,
                    0,
                    2,
                    0,
                    0,
                    1,
                    1,
                    0,
                    2,
                    1,
                    0
                  ], P);
                },
                difference: function(b, P) {
                  return K(b, [
                    0,
                    0,
                    0,
                    0,
                    2,
                    0,
                    2,
                    0,
                    1,
                    1,
                    0,
                    0,
                    0,
                    1,
                    2,
                    0
                  ], P);
                },
                differenceRev: function(b, P) {
                  return K(b, [
                    0,
                    2,
                    1,
                    0,
                    0,
                    0,
                    1,
                    1,
                    0,
                    2,
                    0,
                    2,
                    0,
                    0,
                    0,
                    0
                  ], P);
                },
                xor: function(b, P) {
                  return K(b, [
                    0,
                    2,
                    1,
                    0,
                    2,
                    0,
                    0,
                    1,
                    1,
                    0,
                    0,
                    2,
                    0,
                    1,
                    2,
                    0
                  ], P);
                }
              };
              Y.exports = e;
            }
          ),
          /***/
          3944: (
            /***/
            function(Y, K, e) {
              var b = e(90386).Transform, P = e(79743);
              function n() {
                b.call(this, { readableObjectMode: !0 });
              }
              n.prototype = Object.create(b.prototype), n.prototype.constructor = n, P(n.prototype), K.rU = function(T, A, p) {
                for (var u = A, t = 0; t < p.length; )
                  if (T[u++] !== p[t++]) return !1;
                return !0;
              }, K.VG = function(T, A) {
                var p = [], u = 0;
                if (A && A === "hex")
                  for (; u < T.length; )
                    p.push(parseInt(T.slice(u, u + 2), 16)), u += 2;
                else
                  for (; u < T.length; u++)
                    p.push(T.charCodeAt(u) & 255);
                return p;
              }, K.$l = function(T, A) {
                return T[A] | T[A + 1] << 8;
              }, K.bc = function(T, A) {
                return T[A + 1] | T[A] << 8;
              }, K.tF = function(T, A) {
                return T[A] | T[A + 1] << 8 | T[A + 2] << 16 | T[A + 3] * 16777216;
              }, K.bb = function(T, A) {
                return T[A + 3] | T[A + 2] << 8 | T[A + 1] << 16 | T[A] * 16777216;
              };
              function s(T, A, p) {
                Error.call(this), Error.captureStackTrace ? Error.captureStackTrace(this, this.constructor) : this.stack = new Error().stack || "", this.name = this.constructor.name, this.message = T, A && (this.code = A), p && (this.statusCode = p);
              }
              s.prototype = Object.create(Error.prototype), s.prototype.constructor = s;
            }
          ),
          /***/
          19789: (
            /***/
            function(Y) {
              function K(P, n) {
                var s = new Error(P);
                return s.code = n, s;
              }
              function e(P) {
                try {
                  return decodeURIComponent(escape(P));
                } catch {
                  return P;
                }
              }
              function b(P, n, s) {
                this.input = P.subarray(n, s), this.start = n;
                var T = String.fromCharCode.apply(null, this.input.subarray(0, 4));
                if (T !== "II*\0" && T !== "MM\0*")
                  throw K("invalid TIFF signature", "EBADDATA");
                this.big_endian = T[0] === "M";
              }
              b.prototype.each = function(P) {
                this.aborted = !1;
                var n = this.read_uint32(4);
                for (this.ifds_to_read = [{
                  id: 0,
                  offset: n
                }]; this.ifds_to_read.length > 0 && !this.aborted; ) {
                  var s = this.ifds_to_read.shift();
                  s.offset && this.scan_ifd(s.id, s.offset, P);
                }
              }, b.prototype.read_uint16 = function(P) {
                var n = this.input;
                if (P + 2 > n.length) throw K("unexpected EOF", "EBADDATA");
                return this.big_endian ? n[P] * 256 + n[P + 1] : n[P] + n[P + 1] * 256;
              }, b.prototype.read_uint32 = function(P) {
                var n = this.input;
                if (P + 4 > n.length) throw K("unexpected EOF", "EBADDATA");
                return this.big_endian ? n[P] * 16777216 + n[P + 1] * 65536 + n[P + 2] * 256 + n[P + 3] : n[P] + n[P + 1] * 256 + n[P + 2] * 65536 + n[P + 3] * 16777216;
              }, b.prototype.is_subifd_link = function(P, n) {
                return P === 0 && n === 34665 || // SubIFD
                P === 0 && n === 34853 || // GPS Info
                P === 34665 && n === 40965;
              }, b.prototype.exif_format_length = function(P) {
                switch (P) {
                  case 1:
                  case 2:
                  case 6:
                  case 7:
                    return 1;
                  case 3:
                  case 8:
                    return 2;
                  case 4:
                  case 9:
                  case 11:
                    return 4;
                  case 5:
                  case 10:
                  case 12:
                    return 8;
                  default:
                    return 0;
                }
              }, b.prototype.exif_format_read = function(P, n) {
                var s;
                switch (P) {
                  case 1:
                  case 2:
                    return s = this.input[n], s;
                  case 6:
                    return s = this.input[n], s | (s & 128) * 33554430;
                  case 3:
                    return s = this.read_uint16(n), s;
                  case 8:
                    return s = this.read_uint16(n), s | (s & 32768) * 131070;
                  case 4:
                    return s = this.read_uint32(n), s;
                  case 9:
                    return s = this.read_uint32(n), s | 0;
                  case 5:
                  case 10:
                  case 11:
                  case 12:
                    return null;
                  case 7:
                    return null;
                  default:
                    return null;
                }
              }, b.prototype.scan_ifd = function(P, n, s) {
                var T = this.read_uint16(n);
                n += 2;
                for (var A = 0; A < T; A++) {
                  var p = this.read_uint16(n), u = this.read_uint16(n + 2), t = this.read_uint32(n + 4), r = this.exif_format_length(u), i = t * r, a = i <= 4 ? n + 8 : this.read_uint32(n + 8), l = !1;
                  if (a + i > this.input.length)
                    throw K("unexpected EOF", "EBADDATA");
                  for (var o = [], y = a, g = 0; g < t; g++, y += r) {
                    var x = this.exif_format_read(u, y);
                    if (x === null) {
                      o = null;
                      break;
                    }
                    o.push(x);
                  }
                  Array.isArray(o) && u === 2 && (o = e(String.fromCharCode.apply(null, o)), o && o[o.length - 1] === "\0" && (o = o.slice(0, -1))), this.is_subifd_link(P, p) && Array.isArray(o) && Number.isInteger(o[0]) && o[0] > 0 && (this.ifds_to_read.push({
                    id: p,
                    offset: o[0]
                  }), l = !0);
                  var c = {
                    is_big_endian: this.big_endian,
                    ifd: P,
                    tag: p,
                    format: u,
                    count: t,
                    entry_offset: n + this.start,
                    data_length: i,
                    data_offset: a + this.start,
                    value: o,
                    is_subifd_link: l
                  };
                  if (s(c) === !1) {
                    this.aborted = !0;
                    return;
                  }
                  n += 12;
                }
                P === 0 && this.ifds_to_read.push({
                  id: 1,
                  offset: this.read_uint32(n)
                });
              }, Y.exports.ExifParser = b, Y.exports.get_orientation = function(P) {
                var n = 0;
                try {
                  return new b(P, 0, P.length).each(function(s) {
                    if (s.ifd === 0 && s.tag === 274 && Array.isArray(s.value))
                      return n = s.value[0], !1;
                  }), n;
                } catch {
                  return -1;
                }
              };
            }
          ),
          /***/
          20186: (
            /***/
            function(Y, K, e) {
              var b = e(3944).bc, P = e(3944).bb;
              function n(i, a) {
                if (i.length < 4 + a) return null;
                var l = P(i, a);
                return i.length < l + a || l < 8 ? null : {
                  boxtype: String.fromCharCode.apply(null, i.slice(a + 4, a + 8)),
                  data: i.slice(a + 8, a + l),
                  end: a + l
                };
              }
              Y.exports.unbox = n;
              function s(i, a) {
                for (var l = 0; ; ) {
                  var o = n(i, l);
                  if (!o) break;
                  switch (o.boxtype) {
                    case "ispe":
                      a.sizes.push({
                        width: P(o.data, 4),
                        height: P(o.data, 8)
                      });
                      break;
                    case "irot":
                      a.transforms.push({
                        type: "irot",
                        value: o.data[0] & 3
                      });
                      break;
                    case "imir":
                      a.transforms.push({
                        type: "imir",
                        value: o.data[0] & 1
                      });
                      break;
                  }
                  l = o.end;
                }
              }
              function T(i, a, l) {
                for (var o = 0, y = 0; y < l; y++)
                  o = o * 256 + (i[a + y] || 0);
                return o;
              }
              function A(i, a) {
                for (var l = i[4] >> 4 & 15, o = i[4] & 15, y = i[5] >> 4 & 15, g = b(i, 6), x = 8, c = 0; c < g; c++) {
                  var v = b(i, x);
                  x += 2;
                  var f = b(i, x);
                  x += 2;
                  var _ = T(i, x, y);
                  x += y;
                  var S = b(i, x);
                  if (x += 2, f === 0 && S === 1) {
                    var M = T(i, x, l), C = T(i, x + l, o);
                    a.item_loc[v] = { length: C, offset: M + _ };
                  }
                  x += S * (l + o);
                }
              }
              function p(i, a) {
                for (var l = b(i, 4), o = 6, y = 0; y < l; y++) {
                  var g = n(i, o);
                  if (!g) break;
                  if (g.boxtype === "infe") {
                    for (var x = b(g.data, 4), c = "", v = 8; v < g.data.length && g.data[v]; v++)
                      c += String.fromCharCode(g.data[v]);
                    a.item_inf[c] = x;
                  }
                  o = g.end;
                }
              }
              function u(i, a) {
                for (var l = 0; ; ) {
                  var o = n(i, l);
                  if (!o) break;
                  o.boxtype === "ipco" && s(o.data, a), l = o.end;
                }
              }
              function t(i, a) {
                for (var l = 4; ; ) {
                  var o = n(i, l);
                  if (!o) break;
                  o.boxtype === "iprp" && u(o.data, a), o.boxtype === "iloc" && A(o.data, a), o.boxtype === "iinf" && p(o.data, a), l = o.end;
                }
              }
              function r(i) {
                var a = i.reduce(function(y, g) {
                  return y.width > g.width || y.width === g.width && y.height > g.height ? y : g;
                }), l = i.reduce(function(y, g) {
                  return y.height > g.height || y.height === g.height && y.width > g.width ? y : g;
                }), o;
                return a.width > l.height || a.width === l.height && a.height > l.width ? o = a : o = l, o;
              }
              Y.exports.readSizeFromMeta = function(i) {
                var a = {
                  sizes: [],
                  transforms: [],
                  item_inf: {},
                  item_loc: {}
                };
                if (t(i, a), !!a.sizes.length) {
                  var l = r(a.sizes), o = 1;
                  a.transforms.forEach(function(g) {
                    var x = { 1: 6, 2: 5, 3: 8, 4: 7, 5: 4, 6: 3, 7: 2, 8: 1 }, c = { 1: 4, 2: 3, 3: 2, 4: 1, 5: 6, 6: 5, 7: 8, 8: 7 };
                    if (g.type === "imir" && (g.value === 0 ? o = c[o] : (o = c[o], o = x[o], o = x[o])), g.type === "irot")
                      for (var v = 0; v < g.value; v++)
                        o = x[o];
                  });
                  var y = null;
                  return a.item_inf.Exif && (y = a.item_loc[a.item_inf.Exif]), {
                    width: l.width,
                    height: l.height,
                    orientation: a.transforms.length ? o : null,
                    variants: a.sizes,
                    exif_location: y
                  };
                }
              }, Y.exports.getMimeType = function(i) {
                var a = String.fromCharCode.apply(null, i.slice(0, 4)), l = {};
                l[a] = !0;
                for (var o = 8; o < i.length; o += 4)
                  l[String.fromCharCode.apply(null, i.slice(o, o + 4))] = !0;
                if (!(!l.mif1 && !l.msf1 && !l.miaf))
                  return a === "avif" || a === "avis" || a === "avio" ? { type: "avif", mime: "image/avif" } : a === "heic" || a === "heix" ? { type: "heic", mime: "image/heic" } : a === "hevc" || a === "hevx" ? { type: "heic", mime: "image/heic-sequence" } : l.avif || l.avis ? { type: "avif", mime: "image/avif" } : l.heic || l.heix || l.hevc || l.hevx || l.heis ? l.msf1 ? { type: "heif", mime: "image/heif-sequence" } : { type: "heif", mime: "image/heif" } : { type: "avif", mime: "image/avif" };
              };
            }
          ),
          /***/
          31149: (
            /***/
            function(Y, K, e) {
              var b = e(3944).VG, P = e(3944).rU, n = e(3944).bb, s = e(20186), T = e(19789), A = b("ftyp");
              Y.exports = function(p) {
                if (P(p, 4, A)) {
                  var u = s.unbox(p, 0);
                  if (u) {
                    var t = s.getMimeType(u.data);
                    if (t) {
                      for (var r, i = u.end; ; ) {
                        var a = s.unbox(p, i);
                        if (!a) break;
                        if (i = a.end, a.boxtype === "mdat") return;
                        if (a.boxtype === "meta") {
                          r = a.data;
                          break;
                        }
                      }
                      if (r) {
                        var l = s.readSizeFromMeta(r);
                        if (l) {
                          var o = {
                            width: l.width,
                            height: l.height,
                            type: t.type,
                            mime: t.mime,
                            wUnits: "px",
                            hUnits: "px"
                          };
                          if (l.variants.length > 1 && (o.variants = l.variants), l.orientation && (o.orientation = l.orientation), l.exif_location && l.exif_location.offset + l.exif_location.length <= p.length) {
                            var y = n(p, l.exif_location.offset), g = p.slice(
                              l.exif_location.offset + y + 4,
                              l.exif_location.offset + l.exif_location.length
                            ), x = T.get_orientation(g);
                            x > 0 && (o.orientation = x);
                          }
                          return o;
                        }
                      }
                    }
                  }
                }
              };
            }
          ),
          /***/
          78218: (
            /***/
            function(Y, K, e) {
              var b = e(3944).VG, P = e(3944).rU, n = e(3944).$l, s = b("BM");
              Y.exports = function(T) {
                if (!(T.length < 26) && P(T, 0, s))
                  return {
                    width: n(T, 18),
                    height: n(T, 22),
                    type: "bmp",
                    mime: "image/bmp",
                    wUnits: "px",
                    hUnits: "px"
                  };
              };
            }
          ),
          /***/
          37495: (
            /***/
            function(Y, K, e) {
              var b = e(3944).VG, P = e(3944).rU, n = e(3944).$l, s = b("GIF87a"), T = b("GIF89a");
              Y.exports = function(A) {
                if (!(A.length < 10) && !(!P(A, 0, s) && !P(A, 0, T)))
                  return {
                    width: n(A, 6),
                    height: n(A, 8),
                    type: "gif",
                    mime: "image/gif",
                    wUnits: "px",
                    hUnits: "px"
                  };
              };
            }
          ),
          /***/
          88708: (
            /***/
            function(Y, K, e) {
              var b = e(3944).$l, P = 0, n = 1, s = 16;
              Y.exports = function(T) {
                var A = b(T, 0), p = b(T, 2), u = b(T, 4);
                if (!(A !== P || p !== n || !u)) {
                  for (var t = [], r = { width: 0, height: 0 }, i = 0; i < u; i++) {
                    var a = T[6 + s * i] || 256, l = T[6 + s * i + 1] || 256, o = { width: a, height: l };
                    t.push(o), (a > r.width || l > r.height) && (r = o);
                  }
                  return {
                    width: r.width,
                    height: r.height,
                    variants: t,
                    type: "ico",
                    mime: "image/x-icon",
                    wUnits: "px",
                    hUnits: "px"
                  };
                }
              };
            }
          ),
          /***/
          13827: (
            /***/
            function(Y, K, e) {
              var b = e(3944).bc, P = e(3944).VG, n = e(3944).rU, s = e(19789), T = P("Exif\0\0");
              Y.exports = function(A) {
                if (!(A.length < 2) && !(A[0] !== 255 || A[1] !== 216 || A[2] !== 255))
                  for (var p = 2; ; ) {
                    for (; ; ) {
                      if (A.length - p < 2) return;
                      if (A[p++] === 255) break;
                    }
                    for (var u = A[p++], t; u === 255; ) u = A[p++];
                    if (208 <= u && u <= 217 || u === 1)
                      t = 0;
                    else if (192 <= u && u <= 254) {
                      if (A.length - p < 2) return;
                      t = b(A, p) - 2, p += 2;
                    } else
                      return;
                    if (u === 217 || u === 218)
                      return;
                    var r;
                    if (u === 225 && t >= 10 && n(A, p, T) && (r = s.get_orientation(A.slice(p + 6, p + t))), t >= 5 && 192 <= u && u <= 207 && u !== 196 && u !== 200 && u !== 204) {
                      if (A.length - p < t) return;
                      var i = {
                        width: b(A, p + 3),
                        height: b(A, p + 1),
                        type: "jpg",
                        mime: "image/jpeg",
                        wUnits: "px",
                        hUnits: "px"
                      };
                      return r > 0 && (i.orientation = r), i;
                    }
                    p += t;
                  }
              };
            }
          ),
          /***/
          46594: (
            /***/
            function(Y, K, e) {
              var b = e(3944).VG, P = e(3944).rU, n = e(3944).bb, s = b(`PNG\r

`), T = b("IHDR");
              Y.exports = function(A) {
                if (!(A.length < 24) && P(A, 0, s) && P(A, 12, T))
                  return {
                    width: n(A, 16),
                    height: n(A, 20),
                    type: "png",
                    mime: "image/png",
                    wUnits: "px",
                    hUnits: "px"
                  };
              };
            }
          ),
          /***/
          13198: (
            /***/
            function(Y, K, e) {
              var b = e(3944).VG, P = e(3944).rU, n = e(3944).bb, s = b("8BPS\0");
              Y.exports = function(T) {
                if (!(T.length < 22) && P(T, 0, s))
                  return {
                    width: n(T, 18),
                    height: n(T, 14),
                    type: "psd",
                    mime: "image/vnd.adobe.photoshop",
                    wUnits: "px",
                    hUnits: "px"
                  };
              };
            }
          ),
          /***/
          94203: (
            /***/
            function(Y) {
              function K(r) {
                return r === 32 || r === 9 || r === 13 || r === 10;
              }
              function e(r) {
                return typeof r == "number" && isFinite(r) && r > 0;
              }
              function b(r) {
                var i = 0, a = r.length;
                for (r[0] === 239 && r[1] === 187 && r[2] === 191 && (i = 3); i < a && K(r[i]); ) i++;
                return i === a ? !1 : r[i] === 60;
              }
              var P = /<[-_.:a-zA-Z0-9][^>]*>/, n = /^<([-_.:a-zA-Z0-9]+:)?svg\s/, s = /[^-]\bwidth="([^%]+?)"|[^-]\bwidth='([^%]+?)'/, T = /\bheight="([^%]+?)"|\bheight='([^%]+?)'/, A = /\bview[bB]ox="(.+?)"|\bview[bB]ox='(.+?)'/, p = /in$|mm$|cm$|pt$|pc$|px$|em$|ex$/;
              function u(r) {
                var i = r.match(s), a = r.match(T), l = r.match(A);
                return {
                  width: i && (i[1] || i[2]),
                  height: a && (a[1] || a[2]),
                  viewbox: l && (l[1] || l[2])
                };
              }
              function t(r) {
                return p.test(r) ? r.match(p)[0] : "px";
              }
              Y.exports = function(r) {
                if (b(r)) {
                  for (var i = "", a = 0; a < r.length; a++)
                    i += String.fromCharCode(r[a]);
                  var l = (i.match(P) || [""])[0];
                  if (n.test(l)) {
                    var o = u(l), y = parseFloat(o.width), g = parseFloat(o.height);
                    if (o.width && o.height)
                      return !e(y) || !e(g) ? void 0 : {
                        width: y,
                        height: g,
                        type: "svg",
                        mime: "image/svg+xml",
                        wUnits: t(o.width),
                        hUnits: t(o.height)
                      };
                    var x = (o.viewbox || "").split(" "), c = {
                      width: x[2],
                      height: x[3]
                    }, v = parseFloat(c.width), f = parseFloat(c.height);
                    if (!(!e(v) || !e(f)) && t(c.width) === t(c.height)) {
                      var _ = v / f;
                      return o.width ? e(y) ? {
                        width: y,
                        height: y / _,
                        type: "svg",
                        mime: "image/svg+xml",
                        wUnits: t(o.width),
                        hUnits: t(o.width)
                      } : void 0 : o.height ? e(g) ? {
                        width: g * _,
                        height: g,
                        type: "svg",
                        mime: "image/svg+xml",
                        wUnits: t(o.height),
                        hUnits: t(o.height)
                      } : void 0 : {
                        width: v,
                        height: f,
                        type: "svg",
                        mime: "image/svg+xml",
                        wUnits: t(c.width),
                        hUnits: t(c.height)
                      };
                    }
                  }
                }
              };
            }
          ),
          /***/
          46966: (
            /***/
            function(Y, K, e) {
              var b = e(3944).VG, P = e(3944).rU, n = e(3944).$l, s = e(3944).bc, T = e(3944).tF, A = e(3944).bb, p = b("II*\0"), u = b("MM\0*");
              function t(a, l, o) {
                return o ? s(a, l) : n(a, l);
              }
              function r(a, l, o) {
                return o ? A(a, l) : T(a, l);
              }
              function i(a, l, o) {
                var y = t(a, l + 2, o), g = r(a, l + 4, o);
                return g !== 1 || y !== 3 && y !== 4 ? null : y === 3 ? t(a, l + 8, o) : r(a, l + 8, o);
              }
              Y.exports = function(a) {
                if (!(a.length < 8) && !(!P(a, 0, p) && !P(a, 0, u))) {
                  var l = a[0] === 77, o = r(a, 4, l) - 8;
                  if (!(o < 0)) {
                    var y = o + 8;
                    if (!(a.length - y < 2)) {
                      var g = t(a, y + 0, l) * 12;
                      if (!(g <= 0) && (y += 2, !(a.length - y < g))) {
                        var x, c, v, f;
                        for (x = 0; x < g; x += 12)
                          f = t(a, y + x, l), f === 256 ? c = i(a, y + x, l) : f === 257 && (v = i(a, y + x, l));
                        if (c && v)
                          return {
                            width: c,
                            height: v,
                            type: "tiff",
                            mime: "image/tiff",
                            wUnits: "px",
                            hUnits: "px"
                          };
                      }
                    }
                  }
                }
              };
            }
          ),
          /***/
          88023: (
            /***/
            function(Y, K, e) {
              var b = e(3944).VG, P = e(3944).rU, n = e(3944).$l, s = e(3944).tF, T = e(19789), A = b("RIFF"), p = b("WEBP");
              function u(i, a) {
                if (!(i[a + 3] !== 157 || i[a + 4] !== 1 || i[a + 5] !== 42))
                  return {
                    width: n(i, a + 6) & 16383,
                    height: n(i, a + 8) & 16383,
                    type: "webp",
                    mime: "image/webp",
                    wUnits: "px",
                    hUnits: "px"
                  };
              }
              function t(i, a) {
                if (i[a] === 47) {
                  var l = s(i, a + 1);
                  return {
                    width: (l & 16383) + 1,
                    height: (l >> 14 & 16383) + 1,
                    type: "webp",
                    mime: "image/webp",
                    wUnits: "px",
                    hUnits: "px"
                  };
                }
              }
              function r(i, a) {
                return {
                  // TODO: replace with `data.readUIntLE(8, 3) + 1`
                  //       when 0.10 support is dropped
                  width: (i[a + 6] << 16 | i[a + 5] << 8 | i[a + 4]) + 1,
                  height: (i[a + 9] << a | i[a + 8] << 8 | i[a + 7]) + 1,
                  type: "webp",
                  mime: "image/webp",
                  wUnits: "px",
                  hUnits: "px"
                };
              }
              Y.exports = function(i) {
                if (!(i.length < 16) && !(!P(i, 0, A) && !P(i, 8, p))) {
                  var a = 12, l = null, o = 0, y = s(i, 4) + 8;
                  if (!(y > i.length)) {
                    for (; a + 8 < y; ) {
                      if (i[a] === 0) {
                        a++;
                        continue;
                      }
                      var g = String.fromCharCode.apply(null, i.slice(a, a + 4)), x = s(i, a + 4);
                      g === "VP8 " && x >= 10 ? l = l || u(i, a + 8) : g === "VP8L" && x >= 9 ? l = l || t(i, a + 8) : g === "VP8X" && x >= 10 ? l = l || r(i, a + 8) : g === "EXIF" && (o = T.get_orientation(i.slice(a + 8, a + 8 + x)), a = 1 / 0), a += 8 + x;
                    }
                    if (l)
                      return o > 0 && (l.orientation = o), l;
                  }
                }
              };
            }
          ),
          /***/
          43751: (
            /***/
            function(Y, K, e) {
              Y.exports = {
                avif: e(31149),
                bmp: e(78218),
                gif: e(37495),
                ico: e(88708),
                jpeg: e(13827),
                png: e(46594),
                psd: e(13198),
                svg: e(94203),
                tiff: e(46966),
                webp: e(88023)
              };
            }
          ),
          /***/
          19490: (
            /***/
            function(Y, K, e) {
              var b = e(43751);
              function P(n) {
                for (var s = Object.keys(b), T = 0; T < s.length; T++) {
                  var A = b[s[T]](n);
                  if (A) return A;
                }
                return null;
              }
              Y.exports = function(s) {
                return P(s);
              }, Y.exports.parsers = b;
            }
          ),
          /***/
          33282: (
            /***/
            function(Y) {
              var K = Y.exports = {}, e, b;
              function P() {
                throw new Error("setTimeout has not been defined");
              }
              function n() {
                throw new Error("clearTimeout has not been defined");
              }
              (function() {
                try {
                  typeof setTimeout == "function" ? e = setTimeout : e = P;
                } catch {
                  e = P;
                }
                try {
                  typeof clearTimeout == "function" ? b = clearTimeout : b = n;
                } catch {
                  b = n;
                }
              })();
              function s(o) {
                if (e === setTimeout)
                  return setTimeout(o, 0);
                if ((e === P || !e) && setTimeout)
                  return e = setTimeout, setTimeout(o, 0);
                try {
                  return e(o, 0);
                } catch {
                  try {
                    return e.call(null, o, 0);
                  } catch {
                    return e.call(this, o, 0);
                  }
                }
              }
              function T(o) {
                if (b === clearTimeout)
                  return clearTimeout(o);
                if ((b === n || !b) && clearTimeout)
                  return b = clearTimeout, clearTimeout(o);
                try {
                  return b(o);
                } catch {
                  try {
                    return b.call(null, o);
                  } catch {
                    return b.call(this, o);
                  }
                }
              }
              var A = [], p = !1, u, t = -1;
              function r() {
                !p || !u || (p = !1, u.length ? A = u.concat(A) : t = -1, A.length && i());
              }
              function i() {
                if (!p) {
                  var o = s(r);
                  p = !0;
                  for (var y = A.length; y; ) {
                    for (u = A, A = []; ++t < y; )
                      u && u[t].run();
                    t = -1, y = A.length;
                  }
                  u = null, p = !1, T(o);
                }
              }
              K.nextTick = function(o) {
                var y = new Array(arguments.length - 1);
                if (arguments.length > 1)
                  for (var g = 1; g < arguments.length; g++)
                    y[g - 1] = arguments[g];
                A.push(new a(o, y)), A.length === 1 && !p && s(i);
              };
              function a(o, y) {
                this.fun = o, this.array = y;
              }
              a.prototype.run = function() {
                this.fun.apply(null, this.array);
              }, K.title = "browser", K.browser = !0, K.env = {}, K.argv = [], K.version = "", K.versions = {};
              function l() {
              }
              K.on = l, K.addListener = l, K.once = l, K.off = l, K.removeListener = l, K.removeAllListeners = l, K.emit = l, K.prependListener = l, K.prependOnceListener = l, K.listeners = function(o) {
                return [];
              }, K.binding = function(o) {
                throw new Error("process.binding is not supported");
              }, K.cwd = function() {
                return "/";
              }, K.chdir = function(o) {
                throw new Error("process.chdir is not supported");
              }, K.umask = function() {
                return 0;
              };
            }
          ),
          /***/
          16494: (
            /***/
            function(Y, K, e) {
              for (var b = e(71879), P = typeof window > "u" ? e.g : window, n = ["moz", "webkit"], s = "AnimationFrame", T = P["request" + s], A = P["cancel" + s] || P["cancelRequest" + s], p = 0; !T && p < n.length; p++)
                T = P[n[p] + "Request" + s], A = P[n[p] + "Cancel" + s] || P[n[p] + "CancelRequest" + s];
              if (!T || !A) {
                var u = 0, t = 0, r = [], i = 1e3 / 60;
                T = function(a) {
                  if (r.length === 0) {
                    var l = b(), o = Math.max(0, i - (l - u));
                    u = o + l, setTimeout(function() {
                      var y = r.slice(0);
                      r.length = 0;
                      for (var g = 0; g < y.length; g++)
                        if (!y[g].cancelled)
                          try {
                            y[g].callback(u);
                          } catch (x) {
                            setTimeout(function() {
                              throw x;
                            }, 0);
                          }
                    }, Math.round(o));
                  }
                  return r.push({
                    handle: ++t,
                    callback: a,
                    cancelled: !1
                  }), t;
                }, A = function(a) {
                  for (var l = 0; l < r.length; l++)
                    r[l].handle === a && (r[l].cancelled = !0);
                };
              }
              Y.exports = function(a) {
                return T.call(P, a);
              }, Y.exports.cancel = function() {
                A.apply(P, arguments);
              }, Y.exports.polyfill = function(a) {
                a || (a = P), a.requestAnimationFrame = T, a.cancelAnimationFrame = A;
              };
            }
          ),
          /***/
          29978: (
            /***/
            function(Y, K, e) {
              var b = e(78112), P = e(162), n = e(79788), s = e(6807), T = e(27976), A = e(83473), p = e(51498), u = p.float32, t = p.fract32;
              Y.exports = i;
              var r = [
                //direction, lineWidth shift, capSize shift
                // x-error bar
                [1, 0, 0, 1, 0, 0],
                [1, 0, 0, -1, 0, 0],
                [-1, 0, 0, -1, 0, 0],
                [-1, 0, 0, -1, 0, 0],
                [-1, 0, 0, 1, 0, 0],
                [1, 0, 0, 1, 0, 0],
                // x-error right cap
                [1, 0, -1, 0, 0, 1],
                [1, 0, -1, 0, 0, -1],
                [1, 0, 1, 0, 0, -1],
                [1, 0, 1, 0, 0, -1],
                [1, 0, 1, 0, 0, 1],
                [1, 0, -1, 0, 0, 1],
                // x-error left cap
                [-1, 0, -1, 0, 0, 1],
                [-1, 0, -1, 0, 0, -1],
                [-1, 0, 1, 0, 0, -1],
                [-1, 0, 1, 0, 0, -1],
                [-1, 0, 1, 0, 0, 1],
                [-1, 0, -1, 0, 0, 1],
                // y-error bar
                [0, 1, 1, 0, 0, 0],
                [0, 1, -1, 0, 0, 0],
                [0, -1, -1, 0, 0, 0],
                [0, -1, -1, 0, 0, 0],
                [0, 1, 1, 0, 0, 0],
                [0, -1, 1, 0, 0, 0],
                // y-error top cap
                [0, 1, 0, -1, 1, 0],
                [0, 1, 0, -1, -1, 0],
                [0, 1, 0, 1, -1, 0],
                [0, 1, 0, 1, 1, 0],
                [0, 1, 0, -1, 1, 0],
                [0, 1, 0, 1, -1, 0],
                // y-error bottom cap
                [0, -1, 0, -1, 1, 0],
                [0, -1, 0, -1, -1, 0],
                [0, -1, 0, 1, -1, 0],
                [0, -1, 0, 1, 1, 0],
                [0, -1, 0, -1, 1, 0],
                [0, -1, 0, 1, -1, 0]
              ];
              function i(a, l) {
                if (typeof a == "function" ? (l || (l = {}), l.regl = a) : l = a, l.length && (l.positions = l), a = l.regl, !a.hasExtension("ANGLE_instanced_arrays"))
                  throw Error("regl-error2d: `ANGLE_instanced_arrays` extension should be enabled");
                var o = a._gl, y, g, x, c, v, f, _ = {
                  color: "black",
                  capSize: 5,
                  lineWidth: 1,
                  opacity: 1,
                  viewport: null,
                  range: null,
                  offset: 0,
                  count: 0,
                  bounds: null,
                  positions: [],
                  errors: []
                }, S = [];
                return c = a.buffer({
                  usage: "dynamic",
                  type: "uint8",
                  data: new Uint8Array(0)
                }), g = a.buffer({
                  usage: "dynamic",
                  type: "float",
                  data: new Uint8Array(0)
                }), x = a.buffer({
                  usage: "dynamic",
                  type: "float",
                  data: new Uint8Array(0)
                }), v = a.buffer({
                  usage: "dynamic",
                  type: "float",
                  data: new Uint8Array(0)
                }), f = a.buffer({
                  usage: "static",
                  type: "float",
                  data: r
                }), L(l), y = a({
                  vert: `
		precision highp float;

		attribute vec2 position, positionFract;
		attribute vec4 error;
		attribute vec4 color;

		attribute vec2 direction, lineOffset, capOffset;

		uniform vec4 viewport;
		uniform float lineWidth, capSize;
		uniform vec2 scale, scaleFract, translate, translateFract;

		varying vec4 fragColor;

		void main() {
			fragColor = color / 255.;

			vec2 pixelOffset = lineWidth * lineOffset + (capSize + lineWidth) * capOffset;

			vec2 dxy = -step(.5, direction.xy) * error.xz + step(direction.xy, vec2(-.5)) * error.yw;

			vec2 position = position + dxy;

			vec2 pos = (position + translate) * scale
				+ (positionFract + translateFract) * scale
				+ (position + translate) * scaleFract
				+ (positionFract + translateFract) * scaleFract;

			pos += pixelOffset / viewport.zw;

			gl_Position = vec4(pos * 2. - 1., 0, 1);
		}
		`,
                  frag: `
		precision highp float;

		varying vec4 fragColor;

		uniform float opacity;

		void main() {
			gl_FragColor = fragColor;
			gl_FragColor.a *= opacity;
		}
		`,
                  uniforms: {
                    range: a.prop("range"),
                    lineWidth: a.prop("lineWidth"),
                    capSize: a.prop("capSize"),
                    opacity: a.prop("opacity"),
                    scale: a.prop("scale"),
                    translate: a.prop("translate"),
                    scaleFract: a.prop("scaleFract"),
                    translateFract: a.prop("translateFract"),
                    viewport: function(h, E) {
                      return [E.viewport.x, E.viewport.y, h.viewportWidth, h.viewportHeight];
                    }
                  },
                  attributes: {
                    //dynamic attributes
                    color: {
                      buffer: c,
                      offset: function(h, E) {
                        return E.offset * 4;
                      },
                      divisor: 1
                    },
                    position: {
                      buffer: g,
                      offset: function(h, E) {
                        return E.offset * 8;
                      },
                      divisor: 1
                    },
                    positionFract: {
                      buffer: x,
                      offset: function(h, E) {
                        return E.offset * 8;
                      },
                      divisor: 1
                    },
                    error: {
                      buffer: v,
                      offset: function(h, E) {
                        return E.offset * 16;
                      },
                      divisor: 1
                    },
                    //static attributes
                    direction: {
                      buffer: f,
                      stride: 24,
                      offset: 0
                    },
                    lineOffset: {
                      buffer: f,
                      stride: 24,
                      offset: 8
                    },
                    capOffset: {
                      buffer: f,
                      stride: 24,
                      offset: 16
                    }
                  },
                  primitive: "triangles",
                  blend: {
                    enable: !0,
                    color: [0, 0, 0, 0],
                    equation: {
                      rgb: "add",
                      alpha: "add"
                    },
                    func: {
                      srcRGB: "src alpha",
                      dstRGB: "one minus src alpha",
                      srcAlpha: "one minus dst alpha",
                      dstAlpha: "one"
                    }
                  },
                  depth: {
                    enable: !1
                  },
                  scissor: {
                    enable: !0,
                    box: a.prop("viewport")
                  },
                  viewport: a.prop("viewport"),
                  stencil: !1,
                  instances: a.prop("count"),
                  count: r.length
                }), T(M, {
                  update: L,
                  draw: C,
                  destroy: d,
                  regl: a,
                  gl: o,
                  canvas: o.canvas,
                  groups: S
                }), M;
                function M(h) {
                  h ? L(h) : h === null && d(), C();
                }
                function C(h) {
                  if (typeof h == "number")
                    return m(h);
                  h && !Array.isArray(h) && (h = [h]), a._refresh(), S.forEach(function(E, w) {
                    if (E) {
                      if (h && (h[w] ? E.draw = !0 : E.draw = !1), !E.draw) {
                        E.draw = !0;
                        return;
                      }
                      m(w);
                    }
                  });
                }
                function m(h) {
                  typeof h == "number" && (h = S[h]), h != null && h && h.count && h.color && h.opacity && h.positions && h.positions.length > 1 && (h.scaleRatio = [
                    h.scale[0] * h.viewport.width,
                    h.scale[1] * h.viewport.height
                  ], y(h), h.after && h.after(h));
                }
                function L(h) {
                  if (h) {
                    h.length != null ? typeof h[0] == "number" && (h = [{ positions: h }]) : Array.isArray(h) || (h = [h]);
                    var E = 0, w = 0;
                    if (M.groups = S = h.map(function(F, G) {
                      var q = S[G];
                      if (F)
                        typeof F == "function" ? F = { after: F } : typeof F[0] == "number" && (F = { positions: F });
                      else return q;
                      return F = s(F, {
                        color: "color colors fill",
                        capSize: "capSize cap capsize cap-size",
                        lineWidth: "lineWidth line-width width line thickness",
                        opacity: "opacity alpha",
                        range: "range dataBox",
                        viewport: "viewport viewBox",
                        errors: "errors error",
                        positions: "positions position data points"
                      }), q || (S[G] = q = {
                        id: G,
                        scale: null,
                        translate: null,
                        scaleFract: null,
                        translateFract: null,
                        draw: !0
                      }, F = T({}, _, F)), n(q, F, [{
                        lineWidth: function(rt) {
                          return +rt * 0.5;
                        },
                        capSize: function(rt) {
                          return +rt * 0.5;
                        },
                        opacity: parseFloat,
                        errors: function(rt) {
                          return rt = A(rt), w += rt.length, rt;
                        },
                        positions: function(rt, st) {
                          return rt = A(rt, "float64"), st.count = Math.floor(rt.length / 2), st.bounds = b(rt, 2), st.offset = E, E += st.count, rt;
                        }
                      }, {
                        color: function(rt, st) {
                          var vt = st.count;
                          if (rt || (rt = "transparent"), !Array.isArray(rt) || typeof rt[0] == "number") {
                            var ht = rt;
                            rt = Array(vt);
                            for (var et = 0; et < vt; et++)
                              rt[et] = ht;
                          }
                          if (rt.length < vt)
                            throw Error("Not enough colors");
                          for (var Q = new Uint8Array(vt * 4), j = 0; j < vt; j++) {
                            var at = P(rt[j], "uint8");
                            Q.set(at, j * 4);
                          }
                          return Q;
                        },
                        range: function(rt, st, vt) {
                          var ht = st.bounds;
                          return rt || (rt = ht), st.scale = [1 / (rt[2] - rt[0]), 1 / (rt[3] - rt[1])], st.translate = [-rt[0], -rt[1]], st.scaleFract = t(st.scale), st.translateFract = t(st.translate), rt;
                        },
                        viewport: function(rt) {
                          var st;
                          return Array.isArray(rt) ? st = {
                            x: rt[0],
                            y: rt[1],
                            width: rt[2] - rt[0],
                            height: rt[3] - rt[1]
                          } : rt ? (st = {
                            x: rt.x || rt.left || 0,
                            y: rt.y || rt.top || 0
                          }, rt.right ? st.width = rt.right - st.x : st.width = rt.w || rt.width || 0, rt.bottom ? st.height = rt.bottom - st.y : st.height = rt.h || rt.height || 0) : st = {
                            x: 0,
                            y: 0,
                            width: o.drawingBufferWidth,
                            height: o.drawingBufferHeight
                          }, st;
                        }
                      }]), q;
                    }), E || w) {
                      var z = S.reduce(function(F, G, q) {
                        return F + (G ? G.count : 0);
                      }, 0), O = new Float64Array(z * 2), B = new Uint8Array(z * 4), V = new Float32Array(z * 4);
                      S.forEach(function(F, G) {
                        if (F) {
                          var q = F.positions, rt = F.count, st = F.offset, vt = F.color, ht = F.errors;
                          rt && (B.set(vt, st * 4), V.set(ht, st * 4), O.set(q, st * 2));
                        }
                      });
                      var U = u(O);
                      g(U);
                      var H = t(O, U);
                      x(H), c(B), v(V);
                    }
                  }
                }
                function d() {
                  g.destroy(), x.destroy(), c.destroy(), v.destroy(), f.destroy();
                }
              }
            }
          ),
          /***/
          49478: (
            /***/
            function(Y, K, e) {
              var b = e(162), P = e(78112), n = e(27976), s = e(6807), T = e(83473), A = e(25782), p = e(90956), u = e(51498), t = u.float32, r = u.fract32, i = e(93103), a = e(5137), l = e(33055), o = `
precision highp float;

attribute vec2 aCoord, bCoord, aCoordFract, bCoordFract;
attribute vec4 color;
attribute float lineEnd, lineTop;

uniform vec2 scale, scaleFract, translate, translateFract;
uniform float thickness, pixelRatio, id, depth;
uniform vec4 viewport;

varying vec4 fragColor;
varying vec2 tangent;

vec2 project(vec2 position, vec2 positionFract, vec2 scale, vec2 scaleFract, vec2 translate, vec2 translateFract) {
	// the order is important
	return position * scale + translate
       + positionFract * scale + translateFract
       + position * scaleFract
       + positionFract * scaleFract;
}

void main() {
	float lineStart = 1. - lineEnd;
	float lineOffset = lineTop * 2. - 1.;

	vec2 diff = (bCoord + bCoordFract - aCoord - aCoordFract);
	tangent = normalize(diff * scale * viewport.zw);
	vec2 normal = vec2(-tangent.y, tangent.x);

	vec2 position = project(aCoord, aCoordFract, scale, scaleFract, translate, translateFract) * lineStart
		+ project(bCoord, bCoordFract, scale, scaleFract, translate, translateFract) * lineEnd

		+ thickness * normal * .5 * lineOffset / viewport.zw;

	gl_Position = vec4(position * 2.0 - 1.0, depth, 1);

	fragColor = color / 255.;
}
`, y = `
precision highp float;

uniform float dashLength, pixelRatio, thickness, opacity, id;
uniform sampler2D dashTexture;

varying vec4 fragColor;
varying vec2 tangent;

void main() {
	float alpha = 1.;

	float t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25;
	float dash = texture2D(dashTexture, vec2(t, .5)).r;

	gl_FragColor = fragColor;
	gl_FragColor.a *= alpha * opacity * dash;
}
`, g = `
precision highp float;

attribute vec2 position, positionFract;

uniform vec4 color;
uniform vec2 scale, scaleFract, translate, translateFract;
uniform float pixelRatio, id;
uniform vec4 viewport;
uniform float opacity;

varying vec4 fragColor;

const float MAX_LINES = 256.;

void main() {
	float depth = (MAX_LINES - 4. - id) / (MAX_LINES);

	vec2 position = position * scale + translate
       + positionFract * scale + translateFract
       + position * scaleFract
       + positionFract * scaleFract;

	gl_Position = vec4(position * 2.0 - 1.0, depth, 1);

	fragColor = color / 255.;
	fragColor.a *= opacity;
}
`, x = `
precision highp float;
varying vec4 fragColor;

void main() {
	gl_FragColor = fragColor;
}
`, c = `
precision highp float;

attribute vec2 aCoord, bCoord, nextCoord, prevCoord;
attribute vec4 aColor, bColor;
attribute float lineEnd, lineTop;

uniform vec2 scale, translate;
uniform float thickness, pixelRatio, id, depth;
uniform vec4 viewport;
uniform float miterLimit, miterMode;

varying vec4 fragColor;
varying vec4 startCutoff, endCutoff;
varying vec2 tangent;
varying vec2 startCoord, endCoord;
varying float enableStartMiter, enableEndMiter;

const float REVERSE_THRESHOLD = -.875;
const float MIN_DIFF = 1e-6;

// TODO: possible optimizations: avoid overcalculating all for vertices and calc just one instead
// TODO: precalculate dot products, normalize things beforehead etc.
// TODO: refactor to rectangular algorithm

float distToLine(vec2 p, vec2 a, vec2 b) {
	vec2 diff = b - a;
	vec2 perp = normalize(vec2(-diff.y, diff.x));
	return dot(p - a, perp);
}

bool isNaN( float val ){
  return ( val < 0.0 || 0.0 < val || val == 0.0 ) ? false : true;
}

void main() {
	vec2 aCoord = aCoord, bCoord = bCoord, prevCoord = prevCoord, nextCoord = nextCoord;

  vec2 adjustedScale;
  adjustedScale.x = (abs(scale.x) < MIN_DIFF) ? MIN_DIFF : scale.x;
  adjustedScale.y = (abs(scale.y) < MIN_DIFF) ? MIN_DIFF : scale.y;

  vec2 scaleRatio = adjustedScale * viewport.zw;
	vec2 normalWidth = thickness / scaleRatio;

	float lineStart = 1. - lineEnd;
	float lineBot = 1. - lineTop;

	fragColor = (lineStart * aColor + lineEnd * bColor) / 255.;

	if (isNaN(aCoord.x) || isNaN(aCoord.y) || isNaN(bCoord.x) || isNaN(bCoord.y)) return;

	if (aCoord == prevCoord) prevCoord = aCoord + normalize(bCoord - aCoord);
	if (bCoord == nextCoord) nextCoord = bCoord - normalize(bCoord - aCoord);


	vec2 prevDiff = aCoord - prevCoord;
	vec2 currDiff = bCoord - aCoord;
	vec2 nextDiff = nextCoord - bCoord;

	vec2 prevTangent = normalize(prevDiff * scaleRatio);
	vec2 currTangent = normalize(currDiff * scaleRatio);
	vec2 nextTangent = normalize(nextDiff * scaleRatio);

	vec2 prevNormal = vec2(-prevTangent.y, prevTangent.x);
	vec2 currNormal = vec2(-currTangent.y, currTangent.x);
	vec2 nextNormal = vec2(-nextTangent.y, nextTangent.x);

	vec2 startJoinDirection = normalize(prevTangent - currTangent);
	vec2 endJoinDirection = normalize(currTangent - nextTangent);

	// collapsed/unidirectional segment cases
	// FIXME: there should be more elegant solution
	vec2 prevTanDiff = abs(prevTangent - currTangent);
	vec2 nextTanDiff = abs(nextTangent - currTangent);
	if (max(prevTanDiff.x, prevTanDiff.y) < MIN_DIFF) {
		startJoinDirection = currNormal;
	}
	if (max(nextTanDiff.x, nextTanDiff.y) < MIN_DIFF) {
		endJoinDirection = currNormal;
	}
	if (aCoord == bCoord) {
		endJoinDirection = startJoinDirection;
		currNormal = prevNormal;
		currTangent = prevTangent;
	}

	tangent = currTangent;

	//calculate join shifts relative to normals
	float startJoinShift = dot(currNormal, startJoinDirection);
	float endJoinShift = dot(currNormal, endJoinDirection);

	float startMiterRatio = abs(1. / startJoinShift);
	float endMiterRatio = abs(1. / endJoinShift);

	vec2 startJoin = startJoinDirection * startMiterRatio;
	vec2 endJoin = endJoinDirection * endMiterRatio;

	vec2 startTopJoin, startBotJoin, endTopJoin, endBotJoin;
	startTopJoin = sign(startJoinShift) * startJoin * .5;
	startBotJoin = -startTopJoin;

	endTopJoin = sign(endJoinShift) * endJoin * .5;
	endBotJoin = -endTopJoin;

	vec2 aTopCoord = aCoord + normalWidth * startTopJoin;
	vec2 bTopCoord = bCoord + normalWidth * endTopJoin;
	vec2 aBotCoord = aCoord + normalWidth * startBotJoin;
	vec2 bBotCoord = bCoord + normalWidth * endBotJoin;

	//miter anti-clipping
	float baClipping = distToLine(bCoord, aCoord, aBotCoord) / dot(normalize(normalWidth * endBotJoin), normalize(normalWidth.yx * vec2(-startBotJoin.y, startBotJoin.x)));
	float abClipping = distToLine(aCoord, bCoord, bTopCoord) / dot(normalize(normalWidth * startBotJoin), normalize(normalWidth.yx * vec2(-endBotJoin.y, endBotJoin.x)));

	//prevent close to reverse direction switch
	bool prevReverse = dot(currTangent, prevTangent) <= REVERSE_THRESHOLD && abs(dot(currTangent, prevNormal)) * min(length(prevDiff), length(currDiff)) <  length(normalWidth * currNormal);
	bool nextReverse = dot(currTangent, nextTangent) <= REVERSE_THRESHOLD && abs(dot(currTangent, nextNormal)) * min(length(nextDiff), length(currDiff)) <  length(normalWidth * currNormal);

	if (prevReverse) {
		//make join rectangular
		vec2 miterShift = normalWidth * startJoinDirection * miterLimit * .5;
		float normalAdjust = 1. - min(miterLimit / startMiterRatio, 1.);
		aBotCoord = aCoord + miterShift - normalAdjust * normalWidth * currNormal * .5;
		aTopCoord = aCoord + miterShift + normalAdjust * normalWidth * currNormal * .5;
	}
	else if (!nextReverse && baClipping > 0. && baClipping < length(normalWidth * endBotJoin)) {
		//handle miter clipping
		bTopCoord -= normalWidth * endTopJoin;
		bTopCoord += normalize(endTopJoin * normalWidth) * baClipping;
	}

	if (nextReverse) {
		//make join rectangular
		vec2 miterShift = normalWidth * endJoinDirection * miterLimit * .5;
		float normalAdjust = 1. - min(miterLimit / endMiterRatio, 1.);
		bBotCoord = bCoord + miterShift - normalAdjust * normalWidth * currNormal * .5;
		bTopCoord = bCoord + miterShift + normalAdjust * normalWidth * currNormal * .5;
	}
	else if (!prevReverse && abClipping > 0. && abClipping < length(normalWidth * startBotJoin)) {
		//handle miter clipping
		aBotCoord -= normalWidth * startBotJoin;
		aBotCoord += normalize(startBotJoin * normalWidth) * abClipping;
	}

	vec2 aTopPosition = (aTopCoord) * adjustedScale + translate;
	vec2 aBotPosition = (aBotCoord) * adjustedScale + translate;

	vec2 bTopPosition = (bTopCoord) * adjustedScale + translate;
	vec2 bBotPosition = (bBotCoord) * adjustedScale + translate;

	//position is normalized 0..1 coord on the screen
	vec2 position = (aTopPosition * lineTop + aBotPosition * lineBot) * lineStart + (bTopPosition * lineTop + bBotPosition * lineBot) * lineEnd;

	startCoord = aCoord * scaleRatio + translate * viewport.zw + viewport.xy;
	endCoord = bCoord * scaleRatio + translate * viewport.zw + viewport.xy;

	gl_Position = vec4(position  * 2.0 - 1.0, depth, 1);

	enableStartMiter = step(dot(currTangent, prevTangent), .5);
	enableEndMiter = step(dot(currTangent, nextTangent), .5);

	//bevel miter cutoffs
	if (miterMode == 1.) {
		if (enableStartMiter == 1.) {
			vec2 startMiterWidth = vec2(startJoinDirection) * thickness * miterLimit * .5;
			startCutoff = vec4(aCoord, aCoord);
			startCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;
			startCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;
			startCutoff += viewport.xyxy;
			startCutoff += startMiterWidth.xyxy;
		}

		if (enableEndMiter == 1.) {
			vec2 endMiterWidth = vec2(endJoinDirection) * thickness * miterLimit * .5;
			endCutoff = vec4(bCoord, bCoord);
			endCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x)  / scaleRatio;
			endCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;
			endCutoff += viewport.xyxy;
			endCutoff += endMiterWidth.xyxy;
		}
	}

	//round miter cutoffs
	else if (miterMode == 2.) {
		if (enableStartMiter == 1.) {
			vec2 startMiterWidth = vec2(startJoinDirection) * thickness * abs(dot(startJoinDirection, currNormal)) * .5;
			startCutoff = vec4(aCoord, aCoord);
			startCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;
			startCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;
			startCutoff += viewport.xyxy;
			startCutoff += startMiterWidth.xyxy;
		}

		if (enableEndMiter == 1.) {
			vec2 endMiterWidth = vec2(endJoinDirection) * thickness * abs(dot(endJoinDirection, currNormal)) * .5;
			endCutoff = vec4(bCoord, bCoord);
			endCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x)  / scaleRatio;
			endCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;
			endCutoff += viewport.xyxy;
			endCutoff += endMiterWidth.xyxy;
		}
	}
}
`, v = `
precision highp float;

uniform float dashLength, pixelRatio, thickness, opacity, id, miterMode;
uniform sampler2D dashTexture;

varying vec4 fragColor;
varying vec2 tangent;
varying vec4 startCutoff, endCutoff;
varying vec2 startCoord, endCoord;
varying float enableStartMiter, enableEndMiter;

float distToLine(vec2 p, vec2 a, vec2 b) {
	vec2 diff = b - a;
	vec2 perp = normalize(vec2(-diff.y, diff.x));
	return dot(p - a, perp);
}

void main() {
	float alpha = 1., distToStart, distToEnd;
	float cutoff = thickness * .5;

	//bevel miter
	if (miterMode == 1.) {
		if (enableStartMiter == 1.) {
			distToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);
			if (distToStart < -1.) {
				discard;
				return;
			}
			alpha *= min(max(distToStart + 1., 0.), 1.);
		}

		if (enableEndMiter == 1.) {
			distToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);
			if (distToEnd < -1.) {
				discard;
				return;
			}
			alpha *= min(max(distToEnd + 1., 0.), 1.);
		}
	}

	// round miter
	else if (miterMode == 2.) {
		if (enableStartMiter == 1.) {
			distToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);
			if (distToStart < 0.) {
				float radius = length(gl_FragCoord.xy - startCoord);

				if(radius > cutoff + .5) {
					discard;
					return;
				}

				alpha -= smoothstep(cutoff - .5, cutoff + .5, radius);
			}
		}

		if (enableEndMiter == 1.) {
			distToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);
			if (distToEnd < 0.) {
				float radius = length(gl_FragCoord.xy - endCoord);

				if(radius > cutoff + .5) {
					discard;
					return;
				}

				alpha -= smoothstep(cutoff - .5, cutoff + .5, radius);
			}
		}
	}

	float t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25;
	float dash = texture2D(dashTexture, vec2(t, .5)).r;

	gl_FragColor = fragColor;
	gl_FragColor.a *= alpha * opacity * dash;
}
`;
              Y.exports = f;
              function f(_, S) {
                if (!(this instanceof f))
                  return new f(_, S);
                if (typeof _ == "function" ? (S || (S = {}), S.regl = _) : S = _, S.length && (S.positions = S), _ = S.regl, !_.hasExtension("ANGLE_instanced_arrays"))
                  throw Error("regl-error2d: `ANGLE_instanced_arrays` extension should be enabled");
                this.gl = _._gl, this.regl = _, this.passes = [], this.shaders = f.shaders.has(_) ? f.shaders.get(_) : f.shaders.set(_, f.createShaders(_)).get(_), this.update(S);
              }
              f.dashMult = 2, f.maxPatternLength = 256, f.precisionThreshold = 3e6, f.maxPoints = 1e4, f.maxLines = 2048, f.shaders = new i(), f.createShaders = function(_) {
                var S = _.buffer({
                  usage: "static",
                  type: "float",
                  data: [0, 1, 0, 0, 1, 1, 1, 0]
                }), M = {
                  primitive: "triangle strip",
                  instances: _.prop("count"),
                  count: 4,
                  offset: 0,
                  uniforms: {
                    miterMode: function(d, h) {
                      return h.join === "round" ? 2 : 1;
                    },
                    miterLimit: _.prop("miterLimit"),
                    scale: _.prop("scale"),
                    scaleFract: _.prop("scaleFract"),
                    translateFract: _.prop("translateFract"),
                    translate: _.prop("translate"),
                    thickness: _.prop("thickness"),
                    dashTexture: _.prop("dashTexture"),
                    opacity: _.prop("opacity"),
                    pixelRatio: _.context("pixelRatio"),
                    id: _.prop("id"),
                    dashLength: _.prop("dashLength"),
                    viewport: function(d, h) {
                      return [h.viewport.x, h.viewport.y, d.viewportWidth, d.viewportHeight];
                    },
                    depth: _.prop("depth")
                  },
                  blend: {
                    enable: !0,
                    color: [0, 0, 0, 0],
                    equation: {
                      rgb: "add",
                      alpha: "add"
                    },
                    func: {
                      srcRGB: "src alpha",
                      dstRGB: "one minus src alpha",
                      srcAlpha: "one minus dst alpha",
                      dstAlpha: "one"
                    }
                  },
                  depth: {
                    enable: function(d, h) {
                      return !h.overlay;
                    }
                  },
                  stencil: { enable: !1 },
                  scissor: {
                    enable: !0,
                    box: _.prop("viewport")
                  },
                  viewport: _.prop("viewport")
                }, C = _(n({
                  vert: o,
                  frag: y,
                  attributes: {
                    // if point is at the end of segment
                    lineEnd: {
                      buffer: S,
                      divisor: 0,
                      stride: 8,
                      offset: 0
                    },
                    // if point is at the top of segment
                    lineTop: {
                      buffer: S,
                      divisor: 0,
                      stride: 8,
                      offset: 4
                    },
                    // beginning of line coordinate
                    aCoord: {
                      buffer: _.prop("positionBuffer"),
                      stride: 8,
                      offset: 8,
                      divisor: 1
                    },
                    // end of line coordinate
                    bCoord: {
                      buffer: _.prop("positionBuffer"),
                      stride: 8,
                      offset: 16,
                      divisor: 1
                    },
                    aCoordFract: {
                      buffer: _.prop("positionFractBuffer"),
                      stride: 8,
                      offset: 8,
                      divisor: 1
                    },
                    bCoordFract: {
                      buffer: _.prop("positionFractBuffer"),
                      stride: 8,
                      offset: 16,
                      divisor: 1
                    },
                    color: {
                      buffer: _.prop("colorBuffer"),
                      stride: 4,
                      offset: 0,
                      divisor: 1
                    }
                  }
                }, M)), m;
                try {
                  m = _(n({
                    // culling removes polygon creasing
                    cull: {
                      enable: !0,
                      face: "back"
                    },
                    vert: c,
                    frag: v,
                    attributes: {
                      // is line end
                      lineEnd: {
                        buffer: S,
                        divisor: 0,
                        stride: 8,
                        offset: 0
                      },
                      // is line top
                      lineTop: {
                        buffer: S,
                        divisor: 0,
                        stride: 8,
                        offset: 4
                      },
                      // left color
                      aColor: {
                        buffer: _.prop("colorBuffer"),
                        stride: 4,
                        offset: 0,
                        divisor: 1
                      },
                      // right color
                      bColor: {
                        buffer: _.prop("colorBuffer"),
                        stride: 4,
                        offset: 4,
                        divisor: 1
                      },
                      prevCoord: {
                        buffer: _.prop("positionBuffer"),
                        stride: 8,
                        offset: 0,
                        divisor: 1
                      },
                      aCoord: {
                        buffer: _.prop("positionBuffer"),
                        stride: 8,
                        offset: 8,
                        divisor: 1
                      },
                      bCoord: {
                        buffer: _.prop("positionBuffer"),
                        stride: 8,
                        offset: 16,
                        divisor: 1
                      },
                      nextCoord: {
                        buffer: _.prop("positionBuffer"),
                        stride: 8,
                        offset: 24,
                        divisor: 1
                      }
                    }
                  }, M));
                } catch {
                  m = C;
                }
                var L = _({
                  primitive: "triangle",
                  elements: function(d, h) {
                    return h.triangles;
                  },
                  offset: 0,
                  vert: g,
                  frag: x,
                  uniforms: {
                    scale: _.prop("scale"),
                    color: _.prop("fill"),
                    scaleFract: _.prop("scaleFract"),
                    translateFract: _.prop("translateFract"),
                    translate: _.prop("translate"),
                    opacity: _.prop("opacity"),
                    pixelRatio: _.context("pixelRatio"),
                    id: _.prop("id"),
                    viewport: function(d, h) {
                      return [h.viewport.x, h.viewport.y, d.viewportWidth, d.viewportHeight];
                    }
                  },
                  attributes: {
                    position: {
                      buffer: _.prop("positionBuffer"),
                      stride: 8,
                      offset: 8
                    },
                    positionFract: {
                      buffer: _.prop("positionFractBuffer"),
                      stride: 8,
                      offset: 8
                    }
                  },
                  blend: M.blend,
                  depth: { enable: !1 },
                  scissor: M.scissor,
                  stencil: M.stencil,
                  viewport: M.viewport
                });
                return {
                  fill: L,
                  rect: C,
                  miter: m
                };
              }, f.defaults = {
                dashes: null,
                join: "miter",
                miterLimit: 1,
                thickness: 10,
                cap: "square",
                color: "black",
                opacity: 1,
                overlay: !1,
                viewport: null,
                range: null,
                close: !1,
                fill: null
              }, f.prototype.render = function() {
                for (var _, S = [], M = arguments.length; M--; ) S[M] = arguments[M];
                S.length && (_ = this).update.apply(_, S), this.draw();
              }, f.prototype.draw = function() {
                for (var _ = this, S = [], M = arguments.length; M--; ) S[M] = arguments[M];
                return (S.length ? S : this.passes).forEach(function(C, m) {
                  var L;
                  if (C && Array.isArray(C))
                    return (L = _).draw.apply(L, C);
                  typeof C == "number" && (C = _.passes[C]), C && C.count > 1 && C.opacity && (_.regl._refresh(), C.fill && C.triangles && C.triangles.length > 2 && _.shaders.fill(C), C.thickness && (C.scale[0] * C.viewport.width > f.precisionThreshold || C.scale[1] * C.viewport.height > f.precisionThreshold || C.join === "rect" || !C.join && (C.thickness <= 2 || C.count >= f.maxPoints) ? _.shaders.rect(C) : _.shaders.miter(C)));
                }), this;
              }, f.prototype.update = function(_) {
                var S = this;
                if (_) {
                  _.length != null ? typeof _[0] == "number" && (_ = [{ positions: _ }]) : Array.isArray(_) || (_ = [_]);
                  var M = this, C = M.regl, m = M.gl;
                  if (_.forEach(function(w, z) {
                    var O = S.passes[z];
                    if (w !== void 0) {
                      if (w === null) {
                        S.passes[z] = null;
                        return;
                      }
                      if (typeof w[0] == "number" && (w = { positions: w }), w = s(w, {
                        positions: "positions points data coords",
                        thickness: "thickness lineWidth lineWidths line-width linewidth width stroke-width strokewidth strokeWidth",
                        join: "lineJoin linejoin join type mode",
                        miterLimit: "miterlimit miterLimit",
                        dashes: "dash dashes dasharray dash-array dashArray",
                        color: "color colour stroke colors colours stroke-color strokeColor",
                        fill: "fill fill-color fillColor",
                        opacity: "alpha opacity",
                        overlay: "overlay crease overlap intersect",
                        close: "closed close closed-path closePath",
                        range: "range dataBox",
                        viewport: "viewport viewBox",
                        hole: "holes hole hollow",
                        splitNull: "splitNull"
                      }), O || (S.passes[z] = O = {
                        id: z,
                        scale: null,
                        scaleFract: null,
                        translate: null,
                        translateFract: null,
                        count: 0,
                        hole: [],
                        depth: 0,
                        dashLength: 1,
                        dashTexture: C.texture({
                          channels: 1,
                          data: new Uint8Array([255]),
                          width: 1,
                          height: 1,
                          mag: "linear",
                          min: "linear"
                        }),
                        colorBuffer: C.buffer({
                          usage: "dynamic",
                          type: "uint8",
                          data: new Uint8Array()
                        }),
                        positionBuffer: C.buffer({
                          usage: "dynamic",
                          type: "float",
                          data: new Uint8Array()
                        }),
                        positionFractBuffer: C.buffer({
                          usage: "dynamic",
                          type: "float",
                          data: new Uint8Array()
                        })
                      }, w = n({}, f.defaults, w)), w.thickness != null && (O.thickness = parseFloat(w.thickness)), w.opacity != null && (O.opacity = parseFloat(w.opacity)), w.miterLimit != null && (O.miterLimit = parseFloat(w.miterLimit)), w.overlay != null && (O.overlay = !!w.overlay, z < f.maxLines && (O.depth = 2 * (f.maxLines - 1 - z % f.maxLines) / f.maxLines - 1)), w.join != null && (O.join = w.join), w.hole != null && (O.hole = w.hole), w.fill != null && (O.fill = w.fill ? b(w.fill, "uint8") : null), w.viewport != null && (O.viewport = a(w.viewport)), O.viewport || (O.viewport = a([
                        m.drawingBufferWidth,
                        m.drawingBufferHeight
                      ])), w.close != null && (O.close = w.close), w.positions === null && (w.positions = []), w.positions) {
                        var B, V;
                        if (w.positions.x && w.positions.y) {
                          var U = w.positions.x, H = w.positions.y;
                          V = O.count = Math.max(
                            U.length,
                            H.length
                          ), B = new Float64Array(V * 2);
                          for (var F = 0; F < V; F++)
                            B[F * 2] = U[F], B[F * 2 + 1] = H[F];
                        } else
                          B = T(w.positions, "float64"), V = O.count = Math.floor(B.length / 2);
                        var G = O.bounds = P(B, 2);
                        if (O.fill) {
                          for (var q = [], rt = {}, st = 0, vt = 0, ht = 0, et = O.count; vt < et; vt++) {
                            var Q = B[vt * 2], j = B[vt * 2 + 1];
                            isNaN(Q) || isNaN(j) || Q == null || j == null ? (Q = B[st * 2], j = B[st * 2 + 1], rt[vt] = st) : st = vt, q[ht++] = Q, q[ht++] = j;
                          }
                          if (w.splitNull) {
                            O.count - 1 in rt || (rt[O.count] = O.count - 1);
                            var at = Object.keys(rt).map(Number).sort(function(Mt, St) {
                              return Mt - St;
                            }), ut = [], nt = 0, X = O.hole != null ? O.hole[0] : null;
                            if (X != null) {
                              var ct = l(at, function(Mt) {
                                return Mt >= X;
                              });
                              at = at.slice(0, ct), at.push(X);
                            }
                            for (var lt = function(Mt) {
                              var St = q.slice(nt * 2, at[Mt] * 2).concat(
                                X ? q.slice(X * 2) : []
                              ), Lt = (O.hole || []).map(function(fe) {
                                return fe - X + (at[Mt] - nt);
                              }), te = A(St, Lt);
                              te = te.map(
                                function(fe) {
                                  return fe + nt + (fe + nt < at[Mt] ? 0 : X - at[Mt]);
                                }
                              ), ut.push.apply(ut, te), nt = at[Mt] + 1;
                            }, pt = 0; pt < at.length; pt++)
                              lt(pt);
                            for (var wt = 0, Et = ut.length; wt < Et; wt++)
                              rt[ut[wt]] != null && (ut[wt] = rt[ut[wt]]);
                            O.triangles = ut;
                          } else {
                            for (var Ct = A(q, O.hole || []), Gt = 0, Jt = Ct.length; Gt < Jt; Gt++)
                              rt[Ct[Gt]] != null && (Ct[Gt] = rt[Ct[Gt]]);
                            O.triangles = Ct;
                          }
                        }
                        var Qt = new Float64Array(B);
                        p(Qt, 2, G);
                        var Vt = new Float64Array(V * 2 + 6);
                        O.close ? B[0] === B[V * 2 - 2] && B[1] === B[V * 2 - 1] ? (Vt[0] = Qt[V * 2 - 4], Vt[1] = Qt[V * 2 - 3]) : (Vt[0] = Qt[V * 2 - 2], Vt[1] = Qt[V * 2 - 1]) : (Vt[0] = Qt[0], Vt[1] = Qt[1]), Vt.set(Qt, 2), O.close ? B[0] === B[V * 2 - 2] && B[1] === B[V * 2 - 1] ? (Vt[V * 2 + 2] = Qt[2], Vt[V * 2 + 3] = Qt[3], O.count -= 1) : (Vt[V * 2 + 2] = Qt[0], Vt[V * 2 + 3] = Qt[1], Vt[V * 2 + 4] = Qt[2], Vt[V * 2 + 5] = Qt[3]) : (Vt[V * 2 + 2] = Qt[V * 2 - 2], Vt[V * 2 + 3] = Qt[V * 2 - 1], Vt[V * 2 + 4] = Qt[V * 2 - 2], Vt[V * 2 + 5] = Qt[V * 2 - 1]);
                        var zt = t(Vt);
                        O.positionBuffer(zt);
                        var Rt = r(Vt, zt);
                        O.positionFractBuffer(Rt);
                      }
                      if (w.range ? O.range = w.range : O.range || (O.range = O.bounds), (w.range || w.positions) && O.count) {
                        var Wt = O.bounds, kt = Wt[2] - Wt[0], re = Wt[3] - Wt[1], ge = O.range[2] - O.range[0], _e = O.range[3] - O.range[1];
                        O.scale = [
                          kt / ge,
                          re / _e
                        ], O.translate = [
                          -O.range[0] / ge + Wt[0] / ge || 0,
                          -O.range[1] / _e + Wt[1] / _e || 0
                        ], O.scaleFract = r(O.scale), O.translateFract = r(O.translate);
                      }
                      if (w.dashes) {
                        var ce = 0, ae;
                        if (!w.dashes || w.dashes.length < 2)
                          ce = 1, ae = new Uint8Array([255, 255, 255, 255, 255, 255, 255, 255]);
                        else {
                          ce = 0;
                          for (var Se = 0; Se < w.dashes.length; ++Se)
                            ce += w.dashes[Se];
                          ae = new Uint8Array(ce * f.dashMult);
                          for (var ze = 0, Ne = 255, Ve = 0; Ve < 2; Ve++)
                            for (var Oe = 0; Oe < w.dashes.length; ++Oe) {
                              for (var ur = 0, ie = w.dashes[Oe] * f.dashMult * 0.5; ur < ie; ++ur)
                                ae[ze++] = Ne;
                              Ne ^= 255;
                            }
                        }
                        O.dashLength = ce, O.dashTexture({
                          channels: 1,
                          data: ae,
                          width: ae.length,
                          height: 1,
                          mag: "linear",
                          min: "linear"
                        }, 0, 0);
                      }
                      if (w.color) {
                        var $t = O.count, jt = w.color;
                        jt || (jt = "transparent");
                        var ee = new Uint8Array($t * 4 + 4);
                        if (!Array.isArray(jt) || typeof jt[0] == "number")
                          for (var Bt = b(jt, "uint8"), Xt = 0; Xt < $t + 1; Xt++)
                            ee.set(Bt, Xt * 4);
                        else {
                          for (var Zt = 0; Zt < $t; Zt++) {
                            var ye = b(jt[Zt], "uint8");
                            ee.set(ye, Zt * 4);
                          }
                          ee.set(b(jt[0], "uint8"), $t * 4);
                        }
                        O.colorBuffer({
                          usage: "dynamic",
                          type: "uint8",
                          data: ee
                        });
                      }
                    }
                  }), _.length < this.passes.length) {
                    for (var L = _.length; L < this.passes.length; L++) {
                      var d = this.passes[L];
                      d && (d.colorBuffer.destroy(), d.positionBuffer.destroy(), d.dashTexture.destroy());
                    }
                    this.passes.length = _.length;
                  }
                  for (var h = [], E = 0; E < this.passes.length; E++)
                    this.passes[E] !== null && h.push(this.passes[E]);
                  return this.passes = h, this;
                }
              }, f.prototype.destroy = function() {
                return this.passes.forEach(function(_) {
                  _.colorBuffer.destroy(), _.positionBuffer.destroy(), _.dashTexture.destroy();
                }), this.passes.length = 0, this;
              };
            }
          ),
          /***/
          62172: (
            /***/
            function(Y, K, e) {
              function b(d, h) {
                var E = d == null ? null : typeof Symbol < "u" && d[Symbol.iterator] || d["@@iterator"];
                if (E != null) {
                  var w, z, O, B, V = [], U = !0, H = !1;
                  try {
                    if (O = (E = E.call(d)).next, h !== 0) for (; !(U = (w = O.call(E)).done) && (V.push(w.value), V.length !== h); U = !0) ;
                  } catch (F) {
                    H = !0, z = F;
                  } finally {
                    try {
                      if (!U && E.return != null && (B = E.return(), Object(B) !== B)) return;
                    } finally {
                      if (H) throw z;
                    }
                  }
                  return V;
                }
              }
              function P(d, h) {
                return T(d) || b(d, h) || p(d, h) || r();
              }
              function n(d) {
                return s(d) || A(d) || p(d) || t();
              }
              function s(d) {
                if (Array.isArray(d)) return u(d);
              }
              function T(d) {
                if (Array.isArray(d)) return d;
              }
              function A(d) {
                if (typeof Symbol < "u" && d[Symbol.iterator] != null || d["@@iterator"] != null) return Array.from(d);
              }
              function p(d, h) {
                if (d) {
                  if (typeof d == "string") return u(d, h);
                  var E = Object.prototype.toString.call(d).slice(8, -1);
                  if (E === "Object" && d.constructor && (E = d.constructor.name), E === "Map" || E === "Set") return Array.from(d);
                  if (E === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(E)) return u(d, h);
                }
              }
              function u(d, h) {
                (h == null || h > d.length) && (h = d.length);
                for (var E = 0, w = new Array(h); E < h; E++) w[E] = d[E];
                return w;
              }
              function t() {
                throw new TypeError(`Invalid attempt to spread non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`);
              }
              function r() {
                throw new TypeError(`Invalid attempt to destructure non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`);
              }
              var i = e(162), a = e(78112), l = e(46762), o = e(27549), y = e(27976), g = e(76765), x = e(6807), c = e(79788), v = e(83473), f = e(39488), _ = e(51498), S = e(5137), M = C;
              function C(d, h) {
                var E = this;
                if (!(this instanceof C)) return new C(d, h);
                typeof d == "function" ? (h || (h = {}), h.regl = d) : (h = d, d = null), h && h.length && (h.positions = h), d = h.regl;
                var w = d._gl, z, O = [], B = {}, V = [], U = [null], H = [null], F = 255, G = 100;
                this.tooManyColors = f, z = d.texture({
                  data: new Uint8Array(F * 4),
                  width: F,
                  height: 1,
                  type: "uint8",
                  format: "rgba",
                  wrapS: "clamp",
                  wrapT: "clamp",
                  mag: "nearest",
                  min: "nearest"
                }), y(this, {
                  regl: d,
                  gl: w,
                  groups: V,
                  markerCache: H,
                  markerTextures: U,
                  palette: O,
                  paletteIds: B,
                  paletteTexture: z,
                  maxColors: F,
                  maxSize: G,
                  canvas: w.canvas
                }), this.update(h);
                var q = {
                  uniforms: {
                    constPointSize: !!h.constPointSize,
                    opacity: d.prop("opacity"),
                    paletteSize: function(ht, et) {
                      return [E.tooManyColors ? 0 : F, z.height];
                    },
                    pixelRatio: d.context("pixelRatio"),
                    scale: d.prop("scale"),
                    scaleFract: d.prop("scaleFract"),
                    translate: d.prop("translate"),
                    translateFract: d.prop("translateFract"),
                    markerTexture: d.prop("markerTexture"),
                    paletteTexture: z
                  },
                  attributes: {
                    // FIXME: optimize these parts
                    x: function(ht, et) {
                      return et.xAttr || {
                        buffer: et.positionBuffer,
                        stride: 8,
                        offset: 0
                      };
                    },
                    y: function(ht, et) {
                      return et.yAttr || {
                        buffer: et.positionBuffer,
                        stride: 8,
                        offset: 4
                      };
                    },
                    xFract: function(ht, et) {
                      return et.xAttr ? {
                        constant: [0, 0]
                      } : {
                        buffer: et.positionFractBuffer,
                        stride: 8,
                        offset: 0
                      };
                    },
                    yFract: function(ht, et) {
                      return et.yAttr ? {
                        constant: [0, 0]
                      } : {
                        buffer: et.positionFractBuffer,
                        stride: 8,
                        offset: 4
                      };
                    },
                    size: function(ht, et) {
                      return et.size.length ? {
                        buffer: et.sizeBuffer,
                        stride: 2,
                        offset: 0
                      } : {
                        constant: [Math.round(et.size * 255 / E.maxSize)]
                      };
                    },
                    borderSize: function(ht, et) {
                      return et.borderSize.length ? {
                        buffer: et.sizeBuffer,
                        stride: 2,
                        offset: 1
                      } : {
                        constant: [Math.round(et.borderSize * 255 / E.maxSize)]
                      };
                    },
                    colorId: function(ht, et) {
                      return et.color.length ? {
                        buffer: et.colorBuffer,
                        stride: E.tooManyColors ? 8 : 4,
                        offset: 0
                      } : {
                        constant: E.tooManyColors ? O.slice(et.color * 4, et.color * 4 + 4) : [et.color]
                      };
                    },
                    borderColorId: function(ht, et) {
                      return et.borderColor.length ? {
                        buffer: et.colorBuffer,
                        stride: E.tooManyColors ? 8 : 4,
                        offset: E.tooManyColors ? 4 : 2
                      } : {
                        constant: E.tooManyColors ? O.slice(et.borderColor * 4, et.borderColor * 4 + 4) : [et.borderColor]
                      };
                    },
                    isActive: function(ht, et) {
                      return et.activation === !0 ? {
                        constant: [1]
                      } : et.activation ? et.activation : {
                        constant: [0]
                      };
                    }
                  },
                  blend: {
                    enable: !0,
                    color: [0, 0, 0, 1],
                    // photoshop blending
                    func: {
                      srcRGB: "src alpha",
                      dstRGB: "one minus src alpha",
                      srcAlpha: "one minus dst alpha",
                      dstAlpha: "one"
                    }
                  },
                  scissor: {
                    enable: !0,
                    box: d.prop("viewport")
                  },
                  viewport: d.prop("viewport"),
                  stencil: {
                    enable: !1
                  },
                  depth: {
                    enable: !1
                  },
                  elements: d.prop("elements"),
                  count: d.prop("count"),
                  offset: d.prop("offset"),
                  primitive: "points"
                }, rt = y({}, q);
                rt.frag = g([`precision highp float;
#define GLSLIFY 1

uniform float opacity;
uniform sampler2D markerTexture;

varying vec4 fragColor, fragBorderColor;
varying float fragWidth, fragBorderColorLevel, fragColorLevel;

float smoothStep(float x, float y) {
  return 1.0 / (1.0 + exp(50.0*(x - y)));
}

void main() {
  float dist = texture2D(markerTexture, gl_PointCoord).r, delta = fragWidth;

  // max-distance alpha
  if (dist < 0.003) discard;

  // null-border case
  if (fragBorderColorLevel == fragColorLevel || fragBorderColor.a == 0.) {
    float colorAmt = smoothstep(.5 - delta, .5 + delta, dist);
    gl_FragColor = vec4(fragColor.rgb, colorAmt * fragColor.a * opacity);
  }
  else {
    float borderColorAmt = smoothstep(fragBorderColorLevel - delta, fragBorderColorLevel + delta, dist);
    float colorAmt = smoothstep(fragColorLevel - delta, fragColorLevel + delta, dist);

    vec4 color = fragBorderColor;
    color.a *= borderColorAmt;
    color = mix(color, fragColor, colorAmt);
    color.a *= opacity;

    gl_FragColor = color;
  }

}
`]), rt.vert = g([`precision highp float;
#define GLSLIFY 1

attribute float x, y, xFract, yFract;
attribute float size, borderSize;
attribute vec4 colorId, borderColorId;
attribute float isActive;

// \`invariant\` effectively turns off optimizations for the position.
// We need this because -fast-math on M1 Macs is re-ordering
// floating point operations in a way that causes floating point
// precision limits to put points in the wrong locations.
invariant gl_Position;

uniform bool constPointSize;
uniform float pixelRatio;
uniform vec2 scale, scaleFract, translate, translateFract, paletteSize;
uniform sampler2D paletteTexture;

const float maxSize = 100.;
const float borderLevel = .5;

varying vec4 fragColor, fragBorderColor;
varying float fragPointSize, fragBorderRadius, fragWidth, fragBorderColorLevel, fragColorLevel;

float pointSizeScale = (constPointSize) ? 2. : pixelRatio;

bool isDirect = (paletteSize.x < 1.);

vec4 getColor(vec4 id) {
  return isDirect ? id / 255. : texture2D(paletteTexture,
    vec2(
      (id.x + .5) / paletteSize.x,
      (id.y + .5) / paletteSize.y
    )
  );
}

void main() {
  // ignore inactive points
  if (isActive == 0.) return;

  vec2 position = vec2(x, y);
  vec2 positionFract = vec2(xFract, yFract);

  vec4 color = getColor(colorId);
  vec4 borderColor = getColor(borderColorId);

  float size = size * maxSize / 255.;
  float borderSize = borderSize * maxSize / 255.;

  gl_PointSize = 2. * size * pointSizeScale;
  fragPointSize = size * pixelRatio;

  vec2 pos = (position + translate) * scale
      + (positionFract + translateFract) * scale
      + (position + translate) * scaleFract
      + (positionFract + translateFract) * scaleFract;

  gl_Position = vec4(pos * 2. - 1., 0., 1.);

  fragColor = color;
  fragBorderColor = borderColor;
  fragWidth = 1. / gl_PointSize;

  fragBorderColorLevel = clamp(borderLevel - borderLevel * borderSize / size, 0., 1.);
  fragColorLevel = clamp(borderLevel + (1. - borderLevel) * borderSize / size, 0., 1.);
}
`]), this.drawMarker = d(rt);
                var st = y({}, q);
                st.frag = g([`precision highp float;
#define GLSLIFY 1

varying vec4 fragColor, fragBorderColor;
varying float fragBorderRadius, fragWidth;

uniform float opacity;

float smoothStep(float edge0, float edge1, float x) {
	float t;
	t = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
	return t * t * (3.0 - 2.0 * t);
}

void main() {
	float radius, alpha = 1.0, delta = fragWidth;

	radius = length(2.0 * gl_PointCoord.xy - 1.0);

	if (radius > 1.0 + delta) {
		discard;
	}

	alpha -= smoothstep(1.0 - delta, 1.0 + delta, radius);

	float borderRadius = fragBorderRadius;
	float ratio = smoothstep(borderRadius - delta, borderRadius + delta, radius);
	vec4 color = mix(fragColor, fragBorderColor, ratio);
	color.a *= alpha * opacity;
	gl_FragColor = color;
}
`]), st.vert = g([`precision highp float;
#define GLSLIFY 1

attribute float x, y, xFract, yFract;
attribute float size, borderSize;
attribute vec4 colorId, borderColorId;
attribute float isActive;

// \`invariant\` effectively turns off optimizations for the position.
// We need this because -fast-math on M1 Macs is re-ordering
// floating point operations in a way that causes floating point
// precision limits to put points in the wrong locations.
invariant gl_Position;

uniform bool constPointSize;
uniform float pixelRatio;
uniform vec2 paletteSize, scale, scaleFract, translate, translateFract;
uniform sampler2D paletteTexture;

const float maxSize = 100.;

varying vec4 fragColor, fragBorderColor;
varying float fragBorderRadius, fragWidth;

float pointSizeScale = (constPointSize) ? 2. : pixelRatio;

bool isDirect = (paletteSize.x < 1.);

vec4 getColor(vec4 id) {
  return isDirect ? id / 255. : texture2D(paletteTexture,
    vec2(
      (id.x + .5) / paletteSize.x,
      (id.y + .5) / paletteSize.y
    )
  );
}

void main() {
  // ignore inactive points
  if (isActive == 0.) return;

  vec2 position = vec2(x, y);
  vec2 positionFract = vec2(xFract, yFract);

  vec4 color = getColor(colorId);
  vec4 borderColor = getColor(borderColorId);

  float size = size * maxSize / 255.;
  float borderSize = borderSize * maxSize / 255.;

  gl_PointSize = (size + borderSize) * pointSizeScale;

  vec2 pos = (position + translate) * scale
      + (positionFract + translateFract) * scale
      + (position + translate) * scaleFract
      + (positionFract + translateFract) * scaleFract;

  gl_Position = vec4(pos * 2. - 1., 0., 1.);

  fragBorderRadius = 1. - 2. * borderSize / (size + borderSize);
  fragColor = color;
  fragBorderColor = borderColor.a == 0. || borderSize == 0. ? vec4(color.rgb, 0.) : borderColor;
  fragWidth = 1. / gl_PointSize;
}
`]), f && (st.frag = st.frag.replace("smoothstep", "smoothStep"), rt.frag = rt.frag.replace("smoothstep", "smoothStep")), this.drawCircle = d(st);
              }
              C.defaults = {
                color: "black",
                borderColor: "transparent",
                borderSize: 0,
                size: 12,
                opacity: 1,
                marker: void 0,
                viewport: null,
                range: null,
                pixelSize: null,
                count: 0,
                offset: 0,
                bounds: null,
                positions: [],
                snap: 1e4
              }, C.prototype.render = function() {
                return arguments.length && this.update.apply(this, arguments), this.draw(), this;
              }, C.prototype.draw = function() {
                for (var d = this, h = arguments.length, E = new Array(h), w = 0; w < h; w++)
                  E[w] = arguments[w];
                var z = this.groups;
                if (E.length === 1 && Array.isArray(E[0]) && (E[0][0] === null || Array.isArray(E[0][0])) && (E = E[0]), this.regl._refresh(), E.length)
                  for (var O = 0; O < E.length; O++)
                    this.drawItem(O, E[O]);
                else
                  z.forEach(function(B, V) {
                    d.drawItem(V);
                  });
                return this;
              }, C.prototype.drawItem = function(d, h) {
                var E = this.groups, w = E[d];
                if (typeof h == "number" && (d = h, w = E[h], h = null), !!(w && w.count && w.opacity)) {
                  w.activation[0] && this.drawCircle(this.getMarkerDrawOptions(0, w, h));
                  for (var z = [], O = 1; O < w.activation.length; O++)
                    !w.activation[O] || w.activation[O] !== !0 && !w.activation[O].data.length || z.push.apply(z, n(this.getMarkerDrawOptions(O, w, h)));
                  z.length && this.drawMarker(z);
                }
              }, C.prototype.getMarkerDrawOptions = function(d, h, E) {
                var w = h.range, z = h.tree, O = h.viewport, B = h.activation, V = h.selectionBuffer, U = h.count;
                if (this.regl, !z)
                  return E ? [y({}, h, {
                    markerTexture: this.markerTextures[d],
                    activation: B[d],
                    count: E.length,
                    elements: E,
                    offset: 0
                  })] : [y({}, h, {
                    markerTexture: this.markerTextures[d],
                    activation: B[d],
                    offset: 0
                  })];
                var H = [], F = z.range(w, {
                  lod: !0,
                  px: [(w[2] - w[0]) / O.width, (w[3] - w[1]) / O.height]
                });
                if (E) {
                  for (var G = B[d], q = G.data, rt = new Uint8Array(U), st = 0; st < E.length; st++) {
                    var vt = E[st];
                    rt[vt] = q ? q[vt] : 1;
                  }
                  V.subdata(rt);
                }
                for (var ht = F.length; ht--; ) {
                  var et = P(F[ht], 2), Q = et[0], j = et[1];
                  H.push(y({}, h, {
                    markerTexture: this.markerTextures[d],
                    activation: E ? V : B[d],
                    offset: Q,
                    count: j - Q
                  }));
                }
                return H;
              }, C.prototype.update = function() {
                for (var d = this, h = arguments.length, E = new Array(h), w = 0; w < h; w++)
                  E[w] = arguments[w];
                if (E.length) {
                  E.length === 1 && Array.isArray(E[0]) && (E = E[0]);
                  var z = this.groups, O = this.gl, B = this.regl, V = this.maxSize, U = this.maxColors, H = this.palette;
                  this.groups = z = E.map(function(F, G) {
                    var q = z[G];
                    if (F === void 0) return q;
                    F === null ? F = {
                      positions: null
                    } : typeof F == "function" ? F = {
                      ondraw: F
                    } : typeof F[0] == "number" && (F = {
                      positions: F
                    }), F = x(F, {
                      positions: "positions data points",
                      snap: "snap cluster lod tree",
                      size: "sizes size radius",
                      borderSize: "borderSizes borderSize border-size bordersize borderWidth borderWidths border-width borderwidth stroke-width strokeWidth strokewidth outline",
                      color: "colors color fill fill-color fillColor",
                      borderColor: "borderColors borderColor stroke stroke-color strokeColor",
                      marker: "markers marker shape",
                      range: "range dataBox databox",
                      viewport: "viewport viewPort viewBox viewbox",
                      opacity: "opacity alpha transparency",
                      bounds: "bound bounds boundaries limits",
                      tooManyColors: "tooManyColors palette paletteMode optimizePalette enablePalette"
                    }), F.positions === null && (F.positions = []), F.tooManyColors != null && (d.tooManyColors = F.tooManyColors), q || (z[G] = q = {
                      id: G,
                      scale: null,
                      translate: null,
                      scaleFract: null,
                      translateFract: null,
                      // buffers for active markers
                      activation: [],
                      // buffer for filtered markers
                      selectionBuffer: B.buffer({
                        data: new Uint8Array(0),
                        usage: "stream",
                        type: "uint8"
                      }),
                      // buffers with data: it is faster to switch them per-pass
                      // than provide one congregate buffer
                      sizeBuffer: B.buffer({
                        data: new Uint8Array(0),
                        usage: "dynamic",
                        type: "uint8"
                      }),
                      colorBuffer: B.buffer({
                        data: new Uint8Array(0),
                        usage: "dynamic",
                        type: "uint8"
                      }),
                      positionBuffer: B.buffer({
                        data: new Uint8Array(0),
                        usage: "dynamic",
                        type: "float"
                      }),
                      positionFractBuffer: B.buffer({
                        data: new Uint8Array(0),
                        usage: "dynamic",
                        type: "float"
                      })
                    }, F = y({}, C.defaults, F)), F.positions && !("marker" in F) && (F.marker = q.marker, delete q.marker), F.marker && !("positions" in F) && (F.positions = q.positions, delete q.positions);
                    var rt = 0, st = 0;
                    if (c(q, F, [{
                      snap: !0,
                      size: function(Vt, zt) {
                        return Vt == null && (Vt = C.defaults.size), rt += Vt && Vt.length ? 1 : 0, Vt;
                      },
                      borderSize: function(Vt, zt) {
                        return Vt == null && (Vt = C.defaults.borderSize), rt += Vt && Vt.length ? 1 : 0, Vt;
                      },
                      opacity: parseFloat,
                      // add colors to palette, save references
                      color: function(Vt, zt) {
                        return Vt == null && (Vt = C.defaults.color), Vt = d.updateColor(Vt), st++, Vt;
                      },
                      borderColor: function(Vt, zt) {
                        return Vt == null && (Vt = C.defaults.borderColor), Vt = d.updateColor(Vt), st++, Vt;
                      },
                      bounds: function(Vt, zt, Rt) {
                        return "range" in Rt || (Rt.range = null), Vt;
                      },
                      positions: function(Vt, zt, Rt) {
                        var Wt = zt.snap, kt = zt.positionBuffer, re = zt.positionFractBuffer, ge = zt.selectionBuffer;
                        if (Vt.x || Vt.y)
                          return Vt.x.length ? zt.xAttr = {
                            buffer: B.buffer(Vt.x),
                            offset: 0,
                            stride: 4,
                            count: Vt.x.length
                          } : zt.xAttr = {
                            buffer: Vt.x.buffer,
                            offset: Vt.x.offset * 4 || 0,
                            stride: (Vt.x.stride || 1) * 4,
                            count: Vt.x.count
                          }, Vt.y.length ? zt.yAttr = {
                            buffer: B.buffer(Vt.y),
                            offset: 0,
                            stride: 4,
                            count: Vt.y.length
                          } : zt.yAttr = {
                            buffer: Vt.y.buffer,
                            offset: Vt.y.offset * 4 || 0,
                            stride: (Vt.y.stride || 1) * 4,
                            count: Vt.y.count
                          }, zt.count = Math.max(zt.xAttr.count, zt.yAttr.count), Vt;
                        Vt = v(Vt, "float64");
                        var _e = zt.count = Math.floor(Vt.length / 2), ce = zt.bounds = _e ? a(Vt, 2) : null;
                        if (!Rt.range && !zt.range && (delete zt.range, Rt.range = ce), !Rt.marker && !zt.marker && (delete zt.marker, Rt.marker = null), Wt && (Wt === !0 || _e > Wt) ? zt.tree = o(Vt, {
                          bounds: ce
                        }) : Wt && Wt.length && (zt.tree = Wt), zt.tree) {
                          var ae = {
                            primitive: "points",
                            usage: "static",
                            data: zt.tree,
                            type: "uint32"
                          };
                          zt.elements ? zt.elements(ae) : zt.elements = B.elements(ae);
                        }
                        var Se = _.float32(Vt);
                        kt({
                          data: Se,
                          usage: "dynamic"
                        });
                        var ze = _.fract32(Vt, Se);
                        return re({
                          data: ze,
                          usage: "dynamic"
                        }), ge({
                          data: new Uint8Array(_e),
                          type: "uint8",
                          usage: "stream"
                        }), Vt;
                      }
                    }, {
                      // create marker ids corresponding to known marker textures
                      marker: function(Vt, zt, Rt) {
                        var Wt = zt.activation;
                        if (Wt.forEach(function(ze) {
                          return ze && ze.destroy && ze.destroy();
                        }), Wt.length = 0, !Vt || typeof Vt[0] == "number") {
                          var kt = d.addMarker(Vt);
                          Wt[kt] = !0;
                        } else {
                          for (var re = [], ge = 0, _e = Math.min(Vt.length, zt.count); ge < _e; ge++) {
                            var ce = d.addMarker(Vt[ge]);
                            re[ce] || (re[ce] = new Uint8Array(zt.count)), re[ce][ge] = 1;
                          }
                          for (var ae = 0; ae < re.length; ae++)
                            if (re[ae]) {
                              var Se = {
                                data: re[ae],
                                type: "uint8",
                                usage: "static"
                              };
                              Wt[ae] ? Wt[ae](Se) : Wt[ae] = B.buffer(Se), Wt[ae].data = re[ae];
                            }
                        }
                        return Vt;
                      },
                      range: function(Vt, zt, Rt) {
                        var Wt = zt.bounds;
                        if (Wt)
                          return Vt || (Vt = Wt), zt.scale = [1 / (Vt[2] - Vt[0]), 1 / (Vt[3] - Vt[1])], zt.translate = [-Vt[0], -Vt[1]], zt.scaleFract = _.fract(zt.scale), zt.translateFract = _.fract(zt.translate), Vt;
                      },
                      viewport: function(Vt) {
                        var zt = S(Vt || [O.drawingBufferWidth, O.drawingBufferHeight]);
                        return zt;
                      }
                    }]), rt) {
                      var vt = q, ht = vt.count, et = vt.size, Q = vt.borderSize, j = vt.sizeBuffer, at = new Uint8Array(ht * 2);
                      if (et.length || Q.length)
                        for (var ut = 0; ut < ht; ut++)
                          at[ut * 2] = Math.round((et[ut] == null ? et : et[ut]) * 255 / V), at[ut * 2 + 1] = Math.round((Q[ut] == null ? Q : Q[ut]) * 255 / V);
                      j({
                        data: at,
                        usage: "dynamic"
                      });
                    }
                    if (st) {
                      var nt = q, X = nt.count, ct = nt.color, lt = nt.borderColor, pt = nt.colorBuffer, wt;
                      if (d.tooManyColors) {
                        if (ct.length || lt.length) {
                          wt = new Uint8Array(X * 8);
                          for (var Et = 0; Et < X; Et++) {
                            var Ct = ct[Et];
                            wt[Et * 8] = H[Ct * 4], wt[Et * 8 + 1] = H[Ct * 4 + 1], wt[Et * 8 + 2] = H[Ct * 4 + 2], wt[Et * 8 + 3] = H[Ct * 4 + 3];
                            var Gt = lt[Et];
                            wt[Et * 8 + 4] = H[Gt * 4], wt[Et * 8 + 5] = H[Gt * 4 + 1], wt[Et * 8 + 6] = H[Gt * 4 + 2], wt[Et * 8 + 7] = H[Gt * 4 + 3];
                          }
                        }
                      } else if (ct.length || lt.length) {
                        wt = new Uint8Array(X * 4 + 2);
                        for (var Jt = 0; Jt < X; Jt++)
                          ct[Jt] != null && (wt[Jt * 4] = ct[Jt] % U, wt[Jt * 4 + 1] = Math.floor(ct[Jt] / U)), lt[Jt] != null && (wt[Jt * 4 + 2] = lt[Jt] % U, wt[Jt * 4 + 3] = Math.floor(lt[Jt] / U));
                      }
                      pt({
                        data: wt || new Uint8Array(0),
                        type: "uint8",
                        usage: "dynamic"
                      });
                    }
                    return q;
                  });
                }
              }, C.prototype.addMarker = function(d) {
                var h = this.markerTextures, E = this.regl, w = this.markerCache, z = d == null ? 0 : w.indexOf(d);
                if (z >= 0) return z;
                var O;
                if (d instanceof Uint8Array || d instanceof Uint8ClampedArray)
                  O = d;
                else {
                  O = new Uint8Array(d.length);
                  for (var B = 0, V = d.length; B < V; B++)
                    O[B] = d[B] * 255;
                }
                var U = Math.floor(Math.sqrt(O.length));
                return z = h.length, w.push(d), h.push(E.texture({
                  channels: 1,
                  data: O,
                  radius: U,
                  mag: "linear",
                  min: "linear"
                })), z;
              }, C.prototype.updateColor = function(d) {
                var h = this.paletteIds, E = this.palette, w = this.maxColors;
                Array.isArray(d) || (d = [d]);
                var z = [];
                if (typeof d[0] == "number") {
                  var O = [];
                  if (Array.isArray(d))
                    for (var B = 0; B < d.length; B += 4)
                      O.push(d.slice(B, B + 4));
                  else
                    for (var V = 0; V < d.length; V += 4)
                      O.push(d.subarray(V, V + 4));
                  d = O;
                }
                for (var U = 0; U < d.length; U++) {
                  var H = d[U];
                  H = i(H, "uint8");
                  var F = l(H, !1);
                  if (h[F] == null) {
                    var G = E.length;
                    h[F] = Math.floor(G / 4), E[G] = H[0], E[G + 1] = H[1], E[G + 2] = H[2], E[G + 3] = H[3];
                  }
                  z[U] = h[F];
                }
                return !this.tooManyColors && E.length > w * 4 && (this.tooManyColors = !0), this.updatePalette(E), z.length === 1 ? z[0] : z;
              }, C.prototype.updatePalette = function(d) {
                if (!this.tooManyColors) {
                  var h = this.maxColors, E = this.paletteTexture, w = Math.ceil(d.length * 0.25 / h);
                  if (w > 1) {
                    d = d.slice();
                    for (var z = d.length * 0.25 % h; z < w * h; z++)
                      d.push(0, 0, 0, 0);
                  }
                  E.height < w && E.resize(h, w), E.subimage({
                    width: Math.min(d.length * 0.25, h),
                    height: w,
                    data: d
                  }, 0, 0);
                }
              }, C.prototype.destroy = function() {
                return this.groups.forEach(function(d) {
                  d.sizeBuffer.destroy(), d.positionBuffer.destroy(), d.positionFractBuffer.destroy(), d.colorBuffer.destroy(), d.activation.forEach(function(h) {
                    return h && h.destroy && h.destroy();
                  }), d.selectionBuffer.destroy(), d.elements && d.elements.destroy();
                }), this.groups.length = 0, this.paletteTexture.destroy(), this.markerTextures.forEach(function(d) {
                  return d && d.destroy && d.destroy();
                }), this;
              };
              var m = e(27976), L = function(h, E) {
                var w = new M(h, E), z = w.render.bind(w);
                return m(z, {
                  render: z,
                  update: w.update.bind(w),
                  draw: w.draw.bind(w),
                  destroy: w.destroy.bind(w),
                  regl: w.regl,
                  gl: w.gl,
                  canvas: w.gl.canvas,
                  groups: w.groups,
                  markers: w.markerCache,
                  palette: w.palette
                }), z;
              };
              Y.exports = L;
            }
          ),
          /***/
          31239: (
            /***/
            function(Y, K, e) {
              var b = e(62172), P = e(6807), n = e(78112), s = e(16494), T = e(27902), A = e(5137), p = e(83473);
              Y.exports = u;
              function u(a, l) {
                if (!(this instanceof u))
                  return new u(a);
                this.traces = [], this.passes = {}, this.regl = a, this.scatter = b(a), this.canvas = this.scatter.canvas;
              }
              u.prototype.render = function() {
                for (var a = this, l, o = [], y = arguments.length; y--; ) o[y] = arguments[y];
                return o.length && (l = this).update.apply(l, o), this.regl.attributes.preserveDrawingBuffer ? this.draw() : (this.dirty ? this.planned == null && (this.planned = s(function() {
                  a.draw(), a.dirty = !0, a.planned = null;
                })) : (this.draw(), this.dirty = !0, s(function() {
                  a.dirty = !1;
                })), this);
              }, u.prototype.update = function() {
                for (var a, l = [], o = arguments.length; o--; ) l[o] = arguments[o];
                if (l.length) {
                  for (var y = 0; y < l.length; y++)
                    this.updateItem(y, l[y]);
                  this.traces = this.traces.filter(Boolean);
                  for (var g = [], x = 0, c = 0; c < this.traces.length; c++) {
                    for (var v = this.traces[c], f = this.traces[c].passes, _ = 0; _ < f.length; _++)
                      g.push(this.passes[f[_]]);
                    v.passOffset = x, x += v.passes.length;
                  }
                  return (a = this.scatter).update.apply(a, g), this;
                }
              }, u.prototype.updateItem = function(a, l) {
                var o = this, y = o.regl;
                if (l === null)
                  return this.traces[a] = null, this;
                if (!l)
                  return this;
                var g = P(l, {
                  data: "data items columns rows values dimensions samples x",
                  snap: "snap cluster",
                  size: "sizes size radius",
                  color: "colors color fill fill-color fillColor",
                  opacity: "opacity alpha transparency opaque",
                  borderSize: "borderSizes borderSize border-size bordersize borderWidth borderWidths border-width borderwidth stroke-width strokeWidth strokewidth outline",
                  borderColor: "borderColors borderColor bordercolor stroke stroke-color strokeColor",
                  marker: "markers marker shape",
                  range: "range ranges databox dataBox",
                  viewport: "viewport viewBox viewbox",
                  domain: "domain domains area areas",
                  padding: "pad padding paddings pads margin margins",
                  transpose: "transpose transposed",
                  diagonal: "diagonal diag showDiagonal",
                  upper: "upper up top upperhalf upperHalf showupperhalf showUpper showUpperHalf",
                  lower: "lower low bottom lowerhalf lowerHalf showlowerhalf showLowerHalf showLower"
                }), x = this.traces[a] || (this.traces[a] = {
                  id: a,
                  buffer: y.buffer({
                    usage: "dynamic",
                    type: "float",
                    data: new Uint8Array()
                  }),
                  color: "black",
                  marker: null,
                  size: 12,
                  borderColor: "transparent",
                  borderSize: 1,
                  viewport: A([y._gl.drawingBufferWidth, y._gl.drawingBufferHeight]),
                  padding: [0, 0, 0, 0],
                  opacity: 1,
                  diagonal: !0,
                  upper: !0,
                  lower: !0
                });
                if (g.color != null && (x.color = g.color), g.size != null && (x.size = g.size), g.marker != null && (x.marker = g.marker), g.borderColor != null && (x.borderColor = g.borderColor), g.borderSize != null && (x.borderSize = g.borderSize), g.opacity != null && (x.opacity = g.opacity), g.viewport && (x.viewport = A(g.viewport)), g.diagonal != null && (x.diagonal = g.diagonal), g.upper != null && (x.upper = g.upper), g.lower != null && (x.lower = g.lower), g.data) {
                  x.buffer(p(g.data)), x.columns = g.data.length, x.count = g.data[0].length, x.bounds = [];
                  for (var c = 0; c < x.columns; c++)
                    x.bounds[c] = n(g.data[c], 1);
                }
                var v;
                g.range && (x.range = g.range, v = x.range && typeof x.range[0] != "number"), g.domain && (x.domain = g.domain);
                var f = !1;
                g.padding != null && (Array.isArray(g.padding) && g.padding.length === x.columns && typeof g.padding[g.padding.length - 1] == "number" ? (x.padding = g.padding.map(i), f = !0) : x.padding = i(g.padding));
                var _ = x.columns, S = x.count, M = x.viewport.width, C = x.viewport.height, m = x.viewport.x, L = x.viewport.y, d = M / _, h = C / _;
                x.passes = [];
                for (var E = 0; E < _; E++)
                  for (var w = 0; w < _; w++)
                    if (!(!x.diagonal && w === E) && !(!x.upper && E > w) && !(!x.lower && E < w)) {
                      var z = t(x.id, E, w), O = this.passes[z] || (this.passes[z] = {});
                      if (g.data && (g.transpose ? O.positions = {
                        x: { buffer: x.buffer, offset: w, count: S, stride: _ },
                        y: { buffer: x.buffer, offset: E, count: S, stride: _ }
                      } : O.positions = {
                        x: { buffer: x.buffer, offset: w * S, count: S },
                        y: { buffer: x.buffer, offset: E * S, count: S }
                      }, O.bounds = r(x.bounds, E, w)), g.domain || g.viewport || g.data) {
                        var B = f ? r(x.padding, E, w) : x.padding;
                        if (x.domain) {
                          var V = r(x.domain, E, w), U = V[0], H = V[1], F = V[2], G = V[3];
                          O.viewport = [
                            m + U * M + B[0],
                            L + H * C + B[1],
                            m + F * M - B[2],
                            L + G * C - B[3]
                          ];
                        } else
                          O.viewport = [
                            m + w * d + d * B[0],
                            L + E * h + h * B[1],
                            m + (w + 1) * d - d * B[2],
                            L + (E + 1) * h - h * B[3]
                          ];
                      }
                      g.color && (O.color = x.color), g.size && (O.size = x.size), g.marker && (O.marker = x.marker), g.borderSize && (O.borderSize = x.borderSize), g.borderColor && (O.borderColor = x.borderColor), g.opacity && (O.opacity = x.opacity), g.range && (O.range = v ? r(x.range, E, w) : x.range || O.bounds), x.passes.push(z);
                    }
                return this;
              }, u.prototype.draw = function() {
                for (var a, l = [], o = arguments.length; o--; ) l[o] = arguments[o];
                if (!l.length)
                  this.scatter.draw();
                else {
                  for (var y = [], g = 0; g < l.length; g++)
                    if (typeof l[g] == "number") {
                      var x = this.traces[l[g]], c = x.passes, v = x.passOffset;
                      y.push.apply(y, T(v, v + c.length));
                    } else if (l[g].length) {
                      var f = l[g], _ = this.traces[g], S = _.passes, M = _.passOffset;
                      S = S.map(function(C, m) {
                        y[M + m] = f;
                      });
                    }
                  (a = this.scatter).draw.apply(a, y);
                }
                return this;
              }, u.prototype.destroy = function() {
                return this.traces.forEach(function(a) {
                  a.buffer && a.buffer.destroy && a.buffer.destroy();
                }), this.traces = null, this.passes = null, this.scatter.destroy(), this;
              };
              function t(a, l, o) {
                var y = a.id != null ? a.id : a, g = l, x = o, c = y << 16 | (g & 255) << 8 | x & 255;
                return c;
              }
              function r(a, l, o) {
                var y, g, x, c, v = a[l], f = a[o];
                return v.length > 2 ? (v[0], v[2], y = v[1], g = v[3]) : v.length ? (y = v[0], g = v[1]) : (v.x, y = v.y, v.x + v.width, g = v.y + v.height), f.length > 2 ? (x = f[0], c = f[2], f[1], f[3]) : f.length ? (x = f[0], c = f[1]) : (x = f.x, f.y, c = f.x + f.width, f.y + f.height), [x, y, c, g];
              }
              function i(a) {
                if (typeof a == "number")
                  return [a, a, a, a];
                if (a.length === 2)
                  return [a[0], a[1], a[0], a[1]];
                var l = A(a);
                return [l.x, l.y, l.x + l.width, l.y + l.height];
              }
            }
          ),
          /***/
          81330: (
            /***/
            function(Y) {
              (function(K, e) {
                Y.exports = e();
              })(this, function() {
                function K(qt, De) {
                  this.id = pt++, this.type = qt, this.data = De;
                }
                function e(qt) {
                  if (qt.length === 0) return [];
                  var De = qt.charAt(0), Je = qt.charAt(qt.length - 1);
                  if (1 < qt.length && De === Je && (De === '"' || De === "'")) return ['"' + qt.substr(1, qt.length - 2).replace(/\\/g, "\\\\").replace(/"/g, '\\"') + '"'];
                  if (De = /\[(false|true|null|\d+|'[^']*'|"[^"]*")\]/.exec(qt)) return e(qt.substr(
                    0,
                    De.index
                  )).concat(e(De[1])).concat(e(qt.substr(De.index + De[0].length)));
                  if (De = qt.split("."), De.length === 1) return ['"' + qt.replace(/\\/g, "\\\\").replace(/"/g, '\\"') + '"'];
                  for (qt = [], Je = 0; Je < De.length; ++Je) qt = qt.concat(e(De[Je]));
                  return qt;
                }
                function b(qt) {
                  return "[" + e(qt).join("][") + "]";
                }
                function P(qt, De) {
                  if (typeof qt == "function") return new K(0, qt);
                  if (typeof qt == "number" || typeof qt == "boolean") return new K(5, qt);
                  if (Array.isArray(qt)) return new K(6, qt.map(function(Je, dr) {
                    return P(Je);
                  }));
                  if (qt instanceof K) return qt;
                }
                function n() {
                  var qt = { "": 0 }, De = [""];
                  return { id: function(Je) {
                    var dr = qt[Je];
                    return dr || (dr = qt[Je] = De.length, De.push(Je), dr);
                  }, str: function(Je) {
                    return De[Je];
                  } };
                }
                function s(qt, De, Je) {
                  function dr() {
                    var ue = window.innerWidth, Pe = window.innerHeight;
                    qt !== document.body && (Pe = qe.getBoundingClientRect(), ue = Pe.right - Pe.left, Pe = Pe.bottom - Pe.top), qe.width = Je * ue, qe.height = Je * Pe;
                  }
                  var qe = document.createElement("canvas");
                  lt(qe.style, { border: 0, margin: 0, padding: 0, top: 0, left: 0, width: "100%", height: "100%" }), qt.appendChild(qe), qt === document.body && (qe.style.position = "absolute", lt(qt.style, { margin: 0, padding: 0 }));
                  var we;
                  return qt !== document.body && typeof ResizeObserver == "function" ? (we = new ResizeObserver(function() {
                    setTimeout(dr);
                  }), we.observe(qt)) : window.addEventListener("resize", dr, !1), dr(), { canvas: qe, onDestroy: function() {
                    we ? we.disconnect() : window.removeEventListener("resize", dr), qt.removeChild(qe);
                  } };
                }
                function T(qt, De) {
                  function Je(dr) {
                    try {
                      return qt.getContext(dr, De);
                    } catch {
                      return null;
                    }
                  }
                  return Je("webgl") || Je("experimental-webgl") || Je("webgl-experimental");
                }
                function A(qt) {
                  return typeof qt == "string" ? qt.split() : qt;
                }
                function p(qt) {
                  return typeof qt == "string" ? document.querySelector(qt) : qt;
                }
                function u(qt) {
                  var De = qt || {}, Je, dr, qe, we;
                  qt = {};
                  var ue = [], Pe = [], Ue = typeof window > "u" ? 1 : window.devicePixelRatio, Ye = !1, rr = {}, lr = function(Sr) {
                  }, hr = function() {
                  };
                  if (typeof De == "string" ? Je = document.querySelector(De) : typeof De == "object" && (typeof De.nodeName == "string" && typeof De.appendChild == "function" && typeof De.getBoundingClientRect == "function" ? Je = De : typeof De.drawArrays == "function" || typeof De.drawElements == "function" ? (we = De, qe = we.canvas) : ("gl" in De ? we = De.gl : "canvas" in De ? qe = p(De.canvas) : "container" in De && (dr = p(De.container)), "attributes" in De && (qt = De.attributes), "extensions" in De && (ue = A(De.extensions)), "optionalExtensions" in De && (Pe = A(De.optionalExtensions)), "onDone" in De && (lr = De.onDone), "profile" in De && (Ye = !!De.profile), "pixelRatio" in De && (Ue = +De.pixelRatio), "cachedCode" in De && (rr = De.cachedCode))), Je && (Je.nodeName.toLowerCase() === "canvas" ? qe = Je : dr = Je), !we) {
                    if (!qe) {
                      if (Je = s(dr || document.body, lr, Ue), !Je) return null;
                      qe = Je.canvas, hr = Je.onDestroy;
                    }
                    qt.premultipliedAlpha === void 0 && (qt.premultipliedAlpha = !0), we = T(qe, qt);
                  }
                  return we ? { gl: we, canvas: qe, container: dr, extensions: ue, optionalExtensions: Pe, pixelRatio: Ue, profile: Ye, cachedCode: rr, onDone: lr, onDestroy: hr } : (hr(), lr("webgl not supported, try upgrading your browser or graphics drivers http://get.webgl.org"), null);
                }
                function t(qt, De) {
                  function Je(ue) {
                    ue = ue.toLowerCase();
                    var Pe;
                    try {
                      Pe = dr[ue] = qt.getExtension(ue);
                    } catch {
                    }
                    return !!Pe;
                  }
                  for (var dr = {}, qe = 0; qe < De.extensions.length; ++qe) {
                    var we = De.extensions[qe];
                    if (!Je(we)) return De.onDestroy(), De.onDone('"' + we + '" extension is not supported by the current WebGL context, try upgrading your system or a different browser'), null;
                  }
                  return De.optionalExtensions.forEach(Je), { extensions: dr, restore: function() {
                    Object.keys(dr).forEach(function(ue) {
                      if (dr[ue] && !Je(ue)) throw Error("(regl): error restoring extension " + ue);
                    });
                  } };
                }
                function r(qt, De) {
                  for (var Je = Array(qt), dr = 0; dr < qt; ++dr) Je[dr] = De(dr);
                  return Je;
                }
                function i(qt) {
                  var De, Je;
                  return De = (65535 < qt) << 4, qt >>>= De, Je = (255 < qt) << 3, qt >>>= Je, De |= Je, Je = (15 < qt) << 2, qt >>>= Je, De |= Je, Je = (3 < qt) << 1, De | Je | qt >>> Je >> 1;
                }
                function a() {
                  function qt(dr) {
                    t: {
                      for (var qe = 16; 268435456 >= qe; qe *= 16) if (dr <= qe) {
                        dr = qe;
                        break t;
                      }
                      dr = 0;
                    }
                    return qe = Je[i(dr) >> 2], 0 < qe.length ? qe.pop() : new ArrayBuffer(dr);
                  }
                  function De(dr) {
                    Je[i(dr.byteLength) >> 2].push(dr);
                  }
                  var Je = r(8, function() {
                    return [];
                  });
                  return { alloc: qt, free: De, allocType: function(dr, qe) {
                    var we = null;
                    switch (dr) {
                      case 5120:
                        we = new Int8Array(qt(qe), 0, qe);
                        break;
                      case 5121:
                        we = new Uint8Array(qt(qe), 0, qe);
                        break;
                      case 5122:
                        we = new Int16Array(qt(2 * qe), 0, qe);
                        break;
                      case 5123:
                        we = new Uint16Array(qt(2 * qe), 0, qe);
                        break;
                      case 5124:
                        we = new Int32Array(qt(4 * qe), 0, qe);
                        break;
                      case 5125:
                        we = new Uint32Array(qt(4 * qe), 0, qe);
                        break;
                      case 5126:
                        we = new Float32Array(qt(4 * qe), 0, qe);
                        break;
                      default:
                        return null;
                    }
                    return we.length !== qe ? we.subarray(0, qe) : we;
                  }, freeType: function(dr) {
                    De(dr.buffer);
                  } };
                }
                function l(qt) {
                  return !!qt && typeof qt == "object" && Array.isArray(qt.shape) && Array.isArray(qt.stride) && typeof qt.offset == "number" && qt.shape.length === qt.stride.length && (Array.isArray(qt.data) || Qt(qt.data));
                }
                function o(qt, De, Je, dr, qe, we) {
                  for (var ue = 0; ue < De; ++ue) for (var Pe = qt[ue], Ue = 0; Ue < Je; ++Ue) for (var Ye = Pe[Ue], rr = 0; rr < dr; ++rr) qe[we++] = Ye[rr];
                }
                function y(qt, De, Je, dr, qe) {
                  for (var we = 1, ue = Je + 1; ue < De.length; ++ue) we *= De[ue];
                  var Pe = De[Je];
                  if (De.length - Je === 4) {
                    var Ue = De[Je + 1], Ye = De[Je + 2];
                    for (De = De[Je + 3], ue = 0; ue < Pe; ++ue) o(
                      qt[ue],
                      Ue,
                      Ye,
                      De,
                      dr,
                      qe
                    ), qe += we;
                  } else for (ue = 0; ue < Pe; ++ue) y(qt[ue], De, Je + 1, dr, qe), qe += we;
                }
                function g(qt) {
                  return Rt[Object.prototype.toString.call(qt)] | 0;
                }
                function x(qt, De) {
                  for (var Je = 0; Je < De.length; ++Je) qt[Je] = De[Je];
                }
                function c(qt, De, Je, dr, qe, we, ue) {
                  for (var Pe = 0, Ue = 0; Ue < Je; ++Ue) for (var Ye = 0; Ye < dr; ++Ye) qt[Pe++] = De[qe * Ue + we * Ye + ue];
                }
                function v(qt, De, Je, dr) {
                  function qe(lr) {
                    this.id = Ue++, this.buffer = qt.createBuffer(), this.type = lr, this.usage = 35044, this.byteLength = 0, this.dimension = 1, this.dtype = 5121, this.persistentData = null, Je.profile && (this.stats = { size: 0 });
                  }
                  function we(lr, hr, Sr) {
                    lr.byteLength = hr.byteLength, qt.bufferData(lr.type, hr, Sr);
                  }
                  function ue(lr, hr, Sr, Dr, Or, Br) {
                    if (lr.usage = Sr, Array.isArray(hr)) {
                      if (lr.dtype = Dr || 5126, 0 < hr.length) if (Array.isArray(hr[0])) {
                        Or = ge(hr);
                        for (var Nr = Dr = 1; Nr < Or.length; ++Nr) Dr *= Or[Nr];
                        lr.dimension = Dr, hr = re(hr, Or, lr.dtype), we(lr, hr, Sr), Br ? lr.persistentData = hr : Gt.freeType(hr);
                      } else typeof hr[0] == "number" ? (lr.dimension = Or, Or = Gt.allocType(lr.dtype, hr.length), x(Or, hr), we(lr, Or, Sr), Br ? lr.persistentData = Or : Gt.freeType(Or)) : Qt(hr[0]) && (lr.dimension = hr[0].length, lr.dtype = Dr || g(hr[0]) || 5126, hr = re(hr, [hr.length, hr[0].length], lr.dtype), we(lr, hr, Sr), Br ? lr.persistentData = hr : Gt.freeType(hr));
                    } else if (Qt(hr)) lr.dtype = Dr || g(hr), lr.dimension = Or, we(lr, hr, Sr), Br && (lr.persistentData = new Uint8Array(new Uint8Array(hr.buffer)));
                    else if (l(hr)) {
                      Or = hr.shape;
                      var Xr = hr.stride, Nr = hr.offset, Gr = 0, oe = 0, de = 0, or = 0;
                      Or.length === 1 ? (Gr = Or[0], oe = 1, de = Xr[0], or = 0) : Or.length === 2 && (Gr = Or[0], oe = Or[1], de = Xr[0], or = Xr[1]), lr.dtype = Dr || g(hr.data) || 5126, lr.dimension = oe, Or = Gt.allocType(lr.dtype, Gr * oe), c(Or, hr.data, Gr, oe, de, or, Nr), we(lr, Or, Sr), Br ? lr.persistentData = Or : Gt.freeType(Or);
                    } else hr instanceof ArrayBuffer && (lr.dtype = 5121, lr.dimension = Or, we(
                      lr,
                      hr,
                      Sr
                    ), Br && (lr.persistentData = new Uint8Array(new Uint8Array(hr))));
                  }
                  function Pe(lr) {
                    De.bufferCount--, dr(lr), qt.deleteBuffer(lr.buffer), lr.buffer = null, delete Ye[lr.id];
                  }
                  var Ue = 0, Ye = {};
                  qe.prototype.bind = function() {
                    qt.bindBuffer(this.type, this.buffer);
                  }, qe.prototype.destroy = function() {
                    Pe(this);
                  };
                  var rr = [];
                  return Je.profile && (De.getTotalBufferSize = function() {
                    var lr = 0;
                    return Object.keys(Ye).forEach(function(hr) {
                      lr += Ye[hr].stats.size;
                    }), lr;
                  }), { create: function(lr, hr, Sr, Dr) {
                    function Or(Nr) {
                      var Xr = 35044, Gr = null, oe = 0, de = 0, or = 1;
                      return Array.isArray(Nr) || Qt(Nr) || l(Nr) || Nr instanceof ArrayBuffer ? Gr = Nr : typeof Nr == "number" ? oe = Nr | 0 : Nr && ("data" in Nr && (Gr = Nr.data), "usage" in Nr && (Xr = kt[Nr.usage]), "type" in Nr && (de = Wt[Nr.type]), "dimension" in Nr && (or = Nr.dimension | 0), "length" in Nr && (oe = Nr.length | 0)), Br.bind(), Gr ? ue(Br, Gr, Xr, de, or, Dr) : (oe && qt.bufferData(Br.type, oe, Xr), Br.dtype = de || 5121, Br.usage = Xr, Br.dimension = or, Br.byteLength = oe), Je.profile && (Br.stats.size = Br.byteLength * _e[Br.dtype]), Or;
                    }
                    De.bufferCount++;
                    var Br = new qe(hr);
                    return Ye[Br.id] = Br, Sr || Or(lr), Or._reglType = "buffer", Or._buffer = Br, Or.subdata = function(Nr, Xr) {
                      var Gr = (Xr || 0) | 0, oe;
                      if (Br.bind(), Qt(Nr) || Nr instanceof ArrayBuffer) qt.bufferSubData(Br.type, Gr, Nr);
                      else if (Array.isArray(Nr)) {
                        if (0 < Nr.length)
                          if (typeof Nr[0] == "number") {
                            var de = Gt.allocType(Br.dtype, Nr.length);
                            x(de, Nr), qt.bufferSubData(Br.type, Gr, de), Gt.freeType(de);
                          } else (Array.isArray(Nr[0]) || Qt(Nr[0])) && (oe = ge(Nr), de = re(Nr, oe, Br.dtype), qt.bufferSubData(Br.type, Gr, de), Gt.freeType(de));
                      } else if (l(Nr)) {
                        oe = Nr.shape;
                        var or = Nr.stride, Er = de = 0, Tr = 0, tr = 0;
                        oe.length === 1 ? (de = oe[0], Er = 1, Tr = or[0], tr = 0) : oe.length === 2 && (de = oe[0], Er = oe[1], Tr = or[0], tr = or[1]), oe = Array.isArray(Nr.data) ? Br.dtype : g(Nr.data), oe = Gt.allocType(
                          oe,
                          de * Er
                        ), c(oe, Nr.data, de, Er, Tr, tr, Nr.offset), qt.bufferSubData(Br.type, Gr, oe), Gt.freeType(oe);
                      }
                      return Or;
                    }, Je.profile && (Or.stats = Br.stats), Or.destroy = function() {
                      Pe(Br);
                    }, Or;
                  }, createStream: function(lr, hr) {
                    var Sr = rr.pop();
                    return Sr || (Sr = new qe(lr)), Sr.bind(), ue(Sr, hr, 35040, 0, 1, !1), Sr;
                  }, destroyStream: function(lr) {
                    rr.push(lr);
                  }, clear: function() {
                    Vt(Ye).forEach(Pe), rr.forEach(Pe);
                  }, getBuffer: function(lr) {
                    return lr && lr._buffer instanceof qe ? lr._buffer : null;
                  }, restore: function() {
                    Vt(Ye).forEach(function(lr) {
                      lr.buffer = qt.createBuffer(), qt.bindBuffer(lr.type, lr.buffer), qt.bufferData(lr.type, lr.persistentData || lr.byteLength, lr.usage);
                    });
                  }, _initBuffer: ue };
                }
                function f(qt, De, Je, dr) {
                  function qe(lr) {
                    this.id = Ue++, Pe[this.id] = this, this.buffer = lr, this.primType = 4, this.type = this.vertCount = 0;
                  }
                  function we(lr, hr, Sr, Dr, Or, Br, Nr) {
                    lr.buffer.bind();
                    var Xr;
                    if (hr ? ((Xr = Nr) || Qt(hr) && (!l(hr) || Qt(hr.data)) || (Xr = De.oes_element_index_uint ? 5125 : 5123), Je._initBuffer(lr.buffer, hr, Sr, Xr, 3)) : (qt.bufferData(34963, Br, Sr), lr.buffer.dtype = Xr || 5121, lr.buffer.usage = Sr, lr.buffer.dimension = 3, lr.buffer.byteLength = Br), Xr = Nr, !Nr) {
                      switch (lr.buffer.dtype) {
                        case 5121:
                        case 5120:
                          Xr = 5121;
                          break;
                        case 5123:
                        case 5122:
                          Xr = 5123;
                          break;
                        case 5125:
                        case 5124:
                          Xr = 5125;
                      }
                      lr.buffer.dtype = Xr;
                    }
                    lr.type = Xr, hr = Or, 0 > hr && (hr = lr.buffer.byteLength, Xr === 5123 ? hr >>= 1 : Xr === 5125 && (hr >>= 2)), lr.vertCount = hr, hr = Dr, 0 > Dr && (hr = 4, Dr = lr.buffer.dimension, Dr === 1 && (hr = 0), Dr === 2 && (hr = 1), Dr === 3 && (hr = 4)), lr.primType = hr;
                  }
                  function ue(lr) {
                    dr.elementsCount--, delete Pe[lr.id], lr.buffer.destroy(), lr.buffer = null;
                  }
                  var Pe = {}, Ue = 0, Ye = { uint8: 5121, uint16: 5123 };
                  De.oes_element_index_uint && (Ye.uint32 = 5125), qe.prototype.bind = function() {
                    this.buffer.bind();
                  };
                  var rr = [];
                  return { create: function(lr, hr) {
                    function Sr(Br) {
                      if (Br) if (typeof Br == "number") Dr(Br), Or.primType = 4, Or.vertCount = Br | 0, Or.type = 5121;
                      else {
                        var Nr = null, Xr = 35044, Gr = -1, oe = -1, de = 0, or = 0;
                        Array.isArray(Br) || Qt(Br) || l(Br) ? Nr = Br : ("data" in Br && (Nr = Br.data), "usage" in Br && (Xr = kt[Br.usage]), "primitive" in Br && (Gr = ce[Br.primitive]), "count" in Br && (oe = Br.count | 0), "type" in Br && (or = Ye[Br.type]), "length" in Br ? de = Br.length | 0 : (de = oe, or === 5123 || or === 5122 ? de *= 2 : (or === 5125 || or === 5124) && (de *= 4))), we(Or, Nr, Xr, Gr, oe, de, or);
                      }
                      else Dr(), Or.primType = 4, Or.vertCount = 0, Or.type = 5121;
                      return Sr;
                    }
                    var Dr = Je.create(
                      null,
                      34963,
                      !0
                    ), Or = new qe(Dr._buffer);
                    return dr.elementsCount++, Sr(lr), Sr._reglType = "elements", Sr._elements = Or, Sr.subdata = function(Br, Nr) {
                      return Dr.subdata(Br, Nr), Sr;
                    }, Sr.destroy = function() {
                      ue(Or);
                    }, Sr;
                  }, createStream: function(lr) {
                    var hr = rr.pop();
                    return hr || (hr = new qe(Je.create(null, 34963, !0, !1)._buffer)), we(hr, lr, 35040, -1, -1, 0, 0), hr;
                  }, destroyStream: function(lr) {
                    rr.push(lr);
                  }, getElements: function(lr) {
                    return typeof lr == "function" && lr._elements instanceof qe ? lr._elements : null;
                  }, clear: function() {
                    Vt(Pe).forEach(ue);
                  } };
                }
                function _(qt) {
                  for (var De = Gt.allocType(
                    5123,
                    qt.length
                  ), Je = 0; Je < qt.length; ++Je) if (isNaN(qt[Je])) De[Je] = 65535;
                  else if (qt[Je] === 1 / 0) De[Je] = 31744;
                  else if (qt[Je] === -1 / 0) De[Je] = 64512;
                  else {
                    ae[0] = qt[Je];
                    var we = Se[0], dr = we >>> 31 << 15, qe = (we << 1 >>> 24) - 127, we = we >> 13 & 1023;
                    De[Je] = -24 > qe ? dr : -14 > qe ? dr + (we + 1024 >> -14 - qe) : 15 < qe ? dr + 31744 : dr + (qe + 15 << 10) + we;
                  }
                  return De;
                }
                function S(qt) {
                  return Array.isArray(qt) || Qt(qt);
                }
                function M(qt) {
                  return "[object " + qt + "]";
                }
                function C(qt) {
                  return Array.isArray(qt) && (qt.length === 0 || typeof qt[0] == "number");
                }
                function m(qt) {
                  return !!(Array.isArray(qt) && qt.length !== 0 && S(qt[0]));
                }
                function L(qt) {
                  return Object.prototype.toString.call(qt);
                }
                function d(qt) {
                  if (!qt) return !1;
                  var De = L(qt);
                  return 0 <= Bt.indexOf(De) ? !0 : C(qt) || m(qt) || l(qt);
                }
                function h(qt, De) {
                  qt.type === 36193 ? (qt.data = _(De), Gt.freeType(De)) : qt.data = De;
                }
                function E(qt, De, Je, dr, qe, we) {
                  if (qt = typeof Zt[qt] < "u" ? Zt[qt] : Ve[qt] * Xt[De], we && (qt *= 6), qe) {
                    for (dr = 0; 1 <= Je; ) dr += qt * Je * Je, Je /= 2;
                    return dr;
                  }
                  return qt * Je * dr;
                }
                function w(qt, De, Je, dr, qe, we, ue) {
                  function Pe() {
                    this.format = this.internalformat = 6408, this.type = 5121, this.flipY = this.premultiplyAlpha = this.compressed = !1, this.unpackAlignment = 1, this.colorSpace = 37444, this.channels = this.height = this.width = 0;
                  }
                  function Ue(rn, Cn) {
                    rn.internalformat = Cn.internalformat, rn.format = Cn.format, rn.type = Cn.type, rn.compressed = Cn.compressed, rn.premultiplyAlpha = Cn.premultiplyAlpha, rn.flipY = Cn.flipY, rn.unpackAlignment = Cn.unpackAlignment, rn.colorSpace = Cn.colorSpace, rn.width = Cn.width, rn.height = Cn.height, rn.channels = Cn.channels;
                  }
                  function Ye(rn, Cn) {
                    if (typeof Cn == "object" && Cn) {
                      "premultiplyAlpha" in Cn && (rn.premultiplyAlpha = Cn.premultiplyAlpha), "flipY" in Cn && (rn.flipY = Cn.flipY), "alignment" in Cn && (rn.unpackAlignment = Cn.alignment), "colorSpace" in Cn && (rn.colorSpace = Zn[Cn.colorSpace]), "type" in Cn && (rn.type = fn[Cn.type]);
                      var Un = rn.width, Fn = rn.height, mi = rn.channels, Nn = !1;
                      "shape" in Cn ? (Un = Cn.shape[0], Fn = Cn.shape[1], Cn.shape.length === 3 && (mi = Cn.shape[2], Nn = !0)) : ("radius" in Cn && (Un = Fn = Cn.radius), "width" in Cn && (Un = Cn.width), "height" in Cn && (Fn = Cn.height), "channels" in Cn && (mi = Cn.channels, Nn = !0)), rn.width = Un | 0, rn.height = Fn | 0, rn.channels = mi | 0, Un = !1, "format" in Cn && (Un = Cn.format, Fn = rn.internalformat = hi[Un], rn.format = qn[Fn], Un in fn && !("type" in Cn) && (rn.type = fn[Un]), Un in Vn && (rn.compressed = !0), Un = !0), !Nn && Un ? rn.channels = Ve[rn.format] : Nn && !Un && rn.channels !== Ne[rn.format] && (rn.format = rn.internalformat = Ne[rn.channels]);
                    }
                  }
                  function rr(rn) {
                    qt.pixelStorei(37440, rn.flipY), qt.pixelStorei(37441, rn.premultiplyAlpha), qt.pixelStorei(37443, rn.colorSpace), qt.pixelStorei(3317, rn.unpackAlignment);
                  }
                  function lr() {
                    Pe.call(this), this.yOffset = this.xOffset = 0, this.data = null, this.needsFree = !1, this.element = null, this.needsCopy = !1;
                  }
                  function hr(rn, Cn) {
                    var Un = null;
                    if (d(Cn) ? Un = Cn : Cn && (Ye(rn, Cn), "x" in Cn && (rn.xOffset = Cn.x | 0), "y" in Cn && (rn.yOffset = Cn.y | 0), d(Cn.data) && (Un = Cn.data)), Cn.copy) {
                      var Fn = qe.viewportWidth, mi = qe.viewportHeight;
                      rn.width = rn.width || Fn - rn.xOffset, rn.height = rn.height || mi - rn.yOffset, rn.needsCopy = !0;
                    } else if (!Un) rn.width = rn.width || 1, rn.height = rn.height || 1, rn.channels = rn.channels || 4;
                    else if (Qt(Un)) rn.channels = rn.channels || 4, rn.data = Un, "type" in Cn || rn.type !== 5121 || (rn.type = Rt[Object.prototype.toString.call(Un)] | 0);
                    else if (C(Un)) {
                      switch (rn.channels = rn.channels || 4, Fn = Un, mi = Fn.length, rn.type) {
                        case 5121:
                        case 5123:
                        case 5125:
                        case 5126:
                          mi = Gt.allocType(rn.type, mi), mi.set(Fn), rn.data = mi;
                          break;
                        case 36193:
                          rn.data = _(Fn);
                      }
                      rn.alignment = 1, rn.needsFree = !0;
                    } else if (l(Un)) {
                      Fn = Un.data, Array.isArray(Fn) || rn.type !== 5121 || (rn.type = Rt[Object.prototype.toString.call(Fn)] | 0);
                      var mi = Un.shape, Nn = Un.stride, di, Ai, Gi, ia;
                      mi.length === 3 ? (Gi = mi[2], ia = Nn[2]) : ia = Gi = 1, di = mi[0], Ai = mi[1], mi = Nn[0], Nn = Nn[1], rn.alignment = 1, rn.width = di, rn.height = Ai, rn.channels = Gi, rn.format = rn.internalformat = Ne[Gi], rn.needsFree = !0, di = ia, Un = Un.offset, Gi = rn.width, ia = rn.height, Ai = rn.channels;
                      for (var Ca = Gt.allocType(rn.type === 36193 ? 5126 : rn.type, Gi * ia * Ai), Qr = 0, pn = 0; pn < ia; ++pn) for (var $r = 0; $r < Gi; ++$r) for (var mn = 0; mn < Ai; ++mn) Ca[Qr++] = Fn[mi * $r + Nn * pn + di * mn + Un];
                      h(rn, Ca);
                    } else if (L(Un) === Oe || L(Un) === ur || L(Un) === ie) L(Un) === Oe || L(Un) === ur ? rn.element = Un : rn.element = Un.canvas, rn.width = rn.element.width, rn.height = rn.element.height, rn.channels = 4;
                    else if (L(Un) === $t) rn.element = Un, rn.width = Un.width, rn.height = Un.height, rn.channels = 4;
                    else if (L(Un) === jt) rn.element = Un, rn.width = Un.naturalWidth, rn.height = Un.naturalHeight, rn.channels = 4;
                    else if (L(Un) === ee) rn.element = Un, rn.width = Un.videoWidth, rn.height = Un.videoHeight, rn.channels = 4;
                    else if (m(Un)) {
                      for (Fn = rn.width || Un[0].length, mi = rn.height || Un.length, Nn = rn.channels, Nn = S(Un[0][0]) ? Nn || Un[0][0].length : Nn || 1, di = zt.shape(Un), Gi = 1, ia = 0; ia < di.length; ++ia) Gi *= di[ia];
                      Gi = Gt.allocType(rn.type === 36193 ? 5126 : rn.type, Gi), zt.flatten(Un, di, "", Gi), h(rn, Gi), rn.alignment = 1, rn.width = Fn, rn.height = mi, rn.channels = Nn, rn.format = rn.internalformat = Ne[Nn], rn.needsFree = !0;
                    }
                  }
                  function Sr(rn, Cn, Un, Fn, mi) {
                    var Nn = rn.element, di = rn.data, Ai = rn.internalformat, Gi = rn.format, ia = rn.type, Ca = rn.width, Qr = rn.height;
                    rr(rn), Nn ? qt.texSubImage2D(Cn, mi, Un, Fn, Gi, ia, Nn) : rn.compressed ? qt.compressedTexSubImage2D(Cn, mi, Un, Fn, Ai, Ca, Qr, di) : rn.needsCopy ? (dr(), qt.copyTexSubImage2D(
                      Cn,
                      mi,
                      Un,
                      Fn,
                      rn.xOffset,
                      rn.yOffset,
                      Ca,
                      Qr
                    )) : qt.texSubImage2D(Cn, mi, Un, Fn, Ca, Qr, Gi, ia, di);
                  }
                  function Dr() {
                    return si.pop() || new lr();
                  }
                  function Or(rn) {
                    rn.needsFree && Gt.freeType(rn.data), lr.call(rn), si.push(rn);
                  }
                  function Br() {
                    Pe.call(this), this.genMipmaps = !1, this.mipmapHint = 4352, this.mipmask = 0, this.images = Array(16);
                  }
                  function Nr(rn, Cn, Un) {
                    var Fn = rn.images[0] = Dr();
                    rn.mipmask = 1, Fn.width = rn.width = Cn, Fn.height = rn.height = Un, Fn.channels = rn.channels = 4;
                  }
                  function Xr(rn, Cn) {
                    var Un = null;
                    if (d(Cn)) Un = rn.images[0] = Dr(), Ue(Un, rn), hr(Un, Cn), rn.mipmask = 1;
                    else if (Ye(rn, Cn), Array.isArray(Cn.mipmap)) for (var Fn = Cn.mipmap, mi = 0; mi < Fn.length; ++mi) Un = rn.images[mi] = Dr(), Ue(Un, rn), Un.width >>= mi, Un.height >>= mi, hr(Un, Fn[mi]), rn.mipmask |= 1 << mi;
                    else Un = rn.images[0] = Dr(), Ue(Un, rn), hr(Un, Cn), rn.mipmask = 1;
                    Ue(rn, rn.images[0]);
                  }
                  function Gr(rn, Cn) {
                    for (var Un = rn.images, Fn = 0; Fn < Un.length && Un[Fn]; ++Fn) {
                      var mi = Un[Fn], Nn = Cn, di = Fn, Ai = mi.element, Gi = mi.data, ia = mi.internalformat, Ca = mi.format, Qr = mi.type, pn = mi.width, $r = mi.height;
                      rr(mi), Ai ? qt.texImage2D(Nn, di, Ca, Ca, Qr, Ai) : mi.compressed ? qt.compressedTexImage2D(Nn, di, ia, pn, $r, 0, Gi) : mi.needsCopy ? (dr(), qt.copyTexImage2D(Nn, di, Ca, mi.xOffset, mi.yOffset, pn, $r, 0)) : qt.texImage2D(
                        Nn,
                        di,
                        Ca,
                        pn,
                        $r,
                        0,
                        Ca,
                        Qr,
                        Gi || null
                      );
                    }
                  }
                  function oe() {
                    var rn = qi.pop() || new Br();
                    Pe.call(rn);
                    for (var Cn = rn.mipmask = 0; 16 > Cn; ++Cn) rn.images[Cn] = null;
                    return rn;
                  }
                  function de(rn) {
                    for (var Cn = rn.images, Un = 0; Un < Cn.length; ++Un) Cn[Un] && Or(Cn[Un]), Cn[Un] = null;
                    qi.push(rn);
                  }
                  function or() {
                    this.magFilter = this.minFilter = 9728, this.wrapT = this.wrapS = 33071, this.anisotropic = 1, this.genMipmaps = !1, this.mipmapHint = 4352;
                  }
                  function Er(rn, Cn) {
                    "min" in Cn && (rn.minFilter = Jr[Cn.min], 0 <= ze.indexOf(rn.minFilter) && !("faces" in Cn) && (rn.genMipmaps = !0)), "mag" in Cn && (rn.magFilter = ln[Cn.mag]);
                    var Un = rn.wrapS, Fn = rn.wrapT;
                    if ("wrap" in Cn) {
                      var mi = Cn.wrap;
                      typeof mi == "string" ? Un = Fn = Zr[mi] : Array.isArray(mi) && (Un = Zr[mi[0]], Fn = Zr[mi[1]]);
                    } else "wrapS" in Cn && (Un = Zr[Cn.wrapS]), "wrapT" in Cn && (Fn = Zr[Cn.wrapT]);
                    if (rn.wrapS = Un, rn.wrapT = Fn, "anisotropic" in Cn && (rn.anisotropic = Cn.anisotropic), "mipmap" in Cn) {
                      switch (Un = !1, typeof Cn.mipmap) {
                        case "string":
                          rn.mipmapHint = _r[Cn.mipmap], Un = rn.genMipmaps = !0;
                          break;
                        case "boolean":
                          Un = rn.genMipmaps = Cn.mipmap;
                          break;
                        case "object":
                          rn.genMipmaps = !1, Un = !0;
                      }
                      !Un || "min" in Cn || (rn.minFilter = 9984);
                    }
                  }
                  function Tr(rn, Cn) {
                    qt.texParameteri(
                      Cn,
                      10241,
                      rn.minFilter
                    ), qt.texParameteri(Cn, 10240, rn.magFilter), qt.texParameteri(Cn, 10242, rn.wrapS), qt.texParameteri(Cn, 10243, rn.wrapT), De.ext_texture_filter_anisotropic && qt.texParameteri(Cn, 34046, rn.anisotropic), rn.genMipmaps && (qt.hint(33170, rn.mipmapHint), qt.generateMipmap(Cn));
                  }
                  function tr(rn) {
                    Pe.call(this), this.mipmask = 0, this.internalformat = 6408, this.id = ha++, this.refCount = 1, this.target = rn, this.texture = qt.createTexture(), this.unit = -1, this.bindCount = 0, this.texInfo = new or(), ue.profile && (this.stats = { size: 0 });
                  }
                  function yr(rn) {
                    qt.activeTexture(33984), qt.bindTexture(rn.target, rn.texture);
                  }
                  function Ir() {
                    var rn = ci[0];
                    rn ? qt.bindTexture(rn.target, rn.texture) : qt.bindTexture(3553, null);
                  }
                  function Cr(rn) {
                    var Cn = rn.texture, Un = rn.unit, Fn = rn.target;
                    0 <= Un && (qt.activeTexture(33984 + Un), qt.bindTexture(Fn, null), ci[Un] = null), qt.deleteTexture(Cn), rn.texture = null, rn.params = null, rn.pixels = null, rn.refCount = 0, delete Mi[rn.id], we.textureCount--;
                  }
                  var _r = { "don't care": 4352, "dont care": 4352, nice: 4354, fast: 4353 }, Zr = { repeat: 10497, clamp: 33071, mirror: 33648 }, ln = { nearest: 9728, linear: 9729 }, Jr = lt({
                    mipmap: 9987,
                    "nearest mipmap nearest": 9984,
                    "linear mipmap nearest": 9985,
                    "nearest mipmap linear": 9986,
                    "linear mipmap linear": 9987
                  }, ln), Zn = { none: 0, browser: 37444 }, fn = { uint8: 5121, rgba4: 32819, rgb565: 33635, "rgb5 a1": 32820 }, hi = { alpha: 6406, luminance: 6409, "luminance alpha": 6410, rgb: 6407, rgba: 6408, rgba4: 32854, "rgb5 a1": 32855, rgb565: 36194 }, Vn = {};
                  De.ext_srgb && (hi.srgb = 35904, hi.srgba = 35906), De.oes_texture_float && (fn.float32 = fn.float = 5126), De.oes_texture_half_float && (fn.float16 = fn["half float"] = 36193), De.webgl_depth_texture && (lt(hi, { depth: 6402, "depth stencil": 34041 }), lt(fn, { uint16: 5123, uint32: 5125, "depth stencil": 34042 })), De.webgl_compressed_texture_s3tc && lt(Vn, { "rgb s3tc dxt1": 33776, "rgba s3tc dxt1": 33777, "rgba s3tc dxt3": 33778, "rgba s3tc dxt5": 33779 }), De.webgl_compressed_texture_atc && lt(Vn, { "rgb atc": 35986, "rgba atc explicit alpha": 35987, "rgba atc interpolated alpha": 34798 }), De.webgl_compressed_texture_pvrtc && lt(Vn, { "rgb pvrtc 4bppv1": 35840, "rgb pvrtc 2bppv1": 35841, "rgba pvrtc 4bppv1": 35842, "rgba pvrtc 2bppv1": 35843 }), De.webgl_compressed_texture_etc1 && (Vn["rgb etc1"] = 36196);
                  var jr = Array.prototype.slice.call(qt.getParameter(34467));
                  Object.keys(Vn).forEach(function(rn) {
                    var Cn = Vn[rn];
                    0 <= jr.indexOf(Cn) && (hi[rn] = Cn);
                  });
                  var zr = Object.keys(hi);
                  Je.textureFormats = zr;
                  var Tn = [];
                  Object.keys(hi).forEach(function(rn) {
                    Tn[hi[rn]] = rn;
                  });
                  var sn = [];
                  Object.keys(fn).forEach(function(rn) {
                    sn[fn[rn]] = rn;
                  });
                  var $n = [];
                  Object.keys(ln).forEach(function(rn) {
                    $n[ln[rn]] = rn;
                  });
                  var kn = [];
                  Object.keys(Jr).forEach(function(rn) {
                    kn[Jr[rn]] = rn;
                  });
                  var An = [];
                  Object.keys(Zr).forEach(function(rn) {
                    An[Zr[rn]] = rn;
                  });
                  var qn = zr.reduce(function(rn, Cn) {
                    var Un = hi[Cn];
                    return Un === 6409 || Un === 6406 || Un === 6409 || Un === 6410 || Un === 6402 || Un === 34041 || De.ext_srgb && (Un === 35904 || Un === 35906) ? rn[Un] = Un : Un === 32855 || 0 <= Cn.indexOf("rgba") ? rn[Un] = 6408 : rn[Un] = 6407, rn;
                  }, {}), si = [], qi = [], ha = 0, Mi = {}, Ji = Je.maxTextureUnits, ci = Array(Ji).map(function() {
                    return null;
                  });
                  return lt(tr.prototype, { bind: function() {
                    this.bindCount += 1;
                    var rn = this.unit;
                    if (0 > rn) {
                      for (var Cn = 0; Cn < Ji; ++Cn) {
                        var Un = ci[Cn];
                        if (Un) {
                          if (0 < Un.bindCount) continue;
                          Un.unit = -1;
                        }
                        ci[Cn] = this, rn = Cn;
                        break;
                      }
                      ue.profile && we.maxTextureUnits < rn + 1 && (we.maxTextureUnits = rn + 1), this.unit = rn, qt.activeTexture(33984 + rn), qt.bindTexture(this.target, this.texture);
                    }
                    return rn;
                  }, unbind: function() {
                    --this.bindCount;
                  }, decRef: function() {
                    0 >= --this.refCount && Cr(this);
                  } }), ue.profile && (we.getTotalTextureSize = function() {
                    var rn = 0;
                    return Object.keys(Mi).forEach(function(Cn) {
                      rn += Mi[Cn].stats.size;
                    }), rn;
                  }), { create2D: function(rn, Cn) {
                    function Un(mi, Nn) {
                      var di = Fn.texInfo;
                      or.call(di);
                      var Ai = oe();
                      return typeof mi == "number" ? typeof Nn == "number" ? Nr(Ai, mi | 0, Nn | 0) : Nr(Ai, mi | 0, mi | 0) : mi ? (Er(di, mi), Xr(Ai, mi)) : Nr(Ai, 1, 1), di.genMipmaps && (Ai.mipmask = (Ai.width << 1) - 1), Fn.mipmask = Ai.mipmask, Ue(
                        Fn,
                        Ai
                      ), Fn.internalformat = Ai.internalformat, Un.width = Ai.width, Un.height = Ai.height, yr(Fn), Gr(Ai, 3553), Tr(di, 3553), Ir(), de(Ai), ue.profile && (Fn.stats.size = E(Fn.internalformat, Fn.type, Ai.width, Ai.height, di.genMipmaps, !1)), Un.format = Tn[Fn.internalformat], Un.type = sn[Fn.type], Un.mag = $n[di.magFilter], Un.min = kn[di.minFilter], Un.wrapS = An[di.wrapS], Un.wrapT = An[di.wrapT], Un;
                    }
                    var Fn = new tr(3553);
                    return Mi[Fn.id] = Fn, we.textureCount++, Un(rn, Cn), Un.subimage = function(mi, Nn, di, Ai) {
                      Nn |= 0, di |= 0, Ai |= 0;
                      var Gi = Dr();
                      return Ue(Gi, Fn), Gi.width = 0, Gi.height = 0, hr(Gi, mi), Gi.width = Gi.width || (Fn.width >> Ai) - Nn, Gi.height = Gi.height || (Fn.height >> Ai) - di, yr(Fn), Sr(Gi, 3553, Nn, di, Ai), Ir(), Or(Gi), Un;
                    }, Un.resize = function(mi, Nn) {
                      var di = mi | 0, Ai = Nn | 0 || di;
                      if (di === Fn.width && Ai === Fn.height) return Un;
                      Un.width = Fn.width = di, Un.height = Fn.height = Ai, yr(Fn);
                      for (var Gi = 0; Fn.mipmask >> Gi; ++Gi) {
                        var ia = di >> Gi, Ca = Ai >> Gi;
                        if (!ia || !Ca) break;
                        qt.texImage2D(3553, Gi, Fn.format, ia, Ca, 0, Fn.format, Fn.type, null);
                      }
                      return Ir(), ue.profile && (Fn.stats.size = E(Fn.internalformat, Fn.type, di, Ai, !1, !1)), Un;
                    }, Un._reglType = "texture2d", Un._texture = Fn, ue.profile && (Un.stats = Fn.stats), Un.destroy = function() {
                      Fn.decRef();
                    }, Un;
                  }, createCube: function(rn, Cn, Un, Fn, mi, Nn) {
                    function di(ia, Ca, Qr, pn, $r, mn) {
                      var Wn, yi = Ai.texInfo;
                      for (or.call(yi), Wn = 0; 6 > Wn; ++Wn) Gi[Wn] = oe();
                      if (typeof ia == "number" || !ia) for (ia = ia | 0 || 1, Wn = 0; 6 > Wn; ++Wn) Nr(Gi[Wn], ia, ia);
                      else if (typeof ia == "object") if (Ca) Xr(Gi[0], ia), Xr(Gi[1], Ca), Xr(Gi[2], Qr), Xr(Gi[3], pn), Xr(Gi[4], $r), Xr(Gi[5], mn);
                      else if (Er(yi, ia), Ye(Ai, ia), "faces" in ia) for (ia = ia.faces, Wn = 0; 6 > Wn; ++Wn) Ue(Gi[Wn], Ai), Xr(Gi[Wn], ia[Wn]);
                      else for (Wn = 0; 6 > Wn; ++Wn) Xr(Gi[Wn], ia);
                      for (Ue(Ai, Gi[0]), Ai.mipmask = yi.genMipmaps ? (Gi[0].width << 1) - 1 : Gi[0].mipmask, Ai.internalformat = Gi[0].internalformat, di.width = Gi[0].width, di.height = Gi[0].height, yr(Ai), Wn = 0; 6 > Wn; ++Wn) Gr(Gi[Wn], 34069 + Wn);
                      for (Tr(yi, 34067), Ir(), ue.profile && (Ai.stats.size = E(Ai.internalformat, Ai.type, di.width, di.height, yi.genMipmaps, !0)), di.format = Tn[Ai.internalformat], di.type = sn[Ai.type], di.mag = $n[yi.magFilter], di.min = kn[yi.minFilter], di.wrapS = An[yi.wrapS], di.wrapT = An[yi.wrapT], Wn = 0; 6 > Wn; ++Wn) de(Gi[Wn]);
                      return di;
                    }
                    var Ai = new tr(34067);
                    Mi[Ai.id] = Ai, we.cubeCount++;
                    var Gi = Array(6);
                    return di(rn, Cn, Un, Fn, mi, Nn), di.subimage = function(ia, Ca, Qr, pn, $r) {
                      Qr |= 0, pn |= 0, $r |= 0;
                      var mn = Dr();
                      return Ue(mn, Ai), mn.width = 0, mn.height = 0, hr(mn, Ca), mn.width = mn.width || (Ai.width >> $r) - Qr, mn.height = mn.height || (Ai.height >> $r) - pn, yr(Ai), Sr(mn, 34069 + ia, Qr, pn, $r), Ir(), Or(mn), di;
                    }, di.resize = function(ia) {
                      if (ia |= 0, ia !== Ai.width) {
                        di.width = Ai.width = ia, di.height = Ai.height = ia, yr(Ai);
                        for (var Ca = 0; 6 > Ca; ++Ca) for (var Qr = 0; Ai.mipmask >> Qr; ++Qr) qt.texImage2D(34069 + Ca, Qr, Ai.format, ia >> Qr, ia >> Qr, 0, Ai.format, Ai.type, null);
                        return Ir(), ue.profile && (Ai.stats.size = E(Ai.internalformat, Ai.type, di.width, di.height, !1, !0)), di;
                      }
                    }, di._reglType = "textureCube", di._texture = Ai, ue.profile && (di.stats = Ai.stats), di.destroy = function() {
                      Ai.decRef();
                    }, di;
                  }, clear: function() {
                    for (var rn = 0; rn < Ji; ++rn) qt.activeTexture(33984 + rn), qt.bindTexture(3553, null), ci[rn] = null;
                    Vt(Mi).forEach(Cr), we.cubeCount = 0, we.textureCount = 0;
                  }, getTexture: function(rn) {
                    return null;
                  }, restore: function() {
                    for (var rn = 0; rn < Ji; ++rn) {
                      var Cn = ci[rn];
                      Cn && (Cn.bindCount = 0, Cn.unit = -1, ci[rn] = null);
                    }
                    Vt(Mi).forEach(function(Un) {
                      Un.texture = qt.createTexture(), qt.bindTexture(Un.target, Un.texture);
                      for (var Fn = 0; 32 > Fn; ++Fn) if (Un.mipmask & 1 << Fn) if (Un.target === 3553) qt.texImage2D(
                        3553,
                        Fn,
                        Un.internalformat,
                        Un.width >> Fn,
                        Un.height >> Fn,
                        0,
                        Un.internalformat,
                        Un.type,
                        null
                      );
                      else for (var mi = 0; 6 > mi; ++mi) qt.texImage2D(34069 + mi, Fn, Un.internalformat, Un.width >> Fn, Un.height >> Fn, 0, Un.internalformat, Un.type, null);
                      Tr(Un.texInfo, Un.target);
                    });
                  }, refresh: function() {
                    for (var rn = 0; rn < Ji; ++rn) {
                      var Cn = ci[rn];
                      Cn && (Cn.bindCount = 0, Cn.unit = -1, ci[rn] = null), qt.activeTexture(33984 + rn), qt.bindTexture(3553, null), qt.bindTexture(34067, null);
                    }
                  } };
                }
                function z(qt, De, Je, dr, qe, we) {
                  function ue(tr, yr, Ir) {
                    this.target = tr, this.texture = yr, this.renderbuffer = Ir;
                    var Cr = tr = 0;
                    yr ? (tr = yr.width, Cr = yr.height) : Ir && (tr = Ir.width, Cr = Ir.height), this.width = tr, this.height = Cr;
                  }
                  function Pe(tr) {
                    tr && (tr.texture && tr.texture._texture.decRef(), tr.renderbuffer && tr.renderbuffer._renderbuffer.decRef());
                  }
                  function Ue(tr, yr, Ir) {
                    tr && (tr.texture ? tr.texture._texture.refCount += 1 : tr.renderbuffer._renderbuffer.refCount += 1);
                  }
                  function Ye(tr, yr) {
                    yr && (yr.texture ? qt.framebufferTexture2D(36160, tr, yr.target, yr.texture._texture.texture, 0) : qt.framebufferRenderbuffer(36160, tr, 36161, yr.renderbuffer._renderbuffer.renderbuffer));
                  }
                  function rr(tr) {
                    var yr = 3553, Ir = null, Cr = null, _r = tr;
                    return typeof tr == "object" && (_r = tr.data, "target" in tr && (yr = tr.target | 0)), tr = _r._reglType, tr === "texture2d" || tr === "textureCube" ? Ir = _r : tr === "renderbuffer" && (Cr = _r, yr = 36161), new ue(yr, Ir, Cr);
                  }
                  function lr(tr, yr, Ir, Cr, _r) {
                    return Ir ? (tr = dr.create2D({ width: tr, height: yr, format: Cr, type: _r }), tr._texture.refCount = 0, new ue(3553, tr, null)) : (tr = qe.create({ width: tr, height: yr, format: Cr }), tr._renderbuffer.refCount = 0, new ue(36161, null, tr));
                  }
                  function hr(tr) {
                    return tr && (tr.texture || tr.renderbuffer);
                  }
                  function Sr(tr, yr, Ir) {
                    tr && (tr.texture ? tr.texture.resize(yr, Ir) : tr.renderbuffer && tr.renderbuffer.resize(yr, Ir), tr.width = yr, tr.height = Ir);
                  }
                  function Dr() {
                    this.id = Er++, Tr[this.id] = this, this.framebuffer = qt.createFramebuffer(), this.height = this.width = 0, this.colorAttachments = [], this.depthStencilAttachment = this.stencilAttachment = this.depthAttachment = null;
                  }
                  function Or(tr) {
                    tr.colorAttachments.forEach(Pe), Pe(tr.depthAttachment), Pe(tr.stencilAttachment), Pe(tr.depthStencilAttachment);
                  }
                  function Br(tr) {
                    qt.deleteFramebuffer(tr.framebuffer), tr.framebuffer = null, we.framebufferCount--, delete Tr[tr.id];
                  }
                  function Nr(tr) {
                    var yr;
                    qt.bindFramebuffer(36160, tr.framebuffer);
                    var Ir = tr.colorAttachments;
                    for (yr = 0; yr < Ir.length; ++yr) Ye(36064 + yr, Ir[yr]);
                    for (yr = Ir.length; yr < Je.maxColorAttachments; ++yr) qt.framebufferTexture2D(36160, 36064 + yr, 3553, null, 0);
                    qt.framebufferTexture2D(36160, 33306, 3553, null, 0), qt.framebufferTexture2D(36160, 36096, 3553, null, 0), qt.framebufferTexture2D(36160, 36128, 3553, null, 0), Ye(36096, tr.depthAttachment), Ye(36128, tr.stencilAttachment), Ye(33306, tr.depthStencilAttachment), qt.checkFramebufferStatus(36160), qt.isContextLost(), qt.bindFramebuffer(36160, Gr.next ? Gr.next.framebuffer : null), Gr.cur = Gr.next, qt.getError();
                  }
                  function Xr(tr, yr) {
                    function Ir(_r, Zr) {
                      var ln, Jr = 0, Zn = 0, fn = !0, hi = !0;
                      ln = null;
                      var Vn = !0, jr = "rgba", zr = "uint8", Tn = 1, sn = null, $n = null, kn = null, An = !1;
                      typeof _r == "number" ? (Jr = _r | 0, Zn = Zr | 0 || Jr) : _r ? ("shape" in _r ? (Zn = _r.shape, Jr = Zn[0], Zn = Zn[1]) : ("radius" in _r && (Jr = Zn = _r.radius), "width" in _r && (Jr = _r.width), "height" in _r && (Zn = _r.height)), ("color" in _r || "colors" in _r) && (ln = _r.color || _r.colors), ln || ("colorCount" in _r && (Tn = _r.colorCount | 0), "colorTexture" in _r && (Vn = !!_r.colorTexture, jr = "rgba4"), "colorType" in _r && (zr = _r.colorType, !Vn) && (zr === "half float" || zr === "float16" ? jr = "rgba16f" : (zr === "float" || zr === "float32") && (jr = "rgba32f")), "colorFormat" in _r && (jr = _r.colorFormat, 0 <= oe.indexOf(jr) ? Vn = !0 : 0 <= de.indexOf(jr) && (Vn = !1))), ("depthTexture" in _r || "depthStencilTexture" in _r) && (An = !(!_r.depthTexture && !_r.depthStencilTexture)), "depth" in _r && (typeof _r.depth == "boolean" ? fn = _r.depth : (sn = _r.depth, hi = !1)), "stencil" in _r && (typeof _r.stencil == "boolean" ? hi = _r.stencil : ($n = _r.stencil, fn = !1)), "depthStencil" in _r && (typeof _r.depthStencil == "boolean" ? fn = hi = _r.depthStencil : (kn = _r.depthStencil, hi = fn = !1))) : Jr = Zn = 1;
                      var qn = null, si = null, qi = null, ha = null;
                      if (Array.isArray(ln)) qn = ln.map(rr);
                      else if (ln) qn = [rr(ln)];
                      else for (qn = Array(Tn), ln = 0; ln < Tn; ++ln) qn[ln] = lr(Jr, Zn, Vn, jr, zr);
                      for (Jr = Jr || qn[0].width, Zn = Zn || qn[0].height, sn ? si = rr(sn) : fn && !hi && (si = lr(Jr, Zn, An, "depth", "uint32")), $n ? qi = rr($n) : hi && !fn && (qi = lr(Jr, Zn, !1, "stencil", "uint8")), kn ? ha = rr(kn) : !sn && !$n && hi && fn && (ha = lr(Jr, Zn, An, "depth stencil", "depth stencil")), fn = null, ln = 0; ln < qn.length; ++ln) Ue(qn[ln]), qn[ln] && qn[ln].texture && (hi = St[qn[ln].texture._texture.format] * Lt[qn[ln].texture._texture.type], fn === null && (fn = hi));
                      return Ue(si), Ue(qi), Ue(ha), Or(Cr), Cr.width = Jr, Cr.height = Zn, Cr.colorAttachments = qn, Cr.depthAttachment = si, Cr.stencilAttachment = qi, Cr.depthStencilAttachment = ha, Ir.color = qn.map(hr), Ir.depth = hr(si), Ir.stencil = hr(qi), Ir.depthStencil = hr(ha), Ir.width = Cr.width, Ir.height = Cr.height, Nr(Cr), Ir;
                    }
                    var Cr = new Dr();
                    return we.framebufferCount++, Ir(tr, yr), lt(Ir, { resize: function(_r, Zr) {
                      var ln = Math.max(_r | 0, 1), Jr = Math.max(Zr | 0 || ln, 1);
                      if (ln === Cr.width && Jr === Cr.height) return Ir;
                      for (var Zn = Cr.colorAttachments, fn = 0; fn < Zn.length; ++fn) Sr(Zn[fn], ln, Jr);
                      return Sr(Cr.depthAttachment, ln, Jr), Sr(
                        Cr.stencilAttachment,
                        ln,
                        Jr
                      ), Sr(Cr.depthStencilAttachment, ln, Jr), Cr.width = Ir.width = ln, Cr.height = Ir.height = Jr, Nr(Cr), Ir;
                    }, _reglType: "framebuffer", _framebuffer: Cr, destroy: function() {
                      Br(Cr), Or(Cr);
                    }, use: function(_r) {
                      Gr.setFBO({ framebuffer: Ir }, _r);
                    } });
                  }
                  var Gr = { cur: null, next: null, dirty: !1, setFBO: null }, oe = ["rgba"], de = ["rgba4", "rgb565", "rgb5 a1"];
                  De.ext_srgb && de.push("srgba"), De.ext_color_buffer_half_float && de.push("rgba16f", "rgb16f"), De.webgl_color_buffer_float && de.push("rgba32f");
                  var or = ["uint8"];
                  De.oes_texture_half_float && or.push("half float", "float16"), De.oes_texture_float && or.push("float", "float32");
                  var Er = 0, Tr = {};
                  return lt(Gr, {
                    getFramebuffer: function(tr) {
                      return typeof tr == "function" && tr._reglType === "framebuffer" && (tr = tr._framebuffer, tr instanceof Dr) ? tr : null;
                    },
                    create: Xr,
                    createCube: function(tr) {
                      function yr(Cr) {
                        var _r, Zr = { color: null }, ln = 0, Jr = null;
                        _r = "rgba";
                        var Zn = "uint8", fn = 1;
                        if (typeof Cr == "number" ? ln = Cr | 0 : Cr ? ("shape" in Cr ? ln = Cr.shape[0] : ("radius" in Cr && (ln = Cr.radius | 0), "width" in Cr ? ln = Cr.width | 0 : "height" in Cr && (ln = Cr.height | 0)), ("color" in Cr || "colors" in Cr) && (Jr = Cr.color || Cr.colors), Jr || ("colorCount" in Cr && (fn = Cr.colorCount | 0), "colorType" in Cr && (Zn = Cr.colorType), "colorFormat" in Cr && (_r = Cr.colorFormat)), "depth" in Cr && (Zr.depth = Cr.depth), "stencil" in Cr && (Zr.stencil = Cr.stencil), "depthStencil" in Cr && (Zr.depthStencil = Cr.depthStencil)) : ln = 1, Jr) if (Array.isArray(Jr)) for (Cr = [], _r = 0; _r < Jr.length; ++_r) Cr[_r] = Jr[_r];
                        else Cr = [Jr];
                        else for (Cr = Array(fn), Jr = { radius: ln, format: _r, type: Zn }, _r = 0; _r < fn; ++_r) Cr[_r] = dr.createCube(Jr);
                        for (Zr.color = Array(Cr.length), _r = 0; _r < Cr.length; ++_r) fn = Cr[_r], ln = ln || fn.width, Zr.color[_r] = {
                          target: 34069,
                          data: Cr[_r]
                        };
                        for (_r = 0; 6 > _r; ++_r) {
                          for (fn = 0; fn < Cr.length; ++fn) Zr.color[fn].target = 34069 + _r;
                          0 < _r && (Zr.depth = Ir[0].depth, Zr.stencil = Ir[0].stencil, Zr.depthStencil = Ir[0].depthStencil), Ir[_r] ? Ir[_r](Zr) : Ir[_r] = Xr(Zr);
                        }
                        return lt(yr, { width: ln, height: ln, color: Cr });
                      }
                      var Ir = Array(6);
                      return yr(tr), lt(yr, { faces: Ir, resize: function(Cr) {
                        var _r = Cr | 0;
                        if (_r === yr.width) return yr;
                        var Zr = yr.color;
                        for (Cr = 0; Cr < Zr.length; ++Cr) Zr[Cr].resize(_r);
                        for (Cr = 0; 6 > Cr; ++Cr) Ir[Cr].resize(_r);
                        return yr.width = yr.height = _r, yr;
                      }, _reglType: "framebufferCube", destroy: function() {
                        Ir.forEach(function(Cr) {
                          Cr.destroy();
                        });
                      } });
                    },
                    clear: function() {
                      Vt(Tr).forEach(Br);
                    },
                    restore: function() {
                      Gr.cur = null, Gr.next = null, Gr.dirty = !0, Vt(Tr).forEach(function(tr) {
                        tr.framebuffer = qt.createFramebuffer(), Nr(tr);
                      });
                    }
                  });
                }
                function O() {
                  this.w = this.z = this.y = this.x = this.state = 0, this.buffer = null, this.size = 0, this.normalized = !1, this.type = 5126, this.divisor = this.stride = this.offset = 0;
                }
                function B(qt, De, Je, dr, qe, we, ue) {
                  function Pe(Nr) {
                    if (Nr !== Br.currentVAO) {
                      var Xr = De.oes_vertex_array_object;
                      Nr ? Xr.bindVertexArrayOES(Nr.vao) : Xr.bindVertexArrayOES(null), Br.currentVAO = Nr;
                    }
                  }
                  function Ue(Nr) {
                    if (Nr !== Br.currentVAO) {
                      if (Nr) Nr.bindAttrs();
                      else {
                        for (var Xr = De.angle_instanced_arrays, Gr = 0; Gr < Sr.length; ++Gr) {
                          var oe = Sr[Gr];
                          oe.buffer ? (qt.enableVertexAttribArray(Gr), oe.buffer.bind(), qt.vertexAttribPointer(Gr, oe.size, oe.type, oe.normalized, oe.stride, oe.offfset), Xr && oe.divisor && Xr.vertexAttribDivisorANGLE(Gr, oe.divisor)) : (qt.disableVertexAttribArray(Gr), qt.vertexAttrib4f(Gr, oe.x, oe.y, oe.z, oe.w));
                        }
                        ue.elements ? qt.bindBuffer(34963, ue.elements.buffer.buffer) : qt.bindBuffer(34963, null);
                      }
                      Br.currentVAO = Nr;
                    }
                  }
                  function Ye() {
                    Vt(Or).forEach(function(Nr) {
                      Nr.destroy();
                    });
                  }
                  function rr() {
                    this.id = ++Dr, this.attributes = [], this.elements = null, this.ownsElements = !1, this.offset = this.count = 0, this.instances = -1, this.primitive = 4;
                    var Nr = De.oes_vertex_array_object;
                    this.vao = Nr ? Nr.createVertexArrayOES() : null, Or[this.id] = this, this.buffers = [];
                  }
                  function lr() {
                    De.oes_vertex_array_object && Vt(Or).forEach(function(Nr) {
                      Nr.refresh();
                    });
                  }
                  var hr = Je.maxAttributes, Sr = Array(hr);
                  for (Je = 0; Je < hr; ++Je) Sr[Je] = new O();
                  var Dr = 0, Or = {}, Br = {
                    Record: O,
                    scope: {},
                    state: Sr,
                    currentVAO: null,
                    targetVAO: null,
                    restore: De.oes_vertex_array_object ? lr : function() {
                    },
                    createVAO: function(Nr) {
                      function Xr(oe) {
                        var de;
                        Array.isArray(oe) ? (de = oe, Gr.elements && Gr.ownsElements && Gr.elements.destroy(), Gr.elements = null, Gr.ownsElements = !1, Gr.offset = 0, Gr.count = 0, Gr.instances = -1, Gr.primitive = 4) : (oe.elements ? (de = oe.elements, Gr.ownsElements ? (typeof de == "function" && de._reglType === "elements" ? Gr.elements.destroy() : Gr.elements(de), Gr.ownsElements = !1) : we.getElements(oe.elements) ? (Gr.elements = oe.elements, Gr.ownsElements = !1) : (Gr.elements = we.create(oe.elements), Gr.ownsElements = !0)) : (Gr.elements = null, Gr.ownsElements = !1), de = oe.attributes, Gr.offset = 0, Gr.count = -1, Gr.instances = -1, Gr.primitive = 4, Gr.elements && (Gr.count = Gr.elements._elements.vertCount, Gr.primitive = Gr.elements._elements.primType), "offset" in oe && (Gr.offset = oe.offset | 0), "count" in oe && (Gr.count = oe.count | 0), "instances" in oe && (Gr.instances = oe.instances | 0), "primitive" in oe && (Gr.primitive = ce[oe.primitive])), oe = {};
                        var or = Gr.attributes;
                        or.length = de.length;
                        for (var Er = 0; Er < de.length; ++Er) {
                          var Tr = de[Er], tr = or[Er] = new O(), yr = Tr.data || Tr;
                          if (Array.isArray(yr) || Qt(yr) || l(yr)) {
                            var Ir;
                            Gr.buffers[Er] && (Ir = Gr.buffers[Er], Qt(yr) && Ir._buffer.byteLength >= yr.byteLength ? Ir.subdata(yr) : (Ir.destroy(), Gr.buffers[Er] = null)), Gr.buffers[Er] || (Ir = Gr.buffers[Er] = qe.create(Tr, 34962, !1, !0)), tr.buffer = qe.getBuffer(Ir), tr.size = tr.buffer.dimension | 0, tr.normalized = !1, tr.type = tr.buffer.dtype, tr.offset = 0, tr.stride = 0, tr.divisor = 0, tr.state = 1, oe[Er] = 1;
                          } else qe.getBuffer(Tr) ? (tr.buffer = qe.getBuffer(Tr), tr.size = tr.buffer.dimension | 0, tr.normalized = !1, tr.type = tr.buffer.dtype, tr.offset = 0, tr.stride = 0, tr.divisor = 0, tr.state = 1) : qe.getBuffer(Tr.buffer) ? (tr.buffer = qe.getBuffer(Tr.buffer), tr.size = (+Tr.size || tr.buffer.dimension) | 0, tr.normalized = !!Tr.normalized || !1, tr.type = "type" in Tr ? Wt[Tr.type] : tr.buffer.dtype, tr.offset = (Tr.offset || 0) | 0, tr.stride = (Tr.stride || 0) | 0, tr.divisor = (Tr.divisor || 0) | 0, tr.state = 1) : "x" in Tr && (tr.x = +Tr.x || 0, tr.y = +Tr.y || 0, tr.z = +Tr.z || 0, tr.w = +Tr.w || 0, tr.state = 2);
                        }
                        for (Ir = 0; Ir < Gr.buffers.length; ++Ir) !oe[Ir] && Gr.buffers[Ir] && (Gr.buffers[Ir].destroy(), Gr.buffers[Ir] = null);
                        return Gr.refresh(), Xr;
                      }
                      var Gr = new rr();
                      return dr.vaoCount += 1, Xr.destroy = function() {
                        for (var oe = 0; oe < Gr.buffers.length; ++oe) Gr.buffers[oe] && Gr.buffers[oe].destroy();
                        Gr.buffers.length = 0, Gr.ownsElements && (Gr.elements.destroy(), Gr.elements = null, Gr.ownsElements = !1), Gr.destroy();
                      }, Xr._vao = Gr, Xr._reglType = "vao", Xr(Nr);
                    },
                    getVAO: function(Nr) {
                      return typeof Nr == "function" && Nr._vao ? Nr._vao : null;
                    },
                    destroyBuffer: function(Nr) {
                      for (var Xr = 0; Xr < Sr.length; ++Xr) {
                        var Gr = Sr[Xr];
                        Gr.buffer === Nr && (qt.disableVertexAttribArray(Xr), Gr.buffer = null);
                      }
                    },
                    setVAO: De.oes_vertex_array_object ? Pe : Ue,
                    clear: De.oes_vertex_array_object ? Ye : function() {
                    }
                  };
                  return rr.prototype.bindAttrs = function() {
                    for (var Nr = De.angle_instanced_arrays, Xr = this.attributes, Gr = 0; Gr < Xr.length; ++Gr) {
                      var oe = Xr[Gr];
                      oe.buffer ? (qt.enableVertexAttribArray(Gr), qt.bindBuffer(34962, oe.buffer.buffer), qt.vertexAttribPointer(Gr, oe.size, oe.type, oe.normalized, oe.stride, oe.offset), Nr && oe.divisor && Nr.vertexAttribDivisorANGLE(Gr, oe.divisor)) : (qt.disableVertexAttribArray(Gr), qt.vertexAttrib4f(Gr, oe.x, oe.y, oe.z, oe.w));
                    }
                    for (Nr = Xr.length; Nr < hr; ++Nr) qt.disableVertexAttribArray(Nr);
                    (Nr = we.getElements(this.elements)) ? qt.bindBuffer(34963, Nr.buffer.buffer) : qt.bindBuffer(34963, null);
                  }, rr.prototype.refresh = function() {
                    var Nr = De.oes_vertex_array_object;
                    Nr && (Nr.bindVertexArrayOES(this.vao), this.bindAttrs(), Br.currentVAO = null, Nr.bindVertexArrayOES(null));
                  }, rr.prototype.destroy = function() {
                    if (this.vao) {
                      var Nr = De.oes_vertex_array_object;
                      this === Br.currentVAO && (Br.currentVAO = null, Nr.bindVertexArrayOES(null)), Nr.deleteVertexArrayOES(this.vao), this.vao = null;
                    }
                    this.ownsElements && (this.elements.destroy(), this.elements = null, this.ownsElements = !1), Or[this.id] && (delete Or[this.id], --dr.vaoCount);
                  }, Br;
                }
                function V(qt, De, Je, dr) {
                  function qe(Dr, Or, Br, Nr) {
                    this.name = Dr, this.id = Or, this.location = Br, this.info = Nr;
                  }
                  function we(Dr, Or) {
                    for (var Br = 0; Br < Dr.length; ++Br) if (Dr[Br].id === Or.id) {
                      Dr[Br].location = Or.location;
                      return;
                    }
                    Dr.push(Or);
                  }
                  function ue(Dr, Or, Br) {
                    Br = Dr === 35632 ? Ye : rr;
                    var Nr = Br[Or];
                    if (!Nr) {
                      var Xr = De.str(Or), Nr = qt.createShader(Dr);
                      qt.shaderSource(Nr, Xr), qt.compileShader(Nr), Br[Or] = Nr;
                    }
                    return Nr;
                  }
                  function Pe(Dr, Or) {
                    this.id = Sr++, this.fragId = Dr, this.vertId = Or, this.program = null, this.uniforms = [], this.attributes = [], this.refCount = 1, dr.profile && (this.stats = { uniformsCount: 0, attributesCount: 0 });
                  }
                  function Ue(Dr, Or, Br) {
                    var Nr;
                    Nr = ue(35632, Dr.fragId);
                    var Xr = ue(35633, Dr.vertId);
                    if (Or = Dr.program = qt.createProgram(), qt.attachShader(Or, Nr), qt.attachShader(Or, Xr), Br) for (Nr = 0; Nr < Br.length; ++Nr) Xr = Br[Nr], qt.bindAttribLocation(Or, Xr[0], Xr[1]);
                    qt.linkProgram(Or), Xr = qt.getProgramParameter(Or, 35718), dr.profile && (Dr.stats.uniformsCount = Xr);
                    var Gr = Dr.uniforms;
                    for (Nr = 0; Nr < Xr; ++Nr) if (Br = qt.getActiveUniform(Or, Nr)) if (1 < Br.size) for (var oe = 0; oe < Br.size; ++oe) {
                      var de = Br.name.replace("[0]", "[" + oe + "]");
                      we(Gr, new qe(de, De.id(de), qt.getUniformLocation(Or, de), Br));
                    }
                    else we(Gr, new qe(Br.name, De.id(Br.name), qt.getUniformLocation(Or, Br.name), Br));
                    for (Xr = qt.getProgramParameter(Or, 35721), dr.profile && (Dr.stats.attributesCount = Xr), Dr = Dr.attributes, Nr = 0; Nr < Xr; ++Nr) (Br = qt.getActiveAttrib(Or, Nr)) && we(Dr, new qe(Br.name, De.id(Br.name), qt.getAttribLocation(Or, Br.name), Br));
                  }
                  var Ye = {}, rr = {}, lr = {}, hr = [], Sr = 0;
                  return dr.profile && (Je.getMaxUniformsCount = function() {
                    var Dr = 0;
                    return hr.forEach(function(Or) {
                      Or.stats.uniformsCount > Dr && (Dr = Or.stats.uniformsCount);
                    }), Dr;
                  }, Je.getMaxAttributesCount = function() {
                    var Dr = 0;
                    return hr.forEach(function(Or) {
                      Or.stats.attributesCount > Dr && (Dr = Or.stats.attributesCount);
                    }), Dr;
                  }), { clear: function() {
                    var Dr = qt.deleteShader.bind(qt);
                    Vt(Ye).forEach(Dr), Ye = {}, Vt(rr).forEach(Dr), rr = {}, hr.forEach(function(Or) {
                      qt.deleteProgram(Or.program);
                    }), hr.length = 0, lr = {}, Je.shaderCount = 0;
                  }, program: function(Dr, Or, Br, Nr) {
                    var Xr = lr[Or];
                    Xr || (Xr = lr[Or] = {});
                    var Gr = Xr[Dr];
                    if (Gr && (Gr.refCount++, !Nr)) return Gr;
                    var oe = new Pe(Or, Dr);
                    return Je.shaderCount++, Ue(oe, Br, Nr), Gr || (Xr[Dr] = oe), hr.push(oe), lt(oe, { destroy: function() {
                      if (oe.refCount--, 0 >= oe.refCount) {
                        qt.deleteProgram(oe.program);
                        var de = hr.indexOf(oe);
                        hr.splice(de, 1), Je.shaderCount--;
                      }
                      0 >= Xr[oe.vertId].refCount && (qt.deleteShader(rr[oe.vertId]), delete rr[oe.vertId], delete lr[oe.fragId][oe.vertId]), Object.keys(lr[oe.fragId]).length || (qt.deleteShader(Ye[oe.fragId]), delete Ye[oe.fragId], delete lr[oe.fragId]);
                    } });
                  }, restore: function() {
                    Ye = {}, rr = {};
                    for (var Dr = 0; Dr < hr.length; ++Dr) Ue(hr[Dr], null, hr[Dr].attributes.map(function(Or) {
                      return [Or.location, Or.name];
                    }));
                  }, shader: ue, frag: -1, vert: -1 };
                }
                function U(qt, De, Je, dr, qe, we, ue) {
                  function Pe(Ye) {
                    var rr;
                    rr = De.next === null ? 5121 : De.next.colorAttachments[0].texture._texture.type;
                    var lr = 0, hr = 0, Sr = dr.framebufferWidth, Dr = dr.framebufferHeight, Or = null;
                    return Qt(Ye) ? Or = Ye : Ye && (lr = Ye.x | 0, hr = Ye.y | 0, Sr = (Ye.width || dr.framebufferWidth - lr) | 0, Dr = (Ye.height || dr.framebufferHeight - hr) | 0, Or = Ye.data || null), Je(), Ye = Sr * Dr * 4, Or || (rr === 5121 ? Or = new Uint8Array(Ye) : rr === 5126 && (Or = Or || new Float32Array(Ye))), qt.pixelStorei(3333, 4), qt.readPixels(lr, hr, Sr, Dr, 6408, rr, Or), Or;
                  }
                  function Ue(Ye) {
                    var rr;
                    return De.setFBO({ framebuffer: Ye.framebuffer }, function() {
                      rr = Pe(Ye);
                    }), rr;
                  }
                  return function(Ye) {
                    return Ye && "framebuffer" in Ye ? Ue(Ye) : Pe(Ye);
                  };
                }
                function H(qt) {
                  for (var De = Array(qt.length >> 2), dr = 0; dr < De.length; dr++) De[dr] = 0;
                  for (dr = 0; dr < 8 * qt.length; dr += 8) De[dr >> 5] |= (qt.charCodeAt(dr / 8) & 255) << 24 - dr % 32;
                  var Je = 8 * qt.length;
                  qt = [
                    1779033703,
                    -1150833019,
                    1013904242,
                    -1521486534,
                    1359893119,
                    -1694144372,
                    528734635,
                    1541459225
                  ];
                  var dr = Array(64), qe, we, ue, Pe, Ue, Ye, rr, lr, hr, Sr, Dr;
                  for (De[Je >> 5] |= 128 << 24 - Je % 32, De[(Je + 64 >> 9 << 4) + 15] = Je, lr = 0; lr < De.length; lr += 16) {
                    for (Je = qt[0], qe = qt[1], we = qt[2], ue = qt[3], Pe = qt[4], Ue = qt[5], Ye = qt[6], rr = qt[7], hr = 0; 64 > hr; hr++) {
                      if (16 > hr) dr[hr] = De[hr + lr];
                      else {
                        Sr = hr, Dr = dr[hr - 2], Dr = q(Dr, 17) ^ q(Dr, 19) ^ Dr >>> 10, Dr = rt(Dr, dr[hr - 7]);
                        var Or;
                        Or = dr[hr - 15], Or = q(Or, 7) ^ q(Or, 18) ^ Or >>> 3, dr[Sr] = rt(rt(Dr, Or), dr[hr - 16]);
                      }
                      Sr = Pe, Sr = q(Sr, 6) ^ q(Sr, 11) ^ q(Sr, 25), Sr = rt(rt(rt(rt(rr, Sr), Pe & Ue ^ ~Pe & Ye), te[hr]), dr[hr]), rr = Je, rr = q(rr, 2) ^ q(rr, 13) ^ q(rr, 22), Dr = rt(rr, Je & qe ^ Je & we ^ qe & we), rr = Ye, Ye = Ue, Ue = Pe, Pe = rt(ue, Sr), ue = we, we = qe, qe = Je, Je = rt(Sr, Dr);
                    }
                    qt[0] = rt(Je, qt[0]), qt[1] = rt(qe, qt[1]), qt[2] = rt(we, qt[2]), qt[3] = rt(ue, qt[3]), qt[4] = rt(Pe, qt[4]), qt[5] = rt(Ue, qt[5]), qt[6] = rt(Ye, qt[6]), qt[7] = rt(rr, qt[7]);
                  }
                  for (De = "", dr = 0; dr < 32 * qt.length; dr += 8) De += String.fromCharCode(qt[dr >> 5] >>> 24 - dr % 32 & 255);
                  return De;
                }
                function F(qt) {
                  for (var De = "", Je, dr = 0; dr < qt.length; dr++) Je = qt.charCodeAt(dr), De += "0123456789abcdef".charAt(Je >>> 4 & 15) + "0123456789abcdef".charAt(Je & 15);
                  return De;
                }
                function G(qt) {
                  for (var De = "", Je = -1, dr, qe; ++Je < qt.length; ) dr = qt.charCodeAt(Je), qe = Je + 1 < qt.length ? qt.charCodeAt(Je + 1) : 0, 55296 <= dr && 56319 >= dr && 56320 <= qe && 57343 >= qe && (dr = 65536 + ((dr & 1023) << 10) + (qe & 1023), Je++), 127 >= dr ? De += String.fromCharCode(dr) : 2047 >= dr ? De += String.fromCharCode(192 | dr >>> 6 & 31, 128 | dr & 63) : 65535 >= dr ? De += String.fromCharCode(224 | dr >>> 12 & 15, 128 | dr >>> 6 & 63, 128 | dr & 63) : 2097151 >= dr && (De += String.fromCharCode(240 | dr >>> 18 & 7, 128 | dr >>> 12 & 63, 128 | dr >>> 6 & 63, 128 | dr & 63));
                  return De;
                }
                function q(qt, De) {
                  return qt >>> De | qt << 32 - De;
                }
                function rt(qt, De) {
                  var Je = (qt & 65535) + (De & 65535);
                  return (qt >> 16) + (De >> 16) + (Je >> 16) << 16 | Je & 65535;
                }
                function st(qt) {
                  return Array.prototype.slice.call(qt);
                }
                function vt(qt) {
                  return st(qt).join("");
                }
                function ht(qt) {
                  function De() {
                    var rr = [], lr = [];
                    return lt(function() {
                      rr.push.apply(rr, st(arguments));
                    }, { def: function() {
                      var hr = "v" + qe++;
                      return lr.push(hr), 0 < arguments.length && (rr.push(hr, "="), rr.push.apply(rr, st(arguments)), rr.push(";")), hr;
                    }, toString: function() {
                      return vt([0 < lr.length ? "var " + lr.join(",") + ";" : "", vt(rr)]);
                    } });
                  }
                  function Je() {
                    function rr(Or, Br) {
                      hr(Or, Br, "=", lr.def(Or, Br), ";");
                    }
                    var lr = De(), hr = De(), Sr = lr.toString, Dr = hr.toString;
                    return lt(function() {
                      lr.apply(lr, st(arguments));
                    }, { def: lr.def, entry: lr, exit: hr, save: rr, set: function(Or, Br, Nr) {
                      rr(Or, Br), lr(Or, Br, "=", Nr, ";");
                    }, toString: function() {
                      return Sr() + Dr();
                    } });
                  }
                  var dr = qt && qt.cache, qe = 0, we = [], ue = [], Pe = [], Ue = De(), Ye = {};
                  return {
                    global: Ue,
                    link: function(rr, lr) {
                      var hr = lr && lr.stable;
                      if (!hr) {
                        for (var Sr = 0; Sr < ue.length; ++Sr) if (ue[Sr] === rr && !Pe[Sr]) return we[Sr];
                      }
                      return Sr = "g" + qe++, we.push(Sr), ue.push(rr), Pe.push(hr), Sr;
                    },
                    block: De,
                    proc: function(rr, lr) {
                      function hr() {
                        var Br = "a" + Sr.length;
                        return Sr.push(Br), Br;
                      }
                      var Sr = [];
                      lr = lr || 0;
                      for (var Dr = 0; Dr < lr; ++Dr) hr();
                      var Dr = Je(), Or = Dr.toString;
                      return Ye[rr] = lt(Dr, { arg: hr, toString: function() {
                        return vt(["function(", Sr.join(), "){", Or(), "}"]);
                      } });
                    },
                    scope: Je,
                    cond: function() {
                      var rr = vt(arguments), lr = Je(), hr = Je(), Sr = lr.toString, Dr = hr.toString;
                      return lt(lr, { then: function() {
                        return lr.apply(lr, st(arguments)), this;
                      }, else: function() {
                        return hr.apply(hr, st(arguments)), this;
                      }, toString: function() {
                        var Or = Dr();
                        return Or && (Or = "else{" + Or + "}"), vt(["if(", rr, "){", Sr(), "}", Or]);
                      } });
                    },
                    compile: function() {
                      var rr = ['"use strict";', Ue, "return {"];
                      Object.keys(Ye).forEach(function(Sr) {
                        rr.push('"', Sr, '":', Ye[Sr].toString(), ",");
                      }), rr.push("}");
                      var lr = vt(rr).replace(/;/g, `;
`).replace(/}/g, `}
`).replace(
                        /{/g,
                        `{
`
                      ), hr;
                      return dr && (hr = F(H(G(lr))), dr[hr]) ? dr[hr].apply(null, ue) : (lr = Function.apply(null, we.concat(lr)), dr && (dr[hr] = lr), lr.apply(null, ue));
                    }
                  };
                }
                function et(qt) {
                  return Array.isArray(qt) || Qt(qt) || l(qt);
                }
                function Q(qt) {
                  return qt.sort(function(De, Je) {
                    return De === "viewport" ? -1 : Je === "viewport" ? 1 : De < Je ? -1 : 1;
                  });
                }
                function j(qt, De, Je, dr) {
                  this.thisDep = qt, this.contextDep = De, this.propDep = Je, this.append = dr;
                }
                function at(qt) {
                  return qt && !(qt.thisDep || qt.contextDep || qt.propDep);
                }
                function ut(qt) {
                  return new j(!1, !1, !1, qt);
                }
                function nt(qt, De) {
                  var Je = qt.type;
                  if (Je === 0) return Je = qt.data.length, new j(!0, 1 <= Je, 2 <= Je, De);
                  if (Je === 4) return Je = qt.data, new j(Je.thisDep, Je.contextDep, Je.propDep, De);
                  if (Je === 5) return new j(!1, !1, !1, De);
                  if (Je === 6) {
                    for (var dr = Je = !1, qe = !1, we = 0; we < qt.data.length; ++we) {
                      var ue = qt.data[we];
                      ue.type === 1 ? qe = !0 : ue.type === 2 ? dr = !0 : ue.type === 3 ? Je = !0 : ue.type === 0 ? (Je = !0, ue = ue.data, 1 <= ue && (dr = !0), 2 <= ue && (qe = !0)) : ue.type === 4 && (Je = Je || ue.data.thisDep, dr = dr || ue.data.contextDep, qe = qe || ue.data.propDep);
                    }
                    return new j(Je, dr, qe, De);
                  }
                  return new j(Je === 3, Je === 2, Je === 1, De);
                }
                function X(qt, De, Je, dr, qe, we, ue, Pe, Ue, Ye, rr, lr, hr, Sr, Dr, Or) {
                  function Br(Qr) {
                    return Qr.replace(
                      ".",
                      "_"
                    );
                  }
                  function Nr(Qr, pn, $r) {
                    var mn = Br(Qr);
                    Nn.push(Qr), mi[mn] = Fn[mn] = !!$r, di[mn] = pn;
                  }
                  function Xr(Qr, pn, $r) {
                    var mn = Br(Qr);
                    Nn.push(Qr), Array.isArray($r) ? (Fn[mn] = $r.slice(), mi[mn] = $r.slice()) : Fn[mn] = mi[mn] = $r, Ai[mn] = pn;
                  }
                  function Gr() {
                    var Qr = ht({ cache: Dr }), pn = Qr.link, $r = Qr.global;
                    Qr.id = Ca++, Qr.batchId = "0";
                    var mn = pn(Gi), Wn = Qr.shared = { props: "a0" };
                    Object.keys(Gi).forEach(function(Sn) {
                      Wn[Sn] = $r.def(mn, ".", Sn);
                    });
                    var yi = Qr.next = {}, ei = Qr.current = {};
                    Object.keys(Ai).forEach(function(Sn) {
                      Array.isArray(Fn[Sn]) && (yi[Sn] = $r.def(Wn.next, ".", Sn), ei[Sn] = $r.def(Wn.current, ".", Sn));
                    });
                    var Jn = Qr.constants = {};
                    Object.keys(ia).forEach(function(Sn) {
                      Jn[Sn] = $r.def(JSON.stringify(ia[Sn]));
                    }), Qr.invoke = function(Sn, wn) {
                      switch (wn.type) {
                        case 0:
                          var Dn = ["this", Wn.context, Wn.props, Qr.batchId];
                          return Sn.def(pn(wn.data), ".call(", Dn.slice(0, Math.max(wn.data.length + 1, 4)), ")");
                        case 1:
                          return Sn.def(Wn.props, wn.data);
                        case 2:
                          return Sn.def(Wn.context, wn.data);
                        case 3:
                          return Sn.def("this", wn.data);
                        case 4:
                          return wn.data.append(Qr, Sn), wn.data.ref;
                        case 5:
                          return wn.data.toString();
                        case 6:
                          return wn.data.map(function(li) {
                            return Qr.invoke(Sn, li);
                          });
                      }
                    }, Qr.attribCache = {};
                    var en = {};
                    return Qr.scopeAttrib = function(Sn) {
                      if (Sn = De.id(Sn), Sn in en) return en[Sn];
                      var wn = Ye.scope[Sn];
                      return wn || (wn = Ye.scope[Sn] = new Ji()), en[Sn] = pn(wn);
                    }, Qr;
                  }
                  function oe(Qr) {
                    var pn = Qr.static;
                    Qr = Qr.dynamic;
                    var $r;
                    if ("profile" in pn) {
                      var mn = !!pn.profile;
                      $r = ut(function(yi, ei) {
                        return mn;
                      }), $r.enable = mn;
                    } else if ("profile" in Qr) {
                      var Wn = Qr.profile;
                      $r = nt(Wn, function(yi, ei) {
                        return yi.invoke(ei, Wn);
                      });
                    }
                    return $r;
                  }
                  function de(Qr, pn) {
                    var $r = Qr.static, mn = Qr.dynamic;
                    if ("framebuffer" in $r) {
                      var Wn = $r.framebuffer;
                      return Wn ? (Wn = Pe.getFramebuffer(Wn), ut(function(ei, Jn) {
                        var en = ei.link(Wn), Sn = ei.shared;
                        return Jn.set(Sn.framebuffer, ".next", en), Sn = Sn.context, Jn.set(Sn, ".framebufferWidth", en + ".width"), Jn.set(Sn, ".framebufferHeight", en + ".height"), en;
                      })) : ut(function(ei, Jn) {
                        var en = ei.shared;
                        return Jn.set(en.framebuffer, ".next", "null"), en = en.context, Jn.set(en, ".framebufferWidth", en + ".drawingBufferWidth"), Jn.set(en, ".framebufferHeight", en + ".drawingBufferHeight"), "null";
                      });
                    }
                    if ("framebuffer" in mn) {
                      var yi = mn.framebuffer;
                      return nt(yi, function(ei, Jn) {
                        var wn = ei.invoke(Jn, yi), en = ei.shared, Sn = en.framebuffer, wn = Jn.def(Sn, ".getFramebuffer(", wn, ")");
                        return Jn.set(
                          Sn,
                          ".next",
                          wn
                        ), en = en.context, Jn.set(en, ".framebufferWidth", wn + "?" + wn + ".width:" + en + ".drawingBufferWidth"), Jn.set(en, ".framebufferHeight", wn + "?" + wn + ".height:" + en + ".drawingBufferHeight"), wn;
                      });
                    }
                    return null;
                  }
                  function or(Qr, pn, $r) {
                    function mn(Jn) {
                      if (Jn in Wn) {
                        var en = Wn[Jn];
                        Jn = !0;
                        var Sn = en.x | 0, wn = en.y | 0, Dn, li;
                        return "width" in en ? Dn = en.width | 0 : Jn = !1, "height" in en ? li = en.height | 0 : Jn = !1, new j(!Jn && pn && pn.thisDep, !Jn && pn && pn.contextDep, !Jn && pn && pn.propDep, function(_i, Ti) {
                          var bi = _i.shared.context, ki = Dn;
                          "width" in en || (ki = Ti.def(bi, ".", "framebufferWidth", "-", Sn));
                          var Bi = li;
                          return "height" in en || (Bi = Ti.def(bi, ".", "framebufferHeight", "-", wn)), [Sn, wn, ki, Bi];
                        });
                      }
                      if (Jn in yi) {
                        var fi = yi[Jn];
                        return Jn = nt(fi, function(_i, Ti) {
                          var Ea = _i.invoke(Ti, fi), bi = _i.shared.context, ki = Ti.def(Ea, ".x|0"), Bi = Ti.def(Ea, ".y|0"), ra = Ti.def('"width" in ', Ea, "?", Ea, ".width|0:", "(", bi, ".", "framebufferWidth", "-", ki, ")"), Ea = Ti.def('"height" in ', Ea, "?", Ea, ".height|0:", "(", bi, ".", "framebufferHeight", "-", Bi, ")");
                          return [ki, Bi, ra, Ea];
                        }), pn && (Jn.thisDep = Jn.thisDep || pn.thisDep, Jn.contextDep = Jn.contextDep || pn.contextDep, Jn.propDep = Jn.propDep || pn.propDep), Jn;
                      }
                      return pn ? new j(pn.thisDep, pn.contextDep, pn.propDep, function(_i, Ti) {
                        var bi = _i.shared.context;
                        return [0, 0, Ti.def(bi, ".", "framebufferWidth"), Ti.def(bi, ".", "framebufferHeight")];
                      }) : null;
                    }
                    var Wn = Qr.static, yi = Qr.dynamic;
                    if (Qr = mn("viewport")) {
                      var ei = Qr;
                      Qr = new j(Qr.thisDep, Qr.contextDep, Qr.propDep, function(Jn, en) {
                        var Sn = ei.append(Jn, en), wn = Jn.shared.context;
                        return en.set(wn, ".viewportWidth", Sn[2]), en.set(wn, ".viewportHeight", Sn[3]), Sn;
                      });
                    }
                    return { viewport: Qr, scissor_box: mn("scissor.box") };
                  }
                  function Er(Qr, pn) {
                    var $r = Qr.static;
                    if (typeof $r.frag == "string" && typeof $r.vert == "string") {
                      if (0 < Object.keys(pn.dynamic).length) return null;
                      var $r = pn.static, mn = Object.keys($r);
                      if (0 < mn.length && typeof $r[mn[0]] == "number") {
                        for (var Wn = [], yi = 0; yi < mn.length; ++yi) Wn.push([$r[mn[yi]] | 0, mn[yi]]);
                        return Wn;
                      }
                    }
                    return null;
                  }
                  function Tr(Qr, pn, $r) {
                    function mn(Sn) {
                      if (Sn in Wn) {
                        var wn = De.id(Wn[Sn]);
                        return Sn = ut(function() {
                          return wn;
                        }), Sn.id = wn, Sn;
                      }
                      if (Sn in yi) {
                        var Dn = yi[Sn];
                        return nt(Dn, function(li, fi) {
                          var _i = li.invoke(fi, Dn);
                          return fi.def(li.shared.strings, ".id(", _i, ")");
                        });
                      }
                      return null;
                    }
                    var Wn = Qr.static, yi = Qr.dynamic, ei = mn("frag"), Jn = mn("vert"), en = null;
                    return at(ei) && at(Jn) ? (en = rr.program(Jn.id, ei.id, null, $r), Qr = ut(function(Sn, wn) {
                      return Sn.link(en);
                    })) : Qr = new j(ei && ei.thisDep || Jn && Jn.thisDep, ei && ei.contextDep || Jn && Jn.contextDep, ei && ei.propDep || Jn && Jn.propDep, function(Sn, wn) {
                      var Dn = Sn.shared.shader, li;
                      li = ei ? ei.append(Sn, wn) : wn.def(Dn, ".", "frag");
                      var fi;
                      return fi = Jn ? Jn.append(Sn, wn) : wn.def(Dn, ".", "vert"), wn.def(Dn + ".program(" + fi + "," + li + ")");
                    }), { frag: ei, vert: Jn, progVar: Qr, program: en };
                  }
                  function tr(Qr, pn) {
                    function $r(_i, Ti) {
                      if (_i in mn) {
                        var bi = mn[_i] | 0;
                        return Ti ? yi.offset = bi : yi.instances = bi, ut(function(Bi, ra) {
                          return Ti && (Bi.OFFSET = bi), bi;
                        });
                      }
                      if (_i in Wn) {
                        var ki = Wn[_i];
                        return nt(ki, function(Bi, ra) {
                          var Ea = Bi.invoke(ra, ki);
                          return Ti && (Bi.OFFSET = Ea), Ea;
                        });
                      }
                      if (Ti) {
                        if (en) return ut(function(Bi, ra) {
                          return Bi.OFFSET = 0;
                        });
                        if (ei) return new j(Jn.thisDep, Jn.contextDep, Jn.propDep, function(Bi, ra) {
                          return ra.def(Bi.shared.vao + ".currentVAO?" + Bi.shared.vao + ".currentVAO.offset:0");
                        });
                      } else if (ei) return new j(Jn.thisDep, Jn.contextDep, Jn.propDep, function(Bi, ra) {
                        return ra.def(Bi.shared.vao + ".currentVAO?" + Bi.shared.vao + ".currentVAO.instances:-1");
                      });
                      return null;
                    }
                    var mn = Qr.static, Wn = Qr.dynamic, yi = {}, ei = !1, Jn = function() {
                      if ("vao" in mn) {
                        var _i = mn.vao;
                        return _i !== null && Ye.getVAO(_i) === null && (_i = Ye.createVAO(_i)), ei = !0, yi.vao = _i, ut(function(bi) {
                          var ki = Ye.getVAO(_i);
                          return ki ? bi.link(ki) : "null";
                        });
                      }
                      if ("vao" in Wn) {
                        ei = !0;
                        var Ti = Wn.vao;
                        return nt(Ti, function(bi, ki) {
                          var Bi = bi.invoke(ki, Ti);
                          return ki.def(bi.shared.vao + ".getVAO(" + Bi + ")");
                        });
                      }
                      return null;
                    }(), en = !1, Sn = function() {
                      if ("elements" in mn) {
                        var _i = mn.elements;
                        if (yi.elements = _i, et(_i)) {
                          var Ti = yi.elements = we.create(_i, !0), _i = we.getElements(Ti);
                          en = !0;
                        } else _i && (_i = we.getElements(_i), en = !0);
                        return Ti = ut(function(ki, Bi) {
                          if (_i) {
                            var ra = ki.link(_i);
                            return ki.ELEMENTS = ra;
                          }
                          return ki.ELEMENTS = null;
                        }), Ti.value = _i, Ti;
                      }
                      if ("elements" in Wn) {
                        en = !0;
                        var bi = Wn.elements;
                        return nt(bi, function(ki, Bi) {
                          var ra = ki.shared, Io = ra.isBufferArgs, ra = ra.elements, go = ki.invoke(Bi, bi), Ea = Bi.def("null"), Io = Bi.def(Io, "(", go, ")"), go = ki.cond(Io).then(Ea, "=", ra, ".createStream(", go, ");").else(Ea, "=", ra, ".getElements(", go, ");");
                          return Bi.entry(go), Bi.exit(ki.cond(Io).then(ra, ".destroyStream(", Ea, ");")), ki.ELEMENTS = Ea;
                        });
                      }
                      return ei ? new j(Jn.thisDep, Jn.contextDep, Jn.propDep, function(ki, Bi) {
                        return Bi.def(ki.shared.vao + ".currentVAO?" + ki.shared.elements + ".getElements(" + ki.shared.vao + ".currentVAO.elements):null");
                      }) : null;
                    }(), wn = $r("offset", !0), Dn = function() {
                      if ("primitive" in mn) {
                        var _i = mn.primitive;
                        return yi.primitive = _i, ut(function(bi, ki) {
                          return ce[_i];
                        });
                      }
                      if ("primitive" in Wn) {
                        var Ti = Wn.primitive;
                        return nt(Ti, function(bi, ki) {
                          var Bi = bi.constants.primTypes, ra = bi.invoke(ki, Ti);
                          return ki.def(Bi, "[", ra, "]");
                        });
                      }
                      return en ? at(Sn) ? Sn.value ? ut(function(bi, ki) {
                        return ki.def(bi.ELEMENTS, ".primType");
                      }) : ut(function() {
                        return 4;
                      }) : new j(
                        Sn.thisDep,
                        Sn.contextDep,
                        Sn.propDep,
                        function(bi, ki) {
                          var Bi = bi.ELEMENTS;
                          return ki.def(Bi, "?", Bi, ".primType:", 4);
                        }
                      ) : ei ? new j(Jn.thisDep, Jn.contextDep, Jn.propDep, function(bi, ki) {
                        return ki.def(bi.shared.vao + ".currentVAO?" + bi.shared.vao + ".currentVAO.primitive:4");
                      }) : null;
                    }(), li = function() {
                      if ("count" in mn) {
                        var _i = mn.count | 0;
                        return yi.count = _i, ut(function() {
                          return _i;
                        });
                      }
                      if ("count" in Wn) {
                        var Ti = Wn.count;
                        return nt(Ti, function(bi, ki) {
                          return bi.invoke(ki, Ti);
                        });
                      }
                      return en ? at(Sn) ? Sn ? wn ? new j(wn.thisDep, wn.contextDep, wn.propDep, function(bi, ki) {
                        return ki.def(bi.ELEMENTS, ".vertCount-", bi.OFFSET);
                      }) : ut(function(bi, ki) {
                        return ki.def(bi.ELEMENTS, ".vertCount");
                      }) : ut(function() {
                        return -1;
                      }) : new j(Sn.thisDep || wn.thisDep, Sn.contextDep || wn.contextDep, Sn.propDep || wn.propDep, function(bi, ki) {
                        var Bi = bi.ELEMENTS;
                        return bi.OFFSET ? ki.def(Bi, "?", Bi, ".vertCount-", bi.OFFSET, ":-1") : ki.def(Bi, "?", Bi, ".vertCount:-1");
                      }) : ei ? new j(Jn.thisDep, Jn.contextDep, Jn.propDep, function(bi, ki) {
                        return ki.def(bi.shared.vao, ".currentVAO?", bi.shared.vao, ".currentVAO.count:-1");
                      }) : null;
                    }(), fi = $r("instances", !1);
                    return {
                      elements: Sn,
                      primitive: Dn,
                      count: li,
                      instances: fi,
                      offset: wn,
                      vao: Jn,
                      vaoActive: ei,
                      elementsActive: en,
                      static: yi
                    };
                  }
                  function yr(Qr, pn) {
                    var $r = Qr.static, mn = Qr.dynamic, Wn = {};
                    return Nn.forEach(function(yi) {
                      function ei(en, Sn) {
                        if (yi in $r) {
                          var wn = en($r[yi]);
                          Wn[Jn] = ut(function() {
                            return wn;
                          });
                        } else if (yi in mn) {
                          var Dn = mn[yi];
                          Wn[Jn] = nt(Dn, function(li, fi) {
                            return Sn(li, fi, li.invoke(fi, Dn));
                          });
                        }
                      }
                      var Jn = Br(yi);
                      switch (yi) {
                        case "cull.enable":
                        case "blend.enable":
                        case "dither":
                        case "stencil.enable":
                        case "depth.enable":
                        case "scissor.enable":
                        case "polygonOffset.enable":
                        case "sample.alpha":
                        case "sample.enable":
                        case "depth.mask":
                          return ei(
                            function(en) {
                              return en;
                            },
                            function(en, Sn, wn) {
                              return wn;
                            }
                          );
                        case "depth.func":
                          return ei(function(en) {
                            return mr[en];
                          }, function(en, Sn, wn) {
                            return Sn.def(en.constants.compareFuncs, "[", wn, "]");
                          });
                        case "depth.range":
                          return ei(function(en) {
                            return en;
                          }, function(en, Sn, wn) {
                            return en = Sn.def("+", wn, "[0]"), Sn = Sn.def("+", wn, "[1]"), [en, Sn];
                          });
                        case "blend.func":
                          return ei(function(en) {
                            return [ir["srcRGB" in en ? en.srcRGB : en.src], ir["dstRGB" in en ? en.dstRGB : en.dst], ir["srcAlpha" in en ? en.srcAlpha : en.src], ir["dstAlpha" in en ? en.dstAlpha : en.dst]];
                          }, function(en, Sn, wn) {
                            function Dn(Ti, bi) {
                              return Sn.def(
                                '"',
                                Ti,
                                bi,
                                '" in ',
                                wn,
                                "?",
                                wn,
                                ".",
                                Ti,
                                bi,
                                ":",
                                wn,
                                ".",
                                Ti
                              );
                            }
                            en = en.constants.blendFuncs;
                            var li = Dn("src", "RGB"), _i = Dn("dst", "RGB"), li = Sn.def(en, "[", li, "]"), fi = Sn.def(en, "[", Dn("src", "Alpha"), "]"), _i = Sn.def(en, "[", _i, "]");
                            return en = Sn.def(en, "[", Dn("dst", "Alpha"), "]"), [li, _i, fi, en];
                          });
                        case "blend.equation":
                          return ei(function(en) {
                            if (typeof en == "string") return [ci[en], ci[en]];
                            if (typeof en == "object") return [ci[en.rgb], ci[en.alpha]];
                          }, function(en, Sn, wn) {
                            var Dn = en.constants.blendEquations, li = Sn.def(), fi = Sn.def();
                            return en = en.cond("typeof ", wn, '==="string"'), en.then(
                              li,
                              "=",
                              fi,
                              "=",
                              Dn,
                              "[",
                              wn,
                              "];"
                            ), en.else(li, "=", Dn, "[", wn, ".rgb];", fi, "=", Dn, "[", wn, ".alpha];"), Sn(en), [li, fi];
                          });
                        case "blend.color":
                          return ei(function(en) {
                            return r(4, function(Sn) {
                              return +en[Sn];
                            });
                          }, function(en, Sn, wn) {
                            return r(4, function(Dn) {
                              return Sn.def("+", wn, "[", Dn, "]");
                            });
                          });
                        case "stencil.mask":
                          return ei(function(en) {
                            return en | 0;
                          }, function(en, Sn, wn) {
                            return Sn.def(wn, "|0");
                          });
                        case "stencil.func":
                          return ei(function(en) {
                            return [mr[en.cmp || "keep"], en.ref || 0, "mask" in en ? en.mask : -1];
                          }, function(en, Sn, wn) {
                            en = Sn.def(
                              '"cmp" in ',
                              wn,
                              "?",
                              en.constants.compareFuncs,
                              "[",
                              wn,
                              ".cmp]",
                              ":",
                              7680
                            );
                            var Dn = Sn.def(wn, ".ref|0");
                            return Sn = Sn.def('"mask" in ', wn, "?", wn, ".mask|0:-1"), [en, Dn, Sn];
                          });
                        case "stencil.opFront":
                        case "stencil.opBack":
                          return ei(function(en) {
                            return [yi === "stencil.opBack" ? 1029 : 1028, Xe[en.fail || "keep"], Xe[en.zfail || "keep"], Xe[en.zpass || "keep"]];
                          }, function(en, Sn, wn) {
                            function Dn(fi) {
                              return Sn.def('"', fi, '" in ', wn, "?", li, "[", wn, ".", fi, "]:", 7680);
                            }
                            var li = en.constants.stencilOps;
                            return [yi === "stencil.opBack" ? 1029 : 1028, Dn("fail"), Dn("zfail"), Dn("zpass")];
                          });
                        case "polygonOffset.offset":
                          return ei(function(en) {
                            return [en.factor | 0, en.units | 0];
                          }, function(en, Sn, wn) {
                            return en = Sn.def(wn, ".factor|0"), Sn = Sn.def(wn, ".units|0"), [en, Sn];
                          });
                        case "cull.face":
                          return ei(function(en) {
                            var Sn = 0;
                            return en === "front" ? Sn = 1028 : en === "back" && (Sn = 1029), Sn;
                          }, function(en, Sn, wn) {
                            return Sn.def(wn, '==="front"?', 1028, ":", 1029);
                          });
                        case "lineWidth":
                          return ei(function(en) {
                            return en;
                          }, function(en, Sn, wn) {
                            return wn;
                          });
                        case "frontFace":
                          return ei(function(en) {
                            return xe[en];
                          }, function(en, Sn, wn) {
                            return Sn.def(wn + '==="cw"?2304:2305');
                          });
                        case "colorMask":
                          return ei(
                            function(en) {
                              return en.map(function(Sn) {
                                return !!Sn;
                              });
                            },
                            function(en, Sn, wn) {
                              return r(4, function(Dn) {
                                return "!!" + wn + "[" + Dn + "]";
                              });
                            }
                          );
                        case "sample.coverage":
                          return ei(function(en) {
                            return ["value" in en ? en.value : 1, !!en.invert];
                          }, function(en, Sn, wn) {
                            return en = Sn.def('"value" in ', wn, "?+", wn, ".value:1"), Sn = Sn.def("!!", wn, ".invert"), [en, Sn];
                          });
                      }
                    }), Wn;
                  }
                  function Ir(Qr, pn) {
                    var $r = Qr.static, mn = Qr.dynamic, Wn = {};
                    return Object.keys($r).forEach(function(yi) {
                      var ei = $r[yi], Jn;
                      if (typeof ei == "number" || typeof ei == "boolean") Jn = ut(function() {
                        return ei;
                      });
                      else if (typeof ei == "function") {
                        var en = ei._reglType;
                        en === "texture2d" || en === "textureCube" ? Jn = ut(function(Sn) {
                          return Sn.link(ei);
                        }) : (en === "framebuffer" || en === "framebufferCube") && (Jn = ut(function(Sn) {
                          return Sn.link(ei.color[0]);
                        }));
                      } else S(ei) && (Jn = ut(function(Sn) {
                        return Sn.global.def("[", r(ei.length, function(wn) {
                          return ei[wn];
                        }), "]");
                      }));
                      Jn.value = ei, Wn[yi] = Jn;
                    }), Object.keys(mn).forEach(function(yi) {
                      var ei = mn[yi];
                      Wn[yi] = nt(ei, function(Jn, en) {
                        return Jn.invoke(en, ei);
                      });
                    }), Wn;
                  }
                  function Cr(Qr, pn) {
                    var $r = Qr.static, mn = Qr.dynamic, Wn = {};
                    return Object.keys($r).forEach(function(yi) {
                      var ei = $r[yi], Jn = De.id(yi), en = new Ji();
                      if (et(ei)) en.state = 1, en.buffer = qe.getBuffer(qe.create(ei, 34962, !1, !0)), en.type = 0;
                      else {
                        var Sn = qe.getBuffer(ei);
                        if (Sn) en.state = 1, en.buffer = Sn, en.type = 0;
                        else if ("constant" in ei) {
                          var wn = ei.constant;
                          en.buffer = "null", en.state = 2, typeof wn == "number" ? en.x = wn : fe.forEach(function(bi, ki) {
                            ki < wn.length && (en[bi] = wn[ki]);
                          });
                        } else {
                          var Sn = et(ei.buffer) ? qe.getBuffer(qe.create(ei.buffer, 34962, !1, !0)) : qe.getBuffer(ei.buffer), Dn = ei.offset | 0, li = ei.stride | 0, fi = ei.size | 0, _i = !!ei.normalized, Ti = 0;
                          "type" in ei && (Ti = Wt[ei.type]), ei = ei.divisor | 0, en.buffer = Sn, en.state = 1, en.size = fi, en.normalized = _i, en.type = Ti || Sn.dtype, en.offset = Dn, en.stride = li, en.divisor = ei;
                        }
                      }
                      Wn[yi] = ut(function(bi, ki) {
                        var Bi = bi.attribCache;
                        if (Jn in Bi) return Bi[Jn];
                        var ra = { isStream: !1 };
                        return Object.keys(en).forEach(function(Ea) {
                          ra[Ea] = en[Ea];
                        }), en.buffer && (ra.buffer = bi.link(en.buffer), ra.type = ra.type || ra.buffer + ".dtype"), Bi[Jn] = ra;
                      });
                    }), Object.keys(mn).forEach(function(yi) {
                      var ei = mn[yi];
                      Wn[yi] = nt(ei, function(Jn, en) {
                        function Sn(Bi) {
                          en(_i[Bi], "=", wn, ".", Bi, "|0;");
                        }
                        var wn = Jn.invoke(en, ei), fi = Jn.shared, Dn = Jn.constants, li = fi.isBufferArgs, fi = fi.buffer, _i = { isStream: en.def(!1) }, Ti = new Ji();
                        Ti.state = 1, Object.keys(Ti).forEach(function(Bi) {
                          _i[Bi] = en.def("" + Ti[Bi]);
                        });
                        var bi = _i.buffer, ki = _i.type;
                        return en(
                          "if(",
                          li,
                          "(",
                          wn,
                          ")){",
                          _i.isStream,
                          "=true;",
                          bi,
                          "=",
                          fi,
                          ".createStream(",
                          34962,
                          ",",
                          wn,
                          ");",
                          ki,
                          "=",
                          bi,
                          ".dtype;",
                          "}else{",
                          bi,
                          "=",
                          fi,
                          ".getBuffer(",
                          wn,
                          ");",
                          "if(",
                          bi,
                          "){",
                          ki,
                          "=",
                          bi,
                          ".dtype;",
                          '}else if("constant" in ',
                          wn,
                          "){",
                          _i.state,
                          "=",
                          2,
                          ";",
                          "if(typeof " + wn + '.constant === "number"){',
                          _i[fe[0]],
                          "=",
                          wn,
                          ".constant;",
                          fe.slice(1).map(function(Bi) {
                            return _i[Bi];
                          }).join("="),
                          "=0;",
                          "}else{",
                          fe.map(function(Bi, ra) {
                            return _i[Bi] + "=" + wn + ".constant.length>" + ra + "?" + wn + ".constant[" + ra + "]:0;";
                          }).join(""),
                          "}}else{",
                          "if(",
                          li,
                          "(",
                          wn,
                          ".buffer)){",
                          bi,
                          "=",
                          fi,
                          ".createStream(",
                          34962,
                          ",",
                          wn,
                          ".buffer);",
                          "}else{",
                          bi,
                          "=",
                          fi,
                          ".getBuffer(",
                          wn,
                          ".buffer);",
                          "}",
                          ki,
                          '="type" in ',
                          wn,
                          "?",
                          Dn.glTypes,
                          "[",
                          wn,
                          ".type]:",
                          bi,
                          ".dtype;",
                          _i.normalized,
                          "=!!",
                          wn,
                          ".normalized;"
                        ), Sn("size"), Sn("offset"), Sn("stride"), Sn("divisor"), en("}}"), en.exit("if(", _i.isStream, "){", fi, ".destroyStream(", bi, ");", "}"), _i;
                      });
                    }), Wn;
                  }
                  function _r(Qr) {
                    var pn = Qr.static, $r = Qr.dynamic, mn = {};
                    return Object.keys(pn).forEach(function(Wn) {
                      var yi = pn[Wn];
                      mn[Wn] = ut(function(ei, Jn) {
                        return typeof yi == "number" || typeof yi == "boolean" ? "" + yi : ei.link(yi);
                      });
                    }), Object.keys($r).forEach(function(Wn) {
                      var yi = $r[Wn];
                      mn[Wn] = nt(yi, function(ei, Jn) {
                        return ei.invoke(Jn, yi);
                      });
                    }), mn;
                  }
                  function Zr(Qr, pn, $r, mn, Wn) {
                    function yi(Ti) {
                      var bi = Jn[Ti];
                      bi && (Sn[Ti] = bi);
                    }
                    var ei = Er(Qr, pn), li = de(Qr), Jn = or(Qr, li), en = tr(Qr), Sn = yr(Qr), wn = Tr(Qr, Wn, ei);
                    yi("viewport"), yi(Br("scissor.box"));
                    var Dn = 0 < Object.keys(Sn).length, li = { framebuffer: li, draw: en, shader: wn, state: Sn, dirty: Dn, scopeVAO: null, drawVAO: null, useVAO: !1, attributes: {} };
                    if (li.profile = oe(Qr), li.uniforms = Ir($r), li.drawVAO = li.scopeVAO = en.vao, !li.drawVAO && wn.program && !ei && Je.angle_instanced_arrays && en.static.elements) {
                      var fi = !0;
                      if (Qr = wn.program.attributes.map(function(Ti) {
                        return Ti = pn.static[Ti], fi = fi && !!Ti, Ti;
                      }), fi && 0 < Qr.length) {
                        var _i = Ye.getVAO(Ye.createVAO({ attributes: Qr, elements: en.static.elements }));
                        li.drawVAO = new j(null, null, null, function(Ti, bi) {
                          return Ti.link(_i);
                        }), li.useVAO = !0;
                      }
                    }
                    return ei ? li.useVAO = !0 : li.attributes = Cr(pn), li.context = _r(mn), li;
                  }
                  function ln(Qr, pn, $r) {
                    var mn = Qr.shared.context, Wn = Qr.scope();
                    Object.keys($r).forEach(function(yi) {
                      pn.save(mn, "." + yi);
                      var ei = $r[yi].append(
                        Qr,
                        pn
                      );
                      Array.isArray(ei) ? Wn(mn, ".", yi, "=[", ei.join(), "];") : Wn(mn, ".", yi, "=", ei, ";");
                    }), pn(Wn);
                  }
                  function Jr(Qr, pn, $r, mn) {
                    var Jn = Qr.shared, Wn = Jn.gl, yi = Jn.framebuffer, ei;
                    Cn && (ei = pn.def(Jn.extensions, ".webgl_draw_buffers"));
                    var en = Qr.constants, Jn = en.drawBuffer, en = en.backBuffer;
                    Qr = $r ? $r.append(Qr, pn) : pn.def(yi, ".next"), mn || pn("if(", Qr, "!==", yi, ".cur){"), pn("if(", Qr, "){", Wn, ".bindFramebuffer(", 36160, ",", Qr, ".framebuffer);"), Cn && pn(ei, ".drawBuffersWEBGL(", Jn, "[", Qr, ".colorAttachments.length]);"), pn("}else{", Wn, ".bindFramebuffer(", 36160, ",null);"), Cn && pn(
                      ei,
                      ".drawBuffersWEBGL(",
                      en,
                      ");"
                    ), pn("}", yi, ".cur=", Qr, ";"), mn || pn("}");
                  }
                  function Zn(Qr, pn, $r) {
                    var mn = Qr.shared, Wn = mn.gl, yi = Qr.current, ei = Qr.next, Jn = mn.current, en = mn.next, Sn = Qr.cond(Jn, ".dirty");
                    Nn.forEach(function(wn) {
                      if (wn = Br(wn), !(wn in $r.state)) {
                        var Dn, li;
                        if (wn in ei) {
                          Dn = ei[wn], li = yi[wn];
                          var fi = r(Fn[wn].length, function(_i) {
                            return Sn.def(Dn, "[", _i, "]");
                          });
                          Sn(Qr.cond(fi.map(function(_i, Ti) {
                            return _i + "!==" + li + "[" + Ti + "]";
                          }).join("||")).then(Wn, ".", Ai[wn], "(", fi, ");", fi.map(function(_i, Ti) {
                            return li + "[" + Ti + "]=" + _i;
                          }).join(";"), ";"));
                        } else Dn = Sn.def(en, ".", wn), fi = Qr.cond(Dn, "!==", Jn, ".", wn), Sn(fi), wn in di ? fi(Qr.cond(Dn).then(Wn, ".enable(", di[wn], ");").else(Wn, ".disable(", di[wn], ");"), Jn, ".", wn, "=", Dn, ";") : fi(Wn, ".", Ai[wn], "(", Dn, ");", Jn, ".", wn, "=", Dn, ";");
                      }
                    }), Object.keys($r.state).length === 0 && Sn(Jn, ".dirty=false;"), pn(Sn);
                  }
                  function fn(Qr, pn, $r, mn) {
                    var Wn = Qr.shared, yi = Qr.current, ei = Wn.current, Jn = Wn.gl, en;
                    Q(Object.keys($r)).forEach(function(Sn) {
                      var wn = $r[Sn];
                      if (!mn || mn(wn)) {
                        var Dn = wn.append(Qr, pn);
                        if (di[Sn]) {
                          var li = di[Sn];
                          at(wn) ? (en = Qr.link(Dn, { stable: !0 }), pn(Qr.cond(en).then(Jn, ".enable(", li, ");").else(Jn, ".disable(", li, ");")), pn(ei, ".", Sn, "=", en, ";")) : (pn(Qr.cond(Dn).then(
                            Jn,
                            ".enable(",
                            li,
                            ");"
                          ).else(Jn, ".disable(", li, ");")), pn(ei, ".", Sn, "=", Dn, ";"));
                        } else if (S(Dn)) {
                          var fi = yi[Sn];
                          pn(Jn, ".", Ai[Sn], "(", Dn, ");", Dn.map(function(_i, Ti) {
                            return fi + "[" + Ti + "]=" + _i;
                          }).join(";"), ";");
                        } else at(wn) ? (en = Qr.link(Dn, { stable: !0 }), pn(Jn, ".", Ai[Sn], "(", en, ");", ei, ".", Sn, "=", en, ";")) : pn(Jn, ".", Ai[Sn], "(", Dn, ");", ei, ".", Sn, "=", Dn, ";");
                      }
                    });
                  }
                  function hi(Qr, pn) {
                    rn && (Qr.instancing = pn.def(Qr.shared.extensions, ".angle_instanced_arrays"));
                  }
                  function Vn(Qr, pn, $r, mn, Wn) {
                    function yi() {
                      return typeof performance > "u" ? "Date.now()" : "performance.now()";
                    }
                    function ei(Ti) {
                      fi = pn.def(), Ti(fi, "=", yi(), ";"), typeof Wn == "string" ? Ti(wn, ".count+=", Wn, ";") : Ti(wn, ".count++;"), Sr && (mn ? (_i = pn.def(), Ti(_i, "=", li, ".getNumPendingQueries();")) : Ti(li, ".beginQuery(", wn, ");"));
                    }
                    function Jn(Ti) {
                      Ti(wn, ".cpuTime+=", yi(), "-", fi, ";"), Sr && (mn ? Ti(li, ".pushScopeStats(", _i, ",", li, ".getNumPendingQueries(),", wn, ");") : Ti(li, ".endQuery();"));
                    }
                    function en(Ti) {
                      var bi = pn.def(Dn, ".profile");
                      pn(Dn, ".profile=", Ti, ";"), pn.exit(Dn, ".profile=", bi, ";");
                    }
                    var Sn = Qr.shared, wn = Qr.stats, Dn = Sn.current, li = Sn.timer;
                    $r = $r.profile;
                    var fi, _i;
                    if ($r) {
                      if (at($r)) {
                        $r.enable ? (ei(pn), Jn(pn.exit), en("true")) : en("false");
                        return;
                      }
                      $r = $r.append(Qr, pn), en($r);
                    } else $r = pn.def(Dn, ".profile");
                    Sn = Qr.block(), ei(Sn), pn("if(", $r, "){", Sn, "}"), Qr = Qr.block(), Jn(Qr), pn.exit("if(", $r, "){", Qr, "}");
                  }
                  function jr(Qr, pn, $r, mn, Wn) {
                    function yi(en) {
                      switch (en) {
                        case 35664:
                        case 35667:
                        case 35671:
                          return 2;
                        case 35665:
                        case 35668:
                        case 35672:
                          return 3;
                        case 35666:
                        case 35669:
                        case 35673:
                          return 4;
                        default:
                          return 1;
                      }
                    }
                    function ei(en, Sn, wn) {
                      function Dn() {
                        pn("if(!", Ti, ".buffer){", fi, ".enableVertexAttribArray(", _i, ");}");
                        var ra = wn.type, Ea;
                        Ea = wn.size ? pn.def(
                          wn.size,
                          "||",
                          Sn
                        ) : Sn, pn("if(", Ti, ".type!==", ra, "||", Ti, ".size!==", Ea, "||", Bi.map(function(Io) {
                          return Ti + "." + Io + "!==" + wn[Io];
                        }).join("||"), "){", fi, ".bindBuffer(", 34962, ",", bi, ".buffer);", fi, ".vertexAttribPointer(", [_i, Ea, ra, wn.normalized, wn.stride, wn.offset], ");", Ti, ".type=", ra, ";", Ti, ".size=", Ea, ";", Bi.map(function(Io) {
                          return Ti + "." + Io + "=" + wn[Io] + ";";
                        }).join(""), "}"), rn && (ra = wn.divisor, pn("if(", Ti, ".divisor!==", ra, "){", Qr.instancing, ".vertexAttribDivisorANGLE(", [_i, ra], ");", Ti, ".divisor=", ra, ";}"));
                      }
                      function li() {
                        pn(
                          "if(",
                          Ti,
                          ".buffer){",
                          fi,
                          ".disableVertexAttribArray(",
                          _i,
                          ");",
                          Ti,
                          ".buffer=null;",
                          "}if(",
                          fe.map(function(ra, Ea) {
                            return Ti + "." + ra + "!==" + ki[Ea];
                          }).join("||"),
                          "){",
                          fi,
                          ".vertexAttrib4f(",
                          _i,
                          ",",
                          ki,
                          ");",
                          fe.map(function(ra, Ea) {
                            return Ti + "." + ra + "=" + ki[Ea] + ";";
                          }).join(""),
                          "}"
                        );
                      }
                      var fi = Jn.gl, _i = pn.def(en, ".location"), Ti = pn.def(Jn.attributes, "[", _i, "]");
                      en = wn.state;
                      var bi = wn.buffer, ki = [wn.x, wn.y, wn.z, wn.w], Bi = ["buffer", "normalized", "offset", "stride"];
                      en === 1 ? Dn() : en === 2 ? li() : (pn("if(", en, "===", 1, "){"), Dn(), pn("}else{"), li(), pn("}"));
                    }
                    var Jn = Qr.shared;
                    mn.forEach(function(en) {
                      var Sn = en.name, wn = $r.attributes[Sn], Dn;
                      if (wn) {
                        if (!Wn(wn)) return;
                        Dn = wn.append(Qr, pn);
                      } else {
                        if (!Wn(me)) return;
                        var li = Qr.scopeAttrib(Sn);
                        Dn = {}, Object.keys(new Ji()).forEach(function(fi) {
                          Dn[fi] = pn.def(li, ".", fi);
                        });
                      }
                      ei(Qr.link(en), yi(en.info.type), Dn);
                    });
                  }
                  function zr(Qr, pn, $r, mn, Wn, yi) {
                    for (var ei = Qr.shared, Jn = ei.gl, en, Sn = 0; Sn < mn.length; ++Sn) {
                      var fi = mn[Sn], wn = fi.name, Dn = fi.info.type, li = $r.uniforms[wn], fi = Qr.link(fi) + ".location", _i;
                      if (li) {
                        if (!Wn(li)) continue;
                        if (at(li)) {
                          if (wn = li.value, Dn === 35678 || Dn === 35680) Dn = Qr.link(wn._texture || wn.color[0]._texture), pn(Jn, ".uniform1i(", fi, ",", Dn + ".bind());"), pn.exit(Dn, ".unbind();");
                          else if (Dn === 35674 || Dn === 35675 || Dn === 35676) wn = Qr.global.def("new Float32Array([" + Array.prototype.slice.call(wn) + "])"), li = 2, Dn === 35675 ? li = 3 : Dn === 35676 && (li = 4), pn(Jn, ".uniformMatrix", li, "fv(", fi, ",false,", wn, ");");
                          else {
                            switch (Dn) {
                              case 5126:
                                en = "1f";
                                break;
                              case 35664:
                                en = "2f";
                                break;
                              case 35665:
                                en = "3f";
                                break;
                              case 35666:
                                en = "4f";
                                break;
                              case 35670:
                                en = "1i";
                                break;
                              case 5124:
                                en = "1i";
                                break;
                              case 35671:
                                en = "2i";
                                break;
                              case 35667:
                                en = "2i";
                                break;
                              case 35672:
                                en = "3i";
                                break;
                              case 35668:
                                en = "3i";
                                break;
                              case 35673:
                                en = "4i";
                                break;
                              case 35669:
                                en = "4i";
                            }
                            pn(Jn, ".uniform", en, "(", fi, ",", S(wn) ? Array.prototype.slice.call(wn) : wn, ");");
                          }
                          continue;
                        } else _i = li.append(Qr, pn);
                      } else {
                        if (!Wn(me)) continue;
                        _i = pn.def(ei.uniforms, "[", De.id(wn), "]");
                      }
                      switch (Dn === 35678 ? pn("if(", _i, "&&", _i, '._reglType==="framebuffer"){', _i, "=", _i, ".color[0];", "}") : Dn === 35680 && pn("if(", _i, "&&", _i, '._reglType==="framebufferCube"){', _i, "=", _i, ".color[0];", "}"), wn = 1, Dn) {
                        case 35678:
                        case 35680:
                          Dn = pn.def(_i, "._texture"), pn(Jn, ".uniform1i(", fi, ",", Dn, ".bind());"), pn.exit(Dn, ".unbind();");
                          continue;
                        case 5124:
                        case 35670:
                          en = "1i";
                          break;
                        case 35667:
                        case 35671:
                          en = "2i", wn = 2;
                          break;
                        case 35668:
                        case 35672:
                          en = "3i", wn = 3;
                          break;
                        case 35669:
                        case 35673:
                          en = "4i", wn = 4;
                          break;
                        case 5126:
                          en = "1f";
                          break;
                        case 35664:
                          en = "2f", wn = 2;
                          break;
                        case 35665:
                          en = "3f", wn = 3;
                          break;
                        case 35666:
                          en = "4f", wn = 4;
                          break;
                        case 35674:
                          en = "Matrix2fv";
                          break;
                        case 35675:
                          en = "Matrix3fv";
                          break;
                        case 35676:
                          en = "Matrix4fv";
                      }
                      if (en.charAt(0) === "M") {
                        pn(Jn, ".uniform", en, "(", fi, ",");
                        var fi = Math.pow(Dn - 35674 + 2, 2), Ti = Qr.global.def("new Float32Array(", fi, ")");
                        Array.isArray(_i) ? pn("false,(", r(fi, function(Bi) {
                          return Ti + "[" + Bi + "]=" + _i[Bi];
                        }), ",", Ti, ")") : pn(
                          "false,(Array.isArray(",
                          _i,
                          ")||",
                          _i,
                          " instanceof Float32Array)?",
                          _i,
                          ":(",
                          r(fi, function(Bi) {
                            return Ti + "[" + Bi + "]=" + _i + "[" + Bi + "]";
                          }),
                          ",",
                          Ti,
                          ")"
                        ), pn(");");
                      } else {
                        if (1 < wn) {
                          for (var Dn = [], bi = [], li = 0; li < wn; ++li) Array.isArray(_i) ? bi.push(_i[li]) : bi.push(pn.def(_i + "[" + li + "]")), yi && Dn.push(pn.def());
                          yi && pn("if(!", Qr.batchId, "||", Dn.map(function(ki, Bi) {
                            return ki + "!==" + bi[Bi];
                          }).join("||"), "){", Dn.map(function(ki, Bi) {
                            return ki + "=" + bi[Bi] + ";";
                          }).join("")), pn(Jn, ".uniform", en, "(", fi, ",", bi.join(","), ");");
                        } else yi && (Dn = pn.def(), pn("if(!", Qr.batchId, "||", Dn, "!==", _i, "){", Dn, "=", _i, ";")), pn(Jn, ".uniform", en, "(", fi, ",", _i, ");");
                        yi && pn("}");
                      }
                    }
                  }
                  function Tn(Qr, pn, $r, mn) {
                    function Wn(ra) {
                      var Ea = wn[ra];
                      return Ea ? Ea.contextDep && mn.contextDynamic || Ea.propDep ? Ea.append(Qr, $r) : Ea.append(Qr, pn) : pn.def(Sn, ".", ra);
                    }
                    function yi() {
                      function ra() {
                        $r(bi, ".drawElementsInstancedANGLE(", [li, _i, ki, fi + "<<((" + ki + "-5121)>>1)", Ti], ");");
                      }
                      function Ea() {
                        $r(bi, ".drawArraysInstancedANGLE(", [li, fi, _i, Ti], ");");
                      }
                      Dn && Dn !== "null" ? Bi ? ra() : ($r("if(", Dn, "){"), ra(), $r("}else{"), Ea(), $r("}")) : Ea();
                    }
                    function ei() {
                      function ra() {
                        $r(en + ".drawElements(" + [li, _i, ki, fi + "<<((" + ki + "-5121)>>1)"] + ");");
                      }
                      function Ea() {
                        $r(en + ".drawArrays(" + [li, fi, _i] + ");");
                      }
                      Dn && Dn !== "null" ? Bi ? ra() : ($r("if(", Dn, "){"), ra(), $r("}else{"), Ea(), $r("}")) : Ea();
                    }
                    var Jn = Qr.shared, en = Jn.gl, Sn = Jn.draw, wn = mn.draw, Dn = function() {
                      var ra = wn.elements, Ea = pn;
                      return ra ? ((ra.contextDep && mn.contextDynamic || ra.propDep) && (Ea = $r), ra = ra.append(Qr, Ea), wn.elementsActive && Ea("if(" + ra + ")" + en + ".bindBuffer(34963," + ra + ".buffer.buffer);")) : (ra = Ea.def(), Ea(ra, "=", Sn, ".", "elements", ";", "if(", ra, "){", en, ".bindBuffer(", 34963, ",", ra, ".buffer.buffer);}", "else if(", Jn.vao, ".currentVAO){", ra, "=", Qr.shared.elements + ".getElements(" + Jn.vao, ".currentVAO.elements);", Un ? "" : "if(" + ra + ")" + en + ".bindBuffer(34963," + ra + ".buffer.buffer);", "}")), ra;
                    }(), li = Wn("primitive"), fi = Wn("offset"), _i = function() {
                      var ra = wn.count, Ea = pn;
                      return ra ? ((ra.contextDep && mn.contextDynamic || ra.propDep) && (Ea = $r), ra = ra.append(Qr, Ea)) : ra = Ea.def(Sn, ".", "count"), ra;
                    }();
                    if (typeof _i == "number") {
                      if (_i === 0) return;
                    } else $r("if(", _i, "){"), $r.exit("}");
                    var Ti, bi;
                    rn && (Ti = Wn("instances"), bi = Qr.instancing);
                    var ki = Dn + ".type", Bi = wn.elements && at(wn.elements) && !wn.vaoActive;
                    rn && (typeof Ti != "number" || 0 <= Ti) ? typeof Ti == "string" ? ($r("if(", Ti, ">0){"), yi(), $r(
                      "}else if(",
                      Ti,
                      "<0){"
                    ), ei(), $r("}")) : yi() : ei();
                  }
                  function sn(Qr, pn, $r, mn, Wn) {
                    return pn = Gr(), Wn = pn.proc("body", Wn), rn && (pn.instancing = Wn.def(pn.shared.extensions, ".angle_instanced_arrays")), Qr(pn, Wn, $r, mn), pn.compile().body;
                  }
                  function $n(Qr, pn, $r, mn) {
                    hi(Qr, pn), $r.useVAO ? $r.drawVAO ? pn(Qr.shared.vao, ".setVAO(", $r.drawVAO.append(Qr, pn), ");") : pn(Qr.shared.vao, ".setVAO(", Qr.shared.vao, ".targetVAO);") : (pn(Qr.shared.vao, ".setVAO(null);"), jr(Qr, pn, $r, mn.attributes, function() {
                      return !0;
                    })), zr(Qr, pn, $r, mn.uniforms, function() {
                      return !0;
                    }, !1), Tn(Qr, pn, pn, $r);
                  }
                  function kn(Qr, pn) {
                    var $r = Qr.proc(
                      "draw",
                      1
                    );
                    hi(Qr, $r), ln(Qr, $r, pn.context), Jr(Qr, $r, pn.framebuffer), Zn(Qr, $r, pn), fn(Qr, $r, pn.state), Vn(Qr, $r, pn, !1, !0);
                    var mn = pn.shader.progVar.append(Qr, $r);
                    if ($r(Qr.shared.gl, ".useProgram(", mn, ".program);"), pn.shader.program) $n(Qr, $r, pn, pn.shader.program);
                    else {
                      $r(Qr.shared.vao, ".setVAO(null);");
                      var Wn = Qr.global.def("{}"), yi = $r.def(mn, ".id"), ei = $r.def(Wn, "[", yi, "]");
                      $r(Qr.cond(ei).then(ei, ".call(this,a0);").else(ei, "=", Wn, "[", yi, "]=", Qr.link(function(Jn) {
                        return sn($n, Qr, pn, Jn, 1);
                      }), "(", mn, ");", ei, ".call(this,a0);"));
                    }
                    0 < Object.keys(pn.state).length && $r(
                      Qr.shared.current,
                      ".dirty=true;"
                    ), Qr.shared.vao && $r(Qr.shared.vao, ".setVAO(null);");
                  }
                  function An(Qr, pn, $r, mn) {
                    function Wn() {
                      return !0;
                    }
                    Qr.batchId = "a1", hi(Qr, pn), jr(Qr, pn, $r, mn.attributes, Wn), zr(Qr, pn, $r, mn.uniforms, Wn, !1), Tn(Qr, pn, pn, $r);
                  }
                  function qn(Qr, pn, $r, mn) {
                    function Wn(Dn) {
                      return Dn.contextDep && ei || Dn.propDep;
                    }
                    function yi(Dn) {
                      return !Wn(Dn);
                    }
                    hi(Qr, pn);
                    var ei = $r.contextDep, Jn = pn.def(), en = pn.def();
                    Qr.shared.props = en, Qr.batchId = Jn;
                    var Sn = Qr.scope(), wn = Qr.scope();
                    pn(Sn.entry, "for(", Jn, "=0;", Jn, "<", "a1", ";++", Jn, "){", en, "=", "a0", "[", Jn, "];", wn, "}", Sn.exit), $r.needsContext && ln(Qr, wn, $r.context), $r.needsFramebuffer && Jr(Qr, wn, $r.framebuffer), fn(Qr, wn, $r.state, Wn), $r.profile && Wn($r.profile) && Vn(Qr, wn, $r, !1, !0), mn ? ($r.useVAO ? $r.drawVAO ? Wn($r.drawVAO) ? wn(Qr.shared.vao, ".setVAO(", $r.drawVAO.append(Qr, wn), ");") : Sn(Qr.shared.vao, ".setVAO(", $r.drawVAO.append(Qr, Sn), ");") : Sn(Qr.shared.vao, ".setVAO(", Qr.shared.vao, ".targetVAO);") : (Sn(Qr.shared.vao, ".setVAO(null);"), jr(Qr, Sn, $r, mn.attributes, yi), jr(Qr, wn, $r, mn.attributes, Wn)), zr(Qr, Sn, $r, mn.uniforms, yi, !1), zr(Qr, wn, $r, mn.uniforms, Wn, !0), Tn(Qr, Sn, wn, $r)) : (pn = Qr.global.def("{}"), mn = $r.shader.progVar.append(Qr, wn), en = wn.def(
                      mn,
                      ".id"
                    ), Sn = wn.def(pn, "[", en, "]"), wn(Qr.shared.gl, ".useProgram(", mn, ".program);", "if(!", Sn, "){", Sn, "=", pn, "[", en, "]=", Qr.link(function(Dn) {
                      return sn(An, Qr, $r, Dn, 2);
                    }), "(", mn, ");}", Sn, ".call(this,a0[", Jn, "],", Jn, ");"));
                  }
                  function si(Qr, pn) {
                    function $r(Sn) {
                      return Sn.contextDep && Wn || Sn.propDep;
                    }
                    var mn = Qr.proc("batch", 2);
                    Qr.batchId = "0", hi(Qr, mn);
                    var Wn = !1, yi = !0;
                    Object.keys(pn.context).forEach(function(Sn) {
                      Wn = Wn || pn.context[Sn].propDep;
                    }), Wn || (ln(Qr, mn, pn.context), yi = !1);
                    var ei = pn.framebuffer, Jn = !1;
                    if (ei ? (ei.propDep ? Wn = Jn = !0 : ei.contextDep && Wn && (Jn = !0), Jn || Jr(Qr, mn, ei)) : Jr(
                      Qr,
                      mn,
                      null
                    ), pn.state.viewport && pn.state.viewport.propDep && (Wn = !0), Zn(Qr, mn, pn), fn(Qr, mn, pn.state, function(Sn) {
                      return !$r(Sn);
                    }), pn.profile && $r(pn.profile) || Vn(Qr, mn, pn, !1, "a1"), pn.contextDep = Wn, pn.needsContext = yi, pn.needsFramebuffer = Jn, yi = pn.shader.progVar, yi.contextDep && Wn || yi.propDep) qn(Qr, mn, pn, null);
                    else if (yi = yi.append(Qr, mn), mn(Qr.shared.gl, ".useProgram(", yi, ".program);"), pn.shader.program) qn(Qr, mn, pn, pn.shader.program);
                    else {
                      mn(Qr.shared.vao, ".setVAO(null);");
                      var ei = Qr.global.def("{}"), Jn = mn.def(yi, ".id"), en = mn.def(ei, "[", Jn, "]");
                      mn(Qr.cond(en).then(en, ".call(this,a0,a1);").else(
                        en,
                        "=",
                        ei,
                        "[",
                        Jn,
                        "]=",
                        Qr.link(function(Dn) {
                          return sn(qn, Qr, pn, Dn, 2);
                        }),
                        "(",
                        yi,
                        ");",
                        en,
                        ".call(this,a0,a1);"
                      ));
                    }
                    0 < Object.keys(pn.state).length && mn(Qr.shared.current, ".dirty=true;"), Qr.shared.vao && mn(Qr.shared.vao, ".setVAO(null);");
                  }
                  function qi(Qr, pn) {
                    function $r(Jn) {
                      var en = pn.shader[Jn];
                      en && (en = en.append(Qr, mn), isNaN(en) ? mn.set(Wn.shader, "." + Jn, en) : mn.set(Wn.shader, "." + Jn, Qr.link(en, { stable: !0 })));
                    }
                    var mn = Qr.proc("scope", 3);
                    Qr.batchId = "a2";
                    var Wn = Qr.shared, yi = Wn.current;
                    if (ln(Qr, mn, pn.context), pn.framebuffer && pn.framebuffer.append(Qr, mn), Q(Object.keys(pn.state)).forEach(function(Jn) {
                      var en = pn.state[Jn], Sn = en.append(Qr, mn);
                      S(Sn) ? Sn.forEach(function(wn, Dn) {
                        isNaN(wn) ? mn.set(Qr.next[Jn], "[" + Dn + "]", wn) : mn.set(Qr.next[Jn], "[" + Dn + "]", Qr.link(wn, { stable: !0 }));
                      }) : at(en) ? mn.set(Wn.next, "." + Jn, Qr.link(Sn, { stable: !0 })) : mn.set(Wn.next, "." + Jn, Sn);
                    }), Vn(Qr, mn, pn, !0, !0), ["elements", "offset", "count", "instances", "primitive"].forEach(function(Jn) {
                      var en = pn.draw[Jn];
                      en && (en = en.append(Qr, mn), isNaN(en) ? mn.set(Wn.draw, "." + Jn, en) : mn.set(Wn.draw, "." + Jn, Qr.link(en), { stable: !0 }));
                    }), Object.keys(pn.uniforms).forEach(function(Jn) {
                      var en = pn.uniforms[Jn].append(Qr, mn);
                      Array.isArray(en) && (en = "[" + en.map(function(Sn) {
                        return isNaN(Sn) ? Sn : Qr.link(Sn, { stable: !0 });
                      }) + "]"), mn.set(Wn.uniforms, "[" + Qr.link(De.id(Jn), { stable: !0 }) + "]", en);
                    }), Object.keys(pn.attributes).forEach(function(Jn) {
                      var en = pn.attributes[Jn].append(Qr, mn), Sn = Qr.scopeAttrib(Jn);
                      Object.keys(new Ji()).forEach(function(wn) {
                        mn.set(Sn, "." + wn, en[wn]);
                      });
                    }), pn.scopeVAO) {
                      var ei = pn.scopeVAO.append(Qr, mn);
                      isNaN(ei) ? mn.set(Wn.vao, ".targetVAO", ei) : mn.set(Wn.vao, ".targetVAO", Qr.link(ei, { stable: !0 }));
                    }
                    $r("vert"), $r("frag"), 0 < Object.keys(pn.state).length && (mn(yi, ".dirty=true;"), mn.exit(
                      yi,
                      ".dirty=true;"
                    )), mn("a1(", Qr.shared.context, ",a0,", Qr.batchId, ");");
                  }
                  function ha(Qr) {
                    if (typeof Qr == "object" && !S(Qr)) {
                      for (var pn = Object.keys(Qr), $r = 0; $r < pn.length; ++$r) if (wt.isDynamic(Qr[pn[$r]])) return !0;
                      return !1;
                    }
                  }
                  function Mi(Qr, pn, $r) {
                    function mn(Dn, li) {
                      ei.forEach(function(fi) {
                        var _i = Wn[fi];
                        wt.isDynamic(_i) && (_i = Dn.invoke(li, _i), li(wn, ".", fi, "=", _i, ";"));
                      });
                    }
                    var Wn = pn.static[$r];
                    if (Wn && ha(Wn)) {
                      var yi = Qr.global, ei = Object.keys(Wn), Jn = !1, en = !1, Sn = !1, wn = Qr.global.def("{}");
                      ei.forEach(function(Dn) {
                        var li = Wn[Dn];
                        if (wt.isDynamic(li)) typeof li == "function" && (li = Wn[Dn] = wt.unbox(li)), Dn = nt(li, null), Jn = Jn || Dn.thisDep, Sn = Sn || Dn.propDep, en = en || Dn.contextDep;
                        else {
                          switch (yi(wn, ".", Dn, "="), typeof li) {
                            case "number":
                              yi(li);
                              break;
                            case "string":
                              yi('"', li, '"');
                              break;
                            case "object":
                              Array.isArray(li) && yi("[", li.join(), "]");
                              break;
                            default:
                              yi(Qr.link(li));
                          }
                          yi(";");
                        }
                      }), pn.dynamic[$r] = new wt.DynamicVariable(4, { thisDep: Jn, contextDep: en, propDep: Sn, ref: wn, append: mn }), delete pn.static[$r];
                    }
                  }
                  var Ji = Ye.Record, ci = { add: 32774, subtract: 32778, "reverse subtract": 32779 };
                  Je.ext_blend_minmax && (ci.min = 32775, ci.max = 32776);
                  var rn = Je.angle_instanced_arrays, Cn = Je.webgl_draw_buffers, Un = Je.oes_vertex_array_object, Fn = { dirty: !0, profile: Or.profile }, mi = {}, Nn = [], di = {}, Ai = {};
                  Nr("dither", 3024), Nr("blend.enable", 3042), Xr("blend.color", "blendColor", [0, 0, 0, 0]), Xr("blend.equation", "blendEquationSeparate", [32774, 32774]), Xr("blend.func", "blendFuncSeparate", [1, 0, 1, 0]), Nr("depth.enable", 2929, !0), Xr("depth.func", "depthFunc", 513), Xr("depth.range", "depthRange", [0, 1]), Xr("depth.mask", "depthMask", !0), Xr("colorMask", "colorMask", [!0, !0, !0, !0]), Nr("cull.enable", 2884), Xr(
                    "cull.face",
                    "cullFace",
                    1029
                  ), Xr("frontFace", "frontFace", 2305), Xr("lineWidth", "lineWidth", 1), Nr("polygonOffset.enable", 32823), Xr("polygonOffset.offset", "polygonOffset", [0, 0]), Nr("sample.alpha", 32926), Nr("sample.enable", 32928), Xr("sample.coverage", "sampleCoverage", [1, !1]), Nr("stencil.enable", 2960), Xr("stencil.mask", "stencilMask", -1), Xr("stencil.func", "stencilFunc", [519, 0, -1]), Xr("stencil.opFront", "stencilOpSeparate", [1028, 7680, 7680, 7680]), Xr("stencil.opBack", "stencilOpSeparate", [1029, 7680, 7680, 7680]), Nr("scissor.enable", 3089), Xr(
                    "scissor.box",
                    "scissor",
                    [0, 0, qt.drawingBufferWidth, qt.drawingBufferHeight]
                  ), Xr("viewport", "viewport", [0, 0, qt.drawingBufferWidth, qt.drawingBufferHeight]);
                  var Gi = { gl: qt, context: hr, strings: De, next: mi, current: Fn, draw: lr, elements: we, buffer: qe, shader: rr, attributes: Ye.state, vao: Ye, uniforms: Ue, framebuffer: Pe, extensions: Je, timer: Sr, isBufferArgs: et }, ia = { primTypes: ce, compareFuncs: mr, blendFuncs: ir, blendEquations: ci, stencilOps: Xe, glTypes: Wt, orientationType: xe };
                  Cn && (ia.backBuffer = [1029], ia.drawBuffer = r(dr.maxDrawbuffers, function(Qr) {
                    return Qr === 0 ? [0] : r(Qr, function(pn) {
                      return 36064 + pn;
                    });
                  }));
                  var Ca = 0;
                  return { next: mi, current: Fn, procs: function() {
                    var Qr = Gr(), pn = Qr.proc("poll"), $r = Qr.proc("refresh"), mn = Qr.block();
                    pn(mn), $r(mn);
                    var en = Qr.shared, Wn = en.gl, yi = en.next, ei = en.current;
                    mn(ei, ".dirty=false;"), Jr(Qr, pn), Jr(Qr, $r, null, !0);
                    var Jn;
                    rn && (Jn = Qr.link(rn)), Je.oes_vertex_array_object && $r(Qr.link(Je.oes_vertex_array_object), ".bindVertexArrayOES(null);");
                    var en = $r.def(en.attributes), Sn = $r.def(0), wn = Qr.cond(Sn, ".buffer");
                    wn.then(
                      Wn,
                      ".enableVertexAttribArray(i);",
                      Wn,
                      ".bindBuffer(",
                      34962,
                      ",",
                      Sn,
                      ".buffer.buffer);",
                      Wn,
                      ".vertexAttribPointer(i,",
                      Sn,
                      ".size,",
                      Sn,
                      ".type,",
                      Sn,
                      ".normalized,",
                      Sn,
                      ".stride,",
                      Sn,
                      ".offset);"
                    ).else(Wn, ".disableVertexAttribArray(i);", Wn, ".vertexAttrib4f(i,", Sn, ".x,", Sn, ".y,", Sn, ".z,", Sn, ".w);", Sn, ".buffer=null;");
                    var Dn = Qr.link(dr.maxAttributes, { stable: !0 });
                    return $r("for(var i=0;i<", Dn, ";++i){", Sn, "=", en, "[i];", wn, "}"), rn && $r("for(var i=0;i<", Dn, ";++i){", Jn, ".vertexAttribDivisorANGLE(i,", en, "[i].divisor);", "}"), $r(Qr.shared.vao, ".currentVAO=null;", Qr.shared.vao, ".setVAO(", Qr.shared.vao, ".targetVAO);"), Object.keys(di).forEach(function(li) {
                      var fi = di[li], _i = mn.def(yi, ".", li), Ti = Qr.block();
                      Ti("if(", _i, "){", Wn, ".enable(", fi, ")}else{", Wn, ".disable(", fi, ")}", ei, ".", li, "=", _i, ";"), $r(Ti), pn("if(", _i, "!==", ei, ".", li, "){", Ti, "}");
                    }), Object.keys(Ai).forEach(function(li) {
                      var fi = Ai[li], _i = Fn[li], Ti, bi, ki = Qr.block();
                      ki(Wn, ".", fi, "("), S(_i) ? (fi = _i.length, Ti = Qr.global.def(yi, ".", li), bi = Qr.global.def(ei, ".", li), ki(r(fi, function(Bi) {
                        return Ti + "[" + Bi + "]";
                      }), ");", r(fi, function(Bi) {
                        return bi + "[" + Bi + "]=" + Ti + "[" + Bi + "];";
                      }).join("")), pn("if(", r(fi, function(Bi) {
                        return Ti + "[" + Bi + "]!==" + bi + "[" + Bi + "]";
                      }).join("||"), "){", ki, "}")) : (Ti = mn.def(yi, ".", li), bi = mn.def(ei, ".", li), ki(Ti, ");", ei, ".", li, "=", Ti, ";"), pn("if(", Ti, "!==", bi, "){", ki, "}")), $r(ki);
                    }), Qr.compile();
                  }(), compile: function(Qr, pn, $r, mn, Wn) {
                    var yi = Gr();
                    yi.stats = yi.link(Wn), Object.keys(pn.static).forEach(function(Jn) {
                      Mi(yi, pn, Jn);
                    }), Me.forEach(function(Jn) {
                      Mi(yi, Qr, Jn);
                    });
                    var ei = Zr(Qr, pn, $r, mn, yi);
                    return ei.shader.program && (ei.shader.program.attributes.sort(function(Jn, en) {
                      return Jn.name < en.name ? -1 : 1;
                    }), ei.shader.program.uniforms.sort(function(Jn, en) {
                      return Jn.name < en.name ? -1 : 1;
                    })), kn(yi, ei), qi(yi, ei), si(yi, ei), lt(
                      yi.compile(),
                      { destroy: function() {
                        ei.shader.program.destroy();
                      } }
                    );
                  } };
                }
                function ct(qt, De) {
                  for (var Je = 0; Je < qt.length; ++Je) if (qt[Je] === De) return Je;
                  return -1;
                }
                var lt = function(qt, De) {
                  for (var Je = Object.keys(De), dr = 0; dr < Je.length; ++dr) qt[Je[dr]] = De[Je[dr]];
                  return qt;
                }, pt = 0, wt = { DynamicVariable: K, define: function(qt, De) {
                  return new K(qt, b(De + ""));
                }, isDynamic: function(qt) {
                  return typeof qt == "function" && !qt._reglType || qt instanceof K;
                }, unbox: P, accessor: b }, Et = { next: typeof requestAnimationFrame == "function" ? function(qt) {
                  return requestAnimationFrame(qt);
                } : function(qt) {
                  return setTimeout(
                    qt,
                    16
                  );
                }, cancel: typeof cancelAnimationFrame == "function" ? function(qt) {
                  return cancelAnimationFrame(qt);
                } : clearTimeout }, Ct = typeof performance < "u" && performance.now ? function() {
                  return performance.now();
                } : function() {
                  return +/* @__PURE__ */ new Date();
                }, Gt = a();
                Gt.zero = a();
                var Jt = function(qt, De) {
                  var Je = 1;
                  De.ext_texture_filter_anisotropic && (Je = qt.getParameter(34047));
                  var dr = 1, qe = 1;
                  De.webgl_draw_buffers && (dr = qt.getParameter(34852), qe = qt.getParameter(36063));
                  var we = !!De.oes_texture_float;
                  if (we) {
                    we = qt.createTexture(), qt.bindTexture(3553, we), qt.texImage2D(
                      3553,
                      0,
                      6408,
                      1,
                      1,
                      0,
                      6408,
                      5126,
                      null
                    );
                    var ue = qt.createFramebuffer();
                    if (qt.bindFramebuffer(36160, ue), qt.framebufferTexture2D(36160, 36064, 3553, we, 0), qt.bindTexture(3553, null), qt.checkFramebufferStatus(36160) !== 36053) we = !1;
                    else {
                      qt.viewport(0, 0, 1, 1), qt.clearColor(1, 0, 0, 1), qt.clear(16384);
                      var Pe = Gt.allocType(5126, 4);
                      qt.readPixels(0, 0, 1, 1, 6408, 5126, Pe), qt.getError() ? we = !1 : (qt.deleteFramebuffer(ue), qt.deleteTexture(we), we = Pe[0] === 1), Gt.freeType(Pe);
                    }
                  }
                  return Pe = !0, typeof navigator < "u" && (/MSIE/.test(navigator.userAgent) || /Trident\//.test(navigator.appVersion) || /Edge/.test(navigator.userAgent)) || (Pe = qt.createTexture(), ue = Gt.allocType(5121, 36), qt.activeTexture(33984), qt.bindTexture(34067, Pe), qt.texImage2D(34069, 0, 6408, 3, 3, 0, 6408, 5121, ue), Gt.freeType(ue), qt.bindTexture(34067, null), qt.deleteTexture(Pe), Pe = !qt.getError()), {
                    colorBits: [qt.getParameter(3410), qt.getParameter(3411), qt.getParameter(3412), qt.getParameter(3413)],
                    depthBits: qt.getParameter(3414),
                    stencilBits: qt.getParameter(3415),
                    subpixelBits: qt.getParameter(3408),
                    extensions: Object.keys(De).filter(function(Ue) {
                      return !!De[Ue];
                    }),
                    maxAnisotropic: Je,
                    maxDrawbuffers: dr,
                    maxColorAttachments: qe,
                    pointSizeDims: qt.getParameter(33901),
                    lineWidthDims: qt.getParameter(33902),
                    maxViewportDims: qt.getParameter(3386),
                    maxCombinedTextureUnits: qt.getParameter(35661),
                    maxCubeMapSize: qt.getParameter(34076),
                    maxRenderbufferSize: qt.getParameter(34024),
                    maxTextureUnits: qt.getParameter(34930),
                    maxTextureSize: qt.getParameter(3379),
                    maxAttributes: qt.getParameter(34921),
                    maxVertexUniforms: qt.getParameter(36347),
                    maxVertexTextureUnits: qt.getParameter(35660),
                    maxVaryingVectors: qt.getParameter(36348),
                    maxFragmentUniforms: qt.getParameter(36349),
                    glsl: qt.getParameter(35724),
                    renderer: qt.getParameter(7937),
                    vendor: qt.getParameter(7936),
                    version: qt.getParameter(7938),
                    readFloat: we,
                    npotTextureCube: Pe
                  };
                }, Qt = function(qt) {
                  return qt instanceof Uint8Array || qt instanceof Uint16Array || qt instanceof Uint32Array || qt instanceof Int8Array || qt instanceof Int16Array || qt instanceof Int32Array || qt instanceof Float32Array || qt instanceof Float64Array || qt instanceof Uint8ClampedArray;
                }, Vt = function(qt) {
                  return Object.keys(qt).map(function(De) {
                    return qt[De];
                  });
                }, zt = { shape: function(qt) {
                  for (var De = []; qt.length; qt = qt[0]) De.push(qt.length);
                  return De;
                }, flatten: function(qt, De, Je, dr) {
                  var qe = 1;
                  if (De.length) for (var we = 0; we < De.length; ++we) qe *= De[we];
                  else qe = 0;
                  switch (Je = dr || Gt.allocType(Je, qe), De.length) {
                    case 0:
                      break;
                    case 1:
                      for (dr = De[0], De = 0; De < dr; ++De) Je[De] = qt[De];
                      break;
                    case 2:
                      for (dr = De[0], De = De[1], we = qe = 0; we < dr; ++we) for (var ue = qt[we], Pe = 0; Pe < De; ++Pe) Je[qe++] = ue[Pe];
                      break;
                    case 3:
                      o(qt, De[0], De[1], De[2], Je, 0);
                      break;
                    default:
                      y(qt, De, 0, Je, 0);
                  }
                  return Je;
                } }, Rt = {
                  "[object Int8Array]": 5120,
                  "[object Int16Array]": 5122,
                  "[object Int32Array]": 5124,
                  "[object Uint8Array]": 5121,
                  "[object Uint8ClampedArray]": 5121,
                  "[object Uint16Array]": 5123,
                  "[object Uint32Array]": 5125,
                  "[object Float32Array]": 5126,
                  "[object Float64Array]": 5121,
                  "[object ArrayBuffer]": 5121
                }, Wt = { int8: 5120, int16: 5122, int32: 5124, uint8: 5121, uint16: 5123, uint32: 5125, float: 5126, float32: 5126 }, kt = { dynamic: 35048, stream: 35040, static: 35044 }, re = zt.flatten, ge = zt.shape, _e = [];
                _e[5120] = 1, _e[5122] = 2, _e[5124] = 4, _e[5121] = 1, _e[5123] = 2, _e[5125] = 4, _e[5126] = 4;
                var ce = {
                  points: 0,
                  point: 0,
                  lines: 1,
                  line: 1,
                  triangles: 4,
                  triangle: 4,
                  "line loop": 2,
                  "line strip": 3,
                  "triangle strip": 5,
                  "triangle fan": 6
                }, ae = new Float32Array(1), Se = new Uint32Array(ae.buffer), ze = [9984, 9986, 9985, 9987], Ne = [0, 6409, 6410, 6407, 6408], Ve = {};
                Ve[6409] = Ve[6406] = Ve[6402] = 1, Ve[34041] = Ve[6410] = 2, Ve[6407] = Ve[35904] = 3, Ve[6408] = Ve[35906] = 4;
                var Oe = M("HTMLCanvasElement"), ur = M("OffscreenCanvas"), ie = M("CanvasRenderingContext2D"), $t = M("ImageBitmap"), jt = M("HTMLImageElement"), ee = M("HTMLVideoElement"), Bt = Object.keys(Rt).concat([Oe, ur, ie, $t, jt, ee]), Xt = [];
                Xt[5121] = 1, Xt[5126] = 4, Xt[36193] = 2, Xt[5123] = 2, Xt[5125] = 4;
                var Zt = [];
                Zt[32854] = 2, Zt[32855] = 2, Zt[36194] = 2, Zt[34041] = 4, Zt[33776] = 0.5, Zt[33777] = 0.5, Zt[33778] = 1, Zt[33779] = 1, Zt[35986] = 0.5, Zt[35987] = 1, Zt[34798] = 1, Zt[35840] = 0.5, Zt[35841] = 0.25, Zt[35842] = 0.5, Zt[35843] = 0.25, Zt[36196] = 0.5;
                var ye = [];
                ye[32854] = 2, ye[32855] = 2, ye[36194] = 2, ye[33189] = 2, ye[36168] = 1, ye[34041] = 4, ye[35907] = 4, ye[34836] = 16, ye[34842] = 8, ye[34843] = 6;
                var Mt = function(qt, De, Je, dr, qe) {
                  function we(lr) {
                    this.id = Ye++, this.refCount = 1, this.renderbuffer = lr, this.format = 32854, this.height = this.width = 0, qe.profile && (this.stats = { size: 0 });
                  }
                  function ue(lr) {
                    var hr = lr.renderbuffer;
                    qt.bindRenderbuffer(36161, null), qt.deleteRenderbuffer(hr), lr.renderbuffer = null, lr.refCount = 0, delete rr[lr.id], dr.renderbufferCount--;
                  }
                  var Pe = { rgba4: 32854, rgb565: 36194, "rgb5 a1": 32855, depth: 33189, stencil: 36168, "depth stencil": 34041 };
                  De.ext_srgb && (Pe.srgba = 35907), De.ext_color_buffer_half_float && (Pe.rgba16f = 34842, Pe.rgb16f = 34843), De.webgl_color_buffer_float && (Pe.rgba32f = 34836);
                  var Ue = [];
                  Object.keys(Pe).forEach(function(lr) {
                    Ue[Pe[lr]] = lr;
                  });
                  var Ye = 0, rr = {};
                  return we.prototype.decRef = function() {
                    0 >= --this.refCount && ue(this);
                  }, qe.profile && (dr.getTotalRenderbufferSize = function() {
                    var lr = 0;
                    return Object.keys(rr).forEach(function(hr) {
                      lr += rr[hr].stats.size;
                    }), lr;
                  }), { create: function(lr, hr) {
                    function Sr(Or, Br) {
                      var Nr = 0, Xr = 0, Gr = 32854;
                      if (typeof Or == "object" && Or ? ("shape" in Or ? (Xr = Or.shape, Nr = Xr[0] | 0, Xr = Xr[1] | 0) : ("radius" in Or && (Nr = Xr = Or.radius | 0), "width" in Or && (Nr = Or.width | 0), "height" in Or && (Xr = Or.height | 0)), "format" in Or && (Gr = Pe[Or.format])) : typeof Or == "number" ? (Nr = Or | 0, Xr = typeof Br == "number" ? Br | 0 : Nr) : Or || (Nr = Xr = 1), Nr !== Dr.width || Xr !== Dr.height || Gr !== Dr.format) return Sr.width = Dr.width = Nr, Sr.height = Dr.height = Xr, Dr.format = Gr, qt.bindRenderbuffer(36161, Dr.renderbuffer), qt.renderbufferStorage(36161, Gr, Nr, Xr), qe.profile && (Dr.stats.size = ye[Dr.format] * Dr.width * Dr.height), Sr.format = Ue[Dr.format], Sr;
                    }
                    var Dr = new we(qt.createRenderbuffer());
                    return rr[Dr.id] = Dr, dr.renderbufferCount++, Sr(lr, hr), Sr.resize = function(Or, Br) {
                      var Nr = Or | 0, Xr = Br | 0 || Nr;
                      return Nr === Dr.width && Xr === Dr.height || (Sr.width = Dr.width = Nr, Sr.height = Dr.height = Xr, qt.bindRenderbuffer(36161, Dr.renderbuffer), qt.renderbufferStorage(36161, Dr.format, Nr, Xr), qe.profile && (Dr.stats.size = ye[Dr.format] * Dr.width * Dr.height)), Sr;
                    }, Sr._reglType = "renderbuffer", Sr._renderbuffer = Dr, qe.profile && (Sr.stats = Dr.stats), Sr.destroy = function() {
                      Dr.decRef();
                    }, Sr;
                  }, clear: function() {
                    Vt(rr).forEach(ue);
                  }, restore: function() {
                    Vt(rr).forEach(function(lr) {
                      lr.renderbuffer = qt.createRenderbuffer(), qt.bindRenderbuffer(36161, lr.renderbuffer), qt.renderbufferStorage(36161, lr.format, lr.width, lr.height);
                    }), qt.bindRenderbuffer(36161, null);
                  } };
                }, St = [];
                St[6408] = 4, St[6407] = 3;
                var Lt = [];
                Lt[5121] = 1, Lt[5126] = 4, Lt[36193] = 2;
                var te = [
                  1116352408,
                  1899447441,
                  -1245643825,
                  -373957723,
                  961987163,
                  1508970993,
                  -1841331548,
                  -1424204075,
                  -670586216,
                  310598401,
                  607225278,
                  1426881987,
                  1925078388,
                  -2132889090,
                  -1680079193,
                  -1046744716,
                  -459576895,
                  -272742522,
                  264347078,
                  604807628,
                  770255983,
                  1249150122,
                  1555081692,
                  1996064986,
                  -1740746414,
                  -1473132947,
                  -1341970488,
                  -1084653625,
                  -958395405,
                  -710438585,
                  113926993,
                  338241895,
                  666307205,
                  773529912,
                  1294757372,
                  1396182291,
                  1695183700,
                  1986661051,
                  -2117940946,
                  -1838011259,
                  -1564481375,
                  -1474664885,
                  -1035236496,
                  -949202525,
                  -778901479,
                  -694614492,
                  -200395387,
                  275423344,
                  430227734,
                  506948616,
                  659060556,
                  883997877,
                  958139571,
                  1322822218,
                  1537002063,
                  1747873779,
                  1955562222,
                  2024104815,
                  -2067236844,
                  -1933114872,
                  -1866530822,
                  -1538233109,
                  -1090935817,
                  -965641998
                ], fe = ["x", "y", "z", "w"], Me = "blend.func blend.equation stencil.func stencil.opFront stencil.opBack sample.coverage viewport scissor.box polygonOffset.offset".split(" "), ir = {
                  0: 0,
                  1: 1,
                  zero: 0,
                  one: 1,
                  "src color": 768,
                  "one minus src color": 769,
                  "src alpha": 770,
                  "one minus src alpha": 771,
                  "dst color": 774,
                  "one minus dst color": 775,
                  "dst alpha": 772,
                  "one minus dst alpha": 773,
                  "constant color": 32769,
                  "one minus constant color": 32770,
                  "constant alpha": 32771,
                  "one minus constant alpha": 32772,
                  "src alpha saturate": 776
                }, mr = { never: 512, less: 513, "<": 513, equal: 514, "=": 514, "==": 514, "===": 514, lequal: 515, "<=": 515, greater: 516, ">": 516, notequal: 517, "!=": 517, "!==": 517, gequal: 518, ">=": 518, always: 519 }, Xe = { 0: 0, zero: 0, keep: 7680, replace: 7681, increment: 7682, decrement: 7683, "increment wrap": 34055, "decrement wrap": 34056, invert: 5386 }, xe = { cw: 2304, ccw: 2305 }, me = new j(!1, !1, !1, function() {
                }), Le = function(qt, De) {
                  function Je() {
                    this.endQueryIndex = this.startQueryIndex = -1, this.sum = 0, this.stats = null;
                  }
                  function dr(rr, lr, hr) {
                    var Sr = ue.pop() || new Je();
                    Sr.startQueryIndex = rr, Sr.endQueryIndex = lr, Sr.sum = 0, Sr.stats = hr, Pe.push(Sr);
                  }
                  if (!De.ext_disjoint_timer_query) return null;
                  var qe = [], we = [], ue = [], Pe = [], Ue = [], Ye = [];
                  return {
                    beginQuery: function(rr) {
                      var lr = qe.pop() || De.ext_disjoint_timer_query.createQueryEXT();
                      De.ext_disjoint_timer_query.beginQueryEXT(35007, lr), we.push(lr), dr(we.length - 1, we.length, rr);
                    },
                    endQuery: function() {
                      De.ext_disjoint_timer_query.endQueryEXT(35007);
                    },
                    pushScopeStats: dr,
                    update: function() {
                      var rr, lr;
                      if (rr = we.length, rr !== 0) {
                        Ye.length = Math.max(Ye.length, rr + 1), Ue.length = Math.max(Ue.length, rr + 1), Ue[0] = 0;
                        var hr = Ye[0] = 0;
                        for (lr = rr = 0; lr < we.length; ++lr) {
                          var Sr = we[lr];
                          De.ext_disjoint_timer_query.getQueryObjectEXT(Sr, 34919) ? (hr += De.ext_disjoint_timer_query.getQueryObjectEXT(Sr, 34918), qe.push(Sr)) : we[rr++] = Sr, Ue[lr + 1] = hr, Ye[lr + 1] = rr;
                        }
                        for (we.length = rr, lr = rr = 0; lr < Pe.length; ++lr) {
                          var hr = Pe[lr], Dr = hr.startQueryIndex, Sr = hr.endQueryIndex;
                          hr.sum += Ue[Sr] - Ue[Dr], Dr = Ye[Dr], Sr = Ye[Sr], Sr === Dr ? (hr.stats.gpuTime += hr.sum / 1e6, ue.push(hr)) : (hr.startQueryIndex = Dr, hr.endQueryIndex = Sr, Pe[rr++] = hr);
                        }
                        Pe.length = rr;
                      }
                    },
                    getNumPendingQueries: function() {
                      return we.length;
                    },
                    clear: function() {
                      qe.push.apply(qe, we);
                      for (var rr = 0; rr < qe.length; rr++) De.ext_disjoint_timer_query.deleteQueryEXT(qe[rr]);
                      we.length = 0, qe.length = 0;
                    },
                    restore: function() {
                      we.length = 0, qe.length = 0;
                    }
                  };
                };
                return function(qt) {
                  function De() {
                    if (Vn.length === 0) Gr && Gr.update(), sn = null;
                    else {
                      sn = Et.next(De), rr();
                      for (var kn = Vn.length - 1; 0 <= kn; --kn) {
                        var An = Vn[kn];
                        An && An(or, null, 0);
                      }
                      Sr.flush(), Gr && Gr.update();
                    }
                  }
                  function Je() {
                    !sn && 0 < Vn.length && (sn = Et.next(De));
                  }
                  function dr() {
                    sn && (Et.cancel(De), sn = null);
                  }
                  function qe(kn) {
                    kn.preventDefault(), dr(), jr.forEach(function(An) {
                      An();
                    });
                  }
                  function we(kn) {
                    Sr.getError(), Or.restore(), Cr.restore(), tr.restore(), _r.restore(), Zr.restore(), ln.restore(), Ir.restore(), Gr && Gr.restore(), Jr.procs.refresh(), Je(), zr.forEach(function(An) {
                      An();
                    });
                  }
                  function ue(kn) {
                    function An(Fn, mi) {
                      var Nn = {}, di = {};
                      return Object.keys(Fn).forEach(function(Ai) {
                        var Gi = Fn[Ai];
                        if (wt.isDynamic(Gi)) di[Ai] = wt.unbox(Gi, Ai);
                        else {
                          if (mi && Array.isArray(Gi)) {
                            for (var ia = 0; ia < Gi.length; ++ia) if (wt.isDynamic(Gi[ia])) {
                              di[Ai] = wt.unbox(Gi, Ai);
                              return;
                            }
                          }
                          Nn[Ai] = Gi;
                        }
                      }), { dynamic: di, static: Nn };
                    }
                    function qn(Fn) {
                      for (; Un.length < Fn; ) Un.push(null);
                      return Un;
                    }
                    var si = An(kn.context || {}, !0), qi = An(kn.uniforms || {}, !0), ha = An(kn.attributes || {}, !1);
                    kn = An(function(Fn) {
                      function mi(di) {
                        if (di in Nn) {
                          var Ai = Nn[di];
                          delete Nn[di], Object.keys(Ai).forEach(function(Gi) {
                            Nn[di + "." + Gi] = Ai[Gi];
                          });
                        }
                      }
                      var Nn = lt({}, Fn);
                      return delete Nn.uniforms, delete Nn.attributes, delete Nn.context, delete Nn.vao, "stencil" in Nn && Nn.stencil.op && (Nn.stencil.opBack = Nn.stencil.opFront = Nn.stencil.op, delete Nn.stencil.op), mi("blend"), mi("depth"), mi("cull"), mi("stencil"), mi("polygonOffset"), mi("scissor"), mi("sample"), "vao" in Fn && (Nn.vao = Fn.vao), Nn;
                    }(kn), !1);
                    var Mi = { gpuTime: 0, cpuTime: 0, count: 0 }, Ji = Jr.compile(kn, ha, qi, si, Mi), ci = Ji.draw, rn = Ji.batch, Cn = Ji.scope, Un = [];
                    return lt(function(Fn, mi) {
                      var Nn;
                      if (typeof Fn == "function") return Cn.call(this, null, Fn, 0);
                      if (typeof mi == "function") if (typeof Fn == "number") for (Nn = 0; Nn < Fn; ++Nn) Cn.call(this, null, mi, Nn);
                      else if (Array.isArray(Fn)) for (Nn = 0; Nn < Fn.length; ++Nn) Cn.call(this, Fn[Nn], mi, Nn);
                      else return Cn.call(this, Fn, mi, 0);
                      else if (typeof Fn == "number") {
                        if (0 < Fn) return rn.call(this, qn(Fn | 0), Fn | 0);
                      } else if (Array.isArray(Fn)) {
                        if (Fn.length) return rn.call(
                          this,
                          Fn,
                          Fn.length
                        );
                      } else return ci.call(this, Fn);
                    }, { stats: Mi, destroy: function() {
                      Ji.destroy();
                    } });
                  }
                  function Pe(kn, An) {
                    var qn = 0;
                    Jr.procs.poll();
                    var si = An.color;
                    si && (Sr.clearColor(+si[0] || 0, +si[1] || 0, +si[2] || 0, +si[3] || 0), qn |= 16384), "depth" in An && (Sr.clearDepth(+An.depth), qn |= 256), "stencil" in An && (Sr.clearStencil(An.stencil | 0), qn |= 1024), Sr.clear(qn);
                  }
                  function Ue(kn) {
                    return Vn.push(kn), Je(), { cancel: function() {
                      function An() {
                        var si = ct(Vn, An);
                        Vn[si] = Vn[Vn.length - 1], --Vn.length, 0 >= Vn.length && dr();
                      }
                      var qn = ct(Vn, kn);
                      Vn[qn] = An;
                    } };
                  }
                  function Ye() {
                    var kn = fn.viewport, An = fn.scissor_box;
                    kn[0] = kn[1] = An[0] = An[1] = 0, or.viewportWidth = or.framebufferWidth = or.drawingBufferWidth = kn[2] = An[2] = Sr.drawingBufferWidth, or.viewportHeight = or.framebufferHeight = or.drawingBufferHeight = kn[3] = An[3] = Sr.drawingBufferHeight;
                  }
                  function rr() {
                    or.tick += 1, or.time = hr(), Ye(), Jr.procs.poll();
                  }
                  function lr() {
                    _r.refresh(), Ye(), Jr.procs.refresh(), Gr && Gr.update();
                  }
                  function hr() {
                    return (Ct() - oe) / 1e3;
                  }
                  if (qt = u(qt), !qt) return null;
                  var Sr = qt.gl, Dr = Sr.getContextAttributes();
                  Sr.isContextLost();
                  var Or = t(Sr, qt);
                  if (!Or) return null;
                  var Zn = n(), Br = {
                    vaoCount: 0,
                    bufferCount: 0,
                    elementsCount: 0,
                    framebufferCount: 0,
                    shaderCount: 0,
                    textureCount: 0,
                    cubeCount: 0,
                    renderbufferCount: 0,
                    maxTextureUnits: 0
                  }, Nr = qt.cachedCode || {}, Xr = Or.extensions, Gr = Le(Sr, Xr), oe = Ct(), Er = Sr.drawingBufferWidth, de = Sr.drawingBufferHeight, or = { tick: 0, time: 0, viewportWidth: Er, viewportHeight: de, framebufferWidth: Er, framebufferHeight: de, drawingBufferWidth: Er, drawingBufferHeight: de, pixelRatio: qt.pixelRatio }, Er = { elements: null, primitive: 4, count: -1, offset: 0, instances: -1 }, Tr = Jt(Sr, Xr), tr = v(Sr, Br, qt, function(kn) {
                    return Ir.destroyBuffer(kn);
                  }), yr = f(Sr, Xr, tr, Br), Ir = B(
                    Sr,
                    Xr,
                    Tr,
                    Br,
                    tr,
                    yr,
                    Er
                  ), Cr = V(Sr, Zn, Br, qt), _r = w(Sr, Xr, Tr, function() {
                    Jr.procs.poll();
                  }, or, Br, qt), Zr = Mt(Sr, Xr, Tr, Br, qt), ln = z(Sr, Xr, Tr, _r, Zr, Br), Jr = X(Sr, Zn, Xr, Tr, tr, yr, _r, ln, {}, Ir, Cr, Er, or, Gr, Nr, qt), Zn = U(Sr, ln, Jr.procs.poll, or), fn = Jr.next, hi = Sr.canvas, Vn = [], jr = [], zr = [], Tn = [qt.onDestroy], sn = null;
                  hi && (hi.addEventListener("webglcontextlost", qe, !1), hi.addEventListener("webglcontextrestored", we, !1));
                  var $n = ln.setFBO = ue({ framebuffer: wt.define.call(null, 1, "framebuffer") });
                  return lr(), Dr = lt(ue, {
                    clear: function(kn) {
                      if ("framebuffer" in kn) if (kn.framebuffer && kn.framebuffer_reglType === "framebufferCube") for (var An = 0; 6 > An; ++An) $n(lt({ framebuffer: kn.framebuffer.faces[An] }, kn), Pe);
                      else $n(kn, Pe);
                      else Pe(null, kn);
                    },
                    prop: wt.define.bind(null, 1),
                    context: wt.define.bind(null, 2),
                    this: wt.define.bind(null, 3),
                    draw: ue({}),
                    buffer: function(kn) {
                      return tr.create(kn, 34962, !1, !1);
                    },
                    elements: function(kn) {
                      return yr.create(kn, !1);
                    },
                    texture: _r.create2D,
                    cube: _r.createCube,
                    renderbuffer: Zr.create,
                    framebuffer: ln.create,
                    framebufferCube: ln.createCube,
                    vao: Ir.createVAO,
                    attributes: Dr,
                    frame: Ue,
                    on: function(kn, An) {
                      var qn;
                      switch (kn) {
                        case "frame":
                          return Ue(An);
                        case "lost":
                          qn = jr;
                          break;
                        case "restore":
                          qn = zr;
                          break;
                        case "destroy":
                          qn = Tn;
                      }
                      return qn.push(An), { cancel: function() {
                        for (var si = 0; si < qn.length; ++si) if (qn[si] === An) {
                          qn[si] = qn[qn.length - 1], qn.pop();
                          break;
                        }
                      } };
                    },
                    limits: Tr,
                    hasExtension: function(kn) {
                      return 0 <= Tr.extensions.indexOf(kn.toLowerCase());
                    },
                    read: Zn,
                    destroy: function() {
                      Vn.length = 0, dr(), hi && (hi.removeEventListener("webglcontextlost", qe), hi.removeEventListener("webglcontextrestored", we)), Cr.clear(), ln.clear(), Zr.clear(), Ir.clear(), _r.clear(), yr.clear(), tr.clear(), Gr && Gr.clear(), Tn.forEach(function(kn) {
                        kn();
                      });
                    },
                    _gl: Sr,
                    _refresh: lr,
                    poll: function() {
                      rr(), Gr && Gr.update();
                    },
                    now: hr,
                    stats: Br,
                    getCachedCode: function() {
                      return Nr;
                    },
                    preloadCachedCode: function(kn) {
                      Object.entries(kn).forEach(function(An) {
                        Nr[An[0]] = An[1];
                      });
                    }
                  }), qt.onDone(null, Dr), Dr;
                };
              });
            }
          ),
          /***/
          41041: (
            /***/
            function(Y, K, e) {
              /*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
              var b = e(45708), P = b.Buffer;
              function n(T, A) {
                for (var p in T)
                  A[p] = T[p];
              }
              P.from && P.alloc && P.allocUnsafe && P.allocUnsafeSlow ? Y.exports = b : (n(b, K), K.Buffer = s);
              function s(T, A, p) {
                return P(T, A, p);
              }
              s.prototype = Object.create(P.prototype), n(P, s), s.from = function(T, A, p) {
                if (typeof T == "number")
                  throw new TypeError("Argument must not be a number");
                return P(T, A, p);
              }, s.alloc = function(T, A, p) {
                if (typeof T != "number")
                  throw new TypeError("Argument must be a number");
                var u = P(T);
                return A !== void 0 ? typeof p == "string" ? u.fill(A, p) : u.fill(A) : u.fill(0), u;
              }, s.allocUnsafe = function(T) {
                if (typeof T != "number")
                  throw new TypeError("Argument must be a number");
                return P(T);
              }, s.allocUnsafeSlow = function(T) {
                if (typeof T != "number")
                  throw new TypeError("Argument must be a number");
                return b.SlowBuffer(T);
              };
            }
          ),
          /***/
          73285: (
            /***/
            function(Y, K, e) {
              var b = e(71129), P = e(70973), n = e(74268)(), s = e(52991), T = e(48631), A = b("%Math.floor%");
              Y.exports = function(u, t) {
                if (typeof u != "function")
                  throw new T("`fn` is not a function");
                if (typeof t != "number" || t < 0 || t > 4294967295 || A(t) !== t)
                  throw new T("`length` must be a positive 32-bit integer");
                var r = arguments.length > 2 && !!arguments[2], i = !0, a = !0;
                if ("length" in u && s) {
                  var l = s(u, "length");
                  l && !l.configurable && (i = !1), l && !l.writable && (a = !1);
                }
                return (i || a || !r) && (n ? P(
                  /** @type {Parameters<define>[0]} */
                  u,
                  "length",
                  t,
                  !0,
                  !0
                ) : P(
                  /** @type {Parameters<define>[0]} */
                  u,
                  "length",
                  t
                )), u;
              };
            }
          ),
          /***/
          90386: (
            /***/
            function(Y, K, e) {
              Y.exports = n;
              var b = e(7683).EventEmitter, P = e(28062);
              P(n, b), n.Readable = e(44639), n.Writable = e(84627), n.Duplex = e(71977), n.Transform = e(40255), n.PassThrough = e(28765), n.finished = e(37165), n.pipeline = e(6772), n.Stream = n;
              function n() {
                b.call(this);
              }
              n.prototype.pipe = function(s, T) {
                var A = this;
                function p(o) {
                  s.writable && s.write(o) === !1 && A.pause && A.pause();
                }
                A.on("data", p);
                function u() {
                  A.readable && A.resume && A.resume();
                }
                s.on("drain", u), !s._isStdio && (!T || T.end !== !1) && (A.on("end", r), A.on("close", i));
                var t = !1;
                function r() {
                  t || (t = !0, s.end());
                }
                function i() {
                  t || (t = !0, typeof s.destroy == "function" && s.destroy());
                }
                function a(o) {
                  if (l(), b.listenerCount(this, "error") === 0)
                    throw o;
                }
                A.on("error", a), s.on("error", a);
                function l() {
                  A.removeListener("data", p), s.removeListener("drain", u), A.removeListener("end", r), A.removeListener("close", i), A.removeListener("error", a), s.removeListener("error", a), A.removeListener("end", l), A.removeListener("close", l), s.removeListener("close", l);
                }
                return A.on("end", l), A.on("close", l), s.on("close", l), s.emit("pipe", A), s;
              };
            }
          ),
          /***/
          44059: (
            /***/
            function(Y) {
              function K(A, p) {
                A.prototype = Object.create(p.prototype), A.prototype.constructor = A, A.__proto__ = p;
              }
              var e = {};
              function b(A, p, u) {
                u || (u = Error);
                function t(i, a, l) {
                  return typeof p == "string" ? p : p(i, a, l);
                }
                var r = /* @__PURE__ */ function(i) {
                  K(a, i);
                  function a(l, o, y) {
                    return i.call(this, t(l, o, y)) || this;
                  }
                  return a;
                }(u);
                r.prototype.name = u.name, r.prototype.code = A, e[A] = r;
              }
              function P(A, p) {
                if (Array.isArray(A)) {
                  var u = A.length;
                  return A = A.map(function(t) {
                    return String(t);
                  }), u > 2 ? "one of ".concat(p, " ").concat(A.slice(0, u - 1).join(", "), ", or ") + A[u - 1] : u === 2 ? "one of ".concat(p, " ").concat(A[0], " or ").concat(A[1]) : "of ".concat(p, " ").concat(A[0]);
                } else
                  return "of ".concat(p, " ").concat(String(A));
              }
              function n(A, p, u) {
                return A.substr(0, p.length) === p;
              }
              function s(A, p, u) {
                return (u === void 0 || u > A.length) && (u = A.length), A.substring(u - p.length, u) === p;
              }
              function T(A, p, u) {
                return typeof u != "number" && (u = 0), u + p.length > A.length ? !1 : A.indexOf(p, u) !== -1;
              }
              b("ERR_INVALID_OPT_VALUE", function(A, p) {
                return 'The value "' + p + '" is invalid for option "' + A + '"';
              }, TypeError), b("ERR_INVALID_ARG_TYPE", function(A, p, u) {
                var t;
                typeof p == "string" && n(p, "not ") ? (t = "must not be", p = p.replace(/^not /, "")) : t = "must be";
                var r;
                if (s(A, " argument"))
                  r = "The ".concat(A, " ").concat(t, " ").concat(P(p, "type"));
                else {
                  var i = T(A, ".") ? "property" : "argument";
                  r = 'The "'.concat(A, '" ').concat(i, " ").concat(t, " ").concat(P(p, "type"));
                }
                return r += ". Received type ".concat(typeof u), r;
              }, TypeError), b("ERR_STREAM_PUSH_AFTER_EOF", "stream.push() after EOF"), b("ERR_METHOD_NOT_IMPLEMENTED", function(A) {
                return "The " + A + " method is not implemented";
              }), b("ERR_STREAM_PREMATURE_CLOSE", "Premature close"), b("ERR_STREAM_DESTROYED", function(A) {
                return "Cannot call " + A + " after a stream was destroyed";
              }), b("ERR_MULTIPLE_CALLBACK", "Callback called multiple times"), b("ERR_STREAM_CANNOT_PIPE", "Cannot pipe, not readable"), b("ERR_STREAM_WRITE_AFTER_END", "write after end"), b("ERR_STREAM_NULL_VALUES", "May not write null values to stream", TypeError), b("ERR_UNKNOWN_ENCODING", function(A) {
                return "Unknown encoding: " + A;
              }, TypeError), b("ERR_STREAM_UNSHIFT_AFTER_END_EVENT", "stream.unshift() after end event"), Y.exports.F = e;
            }
          ),
          /***/
          71977: (
            /***/
            function(Y, K, e) {
              var b = e(33282), P = Object.keys || function(i) {
                var a = [];
                for (var l in i)
                  a.push(l);
                return a;
              };
              Y.exports = u;
              var n = e(44639), s = e(84627);
              e(28062)(u, n);
              for (var T = P(s.prototype), A = 0; A < T.length; A++) {
                var p = T[A];
                u.prototype[p] || (u.prototype[p] = s.prototype[p]);
              }
              function u(i) {
                if (!(this instanceof u)) return new u(i);
                n.call(this, i), s.call(this, i), this.allowHalfOpen = !0, i && (i.readable === !1 && (this.readable = !1), i.writable === !1 && (this.writable = !1), i.allowHalfOpen === !1 && (this.allowHalfOpen = !1, this.once("end", t)));
              }
              Object.defineProperty(u.prototype, "writableHighWaterMark", {
                // making it explicit this property is not enumerable
                // because otherwise some prototype manipulation in
                // userland will fail
                enumerable: !1,
                get: function() {
                  return this._writableState.highWaterMark;
                }
              }), Object.defineProperty(u.prototype, "writableBuffer", {
                // making it explicit this property is not enumerable
                // because otherwise some prototype manipulation in
                // userland will fail
                enumerable: !1,
                get: function() {
                  return this._writableState && this._writableState.getBuffer();
                }
              }), Object.defineProperty(u.prototype, "writableLength", {
                // making it explicit this property is not enumerable
                // because otherwise some prototype manipulation in
                // userland will fail
                enumerable: !1,
                get: function() {
                  return this._writableState.length;
                }
              });
              function t() {
                this._writableState.ended || b.nextTick(r, this);
              }
              function r(i) {
                i.end();
              }
              Object.defineProperty(u.prototype, "destroyed", {
                // making it explicit this property is not enumerable
                // because otherwise some prototype manipulation in
                // userland will fail
                enumerable: !1,
                get: function() {
                  return this._readableState === void 0 || this._writableState === void 0 ? !1 : this._readableState.destroyed && this._writableState.destroyed;
                },
                set: function(a) {
                  this._readableState === void 0 || this._writableState === void 0 || (this._readableState.destroyed = a, this._writableState.destroyed = a);
                }
              });
            }
          ),
          /***/
          28765: (
            /***/
            function(Y, K, e) {
              Y.exports = P;
              var b = e(40255);
              e(28062)(P, b);
              function P(n) {
                if (!(this instanceof P)) return new P(n);
                b.call(this, n);
              }
              P.prototype._transform = function(n, s, T) {
                T(null, n);
              };
            }
          ),
          /***/
          44639: (
            /***/
            function(Y, K, e) {
              var b = e(33282);
              Y.exports = d;
              var P;
              d.ReadableState = L, e(7683).EventEmitter;
              var n = function(X, ct) {
                return X.listeners(ct).length;
              }, s = e(60032), T = e(45708).Buffer, A = e.g.Uint8Array || function() {
              };
              function p(nt) {
                return T.from(nt);
              }
              function u(nt) {
                return T.isBuffer(nt) || nt instanceof A;
              }
              var t = e(77199), r;
              t && t.debuglog ? r = t.debuglog("stream") : r = function() {
              };
              var i = e(29930), a = e(52023), l = e(31976), o = l.getHighWaterMark, y = e(44059).F, g = y.ERR_INVALID_ARG_TYPE, x = y.ERR_STREAM_PUSH_AFTER_EOF, c = y.ERR_METHOD_NOT_IMPLEMENTED, v = y.ERR_STREAM_UNSHIFT_AFTER_END_EVENT, f, _, S;
              e(28062)(d, s);
              var M = a.errorOrDestroy, C = ["error", "close", "destroy", "pause", "resume"];
              function m(nt, X, ct) {
                if (typeof nt.prependListener == "function") return nt.prependListener(X, ct);
                !nt._events || !nt._events[X] ? nt.on(X, ct) : Array.isArray(nt._events[X]) ? nt._events[X].unshift(ct) : nt._events[X] = [ct, nt._events[X]];
              }
              function L(nt, X, ct) {
                P = P || e(71977), nt = nt || {}, typeof ct != "boolean" && (ct = X instanceof P), this.objectMode = !!nt.objectMode, ct && (this.objectMode = this.objectMode || !!nt.readableObjectMode), this.highWaterMark = o(this, nt, "readableHighWaterMark", ct), this.buffer = new i(), this.length = 0, this.pipes = null, this.pipesCount = 0, this.flowing = null, this.ended = !1, this.endEmitted = !1, this.reading = !1, this.sync = !0, this.needReadable = !1, this.emittedReadable = !1, this.readableListening = !1, this.resumeScheduled = !1, this.paused = !0, this.emitClose = nt.emitClose !== !1, this.autoDestroy = !!nt.autoDestroy, this.destroyed = !1, this.defaultEncoding = nt.defaultEncoding || "utf8", this.awaitDrain = 0, this.readingMore = !1, this.decoder = null, this.encoding = null, nt.encoding && (f || (f = e(54304).I), this.decoder = new f(nt.encoding), this.encoding = nt.encoding);
              }
              function d(nt) {
                if (P = P || e(71977), !(this instanceof d)) return new d(nt);
                var X = this instanceof P;
                this._readableState = new L(nt, this, X), this.readable = !0, nt && (typeof nt.read == "function" && (this._read = nt.read), typeof nt.destroy == "function" && (this._destroy = nt.destroy)), s.call(this);
              }
              Object.defineProperty(d.prototype, "destroyed", {
                // making it explicit this property is not enumerable
                // because otherwise some prototype manipulation in
                // userland will fail
                enumerable: !1,
                get: function() {
                  return this._readableState === void 0 ? !1 : this._readableState.destroyed;
                },
                set: function(X) {
                  this._readableState && (this._readableState.destroyed = X);
                }
              }), d.prototype.destroy = a.destroy, d.prototype._undestroy = a.undestroy, d.prototype._destroy = function(nt, X) {
                X(nt);
              }, d.prototype.push = function(nt, X) {
                var ct = this._readableState, lt;
                return ct.objectMode ? lt = !0 : typeof nt == "string" && (X = X || ct.defaultEncoding, X !== ct.encoding && (nt = T.from(nt, X), X = ""), lt = !0), h(this, nt, X, !1, lt);
              }, d.prototype.unshift = function(nt) {
                return h(this, nt, null, !0, !1);
              };
              function h(nt, X, ct, lt, pt) {
                r("readableAddChunk", X);
                var wt = nt._readableState;
                if (X === null)
                  wt.reading = !1, V(nt, wt);
                else {
                  var Et;
                  if (pt || (Et = w(wt, X)), Et)
                    M(nt, Et);
                  else if (wt.objectMode || X && X.length > 0)
                    if (typeof X != "string" && !wt.objectMode && Object.getPrototypeOf(X) !== T.prototype && (X = p(X)), lt)
                      wt.endEmitted ? M(nt, new v()) : E(nt, wt, X, !0);
                    else if (wt.ended)
                      M(nt, new x());
                    else {
                      if (wt.destroyed)
                        return !1;
                      wt.reading = !1, wt.decoder && !ct ? (X = wt.decoder.write(X), wt.objectMode || X.length !== 0 ? E(nt, wt, X, !1) : F(nt, wt)) : E(nt, wt, X, !1);
                    }
                  else lt || (wt.reading = !1, F(nt, wt));
                }
                return !wt.ended && (wt.length < wt.highWaterMark || wt.length === 0);
              }
              function E(nt, X, ct, lt) {
                X.flowing && X.length === 0 && !X.sync ? (X.awaitDrain = 0, nt.emit("data", ct)) : (X.length += X.objectMode ? 1 : ct.length, lt ? X.buffer.unshift(ct) : X.buffer.push(ct), X.needReadable && U(nt)), F(nt, X);
              }
              function w(nt, X) {
                var ct;
                return !u(X) && typeof X != "string" && X !== void 0 && !nt.objectMode && (ct = new g("chunk", ["string", "Buffer", "Uint8Array"], X)), ct;
              }
              d.prototype.isPaused = function() {
                return this._readableState.flowing === !1;
              }, d.prototype.setEncoding = function(nt) {
                f || (f = e(54304).I);
                var X = new f(nt);
                this._readableState.decoder = X, this._readableState.encoding = this._readableState.decoder.encoding;
                for (var ct = this._readableState.buffer.head, lt = ""; ct !== null; )
                  lt += X.write(ct.data), ct = ct.next;
                return this._readableState.buffer.clear(), lt !== "" && this._readableState.buffer.push(lt), this._readableState.length = lt.length, this;
              };
              var z = 1073741824;
              function O(nt) {
                return nt >= z ? nt = z : (nt--, nt |= nt >>> 1, nt |= nt >>> 2, nt |= nt >>> 4, nt |= nt >>> 8, nt |= nt >>> 16, nt++), nt;
              }
              function B(nt, X) {
                return nt <= 0 || X.length === 0 && X.ended ? 0 : X.objectMode ? 1 : nt !== nt ? X.flowing && X.length ? X.buffer.head.data.length : X.length : (nt > X.highWaterMark && (X.highWaterMark = O(nt)), nt <= X.length ? nt : X.ended ? X.length : (X.needReadable = !0, 0));
              }
              d.prototype.read = function(nt) {
                r("read", nt), nt = parseInt(nt, 10);
                var X = this._readableState, ct = nt;
                if (nt !== 0 && (X.emittedReadable = !1), nt === 0 && X.needReadable && ((X.highWaterMark !== 0 ? X.length >= X.highWaterMark : X.length > 0) || X.ended))
                  return r("read: emitReadable", X.length, X.ended), X.length === 0 && X.ended ? j(this) : U(this), null;
                if (nt = B(nt, X), nt === 0 && X.ended)
                  return X.length === 0 && j(this), null;
                var lt = X.needReadable;
                r("need readable", lt), (X.length === 0 || X.length - nt < X.highWaterMark) && (lt = !0, r("length less than watermark", lt)), X.ended || X.reading ? (lt = !1, r("reading or ended", lt)) : lt && (r("do read"), X.reading = !0, X.sync = !0, X.length === 0 && (X.needReadable = !0), this._read(X.highWaterMark), X.sync = !1, X.reading || (nt = B(ct, X)));
                var pt;
                return nt > 0 ? pt = Q(nt, X) : pt = null, pt === null ? (X.needReadable = X.length <= X.highWaterMark, nt = 0) : (X.length -= nt, X.awaitDrain = 0), X.length === 0 && (X.ended || (X.needReadable = !0), ct !== nt && X.ended && j(this)), pt !== null && this.emit("data", pt), pt;
              };
              function V(nt, X) {
                if (r("onEofChunk"), !X.ended) {
                  if (X.decoder) {
                    var ct = X.decoder.end();
                    ct && ct.length && (X.buffer.push(ct), X.length += X.objectMode ? 1 : ct.length);
                  }
                  X.ended = !0, X.sync ? U(nt) : (X.needReadable = !1, X.emittedReadable || (X.emittedReadable = !0, H(nt)));
                }
              }
              function U(nt) {
                var X = nt._readableState;
                r("emitReadable", X.needReadable, X.emittedReadable), X.needReadable = !1, X.emittedReadable || (r("emitReadable", X.flowing), X.emittedReadable = !0, b.nextTick(H, nt));
              }
              function H(nt) {
                var X = nt._readableState;
                r("emitReadable_", X.destroyed, X.length, X.ended), !X.destroyed && (X.length || X.ended) && (nt.emit("readable"), X.emittedReadable = !1), X.needReadable = !X.flowing && !X.ended && X.length <= X.highWaterMark, et(nt);
              }
              function F(nt, X) {
                X.readingMore || (X.readingMore = !0, b.nextTick(G, nt, X));
              }
              function G(nt, X) {
                for (; !X.reading && !X.ended && (X.length < X.highWaterMark || X.flowing && X.length === 0); ) {
                  var ct = X.length;
                  if (r("maybeReadMore read 0"), nt.read(0), ct === X.length)
                    break;
                }
                X.readingMore = !1;
              }
              d.prototype._read = function(nt) {
                M(this, new c("_read()"));
              }, d.prototype.pipe = function(nt, X) {
                var ct = this, lt = this._readableState;
                switch (lt.pipesCount) {
                  case 0:
                    lt.pipes = nt;
                    break;
                  case 1:
                    lt.pipes = [lt.pipes, nt];
                    break;
                  default:
                    lt.pipes.push(nt);
                    break;
                }
                lt.pipesCount += 1, r("pipe count=%d opts=%j", lt.pipesCount, X);
                var pt = (!X || X.end !== !1) && nt !== b.stdout && nt !== b.stderr, wt = pt ? Ct : kt;
                lt.endEmitted ? b.nextTick(wt) : ct.once("end", wt), nt.on("unpipe", Et);
                function Et(re, ge) {
                  r("onunpipe"), re === ct && ge && ge.hasUnpiped === !1 && (ge.hasUnpiped = !0, Qt());
                }
                function Ct() {
                  r("onend"), nt.end();
                }
                var Gt = q(ct);
                nt.on("drain", Gt);
                var Jt = !1;
                function Qt() {
                  r("cleanup"), nt.removeListener("close", Rt), nt.removeListener("finish", Wt), nt.removeListener("drain", Gt), nt.removeListener("error", zt), nt.removeListener("unpipe", Et), ct.removeListener("end", Ct), ct.removeListener("end", kt), ct.removeListener("data", Vt), Jt = !0, lt.awaitDrain && (!nt._writableState || nt._writableState.needDrain) && Gt();
                }
                ct.on("data", Vt);
                function Vt(re) {
                  r("ondata");
                  var ge = nt.write(re);
                  r("dest.write", ge), ge === !1 && ((lt.pipesCount === 1 && lt.pipes === nt || lt.pipesCount > 1 && ut(lt.pipes, nt) !== -1) && !Jt && (r("false write response, pause", lt.awaitDrain), lt.awaitDrain++), ct.pause());
                }
                function zt(re) {
                  r("onerror", re), kt(), nt.removeListener("error", zt), n(nt, "error") === 0 && M(nt, re);
                }
                m(nt, "error", zt);
                function Rt() {
                  nt.removeListener("finish", Wt), kt();
                }
                nt.once("close", Rt);
                function Wt() {
                  r("onfinish"), nt.removeListener("close", Rt), kt();
                }
                nt.once("finish", Wt);
                function kt() {
                  r("unpipe"), ct.unpipe(nt);
                }
                return nt.emit("pipe", ct), lt.flowing || (r("pipe resume"), ct.resume()), nt;
              };
              function q(nt) {
                return function() {
                  var ct = nt._readableState;
                  r("pipeOnDrain", ct.awaitDrain), ct.awaitDrain && ct.awaitDrain--, ct.awaitDrain === 0 && n(nt, "data") && (ct.flowing = !0, et(nt));
                };
              }
              d.prototype.unpipe = function(nt) {
                var X = this._readableState, ct = {
                  hasUnpiped: !1
                };
                if (X.pipesCount === 0) return this;
                if (X.pipesCount === 1)
                  return nt && nt !== X.pipes ? this : (nt || (nt = X.pipes), X.pipes = null, X.pipesCount = 0, X.flowing = !1, nt && nt.emit("unpipe", this, ct), this);
                if (!nt) {
                  var lt = X.pipes, pt = X.pipesCount;
                  X.pipes = null, X.pipesCount = 0, X.flowing = !1;
                  for (var wt = 0; wt < pt; wt++)
                    lt[wt].emit("unpipe", this, {
                      hasUnpiped: !1
                    });
                  return this;
                }
                var Et = ut(X.pipes, nt);
                return Et === -1 ? this : (X.pipes.splice(Et, 1), X.pipesCount -= 1, X.pipesCount === 1 && (X.pipes = X.pipes[0]), nt.emit("unpipe", this, ct), this);
              }, d.prototype.on = function(nt, X) {
                var ct = s.prototype.on.call(this, nt, X), lt = this._readableState;
                return nt === "data" ? (lt.readableListening = this.listenerCount("readable") > 0, lt.flowing !== !1 && this.resume()) : nt === "readable" && !lt.endEmitted && !lt.readableListening && (lt.readableListening = lt.needReadable = !0, lt.flowing = !1, lt.emittedReadable = !1, r("on readable", lt.length, lt.reading), lt.length ? U(this) : lt.reading || b.nextTick(st, this)), ct;
              }, d.prototype.addListener = d.prototype.on, d.prototype.removeListener = function(nt, X) {
                var ct = s.prototype.removeListener.call(this, nt, X);
                return nt === "readable" && b.nextTick(rt, this), ct;
              }, d.prototype.removeAllListeners = function(nt) {
                var X = s.prototype.removeAllListeners.apply(this, arguments);
                return (nt === "readable" || nt === void 0) && b.nextTick(rt, this), X;
              };
              function rt(nt) {
                var X = nt._readableState;
                X.readableListening = nt.listenerCount("readable") > 0, X.resumeScheduled && !X.paused ? X.flowing = !0 : nt.listenerCount("data") > 0 && nt.resume();
              }
              function st(nt) {
                r("readable nexttick read 0"), nt.read(0);
              }
              d.prototype.resume = function() {
                var nt = this._readableState;
                return nt.flowing || (r("resume"), nt.flowing = !nt.readableListening, vt(this, nt)), nt.paused = !1, this;
              };
              function vt(nt, X) {
                X.resumeScheduled || (X.resumeScheduled = !0, b.nextTick(ht, nt, X));
              }
              function ht(nt, X) {
                r("resume", X.reading), X.reading || nt.read(0), X.resumeScheduled = !1, nt.emit("resume"), et(nt), X.flowing && !X.reading && nt.read(0);
              }
              d.prototype.pause = function() {
                return r("call pause flowing=%j", this._readableState.flowing), this._readableState.flowing !== !1 && (r("pause"), this._readableState.flowing = !1, this.emit("pause")), this._readableState.paused = !0, this;
              };
              function et(nt) {
                var X = nt._readableState;
                for (r("flow", X.flowing); X.flowing && nt.read() !== null; )
                  ;
              }
              d.prototype.wrap = function(nt) {
                var X = this, ct = this._readableState, lt = !1;
                nt.on("end", function() {
                  if (r("wrapped end"), ct.decoder && !ct.ended) {
                    var Et = ct.decoder.end();
                    Et && Et.length && X.push(Et);
                  }
                  X.push(null);
                }), nt.on("data", function(Et) {
                  if (r("wrapped data"), ct.decoder && (Et = ct.decoder.write(Et)), !(ct.objectMode && Et == null) && !(!ct.objectMode && (!Et || !Et.length))) {
                    var Ct = X.push(Et);
                    Ct || (lt = !0, nt.pause());
                  }
                });
                for (var pt in nt)
                  this[pt] === void 0 && typeof nt[pt] == "function" && (this[pt] = /* @__PURE__ */ function(Ct) {
                    return function() {
                      return nt[Ct].apply(nt, arguments);
                    };
                  }(pt));
                for (var wt = 0; wt < C.length; wt++)
                  nt.on(C[wt], this.emit.bind(this, C[wt]));
                return this._read = function(Et) {
                  r("wrapped _read", Et), lt && (lt = !1, nt.resume());
                }, this;
              }, typeof Symbol == "function" && (d.prototype[Symbol.asyncIterator] = function() {
                return _ === void 0 && (_ = e(73726)), _(this);
              }), Object.defineProperty(d.prototype, "readableHighWaterMark", {
                // making it explicit this property is not enumerable
                // because otherwise some prototype manipulation in
                // userland will fail
                enumerable: !1,
                get: function() {
                  return this._readableState.highWaterMark;
                }
              }), Object.defineProperty(d.prototype, "readableBuffer", {
                // making it explicit this property is not enumerable
                // because otherwise some prototype manipulation in
                // userland will fail
                enumerable: !1,
                get: function() {
                  return this._readableState && this._readableState.buffer;
                }
              }), Object.defineProperty(d.prototype, "readableFlowing", {
                // making it explicit this property is not enumerable
                // because otherwise some prototype manipulation in
                // userland will fail
                enumerable: !1,
                get: function() {
                  return this._readableState.flowing;
                },
                set: function(X) {
                  this._readableState && (this._readableState.flowing = X);
                }
              }), d._fromList = Q, Object.defineProperty(d.prototype, "readableLength", {
                // making it explicit this property is not enumerable
                // because otherwise some prototype manipulation in
                // userland will fail
                enumerable: !1,
                get: function() {
                  return this._readableState.length;
                }
              });
              function Q(nt, X) {
                if (X.length === 0) return null;
                var ct;
                return X.objectMode ? ct = X.buffer.shift() : !nt || nt >= X.length ? (X.decoder ? ct = X.buffer.join("") : X.buffer.length === 1 ? ct = X.buffer.first() : ct = X.buffer.concat(X.length), X.buffer.clear()) : ct = X.buffer.consume(nt, X.decoder), ct;
              }
              function j(nt) {
                var X = nt._readableState;
                r("endReadable", X.endEmitted), X.endEmitted || (X.ended = !0, b.nextTick(at, X, nt));
              }
              function at(nt, X) {
                if (r("endReadableNT", nt.endEmitted, nt.length), !nt.endEmitted && nt.length === 0 && (nt.endEmitted = !0, X.readable = !1, X.emit("end"), nt.autoDestroy)) {
                  var ct = X._writableState;
                  (!ct || ct.autoDestroy && ct.finished) && X.destroy();
                }
              }
              typeof Symbol == "function" && (d.from = function(nt, X) {
                return S === void 0 && (S = e(37108)), S(d, nt, X);
              });
              function ut(nt, X) {
                for (var ct = 0, lt = nt.length; ct < lt; ct++)
                  if (nt[ct] === X) return ct;
                return -1;
              }
            }
          ),
          /***/
          40255: (
            /***/
            function(Y, K, e) {
              Y.exports = u;
              var b = e(44059).F, P = b.ERR_METHOD_NOT_IMPLEMENTED, n = b.ERR_MULTIPLE_CALLBACK, s = b.ERR_TRANSFORM_ALREADY_TRANSFORMING, T = b.ERR_TRANSFORM_WITH_LENGTH_0, A = e(71977);
              e(28062)(u, A);
              function p(i, a) {
                var l = this._transformState;
                l.transforming = !1;
                var o = l.writecb;
                if (o === null)
                  return this.emit("error", new n());
                l.writechunk = null, l.writecb = null, a != null && this.push(a), o(i);
                var y = this._readableState;
                y.reading = !1, (y.needReadable || y.length < y.highWaterMark) && this._read(y.highWaterMark);
              }
              function u(i) {
                if (!(this instanceof u)) return new u(i);
                A.call(this, i), this._transformState = {
                  afterTransform: p.bind(this),
                  needTransform: !1,
                  transforming: !1,
                  writecb: null,
                  writechunk: null,
                  writeencoding: null
                }, this._readableState.needReadable = !0, this._readableState.sync = !1, i && (typeof i.transform == "function" && (this._transform = i.transform), typeof i.flush == "function" && (this._flush = i.flush)), this.on("prefinish", t);
              }
              function t() {
                var i = this;
                typeof this._flush == "function" && !this._readableState.destroyed ? this._flush(function(a, l) {
                  r(i, a, l);
                }) : r(this, null, null);
              }
              u.prototype.push = function(i, a) {
                return this._transformState.needTransform = !1, A.prototype.push.call(this, i, a);
              }, u.prototype._transform = function(i, a, l) {
                l(new P("_transform()"));
              }, u.prototype._write = function(i, a, l) {
                var o = this._transformState;
                if (o.writecb = l, o.writechunk = i, o.writeencoding = a, !o.transforming) {
                  var y = this._readableState;
                  (o.needTransform || y.needReadable || y.length < y.highWaterMark) && this._read(y.highWaterMark);
                }
              }, u.prototype._read = function(i) {
                var a = this._transformState;
                a.writechunk !== null && !a.transforming ? (a.transforming = !0, this._transform(a.writechunk, a.writeencoding, a.afterTransform)) : a.needTransform = !0;
              }, u.prototype._destroy = function(i, a) {
                A.prototype._destroy.call(this, i, function(l) {
                  a(l);
                });
              };
              function r(i, a, l) {
                if (a) return i.emit("error", a);
                if (l != null && i.push(l), i._writableState.length) throw new T();
                if (i._transformState.transforming) throw new s();
                return i.push(null);
              }
            }
          ),
          /***/
          84627: (
            /***/
            function(Y, K, e) {
              var b = e(33282);
              Y.exports = L;
              function P(et) {
                var Q = this;
                this.next = null, this.entry = null, this.finish = function() {
                  ht(Q, et);
                };
              }
              var n;
              L.WritableState = C;
              var s = {
                deprecate: e(71103)
              }, T = e(60032), A = e(45708).Buffer, p = e.g.Uint8Array || function() {
              };
              function u(et) {
                return A.from(et);
              }
              function t(et) {
                return A.isBuffer(et) || et instanceof p;
              }
              var r = e(52023), i = e(31976), a = i.getHighWaterMark, l = e(44059).F, o = l.ERR_INVALID_ARG_TYPE, y = l.ERR_METHOD_NOT_IMPLEMENTED, g = l.ERR_MULTIPLE_CALLBACK, x = l.ERR_STREAM_CANNOT_PIPE, c = l.ERR_STREAM_DESTROYED, v = l.ERR_STREAM_NULL_VALUES, f = l.ERR_STREAM_WRITE_AFTER_END, _ = l.ERR_UNKNOWN_ENCODING, S = r.errorOrDestroy;
              e(28062)(L, T);
              function M() {
              }
              function C(et, Q, j) {
                n = n || e(71977), et = et || {}, typeof j != "boolean" && (j = Q instanceof n), this.objectMode = !!et.objectMode, j && (this.objectMode = this.objectMode || !!et.writableObjectMode), this.highWaterMark = a(this, et, "writableHighWaterMark", j), this.finalCalled = !1, this.needDrain = !1, this.ending = !1, this.ended = !1, this.finished = !1, this.destroyed = !1;
                var at = et.decodeStrings === !1;
                this.decodeStrings = !at, this.defaultEncoding = et.defaultEncoding || "utf8", this.length = 0, this.writing = !1, this.corked = 0, this.sync = !0, this.bufferProcessing = !1, this.onwrite = function(ut) {
                  V(Q, ut);
                }, this.writecb = null, this.writelen = 0, this.bufferedRequest = null, this.lastBufferedRequest = null, this.pendingcb = 0, this.prefinished = !1, this.errorEmitted = !1, this.emitClose = et.emitClose !== !1, this.autoDestroy = !!et.autoDestroy, this.bufferedRequestCount = 0, this.corkedRequestsFree = new P(this);
              }
              C.prototype.getBuffer = function() {
                for (var Q = this.bufferedRequest, j = []; Q; )
                  j.push(Q), Q = Q.next;
                return j;
              }, function() {
                try {
                  Object.defineProperty(C.prototype, "buffer", {
                    get: s.deprecate(function() {
                      return this.getBuffer();
                    }, "_writableState.buffer is deprecated. Use _writableState.getBuffer instead.", "DEP0003")
                  });
                } catch {
                }
              }();
              var m;
              typeof Symbol == "function" && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] == "function" ? (m = Function.prototype[Symbol.hasInstance], Object.defineProperty(L, Symbol.hasInstance, {
                value: function(Q) {
                  return m.call(this, Q) ? !0 : this !== L ? !1 : Q && Q._writableState instanceof C;
                }
              })) : m = function(Q) {
                return Q instanceof this;
              };
              function L(et) {
                n = n || e(71977);
                var Q = this instanceof n;
                if (!Q && !m.call(L, this)) return new L(et);
                this._writableState = new C(et, this, Q), this.writable = !0, et && (typeof et.write == "function" && (this._write = et.write), typeof et.writev == "function" && (this._writev = et.writev), typeof et.destroy == "function" && (this._destroy = et.destroy), typeof et.final == "function" && (this._final = et.final)), T.call(this);
              }
              L.prototype.pipe = function() {
                S(this, new x());
              };
              function d(et, Q) {
                var j = new f();
                S(et, j), b.nextTick(Q, j);
              }
              function h(et, Q, j, at) {
                var ut;
                return j === null ? ut = new v() : typeof j != "string" && !Q.objectMode && (ut = new o("chunk", ["string", "Buffer"], j)), ut ? (S(et, ut), b.nextTick(at, ut), !1) : !0;
              }
              L.prototype.write = function(et, Q, j) {
                var at = this._writableState, ut = !1, nt = !at.objectMode && t(et);
                return nt && !A.isBuffer(et) && (et = u(et)), typeof Q == "function" && (j = Q, Q = null), nt ? Q = "buffer" : Q || (Q = at.defaultEncoding), typeof j != "function" && (j = M), at.ending ? d(this, j) : (nt || h(this, at, et, j)) && (at.pendingcb++, ut = w(this, at, nt, et, Q, j)), ut;
              }, L.prototype.cork = function() {
                this._writableState.corked++;
              }, L.prototype.uncork = function() {
                var et = this._writableState;
                et.corked && (et.corked--, !et.writing && !et.corked && !et.bufferProcessing && et.bufferedRequest && F(this, et));
              }, L.prototype.setDefaultEncoding = function(Q) {
                if (typeof Q == "string" && (Q = Q.toLowerCase()), !(["hex", "utf8", "utf-8", "ascii", "binary", "base64", "ucs2", "ucs-2", "utf16le", "utf-16le", "raw"].indexOf((Q + "").toLowerCase()) > -1)) throw new _(Q);
                return this._writableState.defaultEncoding = Q, this;
              }, Object.defineProperty(L.prototype, "writableBuffer", {
                // making it explicit this property is not enumerable
                // because otherwise some prototype manipulation in
                // userland will fail
                enumerable: !1,
                get: function() {
                  return this._writableState && this._writableState.getBuffer();
                }
              });
              function E(et, Q, j) {
                return !et.objectMode && et.decodeStrings !== !1 && typeof Q == "string" && (Q = A.from(Q, j)), Q;
              }
              Object.defineProperty(L.prototype, "writableHighWaterMark", {
                // making it explicit this property is not enumerable
                // because otherwise some prototype manipulation in
                // userland will fail
                enumerable: !1,
                get: function() {
                  return this._writableState.highWaterMark;
                }
              });
              function w(et, Q, j, at, ut, nt) {
                if (!j) {
                  var X = E(Q, at, ut);
                  at !== X && (j = !0, ut = "buffer", at = X);
                }
                var ct = Q.objectMode ? 1 : at.length;
                Q.length += ct;
                var lt = Q.length < Q.highWaterMark;
                if (lt || (Q.needDrain = !0), Q.writing || Q.corked) {
                  var pt = Q.lastBufferedRequest;
                  Q.lastBufferedRequest = {
                    chunk: at,
                    encoding: ut,
                    isBuf: j,
                    callback: nt,
                    next: null
                  }, pt ? pt.next = Q.lastBufferedRequest : Q.bufferedRequest = Q.lastBufferedRequest, Q.bufferedRequestCount += 1;
                } else
                  z(et, Q, !1, ct, at, ut, nt);
                return lt;
              }
              function z(et, Q, j, at, ut, nt, X) {
                Q.writelen = at, Q.writecb = X, Q.writing = !0, Q.sync = !0, Q.destroyed ? Q.onwrite(new c("write")) : j ? et._writev(ut, Q.onwrite) : et._write(ut, nt, Q.onwrite), Q.sync = !1;
              }
              function O(et, Q, j, at, ut) {
                --Q.pendingcb, j ? (b.nextTick(ut, at), b.nextTick(st, et, Q), et._writableState.errorEmitted = !0, S(et, at)) : (ut(at), et._writableState.errorEmitted = !0, S(et, at), st(et, Q));
              }
              function B(et) {
                et.writing = !1, et.writecb = null, et.length -= et.writelen, et.writelen = 0;
              }
              function V(et, Q) {
                var j = et._writableState, at = j.sync, ut = j.writecb;
                if (typeof ut != "function") throw new g();
                if (B(j), Q) O(et, j, at, Q, ut);
                else {
                  var nt = G(j) || et.destroyed;
                  !nt && !j.corked && !j.bufferProcessing && j.bufferedRequest && F(et, j), at ? b.nextTick(U, et, j, nt, ut) : U(et, j, nt, ut);
                }
              }
              function U(et, Q, j, at) {
                j || H(et, Q), Q.pendingcb--, at(), st(et, Q);
              }
              function H(et, Q) {
                Q.length === 0 && Q.needDrain && (Q.needDrain = !1, et.emit("drain"));
              }
              function F(et, Q) {
                Q.bufferProcessing = !0;
                var j = Q.bufferedRequest;
                if (et._writev && j && j.next) {
                  var at = Q.bufferedRequestCount, ut = new Array(at), nt = Q.corkedRequestsFree;
                  nt.entry = j;
                  for (var X = 0, ct = !0; j; )
                    ut[X] = j, j.isBuf || (ct = !1), j = j.next, X += 1;
                  ut.allBuffers = ct, z(et, Q, !0, Q.length, ut, "", nt.finish), Q.pendingcb++, Q.lastBufferedRequest = null, nt.next ? (Q.corkedRequestsFree = nt.next, nt.next = null) : Q.corkedRequestsFree = new P(Q), Q.bufferedRequestCount = 0;
                } else {
                  for (; j; ) {
                    var lt = j.chunk, pt = j.encoding, wt = j.callback, Et = Q.objectMode ? 1 : lt.length;
                    if (z(et, Q, !1, Et, lt, pt, wt), j = j.next, Q.bufferedRequestCount--, Q.writing)
                      break;
                  }
                  j === null && (Q.lastBufferedRequest = null);
                }
                Q.bufferedRequest = j, Q.bufferProcessing = !1;
              }
              L.prototype._write = function(et, Q, j) {
                j(new y("_write()"));
              }, L.prototype._writev = null, L.prototype.end = function(et, Q, j) {
                var at = this._writableState;
                return typeof et == "function" ? (j = et, et = null, Q = null) : typeof Q == "function" && (j = Q, Q = null), et != null && this.write(et, Q), at.corked && (at.corked = 1, this.uncork()), at.ending || vt(this, at, j), this;
              }, Object.defineProperty(L.prototype, "writableLength", {
                // making it explicit this property is not enumerable
                // because otherwise some prototype manipulation in
                // userland will fail
                enumerable: !1,
                get: function() {
                  return this._writableState.length;
                }
              });
              function G(et) {
                return et.ending && et.length === 0 && et.bufferedRequest === null && !et.finished && !et.writing;
              }
              function q(et, Q) {
                et._final(function(j) {
                  Q.pendingcb--, j && S(et, j), Q.prefinished = !0, et.emit("prefinish"), st(et, Q);
                });
              }
              function rt(et, Q) {
                !Q.prefinished && !Q.finalCalled && (typeof et._final == "function" && !Q.destroyed ? (Q.pendingcb++, Q.finalCalled = !0, b.nextTick(q, et, Q)) : (Q.prefinished = !0, et.emit("prefinish")));
              }
              function st(et, Q) {
                var j = G(Q);
                if (j && (rt(et, Q), Q.pendingcb === 0 && (Q.finished = !0, et.emit("finish"), Q.autoDestroy))) {
                  var at = et._readableState;
                  (!at || at.autoDestroy && at.endEmitted) && et.destroy();
                }
                return j;
              }
              function vt(et, Q, j) {
                Q.ending = !0, st(et, Q), j && (Q.finished ? b.nextTick(j) : et.once("finish", j)), Q.ended = !0, et.writable = !1;
              }
              function ht(et, Q, j) {
                var at = et.entry;
                for (et.entry = null; at; ) {
                  var ut = at.callback;
                  Q.pendingcb--, ut(j), at = at.next;
                }
                Q.corkedRequestsFree.next = et;
              }
              Object.defineProperty(L.prototype, "destroyed", {
                // making it explicit this property is not enumerable
                // because otherwise some prototype manipulation in
                // userland will fail
                enumerable: !1,
                get: function() {
                  return this._writableState === void 0 ? !1 : this._writableState.destroyed;
                },
                set: function(Q) {
                  this._writableState && (this._writableState.destroyed = Q);
                }
              }), L.prototype.destroy = r.destroy, L.prototype._undestroy = r.undestroy, L.prototype._destroy = function(et, Q) {
                Q(et);
              };
            }
          ),
          /***/
          73726: (
            /***/
            function(Y, K, e) {
              var b = e(33282), P;
              function n(v, f, _) {
                return f in v ? Object.defineProperty(v, f, { value: _, enumerable: !0, configurable: !0, writable: !0 }) : v[f] = _, v;
              }
              var s = e(37165), T = Symbol("lastResolve"), A = Symbol("lastReject"), p = Symbol("error"), u = Symbol("ended"), t = Symbol("lastPromise"), r = Symbol("handlePromise"), i = Symbol("stream");
              function a(v, f) {
                return {
                  value: v,
                  done: f
                };
              }
              function l(v) {
                var f = v[T];
                if (f !== null) {
                  var _ = v[i].read();
                  _ !== null && (v[t] = null, v[T] = null, v[A] = null, f(a(_, !1)));
                }
              }
              function o(v) {
                b.nextTick(l, v);
              }
              function y(v, f) {
                return function(_, S) {
                  v.then(function() {
                    if (f[u]) {
                      _(a(void 0, !0));
                      return;
                    }
                    f[r](_, S);
                  }, S);
                };
              }
              var g = Object.getPrototypeOf(function() {
              }), x = Object.setPrototypeOf((P = {
                get stream() {
                  return this[i];
                },
                next: function() {
                  var f = this, _ = this[p];
                  if (_ !== null)
                    return Promise.reject(_);
                  if (this[u])
                    return Promise.resolve(a(void 0, !0));
                  if (this[i].destroyed)
                    return new Promise(function(m, L) {
                      b.nextTick(function() {
                        f[p] ? L(f[p]) : m(a(void 0, !0));
                      });
                    });
                  var S = this[t], M;
                  if (S)
                    M = new Promise(y(S, this));
                  else {
                    var C = this[i].read();
                    if (C !== null)
                      return Promise.resolve(a(C, !1));
                    M = new Promise(this[r]);
                  }
                  return this[t] = M, M;
                }
              }, n(P, Symbol.asyncIterator, function() {
                return this;
              }), n(P, "return", function() {
                var f = this;
                return new Promise(function(_, S) {
                  f[i].destroy(null, function(M) {
                    if (M) {
                      S(M);
                      return;
                    }
                    _(a(void 0, !0));
                  });
                });
              }), P), g), c = function(f) {
                var _, S = Object.create(x, (_ = {}, n(_, i, {
                  value: f,
                  writable: !0
                }), n(_, T, {
                  value: null,
                  writable: !0
                }), n(_, A, {
                  value: null,
                  writable: !0
                }), n(_, p, {
                  value: null,
                  writable: !0
                }), n(_, u, {
                  value: f._readableState.endEmitted,
                  writable: !0
                }), n(_, r, {
                  value: function(C, m) {
                    var L = S[i].read();
                    L ? (S[t] = null, S[T] = null, S[A] = null, C(a(L, !1))) : (S[T] = C, S[A] = m);
                  },
                  writable: !0
                }), _));
                return S[t] = null, s(f, function(M) {
                  if (M && M.code !== "ERR_STREAM_PREMATURE_CLOSE") {
                    var C = S[A];
                    C !== null && (S[t] = null, S[T] = null, S[A] = null, C(M)), S[p] = M;
                    return;
                  }
                  var m = S[T];
                  m !== null && (S[t] = null, S[T] = null, S[A] = null, m(a(void 0, !0))), S[u] = !0;
                }), f.on("readable", o.bind(null, S)), S;
              };
              Y.exports = c;
            }
          ),
          /***/
          29930: (
            /***/
            function(Y, K, e) {
              function b(l, o) {
                var y = Object.keys(l);
                if (Object.getOwnPropertySymbols) {
                  var g = Object.getOwnPropertySymbols(l);
                  o && (g = g.filter(function(x) {
                    return Object.getOwnPropertyDescriptor(l, x).enumerable;
                  })), y.push.apply(y, g);
                }
                return y;
              }
              function P(l) {
                for (var o = 1; o < arguments.length; o++) {
                  var y = arguments[o] != null ? arguments[o] : {};
                  o % 2 ? b(Object(y), !0).forEach(function(g) {
                    n(l, g, y[g]);
                  }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(l, Object.getOwnPropertyDescriptors(y)) : b(Object(y)).forEach(function(g) {
                    Object.defineProperty(l, g, Object.getOwnPropertyDescriptor(y, g));
                  });
                }
                return l;
              }
              function n(l, o, y) {
                return o in l ? Object.defineProperty(l, o, { value: y, enumerable: !0, configurable: !0, writable: !0 }) : l[o] = y, l;
              }
              function s(l, o) {
                if (!(l instanceof o))
                  throw new TypeError("Cannot call a class as a function");
              }
              function T(l, o) {
                for (var y = 0; y < o.length; y++) {
                  var g = o[y];
                  g.enumerable = g.enumerable || !1, g.configurable = !0, "value" in g && (g.writable = !0), Object.defineProperty(l, g.key, g);
                }
              }
              function A(l, o, y) {
                return o && T(l.prototype, o), l;
              }
              var p = e(45708), u = p.Buffer, t = e(63779), r = t.inspect, i = r && r.custom || "inspect";
              function a(l, o, y) {
                u.prototype.copy.call(l, o, y);
              }
              Y.exports = /* @__PURE__ */ function() {
                function l() {
                  s(this, l), this.head = null, this.tail = null, this.length = 0;
                }
                return A(l, [{
                  key: "push",
                  value: function(y) {
                    var g = {
                      data: y,
                      next: null
                    };
                    this.length > 0 ? this.tail.next = g : this.head = g, this.tail = g, ++this.length;
                  }
                }, {
                  key: "unshift",
                  value: function(y) {
                    var g = {
                      data: y,
                      next: this.head
                    };
                    this.length === 0 && (this.tail = g), this.head = g, ++this.length;
                  }
                }, {
                  key: "shift",
                  value: function() {
                    if (this.length !== 0) {
                      var y = this.head.data;
                      return this.length === 1 ? this.head = this.tail = null : this.head = this.head.next, --this.length, y;
                    }
                  }
                }, {
                  key: "clear",
                  value: function() {
                    this.head = this.tail = null, this.length = 0;
                  }
                }, {
                  key: "join",
                  value: function(y) {
                    if (this.length === 0) return "";
                    for (var g = this.head, x = "" + g.data; g = g.next; )
                      x += y + g.data;
                    return x;
                  }
                }, {
                  key: "concat",
                  value: function(y) {
                    if (this.length === 0) return u.alloc(0);
                    for (var g = u.allocUnsafe(y >>> 0), x = this.head, c = 0; x; )
                      a(x.data, g, c), c += x.data.length, x = x.next;
                    return g;
                  }
                  // Consumes a specified amount of bytes or characters from the buffered data.
                }, {
                  key: "consume",
                  value: function(y, g) {
                    var x;
                    return y < this.head.data.length ? (x = this.head.data.slice(0, y), this.head.data = this.head.data.slice(y)) : y === this.head.data.length ? x = this.shift() : x = g ? this._getString(y) : this._getBuffer(y), x;
                  }
                }, {
                  key: "first",
                  value: function() {
                    return this.head.data;
                  }
                  // Consumes a specified amount of characters from the buffered data.
                }, {
                  key: "_getString",
                  value: function(y) {
                    var g = this.head, x = 1, c = g.data;
                    for (y -= c.length; g = g.next; ) {
                      var v = g.data, f = y > v.length ? v.length : y;
                      if (f === v.length ? c += v : c += v.slice(0, y), y -= f, y === 0) {
                        f === v.length ? (++x, g.next ? this.head = g.next : this.head = this.tail = null) : (this.head = g, g.data = v.slice(f));
                        break;
                      }
                      ++x;
                    }
                    return this.length -= x, c;
                  }
                  // Consumes a specified amount of bytes from the buffered data.
                }, {
                  key: "_getBuffer",
                  value: function(y) {
                    var g = u.allocUnsafe(y), x = this.head, c = 1;
                    for (x.data.copy(g), y -= x.data.length; x = x.next; ) {
                      var v = x.data, f = y > v.length ? v.length : y;
                      if (v.copy(g, g.length - y, 0, f), y -= f, y === 0) {
                        f === v.length ? (++c, x.next ? this.head = x.next : this.head = this.tail = null) : (this.head = x, x.data = v.slice(f));
                        break;
                      }
                      ++c;
                    }
                    return this.length -= c, g;
                  }
                  // Make sure the linked list only shows the minimal necessary information.
                }, {
                  key: i,
                  value: function(y, g) {
                    return r(this, P({}, g, {
                      // Only inspect one level.
                      depth: 0,
                      // It should not recurse.
                      customInspect: !1
                    }));
                  }
                }]), l;
              }();
            }
          ),
          /***/
          52023: (
            /***/
            function(Y, K, e) {
              var b = e(33282);
              function P(u, t) {
                var r = this, i = this._readableState && this._readableState.destroyed, a = this._writableState && this._writableState.destroyed;
                return i || a ? (t ? t(u) : u && (this._writableState ? this._writableState.errorEmitted || (this._writableState.errorEmitted = !0, b.nextTick(A, this, u)) : b.nextTick(A, this, u)), this) : (this._readableState && (this._readableState.destroyed = !0), this._writableState && (this._writableState.destroyed = !0), this._destroy(u || null, function(l) {
                  !t && l ? r._writableState ? r._writableState.errorEmitted ? b.nextTick(s, r) : (r._writableState.errorEmitted = !0, b.nextTick(n, r, l)) : b.nextTick(n, r, l) : t ? (b.nextTick(s, r), t(l)) : b.nextTick(s, r);
                }), this);
              }
              function n(u, t) {
                A(u, t), s(u);
              }
              function s(u) {
                u._writableState && !u._writableState.emitClose || u._readableState && !u._readableState.emitClose || u.emit("close");
              }
              function T() {
                this._readableState && (this._readableState.destroyed = !1, this._readableState.reading = !1, this._readableState.ended = !1, this._readableState.endEmitted = !1), this._writableState && (this._writableState.destroyed = !1, this._writableState.ended = !1, this._writableState.ending = !1, this._writableState.finalCalled = !1, this._writableState.prefinished = !1, this._writableState.finished = !1, this._writableState.errorEmitted = !1);
              }
              function A(u, t) {
                u.emit("error", t);
              }
              function p(u, t) {
                var r = u._readableState, i = u._writableState;
                r && r.autoDestroy || i && i.autoDestroy ? u.destroy(t) : u.emit("error", t);
              }
              Y.exports = {
                destroy: P,
                undestroy: T,
                errorOrDestroy: p
              };
            }
          ),
          /***/
          37165: (
            /***/
            function(Y, K, e) {
              var b = e(44059).F.ERR_STREAM_PREMATURE_CLOSE;
              function P(A) {
                var p = !1;
                return function() {
                  if (!p) {
                    p = !0;
                    for (var u = arguments.length, t = new Array(u), r = 0; r < u; r++)
                      t[r] = arguments[r];
                    A.apply(this, t);
                  }
                };
              }
              function n() {
              }
              function s(A) {
                return A.setHeader && typeof A.abort == "function";
              }
              function T(A, p, u) {
                if (typeof p == "function") return T(A, null, p);
                p || (p = {}), u = P(u || n);
                var t = p.readable || p.readable !== !1 && A.readable, r = p.writable || p.writable !== !1 && A.writable, i = function() {
                  A.writable || l();
                }, a = A._writableState && A._writableState.finished, l = function() {
                  r = !1, a = !0, t || u.call(A);
                }, o = A._readableState && A._readableState.endEmitted, y = function() {
                  t = !1, o = !0, r || u.call(A);
                }, g = function(f) {
                  u.call(A, f);
                }, x = function() {
                  var f;
                  if (t && !o)
                    return (!A._readableState || !A._readableState.ended) && (f = new b()), u.call(A, f);
                  if (r && !a)
                    return (!A._writableState || !A._writableState.ended) && (f = new b()), u.call(A, f);
                }, c = function() {
                  A.req.on("finish", l);
                };
                return s(A) ? (A.on("complete", l), A.on("abort", x), A.req ? c() : A.on("request", c)) : r && !A._writableState && (A.on("end", i), A.on("close", i)), A.on("end", y), A.on("finish", l), p.error !== !1 && A.on("error", g), A.on("close", x), function() {
                  A.removeListener("complete", l), A.removeListener("abort", x), A.removeListener("request", c), A.req && A.req.removeListener("finish", l), A.removeListener("end", i), A.removeListener("close", i), A.removeListener("finish", l), A.removeListener("end", y), A.removeListener("error", g), A.removeListener("close", x);
                };
              }
              Y.exports = T;
            }
          ),
          /***/
          37108: (
            /***/
            function(Y) {
              Y.exports = function() {
                throw new Error("Readable.from is not available in the browser");
              };
            }
          ),
          /***/
          6772: (
            /***/
            function(Y, K, e) {
              var b;
              function P(l) {
                var o = !1;
                return function() {
                  o || (o = !0, l.apply(void 0, arguments));
                };
              }
              var n = e(44059).F, s = n.ERR_MISSING_ARGS, T = n.ERR_STREAM_DESTROYED;
              function A(l) {
                if (l) throw l;
              }
              function p(l) {
                return l.setHeader && typeof l.abort == "function";
              }
              function u(l, o, y, g) {
                g = P(g);
                var x = !1;
                l.on("close", function() {
                  x = !0;
                }), b === void 0 && (b = e(37165)), b(l, {
                  readable: o,
                  writable: y
                }, function(v) {
                  if (v) return g(v);
                  x = !0, g();
                });
                var c = !1;
                return function(v) {
                  if (!x && !c) {
                    if (c = !0, p(l)) return l.abort();
                    if (typeof l.destroy == "function") return l.destroy();
                    g(v || new T("pipe"));
                  }
                };
              }
              function t(l) {
                l();
              }
              function r(l, o) {
                return l.pipe(o);
              }
              function i(l) {
                return !l.length || typeof l[l.length - 1] != "function" ? A : l.pop();
              }
              function a() {
                for (var l = arguments.length, o = new Array(l), y = 0; y < l; y++)
                  o[y] = arguments[y];
                var g = i(o);
                if (Array.isArray(o[0]) && (o = o[0]), o.length < 2)
                  throw new s("streams");
                var x, c = o.map(function(v, f) {
                  var _ = f < o.length - 1, S = f > 0;
                  return u(v, _, S, function(M) {
                    x || (x = M), M && c.forEach(t), !_ && (c.forEach(t), g(x));
                  });
                });
                return o.reduce(r);
              }
              Y.exports = a;
            }
          ),
          /***/
          31976: (
            /***/
            function(Y, K, e) {
              var b = e(44059).F.ERR_INVALID_OPT_VALUE;
              function P(s, T, A) {
                return s.highWaterMark != null ? s.highWaterMark : T ? s[A] : null;
              }
              function n(s, T, A, p) {
                var u = P(T, p, A);
                if (u != null) {
                  if (!(isFinite(u) && Math.floor(u) === u) || u < 0) {
                    var t = p ? A : "highWaterMark";
                    throw new b(t, u);
                  }
                  return Math.floor(u);
                }
                return s.objectMode ? 16 : 16384;
              }
              Y.exports = {
                getHighWaterMark: n
              };
            }
          ),
          /***/
          60032: (
            /***/
            function(Y, K, e) {
              Y.exports = e(7683).EventEmitter;
            }
          ),
          /***/
          54304: (
            /***/
            function(Y, K, e) {
              var b = e(41041).Buffer, P = b.isEncoding || function(c) {
                switch (c = "" + c, c && c.toLowerCase()) {
                  case "hex":
                  case "utf8":
                  case "utf-8":
                  case "ascii":
                  case "binary":
                  case "base64":
                  case "ucs2":
                  case "ucs-2":
                  case "utf16le":
                  case "utf-16le":
                  case "raw":
                    return !0;
                  default:
                    return !1;
                }
              };
              function n(c) {
                if (!c) return "utf8";
                for (var v; ; )
                  switch (c) {
                    case "utf8":
                    case "utf-8":
                      return "utf8";
                    case "ucs2":
                    case "ucs-2":
                    case "utf16le":
                    case "utf-16le":
                      return "utf16le";
                    case "latin1":
                    case "binary":
                      return "latin1";
                    case "base64":
                    case "ascii":
                    case "hex":
                      return c;
                    default:
                      if (v) return;
                      c = ("" + c).toLowerCase(), v = !0;
                  }
              }
              function s(c) {
                var v = n(c);
                if (typeof v != "string" && (b.isEncoding === P || !P(c))) throw new Error("Unknown encoding: " + c);
                return v || c;
              }
              K.I = T;
              function T(c) {
                this.encoding = s(c);
                var v;
                switch (this.encoding) {
                  case "utf16le":
                    this.text = a, this.end = l, v = 4;
                    break;
                  case "utf8":
                    this.fillLast = t, v = 4;
                    break;
                  case "base64":
                    this.text = o, this.end = y, v = 3;
                    break;
                  default:
                    this.write = g, this.end = x;
                    return;
                }
                this.lastNeed = 0, this.lastTotal = 0, this.lastChar = b.allocUnsafe(v);
              }
              T.prototype.write = function(c) {
                if (c.length === 0) return "";
                var v, f;
                if (this.lastNeed) {
                  if (v = this.fillLast(c), v === void 0) return "";
                  f = this.lastNeed, this.lastNeed = 0;
                } else
                  f = 0;
                return f < c.length ? v ? v + this.text(c, f) : this.text(c, f) : v || "";
              }, T.prototype.end = i, T.prototype.text = r, T.prototype.fillLast = function(c) {
                if (this.lastNeed <= c.length)
                  return c.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed), this.lastChar.toString(this.encoding, 0, this.lastTotal);
                c.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, c.length), this.lastNeed -= c.length;
              };
              function A(c) {
                return c <= 127 ? 0 : c >> 5 === 6 ? 2 : c >> 4 === 14 ? 3 : c >> 3 === 30 ? 4 : c >> 6 === 2 ? -1 : -2;
              }
              function p(c, v, f) {
                var _ = v.length - 1;
                if (_ < f) return 0;
                var S = A(v[_]);
                return S >= 0 ? (S > 0 && (c.lastNeed = S - 1), S) : --_ < f || S === -2 ? 0 : (S = A(v[_]), S >= 0 ? (S > 0 && (c.lastNeed = S - 2), S) : --_ < f || S === -2 ? 0 : (S = A(v[_]), S >= 0 ? (S > 0 && (S === 2 ? S = 0 : c.lastNeed = S - 3), S) : 0));
              }
              function u(c, v, f) {
                if ((v[0] & 192) !== 128)
                  return c.lastNeed = 0, "�";
                if (c.lastNeed > 1 && v.length > 1) {
                  if ((v[1] & 192) !== 128)
                    return c.lastNeed = 1, "�";
                  if (c.lastNeed > 2 && v.length > 2 && (v[2] & 192) !== 128)
                    return c.lastNeed = 2, "�";
                }
              }
              function t(c) {
                var v = this.lastTotal - this.lastNeed, f = u(this, c);
                if (f !== void 0) return f;
                if (this.lastNeed <= c.length)
                  return c.copy(this.lastChar, v, 0, this.lastNeed), this.lastChar.toString(this.encoding, 0, this.lastTotal);
                c.copy(this.lastChar, v, 0, c.length), this.lastNeed -= c.length;
              }
              function r(c, v) {
                var f = p(this, c, v);
                if (!this.lastNeed) return c.toString("utf8", v);
                this.lastTotal = f;
                var _ = c.length - (f - this.lastNeed);
                return c.copy(this.lastChar, 0, _), c.toString("utf8", v, _);
              }
              function i(c) {
                var v = c && c.length ? this.write(c) : "";
                return this.lastNeed ? v + "�" : v;
              }
              function a(c, v) {
                if ((c.length - v) % 2 === 0) {
                  var f = c.toString("utf16le", v);
                  if (f) {
                    var _ = f.charCodeAt(f.length - 1);
                    if (_ >= 55296 && _ <= 56319)
                      return this.lastNeed = 2, this.lastTotal = 4, this.lastChar[0] = c[c.length - 2], this.lastChar[1] = c[c.length - 1], f.slice(0, -1);
                  }
                  return f;
                }
                return this.lastNeed = 1, this.lastTotal = 2, this.lastChar[0] = c[c.length - 1], c.toString("utf16le", v, c.length - 1);
              }
              function l(c) {
                var v = c && c.length ? this.write(c) : "";
                if (this.lastNeed) {
                  var f = this.lastTotal - this.lastNeed;
                  return v + this.lastChar.toString("utf16le", 0, f);
                }
                return v;
              }
              function o(c, v) {
                var f = (c.length - v) % 3;
                return f === 0 ? c.toString("base64", v) : (this.lastNeed = 3 - f, this.lastTotal = 3, f === 1 ? this.lastChar[0] = c[c.length - 1] : (this.lastChar[0] = c[c.length - 2], this.lastChar[1] = c[c.length - 1]), c.toString("base64", v, c.length - f));
              }
              function y(c) {
                var v = c && c.length ? this.write(c) : "";
                return this.lastNeed ? v + this.lastChar.toString("base64", 0, 3 - this.lastNeed) : v;
              }
              function g(c) {
                return c.toString(this.encoding);
              }
              function x(c) {
                return c && c.length ? this.write(c) : "";
              }
            }
          ),
          /***/
          79743: (
            /***/
            function(Y, K, e) {
              var b = e(45708).Buffer, P = e(85672), n = e(79399)("stream-parser");
              Y.exports = u;
              var s = -1, T = 0, A = 1, p = 2;
              function u(v) {
                var f = v && typeof v._transform == "function", _ = v && typeof v._write == "function";
                if (!f && !_) throw new Error("must pass a Writable or Transform stream in");
                n("extending Parser into stream"), v._bytes = r, v._skipBytes = i, f && (v._passthrough = a), f ? v._transform = o : v._write = l;
              }
              function t(v) {
                n("initializing parser stream"), v._parserBytesLeft = 0, v._parserBuffers = [], v._parserBuffered = 0, v._parserState = s, v._parserCallback = null, typeof v.push == "function" && (v._parserOutput = v.push.bind(v)), v._parserInit = !0;
              }
              function r(v, f) {
                P(!this._parserCallback, 'there is already a "callback" set!'), P(isFinite(v) && v > 0, 'can only buffer a finite number of bytes > 0, got "' + v + '"'), this._parserInit || t(this), n("buffering %o bytes", v), this._parserBytesLeft = v, this._parserCallback = f, this._parserState = T;
              }
              function i(v, f) {
                P(!this._parserCallback, 'there is already a "callback" set!'), P(v > 0, 'can only skip > 0 bytes, got "' + v + '"'), this._parserInit || t(this), n("skipping %o bytes", v), this._parserBytesLeft = v, this._parserCallback = f, this._parserState = A;
              }
              function a(v, f) {
                P(!this._parserCallback, 'There is already a "callback" set!'), P(v > 0, 'can only pass through > 0 bytes, got "' + v + '"'), this._parserInit || t(this), n("passing through %o bytes", v), this._parserBytesLeft = v, this._parserCallback = f, this._parserState = p;
              }
              function l(v, f, _) {
                this._parserInit || t(this), n("write(%o bytes)", v.length), typeof f == "function" && (_ = f), x(this, v, null, _);
              }
              function o(v, f, _) {
                this._parserInit || t(this), n("transform(%o bytes)", v.length), typeof f != "function" && (f = this._parserOutput), x(this, v, f, _);
              }
              function y(v, f, _, S) {
                return v._parserBytesLeft <= 0 ? S(new Error("got data but not currently parsing anything")) : f.length <= v._parserBytesLeft ? function() {
                  return g(v, f, _, S);
                } : function() {
                  var M = f.slice(0, v._parserBytesLeft);
                  return g(v, M, _, function(C) {
                    if (C) return S(C);
                    if (f.length > M.length)
                      return function() {
                        return y(v, f.slice(M.length), _, S);
                      };
                  });
                };
              }
              function g(v, f, _, S) {
                if (v._parserBytesLeft -= f.length, n("%o bytes left for stream piece", v._parserBytesLeft), v._parserState === T ? (v._parserBuffers.push(f), v._parserBuffered += f.length) : v._parserState === p && _(f), v._parserBytesLeft === 0) {
                  var M = v._parserCallback;
                  if (M && v._parserState === T && v._parserBuffers.length > 1 && (f = b.concat(v._parserBuffers, v._parserBuffered)), v._parserState !== T && (f = null), v._parserCallback = null, v._parserBuffered = 0, v._parserState = s, v._parserBuffers.splice(0), M) {
                    var C = [];
                    f && C.push(f), _ && C.push(_);
                    var m = M.length > C.length;
                    m && C.push(c(S));
                    var L = M.apply(v, C);
                    if (!m || S === L) return S;
                  }
                } else
                  return S;
              }
              var x = c(y);
              function c(v) {
                return function() {
                  for (var f = v.apply(this, arguments); typeof f == "function"; )
                    f = f();
                  return f;
                };
              }
            }
          ),
          /***/
          79399: (
            /***/
            function(Y, K, e) {
              var b = e(33282);
              K = Y.exports = e(43228), K.log = s, K.formatArgs = n, K.save = T, K.load = A, K.useColors = P, K.storage = typeof chrome < "u" && typeof chrome.storage < "u" ? chrome.storage.local : p(), K.colors = [
                "lightseagreen",
                "forestgreen",
                "goldenrod",
                "dodgerblue",
                "darkorchid",
                "crimson"
              ];
              function P() {
                return typeof window < "u" && window.process && window.process.type === "renderer" ? !0 : typeof document < "u" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // is firebug? http://stackoverflow.com/a/398120/376773
                typeof window < "u" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // is firefox >= v31?
                // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
                typeof navigator < "u" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // double check webkit in userAgent just in case we are in a worker
                typeof navigator < "u" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/);
              }
              K.formatters.j = function(u) {
                try {
                  return JSON.stringify(u);
                } catch (t) {
                  return "[UnexpectedJSONParseError]: " + t.message;
                }
              };
              function n(u) {
                var t = this.useColors;
                if (u[0] = (t ? "%c" : "") + this.namespace + (t ? " %c" : " ") + u[0] + (t ? "%c " : " ") + "+" + K.humanize(this.diff), !!t) {
                  var r = "color: " + this.color;
                  u.splice(1, 0, r, "color: inherit");
                  var i = 0, a = 0;
                  u[0].replace(/%[a-zA-Z%]/g, function(l) {
                    l !== "%%" && (i++, l === "%c" && (a = i));
                  }), u.splice(a, 0, r);
                }
              }
              function s() {
                return typeof console == "object" && console.log && Function.prototype.apply.call(console.log, console, arguments);
              }
              function T(u) {
                try {
                  u == null ? K.storage.removeItem("debug") : K.storage.debug = u;
                } catch {
                }
              }
              function A() {
                var u;
                try {
                  u = K.storage.debug;
                } catch {
                }
                return !u && typeof b < "u" && "env" in b && (u = b.env.DEBUG), u;
              }
              K.enable(A());
              function p() {
                try {
                  return window.localStorage;
                } catch {
                }
              }
            }
          ),
          /***/
          43228: (
            /***/
            function(Y, K, e) {
              K = Y.exports = n.debug = n.default = n, K.coerce = p, K.disable = T, K.enable = s, K.enabled = A, K.humanize = e(13883), K.names = [], K.skips = [], K.formatters = {};
              var b;
              function P(u) {
                var t = 0, r;
                for (r in u)
                  t = (t << 5) - t + u.charCodeAt(r), t |= 0;
                return K.colors[Math.abs(t) % K.colors.length];
              }
              function n(u) {
                function t() {
                  if (t.enabled) {
                    var r = t, i = +/* @__PURE__ */ new Date(), a = i - (b || i);
                    r.diff = a, r.prev = b, r.curr = i, b = i;
                    for (var l = new Array(arguments.length), o = 0; o < l.length; o++)
                      l[o] = arguments[o];
                    l[0] = K.coerce(l[0]), typeof l[0] != "string" && l.unshift("%O");
                    var y = 0;
                    l[0] = l[0].replace(/%([a-zA-Z%])/g, function(x, c) {
                      if (x === "%%") return x;
                      y++;
                      var v = K.formatters[c];
                      if (typeof v == "function") {
                        var f = l[y];
                        x = v.call(r, f), l.splice(y, 1), y--;
                      }
                      return x;
                    }), K.formatArgs.call(r, l);
                    var g = t.log || K.log || console.log.bind(console);
                    g.apply(r, l);
                  }
                }
                return t.namespace = u, t.enabled = K.enabled(u), t.useColors = K.useColors(), t.color = P(u), typeof K.init == "function" && K.init(t), t;
              }
              function s(u) {
                K.save(u), K.names = [], K.skips = [];
                for (var t = (typeof u == "string" ? u : "").split(/[\s,]+/), r = t.length, i = 0; i < r; i++)
                  t[i] && (u = t[i].replace(/\*/g, ".*?"), u[0] === "-" ? K.skips.push(new RegExp("^" + u.substr(1) + "$")) : K.names.push(new RegExp("^" + u + "$")));
              }
              function T() {
                K.enable("");
              }
              function A(u) {
                var t, r;
                for (t = 0, r = K.skips.length; t < r; t++)
                  if (K.skips[t].test(u))
                    return !1;
                for (t = 0, r = K.names.length; t < r; t++)
                  if (K.names[t].test(u))
                    return !0;
                return !1;
              }
              function p(u) {
                return u instanceof Error ? u.stack || u.message : u;
              }
            }
          ),
          /***/
          13883: (
            /***/
            function(Y) {
              var K = 1e3, e = K * 60, b = e * 60, P = b * 24, n = P * 365.25;
              Y.exports = function(u, t) {
                t = t || {};
                var r = typeof u;
                if (r === "string" && u.length > 0)
                  return s(u);
                if (r === "number" && isNaN(u) === !1)
                  return t.long ? A(u) : T(u);
                throw new Error(
                  "val is not a non-empty string or a valid number. val=" + JSON.stringify(u)
                );
              };
              function s(u) {
                if (u = String(u), !(u.length > 100)) {
                  var t = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(
                    u
                  );
                  if (t) {
                    var r = parseFloat(t[1]), i = (t[2] || "ms").toLowerCase();
                    switch (i) {
                      case "years":
                      case "year":
                      case "yrs":
                      case "yr":
                      case "y":
                        return r * n;
                      case "days":
                      case "day":
                      case "d":
                        return r * P;
                      case "hours":
                      case "hour":
                      case "hrs":
                      case "hr":
                      case "h":
                        return r * b;
                      case "minutes":
                      case "minute":
                      case "mins":
                      case "min":
                      case "m":
                        return r * e;
                      case "seconds":
                      case "second":
                      case "secs":
                      case "sec":
                      case "s":
                        return r * K;
                      case "milliseconds":
                      case "millisecond":
                      case "msecs":
                      case "msec":
                      case "ms":
                        return r;
                      default:
                        return;
                    }
                  }
                }
              }
              function T(u) {
                return u >= P ? Math.round(u / P) + "d" : u >= b ? Math.round(u / b) + "h" : u >= e ? Math.round(u / e) + "m" : u >= K ? Math.round(u / K) + "s" : u + "ms";
              }
              function A(u) {
                return p(u, P, "day") || p(u, b, "hour") || p(u, e, "minute") || p(u, K, "second") || u + " ms";
              }
              function p(u, t, r) {
                if (!(u < t))
                  return u < t * 1.5 ? Math.floor(u / t) + " " + r : Math.ceil(u / t) + " " + r + "s";
              }
            }
          ),
          /***/
          28089: (
            /***/
            function(Y, K, e) {
              var b = e(59811);
              Y.exports = function(n, s, T) {
                if (n == null) throw Error("First argument should be a string");
                if (s == null) throw Error("Separator should be a string or a RegExp");
                T ? (typeof T == "string" || Array.isArray(T)) && (T = { ignore: T }) : T = {}, T.escape == null && (T.escape = !0), T.ignore == null ? T.ignore = ["[]", "()", "{}", "<>", '""', "''", "``", "“”", "«»"] : (typeof T.ignore == "string" && (T.ignore = [T.ignore]), T.ignore = T.ignore.map(function(l) {
                  return l.length === 1 && (l = l + l), l;
                }));
                var A = b.parse(n, { flat: !0, brackets: T.ignore }), p = A[0], u = p.split(s);
                if (T.escape) {
                  for (var t = [], r = 0; r < u.length; r++) {
                    var i = u[r], a = u[r + 1];
                    i[i.length - 1] === "\\" && i[i.length - 2] !== "\\" ? (t.push(i + s + a), r++) : t.push(i);
                  }
                  u = t;
                }
                for (var r = 0; r < u.length; r++)
                  A[0] = u[r], u[r] = b.stringify(A, { flat: !0 });
                return u;
              };
            }
          ),
          /***/
          26381: (
            /***/
            function(Y) {
              Y.exports = K;
              function K(e) {
                for (var b = e.length, P = new Array(b), n = new Array(b), s = new Array(b), T = new Array(b), A = new Array(b), p = new Array(b), u = 0; u < b; ++u)
                  P[u] = -1, n[u] = 0, s[u] = !1, T[u] = 0, A[u] = -1, p[u] = [];
                var t = 0, r = [], i = [];
                function a(g) {
                  var x = [g], c = [g];
                  for (P[g] = n[g] = t, s[g] = !0, t += 1; c.length > 0; ) {
                    g = c[c.length - 1];
                    var v = e[g];
                    if (T[g] < v.length) {
                      for (var f = T[g]; f < v.length; ++f) {
                        var _ = v[f];
                        if (P[_] < 0) {
                          P[_] = n[_] = t, s[_] = !0, t += 1, x.push(_), c.push(_);
                          break;
                        } else s[_] && (n[g] = Math.min(n[g], n[_]) | 0);
                        A[_] >= 0 && p[g].push(A[_]);
                      }
                      T[g] = f;
                    } else {
                      if (n[g] === P[g]) {
                        for (var S = [], M = [], C = 0, f = x.length - 1; f >= 0; --f) {
                          var m = x[f];
                          if (s[m] = !1, S.push(m), M.push(p[m]), C += p[m].length, A[m] = r.length, m === g) {
                            x.length = f;
                            break;
                          }
                        }
                        r.push(S);
                        for (var L = new Array(C), f = 0; f < M.length; f++)
                          for (var d = 0; d < M[f].length; d++)
                            L[--C] = M[f][d];
                        i.push(L);
                      }
                      c.pop();
                    }
                  }
                }
                for (var u = 0; u < b; ++u)
                  P[u] < 0 && a(u);
                for (var l, u = 0; u < i.length; u++) {
                  var o = i[u];
                  if (o.length !== 0) {
                    o.sort(function(x, c) {
                      return x - c;
                    }), l = [o[0]];
                    for (var y = 1; y < o.length; y++)
                      o[y] !== o[y - 1] && l.push(o[y]);
                    i[u] = l;
                  }
                }
                return { components: r, adjacencyList: i };
              }
            }
          ),
          /***/
          13193: (
            /***/
            function(Y, K, e) {
              e.r(K);
              var b = /* @__PURE__ */ function() {
                function u(t, r) {
                  var i = [], a = !0, l = !1, o = void 0;
                  try {
                    for (var y = t[Symbol.iterator](), g; !(a = (g = y.next()).done) && (i.push(g.value), !(r && i.length === r)); a = !0)
                      ;
                  } catch (x) {
                    l = !0, o = x;
                  } finally {
                    try {
                      !a && y.return && y.return();
                    } finally {
                      if (l) throw o;
                    }
                  }
                  return i;
                }
                return function(t, r) {
                  if (Array.isArray(t))
                    return t;
                  if (Symbol.iterator in Object(t))
                    return u(t, r);
                  throw new TypeError("Invalid attempt to destructure non-iterable instance");
                };
              }(), P = Math.PI * 2, n = function(t, r, i, a, l, o, y) {
                var g = t.x, x = t.y;
                g *= r, x *= i;
                var c = a * g - l * x, v = l * g + a * x;
                return {
                  x: c + o,
                  y: v + y
                };
              }, s = function(t, r) {
                var i = r === 1.5707963267948966 ? 0.551915024494 : r === -1.5707963267948966 ? -0.551915024494 : 1.3333333333333333 * Math.tan(r / 4), a = Math.cos(t), l = Math.sin(t), o = Math.cos(t + r), y = Math.sin(t + r);
                return [{
                  x: a - l * i,
                  y: l + a * i
                }, {
                  x: o + y * i,
                  y: y - o * i
                }, {
                  x: o,
                  y
                }];
              }, T = function(t, r, i, a) {
                var l = t * a - r * i < 0 ? -1 : 1, o = t * i + r * a;
                return o > 1 && (o = 1), o < -1 && (o = -1), l * Math.acos(o);
              }, A = function(t, r, i, a, l, o, y, g, x, c, v, f) {
                var _ = Math.pow(l, 2), S = Math.pow(o, 2), M = Math.pow(v, 2), C = Math.pow(f, 2), m = _ * S - _ * C - S * M;
                m < 0 && (m = 0), m /= _ * C + S * M, m = Math.sqrt(m) * (y === g ? -1 : 1);
                var L = m * l / o * f, d = m * -o / l * v, h = c * L - x * d + (t + i) / 2, E = x * L + c * d + (r + a) / 2, w = (v - L) / l, z = (f - d) / o, O = (-v - L) / l, B = (-f - d) / o, V = T(1, 0, w, z), U = T(w, z, O, B);
                return g === 0 && U > 0 && (U -= P), g === 1 && U < 0 && (U += P), [h, E, V, U];
              }, p = function(t) {
                var r = t.px, i = t.py, a = t.cx, l = t.cy, o = t.rx, y = t.ry, g = t.xAxisRotation, x = g === void 0 ? 0 : g, c = t.largeArcFlag, v = c === void 0 ? 0 : c, f = t.sweepFlag, _ = f === void 0 ? 0 : f, S = [];
                if (o === 0 || y === 0)
                  return [];
                var M = Math.sin(x * P / 360), C = Math.cos(x * P / 360), m = C * (r - a) / 2 + M * (i - l) / 2, L = -M * (r - a) / 2 + C * (i - l) / 2;
                if (m === 0 && L === 0)
                  return [];
                o = Math.abs(o), y = Math.abs(y);
                var d = Math.pow(m, 2) / Math.pow(o, 2) + Math.pow(L, 2) / Math.pow(y, 2);
                d > 1 && (o *= Math.sqrt(d), y *= Math.sqrt(d));
                var h = A(r, i, a, l, o, y, v, _, M, C, m, L), E = b(h, 4), w = E[0], z = E[1], O = E[2], B = E[3], V = Math.abs(B) / (P / 4);
                Math.abs(1 - V) < 1e-7 && (V = 1);
                var U = Math.max(Math.ceil(V), 1);
                B /= U;
                for (var H = 0; H < U; H++)
                  S.push(s(O, B)), O += B;
                return S.map(function(F) {
                  var G = n(F[0], o, y, C, M, w, z), q = G.x, rt = G.y, st = n(F[1], o, y, C, M, w, z), vt = st.x, ht = st.y, et = n(F[2], o, y, C, M, w, z), Q = et.x, j = et.y;
                  return { x1: q, y1: rt, x2: vt, y2: ht, x: Q, y: j };
                });
              };
              K.default = p;
            }
          ),
          /***/
          97251: (
            /***/
            function(Y, K, e) {
              var b = e(26953), P = e(16844), n = e(41883), s = e(13986), T = e(85672);
              Y.exports = A;
              function A(p) {
                if (Array.isArray(p) && p.length === 1 && typeof p[0] == "string" && (p = p[0]), typeof p == "string" && (T(s(p), "String is not an SVG path."), p = b(p)), T(Array.isArray(p), "Argument should be a string or an array of path segments."), p = P(p), p = n(p), !p.length) return [0, 0, 0, 0];
                for (var u = [1 / 0, 1 / 0, -1 / 0, -1 / 0], t = 0, r = p.length; t < r; t++)
                  for (var i = p[t].slice(1), a = 0; a < i.length; a += 2)
                    i[a + 0] < u[0] && (u[0] = i[a + 0]), i[a + 1] < u[1] && (u[1] = i[a + 1]), i[a + 0] > u[2] && (u[2] = i[a + 0]), i[a + 1] > u[3] && (u[3] = i[a + 1]);
                return u;
              }
            }
          ),
          /***/
          41883: (
            /***/
            function(Y, K, e) {
              Y.exports = P;
              var b = e(13193);
              function P(T) {
                for (var A, p = [], u = 0, t = 0, r = 0, i = 0, a = null, l = null, o = 0, y = 0, g = 0, x = T.length; g < x; g++) {
                  var c = T[g], v = c[0];
                  switch (v) {
                    case "M":
                      r = c[1], i = c[2];
                      break;
                    case "A":
                      var f = b({
                        px: o,
                        py: y,
                        cx: c[6],
                        cy: c[7],
                        rx: c[1],
                        ry: c[2],
                        xAxisRotation: c[3],
                        largeArcFlag: c[4],
                        sweepFlag: c[5]
                      });
                      if (!f.length) continue;
                      for (var _ = 0, S; _ < f.length; _++)
                        S = f[_], c = ["C", S.x1, S.y1, S.x2, S.y2, S.x, S.y], _ < f.length - 1 && p.push(c);
                      break;
                    case "S":
                      var M = o, C = y;
                      (A == "C" || A == "S") && (M += M - u, C += C - t), c = ["C", M, C, c[1], c[2], c[3], c[4]];
                      break;
                    case "T":
                      A == "Q" || A == "T" ? (a = o * 2 - a, l = y * 2 - l) : (a = o, l = y), c = s(o, y, a, l, c[1], c[2]);
                      break;
                    case "Q":
                      a = c[1], l = c[2], c = s(o, y, c[1], c[2], c[3], c[4]);
                      break;
                    case "L":
                      c = n(o, y, c[1], c[2]);
                      break;
                    case "H":
                      c = n(o, y, c[1], y);
                      break;
                    case "V":
                      c = n(o, y, o, c[1]);
                      break;
                    case "Z":
                      c = n(o, y, r, i);
                      break;
                  }
                  A = v, o = c[c.length - 2], y = c[c.length - 1], c.length > 4 ? (u = c[c.length - 4], t = c[c.length - 3]) : (u = o, t = y), p.push(c);
                }
                return p;
              }
              function n(T, A, p, u) {
                return ["C", T, A, p, u, p, u];
              }
              function s(T, A, p, u, t, r) {
                return [
                  "C",
                  T / 3 + 0.6666666666666666 * p,
                  A / 3 + 0.6666666666666666 * u,
                  t / 3 + 0.6666666666666666 * p,
                  r / 3 + 0.6666666666666666 * u,
                  t,
                  r
                ];
              }
            }
          ),
          /***/
          96021: (
            /***/
            function(Y, K, e) {
              var b = e(97251), P = e(26953), n = e(95620), s = e(13986), T = e(88772), A = document.createElement("canvas"), p = A.getContext("2d");
              Y.exports = u;
              function u(i, a) {
                if (!s(i)) throw Error("Argument should be valid svg path string");
                a || (a = {});
                var l, o;
                a.shape ? (l = a.shape[0], o = a.shape[1]) : (l = A.width = a.w || a.width || 200, o = A.height = a.h || a.height || 200);
                var y = Math.min(l, o), g = a.stroke || 0, x = a.viewbox || a.viewBox || b(i), c = [l / (x[2] - x[0]), o / (x[3] - x[1])], v = Math.min(c[0] || 0, c[1] || 0) / 2;
                if (p.fillStyle = "black", p.fillRect(0, 0, l, o), p.fillStyle = "white", g && (typeof g != "number" && (g = 1), g > 0 ? p.strokeStyle = "white" : p.strokeStyle = "black", p.lineWidth = Math.abs(g)), p.translate(l * 0.5, o * 0.5), p.scale(v, v), r()) {
                  var f = new Path2D(i);
                  p.fill(f), g && p.stroke(f);
                } else {
                  var _ = P(i);
                  n(p, _), p.fill(), g && p.stroke();
                }
                p.setTransform(1, 0, 0, 1, 0, 0);
                var S = T(p, {
                  cutoff: a.cutoff != null ? a.cutoff : 0.5,
                  radius: a.radius != null ? a.radius : y * 0.5
                });
                return S;
              }
              var t;
              function r() {
                if (t != null) return t;
                var i = document.createElement("canvas").getContext("2d");
                if (i.canvas.width = i.canvas.height = 1, !window.Path2D) return t = !1;
                var a = new Path2D("M0,0h1v1h-1v-1Z");
                i.fillStyle = "black", i.fill(a);
                var l = i.getImageData(0, 0, 1, 1);
                return t = l && l.data && l.data[3] === 255;
              }
            }
          ),
          /***/
          65657: (
            /***/
            function(Y, K, e) {
              var b;
              (function(P) {
                var n = /^\s+/, s = /\s+$/, T = 0, A = P.round, p = P.min, u = P.max, t = P.random;
                function r(X, ct) {
                  if (X = X || "", ct = ct || {}, X instanceof r)
                    return X;
                  if (!(this instanceof r))
                    return new r(X, ct);
                  var lt = i(X);
                  this._originalInput = X, this._r = lt.r, this._g = lt.g, this._b = lt.b, this._a = lt.a, this._roundA = A(100 * this._a) / 100, this._format = ct.format || lt.format, this._gradientType = ct.gradientType, this._r < 1 && (this._r = A(this._r)), this._g < 1 && (this._g = A(this._g)), this._b < 1 && (this._b = A(this._b)), this._ok = lt.ok, this._tc_id = T++;
                }
                r.prototype = {
                  isDark: function() {
                    return this.getBrightness() < 128;
                  },
                  isLight: function() {
                    return !this.isDark();
                  },
                  isValid: function() {
                    return this._ok;
                  },
                  getOriginalInput: function() {
                    return this._originalInput;
                  },
                  getFormat: function() {
                    return this._format;
                  },
                  getAlpha: function() {
                    return this._a;
                  },
                  getBrightness: function() {
                    var X = this.toRgb();
                    return (X.r * 299 + X.g * 587 + X.b * 114) / 1e3;
                  },
                  getLuminance: function() {
                    var X = this.toRgb(), ct, lt, pt, wt, Et, Ct;
                    return ct = X.r / 255, lt = X.g / 255, pt = X.b / 255, ct <= 0.03928 ? wt = ct / 12.92 : wt = P.pow((ct + 0.055) / 1.055, 2.4), lt <= 0.03928 ? Et = lt / 12.92 : Et = P.pow((lt + 0.055) / 1.055, 2.4), pt <= 0.03928 ? Ct = pt / 12.92 : Ct = P.pow((pt + 0.055) / 1.055, 2.4), 0.2126 * wt + 0.7152 * Et + 0.0722 * Ct;
                  },
                  setAlpha: function(X) {
                    return this._a = H(X), this._roundA = A(100 * this._a) / 100, this;
                  },
                  toHsv: function() {
                    var X = y(this._r, this._g, this._b);
                    return { h: X.h * 360, s: X.s, v: X.v, a: this._a };
                  },
                  toHsvString: function() {
                    var X = y(this._r, this._g, this._b), ct = A(X.h * 360), lt = A(X.s * 100), pt = A(X.v * 100);
                    return this._a == 1 ? "hsv(" + ct + ", " + lt + "%, " + pt + "%)" : "hsva(" + ct + ", " + lt + "%, " + pt + "%, " + this._roundA + ")";
                  },
                  toHsl: function() {
                    var X = l(this._r, this._g, this._b);
                    return { h: X.h * 360, s: X.s, l: X.l, a: this._a };
                  },
                  toHslString: function() {
                    var X = l(this._r, this._g, this._b), ct = A(X.h * 360), lt = A(X.s * 100), pt = A(X.l * 100);
                    return this._a == 1 ? "hsl(" + ct + ", " + lt + "%, " + pt + "%)" : "hsla(" + ct + ", " + lt + "%, " + pt + "%, " + this._roundA + ")";
                  },
                  toHex: function(X) {
                    return x(this._r, this._g, this._b, X);
                  },
                  toHexString: function(X) {
                    return "#" + this.toHex(X);
                  },
                  toHex8: function(X) {
                    return c(this._r, this._g, this._b, this._a, X);
                  },
                  toHex8String: function(X) {
                    return "#" + this.toHex8(X);
                  },
                  toRgb: function() {
                    return { r: A(this._r), g: A(this._g), b: A(this._b), a: this._a };
                  },
                  toRgbString: function() {
                    return this._a == 1 ? "rgb(" + A(this._r) + ", " + A(this._g) + ", " + A(this._b) + ")" : "rgba(" + A(this._r) + ", " + A(this._g) + ", " + A(this._b) + ", " + this._roundA + ")";
                  },
                  toPercentageRgb: function() {
                    return { r: A(F(this._r, 255) * 100) + "%", g: A(F(this._g, 255) * 100) + "%", b: A(F(this._b, 255) * 100) + "%", a: this._a };
                  },
                  toPercentageRgbString: function() {
                    return this._a == 1 ? "rgb(" + A(F(this._r, 255) * 100) + "%, " + A(F(this._g, 255) * 100) + "%, " + A(F(this._b, 255) * 100) + "%)" : "rgba(" + A(F(this._r, 255) * 100) + "%, " + A(F(this._g, 255) * 100) + "%, " + A(F(this._b, 255) * 100) + "%, " + this._roundA + ")";
                  },
                  toName: function() {
                    return this._a === 0 ? "transparent" : this._a < 1 ? !1 : V[x(this._r, this._g, this._b, !0)] || !1;
                  },
                  toFilter: function(X) {
                    var ct = "#" + v(this._r, this._g, this._b, this._a), lt = ct, pt = this._gradientType ? "GradientType = 1, " : "";
                    if (X) {
                      var wt = r(X);
                      lt = "#" + v(wt._r, wt._g, wt._b, wt._a);
                    }
                    return "progid:DXImageTransform.Microsoft.gradient(" + pt + "startColorstr=" + ct + ",endColorstr=" + lt + ")";
                  },
                  toString: function(X) {
                    var ct = !!X;
                    X = X || this._format;
                    var lt = !1, pt = this._a < 1 && this._a >= 0, wt = !ct && pt && (X === "hex" || X === "hex6" || X === "hex3" || X === "hex4" || X === "hex8" || X === "name");
                    return wt ? X === "name" && this._a === 0 ? this.toName() : this.toRgbString() : (X === "rgb" && (lt = this.toRgbString()), X === "prgb" && (lt = this.toPercentageRgbString()), (X === "hex" || X === "hex6") && (lt = this.toHexString()), X === "hex3" && (lt = this.toHexString(!0)), X === "hex4" && (lt = this.toHex8String(!0)), X === "hex8" && (lt = this.toHex8String()), X === "name" && (lt = this.toName()), X === "hsl" && (lt = this.toHslString()), X === "hsv" && (lt = this.toHsvString()), lt || this.toHexString());
                  },
                  clone: function() {
                    return r(this.toString());
                  },
                  _applyModification: function(X, ct) {
                    var lt = X.apply(null, [this].concat([].slice.call(ct)));
                    return this._r = lt._r, this._g = lt._g, this._b = lt._b, this.setAlpha(lt._a), this;
                  },
                  lighten: function() {
                    return this._applyModification(M, arguments);
                  },
                  brighten: function() {
                    return this._applyModification(C, arguments);
                  },
                  darken: function() {
                    return this._applyModification(m, arguments);
                  },
                  desaturate: function() {
                    return this._applyModification(f, arguments);
                  },
                  saturate: function() {
                    return this._applyModification(_, arguments);
                  },
                  greyscale: function() {
                    return this._applyModification(S, arguments);
                  },
                  spin: function() {
                    return this._applyModification(L, arguments);
                  },
                  _applyCombination: function(X, ct) {
                    return X.apply(null, [this].concat([].slice.call(ct)));
                  },
                  analogous: function() {
                    return this._applyCombination(z, arguments);
                  },
                  complement: function() {
                    return this._applyCombination(d, arguments);
                  },
                  monochromatic: function() {
                    return this._applyCombination(O, arguments);
                  },
                  splitcomplement: function() {
                    return this._applyCombination(w, arguments);
                  },
                  triad: function() {
                    return this._applyCombination(h, arguments);
                  },
                  tetrad: function() {
                    return this._applyCombination(E, arguments);
                  }
                }, r.fromRatio = function(X, ct) {
                  if (typeof X == "object") {
                    var lt = {};
                    for (var pt in X)
                      X.hasOwnProperty(pt) && (pt === "a" ? lt[pt] = X[pt] : lt[pt] = ht(X[pt]));
                    X = lt;
                  }
                  return r(X, ct);
                };
                function i(X) {
                  var ct = { r: 0, g: 0, b: 0 }, lt = 1, pt = null, wt = null, Et = null, Ct = !1, Gt = !1;
                  return typeof X == "string" && (X = ut(X)), typeof X == "object" && (at(X.r) && at(X.g) && at(X.b) ? (ct = a(X.r, X.g, X.b), Ct = !0, Gt = String(X.r).substr(-1) === "%" ? "prgb" : "rgb") : at(X.h) && at(X.s) && at(X.v) ? (pt = ht(X.s), wt = ht(X.v), ct = g(X.h, pt, wt), Ct = !0, Gt = "hsv") : at(X.h) && at(X.s) && at(X.l) && (pt = ht(X.s), Et = ht(X.l), ct = o(X.h, pt, Et), Ct = !0, Gt = "hsl"), X.hasOwnProperty("a") && (lt = X.a)), lt = H(lt), {
                    ok: Ct,
                    format: X.format || Gt,
                    r: p(255, u(ct.r, 0)),
                    g: p(255, u(ct.g, 0)),
                    b: p(255, u(ct.b, 0)),
                    a: lt
                  };
                }
                function a(X, ct, lt) {
                  return {
                    r: F(X, 255) * 255,
                    g: F(ct, 255) * 255,
                    b: F(lt, 255) * 255
                  };
                }
                function l(X, ct, lt) {
                  X = F(X, 255), ct = F(ct, 255), lt = F(lt, 255);
                  var pt = u(X, ct, lt), wt = p(X, ct, lt), Et, Ct, Gt = (pt + wt) / 2;
                  if (pt == wt)
                    Et = Ct = 0;
                  else {
                    var Jt = pt - wt;
                    switch (Ct = Gt > 0.5 ? Jt / (2 - pt - wt) : Jt / (pt + wt), pt) {
                      case X:
                        Et = (ct - lt) / Jt + (ct < lt ? 6 : 0);
                        break;
                      case ct:
                        Et = (lt - X) / Jt + 2;
                        break;
                      case lt:
                        Et = (X - ct) / Jt + 4;
                        break;
                    }
                    Et /= 6;
                  }
                  return { h: Et, s: Ct, l: Gt };
                }
                function o(X, ct, lt) {
                  var pt, wt, Et;
                  X = F(X, 360), ct = F(ct, 100), lt = F(lt, 100);
                  function Ct(Qt, Vt, zt) {
                    return zt < 0 && (zt += 1), zt > 1 && (zt -= 1), zt < 0.16666666666666666 ? Qt + (Vt - Qt) * 6 * zt : zt < 0.5 ? Vt : zt < 0.6666666666666666 ? Qt + (Vt - Qt) * (0.6666666666666666 - zt) * 6 : Qt;
                  }
                  if (ct === 0)
                    pt = wt = Et = lt;
                  else {
                    var Gt = lt < 0.5 ? lt * (1 + ct) : lt + ct - lt * ct, Jt = 2 * lt - Gt;
                    pt = Ct(Jt, Gt, X + 0.3333333333333333), wt = Ct(Jt, Gt, X), Et = Ct(Jt, Gt, X - 0.3333333333333333);
                  }
                  return { r: pt * 255, g: wt * 255, b: Et * 255 };
                }
                function y(X, ct, lt) {
                  X = F(X, 255), ct = F(ct, 255), lt = F(lt, 255);
                  var pt = u(X, ct, lt), wt = p(X, ct, lt), Et, Ct, Gt = pt, Jt = pt - wt;
                  if (Ct = pt === 0 ? 0 : Jt / pt, pt == wt)
                    Et = 0;
                  else {
                    switch (pt) {
                      case X:
                        Et = (ct - lt) / Jt + (ct < lt ? 6 : 0);
                        break;
                      case ct:
                        Et = (lt - X) / Jt + 2;
                        break;
                      case lt:
                        Et = (X - ct) / Jt + 4;
                        break;
                    }
                    Et /= 6;
                  }
                  return { h: Et, s: Ct, v: Gt };
                }
                function g(X, ct, lt) {
                  X = F(X, 360) * 6, ct = F(ct, 100), lt = F(lt, 100);
                  var pt = P.floor(X), wt = X - pt, Et = lt * (1 - ct), Ct = lt * (1 - wt * ct), Gt = lt * (1 - (1 - wt) * ct), Jt = pt % 6, Qt = [lt, Ct, Et, Et, Gt, lt][Jt], Vt = [Gt, lt, lt, Ct, Et, Et][Jt], zt = [Et, Et, Gt, lt, lt, Ct][Jt];
                  return { r: Qt * 255, g: Vt * 255, b: zt * 255 };
                }
                function x(X, ct, lt, pt) {
                  var wt = [
                    vt(A(X).toString(16)),
                    vt(A(ct).toString(16)),
                    vt(A(lt).toString(16))
                  ];
                  return pt && wt[0].charAt(0) == wt[0].charAt(1) && wt[1].charAt(0) == wt[1].charAt(1) && wt[2].charAt(0) == wt[2].charAt(1) ? wt[0].charAt(0) + wt[1].charAt(0) + wt[2].charAt(0) : wt.join("");
                }
                function c(X, ct, lt, pt, wt) {
                  var Et = [
                    vt(A(X).toString(16)),
                    vt(A(ct).toString(16)),
                    vt(A(lt).toString(16)),
                    vt(et(pt))
                  ];
                  return wt && Et[0].charAt(0) == Et[0].charAt(1) && Et[1].charAt(0) == Et[1].charAt(1) && Et[2].charAt(0) == Et[2].charAt(1) && Et[3].charAt(0) == Et[3].charAt(1) ? Et[0].charAt(0) + Et[1].charAt(0) + Et[2].charAt(0) + Et[3].charAt(0) : Et.join("");
                }
                function v(X, ct, lt, pt) {
                  var wt = [
                    vt(et(pt)),
                    vt(A(X).toString(16)),
                    vt(A(ct).toString(16)),
                    vt(A(lt).toString(16))
                  ];
                  return wt.join("");
                }
                r.equals = function(X, ct) {
                  return !X || !ct ? !1 : r(X).toRgbString() == r(ct).toRgbString();
                }, r.random = function() {
                  return r.fromRatio({
                    r: t(),
                    g: t(),
                    b: t()
                  });
                };
                function f(X, ct) {
                  ct = ct === 0 ? 0 : ct || 10;
                  var lt = r(X).toHsl();
                  return lt.s -= ct / 100, lt.s = G(lt.s), r(lt);
                }
                function _(X, ct) {
                  ct = ct === 0 ? 0 : ct || 10;
                  var lt = r(X).toHsl();
                  return lt.s += ct / 100, lt.s = G(lt.s), r(lt);
                }
                function S(X) {
                  return r(X).desaturate(100);
                }
                function M(X, ct) {
                  ct = ct === 0 ? 0 : ct || 10;
                  var lt = r(X).toHsl();
                  return lt.l += ct / 100, lt.l = G(lt.l), r(lt);
                }
                function C(X, ct) {
                  ct = ct === 0 ? 0 : ct || 10;
                  var lt = r(X).toRgb();
                  return lt.r = u(0, p(255, lt.r - A(255 * -(ct / 100)))), lt.g = u(0, p(255, lt.g - A(255 * -(ct / 100)))), lt.b = u(0, p(255, lt.b - A(255 * -(ct / 100)))), r(lt);
                }
                function m(X, ct) {
                  ct = ct === 0 ? 0 : ct || 10;
                  var lt = r(X).toHsl();
                  return lt.l -= ct / 100, lt.l = G(lt.l), r(lt);
                }
                function L(X, ct) {
                  var lt = r(X).toHsl(), pt = (lt.h + ct) % 360;
                  return lt.h = pt < 0 ? 360 + pt : pt, r(lt);
                }
                function d(X) {
                  var ct = r(X).toHsl();
                  return ct.h = (ct.h + 180) % 360, r(ct);
                }
                function h(X) {
                  var ct = r(X).toHsl(), lt = ct.h;
                  return [
                    r(X),
                    r({ h: (lt + 120) % 360, s: ct.s, l: ct.l }),
                    r({ h: (lt + 240) % 360, s: ct.s, l: ct.l })
                  ];
                }
                function E(X) {
                  var ct = r(X).toHsl(), lt = ct.h;
                  return [
                    r(X),
                    r({ h: (lt + 90) % 360, s: ct.s, l: ct.l }),
                    r({ h: (lt + 180) % 360, s: ct.s, l: ct.l }),
                    r({ h: (lt + 270) % 360, s: ct.s, l: ct.l })
                  ];
                }
                function w(X) {
                  var ct = r(X).toHsl(), lt = ct.h;
                  return [
                    r(X),
                    r({ h: (lt + 72) % 360, s: ct.s, l: ct.l }),
                    r({ h: (lt + 216) % 360, s: ct.s, l: ct.l })
                  ];
                }
                function z(X, ct, lt) {
                  ct = ct || 6, lt = lt || 30;
                  var pt = r(X).toHsl(), wt = 360 / lt, Et = [r(X)];
                  for (pt.h = (pt.h - (wt * ct >> 1) + 720) % 360; --ct; )
                    pt.h = (pt.h + wt) % 360, Et.push(r(pt));
                  return Et;
                }
                function O(X, ct) {
                  ct = ct || 6;
                  for (var lt = r(X).toHsv(), pt = lt.h, wt = lt.s, Et = lt.v, Ct = [], Gt = 1 / ct; ct--; )
                    Ct.push(r({ h: pt, s: wt, v: Et })), Et = (Et + Gt) % 1;
                  return Ct;
                }
                r.mix = function(X, ct, lt) {
                  lt = lt === 0 ? 0 : lt || 50;
                  var pt = r(X).toRgb(), wt = r(ct).toRgb(), Et = lt / 100, Ct = {
                    r: (wt.r - pt.r) * Et + pt.r,
                    g: (wt.g - pt.g) * Et + pt.g,
                    b: (wt.b - pt.b) * Et + pt.b,
                    a: (wt.a - pt.a) * Et + pt.a
                  };
                  return r(Ct);
                }, r.readability = function(X, ct) {
                  var lt = r(X), pt = r(ct);
                  return (P.max(lt.getLuminance(), pt.getLuminance()) + 0.05) / (P.min(lt.getLuminance(), pt.getLuminance()) + 0.05);
                }, r.isReadable = function(X, ct, lt) {
                  var pt = r.readability(X, ct), wt, Et;
                  switch (Et = !1, wt = nt(lt), wt.level + wt.size) {
                    case "AAsmall":
                    case "AAAlarge":
                      Et = pt >= 4.5;
                      break;
                    case "AAlarge":
                      Et = pt >= 3;
                      break;
                    case "AAAsmall":
                      Et = pt >= 7;
                      break;
                  }
                  return Et;
                }, r.mostReadable = function(X, ct, lt) {
                  var pt = null, wt = 0, Et, Ct, Gt, Jt;
                  lt = lt || {}, Ct = lt.includeFallbackColors, Gt = lt.level, Jt = lt.size;
                  for (var Qt = 0; Qt < ct.length; Qt++)
                    Et = r.readability(X, ct[Qt]), Et > wt && (wt = Et, pt = r(ct[Qt]));
                  return r.isReadable(X, pt, { level: Gt, size: Jt }) || !Ct ? pt : (lt.includeFallbackColors = !1, r.mostReadable(X, ["#fff", "#000"], lt));
                };
                var B = r.names = {
                  aliceblue: "f0f8ff",
                  antiquewhite: "faebd7",
                  aqua: "0ff",
                  aquamarine: "7fffd4",
                  azure: "f0ffff",
                  beige: "f5f5dc",
                  bisque: "ffe4c4",
                  black: "000",
                  blanchedalmond: "ffebcd",
                  blue: "00f",
                  blueviolet: "8a2be2",
                  brown: "a52a2a",
                  burlywood: "deb887",
                  burntsienna: "ea7e5d",
                  cadetblue: "5f9ea0",
                  chartreuse: "7fff00",
                  chocolate: "d2691e",
                  coral: "ff7f50",
                  cornflowerblue: "6495ed",
                  cornsilk: "fff8dc",
                  crimson: "dc143c",
                  cyan: "0ff",
                  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: "f0f",
                  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: "663399",
                  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"
                }, V = r.hexNames = U(B);
                function U(X) {
                  var ct = {};
                  for (var lt in X)
                    X.hasOwnProperty(lt) && (ct[X[lt]] = lt);
                  return ct;
                }
                function H(X) {
                  return X = parseFloat(X), (isNaN(X) || X < 0 || X > 1) && (X = 1), X;
                }
                function F(X, ct) {
                  rt(X) && (X = "100%");
                  var lt = st(X);
                  return X = p(ct, u(0, parseFloat(X))), lt && (X = parseInt(X * ct, 10) / 100), P.abs(X - ct) < 1e-6 ? 1 : X % ct / parseFloat(ct);
                }
                function G(X) {
                  return p(1, u(0, X));
                }
                function q(X) {
                  return parseInt(X, 16);
                }
                function rt(X) {
                  return typeof X == "string" && X.indexOf(".") != -1 && parseFloat(X) === 1;
                }
                function st(X) {
                  return typeof X == "string" && X.indexOf("%") != -1;
                }
                function vt(X) {
                  return X.length == 1 ? "0" + X : "" + X;
                }
                function ht(X) {
                  return X <= 1 && (X = X * 100 + "%"), X;
                }
                function et(X) {
                  return P.round(parseFloat(X) * 255).toString(16);
                }
                function Q(X) {
                  return q(X) / 255;
                }
                var j = function() {
                  var X = "[-\\+]?\\d+%?", ct = "[-\\+]?\\d*\\.\\d+%?", lt = "(?:" + ct + ")|(?:" + X + ")", pt = "[\\s|\\(]+(" + lt + ")[,|\\s]+(" + lt + ")[,|\\s]+(" + lt + ")\\s*\\)?", wt = "[\\s|\\(]+(" + lt + ")[,|\\s]+(" + lt + ")[,|\\s]+(" + lt + ")[,|\\s]+(" + lt + ")\\s*\\)?";
                  return {
                    CSS_UNIT: new RegExp(lt),
                    rgb: new RegExp("rgb" + pt),
                    rgba: new RegExp("rgba" + wt),
                    hsl: new RegExp("hsl" + pt),
                    hsla: new RegExp("hsla" + wt),
                    hsv: new RegExp("hsv" + pt),
                    hsva: new RegExp("hsva" + wt),
                    hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
                    hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,
                    hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
                    hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/
                  };
                }();
                function at(X) {
                  return !!j.CSS_UNIT.exec(X);
                }
                function ut(X) {
                  X = X.replace(n, "").replace(s, "").toLowerCase();
                  var ct = !1;
                  if (B[X])
                    X = B[X], ct = !0;
                  else if (X == "transparent")
                    return { r: 0, g: 0, b: 0, a: 0, format: "name" };
                  var lt;
                  return (lt = j.rgb.exec(X)) ? { r: lt[1], g: lt[2], b: lt[3] } : (lt = j.rgba.exec(X)) ? { r: lt[1], g: lt[2], b: lt[3], a: lt[4] } : (lt = j.hsl.exec(X)) ? { h: lt[1], s: lt[2], l: lt[3] } : (lt = j.hsla.exec(X)) ? { h: lt[1], s: lt[2], l: lt[3], a: lt[4] } : (lt = j.hsv.exec(X)) ? { h: lt[1], s: lt[2], v: lt[3] } : (lt = j.hsva.exec(X)) ? { h: lt[1], s: lt[2], v: lt[3], a: lt[4] } : (lt = j.hex8.exec(X)) ? {
                    r: q(lt[1]),
                    g: q(lt[2]),
                    b: q(lt[3]),
                    a: Q(lt[4]),
                    format: ct ? "name" : "hex8"
                  } : (lt = j.hex6.exec(X)) ? {
                    r: q(lt[1]),
                    g: q(lt[2]),
                    b: q(lt[3]),
                    format: ct ? "name" : "hex"
                  } : (lt = j.hex4.exec(X)) ? {
                    r: q(lt[1] + "" + lt[1]),
                    g: q(lt[2] + "" + lt[2]),
                    b: q(lt[3] + "" + lt[3]),
                    a: Q(lt[4] + "" + lt[4]),
                    format: ct ? "name" : "hex8"
                  } : (lt = j.hex3.exec(X)) ? {
                    r: q(lt[1] + "" + lt[1]),
                    g: q(lt[2] + "" + lt[2]),
                    b: q(lt[3] + "" + lt[3]),
                    format: ct ? "name" : "hex"
                  } : !1;
                }
                function nt(X) {
                  var ct, lt;
                  return X = X || { level: "AA", size: "small" }, ct = (X.level || "AA").toUpperCase(), lt = (X.size || "small").toLowerCase(), ct !== "AA" && ct !== "AAA" && (ct = "AA"), lt !== "small" && lt !== "large" && (lt = "small"), { level: ct, size: lt };
                }
                Y.exports ? Y.exports = r : (b = (function() {
                  return r;
                }).call(K, e, K, Y), b !== void 0 && (Y.exports = b));
              })(Math);
            }
          ),
          /***/
          51498: (
            /***/
            function(Y) {
              Y.exports = b, Y.exports.float32 = Y.exports.float = b, Y.exports.fract32 = Y.exports.fract = e;
              var K = new Float32Array(1);
              function e(P, n) {
                if (P.length) {
                  if (P instanceof Float32Array) return new Float32Array(P.length);
                  n instanceof Float32Array || (n = b(P));
                  for (var s = 0, T = n.length; s < T; s++)
                    n[s] = P[s] - n[s];
                  return n;
                }
                return b(P - b(P));
              }
              function b(P) {
                return P.length ? P instanceof Float32Array ? P : new Float32Array(P) : (K[0] = P, K[0]);
              }
            }
          ),
          /***/
          44626: (
            /***/
            function(Y, K, e) {
              var b = e(4957);
              Y.exports = T;
              var P = 96;
              function n(A, p) {
                var u = b(getComputedStyle(A).getPropertyValue(p));
                return u[0] * T(u[1], A);
              }
              function s(A, p) {
                var u = document.createElement("div");
                u.style["font-size"] = "128" + A, p.appendChild(u);
                var t = n(u, "font-size") / 128;
                return p.removeChild(u), t;
              }
              function T(A, p) {
                switch (p = p || document.body, A = (A || "px").trim().toLowerCase(), (p === window || p === document) && (p = document.body), A) {
                  case "%":
                    return p.clientHeight / 100;
                  case "ch":
                  case "ex":
                    return s(A, p);
                  case "em":
                    return n(p, "font-size");
                  case "rem":
                    return n(document.body, "font-size");
                  case "vw":
                    return window.innerWidth / 100;
                  case "vh":
                    return window.innerHeight / 100;
                  case "vmin":
                    return Math.min(window.innerWidth, window.innerHeight) / 100;
                  case "vmax":
                    return Math.max(window.innerWidth, window.innerHeight) / 100;
                  case "in":
                    return P;
                  case "cm":
                    return P / 2.54;
                  case "mm":
                    return P / 25.4;
                  case "pt":
                    return P / 72;
                  case "pc":
                    return P / 6;
                }
                return 1;
              }
            }
          ),
          /***/
          48640: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                N4: function() {
                  return (
                    /* reexport */
                    s
                  );
                }
              });
              function b(p, u) {
                for (var t, r = p.length, i = r - u; i < --r; ) t = p[i], p[i++] = p[r], p[r] = t;
              }
              function P(p) {
                return p;
              }
              function n(p) {
                if (p == null) return P;
                var u, t, r = p.scale[0], i = p.scale[1], a = p.translate[0], l = p.translate[1];
                return function(o, y) {
                  y || (u = t = 0);
                  var g = 2, x = o.length, c = new Array(x);
                  for (c[0] = (u += o[0]) * r + a, c[1] = (t += o[1]) * i + l; g < x; ) c[g] = o[g], ++g;
                  return c;
                };
              }
              function s(p, u) {
                return typeof u == "string" && (u = p.objects[u]), u.type === "GeometryCollection" ? { type: "FeatureCollection", features: u.geometries.map(function(t) {
                  return T(p, t);
                }) } : T(p, u);
              }
              function T(p, u) {
                var t = u.id, r = u.bbox, i = u.properties == null ? {} : u.properties, a = A(p, u);
                return t == null && r == null ? { type: "Feature", properties: i, geometry: a } : r == null ? { type: "Feature", id: t, properties: i, geometry: a } : { type: "Feature", id: t, bbox: r, properties: i, geometry: a };
              }
              function A(p, u) {
                var t = n(p.transform), r = p.arcs;
                function i(x, c) {
                  c.length && c.pop();
                  for (var v = r[x < 0 ? ~x : x], f = 0, _ = v.length; f < _; ++f)
                    c.push(t(v[f], f));
                  x < 0 && b(c, _);
                }
                function a(x) {
                  return t(x);
                }
                function l(x) {
                  for (var c = [], v = 0, f = x.length; v < f; ++v) i(x[v], c);
                  return c.length < 2 && c.push(c[0]), c;
                }
                function o(x) {
                  for (var c = l(x); c.length < 4; ) c.push(c[0]);
                  return c;
                }
                function y(x) {
                  return x.map(o);
                }
                function g(x) {
                  var c = x.type, v;
                  switch (c) {
                    case "GeometryCollection":
                      return { type: c, geometries: x.geometries.map(g) };
                    case "Point":
                      v = a(x.coordinates);
                      break;
                    case "MultiPoint":
                      v = x.coordinates.map(a);
                      break;
                    case "LineString":
                      v = l(x.arcs);
                      break;
                    case "MultiLineString":
                      v = x.arcs.map(l);
                      break;
                    case "Polygon":
                      v = y(x.arcs);
                      break;
                    case "MultiPolygon":
                      v = x.arcs.map(y);
                      break;
                    default:
                      return null;
                  }
                  return { type: c, coordinates: v };
                }
                return g(u);
              }
            }
          ),
          /***/
          64276: (
            /***/
            function(Y, K, e) {
              var b = e(31350);
              Y.exports = function(P) {
                if (typeof P != "function" || !hasOwnProperty.call(P, "length")) return !1;
                try {
                  if (typeof P.length != "number" || typeof P.call != "function" || typeof P.apply != "function") return !1;
                } catch {
                  return !1;
                }
                return !b(P);
              };
            }
          ),
          /***/
          99497: (
            /***/
            function(Y, K, e) {
              var b = e(80299), P = e(76481), n = e(58698), s = e(60461), T = function(A, p) {
                return A.replace("%v", s(p));
              };
              Y.exports = function(A, p, u) {
                if (!P(u)) throw new TypeError(T(p, A));
                if (!b(A)) {
                  if ("default" in u) return u.default;
                  if (u.isOptional) return null;
                }
                var t = n(u.errorMessage);
                throw b(t) || (t = p), new TypeError(T(t, A));
              };
            }
          ),
          /***/
          78696: (
            /***/
            function(Y) {
              Y.exports = function(K) {
                try {
                  return K.toString();
                } catch {
                  try {
                    return String(K);
                  } catch {
                    return null;
                  }
                }
              };
            }
          ),
          /***/
          60461: (
            /***/
            function(Y, K, e) {
              var b = e(78696), P = /[\n\r\u2028\u2029]/g;
              Y.exports = function(n) {
                var s = b(n);
                return s === null ? "<Non-coercible to string value>" : (s.length > 100 && (s = s.slice(0, 99) + "…"), s = s.replace(P, function(T) {
                  switch (T) {
                    case `
`:
                      return "\\n";
                    case "\r":
                      return "\\r";
                    case "\u2028":
                      return "\\u2028";
                    case "\u2029":
                      return "\\u2029";
                    default:
                      throw new Error("Unexpected character");
                  }
                }), s);
              };
            }
          ),
          /***/
          76481: (
            /***/
            function(Y, K, e) {
              var b = e(80299), P = {
                object: !0,
                function: !0,
                undefined: !0
                /* document.all */
              };
              Y.exports = function(n) {
                return b(n) ? hasOwnProperty.call(P, typeof n) : !1;
              };
            }
          ),
          /***/
          6887: (
            /***/
            function(Y, K, e) {
              var b = e(99497), P = e(63461);
              Y.exports = function(n) {
                return P(n) ? n : b(n, "%v is not a plain function", arguments[1]);
              };
            }
          ),
          /***/
          63461: (
            /***/
            function(Y, K, e) {
              var b = e(64276), P = /^\s*class[\s{/}]/, n = Function.prototype.toString;
              Y.exports = function(s) {
                return !(!b(s) || P.test(n.call(s)));
              };
            }
          ),
          /***/
          31350: (
            /***/
            function(Y, K, e) {
              var b = e(76481);
              Y.exports = function(P) {
                if (!b(P)) return !1;
                try {
                  return P.constructor ? P.constructor.prototype === P : !1;
                } catch {
                  return !1;
                }
              };
            }
          ),
          /***/
          58698: (
            /***/
            function(Y, K, e) {
              var b = e(80299), P = e(76481), n = Object.prototype.toString;
              Y.exports = function(s) {
                if (!b(s)) return null;
                if (P(s)) {
                  var T = s.toString;
                  if (typeof T != "function" || T === n) return null;
                }
                try {
                  return "" + s;
                } catch {
                  return null;
                }
              };
            }
          ),
          /***/
          9557: (
            /***/
            function(Y, K, e) {
              var b = e(99497), P = e(80299);
              Y.exports = function(n) {
                return P(n) ? n : b(n, "Cannot use %v", arguments[1]);
              };
            }
          ),
          /***/
          80299: (
            /***/
            function(Y) {
              var K = void 0;
              Y.exports = function(e) {
                return e !== K && e !== null;
              };
            }
          ),
          /***/
          66127: (
            /***/
            function(Y, K, e) {
              var b = e(54689), P = e(49523), n = e(45708).Buffer;
              e.g.__TYPEDARRAY_POOL || (e.g.__TYPEDARRAY_POOL = {
                UINT8: P([32, 0]),
                UINT16: P([32, 0]),
                UINT32: P([32, 0]),
                BIGUINT64: P([32, 0]),
                INT8: P([32, 0]),
                INT16: P([32, 0]),
                INT32: P([32, 0]),
                BIGINT64: P([32, 0]),
                FLOAT: P([32, 0]),
                DOUBLE: P([32, 0]),
                DATA: P([32, 0]),
                UINT8C: P([32, 0]),
                BUFFER: P([32, 0])
              });
              var s = typeof Uint8ClampedArray < "u", T = typeof BigUint64Array < "u", A = typeof BigInt64Array < "u", p = e.g.__TYPEDARRAY_POOL;
              p.UINT8C || (p.UINT8C = P([32, 0])), p.BIGUINT64 || (p.BIGUINT64 = P([32, 0])), p.BIGINT64 || (p.BIGINT64 = P([32, 0])), p.BUFFER || (p.BUFFER = P([32, 0]));
              var u = p.DATA, t = p.BUFFER;
              K.free = function(d) {
                if (n.isBuffer(d))
                  t[b.log2(d.length)].push(d);
                else {
                  if (Object.prototype.toString.call(d) !== "[object ArrayBuffer]" && (d = d.buffer), !d)
                    return;
                  var h = d.length || d.byteLength, E = b.log2(h) | 0;
                  u[E].push(d);
                }
              };
              function r(L) {
                if (L) {
                  var d = L.length || L.byteLength, h = b.log2(d);
                  u[h].push(L);
                }
              }
              function i(L) {
                r(L.buffer);
              }
              K.freeUint8 = K.freeUint16 = K.freeUint32 = K.freeBigUint64 = K.freeInt8 = K.freeInt16 = K.freeInt32 = K.freeBigInt64 = K.freeFloat32 = K.freeFloat = K.freeFloat64 = K.freeDouble = K.freeUint8Clamped = K.freeDataView = i, K.freeArrayBuffer = r, K.freeBuffer = function(d) {
                t[b.log2(d.length)].push(d);
              }, K.malloc = function(d, h) {
                if (h === void 0 || h === "arraybuffer")
                  return a(d);
                switch (h) {
                  case "uint8":
                    return l(d);
                  case "uint16":
                    return o(d);
                  case "uint32":
                    return y(d);
                  case "int8":
                    return g(d);
                  case "int16":
                    return x(d);
                  case "int32":
                    return c(d);
                  case "float":
                  case "float32":
                    return v(d);
                  case "double":
                  case "float64":
                    return f(d);
                  case "uint8_clamped":
                    return _(d);
                  case "bigint64":
                    return M(d);
                  case "biguint64":
                    return S(d);
                  case "buffer":
                    return m(d);
                  case "data":
                  case "dataview":
                    return C(d);
                  default:
                    return null;
                }
                return null;
              };
              function a(d) {
                var d = b.nextPow2(d), h = b.log2(d), E = u[h];
                return E.length > 0 ? E.pop() : new ArrayBuffer(d);
              }
              K.mallocArrayBuffer = a;
              function l(L) {
                return new Uint8Array(a(L), 0, L);
              }
              K.mallocUint8 = l;
              function o(L) {
                return new Uint16Array(a(2 * L), 0, L);
              }
              K.mallocUint16 = o;
              function y(L) {
                return new Uint32Array(a(4 * L), 0, L);
              }
              K.mallocUint32 = y;
              function g(L) {
                return new Int8Array(a(L), 0, L);
              }
              K.mallocInt8 = g;
              function x(L) {
                return new Int16Array(a(2 * L), 0, L);
              }
              K.mallocInt16 = x;
              function c(L) {
                return new Int32Array(a(4 * L), 0, L);
              }
              K.mallocInt32 = c;
              function v(L) {
                return new Float32Array(a(4 * L), 0, L);
              }
              K.mallocFloat32 = K.mallocFloat = v;
              function f(L) {
                return new Float64Array(a(8 * L), 0, L);
              }
              K.mallocFloat64 = K.mallocDouble = f;
              function _(L) {
                return s ? new Uint8ClampedArray(a(L), 0, L) : l(L);
              }
              K.mallocUint8Clamped = _;
              function S(L) {
                return T ? new BigUint64Array(a(8 * L), 0, L) : null;
              }
              K.mallocBigUint64 = S;
              function M(L) {
                return A ? new BigInt64Array(a(8 * L), 0, L) : null;
              }
              K.mallocBigInt64 = M;
              function C(L) {
                return new DataView(a(L), 0, L);
              }
              K.mallocDataView = C;
              function m(L) {
                L = b.nextPow2(L);
                var d = b.log2(L), h = t[d];
                return h.length > 0 ? h.pop() : new n(L);
              }
              K.mallocBuffer = m, K.clearCache = function() {
                for (var d = 0; d < 32; ++d)
                  p.UINT8[d].length = 0, p.UINT16[d].length = 0, p.UINT32[d].length = 0, p.INT8[d].length = 0, p.INT16[d].length = 0, p.INT32[d].length = 0, p.FLOAT[d].length = 0, p.DOUBLE[d].length = 0, p.BIGUINT64[d].length = 0, p.BIGINT64[d].length = 0, p.UINT8C[d].length = 0, u[d].length = 0, t[d].length = 0;
              };
            }
          ),
          /***/
          80886: (
            /***/
            function(Y) {
              var K = /[\'\"]/;
              Y.exports = function(b) {
                return b ? (K.test(b.charAt(0)) && (b = b.substr(1)), K.test(b.charAt(b.length - 1)) && (b = b.substr(0, b.length - 1)), b) : "";
              };
            }
          ),
          /***/
          79788: (
            /***/
            function(Y) {
              Y.exports = function(e, b, P) {
                Array.isArray(P) || (P = [].slice.call(arguments, 2));
                for (var n = 0, s = P.length; n < s; n++) {
                  var T = P[n];
                  for (var A in T)
                    if (!(b[A] !== void 0 && !Array.isArray(b[A]) && e[A] === b[A]) && A in b) {
                      var p;
                      if (T[A] === !0) p = b[A];
                      else {
                        if (T[A] === !1) continue;
                        if (typeof T[A] == "function" && (p = T[A](b[A], e, b), p === void 0))
                          continue;
                      }
                      e[A] = p;
                    }
                }
                return e;
              };
            }
          ),
          /***/
          71103: (
            /***/
            function(Y, K, e) {
              Y.exports = b;
              function b(n, s) {
                if (P("noDeprecation"))
                  return n;
                var T = !1;
                function A() {
                  if (!T) {
                    if (P("throwDeprecation"))
                      throw new Error(s);
                    P("traceDeprecation") ? console.trace(s) : console.warn(s), T = !0;
                  }
                  return n.apply(this, arguments);
                }
                return A;
              }
              function P(n) {
                try {
                  if (!e.g.localStorage) return !1;
                } catch {
                  return !1;
                }
                var s = e.g.localStorage[n];
                return s == null ? !1 : String(s).toLowerCase() === "true";
              }
            }
          ),
          /***/
          44123: (
            /***/
            function(Y) {
              Y.exports = function(e) {
                return e && typeof e == "object" && typeof e.copy == "function" && typeof e.fill == "function" && typeof e.readUInt8 == "function";
              };
            }
          ),
          /***/
          15724: (
            /***/
            function(Y, K, e) {
              var b = e(40280), P = e(80340), n = e(96835), s = e(15628);
              function T(Et) {
                return Et.call.bind(Et);
              }
              var A = typeof BigInt < "u", p = typeof Symbol < "u", u = T(Object.prototype.toString), t = T(Number.prototype.valueOf), r = T(String.prototype.valueOf), i = T(Boolean.prototype.valueOf);
              if (A)
                var a = T(BigInt.prototype.valueOf);
              if (p)
                var l = T(Symbol.prototype.valueOf);
              function o(Et, Ct) {
                if (typeof Et != "object")
                  return !1;
                try {
                  return Ct(Et), !0;
                } catch {
                  return !1;
                }
              }
              K.isArgumentsObject = b, K.isGeneratorFunction = P, K.isTypedArray = s;
              function y(Et) {
                return typeof Promise < "u" && Et instanceof Promise || Et !== null && typeof Et == "object" && typeof Et.then == "function" && typeof Et.catch == "function";
              }
              K.isPromise = y;
              function g(Et) {
                return typeof ArrayBuffer < "u" && ArrayBuffer.isView ? ArrayBuffer.isView(Et) : s(Et) || q(Et);
              }
              K.isArrayBufferView = g;
              function x(Et) {
                return n(Et) === "Uint8Array";
              }
              K.isUint8Array = x;
              function c(Et) {
                return n(Et) === "Uint8ClampedArray";
              }
              K.isUint8ClampedArray = c;
              function v(Et) {
                return n(Et) === "Uint16Array";
              }
              K.isUint16Array = v;
              function f(Et) {
                return n(Et) === "Uint32Array";
              }
              K.isUint32Array = f;
              function _(Et) {
                return n(Et) === "Int8Array";
              }
              K.isInt8Array = _;
              function S(Et) {
                return n(Et) === "Int16Array";
              }
              K.isInt16Array = S;
              function M(Et) {
                return n(Et) === "Int32Array";
              }
              K.isInt32Array = M;
              function C(Et) {
                return n(Et) === "Float32Array";
              }
              K.isFloat32Array = C;
              function m(Et) {
                return n(Et) === "Float64Array";
              }
              K.isFloat64Array = m;
              function L(Et) {
                return n(Et) === "BigInt64Array";
              }
              K.isBigInt64Array = L;
              function d(Et) {
                return n(Et) === "BigUint64Array";
              }
              K.isBigUint64Array = d;
              function h(Et) {
                return u(Et) === "[object Map]";
              }
              h.working = typeof Map < "u" && h(/* @__PURE__ */ new Map());
              function E(Et) {
                return typeof Map > "u" ? !1 : h.working ? h(Et) : Et instanceof Map;
              }
              K.isMap = E;
              function w(Et) {
                return u(Et) === "[object Set]";
              }
              w.working = typeof Set < "u" && w(/* @__PURE__ */ new Set());
              function z(Et) {
                return typeof Set > "u" ? !1 : w.working ? w(Et) : Et instanceof Set;
              }
              K.isSet = z;
              function O(Et) {
                return u(Et) === "[object WeakMap]";
              }
              O.working = typeof WeakMap < "u" && O(/* @__PURE__ */ new WeakMap());
              function B(Et) {
                return typeof WeakMap > "u" ? !1 : O.working ? O(Et) : Et instanceof WeakMap;
              }
              K.isWeakMap = B;
              function V(Et) {
                return u(Et) === "[object WeakSet]";
              }
              V.working = typeof WeakSet < "u" && V(/* @__PURE__ */ new WeakSet());
              function U(Et) {
                return V(Et);
              }
              K.isWeakSet = U;
              function H(Et) {
                return u(Et) === "[object ArrayBuffer]";
              }
              H.working = typeof ArrayBuffer < "u" && H(new ArrayBuffer());
              function F(Et) {
                return typeof ArrayBuffer > "u" ? !1 : H.working ? H(Et) : Et instanceof ArrayBuffer;
              }
              K.isArrayBuffer = F;
              function G(Et) {
                return u(Et) === "[object DataView]";
              }
              G.working = typeof ArrayBuffer < "u" && typeof DataView < "u" && G(new DataView(new ArrayBuffer(1), 0, 1));
              function q(Et) {
                return typeof DataView > "u" ? !1 : G.working ? G(Et) : Et instanceof DataView;
              }
              K.isDataView = q;
              var rt = typeof SharedArrayBuffer < "u" ? SharedArrayBuffer : void 0;
              function st(Et) {
                return u(Et) === "[object SharedArrayBuffer]";
              }
              function vt(Et) {
                return typeof rt > "u" ? !1 : (typeof st.working > "u" && (st.working = st(new rt())), st.working ? st(Et) : Et instanceof rt);
              }
              K.isSharedArrayBuffer = vt;
              function ht(Et) {
                return u(Et) === "[object AsyncFunction]";
              }
              K.isAsyncFunction = ht;
              function et(Et) {
                return u(Et) === "[object Map Iterator]";
              }
              K.isMapIterator = et;
              function Q(Et) {
                return u(Et) === "[object Set Iterator]";
              }
              K.isSetIterator = Q;
              function j(Et) {
                return u(Et) === "[object Generator]";
              }
              K.isGeneratorObject = j;
              function at(Et) {
                return u(Et) === "[object WebAssembly.Module]";
              }
              K.isWebAssemblyCompiledModule = at;
              function ut(Et) {
                return o(Et, t);
              }
              K.isNumberObject = ut;
              function nt(Et) {
                return o(Et, r);
              }
              K.isStringObject = nt;
              function X(Et) {
                return o(Et, i);
              }
              K.isBooleanObject = X;
              function ct(Et) {
                return A && o(Et, a);
              }
              K.isBigIntObject = ct;
              function lt(Et) {
                return p && o(Et, l);
              }
              K.isSymbolObject = lt;
              function pt(Et) {
                return ut(Et) || nt(Et) || X(Et) || ct(Et) || lt(Et);
              }
              K.isBoxedPrimitive = pt;
              function wt(Et) {
                return typeof Uint8Array < "u" && (F(Et) || vt(Et));
              }
              K.isAnyArrayBuffer = wt, ["isProxy", "isExternal", "isModuleNamespaceObject"].forEach(function(Et) {
                Object.defineProperty(K, Et, {
                  enumerable: !1,
                  value: function() {
                    throw new Error(Et + " is not supported in userland");
                  }
                });
              });
            }
          ),
          /***/
          56557: (
            /***/
            function(Y, K, e) {
              var b = e(33282), P = Object.getOwnPropertyDescriptors || function(rt) {
                for (var st = Object.keys(rt), vt = {}, ht = 0; ht < st.length; ht++)
                  vt[st[ht]] = Object.getOwnPropertyDescriptor(rt, st[ht]);
                return vt;
              }, n = /%[sdj%]/g;
              K.format = function(q) {
                if (!S(q)) {
                  for (var rt = [], st = 0; st < arguments.length; st++)
                    rt.push(p(arguments[st]));
                  return rt.join(" ");
                }
                for (var st = 1, vt = arguments, ht = vt.length, et = String(q).replace(n, function(j) {
                  if (j === "%%") return "%";
                  if (st >= ht) return j;
                  switch (j) {
                    case "%s":
                      return String(vt[st++]);
                    case "%d":
                      return Number(vt[st++]);
                    case "%j":
                      try {
                        return JSON.stringify(vt[st++]);
                      } catch {
                        return "[Circular]";
                      }
                    default:
                      return j;
                  }
                }), Q = vt[st]; st < ht; Q = vt[++st])
                  v(Q) || !L(Q) ? et += " " + Q : et += " " + p(Q);
                return et;
              }, K.deprecate = function(q, rt) {
                if (typeof b < "u" && b.noDeprecation === !0)
                  return q;
                if (typeof b > "u")
                  return function() {
                    return K.deprecate(q, rt).apply(this, arguments);
                  };
                var st = !1;
                function vt() {
                  if (!st) {
                    if (b.throwDeprecation)
                      throw new Error(rt);
                    b.traceDeprecation ? console.trace(rt) : console.error(rt), st = !0;
                  }
                  return q.apply(this, arguments);
                }
                return vt;
              };
              var s = {}, T = /^$/;
              if (b.env.NODE_DEBUG) {
                var A = b.env.NODE_DEBUG;
                A = A.replace(/[|\\{}()[\]^$+?.]/g, "\\$&").replace(/\*/g, ".*").replace(/,/g, "$|^").toUpperCase(), T = new RegExp("^" + A + "$", "i");
              }
              K.debuglog = function(q) {
                if (q = q.toUpperCase(), !s[q])
                  if (T.test(q)) {
                    var rt = b.pid;
                    s[q] = function() {
                      var st = K.format.apply(K, arguments);
                      console.error("%s %d: %s", q, rt, st);
                    };
                  } else
                    s[q] = function() {
                    };
                return s[q];
              };
              function p(q, rt) {
                var st = {
                  seen: [],
                  stylize: t
                };
                return arguments.length >= 3 && (st.depth = arguments[2]), arguments.length >= 4 && (st.colors = arguments[3]), c(rt) ? st.showHidden = rt : rt && K._extend(st, rt), C(st.showHidden) && (st.showHidden = !1), C(st.depth) && (st.depth = 2), C(st.colors) && (st.colors = !1), C(st.customInspect) && (st.customInspect = !0), st.colors && (st.stylize = u), i(st, q, st.depth);
              }
              K.inspect = p, p.colors = {
                bold: [1, 22],
                italic: [3, 23],
                underline: [4, 24],
                inverse: [7, 27],
                white: [37, 39],
                grey: [90, 39],
                black: [30, 39],
                blue: [34, 39],
                cyan: [36, 39],
                green: [32, 39],
                magenta: [35, 39],
                red: [31, 39],
                yellow: [33, 39]
              }, p.styles = {
                special: "cyan",
                number: "yellow",
                boolean: "yellow",
                undefined: "grey",
                null: "bold",
                string: "green",
                date: "magenta",
                // "name": intentionally not styling
                regexp: "red"
              };
              function u(q, rt) {
                var st = p.styles[rt];
                return st ? "\x1B[" + p.colors[st][0] + "m" + q + "\x1B[" + p.colors[st][1] + "m" : q;
              }
              function t(q, rt) {
                return q;
              }
              function r(q) {
                var rt = {};
                return q.forEach(function(st, vt) {
                  rt[st] = !0;
                }), rt;
              }
              function i(q, rt, st) {
                if (q.customInspect && rt && E(rt.inspect) && // Filter out the util module, it's inspect function is special
                rt.inspect !== K.inspect && // Also filter out any prototype objects using the circular check.
                !(rt.constructor && rt.constructor.prototype === rt)) {
                  var vt = rt.inspect(st, q);
                  return S(vt) || (vt = i(q, vt, st)), vt;
                }
                var ht = a(q, rt);
                if (ht)
                  return ht;
                var et = Object.keys(rt), Q = r(et);
                if (q.showHidden && (et = Object.getOwnPropertyNames(rt)), h(rt) && (et.indexOf("message") >= 0 || et.indexOf("description") >= 0))
                  return l(rt);
                if (et.length === 0) {
                  if (E(rt)) {
                    var j = rt.name ? ": " + rt.name : "";
                    return q.stylize("[Function" + j + "]", "special");
                  }
                  if (m(rt))
                    return q.stylize(RegExp.prototype.toString.call(rt), "regexp");
                  if (d(rt))
                    return q.stylize(Date.prototype.toString.call(rt), "date");
                  if (h(rt))
                    return l(rt);
                }
                var at = "", ut = !1, nt = ["{", "}"];
                if (x(rt) && (ut = !0, nt = ["[", "]"]), E(rt)) {
                  var X = rt.name ? ": " + rt.name : "";
                  at = " [Function" + X + "]";
                }
                if (m(rt) && (at = " " + RegExp.prototype.toString.call(rt)), d(rt) && (at = " " + Date.prototype.toUTCString.call(rt)), h(rt) && (at = " " + l(rt)), et.length === 0 && (!ut || rt.length == 0))
                  return nt[0] + at + nt[1];
                if (st < 0)
                  return m(rt) ? q.stylize(RegExp.prototype.toString.call(rt), "regexp") : q.stylize("[Object]", "special");
                q.seen.push(rt);
                var ct;
                return ut ? ct = o(q, rt, st, Q, et) : ct = et.map(function(lt) {
                  return y(q, rt, st, Q, lt, ut);
                }), q.seen.pop(), g(ct, at, nt);
              }
              function a(q, rt) {
                if (C(rt))
                  return q.stylize("undefined", "undefined");
                if (S(rt)) {
                  var st = "'" + JSON.stringify(rt).replace(/^"|"$/g, "").replace(/'/g, "\\'").replace(/\\"/g, '"') + "'";
                  return q.stylize(st, "string");
                }
                if (_(rt))
                  return q.stylize("" + rt, "number");
                if (c(rt))
                  return q.stylize("" + rt, "boolean");
                if (v(rt))
                  return q.stylize("null", "null");
              }
              function l(q) {
                return "[" + Error.prototype.toString.call(q) + "]";
              }
              function o(q, rt, st, vt, ht) {
                for (var et = [], Q = 0, j = rt.length; Q < j; ++Q)
                  U(rt, String(Q)) ? et.push(y(
                    q,
                    rt,
                    st,
                    vt,
                    String(Q),
                    !0
                  )) : et.push("");
                return ht.forEach(function(at) {
                  at.match(/^\d+$/) || et.push(y(
                    q,
                    rt,
                    st,
                    vt,
                    at,
                    !0
                  ));
                }), et;
              }
              function y(q, rt, st, vt, ht, et) {
                var Q, j, at;
                if (at = Object.getOwnPropertyDescriptor(rt, ht) || { value: rt[ht] }, at.get ? at.set ? j = q.stylize("[Getter/Setter]", "special") : j = q.stylize("[Getter]", "special") : at.set && (j = q.stylize("[Setter]", "special")), U(vt, ht) || (Q = "[" + ht + "]"), j || (q.seen.indexOf(at.value) < 0 ? (v(st) ? j = i(q, at.value, null) : j = i(q, at.value, st - 1), j.indexOf(`
`) > -1 && (et ? j = j.split(`
`).map(function(ut) {
                  return "  " + ut;
                }).join(`
`).slice(2) : j = `
` + j.split(`
`).map(function(ut) {
                  return "   " + ut;
                }).join(`
`))) : j = q.stylize("[Circular]", "special")), C(Q)) {
                  if (et && ht.match(/^\d+$/))
                    return j;
                  Q = JSON.stringify("" + ht), Q.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/) ? (Q = Q.slice(1, -1), Q = q.stylize(Q, "name")) : (Q = Q.replace(/'/g, "\\'").replace(/\\"/g, '"').replace(/(^"|"$)/g, "'"), Q = q.stylize(Q, "string"));
                }
                return Q + ": " + j;
              }
              function g(q, rt, st) {
                var vt = q.reduce(function(ht, et) {
                  return et.indexOf(`
`) >= 0, ht + et.replace(/\u001b\[\d\d?m/g, "").length + 1;
                }, 0);
                return vt > 60 ? st[0] + (rt === "" ? "" : rt + `
 `) + " " + q.join(`,
  `) + " " + st[1] : st[0] + rt + " " + q.join(", ") + " " + st[1];
              }
              K.types = e(15724);
              function x(q) {
                return Array.isArray(q);
              }
              K.isArray = x;
              function c(q) {
                return typeof q == "boolean";
              }
              K.isBoolean = c;
              function v(q) {
                return q === null;
              }
              K.isNull = v;
              function f(q) {
                return q == null;
              }
              K.isNullOrUndefined = f;
              function _(q) {
                return typeof q == "number";
              }
              K.isNumber = _;
              function S(q) {
                return typeof q == "string";
              }
              K.isString = S;
              function M(q) {
                return typeof q == "symbol";
              }
              K.isSymbol = M;
              function C(q) {
                return q === void 0;
              }
              K.isUndefined = C;
              function m(q) {
                return L(q) && z(q) === "[object RegExp]";
              }
              K.isRegExp = m, K.types.isRegExp = m;
              function L(q) {
                return typeof q == "object" && q !== null;
              }
              K.isObject = L;
              function d(q) {
                return L(q) && z(q) === "[object Date]";
              }
              K.isDate = d, K.types.isDate = d;
              function h(q) {
                return L(q) && (z(q) === "[object Error]" || q instanceof Error);
              }
              K.isError = h, K.types.isNativeError = h;
              function E(q) {
                return typeof q == "function";
              }
              K.isFunction = E;
              function w(q) {
                return q === null || typeof q == "boolean" || typeof q == "number" || typeof q == "string" || typeof q == "symbol" || // ES6 symbol
                typeof q > "u";
              }
              K.isPrimitive = w, K.isBuffer = e(44123);
              function z(q) {
                return Object.prototype.toString.call(q);
              }
              function O(q) {
                return q < 10 ? "0" + q.toString(10) : q.toString(10);
              }
              var B = [
                "Jan",
                "Feb",
                "Mar",
                "Apr",
                "May",
                "Jun",
                "Jul",
                "Aug",
                "Sep",
                "Oct",
                "Nov",
                "Dec"
              ];
              function V() {
                var q = /* @__PURE__ */ new Date(), rt = [
                  O(q.getHours()),
                  O(q.getMinutes()),
                  O(q.getSeconds())
                ].join(":");
                return [q.getDate(), B[q.getMonth()], rt].join(" ");
              }
              K.log = function() {
                console.log("%s - %s", V(), K.format.apply(K, arguments));
              }, K.inherits = e(28062), K._extend = function(q, rt) {
                if (!rt || !L(rt)) return q;
                for (var st = Object.keys(rt), vt = st.length; vt--; )
                  q[st[vt]] = rt[st[vt]];
                return q;
              };
              function U(q, rt) {
                return Object.prototype.hasOwnProperty.call(q, rt);
              }
              var H = typeof Symbol < "u" ? Symbol("util.promisify.custom") : void 0;
              K.promisify = function(rt) {
                if (typeof rt != "function")
                  throw new TypeError('The "original" argument must be of type Function');
                if (H && rt[H]) {
                  var st = rt[H];
                  if (typeof st != "function")
                    throw new TypeError('The "util.promisify.custom" argument must be of type Function');
                  return Object.defineProperty(st, H, {
                    value: st,
                    enumerable: !1,
                    writable: !1,
                    configurable: !0
                  }), st;
                }
                function st() {
                  for (var vt, ht, et = new Promise(function(at, ut) {
                    vt = at, ht = ut;
                  }), Q = [], j = 0; j < arguments.length; j++)
                    Q.push(arguments[j]);
                  Q.push(function(at, ut) {
                    at ? ht(at) : vt(ut);
                  });
                  try {
                    rt.apply(this, Q);
                  } catch (at) {
                    ht(at);
                  }
                  return et;
                }
                return Object.setPrototypeOf(st, Object.getPrototypeOf(rt)), H && Object.defineProperty(st, H, {
                  value: st,
                  enumerable: !1,
                  writable: !1,
                  configurable: !0
                }), Object.defineProperties(
                  st,
                  P(rt)
                );
              }, K.promisify.custom = H;
              function F(q, rt) {
                if (!q) {
                  var st = new Error("Promise was rejected with a falsy value");
                  st.reason = q, q = st;
                }
                return rt(q);
              }
              function G(q) {
                if (typeof q != "function")
                  throw new TypeError('The "original" argument must be of type Function');
                function rt() {
                  for (var st = [], vt = 0; vt < arguments.length; vt++)
                    st.push(arguments[vt]);
                  var ht = st.pop();
                  if (typeof ht != "function")
                    throw new TypeError("The last argument must be of type Function");
                  var et = this, Q = function() {
                    return ht.apply(et, arguments);
                  };
                  q.apply(this, st).then(
                    function(j) {
                      b.nextTick(Q.bind(null, null, j));
                    },
                    function(j) {
                      b.nextTick(F.bind(null, j, Q));
                    }
                  );
                }
                return Object.setPrototypeOf(rt, Object.getPrototypeOf(q)), Object.defineProperties(
                  rt,
                  P(q)
                ), rt;
              }
              K.callbackify = G;
            }
          ),
          /***/
          22248: (
            /***/
            function(Y, K, e) {
              var b = e(72880);
              Y.exports = function(n) {
                return b("webgl", n);
              };
            }
          ),
          /***/
          96835: (
            /***/
            function(Y, K, e) {
              var b = e(61262), P = e(70085), n = e(87227), s = e(63063), T = e(52991), A = s("Object.prototype.toString"), p = e(36912)(), u = typeof globalThis > "u" ? e.g : globalThis, t = P(), r = s("String.prototype.slice"), i = Object.getPrototypeOf, a = s("Array.prototype.indexOf", !0) || /** @type {(array: readonly unknown[], value: unknown) => keyof array} */
              function(x, c) {
                for (var v = 0; v < x.length; v += 1)
                  if (x[v] === c)
                    return v;
                return -1;
              }, l = { __proto__: null };
              p && T && i ? b(t, function(g) {
                var x = new u[g]();
                if (Symbol.toStringTag in x) {
                  var c = i(x), v = T(c, Symbol.toStringTag);
                  if (!v) {
                    var f = i(c);
                    v = T(f, Symbol.toStringTag);
                  }
                  l["$" + g] = n(v.get);
                }
              }) : b(t, function(g) {
                var x = new u[g](), c = x.slice || x.set;
                c && (l["$" + g] = n(c));
              });
              var o = function(x) {
                var c = !1;
                return b(
                  // eslint-disable-next-line no-extra-parens
                  /** @type {Record<`\$${TypedArrayName}`, typeof cache>} */
                  /** @type {any} */
                  l,
                  /** @type {(getter: typeof cache, name: `\$${TypedArrayName}`) => void} */
                  function(v, f) {
                    if (!c)
                      try {
                        "$" + v(x) === f && (c = r(f, 1));
                      } catch {
                      }
                  }
                ), c;
              }, y = function(x) {
                var c = !1;
                return b(
                  // eslint-disable-next-line no-extra-parens
                  /** @type {any} */
                  l,
                  /** @type {(getter: typeof cache, name: `\$${TypedArrayName}`) => void} */
                  function(v, f) {
                    if (!c)
                      try {
                        v(x), c = r(f, 1);
                      } catch {
                      }
                  }
                ), c;
              };
              Y.exports = function(x) {
                if (!x || typeof x != "object")
                  return !1;
                if (!p) {
                  var c = r(A(x), 8, -1);
                  return a(t, c) > -1 ? c : c !== "Object" ? !1 : y(x);
                }
                return T ? o(x) : null;
              };
            }
          ),
          /***/
          1401: (
            /***/
            function(Y, K, e) {
              var b = e(24453), P = e(27976), n = b.instance();
              function s(l) {
                this.local = this.regionalOptions[l || ""] || this.regionalOptions[""];
              }
              s.prototype = new b.baseCalendar(), P(s.prototype, {
                /** The calendar name.
                    @memberof ChineseCalendar */
                name: "Chinese",
                /** Julian date of start of Gregorian epoch: 1 January 0001 CE.
                   @memberof GregorianCalendar */
                jdEpoch: 17214255e-1,
                /** <code>true</code> if has a year zero, <code>false</code> if not.
                    @memberof ChineseCalendar */
                hasYearZero: !1,
                /** The minimum month number.
                    This calendar uses month indices to account for intercalary months. 
                    @memberof ChineseCalendar */
                minMonth: 0,
                /** The first month in the year.
                    This calendar uses month indices to account for intercalary months. 
                    @memberof ChineseCalendar */
                firstMonth: 0,
                /** The minimum day number.
                    @memberof ChineseCalendar */
                minDay: 1,
                /** Localisations for the plugin.
                    Entries are objects indexed by the language code ('' being the default US/English).
                    Each object has the following attributes.
                    @memberof ChineseCalendar
                    @property name {string} The calendar name.
                    @property epochs {string[]} The epoch names.
                    @property monthNames {string[]} The long names of the months of the year.
                    @property monthNamesShort {string[]} The short names of the months of the year.
                    @property dayNames {string[]} The long names of the days of the week.
                    @property dayNamesShort {string[]} The short names of the days of the week.
                    @property dayNamesMin {string[]} The minimal names of the days of the week.
                    @property dateFormat {string} The date format for this calendar.
                            See the options on <a href="BaseCalendar.html#formatDate"><code>formatDate</code></a> for details.
                    @property firstDay {number} The number of the first day of the week, starting at 0.
                    @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */
                regionalOptions: {
                  // Localisations
                  "": {
                    name: "Chinese",
                    epochs: ["BEC", "EC"],
                    monthNumbers: function(l, o) {
                      if (typeof l == "string") {
                        var y = l.match(A);
                        return y ? y[0] : "";
                      }
                      var g = this._validateYear(l), x = l.month(), c = "" + this.toChineseMonth(g, x);
                      return o && c.length < 2 && (c = "0" + c), this.isIntercalaryMonth(g, x) && (c += "i"), c;
                    },
                    monthNames: function(l) {
                      if (typeof l == "string") {
                        var o = l.match(p);
                        return o ? o[0] : "";
                      }
                      var y = this._validateYear(l), g = l.month(), x = this.toChineseMonth(y, g), c = [
                        "一月",
                        "二月",
                        "三月",
                        "四月",
                        "五月",
                        "六月",
                        "七月",
                        "八月",
                        "九月",
                        "十月",
                        "十一月",
                        "十二月"
                      ][x - 1];
                      return this.isIntercalaryMonth(y, g) && (c = "闰" + c), c;
                    },
                    monthNamesShort: function(l) {
                      if (typeof l == "string") {
                        var o = l.match(u);
                        return o ? o[0] : "";
                      }
                      var y = this._validateYear(l), g = l.month(), x = this.toChineseMonth(y, g), c = [
                        "一",
                        "二",
                        "三",
                        "四",
                        "五",
                        "六",
                        "七",
                        "八",
                        "九",
                        "十",
                        "十一",
                        "十二"
                      ][x - 1];
                      return this.isIntercalaryMonth(y, g) && (c = "闰" + c), c;
                    },
                    parseMonth: function(l, o) {
                      l = this._validateYear(l);
                      var y = parseInt(o), g;
                      if (isNaN(y))
                        o[0] === "闰" && (g = !0, o = o.substring(1)), o[o.length - 1] === "月" && (o = o.substring(0, o.length - 1)), y = 1 + [
                          "一",
                          "二",
                          "三",
                          "四",
                          "五",
                          "六",
                          "七",
                          "八",
                          "九",
                          "十",
                          "十一",
                          "十二"
                        ].indexOf(o);
                      else {
                        var x = o[o.length - 1];
                        g = x === "i" || x === "I";
                      }
                      var c = this.toMonthIndex(l, y, g);
                      return c;
                    },
                    dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
                    dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
                    dayNamesMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
                    digits: null,
                    dateFormat: "yyyy/mm/dd",
                    firstDay: 1,
                    isRTL: !1
                  }
                },
                /** Check that a candidate date is from the same calendar and is valid.
                    @memberof BaseCalendar
                    @private
                    @param year {CDate|number} The date or the year to validate.
                    @param error {string} Error message if invalid.
                    @return {number} The year.
                    @throws Error if year out of range. */
                _validateYear: function(l, o) {
                  if (l.year && (l = l.year()), typeof l != "number" || l < 1888 || l > 2111)
                    throw o.replace(/\{0\}/, this.local.name);
                  return l;
                },
                /** Retrieve the month index (i.e. accounting for intercalary months).
                    @memberof ChineseCalendar
                    @param year {number} The year.
                    @param month {number} The month (1 for first month).
                    @param [isIntercalary=false] {boolean} If month is intercalary.
                    @return {number} The month index (0 for first month).
                    @throws Error if an invalid month/year or a different calendar used. */
                toMonthIndex: function(l, o, y) {
                  var g = this.intercalaryMonth(l), x = y && o !== g;
                  if (x || o < 1 || o > 12)
                    throw b.local.invalidMonth.replace(/\{0\}/, this.local.name);
                  var c;
                  return g ? !y && o <= g ? c = o - 1 : c = o : c = o - 1, c;
                },
                /** Retrieve the month (i.e. accounting for intercalary months).
                    @memberof ChineseCalendar
                    @param year {CDate|number} The date or the year to examine.
                    @param monthIndex {number} The month index (0 for first month).
                    @return {number} The month (1 for first month).
                    @throws Error if an invalid month/year or a different calendar used. */
                toChineseMonth: function(l, o) {
                  l.year && (l = l.year(), o = l.month());
                  var y = this.intercalaryMonth(l), g = y ? 12 : 11;
                  if (o < 0 || o > g)
                    throw b.local.invalidMonth.replace(/\{0\}/, this.local.name);
                  var x;
                  return y ? o < y ? x = o + 1 : x = o : x = o + 1, x;
                },
                /** Determine the intercalary month of a year (if any).
                    @memberof ChineseCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {number} The intercalary month number, or 0 if none.
                    @throws Error if an invalid year or a different calendar used. */
                intercalaryMonth: function(l) {
                  l = this._validateYear(l);
                  var o = t[l - t[0]], y = o >> 13;
                  return y;
                },
                /** Determine whether this date is an intercalary month.
                    @memberof ChineseCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [monthIndex] {number} The month index to examine.
                    @return {boolean} <code>true</code> if this is an intercalary month, <code>false</code> if not.
                    @throws Error if an invalid year or a different calendar used. */
                isIntercalaryMonth: function(l, o) {
                  l.year && (l = l.year(), o = l.month());
                  var y = this.intercalaryMonth(l);
                  return !!y && y === o;
                },
                /** Determine whether this date is in a leap year.
                    @memberof ChineseCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.
                    @throws Error if an invalid year or a different calendar used. */
                leapYear: function(l) {
                  return this.intercalaryMonth(l) !== 0;
                },
                /** Determine the week of the year for a date - ISO 8601.
                    @memberof ChineseCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [monthIndex] {number} The month index to examine.
                    @param [day] {number} The day to examine.
                    @return {number} The week of the year.
                    @throws Error if an invalid date or a different calendar used. */
                weekOfYear: function(l, o, y) {
                  var g = this._validateYear(l, b.local.invalidyear), x = r[g - r[0]], c = x >> 9 & 4095, v = x >> 5 & 15, f = x & 31, _;
                  _ = n.newDate(c, v, f), _.add(4 - (_.dayOfWeek() || 7), "d");
                  var S = this.toJD(l, o, y) - _.toJD();
                  return 1 + Math.floor(S / 7);
                },
                /** Retrieve the number of months in a year.
                    @memberof ChineseCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {number} The number of months.
                    @throws Error if an invalid year or a different calendar used. */
                monthsInYear: function(l) {
                  return this.leapYear(l) ? 13 : 12;
                },
                /** Retrieve the number of days in a month.
                    @memberof ChineseCalendar
                    @param year {CDate|number} The date to examine or the year of the month.
                    @param [monthIndex] {number} The month index.
                    @return {number} The number of days in this month.
                    @throws Error if an invalid month/year or a different calendar used. */
                daysInMonth: function(l, o) {
                  l.year && (o = l.month(), l = l.year()), l = this._validateYear(l);
                  var y = t[l - t[0]], g = y >> 13, x = g ? 12 : 11;
                  if (o > x)
                    throw b.local.invalidMonth.replace(/\{0\}/, this.local.name);
                  var c = y & 1 << 12 - o ? 30 : 29;
                  return c;
                },
                /** Determine whether this date is a week day.
                    @memberof ChineseCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [monthIndex] {number} The month index to examine.
                    @param [day] {number} The day to examine.
                    @return {boolean} <code>true</code> if a week day, <code>false</code> if not.
                    @throws Error if an invalid date or a different calendar used. */
                weekDay: function(l, o, y) {
                  return (this.dayOfWeek(l, o, y) || 7) < 6;
                },
                /** Retrieve the Julian date equivalent for this date,
                    i.e. days since January 1, 4713 BCE Greenwich noon.
                    @memberof ChineseCalendar
                    @param year {CDate|number} The date to convert or the year to convert.
                    @param [monthIndex] {number} The month index to convert.
                    @param [day] {number} The day to convert.
                    @return {number} The equivalent Julian date.
                    @throws Error if an invalid date or a different calendar used. */
                toJD: function(l, o, y) {
                  var g = this._validate(l, c, y, b.local.invalidDate);
                  l = this._validateYear(g.year()), o = g.month(), y = g.day();
                  var x = this.isIntercalaryMonth(l, o), c = this.toChineseMonth(l, o), v = a(l, c, y, x);
                  return n.toJD(v.year, v.month, v.day);
                },
                /** Create a new date from a Julian date.
                    @memberof ChineseCalendar
                    @param jd {number} The Julian date to convert.
                    @return {CDate} The equivalent date. */
                fromJD: function(l) {
                  var o = n.fromJD(l), y = i(o.year(), o.month(), o.day()), g = this.toMonthIndex(
                    y.year,
                    y.month,
                    y.isIntercalary
                  );
                  return this.newDate(y.year, g, y.day);
                },
                /** Create a new date from a string.
                    @memberof ChineseCalendar
                    @param dateString {string} String representing a Chinese date
                    @return {CDate} The new date.
                    @throws Error if an invalid date. */
                fromString: function(l) {
                  var o = l.match(T), y = this._validateYear(+o[1]), g = +o[2], x = !!o[3], c = this.toMonthIndex(y, g, x), v = +o[4];
                  return this.newDate(y, c, v);
                },
                /** Add period(s) to a date.
                    Cater for no year zero.
                    @memberof ChineseCalendar
                    @param date {CDate} The starting date.
                    @param offset {number} The number of periods to adjust by.
                    @param period {string} One of 'y' for year, 'm' for month, 'w' for week, 'd' for day.
                    @return {CDate} The updated date.
                    @throws Error if a different calendar used. */
                add: function(l, o, y) {
                  var g = l.year(), x = l.month(), c = this.isIntercalaryMonth(g, x), v = this.toChineseMonth(g, x), f = Object.getPrototypeOf(s.prototype).add.call(this, l, o, y);
                  if (y === "y") {
                    var _ = f.year(), S = f.month(), M = this.isIntercalaryMonth(_, v), C = c && M ? this.toMonthIndex(_, v, !0) : this.toMonthIndex(_, v, !1);
                    C !== S && f.month(C);
                  }
                  return f;
                }
              });
              var T = /^\s*(-?\d\d\d\d|\d\d)[-/](\d?\d)([iI]?)[-/](\d?\d)/m, A = /^\d?\d[iI]?/m, p = /^闰?十?[一二三四五六七八九]?月/m, u = /^闰?十?[一二三四五六七八九]?/m;
              b.calendars.chinese = s;
              var t = [
                1887,
                5780,
                5802,
                19157,
                2742,
                50359,
                1198,
                2646,
                46378,
                7466,
                3412,
                30122,
                5482,
                67949,
                2396,
                5294,
                43597,
                6732,
                6954,
                36181,
                2772,
                4954,
                18781,
                2396,
                54427,
                5274,
                6730,
                47781,
                5800,
                6868,
                21210,
                4790,
                59703,
                2350,
                5270,
                46667,
                3402,
                3496,
                38325,
                1388,
                4782,
                18735,
                2350,
                52374,
                6804,
                7498,
                44457,
                2906,
                1388,
                29294,
                4700,
                63789,
                6442,
                6804,
                56138,
                5802,
                2772,
                38235,
                1210,
                4698,
                22827,
                5418,
                63125,
                3476,
                5802,
                43701,
                2484,
                5302,
                27223,
                2646,
                70954,
                7466,
                3412,
                54698,
                5482,
                2412,
                38062,
                5294,
                2636,
                32038,
                6954,
                60245,
                2772,
                4826,
                43357,
                2394,
                5274,
                39501,
                6730,
                72357,
                5800,
                5844,
                53978,
                4790,
                2358,
                38039,
                5270,
                87627,
                3402,
                3496,
                54708,
                5484,
                4782,
                43311,
                2350,
                3222,
                27978,
                7498,
                68965,
                2904,
                5484,
                45677,
                4700,
                6444,
                39573,
                6804,
                6986,
                19285,
                2772,
                62811,
                1210,
                4698,
                47403,
                5418,
                5780,
                38570,
                5546,
                76469,
                2420,
                5302,
                51799,
                2646,
                5414,
                36501,
                3412,
                5546,
                18869,
                2412,
                54446,
                5276,
                6732,
                48422,
                6822,
                2900,
                28010,
                4826,
                92509,
                2394,
                5274,
                55883,
                6730,
                6820,
                47956,
                5812,
                2778,
                18779,
                2358,
                62615,
                5270,
                5450,
                46757,
                3492,
                5556,
                27318,
                4718,
                67887,
                2350,
                3222,
                52554,
                7498,
                3428,
                38252,
                5468,
                4700,
                31022,
                6444,
                64149,
                6804,
                6986,
                43861,
                2772,
                5338,
                35421,
                2650,
                70955,
                5418,
                5780,
                54954,
                5546,
                2740,
                38074,
                5302,
                2646,
                29991,
                3366,
                61011,
                3412,
                5546,
                43445,
                2412,
                5294,
                35406,
                6732,
                72998,
                6820,
                6996,
                52586,
                2778,
                2396,
                38045,
                5274,
                6698,
                23333,
                6820,
                64338,
                5812,
                2746,
                43355,
                2358,
                5270,
                39499,
                5450,
                79525,
                3492,
                5548
              ], r = [
                1887,
                966732,
                967231,
                967733,
                968265,
                968766,
                969297,
                969798,
                970298,
                970829,
                971330,
                971830,
                972362,
                972863,
                973395,
                973896,
                974397,
                974928,
                975428,
                975929,
                976461,
                976962,
                977462,
                977994,
                978494,
                979026,
                979526,
                980026,
                980558,
                981059,
                981559,
                982091,
                982593,
                983124,
                983624,
                984124,
                984656,
                985157,
                985656,
                986189,
                986690,
                987191,
                987722,
                988222,
                988753,
                989254,
                989754,
                990286,
                990788,
                991288,
                991819,
                992319,
                992851,
                993352,
                993851,
                994383,
                994885,
                995385,
                995917,
                996418,
                996918,
                997450,
                997949,
                998481,
                998982,
                999483,
                1000014,
                1000515,
                1001016,
                1001548,
                1002047,
                1002578,
                1003080,
                1003580,
                1004111,
                1004613,
                1005113,
                1005645,
                1006146,
                1006645,
                1007177,
                1007678,
                1008209,
                1008710,
                1009211,
                1009743,
                1010243,
                1010743,
                1011275,
                1011775,
                1012306,
                1012807,
                1013308,
                1013840,
                1014341,
                1014841,
                1015373,
                1015874,
                1016404,
                1016905,
                1017405,
                1017937,
                1018438,
                1018939,
                1019471,
                1019972,
                1020471,
                1021002,
                1021503,
                1022035,
                1022535,
                1023036,
                1023568,
                1024069,
                1024568,
                1025100,
                1025601,
                1026102,
                1026633,
                1027133,
                1027666,
                1028167,
                1028666,
                1029198,
                1029699,
                1030199,
                1030730,
                1031231,
                1031763,
                1032264,
                1032764,
                1033296,
                1033797,
                1034297,
                1034828,
                1035329,
                1035830,
                1036362,
                1036861,
                1037393,
                1037894,
                1038394,
                1038925,
                1039427,
                1039927,
                1040459,
                1040959,
                1041491,
                1041992,
                1042492,
                1043023,
                1043524,
                1044024,
                1044556,
                1045057,
                1045558,
                1046090,
                1046590,
                1047121,
                1047622,
                1048122,
                1048654,
                1049154,
                1049655,
                1050187,
                1050689,
                1051219,
                1051720,
                1052220,
                1052751,
                1053252,
                1053752,
                1054284,
                1054786,
                1055285,
                1055817,
                1056317,
                1056849,
                1057349,
                1057850,
                1058382,
                1058883,
                1059383,
                1059915,
                1060415,
                1060947,
                1061447,
                1061947,
                1062479,
                1062981,
                1063480,
                1064012,
                1064514,
                1065014,
                1065545,
                1066045,
                1066577,
                1067078,
                1067578,
                1068110,
                1068611,
                1069112,
                1069642,
                1070142,
                1070674,
                1071175,
                1071675,
                1072207,
                1072709,
                1073209,
                1073740,
                1074241,
                1074741,
                1075273,
                1075773,
                1076305,
                1076807,
                1077308,
                1077839,
                1078340,
                1078840,
                1079372,
                1079871,
                1080403,
                1080904
              ];
              function i(l, o, y, g) {
                var x, c;
                if (typeof l == "object")
                  x = l, c = o || {};
                else {
                  var v = typeof l == "number" && l >= 1888 && l <= 2111;
                  if (!v)
                    throw new Error("Solar year outside range 1888-2111");
                  var f = typeof o == "number" && o >= 1 && o <= 12;
                  if (!f)
                    throw new Error("Solar month outside range 1 - 12");
                  var _ = typeof y == "number" && y >= 1 && y <= 31;
                  if (!_)
                    throw new Error("Solar day outside range 1 - 31");
                  x = {
                    year: l,
                    month: o,
                    day: y
                  }, c = {};
                }
                var S = r[x.year - r[0]], M = x.year << 9 | x.month << 5 | x.day;
                c.year = M >= S ? x.year : x.year - 1, S = r[c.year - r[0]];
                var C = S >> 9 & 4095, m = S >> 5 & 15, L = S & 31, d, h = new Date(C, m - 1, L), E = new Date(x.year, x.month - 1, x.day);
                d = Math.round(
                  (E - h) / 864e5
                );
                var w = t[c.year - t[0]], z;
                for (z = 0; z < 13; z++) {
                  var O = w & 1 << 12 - z ? 30 : 29;
                  if (d < O)
                    break;
                  d -= O;
                }
                var B = w >> 13;
                return !B || z < B ? (c.isIntercalary = !1, c.month = 1 + z) : z === B ? (c.isIntercalary = !0, c.month = z) : (c.isIntercalary = !1, c.month = z), c.day = 1 + d, c;
              }
              function a(l, o, y, g, x) {
                var c, v;
                if (typeof l == "object")
                  v = l, c = o || {};
                else {
                  var f = typeof l == "number" && l >= 1888 && l <= 2111;
                  if (!f)
                    throw new Error("Lunar year outside range 1888-2111");
                  var _ = typeof o == "number" && o >= 1 && o <= 12;
                  if (!_)
                    throw new Error("Lunar month outside range 1 - 12");
                  var S = typeof y == "number" && y >= 1 && y <= 30;
                  if (!S)
                    throw new Error("Lunar day outside range 1 - 30");
                  var M;
                  typeof g == "object" ? (M = !1, c = g) : (M = !!g, c = {}), v = {
                    year: l,
                    month: o,
                    day: y,
                    isIntercalary: M
                  };
                }
                var C;
                C = v.day - 1;
                var m = t[v.year - t[0]], L = m >> 13, d;
                L && (v.month > L || v.isIntercalary) ? d = v.month : d = v.month - 1;
                for (var h = 0; h < d; h++) {
                  var E = m & 1 << 12 - h ? 30 : 29;
                  C += E;
                }
                var w = r[v.year - r[0]], z = w >> 9 & 4095, O = w >> 5 & 15, B = w & 31, V = new Date(z, O - 1, B + C);
                return c.year = V.getFullYear(), c.month = 1 + V.getMonth(), c.day = V.getDate(), c;
              }
            }
          ),
          /***/
          72210: (
            /***/
            function(Y, K, e) {
              var b = e(24453), P = e(27976);
              function n(s) {
                this.local = this.regionalOptions[s || ""] || this.regionalOptions[""];
              }
              n.prototype = new b.baseCalendar(), P(n.prototype, {
                /** The calendar name.
                    @memberof CopticCalendar */
                name: "Coptic",
                /** Julian date of start of Coptic epoch: 29 August 284 CE (Gregorian).
                    @memberof CopticCalendar */
                jdEpoch: 18250295e-1,
                /** Days per month in a common year.
                    @memberof CopticCalendar */
                daysPerMonth: [30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 5],
                /** <code>true</code> if has a year zero, <code>false</code> if not.
                    @memberof CopticCalendar */
                hasYearZero: !1,
                /** The minimum month number.
                    @memberof CopticCalendar */
                minMonth: 1,
                /** The first month in the year.
                    @memberof CopticCalendar */
                firstMonth: 1,
                /** The minimum day number.
                    @memberof CopticCalendar */
                minDay: 1,
                /** Localisations for the plugin.
                    Entries are objects indexed by the language code ('' being the default US/English).
                    Each object has the following attributes.
                    @memberof CopticCalendar
                    @property name {string} The calendar name.
                    @property epochs {string[]} The epoch names.
                    @property monthNames {string[]} The long names of the months of the year.
                    @property monthNamesShort {string[]} The short names of the months of the year.
                    @property dayNames {string[]} The long names of the days of the week.
                    @property dayNamesShort {string[]} The short names of the days of the week.
                    @property dayNamesMin {string[]} The minimal names of the days of the week.
                    @property dateFormat {string} The date format for this calendar.
                            See the options on <a href="BaseCalendar.html#formatDate"><code>formatDate</code></a> for details.
                    @property firstDay {number} The number of the first day of the week, starting at 0.
                    @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */
                regionalOptions: {
                  // Localisations
                  "": {
                    name: "Coptic",
                    epochs: ["BAM", "AM"],
                    monthNames: [
                      "Thout",
                      "Paopi",
                      "Hathor",
                      "Koiak",
                      "Tobi",
                      "Meshir",
                      "Paremhat",
                      "Paremoude",
                      "Pashons",
                      "Paoni",
                      "Epip",
                      "Mesori",
                      "Pi Kogi Enavot"
                    ],
                    monthNamesShort: [
                      "Tho",
                      "Pao",
                      "Hath",
                      "Koi",
                      "Tob",
                      "Mesh",
                      "Pat",
                      "Pad",
                      "Pash",
                      "Pao",
                      "Epi",
                      "Meso",
                      "PiK"
                    ],
                    dayNames: ["Tkyriaka", "Pesnau", "Pshoment", "Peftoou", "Ptiou", "Psoou", "Psabbaton"],
                    dayNamesShort: ["Tky", "Pes", "Psh", "Pef", "Pti", "Pso", "Psa"],
                    dayNamesMin: ["Tk", "Pes", "Psh", "Pef", "Pt", "Pso", "Psa"],
                    digits: null,
                    dateFormat: "dd/mm/yyyy",
                    firstDay: 0,
                    isRTL: !1
                  }
                },
                /** Determine whether this date is in a leap year.
                    @memberof CopticCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.
                    @throws Error if an invalid year or a different calendar used. */
                leapYear: function(A) {
                  var T = this._validate(A, this.minMonth, this.minDay, b.local.invalidYear), A = T.year() + (T.year() < 0 ? 1 : 0);
                  return A % 4 === 3 || A % 4 === -1;
                },
                /** Retrieve the number of months in a year.
                    @memberof CopticCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {number} The number of months.
                    @throws Error if an invalid year or a different calendar used. */
                monthsInYear: function(s) {
                  return this._validate(
                    s,
                    this.minMonth,
                    this.minDay,
                    b.local.invalidYear || b.regionalOptions[""].invalidYear
                  ), 13;
                },
                /** Determine the week of the year for a date.
                    @memberof CopticCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number) the month to examine.
                    @param [day] {number} The day to examine.
                    @return {number} The week of the year.
                    @throws Error if an invalid date or a different calendar used. */
                weekOfYear: function(s, T, A) {
                  var p = this.newDate(s, T, A);
                  return p.add(-p.dayOfWeek(), "d"), Math.floor((p.dayOfYear() - 1) / 7) + 1;
                },
                /** Retrieve the number of days in a month.
                    @memberof CopticCalendar
                    @param year {CDate|number} The date to examine or the year of the month.
                    @param [month] {number} The month.
                    @return {number} The number of days in this month.
                    @throws Error if an invalid month/year or a different calendar used. */
                daysInMonth: function(s, T) {
                  var A = this._validate(s, T, this.minDay, b.local.invalidMonth);
                  return this.daysPerMonth[A.month() - 1] + (A.month() === 13 && this.leapYear(A.year()) ? 1 : 0);
                },
                /** Determine whether this date is a week day.
                    @memberof CopticCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param month {number} The month to examine.
                    @param day {number} The day to examine.
                    @return {boolean} <code>true</code> if a week day, <code>false</code> if not.
                    @throws Error if an invalid date or a different calendar used. */
                weekDay: function(s, T, A) {
                  return (this.dayOfWeek(s, T, A) || 7) < 6;
                },
                /** Retrieve the Julian date equivalent for this date,
                    i.e. days since January 1, 4713 BCE Greenwich noon.
                    @memberof CopticCalendar
                    @param year {CDate|number} The date to convert or the year to convert.
                    @param [month] {number) the month to convert.
                    @param [day] {number} The day to convert.
                    @return {number} The equivalent Julian date.
                    @throws Error if an invalid date or a different calendar used. */
                toJD: function(s, T, A) {
                  var p = this._validate(s, T, A, b.local.invalidDate);
                  return s = p.year(), s < 0 && s++, p.day() + (p.month() - 1) * 30 + (s - 1) * 365 + Math.floor(s / 4) + this.jdEpoch - 1;
                },
                /** Create a new date from a Julian date.
                    @memberof CopticCalendar
                    @param jd {number} The Julian date to convert.
                    @return {CDate} The equivalent date. */
                fromJD: function(s) {
                  var T = Math.floor(s) + 0.5 - this.jdEpoch, A = Math.floor((T - Math.floor((T + 366) / 1461)) / 365) + 1;
                  A <= 0 && A--, T = Math.floor(s) + 0.5 - this.newDate(A, 1, 1).toJD();
                  var p = Math.floor(T / 30) + 1, u = T - (p - 1) * 30 + 1;
                  return this.newDate(A, p, u);
                }
              }), b.calendars.coptic = n;
            }
          ),
          /***/
          28569: (
            /***/
            function(Y, K, e) {
              var b = e(24453), P = e(27976);
              function n(T) {
                this.local = this.regionalOptions[T || ""] || this.regionalOptions[""];
              }
              n.prototype = new b.baseCalendar(), P(n.prototype, {
                /** The calendar name.
                    @memberof DiscworldCalendar */
                name: "Discworld",
                /** Julian date of start of Discworld epoch: 1 January 0001 CE.
                    @memberof DiscworldCalendar */
                jdEpoch: 17214255e-1,
                /** Days per month in a common year.
                    @memberof DiscworldCalendar */
                daysPerMonth: [16, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32],
                /** <code>true</code> if has a year zero, <code>false</code> if not.
                    @memberof DiscworldCalendar */
                hasYearZero: !1,
                /** The minimum month number.
                    @memberof DiscworldCalendar */
                minMonth: 1,
                /** The first month in the year.
                    @memberof DiscworldCalendar */
                firstMonth: 1,
                /** The minimum day number.
                    @memberof DiscworldCalendar */
                minDay: 1,
                /** Localisations for the plugin.
                    Entries are objects indexed by the language code ('' being the default US/English).
                    Each object has the following attributes.
                    @memberof DiscworldCalendar
                    @property name {string} The calendar name.
                    @property epochs {string[]} The epoch names.
                    @property monthNames {string[]} The long names of the months of the year.
                    @property monthNamesShort {string[]} The short names of the months of the year.
                    @property dayNames {string[]} The long names of the days of the week.
                    @property dayNamesShort {string[]} The short names of the days of the week.
                    @property dayNamesMin {string[]} The minimal names of the days of the week.
                    @property dateFormat {string} The date format for this calendar.
                            See the options on <a href="BaseCalendar.html#formatDate"><code>formatDate</code></a> for details.
                    @property firstDay {number} The number of the first day of the week, starting at 0.
                    @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */
                regionalOptions: {
                  // Localisations
                  "": {
                    name: "Discworld",
                    epochs: ["BUC", "UC"],
                    monthNames: [
                      "Ick",
                      "Offle",
                      "February",
                      "March",
                      "April",
                      "May",
                      "June",
                      "Grune",
                      "August",
                      "Spune",
                      "Sektober",
                      "Ember",
                      "December"
                    ],
                    monthNamesShort: ["Ick", "Off", "Feb", "Mar", "Apr", "May", "Jun", "Gru", "Aug", "Spu", "Sek", "Emb", "Dec"],
                    dayNames: ["Sunday", "Octeday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
                    dayNamesShort: ["Sun", "Oct", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
                    dayNamesMin: ["Su", "Oc", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
                    digits: null,
                    dateFormat: "yyyy/mm/dd",
                    firstDay: 2,
                    isRTL: !1
                  }
                },
                /** Determine whether this date is in a leap year.
                    @memberof DiscworldCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.
                    @throws Error if an invalid year or a different calendar used. */
                leapYear: function(T) {
                  return this._validate(T, this.minMonth, this.minDay, b.local.invalidYear), !1;
                },
                /** Retrieve the number of months in a year.
                    @memberof DiscworldCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {number} The number of months.
                    @throws Error if an invalid year or a different calendar used. */
                monthsInYear: function(T) {
                  return this._validate(T, this.minMonth, this.minDay, b.local.invalidYear), 13;
                },
                /** Retrieve the number of days in a year.
                    @memberof DiscworldCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {number} The number of days.
                    @throws Error if an invalid year or a different calendar used. */
                daysInYear: function(T) {
                  return this._validate(T, this.minMonth, this.minDay, b.local.invalidYear), 400;
                },
                /** Determine the week of the year for a date.
                    @memberof DiscworldCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {number} The week of the year.
                    @throws Error if an invalid date or a different calendar used. */
                weekOfYear: function(T, A, p) {
                  var u = this.newDate(T, A, p);
                  return u.add(-u.dayOfWeek(), "d"), Math.floor((u.dayOfYear() - 1) / 8) + 1;
                },
                /** Retrieve the number of days in a month.
                    @memberof DiscworldCalendar
                    @param year {CDate|number} The date to examine or the year of the month.
                    @param [month] {number} The month.
                    @return {number} The number of days in this month.
                    @throws Error if an invalid month/year or a different calendar used. */
                daysInMonth: function(T, A) {
                  var p = this._validate(T, A, this.minDay, b.local.invalidMonth);
                  return this.daysPerMonth[p.month() - 1];
                },
                /** Retrieve the number of days in a week.
                    @memberof DiscworldCalendar
                    @return {number} The number of days. */
                daysInWeek: function() {
                  return 8;
                },
                /** Retrieve the day of the week for a date.
                    @memberof DiscworldCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {number} The day of the week: 0 to number of days - 1.
                    @throws Error if an invalid date or a different calendar used. */
                dayOfWeek: function(T, A, p) {
                  var u = this._validate(T, A, p, b.local.invalidDate);
                  return (u.day() + 1) % 8;
                },
                /** Determine whether this date is a week day.
                    @memberof DiscworldCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {boolean} <code>true</code> if a week day, <code>false</code> if not.
                    @throws Error if an invalid date or a different calendar used. */
                weekDay: function(T, A, p) {
                  var u = this.dayOfWeek(T, A, p);
                  return u >= 2 && u <= 6;
                },
                /** Retrieve additional information about a date.
                    @memberof DiscworldCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {object} Additional information - contents depends on calendar.
                    @throws Error if an invalid date or a different calendar used. */
                extraInfo: function(T, A, p) {
                  var u = this._validate(T, A, p, b.local.invalidDate);
                  return { century: s[Math.floor((u.year() - 1) / 100) + 1] || "" };
                },
                /** Retrieve the Julian date equivalent for this date,
                    i.e. days since January 1, 4713 BCE Greenwich noon.
                    @memberof DiscworldCalendar
                    @param year {CDate|number} The date to convert or the year to convert.
                    @param [month] {number} The month to convert.
                    @param [day] {number} The day to convert.
                    @return {number} The equivalent Julian date.
                    @throws Error if an invalid date or a different calendar used. */
                toJD: function(T, A, p) {
                  var u = this._validate(T, A, p, b.local.invalidDate);
                  return T = u.year() + (u.year() < 0 ? 1 : 0), A = u.month(), p = u.day(), p + (A > 1 ? 16 : 0) + (A > 2 ? (A - 2) * 32 : 0) + (T - 1) * 400 + this.jdEpoch - 1;
                },
                /** Create a new date from a Julian date.
                    @memberof DiscworldCalendar
                    @param jd {number} The Julian date to convert.
                    @return {CDate} The equivalent date. */
                fromJD: function(T) {
                  T = Math.floor(T + 0.5) - Math.floor(this.jdEpoch) - 1;
                  var A = Math.floor(T / 400) + 1;
                  T -= (A - 1) * 400, T += T > 15 ? 16 : 0;
                  var p = Math.floor(T / 32) + 1, u = T - (p - 1) * 32 + 1;
                  return this.newDate(A <= 0 ? A - 1 : A, p, u);
                }
              });
              var s = {
                20: "Fruitbat",
                21: "Anchovy"
              };
              b.calendars.discworld = n;
            }
          ),
          /***/
          81133: (
            /***/
            function(Y, K, e) {
              var b = e(24453), P = e(27976);
              function n(s) {
                this.local = this.regionalOptions[s || ""] || this.regionalOptions[""];
              }
              n.prototype = new b.baseCalendar(), P(n.prototype, {
                /** The calendar name.
                    @memberof EthiopianCalendar */
                name: "Ethiopian",
                /** Julian date of start of Ethiopian epoch: 27 August 8 CE (Gregorian).
                    @memberof EthiopianCalendar */
                jdEpoch: 17242205e-1,
                /** Days per month in a common year.
                    @memberof EthiopianCalendar */
                daysPerMonth: [30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 5],
                /** <code>true</code> if has a year zero, <code>false</code> if not.
                    @memberof EthiopianCalendar */
                hasYearZero: !1,
                /** The minimum month number.
                    @memberof EthiopianCalendar */
                minMonth: 1,
                /** The first month in the year.
                    @memberof EthiopianCalendar */
                firstMonth: 1,
                /** The minimum day number.
                    @memberof EthiopianCalendar */
                minDay: 1,
                /** Localisations for the plugin.
                    Entries are objects indexed by the language code ('' being the default US/English).
                    Each object has the following attributes.
                    @memberof EthiopianCalendar
                    @property name {string} The calendar name.
                    @property epochs {string[]} The epoch names.
                    @property monthNames {string[]} The long names of the months of the year.
                    @property monthNamesShort {string[]} The short names of the months of the year.
                    @property dayNames {string[]} The long names of the days of the week.
                    @property dayNamesShort {string[]} The short names of the days of the week.
                    @property dayNamesMin {string[]} The minimal names of the days of the week.
                    @property dateFormat {string} The date format for this calendar.
                            See the options on <a href="BaseCalendar.html#formatDate"><code>formatDate</code></a> for details.
                    @property firstDay {number} The number of the first day of the week, starting at 0.
                    @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */
                regionalOptions: {
                  // Localisations
                  "": {
                    name: "Ethiopian",
                    epochs: ["BEE", "EE"],
                    monthNames: [
                      "Meskerem",
                      "Tikemet",
                      "Hidar",
                      "Tahesas",
                      "Tir",
                      "Yekatit",
                      "Megabit",
                      "Miazia",
                      "Genbot",
                      "Sene",
                      "Hamle",
                      "Nehase",
                      "Pagume"
                    ],
                    monthNamesShort: [
                      "Mes",
                      "Tik",
                      "Hid",
                      "Tah",
                      "Tir",
                      "Yek",
                      "Meg",
                      "Mia",
                      "Gen",
                      "Sen",
                      "Ham",
                      "Neh",
                      "Pag"
                    ],
                    dayNames: ["Ehud", "Segno", "Maksegno", "Irob", "Hamus", "Arb", "Kidame"],
                    dayNamesShort: ["Ehu", "Seg", "Mak", "Iro", "Ham", "Arb", "Kid"],
                    dayNamesMin: ["Eh", "Se", "Ma", "Ir", "Ha", "Ar", "Ki"],
                    digits: null,
                    dateFormat: "dd/mm/yyyy",
                    firstDay: 0,
                    isRTL: !1
                  }
                },
                /** Determine whether this date is in a leap year.
                    @memberof EthiopianCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.
                    @throws Error if an invalid year or a different calendar used. */
                leapYear: function(A) {
                  var T = this._validate(A, this.minMonth, this.minDay, b.local.invalidYear), A = T.year() + (T.year() < 0 ? 1 : 0);
                  return A % 4 === 3 || A % 4 === -1;
                },
                /** Retrieve the number of months in a year.
                    @memberof EthiopianCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {number} The number of months.
                    @throws Error if an invalid year or a different calendar used. */
                monthsInYear: function(s) {
                  return this._validate(
                    s,
                    this.minMonth,
                    this.minDay,
                    b.local.invalidYear || b.regionalOptions[""].invalidYear
                  ), 13;
                },
                /** Determine the week of the year for a date.
                    @memberof EthiopianCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {number} The week of the year.
                    @throws Error if an invalid date or a different calendar used. */
                weekOfYear: function(s, T, A) {
                  var p = this.newDate(s, T, A);
                  return p.add(-p.dayOfWeek(), "d"), Math.floor((p.dayOfYear() - 1) / 7) + 1;
                },
                /** Retrieve the number of days in a month.
                    @memberof EthiopianCalendar
                    @param year {CDate|number} The date to examine or the year of the month.
                    @param [month] {number} The month.
                    @return {number} The number of days in this month.
                    @throws Error if an invalid month/year or a different calendar used. */
                daysInMonth: function(s, T) {
                  var A = this._validate(s, T, this.minDay, b.local.invalidMonth);
                  return this.daysPerMonth[A.month() - 1] + (A.month() === 13 && this.leapYear(A.year()) ? 1 : 0);
                },
                /** Determine whether this date is a week day.
                    @memberof EthiopianCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {boolean} <code>true</code> if a week day, <code>false</code> if not.
                    @throws Error if an invalid date or a different calendar used. */
                weekDay: function(s, T, A) {
                  return (this.dayOfWeek(s, T, A) || 7) < 6;
                },
                /** Retrieve the Julian date equivalent for this date,
                    i.e. days since January 1, 4713 BCE Greenwich noon.
                    @memberof EthiopianCalendar
                    @param year {CDate|number} The date to convert or the year to convert.
                    @param [month] {number} The month to convert.
                    @param [day] {number} The day to convert.
                    @return {number} The equivalent Julian date.
                    @throws Error if an invalid date or a different calendar used. */
                toJD: function(s, T, A) {
                  var p = this._validate(s, T, A, b.local.invalidDate);
                  return s = p.year(), s < 0 && s++, p.day() + (p.month() - 1) * 30 + (s - 1) * 365 + Math.floor(s / 4) + this.jdEpoch - 1;
                },
                /** Create a new date from a Julian date.
                    @memberof EthiopianCalendar
                    @param jd {number} the Julian date to convert.
                    @return {CDate} the equivalent date. */
                fromJD: function(s) {
                  var T = Math.floor(s) + 0.5 - this.jdEpoch, A = Math.floor((T - Math.floor((T + 366) / 1461)) / 365) + 1;
                  A <= 0 && A--, T = Math.floor(s) + 0.5 - this.newDate(A, 1, 1).toJD();
                  var p = Math.floor(T / 30) + 1, u = T - (p - 1) * 30 + 1;
                  return this.newDate(A, p, u);
                }
              }), b.calendars.ethiopian = n;
            }
          ),
          /***/
          78295: (
            /***/
            function(Y, K, e) {
              var b = e(24453), P = e(27976);
              function n(T) {
                this.local = this.regionalOptions[T || ""] || this.regionalOptions[""];
              }
              n.prototype = new b.baseCalendar(), P(n.prototype, {
                /** The calendar name.
                    @memberof HebrewCalendar */
                name: "Hebrew",
                /** Julian date of start of Hebrew epoch: 7 October 3761 BCE.
                    @memberof HebrewCalendar */
                jdEpoch: 347995.5,
                /** Days per month in a common year.
                    @memberof HebrewCalendar */
                daysPerMonth: [30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 29],
                /** <code>true</code> if has a year zero, <code>false</code> if not.
                    @memberof HebrewCalendar */
                hasYearZero: !1,
                /** The minimum month number.
                    @memberof HebrewCalendar */
                minMonth: 1,
                /** The first month in the year.
                    @memberof HebrewCalendar */
                firstMonth: 7,
                /** The minimum day number.
                    @memberof HebrewCalendar */
                minDay: 1,
                /** Localisations for the plugin.
                    Entries are objects indexed by the language code ('' being the default US/English).
                    Each object has the following attributes.
                    @memberof HebrewCalendar
                    @property name {string} The calendar name.
                    @property epochs {string[]} The epoch names.
                    @property monthNames {string[]} The long names of the months of the year.
                    @property monthNamesShort {string[]} The short names of the months of the year.
                    @property dayNames {string[]} The long names of the days of the week.
                    @property dayNamesShort {string[]} The short names of the days of the week.
                    @property dayNamesMin {string[]} The minimal names of the days of the week.
                    @property dateFormat {string} The date format for this calendar.
                            See the options on <a href="BaseCalendar.html#formatDate"><code>formatDate</code></a> for details.
                    @property firstDay {number} The number of the first day of the week, starting at 0.
                    @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */
                regionalOptions: {
                  // Localisations
                  "": {
                    name: "Hebrew",
                    epochs: ["BAM", "AM"],
                    monthNames: [
                      "Nisan",
                      "Iyar",
                      "Sivan",
                      "Tammuz",
                      "Av",
                      "Elul",
                      "Tishrei",
                      "Cheshvan",
                      "Kislev",
                      "Tevet",
                      "Shevat",
                      "Adar",
                      "Adar II"
                    ],
                    monthNamesShort: ["Nis", "Iya", "Siv", "Tam", "Av", "Elu", "Tis", "Che", "Kis", "Tev", "She", "Ada", "Ad2"],
                    dayNames: ["Yom Rishon", "Yom Sheni", "Yom Shlishi", "Yom Revi'i", "Yom Chamishi", "Yom Shishi", "Yom Shabbat"],
                    dayNamesShort: ["Ris", "She", "Shl", "Rev", "Cha", "Shi", "Sha"],
                    dayNamesMin: ["Ri", "She", "Shl", "Re", "Ch", "Shi", "Sha"],
                    digits: null,
                    dateFormat: "dd/mm/yyyy",
                    firstDay: 0,
                    isRTL: !1
                  }
                },
                /** Determine whether this date is in a leap year.
                    @memberof HebrewCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.
                    @throws Error if an invalid year or a different calendar used. */
                leapYear: function(T) {
                  var A = this._validate(T, this.minMonth, this.minDay, b.local.invalidYear);
                  return this._leapYear(A.year());
                },
                /** Determine whether this date is in a leap year.
                    @memberof HebrewCalendar
                    @private
                    @param year {number} The year to examine.
                    @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.
                    @throws Error if an invalid year or a different calendar used. */
                _leapYear: function(T) {
                  return T = T < 0 ? T + 1 : T, s(T * 7 + 1, 19) < 7;
                },
                /** Retrieve the number of months in a year.
                    @memberof HebrewCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {number} The number of months.
                    @throws Error if an invalid year or a different calendar used. */
                monthsInYear: function(T) {
                  return this._validate(T, this.minMonth, this.minDay, b.local.invalidYear), this._leapYear(T.year ? T.year() : T) ? 13 : 12;
                },
                /** Determine the week of the year for a date.
                    @memberof HebrewCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {number} The week of the year.
                    @throws Error if an invalid date or a different calendar used. */
                weekOfYear: function(T, A, p) {
                  var u = this.newDate(T, A, p);
                  return u.add(-u.dayOfWeek(), "d"), Math.floor((u.dayOfYear() - 1) / 7) + 1;
                },
                /** Retrieve the number of days in a year.
                    @memberof HebrewCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {number} The number of days.
                    @throws Error if an invalid year or a different calendar used. */
                daysInYear: function(T) {
                  var A = this._validate(T, this.minMonth, this.minDay, b.local.invalidYear);
                  return T = A.year(), this.toJD(T === -1 ? 1 : T + 1, 7, 1) - this.toJD(T, 7, 1);
                },
                /** Retrieve the number of days in a month.
                    @memberof HebrewCalendar
                    @param year {CDate|number} The date to examine or the year of the month.
                    @param [month] {number} The month.
                    @return {number} The number of days in this month.
                    @throws Error if an invalid month/year or a different calendar used. */
                daysInMonth: function(T, A) {
                  return T.year && (A = T.month(), T = T.year()), this._validate(T, A, this.minDay, b.local.invalidMonth), A === 12 && this.leapYear(T) || // Adar I
                  A === 8 && s(this.daysInYear(T), 10) === 5 ? 30 : (
                    // Cheshvan in shlemah year
                    A === 9 && s(this.daysInYear(T), 10) === 3 ? 29 : (
                      // Kislev in chaserah year
                      this.daysPerMonth[A - 1]
                    )
                  );
                },
                /** Determine whether this date is a week day.
                    @memberof HebrewCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {boolean} <code>true</code> if a week day, <code>false</code> if not.
                    @throws Error if an invalid date or a different calendar used. */
                weekDay: function(T, A, p) {
                  return this.dayOfWeek(T, A, p) !== 6;
                },
                /** Retrieve additional information about a date - year type.
                    @memberof HebrewCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {object} Additional information - contents depends on calendar.
                    @throws Error if an invalid date or a different calendar used. */
                extraInfo: function(T, A, p) {
                  var u = this._validate(T, A, p, b.local.invalidDate);
                  return { yearType: (this.leapYear(u) ? "embolismic" : "common") + " " + ["deficient", "regular", "complete"][this.daysInYear(u) % 10 - 3] };
                },
                /** Retrieve the Julian date equivalent for this date,
                    i.e. days since January 1, 4713 BCE Greenwich noon.
                    @memberof HebrewCalendar
                    @param year {CDate)|number} The date to convert or the year to convert.
                    @param [month] {number} The month to convert.
                    @param [day] {number} The day to convert.
                    @return {number} The equivalent Julian date.
                    @throws Error if an invalid date or a different calendar used. */
                toJD: function(T, A, p) {
                  var u = this._validate(T, A, p, b.local.invalidDate);
                  T = u.year(), A = u.month(), p = u.day();
                  var t = T <= 0 ? T + 1 : T, r = this.jdEpoch + this._delay1(t) + this._delay2(t) + p + 1;
                  if (A < 7) {
                    for (var i = 7; i <= this.monthsInYear(T); i++)
                      r += this.daysInMonth(T, i);
                    for (var i = 1; i < A; i++)
                      r += this.daysInMonth(T, i);
                  } else
                    for (var i = 7; i < A; i++)
                      r += this.daysInMonth(T, i);
                  return r;
                },
                /** Test for delay of start of new year and to avoid
                    Sunday, Wednesday, or Friday as start of the new year.
                    @memberof HebrewCalendar
                    @private
                    @param year {number} The year to examine.
                    @return {number} The days to offset by. */
                _delay1: function(T) {
                  var A = Math.floor((235 * T - 234) / 19), p = 12084 + 13753 * A, u = A * 29 + Math.floor(p / 25920);
                  return s(3 * (u + 1), 7) < 3 && u++, u;
                },
                /** Check for delay in start of new year due to length of adjacent years.
                    @memberof HebrewCalendar
                    @private
                    @param year {number} The year to examine.
                    @return {number} The days to offset by. */
                _delay2: function(T) {
                  var A = this._delay1(T - 1), p = this._delay1(T), u = this._delay1(T + 1);
                  return u - p === 356 ? 2 : p - A === 382 ? 1 : 0;
                },
                /** Create a new date from a Julian date.
                    @memberof HebrewCalendar
                    @param jd {number} The Julian date to convert.
                    @return {CDate} The equivalent date. */
                fromJD: function(T) {
                  T = Math.floor(T) + 0.5;
                  for (var A = Math.floor((T - this.jdEpoch) * 98496 / 35975351) - 1; T >= this.toJD(A === -1 ? 1 : A + 1, 7, 1); )
                    A++;
                  for (var p = T < this.toJD(A, 1, 1) ? 7 : 1; T > this.toJD(A, p, this.daysInMonth(A, p)); )
                    p++;
                  var u = T - this.toJD(A, p, 1) + 1;
                  return this.newDate(A, p, u);
                }
              });
              function s(T, A) {
                return T - A * Math.floor(T / A);
              }
              b.calendars.hebrew = n;
            }
          ),
          /***/
          25512: (
            /***/
            function(Y, K, e) {
              var b = e(24453), P = e(27976);
              function n(s) {
                this.local = this.regionalOptions[s || ""] || this.regionalOptions[""];
              }
              n.prototype = new b.baseCalendar(), P(n.prototype, {
                /** The calendar name.
                    @memberof IslamicCalendar */
                name: "Islamic",
                /** Julian date of start of Islamic epoch: 16 July 622 CE.
                    @memberof IslamicCalendar */
                jdEpoch: 19484395e-1,
                /** Days per month in a common year.
                    @memberof IslamicCalendar */
                daysPerMonth: [30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29],
                /** <code>true</code> if has a year zero, <code>false</code> if not.
                    @memberof IslamicCalendar */
                hasYearZero: !1,
                /** The minimum month number.
                    @memberof IslamicCalendar */
                minMonth: 1,
                /** The first month in the year.
                    @memberof IslamicCalendar */
                firstMonth: 1,
                /** The minimum day number.
                    @memberof IslamicCalendar */
                minDay: 1,
                /** Localisations for the plugin.
                    Entries are objects indexed by the language code ('' being the default US/English).
                    Each object has the following attributes.
                    @memberof IslamicCalendar
                    @property name {string} The calendar name.
                    @property epochs {string[]} The epoch names.
                    @property monthNames {string[]} The long names of the months of the year.
                    @property monthNamesShort {string[]} The short names of the months of the year.
                    @property dayNames {string[]} The long names of the days of the week.
                    @property dayNamesShort {string[]} The short names of the days of the week.
                    @property dayNamesMin {string[]} The minimal names of the days of the week.
                    @property dateFormat {string} The date format for this calendar.
                            See the options on <a href="BaseCalendar.html#formatDate"><code>formatDate</code></a> for details.
                    @property firstDay {number} The number of the first day of the week, starting at 0.
                    @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */
                regionalOptions: {
                  // Localisations
                  "": {
                    name: "Islamic",
                    epochs: ["BH", "AH"],
                    monthNames: [
                      "Muharram",
                      "Safar",
                      "Rabi' al-awwal",
                      "Rabi' al-thani",
                      "Jumada al-awwal",
                      "Jumada al-thani",
                      "Rajab",
                      "Sha'aban",
                      "Ramadan",
                      "Shawwal",
                      "Dhu al-Qi'dah",
                      "Dhu al-Hijjah"
                    ],
                    monthNamesShort: ["Muh", "Saf", "Rab1", "Rab2", "Jum1", "Jum2", "Raj", "Sha'", "Ram", "Shaw", "DhuQ", "DhuH"],
                    dayNames: [
                      "Yawm al-ahad",
                      "Yawm al-ithnayn",
                      "Yawm ath-thulaathaa'",
                      "Yawm al-arbi'aa'",
                      "Yawm al-khamīs",
                      "Yawm al-jum'a",
                      "Yawm as-sabt"
                    ],
                    dayNamesShort: ["Aha", "Ith", "Thu", "Arb", "Kha", "Jum", "Sab"],
                    dayNamesMin: ["Ah", "It", "Th", "Ar", "Kh", "Ju", "Sa"],
                    digits: null,
                    dateFormat: "yyyy/mm/dd",
                    firstDay: 6,
                    isRTL: !1
                  }
                },
                /** Determine whether this date is in a leap year.
                    @memberof IslamicCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.
                    @throws Error if an invalid year or a different calendar used. */
                leapYear: function(s) {
                  var T = this._validate(s, this.minMonth, this.minDay, b.local.invalidYear);
                  return (T.year() * 11 + 14) % 30 < 11;
                },
                /** Determine the week of the year for a date.
                    @memberof IslamicCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {number} The week of the year.
                    @throws Error if an invalid date or a different calendar used. */
                weekOfYear: function(s, T, A) {
                  var p = this.newDate(s, T, A);
                  return p.add(-p.dayOfWeek(), "d"), Math.floor((p.dayOfYear() - 1) / 7) + 1;
                },
                /** Retrieve the number of days in a year.
                    @memberof IslamicCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {number} The number of days.
                    @throws Error if an invalid year or a different calendar used. */
                daysInYear: function(s) {
                  return this.leapYear(s) ? 355 : 354;
                },
                /** Retrieve the number of days in a month.
                    @memberof IslamicCalendar
                    @param year {CDate|number} The date to examine or the year of the month.
                    @param [month] {number} The month.
                    @return {number} The number of days in this month.
                    @throws Error if an invalid month/year or a different calendar used. */
                daysInMonth: function(s, T) {
                  var A = this._validate(s, T, this.minDay, b.local.invalidMonth);
                  return this.daysPerMonth[A.month() - 1] + (A.month() === 12 && this.leapYear(A.year()) ? 1 : 0);
                },
                /** Determine whether this date is a week day.
                    @memberof IslamicCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {boolean} <code>true</code> if a week day, <code>false</code> if not.
                    @throws Error if an invalid date or a different calendar used. */
                weekDay: function(s, T, A) {
                  return this.dayOfWeek(s, T, A) !== 5;
                },
                /** Retrieve the Julian date equivalent for this date,
                    i.e. days since January 1, 4713 BCE Greenwich noon.
                    @memberof IslamicCalendar
                    @param year {CDate|number} The date to convert or the year to convert.
                    @param [month] {number} The month to convert.
                    @param [day] {number} The day to convert.
                    @return {number} The equivalent Julian date.
                    @throws Error if an invalid date or a different calendar used. */
                toJD: function(s, T, A) {
                  var p = this._validate(s, T, A, b.local.invalidDate);
                  return s = p.year(), T = p.month(), A = p.day(), s = s <= 0 ? s + 1 : s, A + Math.ceil(29.5 * (T - 1)) + (s - 1) * 354 + Math.floor((3 + 11 * s) / 30) + this.jdEpoch - 1;
                },
                /** Create a new date from a Julian date.
                    @memberof IslamicCalendar
                    @param jd {number} The Julian date to convert.
                    @return {CDate} The equivalent date. */
                fromJD: function(s) {
                  s = Math.floor(s) + 0.5;
                  var T = Math.floor((30 * (s - this.jdEpoch) + 10646) / 10631);
                  T = T <= 0 ? T - 1 : T;
                  var A = Math.min(12, Math.ceil((s - 29 - this.toJD(T, 1, 1)) / 29.5) + 1), p = s - this.toJD(T, A, 1) + 1;
                  return this.newDate(T, A, p);
                }
              }), b.calendars.islamic = n;
            }
          ),
          /***/
          42645: (
            /***/
            function(Y, K, e) {
              var b = e(24453), P = e(27976);
              function n(s) {
                this.local = this.regionalOptions[s || ""] || this.regionalOptions[""];
              }
              n.prototype = new b.baseCalendar(), P(n.prototype, {
                /** The calendar name.
                    @memberof JulianCalendar */
                name: "Julian",
                /** Julian date of start of Julian epoch: 1 January 0001 AD = 30 December 0001 BCE.
                    @memberof JulianCalendar */
                jdEpoch: 17214235e-1,
                /** Days per month in a common year.
                    @memberof JulianCalendar */
                daysPerMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
                /** <code>true</code> if has a year zero, <code>false</code> if not.
                    @memberof JulianCalendar */
                hasYearZero: !1,
                /** The minimum month number.
                    @memberof JulianCalendar */
                minMonth: 1,
                /** The first month in the year.
                    @memberof JulianCalendar */
                firstMonth: 1,
                /** The minimum day number.
                    @memberof JulianCalendar */
                minDay: 1,
                /** Localisations for the plugin.
                    Entries are objects indexed by the language code ('' being the default US/English).
                    Each object has the following attributes.
                    @memberof JulianCalendar
                    @property name {string} The calendar name.
                    @property epochs {string[]} The epoch names.
                    @property monthNames {string[]} The long names of the months of the year.
                    @property monthNamesShort {string[]} The short names of the months of the year.
                    @property dayNames {string[]} The long names of the days of the week.
                    @property dayNamesShort {string[]} The short names of the days of the week.
                    @property dayNamesMin {string[]} The minimal names of the days of the week.
                    @property dateFormat {string} The date format for this calendar.
                            See the options on <a href="BaseCalendar.html#formatDate"><code>formatDate</code></a> for details.
                    @property firstDay {number} The number of the first day of the week, starting at 0.
                    @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */
                regionalOptions: {
                  // Localisations
                  "": {
                    name: "Julian",
                    epochs: ["BC", "AD"],
                    monthNames: [
                      "January",
                      "February",
                      "March",
                      "April",
                      "May",
                      "June",
                      "July",
                      "August",
                      "September",
                      "October",
                      "November",
                      "December"
                    ],
                    monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
                    dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
                    dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
                    dayNamesMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
                    digits: null,
                    dateFormat: "mm/dd/yyyy",
                    firstDay: 0,
                    isRTL: !1
                  }
                },
                /** Determine whether this date is in a leap year.
                    @memberof JulianCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.
                    @throws Error if an invalid year or a different calendar used. */
                leapYear: function(A) {
                  var T = this._validate(A, this.minMonth, this.minDay, b.local.invalidYear), A = T.year() < 0 ? T.year() + 1 : T.year();
                  return A % 4 === 0;
                },
                /** Determine the week of the year for a date - ISO 8601.
                    @memberof JulianCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {number} The week of the year.
                    @throws Error if an invalid date or a different calendar used. */
                weekOfYear: function(s, T, A) {
                  var p = this.newDate(s, T, A);
                  return p.add(4 - (p.dayOfWeek() || 7), "d"), Math.floor((p.dayOfYear() - 1) / 7) + 1;
                },
                /** Retrieve the number of days in a month.
                    @memberof JulianCalendar
                    @param year {CDate|number} The date to examine or the year of the month.
                    @param [month] {number} The month.
                    @return {number} The number of days in this month.
                    @throws Error if an invalid month/year or a different calendar used. */
                daysInMonth: function(s, T) {
                  var A = this._validate(s, T, this.minDay, b.local.invalidMonth);
                  return this.daysPerMonth[A.month() - 1] + (A.month() === 2 && this.leapYear(A.year()) ? 1 : 0);
                },
                /** Determine whether this date is a week day.
                    @memberof JulianCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {boolean} True if a week day, false if not.
                    @throws Error if an invalid date or a different calendar used. */
                weekDay: function(s, T, A) {
                  return (this.dayOfWeek(s, T, A) || 7) < 6;
                },
                /** Retrieve the Julian date equivalent for this date,
                    i.e. days since January 1, 4713 BCE Greenwich noon.
                    @memberof JulianCalendar
                    @param year {CDate|number} The date to convert or the year to convert.
                    @param [month] {number} The month to convert.
                    @param [day] {number} The day to convert.
                    @return {number} The equivalent Julian date.
                    @throws Error if an invalid date or a different calendar used. */
                toJD: function(s, T, A) {
                  var p = this._validate(s, T, A, b.local.invalidDate);
                  return s = p.year(), T = p.month(), A = p.day(), s < 0 && s++, T <= 2 && (s--, T += 12), Math.floor(365.25 * (s + 4716)) + Math.floor(30.6001 * (T + 1)) + A - 1524.5;
                },
                /** Create a new date from a Julian date.
                    @memberof JulianCalendar
                    @param jd {number} The Julian date to convert.
                    @return {CDate} The equivalent date. */
                fromJD: function(s) {
                  var T = Math.floor(s + 0.5), A = T + 1524, p = Math.floor((A - 122.1) / 365.25), u = Math.floor(365.25 * p), t = Math.floor((A - u) / 30.6001), r = t - Math.floor(t < 14 ? 1 : 13), i = p - Math.floor(r > 2 ? 4716 : 4715), a = A - u - Math.floor(30.6001 * t);
                  return i <= 0 && i--, this.newDate(i, r, a);
                }
              }), b.calendars.julian = n;
            }
          ),
          /***/
          62324: (
            /***/
            function(Y, K, e) {
              var b = e(24453), P = e(27976);
              function n(A) {
                this.local = this.regionalOptions[A || ""] || this.regionalOptions[""];
              }
              n.prototype = new b.baseCalendar(), P(n.prototype, {
                /** The calendar name.
                    @memberof MayanCalendar */
                name: "Mayan",
                /** Julian date of start of Mayan epoch: 11 August 3114 BCE.
                    @memberof MayanCalendar */
                jdEpoch: 584282.5,
                /** <code>true</code> if has a year zero, <code>false</code> if not.
                    @memberof MayanCalendar */
                hasYearZero: !0,
                /** The minimum month number.
                    @memberof MayanCalendar */
                minMonth: 0,
                /** The first month in the year.
                    @memberof MayanCalendar */
                firstMonth: 0,
                /** The minimum day number.
                    @memberof MayanCalendar */
                minDay: 0,
                /** Localisations for the plugin.
                    Entries are objects indexed by the language code ('' being the default US/English).
                    Each object has the following attributes.
                    @memberof MayanCalendar
                    @property name {string} The calendar name.
                    @property epochs {string[]} The epoch names.
                    @property monthNames {string[]} The long names of the months of the year.
                    @property monthNamesShort {string[]} The short names of the months of the year.
                    @property dayNames {string[]} The long names of the days of the week.
                    @property dayNamesShort {string[]} The short names of the days of the week.
                    @property dayNamesMin {string[]} The minimal names of the days of the week.
                    @property dateFormat {string} The date format for this calendar.
                            See the options on <a href="BaseCalendar.html#formatDate"><code>formatDate</code></a> for details.
                    @property firstDay {number} The number of the first day of the week, starting at 0.
                    @property isRTL {number} <code>true</code> if this localisation reads right-to-left.
                    @property haabMonths {string[]} The names of the Haab months.
                    @property tzolkinMonths {string[]} The names of the Tzolkin months. */
                regionalOptions: {
                  // Localisations
                  "": {
                    name: "Mayan",
                    epochs: ["", ""],
                    monthNames: [
                      "0",
                      "1",
                      "2",
                      "3",
                      "4",
                      "5",
                      "6",
                      "7",
                      "8",
                      "9",
                      "10",
                      "11",
                      "12",
                      "13",
                      "14",
                      "15",
                      "16",
                      "17"
                    ],
                    monthNamesShort: [
                      "0",
                      "1",
                      "2",
                      "3",
                      "4",
                      "5",
                      "6",
                      "7",
                      "8",
                      "9",
                      "10",
                      "11",
                      "12",
                      "13",
                      "14",
                      "15",
                      "16",
                      "17"
                    ],
                    dayNames: [
                      "0",
                      "1",
                      "2",
                      "3",
                      "4",
                      "5",
                      "6",
                      "7",
                      "8",
                      "9",
                      "10",
                      "11",
                      "12",
                      "13",
                      "14",
                      "15",
                      "16",
                      "17",
                      "18",
                      "19"
                    ],
                    dayNamesShort: [
                      "0",
                      "1",
                      "2",
                      "3",
                      "4",
                      "5",
                      "6",
                      "7",
                      "8",
                      "9",
                      "10",
                      "11",
                      "12",
                      "13",
                      "14",
                      "15",
                      "16",
                      "17",
                      "18",
                      "19"
                    ],
                    dayNamesMin: [
                      "0",
                      "1",
                      "2",
                      "3",
                      "4",
                      "5",
                      "6",
                      "7",
                      "8",
                      "9",
                      "10",
                      "11",
                      "12",
                      "13",
                      "14",
                      "15",
                      "16",
                      "17",
                      "18",
                      "19"
                    ],
                    digits: null,
                    dateFormat: "YYYY.m.d",
                    firstDay: 0,
                    isRTL: !1,
                    haabMonths: [
                      "Pop",
                      "Uo",
                      "Zip",
                      "Zotz",
                      "Tzec",
                      "Xul",
                      "Yaxkin",
                      "Mol",
                      "Chen",
                      "Yax",
                      "Zac",
                      "Ceh",
                      "Mac",
                      "Kankin",
                      "Muan",
                      "Pax",
                      "Kayab",
                      "Cumku",
                      "Uayeb"
                    ],
                    tzolkinMonths: [
                      "Imix",
                      "Ik",
                      "Akbal",
                      "Kan",
                      "Chicchan",
                      "Cimi",
                      "Manik",
                      "Lamat",
                      "Muluc",
                      "Oc",
                      "Chuen",
                      "Eb",
                      "Ben",
                      "Ix",
                      "Men",
                      "Cib",
                      "Caban",
                      "Etznab",
                      "Cauac",
                      "Ahau"
                    ]
                  }
                },
                /** Determine whether this date is in a leap year.
                    @memberof MayanCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.
                    @throws Error if an invalid year or a different calendar used. */
                leapYear: function(A) {
                  return this._validate(A, this.minMonth, this.minDay, b.local.invalidYear), !1;
                },
                /** Format the year, if not a simple sequential number.
                    @memberof MayanCalendar
                    @param year {CDate|number} The date to format or the year to format.
                    @return {string} The formatted year.
                    @throws Error if an invalid year or a different calendar used. */
                formatYear: function(A) {
                  var p = this._validate(A, this.minMonth, this.minDay, b.local.invalidYear);
                  A = p.year();
                  var u = Math.floor(A / 400);
                  A = A % 400, A += A < 0 ? 400 : 0;
                  var t = Math.floor(A / 20);
                  return u + "." + t + "." + A % 20;
                },
                /** Convert from the formatted year back to a single number.
                    @memberof MayanCalendar
                    @param years {string} The year as n.n.n.
                    @return {number} The sequential year.
                    @throws Error if an invalid value is supplied. */
                forYear: function(A) {
                  if (A = A.split("."), A.length < 3)
                    throw "Invalid Mayan year";
                  for (var p = 0, u = 0; u < A.length; u++) {
                    var t = parseInt(A[u], 10);
                    if (Math.abs(t) > 19 || u > 0 && t < 0)
                      throw "Invalid Mayan year";
                    p = p * 20 + t;
                  }
                  return p;
                },
                /** Retrieve the number of months in a year.
                    @memberof MayanCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {number} The number of months.
                    @throws Error if an invalid year or a different calendar used. */
                monthsInYear: function(A) {
                  return this._validate(A, this.minMonth, this.minDay, b.local.invalidYear), 18;
                },
                /** Determine the week of the year for a date.
                    @memberof MayanCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {number} The week of the year.
                    @throws Error if an invalid date or a different calendar used. */
                weekOfYear: function(A, p, u) {
                  return this._validate(A, p, u, b.local.invalidDate), 0;
                },
                /** Retrieve the number of days in a year.
                    @memberof MayanCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {number} The number of days.
                    @throws Error if an invalid year or a different calendar used. */
                daysInYear: function(A) {
                  return this._validate(A, this.minMonth, this.minDay, b.local.invalidYear), 360;
                },
                /** Retrieve the number of days in a month.
                    @memberof MayanCalendar
                    @param year {CDate|number} The date to examine or the year of the month.
                    @param [month] {number} The month.
                    @return {number} The number of days in this month.
                    @throws Error if an invalid month/year or a different calendar used. */
                daysInMonth: function(A, p) {
                  return this._validate(A, p, this.minDay, b.local.invalidMonth), 20;
                },
                /** Retrieve the number of days in a week.
                    @memberof MayanCalendar
                    @return {number} The number of days. */
                daysInWeek: function() {
                  return 5;
                },
                /** Retrieve the day of the week for a date.
                    @memberof MayanCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {number} The day of the week: 0 to number of days - 1.
                    @throws Error if an invalid date or a different calendar used. */
                dayOfWeek: function(A, p, u) {
                  var t = this._validate(A, p, u, b.local.invalidDate);
                  return t.day();
                },
                /** Determine whether this date is a week day.
                    @memberof MayanCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {boolean} <code>true</code> if a week day, <code>false</code> if not.
                    @throws Error if an invalid date or a different calendar used. */
                weekDay: function(A, p, u) {
                  return this._validate(A, p, u, b.local.invalidDate), !0;
                },
                /** Retrieve additional information about a date - Haab and Tzolkin equivalents.
                    @memberof MayanCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {object} Additional information - contents depends on calendar.
                    @throws Error if an invalid date or a different calendar used. */
                extraInfo: function(A, p, u) {
                  var t = this._validate(A, p, u, b.local.invalidDate), r = t.toJD(), i = this._toHaab(r), a = this._toTzolkin(r);
                  return {
                    haabMonthName: this.local.haabMonths[i[0] - 1],
                    haabMonth: i[0],
                    haabDay: i[1],
                    tzolkinDayName: this.local.tzolkinMonths[a[0] - 1],
                    tzolkinDay: a[0],
                    tzolkinTrecena: a[1]
                  };
                },
                /** Retrieve Haab date from a Julian date.
                    @memberof MayanCalendar
                    @private
                    @param jd  {number} The Julian date.
                    @return {number[]} Corresponding Haab month and day. */
                _toHaab: function(A) {
                  A -= this.jdEpoch;
                  var p = s(A + 8 + 17 * 20, 365);
                  return [Math.floor(p / 20) + 1, s(p, 20)];
                },
                /** Retrieve Tzolkin date from a Julian date.
                    @memberof MayanCalendar
                    @private
                    @param jd {number} The Julian date.
                    @return {number[]} Corresponding Tzolkin day and trecena. */
                _toTzolkin: function(A) {
                  return A -= this.jdEpoch, [T(A + 20, 20), T(A + 4, 13)];
                },
                /** Retrieve the Julian date equivalent for this date,
                    i.e. days since January 1, 4713 BCE Greenwich noon.
                    @memberof MayanCalendar
                    @param year {CDate|number} The date to convert or the year to convert.
                    @param [month] {number} The month to convert.
                    @param [day] {number} The day to convert.
                    @return {number} The equivalent Julian date.
                    @throws Error if an invalid date or a different calendar used. */
                toJD: function(A, p, u) {
                  var t = this._validate(A, p, u, b.local.invalidDate);
                  return t.day() + t.month() * 20 + t.year() * 360 + this.jdEpoch;
                },
                /** Create a new date from a Julian date.
                    @memberof MayanCalendar
                    @param jd {number} The Julian date to convert.
                    @return {CDate} The equivalent date. */
                fromJD: function(A) {
                  A = Math.floor(A) + 0.5 - this.jdEpoch;
                  var p = Math.floor(A / 360);
                  A = A % 360, A += A < 0 ? 360 : 0;
                  var u = Math.floor(A / 20), t = A % 20;
                  return this.newDate(p, u, t);
                }
              });
              function s(A, p) {
                return A - p * Math.floor(A / p);
              }
              function T(A, p) {
                return s(A - 1, p) + 1;
              }
              b.calendars.mayan = n;
            }
          ),
          /***/
          91662: (
            /***/
            function(Y, K, e) {
              var b = e(24453), P = e(27976);
              function n(T) {
                this.local = this.regionalOptions[T || ""] || this.regionalOptions[""];
              }
              n.prototype = new b.baseCalendar();
              var s = b.instance("gregorian");
              P(n.prototype, {
                /** The calendar name.
                    @memberof NanakshahiCalendar */
                name: "Nanakshahi",
                /** Julian date of start of Nanakshahi epoch: 14 March 1469 CE.
                    @memberof NanakshahiCalendar */
                jdEpoch: 22576735e-1,
                /** Days per month in a common year.
                    @memberof NanakshahiCalendar */
                daysPerMonth: [31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 30, 30],
                /** <code>true</code> if has a year zero, <code>false</code> if not.
                    @memberof NanakshahiCalendar */
                hasYearZero: !1,
                /** The minimum month number.
                    @memberof NanakshahiCalendar */
                minMonth: 1,
                /** The first month in the year.
                    @memberof NanakshahiCalendar */
                firstMonth: 1,
                /** The minimum day number.
                    @memberof NanakshahiCalendar */
                minDay: 1,
                /** Localisations for the plugin.
                    Entries are objects indexed by the language code ('' being the default US/English).
                    Each object has the following attributes.
                    @memberof NanakshahiCalendar
                    @property name {string} The calendar name.
                    @property epochs {string[]} The epoch names.
                    @property monthNames {string[]} The long names of the months of the year.
                    @property monthNamesShort {string[]} The short names of the months of the year.
                    @property dayNames {string[]} The long names of the days of the week.
                    @property dayNamesShort {string[]} The short names of the days of the week.
                    @property dayNamesMin {string[]} The minimal names of the days of the week.
                    @property dateFormat {string} The date format for this calendar.
                            See the options on <a href="BaseCalendar.html#formatDate"><code>formatDate</code></a> for details.
                    @property firstDay {number} The number of the first day of the week, starting at 0.
                    @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */
                regionalOptions: {
                  // Localisations
                  "": {
                    name: "Nanakshahi",
                    epochs: ["BN", "AN"],
                    monthNames: [
                      "Chet",
                      "Vaisakh",
                      "Jeth",
                      "Harh",
                      "Sawan",
                      "Bhadon",
                      "Assu",
                      "Katak",
                      "Maghar",
                      "Poh",
                      "Magh",
                      "Phagun"
                    ],
                    monthNamesShort: ["Che", "Vai", "Jet", "Har", "Saw", "Bha", "Ass", "Kat", "Mgr", "Poh", "Mgh", "Pha"],
                    dayNames: ["Somvaar", "Mangalvar", "Budhvaar", "Veervaar", "Shukarvaar", "Sanicharvaar", "Etvaar"],
                    dayNamesShort: ["Som", "Mangal", "Budh", "Veer", "Shukar", "Sanichar", "Et"],
                    dayNamesMin: ["So", "Ma", "Bu", "Ve", "Sh", "Sa", "Et"],
                    digits: null,
                    dateFormat: "dd-mm-yyyy",
                    firstDay: 0,
                    isRTL: !1
                  }
                },
                /** Determine whether this date is in a leap year.
                    @memberof NanakshahiCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.
                    @throws Error if an invalid year or a different calendar used. */
                leapYear: function(T) {
                  var A = this._validate(
                    T,
                    this.minMonth,
                    this.minDay,
                    b.local.invalidYear || b.regionalOptions[""].invalidYear
                  );
                  return s.leapYear(A.year() + (A.year() < 1 ? 1 : 0) + 1469);
                },
                /** Determine the week of the year for a date.
                    @memberof NanakshahiCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {number} The week of the year.
                    @throws Error if an invalid date or a different calendar used. */
                weekOfYear: function(T, A, p) {
                  var u = this.newDate(T, A, p);
                  return u.add(1 - (u.dayOfWeek() || 7), "d"), Math.floor((u.dayOfYear() - 1) / 7) + 1;
                },
                /** Retrieve the number of days in a month.
                    @memberof NanakshahiCalendar
                    @param year {CDate|number} The date to examine or the year of the month.
                    @param [month] {number} The month.
                    @return {number} The number of days in this month.
                    @throws Error if an invalid month/year or a different calendar used. */
                daysInMonth: function(T, A) {
                  var p = this._validate(T, A, this.minDay, b.local.invalidMonth);
                  return this.daysPerMonth[p.month() - 1] + (p.month() === 12 && this.leapYear(p.year()) ? 1 : 0);
                },
                /** Determine whether this date is a week day.
                    @memberof NanakshahiCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {boolean} <code>true</code> if a week day, <code>false</code> if not.
                    @throws Error if an invalid date or a different calendar used. */
                weekDay: function(T, A, p) {
                  return (this.dayOfWeek(T, A, p) || 7) < 6;
                },
                /** Retrieve the Julian date equivalent for this date,
                    i.e. days since January 1, 4713 BCE Greenwich noon.
                    @memberof NanakshahiCalendar
                    @param year {CDate|number} The date to convert or the year to convert.
                    @param [month] {number} The month to convert.
                    @param [day] {number} The day to convert.
                    @return {number} The equivalent Julian date.
                    @throws Error if an invalid date or a different calendar used. */
                toJD: function(t, A, p) {
                  var u = this._validate(t, A, p, b.local.invalidMonth), t = u.year();
                  t < 0 && t++;
                  for (var r = u.day(), i = 1; i < u.month(); i++)
                    r += this.daysPerMonth[i - 1];
                  return r + s.toJD(t + 1468, 3, 13);
                },
                /** Create a new date from a Julian date.
                    @memberof NanakshahiCalendar
                    @param jd {number} The Julian date to convert.
                    @return {CDate} The equivalent date. */
                fromJD: function(T) {
                  T = Math.floor(T + 0.5);
                  for (var A = Math.floor((T - (this.jdEpoch - 1)) / 366); T >= this.toJD(A + 1, 1, 1); )
                    A++;
                  for (var p = T - Math.floor(this.toJD(A, 1, 1) + 0.5) + 1, u = 1; p > this.daysInMonth(A, u); )
                    p -= this.daysInMonth(A, u), u++;
                  return this.newDate(A, u, p);
                }
              }), b.calendars.nanakshahi = n;
            }
          ),
          /***/
          66445: (
            /***/
            function(Y, K, e) {
              var b = e(24453), P = e(27976);
              function n(s) {
                this.local = this.regionalOptions[s || ""] || this.regionalOptions[""];
              }
              n.prototype = new b.baseCalendar(), P(n.prototype, {
                /** The calendar name.
                    @memberof NepaliCalendar */
                name: "Nepali",
                /** Julian date of start of Nepali epoch: 14 April 57 BCE.
                    @memberof NepaliCalendar */
                jdEpoch: 17007095e-1,
                /** Days per month in a common year.
                    @memberof NepaliCalendar */
                daysPerMonth: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],
                /** <code>true</code> if has a year zero, <code>false</code> if not.
                    @memberof NepaliCalendar */
                hasYearZero: !1,
                /** The minimum month number.
                    @memberof NepaliCalendar */
                minMonth: 1,
                /** The first month in the year.
                    @memberof NepaliCalendar */
                firstMonth: 1,
                /** The minimum day number.
                    @memberof NepaliCalendar */
                minDay: 1,
                /** The number of days in the year.
                    @memberof NepaliCalendar */
                daysPerYear: 365,
                /** Localisations for the plugin.
                    Entries are objects indexed by the language code ('' being the default US/English).
                    Each object has the following attributes.
                    @memberof NepaliCalendar
                    @property name {string} The calendar name.
                    @property epochs {string[]} The epoch names.
                    @property monthNames {string[]} The long names of the months of the year.
                    @property monthNamesShort {string[]} The short names of the months of the year.
                    @property dayNames {string[]} The long names of the days of the week.
                    @property dayNamesShort {string[]} The short names of the days of the week.
                    @property dayNamesMin {string[]} The minimal names of the days of the week.
                    @property dateFormat {string} The date format for this calendar.
                            See the options on <a href="BaseCalendar.html#formatDate"><code>formatDate</code></a> for details.
                    @property firstDay {number} The number of the first day of the week, starting at 0.
                    @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */
                regionalOptions: {
                  // Localisations
                  "": {
                    name: "Nepali",
                    epochs: ["BBS", "ABS"],
                    monthNames: [
                      "Baisakh",
                      "Jestha",
                      "Ashadh",
                      "Shrawan",
                      "Bhadra",
                      "Ashwin",
                      "Kartik",
                      "Mangsir",
                      "Paush",
                      "Mangh",
                      "Falgun",
                      "Chaitra"
                    ],
                    monthNamesShort: ["Bai", "Je", "As", "Shra", "Bha", "Ash", "Kar", "Mang", "Pau", "Ma", "Fal", "Chai"],
                    dayNames: ["Aaitabaar", "Sombaar", "Manglbaar", "Budhabaar", "Bihibaar", "Shukrabaar", "Shanibaar"],
                    dayNamesShort: ["Aaita", "Som", "Mangl", "Budha", "Bihi", "Shukra", "Shani"],
                    dayNamesMin: ["Aai", "So", "Man", "Bu", "Bi", "Shu", "Sha"],
                    digits: null,
                    dateFormat: "dd/mm/yyyy",
                    firstDay: 1,
                    isRTL: !1
                  }
                },
                /** Determine whether this date is in a leap year.
                    @memberof NepaliCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.
                    @throws Error if an invalid year or a different calendar used. */
                leapYear: function(s) {
                  return this.daysInYear(s) !== this.daysPerYear;
                },
                /** Determine the week of the year for a date.
                    @memberof NepaliCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {number} The week of the year.
                    @throws Error if an invalid date or a different calendar used. */
                weekOfYear: function(s, T, A) {
                  var p = this.newDate(s, T, A);
                  return p.add(-p.dayOfWeek(), "d"), Math.floor((p.dayOfYear() - 1) / 7) + 1;
                },
                /** Retrieve the number of days in a year.
                    @memberof NepaliCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {number} The number of days.
                    @throws Error if an invalid year or a different calendar used. */
                daysInYear: function(s) {
                  var T = this._validate(s, this.minMonth, this.minDay, b.local.invalidYear);
                  if (s = T.year(), typeof this.NEPALI_CALENDAR_DATA[s] > "u")
                    return this.daysPerYear;
                  for (var A = 0, p = this.minMonth; p <= 12; p++)
                    A += this.NEPALI_CALENDAR_DATA[s][p];
                  return A;
                },
                /** Retrieve the number of days in a month.
                    @memberof NepaliCalendar
                    @param year {CDate|number| The date to examine or the year of the month.
                    @param [month] {number} The month.
                    @return {number} The number of days in this month.
                    @throws Error if an invalid month/year or a different calendar used. */
                daysInMonth: function(s, T) {
                  return s.year && (T = s.month(), s = s.year()), this._validate(s, T, this.minDay, b.local.invalidMonth), typeof this.NEPALI_CALENDAR_DATA[s] > "u" ? this.daysPerMonth[T - 1] : this.NEPALI_CALENDAR_DATA[s][T];
                },
                /** Determine whether this date is a week day.
                    @memberof NepaliCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {boolean} <code>true</code> if a week day, <code>false</code> if not.
                    @throws Error if an invalid date or a different calendar used. */
                weekDay: function(s, T, A) {
                  return this.dayOfWeek(s, T, A) !== 6;
                },
                /** Retrieve the Julian date equivalent for this date,
                    i.e. days since January 1, 4713 BCE Greenwich noon.
                    @memberof NepaliCalendar
                    @param year {CDate|number} The date to convert or the year to convert.
                    @param [month] {number} The month to convert.
                    @param [day] {number} The day to convert.
                    @return {number} The equivalent Julian date.
                    @throws Error if an invalid date or a different calendar used. */
                toJD: function(s, T, A) {
                  var p = this._validate(s, T, A, b.local.invalidDate);
                  s = p.year(), T = p.month(), A = p.day();
                  var u = b.instance(), t = 0, r = T, i = s;
                  this._createMissingCalendarData(s);
                  var a = s - (r > 9 || r === 9 && A >= this.NEPALI_CALENDAR_DATA[i][0] ? 56 : 57);
                  for (T !== 9 && (t = A, r--); r !== 9; )
                    r <= 0 && (r = 12, i--), t += this.NEPALI_CALENDAR_DATA[i][r], r--;
                  return T === 9 ? (t += A - this.NEPALI_CALENDAR_DATA[i][0], t < 0 && (t += u.daysInYear(a))) : t += this.NEPALI_CALENDAR_DATA[i][9] - this.NEPALI_CALENDAR_DATA[i][0], u.newDate(a, 1, 1).add(t, "d").toJD();
                },
                /** Create a new date from a Julian date.
                    @memberof NepaliCalendar
                    @param jd {number} The Julian date to convert.
                    @return {CDate} The equivalent date. */
                fromJD: function(s) {
                  var T = b.instance(), A = T.fromJD(s), p = A.year(), u = A.dayOfYear(), t = p + 56;
                  this._createMissingCalendarData(t);
                  for (var r = 9, i = this.NEPALI_CALENDAR_DATA[t][0], a = this.NEPALI_CALENDAR_DATA[t][r] - i + 1; u > a; )
                    r++, r > 12 && (r = 1, t++), a += this.NEPALI_CALENDAR_DATA[t][r];
                  var l = this.NEPALI_CALENDAR_DATA[t][r] - (a - u);
                  return this.newDate(t, r, l);
                },
                /** Creates missing data in the NEPALI_CALENDAR_DATA table.
                    This data will not be correct but just give an estimated result. Mostly -/+ 1 day
                    @private
                    @param nepaliYear {number} The missing year number. */
                _createMissingCalendarData: function(s) {
                  var T = this.daysPerMonth.slice(0);
                  T.unshift(17);
                  for (var A = s - 1; A < s + 2; A++)
                    typeof this.NEPALI_CALENDAR_DATA[A] > "u" && (this.NEPALI_CALENDAR_DATA[A] = T);
                },
                NEPALI_CALENDAR_DATA: {
                  // These data are from http://www.ashesh.com.np
                  1970: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
                  1971: [18, 31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30],
                  1972: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],
                  1973: [19, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],
                  1974: [19, 31, 31, 32, 30, 31, 31, 30, 29, 30, 29, 30, 30],
                  1975: [18, 31, 31, 32, 32, 30, 31, 30, 29, 30, 29, 30, 30],
                  1976: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
                  1977: [18, 31, 32, 31, 32, 31, 31, 29, 30, 29, 30, 29, 31],
                  1978: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
                  1979: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],
                  1980: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
                  1981: [18, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],
                  1982: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
                  1983: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],
                  1984: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
                  1985: [18, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],
                  1986: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
                  1987: [18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30],
                  1988: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
                  1989: [18, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],
                  1990: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
                  1991: [18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30],
                  // These data are from http://nepalicalendar.rat32.com/index.php
                  1992: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],
                  1993: [18, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],
                  1994: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
                  1995: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],
                  1996: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],
                  1997: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
                  1998: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
                  1999: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
                  2e3: [17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],
                  2001: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
                  2002: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],
                  2003: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
                  2004: [17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],
                  2005: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
                  2006: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],
                  2007: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
                  2008: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31],
                  2009: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
                  2010: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],
                  2011: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
                  2012: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],
                  2013: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
                  2014: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],
                  2015: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
                  2016: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],
                  2017: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
                  2018: [18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30],
                  2019: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],
                  2020: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],
                  2021: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
                  2022: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],
                  2023: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],
                  2024: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],
                  2025: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
                  2026: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
                  2027: [17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],
                  2028: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
                  2029: [18, 31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30],
                  2030: [17, 31, 32, 31, 32, 31, 30, 30, 30, 30, 30, 30, 31],
                  2031: [17, 31, 32, 31, 32, 31, 31, 31, 31, 31, 31, 31, 31],
                  2032: [17, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32],
                  2033: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],
                  2034: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
                  2035: [17, 30, 32, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31],
                  2036: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
                  2037: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],
                  2038: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
                  2039: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],
                  2040: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
                  2041: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],
                  2042: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
                  2043: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],
                  2044: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
                  2045: [18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30],
                  2046: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
                  2047: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],
                  2048: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
                  2049: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],
                  2050: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],
                  2051: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],
                  2052: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
                  2053: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],
                  2054: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],
                  2055: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 30, 29, 30],
                  2056: [17, 31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30],
                  2057: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
                  2058: [17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],
                  2059: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
                  2060: [17, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],
                  2061: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
                  2062: [17, 30, 32, 31, 32, 31, 31, 29, 30, 29, 30, 29, 31],
                  2063: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
                  2064: [17, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],
                  2065: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
                  2066: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31],
                  2067: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
                  2068: [17, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],
                  2069: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
                  2070: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],
                  2071: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
                  2072: [17, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30],
                  2073: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
                  2074: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],
                  2075: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
                  2076: [16, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],
                  2077: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],
                  2078: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],
                  2079: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
                  2080: [16, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],
                  // These data are from http://www.ashesh.com.np/nepali-calendar/
                  2081: [17, 31, 31, 32, 32, 31, 30, 30, 30, 29, 30, 30, 30],
                  2082: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30],
                  2083: [17, 31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30],
                  2084: [17, 31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30],
                  2085: [17, 31, 32, 31, 32, 31, 31, 30, 30, 29, 30, 30, 30],
                  2086: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30],
                  2087: [16, 31, 31, 32, 31, 31, 31, 30, 30, 29, 30, 30, 30],
                  2088: [16, 30, 31, 32, 32, 30, 31, 30, 30, 29, 30, 30, 30],
                  2089: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30],
                  2090: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30],
                  2091: [16, 31, 31, 32, 31, 31, 31, 30, 30, 29, 30, 30, 30],
                  2092: [16, 31, 31, 32, 32, 31, 30, 30, 30, 29, 30, 30, 30],
                  2093: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30],
                  2094: [17, 31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30],
                  2095: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 30, 30, 30],
                  2096: [17, 30, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],
                  2097: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30],
                  2098: [17, 31, 31, 32, 31, 31, 31, 29, 30, 29, 30, 30, 31],
                  2099: [17, 31, 31, 32, 31, 31, 31, 30, 29, 29, 30, 30, 30],
                  2100: [17, 31, 32, 31, 32, 30, 31, 30, 29, 30, 29, 30, 30]
                }
              }), b.calendars.nepali = n;
            }
          ),
          /***/
          50506: (
            /***/
            function(Y, K, e) {
              var b = e(24453), P = e(27976);
              function n(T) {
                this.local = this.regionalOptions[T || ""] || this.regionalOptions[""];
              }
              n.prototype = new b.baseCalendar(), P(n.prototype, {
                /** The calendar name.
                    @memberof PersianCalendar */
                name: "Persian",
                /** Julian date of start of Persian epoch: 19 March 622 CE.
                    @memberof PersianCalendar */
                jdEpoch: 19483205e-1,
                /** Days per month in a common year.
                    @memberof PersianCalendar */
                daysPerMonth: [31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29],
                /** <code>true</code> if has a year zero, <code>false</code> if not.
                    @memberof PersianCalendar */
                hasYearZero: !1,
                /** The minimum month number.
                    @memberof PersianCalendar */
                minMonth: 1,
                /** The first month in the year.
                    @memberof PersianCalendar */
                firstMonth: 1,
                /** The minimum day number.
                    @memberof PersianCalendar */
                minDay: 1,
                /** Localisations for the plugin.
                    Entries are objects indexed by the language code ('' being the default US/English).
                    Each object has the following attributes.
                    @memberof PersianCalendar
                    @property name {string} The calendar name.
                    @property epochs {string[]} The epoch names.
                    @property monthNames {string[]} The long names of the months of the year.
                    @property monthNamesShort {string[]} The short names of the months of the year.
                    @property dayNames {string[]} The long names of the days of the week.
                    @property dayNamesShort {string[]} The short names of the days of the week.
                    @property dayNamesMin {string[]} The minimal names of the days of the week.
                    @property dateFormat {string} The date format for this calendar.
                            See the options on <a href="BaseCalendar.html#formatDate"><code>formatDate</code></a> for details.
                    @property firstDay {number} The number of the first day of the week, starting at 0.
                    @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */
                regionalOptions: {
                  // Localisations
                  "": {
                    name: "Persian",
                    epochs: ["BP", "AP"],
                    monthNames: [
                      "Farvardin",
                      "Ordibehesht",
                      "Khordad",
                      "Tir",
                      "Mordad",
                      "Shahrivar",
                      "Mehr",
                      "Aban",
                      "Azar",
                      "Day",
                      "Bahman",
                      "Esfand"
                    ],
                    monthNamesShort: ["Far", "Ord", "Kho", "Tir", "Mor", "Sha", "Meh", "Aba", "Aza", "Day", "Bah", "Esf"],
                    dayNames: ["Yekshambe", "Doshambe", "Seshambe", "Chæharshambe", "Panjshambe", "Jom'e", "Shambe"],
                    dayNamesShort: ["Yek", "Do", "Se", "Chæ", "Panj", "Jom", "Sha"],
                    dayNamesMin: ["Ye", "Do", "Se", "Ch", "Pa", "Jo", "Sh"],
                    digits: null,
                    dateFormat: "yyyy/mm/dd",
                    firstDay: 6,
                    isRTL: !1
                  }
                },
                /** Determine whether this date is in a leap year.
                    @memberof PersianCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.
                    @throws Error if an invalid year or a different calendar used. */
                leapYear: function(T) {
                  var A = this._validate(T, this.minMonth, this.minDay, b.local.invalidYear);
                  return ((A.year() - (A.year() > 0 ? 474 : 473)) % 2820 + 474 + 38) * 682 % 2816 < 682;
                },
                /** Determine the week of the year for a date.
                    @memberof PersianCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {number} The week of the year.
                    @throws Error if an invalid date or a different calendar used. */
                weekOfYear: function(T, A, p) {
                  var u = this.newDate(T, A, p);
                  return u.add(-((u.dayOfWeek() + 1) % 7), "d"), Math.floor((u.dayOfYear() - 1) / 7) + 1;
                },
                /** Retrieve the number of days in a month.
                    @memberof PersianCalendar
                    @param year {CDate|number} The date to examine or the year of the month.
                    @param [month] {number} The month.
                    @return {number} The number of days in this month.
                    @throws Error if an invalid month/year or a different calendar used. */
                daysInMonth: function(T, A) {
                  var p = this._validate(T, A, this.minDay, b.local.invalidMonth);
                  return this.daysPerMonth[p.month() - 1] + (p.month() === 12 && this.leapYear(p.year()) ? 1 : 0);
                },
                /** Determine whether this date is a week day.
                    @memberof PersianCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {boolean} <code>true</code> if a week day, <code>false</code> if not.
                    @throws Error if an invalid date or a different calendar used. */
                weekDay: function(T, A, p) {
                  return this.dayOfWeek(T, A, p) !== 5;
                },
                /** Retrieve the Julian date equivalent for this date,
                    i.e. days since January 1, 4713 BCE Greenwich noon.
                    @memberof PersianCalendar
                    @param year {CDate|number} The date to convert or the year to convert.
                    @param [month] {number} The month to convert.
                    @param [day] {number} The day to convert.
                    @return {number} The equivalent Julian date.
                    @throws Error if an invalid date or a different calendar used. */
                toJD: function(T, A, p) {
                  var u = this._validate(T, A, p, b.local.invalidDate);
                  T = u.year(), A = u.month(), p = u.day();
                  var t = T - (T >= 0 ? 474 : 473), r = 474 + s(t, 2820);
                  return p + (A <= 7 ? (A - 1) * 31 : (A - 1) * 30 + 6) + Math.floor((r * 682 - 110) / 2816) + (r - 1) * 365 + Math.floor(t / 2820) * 1029983 + this.jdEpoch - 1;
                },
                /** Create a new date from a Julian date.
                    @memberof PersianCalendar
                    @param jd {number} The Julian date to convert.
                    @return {CDate} The equivalent date. */
                fromJD: function(T) {
                  T = Math.floor(T) + 0.5;
                  var A = T - this.toJD(475, 1, 1), p = Math.floor(A / 1029983), u = s(A, 1029983), t = 2820;
                  if (u !== 1029982) {
                    var r = Math.floor(u / 366), i = s(u, 366);
                    t = Math.floor((2134 * r + 2816 * i + 2815) / 1028522) + r + 1;
                  }
                  var a = t + 2820 * p + 474;
                  a = a <= 0 ? a - 1 : a;
                  var l = T - this.toJD(a, 1, 1) + 1, o = l <= 186 ? Math.ceil(l / 31) : Math.ceil((l - 6) / 30), y = T - this.toJD(a, o, 1) + 1;
                  return this.newDate(a, o, y);
                }
              });
              function s(T, A) {
                return T - A * Math.floor(T / A);
              }
              b.calendars.persian = n, b.calendars.jalali = n;
            }
          ),
          /***/
          84756: (
            /***/
            function(Y, K, e) {
              var b = e(24453), P = e(27976), n = b.instance();
              function s(T) {
                this.local = this.regionalOptions[T || ""] || this.regionalOptions[""];
              }
              s.prototype = new b.baseCalendar(), P(s.prototype, {
                /** The calendar name.
                    @memberof TaiwanCalendar */
                name: "Taiwan",
                /** Julian date of start of Taiwan epoch: 1 January 1912 CE (Gregorian).
                    @memberof TaiwanCalendar */
                jdEpoch: 24194025e-1,
                /** Difference in years between Taiwan and Gregorian calendars.
                    @memberof TaiwanCalendar */
                yearsOffset: 1911,
                /** Days per month in a common year.
                    @memberof TaiwanCalendar */
                daysPerMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
                /** <code>true</code> if has a year zero, <code>false</code> if not.
                    @memberof TaiwanCalendar */
                hasYearZero: !1,
                /** The minimum month number.
                    @memberof TaiwanCalendar */
                minMonth: 1,
                /** The first month in the year.
                    @memberof TaiwanCalendar */
                firstMonth: 1,
                /** The minimum day number.
                    @memberof TaiwanCalendar */
                minDay: 1,
                /** Localisations for the plugin.
                    Entries are objects indexed by the language code ('' being the default US/English).
                    Each object has the following attributes.
                    @memberof TaiwanCalendar
                    @property name {string} The calendar name.
                    @property epochs {string[]} The epoch names.
                    @property monthNames {string[]} The long names of the months of the year.
                    @property monthNamesShort {string[]} The short names of the months of the year.
                    @property dayNames {string[]} The long names of the days of the week.
                    @property dayNamesShort {string[]} The short names of the days of the week.
                    @property dayNamesMin {string[]} The minimal names of the days of the week.
                    @property dateFormat {string} The date format for this calendar.
                            See the options on <a href="BaseCalendar.html#formatDate"><code>formatDate</code></a> for details.
                    @property firstDay {number} The number of the first day of the week, starting at 0.
                    @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */
                regionalOptions: {
                  // Localisations
                  "": {
                    name: "Taiwan",
                    epochs: ["BROC", "ROC"],
                    monthNames: [
                      "January",
                      "February",
                      "March",
                      "April",
                      "May",
                      "June",
                      "July",
                      "August",
                      "September",
                      "October",
                      "November",
                      "December"
                    ],
                    monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
                    dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
                    dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
                    dayNamesMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
                    digits: null,
                    dateFormat: "yyyy/mm/dd",
                    firstDay: 1,
                    isRTL: !1
                  }
                },
                /** Determine whether this date is in a leap year.
                    @memberof TaiwanCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.
                    @throws Error if an invalid year or a different calendar used. */
                leapYear: function(p) {
                  var A = this._validate(p, this.minMonth, this.minDay, b.local.invalidYear), p = this._t2gYear(A.year());
                  return n.leapYear(p);
                },
                /** Determine the week of the year for a date - ISO 8601.
                    @memberof TaiwanCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {number} The week of the year.
                    @throws Error if an invalid date or a different calendar used. */
                weekOfYear: function(t, A, p) {
                  var u = this._validate(t, this.minMonth, this.minDay, b.local.invalidYear), t = this._t2gYear(u.year());
                  return n.weekOfYear(t, u.month(), u.day());
                },
                /** Retrieve the number of days in a month.
                    @memberof TaiwanCalendar
                    @param year {CDate|number} The date to examine or the year of the month.
                    @param [month] {number} The month.
                    @return {number} The number of days in this month.
                    @throws Error if an invalid month/year or a different calendar used. */
                daysInMonth: function(T, A) {
                  var p = this._validate(T, A, this.minDay, b.local.invalidMonth);
                  return this.daysPerMonth[p.month() - 1] + (p.month() === 2 && this.leapYear(p.year()) ? 1 : 0);
                },
                /** Determine whether this date is a week day.
                    @memberof TaiwanCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {boolean} <code>true</code> if a week day, <code>false</code> if not.
                    @throws Error if an invalid date or a different calendar used. */
                weekDay: function(T, A, p) {
                  return (this.dayOfWeek(T, A, p) || 7) < 6;
                },
                /** Retrieve the Julian date equivalent for this date,
                    i.e. days since January 1, 4713 BCE Greenwich noon.
                    @memberof TaiwanCalendar
                    @param year {CDate|number} The date to convert or the year to convert.
                    @param [month] {number} The month to convert.
                    @param [day] {number} The day to convert.
                    @return {number} The equivalent Julian date.
                    @throws Error if an invalid date or a different calendar used. */
                toJD: function(t, A, p) {
                  var u = this._validate(t, A, p, b.local.invalidDate), t = this._t2gYear(u.year());
                  return n.toJD(t, u.month(), u.day());
                },
                /** Create a new date from a Julian date.
                    @memberof TaiwanCalendar
                    @param jd {number} The Julian date to convert.
                    @return {CDate} The equivalent date. */
                fromJD: function(T) {
                  var A = n.fromJD(T), p = this._g2tYear(A.year());
                  return this.newDate(p, A.month(), A.day());
                },
                /** Convert Taiwanese to Gregorian year.
                    @memberof TaiwanCalendar
                    @private
                    @param year {number} The Taiwanese year.
                    @return {number} The corresponding Gregorian year. */
                _t2gYear: function(T) {
                  return T + this.yearsOffset + (T >= -this.yearsOffset && T <= -1 ? 1 : 0);
                },
                /** Convert Gregorian to Taiwanese year.
                    @memberof TaiwanCalendar
                    @private
                    @param year {number} The Gregorian year.
                    @return {number} The corresponding Taiwanese year. */
                _g2tYear: function(T) {
                  return T - this.yearsOffset - (T >= 1 && T <= this.yearsOffset ? 1 : 0);
                }
              }), b.calendars.taiwan = s;
            }
          ),
          /***/
          41858: (
            /***/
            function(Y, K, e) {
              var b = e(24453), P = e(27976), n = b.instance();
              function s(T) {
                this.local = this.regionalOptions[T || ""] || this.regionalOptions[""];
              }
              s.prototype = new b.baseCalendar(), P(s.prototype, {
                /** The calendar name.
                    @memberof ThaiCalendar */
                name: "Thai",
                /** Julian date of start of Thai epoch: 1 January 543 BCE (Gregorian).
                    @memberof ThaiCalendar */
                jdEpoch: 15230985e-1,
                /** Difference in years between Thai and Gregorian calendars.
                    @memberof ThaiCalendar */
                yearsOffset: 543,
                /** Days per month in a common year.
                    @memberof ThaiCalendar */
                daysPerMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
                /** <code>true</code> if has a year zero, <code>false</code> if not.
                    @memberof ThaiCalendar */
                hasYearZero: !1,
                /** The minimum month number.
                    @memberof ThaiCalendar */
                minMonth: 1,
                /** The first month in the year.
                    @memberof ThaiCalendar */
                firstMonth: 1,
                /** The minimum day number.
                    @memberof ThaiCalendar */
                minDay: 1,
                /** Localisations for the plugin.
                    Entries are objects indexed by the language code ('' being the default US/English).
                    Each object has the following attributes.
                    @memberof ThaiCalendar
                    @property name {string} The calendar name.
                    @property epochs {string[]} The epoch names.
                    @property monthNames {string[]} The long names of the months of the year.
                    @property monthNamesShort {string[]} The short names of the months of the year.
                    @property dayNames {string[]} The long names of the days of the week.
                    @property dayNamesShort {string[]} The short names of the days of the week.
                    @property dayNamesMin {string[]} The minimal names of the days of the week.
                    @property dateFormat {string} The date format for this calendar.
                            See the options on <a href="BaseCalendar.html#formatDate"><code>formatDate</code></a> for details.
                    @property firstDay {number} The number of the first day of the week, starting at 0.
                    @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */
                regionalOptions: {
                  // Localisations
                  "": {
                    name: "Thai",
                    epochs: ["BBE", "BE"],
                    monthNames: [
                      "January",
                      "February",
                      "March",
                      "April",
                      "May",
                      "June",
                      "July",
                      "August",
                      "September",
                      "October",
                      "November",
                      "December"
                    ],
                    monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
                    dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
                    dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
                    dayNamesMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
                    digits: null,
                    dateFormat: "dd/mm/yyyy",
                    firstDay: 0,
                    isRTL: !1
                  }
                },
                /** Determine whether this date is in a leap year.
                    @memberof ThaiCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.
                    @throws Error if an invalid year or a different calendar used. */
                leapYear: function(p) {
                  var A = this._validate(p, this.minMonth, this.minDay, b.local.invalidYear), p = this._t2gYear(A.year());
                  return n.leapYear(p);
                },
                /** Determine the week of the year for a date - ISO 8601.
                    @memberof ThaiCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {number} The week of the year.
                    @throws Error if an invalid date or a different calendar used. */
                weekOfYear: function(t, A, p) {
                  var u = this._validate(t, this.minMonth, this.minDay, b.local.invalidYear), t = this._t2gYear(u.year());
                  return n.weekOfYear(t, u.month(), u.day());
                },
                /** Retrieve the number of days in a month.
                    @memberof ThaiCalendar
                    @param year {CDate|number} The date to examine or the year of the month.
                    @param [month] {number} The month.
                    @return {number} The number of days in this month.
                    @throws Error if an invalid month/year or a different calendar used. */
                daysInMonth: function(T, A) {
                  var p = this._validate(T, A, this.minDay, b.local.invalidMonth);
                  return this.daysPerMonth[p.month() - 1] + (p.month() === 2 && this.leapYear(p.year()) ? 1 : 0);
                },
                /** Determine whether this date is a week day.
                    @memberof ThaiCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {boolean} <code>true</code> if a week day, <code>false</code> if not.
                    @throws Error if an invalid date or a different calendar used. */
                weekDay: function(T, A, p) {
                  return (this.dayOfWeek(T, A, p) || 7) < 6;
                },
                /** Retrieve the Julian date equivalent for this date,
                    i.e. days since January 1, 4713 BCE Greenwich noon.
                    @memberof ThaiCalendar
                    @param year {CDate|number} The date to convert or the year to convert.
                    @param [month] {number} The month to convert.
                    @param [day] {number} The day to convert.
                    @return {number} The equivalent Julian date.
                    @throws Error if an invalid date or a different calendar used. */
                toJD: function(t, A, p) {
                  var u = this._validate(t, A, p, b.local.invalidDate), t = this._t2gYear(u.year());
                  return n.toJD(t, u.month(), u.day());
                },
                /** Create a new date from a Julian date.
                    @memberof ThaiCalendar
                    @param jd {number} The Julian date to convert.
                    @return {CDate} The equivalent date. */
                fromJD: function(T) {
                  var A = n.fromJD(T), p = this._g2tYear(A.year());
                  return this.newDate(p, A.month(), A.day());
                },
                /** Convert Thai to Gregorian year.
                    @memberof ThaiCalendar
                    @private
                    @param year {number} The Thai year.
                    @return {number} The corresponding Gregorian year. */
                _t2gYear: function(T) {
                  return T - this.yearsOffset - (T >= 1 && T <= this.yearsOffset ? 1 : 0);
                },
                /** Convert Gregorian to Thai year.
                    @memberof ThaiCalendar
                    @private
                    @param year {number} The Gregorian year.
                    @return {number} The corresponding Thai year. */
                _g2tYear: function(T) {
                  return T + this.yearsOffset + (T >= -this.yearsOffset && T <= -1 ? 1 : 0);
                }
              }), b.calendars.thai = s;
            }
          ),
          /***/
          57985: (
            /***/
            function(Y, K, e) {
              var b = e(24453), P = e(27976);
              function n(T) {
                this.local = this.regionalOptions[T || ""] || this.regionalOptions[""];
              }
              n.prototype = new b.baseCalendar(), P(n.prototype, {
                /** The calendar name.
                    @memberof UmmAlQuraCalendar */
                name: "UmmAlQura",
                //jdEpoch: 1948440, // Julian date of start of UmmAlQura epoch: 14 March 1937 CE
                //daysPerMonth: // Days per month in a common year, replaced by a method.
                /** <code>true</code> if has a year zero, <code>false</code> if not.
                    @memberof UmmAlQuraCalendar */
                hasYearZero: !1,
                /** The minimum month number.
                    @memberof UmmAlQuraCalendar */
                minMonth: 1,
                /** The first month in the year.
                    @memberof UmmAlQuraCalendar */
                firstMonth: 1,
                /** The minimum day number.
                    @memberof UmmAlQuraCalendar */
                minDay: 1,
                /** Localisations for the plugin.
                    Entries are objects indexed by the language code ('' being the default US/English).
                    Each object has the following attributes.
                    @memberof UmmAlQuraCalendar
                    @property name {string} The calendar name.
                    @property epochs {string[]} The epoch names.
                    @property monthNames {string[]} The long names of the months of the year.
                    @property monthNamesShort {string[]} The short names of the months of the year.
                    @property dayNames {string[]} The long names of the days of the week.
                    @property dayNamesShort {string[]} The short names of the days of the week.
                    @property dayNamesMin {string[]} The minimal names of the days of the week.
                    @property dateFormat {string} The date format for this calendar.
                            See the options on <a href="BaseCalendar.html#formatDate"><code>formatDate</code></a> for details.
                    @property firstDay {number} The number of the first day of the week, starting at 0.
                    @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */
                regionalOptions: {
                  // Localisations
                  "": {
                    name: "Umm al-Qura",
                    epochs: ["BH", "AH"],
                    monthNames: [
                      "Al-Muharram",
                      "Safar",
                      "Rabi' al-awwal",
                      "Rabi' Al-Thani",
                      "Jumada Al-Awwal",
                      "Jumada Al-Thani",
                      "Rajab",
                      "Sha'aban",
                      "Ramadan",
                      "Shawwal",
                      "Dhu al-Qi'dah",
                      "Dhu al-Hijjah"
                    ],
                    monthNamesShort: ["Muh", "Saf", "Rab1", "Rab2", "Jum1", "Jum2", "Raj", "Sha'", "Ram", "Shaw", "DhuQ", "DhuH"],
                    dayNames: ["Yawm al-Ahad", "Yawm al-Ithnain", "Yawm al-Thalāthā’", "Yawm al-Arba‘ā’", "Yawm al-Khamīs", "Yawm al-Jum‘a", "Yawm al-Sabt"],
                    dayNamesMin: ["Ah", "Ith", "Th", "Ar", "Kh", "Ju", "Sa"],
                    digits: null,
                    dateFormat: "yyyy/mm/dd",
                    firstDay: 6,
                    isRTL: !0
                  }
                },
                /** Determine whether this date is in a leap year.
                    @memberof UmmAlQuraCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.
                    @throws Error if an invalid year or a different calendar used. */
                leapYear: function(T) {
                  var A = this._validate(T, this.minMonth, this.minDay, b.local.invalidYear);
                  return this.daysInYear(A.year()) === 355;
                },
                /** Determine the week of the year for a date.
                    @memberof UmmAlQuraCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {number} The week of the year.
                    @throws Error if an invalid date or a different calendar used. */
                weekOfYear: function(T, A, p) {
                  var u = this.newDate(T, A, p);
                  return u.add(-u.dayOfWeek(), "d"), Math.floor((u.dayOfYear() - 1) / 7) + 1;
                },
                /** Retrieve the number of days in a year.
                    @memberof UmmAlQuraCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {number} The number of days.
                    @throws Error if an invalid year or a different calendar used. */
                daysInYear: function(T) {
                  for (var A = 0, p = 1; p <= 12; p++)
                    A += this.daysInMonth(T, p);
                  return A;
                },
                /** Retrieve the number of days in a month.
                    @memberof UmmAlQuraCalendar
                    @param year {CDate|number} The date to examine or the year of the month.
                    @param [month] {number} The month.
                    @return {number} The number of days in this month.
                    @throws Error if an invalid month/year or a different calendar used. */
                daysInMonth: function(T, A) {
                  for (var p = this._validate(T, A, this.minDay, b.local.invalidMonth), u = p.toJD() - 24e5 + 0.5, t = 0, r = 0; r < s.length; r++) {
                    if (s[r] > u)
                      return s[t] - s[t - 1];
                    t++;
                  }
                  return 30;
                },
                /** Determine whether this date is a week day.
                    @memberof UmmAlQuraCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {boolean} <code>true</code> if a week day, <code>false</code> if not.
                    @throws Error if an invalid date or a different calendar used. */
                weekDay: function(T, A, p) {
                  return this.dayOfWeek(T, A, p) !== 5;
                },
                /** Retrieve the Julian date equivalent for this date,
                    i.e. days since January 1, 4713 BCE Greenwich noon.
                    @memberof UmmAlQuraCalendar
                    @param year {CDate|number} The date to convert or the year to convert.
                    @param [month] {number} The month to convert.
                    @param [day] {number} The day to convert.
                    @return {number} The equivalent Julian date.
                    @throws Error if an invalid date or a different calendar used. */
                toJD: function(T, A, p) {
                  var u = this._validate(T, A, p, b.local.invalidDate), t = 12 * (u.year() - 1) + u.month() - 15292, r = u.day() + s[t - 1] - 1;
                  return r + 24e5 - 0.5;
                },
                /** Create a new date from a Julian date.
                    @memberof UmmAlQuraCalendar
                    @param jd {number} The Julian date to convert.
                    @return {CDate} The equivalent date. */
                fromJD: function(T) {
                  for (var A = T - 24e5 + 0.5, p = 0, u = 0; u < s.length && !(s[u] > A); u++)
                    p++;
                  var t = p + 15292, r = Math.floor((t - 1) / 12), i = r + 1, a = t - 12 * r, l = A - s[p - 1] + 1;
                  return this.newDate(i, a, l);
                },
                /** Determine whether a date is valid for this calendar.
                    @memberof UmmAlQuraCalendar
                    @param year {number} The year to examine.
                    @param month {number} The month to examine.
                    @param day {number} The day to examine.
                    @return {boolean} <code>true</code> if a valid date, <code>false</code> if not. */
                isValid: function(T, A, p) {
                  var u = b.baseCalendar.prototype.isValid.apply(this, arguments);
                  return u && (T = T.year != null ? T.year : T, u = T >= 1276 && T <= 1500), u;
                },
                /** Check that a candidate date is from the same calendar and is valid.
                    @memberof UmmAlQuraCalendar
                    @private
                    @param year {CDate|number} The date to validate or the year to validate.
                    @param month {number} The month to validate.
                    @param day {number} The day to validate.
                    @param error {string} Error message if invalid.
                    @throws Error if different calendars used or invalid date. */
                _validate: function(T, A, p, u) {
                  var t = b.baseCalendar.prototype._validate.apply(this, arguments);
                  if (t.year < 1276 || t.year > 1500)
                    throw u.replace(/\{0\}/, this.local.name);
                  return t;
                }
              }), b.calendars.ummalqura = n;
              var s = [
                20,
                50,
                79,
                109,
                138,
                168,
                197,
                227,
                256,
                286,
                315,
                345,
                374,
                404,
                433,
                463,
                492,
                522,
                551,
                581,
                611,
                641,
                670,
                700,
                729,
                759,
                788,
                818,
                847,
                877,
                906,
                936,
                965,
                995,
                1024,
                1054,
                1083,
                1113,
                1142,
                1172,
                1201,
                1231,
                1260,
                1290,
                1320,
                1350,
                1379,
                1409,
                1438,
                1468,
                1497,
                1527,
                1556,
                1586,
                1615,
                1645,
                1674,
                1704,
                1733,
                1763,
                1792,
                1822,
                1851,
                1881,
                1910,
                1940,
                1969,
                1999,
                2028,
                2058,
                2087,
                2117,
                2146,
                2176,
                2205,
                2235,
                2264,
                2294,
                2323,
                2353,
                2383,
                2413,
                2442,
                2472,
                2501,
                2531,
                2560,
                2590,
                2619,
                2649,
                2678,
                2708,
                2737,
                2767,
                2796,
                2826,
                2855,
                2885,
                2914,
                2944,
                2973,
                3003,
                3032,
                3062,
                3091,
                3121,
                3150,
                3180,
                3209,
                3239,
                3268,
                3298,
                3327,
                3357,
                3386,
                3416,
                3446,
                3476,
                3505,
                3535,
                3564,
                3594,
                3623,
                3653,
                3682,
                3712,
                3741,
                3771,
                3800,
                3830,
                3859,
                3889,
                3918,
                3948,
                3977,
                4007,
                4036,
                4066,
                4095,
                4125,
                4155,
                4185,
                4214,
                4244,
                4273,
                4303,
                4332,
                4362,
                4391,
                4421,
                4450,
                4480,
                4509,
                4539,
                4568,
                4598,
                4627,
                4657,
                4686,
                4716,
                4745,
                4775,
                4804,
                4834,
                4863,
                4893,
                4922,
                4952,
                4981,
                5011,
                5040,
                5070,
                5099,
                5129,
                5158,
                5188,
                5218,
                5248,
                5277,
                5307,
                5336,
                5366,
                5395,
                5425,
                5454,
                5484,
                5513,
                5543,
                5572,
                5602,
                5631,
                5661,
                5690,
                5720,
                5749,
                5779,
                5808,
                5838,
                5867,
                5897,
                5926,
                5956,
                5985,
                6015,
                6044,
                6074,
                6103,
                6133,
                6162,
                6192,
                6221,
                6251,
                6281,
                6311,
                6340,
                6370,
                6399,
                6429,
                6458,
                6488,
                6517,
                6547,
                6576,
                6606,
                6635,
                6665,
                6694,
                6724,
                6753,
                6783,
                6812,
                6842,
                6871,
                6901,
                6930,
                6960,
                6989,
                7019,
                7048,
                7078,
                7107,
                7137,
                7166,
                7196,
                7225,
                7255,
                7284,
                7314,
                7344,
                7374,
                7403,
                7433,
                7462,
                7492,
                7521,
                7551,
                7580,
                7610,
                7639,
                7669,
                7698,
                7728,
                7757,
                7787,
                7816,
                7846,
                7875,
                7905,
                7934,
                7964,
                7993,
                8023,
                8053,
                8083,
                8112,
                8142,
                8171,
                8201,
                8230,
                8260,
                8289,
                8319,
                8348,
                8378,
                8407,
                8437,
                8466,
                8496,
                8525,
                8555,
                8584,
                8614,
                8643,
                8673,
                8702,
                8732,
                8761,
                8791,
                8821,
                8850,
                8880,
                8909,
                8938,
                8968,
                8997,
                9027,
                9056,
                9086,
                9115,
                9145,
                9175,
                9205,
                9234,
                9264,
                9293,
                9322,
                9352,
                9381,
                9410,
                9440,
                9470,
                9499,
                9529,
                9559,
                9589,
                9618,
                9648,
                9677,
                9706,
                9736,
                9765,
                9794,
                9824,
                9853,
                9883,
                9913,
                9943,
                9972,
                10002,
                10032,
                10061,
                10090,
                10120,
                10149,
                10178,
                10208,
                10237,
                10267,
                10297,
                10326,
                10356,
                10386,
                10415,
                10445,
                10474,
                10504,
                10533,
                10562,
                10592,
                10621,
                10651,
                10680,
                10710,
                10740,
                10770,
                10799,
                10829,
                10858,
                10888,
                10917,
                10947,
                10976,
                11005,
                11035,
                11064,
                11094,
                11124,
                11153,
                11183,
                11213,
                11242,
                11272,
                11301,
                11331,
                11360,
                11389,
                11419,
                11448,
                11478,
                11507,
                11537,
                11567,
                11596,
                11626,
                11655,
                11685,
                11715,
                11744,
                11774,
                11803,
                11832,
                11862,
                11891,
                11921,
                11950,
                11980,
                12010,
                12039,
                12069,
                12099,
                12128,
                12158,
                12187,
                12216,
                12246,
                12275,
                12304,
                12334,
                12364,
                12393,
                12423,
                12453,
                12483,
                12512,
                12542,
                12571,
                12600,
                12630,
                12659,
                12688,
                12718,
                12747,
                12777,
                12807,
                12837,
                12866,
                12896,
                12926,
                12955,
                12984,
                13014,
                13043,
                13072,
                13102,
                13131,
                13161,
                13191,
                13220,
                13250,
                13280,
                13310,
                13339,
                13368,
                13398,
                13427,
                13456,
                13486,
                13515,
                13545,
                13574,
                13604,
                13634,
                13664,
                13693,
                13723,
                13752,
                13782,
                13811,
                13840,
                13870,
                13899,
                13929,
                13958,
                13988,
                14018,
                14047,
                14077,
                14107,
                14136,
                14166,
                14195,
                14224,
                14254,
                14283,
                14313,
                14342,
                14372,
                14401,
                14431,
                14461,
                14490,
                14520,
                14550,
                14579,
                14609,
                14638,
                14667,
                14697,
                14726,
                14756,
                14785,
                14815,
                14844,
                14874,
                14904,
                14933,
                14963,
                14993,
                15021,
                15051,
                15081,
                15110,
                15140,
                15169,
                15199,
                15228,
                15258,
                15287,
                15317,
                15347,
                15377,
                15406,
                15436,
                15465,
                15494,
                15524,
                15553,
                15582,
                15612,
                15641,
                15671,
                15701,
                15731,
                15760,
                15790,
                15820,
                15849,
                15878,
                15908,
                15937,
                15966,
                15996,
                16025,
                16055,
                16085,
                16114,
                16144,
                16174,
                16204,
                16233,
                16262,
                16292,
                16321,
                16350,
                16380,
                16409,
                16439,
                16468,
                16498,
                16528,
                16558,
                16587,
                16617,
                16646,
                16676,
                16705,
                16734,
                16764,
                16793,
                16823,
                16852,
                16882,
                16912,
                16941,
                16971,
                17001,
                17030,
                17060,
                17089,
                17118,
                17148,
                17177,
                17207,
                17236,
                17266,
                17295,
                17325,
                17355,
                17384,
                17414,
                17444,
                17473,
                17502,
                17532,
                17561,
                17591,
                17620,
                17650,
                17679,
                17709,
                17738,
                17768,
                17798,
                17827,
                17857,
                17886,
                17916,
                17945,
                17975,
                18004,
                18034,
                18063,
                18093,
                18122,
                18152,
                18181,
                18211,
                18241,
                18270,
                18300,
                18330,
                18359,
                18388,
                18418,
                18447,
                18476,
                18506,
                18535,
                18565,
                18595,
                18625,
                18654,
                18684,
                18714,
                18743,
                18772,
                18802,
                18831,
                18860,
                18890,
                18919,
                18949,
                18979,
                19008,
                19038,
                19068,
                19098,
                19127,
                19156,
                19186,
                19215,
                19244,
                19274,
                19303,
                19333,
                19362,
                19392,
                19422,
                19452,
                19481,
                19511,
                19540,
                19570,
                19599,
                19628,
                19658,
                19687,
                19717,
                19746,
                19776,
                19806,
                19836,
                19865,
                19895,
                19924,
                19954,
                19983,
                20012,
                20042,
                20071,
                20101,
                20130,
                20160,
                20190,
                20219,
                20249,
                20279,
                20308,
                20338,
                20367,
                20396,
                20426,
                20455,
                20485,
                20514,
                20544,
                20573,
                20603,
                20633,
                20662,
                20692,
                20721,
                20751,
                20780,
                20810,
                20839,
                20869,
                20898,
                20928,
                20957,
                20987,
                21016,
                21046,
                21076,
                21105,
                21135,
                21164,
                21194,
                21223,
                21253,
                21282,
                21312,
                21341,
                21371,
                21400,
                21430,
                21459,
                21489,
                21519,
                21548,
                21578,
                21607,
                21637,
                21666,
                21696,
                21725,
                21754,
                21784,
                21813,
                21843,
                21873,
                21902,
                21932,
                21962,
                21991,
                22021,
                22050,
                22080,
                22109,
                22138,
                22168,
                22197,
                22227,
                22256,
                22286,
                22316,
                22346,
                22375,
                22405,
                22434,
                22464,
                22493,
                22522,
                22552,
                22581,
                22611,
                22640,
                22670,
                22700,
                22730,
                22759,
                22789,
                22818,
                22848,
                22877,
                22906,
                22936,
                22965,
                22994,
                23024,
                23054,
                23083,
                23113,
                23143,
                23173,
                23202,
                23232,
                23261,
                23290,
                23320,
                23349,
                23379,
                23408,
                23438,
                23467,
                23497,
                23527,
                23556,
                23586,
                23616,
                23645,
                23674,
                23704,
                23733,
                23763,
                23792,
                23822,
                23851,
                23881,
                23910,
                23940,
                23970,
                23999,
                24029,
                24058,
                24088,
                24117,
                24147,
                24176,
                24206,
                24235,
                24265,
                24294,
                24324,
                24353,
                24383,
                24413,
                24442,
                24472,
                24501,
                24531,
                24560,
                24590,
                24619,
                24648,
                24678,
                24707,
                24737,
                24767,
                24796,
                24826,
                24856,
                24885,
                24915,
                24944,
                24974,
                25003,
                25032,
                25062,
                25091,
                25121,
                25150,
                25180,
                25210,
                25240,
                25269,
                25299,
                25328,
                25358,
                25387,
                25416,
                25446,
                25475,
                25505,
                25534,
                25564,
                25594,
                25624,
                25653,
                25683,
                25712,
                25742,
                25771,
                25800,
                25830,
                25859,
                25888,
                25918,
                25948,
                25977,
                26007,
                26037,
                26067,
                26096,
                26126,
                26155,
                26184,
                26214,
                26243,
                26272,
                26302,
                26332,
                26361,
                26391,
                26421,
                26451,
                26480,
                26510,
                26539,
                26568,
                26598,
                26627,
                26656,
                26686,
                26715,
                26745,
                26775,
                26805,
                26834,
                26864,
                26893,
                26923,
                26952,
                26982,
                27011,
                27041,
                27070,
                27099,
                27129,
                27159,
                27188,
                27218,
                27248,
                27277,
                27307,
                27336,
                27366,
                27395,
                27425,
                27454,
                27484,
                27513,
                27542,
                27572,
                27602,
                27631,
                27661,
                27691,
                27720,
                27750,
                27779,
                27809,
                27838,
                27868,
                27897,
                27926,
                27956,
                27985,
                28015,
                28045,
                28074,
                28104,
                28134,
                28163,
                28193,
                28222,
                28252,
                28281,
                28310,
                28340,
                28369,
                28399,
                28428,
                28458,
                28488,
                28517,
                28547,
                28577,
                // From 1356
                28607,
                28636,
                28665,
                28695,
                28724,
                28754,
                28783,
                28813,
                28843,
                28872,
                28901,
                28931,
                28960,
                28990,
                29019,
                29049,
                29078,
                29108,
                29137,
                29167,
                29196,
                29226,
                29255,
                29285,
                29315,
                29345,
                29375,
                29404,
                29434,
                29463,
                29492,
                29522,
                29551,
                29580,
                29610,
                29640,
                29669,
                29699,
                29729,
                29759,
                29788,
                29818,
                29847,
                29876,
                29906,
                29935,
                29964,
                29994,
                30023,
                30053,
                30082,
                30112,
                30141,
                30171,
                30200,
                30230,
                30259,
                30289,
                30318,
                30348,
                30378,
                30408,
                30437,
                30467,
                30496,
                30526,
                30555,
                30585,
                30614,
                30644,
                30673,
                30703,
                30732,
                30762,
                30791,
                30821,
                30850,
                30880,
                30909,
                30939,
                30968,
                30998,
                31027,
                31057,
                31086,
                31116,
                31145,
                31175,
                31204,
                31234,
                31263,
                31293,
                31322,
                31352,
                31381,
                31411,
                31441,
                31471,
                31500,
                31530,
                31559,
                31589,
                31618,
                31648,
                31676,
                31706,
                31736,
                31766,
                31795,
                31825,
                31854,
                31884,
                31913,
                31943,
                31972,
                32002,
                32031,
                32061,
                32090,
                32120,
                32150,
                32180,
                32209,
                32239,
                32268,
                32298,
                32327,
                32357,
                32386,
                32416,
                32445,
                32475,
                32504,
                32534,
                32563,
                32593,
                32622,
                32652,
                32681,
                32711,
                32740,
                32770,
                32799,
                32829,
                32858,
                32888,
                32917,
                32947,
                32976,
                33006,
                33035,
                33065,
                33094,
                33124,
                33153,
                33183,
                33213,
                33243,
                33272,
                33302,
                33331,
                33361,
                33390,
                33420,
                33450,
                33479,
                33509,
                33539,
                33568,
                33598,
                33627,
                33657,
                33686,
                33716,
                33745,
                33775,
                33804,
                33834,
                33863,
                33893,
                33922,
                33952,
                33981,
                34011,
                34040,
                34069,
                34099,
                34128,
                34158,
                34187,
                34217,
                34247,
                34277,
                34306,
                34336,
                34365,
                34395,
                34424,
                34454,
                34483,
                34512,
                34542,
                34571,
                34601,
                34631,
                34660,
                34690,
                34719,
                34749,
                34778,
                34808,
                34837,
                34867,
                34896,
                34926,
                34955,
                34985,
                35015,
                35044,
                35074,
                35103,
                35133,
                35162,
                35192,
                35222,
                35251,
                35280,
                35310,
                35340,
                35370,
                35399,
                35429,
                35458,
                35488,
                35517,
                35547,
                35576,
                35605,
                35635,
                35665,
                35694,
                35723,
                35753,
                35782,
                35811,
                35841,
                35871,
                35901,
                35930,
                35960,
                35989,
                36019,
                36048,
                36078,
                36107,
                36136,
                36166,
                36195,
                36225,
                36254,
                36284,
                36314,
                36343,
                36373,
                36403,
                36433,
                36462,
                36492,
                36521,
                36551,
                36580,
                36610,
                36639,
                36669,
                36698,
                36728,
                36757,
                36786,
                36816,
                36845,
                36875,
                36904,
                36934,
                36963,
                36993,
                37022,
                37052,
                37081,
                37111,
                37141,
                37170,
                37200,
                37229,
                37259,
                37288,
                37318,
                37347,
                37377,
                37406,
                37436,
                37465,
                37495,
                37524,
                37554,
                37584,
                37613,
                37643,
                37672,
                37701,
                37731,
                37760,
                37790,
                37819,
                37849,
                37878,
                37908,
                37938,
                37967,
                37997,
                38027,
                38056,
                38085,
                38115,
                38144,
                38174,
                38203,
                38233,
                38262,
                38292,
                38322,
                38351,
                38381,
                38410,
                38440,
                38469,
                38499,
                38528,
                38558,
                38587,
                38617,
                38646,
                38676,
                38705,
                38735,
                38764,
                38794,
                38823,
                38853,
                38882,
                38912,
                38941,
                38971,
                39001,
                39030,
                39059,
                39089,
                39118,
                39148,
                39178,
                39208,
                39237,
                39267,
                39297,
                39326,
                39355,
                39385,
                39414,
                39444,
                39473,
                39503,
                39532,
                39562,
                39592,
                39621,
                39650,
                39680,
                39709,
                39739,
                39768,
                39798,
                39827,
                39857,
                39886,
                39916,
                39946,
                39975,
                40005,
                40035,
                40064,
                40094,
                40123,
                40153,
                40182,
                40212,
                40241,
                40271,
                40300,
                40330,
                40359,
                40389,
                40418,
                40448,
                40477,
                40507,
                40536,
                40566,
                40595,
                40625,
                40655,
                40685,
                40714,
                40744,
                40773,
                40803,
                40832,
                40862,
                40892,
                40921,
                40951,
                40980,
                41009,
                41039,
                41068,
                41098,
                41127,
                41157,
                41186,
                41216,
                41245,
                41275,
                41304,
                41334,
                41364,
                41393,
                41422,
                41452,
                41481,
                41511,
                41540,
                41570,
                41599,
                41629,
                41658,
                41688,
                41718,
                41748,
                41777,
                41807,
                41836,
                41865,
                41894,
                41924,
                41953,
                41983,
                42012,
                42042,
                42072,
                42102,
                42131,
                42161,
                42190,
                42220,
                42249,
                42279,
                42308,
                42337,
                42367,
                42397,
                42426,
                42456,
                42485,
                42515,
                42545,
                42574,
                42604,
                42633,
                42662,
                42692,
                42721,
                42751,
                42780,
                42810,
                42839,
                42869,
                42899,
                42929,
                42958,
                42988,
                43017,
                43046,
                43076,
                43105,
                43135,
                43164,
                43194,
                43223,
                43253,
                43283,
                43312,
                43342,
                43371,
                43401,
                43430,
                43460,
                43489,
                43519,
                43548,
                43578,
                43607,
                43637,
                43666,
                43696,
                43726,
                43755,
                43785,
                43814,
                43844,
                43873,
                43903,
                43932,
                43962,
                43991,
                44021,
                44050,
                44080,
                44109,
                44139,
                44169,
                44198,
                44228,
                44258,
                44287,
                44317,
                44346,
                44375,
                44405,
                44434,
                44464,
                44493,
                44523,
                44553,
                44582,
                44612,
                44641,
                44671,
                44700,
                44730,
                44759,
                44788,
                44818,
                44847,
                44877,
                44906,
                44936,
                44966,
                44996,
                45025,
                45055,
                45084,
                45114,
                45143,
                45172,
                45202,
                45231,
                45261,
                45290,
                45320,
                45350,
                45380,
                45409,
                45439,
                45468,
                45498,
                45527,
                45556,
                45586,
                45615,
                45644,
                45674,
                45704,
                45733,
                45763,
                45793,
                45823,
                45852,
                45882,
                45911,
                45940,
                45970,
                45999,
                46028,
                46058,
                46088,
                46117,
                46147,
                46177,
                46206,
                46236,
                46265,
                46295,
                46324,
                46354,
                46383,
                46413,
                46442,
                46472,
                46501,
                46531,
                46560,
                46590,
                46620,
                46649,
                46679,
                46708,
                46738,
                46767,
                46797,
                46826,
                46856,
                46885,
                46915,
                46944,
                46974,
                47003,
                47033,
                47063,
                47092,
                47122,
                47151,
                47181,
                47210,
                47240,
                47269,
                47298,
                47328,
                47357,
                47387,
                47417,
                47446,
                47476,
                47506,
                47535,
                47565,
                47594,
                47624,
                47653,
                47682,
                47712,
                47741,
                47771,
                47800,
                47830,
                47860,
                47890,
                47919,
                47949,
                47978,
                48008,
                48037,
                48066,
                48096,
                48125,
                48155,
                48184,
                48214,
                48244,
                48273,
                48303,
                48333,
                48362,
                48392,
                48421,
                48450,
                48480,
                48509,
                48538,
                48568,
                48598,
                48627,
                48657,
                48687,
                48717,
                48746,
                48776,
                48805,
                48834,
                48864,
                48893,
                48922,
                48952,
                48982,
                49011,
                49041,
                49071,
                49100,
                49130,
                49160,
                49189,
                49218,
                49248,
                49277,
                49306,
                49336,
                49365,
                49395,
                49425,
                49455,
                49484,
                49514,
                49543,
                49573,
                49602,
                49632,
                49661,
                49690,
                49720,
                49749,
                49779,
                49809,
                49838,
                49868,
                49898,
                49927,
                49957,
                49986,
                50016,
                50045,
                50075,
                50104,
                50133,
                50163,
                50192,
                50222,
                50252,
                50281,
                50311,
                50340,
                50370,
                50400,
                50429,
                50459,
                50488,
                50518,
                50547,
                50576,
                50606,
                50635,
                50665,
                50694,
                50724,
                50754,
                50784,
                50813,
                50843,
                50872,
                50902,
                50931,
                50960,
                50990,
                51019,
                51049,
                51078,
                51108,
                51138,
                51167,
                51197,
                51227,
                51256,
                51286,
                51315,
                51345,
                51374,
                51403,
                51433,
                51462,
                51492,
                51522,
                51552,
                51582,
                51611,
                51641,
                51670,
                51699,
                51729,
                51758,
                51787,
                51816,
                51846,
                51876,
                51906,
                51936,
                51965,
                51995,
                52025,
                52054,
                52083,
                52113,
                52142,
                52171,
                52200,
                52230,
                52260,
                52290,
                52319,
                52349,
                52379,
                52408,
                52438,
                52467,
                52497,
                52526,
                52555,
                52585,
                52614,
                52644,
                52673,
                52703,
                52733,
                52762,
                52792,
                52822,
                52851,
                52881,
                52910,
                52939,
                52969,
                52998,
                53028,
                53057,
                53087,
                53116,
                53146,
                53176,
                53205,
                53235,
                53264,
                53294,
                53324,
                53353,
                53383,
                53412,
                53441,
                53471,
                53500,
                53530,
                53559,
                53589,
                53619,
                53648,
                53678,
                53708,
                53737,
                53767,
                53796,
                53825,
                53855,
                53884,
                53913,
                53943,
                53973,
                54003,
                54032,
                54062,
                54092,
                54121,
                54151,
                54180,
                54209,
                54239,
                54268,
                54297,
                54327,
                54357,
                54387,
                54416,
                54446,
                54476,
                54505,
                54535,
                54564,
                54593,
                54623,
                54652,
                54681,
                54711,
                54741,
                54770,
                54800,
                54830,
                54859,
                54889,
                54919,
                54948,
                54977,
                55007,
                55036,
                55066,
                55095,
                55125,
                55154,
                55184,
                55213,
                55243,
                55273,
                55302,
                55332,
                55361,
                55391,
                55420,
                55450,
                55479,
                55508,
                55538,
                55567,
                55597,
                55627,
                55657,
                55686,
                55716,
                55745,
                55775,
                55804,
                55834,
                55863,
                55892,
                55922,
                55951,
                55981,
                56011,
                56040,
                56070,
                56100,
                56129,
                56159,
                56188,
                56218,
                56247,
                56276,
                56306,
                56335,
                56365,
                56394,
                56424,
                56454,
                56483,
                56513,
                56543,
                56572,
                56601,
                56631,
                56660,
                56690,
                56719,
                56749,
                56778,
                56808,
                56837,
                56867,
                56897,
                56926,
                56956,
                56985,
                57015,
                57044,
                57074,
                57103,
                57133,
                57162,
                57192,
                57221,
                57251,
                57280,
                57310,
                57340,
                57369,
                57399,
                57429,
                57458,
                57487,
                57517,
                57546,
                57576,
                57605,
                57634,
                57664,
                57694,
                57723,
                57753,
                57783,
                57813,
                57842,
                57871,
                57901,
                57930,
                57959,
                57989,
                58018,
                58048,
                58077,
                58107,
                58137,
                58167,
                58196,
                58226,
                58255,
                58285,
                58314,
                58343,
                58373,
                58402,
                58432,
                58461,
                58491,
                58521,
                58551,
                58580,
                58610,
                58639,
                58669,
                58698,
                58727,
                58757,
                58786,
                58816,
                58845,
                58875,
                58905,
                58934,
                58964,
                58994,
                59023,
                59053,
                59082,
                59111,
                59141,
                59170,
                59200,
                59229,
                59259,
                59288,
                59318,
                59348,
                59377,
                59407,
                59436,
                59466,
                59495,
                59525,
                59554,
                59584,
                59613,
                59643,
                59672,
                59702,
                59731,
                59761,
                59791,
                59820,
                59850,
                59879,
                59909,
                59939,
                59968,
                59997,
                60027,
                60056,
                60086,
                60115,
                60145,
                60174,
                60204,
                60234,
                60264,
                60293,
                60323,
                60352,
                60381,
                60411,
                60440,
                60469,
                60499,
                60528,
                60558,
                60588,
                60618,
                60648,
                60677,
                60707,
                60736,
                60765,
                60795,
                60824,
                60853,
                60883,
                60912,
                60942,
                60972,
                61002,
                61031,
                61061,
                61090,
                61120,
                61149,
                61179,
                61208,
                61237,
                61267,
                61296,
                61326,
                61356,
                61385,
                61415,
                61445,
                61474,
                61504,
                61533,
                61563,
                61592,
                61621,
                61651,
                61680,
                61710,
                61739,
                61769,
                61799,
                61828,
                61858,
                61888,
                61917,
                61947,
                61976,
                62006,
                62035,
                62064,
                62094,
                62123,
                62153,
                62182,
                62212,
                62242,
                62271,
                62301,
                62331,
                62360,
                62390,
                62419,
                62448,
                62478,
                62507,
                62537,
                62566,
                62596,
                62625,
                62655,
                62685,
                62715,
                62744,
                62774,
                62803,
                62832,
                62862,
                62891,
                62921,
                62950,
                62980,
                63009,
                63039,
                63069,
                63099,
                63128,
                63157,
                63187,
                63216,
                63246,
                63275,
                63305,
                63334,
                63363,
                63393,
                63423,
                63453,
                63482,
                63512,
                63541,
                63571,
                63600,
                63630,
                63659,
                63689,
                63718,
                63747,
                63777,
                63807,
                63836,
                63866,
                63895,
                63925,
                63955,
                63984,
                64014,
                64043,
                64073,
                64102,
                64131,
                64161,
                64190,
                64220,
                64249,
                64279,
                64309,
                64339,
                64368,
                64398,
                64427,
                64457,
                64486,
                64515,
                64545,
                64574,
                64603,
                64633,
                64663,
                64692,
                64722,
                64752,
                64782,
                64811,
                64841,
                64870,
                64899,
                64929,
                64958,
                64987,
                65017,
                65047,
                65076,
                65106,
                65136,
                65166,
                65195,
                65225,
                65254,
                65283,
                65313,
                65342,
                65371,
                65401,
                65431,
                65460,
                65490,
                65520,
                65549,
                65579,
                65608,
                65638,
                65667,
                65697,
                65726,
                65755,
                65785,
                65815,
                65844,
                65874,
                65903,
                65933,
                65963,
                65992,
                66022,
                66051,
                66081,
                66110,
                66140,
                66169,
                66199,
                66228,
                66258,
                66287,
                66317,
                66346,
                66376,
                66405,
                66435,
                66465,
                66494,
                66524,
                66553,
                66583,
                66612,
                66641,
                66671,
                66700,
                66730,
                66760,
                66789,
                66819,
                66849,
                66878,
                66908,
                66937,
                66967,
                66996,
                67025,
                67055,
                67084,
                67114,
                67143,
                67173,
                67203,
                67233,
                67262,
                67292,
                67321,
                67351,
                67380,
                67409,
                67439,
                67468,
                67497,
                67527,
                67557,
                67587,
                67617,
                67646,
                67676,
                67705,
                67735,
                67764,
                67793,
                67823,
                67852,
                67882,
                67911,
                67941,
                67971,
                68e3,
                68030,
                68060,
                68089,
                68119,
                68148,
                68177,
                68207,
                68236,
                68266,
                68295,
                68325,
                68354,
                68384,
                68414,
                68443,
                68473,
                68502,
                68532,
                68561,
                68591,
                68620,
                68650,
                68679,
                68708,
                68738,
                68768,
                68797,
                68827,
                68857,
                68886,
                68916,
                68946,
                68975,
                69004,
                69034,
                69063,
                69092,
                69122,
                69152,
                69181,
                69211,
                69240,
                69270,
                69300,
                69330,
                69359,
                69388,
                69418,
                69447,
                69476,
                69506,
                69535,
                69565,
                69595,
                69624,
                69654,
                69684,
                69713,
                69743,
                69772,
                69802,
                69831,
                69861,
                69890,
                69919,
                69949,
                69978,
                70008,
                70038,
                70067,
                70097,
                70126,
                70156,
                70186,
                70215,
                70245,
                70274,
                70303,
                70333,
                70362,
                70392,
                70421,
                70451,
                70481,
                70510,
                70540,
                70570,
                70599,
                70629,
                70658,
                70687,
                70717,
                70746,
                70776,
                70805,
                70835,
                70864,
                70894,
                70924,
                70954,
                70983,
                71013,
                71042,
                71071,
                71101,
                71130,
                71159,
                71189,
                71218,
                71248,
                71278,
                71308,
                71337,
                71367,
                71397,
                71426,
                71455,
                71485,
                71514,
                71543,
                71573,
                71602,
                71632,
                71662,
                71691,
                71721,
                71751,
                71781,
                71810,
                71839,
                71869,
                71898,
                71927,
                71957,
                71986,
                72016,
                72046,
                72075,
                72105,
                72135,
                72164,
                72194,
                72223,
                72253,
                72282,
                72311,
                72341,
                72370,
                72400,
                72429,
                72459,
                72489,
                72518,
                72548,
                72577,
                72607,
                72637,
                72666,
                72695,
                72725,
                72754,
                72784,
                72813,
                72843,
                72872,
                72902,
                72931,
                72961,
                72991,
                73020,
                73050,
                73080,
                73109,
                73139,
                73168,
                73197,
                73227,
                73256,
                73286,
                73315,
                73345,
                73375,
                73404,
                73434,
                73464,
                73493,
                73523,
                73552,
                73581,
                73611,
                73640,
                73669,
                73699,
                73729,
                73758,
                73788,
                73818,
                73848,
                73877,
                73907,
                73936,
                73965,
                73995,
                74024,
                74053,
                74083,
                74113,
                74142,
                74172,
                74202,
                74231,
                74261,
                74291,
                74320,
                74349,
                74379,
                74408,
                74437,
                74467,
                74497,
                74526,
                74556,
                74586,
                74615,
                74645,
                74675,
                74704,
                74733,
                74763,
                74792,
                74822,
                74851,
                74881,
                74910,
                74940,
                74969,
                74999,
                75029,
                75058,
                75088,
                75117,
                75147,
                75176,
                75206,
                75235,
                75264,
                75294,
                75323,
                75353,
                75383,
                75412,
                75442,
                75472,
                75501,
                75531,
                75560,
                75590,
                75619,
                75648,
                75678,
                75707,
                75737,
                75766,
                75796,
                75826,
                75856,
                75885,
                75915,
                75944,
                75974,
                76003,
                76032,
                76062,
                76091,
                76121,
                76150,
                76180,
                76210,
                76239,
                76269,
                76299,
                76328,
                76358,
                76387,
                76416,
                76446,
                76475,
                76505,
                76534,
                76564,
                76593,
                76623,
                76653,
                76682,
                76712,
                76741,
                76771,
                76801,
                76830,
                76859,
                76889,
                76918,
                76948,
                76977,
                77007,
                77036,
                77066,
                77096,
                77125,
                77155,
                77185,
                77214,
                77243,
                77273,
                77302,
                77332,
                77361,
                77390,
                77420,
                77450,
                77479,
                77509,
                77539,
                77569,
                77598,
                77627,
                77657,
                77686,
                77715,
                77745,
                77774,
                77804,
                77833,
                77863,
                77893,
                77923,
                77952,
                77982,
                78011,
                78041,
                78070,
                78099,
                78129,
                78158,
                78188,
                78217,
                78247,
                78277,
                78307,
                78336,
                78366,
                78395,
                78425,
                78454,
                78483,
                78513,
                78542,
                78572,
                78601,
                78631,
                78661,
                78690,
                78720,
                78750,
                78779,
                78808,
                78838,
                78867,
                78897,
                78926,
                78956,
                78985,
                79015,
                79044,
                79074,
                79104,
                79133,
                79163,
                79192,
                79222,
                79251,
                79281,
                79310,
                79340,
                79369,
                79399,
                79428,
                79458,
                79487,
                79517,
                79546,
                79576,
                79606,
                79635,
                79665,
                79695,
                79724,
                79753,
                79783,
                79812,
                79841,
                79871,
                79900,
                79930,
                79960,
                79990
              ];
            }
          ),
          /***/
          24453: (
            /***/
            function(Y, K, e) {
              var b = e(27976);
              function P() {
                this.regionalOptions = [], this.regionalOptions[""] = {
                  invalidCalendar: "Calendar {0} not found",
                  invalidDate: "Invalid {0} date",
                  invalidMonth: "Invalid {0} month",
                  invalidYear: "Invalid {0} year",
                  differentCalendars: "Cannot mix {0} and {1} dates"
                }, this.local = this.regionalOptions[""], this.calendars = {}, this._localCals = {};
              }
              b(P.prototype, {
                /** Obtain a calendar implementation and localisation.
                    @memberof Calendars
                    @param [name='gregorian'] {string} The name of the calendar, e.g. 'gregorian', 'persian', 'islamic'.
                    @param [language=''] {string} The language code to use for localisation (default is English).
                    @return {Calendar} The calendar and localisation.
                    @throws Error if calendar not found. */
                instance: function(u, t) {
                  u = (u || "gregorian").toLowerCase(), t = t || "";
                  var r = this._localCals[u + "-" + t];
                  if (!r && this.calendars[u] && (r = new this.calendars[u](t), this._localCals[u + "-" + t] = r), !r)
                    throw (this.local.invalidCalendar || this.regionalOptions[""].invalidCalendar).replace(/\{0\}/, u);
                  return r;
                },
                /** Create a new date - for today if no other parameters given.
                    @memberof Calendars
                    @param year {CDate|number} The date to copy or the year for the date.
                    @param [month] {number} The month for the date.
                    @param [day] {number} The day for the date.
                    @param [calendar='gregorian'] {BaseCalendar|string} The underlying calendar or the name of the calendar.
                    @param [language=''] {string} The language to use for localisation (default English).
                    @return {CDate} The new date.
                    @throws Error if an invalid date. */
                newDate: function(u, t, r, i, a) {
                  return i = (u != null && u.year ? u.calendar() : typeof i == "string" ? this.instance(i, a) : i) || this.instance(), i.newDate(u, t, r);
                },
                /** A simple digit substitution function for localising numbers via the Calendar digits option.
                    @member Calendars
                    @param digits {string[]} The substitute digits, for 0 through 9.
                    @return {function} The substitution function. */
                substituteDigits: function(u) {
                  return function(t) {
                    return (t + "").replace(/[0-9]/g, function(r) {
                      return u[r];
                    });
                  };
                },
                /** Digit substitution function for localising Chinese style numbers via the Calendar digits option.
                    @member Calendars
                    @param digits {string[]} The substitute digits, for 0 through 9.
                    @param powers {string[]} The characters denoting powers of 10, i.e. 1, 10, 100, 1000.
                    @return {function} The substitution function. */
                substituteChineseDigits: function(u, t) {
                  return function(r) {
                    for (var i = "", a = 0; r > 0; ) {
                      var l = r % 10;
                      i = (l === 0 ? "" : u[l] + t[a]) + i, a++, r = Math.floor(r / 10);
                    }
                    return i.indexOf(u[1] + t[1]) === 0 && (i = i.substr(1)), i || u[0];
                  };
                }
              });
              function n(u, t, r, i) {
                if (this._calendar = u, this._year = t, this._month = r, this._day = i, this._calendar._validateLevel === 0 && !this._calendar.isValid(this._year, this._month, this._day))
                  throw (p.local.invalidDate || p.regionalOptions[""].invalidDate).replace(/\{0\}/, this._calendar.local.name);
              }
              function s(u, t) {
                return u = "" + u, "000000".substring(0, t - u.length) + u;
              }
              b(n.prototype, {
                /** Create a new date.
                    @memberof CDate
                    @param [year] {CDate|number} The date to copy or the year for the date (default this date).
                    @param [month] {number} The month for the date.
                    @param [day] {number} The day for the date.
                    @return {CDate} The new date.
                    @throws Error if an invalid date. */
                newDate: function(u, t, r) {
                  return this._calendar.newDate(u ?? this, t, r);
                },
                /** Set or retrieve the year for this date.
                    @memberof CDate
                    @param [year] {number} The year for the date.
                    @return {number|CDate} The date's year (if no parameter) or the updated date.
                    @throws Error if an invalid date. */
                year: function(u) {
                  return arguments.length === 0 ? this._year : this.set(u, "y");
                },
                /** Set or retrieve the month for this date.
                    @memberof CDate
                    @param [month] {number} The month for the date.
                    @return {number|CDate} The date's month (if no parameter) or the updated date.
                    @throws Error if an invalid date. */
                month: function(u) {
                  return arguments.length === 0 ? this._month : this.set(u, "m");
                },
                /** Set or retrieve the day for this date.
                    @memberof CDate
                    @param [day] {number} The day for the date.
                    @return {number|CData} The date's day (if no parameter) or the updated date.
                    @throws Error if an invalid date. */
                day: function(u) {
                  return arguments.length === 0 ? this._day : this.set(u, "d");
                },
                /** Set new values for this date.
                    @memberof CDate
                    @param year {number} The year for the date.
                    @param month {number} The month for the date.
                    @param day {number} The day for the date.
                    @return {CDate} The updated date.
                    @throws Error if an invalid date. */
                date: function(u, t, r) {
                  if (!this._calendar.isValid(u, t, r))
                    throw (p.local.invalidDate || p.regionalOptions[""].invalidDate).replace(/\{0\}/, this._calendar.local.name);
                  return this._year = u, this._month = t, this._day = r, this;
                },
                /** Determine whether this date is in a leap year.
                    @memberof CDate
                    @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not. */
                leapYear: function() {
                  return this._calendar.leapYear(this);
                },
                /** Retrieve the epoch designator for this date, e.g. BCE or CE.
                    @memberof CDate
                    @return {string} The current epoch. */
                epoch: function() {
                  return this._calendar.epoch(this);
                },
                /** Format the year, if not a simple sequential number.
                    @memberof CDate
                    @return {string} The formatted year. */
                formatYear: function() {
                  return this._calendar.formatYear(this);
                },
                /** Retrieve the month of the year for this date,
                    i.e. the month's position within a numbered year.
                    @memberof CDate
                    @return {number} The month of the year: <code>minMonth</code> to months per year. */
                monthOfYear: function() {
                  return this._calendar.monthOfYear(this);
                },
                /** Retrieve the week of the year for this date.
                    @memberof CDate
                    @return {number} The week of the year: 1 to weeks per year. */
                weekOfYear: function() {
                  return this._calendar.weekOfYear(this);
                },
                /** Retrieve the number of days in the year for this date.
                    @memberof CDate
                    @return {number} The number of days in this year. */
                daysInYear: function() {
                  return this._calendar.daysInYear(this);
                },
                /** Retrieve the day of the year for this date.
                    @memberof CDate
                    @return {number} The day of the year: 1 to days per year. */
                dayOfYear: function() {
                  return this._calendar.dayOfYear(this);
                },
                /** Retrieve the number of days in the month for this date.
                    @memberof CDate
                    @return {number} The number of days. */
                daysInMonth: function() {
                  return this._calendar.daysInMonth(this);
                },
                /** Retrieve the day of the week for this date.
                    @memberof CDate
                    @return {number} The day of the week: 0 to number of days - 1. */
                dayOfWeek: function() {
                  return this._calendar.dayOfWeek(this);
                },
                /** Determine whether this date is a week day.
                    @memberof CDate
                    @return {boolean} <code>true</code> if a week day, <code>false</code> if not. */
                weekDay: function() {
                  return this._calendar.weekDay(this);
                },
                /** Retrieve additional information about this date.
                    @memberof CDate
                    @return {object} Additional information - contents depends on calendar. */
                extraInfo: function() {
                  return this._calendar.extraInfo(this);
                },
                /** Add period(s) to a date.
                    @memberof CDate
                    @param offset {number} The number of periods to adjust by.
                    @param period {string} One of 'y' for year, 'm' for month, 'w' for week, 'd' for day.
                    @return {CDate} The updated date. */
                add: function(u, t) {
                  return this._calendar.add(this, u, t);
                },
                /** Set a portion of the date.
                    @memberof CDate
                    @param value {number} The new value for the period.
                    @param period {string} One of 'y' for year, 'm' for month, 'd' for day.
                    @return {CDate} The updated date.
                    @throws Error if not a valid date. */
                set: function(u, t) {
                  return this._calendar.set(this, u, t);
                },
                /** Compare this date to another date.
                    @memberof CDate
                    @param date {CDate} The other date.
                    @return {number} -1 if this date is before the other date,
                            0 if they are equal, or +1 if this date is after the other date. */
                compareTo: function(u) {
                  if (this._calendar.name !== u._calendar.name)
                    throw (p.local.differentCalendars || p.regionalOptions[""].differentCalendars).replace(/\{0\}/, this._calendar.local.name).replace(/\{1\}/, u._calendar.local.name);
                  var t = this._year !== u._year ? this._year - u._year : this._month !== u._month ? this.monthOfYear() - u.monthOfYear() : this._day - u._day;
                  return t === 0 ? 0 : t < 0 ? -1 : 1;
                },
                /** Retrieve the calendar backing this date.
                    @memberof CDate
                    @return {BaseCalendar} The calendar implementation. */
                calendar: function() {
                  return this._calendar;
                },
                /** Retrieve the Julian date equivalent for this date,
                    i.e. days since January 1, 4713 BCE Greenwich noon.
                    @memberof CDate
                    @return {number} The equivalent Julian date. */
                toJD: function() {
                  return this._calendar.toJD(this);
                },
                /** Create a new date from a Julian date.
                    @memberof CDate
                    @param jd {number} The Julian date to convert.
                    @return {CDate} The equivalent date. */
                fromJD: function(u) {
                  return this._calendar.fromJD(u);
                },
                /** Convert this date to a standard (Gregorian) JavaScript Date.
                    @memberof CDate
                    @return {Date} The equivalent JavaScript date. */
                toJSDate: function() {
                  return this._calendar.toJSDate(this);
                },
                /** Create a new date from a standard (Gregorian) JavaScript Date.
                    @memberof CDate
                    @param jsd {Date} The JavaScript date to convert.
                    @return {CDate} The equivalent date. */
                fromJSDate: function(u) {
                  return this._calendar.fromJSDate(u);
                },
                /** Convert to a string for display.
                    @memberof CDate
                    @return {string} This date as a string. */
                toString: function() {
                  return (this.year() < 0 ? "-" : "") + s(Math.abs(this.year()), 4) + "-" + s(this.month(), 2) + "-" + s(this.day(), 2);
                }
              });
              function T() {
                this.shortYearCutoff = "+10";
              }
              b(T.prototype, {
                _validateLevel: 0,
                // "Stack" to turn validation on/off
                /** Create a new date within this calendar - today if no parameters given.
                    @memberof BaseCalendar
                    @param year {CDate|number} The date to duplicate or the year for the date.
                    @param [month] {number} The month for the date.
                    @param [day] {number} The day for the date.
                    @return {CDate} The new date.
                    @throws Error if not a valid date or a different calendar used. */
                newDate: function(u, t, r) {
                  return u == null ? this.today() : (u.year && (this._validate(
                    u,
                    t,
                    r,
                    p.local.invalidDate || p.regionalOptions[""].invalidDate
                  ), r = u.day(), t = u.month(), u = u.year()), new n(this, u, t, r));
                },
                /** Create a new date for today.
                    @memberof BaseCalendar
                    @return {CDate} Today's date. */
                today: function() {
                  return this.fromJSDate(/* @__PURE__ */ new Date());
                },
                /** Retrieve the epoch designator for this date.
                    @memberof BaseCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {string} The current epoch.
                    @throws Error if an invalid year or a different calendar used. */
                epoch: function(u) {
                  var t = this._validate(
                    u,
                    this.minMonth,
                    this.minDay,
                    p.local.invalidYear || p.regionalOptions[""].invalidYear
                  );
                  return t.year() < 0 ? this.local.epochs[0] : this.local.epochs[1];
                },
                /** Format the year, if not a simple sequential number
                    @memberof BaseCalendar
                    @param year {CDate|number} The date to format or the year to format.
                    @return {string} The formatted year.
                    @throws Error if an invalid year or a different calendar used. */
                formatYear: function(u) {
                  var t = this._validate(
                    u,
                    this.minMonth,
                    this.minDay,
                    p.local.invalidYear || p.regionalOptions[""].invalidYear
                  );
                  return (t.year() < 0 ? "-" : "") + s(Math.abs(t.year()), 4);
                },
                /** Retrieve the number of months in a year.
                    @memberof BaseCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {number} The number of months.
                    @throws Error if an invalid year or a different calendar used. */
                monthsInYear: function(u) {
                  return this._validate(
                    u,
                    this.minMonth,
                    this.minDay,
                    p.local.invalidYear || p.regionalOptions[""].invalidYear
                  ), 12;
                },
                /** Calculate the month's ordinal position within the year -
                    for those calendars that don't start at month 1!
                    @memberof BaseCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param month {number} The month to examine.
                    @return {number} The ordinal position, starting from <code>minMonth</code>.
                    @throws Error if an invalid year/month or a different calendar used. */
                monthOfYear: function(u, t) {
                  var r = this._validate(
                    u,
                    t,
                    this.minDay,
                    p.local.invalidMonth || p.regionalOptions[""].invalidMonth
                  );
                  return (r.month() + this.monthsInYear(r) - this.firstMonth) % this.monthsInYear(r) + this.minMonth;
                },
                /** Calculate actual month from ordinal position, starting from minMonth.
                    @memberof BaseCalendar
                    @param year {number} The year to examine.
                    @param ord {number} The month's ordinal position.
                    @return {number} The month's number.
                    @throws Error if an invalid year/month. */
                fromMonthOfYear: function(u, t) {
                  var r = (t + this.firstMonth - 2 * this.minMonth) % this.monthsInYear(u) + this.minMonth;
                  return this._validate(
                    u,
                    r,
                    this.minDay,
                    p.local.invalidMonth || p.regionalOptions[""].invalidMonth
                  ), r;
                },
                /** Retrieve the number of days in a year.
                    @memberof BaseCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {number} The number of days.
                    @throws Error if an invalid year or a different calendar used. */
                daysInYear: function(u) {
                  var t = this._validate(
                    u,
                    this.minMonth,
                    this.minDay,
                    p.local.invalidYear || p.regionalOptions[""].invalidYear
                  );
                  return this.leapYear(t) ? 366 : 365;
                },
                /** Retrieve the day of the year for a date.
                    @memberof BaseCalendar
                    @param year {CDate|number} The date to convert or the year to convert.
                    @param [month] {number} The month to convert.
                    @param [day] {number} The day to convert.
                    @return {number} The day of the year.
                    @throws Error if an invalid date or a different calendar used. */
                dayOfYear: function(u, t, r) {
                  var i = this._validate(
                    u,
                    t,
                    r,
                    p.local.invalidDate || p.regionalOptions[""].invalidDate
                  );
                  return i.toJD() - this.newDate(
                    i.year(),
                    this.fromMonthOfYear(i.year(), this.minMonth),
                    this.minDay
                  ).toJD() + 1;
                },
                /** Retrieve the number of days in a week.
                    @memberof BaseCalendar
                    @return {number} The number of days. */
                daysInWeek: function() {
                  return 7;
                },
                /** Retrieve the day of the week for a date.
                    @memberof BaseCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {number} The day of the week: 0 to number of days - 1.
                    @throws Error if an invalid date or a different calendar used. */
                dayOfWeek: function(u, t, r) {
                  var i = this._validate(
                    u,
                    t,
                    r,
                    p.local.invalidDate || p.regionalOptions[""].invalidDate
                  );
                  return (Math.floor(this.toJD(i)) + 2) % this.daysInWeek();
                },
                /** Retrieve additional information about a date.
                    @memberof BaseCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {object} Additional information - contents depends on calendar.
                    @throws Error if an invalid date or a different calendar used. */
                extraInfo: function(u, t, r) {
                  return this._validate(
                    u,
                    t,
                    r,
                    p.local.invalidDate || p.regionalOptions[""].invalidDate
                  ), {};
                },
                /** Add period(s) to a date.
                    Cater for no year zero.
                    @memberof BaseCalendar
                    @param date {CDate} The starting date.
                    @param offset {number} The number of periods to adjust by.
                    @param period {string} One of 'y' for year, 'm' for month, 'w' for week, 'd' for day.
                    @return {CDate} The updated date.
                    @throws Error if a different calendar used. */
                add: function(u, t, r) {
                  return this._validate(
                    u,
                    this.minMonth,
                    this.minDay,
                    p.local.invalidDate || p.regionalOptions[""].invalidDate
                  ), this._correctAdd(u, this._add(u, t, r), t, r);
                },
                /** Add period(s) to a date.
                    @memberof BaseCalendar
                    @private
                    @param date {CDate} The starting date.
                    @param offset {number} The number of periods to adjust by.
                    @param period {string} One of 'y' for year, 'm' for month, 'w' for week, 'd' for day.
                    @return {CDate} The updated date. */
                _add: function(u, t, r) {
                  if (this._validateLevel++, r === "d" || r === "w") {
                    var i = u.toJD() + t * (r === "w" ? this.daysInWeek() : 1), a = u.calendar().fromJD(i);
                    return this._validateLevel--, [a.year(), a.month(), a.day()];
                  }
                  try {
                    var l = u.year() + (r === "y" ? t : 0), o = u.monthOfYear() + (r === "m" ? t : 0), a = u.day(), y = function(c) {
                      for (; o < c.minMonth; )
                        l--, o += c.monthsInYear(l);
                      for (var v = c.monthsInYear(l); o > v - 1 + c.minMonth; )
                        l++, o -= v, v = c.monthsInYear(l);
                    };
                    r === "y" ? (u.month() !== this.fromMonthOfYear(l, o) && (o = this.newDate(l, u.month(), this.minDay).monthOfYear()), o = Math.min(o, this.monthsInYear(l)), a = Math.min(a, this.daysInMonth(l, this.fromMonthOfYear(l, o)))) : r === "m" && (y(this), a = Math.min(a, this.daysInMonth(l, this.fromMonthOfYear(l, o))));
                    var g = [l, this.fromMonthOfYear(l, o), a];
                    return this._validateLevel--, g;
                  } catch (x) {
                    throw this._validateLevel--, x;
                  }
                },
                /** Correct a candidate date after adding period(s) to a date.
                    Handle no year zero if necessary.
                    @memberof BaseCalendar
                    @private
                    @param date {CDate} The starting date.
                    @param ymd {number[]} The added date.
                    @param offset {number} The number of periods to adjust by.
                    @param period {string} One of 'y' for year, 'm' for month, 'w' for week, 'd' for day.
                    @return {CDate} The updated date. */
                _correctAdd: function(u, t, r, i) {
                  if (!this.hasYearZero && (i === "y" || i === "m") && (t[0] === 0 || // In year zero
                  u.year() > 0 != t[0] > 0)) {
                    var a = {
                      y: [1, 1, "y"],
                      m: [1, this.monthsInYear(-1), "m"],
                      w: [this.daysInWeek(), this.daysInYear(-1), "d"],
                      d: [1, this.daysInYear(-1), "d"]
                    }[i], l = r < 0 ? -1 : 1;
                    t = this._add(u, r * a[0] + l * a[1], a[2]);
                  }
                  return u.date(t[0], t[1], t[2]);
                },
                /** Set a portion of the date.
                    @memberof BaseCalendar
                    @param date {CDate} The starting date.
                    @param value {number} The new value for the period.
                    @param period {string} One of 'y' for year, 'm' for month, 'd' for day.
                    @return {CDate} The updated date.
                    @throws Error if an invalid date or a different calendar used. */
                set: function(u, t, r) {
                  this._validate(
                    u,
                    this.minMonth,
                    this.minDay,
                    p.local.invalidDate || p.regionalOptions[""].invalidDate
                  );
                  var i = r === "y" ? t : u.year(), a = r === "m" ? t : u.month(), l = r === "d" ? t : u.day();
                  return (r === "y" || r === "m") && (l = Math.min(l, this.daysInMonth(i, a))), u.date(i, a, l);
                },
                /** Determine whether a date is valid for this calendar.
                    @memberof BaseCalendar
                    @param year {number} The year to examine.
                    @param month {number} The month to examine.
                    @param day {number} The day to examine.
                    @return {boolean} <code>true</code> if a valid date, <code>false</code> if not. */
                isValid: function(u, t, r) {
                  this._validateLevel++;
                  var i = this.hasYearZero || u !== 0;
                  if (i) {
                    var a = this.newDate(u, t, this.minDay);
                    i = t >= this.minMonth && t - this.minMonth < this.monthsInYear(a) && r >= this.minDay && r - this.minDay < this.daysInMonth(a);
                  }
                  return this._validateLevel--, i;
                },
                /** Convert the date to a standard (Gregorian) JavaScript Date.
                    @memberof BaseCalendar
                    @param year {CDate|number} The date to convert or the year to convert.
                    @param [month] {number} The month to convert.
                    @param [day] {number} The day to convert.
                    @return {Date} The equivalent JavaScript date.
                    @throws Error if an invalid date or a different calendar used. */
                toJSDate: function(u, t, r) {
                  var i = this._validate(
                    u,
                    t,
                    r,
                    p.local.invalidDate || p.regionalOptions[""].invalidDate
                  );
                  return p.instance().fromJD(this.toJD(i)).toJSDate();
                },
                /** Convert the date from a standard (Gregorian) JavaScript Date.
                    @memberof BaseCalendar
                    @param jsd {Date} The JavaScript date.
                    @return {CDate} The equivalent calendar date. */
                fromJSDate: function(u) {
                  return this.fromJD(p.instance().fromJSDate(u).toJD());
                },
                /** Check that a candidate date is from the same calendar and is valid.
                    @memberof BaseCalendar
                    @private
                    @param year {CDate|number} The date to validate or the year to validate.
                    @param [month] {number} The month to validate.
                    @param [day] {number} The day to validate.
                    @param error {string} Rrror message if invalid.
                    @throws Error if different calendars used or invalid date. */
                _validate: function(u, t, r, i) {
                  if (u.year) {
                    if (this._validateLevel === 0 && this.name !== u.calendar().name)
                      throw (p.local.differentCalendars || p.regionalOptions[""].differentCalendars).replace(/\{0\}/, this.local.name).replace(/\{1\}/, u.calendar().local.name);
                    return u;
                  }
                  try {
                    if (this._validateLevel++, this._validateLevel === 1 && !this.isValid(u, t, r))
                      throw i.replace(/\{0\}/, this.local.name);
                    var a = this.newDate(u, t, r);
                    return this._validateLevel--, a;
                  } catch (l) {
                    throw this._validateLevel--, l;
                  }
                }
              });
              function A(u) {
                this.local = this.regionalOptions[u] || this.regionalOptions[""];
              }
              A.prototype = new T(), b(A.prototype, {
                /** The calendar name.
                    @memberof GregorianCalendar */
                name: "Gregorian",
                /** Julian date of start of Gregorian epoch: 1 January 0001 CE.
                   @memberof GregorianCalendar */
                jdEpoch: 17214255e-1,
                /** Days per month in a common year.
                   @memberof GregorianCalendar */
                daysPerMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
                /** <code>true</code> if has a year zero, <code>false</code> if not.
                   @memberof GregorianCalendar */
                hasYearZero: !1,
                /** The minimum month number.
                    @memberof GregorianCalendar */
                minMonth: 1,
                /** The first month in the year.
                    @memberof GregorianCalendar */
                firstMonth: 1,
                /** The minimum day number.
                   @memberof GregorianCalendar */
                minDay: 1,
                /** Localisations for the plugin.
                    Entries are objects indexed by the language code ('' being the default US/English).
                    Each object has the following attributes.
                    @memberof GregorianCalendar
                    @property name {string} The calendar name.
                    @property epochs {string[]} The epoch names.
                    @property monthNames {string[]} The long names of the months of the year.
                    @property monthNamesShort {string[]} The short names of the months of the year.
                    @property dayNames {string[]} The long names of the days of the week.
                    @property dayNamesShort {string[]} The short names of the days of the week.
                    @property dayNamesMin {string[]} The minimal names of the days of the week.
                    @property dateFormat {string} The date format for this calendar.
                            See the options on <a href="BaseCalendar.html#formatDate"><code>formatDate</code></a> for details.
                    @property firstDay {number} The number of the first day of the week, starting at 0.
                    @property isRTL {number} <code>true</code> if this localisation reads right-to-left. */
                regionalOptions: {
                  // Localisations
                  "": {
                    name: "Gregorian",
                    epochs: ["BCE", "CE"],
                    monthNames: [
                      "January",
                      "February",
                      "March",
                      "April",
                      "May",
                      "June",
                      "July",
                      "August",
                      "September",
                      "October",
                      "November",
                      "December"
                    ],
                    monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
                    dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
                    dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
                    dayNamesMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
                    digits: null,
                    dateFormat: "mm/dd/yyyy",
                    firstDay: 0,
                    isRTL: !1
                  }
                },
                /** Determine whether this date is in a leap year.
                    @memberof GregorianCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @return {boolean} <code>true</code> if this is a leap year, <code>false</code> if not.
                    @throws Error if an invalid year or a different calendar used. */
                leapYear: function(r) {
                  var t = this._validate(
                    r,
                    this.minMonth,
                    this.minDay,
                    p.local.invalidYear || p.regionalOptions[""].invalidYear
                  ), r = t.year() + (t.year() < 0 ? 1 : 0);
                  return r % 4 === 0 && (r % 100 !== 0 || r % 400 === 0);
                },
                /** Determine the week of the year for a date - ISO 8601.
                    @memberof GregorianCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {number} The week of the year, starting from 1.
                    @throws Error if an invalid date or a different calendar used. */
                weekOfYear: function(u, t, r) {
                  var i = this.newDate(u, t, r);
                  return i.add(4 - (i.dayOfWeek() || 7), "d"), Math.floor((i.dayOfYear() - 1) / 7) + 1;
                },
                /** Retrieve the number of days in a month.
                    @memberof GregorianCalendar
                    @param year {CDate|number} The date to examine or the year of the month.
                    @param [month] {number} The month.
                    @return {number} The number of days in this month.
                    @throws Error if an invalid month/year or a different calendar used. */
                daysInMonth: function(u, t) {
                  var r = this._validate(
                    u,
                    t,
                    this.minDay,
                    p.local.invalidMonth || p.regionalOptions[""].invalidMonth
                  );
                  return this.daysPerMonth[r.month() - 1] + (r.month() === 2 && this.leapYear(r.year()) ? 1 : 0);
                },
                /** Determine whether this date is a week day.
                    @memberof GregorianCalendar
                    @param year {CDate|number} The date to examine or the year to examine.
                    @param [month] {number} The month to examine.
                    @param [day] {number} The day to examine.
                    @return {boolean} <code>true</code> if a week day, <code>false</code> if not.
                    @throws Error if an invalid date or a different calendar used. */
                weekDay: function(u, t, r) {
                  return (this.dayOfWeek(u, t, r) || 7) < 6;
                },
                /** Retrieve the Julian date equivalent for this date,
                    i.e. days since January 1, 4713 BCE Greenwich noon.
                    @memberof GregorianCalendar
                    @param year {CDate|number} The date to convert or the year to convert.
                    @param [month] {number} The month to convert.
                    @param [day] {number} The day to convert.
                    @return {number} The equivalent Julian date.
                    @throws Error if an invalid date or a different calendar used. */
                toJD: function(u, t, r) {
                  var i = this._validate(
                    u,
                    t,
                    r,
                    p.local.invalidDate || p.regionalOptions[""].invalidDate
                  );
                  u = i.year(), t = i.month(), r = i.day(), u < 0 && u++, t < 3 && (t += 12, u--);
                  var a = Math.floor(u / 100), l = 2 - a + Math.floor(a / 4);
                  return Math.floor(365.25 * (u + 4716)) + Math.floor(30.6001 * (t + 1)) + r + l - 1524.5;
                },
                /** Create a new date from a Julian date.
                    @memberof GregorianCalendar
                    @param jd {number} The Julian date to convert.
                    @return {CDate} The equivalent date. */
                fromJD: function(u) {
                  var t = Math.floor(u + 0.5), r = Math.floor((t - 186721625e-2) / 36524.25);
                  r = t + 1 + r - Math.floor(r / 4);
                  var i = r + 1524, a = Math.floor((i - 122.1) / 365.25), l = Math.floor(365.25 * a), o = Math.floor((i - l) / 30.6001), y = i - l - Math.floor(o * 30.6001), g = o - (o > 13.5 ? 13 : 1), x = a - (g > 2.5 ? 4716 : 4715);
                  return x <= 0 && x--, this.newDate(x, g, y);
                },
                /** Convert this date to a standard (Gregorian) JavaScript Date.
                    @memberof GregorianCalendar
                    @param year {CDate|number} The date to convert or the year to convert.
                    @param [month] {number} The month to convert.
                    @param [day] {number} The day to convert.
                    @return {Date} The equivalent JavaScript date.
                    @throws Error if an invalid date or a different calendar used. */
                toJSDate: function(u, t, r) {
                  var i = this._validate(
                    u,
                    t,
                    r,
                    p.local.invalidDate || p.regionalOptions[""].invalidDate
                  ), a = new Date(i.year(), i.month() - 1, i.day());
                  return a.setHours(0), a.setMinutes(0), a.setSeconds(0), a.setMilliseconds(0), a.setHours(a.getHours() > 12 ? a.getHours() + 2 : 0), a;
                },
                /** Create a new date from a standard (Gregorian) JavaScript Date.
                    @memberof GregorianCalendar
                    @param jsd {Date} The JavaScript date to convert.
                    @return {CDate} The equivalent date. */
                fromJSDate: function(u) {
                  return this.newDate(u.getFullYear(), u.getMonth() + 1, u.getDate());
                }
              });
              var p = Y.exports = new P();
              p.cdate = n, p.baseCalendar = T, p.calendars.gregorian = A;
            }
          ),
          /***/
          23428: (
            /***/
            function(Y, K, e) {
              var b = e(27976), P = e(24453);
              b(P.regionalOptions[""], {
                invalidArguments: "Invalid arguments",
                invalidFormat: "Cannot format a date from another calendar",
                missingNumberAt: "Missing number at position {0}",
                unknownNameAt: "Unknown name at position {0}",
                unexpectedLiteralAt: "Unexpected literal at position {0}",
                unexpectedText: "Additional text found at end"
              }), P.local = P.regionalOptions[""], b(P.cdate.prototype, {
                /** Format this date.
                    Found in the <code>jquery.calendars.plus.js</code> module.
                    @memberof CDate
                    @param [format] {string} The date format to use (see <a href="BaseCalendar.html#formatDate"><code>formatDate</code></a>).
                    @param [settings] {object} Options for the <code>formatDate</code> function.
                    @return {string} The formatted date. */
                formatDate: function(n, s) {
                  return typeof n != "string" && (s = n, n = ""), this._calendar.formatDate(n || "", this, s);
                }
              }), b(P.baseCalendar.prototype, {
                UNIX_EPOCH: P.instance().newDate(1970, 1, 1).toJD(),
                SECS_PER_DAY: 86400,
                TICKS_EPOCH: P.instance().jdEpoch,
                // 1 January 0001 CE
                TICKS_PER_DAY: 864e9,
                /** Date form for ATOM (RFC 3339/ISO 8601).
                    Found in the <code>jquery.calendars.plus.js</code> module.
                    @memberof BaseCalendar */
                ATOM: "yyyy-mm-dd",
                /** Date form for cookies.
                    Found in the <code>jquery.calendars.plus.js</code> module.
                    @memberof BaseCalendar */
                COOKIE: "D, dd M yyyy",
                /** Date form for full date.
                    Found in the <code>jquery.calendars.plus.js</code> module.
                    @memberof BaseCalendar */
                FULL: "DD, MM d, yyyy",
                /** Date form for ISO 8601.
                    Found in the <code>jquery.calendars.plus.js</code> module.
                    @memberof BaseCalendar */
                ISO_8601: "yyyy-mm-dd",
                /** Date form for Julian date.
                    Found in the <code>jquery.calendars.plus.js</code> module.
                    @memberof BaseCalendar */
                JULIAN: "J",
                /** Date form for RFC 822.
                    Found in the <code>jquery.calendars.plus.js</code> module.
                    @memberof BaseCalendar */
                RFC_822: "D, d M yy",
                /** Date form for RFC 850.
                    Found in the <code>jquery.calendars.plus.js</code> module.
                    @memberof BaseCalendar */
                RFC_850: "DD, dd-M-yy",
                /** Date form for RFC 1036.
                    Found in the <code>jquery.calendars.plus.js</code> module.
                    @memberof BaseCalendar */
                RFC_1036: "D, d M yy",
                /** Date form for RFC 1123.
                    Found in the <code>jquery.calendars.plus.js</code> module.
                    @memberof BaseCalendar */
                RFC_1123: "D, d M yyyy",
                /** Date form for RFC 2822.
                    Found in the <code>jquery.calendars.plus.js</code> module.
                    @memberof BaseCalendar */
                RFC_2822: "D, d M yyyy",
                /** Date form for RSS (RFC 822).
                    Found in the <code>jquery.calendars.plus.js</code> module.
                    @memberof BaseCalendar */
                RSS: "D, d M yy",
                /** Date form for Windows ticks.
                    Found in the <code>jquery.calendars.plus.js</code> module.
                    @memberof BaseCalendar */
                TICKS: "!",
                /** Date form for Unix timestamp.
                    Found in the <code>jquery.calendars.plus.js</code> module.
                    @memberof BaseCalendar */
                TIMESTAMP: "@",
                /** Date form for W3c (ISO 8601).
                    Found in the <code>jquery.calendars.plus.js</code> module.
                    @memberof BaseCalendar */
                W3C: "yyyy-mm-dd",
                /** Format a date object into a string value.
                    The format can be combinations of the following:
                    <ul>
                    <li>d  - day of month (no leading zero)</li>
                    <li>dd - day of month (two digit)</li>
                    <li>o  - day of year (no leading zeros)</li>
                    <li>oo - day of year (three digit)</li>
                    <li>D  - day name short</li>
                    <li>DD - day name long</li>
                    <li>w  - week of year (no leading zero)</li>
                    <li>ww - week of year (two digit)</li>
                    <li>m  - month of year (no leading zero)</li>
                    <li>mm - month of year (two digit)</li>
                    <li>M  - month name short</li>
                    <li>MM - month name long</li>
                    <li>yy - year (two digit)</li>
                    <li>yyyy - year (four digit)</li>
                    <li>YYYY - formatted year</li>
                    <li>J  - Julian date (days since January 1, 4713 BCE Greenwich noon)</li>
                    <li>@  - Unix timestamp (s since 01/01/1970)</li>
                    <li>!  - Windows ticks (100ns since 01/01/0001)</li>
                    <li>'...' - literal text</li>
                    <li>'' - single quote</li>
                    </ul>
                    Found in the <code>jquery.calendars.plus.js</code> module.
                    @memberof BaseCalendar
                    @param [format] {string} The desired format of the date (defaults to calendar format).
                    @param date {CDate} The date value to format.
                    @param [settings] {object} Addition options, whose attributes include:
                    @property [dayNamesShort] {string[]} Abbreviated names of the days from Sunday.
                    @property [dayNames] {string[]} Names of the days from Sunday.
                    @property [monthNamesShort] {string[]} Abbreviated names of the months.
                    @property [monthNames] {string[]} Names of the months.
                    @property [calculateWeek] {CalendarsPickerCalculateWeek} Function that determines week of the year.
                    @property [localNumbers=false] {boolean} <code>true</code> to localise numbers (if available),
                              <code>false</code> to use normal Arabic numerals.
                    @return {string} The date in the above format.
                    @throws Errors if the date is from a different calendar. */
                formatDate: function(n, s, T) {
                  if (typeof n != "string" && (T = s, s = n, n = ""), !s)
                    return "";
                  if (s.calendar() !== this)
                    throw P.local.invalidFormat || P.regionalOptions[""].invalidFormat;
                  n = n || this.local.dateFormat, T = T || {};
                  var A = T.dayNamesShort || this.local.dayNamesShort, p = T.dayNames || this.local.dayNames, u = T.monthNumbers || this.local.monthNumbers, t = T.monthNamesShort || this.local.monthNamesShort, r = T.monthNames || this.local.monthNames;
                  T.calculateWeek || this.local.calculateWeek;
                  for (var i = function(S, M) {
                    for (var C = 1; _ + C < n.length && n.charAt(_ + C) === S; )
                      C++;
                    return _ += C - 1, Math.floor(C / (M || 1)) > 1;
                  }, a = function(S, M, C, m) {
                    var L = "" + M;
                    if (i(S, m))
                      for (; L.length < C; )
                        L = "0" + L;
                    return L;
                  }, l = function(S, M, C, m) {
                    return i(S) ? m[M] : C[M];
                  }, o = this, y = function(S) {
                    return typeof u == "function" ? u.call(o, S, i("m")) : c(a("m", S.month(), 2));
                  }, g = function(S, M) {
                    return M ? typeof r == "function" ? r.call(o, S) : r[S.month() - o.minMonth] : typeof t == "function" ? t.call(o, S) : t[S.month() - o.minMonth];
                  }, x = this.local.digits, c = function(S) {
                    return T.localNumbers && x ? x(S) : S;
                  }, v = "", f = !1, _ = 0; _ < n.length; _++)
                    if (f)
                      n.charAt(_) === "'" && !i("'") ? f = !1 : v += n.charAt(_);
                    else
                      switch (n.charAt(_)) {
                        case "d":
                          v += c(a("d", s.day(), 2));
                          break;
                        case "D":
                          v += l(
                            "D",
                            s.dayOfWeek(),
                            A,
                            p
                          );
                          break;
                        case "o":
                          v += a("o", s.dayOfYear(), 3);
                          break;
                        case "w":
                          v += a("w", s.weekOfYear(), 2);
                          break;
                        case "m":
                          v += y(s);
                          break;
                        case "M":
                          v += g(s, i("M"));
                          break;
                        case "y":
                          v += i("y", 2) ? s.year() : (s.year() % 100 < 10 ? "0" : "") + s.year() % 100;
                          break;
                        case "Y":
                          i("Y", 2), v += s.formatYear();
                          break;
                        case "J":
                          v += s.toJD();
                          break;
                        case "@":
                          v += (s.toJD() - this.UNIX_EPOCH) * this.SECS_PER_DAY;
                          break;
                        case "!":
                          v += (s.toJD() - this.TICKS_EPOCH) * this.TICKS_PER_DAY;
                          break;
                        case "'":
                          i("'") ? v += "'" : f = !0;
                          break;
                        default:
                          v += n.charAt(_);
                      }
                  return v;
                },
                /** Parse a string value into a date object.
                    See <a href="#formatDate"><code>formatDate</code></a> for the possible formats, plus:
                    <ul>
                    <li>* - ignore rest of string</li>
                    </ul>
                    Found in the <code>jquery.calendars.plus.js</code> module.
                    @memberof BaseCalendar
                    @param format {string} The expected format of the date ('' for default calendar format).
                    @param value {string} The date in the above format.
                    @param [settings] {object} Additional options whose attributes include:
                    @property [shortYearCutoff] {number} The cutoff year for determining the century.
                    @property [dayNamesShort] {string[]} Abbreviated names of the days from Sunday.
                    @property [dayNames] {string[]} Names of the days from Sunday.
                    @property [monthNamesShort] {string[]} Abbreviated names of the months.
                    @property [monthNames] {string[]} Names of the months.
                    @return {CDate} The extracted date value or <code>null</code> if value is blank.
                    @throws Errors if the format and/or value are missing,
                            if the value doesn't match the format, or if the date is invalid. */
                parseDate: function(n, s, T) {
                  if (s == null)
                    throw P.local.invalidArguments || P.regionalOptions[""].invalidArguments;
                  if (s = typeof s == "object" ? s.toString() : s + "", s === "")
                    return null;
                  n = n || this.local.dateFormat, T = T || {};
                  var A = T.shortYearCutoff || this.shortYearCutoff;
                  A = typeof A != "string" ? A : this.today().year() % 100 + parseInt(A, 10);
                  for (var p = T.dayNamesShort || this.local.dayNamesShort, u = T.dayNames || this.local.dayNames, t = T.parseMonth || this.local.parseMonth, r = T.monthNumbers || this.local.monthNumbers, i = T.monthNamesShort || this.local.monthNamesShort, a = T.monthNames || this.local.monthNames, l = -1, o = -1, y = -1, g = -1, x = -1, c = !1, v = !1, f = function(z, O) {
                    for (var B = 1; h + B < n.length && n.charAt(h + B) === z; )
                      B++;
                    return h += B - 1, Math.floor(B / (O || 1)) > 1;
                  }, _ = function(z, O) {
                    var B = f(z, O), V = [2, 3, B ? 4 : 2, B ? 4 : 2, 10, 11, 20]["oyYJ@!".indexOf(z) + 1], U = new RegExp("^-?\\d{1," + V + "}"), H = s.substring(d).match(U);
                    if (!H)
                      throw (P.local.missingNumberAt || P.regionalOptions[""].missingNumberAt).replace(/\{0\}/, d);
                    return d += H[0].length, parseInt(H[0], 10);
                  }, S = this, M = function() {
                    if (typeof r == "function") {
                      f("m");
                      var z = r.call(S, s.substring(d));
                      return d += z.length, z;
                    }
                    return _("m");
                  }, C = function(z, O, B, V) {
                    for (var U = f(z, V) ? B : O, H = 0; H < U.length; H++)
                      if (s.substr(d, U[H].length).toLowerCase() === U[H].toLowerCase())
                        return d += U[H].length, H + S.minMonth;
                    throw (P.local.unknownNameAt || P.regionalOptions[""].unknownNameAt).replace(/\{0\}/, d);
                  }, m = function() {
                    if (typeof a == "function") {
                      var z = f("M") ? a.call(S, s.substring(d)) : i.call(S, s.substring(d));
                      return d += z.length, z;
                    }
                    return C("M", i, a);
                  }, L = function() {
                    if (s.charAt(d) !== n.charAt(h))
                      throw (P.local.unexpectedLiteralAt || P.regionalOptions[""].unexpectedLiteralAt).replace(/\{0\}/, d);
                    d++;
                  }, d = 0, h = 0; h < n.length; h++)
                    if (v)
                      n.charAt(h) === "'" && !f("'") ? v = !1 : L();
                    else
                      switch (n.charAt(h)) {
                        case "d":
                          g = _("d");
                          break;
                        case "D":
                          C("D", p, u);
                          break;
                        case "o":
                          x = _("o");
                          break;
                        case "w":
                          _("w");
                          break;
                        case "m":
                          y = M();
                          break;
                        case "M":
                          y = m();
                          break;
                        case "y":
                          var E = h;
                          c = !f("y", 2), h = E, o = _("y", 2);
                          break;
                        case "Y":
                          o = _("Y", 2);
                          break;
                        case "J":
                          l = _("J") + 0.5, s.charAt(d) === "." && (d++, _("J"));
                          break;
                        case "@":
                          l = _("@") / this.SECS_PER_DAY + this.UNIX_EPOCH;
                          break;
                        case "!":
                          l = _("!") / this.TICKS_PER_DAY + this.TICKS_EPOCH;
                          break;
                        case "*":
                          d = s.length;
                          break;
                        case "'":
                          f("'") ? L() : v = !0;
                          break;
                        default:
                          L();
                      }
                  if (d < s.length)
                    throw P.local.unexpectedText || P.regionalOptions[""].unexpectedText;
                  if (o === -1 ? o = this.today().year() : o < 100 && c && (o += A === -1 ? 1900 : this.today().year() - this.today().year() % 100 - (o <= A ? 0 : 100)), typeof y == "string" && (y = t.call(this, o, y)), x > -1) {
                    y = 1, g = x;
                    for (var w = this.daysInMonth(o, y); g > w; w = this.daysInMonth(o, y))
                      y++, g -= w;
                  }
                  return l > -1 ? this.fromJD(l) : this.newDate(o, y, g);
                },
                /** A date may be specified as an exact value or a relative one.
                    Found in the <code>jquery.calendars.plus.js</code> module.
                    @memberof BaseCalendar
                    @param dateSpec {CDate|number|string} The date as an object or string in the given format or
                            an offset - numeric days from today, or string amounts and periods, e.g. '+1m +2w'.
                    @param defaultDate {CDate} The date to use if no other supplied, may be <code>null</code>.
                    @param currentDate {CDate} The current date as a possible basis for relative dates,
                            if <code>null</code> today is used (optional)
                    @param [dateFormat] {string} The expected date format - see <a href="#formatDate"><code>formatDate</code></a>.
                    @param [settings] {object} Additional options whose attributes include:
                    @property [shortYearCutoff] {number} The cutoff year for determining the century.
                    @property [dayNamesShort] {string[]} Abbreviated names of the days from Sunday.
                    @property [dayNames] {string[]} Names of the days from Sunday.
                    @property [monthNamesShort] {string[]} Abbreviated names of the months.
                    @property [monthNames] {string[]} Names of the months.
                    @return {CDate} The decoded date. */
                determineDate: function(n, s, T, A, p) {
                  T && typeof T != "object" && (p = A, A = T, T = null), typeof A != "string" && (p = A, A = "");
                  var u = this, t = function(r) {
                    try {
                      return u.parseDate(A, r, p);
                    } catch {
                    }
                    r = r.toLowerCase();
                    for (var i = (r.match(/^c/) && T ? T.newDate() : null) || u.today(), a = /([+-]?[0-9]+)\s*(d|w|m|y)?/g, l = a.exec(r); l; )
                      i.add(parseInt(l[1], 10), l[2] || "d"), l = a.exec(r);
                    return i;
                  };
                  return s = s ? s.newDate() : null, n = n == null ? s : typeof n == "string" ? t(n) : typeof n == "number" ? isNaN(n) || n === 1 / 0 || n === -1 / 0 ? s : u.today().add(n, "d") : u.newDate(n), n;
                }
              });
            }
          ),
          /***/
          96144: (
            /***/
            function(Y, K, e) {
              e.r(K);
              var b = e(85072), P = /* @__PURE__ */ e.n(b), n = e(97825), s = /* @__PURE__ */ e.n(n), T = e(77659), A = /* @__PURE__ */ e.n(T), p = e(55056), u = /* @__PURE__ */ e.n(p), t = e(10540), r = /* @__PURE__ */ e.n(t), i = e(41113), a = /* @__PURE__ */ e.n(i), l = e(5955), o = {};
              o.styleTagTransform = a(), o.setAttributes = u(), o.insert = A().bind(null, "head"), o.domAPI = s(), o.insertStyleElement = r(), P()(l.A, o), K.default = l.A && l.A.locals ? l.A.locals : void 0;
            }
          ),
          /***/
          85072: (
            /***/
            function(Y) {
              var K = [];
              function e(n) {
                for (var s = -1, T = 0; T < K.length; T++)
                  if (K[T].identifier === n) {
                    s = T;
                    break;
                  }
                return s;
              }
              function b(n, s) {
                for (var T = {}, A = [], p = 0; p < n.length; p++) {
                  var u = n[p], t = s.base ? u[0] + s.base : u[0], r = T[t] || 0, i = "".concat(t, " ").concat(r);
                  T[t] = r + 1;
                  var a = e(i), l = {
                    css: u[1],
                    media: u[2],
                    sourceMap: u[3],
                    supports: u[4],
                    layer: u[5]
                  };
                  if (a !== -1)
                    K[a].references++, K[a].updater(l);
                  else {
                    var o = P(l, s);
                    s.byIndex = p, K.splice(p, 0, {
                      identifier: i,
                      updater: o,
                      references: 1
                    });
                  }
                  A.push(i);
                }
                return A;
              }
              function P(n, s) {
                var T = s.domAPI(s);
                T.update(n);
                var A = function(u) {
                  if (u) {
                    if (u.css === n.css && u.media === n.media && u.sourceMap === n.sourceMap && u.supports === n.supports && u.layer === n.layer)
                      return;
                    T.update(n = u);
                  } else
                    T.remove();
                };
                return A;
              }
              Y.exports = function(n, s) {
                s = s || {}, n = n || [];
                var T = b(n, s);
                return function(p) {
                  p = p || [];
                  for (var u = 0; u < T.length; u++) {
                    var t = T[u], r = e(t);
                    K[r].references--;
                  }
                  for (var i = b(p, s), a = 0; a < T.length; a++) {
                    var l = T[a], o = e(l);
                    K[o].references === 0 && (K[o].updater(), K.splice(o, 1));
                  }
                  T = i;
                };
              };
            }
          ),
          /***/
          77659: (
            /***/
            function(Y) {
              var K = {};
              function e(P) {
                if (typeof K[P] > "u") {
                  var n = document.querySelector(P);
                  if (window.HTMLIFrameElement && n instanceof window.HTMLIFrameElement)
                    try {
                      n = n.contentDocument.head;
                    } catch {
                      n = null;
                    }
                  K[P] = n;
                }
                return K[P];
              }
              function b(P, n) {
                var s = e(P);
                if (!s)
                  throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
                s.appendChild(n);
              }
              Y.exports = b;
            }
          ),
          /***/
          10540: (
            /***/
            function(Y) {
              function K(e) {
                var b = document.createElement("style");
                return e.setAttributes(b, e.attributes), e.insert(b, e.options), b;
              }
              Y.exports = K;
            }
          ),
          /***/
          55056: (
            /***/
            function(Y, K, e) {
              function b(P) {
                var n = e.nc;
                n && P.setAttribute("nonce", n);
              }
              Y.exports = b;
            }
          ),
          /***/
          97825: (
            /***/
            function(Y) {
              function K(P, n, s) {
                var T = "";
                s.supports && (T += "@supports (".concat(s.supports, ") {")), s.media && (T += "@media ".concat(s.media, " {"));
                var A = typeof s.layer < "u";
                A && (T += "@layer".concat(s.layer.length > 0 ? " ".concat(s.layer) : "", " {")), T += s.css, A && (T += "}"), s.media && (T += "}"), s.supports && (T += "}");
                var p = s.sourceMap;
                p && typeof btoa < "u" && (T += `
/*# sourceMappingURL=data:application/json;base64,`.concat(btoa(unescape(encodeURIComponent(JSON.stringify(p)))), " */")), n.styleTagTransform(T, P, n.options);
              }
              function e(P) {
                if (P.parentNode === null)
                  return !1;
                P.parentNode.removeChild(P);
              }
              function b(P) {
                if (typeof document > "u")
                  return {
                    update: function() {
                    },
                    remove: function() {
                    }
                  };
                var n = P.insertStyleElement(P);
                return {
                  update: function(T) {
                    K(n, P, T);
                  },
                  remove: function() {
                    e(n);
                  }
                };
              }
              Y.exports = b;
            }
          ),
          /***/
          41113: (
            /***/
            function(Y) {
              function K(e, b) {
                if (b.styleSheet)
                  b.styleSheet.cssText = e;
                else {
                  for (; b.firstChild; )
                    b.removeChild(b.firstChild);
                  b.appendChild(document.createTextNode(e));
                }
              }
              Y.exports = K;
            }
          ),
          /***/
          25446: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2722%27 height=%2722%27 fill=%27%23333%27 viewBox=%270 0 22 22%27%3E%3Cpath d=%27m1.754 13.406 4.453-4.851 3.09 3.09 3.281 3.277.969-.969-3.309-3.312 3.844-4.121 6.148 6.886h1.082v-.855l-7.207-8.07-4.84 5.187L6.169 6.57l-5.48 5.965v.871ZM.688 16.844h20.625v1.375H.688Zm0 0%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          56694: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2722%27 height=%2722%27 fill=%27%2333b5e5%27 viewBox=%270 0 22 22%27%3E%3Cpath d=%27m1.754 13.406 4.453-4.851 3.09 3.09 3.281 3.277.969-.969-3.309-3.312 3.844-4.121 6.148 6.886h1.082v-.855l-7.207-8.07-4.84 5.187L6.169 6.57l-5.48 5.965v.871ZM.688 16.844h20.625v1.375H.688Zm0 0%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          26117: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2724%27 height=%2724%27 fill-rule=%27evenodd%27 viewBox=%270 0 20 20%27%3E%3Cpath d=%27M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          66311: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2724%27 height=%2724%27 fill=%27%23fff%27 fill-rule=%27evenodd%27 viewBox=%270 0 20 20%27%3E%3Cpath d=%27M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          24420: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23333%27 viewBox=%270 0 20 20%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7%27/%3E%3Ccircle cx=%2710%27 cy=%2710%27 r=%272%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          77035: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23333%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          43470: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23333%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          13490: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23333%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1z%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          80216: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23333%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27m10.5 14 4-8 4 8z%27/%3E%3Cpath fill=%27%23ccc%27 d=%27m10.5 16 4 8 4-8z%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          47695: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%2333b5e5%27 viewBox=%270 0 20 20%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          92228: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%2333b5e5%27 viewBox=%270 0 20 20%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7%27/%3E%3Ccircle cx=%2710%27 cy=%2710%27 r=%272%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          43737: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23666%27 viewBox=%270 0 20 20%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7%27/%3E%3Ccircle cx=%2710%27 cy=%2710%27 r=%272%27/%3E%3Cpath fill=%27red%27 d=%27m14 5 1 1-9 9-1-1z%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          48460: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23999%27 viewBox=%270 0 20 20%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7%27/%3E%3Ccircle cx=%2710%27 cy=%2710%27 r=%272%27/%3E%3Cpath fill=%27red%27 d=%27m14 5 1 1-9 9-1-1z%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          75796: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23aaa%27 viewBox=%270 0 20 20%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7%27/%3E%3Ccircle cx=%2710%27 cy=%2710%27 r=%272%27/%3E%3Cpath fill=%27red%27 d=%27m14 5 1 1-9 9-1-1z%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          28869: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23e54e33%27 viewBox=%270 0 20 20%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          9819: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23e58978%27 viewBox=%270 0 20 20%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7%27/%3E%3Ccircle cx=%2710%27 cy=%2710%27 r=%272%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          30557: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23fff%27 viewBox=%270 0 20 20%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7%27/%3E%3Ccircle cx=%2710%27 cy=%2710%27 r=%272%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          68164: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23fff%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          64665: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23fff%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          91413: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23fff%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1z%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          13913: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23fff%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1z%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          61907: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 fill=%27%23fff%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27m10.5 14 4-8 4 8z%27/%3E%3Cpath fill=%27%23ccc%27 d=%27m10.5 16 4 8 4-8z%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          56539: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 viewBox=%270 0 20 20%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7%27/%3E%3Ccircle cx=%2710%27 cy=%2710%27 r=%272%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          4890: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          13363: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          47603: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1z%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          64643: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1z%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          68605: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2729%27 height=%2729%27 viewBox=%270 0 29 29%27%3E%3Cpath d=%27m10.5 14 4-8 4 8z%27/%3E%3Cpath fill=%27%23ccc%27 d=%27m10.5 16 4 8 4-8z%27/%3E%3C/svg%3E";
            }
          ),
          /***/
          47914: (
            /***/
            function(Y) {
              Y.exports = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2788%27 height=%2723%27 fill=%27none%27%3E%3Cpath fill=%27%23000%27 fill-opacity=%27.4%27 fill-rule=%27evenodd%27 d=%27M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.25 1.25 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.25 1.25 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5 5 0 0 1 .314-.787l.009-.016a4.6 4.6 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.6 4.6 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4q.47.48.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.42 2.42 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.45 2.45 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675q.318.302.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.8 4.8 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.4 3.4 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.25 1.25 0 0 1 .689 1.004 4.7 4.7 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528q-.001.515-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.8 5.8 0 0 1-.548-2.512q0-.429.053-.843a1.3 1.3 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.8 4.8 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.5 4.5 0 0 1-1.935-.424 1.25 1.25 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.4 2.4 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.7 4.7 0 0 1-1.782 1.884 4.77 4.77 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.5 4.5 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a5 5 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.25 1.25 0 0 1-1.115.676h-.098a1.25 1.25 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15q.493-.356.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267q-.133-.329-.526-.658l-.032-.028a3.2 3.2 0 0 0-.668-.428l-.27-.12a3.3 3.3 0 0 0-1.235-.23q-1.136-.001-1.974.493a3.36 3.36 0 0 0-1.3 1.382q-.445.89-.444 2.074 0 1.2.51 2.107a3.8 3.8 0 0 0 1.382 1.381 3.9 3.9 0 0 0 1.893.477q.795 0 1.455-.33zm-2.789-5.38q-.576.675-.575 1.762 0 1.102.559 1.794.576.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.2 2.2 0 0 0 .468-.29l.178-.161a2.2 2.2 0 0 0 .397-.561q.244-.5.244-1.15v-.115q0-.708-.296-1.267l-.043-.077a2.2 2.2 0 0 0-.633-.709l-.13-.086-.047-.028a2.1 2.1 0 0 0-1.073-.285q-1.052 0-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.96.96 0 0 0-.353-.389.85.85 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.6 2.6 0 0 0 .331.423q.319.33.755.548l.173.074q.65.255 1.49.255 1.02 0 1.844-.493a3.45 3.45 0 0 0 1.316-1.4q.493-.904.493-2.089 0-1.909-.988-2.913-.988-1.02-2.584-1.02-.898 0-1.575.347a3 3 0 0 0-.415.262l-.199.166a3.4 3.4 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138q.206.29.48.5l.155.11.053.034q.51.296 1.119.297 1.07 0 1.645-.675.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.435 0-.835.16a2 2 0 0 0-.284.136 2 2 0 0 0-.363.254 2.2 2.2 0 0 0-.46.569l-.082.162a2.6 2.6 0 0 0-.213 1.072v.115q0 .707.296 1.267l.135.211zm.964-.818a1.1 1.1 0 0 0 .367.385.94.94 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a1 1 0 0 0-.503.135l-.012.007a.86.86 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.4 1.4 0 0 0 .14.66zm15.7-6.222q.347-.346.346-.856a1.05 1.05 0 0 0-.345-.79 1.18 1.18 0 0 0-.84-.329q-.51 0-.855.33a1.05 1.05 0 0 0-.346.79q0 .51.346.855.345.346.856.346.51 0 .839-.346zm4.337 9.314.033-1.332q.191.403.59.747l.098.081a4 4 0 0 0 .316.224l.223.122a3.2 3.2 0 0 0 1.44.322 3.8 3.8 0 0 0 1.875-.477 3.5 3.5 0 0 0 1.382-1.366q.527-.89.526-2.09 0-1.184-.444-2.073a3.24 3.24 0 0 0-1.283-1.399q-.823-.51-1.942-.51a3.5 3.5 0 0 0-1.527.344l-.086.043-.165.09a3 3 0 0 0-.33.214q-.432.315-.656.707a2 2 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.5 2.5 0 0 0 .566.7q.117.098.245.18l.144.08a2.1 2.1 0 0 0 .975.232q1.07 0 1.645-.675.576-.69.576-1.778 0-1.102-.576-1.777-.56-.691-1.645-.692a2.2 2.2 0 0 0-1.015.235q-.22.113-.415.282l-.15.142a2.1 2.1 0 0 0-.42.594q-.223.479-.223 1.1v.115q0 .705.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.87.87 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.1 1.1 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013q.345-.13.724-.14l.069-.002q.493 0 .642.099l.247-1.794q-.196-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2 2 0 0 0-.411.148 2.2 2.2 0 0 0-.4.249 2.5 2.5 0 0 0-.485.499 2.7 2.7 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884q0-.546.159-.943a1.5 1.5 0 0 1 .466-.636 2.5 2.5 0 0 1 .399-.253 2 2 0 0 1 .224-.099zm9.784 2.656.05-.922q0-1.743-.856-2.698-.838-.97-2.584-.97-1.119-.001-2.007.493a3.46 3.46 0 0 0-1.4 1.382q-.493.906-.493 2.106 0 1.07.428 1.975.428.89 1.332 1.432.906.526 2.255.526.973 0 1.668-.185l.044-.012.135-.04q.613-.184.984-.421l-.542-1.267q-.3.162-.642.274l-.297.087q-.51.131-1.3.131-.954 0-1.497-.444a1.6 1.6 0 0 1-.192-.193q-.366-.44-.512-1.234l-.004-.021zm-5.427-1.256-.003.022h3.752v-.138q-.011-.727-.288-1.118a1 1 0 0 0-.156-.176q-.46-.428-1.316-.428-.986 0-1.494.604-.379.45-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z%27/%3E%3Cpath fill=%27%23fff%27 d=%27m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81q-1.02 0-1.893-.478a3.8 3.8 0 0 1-1.381-1.382q-.51-.906-.51-2.106 0-1.185.444-2.074a3.36 3.36 0 0 1 1.3-1.382q.839-.494 1.974-.494a3.3 3.3 0 0 1 1.234.231 3.3 3.3 0 0 1 .97.575q.396.33.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332q-.279.593-1.02 1.053a3.17 3.17 0 0 1-1.662.444zm.296-1.482q.938 0 1.58-.642.642-.66.642-1.711v-.115q0-.708-.296-1.267a2.2 2.2 0 0 0-.807-.872 2.1 2.1 0 0 0-1.119-.313q-1.053 0-1.629.692-.575.675-.575 1.76 0 1.103.559 1.795.577.675 1.645.675zm6.521-6.237h1.711v1.4q.906-1.597 2.83-1.597 1.596 0 2.584 1.02.988 1.005.988 2.914 0 1.185-.493 2.09a3.46 3.46 0 0 1-1.316 1.399 3.5 3.5 0 0 1-1.844.493q-.954 0-1.662-.329a2.67 2.67 0 0 1-1.086-.97l.017 5.134h-1.728zm4.048 6.22q1.07 0 1.645-.674.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.592 0-1.12.296-.51.28-.822.823-.296.527-.296 1.234v.115q0 .708.296 1.267.313.543.823.855.51.296 1.119.297z%27/%3E%3Cpath fill=%27%23e1e3e9%27 d=%27M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.16 1.16 0 0 1-.856-.346 1.17 1.17 0 0 1-.346-.856 1.05 1.05 0 0 1 .346-.79q.346-.329.856-.329.494 0 .839.33a1.05 1.05 0 0 1 .345.79 1.16 1.16 0 0 1-.345.855q-.33.346-.84.346zm7.875 9.133a3.17 3.17 0 0 1-1.662-.444q-.723-.46-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283q.279-.658 1.086-1.119a3.5 3.5 0 0 1 1.778-.477q1.119 0 1.942.51a3.24 3.24 0 0 1 1.283 1.4q.445.888.444 2.072 0 1.201-.526 2.09a3.5 3.5 0 0 1-1.382 1.366 3.8 3.8 0 0 1-1.876.477zm-.296-1.481q1.069 0 1.645-.675.577-.69.577-1.778 0-1.102-.577-1.776-.56-.691-1.645-.692a2.12 2.12 0 0 0-1.58.659q-.642.641-.642 1.694v.115q0 .71.296 1.267a2.4 2.4 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481q.263-.757.856-1.217a2.14 2.14 0 0 1 1.349-.46q.527 0 .724.098l-.247 1.794q-.149-.099-.642-.099-.774 0-1.416.494-.626.493-.626 1.58v3.883h-1.777V9.242zm9.534 7.718q-1.35 0-2.255-.526-.904-.543-1.332-1.432a4.6 4.6 0 0 1-.428-1.975q0-1.2.493-2.106a3.46 3.46 0 0 1 1.4-1.382q.889-.495 2.007-.494 1.744 0 2.584.97.855.956.856 2.7 0 .444-.05.92h-5.43q.18 1.005.708 1.45.542.443 1.497.443.79 0 1.3-.131a4 4 0 0 0 .938-.362l.542 1.267q-.411.263-1.119.46-.708.198-1.711.197zm1.596-4.558q.016-1.02-.444-1.432-.46-.428-1.316-.428-1.728 0-1.991 1.86z%27/%3E%3Cpath d=%27M5.074 15.948a.484.657 0 0 0-.486.659v1.84a.484.657 0 0 0 .486.659h4.101a.484.657 0 0 0 .486-.659v-1.84a.484.657 0 0 0-.486-.659zm3.56 1.16H5.617v.838h3.017z%27 style=%27fill:%23fff;fill-rule:evenodd;stroke-width:1.03600001%27/%3E%3Cg style=%27stroke-width:1.12603545%27%3E%3Cpath d=%27M-9.408-1.416c-3.833-.025-7.056 2.912-7.08 6.615-.02 3.08 1.653 4.832 3.107 6.268.903.892 1.721 1.74 2.32 2.902l-.525-.004c-.543-.003-.992.304-1.24.639a1.87 1.87 0 0 0-.362 1.121l-.011 1.877c-.003.402.104.787.347 1.125.244.338.688.653 1.23.656l4.142.028c.542.003.99-.306 1.238-.641a1.87 1.87 0 0 0 .363-1.121l.012-1.875a1.87 1.87 0 0 0-.348-1.127c-.243-.338-.688-.653-1.23-.656l-.518-.004c.597-1.145 1.425-1.983 2.348-2.87 1.473-1.414 3.18-3.149 3.2-6.226-.016-3.59-2.923-6.684-6.993-6.707m-.006 1.1v.002c3.274.02 5.92 2.532 5.9 5.6-.017 2.706-1.39 4.026-2.863 5.44-1.034.994-2.118 2.033-2.814 3.633-.018.041-.052.055-.075.065q-.013.004-.02.01a.34.34 0 0 1-.226.084.34.34 0 0 1-.224-.086l-.092-.077c-.699-1.615-1.768-2.669-2.781-3.67-1.454-1.435-2.797-2.762-2.78-5.478.02-3.067 2.7-5.545 5.975-5.523m-.02 2.826c-1.62-.01-2.944 1.315-2.955 2.96-.01 1.646 1.295 2.988 2.916 2.999h.002c1.621.01 2.943-1.316 2.953-2.961.011-1.646-1.294-2.988-2.916-2.998m-.005 1.1c1.017.006 1.829.83 1.822 1.89s-.83 1.874-1.848 1.867c-1.018-.006-1.829-.83-1.822-1.89s.83-1.874 1.848-1.868m-2.155 11.857 4.14.025c.271.002.49.305.487.676l-.013 1.875c-.003.37-.224.67-.495.668l-4.14-.025c-.27-.002-.487-.306-.485-.676l.012-1.875c.003-.37.224-.67.494-.668%27 style=%27color:%23000;font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:%23000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:%23000;solid-opacity:1;vector-effect:none;fill:%23000;fill-opacity:.4;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto%27 transform=%27translate%2815.553 2.85%29scale%28.88807%29%27/%3E%3Cpath d=%27M-9.415-.316C-12.69-.338-15.37 2.14-15.39 5.207c-.017 2.716 1.326 4.041 2.78 5.477 1.013 1 2.081 2.055 2.78 3.67l.092.076a.34.34 0 0 0 .225.086.34.34 0 0 0 .227-.083l.019-.01c.022-.009.057-.024.074-.064.697-1.6 1.78-2.64 2.814-3.634 1.473-1.414 2.847-2.733 2.864-5.44.02-3.067-2.627-5.58-5.901-5.601m-.057 8.784c1.621.011 2.944-1.315 2.955-2.96.01-1.646-1.295-2.988-2.916-2.999-1.622-.01-2.945 1.315-2.955 2.96s1.295 2.989 2.916 3%27 style=%27clip-rule:evenodd;fill:%23e1e3e9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4%27 transform=%27translate%2815.553 2.85%29scale%28.88807%29%27/%3E%3Cpath d=%27M-11.594 15.465c-.27-.002-.492.297-.494.668l-.012 1.876c-.003.371.214.673.485.675l4.14.027c.271.002.492-.298.495-.668l.012-1.877c.003-.37-.215-.672-.485-.674z%27 style=%27clip-rule:evenodd;fill:%23fff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4%27 transform=%27translate%2815.553 2.85%29scale%28.88807%29%27/%3E%3C/g%3E%3C/svg%3E";
            }
          ),
          /***/
          63779: (
            /***/
            function() {
            }
          ),
          /***/
          77199: (
            /***/
            function() {
            }
          ),
          /***/
          61990: (
            /***/
            function(Y, K, e) {
              Object.defineProperty(K, "__esModule", { value: !0 });
              var b = e(85846), P = e(66030);
              function n(r) {
                return P.geomReduce.call(
                  void 0,
                  r,
                  (i, a) => i + s(a),
                  0
                );
              }
              function s(r) {
                let i = 0, a;
                switch (r.type) {
                  case "Polygon":
                    return T(r.coordinates);
                  case "MultiPolygon":
                    for (a = 0; a < r.coordinates.length; a++)
                      i += T(r.coordinates[a]);
                    return i;
                  case "Point":
                  case "MultiPoint":
                  case "LineString":
                  case "MultiLineString":
                    return 0;
                }
                return 0;
              }
              function T(r) {
                let i = 0;
                if (r && r.length > 0) {
                  i += Math.abs(u(r[0]));
                  for (let a = 1; a < r.length; a++)
                    i -= Math.abs(u(r[a]));
                }
                return i;
              }
              var A = b.earthRadius * b.earthRadius / 2, p = Math.PI / 180;
              function u(r) {
                const i = r.length - 1;
                if (i <= 2)
                  return 0;
                let a = 0, l = 0;
                for (; l < i; ) {
                  const o = r[l], y = r[l + 1 === i ? 0 : l + 1], g = r[l + 2 >= i ? (l + 2) % i : l + 2], x = o[0] * p, c = y[1] * p, v = g[0] * p;
                  a += (v - x) * Math.sin(c), l++;
                }
                return a * A;
              }
              var t = n;
              K.area = n, K.default = t;
            }
          ),
          /***/
          25368: (
            /***/
            function(Y, K, e) {
              Object.defineProperty(K, "__esModule", { value: !0 });
              var b = e(66030);
              function P(s, T = {}) {
                if (s.bbox != null && T.recompute !== !0)
                  return s.bbox;
                const A = [1 / 0, 1 / 0, -1 / 0, -1 / 0];
                return b.coordEach.call(void 0, s, (p) => {
                  A[0] > p[0] && (A[0] = p[0]), A[1] > p[1] && (A[1] = p[1]), A[2] < p[0] && (A[2] = p[0]), A[3] < p[1] && (A[3] = p[1]);
                }), A;
              }
              var n = P;
              K.bbox = P, K.default = n;
            }
          ),
          /***/
          30035: (
            /***/
            function(Y, K, e) {
              Object.defineProperty(K, "__esModule", { value: !0 });
              var b = e(85846), P = e(66030);
              function n(T, A = {}) {
                let p = 0, u = 0, t = 0;
                return P.coordEach.call(
                  void 0,
                  T,
                  function(r) {
                    p += r[0], u += r[1], t++;
                  },
                  !0
                ), b.point.call(void 0, [p / t, u / t], A.properties);
              }
              var s = n;
              K.centroid = n, K.default = s;
            }
          ),
          /***/
          85846: (
            /***/
            function(Y, K) {
              Object.defineProperty(K, "__esModule", { value: !0 });
              var e = 63710088e-1, b = {
                centimeters: e * 100,
                centimetres: e * 100,
                degrees: 360 / (2 * Math.PI),
                feet: e * 3.28084,
                inches: e * 39.37,
                kilometers: e / 1e3,
                kilometres: e / 1e3,
                meters: e,
                metres: e,
                miles: e / 1609.344,
                millimeters: e * 1e3,
                millimetres: e * 1e3,
                nauticalmiles: e / 1852,
                radians: 1,
                yards: e * 1.0936
              }, P = {
                acres: 247105e-9,
                centimeters: 1e4,
                centimetres: 1e4,
                feet: 10.763910417,
                hectares: 1e-4,
                inches: 1550.003100006,
                kilometers: 1e-6,
                kilometres: 1e-6,
                meters: 1,
                metres: 1,
                miles: 386e-9,
                nauticalmiles: 29155334959812285e-23,
                millimeters: 1e6,
                millimetres: 1e6,
                yards: 1.195990046
              };
              function n(w, z, O = {}) {
                const B = { type: "Feature" };
                return (O.id === 0 || O.id) && (B.id = O.id), O.bbox && (B.bbox = O.bbox), B.properties = z || {}, B.geometry = w, B;
              }
              function s(w, z, O = {}) {
                switch (w) {
                  case "Point":
                    return T(z).geometry;
                  case "LineString":
                    return t(z).geometry;
                  case "Polygon":
                    return p(z).geometry;
                  case "MultiPoint":
                    return l(z).geometry;
                  case "MultiLineString":
                    return a(z).geometry;
                  case "MultiPolygon":
                    return o(z).geometry;
                  default:
                    throw new Error(w + " is invalid");
                }
              }
              function T(w, z, O = {}) {
                if (!w)
                  throw new Error("coordinates is required");
                if (!Array.isArray(w))
                  throw new Error("coordinates must be an Array");
                if (w.length < 2)
                  throw new Error("coordinates must be at least 2 numbers long");
                if (!L(w[0]) || !L(w[1]))
                  throw new Error("coordinates must contain numbers");
                return n({
                  type: "Point",
                  coordinates: w
                }, z, O);
              }
              function A(w, z, O = {}) {
                return i(
                  w.map((B) => T(B, z)),
                  O
                );
              }
              function p(w, z, O = {}) {
                for (const V of w) {
                  if (V.length < 4)
                    throw new Error(
                      "Each LinearRing of a Polygon must have 4 or more Positions."
                    );
                  if (V[V.length - 1].length !== V[0].length)
                    throw new Error("First and last Position are not equivalent.");
                  for (let U = 0; U < V[V.length - 1].length; U++)
                    if (V[V.length - 1][U] !== V[0][U])
                      throw new Error("First and last Position are not equivalent.");
                }
                return n({
                  type: "Polygon",
                  coordinates: w
                }, z, O);
              }
              function u(w, z, O = {}) {
                return i(
                  w.map((B) => p(B, z)),
                  O
                );
              }
              function t(w, z, O = {}) {
                if (w.length < 2)
                  throw new Error("coordinates must be an array of two or more positions");
                return n({
                  type: "LineString",
                  coordinates: w
                }, z, O);
              }
              function r(w, z, O = {}) {
                return i(
                  w.map((B) => t(B, z)),
                  O
                );
              }
              function i(w, z = {}) {
                const O = { type: "FeatureCollection" };
                return z.id && (O.id = z.id), z.bbox && (O.bbox = z.bbox), O.features = w, O;
              }
              function a(w, z, O = {}) {
                return n({
                  type: "MultiLineString",
                  coordinates: w
                }, z, O);
              }
              function l(w, z, O = {}) {
                return n({
                  type: "MultiPoint",
                  coordinates: w
                }, z, O);
              }
              function o(w, z, O = {}) {
                return n({
                  type: "MultiPolygon",
                  coordinates: w
                }, z, O);
              }
              function y(w, z, O = {}) {
                return n({
                  type: "GeometryCollection",
                  geometries: w
                }, z, O);
              }
              function g(w, z = 0) {
                if (z && !(z >= 0))
                  throw new Error("precision must be a positive number");
                const O = Math.pow(10, z || 0);
                return Math.round(w * O) / O;
              }
              function x(w, z = "kilometers") {
                const O = b[z];
                if (!O)
                  throw new Error(z + " units is invalid");
                return w * O;
              }
              function c(w, z = "kilometers") {
                const O = b[z];
                if (!O)
                  throw new Error(z + " units is invalid");
                return w / O;
              }
              function v(w, z) {
                return S(c(w, z));
              }
              function f(w) {
                let z = w % 360;
                return z < 0 && (z += 360), z;
              }
              function _(w) {
                return w = w % 360, w > 0 ? w > 180 ? w - 360 : w : w < -180 ? w + 360 : w;
              }
              function S(w) {
                return w % (2 * Math.PI) * 180 / Math.PI;
              }
              function M(w) {
                return w % 360 * Math.PI / 180;
              }
              function C(w, z = "kilometers", O = "kilometers") {
                if (!(w >= 0))
                  throw new Error("length must be a positive number");
                return x(c(w, z), O);
              }
              function m(w, z = "meters", O = "kilometers") {
                if (!(w >= 0))
                  throw new Error("area must be a positive number");
                const B = P[z];
                if (!B)
                  throw new Error("invalid original units");
                const V = P[O];
                if (!V)
                  throw new Error("invalid final units");
                return w / B * V;
              }
              function L(w) {
                return !isNaN(w) && w !== null && !Array.isArray(w);
              }
              function d(w) {
                return w !== null && typeof w == "object" && !Array.isArray(w);
              }
              function h(w) {
                if (!w)
                  throw new Error("bbox is required");
                if (!Array.isArray(w))
                  throw new Error("bbox must be an Array");
                if (w.length !== 4 && w.length !== 6)
                  throw new Error("bbox must be an Array of 4 or 6 numbers");
                w.forEach((z) => {
                  if (!L(z))
                    throw new Error("bbox must only contain numbers");
                });
              }
              function E(w) {
                if (!w)
                  throw new Error("id is required");
                if (["string", "number"].indexOf(typeof w) === -1)
                  throw new Error("id must be a number or a string");
              }
              K.areaFactors = P, K.azimuthToBearing = _, K.bearingToAzimuth = f, K.convertArea = m, K.convertLength = C, K.degreesToRadians = M, K.earthRadius = e, K.factors = b, K.feature = n, K.featureCollection = i, K.geometry = s, K.geometryCollection = y, K.isNumber = L, K.isObject = d, K.lengthToDegrees = v, K.lengthToRadians = c, K.lineString = t, K.lineStrings = r, K.multiLineString = a, K.multiPoint = l, K.multiPolygon = o, K.point = T, K.points = A, K.polygon = p, K.polygons = u, K.radiansToDegrees = S, K.radiansToLength = x, K.round = g, K.validateBBox = h, K.validateId = E;
            }
          ),
          /***/
          66030: (
            /***/
            function(Y, K, e) {
              Object.defineProperty(K, "__esModule", { value: !0 });
              var b = e(85846);
              function P(v, f, _) {
                if (v !== null)
                  for (var S, M, C, m, L, d, h, E = 0, w = 0, z, O = v.type, B = O === "FeatureCollection", V = O === "Feature", U = B ? v.features.length : 1, H = 0; H < U; H++) {
                    h = B ? v.features[H].geometry : V ? v.geometry : v, z = h ? h.type === "GeometryCollection" : !1, L = z ? h.geometries.length : 1;
                    for (var F = 0; F < L; F++) {
                      var G = 0, q = 0;
                      if (m = z ? h.geometries[F] : h, m !== null) {
                        d = m.coordinates;
                        var rt = m.type;
                        switch (E = _ && (rt === "Polygon" || rt === "MultiPolygon") ? 1 : 0, rt) {
                          case null:
                            break;
                          case "Point":
                            if (f(
                              d,
                              w,
                              H,
                              G,
                              q
                            ) === !1)
                              return !1;
                            w++, G++;
                            break;
                          case "LineString":
                          case "MultiPoint":
                            for (S = 0; S < d.length; S++) {
                              if (f(
                                d[S],
                                w,
                                H,
                                G,
                                q
                              ) === !1)
                                return !1;
                              w++, rt === "MultiPoint" && G++;
                            }
                            rt === "LineString" && G++;
                            break;
                          case "Polygon":
                          case "MultiLineString":
                            for (S = 0; S < d.length; S++) {
                              for (M = 0; M < d[S].length - E; M++) {
                                if (f(
                                  d[S][M],
                                  w,
                                  H,
                                  G,
                                  q
                                ) === !1)
                                  return !1;
                                w++;
                              }
                              rt === "MultiLineString" && G++, rt === "Polygon" && q++;
                            }
                            rt === "Polygon" && G++;
                            break;
                          case "MultiPolygon":
                            for (S = 0; S < d.length; S++) {
                              for (q = 0, M = 0; M < d[S].length; M++) {
                                for (C = 0; C < d[S][M].length - E; C++) {
                                  if (f(
                                    d[S][M][C],
                                    w,
                                    H,
                                    G,
                                    q
                                  ) === !1)
                                    return !1;
                                  w++;
                                }
                                q++;
                              }
                              G++;
                            }
                            break;
                          case "GeometryCollection":
                            for (S = 0; S < m.geometries.length; S++)
                              if (P(m.geometries[S], f, _) === !1)
                                return !1;
                            break;
                          default:
                            throw new Error("Unknown Geometry Type");
                        }
                      }
                    }
                  }
              }
              function n(v, f, _, S) {
                var M = _;
                return P(
                  v,
                  function(C, m, L, d, h) {
                    m === 0 && _ === void 0 ? M = C : M = f(
                      M,
                      C,
                      m,
                      L,
                      d,
                      h
                    );
                  },
                  S
                ), M;
              }
              function s(v, f) {
                var _;
                switch (v.type) {
                  case "FeatureCollection":
                    for (_ = 0; _ < v.features.length && f(v.features[_].properties, _) !== !1; _++)
                      ;
                    break;
                  case "Feature":
                    f(v.properties, 0);
                    break;
                }
              }
              function T(v, f, _) {
                var S = _;
                return s(v, function(M, C) {
                  C === 0 && _ === void 0 ? S = M : S = f(S, M, C);
                }), S;
              }
              function A(v, f) {
                if (v.type === "Feature")
                  f(v, 0);
                else if (v.type === "FeatureCollection")
                  for (var _ = 0; _ < v.features.length && f(v.features[_], _) !== !1; _++)
                    ;
              }
              function p(v, f, _) {
                var S = _;
                return A(v, function(M, C) {
                  C === 0 && _ === void 0 ? S = M : S = f(S, M, C);
                }), S;
              }
              function u(v) {
                var f = [];
                return P(v, function(_) {
                  f.push(_);
                }), f;
              }
              function t(v, f) {
                var _, S, M, C, m, L, d, h, E, w, z = 0, O = v.type === "FeatureCollection", B = v.type === "Feature", V = O ? v.features.length : 1;
                for (_ = 0; _ < V; _++) {
                  for (L = O ? v.features[_].geometry : B ? v.geometry : v, h = O ? v.features[_].properties : B ? v.properties : {}, E = O ? v.features[_].bbox : B ? v.bbox : void 0, w = O ? v.features[_].id : B ? v.id : void 0, d = L ? L.type === "GeometryCollection" : !1, m = d ? L.geometries.length : 1, M = 0; M < m; M++) {
                    if (C = d ? L.geometries[M] : L, C === null) {
                      if (f(
                        null,
                        z,
                        h,
                        E,
                        w
                      ) === !1)
                        return !1;
                      continue;
                    }
                    switch (C.type) {
                      case "Point":
                      case "LineString":
                      case "MultiPoint":
                      case "Polygon":
                      case "MultiLineString":
                      case "MultiPolygon": {
                        if (f(
                          C,
                          z,
                          h,
                          E,
                          w
                        ) === !1)
                          return !1;
                        break;
                      }
                      case "GeometryCollection": {
                        for (S = 0; S < C.geometries.length; S++)
                          if (f(
                            C.geometries[S],
                            z,
                            h,
                            E,
                            w
                          ) === !1)
                            return !1;
                        break;
                      }
                      default:
                        throw new Error("Unknown Geometry Type");
                    }
                  }
                  z++;
                }
              }
              function r(v, f, _) {
                var S = _;
                return t(
                  v,
                  function(M, C, m, L, d) {
                    C === 0 && _ === void 0 ? S = M : S = f(
                      S,
                      M,
                      C,
                      m,
                      L,
                      d
                    );
                  }
                ), S;
              }
              function i(v, f) {
                t(v, function(_, S, M, C, m) {
                  var L = _ === null ? null : _.type;
                  switch (L) {
                    case null:
                    case "Point":
                    case "LineString":
                    case "Polygon":
                      return f(
                        b.feature.call(void 0, _, M, { bbox: C, id: m }),
                        S,
                        0
                      ) === !1 ? !1 : void 0;
                  }
                  var d;
                  switch (L) {
                    case "MultiPoint":
                      d = "Point";
                      break;
                    case "MultiLineString":
                      d = "LineString";
                      break;
                    case "MultiPolygon":
                      d = "Polygon";
                      break;
                  }
                  for (var h = 0; h < _.coordinates.length; h++) {
                    var E = _.coordinates[h], w = {
                      type: d,
                      coordinates: E
                    };
                    if (f(b.feature.call(void 0, w, M), S, h) === !1)
                      return !1;
                  }
                });
              }
              function a(v, f, _) {
                var S = _;
                return i(
                  v,
                  function(M, C, m) {
                    C === 0 && m === 0 && _ === void 0 ? S = M : S = f(
                      S,
                      M,
                      C,
                      m
                    );
                  }
                ), S;
              }
              function l(v, f) {
                i(v, function(_, S, M) {
                  var C = 0;
                  if (_.geometry) {
                    var m = _.geometry.type;
                    if (!(m === "Point" || m === "MultiPoint")) {
                      var L, d = 0, h = 0, E = 0;
                      if (P(
                        _,
                        function(w, z, O, B, V) {
                          if (L === void 0 || S > d || B > h || V > E) {
                            L = w, d = S, h = B, E = V, C = 0;
                            return;
                          }
                          var U = b.lineString.call(
                            void 0,
                            [L, w],
                            _.properties
                          );
                          if (f(
                            U,
                            S,
                            M,
                            V,
                            C
                          ) === !1)
                            return !1;
                          C++, L = w;
                        }
                      ) === !1)
                        return !1;
                    }
                  }
                });
              }
              function o(v, f, _) {
                var S = _, M = !1;
                return l(
                  v,
                  function(C, m, L, d, h) {
                    M === !1 && _ === void 0 ? S = C : S = f(
                      S,
                      C,
                      m,
                      L,
                      d,
                      h
                    ), M = !0;
                  }
                ), S;
              }
              function y(v, f) {
                if (!v)
                  throw new Error("geojson is required");
                i(v, function(_, S, M) {
                  if (_.geometry !== null) {
                    var C = _.geometry.type, m = _.geometry.coordinates;
                    switch (C) {
                      case "LineString":
                        if (f(_, S, M, 0, 0) === !1)
                          return !1;
                        break;
                      case "Polygon":
                        for (var L = 0; L < m.length; L++)
                          if (f(
                            b.lineString.call(void 0, m[L], _.properties),
                            S,
                            M,
                            L
                          ) === !1)
                            return !1;
                        break;
                    }
                  }
                });
              }
              function g(v, f, _) {
                var S = _;
                return y(
                  v,
                  function(M, C, m, L) {
                    C === 0 && _ === void 0 ? S = M : S = f(
                      S,
                      M,
                      C,
                      m,
                      L
                    );
                  }
                ), S;
              }
              function x(v, f) {
                if (f = f || {}, !b.isObject.call(void 0, f))
                  throw new Error("options is invalid");
                var _ = f.featureIndex || 0, S = f.multiFeatureIndex || 0, M = f.geometryIndex || 0, C = f.segmentIndex || 0, m = f.properties, L;
                switch (v.type) {
                  case "FeatureCollection":
                    _ < 0 && (_ = v.features.length + _), m = m || v.features[_].properties, L = v.features[_].geometry;
                    break;
                  case "Feature":
                    m = m || v.properties, L = v.geometry;
                    break;
                  case "Point":
                  case "MultiPoint":
                    return null;
                  case "LineString":
                  case "Polygon":
                  case "MultiLineString":
                  case "MultiPolygon":
                    L = v;
                    break;
                  default:
                    throw new Error("geojson is invalid");
                }
                if (L === null)
                  return null;
                var d = L.coordinates;
                switch (L.type) {
                  case "Point":
                  case "MultiPoint":
                    return null;
                  case "LineString":
                    return C < 0 && (C = d.length + C - 1), b.lineString.call(
                      void 0,
                      [d[C], d[C + 1]],
                      m,
                      f
                    );
                  case "Polygon":
                    return M < 0 && (M = d.length + M), C < 0 && (C = d[M].length + C - 1), b.lineString.call(
                      void 0,
                      [
                        d[M][C],
                        d[M][C + 1]
                      ],
                      m,
                      f
                    );
                  case "MultiLineString":
                    return S < 0 && (S = d.length + S), C < 0 && (C = d[S].length + C - 1), b.lineString.call(
                      void 0,
                      [
                        d[S][C],
                        d[S][C + 1]
                      ],
                      m,
                      f
                    );
                  case "MultiPolygon":
                    return S < 0 && (S = d.length + S), M < 0 && (M = d[S].length + M), C < 0 && (C = d[S][M].length - C - 1), b.lineString.call(
                      void 0,
                      [
                        d[S][M][C],
                        d[S][M][C + 1]
                      ],
                      m,
                      f
                    );
                }
                throw new Error("geojson is invalid");
              }
              function c(v, f) {
                if (f = f || {}, !b.isObject.call(void 0, f))
                  throw new Error("options is invalid");
                var _ = f.featureIndex || 0, S = f.multiFeatureIndex || 0, M = f.geometryIndex || 0, C = f.coordIndex || 0, m = f.properties, L;
                switch (v.type) {
                  case "FeatureCollection":
                    _ < 0 && (_ = v.features.length + _), m = m || v.features[_].properties, L = v.features[_].geometry;
                    break;
                  case "Feature":
                    m = m || v.properties, L = v.geometry;
                    break;
                  case "Point":
                  case "MultiPoint":
                    return null;
                  case "LineString":
                  case "Polygon":
                  case "MultiLineString":
                  case "MultiPolygon":
                    L = v;
                    break;
                  default:
                    throw new Error("geojson is invalid");
                }
                if (L === null)
                  return null;
                var d = L.coordinates;
                switch (L.type) {
                  case "Point":
                    return b.point.call(void 0, d, m, f);
                  case "MultiPoint":
                    return S < 0 && (S = d.length + S), b.point.call(void 0, d[S], m, f);
                  case "LineString":
                    return C < 0 && (C = d.length + C), b.point.call(void 0, d[C], m, f);
                  case "Polygon":
                    return M < 0 && (M = d.length + M), C < 0 && (C = d[M].length + C), b.point.call(void 0, d[M][C], m, f);
                  case "MultiLineString":
                    return S < 0 && (S = d.length + S), C < 0 && (C = d[S].length + C), b.point.call(void 0, d[S][C], m, f);
                  case "MultiPolygon":
                    return S < 0 && (S = d.length + S), M < 0 && (M = d[S].length + M), C < 0 && (C = d[S][M].length - C), b.point.call(
                      void 0,
                      d[S][M][C],
                      m,
                      f
                    );
                }
                throw new Error("geojson is invalid");
              }
              K.coordAll = u, K.coordEach = P, K.coordReduce = n, K.featureEach = A, K.featureReduce = p, K.findPoint = c, K.findSegment = x, K.flattenEach = i, K.flattenReduce = a, K.geomEach = t, K.geomReduce = r, K.lineEach = y, K.lineReduce = g, K.propEach = s, K.propReduce = T, K.segmentEach = l, K.segmentReduce = o;
            }
          ),
          /***/
          70085: (
            /***/
            function(Y, K, e) {
              var b = [
                "BigInt64Array",
                "BigUint64Array",
                "Float32Array",
                "Float64Array",
                "Int16Array",
                "Int32Array",
                "Int8Array",
                "Uint16Array",
                "Uint32Array",
                "Uint8Array",
                "Uint8ClampedArray"
              ], P = typeof globalThis > "u" ? e.g : globalThis;
              Y.exports = function() {
                for (var s = [], T = 0; T < b.length; T++)
                  typeof P[b[T]] == "function" && (s[s.length] = b[T]);
                return s;
              };
            }
          ),
          /***/
          89380: (
            /***/
            function(Y) {
              /**
               * MapLibre GL JS
               * @license 3-Clause BSD. Full text of license: https://github.com/maplibre/maplibre-gl-js/blob/v4.5.2/LICENSE.txt
               */
              (function(K, e) {
                Y.exports = e();
              })(this, function() {
                var K = {}, e = {};
                function b(n, s, T) {
                  if (e[n] = T, n === "index") {
                    var A = "var sharedModule = {}; (" + e.shared + ")(sharedModule); (" + e.worker + ")(sharedModule);", p = {};
                    return e.shared(p), e.index(K, p), typeof window < "u" && K.setWorkerUrl(window.URL.createObjectURL(new Blob([A], { type: "text/javascript" }))), K;
                  }
                }
                b("shared", ["exports"], function(n) {
                  function s(N, k, Z, dt) {
                    function At(Dt) {
                      return Dt instanceof Z ? Dt : new Z(function(Ut) {
                        Ut(Dt);
                      });
                    }
                    return new (Z || (Z = Promise))(function(Dt, Ut) {
                      function se(Ke) {
                        try {
                          He(dt.next(Ke));
                        } catch (cr) {
                          Ut(cr);
                        }
                      }
                      function Ie(Ke) {
                        try {
                          He(dt.throw(Ke));
                        } catch (cr) {
                          Ut(cr);
                        }
                      }
                      function He(Ke) {
                        Ke.done ? Dt(Ke.value) : At(Ke.value).then(se, Ie);
                      }
                      He((dt = dt.apply(N, k || [])).next());
                    });
                  }
                  typeof SuppressedError == "function" && SuppressedError;
                  function T(N) {
                    return N && N.__esModule && Object.prototype.hasOwnProperty.call(N, "default") ? N.default : N;
                  }
                  var A = p;
                  function p(N, k) {
                    this.x = N, this.y = k;
                  }
                  p.prototype = {
                    /**
                     * Clone this point, returning a new point that can be modified
                     * without affecting the old one.
                     * @return {Point} the clone
                     */
                    clone: function() {
                      return new p(this.x, this.y);
                    },
                    /**
                     * Add this point's x & y coordinates to another point,
                     * yielding a new point.
                     * @param {Point} p the other point
                     * @return {Point} output point
                     */
                    add: function(N) {
                      return this.clone()._add(N);
                    },
                    /**
                     * Subtract this point's x & y coordinates to from point,
                     * yielding a new point.
                     * @param {Point} p the other point
                     * @return {Point} output point
                     */
                    sub: function(N) {
                      return this.clone()._sub(N);
                    },
                    /**
                     * Multiply this point's x & y coordinates by point,
                     * yielding a new point.
                     * @param {Point} p the other point
                     * @return {Point} output point
                     */
                    multByPoint: function(N) {
                      return this.clone()._multByPoint(N);
                    },
                    /**
                     * Divide this point's x & y coordinates by point,
                     * yielding a new point.
                     * @param {Point} p the other point
                     * @return {Point} output point
                     */
                    divByPoint: function(N) {
                      return this.clone()._divByPoint(N);
                    },
                    /**
                     * Multiply this point's x & y coordinates by a factor,
                     * yielding a new point.
                     * @param {Point} k factor
                     * @return {Point} output point
                     */
                    mult: function(N) {
                      return this.clone()._mult(N);
                    },
                    /**
                     * Divide this point's x & y coordinates by a factor,
                     * yielding a new point.
                     * @param {Point} k factor
                     * @return {Point} output point
                     */
                    div: function(N) {
                      return this.clone()._div(N);
                    },
                    /**
                     * Rotate this point around the 0, 0 origin by an angle a,
                     * given in radians
                     * @param {Number} a angle to rotate around, in radians
                     * @return {Point} output point
                     */
                    rotate: function(N) {
                      return this.clone()._rotate(N);
                    },
                    /**
                     * Rotate this point around p point by an angle a,
                     * given in radians
                     * @param {Number} a angle to rotate around, in radians
                     * @param {Point} p Point to rotate around
                     * @return {Point} output point
                     */
                    rotateAround: function(N, k) {
                      return this.clone()._rotateAround(N, k);
                    },
                    /**
                     * Multiply this point by a 4x1 transformation matrix
                     * @param {Array<Number>} m transformation matrix
                     * @return {Point} output point
                     */
                    matMult: function(N) {
                      return this.clone()._matMult(N);
                    },
                    /**
                     * Calculate this point but as a unit vector from 0, 0, meaning
                     * that the distance from the resulting point to the 0, 0
                     * coordinate will be equal to 1 and the angle from the resulting
                     * point to the 0, 0 coordinate will be the same as before.
                     * @return {Point} unit vector point
                     */
                    unit: function() {
                      return this.clone()._unit();
                    },
                    /**
                     * Compute a perpendicular point, where the new y coordinate
                     * is the old x coordinate and the new x coordinate is the old y
                     * coordinate multiplied by -1
                     * @return {Point} perpendicular point
                     */
                    perp: function() {
                      return this.clone()._perp();
                    },
                    /**
                     * Return a version of this point with the x & y coordinates
                     * rounded to integers.
                     * @return {Point} rounded point
                     */
                    round: function() {
                      return this.clone()._round();
                    },
                    /**
                     * Return the magitude of this point: this is the Euclidean
                     * distance from the 0, 0 coordinate to this point's x and y
                     * coordinates.
                     * @return {Number} magnitude
                     */
                    mag: function() {
                      return Math.sqrt(this.x * this.x + this.y * this.y);
                    },
                    /**
                     * Judge whether this point is equal to another point, returning
                     * true or false.
                     * @param {Point} other the other point
                     * @return {boolean} whether the points are equal
                     */
                    equals: function(N) {
                      return this.x === N.x && this.y === N.y;
                    },
                    /**
                     * Calculate the distance from this point to another point
                     * @param {Point} p the other point
                     * @return {Number} distance
                     */
                    dist: function(N) {
                      return Math.sqrt(this.distSqr(N));
                    },
                    /**
                     * Calculate the distance from this point to another point,
                     * without the square root step. Useful if you're comparing
                     * relative distances.
                     * @param {Point} p the other point
                     * @return {Number} distance
                     */
                    distSqr: function(N) {
                      var k = N.x - this.x, Z = N.y - this.y;
                      return k * k + Z * Z;
                    },
                    /**
                     * Get the angle from the 0, 0 coordinate to this point, in radians
                     * coordinates.
                     * @return {Number} angle
                     */
                    angle: function() {
                      return Math.atan2(this.y, this.x);
                    },
                    /**
                     * Get the angle from this point to another point, in radians
                     * @param {Point} b the other point
                     * @return {Number} angle
                     */
                    angleTo: function(N) {
                      return Math.atan2(this.y - N.y, this.x - N.x);
                    },
                    /**
                     * Get the angle between this point and another point, in radians
                     * @param {Point} b the other point
                     * @return {Number} angle
                     */
                    angleWith: function(N) {
                      return this.angleWithSep(N.x, N.y);
                    },
                    /*
                     * Find the angle of the two vectors, solving the formula for
                     * the cross product a x b = |a||b|sin(θ) for θ.
                     * @param {Number} x the x-coordinate
                     * @param {Number} y the y-coordinate
                     * @return {Number} the angle in radians
                     */
                    angleWithSep: function(N, k) {
                      return Math.atan2(
                        this.x * k - this.y * N,
                        this.x * N + this.y * k
                      );
                    },
                    _matMult: function(N) {
                      var k = N[0] * this.x + N[1] * this.y, Z = N[2] * this.x + N[3] * this.y;
                      return this.x = k, this.y = Z, this;
                    },
                    _add: function(N) {
                      return this.x += N.x, this.y += N.y, this;
                    },
                    _sub: function(N) {
                      return this.x -= N.x, this.y -= N.y, this;
                    },
                    _mult: function(N) {
                      return this.x *= N, this.y *= N, this;
                    },
                    _div: function(N) {
                      return this.x /= N, this.y /= N, this;
                    },
                    _multByPoint: function(N) {
                      return this.x *= N.x, this.y *= N.y, this;
                    },
                    _divByPoint: function(N) {
                      return this.x /= N.x, this.y /= N.y, this;
                    },
                    _unit: function() {
                      return this._div(this.mag()), this;
                    },
                    _perp: function() {
                      var N = this.y;
                      return this.y = this.x, this.x = -N, this;
                    },
                    _rotate: function(N) {
                      var k = Math.cos(N), Z = Math.sin(N), dt = k * this.x - Z * this.y, At = Z * this.x + k * this.y;
                      return this.x = dt, this.y = At, this;
                    },
                    _rotateAround: function(N, k) {
                      var Z = Math.cos(N), dt = Math.sin(N), At = k.x + Z * (this.x - k.x) - dt * (this.y - k.y), Dt = k.y + dt * (this.x - k.x) + Z * (this.y - k.y);
                      return this.x = At, this.y = Dt, this;
                    },
                    _round: function() {
                      return this.x = Math.round(this.x), this.y = Math.round(this.y), this;
                    }
                  }, p.convert = function(N) {
                    return N instanceof p ? N : Array.isArray(N) ? new p(N[0], N[1]) : N;
                  };
                  var u = /* @__PURE__ */ T(A), t = r;
                  function r(N, k, Z, dt) {
                    this.cx = 3 * N, this.bx = 3 * (Z - N) - this.cx, this.ax = 1 - this.cx - this.bx, this.cy = 3 * k, this.by = 3 * (dt - k) - this.cy, this.ay = 1 - this.cy - this.by, this.p1x = N, this.p1y = k, this.p2x = Z, this.p2y = dt;
                  }
                  r.prototype = {
                    sampleCurveX: function(N) {
                      return ((this.ax * N + this.bx) * N + this.cx) * N;
                    },
                    sampleCurveY: function(N) {
                      return ((this.ay * N + this.by) * N + this.cy) * N;
                    },
                    sampleCurveDerivativeX: function(N) {
                      return (3 * this.ax * N + 2 * this.bx) * N + this.cx;
                    },
                    solveCurveX: function(N, k) {
                      if (k === void 0 && (k = 1e-6), N < 0) return 0;
                      if (N > 1) return 1;
                      for (var Z = N, dt = 0; dt < 8; dt++) {
                        var At = this.sampleCurveX(Z) - N;
                        if (Math.abs(At) < k) return Z;
                        var Dt = this.sampleCurveDerivativeX(Z);
                        if (Math.abs(Dt) < 1e-6) break;
                        Z = Z - At / Dt;
                      }
                      var Ut = 0, se = 1;
                      for (Z = N, dt = 0; dt < 20 && (At = this.sampleCurveX(Z), !(Math.abs(At - N) < k)); dt++)
                        N > At ? Ut = Z : se = Z, Z = (se - Ut) * 0.5 + Ut;
                      return Z;
                    },
                    solve: function(N, k) {
                      return this.sampleCurveY(this.solveCurveX(N, k));
                    }
                  };
                  var i = /* @__PURE__ */ T(t);
                  let a;
                  function l() {
                    return a == null && (a = typeof OffscreenCanvas < "u" && new OffscreenCanvas(1, 1).getContext("2d") && typeof createImageBitmap == "function"), a;
                  }
                  let o;
                  function y() {
                    if (o == null && (o = !1, l())) {
                      const Z = new OffscreenCanvas(5, 5).getContext("2d", { willReadFrequently: !0 });
                      if (Z) {
                        for (let At = 0; At < 25; At++) {
                          const Dt = At * 4;
                          Z.fillStyle = `rgb(${Dt},${Dt + 1},${Dt + 2})`, Z.fillRect(At % 5, Math.floor(At / 5), 1, 1);
                        }
                        const dt = Z.getImageData(0, 0, 5, 5).data;
                        for (let At = 0; At < 100; At++)
                          if (At % 4 !== 3 && dt[At] !== At) {
                            o = !0;
                            break;
                          }
                      }
                    }
                    return o || !1;
                  }
                  function g(N) {
                    let k = 1 / 0, Z = 1 / 0, dt = -1 / 0, At = -1 / 0;
                    for (const Dt of N)
                      k = Math.min(k, Dt.x), Z = Math.min(Z, Dt.y), dt = Math.max(dt, Dt.x), At = Math.max(At, Dt.y);
                    return [k, Z, dt, At];
                  }
                  function x(N) {
                    if (N <= 0)
                      return 0;
                    if (N >= 1)
                      return 1;
                    const k = N * N, Z = k * N;
                    return 4 * (N < 0.5 ? Z : 3 * (N - k) + Z - 0.75);
                  }
                  function c(N, k, Z, dt) {
                    const At = new i(N, k, Z, dt);
                    return (Dt) => At.solve(Dt);
                  }
                  const v = c(0.25, 0.1, 0.25, 1);
                  function f(N, k, Z) {
                    return Math.min(Z, Math.max(k, N));
                  }
                  function _(N, k, Z) {
                    const dt = Z - k, At = ((N - k) % dt + dt) % dt + k;
                    return At === k ? Z : At;
                  }
                  function S(N, k) {
                    const Z = [];
                    for (const dt in N)
                      dt in k || Z.push(dt);
                    return Z;
                  }
                  function M(N, ...k) {
                    for (const Z of k)
                      for (const dt in Z)
                        N[dt] = Z[dt];
                    return N;
                  }
                  function C(N, k) {
                    const Z = {};
                    for (let dt = 0; dt < k.length; dt++) {
                      const At = k[dt];
                      At in N && (Z[At] = N[At]);
                    }
                    return Z;
                  }
                  let m = 1;
                  function L() {
                    return m++;
                  }
                  function d(N) {
                    return Math.log(N) / Math.LN2 % 1 === 0;
                  }
                  function h(N) {
                    return N <= 1 ? 1 : Math.pow(2, Math.ceil(Math.log(N) / Math.LN2));
                  }
                  function E(N, k, Z) {
                    const dt = {};
                    for (const At in N)
                      dt[At] = k.call(this, N[At], At, N);
                    return dt;
                  }
                  function w(N, k, Z) {
                    const dt = {};
                    for (const At in N)
                      k.call(this, N[At], At, N) && (dt[At] = N[At]);
                    return dt;
                  }
                  function z(N, k) {
                    if (Array.isArray(N)) {
                      if (!Array.isArray(k) || N.length !== k.length)
                        return !1;
                      for (let Z = 0; Z < N.length; Z++)
                        if (!z(N[Z], k[Z]))
                          return !1;
                      return !0;
                    }
                    if (typeof N == "object" && N !== null && k !== null) {
                      if (typeof k != "object" || Object.keys(N).length !== Object.keys(k).length)
                        return !1;
                      for (const dt in N)
                        if (!z(N[dt], k[dt]))
                          return !1;
                      return !0;
                    }
                    return N === k;
                  }
                  function O(N) {
                    return Array.isArray(N) ? N.map(O) : typeof N == "object" && N ? E(N, O) : N;
                  }
                  function B(N, k) {
                    for (let Z = 0; Z < N.length; Z++)
                      if (k.indexOf(N[Z]) >= 0)
                        return !0;
                    return !1;
                  }
                  const V = {};
                  function U(N) {
                    V[N] || (typeof console < "u" && console.warn(N), V[N] = !0);
                  }
                  function H(N, k, Z) {
                    return (Z.y - N.y) * (k.x - N.x) > (k.y - N.y) * (Z.x - N.x);
                  }
                  function F(N, k, Z, dt) {
                    const At = k.y - N.y, Dt = k.x - N.x, Ut = dt.y - Z.y, se = dt.x - Z.x, Ie = Ut * Dt - se * At;
                    if (Ie === 0)
                      return null;
                    const He = N.y - Z.y, Ke = N.x - Z.x, cr = (se * He - Ut * Ke) / Ie;
                    return new u(N.x + cr * Dt, N.y + cr * At);
                  }
                  function G([N, k, Z]) {
                    return k += 90, k *= Math.PI / 180, Z *= Math.PI / 180, {
                      x: N * Math.cos(k) * Math.sin(Z),
                      y: N * Math.sin(k) * Math.sin(Z),
                      z: N * Math.cos(Z)
                    };
                  }
                  function q(N) {
                    return typeof WorkerGlobalScope < "u" && typeof N < "u" && N instanceof WorkerGlobalScope;
                  }
                  function rt(N) {
                    const k = /(?:^|(?:\s*\,\s*))([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g, Z = {};
                    if (N.replace(k, (dt, At, Dt, Ut) => {
                      const se = Dt || Ut;
                      return Z[At] = se ? se.toLowerCase() : !0, "";
                    }), Z["max-age"]) {
                      const dt = parseInt(Z["max-age"], 10);
                      isNaN(dt) ? delete Z["max-age"] : Z["max-age"] = dt;
                    }
                    return Z;
                  }
                  let st = null;
                  function vt(N) {
                    if (st == null) {
                      const k = N.navigator ? N.navigator.userAgent : null;
                      st = !!N.safari || !!(k && (/\b(iPad|iPhone|iPod)\b/.test(k) || k.match("Safari") && !k.match("Chrome")));
                    }
                    return st;
                  }
                  function ht(N) {
                    return typeof ImageBitmap < "u" && N instanceof ImageBitmap;
                  }
                  const et = (N) => s(void 0, void 0, void 0, function* () {
                    if (N.byteLength === 0)
                      return createImageBitmap(new ImageData(1, 1));
                    const k = new Blob([new Uint8Array(N)], { type: "image/png" });
                    try {
                      return createImageBitmap(k);
                    } catch (Z) {
                      throw new Error(`Could not load image because of ${Z.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`);
                    }
                  }), Q = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=", j = (N) => new Promise((k, Z) => {
                    const dt = new Image();
                    dt.onload = () => {
                      k(dt), URL.revokeObjectURL(dt.src), dt.onload = null, window.requestAnimationFrame(() => {
                        dt.src = Q;
                      });
                    }, dt.onerror = () => Z(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."));
                    const At = new Blob([new Uint8Array(N)], { type: "image/png" });
                    dt.src = N.byteLength ? URL.createObjectURL(At) : Q;
                  });
                  function at(N, k, Z, dt, At) {
                    const Dt = Math.max(-k, 0) * 4, Ie = (Math.max(0, Z) - Z) * dt * 4 + Dt, He = dt * 4, Ke = Math.max(0, k), cr = Math.max(0, Z), Mr = Math.min(N.width, k + dt), Vr = Math.min(N.height, Z + At);
                    return {
                      rect: {
                        x: Ke,
                        y: cr,
                        width: Mr - Ke,
                        height: Vr - cr
                      },
                      layout: [{ offset: Ie, stride: He }]
                    };
                  }
                  function ut(N, k, Z, dt, At) {
                    return s(this, void 0, void 0, function* () {
                      if (typeof VideoFrame > "u")
                        throw new Error("VideoFrame not supported");
                      const Dt = new VideoFrame(N, { timestamp: 0 });
                      try {
                        const Ut = Dt == null ? void 0 : Dt.format;
                        if (!Ut || !(Ut.startsWith("BGR") || Ut.startsWith("RGB")))
                          throw new Error(`Unrecognized format ${Ut}`);
                        const se = Ut.startsWith("BGR"), Ie = new Uint8ClampedArray(dt * At * 4);
                        if (yield Dt.copyTo(Ie, at(N, k, Z, dt, At)), se)
                          for (let He = 0; He < Ie.length; He += 4) {
                            const Ke = Ie[He];
                            Ie[He] = Ie[He + 2], Ie[He + 2] = Ke;
                          }
                        return Ie;
                      } finally {
                        Dt.close();
                      }
                    });
                  }
                  let nt, X;
                  function ct(N, k, Z, dt, At) {
                    const Dt = N.width, Ut = N.height;
                    (!nt || !X) && (nt = new OffscreenCanvas(Dt, Ut), X = nt.getContext("2d", { willReadFrequently: !0 })), nt.width = Dt, nt.height = Ut, X.drawImage(N, 0, 0, Dt, Ut);
                    const se = X.getImageData(k, Z, dt, At);
                    return X.clearRect(0, 0, Dt, Ut), se.data;
                  }
                  function lt(N, k, Z, dt, At) {
                    return s(this, void 0, void 0, function* () {
                      if (y())
                        try {
                          return yield ut(N, k, Z, dt, At);
                        } catch {
                        }
                      return ct(N, k, Z, dt, At);
                    });
                  }
                  function pt(N, k, Z, dt) {
                    return N.addEventListener(k, Z, dt), {
                      unsubscribe: () => {
                        N.removeEventListener(k, Z, dt);
                      }
                    };
                  }
                  function wt(N) {
                    return N * Math.PI / 180;
                  }
                  const Et = "AbortError";
                  function Ct(N) {
                    return N.message === Et;
                  }
                  function Gt() {
                    return new Error(Et);
                  }
                  const Jt = {
                    MAX_PARALLEL_IMAGE_REQUESTS: 16,
                    MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME: 8,
                    MAX_TILE_CACHE_ZOOM_LEVELS: 5,
                    REGISTERED_PROTOCOLS: {},
                    WORKER_URL: ""
                  };
                  function Qt(N) {
                    return Jt.REGISTERED_PROTOCOLS[N.substring(0, N.indexOf("://"))];
                  }
                  function Vt(N, k) {
                    Jt.REGISTERED_PROTOCOLS[N] = k;
                  }
                  function zt(N) {
                    delete Jt.REGISTERED_PROTOCOLS[N];
                  }
                  const Rt = "global-dispatcher";
                  class Wt extends Error {
                    /**
                     * @param status - The response's HTTP status code.
                     * @param statusText - The response's HTTP status text.
                     * @param url - The request's URL.
                     * @param body - The response's body.
                     */
                    constructor(k, Z, dt, At) {
                      super(`AJAXError: ${Z} (${k}): ${dt}`), this.status = k, this.statusText = Z, this.url = dt, this.body = At;
                    }
                  }
                  const kt = () => q(self) ? self.worker && self.worker.referrer : (window.location.protocol === "blob:" ? window.parent : window).location.href, re = (N) => /^file:/.test(N) || /^file:/.test(kt()) && !/^\w+:/.test(N);
                  function ge(N, k) {
                    return s(this, void 0, void 0, function* () {
                      const Z = new Request(N.url, {
                        method: N.method || "GET",
                        body: N.body,
                        credentials: N.credentials,
                        headers: N.headers,
                        cache: N.cache,
                        referrer: kt(),
                        signal: k.signal
                      });
                      N.type === "json" && !Z.headers.has("Accept") && Z.headers.set("Accept", "application/json");
                      const dt = yield fetch(Z);
                      if (!dt.ok) {
                        const Ut = yield dt.blob();
                        throw new Wt(dt.status, dt.statusText, N.url, Ut);
                      }
                      let At;
                      N.type === "arrayBuffer" || N.type === "image" ? At = dt.arrayBuffer() : N.type === "json" ? At = dt.json() : At = dt.text();
                      const Dt = yield At;
                      if (k.signal.aborted)
                        throw Gt();
                      return { data: Dt, cacheControl: dt.headers.get("Cache-Control"), expires: dt.headers.get("Expires") };
                    });
                  }
                  function _e(N, k) {
                    return new Promise((Z, dt) => {
                      var At;
                      const Dt = new XMLHttpRequest();
                      Dt.open(N.method || "GET", N.url, !0), (N.type === "arrayBuffer" || N.type === "image") && (Dt.responseType = "arraybuffer");
                      for (const Ut in N.headers)
                        Dt.setRequestHeader(Ut, N.headers[Ut]);
                      N.type === "json" && (Dt.responseType = "text", !((At = N.headers) === null || At === void 0) && At.Accept || Dt.setRequestHeader("Accept", "application/json")), Dt.withCredentials = N.credentials === "include", Dt.onerror = () => {
                        dt(new Error(Dt.statusText));
                      }, Dt.onload = () => {
                        if (!k.signal.aborted)
                          if ((Dt.status >= 200 && Dt.status < 300 || Dt.status === 0) && Dt.response !== null) {
                            let Ut = Dt.response;
                            if (N.type === "json")
                              try {
                                Ut = JSON.parse(Dt.response);
                              } catch (se) {
                                dt(se);
                                return;
                              }
                            Z({ data: Ut, cacheControl: Dt.getResponseHeader("Cache-Control"), expires: Dt.getResponseHeader("Expires") });
                          } else {
                            const Ut = new Blob([Dt.response], { type: Dt.getResponseHeader("Content-Type") });
                            dt(new Wt(Dt.status, Dt.statusText, N.url, Ut));
                          }
                      }, k.signal.addEventListener("abort", () => {
                        Dt.abort(), dt(Gt());
                      }), Dt.send(N.body);
                    });
                  }
                  const ce = function(N, k) {
                    if (/:\/\//.test(N.url) && !/^https?:|^file:/.test(N.url)) {
                      const Z = Qt(N.url);
                      if (Z)
                        return Z(N, k);
                      if (q(self) && self.worker && self.worker.actor)
                        return self.worker.actor.sendAsync({ type: "GR", data: N, targetMapId: Rt }, k);
                    }
                    if (!re(N.url)) {
                      if (fetch && Request && AbortController && Object.prototype.hasOwnProperty.call(Request.prototype, "signal"))
                        return ge(N, k);
                      if (q(self) && self.worker && self.worker.actor)
                        return self.worker.actor.sendAsync({ type: "GR", data: N, mustQueue: !0, targetMapId: Rt }, k);
                    }
                    return _e(N, k);
                  }, ae = (N, k) => ce(M(N, { type: "json" }), k), Se = (N, k) => ce(M(N, { type: "arrayBuffer" }), k);
                  function ze(N) {
                    if (!N || N.indexOf("://") <= 0 || // relative URL
                    N.indexOf("data:image/") === 0 || // data image URL
                    N.indexOf("blob:") === 0)
                      return !0;
                    const k = new URL(N), Z = window.location;
                    return k.protocol === Z.protocol && k.host === Z.host;
                  }
                  const Ne = (N) => {
                    const k = window.document.createElement("video");
                    return k.muted = !0, new Promise((Z) => {
                      k.onloadstart = () => {
                        Z(k);
                      };
                      for (const dt of N) {
                        const At = window.document.createElement("source");
                        ze(dt) || (k.crossOrigin = "Anonymous"), At.src = dt, k.appendChild(At);
                      }
                    });
                  };
                  function Ve(N, k, Z) {
                    Z[N] && Z[N].indexOf(k) !== -1 || (Z[N] = Z[N] || [], Z[N].push(k));
                  }
                  function Oe(N, k, Z) {
                    if (Z && Z[N]) {
                      const dt = Z[N].indexOf(k);
                      dt !== -1 && Z[N].splice(dt, 1);
                    }
                  }
                  class ur {
                    constructor(k, Z = {}) {
                      M(this, Z), this.type = k;
                    }
                  }
                  class ie extends ur {
                    constructor(k, Z = {}) {
                      super("error", M({ error: k }, Z));
                    }
                  }
                  class $t {
                    /**
                     * Adds a listener to a specified event type.
                     *
                     * @param type - The event type to add a listen for.
                     * @param listener - The function to be called when the event is fired.
                     * The listener function is called with the data object passed to `fire`,
                     * extended with `target` and `type` properties.
                     */
                    on(k, Z) {
                      return this._listeners = this._listeners || {}, Ve(k, Z, this._listeners), this;
                    }
                    /**
                     * Removes a previously registered event listener.
                     *
                     * @param type - The event type to remove listeners for.
                     * @param listener - The listener function to remove.
                     */
                    off(k, Z) {
                      return Oe(k, Z, this._listeners), Oe(k, Z, this._oneTimeListeners), this;
                    }
                    /**
                     * Adds a listener that will be called only once to a specified event type.
                     *
                     * The listener will be called first time the event fires after the listener is registered.
                     *
                     * @param type - The event type to listen for.
                     * @param listener - The function to be called when the event is fired the first time.
                     * @returns `this` or a promise if a listener is not provided
                     */
                    once(k, Z) {
                      return Z ? (this._oneTimeListeners = this._oneTimeListeners || {}, Ve(k, Z, this._oneTimeListeners), this) : new Promise((dt) => this.once(k, dt));
                    }
                    fire(k, Z) {
                      typeof k == "string" && (k = new ur(k, Z || {}));
                      const dt = k.type;
                      if (this.listens(dt)) {
                        k.target = this;
                        const At = this._listeners && this._listeners[dt] ? this._listeners[dt].slice() : [];
                        for (const se of At)
                          se.call(this, k);
                        const Dt = this._oneTimeListeners && this._oneTimeListeners[dt] ? this._oneTimeListeners[dt].slice() : [];
                        for (const se of Dt)
                          Oe(dt, se, this._oneTimeListeners), se.call(this, k);
                        const Ut = this._eventedParent;
                        Ut && (M(k, typeof this._eventedParentData == "function" ? this._eventedParentData() : this._eventedParentData), Ut.fire(k));
                      } else k instanceof ie && console.error(k.error);
                      return this;
                    }
                    /**
                     * Returns a true if this instance of Evented or any forwardeed instances of Evented have a listener for the specified type.
                     *
                     * @param type - The event type
                     * @returns `true` if there is at least one registered listener for specified event type, `false` otherwise
                     */
                    listens(k) {
                      return this._listeners && this._listeners[k] && this._listeners[k].length > 0 || this._oneTimeListeners && this._oneTimeListeners[k] && this._oneTimeListeners[k].length > 0 || this._eventedParent && this._eventedParent.listens(k);
                    }
                    /**
                     * Bubble all events fired by this instance of Evented to this parent instance of Evented.
                     */
                    setEventedParent(k, Z) {
                      return this._eventedParent = k, this._eventedParentData = Z, this;
                    }
                  }
                  var jt = 8, ee = {
                    version: {
                      required: !0,
                      type: "enum",
                      values: [
                        8
                      ]
                    },
                    name: {
                      type: "string"
                    },
                    metadata: {
                      type: "*"
                    },
                    center: {
                      type: "array",
                      value: "number"
                    },
                    zoom: {
                      type: "number"
                    },
                    bearing: {
                      type: "number",
                      default: 0,
                      period: 360,
                      units: "degrees"
                    },
                    pitch: {
                      type: "number",
                      default: 0,
                      units: "degrees"
                    },
                    light: {
                      type: "light"
                    },
                    sky: {
                      type: "sky"
                    },
                    projection: {
                      type: "projection"
                    },
                    terrain: {
                      type: "terrain"
                    },
                    sources: {
                      required: !0,
                      type: "sources"
                    },
                    sprite: {
                      type: "sprite"
                    },
                    glyphs: {
                      type: "string"
                    },
                    transition: {
                      type: "transition"
                    },
                    layers: {
                      required: !0,
                      type: "array",
                      value: "layer"
                    }
                  }, Bt = {
                    "*": {
                      type: "source"
                    }
                  }, Xt = [
                    "source_vector",
                    "source_raster",
                    "source_raster_dem",
                    "source_geojson",
                    "source_video",
                    "source_image"
                  ], Zt = {
                    type: {
                      required: !0,
                      type: "enum",
                      values: {
                        vector: {}
                      }
                    },
                    url: {
                      type: "string"
                    },
                    tiles: {
                      type: "array",
                      value: "string"
                    },
                    bounds: {
                      type: "array",
                      value: "number",
                      length: 4,
                      default: [
                        -180,
                        -85.051129,
                        180,
                        85.051129
                      ]
                    },
                    scheme: {
                      type: "enum",
                      values: {
                        xyz: {},
                        tms: {}
                      },
                      default: "xyz"
                    },
                    minzoom: {
                      type: "number",
                      default: 0
                    },
                    maxzoom: {
                      type: "number",
                      default: 22
                    },
                    attribution: {
                      type: "string"
                    },
                    promoteId: {
                      type: "promoteId"
                    },
                    volatile: {
                      type: "boolean",
                      default: !1
                    },
                    "*": {
                      type: "*"
                    }
                  }, ye = {
                    type: {
                      required: !0,
                      type: "enum",
                      values: {
                        raster: {}
                      }
                    },
                    url: {
                      type: "string"
                    },
                    tiles: {
                      type: "array",
                      value: "string"
                    },
                    bounds: {
                      type: "array",
                      value: "number",
                      length: 4,
                      default: [
                        -180,
                        -85.051129,
                        180,
                        85.051129
                      ]
                    },
                    minzoom: {
                      type: "number",
                      default: 0
                    },
                    maxzoom: {
                      type: "number",
                      default: 22
                    },
                    tileSize: {
                      type: "number",
                      default: 512,
                      units: "pixels"
                    },
                    scheme: {
                      type: "enum",
                      values: {
                        xyz: {},
                        tms: {}
                      },
                      default: "xyz"
                    },
                    attribution: {
                      type: "string"
                    },
                    volatile: {
                      type: "boolean",
                      default: !1
                    },
                    "*": {
                      type: "*"
                    }
                  }, Mt = {
                    type: {
                      required: !0,
                      type: "enum",
                      values: {
                        "raster-dem": {}
                      }
                    },
                    url: {
                      type: "string"
                    },
                    tiles: {
                      type: "array",
                      value: "string"
                    },
                    bounds: {
                      type: "array",
                      value: "number",
                      length: 4,
                      default: [
                        -180,
                        -85.051129,
                        180,
                        85.051129
                      ]
                    },
                    minzoom: {
                      type: "number",
                      default: 0
                    },
                    maxzoom: {
                      type: "number",
                      default: 22
                    },
                    tileSize: {
                      type: "number",
                      default: 512,
                      units: "pixels"
                    },
                    attribution: {
                      type: "string"
                    },
                    encoding: {
                      type: "enum",
                      values: {
                        terrarium: {},
                        mapbox: {},
                        custom: {}
                      },
                      default: "mapbox"
                    },
                    redFactor: {
                      type: "number",
                      default: 1
                    },
                    blueFactor: {
                      type: "number",
                      default: 1
                    },
                    greenFactor: {
                      type: "number",
                      default: 1
                    },
                    baseShift: {
                      type: "number",
                      default: 0
                    },
                    volatile: {
                      type: "boolean",
                      default: !1
                    },
                    "*": {
                      type: "*"
                    }
                  }, St = {
                    type: {
                      required: !0,
                      type: "enum",
                      values: {
                        geojson: {}
                      }
                    },
                    data: {
                      required: !0,
                      type: "*"
                    },
                    maxzoom: {
                      type: "number",
                      default: 18
                    },
                    attribution: {
                      type: "string"
                    },
                    buffer: {
                      type: "number",
                      default: 128,
                      maximum: 512,
                      minimum: 0
                    },
                    filter: {
                      type: "*"
                    },
                    tolerance: {
                      type: "number",
                      default: 0.375
                    },
                    cluster: {
                      type: "boolean",
                      default: !1
                    },
                    clusterRadius: {
                      type: "number",
                      default: 50,
                      minimum: 0
                    },
                    clusterMaxZoom: {
                      type: "number"
                    },
                    clusterMinPoints: {
                      type: "number"
                    },
                    clusterProperties: {
                      type: "*"
                    },
                    lineMetrics: {
                      type: "boolean",
                      default: !1
                    },
                    generateId: {
                      type: "boolean",
                      default: !1
                    },
                    promoteId: {
                      type: "promoteId"
                    }
                  }, Lt = {
                    type: {
                      required: !0,
                      type: "enum",
                      values: {
                        video: {}
                      }
                    },
                    urls: {
                      required: !0,
                      type: "array",
                      value: "string"
                    },
                    coordinates: {
                      required: !0,
                      type: "array",
                      length: 4,
                      value: {
                        type: "array",
                        length: 2,
                        value: "number"
                      }
                    }
                  }, te = {
                    type: {
                      required: !0,
                      type: "enum",
                      values: {
                        image: {}
                      }
                    },
                    url: {
                      required: !0,
                      type: "string"
                    },
                    coordinates: {
                      required: !0,
                      type: "array",
                      length: 4,
                      value: {
                        type: "array",
                        length: 2,
                        value: "number"
                      }
                    }
                  }, fe = {
                    id: {
                      type: "string",
                      required: !0
                    },
                    type: {
                      type: "enum",
                      values: {
                        fill: {},
                        line: {},
                        symbol: {},
                        circle: {},
                        heatmap: {},
                        "fill-extrusion": {},
                        raster: {},
                        hillshade: {},
                        background: {}
                      },
                      required: !0
                    },
                    metadata: {
                      type: "*"
                    },
                    source: {
                      type: "string"
                    },
                    "source-layer": {
                      type: "string"
                    },
                    minzoom: {
                      type: "number",
                      minimum: 0,
                      maximum: 24
                    },
                    maxzoom: {
                      type: "number",
                      minimum: 0,
                      maximum: 24
                    },
                    filter: {
                      type: "filter"
                    },
                    layout: {
                      type: "layout"
                    },
                    paint: {
                      type: "paint"
                    }
                  }, Me = [
                    "layout_fill",
                    "layout_line",
                    "layout_circle",
                    "layout_heatmap",
                    "layout_fill-extrusion",
                    "layout_symbol",
                    "layout_raster",
                    "layout_hillshade",
                    "layout_background"
                  ], ir = {
                    visibility: {
                      type: "enum",
                      values: {
                        visible: {},
                        none: {}
                      },
                      default: "visible",
                      "property-type": "constant"
                    }
                  }, mr = {
                    "fill-sort-key": {
                      type: "number",
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    visibility: {
                      type: "enum",
                      values: {
                        visible: {},
                        none: {}
                      },
                      default: "visible",
                      "property-type": "constant"
                    }
                  }, Xe = {
                    "circle-sort-key": {
                      type: "number",
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    visibility: {
                      type: "enum",
                      values: {
                        visible: {},
                        none: {}
                      },
                      default: "visible",
                      "property-type": "constant"
                    }
                  }, xe = {
                    visibility: {
                      type: "enum",
                      values: {
                        visible: {},
                        none: {}
                      },
                      default: "visible",
                      "property-type": "constant"
                    }
                  }, me = {
                    "line-cap": {
                      type: "enum",
                      values: {
                        butt: {},
                        round: {},
                        square: {}
                      },
                      default: "butt",
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "line-join": {
                      type: "enum",
                      values: {
                        bevel: {},
                        round: {},
                        miter: {}
                      },
                      default: "miter",
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "line-miter-limit": {
                      type: "number",
                      default: 2,
                      requires: [
                        {
                          "line-join": "miter"
                        }
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "line-round-limit": {
                      type: "number",
                      default: 1.05,
                      requires: [
                        {
                          "line-join": "round"
                        }
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "line-sort-key": {
                      type: "number",
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    visibility: {
                      type: "enum",
                      values: {
                        visible: {},
                        none: {}
                      },
                      default: "visible",
                      "property-type": "constant"
                    }
                  }, Le = {
                    "symbol-placement": {
                      type: "enum",
                      values: {
                        point: {},
                        line: {},
                        "line-center": {}
                      },
                      default: "point",
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "symbol-spacing": {
                      type: "number",
                      default: 250,
                      minimum: 1,
                      units: "pixels",
                      requires: [
                        {
                          "symbol-placement": "line"
                        }
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "symbol-avoid-edges": {
                      type: "boolean",
                      default: !1,
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "symbol-sort-key": {
                      type: "number",
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "symbol-z-order": {
                      type: "enum",
                      values: {
                        auto: {},
                        "viewport-y": {},
                        source: {}
                      },
                      default: "auto",
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "icon-allow-overlap": {
                      type: "boolean",
                      default: !1,
                      requires: [
                        "icon-image",
                        {
                          "!": "icon-overlap"
                        }
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "icon-overlap": {
                      type: "enum",
                      values: {
                        never: {},
                        always: {},
                        cooperative: {}
                      },
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "icon-ignore-placement": {
                      type: "boolean",
                      default: !1,
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "icon-optional": {
                      type: "boolean",
                      default: !1,
                      requires: [
                        "icon-image",
                        "text-field"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "icon-rotation-alignment": {
                      type: "enum",
                      values: {
                        map: {},
                        viewport: {},
                        auto: {}
                      },
                      default: "auto",
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "icon-size": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      units: "factor of the original icon size",
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "icon-text-fit": {
                      type: "enum",
                      values: {
                        none: {},
                        width: {},
                        height: {},
                        both: {}
                      },
                      default: "none",
                      requires: [
                        "icon-image",
                        "text-field"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "icon-text-fit-padding": {
                      type: "array",
                      value: "number",
                      length: 4,
                      default: [
                        0,
                        0,
                        0,
                        0
                      ],
                      units: "pixels",
                      requires: [
                        "icon-image",
                        "text-field",
                        {
                          "icon-text-fit": [
                            "both",
                            "width",
                            "height"
                          ]
                        }
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "icon-image": {
                      type: "resolvedImage",
                      tokens: !0,
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "icon-rotate": {
                      type: "number",
                      default: 0,
                      period: 360,
                      units: "degrees",
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "icon-padding": {
                      type: "padding",
                      default: [
                        2
                      ],
                      units: "pixels",
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "icon-keep-upright": {
                      type: "boolean",
                      default: !1,
                      requires: [
                        "icon-image",
                        {
                          "icon-rotation-alignment": "map"
                        },
                        {
                          "symbol-placement": [
                            "line",
                            "line-center"
                          ]
                        }
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "icon-offset": {
                      type: "array",
                      value: "number",
                      length: 2,
                      default: [
                        0,
                        0
                      ],
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "icon-anchor": {
                      type: "enum",
                      values: {
                        center: {},
                        left: {},
                        right: {},
                        top: {},
                        bottom: {},
                        "top-left": {},
                        "top-right": {},
                        "bottom-left": {},
                        "bottom-right": {}
                      },
                      default: "center",
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "icon-pitch-alignment": {
                      type: "enum",
                      values: {
                        map: {},
                        viewport: {},
                        auto: {}
                      },
                      default: "auto",
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "text-pitch-alignment": {
                      type: "enum",
                      values: {
                        map: {},
                        viewport: {},
                        auto: {}
                      },
                      default: "auto",
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "text-rotation-alignment": {
                      type: "enum",
                      values: {
                        map: {},
                        viewport: {},
                        "viewport-glyph": {},
                        auto: {}
                      },
                      default: "auto",
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "text-field": {
                      type: "formatted",
                      default: "",
                      tokens: !0,
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-font": {
                      type: "array",
                      value: "string",
                      default: [
                        "Open Sans Regular",
                        "Arial Unicode MS Regular"
                      ],
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-size": {
                      type: "number",
                      default: 16,
                      minimum: 0,
                      units: "pixels",
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-max-width": {
                      type: "number",
                      default: 10,
                      minimum: 0,
                      units: "ems",
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-line-height": {
                      type: "number",
                      default: 1.2,
                      units: "ems",
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "text-letter-spacing": {
                      type: "number",
                      default: 0,
                      units: "ems",
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-justify": {
                      type: "enum",
                      values: {
                        auto: {},
                        left: {},
                        center: {},
                        right: {}
                      },
                      default: "center",
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-radial-offset": {
                      type: "number",
                      units: "ems",
                      default: 0,
                      requires: [
                        "text-field"
                      ],
                      "property-type": "data-driven",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      }
                    },
                    "text-variable-anchor": {
                      type: "array",
                      value: "enum",
                      values: {
                        center: {},
                        left: {},
                        right: {},
                        top: {},
                        bottom: {},
                        "top-left": {},
                        "top-right": {},
                        "bottom-left": {},
                        "bottom-right": {}
                      },
                      requires: [
                        "text-field",
                        {
                          "symbol-placement": [
                            "point"
                          ]
                        }
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "text-variable-anchor-offset": {
                      type: "variableAnchorOffsetCollection",
                      requires: [
                        "text-field",
                        {
                          "symbol-placement": [
                            "point"
                          ]
                        }
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-anchor": {
                      type: "enum",
                      values: {
                        center: {},
                        left: {},
                        right: {},
                        top: {},
                        bottom: {},
                        "top-left": {},
                        "top-right": {},
                        "bottom-left": {},
                        "bottom-right": {}
                      },
                      default: "center",
                      requires: [
                        "text-field",
                        {
                          "!": "text-variable-anchor"
                        }
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-max-angle": {
                      type: "number",
                      default: 45,
                      units: "degrees",
                      requires: [
                        "text-field",
                        {
                          "symbol-placement": [
                            "line",
                            "line-center"
                          ]
                        }
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "text-writing-mode": {
                      type: "array",
                      value: "enum",
                      values: {
                        horizontal: {},
                        vertical: {}
                      },
                      requires: [
                        "text-field",
                        {
                          "symbol-placement": [
                            "point"
                          ]
                        }
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "text-rotate": {
                      type: "number",
                      default: 0,
                      period: 360,
                      units: "degrees",
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-padding": {
                      type: "number",
                      default: 2,
                      minimum: 0,
                      units: "pixels",
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "text-keep-upright": {
                      type: "boolean",
                      default: !0,
                      requires: [
                        "text-field",
                        {
                          "text-rotation-alignment": "map"
                        },
                        {
                          "symbol-placement": [
                            "line",
                            "line-center"
                          ]
                        }
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "text-transform": {
                      type: "enum",
                      values: {
                        none: {},
                        uppercase: {},
                        lowercase: {}
                      },
                      default: "none",
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-offset": {
                      type: "array",
                      value: "number",
                      units: "ems",
                      length: 2,
                      default: [
                        0,
                        0
                      ],
                      requires: [
                        "text-field",
                        {
                          "!": "text-radial-offset"
                        }
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-allow-overlap": {
                      type: "boolean",
                      default: !1,
                      requires: [
                        "text-field",
                        {
                          "!": "text-overlap"
                        }
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "text-overlap": {
                      type: "enum",
                      values: {
                        never: {},
                        always: {},
                        cooperative: {}
                      },
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "text-ignore-placement": {
                      type: "boolean",
                      default: !1,
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "text-optional": {
                      type: "boolean",
                      default: !1,
                      requires: [
                        "text-field",
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    visibility: {
                      type: "enum",
                      values: {
                        visible: {},
                        none: {}
                      },
                      default: "visible",
                      "property-type": "constant"
                    }
                  }, qt = {
                    visibility: {
                      type: "enum",
                      values: {
                        visible: {},
                        none: {}
                      },
                      default: "visible",
                      "property-type": "constant"
                    }
                  }, De = {
                    visibility: {
                      type: "enum",
                      values: {
                        visible: {},
                        none: {}
                      },
                      default: "visible",
                      "property-type": "constant"
                    }
                  }, Je = {
                    type: "array",
                    value: "*"
                  }, dr = {
                    type: "enum",
                    values: {
                      "==": {},
                      "!=": {},
                      ">": {},
                      ">=": {},
                      "<": {},
                      "<=": {},
                      in: {},
                      "!in": {},
                      all: {},
                      any: {},
                      none: {},
                      has: {},
                      "!has": {}
                    }
                  }, qe = {
                    type: "enum",
                    values: {
                      Point: {},
                      LineString: {},
                      Polygon: {}
                    }
                  }, we = {
                    type: "array",
                    minimum: 0,
                    maximum: 24,
                    value: [
                      "number",
                      "color"
                    ],
                    length: 2
                  }, ue = {
                    type: "array",
                    value: "*",
                    minimum: 1
                  }, Pe = {
                    anchor: {
                      type: "enum",
                      default: "viewport",
                      values: {
                        map: {},
                        viewport: {}
                      },
                      "property-type": "data-constant",
                      transition: !1,
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      }
                    },
                    position: {
                      type: "array",
                      default: [
                        1.15,
                        210,
                        30
                      ],
                      length: 3,
                      value: "number",
                      "property-type": "data-constant",
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      }
                    },
                    color: {
                      type: "color",
                      "property-type": "data-constant",
                      default: "#ffffff",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      transition: !0
                    },
                    intensity: {
                      type: "number",
                      "property-type": "data-constant",
                      default: 0.5,
                      minimum: 0,
                      maximum: 1,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      transition: !0
                    }
                  }, Ue = {
                    "sky-color": {
                      type: "color",
                      "property-type": "data-constant",
                      default: "#88C6FC",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      transition: !0
                    },
                    "horizon-color": {
                      type: "color",
                      "property-type": "data-constant",
                      default: "#ffffff",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      transition: !0
                    },
                    "fog-color": {
                      type: "color",
                      "property-type": "data-constant",
                      default: "#ffffff",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      transition: !0
                    },
                    "fog-ground-blend": {
                      type: "number",
                      "property-type": "data-constant",
                      default: 0.5,
                      minimum: 0,
                      maximum: 1,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      transition: !0
                    },
                    "horizon-fog-blend": {
                      type: "number",
                      "property-type": "data-constant",
                      default: 0.8,
                      minimum: 0,
                      maximum: 1,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      transition: !0
                    },
                    "sky-horizon-blend": {
                      type: "number",
                      "property-type": "data-constant",
                      default: 0.8,
                      minimum: 0,
                      maximum: 1,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      transition: !0
                    },
                    "atmosphere-blend": {
                      type: "number",
                      "property-type": "data-constant",
                      default: 0.8,
                      minimum: 0,
                      maximum: 1,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      transition: !0
                    }
                  }, Ye = {
                    source: {
                      type: "string",
                      required: !0
                    },
                    exaggeration: {
                      type: "number",
                      minimum: 0,
                      default: 1
                    }
                  }, rr = {
                    type: {
                      type: "enum",
                      default: "mercator",
                      values: {
                        mercator: {},
                        globe: {}
                      }
                    }
                  }, lr = [
                    "paint_fill",
                    "paint_line",
                    "paint_circle",
                    "paint_heatmap",
                    "paint_fill-extrusion",
                    "paint_symbol",
                    "paint_raster",
                    "paint_hillshade",
                    "paint_background"
                  ], hr = {
                    "fill-antialias": {
                      type: "boolean",
                      default: !0,
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "fill-opacity": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      maximum: 1,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "fill-color": {
                      type: "color",
                      default: "#000000",
                      transition: !0,
                      requires: [
                        {
                          "!": "fill-pattern"
                        }
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "fill-outline-color": {
                      type: "color",
                      transition: !0,
                      requires: [
                        {
                          "!": "fill-pattern"
                        },
                        {
                          "fill-antialias": !0
                        }
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "fill-translate": {
                      type: "array",
                      value: "number",
                      length: 2,
                      default: [
                        0,
                        0
                      ],
                      transition: !0,
                      units: "pixels",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "fill-translate-anchor": {
                      type: "enum",
                      values: {
                        map: {},
                        viewport: {}
                      },
                      default: "map",
                      requires: [
                        "fill-translate"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "fill-pattern": {
                      type: "resolvedImage",
                      transition: !0,
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "cross-faded-data-driven"
                    }
                  }, Sr = {
                    "line-opacity": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      maximum: 1,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "line-color": {
                      type: "color",
                      default: "#000000",
                      transition: !0,
                      requires: [
                        {
                          "!": "line-pattern"
                        }
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "line-translate": {
                      type: "array",
                      value: "number",
                      length: 2,
                      default: [
                        0,
                        0
                      ],
                      transition: !0,
                      units: "pixels",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "line-translate-anchor": {
                      type: "enum",
                      values: {
                        map: {},
                        viewport: {}
                      },
                      default: "map",
                      requires: [
                        "line-translate"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "line-width": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      transition: !0,
                      units: "pixels",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "line-gap-width": {
                      type: "number",
                      default: 0,
                      minimum: 0,
                      transition: !0,
                      units: "pixels",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "line-offset": {
                      type: "number",
                      default: 0,
                      transition: !0,
                      units: "pixels",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "line-blur": {
                      type: "number",
                      default: 0,
                      minimum: 0,
                      transition: !0,
                      units: "pixels",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "line-dasharray": {
                      type: "array",
                      value: "number",
                      minimum: 0,
                      transition: !0,
                      units: "line widths",
                      requires: [
                        {
                          "!": "line-pattern"
                        }
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "cross-faded"
                    },
                    "line-pattern": {
                      type: "resolvedImage",
                      transition: !0,
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom",
                          "feature"
                        ]
                      },
                      "property-type": "cross-faded-data-driven"
                    },
                    "line-gradient": {
                      type: "color",
                      transition: !1,
                      requires: [
                        {
                          "!": "line-dasharray"
                        },
                        {
                          "!": "line-pattern"
                        },
                        {
                          source: "geojson",
                          has: {
                            lineMetrics: !0
                          }
                        }
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "line-progress"
                        ]
                      },
                      "property-type": "color-ramp"
                    }
                  }, Dr = {
                    "circle-radius": {
                      type: "number",
                      default: 5,
                      minimum: 0,
                      transition: !0,
                      units: "pixels",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "circle-color": {
                      type: "color",
                      default: "#000000",
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "circle-blur": {
                      type: "number",
                      default: 0,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "circle-opacity": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      maximum: 1,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "circle-translate": {
                      type: "array",
                      value: "number",
                      length: 2,
                      default: [
                        0,
                        0
                      ],
                      transition: !0,
                      units: "pixels",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "circle-translate-anchor": {
                      type: "enum",
                      values: {
                        map: {},
                        viewport: {}
                      },
                      default: "map",
                      requires: [
                        "circle-translate"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "circle-pitch-scale": {
                      type: "enum",
                      values: {
                        map: {},
                        viewport: {}
                      },
                      default: "map",
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "circle-pitch-alignment": {
                      type: "enum",
                      values: {
                        map: {},
                        viewport: {}
                      },
                      default: "viewport",
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "circle-stroke-width": {
                      type: "number",
                      default: 0,
                      minimum: 0,
                      transition: !0,
                      units: "pixels",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "circle-stroke-color": {
                      type: "color",
                      default: "#000000",
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "circle-stroke-opacity": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      maximum: 1,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    }
                  }, Or = {
                    "heatmap-radius": {
                      type: "number",
                      default: 30,
                      minimum: 1,
                      transition: !0,
                      units: "pixels",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "heatmap-weight": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      transition: !1,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "heatmap-intensity": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "heatmap-color": {
                      type: "color",
                      default: [
                        "interpolate",
                        [
                          "linear"
                        ],
                        [
                          "heatmap-density"
                        ],
                        0,
                        "rgba(0, 0, 255, 0)",
                        0.1,
                        "royalblue",
                        0.3,
                        "cyan",
                        0.5,
                        "lime",
                        0.7,
                        "yellow",
                        1,
                        "red"
                      ],
                      transition: !1,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "heatmap-density"
                        ]
                      },
                      "property-type": "color-ramp"
                    },
                    "heatmap-opacity": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      maximum: 1,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    }
                  }, Br = {
                    "icon-opacity": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      maximum: 1,
                      transition: !0,
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "icon-color": {
                      type: "color",
                      default: "#000000",
                      transition: !0,
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "icon-halo-color": {
                      type: "color",
                      default: "rgba(0, 0, 0, 0)",
                      transition: !0,
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "icon-halo-width": {
                      type: "number",
                      default: 0,
                      minimum: 0,
                      transition: !0,
                      units: "pixels",
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "icon-halo-blur": {
                      type: "number",
                      default: 0,
                      minimum: 0,
                      transition: !0,
                      units: "pixels",
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "icon-translate": {
                      type: "array",
                      value: "number",
                      length: 2,
                      default: [
                        0,
                        0
                      ],
                      transition: !0,
                      units: "pixels",
                      requires: [
                        "icon-image"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "icon-translate-anchor": {
                      type: "enum",
                      values: {
                        map: {},
                        viewport: {}
                      },
                      default: "map",
                      requires: [
                        "icon-image",
                        "icon-translate"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "text-opacity": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      maximum: 1,
                      transition: !0,
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-color": {
                      type: "color",
                      default: "#000000",
                      transition: !0,
                      overridable: !0,
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-halo-color": {
                      type: "color",
                      default: "rgba(0, 0, 0, 0)",
                      transition: !0,
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-halo-width": {
                      type: "number",
                      default: 0,
                      minimum: 0,
                      transition: !0,
                      units: "pixels",
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-halo-blur": {
                      type: "number",
                      default: 0,
                      minimum: 0,
                      transition: !0,
                      units: "pixels",
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom",
                          "feature",
                          "feature-state"
                        ]
                      },
                      "property-type": "data-driven"
                    },
                    "text-translate": {
                      type: "array",
                      value: "number",
                      length: 2,
                      default: [
                        0,
                        0
                      ],
                      transition: !0,
                      units: "pixels",
                      requires: [
                        "text-field"
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "text-translate-anchor": {
                      type: "enum",
                      values: {
                        map: {},
                        viewport: {}
                      },
                      default: "map",
                      requires: [
                        "text-field",
                        "text-translate"
                      ],
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    }
                  }, Nr = {
                    "raster-opacity": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      maximum: 1,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "raster-hue-rotate": {
                      type: "number",
                      default: 0,
                      period: 360,
                      transition: !0,
                      units: "degrees",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "raster-brightness-min": {
                      type: "number",
                      default: 0,
                      minimum: 0,
                      maximum: 1,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "raster-brightness-max": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      maximum: 1,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "raster-saturation": {
                      type: "number",
                      default: 0,
                      minimum: -1,
                      maximum: 1,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "raster-contrast": {
                      type: "number",
                      default: 0,
                      minimum: -1,
                      maximum: 1,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "raster-resampling": {
                      type: "enum",
                      values: {
                        linear: {},
                        nearest: {}
                      },
                      default: "linear",
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "raster-fade-duration": {
                      type: "number",
                      default: 300,
                      minimum: 0,
                      transition: !1,
                      units: "milliseconds",
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    }
                  }, Xr = {
                    "hillshade-illumination-direction": {
                      type: "number",
                      default: 335,
                      minimum: 0,
                      maximum: 359,
                      transition: !1,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "hillshade-illumination-anchor": {
                      type: "enum",
                      values: {
                        map: {},
                        viewport: {}
                      },
                      default: "viewport",
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "hillshade-exaggeration": {
                      type: "number",
                      default: 0.5,
                      minimum: 0,
                      maximum: 1,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "hillshade-shadow-color": {
                      type: "color",
                      default: "#000000",
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "hillshade-highlight-color": {
                      type: "color",
                      default: "#FFFFFF",
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "hillshade-accent-color": {
                      type: "color",
                      default: "#000000",
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    }
                  }, Gr = {
                    "background-color": {
                      type: "color",
                      default: "#000000",
                      transition: !0,
                      requires: [
                        {
                          "!": "background-pattern"
                        }
                      ],
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    },
                    "background-pattern": {
                      type: "resolvedImage",
                      transition: !0,
                      expression: {
                        interpolated: !1,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "cross-faded"
                    },
                    "background-opacity": {
                      type: "number",
                      default: 1,
                      minimum: 0,
                      maximum: 1,
                      transition: !0,
                      expression: {
                        interpolated: !0,
                        parameters: [
                          "zoom"
                        ]
                      },
                      "property-type": "data-constant"
                    }
                  }, oe = {
                    duration: {
                      type: "number",
                      default: 300,
                      minimum: 0,
                      units: "milliseconds"
                    },
                    delay: {
                      type: "number",
                      default: 0,
                      minimum: 0,
                      units: "milliseconds"
                    }
                  }, de = {
                    "*": {
                      type: "string"
                    }
                  }, or = {
                    $version: jt,
                    $root: ee,
                    sources: Bt,
                    source: Xt,
                    source_vector: Zt,
                    source_raster: ye,
                    source_raster_dem: Mt,
                    source_geojson: St,
                    source_video: Lt,
                    source_image: te,
                    layer: fe,
                    layout: Me,
                    layout_background: ir,
                    layout_fill: mr,
                    layout_circle: Xe,
                    layout_heatmap: xe,
                    "layout_fill-extrusion": {
                      visibility: {
                        type: "enum",
                        values: {
                          visible: {},
                          none: {}
                        },
                        default: "visible",
                        "property-type": "constant"
                      }
                    },
                    layout_line: me,
                    layout_symbol: Le,
                    layout_raster: qt,
                    layout_hillshade: De,
                    filter: Je,
                    filter_operator: dr,
                    geometry_type: qe,
                    function: {
                      expression: {
                        type: "expression"
                      },
                      stops: {
                        type: "array",
                        value: "function_stop"
                      },
                      base: {
                        type: "number",
                        default: 1,
                        minimum: 0
                      },
                      property: {
                        type: "string",
                        default: "$zoom"
                      },
                      type: {
                        type: "enum",
                        values: {
                          identity: {},
                          exponential: {},
                          interval: {},
                          categorical: {}
                        },
                        default: "exponential"
                      },
                      colorSpace: {
                        type: "enum",
                        values: {
                          rgb: {},
                          lab: {},
                          hcl: {}
                        },
                        default: "rgb"
                      },
                      default: {
                        type: "*",
                        required: !1
                      }
                    },
                    function_stop: we,
                    expression: ue,
                    light: Pe,
                    sky: Ue,
                    terrain: Ye,
                    projection: rr,
                    paint: lr,
                    paint_fill: hr,
                    "paint_fill-extrusion": {
                      "fill-extrusion-opacity": {
                        type: "number",
                        default: 1,
                        minimum: 0,
                        maximum: 1,
                        transition: !0,
                        expression: {
                          interpolated: !0,
                          parameters: [
                            "zoom"
                          ]
                        },
                        "property-type": "data-constant"
                      },
                      "fill-extrusion-color": {
                        type: "color",
                        default: "#000000",
                        transition: !0,
                        requires: [
                          {
                            "!": "fill-extrusion-pattern"
                          }
                        ],
                        expression: {
                          interpolated: !0,
                          parameters: [
                            "zoom",
                            "feature",
                            "feature-state"
                          ]
                        },
                        "property-type": "data-driven"
                      },
                      "fill-extrusion-translate": {
                        type: "array",
                        value: "number",
                        length: 2,
                        default: [
                          0,
                          0
                        ],
                        transition: !0,
                        units: "pixels",
                        expression: {
                          interpolated: !0,
                          parameters: [
                            "zoom"
                          ]
                        },
                        "property-type": "data-constant"
                      },
                      "fill-extrusion-translate-anchor": {
                        type: "enum",
                        values: {
                          map: {},
                          viewport: {}
                        },
                        default: "map",
                        requires: [
                          "fill-extrusion-translate"
                        ],
                        expression: {
                          interpolated: !1,
                          parameters: [
                            "zoom"
                          ]
                        },
                        "property-type": "data-constant"
                      },
                      "fill-extrusion-pattern": {
                        type: "resolvedImage",
                        transition: !0,
                        expression: {
                          interpolated: !1,
                          parameters: [
                            "zoom",
                            "feature"
                          ]
                        },
                        "property-type": "cross-faded-data-driven"
                      },
                      "fill-extrusion-height": {
                        type: "number",
                        default: 0,
                        minimum: 0,
                        units: "meters",
                        transition: !0,
                        expression: {
                          interpolated: !0,
                          parameters: [
                            "zoom",
                            "feature",
                            "feature-state"
                          ]
                        },
                        "property-type": "data-driven"
                      },
                      "fill-extrusion-base": {
                        type: "number",
                        default: 0,
                        minimum: 0,
                        units: "meters",
                        transition: !0,
                        requires: [
                          "fill-extrusion-height"
                        ],
                        expression: {
                          interpolated: !0,
                          parameters: [
                            "zoom",
                            "feature",
                            "feature-state"
                          ]
                        },
                        "property-type": "data-driven"
                      },
                      "fill-extrusion-vertical-gradient": {
                        type: "boolean",
                        default: !0,
                        transition: !1,
                        expression: {
                          interpolated: !1,
                          parameters: [
                            "zoom"
                          ]
                        },
                        "property-type": "data-constant"
                      }
                    },
                    paint_line: Sr,
                    paint_circle: Dr,
                    paint_heatmap: Or,
                    paint_symbol: Br,
                    paint_raster: Nr,
                    paint_hillshade: Xr,
                    paint_background: Gr,
                    transition: oe,
                    "property-type": {
                      "data-driven": {
                        type: "property-type"
                      },
                      "cross-faded": {
                        type: "property-type"
                      },
                      "cross-faded-data-driven": {
                        type: "property-type"
                      },
                      "color-ramp": {
                        type: "property-type"
                      },
                      "data-constant": {
                        type: "property-type"
                      },
                      constant: {
                        type: "property-type"
                      }
                    },
                    promoteId: de
                  };
                  const Er = ["type", "source", "source-layer", "minzoom", "maxzoom", "filter", "layout"];
                  function Tr(N, k) {
                    const Z = {};
                    for (const dt in N)
                      dt !== "ref" && (Z[dt] = N[dt]);
                    return Er.forEach((dt) => {
                      dt in k && (Z[dt] = k[dt]);
                    }), Z;
                  }
                  function tr(N) {
                    N = N.slice();
                    const k = /* @__PURE__ */ Object.create(null);
                    for (let Z = 0; Z < N.length; Z++)
                      k[N[Z].id] = N[Z];
                    for (let Z = 0; Z < N.length; Z++)
                      "ref" in N[Z] && (N[Z] = Tr(N[Z], k[N[Z].ref]));
                    return N;
                  }
                  function yr(N, k) {
                    if (Array.isArray(N)) {
                      if (!Array.isArray(k) || N.length !== k.length)
                        return !1;
                      for (let Z = 0; Z < N.length; Z++)
                        if (!yr(N[Z], k[Z]))
                          return !1;
                      return !0;
                    }
                    if (typeof N == "object" && N !== null && k !== null) {
                      if (typeof k != "object" || Object.keys(N).length !== Object.keys(k).length)
                        return !1;
                      for (const dt in N)
                        if (!yr(N[dt], k[dt]))
                          return !1;
                      return !0;
                    }
                    return N === k;
                  }
                  function Ir(N, k) {
                    N.push(k);
                  }
                  function Cr(N, k, Z) {
                    Ir(Z, { command: "addSource", args: [N, k[N]] });
                  }
                  function _r(N, k, Z) {
                    Ir(k, { command: "removeSource", args: [N] }), Z[N] = !0;
                  }
                  function Zr(N, k, Z, dt) {
                    _r(N, Z, dt), Cr(N, k, Z);
                  }
                  function ln(N, k, Z) {
                    let dt;
                    for (dt in N[Z])
                      if (Object.prototype.hasOwnProperty.call(N[Z], dt) && dt !== "data" && !yr(N[Z][dt], k[Z][dt]))
                        return !1;
                    for (dt in k[Z])
                      if (Object.prototype.hasOwnProperty.call(k[Z], dt) && dt !== "data" && !yr(N[Z][dt], k[Z][dt]))
                        return !1;
                    return !0;
                  }
                  function Jr(N, k, Z, dt) {
                    N = N || {}, k = k || {};
                    let At;
                    for (At in N)
                      Object.prototype.hasOwnProperty.call(N, At) && (Object.prototype.hasOwnProperty.call(k, At) || _r(At, Z, dt));
                    for (At in k)
                      Object.prototype.hasOwnProperty.call(k, At) && (Object.prototype.hasOwnProperty.call(N, At) ? yr(N[At], k[At]) || (N[At].type === "geojson" && k[At].type === "geojson" && ln(N, k, At) ? Ir(Z, { command: "setGeoJSONSourceData", args: [At, k[At].data] }) : Zr(At, k, Z, dt)) : Cr(At, k, Z));
                  }
                  function Zn(N, k, Z, dt, At, Dt) {
                    N = N || {}, k = k || {};
                    for (const Ut in N)
                      Object.prototype.hasOwnProperty.call(N, Ut) && (yr(N[Ut], k[Ut]) || Z.push({ command: Dt, args: [dt, Ut, k[Ut], At] }));
                    for (const Ut in k)
                      !Object.prototype.hasOwnProperty.call(k, Ut) || Object.prototype.hasOwnProperty.call(N, Ut) || yr(N[Ut], k[Ut]) || Z.push({ command: Dt, args: [dt, Ut, k[Ut], At] });
                  }
                  function fn(N) {
                    return N.id;
                  }
                  function hi(N, k) {
                    return N[k.id] = k, N;
                  }
                  function Vn(N, k, Z) {
                    N = N || [], k = k || [];
                    const dt = N.map(fn), At = k.map(fn), Dt = N.reduce(hi, {}), Ut = k.reduce(hi, {}), se = dt.slice(), Ie = /* @__PURE__ */ Object.create(null);
                    let He, Ke, cr, Mr, Vr;
                    for (let nn = 0, gn = 0; nn < dt.length; nn++)
                      He = dt[nn], Object.prototype.hasOwnProperty.call(Ut, He) ? gn++ : (Ir(Z, { command: "removeLayer", args: [He] }), se.splice(se.indexOf(He, gn), 1));
                    for (let nn = 0, gn = 0; nn < At.length; nn++)
                      He = At[At.length - 1 - nn], se[se.length - 1 - nn] !== He && (Object.prototype.hasOwnProperty.call(Dt, He) ? (Ir(Z, { command: "removeLayer", args: [He] }), se.splice(se.lastIndexOf(He, se.length - gn), 1)) : gn++, Mr = se[se.length - nn], Ir(Z, { command: "addLayer", args: [Ut[He], Mr] }), se.splice(se.length - nn, 0, He), Ie[He] = !0);
                    for (let nn = 0; nn < At.length; nn++)
                      if (He = At[nn], Ke = Dt[He], cr = Ut[He], !(Ie[He] || yr(Ke, cr))) {
                        if (!yr(Ke.source, cr.source) || !yr(Ke["source-layer"], cr["source-layer"]) || !yr(Ke.type, cr.type)) {
                          Ir(Z, { command: "removeLayer", args: [He] }), Mr = se[se.lastIndexOf(He) + 1], Ir(Z, { command: "addLayer", args: [cr, Mr] });
                          continue;
                        }
                        Zn(Ke.layout, cr.layout, Z, He, null, "setLayoutProperty"), Zn(Ke.paint, cr.paint, Z, He, null, "setPaintProperty"), yr(Ke.filter, cr.filter) || Ir(Z, { command: "setFilter", args: [He, cr.filter] }), (!yr(Ke.minzoom, cr.minzoom) || !yr(Ke.maxzoom, cr.maxzoom)) && Ir(Z, { command: "setLayerZoomRange", args: [He, cr.minzoom, cr.maxzoom] });
                        for (Vr in Ke)
                          Object.prototype.hasOwnProperty.call(Ke, Vr) && (Vr === "layout" || Vr === "paint" || Vr === "filter" || Vr === "metadata" || Vr === "minzoom" || Vr === "maxzoom" || (Vr.indexOf("paint.") === 0 ? Zn(Ke[Vr], cr[Vr], Z, He, Vr.slice(6), "setPaintProperty") : yr(Ke[Vr], cr[Vr]) || Ir(Z, { command: "setLayerProperty", args: [He, Vr, cr[Vr]] })));
                        for (Vr in cr)
                          !Object.prototype.hasOwnProperty.call(cr, Vr) || Object.prototype.hasOwnProperty.call(Ke, Vr) || Vr === "layout" || Vr === "paint" || Vr === "filter" || Vr === "metadata" || Vr === "minzoom" || Vr === "maxzoom" || (Vr.indexOf("paint.") === 0 ? Zn(Ke[Vr], cr[Vr], Z, He, Vr.slice(6), "setPaintProperty") : yr(Ke[Vr], cr[Vr]) || Ir(Z, { command: "setLayerProperty", args: [He, Vr, cr[Vr]] }));
                      }
                  }
                  function jr(N, k) {
                    if (!N)
                      return [{ command: "setStyle", args: [k] }];
                    let Z = [];
                    try {
                      if (!yr(N.version, k.version))
                        return [{ command: "setStyle", args: [k] }];
                      yr(N.center, k.center) || Z.push({ command: "setCenter", args: [k.center] }), yr(N.zoom, k.zoom) || Z.push({ command: "setZoom", args: [k.zoom] }), yr(N.bearing, k.bearing) || Z.push({ command: "setBearing", args: [k.bearing] }), yr(N.pitch, k.pitch) || Z.push({ command: "setPitch", args: [k.pitch] }), yr(N.sprite, k.sprite) || Z.push({ command: "setSprite", args: [k.sprite] }), yr(N.glyphs, k.glyphs) || Z.push({ command: "setGlyphs", args: [k.glyphs] }), yr(N.transition, k.transition) || Z.push({ command: "setTransition", args: [k.transition] }), yr(N.light, k.light) || Z.push({ command: "setLight", args: [k.light] }), yr(N.terrain, k.terrain) || Z.push({ command: "setTerrain", args: [k.terrain] }), yr(N.sky, k.sky) || Z.push({ command: "setSky", args: [k.sky] }), yr(N.projection, k.projection) || Z.push({ command: "setProjection", args: [k.projection] });
                      const dt = {}, At = [];
                      Jr(N.sources, k.sources, At, dt);
                      const Dt = [];
                      N.layers && N.layers.forEach((Ut) => {
                        "source" in Ut && dt[Ut.source] ? Z.push({ command: "removeLayer", args: [Ut.id] }) : Dt.push(Ut);
                      }), Z = Z.concat(At), Vn(Dt, k.layers, Z);
                    } catch (dt) {
                      console.warn("Unable to compute style diff:", dt), Z = [{ command: "setStyle", args: [k] }];
                    }
                    return Z;
                  }
                  class zr {
                    constructor(k, Z, dt, At) {
                      this.message = (k ? `${k}: ` : "") + dt, At && (this.identifier = At), Z != null && Z.__line__ && (this.line = Z.__line__);
                    }
                  }
                  function Tn(N, ...k) {
                    for (const Z of k)
                      for (const dt in Z)
                        N[dt] = Z[dt];
                    return N;
                  }
                  class sn extends Error {
                    constructor(k, Z) {
                      super(Z), this.message = Z, this.key = k;
                    }
                  }
                  class $n {
                    constructor(k, Z = []) {
                      this.parent = k, this.bindings = {};
                      for (const [dt, At] of Z)
                        this.bindings[dt] = At;
                    }
                    concat(k) {
                      return new $n(this, k);
                    }
                    get(k) {
                      if (this.bindings[k])
                        return this.bindings[k];
                      if (this.parent)
                        return this.parent.get(k);
                      throw new Error(`${k} not found in scope.`);
                    }
                    has(k) {
                      return this.bindings[k] ? !0 : this.parent ? this.parent.has(k) : !1;
                    }
                  }
                  const kn = { kind: "null" }, An = { kind: "number" }, qn = { kind: "string" }, si = { kind: "boolean" }, qi = { kind: "color" }, ha = { kind: "object" }, Mi = { kind: "value" }, Ji = { kind: "error" }, ci = { kind: "collator" }, rn = { kind: "formatted" }, Cn = { kind: "padding" }, Un = { kind: "resolvedImage" }, Fn = { kind: "variableAnchorOffsetCollection" };
                  function mi(N, k) {
                    return {
                      kind: "array",
                      itemType: N,
                      N: k
                    };
                  }
                  function Nn(N) {
                    if (N.kind === "array") {
                      const k = Nn(N.itemType);
                      return typeof N.N == "number" ? `array<${k}, ${N.N}>` : N.itemType.kind === "value" ? "array" : `array<${k}>`;
                    } else
                      return N.kind;
                  }
                  const di = [
                    kn,
                    An,
                    qn,
                    si,
                    qi,
                    rn,
                    ha,
                    mi(Mi),
                    Cn,
                    Un,
                    Fn
                  ];
                  function Ai(N, k) {
                    if (k.kind === "error")
                      return null;
                    if (N.kind === "array") {
                      if (k.kind === "array" && (k.N === 0 && k.itemType.kind === "value" || !Ai(N.itemType, k.itemType)) && (typeof N.N != "number" || N.N === k.N))
                        return null;
                    } else {
                      if (N.kind === k.kind)
                        return null;
                      if (N.kind === "value") {
                        for (const Z of di)
                          if (!Ai(Z, k))
                            return null;
                      }
                    }
                    return `Expected ${Nn(N)} but found ${Nn(k)} instead.`;
                  }
                  function Gi(N, k) {
                    return k.some((Z) => Z.kind === N.kind);
                  }
                  function ia(N, k) {
                    return k.some((Z) => Z === "null" ? N === null : Z === "array" ? Array.isArray(N) : Z === "object" ? N && !Array.isArray(N) && typeof N == "object" : Z === typeof N);
                  }
                  function Ca(N, k) {
                    return N.kind === "array" && k.kind === "array" ? N.itemType.kind === k.itemType.kind && typeof N.N == "number" : N.kind === k.kind;
                  }
                  const Qr = 0.96422, pn = 1, $r = 0.82521, mn = 4 / 29, Wn = 6 / 29, yi = 3 * Wn * Wn, ei = Wn * Wn * Wn, Jn = Math.PI / 180, en = 180 / Math.PI;
                  function Sn(N) {
                    return N = N % 360, N < 0 && (N += 360), N;
                  }
                  function wn([N, k, Z, dt]) {
                    N = Dn(N), k = Dn(k), Z = Dn(Z);
                    let At, Dt;
                    const Ut = li((0.2225045 * N + 0.7168786 * k + 0.0606169 * Z) / pn);
                    N === k && k === Z ? At = Dt = Ut : (At = li((0.4360747 * N + 0.3850649 * k + 0.1430804 * Z) / Qr), Dt = li((0.0139322 * N + 0.0971045 * k + 0.7141733 * Z) / $r));
                    const se = 116 * Ut - 16;
                    return [se < 0 ? 0 : se, 500 * (At - Ut), 200 * (Ut - Dt), dt];
                  }
                  function Dn(N) {
                    return N <= 0.04045 ? N / 12.92 : Math.pow((N + 0.055) / 1.055, 2.4);
                  }
                  function li(N) {
                    return N > ei ? Math.pow(N, 0.3333333333333333) : N / yi + mn;
                  }
                  function fi([N, k, Z, dt]) {
                    let At = (N + 16) / 116, Dt = isNaN(k) ? At : At + k / 500, Ut = isNaN(Z) ? At : At - Z / 200;
                    return At = pn * Ti(At), Dt = Qr * Ti(Dt), Ut = $r * Ti(Ut), [
                      _i(3.1338561 * Dt - 1.6168667 * At - 0.4906146 * Ut),
                      // D50 -> sRGB
                      _i(-0.9787684 * Dt + 1.9161415 * At + 0.033454 * Ut),
                      _i(0.0719453 * Dt - 0.2289914 * At + 1.4052427 * Ut),
                      dt
                    ];
                  }
                  function _i(N) {
                    return N = N <= 304e-5 ? 12.92 * N : 1.055 * Math.pow(N, 0.4166666666666667) - 0.055, N < 0 ? 0 : N > 1 ? 1 : N;
                  }
                  function Ti(N) {
                    return N > Wn ? N * N * N : yi * (N - mn);
                  }
                  function bi(N) {
                    const [k, Z, dt, At] = wn(N), Dt = Math.sqrt(Z * Z + dt * dt);
                    return [Math.round(Dt * 1e4) ? Sn(Math.atan2(dt, Z) * en) : NaN, Dt, k, At];
                  }
                  function ki([N, k, Z, dt]) {
                    return N = isNaN(N) ? 0 : N * Jn, fi([Z, Math.cos(N) * k, Math.sin(N) * k, dt]);
                  }
                  function Bi([N, k, Z, dt]) {
                    N = Sn(N), k /= 100, Z /= 100;
                    function At(Dt) {
                      const Ut = (Dt + N / 30) % 12, se = k * Math.min(Z, 1 - Z);
                      return Z - se * Math.max(-1, Math.min(Ut - 3, 9 - Ut, 1));
                    }
                    return [At(0), At(8), At(4), dt];
                  }
                  function ra(N) {
                    if (N = N.toLowerCase().trim(), N === "transparent")
                      return [0, 0, 0, 0];
                    const k = Bs[N];
                    if (k) {
                      const [At, Dt, Ut] = k;
                      return [At / 255, Dt / 255, Ut / 255, 1];
                    }
                    if (N.startsWith("#") && /^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(N)) {
                      const Dt = N.length < 6 ? 1 : 2;
                      let Ut = 1;
                      return [
                        Ea(N.slice(Ut, Ut += Dt)),
                        Ea(N.slice(Ut, Ut += Dt)),
                        Ea(N.slice(Ut, Ut += Dt)),
                        Ea(N.slice(Ut, Ut + Dt) || "ff")
                      ];
                    }
                    if (N.startsWith("rgb")) {
                      const At = /^rgba?\(\s*([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/, Dt = N.match(At);
                      if (Dt) {
                        const [
                          Ut,
                          // eslint-disable-line @typescript-eslint/no-unused-vars
                          se,
                          // <numeric>
                          Ie,
                          // %         (optional)
                          He,
                          // ,         (optional)
                          Ke,
                          // <numeric>
                          cr,
                          // %         (optional)
                          Mr,
                          // ,         (optional)
                          Vr,
                          // <numeric>
                          nn,
                          // %         (optional)
                          gn,
                          // ,|/       (optional)
                          jn,
                          // <numeric> (optional)
                          ui
                          // %         (optional)
                        ] = Dt, Ii = [He || " ", Mr || " ", gn].join("");
                        if (Ii === "  " || Ii === "  /" || Ii === ",," || Ii === ",,,") {
                          const Si = [Ie, cr, nn].join(""), Pi = Si === "%%%" ? 100 : Si === "" ? 255 : 0;
                          if (Pi) {
                            const Wi = [
                              go(+se / Pi, 0, 1),
                              go(+Ke / Pi, 0, 1),
                              go(+Vr / Pi, 0, 1),
                              jn ? Io(+jn, ui) : 1
                            ];
                            if (Ss(Wi))
                              return Wi;
                          }
                        }
                        return;
                      }
                    }
                    const Z = /^hsla?\(\s*([\de.+-]+)(?:deg)?(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/, dt = N.match(Z);
                    if (dt) {
                      const [
                        At,
                        // eslint-disable-line @typescript-eslint/no-unused-vars
                        Dt,
                        // <numeric>
                        Ut,
                        // ,         (optional)
                        se,
                        // <numeric>
                        Ie,
                        // ,         (optional)
                        He,
                        // <numeric>
                        Ke,
                        // ,|/       (optional)
                        cr,
                        // <numeric> (optional)
                        Mr
                        // %         (optional)
                      ] = dt, Vr = [Ut || " ", Ie || " ", Ke].join("");
                      if (Vr === "  " || Vr === "  /" || Vr === ",," || Vr === ",,,") {
                        const nn = [
                          +Dt,
                          go(+se, 0, 100),
                          go(+He, 0, 100),
                          cr ? Io(+cr, Mr) : 1
                        ];
                        if (Ss(nn))
                          return Bi(nn);
                      }
                    }
                  }
                  function Ea(N) {
                    return parseInt(N.padEnd(2, N), 16) / 255;
                  }
                  function Io(N, k) {
                    return go(k ? N / 100 : N, 0, 1);
                  }
                  function go(N, k, Z) {
                    return Math.min(Math.max(k, N), Z);
                  }
                  function Ss(N) {
                    return !N.some(Number.isNaN);
                  }
                  const Bs = {
                    aliceblue: [240, 248, 255],
                    antiquewhite: [250, 235, 215],
                    aqua: [0, 255, 255],
                    aquamarine: [127, 255, 212],
                    azure: [240, 255, 255],
                    beige: [245, 245, 220],
                    bisque: [255, 228, 196],
                    black: [0, 0, 0],
                    blanchedalmond: [255, 235, 205],
                    blue: [0, 0, 255],
                    blueviolet: [138, 43, 226],
                    brown: [165, 42, 42],
                    burlywood: [222, 184, 135],
                    cadetblue: [95, 158, 160],
                    chartreuse: [127, 255, 0],
                    chocolate: [210, 105, 30],
                    coral: [255, 127, 80],
                    cornflowerblue: [100, 149, 237],
                    cornsilk: [255, 248, 220],
                    crimson: [220, 20, 60],
                    cyan: [0, 255, 255],
                    darkblue: [0, 0, 139],
                    darkcyan: [0, 139, 139],
                    darkgoldenrod: [184, 134, 11],
                    darkgray: [169, 169, 169],
                    darkgreen: [0, 100, 0],
                    darkgrey: [169, 169, 169],
                    darkkhaki: [189, 183, 107],
                    darkmagenta: [139, 0, 139],
                    darkolivegreen: [85, 107, 47],
                    darkorange: [255, 140, 0],
                    darkorchid: [153, 50, 204],
                    darkred: [139, 0, 0],
                    darksalmon: [233, 150, 122],
                    darkseagreen: [143, 188, 143],
                    darkslateblue: [72, 61, 139],
                    darkslategray: [47, 79, 79],
                    darkslategrey: [47, 79, 79],
                    darkturquoise: [0, 206, 209],
                    darkviolet: [148, 0, 211],
                    deeppink: [255, 20, 147],
                    deepskyblue: [0, 191, 255],
                    dimgray: [105, 105, 105],
                    dimgrey: [105, 105, 105],
                    dodgerblue: [30, 144, 255],
                    firebrick: [178, 34, 34],
                    floralwhite: [255, 250, 240],
                    forestgreen: [34, 139, 34],
                    fuchsia: [255, 0, 255],
                    gainsboro: [220, 220, 220],
                    ghostwhite: [248, 248, 255],
                    gold: [255, 215, 0],
                    goldenrod: [218, 165, 32],
                    gray: [128, 128, 128],
                    green: [0, 128, 0],
                    greenyellow: [173, 255, 47],
                    grey: [128, 128, 128],
                    honeydew: [240, 255, 240],
                    hotpink: [255, 105, 180],
                    indianred: [205, 92, 92],
                    indigo: [75, 0, 130],
                    ivory: [255, 255, 240],
                    khaki: [240, 230, 140],
                    lavender: [230, 230, 250],
                    lavenderblush: [255, 240, 245],
                    lawngreen: [124, 252, 0],
                    lemonchiffon: [255, 250, 205],
                    lightblue: [173, 216, 230],
                    lightcoral: [240, 128, 128],
                    lightcyan: [224, 255, 255],
                    lightgoldenrodyellow: [250, 250, 210],
                    lightgray: [211, 211, 211],
                    lightgreen: [144, 238, 144],
                    lightgrey: [211, 211, 211],
                    lightpink: [255, 182, 193],
                    lightsalmon: [255, 160, 122],
                    lightseagreen: [32, 178, 170],
                    lightskyblue: [135, 206, 250],
                    lightslategray: [119, 136, 153],
                    lightslategrey: [119, 136, 153],
                    lightsteelblue: [176, 196, 222],
                    lightyellow: [255, 255, 224],
                    lime: [0, 255, 0],
                    limegreen: [50, 205, 50],
                    linen: [250, 240, 230],
                    magenta: [255, 0, 255],
                    maroon: [128, 0, 0],
                    mediumaquamarine: [102, 205, 170],
                    mediumblue: [0, 0, 205],
                    mediumorchid: [186, 85, 211],
                    mediumpurple: [147, 112, 219],
                    mediumseagreen: [60, 179, 113],
                    mediumslateblue: [123, 104, 238],
                    mediumspringgreen: [0, 250, 154],
                    mediumturquoise: [72, 209, 204],
                    mediumvioletred: [199, 21, 133],
                    midnightblue: [25, 25, 112],
                    mintcream: [245, 255, 250],
                    mistyrose: [255, 228, 225],
                    moccasin: [255, 228, 181],
                    navajowhite: [255, 222, 173],
                    navy: [0, 0, 128],
                    oldlace: [253, 245, 230],
                    olive: [128, 128, 0],
                    olivedrab: [107, 142, 35],
                    orange: [255, 165, 0],
                    orangered: [255, 69, 0],
                    orchid: [218, 112, 214],
                    palegoldenrod: [238, 232, 170],
                    palegreen: [152, 251, 152],
                    paleturquoise: [175, 238, 238],
                    palevioletred: [219, 112, 147],
                    papayawhip: [255, 239, 213],
                    peachpuff: [255, 218, 185],
                    peru: [205, 133, 63],
                    pink: [255, 192, 203],
                    plum: [221, 160, 221],
                    powderblue: [176, 224, 230],
                    purple: [128, 0, 128],
                    rebeccapurple: [102, 51, 153],
                    red: [255, 0, 0],
                    rosybrown: [188, 143, 143],
                    royalblue: [65, 105, 225],
                    saddlebrown: [139, 69, 19],
                    salmon: [250, 128, 114],
                    sandybrown: [244, 164, 96],
                    seagreen: [46, 139, 87],
                    seashell: [255, 245, 238],
                    sienna: [160, 82, 45],
                    silver: [192, 192, 192],
                    skyblue: [135, 206, 235],
                    slateblue: [106, 90, 205],
                    slategray: [112, 128, 144],
                    slategrey: [112, 128, 144],
                    snow: [255, 250, 250],
                    springgreen: [0, 255, 127],
                    steelblue: [70, 130, 180],
                    tan: [210, 180, 140],
                    teal: [0, 128, 128],
                    thistle: [216, 191, 216],
                    tomato: [255, 99, 71],
                    turquoise: [64, 224, 208],
                    violet: [238, 130, 238],
                    wheat: [245, 222, 179],
                    white: [255, 255, 255],
                    whitesmoke: [245, 245, 245],
                    yellow: [255, 255, 0],
                    yellowgreen: [154, 205, 50]
                  };
                  class so {
                    /**
                     * @param r Red component premultiplied by `alpha` 0..1
                     * @param g Green component premultiplied by `alpha` 0..1
                     * @param b Blue component premultiplied by `alpha` 0..1
                     * @param [alpha=1] Alpha component 0..1
                     * @param [premultiplied=true] Whether the `r`, `g` and `b` values have already
                     * been multiplied by alpha. If `true` nothing happens if `false` then they will
                     * be multiplied automatically.
                     */
                    constructor(k, Z, dt, At = 1, Dt = !0) {
                      this.r = k, this.g = Z, this.b = dt, this.a = At, Dt || (this.r *= At, this.g *= At, this.b *= At, At || this.overwriteGetter("rgb", [k, Z, dt, At]));
                    }
                    /**
                     * Parses CSS color strings and converts colors to sRGB color space if needed.
                     * Officially supported color formats:
                     * - keyword, e.g. 'aquamarine' or 'steelblue'
                     * - hex (with 3, 4, 6 or 8 digits), e.g. '#f0f' or '#e9bebea9'
                     * - rgb and rgba, e.g. 'rgb(0,240,120)' or 'rgba(0%,94%,47%,0.1)' or 'rgb(0 240 120 / .3)'
                     * - hsl and hsla, e.g. 'hsl(0,0%,83%)' or 'hsla(0,0%,83%,.5)' or 'hsl(0 0% 83% / 20%)'
                     *
                     * @param input CSS color string to parse.
                     * @returns A `Color` instance, or `undefined` if the input is not a valid color string.
                     */
                    static parse(k) {
                      if (k instanceof so)
                        return k;
                      if (typeof k != "string")
                        return;
                      const Z = ra(k);
                      if (Z)
                        return new so(...Z, !1);
                    }
                    /**
                     * Used in color interpolation and by 'to-rgba' expression.
                     *
                     * @returns Gien color, with reversed alpha blending, in sRGB color space.
                     */
                    get rgb() {
                      const { r: k, g: Z, b: dt, a: At } = this, Dt = At || 1 / 0;
                      return this.overwriteGetter("rgb", [k / Dt, Z / Dt, dt / Dt, At]);
                    }
                    /**
                     * Used in color interpolation.
                     *
                     * @returns Gien color, with reversed alpha blending, in HCL color space.
                     */
                    get hcl() {
                      return this.overwriteGetter("hcl", bi(this.rgb));
                    }
                    /**
                     * Used in color interpolation.
                     *
                     * @returns Gien color, with reversed alpha blending, in LAB color space.
                     */
                    get lab() {
                      return this.overwriteGetter("lab", wn(this.rgb));
                    }
                    /**
                     * Lazy getter pattern. When getter is called for the first time lazy value
                     * is calculated and then overwrites getter function in given object instance.
                     *
                     * @example:
                     * const redColor = Color.parse('red');
                     * let x = redColor.hcl; // this will invoke `get hcl()`, which will calculate
                     * // the value of red in HCL space and invoke this `overwriteGetter` function
                     * // which in turn will set a field with a key 'hcl' in the `redColor` object.
                     * // In other words it will override `get hcl()` from its `Color` prototype
                     * // with its own property: hcl = [calculated red value in hcl].
                     * let y = redColor.hcl; // next call will no longer invoke getter but simply
                     * // return the previously calculated value
                     * x === y; // true - `x` is exactly the same object as `y`
                     *
                     * @param getterKey Getter key
                     * @param lazyValue Lazily calculated value to be memoized by current instance
                     * @private
                     */
                    overwriteGetter(k, Z) {
                      return Object.defineProperty(this, k, { value: Z }), Z;
                    }
                    /**
                     * Used by 'to-string' expression.
                     *
                     * @returns Serialized color in format `rgba(r,g,b,a)`
                     * where r,g,b are numbers within 0..255 and alpha is number within 1..0
                     *
                     * @example
                     * var purple = new Color.parse('purple');
                     * purple.toString; // = "rgba(128,0,128,1)"
                     * var translucentGreen = new Color.parse('rgba(26, 207, 26, .73)');
                     * translucentGreen.toString(); // = "rgba(26,207,26,0.73)"
                     */
                    toString() {
                      const [k, Z, dt, At] = this.rgb;
                      return `rgba(${[k, Z, dt].map((Dt) => Math.round(Dt * 255)).join(",")},${At})`;
                    }
                  }
                  so.black = new so(0, 0, 0, 1), so.white = new so(1, 1, 1, 1), so.transparent = new so(0, 0, 0, 0), so.red = new so(1, 0, 0, 1);
                  class Ql {
                    constructor(k, Z, dt) {
                      k ? this.sensitivity = Z ? "variant" : "case" : this.sensitivity = Z ? "accent" : "base", this.locale = dt, this.collator = new Intl.Collator(this.locale ? this.locale : [], { sensitivity: this.sensitivity, usage: "search" });
                    }
                    compare(k, Z) {
                      return this.collator.compare(k, Z);
                    }
                    resolvedLocale() {
                      return new Intl.Collator(this.locale ? this.locale : []).resolvedOptions().locale;
                    }
                  }
                  class Zu {
                    constructor(k, Z, dt, At, Dt) {
                      this.text = k, this.image = Z, this.scale = dt, this.fontStack = At, this.textColor = Dt;
                    }
                  }
                  class Ns {
                    constructor(k) {
                      this.sections = k;
                    }
                    static fromString(k) {
                      return new Ns([new Zu(k, null, null, null, null)]);
                    }
                    isEmpty() {
                      return this.sections.length === 0 ? !0 : !this.sections.some((k) => k.text.length !== 0 || k.image && k.image.name.length !== 0);
                    }
                    static factory(k) {
                      return k instanceof Ns ? k : Ns.fromString(k);
                    }
                    toString() {
                      return this.sections.length === 0 ? "" : this.sections.map((k) => k.text).join("");
                    }
                  }
                  class io {
                    constructor(k) {
                      this.values = k.slice();
                    }
                    /**
                     * Numeric padding values
                     * @param input A padding value
                     * @returns A `Padding` instance, or `undefined` if the input is not a valid padding value.
                     */
                    static parse(k) {
                      if (k instanceof io)
                        return k;
                      if (typeof k == "number")
                        return new io([k, k, k, k]);
                      if (Array.isArray(k) && !(k.length < 1 || k.length > 4)) {
                        for (const Z of k)
                          if (typeof Z != "number")
                            return;
                        switch (k.length) {
                          case 1:
                            k = [k[0], k[0], k[0], k[0]];
                            break;
                          case 2:
                            k = [k[0], k[1], k[0], k[1]];
                            break;
                          case 3:
                            k = [k[0], k[1], k[2], k[1]];
                            break;
                        }
                        return new io(k);
                      }
                    }
                    toString() {
                      return JSON.stringify(this.values);
                    }
                  }
                  const vf = /* @__PURE__ */ new Set(["center", "left", "right", "top", "bottom", "top-left", "top-right", "bottom-left", "bottom-right"]);
                  class yl {
                    constructor(k) {
                      this.values = k.slice();
                    }
                    static parse(k) {
                      if (k instanceof yl)
                        return k;
                      if (!(!Array.isArray(k) || k.length < 1 || k.length % 2 !== 0)) {
                        for (let Z = 0; Z < k.length; Z += 2) {
                          const dt = k[Z], At = k[Z + 1];
                          if (typeof dt != "string" || !vf.has(dt) || !Array.isArray(At) || At.length !== 2 || typeof At[0] != "number" || typeof At[1] != "number")
                            return;
                        }
                        return new yl(k);
                      }
                    }
                    toString() {
                      return JSON.stringify(this.values);
                    }
                  }
                  class jo {
                    constructor(k) {
                      this.name = k.name, this.available = k.available;
                    }
                    toString() {
                      return this.name;
                    }
                    static fromString(k) {
                      return k ? new jo({ name: k, available: !1 }) : null;
                    }
                  }
                  function Ys(N, k, Z, dt) {
                    return typeof N == "number" && N >= 0 && N <= 255 && typeof k == "number" && k >= 0 && k <= 255 && typeof Z == "number" && Z >= 0 && Z <= 255 ? typeof dt > "u" || typeof dt == "number" && dt >= 0 && dt <= 1 ? null : `Invalid rgba value [${[N, k, Z, dt].join(", ")}]: 'a' must be between 0 and 1.` : `Invalid rgba value [${(typeof dt == "number" ? [N, k, Z, dt] : [N, k, Z]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`;
                  }
                  function uu(N) {
                    if (N === null || typeof N == "string" || typeof N == "boolean" || typeof N == "number" || N instanceof so || N instanceof Ql || N instanceof Ns || N instanceof io || N instanceof yl || N instanceof jo)
                      return !0;
                    if (Array.isArray(N)) {
                      for (const k of N)
                        if (!uu(k))
                          return !1;
                      return !0;
                    } else if (typeof N == "object") {
                      for (const k in N)
                        if (!uu(N[k]))
                          return !1;
                      return !0;
                    } else
                      return !1;
                  }
                  function ss(N) {
                    if (N === null)
                      return kn;
                    if (typeof N == "string")
                      return qn;
                    if (typeof N == "boolean")
                      return si;
                    if (typeof N == "number")
                      return An;
                    if (N instanceof so)
                      return qi;
                    if (N instanceof Ql)
                      return ci;
                    if (N instanceof Ns)
                      return rn;
                    if (N instanceof io)
                      return Cn;
                    if (N instanceof yl)
                      return Fn;
                    if (N instanceof jo)
                      return Un;
                    if (Array.isArray(N)) {
                      const k = N.length;
                      let Z;
                      for (const dt of N) {
                        const At = ss(dt);
                        if (!Z)
                          Z = At;
                        else {
                          if (Z === At)
                            continue;
                          Z = Mi;
                          break;
                        }
                      }
                      return mi(Z || Mi, k);
                    } else
                      return ha;
                  }
                  function qo(N) {
                    const k = typeof N;
                    return N === null ? "" : k === "string" || k === "number" || k === "boolean" ? String(N) : N instanceof so || N instanceof Ns || N instanceof io || N instanceof yl || N instanceof jo ? N.toString() : JSON.stringify(N);
                  }
                  class Ol {
                    constructor(k, Z) {
                      this.type = k, this.value = Z;
                    }
                    static parse(k, Z) {
                      if (k.length !== 2)
                        return Z.error(`'literal' expression requires exactly one argument, but found ${k.length - 1} instead.`);
                      if (!uu(k[1]))
                        return Z.error("invalid value");
                      const dt = k[1];
                      let At = ss(dt);
                      const Dt = Z.expectedType;
                      return At.kind === "array" && At.N === 0 && Dt && Dt.kind === "array" && (typeof Dt.N != "number" || Dt.N === 0) && (At = Dt), new Ol(At, dt);
                    }
                    evaluate() {
                      return this.value;
                    }
                    eachChild() {
                    }
                    outputDefined() {
                      return !0;
                    }
                  }
                  class yo {
                    constructor(k) {
                      this.name = "ExpressionEvaluationError", this.message = k;
                    }
                    toJSON() {
                      return this.message;
                    }
                  }
                  const ds = {
                    string: qn,
                    number: An,
                    boolean: si,
                    object: ha
                  };
                  class Ks {
                    constructor(k, Z) {
                      this.type = k, this.args = Z;
                    }
                    static parse(k, Z) {
                      if (k.length < 2)
                        return Z.error("Expected at least one argument.");
                      let dt = 1, At;
                      const Dt = k[0];
                      if (Dt === "array") {
                        let se;
                        if (k.length > 2) {
                          const He = k[1];
                          if (typeof He != "string" || !(He in ds) || He === "object")
                            return Z.error('The item type argument of "array" must be one of string, number, boolean', 1);
                          se = ds[He], dt++;
                        } else
                          se = Mi;
                        let Ie;
                        if (k.length > 3) {
                          if (k[2] !== null && (typeof k[2] != "number" || k[2] < 0 || k[2] !== Math.floor(k[2])))
                            return Z.error('The length argument to "array" must be a positive integer literal', 2);
                          Ie = k[2], dt++;
                        }
                        At = mi(se, Ie);
                      } else {
                        if (!ds[Dt])
                          throw new Error(`Types doesn't contain name = ${Dt}`);
                        At = ds[Dt];
                      }
                      const Ut = [];
                      for (; dt < k.length; dt++) {
                        const se = Z.parse(k[dt], dt, Mi);
                        if (!se)
                          return null;
                        Ut.push(se);
                      }
                      return new Ks(At, Ut);
                    }
                    evaluate(k) {
                      for (let Z = 0; Z < this.args.length; Z++) {
                        const dt = this.args[Z].evaluate(k);
                        if (Ai(this.type, ss(dt))) {
                          if (Z === this.args.length - 1)
                            throw new yo(`Expected value to be of type ${Nn(this.type)}, but found ${Nn(ss(dt))} instead.`);
                        } else return dt;
                      }
                      throw new Error();
                    }
                    eachChild(k) {
                      this.args.forEach(k);
                    }
                    outputDefined() {
                      return this.args.every((k) => k.outputDefined());
                    }
                  }
                  const zs = {
                    "to-boolean": si,
                    "to-color": qi,
                    "to-number": An,
                    "to-string": qn
                  };
                  class is {
                    constructor(k, Z) {
                      this.type = k, this.args = Z;
                    }
                    static parse(k, Z) {
                      if (k.length < 2)
                        return Z.error("Expected at least one argument.");
                      const dt = k[0];
                      if (!zs[dt])
                        throw new Error(`Can't parse ${dt} as it is not part of the known types`);
                      if ((dt === "to-boolean" || dt === "to-string") && k.length !== 2)
                        return Z.error("Expected one argument.");
                      const At = zs[dt], Dt = [];
                      for (let Ut = 1; Ut < k.length; Ut++) {
                        const se = Z.parse(k[Ut], Ut, Mi);
                        if (!se)
                          return null;
                        Dt.push(se);
                      }
                      return new is(At, Dt);
                    }
                    evaluate(k) {
                      switch (this.type.kind) {
                        case "boolean":
                          return !!this.args[0].evaluate(k);
                        case "color": {
                          let Z, dt;
                          for (const At of this.args) {
                            if (Z = At.evaluate(k), dt = null, Z instanceof so)
                              return Z;
                            if (typeof Z == "string") {
                              const Dt = k.parseColor(Z);
                              if (Dt)
                                return Dt;
                            } else if (Array.isArray(Z) && (Z.length < 3 || Z.length > 4 ? dt = `Invalid rbga value ${JSON.stringify(Z)}: expected an array containing either three or four numeric values.` : dt = Ys(Z[0], Z[1], Z[2], Z[3]), !dt))
                              return new so(Z[0] / 255, Z[1] / 255, Z[2] / 255, Z[3]);
                          }
                          throw new yo(dt || `Could not parse color from value '${typeof Z == "string" ? Z : JSON.stringify(Z)}'`);
                        }
                        case "padding": {
                          let Z;
                          for (const dt of this.args) {
                            Z = dt.evaluate(k);
                            const At = io.parse(Z);
                            if (At)
                              return At;
                          }
                          throw new yo(`Could not parse padding from value '${typeof Z == "string" ? Z : JSON.stringify(Z)}'`);
                        }
                        case "variableAnchorOffsetCollection": {
                          let Z;
                          for (const dt of this.args) {
                            Z = dt.evaluate(k);
                            const At = yl.parse(Z);
                            if (At)
                              return At;
                          }
                          throw new yo(`Could not parse variableAnchorOffsetCollection from value '${typeof Z == "string" ? Z : JSON.stringify(Z)}'`);
                        }
                        case "number": {
                          let Z = null;
                          for (const dt of this.args) {
                            if (Z = dt.evaluate(k), Z === null)
                              return 0;
                            const At = Number(Z);
                            if (!isNaN(At))
                              return At;
                          }
                          throw new yo(`Could not convert ${JSON.stringify(Z)} to number.`);
                        }
                        case "formatted":
                          return Ns.fromString(qo(this.args[0].evaluate(k)));
                        case "resolvedImage":
                          return jo.fromString(qo(this.args[0].evaluate(k)));
                        default:
                          return qo(this.args[0].evaluate(k));
                      }
                    }
                    eachChild(k) {
                      this.args.forEach(k);
                    }
                    outputDefined() {
                      return this.args.every((k) => k.outputDefined());
                    }
                  }
                  const wl = ["Unknown", "Point", "LineString", "Polygon"];
                  class Th {
                    constructor() {
                      this.globals = null, this.feature = null, this.featureState = null, this.formattedSection = null, this._parseColorCache = {}, this.availableImages = null, this.canonical = null;
                    }
                    id() {
                      return this.feature && "id" in this.feature ? this.feature.id : null;
                    }
                    geometryType() {
                      return this.feature ? typeof this.feature.type == "number" ? wl[this.feature.type] : this.feature.type : null;
                    }
                    geometry() {
                      return this.feature && "geometry" in this.feature ? this.feature.geometry : null;
                    }
                    canonicalID() {
                      return this.canonical;
                    }
                    properties() {
                      return this.feature && this.feature.properties || {};
                    }
                    parseColor(k) {
                      let Z = this._parseColorCache[k];
                      return Z || (Z = this._parseColorCache[k] = so.parse(k)), Z;
                    }
                  }
                  class Us {
                    constructor(k, Z, dt = [], At, Dt = new $n(), Ut = []) {
                      this.registry = k, this.path = dt, this.key = dt.map((se) => `[${se}]`).join(""), this.scope = Dt, this.errors = Ut, this.expectedType = At, this._isConstant = Z;
                    }
                    /**
                     * @param expr the JSON expression to parse
                     * @param index the optional argument index if this expression is an argument of a parent expression that's being parsed
                     * @param options
                     * @param options.omitTypeAnnotations set true to omit inferred type annotations.  Caller beware: with this option set, the parsed expression's type will NOT satisfy `expectedType` if it would normally be wrapped in an inferred annotation.
                     * @private
                     */
                    parse(k, Z, dt, At, Dt = {}) {
                      return Z ? this.concat(Z, dt, At)._parse(k, Dt) : this._parse(k, Dt);
                    }
                    _parse(k, Z) {
                      (k === null || typeof k == "string" || typeof k == "boolean" || typeof k == "number") && (k = ["literal", k]);
                      function dt(At, Dt, Ut) {
                        return Ut === "assert" ? new Ks(Dt, [At]) : Ut === "coerce" ? new is(Dt, [At]) : At;
                      }
                      if (Array.isArray(k)) {
                        if (k.length === 0)
                          return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');
                        const At = k[0];
                        if (typeof At != "string")
                          return this.error(`Expression name must be a string, but found ${typeof At} instead. If you wanted a literal array, use ["literal", [...]].`, 0), null;
                        const Dt = this.registry[At];
                        if (Dt) {
                          let Ut = Dt.parse(k, this);
                          if (!Ut)
                            return null;
                          if (this.expectedType) {
                            const se = this.expectedType, Ie = Ut.type;
                            if ((se.kind === "string" || se.kind === "number" || se.kind === "boolean" || se.kind === "object" || se.kind === "array") && Ie.kind === "value")
                              Ut = dt(Ut, se, Z.typeAnnotation || "assert");
                            else if ((se.kind === "color" || se.kind === "formatted" || se.kind === "resolvedImage") && (Ie.kind === "value" || Ie.kind === "string"))
                              Ut = dt(Ut, se, Z.typeAnnotation || "coerce");
                            else if (se.kind === "padding" && (Ie.kind === "value" || Ie.kind === "number" || Ie.kind === "array"))
                              Ut = dt(Ut, se, Z.typeAnnotation || "coerce");
                            else if (se.kind === "variableAnchorOffsetCollection" && (Ie.kind === "value" || Ie.kind === "array"))
                              Ut = dt(Ut, se, Z.typeAnnotation || "coerce");
                            else if (this.checkSubtype(se, Ie))
                              return null;
                          }
                          if (!(Ut instanceof Ol) && Ut.type.kind !== "resolvedImage" && this._isConstant(Ut)) {
                            const se = new Th();
                            try {
                              Ut = new Ol(Ut.type, Ut.evaluate(se));
                            } catch (Ie) {
                              return this.error(Ie.message), null;
                            }
                          }
                          return Ut;
                        }
                        return this.error(`Unknown expression "${At}". If you wanted a literal array, use ["literal", [...]].`, 0);
                      } else return typeof k > "u" ? this.error("'undefined' value invalid. Use null instead.") : typeof k == "object" ? this.error('Bare objects invalid. Use ["literal", {...}] instead.') : this.error(`Expected an array, but found ${typeof k} instead.`);
                    }
                    /**
                     * Returns a copy of this context suitable for parsing the subexpression at
                     * index `index`, optionally appending to 'let' binding map.
                     *
                     * Note that `errors` property, intended for collecting errors while
                     * parsing, is copied by reference rather than cloned.
                     * @private
                     */
                    concat(k, Z, dt) {
                      const At = typeof k == "number" ? this.path.concat(k) : this.path, Dt = dt ? this.scope.concat(dt) : this.scope;
                      return new Us(this.registry, this._isConstant, At, Z || null, Dt, this.errors);
                    }
                    /**
                     * Push a parsing (or type checking) error into the `this.errors`
                     * @param error The message
                     * @param keys Optionally specify the source of the error at a child
                     * of the current expression at `this.key`.
                     * @private
                     */
                    error(k, ...Z) {
                      const dt = `${this.key}${Z.map((At) => `[${At}]`).join("")}`;
                      this.errors.push(new sn(dt, k));
                    }
                    /**
                     * Returns null if `t` is a subtype of `expected`; otherwise returns an
                     * error message and also pushes it to `this.errors`.
                     * @param expected The expected type
                     * @param t The actual type
                     * @returns null if `t` is a subtype of `expected`; otherwise returns an error message
                     */
                    checkSubtype(k, Z) {
                      const dt = Ai(k, Z);
                      return dt && this.error(dt), dt;
                    }
                  }
                  class Gf {
                    constructor(k, Z) {
                      this.type = Z.type, this.bindings = [].concat(k), this.result = Z;
                    }
                    evaluate(k) {
                      return this.result.evaluate(k);
                    }
                    eachChild(k) {
                      for (const Z of this.bindings)
                        k(Z[1]);
                      k(this.result);
                    }
                    static parse(k, Z) {
                      if (k.length < 4)
                        return Z.error(`Expected at least 3 arguments, but found ${k.length - 1} instead.`);
                      const dt = [];
                      for (let Dt = 1; Dt < k.length - 1; Dt += 2) {
                        const Ut = k[Dt];
                        if (typeof Ut != "string")
                          return Z.error(`Expected string, but found ${typeof Ut} instead.`, Dt);
                        if (/[^a-zA-Z0-9_]/.test(Ut))
                          return Z.error("Variable names must contain only alphanumeric characters or '_'.", Dt);
                        const se = Z.parse(k[Dt + 1], Dt + 1);
                        if (!se)
                          return null;
                        dt.push([Ut, se]);
                      }
                      const At = Z.parse(k[k.length - 1], k.length - 1, Z.expectedType, dt);
                      return At ? new Gf(dt, At) : null;
                    }
                    outputDefined() {
                      return this.result.outputDefined();
                    }
                  }
                  class _l {
                    constructor(k, Z) {
                      this.type = Z.type, this.name = k, this.boundExpression = Z;
                    }
                    static parse(k, Z) {
                      if (k.length !== 2 || typeof k[1] != "string")
                        return Z.error("'var' expression requires exactly one string literal argument.");
                      const dt = k[1];
                      return Z.scope.has(dt) ? new _l(dt, Z.scope.get(dt)) : Z.error(`Unknown variable "${dt}". Make sure "${dt}" has been bound in an enclosing "let" expression before using it.`, 1);
                    }
                    evaluate(k) {
                      return this.boundExpression.evaluate(k);
                    }
                    eachChild() {
                    }
                    outputDefined() {
                      return !1;
                    }
                  }
                  class bs {
                    constructor(k, Z, dt) {
                      this.type = k, this.index = Z, this.input = dt;
                    }
                    static parse(k, Z) {
                      if (k.length !== 3)
                        return Z.error(`Expected 2 arguments, but found ${k.length - 1} instead.`);
                      const dt = Z.parse(k[1], 1, An), At = Z.parse(k[2], 2, mi(Z.expectedType || Mi));
                      if (!dt || !At)
                        return null;
                      const Dt = At.type;
                      return new bs(Dt.itemType, dt, At);
                    }
                    evaluate(k) {
                      const Z = this.index.evaluate(k), dt = this.input.evaluate(k);
                      if (Z < 0)
                        throw new yo(`Array index out of bounds: ${Z} < 0.`);
                      if (Z >= dt.length)
                        throw new yo(`Array index out of bounds: ${Z} > ${dt.length - 1}.`);
                      if (Z !== Math.floor(Z))
                        throw new yo(`Array index must be an integer, but found ${Z} instead.`);
                      return dt[Z];
                    }
                    eachChild(k) {
                      k(this.index), k(this.input);
                    }
                    outputDefined() {
                      return !1;
                    }
                  }
                  class pf {
                    constructor(k, Z) {
                      this.type = si, this.needle = k, this.haystack = Z;
                    }
                    static parse(k, Z) {
                      if (k.length !== 3)
                        return Z.error(`Expected 2 arguments, but found ${k.length - 1} instead.`);
                      const dt = Z.parse(k[1], 1, Mi), At = Z.parse(k[2], 2, Mi);
                      return !dt || !At ? null : Gi(dt.type, [si, qn, An, kn, Mi]) ? new pf(dt, At) : Z.error(`Expected first argument to be of type boolean, string, number or null, but found ${Nn(dt.type)} instead`);
                    }
                    evaluate(k) {
                      const Z = this.needle.evaluate(k), dt = this.haystack.evaluate(k);
                      if (!dt)
                        return !1;
                      if (!ia(Z, ["boolean", "string", "number", "null"]))
                        throw new yo(`Expected first argument to be of type boolean, string, number or null, but found ${Nn(ss(Z))} instead.`);
                      if (!ia(dt, ["string", "array"]))
                        throw new yo(`Expected second argument to be of type array or string, but found ${Nn(ss(dt))} instead.`);
                      return dt.indexOf(Z) >= 0;
                    }
                    eachChild(k) {
                      k(this.needle), k(this.haystack);
                    }
                    outputDefined() {
                      return !0;
                    }
                  }
                  class $l {
                    constructor(k, Z, dt) {
                      this.type = An, this.needle = k, this.haystack = Z, this.fromIndex = dt;
                    }
                    static parse(k, Z) {
                      if (k.length <= 2 || k.length >= 5)
                        return Z.error(`Expected 3 or 4 arguments, but found ${k.length - 1} instead.`);
                      const dt = Z.parse(k[1], 1, Mi), At = Z.parse(k[2], 2, Mi);
                      if (!dt || !At)
                        return null;
                      if (!Gi(dt.type, [si, qn, An, kn, Mi]))
                        return Z.error(`Expected first argument to be of type boolean, string, number or null, but found ${Nn(dt.type)} instead`);
                      if (k.length === 4) {
                        const Dt = Z.parse(k[3], 3, An);
                        return Dt ? new $l(dt, At, Dt) : null;
                      } else
                        return new $l(dt, At);
                    }
                    evaluate(k) {
                      const Z = this.needle.evaluate(k), dt = this.haystack.evaluate(k);
                      if (!ia(Z, ["boolean", "string", "number", "null"]))
                        throw new yo(`Expected first argument to be of type boolean, string, number or null, but found ${Nn(ss(Z))} instead.`);
                      if (!ia(dt, ["string", "array"]))
                        throw new yo(`Expected second argument to be of type array or string, but found ${Nn(ss(dt))} instead.`);
                      if (this.fromIndex) {
                        const At = this.fromIndex.evaluate(k);
                        return dt.indexOf(Z, At);
                      }
                      return dt.indexOf(Z);
                    }
                    eachChild(k) {
                      k(this.needle), k(this.haystack), this.fromIndex && k(this.fromIndex);
                    }
                    outputDefined() {
                      return !1;
                    }
                  }
                  class Bl {
                    constructor(k, Z, dt, At, Dt, Ut) {
                      this.inputType = k, this.type = Z, this.input = dt, this.cases = At, this.outputs = Dt, this.otherwise = Ut;
                    }
                    static parse(k, Z) {
                      if (k.length < 5)
                        return Z.error(`Expected at least 4 arguments, but found only ${k.length - 1}.`);
                      if (k.length % 2 !== 1)
                        return Z.error("Expected an even number of arguments.");
                      let dt, At;
                      Z.expectedType && Z.expectedType.kind !== "value" && (At = Z.expectedType);
                      const Dt = {}, Ut = [];
                      for (let He = 2; He < k.length - 1; He += 2) {
                        let Ke = k[He];
                        const cr = k[He + 1];
                        Array.isArray(Ke) || (Ke = [Ke]);
                        const Mr = Z.concat(He);
                        if (Ke.length === 0)
                          return Mr.error("Expected at least one branch label.");
                        for (const nn of Ke) {
                          if (typeof nn != "number" && typeof nn != "string")
                            return Mr.error("Branch labels must be numbers or strings.");
                          if (typeof nn == "number" && Math.abs(nn) > Number.MAX_SAFE_INTEGER)
                            return Mr.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);
                          if (typeof nn == "number" && Math.floor(nn) !== nn)
                            return Mr.error("Numeric branch labels must be integer values.");
                          if (!dt)
                            dt = ss(nn);
                          else if (Mr.checkSubtype(dt, ss(nn)))
                            return null;
                          if (typeof Dt[String(nn)] < "u")
                            return Mr.error("Branch labels must be unique.");
                          Dt[String(nn)] = Ut.length;
                        }
                        const Vr = Z.parse(cr, He, At);
                        if (!Vr)
                          return null;
                        At = At || Vr.type, Ut.push(Vr);
                      }
                      const se = Z.parse(k[1], 1, Mi);
                      if (!se)
                        return null;
                      const Ie = Z.parse(k[k.length - 1], k.length - 1, At);
                      return !Ie || se.type.kind !== "value" && Z.concat(1).checkSubtype(dt, se.type) ? null : new Bl(dt, At, se, Dt, Ut, Ie);
                    }
                    evaluate(k) {
                      const Z = this.input.evaluate(k);
                      return (ss(Z) === this.inputType && this.outputs[this.cases[Z]] || this.otherwise).evaluate(k);
                    }
                    eachChild(k) {
                      k(this.input), this.outputs.forEach(k), k(this.otherwise);
                    }
                    outputDefined() {
                      return this.outputs.every((k) => k.outputDefined()) && this.otherwise.outputDefined();
                    }
                  }
                  class gf {
                    constructor(k, Z, dt) {
                      this.type = k, this.branches = Z, this.otherwise = dt;
                    }
                    static parse(k, Z) {
                      if (k.length < 4)
                        return Z.error(`Expected at least 3 arguments, but found only ${k.length - 1}.`);
                      if (k.length % 2 !== 0)
                        return Z.error("Expected an odd number of arguments.");
                      let dt;
                      Z.expectedType && Z.expectedType.kind !== "value" && (dt = Z.expectedType);
                      const At = [];
                      for (let Ut = 1; Ut < k.length - 1; Ut += 2) {
                        const se = Z.parse(k[Ut], Ut, si);
                        if (!se)
                          return null;
                        const Ie = Z.parse(k[Ut + 1], Ut + 1, dt);
                        if (!Ie)
                          return null;
                        At.push([se, Ie]), dt = dt || Ie.type;
                      }
                      const Dt = Z.parse(k[k.length - 1], k.length - 1, dt);
                      if (!Dt)
                        return null;
                      if (!dt)
                        throw new Error("Can't infer output type");
                      return new gf(dt, At, Dt);
                    }
                    evaluate(k) {
                      for (const [Z, dt] of this.branches)
                        if (Z.evaluate(k))
                          return dt.evaluate(k);
                      return this.otherwise.evaluate(k);
                    }
                    eachChild(k) {
                      for (const [Z, dt] of this.branches)
                        k(Z), k(dt);
                      k(this.otherwise);
                    }
                    outputDefined() {
                      return this.branches.every(([k, Z]) => Z.outputDefined()) && this.otherwise.outputDefined();
                    }
                  }
                  class yf {
                    constructor(k, Z, dt, At) {
                      this.type = k, this.input = Z, this.beginIndex = dt, this.endIndex = At;
                    }
                    static parse(k, Z) {
                      if (k.length <= 2 || k.length >= 5)
                        return Z.error(`Expected 3 or 4 arguments, but found ${k.length - 1} instead.`);
                      const dt = Z.parse(k[1], 1, Mi), At = Z.parse(k[2], 2, An);
                      if (!dt || !At)
                        return null;
                      if (!Gi(dt.type, [mi(Mi), qn, Mi]))
                        return Z.error(`Expected first argument to be of type array or string, but found ${Nn(dt.type)} instead`);
                      if (k.length === 4) {
                        const Dt = Z.parse(k[3], 3, An);
                        return Dt ? new yf(dt.type, dt, At, Dt) : null;
                      } else
                        return new yf(dt.type, dt, At);
                    }
                    evaluate(k) {
                      const Z = this.input.evaluate(k), dt = this.beginIndex.evaluate(k);
                      if (!ia(Z, ["string", "array"]))
                        throw new yo(`Expected first argument to be of type array or string, but found ${Nn(ss(Z))} instead.`);
                      if (this.endIndex) {
                        const At = this.endIndex.evaluate(k);
                        return Z.slice(dt, At);
                      }
                      return Z.slice(dt);
                    }
                    eachChild(k) {
                      k(this.input), k(this.beginIndex), this.endIndex && k(this.endIndex);
                    }
                    outputDefined() {
                      return !1;
                    }
                  }
                  function Wf(N, k) {
                    const Z = N.length - 1;
                    let dt = 0, At = Z, Dt = 0, Ut, se;
                    for (; dt <= At; )
                      if (Dt = Math.floor((dt + At) / 2), Ut = N[Dt], se = N[Dt + 1], Ut <= k) {
                        if (Dt === Z || k < se)
                          return Dt;
                        dt = Dt + 1;
                      } else if (Ut > k)
                        At = Dt - 1;
                      else
                        throw new yo("Input is not a number.");
                    return 0;
                  }
                  class Xu {
                    constructor(k, Z, dt) {
                      this.type = k, this.input = Z, this.labels = [], this.outputs = [];
                      for (const [At, Dt] of dt)
                        this.labels.push(At), this.outputs.push(Dt);
                    }
                    static parse(k, Z) {
                      if (k.length - 1 < 4)
                        return Z.error(`Expected at least 4 arguments, but found only ${k.length - 1}.`);
                      if ((k.length - 1) % 2 !== 0)
                        return Z.error("Expected an even number of arguments.");
                      const dt = Z.parse(k[1], 1, An);
                      if (!dt)
                        return null;
                      const At = [];
                      let Dt = null;
                      Z.expectedType && Z.expectedType.kind !== "value" && (Dt = Z.expectedType);
                      for (let Ut = 1; Ut < k.length; Ut += 2) {
                        const se = Ut === 1 ? -1 / 0 : k[Ut], Ie = k[Ut + 1], He = Ut, Ke = Ut + 1;
                        if (typeof se != "number")
                          return Z.error('Input/output pairs for "step" expressions must be defined using literal numeric values (not computed expressions) for the input values.', He);
                        if (At.length && At[At.length - 1][0] >= se)
                          return Z.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.', He);
                        const cr = Z.parse(Ie, Ke, Dt);
                        if (!cr)
                          return null;
                        Dt = Dt || cr.type, At.push([se, cr]);
                      }
                      return new Xu(Dt, dt, At);
                    }
                    evaluate(k) {
                      const Z = this.labels, dt = this.outputs;
                      if (Z.length === 1)
                        return dt[0].evaluate(k);
                      const At = this.input.evaluate(k);
                      if (At <= Z[0])
                        return dt[0].evaluate(k);
                      const Dt = Z.length;
                      if (At >= Z[Dt - 1])
                        return dt[Dt - 1].evaluate(k);
                      const Ut = Wf(Z, At);
                      return dt[Ut].evaluate(k);
                    }
                    eachChild(k) {
                      k(this.input);
                      for (const Z of this.outputs)
                        k(Z);
                    }
                    outputDefined() {
                      return this.outputs.every((k) => k.outputDefined());
                    }
                  }
                  function Pd(N) {
                    return N && N.__esModule && Object.prototype.hasOwnProperty.call(N, "default") ? N.default : N;
                  }
                  var Id = td;
                  function td(N, k, Z, dt) {
                    this.cx = 3 * N, this.bx = 3 * (Z - N) - this.cx, this.ax = 1 - this.cx - this.bx, this.cy = 3 * k, this.by = 3 * (dt - k) - this.cy, this.ay = 1 - this.cy - this.by, this.p1x = N, this.p1y = k, this.p2x = Z, this.p2y = dt;
                  }
                  td.prototype = {
                    sampleCurveX: function(N) {
                      return ((this.ax * N + this.bx) * N + this.cx) * N;
                    },
                    sampleCurveY: function(N) {
                      return ((this.ay * N + this.by) * N + this.cy) * N;
                    },
                    sampleCurveDerivativeX: function(N) {
                      return (3 * this.ax * N + 2 * this.bx) * N + this.cx;
                    },
                    solveCurveX: function(N, k) {
                      if (k === void 0 && (k = 1e-6), N < 0) return 0;
                      if (N > 1) return 1;
                      for (var Z = N, dt = 0; dt < 8; dt++) {
                        var At = this.sampleCurveX(Z) - N;
                        if (Math.abs(At) < k) return Z;
                        var Dt = this.sampleCurveDerivativeX(Z);
                        if (Math.abs(Dt) < 1e-6) break;
                        Z = Z - At / Dt;
                      }
                      var Ut = 0, se = 1;
                      for (Z = N, dt = 0; dt < 20 && (At = this.sampleCurveX(Z), !(Math.abs(At - N) < k)); dt++)
                        N > At ? Ut = Z : se = Z, Z = (se - Ut) * 0.5 + Ut;
                      return Z;
                    },
                    solve: function(N, k) {
                      return this.sampleCurveY(this.solveCurveX(N, k));
                    }
                  };
                  var Ah = /* @__PURE__ */ Pd(Id);
                  function Rd(N) {
                    return N === "rgb" || N === "hcl" || N === "lab";
                  }
                  function mc(N, k, Z) {
                    return N + Z * (k - N);
                  }
                  function ed(N, k, Z, dt = "rgb") {
                    switch (dt) {
                      case "rgb": {
                        const [At, Dt, Ut, se] = mf(N.rgb, k.rgb, Z);
                        return new so(At, Dt, Ut, se, !1);
                      }
                      case "hcl": {
                        const [At, Dt, Ut, se] = N.hcl, [Ie, He, Ke, cr] = k.hcl;
                        let Mr, Vr;
                        if (!isNaN(At) && !isNaN(Ie)) {
                          let Ii = Ie - At;
                          Ie > At && Ii > 180 ? Ii -= 360 : Ie < At && At - Ie > 180 && (Ii += 360), Mr = At + Z * Ii;
                        } else isNaN(At) ? isNaN(Ie) ? Mr = NaN : (Mr = Ie, (Ut === 1 || Ut === 0) && (Vr = He)) : (Mr = At, (Ke === 1 || Ke === 0) && (Vr = Dt));
                        const [nn, gn, jn, ui] = ki([
                          Mr,
                          Vr ?? mc(Dt, He, Z),
                          mc(Ut, Ke, Z),
                          mc(se, cr, Z)
                        ]);
                        return new so(nn, gn, jn, ui, !1);
                      }
                      case "lab": {
                        const [At, Dt, Ut, se] = fi(mf(N.lab, k.lab, Z));
                        return new so(At, Dt, Ut, se, !1);
                      }
                    }
                  }
                  function mf(N, k, Z) {
                    return N.map((dt, At) => mc(dt, k[At], Z));
                  }
                  function xc(N, k, Z) {
                    return new io(mf(N.values, k.values, Z));
                  }
                  function Fc(N, k, Z) {
                    const dt = N.values, At = k.values;
                    if (dt.length !== At.length)
                      throw new yo(`Cannot interpolate values of different length. from: ${N.toString()}, to: ${k.toString()}`);
                    const Dt = [];
                    for (let Ut = 0; Ut < dt.length; Ut += 2) {
                      if (dt[Ut] !== At[Ut])
                        throw new yo(`Cannot interpolate values containing mismatched anchors. from[${Ut}]: ${dt[Ut]}, to[${Ut}]: ${At[Ut]}`);
                      Dt.push(dt[Ut]);
                      const [se, Ie] = dt[Ut + 1], [He, Ke] = At[Ut + 1];
                      Dt.push([mc(se, He, Z), mc(Ie, Ke, Z)]);
                    }
                    return new yl(Dt);
                  }
                  const Vs = {
                    number: mc,
                    color: ed,
                    array: mf,
                    padding: xc,
                    variableAnchorOffsetCollection: Fc
                  };
                  class Hs {
                    constructor(k, Z, dt, At, Dt) {
                      this.type = k, this.operator = Z, this.interpolation = dt, this.input = At, this.labels = [], this.outputs = [];
                      for (const [Ut, se] of Dt)
                        this.labels.push(Ut), this.outputs.push(se);
                    }
                    static interpolationFactor(k, Z, dt, At) {
                      let Dt = 0;
                      if (k.name === "exponential")
                        Dt = jf(Z, k.base, dt, At);
                      else if (k.name === "linear")
                        Dt = jf(Z, 1, dt, At);
                      else if (k.name === "cubic-bezier") {
                        const Ut = k.controlPoints;
                        Dt = new Ah(Ut[0], Ut[1], Ut[2], Ut[3]).solve(jf(Z, 1, dt, At));
                      }
                      return Dt;
                    }
                    static parse(k, Z) {
                      let [dt, At, Dt, ...Ut] = k;
                      if (!Array.isArray(At) || At.length === 0)
                        return Z.error("Expected an interpolation type expression.", 1);
                      if (At[0] === "linear")
                        At = { name: "linear" };
                      else if (At[0] === "exponential") {
                        const He = At[1];
                        if (typeof He != "number")
                          return Z.error("Exponential interpolation requires a numeric base.", 1, 1);
                        At = {
                          name: "exponential",
                          base: He
                        };
                      } else if (At[0] === "cubic-bezier") {
                        const He = At.slice(1);
                        if (He.length !== 4 || He.some((Ke) => typeof Ke != "number" || Ke < 0 || Ke > 1))
                          return Z.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.", 1);
                        At = {
                          name: "cubic-bezier",
                          controlPoints: He
                        };
                      } else
                        return Z.error(`Unknown interpolation type ${String(At[0])}`, 1, 0);
                      if (k.length - 1 < 4)
                        return Z.error(`Expected at least 4 arguments, but found only ${k.length - 1}.`);
                      if ((k.length - 1) % 2 !== 0)
                        return Z.error("Expected an even number of arguments.");
                      if (Dt = Z.parse(Dt, 2, An), !Dt)
                        return null;
                      const se = [];
                      let Ie = null;
                      dt === "interpolate-hcl" || dt === "interpolate-lab" ? Ie = qi : Z.expectedType && Z.expectedType.kind !== "value" && (Ie = Z.expectedType);
                      for (let He = 0; He < Ut.length; He += 2) {
                        const Ke = Ut[He], cr = Ut[He + 1], Mr = He + 3, Vr = He + 4;
                        if (typeof Ke != "number")
                          return Z.error('Input/output pairs for "interpolate" expressions must be defined using literal numeric values (not computed expressions) for the input values.', Mr);
                        if (se.length && se[se.length - 1][0] >= Ke)
                          return Z.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.', Mr);
                        const nn = Z.parse(cr, Vr, Ie);
                        if (!nn)
                          return null;
                        Ie = Ie || nn.type, se.push([Ke, nn]);
                      }
                      return !Ca(Ie, An) && !Ca(Ie, qi) && !Ca(Ie, Cn) && !Ca(Ie, Fn) && !Ca(Ie, mi(An)) ? Z.error(`Type ${Nn(Ie)} is not interpolatable.`) : new Hs(Ie, dt, At, Dt, se);
                    }
                    evaluate(k) {
                      const Z = this.labels, dt = this.outputs;
                      if (Z.length === 1)
                        return dt[0].evaluate(k);
                      const At = this.input.evaluate(k);
                      if (At <= Z[0])
                        return dt[0].evaluate(k);
                      const Dt = Z.length;
                      if (At >= Z[Dt - 1])
                        return dt[Dt - 1].evaluate(k);
                      const Ut = Wf(Z, At), se = Z[Ut], Ie = Z[Ut + 1], He = Hs.interpolationFactor(this.interpolation, At, se, Ie), Ke = dt[Ut].evaluate(k), cr = dt[Ut + 1].evaluate(k);
                      switch (this.operator) {
                        case "interpolate":
                          return Vs[this.type.kind](Ke, cr, He);
                        case "interpolate-hcl":
                          return Vs.color(Ke, cr, He, "hcl");
                        case "interpolate-lab":
                          return Vs.color(Ke, cr, He, "lab");
                      }
                    }
                    eachChild(k) {
                      k(this.input);
                      for (const Z of this.outputs)
                        k(Z);
                    }
                    outputDefined() {
                      return this.outputs.every((k) => k.outputDefined());
                    }
                  }
                  function jf(N, k, Z, dt) {
                    const At = dt - Z, Dt = N - Z;
                    return At === 0 ? 0 : k === 1 ? Dt / At : (Math.pow(k, Dt) - 1) / (Math.pow(k, At) - 1);
                  }
                  class Tl {
                    constructor(k, Z) {
                      this.type = k, this.args = Z;
                    }
                    static parse(k, Z) {
                      if (k.length < 2)
                        return Z.error("Expectected at least one argument.");
                      let dt = null;
                      const At = Z.expectedType;
                      At && At.kind !== "value" && (dt = At);
                      const Dt = [];
                      for (const se of k.slice(1)) {
                        const Ie = Z.parse(se, 1 + Dt.length, dt, void 0, { typeAnnotation: "omit" });
                        if (!Ie)
                          return null;
                        dt = dt || Ie.type, Dt.push(Ie);
                      }
                      if (!dt)
                        throw new Error("No output type");
                      return At && Dt.some((se) => Ai(At, se.type)) ? new Tl(Mi, Dt) : new Tl(dt, Dt);
                    }
                    evaluate(k) {
                      let Z = null, dt = 0, At;
                      for (const Dt of this.args)
                        if (dt++, Z = Dt.evaluate(k), Z && Z instanceof jo && !Z.available && (At || (At = Z.name), Z = null, dt === this.args.length && (Z = At)), Z !== null)
                          break;
                      return Z;
                    }
                    eachChild(k) {
                      this.args.forEach(k);
                    }
                    outputDefined() {
                      return this.args.every((k) => k.outputDefined());
                    }
                  }
                  function rd(N, k) {
                    return N === "==" || N === "!=" ? k.kind === "boolean" || k.kind === "string" || k.kind === "number" || k.kind === "null" || k.kind === "value" : k.kind === "string" || k.kind === "number" || k.kind === "value";
                  }
                  function Zf(N, k, Z) {
                    return k === Z;
                  }
                  function nd(N, k, Z) {
                    return k !== Z;
                  }
                  function id(N, k, Z) {
                    return k < Z;
                  }
                  function Xf(N, k, Z) {
                    return k > Z;
                  }
                  function ql(N, k, Z) {
                    return k <= Z;
                  }
                  function Oc(N, k, Z) {
                    return k >= Z;
                  }
                  function Yu(N, k, Z, dt) {
                    return dt.compare(k, Z) === 0;
                  }
                  function xf(N, k, Z, dt) {
                    return !Yu(N, k, Z, dt);
                  }
                  function Ku(N, k, Z, dt) {
                    return dt.compare(k, Z) < 0;
                  }
                  function cu(N, k, Z, dt) {
                    return dt.compare(k, Z) > 0;
                  }
                  function Sh(N, k, Z, dt) {
                    return dt.compare(k, Z) <= 0;
                  }
                  function Bc(N, k, Z, dt) {
                    return dt.compare(k, Z) >= 0;
                  }
                  function Js(N, k, Z) {
                    const dt = N !== "==" && N !== "!=";
                    return class q_ {
                      constructor(Dt, Ut, se) {
                        this.type = si, this.lhs = Dt, this.rhs = Ut, this.collator = se, this.hasUntypedArgument = Dt.type.kind === "value" || Ut.type.kind === "value";
                      }
                      static parse(Dt, Ut) {
                        if (Dt.length !== 3 && Dt.length !== 4)
                          return Ut.error("Expected two or three arguments.");
                        const se = Dt[0];
                        let Ie = Ut.parse(Dt[1], 1, Mi);
                        if (!Ie)
                          return null;
                        if (!rd(se, Ie.type))
                          return Ut.concat(1).error(`"${se}" comparisons are not supported for type '${Nn(Ie.type)}'.`);
                        let He = Ut.parse(Dt[2], 2, Mi);
                        if (!He)
                          return null;
                        if (!rd(se, He.type))
                          return Ut.concat(2).error(`"${se}" comparisons are not supported for type '${Nn(He.type)}'.`);
                        if (Ie.type.kind !== He.type.kind && Ie.type.kind !== "value" && He.type.kind !== "value")
                          return Ut.error(`Cannot compare types '${Nn(Ie.type)}' and '${Nn(He.type)}'.`);
                        dt && (Ie.type.kind === "value" && He.type.kind !== "value" ? Ie = new Ks(He.type, [Ie]) : Ie.type.kind !== "value" && He.type.kind === "value" && (He = new Ks(Ie.type, [He])));
                        let Ke = null;
                        if (Dt.length === 4) {
                          if (Ie.type.kind !== "string" && He.type.kind !== "string" && Ie.type.kind !== "value" && He.type.kind !== "value")
                            return Ut.error("Cannot use collator to compare non-string types.");
                          if (Ke = Ut.parse(Dt[3], 3, ci), !Ke)
                            return null;
                        }
                        return new q_(Ie, He, Ke);
                      }
                      evaluate(Dt) {
                        const Ut = this.lhs.evaluate(Dt), se = this.rhs.evaluate(Dt);
                        if (dt && this.hasUntypedArgument) {
                          const Ie = ss(Ut), He = ss(se);
                          if (Ie.kind !== He.kind || !(Ie.kind === "string" || Ie.kind === "number"))
                            throw new yo(`Expected arguments for "${N}" to be (string, string) or (number, number), but found (${Ie.kind}, ${He.kind}) instead.`);
                        }
                        if (this.collator && !dt && this.hasUntypedArgument) {
                          const Ie = ss(Ut), He = ss(se);
                          if (Ie.kind !== "string" || He.kind !== "string")
                            return k(Dt, Ut, se);
                        }
                        return this.collator ? Z(Dt, Ut, se, this.collator.evaluate(Dt)) : k(Dt, Ut, se);
                      }
                      eachChild(Dt) {
                        Dt(this.lhs), Dt(this.rhs), this.collator && Dt(this.collator);
                      }
                      outputDefined() {
                        return !0;
                      }
                    };
                  }
                  const ls = Js("==", Zf, Yu), bc = Js("!=", nd, xf), Ho = Js("<", id, Ku), Yf = Js(">", Xf, cu), Nc = Js("<=", ql, Sh), Uc = Js(">=", Oc, Bc);
                  class Gs {
                    constructor(k, Z, dt) {
                      this.type = ci, this.locale = dt, this.caseSensitive = k, this.diacriticSensitive = Z;
                    }
                    static parse(k, Z) {
                      if (k.length !== 2)
                        return Z.error("Expected one argument.");
                      const dt = k[1];
                      if (typeof dt != "object" || Array.isArray(dt))
                        return Z.error("Collator options argument must be an object.");
                      const At = Z.parse(dt["case-sensitive"] === void 0 ? !1 : dt["case-sensitive"], 1, si);
                      if (!At)
                        return null;
                      const Dt = Z.parse(dt["diacritic-sensitive"] === void 0 ? !1 : dt["diacritic-sensitive"], 1, si);
                      if (!Dt)
                        return null;
                      let Ut = null;
                      return dt.locale && (Ut = Z.parse(dt.locale, 1, qn), !Ut) ? null : new Gs(At, Dt, Ut);
                    }
                    evaluate(k) {
                      return new Ql(this.caseSensitive.evaluate(k), this.diacriticSensitive.evaluate(k), this.locale ? this.locale.evaluate(k) : null);
                    }
                    eachChild(k) {
                      k(this.caseSensitive), k(this.diacriticSensitive), this.locale && k(this.locale);
                    }
                    outputDefined() {
                      return !1;
                    }
                  }
                  class Vc {
                    constructor(k, Z, dt, At, Dt) {
                      this.type = qn, this.number = k, this.locale = Z, this.currency = dt, this.minFractionDigits = At, this.maxFractionDigits = Dt;
                    }
                    static parse(k, Z) {
                      if (k.length !== 3)
                        return Z.error("Expected two arguments.");
                      const dt = Z.parse(k[1], 1, An);
                      if (!dt)
                        return null;
                      const At = k[2];
                      if (typeof At != "object" || Array.isArray(At))
                        return Z.error("NumberFormat options argument must be an object.");
                      let Dt = null;
                      if (At.locale && (Dt = Z.parse(At.locale, 1, qn), !Dt))
                        return null;
                      let Ut = null;
                      if (At.currency && (Ut = Z.parse(At.currency, 1, qn), !Ut))
                        return null;
                      let se = null;
                      if (At["min-fraction-digits"] && (se = Z.parse(At["min-fraction-digits"], 1, An), !se))
                        return null;
                      let Ie = null;
                      return At["max-fraction-digits"] && (Ie = Z.parse(At["max-fraction-digits"], 1, An), !Ie) ? null : new Vc(dt, Dt, Ut, se, Ie);
                    }
                    evaluate(k) {
                      return new Intl.NumberFormat(this.locale ? this.locale.evaluate(k) : [], {
                        style: this.currency ? "currency" : "decimal",
                        currency: this.currency ? this.currency.evaluate(k) : void 0,
                        minimumFractionDigits: this.minFractionDigits ? this.minFractionDigits.evaluate(k) : void 0,
                        maximumFractionDigits: this.maxFractionDigits ? this.maxFractionDigits.evaluate(k) : void 0
                      }).format(this.number.evaluate(k));
                    }
                    eachChild(k) {
                      k(this.number), this.locale && k(this.locale), this.currency && k(this.currency), this.minFractionDigits && k(this.minFractionDigits), this.maxFractionDigits && k(this.maxFractionDigits);
                    }
                    outputDefined() {
                      return !1;
                    }
                  }
                  class Cu {
                    constructor(k) {
                      this.type = rn, this.sections = k;
                    }
                    static parse(k, Z) {
                      if (k.length < 2)
                        return Z.error("Expected at least one argument.");
                      const dt = k[1];
                      if (!Array.isArray(dt) && typeof dt == "object")
                        return Z.error("First argument must be an image or text section.");
                      const At = [];
                      let Dt = !1;
                      for (let Ut = 1; Ut <= k.length - 1; ++Ut) {
                        const se = k[Ut];
                        if (Dt && typeof se == "object" && !Array.isArray(se)) {
                          Dt = !1;
                          let Ie = null;
                          if (se["font-scale"] && (Ie = Z.parse(se["font-scale"], 1, An), !Ie))
                            return null;
                          let He = null;
                          if (se["text-font"] && (He = Z.parse(se["text-font"], 1, mi(qn)), !He))
                            return null;
                          let Ke = null;
                          if (se["text-color"] && (Ke = Z.parse(se["text-color"], 1, qi), !Ke))
                            return null;
                          const cr = At[At.length - 1];
                          cr.scale = Ie, cr.font = He, cr.textColor = Ke;
                        } else {
                          const Ie = Z.parse(k[Ut], 1, Mi);
                          if (!Ie)
                            return null;
                          const He = Ie.type.kind;
                          if (He !== "string" && He !== "value" && He !== "null" && He !== "resolvedImage")
                            return Z.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");
                          Dt = !0, At.push({ content: Ie, scale: null, font: null, textColor: null });
                        }
                      }
                      return new Cu(At);
                    }
                    evaluate(k) {
                      const Z = (dt) => {
                        const At = dt.content.evaluate(k);
                        return ss(At) === Un ? new Zu("", At, null, null, null) : new Zu(qo(At), null, dt.scale ? dt.scale.evaluate(k) : null, dt.font ? dt.font.evaluate(k).join(",") : null, dt.textColor ? dt.textColor.evaluate(k) : null);
                      };
                      return new Ns(this.sections.map(Z));
                    }
                    eachChild(k) {
                      for (const Z of this.sections)
                        k(Z.content), Z.scale && k(Z.scale), Z.font && k(Z.font), Z.textColor && k(Z.textColor);
                    }
                    outputDefined() {
                      return !1;
                    }
                  }
                  class Hc {
                    constructor(k) {
                      this.type = Un, this.input = k;
                    }
                    static parse(k, Z) {
                      if (k.length !== 2)
                        return Z.error("Expected two arguments.");
                      const dt = Z.parse(k[1], 1, qn);
                      return dt ? new Hc(dt) : Z.error("No image name provided.");
                    }
                    evaluate(k) {
                      const Z = this.input.evaluate(k), dt = jo.fromString(Z);
                      return dt && k.availableImages && (dt.available = k.availableImages.indexOf(Z) > -1), dt;
                    }
                    eachChild(k) {
                      k(this.input);
                    }
                    outputDefined() {
                      return !1;
                    }
                  }
                  class Mh {
                    constructor(k) {
                      this.type = An, this.input = k;
                    }
                    static parse(k, Z) {
                      if (k.length !== 2)
                        return Z.error(`Expected 1 argument, but found ${k.length - 1} instead.`);
                      const dt = Z.parse(k[1], 1);
                      return dt ? dt.type.kind !== "array" && dt.type.kind !== "string" && dt.type.kind !== "value" ? Z.error(`Expected argument of type string or array, but found ${Nn(dt.type)} instead.`) : new Mh(dt) : null;
                    }
                    evaluate(k) {
                      const Z = this.input.evaluate(k);
                      if (typeof Z == "string")
                        return Z.length;
                      if (Array.isArray(Z))
                        return Z.length;
                      throw new yo(`Expected value to be of type string or array, but found ${Nn(ss(Z))} instead.`);
                    }
                    eachChild(k) {
                      k(this.input);
                    }
                    outputDefined() {
                      return !1;
                    }
                  }
                  const Al = 8192;
                  function Eh(N, k) {
                    const Z = Ch(N[0]), dt = Kf(N[1]), At = Math.pow(2, k.z);
                    return [Math.round(Z * At * Al), Math.round(dt * At * Al)];
                  }
                  function Gc(N, k) {
                    const Z = Math.pow(2, k.z), dt = (N[0] / Al + k.x) / Z, At = (N[1] / Al + k.y) / Z;
                    return [Wc(dt), jc(At)];
                  }
                  function Ch(N) {
                    return (180 + N) / 360;
                  }
                  function Wc(N) {
                    return N * 360 - 180;
                  }
                  function Kf(N) {
                    return (180 - 180 / Math.PI * Math.log(Math.tan(Math.PI / 4 + N * Math.PI / 360))) / 360;
                  }
                  function jc(N) {
                    return 360 / Math.PI * Math.atan(Math.exp((180 - N * 360) * Math.PI / 180)) - 90;
                  }
                  function Ju(N, k) {
                    N[0] = Math.min(N[0], k[0]), N[1] = Math.min(N[1], k[1]), N[2] = Math.max(N[2], k[0]), N[3] = Math.max(N[3], k[1]);
                  }
                  function Ro(N, k) {
                    return !(N[0] <= k[0] || N[2] >= k[2] || N[1] <= k[1] || N[3] >= k[3]);
                  }
                  function ad(N, k, Z) {
                    return k[1] > N[1] != Z[1] > N[1] && N[0] < (Z[0] - k[0]) * (N[1] - k[1]) / (Z[1] - k[1]) + k[0];
                  }
                  function tu(N, k, Z) {
                    const dt = N[0] - k[0], At = N[1] - k[1], Dt = N[0] - Z[0], Ut = N[1] - Z[1];
                    return dt * Ut - Dt * At === 0 && dt * Dt <= 0 && At * Ut <= 0;
                  }
                  function bf(N, k, Z, dt) {
                    const At = [k[0] - N[0], k[1] - N[1]], Dt = [dt[0] - Z[0], dt[1] - Z[1]];
                    return _f(Dt, At) === 0 ? !1 : !!(Nl(N, k, Z, dt) && Nl(Z, dt, N, k));
                  }
                  function Jf(N, k, Z) {
                    for (const dt of Z)
                      for (let At = 0; At < dt.length - 1; ++At)
                        if (bf(N, k, dt[At], dt[At + 1]))
                          return !0;
                    return !1;
                  }
                  function Sl(N, k, Z = !1) {
                    let dt = !1;
                    for (const At of k)
                      for (let Dt = 0; Dt < At.length - 1; Dt++) {
                        if (tu(N, At[Dt], At[Dt + 1]))
                          return Z;
                        ad(N, At[Dt], At[Dt + 1]) && (dt = !dt);
                      }
                    return dt;
                  }
                  function Qu(N, k) {
                    for (const Z of k)
                      if (Sl(N, Z))
                        return !0;
                    return !1;
                  }
                  function wf(N, k) {
                    for (const Z of N)
                      if (!Sl(Z, k))
                        return !1;
                    for (let Z = 0; Z < N.length - 1; ++Z)
                      if (Jf(N[Z], N[Z + 1], k))
                        return !1;
                    return !0;
                  }
                  function vs(N, k) {
                    for (const Z of k)
                      if (wf(N, Z))
                        return !0;
                    return !1;
                  }
                  function _f(N, k) {
                    return N[0] * k[1] - N[1] * k[0];
                  }
                  function Nl(N, k, Z, dt) {
                    const At = N[0] - Z[0], Dt = N[1] - Z[1], Ut = k[0] - Z[0], se = k[1] - Z[1], Ie = dt[0] - Z[0], He = dt[1] - Z[1], Ke = At * He - Ie * Dt, cr = Ut * He - Ie * se;
                    return Ke > 0 && cr < 0 || Ke < 0 && cr > 0;
                  }
                  function eu(N, k, Z) {
                    const dt = [];
                    for (let At = 0; At < N.length; At++) {
                      const Dt = [];
                      for (let Ut = 0; Ut < N[At].length; Ut++) {
                        const se = Eh(N[At][Ut], Z);
                        Ju(k, se), Dt.push(se);
                      }
                      dt.push(Dt);
                    }
                    return dt;
                  }
                  function $u(N, k, Z) {
                    const dt = [];
                    for (let At = 0; At < N.length; At++) {
                      const Dt = eu(N[At], k, Z);
                      dt.push(Dt);
                    }
                    return dt;
                  }
                  function Lu(N, k, Z, dt) {
                    if (N[0] < Z[0] || N[0] > Z[2]) {
                      const At = dt * 0.5;
                      let Dt = N[0] - Z[0] > At ? -dt : Z[0] - N[0] > At ? dt : 0;
                      Dt === 0 && (Dt = N[0] - Z[2] > At ? -dt : Z[2] - N[0] > At ? dt : 0), N[0] += Dt;
                    }
                    Ju(k, N);
                  }
                  function ru(N) {
                    N[0] = N[1] = 1 / 0, N[2] = N[3] = -1 / 0;
                  }
                  function nu(N, k, Z, dt) {
                    const At = Math.pow(2, dt.z) * Al, Dt = [dt.x * Al, dt.y * Al], Ut = [];
                    for (const se of N)
                      for (const Ie of se) {
                        const He = [Ie.x + Dt[0], Ie.y + Dt[1]];
                        Lu(He, k, Z, At), Ut.push(He);
                      }
                    return Ut;
                  }
                  function Ul(N, k, Z, dt) {
                    const At = Math.pow(2, dt.z) * Al, Dt = [dt.x * Al, dt.y * Al], Ut = [];
                    for (const se of N) {
                      const Ie = [];
                      for (const He of se) {
                        const Ke = [He.x + Dt[0], He.y + Dt[1]];
                        Ju(k, Ke), Ie.push(Ke);
                      }
                      Ut.push(Ie);
                    }
                    if (k[2] - k[0] <= At / 2) {
                      ru(k);
                      for (const se of Ut)
                        for (const Ie of se)
                          Lu(Ie, k, Z, At);
                    }
                    return Ut;
                  }
                  function Ml(N, k) {
                    const Z = [1 / 0, 1 / 0, -1 / 0, -1 / 0], dt = [1 / 0, 1 / 0, -1 / 0, -1 / 0], At = N.canonicalID();
                    if (k.type === "Polygon") {
                      const Dt = eu(k.coordinates, dt, At), Ut = nu(N.geometry(), Z, dt, At);
                      if (!Ro(Z, dt))
                        return !1;
                      for (const se of Ut)
                        if (!Sl(se, Dt))
                          return !1;
                    }
                    if (k.type === "MultiPolygon") {
                      const Dt = $u(k.coordinates, dt, At), Ut = nu(N.geometry(), Z, dt, At);
                      if (!Ro(Z, dt))
                        return !1;
                      for (const se of Ut)
                        if (!Qu(se, Dt))
                          return !1;
                    }
                    return !0;
                  }
                  function Tf(N, k) {
                    const Z = [1 / 0, 1 / 0, -1 / 0, -1 / 0], dt = [1 / 0, 1 / 0, -1 / 0, -1 / 0], At = N.canonicalID();
                    if (k.type === "Polygon") {
                      const Dt = eu(k.coordinates, dt, At), Ut = Ul(N.geometry(), Z, dt, At);
                      if (!Ro(Z, dt))
                        return !1;
                      for (const se of Ut)
                        if (!wf(se, Dt))
                          return !1;
                    }
                    if (k.type === "MultiPolygon") {
                      const Dt = $u(k.coordinates, dt, At), Ut = Ul(N.geometry(), Z, dt, At);
                      if (!Ro(Z, dt))
                        return !1;
                      for (const se of Ut)
                        if (!vs(se, Dt))
                          return !1;
                    }
                    return !0;
                  }
                  class wc {
                    constructor(k, Z) {
                      this.type = si, this.geojson = k, this.geometries = Z;
                    }
                    static parse(k, Z) {
                      if (k.length !== 2)
                        return Z.error(`'within' expression requires exactly one argument, but found ${k.length - 1} instead.`);
                      if (uu(k[1])) {
                        const dt = k[1];
                        if (dt.type === "FeatureCollection") {
                          const At = [];
                          for (const Dt of dt.features) {
                            const { type: Ut, coordinates: se } = Dt.geometry;
                            Ut === "Polygon" && At.push(se), Ut === "MultiPolygon" && At.push(...se);
                          }
                          if (At.length) {
                            const Dt = {
                              type: "MultiPolygon",
                              coordinates: At
                            };
                            return new wc(dt, Dt);
                          }
                        } else if (dt.type === "Feature") {
                          const At = dt.geometry.type;
                          if (At === "Polygon" || At === "MultiPolygon")
                            return new wc(dt, dt.geometry);
                        } else if (dt.type === "Polygon" || dt.type === "MultiPolygon")
                          return new wc(dt, dt);
                      }
                      return Z.error("'within' expression requires valid geojson object that contains polygon geometry type.");
                    }
                    evaluate(k) {
                      if (k.geometry() != null && k.canonicalID() != null) {
                        if (k.geometryType() === "Point")
                          return Ml(k, this.geometries);
                        if (k.geometryType() === "LineString")
                          return Tf(k, this.geometries);
                      }
                      return !1;
                    }
                    eachChild() {
                    }
                    outputDefined() {
                      return !0;
                    }
                  }
                  let od = class {
                    constructor(k = [], Z = Dd) {
                      if (this.data = k, this.length = this.data.length, this.compare = Z, this.length > 0)
                        for (let dt = (this.length >> 1) - 1; dt >= 0; dt--) this._down(dt);
                    }
                    push(k) {
                      this.data.push(k), this.length++, this._up(this.length - 1);
                    }
                    pop() {
                      if (this.length === 0) return;
                      const k = this.data[0], Z = this.data.pop();
                      return this.length--, this.length > 0 && (this.data[0] = Z, this._down(0)), k;
                    }
                    peek() {
                      return this.data[0];
                    }
                    _up(k) {
                      const { data: Z, compare: dt } = this, At = Z[k];
                      for (; k > 0; ) {
                        const Dt = k - 1 >> 1, Ut = Z[Dt];
                        if (dt(At, Ut) >= 0) break;
                        Z[k] = Ut, k = Dt;
                      }
                      Z[k] = At;
                    }
                    _down(k) {
                      const { data: Z, compare: dt } = this, At = this.length >> 1, Dt = Z[k];
                      for (; k < At; ) {
                        let Ut = (k << 1) + 1, se = Z[Ut];
                        const Ie = Ut + 1;
                        if (Ie < this.length && dt(Z[Ie], se) < 0 && (Ut = Ie, se = Z[Ie]), dt(se, Dt) >= 0) break;
                        Z[k] = se, k = Ut;
                      }
                      Z[k] = Dt;
                    }
                  };
                  function Dd(N, k) {
                    return N < k ? -1 : N > k ? 1 : 0;
                  }
                  function kd(N, k, Z, dt, At) {
                    Qf(N, k, Z, dt || N.length - 1, At || Xc);
                  }
                  function Qf(N, k, Z, dt, At) {
                    for (; dt > Z; ) {
                      if (dt - Z > 600) {
                        var Dt = dt - Z + 1, Ut = k - Z + 1, se = Math.log(Dt), Ie = 0.5 * Math.exp(2 * se / 3), He = 0.5 * Math.sqrt(se * Ie * (Dt - Ie) / Dt) * (Ut - Dt / 2 < 0 ? -1 : 1), Ke = Math.max(Z, Math.floor(k - Ut * Ie / Dt + He)), cr = Math.min(dt, Math.floor(k + (Dt - Ut) * Ie / Dt + He));
                        Qf(N, k, Ke, cr, At);
                      }
                      var Mr = N[k], Vr = Z, nn = dt;
                      for (Zc(N, Z, k), At(N[dt], Mr) > 0 && Zc(N, Z, dt); Vr < nn; ) {
                        for (Zc(N, Vr, nn), Vr++, nn--; At(N[Vr], Mr) < 0; ) Vr++;
                        for (; At(N[nn], Mr) > 0; ) nn--;
                      }
                      At(N[Z], Mr) === 0 ? Zc(N, Z, nn) : (nn++, Zc(N, nn, dt)), nn <= k && (Z = nn + 1), k <= nn && (dt = nn - 1);
                    }
                  }
                  function Zc(N, k, Z) {
                    var dt = N[k];
                    N[k] = N[Z], N[Z] = dt;
                  }
                  function Xc(N, k) {
                    return N < k ? -1 : N > k ? 1 : 0;
                  }
                  function xs(N, k) {
                    if (N.length <= 1)
                      return [N];
                    const dt = [];
                    let At, Dt;
                    for (const Ut of N) {
                      const se = Yc(Ut);
                      se !== 0 && (Ut.area = Math.abs(se), Dt === void 0 && (Dt = se < 0), Dt === se < 0 ? (At && dt.push(At), At = [Ut]) : At.push(Ut));
                    }
                    if (At && dt.push(At), k > 1)
                      for (let Ut = 0; Ut < dt.length; Ut++)
                        dt[Ut].length <= k || (kd(dt[Ut], k, 1, dt[Ut].length - 1, El), dt[Ut] = dt[Ut].slice(0, k));
                    return dt;
                  }
                  function El(N, k) {
                    return k.area - N.area;
                  }
                  function Yc(N) {
                    let k = 0;
                    for (let Z = 0, dt = N.length, At = dt - 1, Dt, Ut; Z < dt; At = Z++)
                      Dt = N[Z], Ut = N[At], k += (Ut.x - Dt.x) * (Dt.y + Ut.y);
                    return k;
                  }
                  const sd = 6378.137, Kc = 1 / 298.257223563, Vl = Kc * (2 - Kc), ld = Math.PI / 180;
                  class $f {
                    constructor(k) {
                      const Z = ld * sd * 1e3, dt = Math.cos(k * ld), At = 1 / (1 - Vl * (1 - dt * dt)), Dt = Math.sqrt(At);
                      this.kx = Z * Dt * dt, this.ky = Z * Dt * At * (1 - Vl);
                    }
                    /**
                     * Given two points of the form [longitude, latitude], returns the distance.
                     *
                     * @param a - point [longitude, latitude]
                     * @param b - point [longitude, latitude]
                     * @returns distance
                     * @example
                     * const distance = ruler.distance([30.5, 50.5], [30.51, 50.49]);
                     * //=distance
                     */
                    distance(k, Z) {
                      const dt = this.wrap(k[0] - Z[0]) * this.kx, At = (k[1] - Z[1]) * this.ky;
                      return Math.sqrt(dt * dt + At * At);
                    }
                    /**
                     * Returns an object of the form {point, index, t}, where point is closest point on the line
                     * from the given point, index is the start index of the segment with the closest point,
                     * and t is a parameter from 0 to 1 that indicates where the closest point is on that segment.
                     *
                     * @param line - an array of points that form the line
                     * @param p - point [longitude, latitude]
                     * @returns the nearest point, its index in the array and the proportion along the line
                     * @example
                     * const point = ruler.pointOnLine(line, [-67.04, 50.5]).point;
                     * //=point
                     */
                    pointOnLine(k, Z) {
                      let dt = 1 / 0, At, Dt, Ut, se;
                      for (let Ie = 0; Ie < k.length - 1; Ie++) {
                        let He = k[Ie][0], Ke = k[Ie][1], cr = this.wrap(k[Ie + 1][0] - He) * this.kx, Mr = (k[Ie + 1][1] - Ke) * this.ky, Vr = 0;
                        (cr !== 0 || Mr !== 0) && (Vr = (this.wrap(Z[0] - He) * this.kx * cr + (Z[1] - Ke) * this.ky * Mr) / (cr * cr + Mr * Mr), Vr > 1 ? (He = k[Ie + 1][0], Ke = k[Ie + 1][1]) : Vr > 0 && (He += cr / this.kx * Vr, Ke += Mr / this.ky * Vr)), cr = this.wrap(Z[0] - He) * this.kx, Mr = (Z[1] - Ke) * this.ky;
                        const nn = cr * cr + Mr * Mr;
                        nn < dt && (dt = nn, At = He, Dt = Ke, Ut = Ie, se = Vr);
                      }
                      return {
                        point: [At, Dt],
                        index: Ut,
                        t: Math.max(0, Math.min(1, se))
                      };
                    }
                    wrap(k) {
                      for (; k < -180; )
                        k += 360;
                      for (; k > 180; )
                        k -= 360;
                      return k;
                    }
                  }
                  const qf = 100, Jc = 50;
                  function th(N, k) {
                    return k[0] - N[0];
                  }
                  function Fs(N) {
                    return N[1] - N[0] + 1;
                  }
                  function Ms(N, k) {
                    return N[1] >= N[0] && N[1] < k;
                  }
                  function fu(N, k) {
                    if (N[0] > N[1])
                      return [null, null];
                    const Z = Fs(N);
                    if (k) {
                      if (Z === 2)
                        return [N, null];
                      const At = Math.floor(Z / 2);
                      return [
                        [N[0], N[0] + At],
                        [N[0] + At, N[1]]
                      ];
                    }
                    if (Z === 1)
                      return [N, null];
                    const dt = Math.floor(Z / 2) - 1;
                    return [
                      [N[0], N[0] + dt],
                      [N[0] + dt + 1, N[1]]
                    ];
                  }
                  function qu(N, k) {
                    if (!Ms(k, N.length))
                      return [1 / 0, 1 / 0, -1 / 0, -1 / 0];
                    const Z = [1 / 0, 1 / 0, -1 / 0, -1 / 0];
                    for (let dt = k[0]; dt <= k[1]; ++dt)
                      Ju(Z, N[dt]);
                    return Z;
                  }
                  function Qc(N) {
                    const k = [1 / 0, 1 / 0, -1 / 0, -1 / 0];
                    for (const Z of N)
                      for (const dt of Z)
                        Ju(k, dt);
                    return k;
                  }
                  function tc(N) {
                    return N[0] !== -1 / 0 && N[1] !== -1 / 0 && N[2] !== 1 / 0 && N[3] !== 1 / 0;
                  }
                  function Pu(N, k, Z) {
                    if (!tc(N) || !tc(k))
                      return NaN;
                    let dt = 0, At = 0;
                    return N[2] < k[0] && (dt = k[0] - N[2]), N[0] > k[2] && (dt = N[0] - k[2]), N[1] > k[3] && (At = N[1] - k[3]), N[3] < k[1] && (At = k[1] - N[3]), Z.distance([0, 0], [dt, At]);
                  }
                  function ec(N, k, Z) {
                    const dt = Z.pointOnLine(k, N);
                    return Z.distance(N, dt.point);
                  }
                  function Hl(N, k, Z, dt, At) {
                    const Dt = Math.min(ec(N, [Z, dt], At), ec(k, [Z, dt], At)), Ut = Math.min(ec(Z, [N, k], At), ec(dt, [N, k], At));
                    return Math.min(Dt, Ut);
                  }
                  function _c(N, k, Z, dt, At) {
                    if (!(Ms(k, N.length) && Ms(dt, Z.length)))
                      return 1 / 0;
                    let Ut = 1 / 0;
                    for (let se = k[0]; se < k[1]; ++se) {
                      const Ie = N[se], He = N[se + 1];
                      for (let Ke = dt[0]; Ke < dt[1]; ++Ke) {
                        const cr = Z[Ke], Mr = Z[Ke + 1];
                        if (bf(Ie, He, cr, Mr))
                          return 0;
                        Ut = Math.min(Ut, Hl(Ie, He, cr, Mr, At));
                      }
                    }
                    return Ut;
                  }
                  function rc(N, k, Z, dt, At) {
                    if (!(Ms(k, N.length) && Ms(dt, Z.length)))
                      return NaN;
                    let Ut = 1 / 0;
                    for (let se = k[0]; se <= k[1]; ++se)
                      for (let Ie = dt[0]; Ie <= dt[1]; ++Ie)
                        if (Ut = Math.min(Ut, At.distance(N[se], Z[Ie])), Ut === 0)
                          return Ut;
                    return Ut;
                  }
                  function Iu(N, k, Z) {
                    if (Sl(N, k, !0))
                      return 0;
                    let dt = 1 / 0;
                    for (const At of k) {
                      const Dt = At[0], Ut = At[At.length - 1];
                      if (Dt !== Ut && (dt = Math.min(dt, ec(N, [Ut, Dt], Z)), dt === 0))
                        return dt;
                      const se = Z.pointOnLine(At, N);
                      if (dt = Math.min(dt, Z.distance(N, se.point)), dt === 0)
                        return dt;
                    }
                    return dt;
                  }
                  function Af(N, k, Z, dt) {
                    if (!Ms(k, N.length))
                      return NaN;
                    for (let Dt = k[0]; Dt <= k[1]; ++Dt)
                      if (Sl(N[Dt], Z, !0))
                        return 0;
                    let At = 1 / 0;
                    for (let Dt = k[0]; Dt < k[1]; ++Dt) {
                      const Ut = N[Dt], se = N[Dt + 1];
                      for (const Ie of Z)
                        for (let He = 0, Ke = Ie.length, cr = Ke - 1; He < Ke; cr = He++) {
                          const Mr = Ie[cr], Vr = Ie[He];
                          if (bf(Ut, se, Mr, Vr))
                            return 0;
                          At = Math.min(At, Hl(Ut, se, Mr, Vr, dt));
                        }
                    }
                    return At;
                  }
                  function Tc(N, k) {
                    for (const Z of N)
                      for (const dt of Z)
                        if (Sl(dt, k, !0))
                          return !0;
                    return !1;
                  }
                  function No(N, k, Z, dt = 1 / 0) {
                    const At = Qc(N), Dt = Qc(k);
                    if (dt !== 1 / 0 && Pu(At, Dt, Z) >= dt)
                      return dt;
                    if (Ro(At, Dt)) {
                      if (Tc(N, k))
                        return 0;
                    } else if (Tc(k, N))
                      return 0;
                    let Ut = 1 / 0;
                    for (const se of N)
                      for (let Ie = 0, He = se.length, Ke = He - 1; Ie < He; Ke = Ie++) {
                        const cr = se[Ke], Mr = se[Ie];
                        for (const Vr of k)
                          for (let nn = 0, gn = Vr.length, jn = gn - 1; nn < gn; jn = nn++) {
                            const ui = Vr[jn], Ii = Vr[nn];
                            if (bf(cr, Mr, ui, Ii))
                              return 0;
                            Ut = Math.min(Ut, Hl(cr, Mr, ui, Ii, Z));
                          }
                      }
                    return Ut;
                  }
                  function Ac(N, k, Z, dt, At, Dt) {
                    if (!Dt)
                      return;
                    const Ut = Pu(qu(dt, Dt), At, Z);
                    Ut < k && N.push([Ut, Dt, [0, 0]]);
                  }
                  function Sc(N, k, Z, dt, At, Dt, Ut) {
                    if (!Dt || !Ut)
                      return;
                    const se = Pu(qu(dt, Dt), qu(At, Ut), Z);
                    se < k && N.push([se, Dt, Ut]);
                  }
                  function Sf(N, k, Z, dt, At = 1 / 0) {
                    let Dt = Math.min(dt.distance(N[0], Z[0][0]), At);
                    if (Dt === 0)
                      return Dt;
                    const Ut = new od([[0, [0, N.length - 1], [0, 0]]], th), se = Qc(Z);
                    for (; Ut.length > 0; ) {
                      const Ie = Ut.pop();
                      if (Ie[0] >= Dt)
                        continue;
                      const He = Ie[1], Ke = k ? Jc : qf;
                      if (Fs(He) <= Ke) {
                        if (!Ms(He, N.length))
                          return NaN;
                        if (k) {
                          const cr = Af(N, He, Z, dt);
                          if (isNaN(cr) || cr === 0)
                            return cr;
                          Dt = Math.min(Dt, cr);
                        } else
                          for (let cr = He[0]; cr <= He[1]; ++cr) {
                            const Mr = Iu(N[cr], Z, dt);
                            if (Dt = Math.min(Dt, Mr), Dt === 0)
                              return 0;
                          }
                      } else {
                        const cr = fu(He, k);
                        Ac(Ut, Dt, dt, N, se, cr[0]), Ac(Ut, Dt, dt, N, se, cr[1]);
                      }
                    }
                    return Dt;
                  }
                  function Ru(N, k, Z, dt, At, Dt = 1 / 0) {
                    let Ut = Math.min(Dt, At.distance(N[0], Z[0]));
                    if (Ut === 0)
                      return Ut;
                    const se = new od([[0, [0, N.length - 1], [0, Z.length - 1]]], th);
                    for (; se.length > 0; ) {
                      const Ie = se.pop();
                      if (Ie[0] >= Ut)
                        continue;
                      const He = Ie[1], Ke = Ie[2], cr = k ? Jc : qf, Mr = dt ? Jc : qf;
                      if (Fs(He) <= cr && Fs(Ke) <= Mr) {
                        if (!Ms(He, N.length) && Ms(Ke, Z.length))
                          return NaN;
                        let Vr;
                        if (k && dt)
                          Vr = _c(N, He, Z, Ke, At), Ut = Math.min(Ut, Vr);
                        else if (k && !dt) {
                          const nn = N.slice(He[0], He[1] + 1);
                          for (let gn = Ke[0]; gn <= Ke[1]; ++gn)
                            if (Vr = ec(Z[gn], nn, At), Ut = Math.min(Ut, Vr), Ut === 0)
                              return Ut;
                        } else if (!k && dt) {
                          const nn = Z.slice(Ke[0], Ke[1] + 1);
                          for (let gn = He[0]; gn <= He[1]; ++gn)
                            if (Vr = ec(N[gn], nn, At), Ut = Math.min(Ut, Vr), Ut === 0)
                              return Ut;
                        } else
                          Vr = rc(N, He, Z, Ke, At), Ut = Math.min(Ut, Vr);
                      } else {
                        const Vr = fu(He, k), nn = fu(Ke, dt);
                        Sc(se, Ut, At, N, Z, Vr[0], nn[0]), Sc(se, Ut, At, N, Z, Vr[0], nn[1]), Sc(se, Ut, At, N, Z, Vr[1], nn[0]), Sc(se, Ut, At, N, Z, Vr[1], nn[1]);
                      }
                    }
                    return Ut;
                  }
                  function Mf(N, k) {
                    const Z = N.geometry(), dt = Z.flat().map((Ut) => Gc([Ut.x, Ut.y], N.canonical));
                    if (Z.length === 0)
                      return NaN;
                    const At = new $f(dt[0][1]);
                    let Dt = 1 / 0;
                    for (const Ut of k) {
                      switch (Ut.type) {
                        case "Point":
                          Dt = Math.min(Dt, Ru(dt, !1, [Ut.coordinates], !1, At, Dt));
                          break;
                        case "LineString":
                          Dt = Math.min(Dt, Ru(dt, !1, Ut.coordinates, !0, At, Dt));
                          break;
                        case "Polygon":
                          Dt = Math.min(Dt, Sf(dt, !1, Ut.coordinates, At, Dt));
                          break;
                      }
                      if (Dt === 0)
                        return Dt;
                    }
                    return Dt;
                  }
                  function eh(N, k) {
                    const Z = N.geometry(), dt = Z.flat().map((Ut) => Gc([Ut.x, Ut.y], N.canonical));
                    if (Z.length === 0)
                      return NaN;
                    const At = new $f(dt[0][1]);
                    let Dt = 1 / 0;
                    for (const Ut of k) {
                      switch (Ut.type) {
                        case "Point":
                          Dt = Math.min(Dt, Ru(dt, !0, [Ut.coordinates], !1, At, Dt));
                          break;
                        case "LineString":
                          Dt = Math.min(Dt, Ru(dt, !0, Ut.coordinates, !0, At, Dt));
                          break;
                        case "Polygon":
                          Dt = Math.min(Dt, Sf(dt, !0, Ut.coordinates, At, Dt));
                          break;
                      }
                      if (Dt === 0)
                        return Dt;
                    }
                    return Dt;
                  }
                  function Ef(N, k) {
                    const Z = N.geometry();
                    if (Z.length === 0 || Z[0].length === 0)
                      return NaN;
                    const dt = xs(Z, 0).map((Ut) => Ut.map((se) => se.map((Ie) => Gc([Ie.x, Ie.y], N.canonical)))), At = new $f(dt[0][0][0][1]);
                    let Dt = 1 / 0;
                    for (const Ut of k)
                      for (const se of dt) {
                        switch (Ut.type) {
                          case "Point":
                            Dt = Math.min(Dt, Sf([Ut.coordinates], !1, se, At, Dt));
                            break;
                          case "LineString":
                            Dt = Math.min(Dt, Sf(Ut.coordinates, !0, se, At, Dt));
                            break;
                          case "Polygon":
                            Dt = Math.min(Dt, No(se, Ut.coordinates, At, Dt));
                            break;
                        }
                        if (Dt === 0)
                          return Dt;
                      }
                    return Dt;
                  }
                  function hu(N) {
                    return N.type === "MultiPolygon" ? N.coordinates.map((k) => ({
                      type: "Polygon",
                      coordinates: k
                    })) : N.type === "MultiLineString" ? N.coordinates.map((k) => ({
                      type: "LineString",
                      coordinates: k
                    })) : N.type === "MultiPoint" ? N.coordinates.map((k) => ({
                      type: "Point",
                      coordinates: k
                    })) : [N];
                  }
                  class vo {
                    constructor(k, Z) {
                      this.type = An, this.geojson = k, this.geometries = Z;
                    }
                    static parse(k, Z) {
                      if (k.length !== 2)
                        return Z.error(`'distance' expression requires exactly one argument, but found ${k.length - 1} instead.`);
                      if (uu(k[1])) {
                        const dt = k[1];
                        if (dt.type === "FeatureCollection")
                          return new vo(dt, dt.features.map((At) => hu(At.geometry)).flat());
                        if (dt.type === "Feature")
                          return new vo(dt, hu(dt.geometry));
                        if ("type" in dt && "coordinates" in dt)
                          return new vo(dt, hu(dt));
                      }
                      return Z.error("'distance' expression requires valid geojson object that contains polygon geometry type.");
                    }
                    evaluate(k) {
                      if (k.geometry() != null && k.canonicalID() != null) {
                        if (k.geometryType() === "Point")
                          return Mf(k, this.geometries);
                        if (k.geometryType() === "LineString")
                          return eh(k, this.geometries);
                        if (k.geometryType() === "Polygon")
                          return Ef(k, this.geometries);
                      }
                      return NaN;
                    }
                    eachChild() {
                    }
                    outputDefined() {
                      return !0;
                    }
                  }
                  const Cl = {
                    // special forms
                    "==": ls,
                    "!=": bc,
                    ">": Yf,
                    "<": Ho,
                    ">=": Uc,
                    "<=": Nc,
                    array: Ks,
                    at: bs,
                    boolean: Ks,
                    case: gf,
                    coalesce: Tl,
                    collator: Gs,
                    format: Cu,
                    image: Hc,
                    in: pf,
                    "index-of": $l,
                    interpolate: Hs,
                    "interpolate-hcl": Hs,
                    "interpolate-lab": Hs,
                    length: Mh,
                    let: Gf,
                    literal: Ol,
                    match: Bl,
                    number: Ks,
                    "number-format": Vc,
                    object: Ks,
                    slice: yf,
                    step: Xu,
                    string: Ks,
                    "to-boolean": is,
                    "to-color": is,
                    "to-number": is,
                    "to-string": is,
                    var: _l,
                    within: wc,
                    distance: vo
                  };
                  class Qs {
                    constructor(k, Z, dt, At) {
                      this.name = k, this.type = Z, this._evaluate = dt, this.args = At;
                    }
                    evaluate(k) {
                      return this._evaluate(k, this.args);
                    }
                    eachChild(k) {
                      this.args.forEach(k);
                    }
                    outputDefined() {
                      return !1;
                    }
                    static parse(k, Z) {
                      const dt = k[0], At = Qs.definitions[dt];
                      if (!At)
                        return Z.error(`Unknown expression "${dt}". If you wanted a literal array, use ["literal", [...]].`, 0);
                      const Dt = Array.isArray(At) ? At[0] : At.type, Ut = Array.isArray(At) ? [[At[1], At[2]]] : At.overloads, se = Ut.filter(([He]) => !Array.isArray(He) || // varags
                      He.length === k.length - 1);
                      let Ie = null;
                      for (const [He, Ke] of se) {
                        Ie = new Us(Z.registry, nc, Z.path, null, Z.scope);
                        const cr = [];
                        let Mr = !1;
                        for (let Vr = 1; Vr < k.length; Vr++) {
                          const nn = k[Vr], gn = Array.isArray(He) ? He[Vr - 1] : He.type, jn = Ie.parse(nn, 1 + cr.length, gn);
                          if (!jn) {
                            Mr = !0;
                            break;
                          }
                          cr.push(jn);
                        }
                        if (!Mr) {
                          if (Array.isArray(He) && He.length !== cr.length) {
                            Ie.error(`Expected ${He.length} arguments, but found ${cr.length} instead.`);
                            continue;
                          }
                          for (let Vr = 0; Vr < cr.length; Vr++) {
                            const nn = Array.isArray(He) ? He[Vr] : He.type, gn = cr[Vr];
                            Ie.concat(Vr + 1).checkSubtype(nn, gn.type);
                          }
                          if (Ie.errors.length === 0)
                            return new Qs(dt, Dt, Ke, cr);
                        }
                      }
                      if (se.length === 1)
                        Z.errors.push(...Ie.errors);
                      else {
                        const Ke = (se.length ? se : Ut).map(([Mr]) => rh(Mr)).join(" | "), cr = [];
                        for (let Mr = 1; Mr < k.length; Mr++) {
                          const Vr = Z.parse(k[Mr], 1 + cr.length);
                          if (!Vr)
                            return null;
                          cr.push(Nn(Vr.type));
                        }
                        Z.error(`Expected arguments of type ${Ke}, but found (${cr.join(", ")}) instead.`);
                      }
                      return null;
                    }
                    static register(k, Z) {
                      Qs.definitions = Z;
                      for (const dt in Z)
                        k[dt] = Qs;
                    }
                  }
                  function Du(N, [k, Z, dt, At]) {
                    k = k.evaluate(N), Z = Z.evaluate(N), dt = dt.evaluate(N);
                    const Dt = At ? At.evaluate(N) : 1, Ut = Ys(k, Z, dt, Dt);
                    if (Ut)
                      throw new yo(Ut);
                    return new so(k / 255, Z / 255, dt / 255, Dt, !1);
                  }
                  function ws(N, k) {
                    return N in k;
                  }
                  function Gl(N, k) {
                    const Z = k[N];
                    return typeof Z > "u" ? null : Z;
                  }
                  function Lh(N, k, Z, dt) {
                    for (; Z <= dt; ) {
                      const At = Z + dt >> 1;
                      if (k[At] === N)
                        return !0;
                      k[At] > N ? dt = At - 1 : Z = At + 1;
                    }
                    return !1;
                  }
                  function Ll(N) {
                    return { type: N };
                  }
                  Qs.register(Cl, {
                    error: [
                      Ji,
                      [qn],
                      (N, [k]) => {
                        throw new yo(k.evaluate(N));
                      }
                    ],
                    typeof: [
                      qn,
                      [Mi],
                      (N, [k]) => Nn(ss(k.evaluate(N)))
                    ],
                    "to-rgba": [
                      mi(An, 4),
                      [qi],
                      (N, [k]) => {
                        const [Z, dt, At, Dt] = k.evaluate(N).rgb;
                        return [Z * 255, dt * 255, At * 255, Dt];
                      }
                    ],
                    rgb: [
                      qi,
                      [An, An, An],
                      Du
                    ],
                    rgba: [
                      qi,
                      [An, An, An, An],
                      Du
                    ],
                    has: {
                      type: si,
                      overloads: [
                        [
                          [qn],
                          (N, [k]) => ws(k.evaluate(N), N.properties())
                        ],
                        [
                          [qn, ha],
                          (N, [k, Z]) => ws(k.evaluate(N), Z.evaluate(N))
                        ]
                      ]
                    },
                    get: {
                      type: Mi,
                      overloads: [
                        [
                          [qn],
                          (N, [k]) => Gl(k.evaluate(N), N.properties())
                        ],
                        [
                          [qn, ha],
                          (N, [k, Z]) => Gl(k.evaluate(N), Z.evaluate(N))
                        ]
                      ]
                    },
                    "feature-state": [
                      Mi,
                      [qn],
                      (N, [k]) => Gl(k.evaluate(N), N.featureState || {})
                    ],
                    properties: [
                      ha,
                      [],
                      (N) => N.properties()
                    ],
                    "geometry-type": [
                      qn,
                      [],
                      (N) => N.geometryType()
                    ],
                    id: [
                      Mi,
                      [],
                      (N) => N.id()
                    ],
                    zoom: [
                      An,
                      [],
                      (N) => N.globals.zoom
                    ],
                    "heatmap-density": [
                      An,
                      [],
                      (N) => N.globals.heatmapDensity || 0
                    ],
                    "line-progress": [
                      An,
                      [],
                      (N) => N.globals.lineProgress || 0
                    ],
                    accumulated: [
                      Mi,
                      [],
                      (N) => N.globals.accumulated === void 0 ? null : N.globals.accumulated
                    ],
                    "+": [
                      An,
                      Ll(An),
                      (N, k) => {
                        let Z = 0;
                        for (const dt of k)
                          Z += dt.evaluate(N);
                        return Z;
                      }
                    ],
                    "*": [
                      An,
                      Ll(An),
                      (N, k) => {
                        let Z = 1;
                        for (const dt of k)
                          Z *= dt.evaluate(N);
                        return Z;
                      }
                    ],
                    "-": {
                      type: An,
                      overloads: [
                        [
                          [An, An],
                          (N, [k, Z]) => k.evaluate(N) - Z.evaluate(N)
                        ],
                        [
                          [An],
                          (N, [k]) => -k.evaluate(N)
                        ]
                      ]
                    },
                    "/": [
                      An,
                      [An, An],
                      (N, [k, Z]) => k.evaluate(N) / Z.evaluate(N)
                    ],
                    "%": [
                      An,
                      [An, An],
                      (N, [k, Z]) => k.evaluate(N) % Z.evaluate(N)
                    ],
                    ln2: [
                      An,
                      [],
                      () => Math.LN2
                    ],
                    pi: [
                      An,
                      [],
                      () => Math.PI
                    ],
                    e: [
                      An,
                      [],
                      () => Math.E
                    ],
                    "^": [
                      An,
                      [An, An],
                      (N, [k, Z]) => Math.pow(k.evaluate(N), Z.evaluate(N))
                    ],
                    sqrt: [
                      An,
                      [An],
                      (N, [k]) => Math.sqrt(k.evaluate(N))
                    ],
                    log10: [
                      An,
                      [An],
                      (N, [k]) => Math.log(k.evaluate(N)) / Math.LN10
                    ],
                    ln: [
                      An,
                      [An],
                      (N, [k]) => Math.log(k.evaluate(N))
                    ],
                    log2: [
                      An,
                      [An],
                      (N, [k]) => Math.log(k.evaluate(N)) / Math.LN2
                    ],
                    sin: [
                      An,
                      [An],
                      (N, [k]) => Math.sin(k.evaluate(N))
                    ],
                    cos: [
                      An,
                      [An],
                      (N, [k]) => Math.cos(k.evaluate(N))
                    ],
                    tan: [
                      An,
                      [An],
                      (N, [k]) => Math.tan(k.evaluate(N))
                    ],
                    asin: [
                      An,
                      [An],
                      (N, [k]) => Math.asin(k.evaluate(N))
                    ],
                    acos: [
                      An,
                      [An],
                      (N, [k]) => Math.acos(k.evaluate(N))
                    ],
                    atan: [
                      An,
                      [An],
                      (N, [k]) => Math.atan(k.evaluate(N))
                    ],
                    min: [
                      An,
                      Ll(An),
                      (N, k) => Math.min(...k.map((Z) => Z.evaluate(N)))
                    ],
                    max: [
                      An,
                      Ll(An),
                      (N, k) => Math.max(...k.map((Z) => Z.evaluate(N)))
                    ],
                    abs: [
                      An,
                      [An],
                      (N, [k]) => Math.abs(k.evaluate(N))
                    ],
                    round: [
                      An,
                      [An],
                      (N, [k]) => {
                        const Z = k.evaluate(N);
                        return Z < 0 ? -Math.round(-Z) : Math.round(Z);
                      }
                    ],
                    floor: [
                      An,
                      [An],
                      (N, [k]) => Math.floor(k.evaluate(N))
                    ],
                    ceil: [
                      An,
                      [An],
                      (N, [k]) => Math.ceil(k.evaluate(N))
                    ],
                    "filter-==": [
                      si,
                      [qn, Mi],
                      (N, [k, Z]) => N.properties()[k.value] === Z.value
                    ],
                    "filter-id-==": [
                      si,
                      [Mi],
                      (N, [k]) => N.id() === k.value
                    ],
                    "filter-type-==": [
                      si,
                      [qn],
                      (N, [k]) => N.geometryType() === k.value
                    ],
                    "filter-<": [
                      si,
                      [qn, Mi],
                      (N, [k, Z]) => {
                        const dt = N.properties()[k.value], At = Z.value;
                        return typeof dt == typeof At && dt < At;
                      }
                    ],
                    "filter-id-<": [
                      si,
                      [Mi],
                      (N, [k]) => {
                        const Z = N.id(), dt = k.value;
                        return typeof Z == typeof dt && Z < dt;
                      }
                    ],
                    "filter->": [
                      si,
                      [qn, Mi],
                      (N, [k, Z]) => {
                        const dt = N.properties()[k.value], At = Z.value;
                        return typeof dt == typeof At && dt > At;
                      }
                    ],
                    "filter-id->": [
                      si,
                      [Mi],
                      (N, [k]) => {
                        const Z = N.id(), dt = k.value;
                        return typeof Z == typeof dt && Z > dt;
                      }
                    ],
                    "filter-<=": [
                      si,
                      [qn, Mi],
                      (N, [k, Z]) => {
                        const dt = N.properties()[k.value], At = Z.value;
                        return typeof dt == typeof At && dt <= At;
                      }
                    ],
                    "filter-id-<=": [
                      si,
                      [Mi],
                      (N, [k]) => {
                        const Z = N.id(), dt = k.value;
                        return typeof Z == typeof dt && Z <= dt;
                      }
                    ],
                    "filter->=": [
                      si,
                      [qn, Mi],
                      (N, [k, Z]) => {
                        const dt = N.properties()[k.value], At = Z.value;
                        return typeof dt == typeof At && dt >= At;
                      }
                    ],
                    "filter-id->=": [
                      si,
                      [Mi],
                      (N, [k]) => {
                        const Z = N.id(), dt = k.value;
                        return typeof Z == typeof dt && Z >= dt;
                      }
                    ],
                    "filter-has": [
                      si,
                      [Mi],
                      (N, [k]) => k.value in N.properties()
                    ],
                    "filter-has-id": [
                      si,
                      [],
                      (N) => N.id() !== null && N.id() !== void 0
                    ],
                    "filter-type-in": [
                      si,
                      [mi(qn)],
                      (N, [k]) => k.value.indexOf(N.geometryType()) >= 0
                    ],
                    "filter-id-in": [
                      si,
                      [mi(Mi)],
                      (N, [k]) => k.value.indexOf(N.id()) >= 0
                    ],
                    "filter-in-small": [
                      si,
                      [qn, mi(Mi)],
                      // assumes v is an array literal
                      (N, [k, Z]) => Z.value.indexOf(N.properties()[k.value]) >= 0
                    ],
                    "filter-in-large": [
                      si,
                      [qn, mi(Mi)],
                      // assumes v is a array literal with values sorted in ascending order and of a single type
                      (N, [k, Z]) => Lh(N.properties()[k.value], Z.value, 0, Z.value.length - 1)
                    ],
                    all: {
                      type: si,
                      overloads: [
                        [
                          [si, si],
                          (N, [k, Z]) => k.evaluate(N) && Z.evaluate(N)
                        ],
                        [
                          Ll(si),
                          (N, k) => {
                            for (const Z of k)
                              if (!Z.evaluate(N))
                                return !1;
                            return !0;
                          }
                        ]
                      ]
                    },
                    any: {
                      type: si,
                      overloads: [
                        [
                          [si, si],
                          (N, [k, Z]) => k.evaluate(N) || Z.evaluate(N)
                        ],
                        [
                          Ll(si),
                          (N, k) => {
                            for (const Z of k)
                              if (Z.evaluate(N))
                                return !0;
                            return !1;
                          }
                        ]
                      ]
                    },
                    "!": [
                      si,
                      [si],
                      (N, [k]) => !k.evaluate(N)
                    ],
                    "is-supported-script": [
                      si,
                      [qn],
                      // At parse time this will always return true, so we need to exclude this expression with isGlobalPropertyConstant
                      (N, [k]) => {
                        const Z = N.globals && N.globals.isSupportedScript;
                        return Z ? Z(k.evaluate(N)) : !0;
                      }
                    ],
                    upcase: [
                      qn,
                      [qn],
                      (N, [k]) => k.evaluate(N).toUpperCase()
                    ],
                    downcase: [
                      qn,
                      [qn],
                      (N, [k]) => k.evaluate(N).toLowerCase()
                    ],
                    concat: [
                      qn,
                      Ll(Mi),
                      (N, k) => k.map((Z) => qo(Z.evaluate(N))).join("")
                    ],
                    "resolved-locale": [
                      qn,
                      [ci],
                      (N, [k]) => k.evaluate(N).resolvedLocale()
                    ]
                  });
                  function rh(N) {
                    return Array.isArray(N) ? `(${N.map(Nn).join(", ")})` : `(${Nn(N.type)}...)`;
                  }
                  function nc(N) {
                    if (N instanceof _l)
                      return nc(N.boundExpression);
                    if (N instanceof Qs && N.name === "error")
                      return !1;
                    if (N instanceof Gs)
                      return !1;
                    if (N instanceof wc)
                      return !1;
                    if (N instanceof vo)
                      return !1;
                    const k = N instanceof is || N instanceof Ks;
                    let Z = !0;
                    return N.eachChild((dt) => {
                      k ? Z = Z && nc(dt) : Z = Z && dt instanceof Ol;
                    }), Z ? nh(N) && Es(N, ["zoom", "heatmap-density", "line-progress", "accumulated", "is-supported-script"]) : !1;
                  }
                  function nh(N) {
                    if (N instanceof Qs) {
                      if (N.name === "get" && N.args.length === 1)
                        return !1;
                      if (N.name === "feature-state")
                        return !1;
                      if (N.name === "has" && N.args.length === 1)
                        return !1;
                      if (N.name === "properties" || N.name === "geometry-type" || N.name === "id")
                        return !1;
                      if (/^filter-/.test(N.name))
                        return !1;
                    }
                    if (N instanceof wc || N instanceof vo)
                      return !1;
                    let k = !0;
                    return N.eachChild((Z) => {
                      k && !nh(Z) && (k = !1);
                    }), k;
                  }
                  function $c(N) {
                    if (N instanceof Qs && N.name === "feature-state")
                      return !1;
                    let k = !0;
                    return N.eachChild((Z) => {
                      k && !$c(Z) && (k = !1);
                    }), k;
                  }
                  function Es(N, k) {
                    if (N instanceof Qs && k.indexOf(N.name) >= 0)
                      return !1;
                    let Z = !0;
                    return N.eachChild((dt) => {
                      Z && !Es(dt, k) && (Z = !1);
                    }), Z;
                  }
                  function Mc(N) {
                    return { result: "success", value: N };
                  }
                  function iu(N) {
                    return { result: "error", value: N };
                  }
                  function Ec(N) {
                    return N["property-type"] === "data-driven" || N["property-type"] === "cross-faded-data-driven";
                  }
                  function ku(N) {
                    return !!N.expression && N.expression.parameters.indexOf("zoom") > -1;
                  }
                  function Ph(N) {
                    return !!N.expression && N.expression.interpolated;
                  }
                  function oo(N) {
                    return N instanceof Number ? "number" : N instanceof String ? "string" : N instanceof Boolean ? "boolean" : Array.isArray(N) ? "array" : N === null ? "null" : typeof N;
                  }
                  function ic(N) {
                    return typeof N == "object" && N !== null && !Array.isArray(N);
                  }
                  function ih(N) {
                    return N;
                  }
                  function du(N, k) {
                    const Z = k.type === "color", dt = N.stops && typeof N.stops[0][0] == "object", At = dt || N.property !== void 0, Dt = dt || !At, Ut = N.type || (Ph(k) ? "exponential" : "interval");
                    if (Z || k.type === "padding") {
                      const Ke = Z ? so.parse : io.parse;
                      N = Tn({}, N), N.stops && (N.stops = N.stops.map((cr) => [cr[0], Ke(cr[1])])), N.default ? N.default = Ke(N.default) : N.default = Ke(k.default);
                    }
                    if (N.colorSpace && !Rd(N.colorSpace))
                      throw new Error(`Unknown color space: "${N.colorSpace}"`);
                    let se, Ie, He;
                    if (Ut === "exponential")
                      se = qc;
                    else if (Ut === "interval")
                      se = Cf;
                    else if (Ut === "categorical") {
                      se = Ih, Ie = /* @__PURE__ */ Object.create(null);
                      for (const Ke of N.stops)
                        Ie[Ke[0]] = Ke[1];
                      He = typeof N.stops[0][0];
                    } else if (Ut === "identity")
                      se = ah;
                    else
                      throw new Error(`Unknown function type "${Ut}"`);
                    if (dt) {
                      const Ke = {}, cr = [];
                      for (let nn = 0; nn < N.stops.length; nn++) {
                        const gn = N.stops[nn], jn = gn[0].zoom;
                        Ke[jn] === void 0 && (Ke[jn] = {
                          zoom: jn,
                          type: N.type,
                          property: N.property,
                          default: N.default,
                          stops: []
                        }, cr.push(jn)), Ke[jn].stops.push([gn[0].value, gn[1]]);
                      }
                      const Mr = [];
                      for (const nn of cr)
                        Mr.push([Ke[nn].zoom, du(Ke[nn], k)]);
                      const Vr = { name: "linear" };
                      return {
                        kind: "composite",
                        interpolationType: Vr,
                        interpolationFactor: Hs.interpolationFactor.bind(void 0, Vr),
                        zoomStops: Mr.map((nn) => nn[0]),
                        evaluate({ zoom: nn }, gn) {
                          return qc({
                            stops: Mr,
                            base: N.base
                          }, k, nn).evaluate(nn, gn);
                        }
                      };
                    } else if (Dt) {
                      const Ke = Ut === "exponential" ? { name: "exponential", base: N.base !== void 0 ? N.base : 1 } : null;
                      return {
                        kind: "camera",
                        interpolationType: Ke,
                        interpolationFactor: Hs.interpolationFactor.bind(void 0, Ke),
                        zoomStops: N.stops.map((cr) => cr[0]),
                        evaluate: ({ zoom: cr }) => se(N, k, cr, Ie, He)
                      };
                    } else
                      return {
                        kind: "source",
                        evaluate(Ke, cr) {
                          const Mr = cr && cr.properties ? cr.properties[N.property] : void 0;
                          return Mr === void 0 ? Wl(N.default, k.default) : se(N, k, Mr, Ie, He);
                        }
                      };
                  }
                  function Wl(N, k, Z) {
                    if (N !== void 0)
                      return N;
                    if (k !== void 0)
                      return k;
                    if (Z !== void 0)
                      return Z;
                  }
                  function Ih(N, k, Z, dt, At) {
                    const Dt = typeof Z === At ? dt[Z] : void 0;
                    return Wl(Dt, N.default, k.default);
                  }
                  function Cf(N, k, Z) {
                    if (oo(Z) !== "number")
                      return Wl(N.default, k.default);
                    const dt = N.stops.length;
                    if (dt === 1 || Z <= N.stops[0][0])
                      return N.stops[0][1];
                    if (Z >= N.stops[dt - 1][0])
                      return N.stops[dt - 1][1];
                    const At = Wf(N.stops.map((Dt) => Dt[0]), Z);
                    return N.stops[At][1];
                  }
                  function qc(N, k, Z) {
                    const dt = N.base !== void 0 ? N.base : 1;
                    if (oo(Z) !== "number")
                      return Wl(N.default, k.default);
                    const At = N.stops.length;
                    if (At === 1 || Z <= N.stops[0][0])
                      return N.stops[0][1];
                    if (Z >= N.stops[At - 1][0])
                      return N.stops[At - 1][1];
                    const Dt = Wf(N.stops.map((Ke) => Ke[0]), Z), Ut = ud(Z, dt, N.stops[Dt][0], N.stops[Dt + 1][0]), se = N.stops[Dt][1], Ie = N.stops[Dt + 1][1], He = Vs[k.type] || ih;
                    return typeof se.evaluate == "function" ? {
                      evaluate(...Ke) {
                        const cr = se.evaluate.apply(void 0, Ke), Mr = Ie.evaluate.apply(void 0, Ke);
                        if (!(cr === void 0 || Mr === void 0))
                          return He(cr, Mr, Ut, N.colorSpace);
                      }
                    } : He(se, Ie, Ut, N.colorSpace);
                  }
                  function ah(N, k, Z) {
                    switch (k.type) {
                      case "color":
                        Z = so.parse(Z);
                        break;
                      case "formatted":
                        Z = Ns.fromString(Z.toString());
                        break;
                      case "resolvedImage":
                        Z = jo.fromString(Z.toString());
                        break;
                      case "padding":
                        Z = io.parse(Z);
                        break;
                      default:
                        oo(Z) !== k.type && (k.type !== "enum" || !k.values[Z]) && (Z = void 0);
                    }
                    return Wl(Z, N.default, k.default);
                  }
                  function ud(N, k, Z, dt) {
                    const At = dt - Z, Dt = N - Z;
                    return At === 0 ? 0 : k === 1 ? Dt / At : (Math.pow(k, Dt) - 1) / (Math.pow(k, At) - 1);
                  }
                  class Cc {
                    constructor(k, Z) {
                      this.expression = k, this._warningHistory = {}, this._evaluator = new Th(), this._defaultValue = Z ? ar(Z) : null, this._enumValues = Z && Z.type === "enum" ? Z.values : null;
                    }
                    evaluateWithoutErrorHandling(k, Z, dt, At, Dt, Ut) {
                      return this._evaluator.globals = k, this._evaluator.feature = Z, this._evaluator.featureState = dt, this._evaluator.canonical = At, this._evaluator.availableImages = Dt || null, this._evaluator.formattedSection = Ut, this.expression.evaluate(this._evaluator);
                    }
                    evaluate(k, Z, dt, At, Dt, Ut) {
                      this._evaluator.globals = k, this._evaluator.feature = Z || null, this._evaluator.featureState = dt || null, this._evaluator.canonical = At, this._evaluator.availableImages = Dt || null, this._evaluator.formattedSection = Ut || null;
                      try {
                        const se = this.expression.evaluate(this._evaluator);
                        if (se == null || typeof se == "number" && se !== se)
                          return this._defaultValue;
                        if (this._enumValues && !(se in this._enumValues))
                          throw new yo(`Expected value to be one of ${Object.keys(this._enumValues).map((Ie) => JSON.stringify(Ie)).join(", ")}, but found ${JSON.stringify(se)} instead.`);
                        return se;
                      } catch (se) {
                        return this._warningHistory[se.message] || (this._warningHistory[se.message] = !0, typeof console < "u" && console.warn(se.message)), this._defaultValue;
                      }
                    }
                  }
                  function tf(N) {
                    return Array.isArray(N) && N.length > 0 && typeof N[0] == "string" && N[0] in Cl;
                  }
                  function vu(N, k) {
                    const Z = new Us(Cl, nc, [], k ? sr(k) : void 0), dt = Z.parse(N, void 0, void 0, void 0, k && k.type === "string" ? { typeAnnotation: "coerce" } : void 0);
                    return dt ? Mc(new Cc(dt, k)) : iu(Z.errors);
                  }
                  class ef {
                    constructor(k, Z) {
                      this.kind = k, this._styleExpression = Z, this.isStateDependent = k !== "constant" && !$c(Z.expression);
                    }
                    evaluateWithoutErrorHandling(k, Z, dt, At, Dt, Ut) {
                      return this._styleExpression.evaluateWithoutErrorHandling(k, Z, dt, At, Dt, Ut);
                    }
                    evaluate(k, Z, dt, At, Dt, Ut) {
                      return this._styleExpression.evaluate(k, Z, dt, At, Dt, Ut);
                    }
                  }
                  class pu {
                    constructor(k, Z, dt, At) {
                      this.kind = k, this.zoomStops = dt, this._styleExpression = Z, this.isStateDependent = k !== "camera" && !$c(Z.expression), this.interpolationType = At;
                    }
                    evaluateWithoutErrorHandling(k, Z, dt, At, Dt, Ut) {
                      return this._styleExpression.evaluateWithoutErrorHandling(k, Z, dt, At, Dt, Ut);
                    }
                    evaluate(k, Z, dt, At, Dt, Ut) {
                      return this._styleExpression.evaluate(k, Z, dt, At, Dt, Ut);
                    }
                    interpolationFactor(k, Z, dt) {
                      return this.interpolationType ? Hs.interpolationFactor(this.interpolationType, k, Z, dt) : 0;
                    }
                  }
                  function cd(N) {
                    return N._styleExpression !== void 0;
                  }
                  function he(N, k) {
                    const Z = vu(N, k);
                    if (Z.result === "error")
                      return Z;
                    const dt = Z.value.expression, At = nh(dt);
                    if (!At && !Ec(k))
                      return iu([new sn("", "data expressions not supported")]);
                    const Dt = Es(dt, ["zoom"]);
                    if (!Dt && !ku(k))
                      return iu([new sn("", "zoom expressions not supported")]);
                    const Ut = Ge(dt);
                    if (!Ut && !Dt)
                      return iu([new sn("", '"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')]);
                    if (Ut instanceof sn)
                      return iu([Ut]);
                    if (Ut instanceof Hs && !Ph(k))
                      return iu([new sn("", '"interpolate" expressions cannot be used with this property')]);
                    if (!Ut)
                      return Mc(At ? new ef("constant", Z.value) : new ef("source", Z.value));
                    const se = Ut instanceof Hs ? Ut.interpolation : void 0;
                    return Mc(At ? new pu("camera", Z.value, Ut.labels, se) : new pu("composite", Z.value, Ut.labels, se));
                  }
                  class Ae {
                    constructor(k, Z) {
                      this._parameters = k, this._specification = Z, Tn(this, du(this._parameters, this._specification));
                    }
                    static deserialize(k) {
                      return new Ae(k._parameters, k._specification);
                    }
                    static serialize(k) {
                      return {
                        _parameters: k._parameters,
                        _specification: k._specification
                      };
                    }
                  }
                  function Be(N, k) {
                    if (ic(N))
                      return new Ae(N, k);
                    if (tf(N)) {
                      const Z = he(N, k);
                      if (Z.result === "error")
                        throw new Error(Z.value.map((dt) => `${dt.key}: ${dt.message}`).join(", "));
                      return Z.value;
                    } else {
                      let Z = N;
                      return k.type === "color" && typeof N == "string" ? Z = so.parse(N) : k.type === "padding" && (typeof N == "number" || Array.isArray(N)) ? Z = io.parse(N) : k.type === "variableAnchorOffsetCollection" && Array.isArray(N) && (Z = yl.parse(N)), {
                        kind: "constant",
                        evaluate: () => Z
                      };
                    }
                  }
                  function Ge(N) {
                    let k = null;
                    if (N instanceof Gf)
                      k = Ge(N.result);
                    else if (N instanceof Tl) {
                      for (const Z of N.args)
                        if (k = Ge(Z), k)
                          break;
                    } else (N instanceof Xu || N instanceof Hs) && N.input instanceof Qs && N.input.name === "zoom" && (k = N);
                    return k instanceof sn || N.eachChild((Z) => {
                      const dt = Ge(Z);
                      dt instanceof sn ? k = dt : !k && dt ? k = new sn("", '"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.') : k && dt && k !== dt && (k = new sn("", 'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'));
                    }), k;
                  }
                  function sr(N) {
                    const k = {
                      color: qi,
                      string: qn,
                      number: An,
                      enum: qn,
                      boolean: si,
                      formatted: rn,
                      padding: Cn,
                      resolvedImage: Un,
                      variableAnchorOffsetCollection: Fn
                    };
                    return N.type === "array" ? mi(k[N.value] || Mi, N.length) : k[N.type];
                  }
                  function ar(N) {
                    return N.type === "color" && ic(N.default) ? new so(0, 0, 0, 0) : N.type === "color" ? so.parse(N.default) || null : N.type === "padding" ? io.parse(N.default) || null : N.type === "variableAnchorOffsetCollection" ? yl.parse(N.default) || null : N.default === void 0 ? null : N.default;
                  }
                  function fr(N) {
                    if (N === !0 || N === !1)
                      return !0;
                    if (!Array.isArray(N) || N.length === 0)
                      return !1;
                    switch (N[0]) {
                      case "has":
                        return N.length >= 2 && N[1] !== "$id" && N[1] !== "$type";
                      case "in":
                        return N.length >= 3 && (typeof N[1] != "string" || Array.isArray(N[2]));
                      case "!in":
                      case "!has":
                      case "none":
                        return !1;
                      case "==":
                      case "!=":
                      case ">":
                      case ">=":
                      case "<":
                      case "<=":
                        return N.length !== 3 || Array.isArray(N[1]) || Array.isArray(N[2]);
                      case "any":
                      case "all":
                        for (const k of N.slice(1))
                          if (!fr(k) && typeof k != "boolean")
                            return !1;
                        return !0;
                      default:
                        return !0;
                    }
                  }
                  const Wr = {
                    type: "boolean",
                    default: !1,
                    transition: !1,
                    "property-type": "data-driven",
                    expression: {
                      interpolated: !1,
                      parameters: ["zoom", "feature"]
                    }
                  };
                  function Yr(N) {
                    if (N == null)
                      return { filter: () => !0, needGeometry: !1 };
                    fr(N) || (N = un(N));
                    const k = vu(N, Wr);
                    if (k.result === "error")
                      throw new Error(k.value.map((Z) => `${Z.key}: ${Z.message}`).join(", "));
                    {
                      const Z = tn(N);
                      return {
                        filter: (dt, At, Dt) => k.value.evaluate(dt, At, {}, Dt),
                        needGeometry: Z
                      };
                    }
                  }
                  function Pr(N, k) {
                    return N < k ? -1 : N > k ? 1 : 0;
                  }
                  function tn(N) {
                    if (!Array.isArray(N))
                      return !1;
                    if (N[0] === "within" || N[0] === "distance")
                      return !0;
                    for (let k = 1; k < N.length; k++)
                      if (tn(N[k]))
                        return !0;
                    return !1;
                  }
                  function un(N) {
                    if (!N)
                      return !0;
                    const k = N[0];
                    return N.length <= 1 ? k !== "any" : k === "==" ? dn(N[1], N[2], "==") : k === "!=" ? gi(dn(N[1], N[2], "==")) : k === "<" || k === ">" || k === "<=" || k === ">=" ? dn(N[1], N[2], k) : k === "any" ? On(N.slice(1)) : k === "all" ? ["all"].concat(N.slice(1).map(un)) : k === "none" ? ["all"].concat(N.slice(1).map(un).map(gi)) : k === "in" ? ai(N[1], N.slice(2)) : k === "!in" ? gi(ai(N[1], N.slice(2))) : k === "has" ? ri(N[1]) : k === "!has" ? gi(ri(N[1])) : !0;
                  }
                  function dn(N, k, Z) {
                    switch (N) {
                      case "$type":
                        return [`filter-type-${Z}`, k];
                      case "$id":
                        return [`filter-id-${Z}`, k];
                      default:
                        return [`filter-${Z}`, N, k];
                    }
                  }
                  function On(N) {
                    return ["any"].concat(N.map(un));
                  }
                  function ai(N, k) {
                    if (k.length === 0)
                      return !1;
                    switch (N) {
                      case "$type":
                        return ["filter-type-in", ["literal", k]];
                      case "$id":
                        return ["filter-id-in", ["literal", k]];
                      default:
                        return k.length > 200 && !k.some((Z) => typeof Z != typeof k[0]) ? ["filter-in-large", N, ["literal", k.sort(Pr)]] : ["filter-in-small", N, ["literal", k]];
                    }
                  }
                  function ri(N) {
                    switch (N) {
                      case "$type":
                        return !0;
                      case "$id":
                        return ["filter-has-id"];
                      default:
                        return ["filter-has", N];
                    }
                  }
                  function gi(N) {
                    return ["!", N];
                  }
                  function Ni(N) {
                    const k = typeof N;
                    if (k === "number" || k === "boolean" || k === "string" || N === void 0 || N === null)
                      return JSON.stringify(N);
                    if (Array.isArray(N)) {
                      let At = "[";
                      for (const Dt of N)
                        At += `${Ni(Dt)},`;
                      return `${At}]`;
                    }
                    const Z = Object.keys(N).sort();
                    let dt = "{";
                    for (let At = 0; At < Z.length; At++)
                      dt += `${JSON.stringify(Z[At])}:${Ni(N[Z[At]])},`;
                    return `${dt}}`;
                  }
                  function Ia(N) {
                    let k = "";
                    for (const Z of Er)
                      k += `/${Ni(N[Z])}`;
                    return k;
                  }
                  function Pa(N, k) {
                    const Z = {};
                    for (let At = 0; At < N.length; At++) {
                      const Dt = k && k[N[At].id] || Ia(N[At]);
                      k && (k[N[At].id] = Dt);
                      let Ut = Z[Dt];
                      Ut || (Ut = Z[Dt] = []), Ut.push(N[At]);
                    }
                    const dt = [];
                    for (const At in Z)
                      dt.push(Z[At]);
                    return dt;
                  }
                  function Fa() {
                    const N = {}, k = or.$version;
                    for (const Z in or.$root) {
                      const dt = or.$root[Z];
                      if (dt.required) {
                        let At = null;
                        Z === "version" ? At = k : dt.type === "array" ? At = [] : At = {}, At != null && (N[Z] = At);
                      }
                    }
                    return N;
                  }
                  function Ga(N) {
                    const k = N.key, Z = N.value;
                    return Z ? [new zr(k, Z, "constants have been deprecated as of v8")] : [];
                  }
                  function Na(N) {
                    return N instanceof Number || N instanceof String || N instanceof Boolean ? N.valueOf() : N;
                  }
                  function To(N) {
                    if (Array.isArray(N))
                      return N.map(To);
                    if (N instanceof Object && !(N instanceof Number || N instanceof String || N instanceof Boolean)) {
                      const k = {};
                      for (const Z in N)
                        k[Z] = To(N[Z]);
                      return k;
                    }
                    return Na(N);
                  }
                  function Do(N) {
                    const k = N.key, Z = N.value, dt = N.valueSpec || {}, At = N.objectElementValidators || {}, Dt = N.style, Ut = N.styleSpec, se = N.validateSpec;
                    let Ie = [];
                    const He = oo(Z);
                    if (He !== "object")
                      return [new zr(k, Z, `object expected, ${He} found`)];
                    for (const Ke in Z) {
                      const cr = Ke.split(".")[0], Mr = dt[cr] || dt["*"];
                      let Vr;
                      if (At[cr])
                        Vr = At[cr];
                      else if (dt[cr])
                        Vr = se;
                      else if (At["*"])
                        Vr = At["*"];
                      else if (dt["*"])
                        Vr = se;
                      else {
                        Ie.push(new zr(k, Z[Ke], `unknown property "${Ke}"`));
                        continue;
                      }
                      Ie = Ie.concat(Vr({
                        key: (k && `${k}.`) + Ke,
                        value: Z[Ke],
                        valueSpec: Mr,
                        style: Dt,
                        styleSpec: Ut,
                        object: Z,
                        objectKey: Ke,
                        validateSpec: se
                      }, Z));
                    }
                    for (const Ke in dt)
                      At[Ke] || dt[Ke].required && dt[Ke].default === void 0 && Z[Ke] === void 0 && Ie.push(new zr(k, Z, `missing required property "${Ke}"`));
                    return Ie;
                  }
                  function gt(N) {
                    const k = N.value, Z = N.valueSpec, dt = N.validateSpec, At = N.style, Dt = N.styleSpec, Ut = N.key, se = N.arrayElementValidator || dt;
                    if (oo(k) !== "array")
                      return [new zr(Ut, k, `array expected, ${oo(k)} found`)];
                    if (Z.length && k.length !== Z.length)
                      return [new zr(Ut, k, `array length ${Z.length} expected, length ${k.length} found`)];
                    if (Z["min-length"] && k.length < Z["min-length"])
                      return [new zr(Ut, k, `array length at least ${Z["min-length"]} expected, length ${k.length} found`)];
                    let Ie = {
                      type: Z.value,
                      values: Z.values
                    };
                    Dt.$version < 7 && (Ie.function = Z.function), oo(Z.value) === "object" && (Ie = Z.value);
                    let He = [];
                    for (let Ke = 0; Ke < k.length; Ke++)
                      He = He.concat(se({
                        array: k,
                        arrayIndex: Ke,
                        value: k[Ke],
                        valueSpec: Ie,
                        validateSpec: N.validateSpec,
                        style: At,
                        styleSpec: Dt,
                        key: `${Ut}[${Ke}]`
                      }));
                    return He;
                  }
                  function Ft(N) {
                    const k = N.key, Z = N.value, dt = N.valueSpec;
                    let At = oo(Z);
                    return At === "number" && Z !== Z && (At = "NaN"), At !== "number" ? [new zr(k, Z, `number expected, ${At} found`)] : "minimum" in dt && Z < dt.minimum ? [new zr(k, Z, `${Z} is less than the minimum value ${dt.minimum}`)] : "maximum" in dt && Z > dt.maximum ? [new zr(k, Z, `${Z} is greater than the maximum value ${dt.maximum}`)] : [];
                  }
                  function Kt(N) {
                    const k = N.valueSpec, Z = Na(N.value.type);
                    let dt, At = {}, Dt, Ut;
                    const se = Z !== "categorical" && N.value.property === void 0, Ie = !se, He = oo(N.value.stops) === "array" && oo(N.value.stops[0]) === "array" && oo(N.value.stops[0][0]) === "object", Ke = Do({
                      key: N.key,
                      value: N.value,
                      valueSpec: N.styleSpec.function,
                      validateSpec: N.validateSpec,
                      style: N.style,
                      styleSpec: N.styleSpec,
                      objectElementValidators: {
                        stops: cr,
                        default: nn
                      }
                    });
                    return Z === "identity" && se && Ke.push(new zr(N.key, N.value, 'missing required property "property"')), Z !== "identity" && !N.value.stops && Ke.push(new zr(N.key, N.value, 'missing required property "stops"')), Z === "exponential" && N.valueSpec.expression && !Ph(N.valueSpec) && Ke.push(new zr(N.key, N.value, "exponential functions not supported")), N.styleSpec.$version >= 8 && (Ie && !Ec(N.valueSpec) ? Ke.push(new zr(N.key, N.value, "property functions not supported")) : se && !ku(N.valueSpec) && Ke.push(new zr(N.key, N.value, "zoom functions not supported"))), (Z === "categorical" || He) && N.value.property === void 0 && Ke.push(new zr(N.key, N.value, '"property" property is required')), Ke;
                    function cr(gn) {
                      if (Z === "identity")
                        return [new zr(gn.key, gn.value, 'identity function may not have a "stops" property')];
                      let jn = [];
                      const ui = gn.value;
                      return jn = jn.concat(gt({
                        key: gn.key,
                        value: ui,
                        valueSpec: gn.valueSpec,
                        validateSpec: gn.validateSpec,
                        style: gn.style,
                        styleSpec: gn.styleSpec,
                        arrayElementValidator: Mr
                      })), oo(ui) === "array" && ui.length === 0 && jn.push(new zr(gn.key, ui, "array must have at least one stop")), jn;
                    }
                    function Mr(gn) {
                      let jn = [];
                      const ui = gn.value, Ii = gn.key;
                      if (oo(ui) !== "array")
                        return [new zr(Ii, ui, `array expected, ${oo(ui)} found`)];
                      if (ui.length !== 2)
                        return [new zr(Ii, ui, `array length 2 expected, length ${ui.length} found`)];
                      if (He) {
                        if (oo(ui[0]) !== "object")
                          return [new zr(Ii, ui, `object expected, ${oo(ui[0])} found`)];
                        if (ui[0].zoom === void 0)
                          return [new zr(Ii, ui, "object stop key must have zoom")];
                        if (ui[0].value === void 0)
                          return [new zr(Ii, ui, "object stop key must have value")];
                        if (Ut && Ut > Na(ui[0].zoom))
                          return [new zr(Ii, ui[0].zoom, "stop zoom values must appear in ascending order")];
                        Na(ui[0].zoom) !== Ut && (Ut = Na(ui[0].zoom), Dt = void 0, At = {}), jn = jn.concat(Do({
                          key: `${Ii}[0]`,
                          value: ui[0],
                          valueSpec: { zoom: {} },
                          validateSpec: gn.validateSpec,
                          style: gn.style,
                          styleSpec: gn.styleSpec,
                          objectElementValidators: { zoom: Ft, value: Vr }
                        }));
                      } else
                        jn = jn.concat(Vr({
                          key: `${Ii}[0]`,
                          value: ui[0],
                          valueSpec: {},
                          validateSpec: gn.validateSpec,
                          style: gn.style,
                          styleSpec: gn.styleSpec
                        }, ui));
                      return tf(To(ui[1])) ? jn.concat([new zr(`${Ii}[1]`, ui[1], "expressions are not allowed in function stops.")]) : jn.concat(gn.validateSpec({
                        key: `${Ii}[1]`,
                        value: ui[1],
                        valueSpec: k,
                        validateSpec: gn.validateSpec,
                        style: gn.style,
                        styleSpec: gn.styleSpec
                      }));
                    }
                    function Vr(gn, jn) {
                      const ui = oo(gn.value), Ii = Na(gn.value), Si = gn.value !== null ? gn.value : jn;
                      if (!dt)
                        dt = ui;
                      else if (ui !== dt)
                        return [new zr(gn.key, Si, `${ui} stop domain type must match previous stop domain type ${dt}`)];
                      if (ui !== "number" && ui !== "string" && ui !== "boolean")
                        return [new zr(gn.key, Si, "stop domain value must be a number, string, or boolean")];
                      if (ui !== "number" && Z !== "categorical") {
                        let Pi = `number expected, ${ui} found`;
                        return Ec(k) && Z === void 0 && (Pi += '\nIf you intended to use a categorical function, specify `"type": "categorical"`.'), [new zr(gn.key, Si, Pi)];
                      }
                      return Z === "categorical" && ui === "number" && (!isFinite(Ii) || Math.floor(Ii) !== Ii) ? [new zr(gn.key, Si, `integer expected, found ${Ii}`)] : Z !== "categorical" && ui === "number" && Dt !== void 0 && Ii < Dt ? [new zr(gn.key, Si, "stop domain values must appear in ascending order")] : (Dt = Ii, Z === "categorical" && Ii in At ? [new zr(gn.key, Si, "stop domain values must be unique")] : (At[Ii] = !0, []));
                    }
                    function nn(gn) {
                      return gn.validateSpec({
                        key: gn.key,
                        value: gn.value,
                        valueSpec: k,
                        validateSpec: gn.validateSpec,
                        style: gn.style,
                        styleSpec: gn.styleSpec
                      });
                    }
                  }
                  function pe(N) {
                    const k = (N.expressionContext === "property" ? he : vu)(To(N.value), N.valueSpec);
                    if (k.result === "error")
                      return k.value.map((dt) => new zr(`${N.key}${dt.key}`, N.value, dt.message));
                    const Z = k.value.expression || k.value._styleExpression.expression;
                    if (N.expressionContext === "property" && N.propertyKey === "text-font" && !Z.outputDefined())
                      return [new zr(N.key, N.value, `Invalid data expression for "${N.propertyKey}". Output values must be contained as literals within the expression.`)];
                    if (N.expressionContext === "property" && N.propertyType === "layout" && !$c(Z))
                      return [new zr(N.key, N.value, '"feature-state" data expressions are not supported with layout properties.')];
                    if (N.expressionContext === "filter" && !$c(Z))
                      return [new zr(N.key, N.value, '"feature-state" data expressions are not supported with filters.')];
                    if (N.expressionContext && N.expressionContext.indexOf("cluster") === 0) {
                      if (!Es(Z, ["zoom", "feature-state"]))
                        return [new zr(N.key, N.value, '"zoom" and "feature-state" expressions are not supported with cluster properties.')];
                      if (N.expressionContext === "cluster-initial" && !nh(Z))
                        return [new zr(N.key, N.value, "Feature data expressions are not supported with initial expression part of cluster properties.")];
                    }
                    return [];
                  }
                  function Te(N) {
                    const k = N.value, Z = N.key, dt = oo(k);
                    return dt !== "boolean" ? [new zr(Z, k, `boolean expected, ${dt} found`)] : [];
                  }
                  function Ce(N) {
                    const k = N.key, Z = N.value, dt = oo(Z);
                    return dt !== "string" ? [new zr(k, Z, `color expected, ${dt} found`)] : so.parse(String(Z)) ? [] : [new zr(k, Z, `color expected, "${Z}" found`)];
                  }
                  function er(N) {
                    const k = N.key, Z = N.value, dt = N.valueSpec, At = [];
                    return Array.isArray(dt.values) ? dt.values.indexOf(Na(Z)) === -1 && At.push(new zr(k, Z, `expected one of [${dt.values.join(", ")}], ${JSON.stringify(Z)} found`)) : Object.keys(dt.values).indexOf(Na(Z)) === -1 && At.push(new zr(k, Z, `expected one of [${Object.keys(dt.values).join(", ")}], ${JSON.stringify(Z)} found`)), At;
                  }
                  function We(N) {
                    return fr(To(N.value)) ? pe(Tn({}, N, {
                      expressionContext: "filter",
                      valueSpec: { value: "boolean" }
                    })) : gr(N);
                  }
                  function gr(N) {
                    const k = N.value, Z = N.key;
                    if (oo(k) !== "array")
                      return [new zr(Z, k, `array expected, ${oo(k)} found`)];
                    const dt = N.styleSpec;
                    let At, Dt = [];
                    if (k.length < 1)
                      return [new zr(Z, k, "filter array must have at least 1 element")];
                    switch (Dt = Dt.concat(er({
                      key: `${Z}[0]`,
                      value: k[0],
                      valueSpec: dt.filter_operator,
                      style: N.style,
                      styleSpec: N.styleSpec
                    })), Na(k[0])) {
                      case "<":
                      case "<=":
                      case ">":
                      case ">=":
                        k.length >= 2 && Na(k[1]) === "$type" && Dt.push(new zr(Z, k, `"$type" cannot be use with operator "${k[0]}"`));
                      case "==":
                      case "!=":
                        k.length !== 3 && Dt.push(new zr(Z, k, `filter array for operator "${k[0]}" must have 3 elements`));
                      case "in":
                      case "!in":
                        k.length >= 2 && (At = oo(k[1]), At !== "string" && Dt.push(new zr(`${Z}[1]`, k[1], `string expected, ${At} found`)));
                        for (let Ut = 2; Ut < k.length; Ut++)
                          At = oo(k[Ut]), Na(k[1]) === "$type" ? Dt = Dt.concat(er({
                            key: `${Z}[${Ut}]`,
                            value: k[Ut],
                            valueSpec: dt.geometry_type,
                            style: N.style,
                            styleSpec: N.styleSpec
                          })) : At !== "string" && At !== "number" && At !== "boolean" && Dt.push(new zr(`${Z}[${Ut}]`, k[Ut], `string, number, or boolean expected, ${At} found`));
                        break;
                      case "any":
                      case "all":
                      case "none":
                        for (let Ut = 1; Ut < k.length; Ut++)
                          Dt = Dt.concat(gr({
                            key: `${Z}[${Ut}]`,
                            value: k[Ut],
                            style: N.style,
                            styleSpec: N.styleSpec
                          }));
                        break;
                      case "has":
                      case "!has":
                        At = oo(k[1]), k.length !== 2 ? Dt.push(new zr(Z, k, `filter array for "${k[0]}" operator must have 2 elements`)) : At !== "string" && Dt.push(new zr(`${Z}[1]`, k[1], `string expected, ${At} found`));
                        break;
                    }
                    return Dt;
                  }
                  function xr(N, k) {
                    const Z = N.key, dt = N.validateSpec, At = N.style, Dt = N.styleSpec, Ut = N.value, se = N.objectKey, Ie = Dt[`${k}_${N.layerType}`];
                    if (!Ie)
                      return [];
                    const He = se.match(/^(.*)-transition$/);
                    if (k === "paint" && He && Ie[He[1]] && Ie[He[1]].transition)
                      return dt({
                        key: Z,
                        value: Ut,
                        valueSpec: Dt.transition,
                        style: At,
                        styleSpec: Dt
                      });
                    const Ke = N.valueSpec || Ie[se];
                    if (!Ke)
                      return [new zr(Z, Ut, `unknown property "${se}"`)];
                    let cr;
                    if (oo(Ut) === "string" && Ec(Ke) && !Ke.tokens && (cr = /^{([^}]+)}$/.exec(Ut)))
                      return [new zr(Z, Ut, `"${se}" does not support interpolation syntax
Use an identity property function instead: \`{ "type": "identity", "property": ${JSON.stringify(cr[1])} }\`.`)];
                    const Mr = [];
                    return N.layerType === "symbol" && (se === "text-field" && At && !At.glyphs && Mr.push(new zr(Z, Ut, 'use of "text-field" requires a style "glyphs" property')), se === "text-font" && ic(To(Ut)) && Na(Ut.type) === "identity" && Mr.push(new zr(Z, Ut, '"text-font" does not support identity functions'))), Mr.concat(dt({
                      key: N.key,
                      value: Ut,
                      valueSpec: Ke,
                      style: At,
                      styleSpec: Dt,
                      expressionContext: "property",
                      propertyType: k,
                      propertyKey: se
                    }));
                  }
                  function kr(N) {
                    return xr(N, "paint");
                  }
                  function an(N) {
                    return xr(N, "layout");
                  }
                  function on(N) {
                    let k = [];
                    const Z = N.value, dt = N.key, At = N.style, Dt = N.styleSpec;
                    !Z.type && !Z.ref && k.push(new zr(dt, Z, 'either "type" or "ref" is required'));
                    let Ut = Na(Z.type);
                    const se = Na(Z.ref);
                    if (Z.id) {
                      const Ie = Na(Z.id);
                      for (let He = 0; He < N.arrayIndex; He++) {
                        const Ke = At.layers[He];
                        Na(Ke.id) === Ie && k.push(new zr(dt, Z.id, `duplicate layer id "${Z.id}", previously used at line ${Ke.id.__line__}`));
                      }
                    }
                    if ("ref" in Z) {
                      ["type", "source", "source-layer", "filter", "layout"].forEach((He) => {
                        He in Z && k.push(new zr(dt, Z[He], `"${He}" is prohibited for ref layers`));
                      });
                      let Ie;
                      At.layers.forEach((He) => {
                        Na(He.id) === se && (Ie = He);
                      }), Ie ? Ie.ref ? k.push(new zr(dt, Z.ref, "ref cannot reference another ref layer")) : Ut = Na(Ie.type) : k.push(new zr(dt, Z.ref, `ref layer "${se}" not found`));
                    } else if (Ut !== "background")
                      if (!Z.source)
                        k.push(new zr(dt, Z, 'missing required property "source"'));
                      else {
                        const Ie = At.sources && At.sources[Z.source], He = Ie && Na(Ie.type);
                        Ie ? He === "vector" && Ut === "raster" ? k.push(new zr(dt, Z.source, `layer "${Z.id}" requires a raster source`)) : He !== "raster-dem" && Ut === "hillshade" ? k.push(new zr(dt, Z.source, `layer "${Z.id}" requires a raster-dem source`)) : He === "raster" && Ut !== "raster" ? k.push(new zr(dt, Z.source, `layer "${Z.id}" requires a vector source`)) : He === "vector" && !Z["source-layer"] ? k.push(new zr(dt, Z, `layer "${Z.id}" must specify a "source-layer"`)) : He === "raster-dem" && Ut !== "hillshade" ? k.push(new zr(dt, Z.source, "raster-dem source can only be used with layer type 'hillshade'.")) : Ut === "line" && Z.paint && Z.paint["line-gradient"] && (He !== "geojson" || !Ie.lineMetrics) && k.push(new zr(dt, Z, `layer "${Z.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)) : k.push(new zr(dt, Z.source, `source "${Z.source}" not found`));
                      }
                    return k = k.concat(Do({
                      key: dt,
                      value: Z,
                      valueSpec: Dt.layer,
                      style: N.style,
                      styleSpec: N.styleSpec,
                      validateSpec: N.validateSpec,
                      objectElementValidators: {
                        "*"() {
                          return [];
                        },
                        // We don't want to enforce the spec's `"requires": true` for backward compatibility with refs;
                        // the actual requirement is validated above. See https://github.com/mapbox/mapbox-gl-js/issues/5772.
                        type() {
                          return N.validateSpec({
                            key: `${dt}.type`,
                            value: Z.type,
                            valueSpec: Dt.layer.type,
                            style: N.style,
                            styleSpec: N.styleSpec,
                            validateSpec: N.validateSpec,
                            object: Z,
                            objectKey: "type"
                          });
                        },
                        filter: We,
                        layout(Ie) {
                          return Do({
                            layer: Z,
                            key: Ie.key,
                            value: Ie.value,
                            style: Ie.style,
                            styleSpec: Ie.styleSpec,
                            validateSpec: Ie.validateSpec,
                            objectElementValidators: {
                              "*"(He) {
                                return an(Tn({ layerType: Ut }, He));
                              }
                            }
                          });
                        },
                        paint(Ie) {
                          return Do({
                            layer: Z,
                            key: Ie.key,
                            value: Ie.value,
                            style: Ie.style,
                            styleSpec: Ie.styleSpec,
                            validateSpec: Ie.validateSpec,
                            objectElementValidators: {
                              "*"(He) {
                                return kr(Tn({ layerType: Ut }, He));
                              }
                            }
                          });
                        }
                      }
                    })), k;
                  }
                  function Ln(N) {
                    const k = N.value, Z = N.key, dt = oo(k);
                    return dt !== "string" ? [new zr(Z, k, `string expected, ${dt} found`)] : [];
                  }
                  function Hn(N) {
                    var k;
                    const Z = (k = N.sourceName) !== null && k !== void 0 ? k : "", dt = N.value, At = N.styleSpec, Dt = At.source_raster_dem, Ut = N.style;
                    let se = [];
                    const Ie = oo(dt);
                    if (dt === void 0)
                      return se;
                    if (Ie !== "object")
                      return se.push(new zr("source_raster_dem", dt, `object expected, ${Ie} found`)), se;
                    const Ke = Na(dt.encoding) === "custom", cr = ["redFactor", "greenFactor", "blueFactor", "baseShift"], Mr = N.value.encoding ? `"${N.value.encoding}"` : "Default";
                    for (const Vr in dt)
                      !Ke && cr.includes(Vr) ? se.push(new zr(Vr, dt[Vr], `In "${Z}": "${Vr}" is only valid when "encoding" is set to "custom". ${Mr} encoding found`)) : Dt[Vr] ? se = se.concat(N.validateSpec({
                        key: Vr,
                        value: dt[Vr],
                        valueSpec: Dt[Vr],
                        validateSpec: N.validateSpec,
                        style: Ut,
                        styleSpec: At
                      })) : se.push(new zr(Vr, dt[Vr], `unknown property "${Vr}"`));
                    return se;
                  }
                  const cn = {
                    promoteId: Pn
                  };
                  function xn(N) {
                    const k = N.value, Z = N.key, dt = N.styleSpec, At = N.style, Dt = N.validateSpec;
                    if (!k.type)
                      return [new zr(Z, k, '"type" is required')];
                    const Ut = Na(k.type);
                    let se;
                    switch (Ut) {
                      case "vector":
                      case "raster":
                        return se = Do({
                          key: Z,
                          value: k,
                          valueSpec: dt[`source_${Ut.replace("-", "_")}`],
                          style: N.style,
                          styleSpec: dt,
                          objectElementValidators: cn,
                          validateSpec: Dt
                        }), se;
                      case "raster-dem":
                        return se = Hn({
                          sourceName: Z,
                          value: k,
                          style: N.style,
                          styleSpec: dt,
                          validateSpec: Dt
                        }), se;
                      case "geojson":
                        if (se = Do({
                          key: Z,
                          value: k,
                          valueSpec: dt.source_geojson,
                          style: At,
                          styleSpec: dt,
                          validateSpec: Dt,
                          objectElementValidators: cn
                        }), k.cluster)
                          for (const Ie in k.clusterProperties) {
                            const [He, Ke] = k.clusterProperties[Ie], cr = typeof He == "string" ? [He, ["accumulated"], ["get", Ie]] : He;
                            se.push(...pe({
                              key: `${Z}.${Ie}.map`,
                              value: Ke,
                              validateSpec: Dt,
                              expressionContext: "cluster-map"
                            })), se.push(...pe({
                              key: `${Z}.${Ie}.reduce`,
                              value: cr,
                              validateSpec: Dt,
                              expressionContext: "cluster-reduce"
                            }));
                          }
                        return se;
                      case "video":
                        return Do({
                          key: Z,
                          value: k,
                          valueSpec: dt.source_video,
                          style: At,
                          validateSpec: Dt,
                          styleSpec: dt
                        });
                      case "image":
                        return Do({
                          key: Z,
                          value: k,
                          valueSpec: dt.source_image,
                          style: At,
                          validateSpec: Dt,
                          styleSpec: dt
                        });
                      case "canvas":
                        return [new zr(Z, null, "Please use runtime APIs to add canvas sources, rather than including them in stylesheets.", "source.canvas")];
                      default:
                        return er({
                          key: `${Z}.type`,
                          value: k.type,
                          valueSpec: { values: ["vector", "raster", "raster-dem", "geojson", "video", "image"] },
                          style: At,
                          validateSpec: Dt,
                          styleSpec: dt
                        });
                    }
                  }
                  function Pn({ key: N, value: k }) {
                    if (oo(k) === "string")
                      return Ln({ key: N, value: k });
                    {
                      const Z = [];
                      for (const dt in k)
                        Z.push(...Ln({ key: `${N}.${dt}`, value: k[dt] }));
                      return Z;
                    }
                  }
                  function Yn(N) {
                    const k = N.value, Z = N.styleSpec, dt = Z.light, At = N.style;
                    let Dt = [];
                    const Ut = oo(k);
                    if (k === void 0)
                      return Dt;
                    if (Ut !== "object")
                      return Dt = Dt.concat([new zr("light", k, `object expected, ${Ut} found`)]), Dt;
                    for (const se in k) {
                      const Ie = se.match(/^(.*)-transition$/);
                      Ie && dt[Ie[1]] && dt[Ie[1]].transition ? Dt = Dt.concat(N.validateSpec({
                        key: se,
                        value: k[se],
                        valueSpec: Z.transition,
                        validateSpec: N.validateSpec,
                        style: At,
                        styleSpec: Z
                      })) : dt[se] ? Dt = Dt.concat(N.validateSpec({
                        key: se,
                        value: k[se],
                        valueSpec: dt[se],
                        validateSpec: N.validateSpec,
                        style: At,
                        styleSpec: Z
                      })) : Dt = Dt.concat([new zr(se, k[se], `unknown property "${se}"`)]);
                    }
                    return Dt;
                  }
                  function ti(N) {
                    const k = N.value, Z = N.styleSpec, dt = Z.sky, At = N.style, Dt = oo(k);
                    if (k === void 0)
                      return [];
                    if (Dt !== "object")
                      return [new zr("sky", k, `object expected, ${Dt} found`)];
                    let Ut = [];
                    for (const se in k)
                      dt[se] ? Ut = Ut.concat(N.validateSpec({
                        key: se,
                        value: k[se],
                        valueSpec: dt[se],
                        style: At,
                        styleSpec: Z
                      })) : Ut = Ut.concat([new zr(se, k[se], `unknown property "${se}"`)]);
                    return Ut;
                  }
                  function zn(N) {
                    const k = N.value, Z = N.styleSpec, dt = Z.terrain, At = N.style;
                    let Dt = [];
                    const Ut = oo(k);
                    if (k === void 0)
                      return Dt;
                    if (Ut !== "object")
                      return Dt = Dt.concat([new zr("terrain", k, `object expected, ${Ut} found`)]), Dt;
                    for (const se in k)
                      dt[se] ? Dt = Dt.concat(N.validateSpec({
                        key: se,
                        value: k[se],
                        valueSpec: dt[se],
                        validateSpec: N.validateSpec,
                        style: At,
                        styleSpec: Z
                      })) : Dt = Dt.concat([new zr(se, k[se], `unknown property "${se}"`)]);
                    return Dt;
                  }
                  function Li(N) {
                    return Ln(N).length === 0 ? [] : pe(N);
                  }
                  function Xi(N) {
                    return Ln(N).length === 0 ? [] : pe(N);
                  }
                  function oa(N) {
                    const k = N.key, Z = N.value;
                    if (oo(Z) === "array") {
                      if (Z.length < 1 || Z.length > 4)
                        return [new zr(k, Z, `padding requires 1 to 4 values; ${Z.length} values found`)];
                      const At = {
                        type: "number"
                      };
                      let Dt = [];
                      for (let Ut = 0; Ut < Z.length; Ut++)
                        Dt = Dt.concat(N.validateSpec({
                          key: `${k}[${Ut}]`,
                          value: Z[Ut],
                          validateSpec: N.validateSpec,
                          valueSpec: At
                        }));
                      return Dt;
                    } else
                      return Ft({
                        key: k,
                        value: Z,
                        valueSpec: {}
                      });
                  }
                  function ji(N) {
                    const k = N.key, Z = N.value, dt = oo(Z), At = N.styleSpec;
                    if (dt !== "array" || Z.length < 1 || Z.length % 2 !== 0)
                      return [new zr(k, Z, "variableAnchorOffsetCollection requires a non-empty array of even length")];
                    let Dt = [];
                    for (let Ut = 0; Ut < Z.length; Ut += 2)
                      Dt = Dt.concat(er({
                        key: `${k}[${Ut}]`,
                        value: Z[Ut],
                        valueSpec: At.layout_symbol["text-anchor"]
                      })), Dt = Dt.concat(gt({
                        key: `${k}[${Ut + 1}]`,
                        value: Z[Ut + 1],
                        valueSpec: {
                          length: 2,
                          value: "number"
                        },
                        validateSpec: N.validateSpec,
                        style: N.style,
                        styleSpec: At
                      }));
                    return Dt;
                  }
                  function ea(N) {
                    let k = [];
                    const Z = N.value, dt = N.key;
                    if (Array.isArray(Z)) {
                      const At = [], Dt = [];
                      for (const Ut in Z) {
                        Z[Ut].id && At.includes(Z[Ut].id) && k.push(new zr(dt, Z, `all the sprites' ids must be unique, but ${Z[Ut].id} is duplicated`)), At.push(Z[Ut].id), Z[Ut].url && Dt.includes(Z[Ut].url) && k.push(new zr(dt, Z, `all the sprites' URLs must be unique, but ${Z[Ut].url} is duplicated`)), Dt.push(Z[Ut].url);
                        const se = {
                          id: {
                            type: "string",
                            required: !0
                          },
                          url: {
                            type: "string",
                            required: !0
                          }
                        };
                        k = k.concat(Do({
                          key: `${dt}[${Ut}]`,
                          value: Z[Ut],
                          valueSpec: se,
                          validateSpec: N.validateSpec
                        }));
                      }
                      return k;
                    } else
                      return Ln({
                        key: dt,
                        value: Z
                      });
                  }
                  function sa(N) {
                    const k = N.value, Z = N.styleSpec, dt = Z.projection, At = N.style, Dt = oo(k);
                    if (k === void 0)
                      return [];
                    if (Dt !== "object")
                      return [new zr("projection", k, `object expected, ${Dt} found`)];
                    let Ut = [];
                    for (const se in k)
                      dt[se] ? Ut = Ut.concat(N.validateSpec({
                        key: se,
                        value: k[se],
                        valueSpec: dt[se],
                        style: At,
                        styleSpec: Z
                      })) : Ut = Ut.concat([new zr(se, k[se], `unknown property "${se}"`)]);
                    return Ut;
                  }
                  const Wa = {
                    "*"() {
                      return [];
                    },
                    array: gt,
                    boolean: Te,
                    number: Ft,
                    color: Ce,
                    constants: Ga,
                    enum: er,
                    filter: We,
                    function: Kt,
                    layer: on,
                    object: Do,
                    source: xn,
                    light: Yn,
                    sky: ti,
                    terrain: zn,
                    projection: sa,
                    string: Ln,
                    formatted: Li,
                    resolvedImage: Xi,
                    padding: oa,
                    variableAnchorOffsetCollection: ji,
                    sprite: ea
                  };
                  function ya(N) {
                    const k = N.value, Z = N.valueSpec, dt = N.styleSpec;
                    return N.validateSpec = ya, Z.expression && ic(Na(k)) ? Kt(N) : Z.expression && tf(To(k)) ? pe(N) : Z.type && Wa[Z.type] ? Wa[Z.type](N) : Do(Tn({}, N, {
                      valueSpec: Z.type ? dt[Z.type] : Z
                    }));
                  }
                  function Oa(N) {
                    const k = N.value, Z = N.key, dt = Ln(N);
                    return dt.length || (k.indexOf("{fontstack}") === -1 && dt.push(new zr(Z, k, '"glyphs" url must include a "{fontstack}" token')), k.indexOf("{range}") === -1 && dt.push(new zr(Z, k, '"glyphs" url must include a "{range}" token'))), dt;
                  }
                  function lo(N, k = or) {
                    let Z = [];
                    return Z = Z.concat(ya({
                      key: "",
                      value: N,
                      valueSpec: k.$root,
                      styleSpec: k,
                      style: N,
                      validateSpec: ya,
                      objectElementValidators: {
                        glyphs: Oa,
                        "*"() {
                          return [];
                        }
                      }
                    })), N.constants && (Z = Z.concat(Ga({
                      key: "constants",
                      value: N.constants,
                      style: N,
                      styleSpec: k,
                      validateSpec: ya
                    }))), Po(Z);
                  }
                  lo.source = Ui(Go(xn)), lo.sprite = Ui(Go(ea)), lo.glyphs = Ui(Go(Oa)), lo.light = Ui(Go(Yn)), lo.sky = Ui(Go(ti)), lo.terrain = Ui(Go(zn)), lo.layer = Ui(Go(on)), lo.filter = Ui(Go(We)), lo.paintProperty = Ui(Go(kr)), lo.layoutProperty = Ui(Go(an));
                  function Go(N) {
                    return function(k) {
                      return N({
                        ...k,
                        validateSpec: ya
                      });
                    };
                  }
                  function Po(N) {
                    return [].concat(N).sort((k, Z) => k.line - Z.line);
                  }
                  function Ui(N) {
                    return function(...k) {
                      return Po(N.apply(this, k));
                    };
                  }
                  const Ba = lo;
                  Ba.source;
                  const ba = Ba.light, xo = Ba.sky;
                  Ba.terrain, Ba.filter;
                  const Xo = Ba.paintProperty, Co = Ba.layoutProperty;
                  function Cs(N, k) {
                    let Z = !1;
                    if (k && k.length)
                      for (const dt of k)
                        N.fire(new ie(new Error(dt.message))), Z = !0;
                    return Z;
                  }
                  const ns = 3;
                  class us {
                    constructor(k, Z, dt) {
                      const At = this.cells = [];
                      if (k instanceof ArrayBuffer) {
                        this.arrayBuffer = k;
                        const Ut = new Int32Array(this.arrayBuffer);
                        k = Ut[0], Z = Ut[1], dt = Ut[2], this.d = Z + 2 * dt;
                        for (let He = 0; He < this.d * this.d; He++) {
                          const Ke = Ut[ns + He], cr = Ut[ns + He + 1];
                          At.push(Ke === cr ? null : Ut.subarray(Ke, cr));
                        }
                        const se = Ut[ns + At.length], Ie = Ut[ns + At.length + 1];
                        this.keys = Ut.subarray(se, Ie), this.bboxes = Ut.subarray(Ie), this.insert = this._insertReadonly;
                      } else {
                        this.d = Z + 2 * dt;
                        for (let Ut = 0; Ut < this.d * this.d; Ut++)
                          At.push([]);
                        this.keys = [], this.bboxes = [];
                      }
                      this.n = Z, this.extent = k, this.padding = dt, this.scale = Z / k, this.uid = 0;
                      const Dt = dt / Z * k;
                      this.min = -Dt, this.max = k + Dt;
                    }
                    insert(k, Z, dt, At, Dt) {
                      this._forEachCell(Z, dt, At, Dt, this._insertCell, this.uid++, void 0, void 0), this.keys.push(k), this.bboxes.push(Z), this.bboxes.push(dt), this.bboxes.push(At), this.bboxes.push(Dt);
                    }
                    _insertReadonly() {
                      throw new Error("Cannot insert into a GridIndex created from an ArrayBuffer.");
                    }
                    _insertCell(k, Z, dt, At, Dt, Ut) {
                      this.cells[Dt].push(Ut);
                    }
                    query(k, Z, dt, At, Dt) {
                      const Ut = this.min, se = this.max;
                      if (k <= Ut && Z <= Ut && se <= dt && se <= At && !Dt)
                        return Array.prototype.slice.call(this.keys);
                      {
                        const Ie = [], He = {};
                        return this._forEachCell(k, Z, dt, At, this._queryCell, Ie, He, Dt), Ie;
                      }
                    }
                    _queryCell(k, Z, dt, At, Dt, Ut, se, Ie) {
                      const He = this.cells[Dt];
                      if (He !== null) {
                        const Ke = this.keys, cr = this.bboxes;
                        for (let Mr = 0; Mr < He.length; Mr++) {
                          const Vr = He[Mr];
                          if (se[Vr] === void 0) {
                            const nn = Vr * 4;
                            (Ie ? Ie(cr[nn + 0], cr[nn + 1], cr[nn + 2], cr[nn + 3]) : k <= cr[nn + 2] && Z <= cr[nn + 3] && dt >= cr[nn + 0] && At >= cr[nn + 1]) ? (se[Vr] = !0, Ut.push(Ke[Vr])) : se[Vr] = !1;
                          }
                        }
                      }
                    }
                    _forEachCell(k, Z, dt, At, Dt, Ut, se, Ie) {
                      const He = this._convertToCellCoord(k), Ke = this._convertToCellCoord(Z), cr = this._convertToCellCoord(dt), Mr = this._convertToCellCoord(At);
                      for (let Vr = He; Vr <= cr; Vr++)
                        for (let nn = Ke; nn <= Mr; nn++) {
                          const gn = this.d * nn + Vr;
                          if (!(Ie && !Ie(this._convertFromCellCoord(Vr), this._convertFromCellCoord(nn), this._convertFromCellCoord(Vr + 1), this._convertFromCellCoord(nn + 1))) && Dt.call(this, k, Z, dt, At, gn, Ut, se, Ie))
                            return;
                        }
                    }
                    _convertFromCellCoord(k) {
                      return (k - this.padding) / this.scale;
                    }
                    _convertToCellCoord(k) {
                      return Math.max(0, Math.min(this.d - 1, Math.floor(k * this.scale) + this.padding));
                    }
                    toArrayBuffer() {
                      if (this.arrayBuffer)
                        return this.arrayBuffer;
                      const k = this.cells, Z = ns + this.cells.length + 1 + 1;
                      let dt = 0;
                      for (let Ut = 0; Ut < this.cells.length; Ut++)
                        dt += this.cells[Ut].length;
                      const At = new Int32Array(Z + dt + this.keys.length + this.bboxes.length);
                      At[0] = this.extent, At[1] = this.n, At[2] = this.padding;
                      let Dt = Z;
                      for (let Ut = 0; Ut < k.length; Ut++) {
                        const se = k[Ut];
                        At[ns + Ut] = Dt, At.set(se, Dt), Dt += se.length;
                      }
                      return At[ns + k.length] = Dt, At.set(this.keys, Dt), Dt += this.keys.length, At[ns + k.length + 1] = Dt, At.set(this.bboxes, Dt), Dt += this.bboxes.length, At.buffer;
                    }
                    static serialize(k, Z) {
                      const dt = k.toArrayBuffer();
                      return Z && Z.push(dt), { buffer: dt };
                    }
                    static deserialize(k) {
                      return new us(k.buffer);
                    }
                  }
                  const Ao = {};
                  function aa(N, k, Z = {}) {
                    if (Ao[N])
                      throw new Error(`${N} is already registered.`);
                    Object.defineProperty(k, "_classRegistryKey", {
                      value: N,
                      writeable: !1
                    }), Ao[N] = {
                      klass: k,
                      omit: Z.omit || [],
                      shallow: Z.shallow || []
                    };
                  }
                  aa("Object", Object), aa("TransferableGridIndex", us), aa("Color", so), aa("Error", Error), aa("AJAXError", Wt), aa("ResolvedImage", jo), aa("StylePropertyFunction", Ae), aa("StyleExpression", Cc, { omit: ["_evaluator"] }), aa("ZoomDependentExpression", pu), aa("ZoomConstantExpression", ef), aa("CompoundExpression", Qs, { omit: ["_evaluate"] });
                  for (const N in Cl)
                    Cl[N]._classRegistryKey || aa(`Expression_${N}`, Cl[N]);
                  function ta(N) {
                    return N && typeof ArrayBuffer < "u" && (N instanceof ArrayBuffer || N.constructor && N.constructor.name === "ArrayBuffer");
                  }
                  function wa(N) {
                    const k = N.constructor;
                    return N.$name || k._classRegistryKey;
                  }
                  function il(N) {
                    if (N === null || typeof N != "object")
                      return !1;
                    const k = wa(N);
                    return !!(k && k !== "Object");
                  }
                  function al(N) {
                    return !il(N) && (N == null || typeof N == "boolean" || typeof N == "number" || typeof N == "string" || N instanceof Boolean || N instanceof Number || N instanceof String || N instanceof Date || N instanceof RegExp || N instanceof Blob || N instanceof Error || ta(N) || ht(N) || ArrayBuffer.isView(N) || N instanceof ImageData);
                  }
                  function as(N, k) {
                    if (al(N)) {
                      if ((ta(N) || ht(N)) && k && k.push(N), ArrayBuffer.isView(N)) {
                        const Dt = N;
                        k && k.push(Dt.buffer);
                      }
                      return N instanceof ImageData && k && k.push(N.data.buffer), N;
                    }
                    if (Array.isArray(N)) {
                      const Dt = [];
                      for (const Ut of N)
                        Dt.push(as(Ut, k));
                      return Dt;
                    }
                    if (typeof N != "object")
                      throw new Error(`can't serialize object of type ${typeof N}`);
                    const Z = wa(N);
                    if (!Z)
                      throw new Error(`can't serialize object of unregistered class ${N.constructor.name}`);
                    if (!Ao[Z])
                      throw new Error(`${Z} is not registered.`);
                    const { klass: dt } = Ao[Z], At = dt.serialize ? (
                      // (Temporary workaround) allow a class to provide static
                      // `serialize()` and `deserialize()` methods to bypass the generic
                      // approach.
                      // This temporary workaround lets us use the generic serialization
                      // approach for objects whose members include instances of dynamic
                      // StructArray types. Once we refactor StructArray to be static,
                      // we can remove this complexity.
                      dt.serialize(N, k)
                    ) : {};
                    if (dt.serialize) {
                      if (k && At === k[k.length - 1])
                        throw new Error("statically serialized object won't survive transfer of $name property");
                    } else {
                      for (const Dt in N) {
                        if (!N.hasOwnProperty(Dt) || Ao[Z].omit.indexOf(Dt) >= 0)
                          continue;
                        const Ut = N[Dt];
                        At[Dt] = Ao[Z].shallow.indexOf(Dt) >= 0 ? Ut : as(Ut, k);
                      }
                      N instanceof Error && (At.message = N.message);
                    }
                    if (At.$name)
                      throw new Error("$name property is reserved for worker serialization logic.");
                    return Z !== "Object" && (At.$name = Z), At;
                  }
                  function So(N) {
                    if (al(N))
                      return N;
                    if (Array.isArray(N))
                      return N.map(So);
                    if (typeof N != "object")
                      throw new Error(`can't deserialize object of type ${typeof N}`);
                    const k = wa(N) || "Object";
                    if (!Ao[k])
                      throw new Error(`can't deserialize unregistered class ${k}`);
                    const { klass: Z } = Ao[k];
                    if (!Z)
                      throw new Error(`can't deserialize unregistered class ${k}`);
                    if (Z.deserialize)
                      return Z.deserialize(N);
                    const dt = Object.create(Z.prototype);
                    for (const At of Object.keys(N)) {
                      if (At === "$name")
                        continue;
                      const Dt = N[At];
                      dt[At] = Ao[k].shallow.indexOf(At) >= 0 ? Dt : So(Dt);
                    }
                    return dt;
                  }
                  class _s {
                    constructor() {
                      this.first = !0;
                    }
                    update(k, Z) {
                      const dt = Math.floor(k);
                      return this.first ? (this.first = !1, this.lastIntegerZoom = dt, this.lastIntegerZoomTime = 0, this.lastZoom = k, this.lastFloorZoom = dt, !0) : (this.lastFloorZoom > dt ? (this.lastIntegerZoom = dt + 1, this.lastIntegerZoomTime = Z) : this.lastFloorZoom < dt && (this.lastIntegerZoom = dt, this.lastIntegerZoomTime = Z), k !== this.lastZoom ? (this.lastZoom = k, this.lastFloorZoom = dt, !0) : !1);
                    }
                  }
                  const Qi = {
                    // 'Basic Latin': (char) => char >= 0x0000 && char <= 0x007F,
                    "Latin-1 Supplement": (N) => N >= 128 && N <= 255,
                    // 'Latin Extended-A': (char) => char >= 0x0100 && char <= 0x017F,
                    // 'Latin Extended-B': (char) => char >= 0x0180 && char <= 0x024F,
                    // 'IPA Extensions': (char) => char >= 0x0250 && char <= 0x02AF,
                    // 'Spacing Modifier Letters': (char) => char >= 0x02B0 && char <= 0x02FF,
                    // 'Combining Diacritical Marks': (char) => char >= 0x0300 && char <= 0x036F,
                    // 'Greek and Coptic': (char) => char >= 0x0370 && char <= 0x03FF,
                    // 'Cyrillic': (char) => char >= 0x0400 && char <= 0x04FF,
                    // 'Cyrillic Supplement': (char) => char >= 0x0500 && char <= 0x052F,
                    // 'Armenian': (char) => char >= 0x0530 && char <= 0x058F,
                    //'Hebrew': (char) => char >= 0x0590 && char <= 0x05FF,
                    Arabic: (N) => N >= 1536 && N <= 1791,
                    //'Syriac': (char) => char >= 0x0700 && char <= 0x074F,
                    "Arabic Supplement": (N) => N >= 1872 && N <= 1919,
                    // 'Thaana': (char) => char >= 0x0780 && char <= 0x07BF,
                    // 'NKo': (char) => char >= 0x07C0 && char <= 0x07FF,
                    // 'Samaritan': (char) => char >= 0x0800 && char <= 0x083F,
                    // 'Mandaic': (char) => char >= 0x0840 && char <= 0x085F,
                    // 'Syriac Supplement': (char) => char >= 0x0860 && char <= 0x086F,
                    "Arabic Extended-A": (N) => N >= 2208 && N <= 2303,
                    // 'Devanagari': (char) => char >= 0x0900 && char <= 0x097F,
                    // 'Bengali': (char) => char >= 0x0980 && char <= 0x09FF,
                    // 'Gurmukhi': (char) => char >= 0x0A00 && char <= 0x0A7F,
                    // 'Gujarati': (char) => char >= 0x0A80 && char <= 0x0AFF,
                    // 'Oriya': (char) => char >= 0x0B00 && char <= 0x0B7F,
                    // 'Tamil': (char) => char >= 0x0B80 && char <= 0x0BFF,
                    // 'Telugu': (char) => char >= 0x0C00 && char <= 0x0C7F,
                    // 'Kannada': (char) => char >= 0x0C80 && char <= 0x0CFF,
                    // 'Malayalam': (char) => char >= 0x0D00 && char <= 0x0D7F,
                    // 'Sinhala': (char) => char >= 0x0D80 && char <= 0x0DFF,
                    // 'Thai': (char) => char >= 0x0E00 && char <= 0x0E7F,
                    // 'Lao': (char) => char >= 0x0E80 && char <= 0x0EFF,
                    // 'Tibetan': (char) => char >= 0x0F00 && char <= 0x0FFF,
                    // 'Myanmar': (char) => char >= 0x1000 && char <= 0x109F,
                    // 'Georgian': (char) => char >= 0x10A0 && char <= 0x10FF,
                    "Hangul Jamo": (N) => N >= 4352 && N <= 4607,
                    // 'Ethiopic': (char) => char >= 0x1200 && char <= 0x137F,
                    // 'Ethiopic Supplement': (char) => char >= 0x1380 && char <= 0x139F,
                    // 'Cherokee': (char) => char >= 0x13A0 && char <= 0x13FF,
                    "Unified Canadian Aboriginal Syllabics": (N) => N >= 5120 && N <= 5759,
                    // 'Ogham': (char) => char >= 0x1680 && char <= 0x169F,
                    // 'Runic': (char) => char >= 0x16A0 && char <= 0x16FF,
                    // 'Tagalog': (char) => char >= 0x1700 && char <= 0x171F,
                    // 'Hanunoo': (char) => char >= 0x1720 && char <= 0x173F,
                    // 'Buhid': (char) => char >= 0x1740 && char <= 0x175F,
                    // 'Tagbanwa': (char) => char >= 0x1760 && char <= 0x177F,
                    Khmer: (N) => N >= 6016 && N <= 6143,
                    // 'Mongolian': (char) => char >= 0x1800 && char <= 0x18AF,
                    "Unified Canadian Aboriginal Syllabics Extended": (N) => N >= 6320 && N <= 6399,
                    // 'Limbu': (char) => char >= 0x1900 && char <= 0x194F,
                    // 'Tai Le': (char) => char >= 0x1950 && char <= 0x197F,
                    // 'New Tai Lue': (char) => char >= 0x1980 && char <= 0x19DF,
                    // 'Khmer Symbols': (char) => char >= 0x19E0 && char <= 0x19FF,
                    // 'Buginese': (char) => char >= 0x1A00 && char <= 0x1A1F,
                    // 'Tai Tham': (char) => char >= 0x1A20 && char <= 0x1AAF,
                    // 'Combining Diacritical Marks Extended': (char) => char >= 0x1AB0 && char <= 0x1AFF,
                    // 'Balinese': (char) => char >= 0x1B00 && char <= 0x1B7F,
                    // 'Sundanese': (char) => char >= 0x1B80 && char <= 0x1BBF,
                    // 'Batak': (char) => char >= 0x1BC0 && char <= 0x1BFF,
                    // 'Lepcha': (char) => char >= 0x1C00 && char <= 0x1C4F,
                    // 'Ol Chiki': (char) => char >= 0x1C50 && char <= 0x1C7F,
                    // 'Cyrillic Extended-C': (char) => char >= 0x1C80 && char <= 0x1C8F,
                    // 'Georgian Extended': (char) => char >= 0x1C90 && char <= 0x1CBF,
                    // 'Sundanese Supplement': (char) => char >= 0x1CC0 && char <= 0x1CCF,
                    // 'Vedic Extensions': (char) => char >= 0x1CD0 && char <= 0x1CFF,
                    // 'Phonetic Extensions': (char) => char >= 0x1D00 && char <= 0x1D7F,
                    // 'Phonetic Extensions Supplement': (char) => char >= 0x1D80 && char <= 0x1DBF,
                    // 'Combining Diacritical Marks Supplement': (char) => char >= 0x1DC0 && char <= 0x1DFF,
                    // 'Latin Extended Additional': (char) => char >= 0x1E00 && char <= 0x1EFF,
                    // 'Greek Extended': (char) => char >= 0x1F00 && char <= 0x1FFF,
                    "General Punctuation": (N) => N >= 8192 && N <= 8303,
                    // 'Superscripts and Subscripts': (char) => char >= 0x2070 && char <= 0x209F,
                    // 'Currency Symbols': (char) => char >= 0x20A0 && char <= 0x20CF,
                    // 'Combining Diacritical Marks for Symbols': (char) => char >= 0x20D0 && char <= 0x20FF,
                    "Letterlike Symbols": (N) => N >= 8448 && N <= 8527,
                    "Number Forms": (N) => N >= 8528 && N <= 8591,
                    // 'Arrows': (char) => char >= 0x2190 && char <= 0x21FF,
                    // 'Mathematical Operators': (char) => char >= 0x2200 && char <= 0x22FF,
                    "Miscellaneous Technical": (N) => N >= 8960 && N <= 9215,
                    "Control Pictures": (N) => N >= 9216 && N <= 9279,
                    "Optical Character Recognition": (N) => N >= 9280 && N <= 9311,
                    "Enclosed Alphanumerics": (N) => N >= 9312 && N <= 9471,
                    // 'Box Drawing': (char) => char >= 0x2500 && char <= 0x257F,
                    // 'Block Elements': (char) => char >= 0x2580 && char <= 0x259F,
                    "Geometric Shapes": (N) => N >= 9632 && N <= 9727,
                    "Miscellaneous Symbols": (N) => N >= 9728 && N <= 9983,
                    // 'Dingbats': (char) => char >= 0x2700 && char <= 0x27BF,
                    // 'Miscellaneous Mathematical Symbols-A': (char) => char >= 0x27C0 && char <= 0x27EF,
                    // 'Supplemental Arrows-A': (char) => char >= 0x27F0 && char <= 0x27FF,
                    // 'Braille Patterns': (char) => char >= 0x2800 && char <= 0x28FF,
                    // 'Supplemental Arrows-B': (char) => char >= 0x2900 && char <= 0x297F,
                    // 'Miscellaneous Mathematical Symbols-B': (char) => char >= 0x2980 && char <= 0x29FF,
                    // 'Supplemental Mathematical Operators': (char) => char >= 0x2A00 && char <= 0x2AFF,
                    "Miscellaneous Symbols and Arrows": (N) => N >= 11008 && N <= 11263,
                    // 'Glagolitic': (char) => char >= 0x2C00 && char <= 0x2C5F,
                    // 'Latin Extended-C': (char) => char >= 0x2C60 && char <= 0x2C7F,
                    // 'Coptic': (char) => char >= 0x2C80 && char <= 0x2CFF,
                    // 'Georgian Supplement': (char) => char >= 0x2D00 && char <= 0x2D2F,
                    // 'Tifinagh': (char) => char >= 0x2D30 && char <= 0x2D7F,
                    // 'Ethiopic Extended': (char) => char >= 0x2D80 && char <= 0x2DDF,
                    // 'Cyrillic Extended-A': (char) => char >= 0x2DE0 && char <= 0x2DFF,
                    // 'Supplemental Punctuation': (char) => char >= 0x2E00 && char <= 0x2E7F,
                    "CJK Radicals Supplement": (N) => N >= 11904 && N <= 12031,
                    "Kangxi Radicals": (N) => N >= 12032 && N <= 12255,
                    "Ideographic Description Characters": (N) => N >= 12272 && N <= 12287,
                    "CJK Symbols and Punctuation": (N) => N >= 12288 && N <= 12351,
                    Hiragana: (N) => N >= 12352 && N <= 12447,
                    Katakana: (N) => N >= 12448 && N <= 12543,
                    Bopomofo: (N) => N >= 12544 && N <= 12591,
                    "Hangul Compatibility Jamo": (N) => N >= 12592 && N <= 12687,
                    Kanbun: (N) => N >= 12688 && N <= 12703,
                    "Bopomofo Extended": (N) => N >= 12704 && N <= 12735,
                    "CJK Strokes": (N) => N >= 12736 && N <= 12783,
                    "Katakana Phonetic Extensions": (N) => N >= 12784 && N <= 12799,
                    "Enclosed CJK Letters and Months": (N) => N >= 12800 && N <= 13055,
                    "CJK Compatibility": (N) => N >= 13056 && N <= 13311,
                    "CJK Unified Ideographs Extension A": (N) => N >= 13312 && N <= 19903,
                    "Yijing Hexagram Symbols": (N) => N >= 19904 && N <= 19967,
                    "CJK Unified Ideographs": (N) => N >= 19968 && N <= 40959,
                    "Yi Syllables": (N) => N >= 40960 && N <= 42127,
                    "Yi Radicals": (N) => N >= 42128 && N <= 42191,
                    // 'Lisu': (char) => char >= 0xA4D0 && char <= 0xA4FF,
                    // 'Vai': (char) => char >= 0xA500 && char <= 0xA63F,
                    // 'Cyrillic Extended-B': (char) => char >= 0xA640 && char <= 0xA69F,
                    // 'Bamum': (char) => char >= 0xA6A0 && char <= 0xA6FF,
                    // 'Modifier Tone Letters': (char) => char >= 0xA700 && char <= 0xA71F,
                    // 'Latin Extended-D': (char) => char >= 0xA720 && char <= 0xA7FF,
                    // 'Syloti Nagri': (char) => char >= 0xA800 && char <= 0xA82F,
                    // 'Common Indic Number Forms': (char) => char >= 0xA830 && char <= 0xA83F,
                    // 'Phags-pa': (char) => char >= 0xA840 && char <= 0xA87F,
                    // 'Saurashtra': (char) => char >= 0xA880 && char <= 0xA8DF,
                    // 'Devanagari Extended': (char) => char >= 0xA8E0 && char <= 0xA8FF,
                    // 'Kayah Li': (char) => char >= 0xA900 && char <= 0xA92F,
                    // 'Rejang': (char) => char >= 0xA930 && char <= 0xA95F,
                    "Hangul Jamo Extended-A": (N) => N >= 43360 && N <= 43391,
                    // 'Javanese': (char) => char >= 0xA980 && char <= 0xA9DF,
                    // 'Myanmar Extended-B': (char) => char >= 0xA9E0 && char <= 0xA9FF,
                    // 'Cham': (char) => char >= 0xAA00 && char <= 0xAA5F,
                    // 'Myanmar Extended-A': (char) => char >= 0xAA60 && char <= 0xAA7F,
                    // 'Tai Viet': (char) => char >= 0xAA80 && char <= 0xAADF,
                    // 'Meetei Mayek Extensions': (char) => char >= 0xAAE0 && char <= 0xAAFF,
                    // 'Ethiopic Extended-A': (char) => char >= 0xAB00 && char <= 0xAB2F,
                    // 'Latin Extended-E': (char) => char >= 0xAB30 && char <= 0xAB6F,
                    // 'Cherokee Supplement': (char) => char >= 0xAB70 && char <= 0xABBF,
                    // 'Meetei Mayek': (char) => char >= 0xABC0 && char <= 0xABFF,
                    "Hangul Syllables": (N) => N >= 44032 && N <= 55215,
                    "Hangul Jamo Extended-B": (N) => N >= 55216 && N <= 55295,
                    // 'High Surrogates': (char) => char >= 0xD800 && char <= 0xDB7F,
                    // 'High Private Use Surrogates': (char) => char >= 0xDB80 && char <= 0xDBFF,
                    // 'Low Surrogates': (char) => char >= 0xDC00 && char <= 0xDFFF,
                    "Private Use Area": (N) => N >= 57344 && N <= 63743,
                    "CJK Compatibility Ideographs": (N) => N >= 63744 && N <= 64255,
                    // 'Alphabetic Presentation Forms': (char) => char >= 0xFB00 && char <= 0xFB4F,
                    "Arabic Presentation Forms-A": (N) => N >= 64336 && N <= 65023,
                    // 'Variation Selectors': (char) => char >= 0xFE00 && char <= 0xFE0F,
                    "Vertical Forms": (N) => N >= 65040 && N <= 65055,
                    // 'Combining Half Marks': (char) => char >= 0xFE20 && char <= 0xFE2F,
                    "CJK Compatibility Forms": (N) => N >= 65072 && N <= 65103,
                    "Small Form Variants": (N) => N >= 65104 && N <= 65135,
                    "Arabic Presentation Forms-B": (N) => N >= 65136 && N <= 65279,
                    "Halfwidth and Fullwidth Forms": (N) => N >= 65280 && N <= 65519
                    // 'Specials': (char) => char >= 0xFFF0 && char <= 0xFFFF,
                    // 'Linear B Syllabary': (char) => char >= 0x10000 && char <= 0x1007F,
                    // 'Linear B Ideograms': (char) => char >= 0x10080 && char <= 0x100FF,
                    // 'Aegean Numbers': (char) => char >= 0x10100 && char <= 0x1013F,
                    // 'Ancient Greek Numbers': (char) => char >= 0x10140 && char <= 0x1018F,
                    // 'Ancient Symbols': (char) => char >= 0x10190 && char <= 0x101CF,
                    // 'Phaistos Disc': (char) => char >= 0x101D0 && char <= 0x101FF,
                    // 'Lycian': (char) => char >= 0x10280 && char <= 0x1029F,
                    // 'Carian': (char) => char >= 0x102A0 && char <= 0x102DF,
                    // 'Coptic Epact Numbers': (char) => char >= 0x102E0 && char <= 0x102FF,
                    // 'Old Italic': (char) => char >= 0x10300 && char <= 0x1032F,
                    // 'Gothic': (char) => char >= 0x10330 && char <= 0x1034F,
                    // 'Old Permic': (char) => char >= 0x10350 && char <= 0x1037F,
                    // 'Ugaritic': (char) => char >= 0x10380 && char <= 0x1039F,
                    // 'Old Persian': (char) => char >= 0x103A0 && char <= 0x103DF,
                    // 'Deseret': (char) => char >= 0x10400 && char <= 0x1044F,
                    // 'Shavian': (char) => char >= 0x10450 && char <= 0x1047F,
                    // 'Osmanya': (char) => char >= 0x10480 && char <= 0x104AF,
                    // 'Osage': (char) => char >= 0x104B0 && char <= 0x104FF,
                    // 'Elbasan': (char) => char >= 0x10500 && char <= 0x1052F,
                    // 'Caucasian Albanian': (char) => char >= 0x10530 && char <= 0x1056F,
                    // 'Linear A': (char) => char >= 0x10600 && char <= 0x1077F,
                    // 'Cypriot Syllabary': (char) => char >= 0x10800 && char <= 0x1083F,
                    // 'Imperial Aramaic': (char) => char >= 0x10840 && char <= 0x1085F,
                    // 'Palmyrene': (char) => char >= 0x10860 && char <= 0x1087F,
                    // 'Nabataean': (char) => char >= 0x10880 && char <= 0x108AF,
                    // 'Hatran': (char) => char >= 0x108E0 && char <= 0x108FF,
                    // 'Phoenician': (char) => char >= 0x10900 && char <= 0x1091F,
                    // 'Lydian': (char) => char >= 0x10920 && char <= 0x1093F,
                    // 'Meroitic Hieroglyphs': (char) => char >= 0x10980 && char <= 0x1099F,
                    // 'Meroitic Cursive': (char) => char >= 0x109A0 && char <= 0x109FF,
                    // 'Kharoshthi': (char) => char >= 0x10A00 && char <= 0x10A5F,
                    // 'Old South Arabian': (char) => char >= 0x10A60 && char <= 0x10A7F,
                    // 'Old North Arabian': (char) => char >= 0x10A80 && char <= 0x10A9F,
                    // 'Manichaean': (char) => char >= 0x10AC0 && char <= 0x10AFF,
                    // 'Avestan': (char) => char >= 0x10B00 && char <= 0x10B3F,
                    // 'Inscriptional Parthian': (char) => char >= 0x10B40 && char <= 0x10B5F,
                    // 'Inscriptional Pahlavi': (char) => char >= 0x10B60 && char <= 0x10B7F,
                    // 'Psalter Pahlavi': (char) => char >= 0x10B80 && char <= 0x10BAF,
                    // 'Old Turkic': (char) => char >= 0x10C00 && char <= 0x10C4F,
                    // 'Old Hungarian': (char) => char >= 0x10C80 && char <= 0x10CFF,
                    // 'Hanifi Rohingya': (char) => char >= 0x10D00 && char <= 0x10D3F,
                    // 'Rumi Numeral Symbols': (char) => char >= 0x10E60 && char <= 0x10E7F,
                    // 'Old Sogdian': (char) => char >= 0x10F00 && char <= 0x10F2F,
                    // 'Sogdian': (char) => char >= 0x10F30 && char <= 0x10F6F,
                    // 'Elymaic': (char) => char >= 0x10FE0 && char <= 0x10FFF,
                    // 'Brahmi': (char) => char >= 0x11000 && char <= 0x1107F,
                    // 'Kaithi': (char) => char >= 0x11080 && char <= 0x110CF,
                    // 'Sora Sompeng': (char) => char >= 0x110D0 && char <= 0x110FF,
                    // 'Chakma': (char) => char >= 0x11100 && char <= 0x1114F,
                    // 'Mahajani': (char) => char >= 0x11150 && char <= 0x1117F,
                    // 'Sharada': (char) => char >= 0x11180 && char <= 0x111DF,
                    // 'Sinhala Archaic Numbers': (char) => char >= 0x111E0 && char <= 0x111FF,
                    // 'Khojki': (char) => char >= 0x11200 && char <= 0x1124F,
                    // 'Multani': (char) => char >= 0x11280 && char <= 0x112AF,
                    // 'Khudawadi': (char) => char >= 0x112B0 && char <= 0x112FF,
                    // 'Grantha': (char) => char >= 0x11300 && char <= 0x1137F,
                    // 'Newa': (char) => char >= 0x11400 && char <= 0x1147F,
                    // 'Tirhuta': (char) => char >= 0x11480 && char <= 0x114DF,
                    // 'Siddham': (char) => char >= 0x11580 && char <= 0x115FF,
                    // 'Modi': (char) => char >= 0x11600 && char <= 0x1165F,
                    // 'Mongolian Supplement': (char) => char >= 0x11660 && char <= 0x1167F,
                    // 'Takri': (char) => char >= 0x11680 && char <= 0x116CF,
                    // 'Ahom': (char) => char >= 0x11700 && char <= 0x1173F,
                    // 'Dogra': (char) => char >= 0x11800 && char <= 0x1184F,
                    // 'Warang Citi': (char) => char >= 0x118A0 && char <= 0x118FF,
                    // 'Nandinagari': (char) => char >= 0x119A0 && char <= 0x119FF,
                    // 'Zanabazar Square': (char) => char >= 0x11A00 && char <= 0x11A4F,
                    // 'Soyombo': (char) => char >= 0x11A50 && char <= 0x11AAF,
                    // 'Pau Cin Hau': (char) => char >= 0x11AC0 && char <= 0x11AFF,
                    // 'Bhaiksuki': (char) => char >= 0x11C00 && char <= 0x11C6F,
                    // 'Marchen': (char) => char >= 0x11C70 && char <= 0x11CBF,
                    // 'Masaram Gondi': (char) => char >= 0x11D00 && char <= 0x11D5F,
                    // 'Gunjala Gondi': (char) => char >= 0x11D60 && char <= 0x11DAF,
                    // 'Makasar': (char) => char >= 0x11EE0 && char <= 0x11EFF,
                    // 'Tamil Supplement': (char) => char >= 0x11FC0 && char <= 0x11FFF,
                    // 'Cuneiform': (char) => char >= 0x12000 && char <= 0x123FF,
                    // 'Cuneiform Numbers and Punctuation': (char) => char >= 0x12400 && char <= 0x1247F,
                    // 'Early Dynastic Cuneiform': (char) => char >= 0x12480 && char <= 0x1254F,
                    // 'Egyptian Hieroglyphs': (char) => char >= 0x13000 && char <= 0x1342F,
                    // 'Egyptian Hieroglyph Format Controls': (char) => char >= 0x13430 && char <= 0x1343F,
                    // 'Anatolian Hieroglyphs': (char) => char >= 0x14400 && char <= 0x1467F,
                    // 'Bamum Supplement': (char) => char >= 0x16800 && char <= 0x16A3F,
                    // 'Mro': (char) => char >= 0x16A40 && char <= 0x16A6F,
                    // 'Bassa Vah': (char) => char >= 0x16AD0 && char <= 0x16AFF,
                    // 'Pahawh Hmong': (char) => char >= 0x16B00 && char <= 0x16B8F,
                    // 'Medefaidrin': (char) => char >= 0x16E40 && char <= 0x16E9F,
                    // 'Miao': (char) => char >= 0x16F00 && char <= 0x16F9F,
                    // 'Ideographic Symbols and Punctuation': (char) => char >= 0x16FE0 && char <= 0x16FFF,
                    // 'Tangut': (char) => char >= 0x17000 && char <= 0x187FF,
                    // 'Tangut Components': (char) => char >= 0x18800 && char <= 0x18AFF,
                    // 'Kana Supplement': (char) => char >= 0x1B000 && char <= 0x1B0FF,
                    // 'Kana Extended-A': (char) => char >= 0x1B100 && char <= 0x1B12F,
                    // 'Small Kana Extension': (char) => char >= 0x1B130 && char <= 0x1B16F,
                    // 'Nushu': (char) => char >= 0x1B170 && char <= 0x1B2FF,
                    // 'Duployan': (char) => char >= 0x1BC00 && char <= 0x1BC9F,
                    // 'Shorthand Format Controls': (char) => char >= 0x1BCA0 && char <= 0x1BCAF,
                    // 'Byzantine Musical Symbols': (char) => char >= 0x1D000 && char <= 0x1D0FF,
                    // 'Musical Symbols': (char) => char >= 0x1D100 && char <= 0x1D1FF,
                    // 'Ancient Greek Musical Notation': (char) => char >= 0x1D200 && char <= 0x1D24F,
                    // 'Mayan Numerals': (char) => char >= 0x1D2E0 && char <= 0x1D2FF,
                    // 'Tai Xuan Jing Symbols': (char) => char >= 0x1D300 && char <= 0x1D35F,
                    // 'Counting Rod Numerals': (char) => char >= 0x1D360 && char <= 0x1D37F,
                    // 'Mathematical Alphanumeric Symbols': (char) => char >= 0x1D400 && char <= 0x1D7FF,
                    // 'Sutton SignWriting': (char) => char >= 0x1D800 && char <= 0x1DAAF,
                    // 'Glagolitic Supplement': (char) => char >= 0x1E000 && char <= 0x1E02F,
                    // 'Nyiakeng Puachue Hmong': (char) => char >= 0x1E100 && char <= 0x1E14F,
                    // 'Wancho': (char) => char >= 0x1E2C0 && char <= 0x1E2FF,
                    // 'Mende Kikakui': (char) => char >= 0x1E800 && char <= 0x1E8DF,
                    // 'Adlam': (char) => char >= 0x1E900 && char <= 0x1E95F,
                    // 'Indic Siyaq Numbers': (char) => char >= 0x1EC70 && char <= 0x1ECBF,
                    // 'Ottoman Siyaq Numbers': (char) => char >= 0x1ED00 && char <= 0x1ED4F,
                    // 'Arabic Mathematical Alphabetic Symbols': (char) => char >= 0x1EE00 && char <= 0x1EEFF,
                    // 'Mahjong Tiles': (char) => char >= 0x1F000 && char <= 0x1F02F,
                    // 'Domino Tiles': (char) => char >= 0x1F030 && char <= 0x1F09F,
                    // 'Playing Cards': (char) => char >= 0x1F0A0 && char <= 0x1F0FF,
                    // 'Enclosed Alphanumeric Supplement': (char) => char >= 0x1F100 && char <= 0x1F1FF,
                    // 'Enclosed Ideographic Supplement': (char) => char >= 0x1F200 && char <= 0x1F2FF,
                    // 'Miscellaneous Symbols and Pictographs': (char) => char >= 0x1F300 && char <= 0x1F5FF,
                    // 'Emoticons': (char) => char >= 0x1F600 && char <= 0x1F64F,
                    // 'Ornamental Dingbats': (char) => char >= 0x1F650 && char <= 0x1F67F,
                    // 'Transport and Map Symbols': (char) => char >= 0x1F680 && char <= 0x1F6FF,
                    // 'Alchemical Symbols': (char) => char >= 0x1F700 && char <= 0x1F77F,
                    // 'Geometric Shapes Extended': (char) => char >= 0x1F780 && char <= 0x1F7FF,
                    // 'Supplemental Arrows-C': (char) => char >= 0x1F800 && char <= 0x1F8FF,
                    // 'Supplemental Symbols and Pictographs': (char) => char >= 0x1F900 && char <= 0x1F9FF,
                    // 'Chess Symbols': (char) => char >= 0x1FA00 && char <= 0x1FA6F,
                    // 'Symbols and Pictographs Extended-A': (char) => char >= 0x1FA70 && char <= 0x1FAFF,
                    // 'CJK Unified Ideographs Extension B': (char) => char >= 0x20000 && char <= 0x2A6DF,
                    // 'CJK Unified Ideographs Extension C': (char) => char >= 0x2A700 && char <= 0x2B73F,
                    // 'CJK Unified Ideographs Extension D': (char) => char >= 0x2B740 && char <= 0x2B81F,
                    // 'CJK Unified Ideographs Extension E': (char) => char >= 0x2B820 && char <= 0x2CEAF,
                    // 'CJK Unified Ideographs Extension F': (char) => char >= 0x2CEB0 && char <= 0x2EBEF,
                    // 'CJK Compatibility Ideographs Supplement': (char) => char >= 0x2F800 && char <= 0x2FA1F,
                    // 'Tags': (char) => char >= 0xE0000 && char <= 0xE007F,
                    // 'Variation Selectors Supplement': (char) => char >= 0xE0100 && char <= 0xE01EF,
                    // 'Supplementary Private Use Area-A': (char) => char >= 0xF0000 && char <= 0xFFFFF,
                    // 'Supplementary Private Use Area-B': (char) => char >= 0x100000 && char <= 0x10FFFF,
                  };
                  function jl(N) {
                    for (const k of N)
                      if (qa(k.charCodeAt(0)))
                        return !0;
                    return !1;
                  }
                  function zu(N) {
                    for (const k of N)
                      if (!Jo(k.charCodeAt(0)))
                        return !1;
                    return !0;
                  }
                  function Jo(N) {
                    return !(Qi.Arabic(N) || Qi["Arabic Supplement"](N) || Qi["Arabic Extended-A"](N) || Qi["Arabic Presentation Forms-A"](N) || Qi["Arabic Presentation Forms-B"](N));
                  }
                  function Fu(N) {
                    return N < 11904 ? !1 : !!(Qi["Bopomofo Extended"](N) || Qi.Bopomofo(N) || Qi["CJK Compatibility Forms"](N) || Qi["CJK Compatibility Ideographs"](N) || Qi["CJK Compatibility"](N) || Qi["CJK Radicals Supplement"](N) || Qi["CJK Strokes"](N) || Qi["CJK Symbols and Punctuation"](N) || Qi["CJK Unified Ideographs Extension A"](N) || Qi["CJK Unified Ideographs"](N) || Qi["Enclosed CJK Letters and Months"](N) || Qi["Halfwidth and Fullwidth Forms"](N) || Qi.Hiragana(N) || Qi["Ideographic Description Characters"](N) || Qi["Kangxi Radicals"](N) || Qi["Katakana Phonetic Extensions"](N) || Qi.Katakana(N) || Qi["Vertical Forms"](N) || Qi["Yi Radicals"](N) || Qi["Yi Syllables"](N));
                  }
                  function qa(N) {
                    return N === 746 || N === 747 ? !0 : N < 4352 ? !1 : !!(Qi["Bopomofo Extended"](N) || Qi.Bopomofo(N) || Qi["CJK Compatibility Forms"](N) && !(N >= 65097 && N <= 65103) || Qi["CJK Compatibility Ideographs"](N) || Qi["CJK Compatibility"](N) || Qi["CJK Radicals Supplement"](N) || Qi["CJK Strokes"](N) || Qi["CJK Symbols and Punctuation"](N) && !(N >= 12296 && N <= 12305) && !(N >= 12308 && N <= 12319) && N !== 12336 || Qi["CJK Unified Ideographs Extension A"](N) || Qi["CJK Unified Ideographs"](N) || Qi["Enclosed CJK Letters and Months"](N) || Qi["Hangul Compatibility Jamo"](N) || Qi["Hangul Jamo Extended-A"](N) || Qi["Hangul Jamo Extended-B"](N) || Qi["Hangul Jamo"](N) || Qi["Hangul Syllables"](N) || Qi.Hiragana(N) || Qi["Ideographic Description Characters"](N) || Qi.Kanbun(N) || Qi["Kangxi Radicals"](N) || Qi["Katakana Phonetic Extensions"](N) || Qi.Katakana(N) && N !== 12540 || Qi["Halfwidth and Fullwidth Forms"](N) && N !== 65288 && N !== 65289 && N !== 65293 && !(N >= 65306 && N <= 65310) && N !== 65339 && N !== 65341 && N !== 65343 && !(N >= 65371 && N <= 65503) && N !== 65507 && !(N >= 65512 && N <= 65519) || Qi["Small Form Variants"](N) && !(N >= 65112 && N <= 65118) && !(N >= 65123 && N <= 65126) || Qi["Unified Canadian Aboriginal Syllabics"](N) || Qi["Unified Canadian Aboriginal Syllabics Extended"](N) || Qi["Vertical Forms"](N) || Qi["Yijing Hexagram Symbols"](N) || Qi["Yi Syllables"](N) || Qi["Yi Radicals"](N));
                  }
                  function Yo(N) {
                    return !!(Qi["Latin-1 Supplement"](N) && (N === 167 || N === 169 || N === 174 || N === 177 || N === 188 || N === 189 || N === 190 || N === 215 || N === 247) || Qi["General Punctuation"](N) && (N === 8214 || N === 8224 || N === 8225 || N === 8240 || N === 8241 || N === 8251 || N === 8252 || N === 8258 || N === 8263 || N === 8264 || N === 8265 || N === 8273) || Qi["Letterlike Symbols"](N) || Qi["Number Forms"](N) || Qi["Miscellaneous Technical"](N) && (N >= 8960 && N <= 8967 || N >= 8972 && N <= 8991 || N >= 8996 && N <= 9e3 || N === 9003 || N >= 9085 && N <= 9114 || N >= 9150 && N <= 9165 || N === 9167 || N >= 9169 && N <= 9179 || N >= 9186 && N <= 9215) || Qi["Control Pictures"](N) && N !== 9251 || Qi["Optical Character Recognition"](N) || Qi["Enclosed Alphanumerics"](N) || Qi["Geometric Shapes"](N) || Qi["Miscellaneous Symbols"](N) && !(N >= 9754 && N <= 9759) || Qi["Miscellaneous Symbols and Arrows"](N) && (N >= 11026 && N <= 11055 || N >= 11088 && N <= 11097 || N >= 11192 && N <= 11243) || Qi["CJK Symbols and Punctuation"](N) || Qi.Katakana(N) || Qi["Private Use Area"](N) || Qi["CJK Compatibility Forms"](N) || Qi["Small Form Variants"](N) || Qi["Halfwidth and Fullwidth Forms"](N) || N === 8734 || N === 8756 || N === 8757 || N >= 9984 && N <= 10087 || N >= 10102 && N <= 10131 || N === 65532 || N === 65533);
                  }
                  function Rh(N) {
                    return !(qa(N) || Yo(N));
                  }
                  function Hv(N) {
                    return Qi.Arabic(N) || Qi["Arabic Supplement"](N) || Qi["Arabic Extended-A"](N) || Qi["Arabic Presentation Forms-A"](N) || Qi["Arabic Presentation Forms-B"](N);
                  }
                  function oh(N) {
                    return N >= 1424 && N <= 2303 || Qi["Arabic Presentation Forms-A"](N) || Qi["Arabic Presentation Forms-B"](N);
                  }
                  function Dh(N, k) {
                    return !(!k && oh(N) || N >= 2304 && N <= 3583 || // Main blocks for Indic scripts and Sinhala
                    N >= 3840 && N <= 4255 || // Main blocks for Tibetan and Myanmar
                    Qi.Khmer(N));
                  }
                  function Lf(N) {
                    for (const k of N)
                      if (oh(k.charCodeAt(0)))
                        return !0;
                    return !1;
                  }
                  function sh(N, k) {
                    for (const Z of N)
                      if (!Dh(Z.charCodeAt(0), k))
                        return !1;
                    return !0;
                  }
                  class fd {
                    constructor() {
                      this.applyArabicShaping = null, this.processBidirectionalText = null, this.processStyledBidirectionalText = null, this.pluginStatus = "unavailable", this.pluginURL = null;
                    }
                    setState(k) {
                      this.pluginStatus = k.pluginStatus, this.pluginURL = k.pluginURL;
                    }
                    getState() {
                      return {
                        pluginStatus: this.pluginStatus,
                        pluginURL: this.pluginURL
                      };
                    }
                    setMethods(k) {
                      this.applyArabicShaping = k.applyArabicShaping, this.processBidirectionalText = k.processBidirectionalText, this.processStyledBidirectionalText = k.processStyledBidirectionalText;
                    }
                    isParsed() {
                      return this.applyArabicShaping != null && this.processBidirectionalText != null && this.processStyledBidirectionalText != null;
                    }
                    getPluginURL() {
                      return this.pluginURL;
                    }
                    getRTLTextPluginStatus() {
                      return this.pluginStatus;
                    }
                  }
                  const Os = new fd();
                  class Ko {
                    // "options" may also be another EvaluationParameters to copy, see CrossFadedProperty.possiblyEvaluate
                    constructor(k, Z) {
                      this.zoom = k, Z ? (this.now = Z.now, this.fadeDuration = Z.fadeDuration, this.zoomHistory = Z.zoomHistory, this.transition = Z.transition) : (this.now = 0, this.fadeDuration = 0, this.zoomHistory = new _s(), this.transition = {});
                    }
                    isSupportedScript(k) {
                      return sh(k, Os.getRTLTextPluginStatus() === "loaded");
                    }
                    crossFadingFactor() {
                      return this.fadeDuration === 0 ? 1 : Math.min((this.now - this.zoomHistory.lastIntegerZoomTime) / this.fadeDuration, 1);
                    }
                    getCrossfadeParameters() {
                      const k = this.zoom, Z = k - Math.floor(k), dt = this.crossFadingFactor();
                      return k > this.zoomHistory.lastIntegerZoom ? { fromScale: 2, toScale: 1, t: Z + (1 - Z) * dt } : { fromScale: 0.5, toScale: 1, t: 1 - (1 - dt) * Z };
                    }
                  }
                  class lh {
                    constructor(k, Z) {
                      this.property = k, this.value = Z, this.expression = Be(Z === void 0 ? k.specification.default : Z, k.specification);
                    }
                    isDataDriven() {
                      return this.expression.kind === "source" || this.expression.kind === "composite";
                    }
                    possiblyEvaluate(k, Z, dt) {
                      return this.property.possiblyEvaluate(this, k, Z, dt);
                    }
                  }
                  class zd {
                    constructor(k) {
                      this.property = k, this.value = new lh(k, void 0);
                    }
                    transitioned(k, Z) {
                      return new Fd(this.property, this.value, Z, M({}, k.transition, this.transition), k.now);
                    }
                    untransitioned() {
                      return new Fd(this.property, this.value, null, {}, 0);
                    }
                  }
                  class uh {
                    constructor(k) {
                      this._properties = k, this._values = Object.create(k.defaultTransitionablePropertyValues);
                    }
                    getValue(k) {
                      return O(this._values[k].value.value);
                    }
                    setValue(k, Z) {
                      Object.prototype.hasOwnProperty.call(this._values, k) || (this._values[k] = new zd(this._values[k].property)), this._values[k].value = new lh(this._values[k].property, Z === null ? void 0 : O(Z));
                    }
                    getTransition(k) {
                      return O(this._values[k].transition);
                    }
                    setTransition(k, Z) {
                      Object.prototype.hasOwnProperty.call(this._values, k) || (this._values[k] = new zd(this._values[k].property)), this._values[k].transition = O(Z) || void 0;
                    }
                    serialize() {
                      const k = {};
                      for (const Z of Object.keys(this._values)) {
                        const dt = this.getValue(Z);
                        dt !== void 0 && (k[Z] = dt);
                        const At = this.getTransition(Z);
                        At !== void 0 && (k[`${Z}-transition`] = At);
                      }
                      return k;
                    }
                    transitioned(k, Z) {
                      const dt = new gu(this._properties);
                      for (const At of Object.keys(this._values))
                        dt._values[At] = this._values[At].transitioned(k, Z._values[At]);
                      return dt;
                    }
                    untransitioned() {
                      const k = new gu(this._properties);
                      for (const Z of Object.keys(this._values))
                        k._values[Z] = this._values[Z].untransitioned();
                      return k;
                    }
                  }
                  class Fd {
                    constructor(k, Z, dt, At, Dt) {
                      this.property = k, this.value = Z, this.begin = Dt + At.delay || 0, this.end = this.begin + At.duration || 0, k.specification.transition && (At.delay || At.duration) && (this.prior = dt);
                    }
                    possiblyEvaluate(k, Z, dt) {
                      const At = k.now || 0, Dt = this.value.possiblyEvaluate(k, Z, dt), Ut = this.prior;
                      if (Ut) {
                        if (At > this.end)
                          return this.prior = null, Dt;
                        if (this.value.isDataDriven())
                          return this.prior = null, Dt;
                        if (At < this.begin)
                          return Ut.possiblyEvaluate(k, Z, dt);
                        {
                          const se = (At - this.begin) / (this.end - this.begin);
                          return this.property.interpolate(Ut.possiblyEvaluate(k, Z, dt), Dt, x(se));
                        }
                      } else return Dt;
                    }
                  }
                  class gu {
                    constructor(k) {
                      this._properties = k, this._values = Object.create(k.defaultTransitioningPropertyValues);
                    }
                    possiblyEvaluate(k, Z, dt) {
                      const At = new ch(this._properties);
                      for (const Dt of Object.keys(this._values))
                        At._values[Dt] = this._values[Dt].possiblyEvaluate(k, Z, dt);
                      return At;
                    }
                    hasTransition() {
                      for (const k of Object.keys(this._values))
                        if (this._values[k].prior)
                          return !0;
                      return !1;
                    }
                  }
                  class yu {
                    constructor(k) {
                      this._properties = k, this._values = Object.create(k.defaultPropertyValues);
                    }
                    hasValue(k) {
                      return this._values[k].value !== void 0;
                    }
                    getValue(k) {
                      return O(this._values[k].value);
                    }
                    setValue(k, Z) {
                      this._values[k] = new lh(this._values[k].property, Z === null ? void 0 : O(Z));
                    }
                    serialize() {
                      const k = {};
                      for (const Z of Object.keys(this._values)) {
                        const dt = this.getValue(Z);
                        dt !== void 0 && (k[Z] = dt);
                      }
                      return k;
                    }
                    possiblyEvaluate(k, Z, dt) {
                      const At = new ch(this._properties);
                      for (const Dt of Object.keys(this._values))
                        At._values[Dt] = this._values[Dt].possiblyEvaluate(k, Z, dt);
                      return At;
                    }
                  }
                  class ol {
                    constructor(k, Z, dt) {
                      this.property = k, this.value = Z, this.parameters = dt;
                    }
                    isConstant() {
                      return this.value.kind === "constant";
                    }
                    constantOr(k) {
                      return this.value.kind === "constant" ? this.value.value : k;
                    }
                    evaluate(k, Z, dt, At) {
                      return this.property.evaluate(this.value, this.parameters, k, Z, dt, At);
                    }
                  }
                  class ch {
                    constructor(k) {
                      this._properties = k, this._values = Object.create(k.defaultPossiblyEvaluatedValues);
                    }
                    get(k) {
                      return this._values[k];
                    }
                  }
                  class ka {
                    constructor(k) {
                      this.specification = k;
                    }
                    possiblyEvaluate(k, Z) {
                      if (k.isDataDriven())
                        throw new Error("Value should not be data driven");
                      return k.expression.evaluate(Z);
                    }
                    interpolate(k, Z, dt) {
                      const At = this.specification.type, Dt = Vs[At];
                      return Dt ? Dt(k, Z, dt) : k;
                    }
                  }
                  class Ua {
                    constructor(k, Z) {
                      this.specification = k, this.overrides = Z;
                    }
                    possiblyEvaluate(k, Z, dt, At) {
                      return k.expression.kind === "constant" || k.expression.kind === "camera" ? new ol(this, { kind: "constant", value: k.expression.evaluate(Z, null, {}, dt, At) }, Z) : new ol(this, k.expression, Z);
                    }
                    interpolate(k, Z, dt) {
                      if (k.value.kind !== "constant" || Z.value.kind !== "constant")
                        return k;
                      if (k.value.value === void 0 || Z.value.value === void 0)
                        return new ol(this, { kind: "constant", value: void 0 }, k.parameters);
                      const At = this.specification.type, Dt = Vs[At];
                      if (Dt) {
                        const Ut = Dt(k.value.value, Z.value.value, dt);
                        return new ol(this, { kind: "constant", value: Ut }, k.parameters);
                      } else
                        return k;
                    }
                    evaluate(k, Z, dt, At, Dt, Ut) {
                      return k.kind === "constant" ? k.value : k.evaluate(Z, dt, At, Dt, Ut);
                    }
                  }
                  class kh extends Ua {
                    possiblyEvaluate(k, Z, dt, At) {
                      if (k.value === void 0)
                        return new ol(this, { kind: "constant", value: void 0 }, Z);
                      if (k.expression.kind === "constant") {
                        const Dt = k.expression.evaluate(Z, null, {}, dt, At), se = k.property.specification.type === "resolvedImage" && typeof Dt != "string" ? Dt.name : Dt, Ie = this._calculate(se, se, se, Z);
                        return new ol(this, { kind: "constant", value: Ie }, Z);
                      } else if (k.expression.kind === "camera") {
                        const Dt = this._calculate(k.expression.evaluate({ zoom: Z.zoom - 1 }), k.expression.evaluate({ zoom: Z.zoom }), k.expression.evaluate({ zoom: Z.zoom + 1 }), Z);
                        return new ol(this, { kind: "constant", value: Dt }, Z);
                      } else
                        return new ol(this, k.expression, Z);
                    }
                    evaluate(k, Z, dt, At, Dt, Ut) {
                      if (k.kind === "source") {
                        const se = k.evaluate(Z, dt, At, Dt, Ut);
                        return this._calculate(se, se, se, Z);
                      } else return k.kind === "composite" ? this._calculate(k.evaluate({ zoom: Math.floor(Z.zoom) - 1 }, dt, At), k.evaluate({ zoom: Math.floor(Z.zoom) }, dt, At), k.evaluate({ zoom: Math.floor(Z.zoom) + 1 }, dt, At), Z) : k.value;
                    }
                    _calculate(k, Z, dt, At) {
                      return At.zoom > At.zoomHistory.lastIntegerZoom ? { from: k, to: Z } : { from: dt, to: Z };
                    }
                    interpolate(k) {
                      return k;
                    }
                  }
                  class ac {
                    constructor(k) {
                      this.specification = k;
                    }
                    possiblyEvaluate(k, Z, dt, At) {
                      if (k.value !== void 0)
                        if (k.expression.kind === "constant") {
                          const Dt = k.expression.evaluate(Z, null, {}, dt, At);
                          return this._calculate(Dt, Dt, Dt, Z);
                        } else
                          return this._calculate(k.expression.evaluate(new Ko(Math.floor(Z.zoom - 1), Z)), k.expression.evaluate(new Ko(Math.floor(Z.zoom), Z)), k.expression.evaluate(new Ko(Math.floor(Z.zoom + 1), Z)), Z);
                    }
                    _calculate(k, Z, dt, At) {
                      return At.zoom > At.zoomHistory.lastIntegerZoom ? { from: k, to: Z } : { from: dt, to: Z };
                    }
                    interpolate(k) {
                      return k;
                    }
                  }
                  class fh {
                    constructor(k) {
                      this.specification = k;
                    }
                    possiblyEvaluate(k, Z, dt, At) {
                      return !!k.expression.evaluate(Z, null, {}, dt, At);
                    }
                    interpolate() {
                      return !1;
                    }
                  }
                  class Ws {
                    constructor(k) {
                      this.properties = k, this.defaultPropertyValues = {}, this.defaultTransitionablePropertyValues = {}, this.defaultTransitioningPropertyValues = {}, this.defaultPossiblyEvaluatedValues = {}, this.overridableProperties = [];
                      for (const Z in k) {
                        const dt = k[Z];
                        dt.specification.overridable && this.overridableProperties.push(Z);
                        const At = this.defaultPropertyValues[Z] = new lh(dt, void 0), Dt = this.defaultTransitionablePropertyValues[Z] = new zd(dt);
                        this.defaultTransitioningPropertyValues[Z] = Dt.untransitioned(), this.defaultPossiblyEvaluatedValues[Z] = At.possiblyEvaluate({});
                      }
                    }
                  }
                  aa("DataDrivenProperty", Ua), aa("DataConstantProperty", ka), aa("CrossFadedDataDrivenProperty", kh), aa("CrossFadedProperty", ac), aa("ColorRampProperty", fh);
                  const rf = "-transition";
                  class oc extends $t {
                    constructor(k, Z) {
                      if (super(), this.id = k.id, this.type = k.type, this._featureFilter = { filter: () => !0, needGeometry: !1 }, k.type !== "custom" && (k = k, this.metadata = k.metadata, this.minzoom = k.minzoom, this.maxzoom = k.maxzoom, k.type !== "background" && (this.source = k.source, this.sourceLayer = k["source-layer"], this.filter = k.filter), Z.layout && (this._unevaluatedLayout = new yu(Z.layout)), Z.paint)) {
                        this._transitionablePaint = new uh(Z.paint);
                        for (const dt in k.paint)
                          this.setPaintProperty(dt, k.paint[dt], { validate: !1 });
                        for (const dt in k.layout)
                          this.setLayoutProperty(dt, k.layout[dt], { validate: !1 });
                        this._transitioningPaint = this._transitionablePaint.untransitioned(), this.paint = new ch(Z.paint);
                      }
                    }
                    getCrossfadeParameters() {
                      return this._crossfadeParameters;
                    }
                    getLayoutProperty(k) {
                      return k === "visibility" ? this.visibility : this._unevaluatedLayout.getValue(k);
                    }
                    setLayoutProperty(k, Z, dt = {}) {
                      if (Z != null) {
                        const At = `layers.${this.id}.layout.${k}`;
                        if (this._validate(Co, At, k, Z, dt))
                          return;
                      }
                      if (k === "visibility") {
                        this.visibility = Z;
                        return;
                      }
                      this._unevaluatedLayout.setValue(k, Z);
                    }
                    getPaintProperty(k) {
                      return k.endsWith(rf) ? this._transitionablePaint.getTransition(k.slice(0, -rf.length)) : this._transitionablePaint.getValue(k);
                    }
                    setPaintProperty(k, Z, dt = {}) {
                      if (Z != null) {
                        const At = `layers.${this.id}.paint.${k}`;
                        if (this._validate(Xo, At, k, Z, dt))
                          return !1;
                      }
                      if (k.endsWith(rf))
                        return this._transitionablePaint.setTransition(k.slice(0, -rf.length), Z || void 0), !1;
                      {
                        const At = this._transitionablePaint._values[k], Dt = At.property.specification["property-type"] === "cross-faded-data-driven", Ut = At.value.isDataDriven(), se = At.value;
                        this._transitionablePaint.setValue(k, Z), this._handleSpecialPaintPropertyUpdate(k);
                        const Ie = this._transitionablePaint._values[k].value;
                        return Ie.isDataDriven() || Ut || Dt || this._handleOverridablePaintPropertyUpdate(k, se, Ie);
                      }
                    }
                    _handleSpecialPaintPropertyUpdate(k) {
                    }
                    // eslint-disable-next-line @typescript-eslint/no-unused-vars
                    _handleOverridablePaintPropertyUpdate(k, Z, dt) {
                      return !1;
                    }
                    isHidden(k) {
                      return this.minzoom && k < this.minzoom || this.maxzoom && k >= this.maxzoom ? !0 : this.visibility === "none";
                    }
                    updateTransitions(k) {
                      this._transitioningPaint = this._transitionablePaint.transitioned(k, this._transitioningPaint);
                    }
                    hasTransition() {
                      return this._transitioningPaint.hasTransition();
                    }
                    recalculate(k, Z) {
                      k.getCrossfadeParameters && (this._crossfadeParameters = k.getCrossfadeParameters()), this._unevaluatedLayout && (this.layout = this._unevaluatedLayout.possiblyEvaluate(k, void 0, Z)), this.paint = this._transitioningPaint.possiblyEvaluate(k, void 0, Z);
                    }
                    serialize() {
                      const k = {
                        id: this.id,
                        type: this.type,
                        source: this.source,
                        "source-layer": this.sourceLayer,
                        metadata: this.metadata,
                        minzoom: this.minzoom,
                        maxzoom: this.maxzoom,
                        filter: this.filter,
                        layout: this._unevaluatedLayout && this._unevaluatedLayout.serialize(),
                        paint: this._transitionablePaint && this._transitionablePaint.serialize()
                      };
                      return this.visibility && (k.layout = k.layout || {}, k.layout.visibility = this.visibility), w(k, (Z, dt) => Z !== void 0 && !(dt === "layout" && !Object.keys(Z).length) && !(dt === "paint" && !Object.keys(Z).length));
                    }
                    _validate(k, Z, dt, At, Dt = {}) {
                      return Dt && Dt.validate === !1 ? !1 : Cs(this, k.call(Ba, {
                        key: Z,
                        layerType: this.type,
                        objectKey: dt,
                        value: At,
                        styleSpec: or,
                        // Workaround for https://github.com/mapbox/mapbox-gl-js/issues/2407
                        style: { glyphs: !0, sprite: !0 }
                      }));
                    }
                    is3D() {
                      return !1;
                    }
                    isTileClipped() {
                      return !1;
                    }
                    hasOffscreenPass() {
                      return !1;
                    }
                    resize() {
                    }
                    isStateDependent() {
                      for (const k in this.paint._values) {
                        const Z = this.paint.get(k);
                        if (!(!(Z instanceof ol) || !Ec(Z.property.specification)) && (Z.value.kind === "source" || Z.value.kind === "composite") && Z.value.isStateDependent)
                          return !0;
                      }
                      return !1;
                    }
                  }
                  const ev = {
                    Int8: Int8Array,
                    Uint8: Uint8Array,
                    Int16: Int16Array,
                    Uint16: Uint16Array,
                    Int32: Int32Array,
                    Uint32: Uint32Array,
                    Float32: Float32Array
                  };
                  class Lc {
                    /**
                     * @param structArray - The StructArray the struct is stored in
                     * @param index - The index of the struct in the StructArray.
                     */
                    constructor(k, Z) {
                      this._structArray = k, this._pos1 = Z * this.size, this._pos2 = this._pos1 / 2, this._pos4 = this._pos1 / 4, this._pos8 = this._pos1 / 8;
                    }
                  }
                  const Od = 128, Pf = 5;
                  class Ts {
                    constructor() {
                      this.isTransferred = !1, this.capacity = -1, this.resize(0);
                    }
                    /**
                     * Serialize a StructArray instance.  Serializes both the raw data and the
                     * metadata needed to reconstruct the StructArray base class during
                     * deserialization.
                     */
                    static serialize(k, Z) {
                      return k._trim(), Z && (k.isTransferred = !0, Z.push(k.arrayBuffer)), {
                        length: k.length,
                        arrayBuffer: k.arrayBuffer
                      };
                    }
                    static deserialize(k) {
                      const Z = Object.create(this.prototype);
                      return Z.arrayBuffer = k.arrayBuffer, Z.length = k.length, Z.capacity = k.arrayBuffer.byteLength / Z.bytesPerElement, Z._refreshViews(), Z;
                    }
                    /**
                     * Resize the array to discard unused capacity.
                     */
                    _trim() {
                      this.length !== this.capacity && (this.capacity = this.length, this.arrayBuffer = this.arrayBuffer.slice(0, this.length * this.bytesPerElement), this._refreshViews());
                    }
                    /**
                     * Resets the length of the array to 0 without de-allocating capacity.
                     */
                    clear() {
                      this.length = 0;
                    }
                    /**
                     * Resize the array.
                     * If `n` is greater than the current length then additional elements with undefined values are added.
                     * If `n` is less than the current length then the array will be reduced to the first `n` elements.
                     * @param n - The new size of the array.
                     */
                    resize(k) {
                      this.reserve(k), this.length = k;
                    }
                    /**
                     * Indicate a planned increase in size, so that any necessary allocation may
                     * be done once, ahead of time.
                     * @param n - The expected size of the array.
                     */
                    reserve(k) {
                      if (k > this.capacity) {
                        this.capacity = Math.max(k, Math.floor(this.capacity * Pf), Od), this.arrayBuffer = new ArrayBuffer(this.capacity * this.bytesPerElement);
                        const Z = this.uint8;
                        this._refreshViews(), Z && this.uint8.set(Z);
                      }
                    }
                    /**
                     * Create TypedArray views for the current ArrayBuffer.
                     */
                    _refreshViews() {
                      throw new Error("_refreshViews() must be implemented by each concrete StructArray layout");
                    }
                  }
                  function Ls(N, k = 1) {
                    let Z = 0, dt = 0;
                    const At = N.map((Ut) => {
                      const se = sc(Ut.type), Ie = Z = gv(Z, Math.max(k, se)), He = Ut.components || 1;
                      return dt = Math.max(dt, se), Z += se * He, {
                        name: Ut.name,
                        type: Ut.type,
                        components: He,
                        offset: Ie
                      };
                    }), Dt = gv(Z, Math.max(dt, k));
                    return {
                      members: At,
                      size: Dt,
                      alignment: k
                    };
                  }
                  function sc(N) {
                    return ev[N].BYTES_PER_ELEMENT;
                  }
                  function gv(N, k) {
                    return Math.ceil(N / k) * k;
                  }
                  class zh extends Ts {
                    _refreshViews() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.int16 = new Int16Array(this.arrayBuffer);
                    }
                    emplaceBack(k, Z) {
                      const dt = this.length;
                      return this.resize(dt + 1), this.emplace(dt, k, Z);
                    }
                    emplace(k, Z, dt) {
                      const At = k * 2;
                      return this.int16[At + 0] = Z, this.int16[At + 1] = dt, k;
                    }
                  }
                  zh.prototype.bytesPerElement = 4, aa("StructArrayLayout2i4", zh);
                  class Bd extends Ts {
                    _refreshViews() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.int16 = new Int16Array(this.arrayBuffer);
                    }
                    emplaceBack(k, Z, dt) {
                      const At = this.length;
                      return this.resize(At + 1), this.emplace(At, k, Z, dt);
                    }
                    emplace(k, Z, dt, At) {
                      const Dt = k * 3;
                      return this.int16[Dt + 0] = Z, this.int16[Dt + 1] = dt, this.int16[Dt + 2] = At, k;
                    }
                  }
                  Bd.prototype.bytesPerElement = 6, aa("StructArrayLayout3i6", Bd);
                  class hd extends Ts {
                    _refreshViews() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.int16 = new Int16Array(this.arrayBuffer);
                    }
                    emplaceBack(k, Z, dt, At) {
                      const Dt = this.length;
                      return this.resize(Dt + 1), this.emplace(Dt, k, Z, dt, At);
                    }
                    emplace(k, Z, dt, At, Dt) {
                      const Ut = k * 4;
                      return this.int16[Ut + 0] = Z, this.int16[Ut + 1] = dt, this.int16[Ut + 2] = At, this.int16[Ut + 3] = Dt, k;
                    }
                  }
                  hd.prototype.bytesPerElement = 8, aa("StructArrayLayout4i8", hd);
                  class Ps extends Ts {
                    _refreshViews() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.int16 = new Int16Array(this.arrayBuffer);
                    }
                    emplaceBack(k, Z, dt, At, Dt, Ut) {
                      const se = this.length;
                      return this.resize(se + 1), this.emplace(se, k, Z, dt, At, Dt, Ut);
                    }
                    emplace(k, Z, dt, At, Dt, Ut, se) {
                      const Ie = k * 6;
                      return this.int16[Ie + 0] = Z, this.int16[Ie + 1] = dt, this.int16[Ie + 2] = At, this.int16[Ie + 3] = Dt, this.int16[Ie + 4] = Ut, this.int16[Ie + 5] = se, k;
                    }
                  }
                  Ps.prototype.bytesPerElement = 12, aa("StructArrayLayout2i4i12", Ps);
                  class mt extends Ts {
                    _refreshViews() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.int16 = new Int16Array(this.arrayBuffer);
                    }
                    emplaceBack(k, Z, dt, At, Dt, Ut) {
                      const se = this.length;
                      return this.resize(se + 1), this.emplace(se, k, Z, dt, At, Dt, Ut);
                    }
                    emplace(k, Z, dt, At, Dt, Ut, se) {
                      const Ie = k * 4, He = k * 8;
                      return this.int16[Ie + 0] = Z, this.int16[Ie + 1] = dt, this.uint8[He + 4] = At, this.uint8[He + 5] = Dt, this.uint8[He + 6] = Ut, this.uint8[He + 7] = se, k;
                    }
                  }
                  mt.prototype.bytesPerElement = 8, aa("StructArrayLayout2i4ub8", mt);
                  class tt extends Ts {
                    _refreshViews() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.float32 = new Float32Array(this.arrayBuffer);
                    }
                    emplaceBack(k, Z) {
                      const dt = this.length;
                      return this.resize(dt + 1), this.emplace(dt, k, Z);
                    }
                    emplace(k, Z, dt) {
                      const At = k * 2;
                      return this.float32[At + 0] = Z, this.float32[At + 1] = dt, k;
                    }
                  }
                  tt.prototype.bytesPerElement = 8, aa("StructArrayLayout2f8", tt);
                  class bt extends Ts {
                    _refreshViews() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.uint16 = new Uint16Array(this.arrayBuffer);
                    }
                    emplaceBack(k, Z, dt, At, Dt, Ut, se, Ie, He, Ke) {
                      const cr = this.length;
                      return this.resize(cr + 1), this.emplace(cr, k, Z, dt, At, Dt, Ut, se, Ie, He, Ke);
                    }
                    emplace(k, Z, dt, At, Dt, Ut, se, Ie, He, Ke, cr) {
                      const Mr = k * 10;
                      return this.uint16[Mr + 0] = Z, this.uint16[Mr + 1] = dt, this.uint16[Mr + 2] = At, this.uint16[Mr + 3] = Dt, this.uint16[Mr + 4] = Ut, this.uint16[Mr + 5] = se, this.uint16[Mr + 6] = Ie, this.uint16[Mr + 7] = He, this.uint16[Mr + 8] = Ke, this.uint16[Mr + 9] = cr, k;
                    }
                  }
                  bt.prototype.bytesPerElement = 20, aa("StructArrayLayout10ui20", bt);
                  class it extends Ts {
                    _refreshViews() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.int16 = new Int16Array(this.arrayBuffer), this.uint16 = new Uint16Array(this.arrayBuffer);
                    }
                    emplaceBack(k, Z, dt, At, Dt, Ut, se, Ie, He, Ke, cr, Mr) {
                      const Vr = this.length;
                      return this.resize(Vr + 1), this.emplace(Vr, k, Z, dt, At, Dt, Ut, se, Ie, He, Ke, cr, Mr);
                    }
                    emplace(k, Z, dt, At, Dt, Ut, se, Ie, He, Ke, cr, Mr, Vr) {
                      const nn = k * 12;
                      return this.int16[nn + 0] = Z, this.int16[nn + 1] = dt, this.int16[nn + 2] = At, this.int16[nn + 3] = Dt, this.uint16[nn + 4] = Ut, this.uint16[nn + 5] = se, this.uint16[nn + 6] = Ie, this.uint16[nn + 7] = He, this.int16[nn + 8] = Ke, this.int16[nn + 9] = cr, this.int16[nn + 10] = Mr, this.int16[nn + 11] = Vr, k;
                    }
                  }
                  it.prototype.bytesPerElement = 24, aa("StructArrayLayout4i4ui4i24", it);
                  class _t extends Ts {
                    _refreshViews() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.float32 = new Float32Array(this.arrayBuffer);
                    }
                    emplaceBack(k, Z, dt) {
                      const At = this.length;
                      return this.resize(At + 1), this.emplace(At, k, Z, dt);
                    }
                    emplace(k, Z, dt, At) {
                      const Dt = k * 3;
                      return this.float32[Dt + 0] = Z, this.float32[Dt + 1] = dt, this.float32[Dt + 2] = At, k;
                    }
                  }
                  _t.prototype.bytesPerElement = 12, aa("StructArrayLayout3f12", _t);
                  class Yt extends Ts {
                    _refreshViews() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.uint32 = new Uint32Array(this.arrayBuffer);
                    }
                    emplaceBack(k) {
                      const Z = this.length;
                      return this.resize(Z + 1), this.emplace(Z, k);
                    }
                    emplace(k, Z) {
                      const dt = k * 1;
                      return this.uint32[dt + 0] = Z, k;
                    }
                  }
                  Yt.prototype.bytesPerElement = 4, aa("StructArrayLayout1ul4", Yt);
                  class le extends Ts {
                    _refreshViews() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.int16 = new Int16Array(this.arrayBuffer), this.uint32 = new Uint32Array(this.arrayBuffer), this.uint16 = new Uint16Array(this.arrayBuffer);
                    }
                    emplaceBack(k, Z, dt, At, Dt, Ut, se, Ie, He) {
                      const Ke = this.length;
                      return this.resize(Ke + 1), this.emplace(Ke, k, Z, dt, At, Dt, Ut, se, Ie, He);
                    }
                    emplace(k, Z, dt, At, Dt, Ut, se, Ie, He, Ke) {
                      const cr = k * 10, Mr = k * 5;
                      return this.int16[cr + 0] = Z, this.int16[cr + 1] = dt, this.int16[cr + 2] = At, this.int16[cr + 3] = Dt, this.int16[cr + 4] = Ut, this.int16[cr + 5] = se, this.uint32[Mr + 3] = Ie, this.uint16[cr + 8] = He, this.uint16[cr + 9] = Ke, k;
                    }
                  }
                  le.prototype.bytesPerElement = 20, aa("StructArrayLayout6i1ul2ui20", le);
                  class Ee extends Ts {
                    _refreshViews() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.int16 = new Int16Array(this.arrayBuffer);
                    }
                    emplaceBack(k, Z, dt, At, Dt, Ut) {
                      const se = this.length;
                      return this.resize(se + 1), this.emplace(se, k, Z, dt, At, Dt, Ut);
                    }
                    emplace(k, Z, dt, At, Dt, Ut, se) {
                      const Ie = k * 6;
                      return this.int16[Ie + 0] = Z, this.int16[Ie + 1] = dt, this.int16[Ie + 2] = At, this.int16[Ie + 3] = Dt, this.int16[Ie + 4] = Ut, this.int16[Ie + 5] = se, k;
                    }
                  }
                  Ee.prototype.bytesPerElement = 12, aa("StructArrayLayout2i2i2i12", Ee);
                  class $e extends Ts {
                    _refreshViews() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.float32 = new Float32Array(this.arrayBuffer), this.int16 = new Int16Array(this.arrayBuffer);
                    }
                    emplaceBack(k, Z, dt, At, Dt) {
                      const Ut = this.length;
                      return this.resize(Ut + 1), this.emplace(Ut, k, Z, dt, At, Dt);
                    }
                    emplace(k, Z, dt, At, Dt, Ut) {
                      const se = k * 4, Ie = k * 8;
                      return this.float32[se + 0] = Z, this.float32[se + 1] = dt, this.float32[se + 2] = At, this.int16[Ie + 6] = Dt, this.int16[Ie + 7] = Ut, k;
                    }
                  }
                  $e.prototype.bytesPerElement = 16, aa("StructArrayLayout2f1f2i16", $e);
                  class vr extends Ts {
                    _refreshViews() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.float32 = new Float32Array(this.arrayBuffer), this.int16 = new Int16Array(this.arrayBuffer);
                    }
                    emplaceBack(k, Z, dt, At, Dt, Ut) {
                      const se = this.length;
                      return this.resize(se + 1), this.emplace(se, k, Z, dt, At, Dt, Ut);
                    }
                    emplace(k, Z, dt, At, Dt, Ut, se) {
                      const Ie = k * 16, He = k * 4, Ke = k * 8;
                      return this.uint8[Ie + 0] = Z, this.uint8[Ie + 1] = dt, this.float32[He + 1] = At, this.float32[He + 2] = Dt, this.int16[Ke + 6] = Ut, this.int16[Ke + 7] = se, k;
                    }
                  }
                  vr.prototype.bytesPerElement = 16, aa("StructArrayLayout2ub2f2i16", vr);
                  class Lr extends Ts {
                    _refreshViews() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.uint16 = new Uint16Array(this.arrayBuffer);
                    }
                    emplaceBack(k, Z, dt) {
                      const At = this.length;
                      return this.resize(At + 1), this.emplace(At, k, Z, dt);
                    }
                    emplace(k, Z, dt, At) {
                      const Dt = k * 3;
                      return this.uint16[Dt + 0] = Z, this.uint16[Dt + 1] = dt, this.uint16[Dt + 2] = At, k;
                    }
                  }
                  Lr.prototype.bytesPerElement = 6, aa("StructArrayLayout3ui6", Lr);
                  class Hr extends Ts {
                    _refreshViews() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.int16 = new Int16Array(this.arrayBuffer), this.uint16 = new Uint16Array(this.arrayBuffer), this.uint32 = new Uint32Array(this.arrayBuffer), this.float32 = new Float32Array(this.arrayBuffer);
                    }
                    emplaceBack(k, Z, dt, At, Dt, Ut, se, Ie, He, Ke, cr, Mr, Vr, nn, gn, jn, ui) {
                      const Ii = this.length;
                      return this.resize(Ii + 1), this.emplace(Ii, k, Z, dt, At, Dt, Ut, se, Ie, He, Ke, cr, Mr, Vr, nn, gn, jn, ui);
                    }
                    emplace(k, Z, dt, At, Dt, Ut, se, Ie, He, Ke, cr, Mr, Vr, nn, gn, jn, ui, Ii) {
                      const Si = k * 24, Pi = k * 12, Wi = k * 48;
                      return this.int16[Si + 0] = Z, this.int16[Si + 1] = dt, this.uint16[Si + 2] = At, this.uint16[Si + 3] = Dt, this.uint32[Pi + 2] = Ut, this.uint32[Pi + 3] = se, this.uint32[Pi + 4] = Ie, this.uint16[Si + 10] = He, this.uint16[Si + 11] = Ke, this.uint16[Si + 12] = cr, this.float32[Pi + 7] = Mr, this.float32[Pi + 8] = Vr, this.uint8[Wi + 36] = nn, this.uint8[Wi + 37] = gn, this.uint8[Wi + 38] = jn, this.uint32[Pi + 10] = ui, this.int16[Si + 22] = Ii, k;
                    }
                  }
                  Hr.prototype.bytesPerElement = 48, aa("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48", Hr);
                  class Ur extends Ts {
                    _refreshViews() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.int16 = new Int16Array(this.arrayBuffer), this.uint16 = new Uint16Array(this.arrayBuffer), this.uint32 = new Uint32Array(this.arrayBuffer), this.float32 = new Float32Array(this.arrayBuffer);
                    }
                    emplaceBack(k, Z, dt, At, Dt, Ut, se, Ie, He, Ke, cr, Mr, Vr, nn, gn, jn, ui, Ii, Si, Pi, Wi, Ma, ja, ho, ro, Ra, no, Ha) {
                      const eo = this.length;
                      return this.resize(eo + 1), this.emplace(eo, k, Z, dt, At, Dt, Ut, se, Ie, He, Ke, cr, Mr, Vr, nn, gn, jn, ui, Ii, Si, Pi, Wi, Ma, ja, ho, ro, Ra, no, Ha);
                    }
                    emplace(k, Z, dt, At, Dt, Ut, se, Ie, He, Ke, cr, Mr, Vr, nn, gn, jn, ui, Ii, Si, Pi, Wi, Ma, ja, ho, ro, Ra, no, Ha, eo) {
                      const $i = k * 32, za = k * 16;
                      return this.int16[$i + 0] = Z, this.int16[$i + 1] = dt, this.int16[$i + 2] = At, this.int16[$i + 3] = Dt, this.int16[$i + 4] = Ut, this.int16[$i + 5] = se, this.int16[$i + 6] = Ie, this.int16[$i + 7] = He, this.uint16[$i + 8] = Ke, this.uint16[$i + 9] = cr, this.uint16[$i + 10] = Mr, this.uint16[$i + 11] = Vr, this.uint16[$i + 12] = nn, this.uint16[$i + 13] = gn, this.uint16[$i + 14] = jn, this.uint16[$i + 15] = ui, this.uint16[$i + 16] = Ii, this.uint16[$i + 17] = Si, this.uint16[$i + 18] = Pi, this.uint16[$i + 19] = Wi, this.uint16[$i + 20] = Ma, this.uint16[$i + 21] = ja, this.uint16[$i + 22] = ho, this.uint32[za + 12] = ro, this.float32[za + 13] = Ra, this.float32[za + 14] = no, this.uint16[$i + 30] = Ha, this.uint16[$i + 31] = eo, k;
                    }
                  }
                  Ur.prototype.bytesPerElement = 64, aa("StructArrayLayout8i15ui1ul2f2ui64", Ur);
                  class hn extends Ts {
                    _refreshViews() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.float32 = new Float32Array(this.arrayBuffer);
                    }
                    emplaceBack(k) {
                      const Z = this.length;
                      return this.resize(Z + 1), this.emplace(Z, k);
                    }
                    emplace(k, Z) {
                      const dt = k * 1;
                      return this.float32[dt + 0] = Z, k;
                    }
                  }
                  hn.prototype.bytesPerElement = 4, aa("StructArrayLayout1f4", hn);
                  class En extends Ts {
                    _refreshViews() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.uint16 = new Uint16Array(this.arrayBuffer), this.float32 = new Float32Array(this.arrayBuffer);
                    }
                    emplaceBack(k, Z, dt) {
                      const At = this.length;
                      return this.resize(At + 1), this.emplace(At, k, Z, dt);
                    }
                    emplace(k, Z, dt, At) {
                      const Dt = k * 6, Ut = k * 3;
                      return this.uint16[Dt + 0] = Z, this.float32[Ut + 1] = dt, this.float32[Ut + 2] = At, k;
                    }
                  }
                  En.prototype.bytesPerElement = 12, aa("StructArrayLayout1ui2f12", En);
                  class Mn extends Ts {
                    _refreshViews() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.uint32 = new Uint32Array(this.arrayBuffer), this.uint16 = new Uint16Array(this.arrayBuffer);
                    }
                    emplaceBack(k, Z, dt) {
                      const At = this.length;
                      return this.resize(At + 1), this.emplace(At, k, Z, dt);
                    }
                    emplace(k, Z, dt, At) {
                      const Dt = k * 2, Ut = k * 4;
                      return this.uint32[Dt + 0] = Z, this.uint16[Ut + 2] = dt, this.uint16[Ut + 3] = At, k;
                    }
                  }
                  Mn.prototype.bytesPerElement = 8, aa("StructArrayLayout1ul2ui8", Mn);
                  class _n extends Ts {
                    _refreshViews() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.uint16 = new Uint16Array(this.arrayBuffer);
                    }
                    emplaceBack(k, Z) {
                      const dt = this.length;
                      return this.resize(dt + 1), this.emplace(dt, k, Z);
                    }
                    emplace(k, Z, dt) {
                      const At = k * 2;
                      return this.uint16[At + 0] = Z, this.uint16[At + 1] = dt, k;
                    }
                  }
                  _n.prototype.bytesPerElement = 4, aa("StructArrayLayout2ui4", _n);
                  class In extends Ts {
                    _refreshViews() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.uint16 = new Uint16Array(this.arrayBuffer);
                    }
                    emplaceBack(k) {
                      const Z = this.length;
                      return this.resize(Z + 1), this.emplace(Z, k);
                    }
                    emplace(k, Z) {
                      const dt = k * 1;
                      return this.uint16[dt + 0] = Z, k;
                    }
                  }
                  In.prototype.bytesPerElement = 2, aa("StructArrayLayout1ui2", In);
                  class Kn extends Ts {
                    _refreshViews() {
                      this.uint8 = new Uint8Array(this.arrayBuffer), this.float32 = new Float32Array(this.arrayBuffer);
                    }
                    emplaceBack(k, Z, dt, At) {
                      const Dt = this.length;
                      return this.resize(Dt + 1), this.emplace(Dt, k, Z, dt, At);
                    }
                    emplace(k, Z, dt, At, Dt) {
                      const Ut = k * 4;
                      return this.float32[Ut + 0] = Z, this.float32[Ut + 1] = dt, this.float32[Ut + 2] = At, this.float32[Ut + 3] = Dt, k;
                    }
                  }
                  Kn.prototype.bytesPerElement = 16, aa("StructArrayLayout4f16", Kn);
                  class xi extends Lc {
                    get anchorPointX() {
                      return this._structArray.int16[this._pos2 + 0];
                    }
                    get anchorPointY() {
                      return this._structArray.int16[this._pos2 + 1];
                    }
                    get x1() {
                      return this._structArray.int16[this._pos2 + 2];
                    }
                    get y1() {
                      return this._structArray.int16[this._pos2 + 3];
                    }
                    get x2() {
                      return this._structArray.int16[this._pos2 + 4];
                    }
                    get y2() {
                      return this._structArray.int16[this._pos2 + 5];
                    }
                    get featureIndex() {
                      return this._structArray.uint32[this._pos4 + 3];
                    }
                    get sourceLayerIndex() {
                      return this._structArray.uint16[this._pos2 + 8];
                    }
                    get bucketIndex() {
                      return this._structArray.uint16[this._pos2 + 9];
                    }
                    get anchorPoint() {
                      return new u(this.anchorPointX, this.anchorPointY);
                    }
                  }
                  xi.prototype.size = 20;
                  class Ei extends le {
                    /**
                     * Return the CollisionBoxStruct at the given location in the array.
                     * @param index The index of the element.
                     */
                    get(k) {
                      return new xi(this, k);
                    }
                  }
                  aa("CollisionBoxArray", Ei);
                  class zi extends Lc {
                    get anchorX() {
                      return this._structArray.int16[this._pos2 + 0];
                    }
                    get anchorY() {
                      return this._structArray.int16[this._pos2 + 1];
                    }
                    get glyphStartIndex() {
                      return this._structArray.uint16[this._pos2 + 2];
                    }
                    get numGlyphs() {
                      return this._structArray.uint16[this._pos2 + 3];
                    }
                    get vertexStartIndex() {
                      return this._structArray.uint32[this._pos4 + 2];
                    }
                    get lineStartIndex() {
                      return this._structArray.uint32[this._pos4 + 3];
                    }
                    get lineLength() {
                      return this._structArray.uint32[this._pos4 + 4];
                    }
                    get segment() {
                      return this._structArray.uint16[this._pos2 + 10];
                    }
                    get lowerSize() {
                      return this._structArray.uint16[this._pos2 + 11];
                    }
                    get upperSize() {
                      return this._structArray.uint16[this._pos2 + 12];
                    }
                    get lineOffsetX() {
                      return this._structArray.float32[this._pos4 + 7];
                    }
                    get lineOffsetY() {
                      return this._structArray.float32[this._pos4 + 8];
                    }
                    get writingMode() {
                      return this._structArray.uint8[this._pos1 + 36];
                    }
                    get placedOrientation() {
                      return this._structArray.uint8[this._pos1 + 37];
                    }
                    set placedOrientation(k) {
                      this._structArray.uint8[this._pos1 + 37] = k;
                    }
                    get hidden() {
                      return this._structArray.uint8[this._pos1 + 38];
                    }
                    set hidden(k) {
                      this._structArray.uint8[this._pos1 + 38] = k;
                    }
                    get crossTileID() {
                      return this._structArray.uint32[this._pos4 + 10];
                    }
                    set crossTileID(k) {
                      this._structArray.uint32[this._pos4 + 10] = k;
                    }
                    get associatedIconIndex() {
                      return this._structArray.int16[this._pos2 + 22];
                    }
                  }
                  zi.prototype.size = 48;
                  class Vi extends Hr {
                    /**
                     * Return the PlacedSymbolStruct at the given location in the array.
                     * @param index The index of the element.
                     */
                    get(k) {
                      return new zi(this, k);
                    }
                  }
                  aa("PlacedSymbolArray", Vi);
                  class Di extends Lc {
                    get anchorX() {
                      return this._structArray.int16[this._pos2 + 0];
                    }
                    get anchorY() {
                      return this._structArray.int16[this._pos2 + 1];
                    }
                    get rightJustifiedTextSymbolIndex() {
                      return this._structArray.int16[this._pos2 + 2];
                    }
                    get centerJustifiedTextSymbolIndex() {
                      return this._structArray.int16[this._pos2 + 3];
                    }
                    get leftJustifiedTextSymbolIndex() {
                      return this._structArray.int16[this._pos2 + 4];
                    }
                    get verticalPlacedTextSymbolIndex() {
                      return this._structArray.int16[this._pos2 + 5];
                    }
                    get placedIconSymbolIndex() {
                      return this._structArray.int16[this._pos2 + 6];
                    }
                    get verticalPlacedIconSymbolIndex() {
                      return this._structArray.int16[this._pos2 + 7];
                    }
                    get key() {
                      return this._structArray.uint16[this._pos2 + 8];
                    }
                    get textBoxStartIndex() {
                      return this._structArray.uint16[this._pos2 + 9];
                    }
                    get textBoxEndIndex() {
                      return this._structArray.uint16[this._pos2 + 10];
                    }
                    get verticalTextBoxStartIndex() {
                      return this._structArray.uint16[this._pos2 + 11];
                    }
                    get verticalTextBoxEndIndex() {
                      return this._structArray.uint16[this._pos2 + 12];
                    }
                    get iconBoxStartIndex() {
                      return this._structArray.uint16[this._pos2 + 13];
                    }
                    get iconBoxEndIndex() {
                      return this._structArray.uint16[this._pos2 + 14];
                    }
                    get verticalIconBoxStartIndex() {
                      return this._structArray.uint16[this._pos2 + 15];
                    }
                    get verticalIconBoxEndIndex() {
                      return this._structArray.uint16[this._pos2 + 16];
                    }
                    get featureIndex() {
                      return this._structArray.uint16[this._pos2 + 17];
                    }
                    get numHorizontalGlyphVertices() {
                      return this._structArray.uint16[this._pos2 + 18];
                    }
                    get numVerticalGlyphVertices() {
                      return this._structArray.uint16[this._pos2 + 19];
                    }
                    get numIconVertices() {
                      return this._structArray.uint16[this._pos2 + 20];
                    }
                    get numVerticalIconVertices() {
                      return this._structArray.uint16[this._pos2 + 21];
                    }
                    get useRuntimeCollisionCircles() {
                      return this._structArray.uint16[this._pos2 + 22];
                    }
                    get crossTileID() {
                      return this._structArray.uint32[this._pos4 + 12];
                    }
                    set crossTileID(k) {
                      this._structArray.uint32[this._pos4 + 12] = k;
                    }
                    get textBoxScale() {
                      return this._structArray.float32[this._pos4 + 13];
                    }
                    get collisionCircleDiameter() {
                      return this._structArray.float32[this._pos4 + 14];
                    }
                    get textAnchorOffsetStartIndex() {
                      return this._structArray.uint16[this._pos2 + 30];
                    }
                    get textAnchorOffsetEndIndex() {
                      return this._structArray.uint16[this._pos2 + 31];
                    }
                  }
                  Di.prototype.size = 64;
                  class Hi extends Ur {
                    /**
                     * Return the SymbolInstanceStruct at the given location in the array.
                     * @param index The index of the element.
                     */
                    get(k) {
                      return new Di(this, k);
                    }
                  }
                  aa("SymbolInstanceArray", Hi);
                  class Ki extends hn {
                    getoffsetX(k) {
                      return this.float32[k * 1 + 0];
                    }
                  }
                  aa("GlyphOffsetArray", Ki);
                  class na extends Bd {
                    getx(k) {
                      return this.int16[k * 3 + 0];
                    }
                    gety(k) {
                      return this.int16[k * 3 + 1];
                    }
                    gettileUnitDistanceFromAnchor(k) {
                      return this.int16[k * 3 + 2];
                    }
                  }
                  aa("SymbolLineVertexArray", na);
                  class da extends Lc {
                    get textAnchor() {
                      return this._structArray.uint16[this._pos2 + 0];
                    }
                    get textOffset0() {
                      return this._structArray.float32[this._pos4 + 1];
                    }
                    get textOffset1() {
                      return this._structArray.float32[this._pos4 + 2];
                    }
                  }
                  da.prototype.size = 12;
                  class la extends En {
                    /**
                     * Return the TextAnchorOffsetStruct at the given location in the array.
                     * @param index The index of the element.
                     */
                    get(k) {
                      return new da(this, k);
                    }
                  }
                  aa("TextAnchorOffsetArray", la);
                  class Da extends Lc {
                    get featureIndex() {
                      return this._structArray.uint32[this._pos4 + 0];
                    }
                    get sourceLayerIndex() {
                      return this._structArray.uint16[this._pos2 + 2];
                    }
                    get bucketIndex() {
                      return this._structArray.uint16[this._pos2 + 3];
                    }
                  }
                  Da.prototype.size = 8;
                  class wo extends Mn {
                    /**
                     * Return the FeatureIndexStruct at the given location in the array.
                     * @param index The index of the element.
                     */
                    get(k) {
                      return new Da(this, k);
                    }
                  }
                  aa("FeatureIndexArray", wo);
                  class uo extends zh {
                  }
                  class _a extends Bd {
                  }
                  class co extends hd {
                  }
                  class $a extends zh {
                  }
                  class po extends zh {
                  }
                  class Mo extends Ps {
                  }
                  class Zo extends mt {
                  }
                  class _o extends tt {
                  }
                  class ko extends bt {
                  }
                  class to extends it {
                  }
                  class Eo extends _t {
                  }
                  class As extends Yt {
                  }
                  class js extends Ee {
                  }
                  class lc extends $e {
                  }
                  class uc extends vr {
                  }
                  class Pl extends Lr {
                  }
                  class au extends Lr {
                  }
                  class nf extends _n {
                  }
                  class cc extends In {
                  }
                  const Zl = Ls([
                    { name: "a_pos", components: 2, type: "Int16" }
                  ], 4), { members: fc, size: Ou, alignment: Il } = Zl;
                  class Qo {
                    constructor(k = []) {
                      this.segments = k;
                    }
                    prepareSegment(k, Z, dt, At) {
                      let Dt = this.segments[this.segments.length - 1];
                      return k > Qo.MAX_VERTEX_ARRAY_LENGTH && U(`Max vertices per segment is ${Qo.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${k}`), (!Dt || Dt.vertexLength + k > Qo.MAX_VERTEX_ARRAY_LENGTH || Dt.sortKey !== At) && (Dt = {
                        vertexOffset: Z.length,
                        primitiveOffset: dt.length,
                        vertexLength: 0,
                        primitiveLength: 0
                      }, At !== void 0 && (Dt.sortKey = At), this.segments.push(Dt)), Dt;
                    }
                    get() {
                      return this.segments;
                    }
                    destroy() {
                      for (const k of this.segments)
                        for (const Z in k.vaos)
                          k.vaos[Z].destroy();
                    }
                    static simpleSegment(k, Z, dt, At) {
                      return new Qo([{
                        vertexOffset: k,
                        primitiveOffset: Z,
                        vertexLength: dt,
                        primitiveLength: At,
                        vaos: {},
                        sortKey: 0
                      }]);
                    }
                  }
                  Qo.MAX_VERTEX_ARRAY_LENGTH = Math.pow(2, 16) - 1, aa("SegmentVector", Qo);
                  function af(N, k) {
                    return N = f(Math.floor(N), 0, 255), k = f(Math.floor(k), 0, 255), 256 * N + k;
                  }
                  const mu = Ls([
                    // [tl.x, tl.y, br.x, br.y]
                    { name: "a_pattern_from", components: 4, type: "Uint16" },
                    { name: "a_pattern_to", components: 4, type: "Uint16" },
                    { name: "a_pixel_ratio_from", components: 1, type: "Uint16" },
                    { name: "a_pixel_ratio_to", components: 1, type: "Uint16" }
                  ]);
                  var Fh = { exports: {} }, hh = { exports: {} };
                  (function(N) {
                    function k(Z, dt) {
                      var At, Dt, Ut, se, Ie, He, Ke, cr;
                      for (At = Z.length & 3, Dt = Z.length - At, Ut = dt, Ie = 3432918353, He = 461845907, cr = 0; cr < Dt; )
                        Ke = Z.charCodeAt(cr) & 255 | (Z.charCodeAt(++cr) & 255) << 8 | (Z.charCodeAt(++cr) & 255) << 16 | (Z.charCodeAt(++cr) & 255) << 24, ++cr, Ke = (Ke & 65535) * Ie + (((Ke >>> 16) * Ie & 65535) << 16) & 4294967295, Ke = Ke << 15 | Ke >>> 17, Ke = (Ke & 65535) * He + (((Ke >>> 16) * He & 65535) << 16) & 4294967295, Ut ^= Ke, Ut = Ut << 13 | Ut >>> 19, se = (Ut & 65535) * 5 + (((Ut >>> 16) * 5 & 65535) << 16) & 4294967295, Ut = (se & 65535) + 27492 + (((se >>> 16) + 58964 & 65535) << 16);
                      switch (Ke = 0, At) {
                        case 3:
                          Ke ^= (Z.charCodeAt(cr + 2) & 255) << 16;
                        case 2:
                          Ke ^= (Z.charCodeAt(cr + 1) & 255) << 8;
                        case 1:
                          Ke ^= Z.charCodeAt(cr) & 255, Ke = (Ke & 65535) * Ie + (((Ke >>> 16) * Ie & 65535) << 16) & 4294967295, Ke = Ke << 15 | Ke >>> 17, Ke = (Ke & 65535) * He + (((Ke >>> 16) * He & 65535) << 16) & 4294967295, Ut ^= Ke;
                      }
                      return Ut ^= Z.length, Ut ^= Ut >>> 16, Ut = (Ut & 65535) * 2246822507 + (((Ut >>> 16) * 2246822507 & 65535) << 16) & 4294967295, Ut ^= Ut >>> 13, Ut = (Ut & 65535) * 3266489909 + (((Ut >>> 16) * 3266489909 & 65535) << 16) & 4294967295, Ut ^= Ut >>> 16, Ut >>> 0;
                    }
                    N.exports = k;
                  })(hh);
                  var Is = hh.exports, Nd = { exports: {} };
                  (function(N) {
                    function k(Z, dt) {
                      for (var At = Z.length, Dt = dt ^ At, Ut = 0, se; At >= 4; )
                        se = Z.charCodeAt(Ut) & 255 | (Z.charCodeAt(++Ut) & 255) << 8 | (Z.charCodeAt(++Ut) & 255) << 16 | (Z.charCodeAt(++Ut) & 255) << 24, se = (se & 65535) * 1540483477 + (((se >>> 16) * 1540483477 & 65535) << 16), se ^= se >>> 24, se = (se & 65535) * 1540483477 + (((se >>> 16) * 1540483477 & 65535) << 16), Dt = (Dt & 65535) * 1540483477 + (((Dt >>> 16) * 1540483477 & 65535) << 16) ^ se, At -= 4, ++Ut;
                      switch (At) {
                        case 3:
                          Dt ^= (Z.charCodeAt(Ut + 2) & 255) << 16;
                        case 2:
                          Dt ^= (Z.charCodeAt(Ut + 1) & 255) << 8;
                        case 1:
                          Dt ^= Z.charCodeAt(Ut) & 255, Dt = (Dt & 65535) * 1540483477 + (((Dt >>> 16) * 1540483477 & 65535) << 16);
                      }
                      return Dt ^= Dt >>> 13, Dt = (Dt & 65535) * 1540483477 + (((Dt >>> 16) * 1540483477 & 65535) << 16), Dt ^= Dt >>> 15, Dt >>> 0;
                    }
                    N.exports = k;
                  })(Nd);
                  var Ud = Nd.exports, Rl = Is, dd = Ud;
                  Fh.exports = Rl, Fh.exports.murmur3 = Rl, Fh.exports.murmur2 = dd;
                  var rv = Fh.exports, vd = /* @__PURE__ */ T(rv);
                  class Oh {
                    constructor() {
                      this.ids = [], this.positions = [], this.indexed = !1;
                    }
                    add(k, Z, dt, At) {
                      this.ids.push(dh(k)), this.positions.push(Z, dt, At);
                    }
                    getPositions(k) {
                      if (!this.indexed)
                        throw new Error("Trying to get index, but feature positions are not indexed");
                      const Z = dh(k);
                      let dt = 0, At = this.ids.length - 1;
                      for (; dt < At; ) {
                        const Ut = dt + At >> 1;
                        this.ids[Ut] >= Z ? At = Ut : dt = Ut + 1;
                      }
                      const Dt = [];
                      for (; this.ids[dt] === Z; ) {
                        const Ut = this.positions[3 * dt], se = this.positions[3 * dt + 1], Ie = this.positions[3 * dt + 2];
                        Dt.push({ index: Ut, start: se, end: Ie }), dt++;
                      }
                      return Dt;
                    }
                    static serialize(k, Z) {
                      const dt = new Float64Array(k.ids), At = new Uint32Array(k.positions);
                      return vh(dt, At, 0, dt.length - 1), Z && Z.push(dt.buffer, At.buffer), { ids: dt, positions: At };
                    }
                    static deserialize(k) {
                      const Z = new Oh();
                      return Z.ids = k.ids, Z.positions = k.positions, Z.indexed = !0, Z;
                    }
                  }
                  function dh(N) {
                    const k = +N;
                    return !isNaN(k) && k <= Number.MAX_SAFE_INTEGER ? k : vd(String(N));
                  }
                  function vh(N, k, Z, dt) {
                    for (; Z < dt; ) {
                      const At = N[Z + dt >> 1];
                      let Dt = Z - 1, Ut = dt + 1;
                      for (; ; ) {
                        do
                          Dt++;
                        while (N[Dt] < At);
                        do
                          Ut--;
                        while (N[Ut] > At);
                        if (Dt >= Ut)
                          break;
                        ps(N, Dt, Ut), ps(k, 3 * Dt, 3 * Ut), ps(k, 3 * Dt + 1, 3 * Ut + 1), ps(k, 3 * Dt + 2, 3 * Ut + 2);
                      }
                      Ut - Z < dt - Ut ? (vh(N, k, Z, Ut), Z = Ut + 1) : (vh(N, k, Ut + 1, dt), dt = Ut);
                    }
                  }
                  function ps(N, k, Z) {
                    const dt = N[k];
                    N[k] = N[Z], N[Z] = dt;
                  }
                  aa("FeaturePositionMap", Oh);
                  class $s {
                    constructor(k, Z) {
                      this.gl = k.gl, this.location = Z;
                    }
                  }
                  class xu extends $s {
                    constructor(k, Z) {
                      super(k, Z), this.current = 0;
                    }
                    set(k) {
                      this.current !== k && (this.current = k, this.gl.uniform1i(this.location, k));
                    }
                  }
                  class Bh extends $s {
                    constructor(k, Z) {
                      super(k, Z), this.current = 0;
                    }
                    set(k) {
                      this.current !== k && (this.current = k, this.gl.uniform1f(this.location, k));
                    }
                  }
                  class yv extends $s {
                    constructor(k, Z) {
                      super(k, Z), this.current = [0, 0];
                    }
                    set(k) {
                      (k[0] !== this.current[0] || k[1] !== this.current[1]) && (this.current = k, this.gl.uniform2f(this.location, k[0], k[1]));
                    }
                  }
                  class kp extends $s {
                    constructor(k, Z) {
                      super(k, Z), this.current = [0, 0, 0];
                    }
                    set(k) {
                      (k[0] !== this.current[0] || k[1] !== this.current[1] || k[2] !== this.current[2]) && (this.current = k, this.gl.uniform3f(this.location, k[0], k[1], k[2]));
                    }
                  }
                  class Gv extends $s {
                    constructor(k, Z) {
                      super(k, Z), this.current = [0, 0, 0, 0];
                    }
                    set(k) {
                      (k[0] !== this.current[0] || k[1] !== this.current[1] || k[2] !== this.current[2] || k[3] !== this.current[3]) && (this.current = k, this.gl.uniform4f(this.location, k[0], k[1], k[2], k[3]));
                    }
                  }
                  class pd extends $s {
                    constructor(k, Z) {
                      super(k, Z), this.current = so.transparent;
                    }
                    set(k) {
                      (k.r !== this.current.r || k.g !== this.current.g || k.b !== this.current.b || k.a !== this.current.a) && (this.current = k, this.gl.uniform4f(this.location, k.r, k.g, k.b, k.a));
                    }
                  }
                  const zp = new Float32Array(16);
                  class nv extends $s {
                    constructor(k, Z) {
                      super(k, Z), this.current = zp;
                    }
                    set(k) {
                      if (k[12] !== this.current[12] || k[0] !== this.current[0]) {
                        this.current = k, this.gl.uniformMatrix4fv(this.location, !1, k);
                        return;
                      }
                      for (let Z = 1; Z < 16; Z++)
                        if (k[Z] !== this.current[Z]) {
                          this.current = k, this.gl.uniformMatrix4fv(this.location, !1, k);
                          break;
                        }
                    }
                  }
                  function Ot(N) {
                    return [
                      af(255 * N.r, 255 * N.g),
                      af(255 * N.b, 255 * N.a)
                    ];
                  }
                  class R {
                    constructor(k, Z, dt) {
                      this.value = k, this.uniformNames = Z.map((At) => `u_${At}`), this.type = dt;
                    }
                    setUniform(k, Z, dt) {
                      k.set(dt.constantOr(this.value));
                    }
                    getBinding(k, Z, dt) {
                      return this.type === "color" ? new pd(k, Z) : new Bh(k, Z);
                    }
                  }
                  class J {
                    constructor(k, Z) {
                      this.uniformNames = Z.map((dt) => `u_${dt}`), this.patternFrom = null, this.patternTo = null, this.pixelRatioFrom = 1, this.pixelRatioTo = 1;
                    }
                    setConstantPatternPositions(k, Z) {
                      this.pixelRatioFrom = Z.pixelRatio, this.pixelRatioTo = k.pixelRatio, this.patternFrom = Z.tlbr, this.patternTo = k.tlbr;
                    }
                    setUniform(k, Z, dt, At) {
                      const Dt = At === "u_pattern_to" ? this.patternTo : At === "u_pattern_from" ? this.patternFrom : At === "u_pixel_ratio_to" ? this.pixelRatioTo : At === "u_pixel_ratio_from" ? this.pixelRatioFrom : null;
                      Dt && k.set(Dt);
                    }
                    getBinding(k, Z, dt) {
                      return dt.substr(0, 9) === "u_pattern" ? new Gv(k, Z) : new Bh(k, Z);
                    }
                  }
                  class yt {
                    constructor(k, Z, dt, At) {
                      this.expression = k, this.type = dt, this.maxValue = 0, this.paintVertexAttributes = Z.map((Dt) => ({
                        name: `a_${Dt}`,
                        type: "Float32",
                        components: dt === "color" ? 2 : 1,
                        offset: 0
                      })), this.paintVertexArray = new At();
                    }
                    populatePaintArray(k, Z, dt, At, Dt) {
                      const Ut = this.paintVertexArray.length, se = this.expression.evaluate(new Ko(0), Z, {}, At, [], Dt);
                      this.paintVertexArray.resize(k), this._setPaintValue(Ut, k, se);
                    }
                    updatePaintArray(k, Z, dt, At) {
                      const Dt = this.expression.evaluate({ zoom: 0 }, dt, At);
                      this._setPaintValue(k, Z, Dt);
                    }
                    _setPaintValue(k, Z, dt) {
                      if (this.type === "color") {
                        const At = Ot(dt);
                        for (let Dt = k; Dt < Z; Dt++)
                          this.paintVertexArray.emplace(Dt, At[0], At[1]);
                      } else {
                        for (let At = k; At < Z; At++)
                          this.paintVertexArray.emplace(At, dt);
                        this.maxValue = Math.max(this.maxValue, Math.abs(dt));
                      }
                    }
                    upload(k) {
                      this.paintVertexArray && this.paintVertexArray.arrayBuffer && (this.paintVertexBuffer && this.paintVertexBuffer.buffer ? this.paintVertexBuffer.updateData(this.paintVertexArray) : this.paintVertexBuffer = k.createVertexBuffer(this.paintVertexArray, this.paintVertexAttributes, this.expression.isStateDependent));
                    }
                    destroy() {
                      this.paintVertexBuffer && this.paintVertexBuffer.destroy();
                    }
                  }
                  class Tt {
                    constructor(k, Z, dt, At, Dt, Ut) {
                      this.expression = k, this.uniformNames = Z.map((se) => `u_${se}_t`), this.type = dt, this.useIntegerZoom = At, this.zoom = Dt, this.maxValue = 0, this.paintVertexAttributes = Z.map((se) => ({
                        name: `a_${se}`,
                        type: "Float32",
                        components: dt === "color" ? 4 : 2,
                        offset: 0
                      })), this.paintVertexArray = new Ut();
                    }
                    populatePaintArray(k, Z, dt, At, Dt) {
                      const Ut = this.expression.evaluate(new Ko(this.zoom), Z, {}, At, [], Dt), se = this.expression.evaluate(new Ko(this.zoom + 1), Z, {}, At, [], Dt), Ie = this.paintVertexArray.length;
                      this.paintVertexArray.resize(k), this._setPaintValue(Ie, k, Ut, se);
                    }
                    updatePaintArray(k, Z, dt, At) {
                      const Dt = this.expression.evaluate({ zoom: this.zoom }, dt, At), Ut = this.expression.evaluate({ zoom: this.zoom + 1 }, dt, At);
                      this._setPaintValue(k, Z, Dt, Ut);
                    }
                    _setPaintValue(k, Z, dt, At) {
                      if (this.type === "color") {
                        const Dt = Ot(dt), Ut = Ot(At);
                        for (let se = k; se < Z; se++)
                          this.paintVertexArray.emplace(se, Dt[0], Dt[1], Ut[0], Ut[1]);
                      } else {
                        for (let Dt = k; Dt < Z; Dt++)
                          this.paintVertexArray.emplace(Dt, dt, At);
                        this.maxValue = Math.max(this.maxValue, Math.abs(dt), Math.abs(At));
                      }
                    }
                    upload(k) {
                      this.paintVertexArray && this.paintVertexArray.arrayBuffer && (this.paintVertexBuffer && this.paintVertexBuffer.buffer ? this.paintVertexBuffer.updateData(this.paintVertexArray) : this.paintVertexBuffer = k.createVertexBuffer(this.paintVertexArray, this.paintVertexAttributes, this.expression.isStateDependent));
                    }
                    destroy() {
                      this.paintVertexBuffer && this.paintVertexBuffer.destroy();
                    }
                    setUniform(k, Z) {
                      const dt = this.useIntegerZoom ? Math.floor(Z.zoom) : Z.zoom, At = f(this.expression.interpolationFactor(dt, this.zoom, this.zoom + 1), 0, 1);
                      k.set(At);
                    }
                    getBinding(k, Z, dt) {
                      return new Bh(k, Z);
                    }
                  }
                  class Nt {
                    constructor(k, Z, dt, At, Dt, Ut) {
                      this.expression = k, this.type = Z, this.useIntegerZoom = dt, this.zoom = At, this.layerId = Ut, this.zoomInPaintVertexArray = new Dt(), this.zoomOutPaintVertexArray = new Dt();
                    }
                    populatePaintArray(k, Z, dt) {
                      const At = this.zoomInPaintVertexArray.length;
                      this.zoomInPaintVertexArray.resize(k), this.zoomOutPaintVertexArray.resize(k), this._setPaintValues(At, k, Z.patterns && Z.patterns[this.layerId], dt);
                    }
                    updatePaintArray(k, Z, dt, At, Dt) {
                      this._setPaintValues(k, Z, dt.patterns && dt.patterns[this.layerId], Dt);
                    }
                    _setPaintValues(k, Z, dt, At) {
                      if (!At || !dt)
                        return;
                      const { min: Dt, mid: Ut, max: se } = dt, Ie = At[Dt], He = At[Ut], Ke = At[se];
                      if (!(!Ie || !He || !Ke))
                        for (let cr = k; cr < Z; cr++)
                          this.zoomInPaintVertexArray.emplace(cr, He.tl[0], He.tl[1], He.br[0], He.br[1], Ie.tl[0], Ie.tl[1], Ie.br[0], Ie.br[1], He.pixelRatio, Ie.pixelRatio), this.zoomOutPaintVertexArray.emplace(cr, He.tl[0], He.tl[1], He.br[0], He.br[1], Ke.tl[0], Ke.tl[1], Ke.br[0], Ke.br[1], He.pixelRatio, Ke.pixelRatio);
                    }
                    upload(k) {
                      this.zoomInPaintVertexArray && this.zoomInPaintVertexArray.arrayBuffer && this.zoomOutPaintVertexArray && this.zoomOutPaintVertexArray.arrayBuffer && (this.zoomInPaintVertexBuffer = k.createVertexBuffer(this.zoomInPaintVertexArray, mu.members, this.expression.isStateDependent), this.zoomOutPaintVertexBuffer = k.createVertexBuffer(this.zoomOutPaintVertexArray, mu.members, this.expression.isStateDependent));
                    }
                    destroy() {
                      this.zoomOutPaintVertexBuffer && this.zoomOutPaintVertexBuffer.destroy(), this.zoomInPaintVertexBuffer && this.zoomInPaintVertexBuffer.destroy();
                    }
                  }
                  class be {
                    constructor(k, Z, dt) {
                      this.binders = {}, this._buffers = [];
                      const At = [];
                      for (const Dt in k.paint._values) {
                        if (!dt(Dt))
                          continue;
                        const Ut = k.paint.get(Dt);
                        if (!(Ut instanceof ol) || !Ec(Ut.property.specification))
                          continue;
                        const se = je(Dt, k.type), Ie = Ut.value, He = Ut.property.specification.type, Ke = Ut.property.useIntegerZoom, cr = Ut.property.specification["property-type"], Mr = cr === "cross-faded" || cr === "cross-faded-data-driven";
                        if (Ie.kind === "constant")
                          this.binders[Dt] = Mr ? new J(Ie.value, se) : new R(Ie.value, se, He), At.push(`/u_${Dt}`);
                        else if (Ie.kind === "source" || Mr) {
                          const Vr = br(Dt, He, "source");
                          this.binders[Dt] = Mr ? new Nt(Ie, He, Ke, Z, Vr, k.id) : new yt(Ie, se, He, Vr), At.push(`/a_${Dt}`);
                        } else {
                          const Vr = br(Dt, He, "composite");
                          this.binders[Dt] = new Tt(Ie, se, He, Ke, Z, Vr), At.push(`/z_${Dt}`);
                        }
                      }
                      this.cacheKey = At.sort().join("");
                    }
                    getMaxValue(k) {
                      const Z = this.binders[k];
                      return Z instanceof yt || Z instanceof Tt ? Z.maxValue : 0;
                    }
                    populatePaintArrays(k, Z, dt, At, Dt) {
                      for (const Ut in this.binders) {
                        const se = this.binders[Ut];
                        (se instanceof yt || se instanceof Tt || se instanceof Nt) && se.populatePaintArray(k, Z, dt, At, Dt);
                      }
                    }
                    setConstantPatternPositions(k, Z) {
                      for (const dt in this.binders) {
                        const At = this.binders[dt];
                        At instanceof J && At.setConstantPatternPositions(k, Z);
                      }
                    }
                    updatePaintArrays(k, Z, dt, At, Dt) {
                      let Ut = !1;
                      for (const se in k) {
                        const Ie = Z.getPositions(se);
                        for (const He of Ie) {
                          const Ke = dt.feature(He.index);
                          for (const cr in this.binders) {
                            const Mr = this.binders[cr];
                            if ((Mr instanceof yt || Mr instanceof Tt || Mr instanceof Nt) && Mr.expression.isStateDependent === !0) {
                              const Vr = At.paint.get(cr);
                              Mr.expression = Vr.value, Mr.updatePaintArray(He.start, He.end, Ke, k[se], Dt), Ut = !0;
                            }
                          }
                        }
                      }
                      return Ut;
                    }
                    defines() {
                      const k = [];
                      for (const Z in this.binders) {
                        const dt = this.binders[Z];
                        (dt instanceof R || dt instanceof J) && k.push(...dt.uniformNames.map((At) => `#define HAS_UNIFORM_${At}`));
                      }
                      return k;
                    }
                    getBinderAttributes() {
                      const k = [];
                      for (const Z in this.binders) {
                        const dt = this.binders[Z];
                        if (dt instanceof yt || dt instanceof Tt)
                          for (let At = 0; At < dt.paintVertexAttributes.length; At++)
                            k.push(dt.paintVertexAttributes[At].name);
                        else if (dt instanceof Nt)
                          for (let At = 0; At < mu.members.length; At++)
                            k.push(mu.members[At].name);
                      }
                      return k;
                    }
                    getBinderUniforms() {
                      const k = [];
                      for (const Z in this.binders) {
                        const dt = this.binders[Z];
                        if (dt instanceof R || dt instanceof J || dt instanceof Tt)
                          for (const At of dt.uniformNames)
                            k.push(At);
                      }
                      return k;
                    }
                    getPaintVertexBuffers() {
                      return this._buffers;
                    }
                    getUniforms(k, Z) {
                      const dt = [];
                      for (const At in this.binders) {
                        const Dt = this.binders[At];
                        if (Dt instanceof R || Dt instanceof J || Dt instanceof Tt) {
                          for (const Ut of Dt.uniformNames)
                            if (Z[Ut]) {
                              const se = Dt.getBinding(k, Z[Ut], Ut);
                              dt.push({ name: Ut, property: At, binding: se });
                            }
                        }
                      }
                      return dt;
                    }
                    setUniforms(k, Z, dt, At) {
                      for (const { name: Dt, property: Ut, binding: se } of Z)
                        this.binders[Ut].setUniform(se, At, dt.get(Ut), Dt);
                    }
                    updatePaintBuffers(k) {
                      this._buffers = [];
                      for (const Z in this.binders) {
                        const dt = this.binders[Z];
                        if (k && dt instanceof Nt) {
                          const At = k.fromScale === 2 ? dt.zoomInPaintVertexBuffer : dt.zoomOutPaintVertexBuffer;
                          At && this._buffers.push(At);
                        } else (dt instanceof yt || dt instanceof Tt) && dt.paintVertexBuffer && this._buffers.push(dt.paintVertexBuffer);
                      }
                    }
                    upload(k) {
                      for (const Z in this.binders) {
                        const dt = this.binders[Z];
                        (dt instanceof yt || dt instanceof Tt || dt instanceof Nt) && dt.upload(k);
                      }
                      this.updatePaintBuffers();
                    }
                    destroy() {
                      for (const k in this.binders) {
                        const Z = this.binders[k];
                        (Z instanceof yt || Z instanceof Tt || Z instanceof Nt) && Z.destroy();
                      }
                    }
                  }
                  class Re {
                    constructor(k, Z, dt = () => !0) {
                      this.programConfigurations = {};
                      for (const At of k)
                        this.programConfigurations[At.id] = new be(At, Z, dt);
                      this.needsUpload = !1, this._featureMap = new Oh(), this._bufferOffset = 0;
                    }
                    populatePaintArrays(k, Z, dt, At, Dt, Ut) {
                      for (const se in this.programConfigurations)
                        this.programConfigurations[se].populatePaintArrays(k, Z, At, Dt, Ut);
                      Z.id !== void 0 && this._featureMap.add(Z.id, dt, this._bufferOffset, k), this._bufferOffset = k, this.needsUpload = !0;
                    }
                    updatePaintArrays(k, Z, dt, At) {
                      for (const Dt of dt)
                        this.needsUpload = this.programConfigurations[Dt.id].updatePaintArrays(k, this._featureMap, Z, Dt, At) || this.needsUpload;
                    }
                    get(k) {
                      return this.programConfigurations[k];
                    }
                    upload(k) {
                      if (this.needsUpload) {
                        for (const Z in this.programConfigurations)
                          this.programConfigurations[Z].upload(k);
                        this.needsUpload = !1;
                      }
                    }
                    destroy() {
                      for (const k in this.programConfigurations)
                        this.programConfigurations[k].destroy();
                    }
                  }
                  function je(N, k) {
                    return {
                      "text-opacity": ["opacity"],
                      "icon-opacity": ["opacity"],
                      "text-color": ["fill_color"],
                      "icon-color": ["fill_color"],
                      "text-halo-color": ["halo_color"],
                      "icon-halo-color": ["halo_color"],
                      "text-halo-blur": ["halo_blur"],
                      "icon-halo-blur": ["halo_blur"],
                      "text-halo-width": ["halo_width"],
                      "icon-halo-width": ["halo_width"],
                      "line-gap-width": ["gapwidth"],
                      "line-pattern": ["pattern_to", "pattern_from", "pixel_ratio_to", "pixel_ratio_from"],
                      "fill-pattern": ["pattern_to", "pattern_from", "pixel_ratio_to", "pixel_ratio_from"],
                      "fill-extrusion-pattern": ["pattern_to", "pattern_from", "pixel_ratio_to", "pixel_ratio_from"]
                    }[N] || [N.replace(`${k}-`, "").replace(/-/g, "_")];
                  }
                  function pr(N) {
                    return {
                      "line-pattern": {
                        source: ko,
                        composite: ko
                      },
                      "fill-pattern": {
                        source: ko,
                        composite: ko
                      },
                      "fill-extrusion-pattern": {
                        source: ko,
                        composite: ko
                      }
                    }[N];
                  }
                  function br(N, k, Z) {
                    const dt = {
                      color: {
                        source: tt,
                        composite: Kn
                      },
                      number: {
                        source: hn,
                        composite: tt
                      }
                    }, At = pr(N);
                    return At && At[Z] || dt[k][Z];
                  }
                  aa("ConstantBinder", R), aa("CrossFadedConstantBinder", J), aa("SourceExpressionBinder", yt), aa("CrossFadedCompositeBinder", Nt), aa("CompositeExpressionBinder", Tt), aa("ProgramConfiguration", be, { omit: ["_buffers"] }), aa("ProgramConfigurationSet", Re);
                  const Ar = 8192, vn = Math.pow(2, 15 - 1) - 1, bn = -vn - 1;
                  function Rn(N) {
                    const k = Ar / N.extent, Z = N.loadGeometry();
                    for (let dt = 0; dt < Z.length; dt++) {
                      const At = Z[dt];
                      for (let Dt = 0; Dt < At.length; Dt++) {
                        const Ut = At[Dt], se = Math.round(Ut.x * k), Ie = Math.round(Ut.y * k);
                        Ut.x = f(se, bn, vn), Ut.y = f(Ie, bn, vn), (se < Ut.x || se > Ut.x + 1 || Ie < Ut.y || Ie > Ut.y + 1) && U("Geometry exceeds allowed extent, reduce your vector tile buffer size");
                      }
                    }
                    return Z;
                  }
                  function Gn(N, k) {
                    return {
                      type: N.type,
                      id: N.id,
                      properties: N.properties,
                      geometry: k ? Rn(N) : []
                    };
                  }
                  function ii(N, k, Z, dt, At) {
                    N.emplaceBack(k * 2 + (dt + 1) / 2, Z * 2 + (At + 1) / 2);
                  }
                  class oi {
                    constructor(k) {
                      this.zoom = k.zoom, this.overscaling = k.overscaling, this.layers = k.layers, this.layerIds = this.layers.map((Z) => Z.id), this.index = k.index, this.hasPattern = !1, this.layoutVertexArray = new $a(), this.indexArray = new au(), this.segments = new Qo(), this.programConfigurations = new Re(k.layers, k.zoom), this.stateDependentLayerIds = this.layers.filter((Z) => Z.isStateDependent()).map((Z) => Z.id);
                    }
                    populate(k, Z, dt) {
                      const At = this.layers[0], Dt = [];
                      let Ut = null, se = !1;
                      At.type === "circle" && (Ut = At.layout.get("circle-sort-key"), se = !Ut.isConstant());
                      for (const { feature: Ie, id: He, index: Ke, sourceLayerIndex: cr } of k) {
                        const Mr = this.layers[0]._featureFilter.needGeometry, Vr = Gn(Ie, Mr);
                        if (!this.layers[0]._featureFilter.filter(new Ko(this.zoom), Vr, dt))
                          continue;
                        const nn = se ? Ut.evaluate(Vr, {}, dt) : void 0, gn = {
                          id: He,
                          properties: Ie.properties,
                          type: Ie.type,
                          sourceLayerIndex: cr,
                          index: Ke,
                          geometry: Mr ? Vr.geometry : Rn(Ie),
                          patterns: {},
                          sortKey: nn
                        };
                        Dt.push(gn);
                      }
                      se && Dt.sort((Ie, He) => Ie.sortKey - He.sortKey);
                      for (const Ie of Dt) {
                        const { geometry: He, index: Ke, sourceLayerIndex: cr } = Ie, Mr = k[Ke].feature;
                        this.addFeature(Ie, He, Ke, dt), Z.featureIndex.insert(Mr, He, Ke, cr, this.index);
                      }
                    }
                    update(k, Z, dt) {
                      this.stateDependentLayers.length && this.programConfigurations.updatePaintArrays(k, Z, this.stateDependentLayers, dt);
                    }
                    isEmpty() {
                      return this.layoutVertexArray.length === 0;
                    }
                    uploadPending() {
                      return !this.uploaded || this.programConfigurations.needsUpload;
                    }
                    upload(k) {
                      this.uploaded || (this.layoutVertexBuffer = k.createVertexBuffer(this.layoutVertexArray, fc), this.indexBuffer = k.createIndexBuffer(this.indexArray)), this.programConfigurations.upload(k), this.uploaded = !0;
                    }
                    destroy() {
                      this.layoutVertexBuffer && (this.layoutVertexBuffer.destroy(), this.indexBuffer.destroy(), this.programConfigurations.destroy(), this.segments.destroy());
                    }
                    addFeature(k, Z, dt, At) {
                      for (const Dt of Z)
                        for (const Ut of Dt) {
                          const se = Ut.x, Ie = Ut.y;
                          if (se < 0 || se >= Ar || Ie < 0 || Ie >= Ar)
                            continue;
                          const He = this.segments.prepareSegment(4, this.layoutVertexArray, this.indexArray, k.sortKey), Ke = He.vertexLength;
                          ii(this.layoutVertexArray, se, Ie, -1, -1), ii(this.layoutVertexArray, se, Ie, 1, -1), ii(this.layoutVertexArray, se, Ie, 1, 1), ii(this.layoutVertexArray, se, Ie, -1, 1), this.indexArray.emplaceBack(Ke, Ke + 1, Ke + 2), this.indexArray.emplaceBack(Ke, Ke + 3, Ke + 2), He.vertexLength += 4, He.primitiveLength += 2;
                        }
                      this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length, k, dt, {}, At);
                    }
                  }
                  aa("CircleBucket", oi, { omit: ["layers"] });
                  function Xn(N, k) {
                    for (let Z = 0; Z < N.length; Z++)
                      if (Ya(k, N[Z]))
                        return !0;
                    for (let Z = 0; Z < k.length; Z++)
                      if (Ya(N, k[Z]))
                        return !0;
                    return !!Sa(N, k);
                  }
                  function Ri(N, k, Z) {
                    return !!(Ya(N, k) || Xa(k, N, Z));
                  }
                  function Ci(N, k) {
                    if (N.length === 1)
                      return xa(k, N[0]);
                    for (let Z = 0; Z < k.length; Z++) {
                      const dt = k[Z];
                      for (let At = 0; At < dt.length; At++)
                        if (Ya(N, dt[At]))
                          return !0;
                    }
                    for (let Z = 0; Z < N.length; Z++)
                      if (xa(k, N[Z]))
                        return !0;
                    for (let Z = 0; Z < k.length; Z++)
                      if (Sa(N, k[Z]))
                        return !0;
                    return !1;
                  }
                  function Oi(N, k, Z) {
                    for (let dt = 0; dt < k.length; dt++) {
                      const At = k[dt];
                      if (N.length >= 3) {
                        for (let Dt = 0; Dt < At.length; Dt++)
                          if (Ya(N, At[Dt]))
                            return !0;
                      }
                      if (pa(N, At, Z))
                        return !0;
                    }
                    return !1;
                  }
                  function pa(N, k, Z) {
                    if (N.length > 1) {
                      if (Sa(N, k))
                        return !0;
                      for (let dt = 0; dt < k.length; dt++)
                        if (Xa(k[dt], N, Z))
                          return !0;
                    }
                    for (let dt = 0; dt < N.length; dt++)
                      if (Xa(N[dt], k, Z))
                        return !0;
                    return !1;
                  }
                  function Sa(N, k) {
                    if (N.length === 0 || k.length === 0)
                      return !1;
                    for (let Z = 0; Z < N.length - 1; Z++) {
                      const dt = N[Z], At = N[Z + 1];
                      for (let Dt = 0; Dt < k.length - 1; Dt++) {
                        const Ut = k[Dt], se = k[Dt + 1];
                        if (ao(dt, At, Ut, se))
                          return !0;
                      }
                    }
                    return !1;
                  }
                  function ao(N, k, Z, dt) {
                    return H(N, Z, dt) !== H(k, Z, dt) && H(N, k, Z) !== H(N, k, dt);
                  }
                  function Xa(N, k, Z) {
                    const dt = Z * Z;
                    if (k.length === 1)
                      return N.distSqr(k[0]) < dt;
                    for (let At = 1; At < k.length; At++) {
                      const Dt = k[At - 1], Ut = k[At];
                      if (La(N, Dt, Ut) < dt)
                        return !0;
                    }
                    return !1;
                  }
                  function La(N, k, Z) {
                    const dt = k.distSqr(Z);
                    if (dt === 0)
                      return N.distSqr(k);
                    const At = ((N.x - k.x) * (Z.x - k.x) + (N.y - k.y) * (Z.y - k.y)) / dt;
                    return At < 0 ? N.distSqr(k) : At > 1 ? N.distSqr(Z) : N.distSqr(Z.sub(k)._mult(At)._add(k));
                  }
                  function xa(N, k) {
                    let Z = !1, dt, At, Dt;
                    for (let Ut = 0; Ut < N.length; Ut++) {
                      dt = N[Ut];
                      for (let se = 0, Ie = dt.length - 1; se < dt.length; Ie = se++)
                        At = dt[se], Dt = dt[Ie], At.y > k.y != Dt.y > k.y && k.x < (Dt.x - At.x) * (k.y - At.y) / (Dt.y - At.y) + At.x && (Z = !Z);
                    }
                    return Z;
                  }
                  function Ya(N, k) {
                    let Z = !1;
                    for (let dt = 0, At = N.length - 1; dt < N.length; At = dt++) {
                      const Dt = N[dt], Ut = N[At];
                      Dt.y > k.y != Ut.y > k.y && k.x < (Ut.x - Dt.x) * (k.y - Dt.y) / (Ut.y - Dt.y) + Dt.x && (Z = !Z);
                    }
                    return Z;
                  }
                  function Va(N, k, Z, dt, At) {
                    for (const Ut of N)
                      if (k <= Ut.x && Z <= Ut.y && dt >= Ut.x && At >= Ut.y)
                        return !0;
                    const Dt = [
                      new u(k, Z),
                      new u(k, At),
                      new u(dt, At),
                      new u(dt, Z)
                    ];
                    if (N.length > 2) {
                      for (const Ut of Dt)
                        if (Ya(N, Ut))
                          return !0;
                    }
                    for (let Ut = 0; Ut < N.length - 1; Ut++) {
                      const se = N[Ut], Ie = N[Ut + 1];
                      if (Wo(se, Ie, Dt))
                        return !0;
                    }
                    return !1;
                  }
                  function Wo(N, k, Z) {
                    const dt = Z[0], At = Z[2];
                    if (N.x < dt.x && k.x < dt.x || N.x > At.x && k.x > At.x || N.y < dt.y && k.y < dt.y || N.y > At.y && k.y > At.y)
                      return !1;
                    const Dt = H(N, k, Z[0]);
                    return Dt !== H(N, k, Z[1]) || Dt !== H(N, k, Z[2]) || Dt !== H(N, k, Z[3]);
                  }
                  function ua(N, k, Z) {
                    const dt = k.paint.get(N).value;
                    return dt.kind === "constant" ? dt.value : Z.programConfigurations.get(k.id).getMaxValue(N);
                  }
                  function ca(N) {
                    return Math.sqrt(N[0] * N[0] + N[1] * N[1]);
                  }
                  function Uo(N, k, Z, dt, At) {
                    if (!k[0] && !k[1])
                      return N;
                    const Dt = u.convert(k)._mult(At);
                    Z === "viewport" && Dt._rotate(-dt);
                    const Ut = [];
                    for (let se = 0; se < N.length; se++) {
                      const Ie = N[se];
                      Ut.push(Ie.sub(Dt));
                    }
                    return Ut;
                  }
                  function Zs(N, k) {
                    const Z = [];
                    for (let dt = 0; dt < N.length; dt++) {
                      const At = N[dt], Dt = [];
                      for (let Ut = 0; Ut < At.length; Ut++) {
                        const se = At[Ut - 1], Ie = At[Ut], He = At[Ut + 1], Ke = Ut === 0 ? new u(0, 0) : Ie.sub(se)._unit()._perp(), cr = Ut === At.length - 1 ? new u(0, 0) : He.sub(Ie)._unit()._perp(), Mr = Ke._add(cr)._unit(), Vr = Mr.x * cr.x + Mr.y * cr.y;
                        Vr !== 0 && Mr._mult(1 / Vr), Dt.push(Mr._mult(k)._add(Ie));
                      }
                      Z.push(Dt);
                    }
                    return Z;
                  }
                  let Lo;
                  const qs = () => Lo = Lo || new Ws({
                    "circle-sort-key": new Ua(or.layout_circle["circle-sort-key"])
                  });
                  let sl;
                  const ts = () => sl = sl || new Ws({
                    "circle-radius": new Ua(or.paint_circle["circle-radius"]),
                    "circle-color": new Ua(or.paint_circle["circle-color"]),
                    "circle-blur": new Ua(or.paint_circle["circle-blur"]),
                    "circle-opacity": new Ua(or.paint_circle["circle-opacity"]),
                    "circle-translate": new ka(or.paint_circle["circle-translate"]),
                    "circle-translate-anchor": new ka(or.paint_circle["circle-translate-anchor"]),
                    "circle-pitch-scale": new ka(or.paint_circle["circle-pitch-scale"]),
                    "circle-pitch-alignment": new ka(or.paint_circle["circle-pitch-alignment"]),
                    "circle-stroke-width": new Ua(or.paint_circle["circle-stroke-width"]),
                    "circle-stroke-color": new Ua(or.paint_circle["circle-stroke-color"]),
                    "circle-stroke-opacity": new Ua(or.paint_circle["circle-stroke-opacity"])
                  });
                  var Rs = { get paint() {
                    return ts();
                  }, get layout() {
                    return qs();
                  } }, bo = 1e-6, Bu = typeof Float32Array < "u" ? Float32Array : Array;
                  Math.hypot || (Math.hypot = function() {
                    for (var N = 0, k = arguments.length; k--; )
                      N += arguments[k] * arguments[k];
                    return Math.sqrt(N);
                  });
                  function Nu() {
                    var N = new Bu(16);
                    return Bu != Float32Array && (N[1] = 0, N[2] = 0, N[3] = 0, N[4] = 0, N[6] = 0, N[7] = 0, N[8] = 0, N[9] = 0, N[11] = 0, N[12] = 0, N[13] = 0, N[14] = 0), N[0] = 1, N[5] = 1, N[10] = 1, N[15] = 1, N;
                  }
                  function Xl(N) {
                    var k = new Bu(16);
                    return k[0] = N[0], k[1] = N[1], k[2] = N[2], k[3] = N[3], k[4] = N[4], k[5] = N[5], k[6] = N[6], k[7] = N[7], k[8] = N[8], k[9] = N[9], k[10] = N[10], k[11] = N[11], k[12] = N[12], k[13] = N[13], k[14] = N[14], k[15] = N[15], k;
                  }
                  function bu(N, k) {
                    return N[0] = k[0], N[1] = k[1], N[2] = k[2], N[3] = k[3], N[4] = k[4], N[5] = k[5], N[6] = k[6], N[7] = k[7], N[8] = k[8], N[9] = k[9], N[10] = k[10], N[11] = k[11], N[12] = k[12], N[13] = k[13], N[14] = k[14], N[15] = k[15], N;
                  }
                  function of(N) {
                    return N[0] = 1, N[1] = 0, N[2] = 0, N[3] = 0, N[4] = 0, N[5] = 1, N[6] = 0, N[7] = 0, N[8] = 0, N[9] = 0, N[10] = 1, N[11] = 0, N[12] = 0, N[13] = 0, N[14] = 0, N[15] = 1, N;
                  }
                  function gd(N, k) {
                    var Z = k[0], dt = k[1], At = k[2], Dt = k[3], Ut = k[4], se = k[5], Ie = k[6], He = k[7], Ke = k[8], cr = k[9], Mr = k[10], Vr = k[11], nn = k[12], gn = k[13], jn = k[14], ui = k[15], Ii = Z * se - dt * Ut, Si = Z * Ie - At * Ut, Pi = Z * He - Dt * Ut, Wi = dt * Ie - At * se, Ma = dt * He - Dt * se, ja = At * He - Dt * Ie, ho = Ke * gn - cr * nn, ro = Ke * jn - Mr * nn, Ra = Ke * ui - Vr * nn, no = cr * jn - Mr * gn, Ha = cr * ui - Vr * gn, eo = Mr * ui - Vr * jn, $i = Ii * eo - Si * Ha + Pi * no + Wi * Ra - Ma * ro + ja * ho;
                    return $i ? ($i = 1 / $i, N[0] = (se * eo - Ie * Ha + He * no) * $i, N[1] = (At * Ha - dt * eo - Dt * no) * $i, N[2] = (gn * ja - jn * Ma + ui * Wi) * $i, N[3] = (Mr * Ma - cr * ja - Vr * Wi) * $i, N[4] = (Ie * Ra - Ut * eo - He * ro) * $i, N[5] = (Z * eo - At * Ra + Dt * ro) * $i, N[6] = (jn * Pi - nn * ja - ui * Si) * $i, N[7] = (Ke * ja - Mr * Pi + Vr * Si) * $i, N[8] = (Ut * Ha - se * Ra + He * ho) * $i, N[9] = (dt * Ra - Z * Ha - Dt * ho) * $i, N[10] = (nn * Ma - gn * Pi + ui * Ii) * $i, N[11] = (cr * Pi - Ke * Ma - Vr * Ii) * $i, N[12] = (se * ro - Ut * no - Ie * ho) * $i, N[13] = (Z * no - dt * ro + At * ho) * $i, N[14] = (gn * Si - nn * Wi - jn * Ii) * $i, N[15] = (Ke * Wi - cr * Si + Mr * Ii) * $i, N) : null;
                  }
                  function yd(N, k, Z) {
                    var dt = k[0], At = k[1], Dt = k[2], Ut = k[3], se = k[4], Ie = k[5], He = k[6], Ke = k[7], cr = k[8], Mr = k[9], Vr = k[10], nn = k[11], gn = k[12], jn = k[13], ui = k[14], Ii = k[15], Si = Z[0], Pi = Z[1], Wi = Z[2], Ma = Z[3];
                    return N[0] = Si * dt + Pi * se + Wi * cr + Ma * gn, N[1] = Si * At + Pi * Ie + Wi * Mr + Ma * jn, N[2] = Si * Dt + Pi * He + Wi * Vr + Ma * ui, N[3] = Si * Ut + Pi * Ke + Wi * nn + Ma * Ii, Si = Z[4], Pi = Z[5], Wi = Z[6], Ma = Z[7], N[4] = Si * dt + Pi * se + Wi * cr + Ma * gn, N[5] = Si * At + Pi * Ie + Wi * Mr + Ma * jn, N[6] = Si * Dt + Pi * He + Wi * Vr + Ma * ui, N[7] = Si * Ut + Pi * Ke + Wi * nn + Ma * Ii, Si = Z[8], Pi = Z[9], Wi = Z[10], Ma = Z[11], N[8] = Si * dt + Pi * se + Wi * cr + Ma * gn, N[9] = Si * At + Pi * Ie + Wi * Mr + Ma * jn, N[10] = Si * Dt + Pi * He + Wi * Vr + Ma * ui, N[11] = Si * Ut + Pi * Ke + Wi * nn + Ma * Ii, Si = Z[12], Pi = Z[13], Wi = Z[14], Ma = Z[15], N[12] = Si * dt + Pi * se + Wi * cr + Ma * gn, N[13] = Si * At + Pi * Ie + Wi * Mr + Ma * jn, N[14] = Si * Dt + Pi * He + Wi * Vr + Ma * ui, N[15] = Si * Ut + Pi * Ke + Wi * nn + Ma * Ii, N;
                  }
                  function hc(N, k, Z) {
                    var dt = Z[0], At = Z[1], Dt = Z[2], Ut, se, Ie, He, Ke, cr, Mr, Vr, nn, gn, jn, ui;
                    return k === N ? (N[12] = k[0] * dt + k[4] * At + k[8] * Dt + k[12], N[13] = k[1] * dt + k[5] * At + k[9] * Dt + k[13], N[14] = k[2] * dt + k[6] * At + k[10] * Dt + k[14], N[15] = k[3] * dt + k[7] * At + k[11] * Dt + k[15]) : (Ut = k[0], se = k[1], Ie = k[2], He = k[3], Ke = k[4], cr = k[5], Mr = k[6], Vr = k[7], nn = k[8], gn = k[9], jn = k[10], ui = k[11], N[0] = Ut, N[1] = se, N[2] = Ie, N[3] = He, N[4] = Ke, N[5] = cr, N[6] = Mr, N[7] = Vr, N[8] = nn, N[9] = gn, N[10] = jn, N[11] = ui, N[12] = Ut * dt + Ke * At + nn * Dt + k[12], N[13] = se * dt + cr * At + gn * Dt + k[13], N[14] = Ie * dt + Mr * At + jn * Dt + k[14], N[15] = He * dt + Vr * At + ui * Dt + k[15]), N;
                  }
                  function Wv(N, k, Z) {
                    var dt = Z[0], At = Z[1], Dt = Z[2];
                    return N[0] = k[0] * dt, N[1] = k[1] * dt, N[2] = k[2] * dt, N[3] = k[3] * dt, N[4] = k[4] * At, N[5] = k[5] * At, N[6] = k[6] * At, N[7] = k[7] * At, N[8] = k[8] * Dt, N[9] = k[9] * Dt, N[10] = k[10] * Dt, N[11] = k[11] * Dt, N[12] = k[12], N[13] = k[13], N[14] = k[14], N[15] = k[15], N;
                  }
                  function Nh(N, k, Z) {
                    var dt = Math.sin(Z), At = Math.cos(Z), Dt = k[4], Ut = k[5], se = k[6], Ie = k[7], He = k[8], Ke = k[9], cr = k[10], Mr = k[11];
                    return k !== N && (N[0] = k[0], N[1] = k[1], N[2] = k[2], N[3] = k[3], N[12] = k[12], N[13] = k[13], N[14] = k[14], N[15] = k[15]), N[4] = Dt * At + He * dt, N[5] = Ut * At + Ke * dt, N[6] = se * At + cr * dt, N[7] = Ie * At + Mr * dt, N[8] = He * At - Dt * dt, N[9] = Ke * At - Ut * dt, N[10] = cr * At - se * dt, N[11] = Mr * At - Ie * dt, N;
                  }
                  function mv(N, k, Z) {
                    var dt = Math.sin(Z), At = Math.cos(Z), Dt = k[0], Ut = k[1], se = k[2], Ie = k[3], He = k[4], Ke = k[5], cr = k[6], Mr = k[7];
                    return k !== N && (N[8] = k[8], N[9] = k[9], N[10] = k[10], N[11] = k[11], N[12] = k[12], N[13] = k[13], N[14] = k[14], N[15] = k[15]), N[0] = Dt * At + He * dt, N[1] = Ut * At + Ke * dt, N[2] = se * At + cr * dt, N[3] = Ie * At + Mr * dt, N[4] = He * At - Dt * dt, N[5] = Ke * At - Ut * dt, N[6] = cr * At - se * dt, N[7] = Mr * At - Ie * dt, N;
                  }
                  function gs(N, k) {
                    return N[0] = k[0], N[1] = 0, N[2] = 0, N[3] = 0, N[4] = 0, N[5] = k[1], N[6] = 0, N[7] = 0, N[8] = 0, N[9] = 0, N[10] = k[2], N[11] = 0, N[12] = 0, N[13] = 0, N[14] = 0, N[15] = 1, N;
                  }
                  function sf(N, k, Z, dt, At) {
                    var Dt = 1 / Math.tan(k / 2), Ut;
                    return N[0] = Dt / Z, N[1] = 0, N[2] = 0, N[3] = 0, N[4] = 0, N[5] = Dt, N[6] = 0, N[7] = 0, N[8] = 0, N[9] = 0, N[11] = -1, N[12] = 0, N[13] = 0, N[15] = 0, At != null && At !== 1 / 0 ? (Ut = 1 / (dt - At), N[10] = (At + dt) * Ut, N[14] = 2 * At * dt * Ut) : (N[10] = -1, N[14] = -2 * dt), N;
                  }
                  var If = sf;
                  function Rf(N, k, Z, dt, At, Dt, Ut) {
                    var se = 1 / (k - Z), Ie = 1 / (dt - At), He = 1 / (Dt - Ut);
                    return N[0] = -2 * se, N[1] = 0, N[2] = 0, N[3] = 0, N[4] = 0, N[5] = -2 * Ie, N[6] = 0, N[7] = 0, N[8] = 0, N[9] = 0, N[10] = 2 * He, N[11] = 0, N[12] = (k + Z) * se, N[13] = (At + dt) * Ie, N[14] = (Ut + Dt) * He, N[15] = 1, N;
                  }
                  var Uh = Rf;
                  function Yl(N, k) {
                    return N[0] === k[0] && N[1] === k[1] && N[2] === k[2] && N[3] === k[3] && N[4] === k[4] && N[5] === k[5] && N[6] === k[6] && N[7] === k[7] && N[8] === k[8] && N[9] === k[9] && N[10] === k[10] && N[11] === k[11] && N[12] === k[12] && N[13] === k[13] && N[14] === k[14] && N[15] === k[15];
                  }
                  function wu(N, k) {
                    var Z = N[0], dt = N[1], At = N[2], Dt = N[3], Ut = N[4], se = N[5], Ie = N[6], He = N[7], Ke = N[8], cr = N[9], Mr = N[10], Vr = N[11], nn = N[12], gn = N[13], jn = N[14], ui = N[15], Ii = k[0], Si = k[1], Pi = k[2], Wi = k[3], Ma = k[4], ja = k[5], ho = k[6], ro = k[7], Ra = k[8], no = k[9], Ha = k[10], eo = k[11], $i = k[12], za = k[13], Ja = k[14], Bo = k[15];
                    return Math.abs(Z - Ii) <= bo * Math.max(1, Math.abs(Z), Math.abs(Ii)) && Math.abs(dt - Si) <= bo * Math.max(1, Math.abs(dt), Math.abs(Si)) && Math.abs(At - Pi) <= bo * Math.max(1, Math.abs(At), Math.abs(Pi)) && Math.abs(Dt - Wi) <= bo * Math.max(1, Math.abs(Dt), Math.abs(Wi)) && Math.abs(Ut - Ma) <= bo * Math.max(1, Math.abs(Ut), Math.abs(Ma)) && Math.abs(se - ja) <= bo * Math.max(1, Math.abs(se), Math.abs(ja)) && Math.abs(Ie - ho) <= bo * Math.max(1, Math.abs(Ie), Math.abs(ho)) && Math.abs(He - ro) <= bo * Math.max(1, Math.abs(He), Math.abs(ro)) && Math.abs(Ke - Ra) <= bo * Math.max(1, Math.abs(Ke), Math.abs(Ra)) && Math.abs(cr - no) <= bo * Math.max(1, Math.abs(cr), Math.abs(no)) && Math.abs(Mr - Ha) <= bo * Math.max(1, Math.abs(Mr), Math.abs(Ha)) && Math.abs(Vr - eo) <= bo * Math.max(1, Math.abs(Vr), Math.abs(eo)) && Math.abs(nn - $i) <= bo * Math.max(1, Math.abs(nn), Math.abs($i)) && Math.abs(gn - za) <= bo * Math.max(1, Math.abs(gn), Math.abs(za)) && Math.abs(jn - Ja) <= bo * Math.max(1, Math.abs(jn), Math.abs(Ja)) && Math.abs(ui - Bo) <= bo * Math.max(1, Math.abs(ui), Math.abs(Bo));
                  }
                  var Uu = yd;
                  function Df() {
                    var N = new Bu(4);
                    return Bu != Float32Array && (N[0] = 0, N[1] = 0, N[2] = 0, N[3] = 0), N;
                  }
                  function Vd(N, k, Z) {
                    return N[0] = k[0] * Z[0], N[1] = k[1] * Z[1], N[2] = k[2] * Z[2], N[3] = k[3] * Z[3], N;
                  }
                  function tl(N, k) {
                    return N[0] * k[0] + N[1] * k[1] + N[2] * k[2] + N[3] * k[3];
                  }
                  function md(N, k, Z) {
                    var dt = k[0], At = k[1], Dt = k[2], Ut = k[3];
                    return N[0] = Z[0] * dt + Z[4] * At + Z[8] * Dt + Z[12] * Ut, N[1] = Z[1] * dt + Z[5] * At + Z[9] * Dt + Z[13] * Ut, N[2] = Z[2] * dt + Z[6] * At + Z[10] * Dt + Z[14] * Ut, N[3] = Z[3] * dt + Z[7] * At + Z[11] * Dt + Z[15] * Ut, N;
                  }
                  var Fp = Vd;
                  (function() {
                    var N = Df();
                    return function(k, Z, dt, At, Dt, Ut) {
                      var se, Ie;
                      for (Z || (Z = 4), dt || (dt = 0), At ? Ie = Math.min(At * Z + dt, k.length) : Ie = k.length, se = dt; se < Ie; se += Z)
                        N[0] = k[se], N[1] = k[se + 1], N[2] = k[se + 2], N[3] = k[se + 3], Dt(N, N, Ut), k[se] = N[0], k[se + 1] = N[1], k[se + 2] = N[2], k[se + 3] = N[3];
                      return k;
                    };
                  })();
                  class wg extends oc {
                    constructor(k) {
                      super(k, Rs);
                    }
                    createBucket(k) {
                      return new oi(k);
                    }
                    queryRadius(k) {
                      const Z = k;
                      return ua("circle-radius", this, Z) + ua("circle-stroke-width", this, Z) + ca(this.paint.get("circle-translate"));
                    }
                    queryIntersectsFeature(k, Z, dt, At, Dt, Ut, se, Ie) {
                      const He = Uo(k, this.paint.get("circle-translate"), this.paint.get("circle-translate-anchor"), Ut.angle, se), Ke = this.paint.get("circle-radius").evaluate(Z, dt), cr = this.paint.get("circle-stroke-width").evaluate(Z, dt), Mr = Ke + cr, Vr = this.paint.get("circle-pitch-alignment") === "map", nn = Vr ? He : xv(He, Ie), gn = Vr ? Mr * se : Mr;
                      for (const jn of At)
                        for (const ui of jn) {
                          const Ii = Vr ? ui : Op(ui, Ie);
                          let Si = gn;
                          const Pi = md([], [ui.x, ui.y, 0, 1], Ie);
                          if (this.paint.get("circle-pitch-scale") === "viewport" && this.paint.get("circle-pitch-alignment") === "map" ? Si *= Pi[3] / Ut.cameraToCenterDistance : this.paint.get("circle-pitch-scale") === "map" && this.paint.get("circle-pitch-alignment") === "viewport" && (Si *= Ut.cameraToCenterDistance / Pi[3]), Ri(nn, Ii, Si))
                            return !0;
                        }
                      return !1;
                    }
                  }
                  function Op(N, k) {
                    const Z = md([], [N.x, N.y, 0, 1], k);
                    return new u(Z[0] / Z[3], Z[1] / Z[3]);
                  }
                  function xv(N, k) {
                    return N.map((Z) => Op(Z, k));
                  }
                  class A0 extends oi {
                  }
                  aa("HeatmapBucket", A0, { omit: ["layers"] });
                  let ph;
                  const S0 = () => ph = ph || new Ws({
                    "heatmap-radius": new Ua(or.paint_heatmap["heatmap-radius"]),
                    "heatmap-weight": new Ua(or.paint_heatmap["heatmap-weight"]),
                    "heatmap-intensity": new ka(or.paint_heatmap["heatmap-intensity"]),
                    "heatmap-color": new fh(or.paint_heatmap["heatmap-color"]),
                    "heatmap-opacity": new ka(or.paint_heatmap["heatmap-opacity"])
                  });
                  var jv = { get paint() {
                    return S0();
                  } };
                  function Hd(N, { width: k, height: Z }, dt, At) {
                    if (!At)
                      At = new Uint8Array(k * Z * dt);
                    else if (At instanceof Uint8ClampedArray)
                      At = new Uint8Array(At.buffer);
                    else if (At.length !== k * Z * dt)
                      throw new RangeError(`mismatched image size. expected: ${At.length} but got: ${k * Z * dt}`);
                    return N.width = k, N.height = Z, N.data = At, N;
                  }
                  function Zv(N, { width: k, height: Z }, dt) {
                    if (k === N.width && Z === N.height)
                      return;
                    const At = Hd({}, { width: k, height: Z }, dt);
                    dc(N, At, { x: 0, y: 0 }, { x: 0, y: 0 }, {
                      width: Math.min(N.width, k),
                      height: Math.min(N.height, Z)
                    }, dt), N.width = k, N.height = Z, N.data = At.data;
                  }
                  function dc(N, k, Z, dt, At, Dt) {
                    if (At.width === 0 || At.height === 0)
                      return k;
                    if (At.width > N.width || At.height > N.height || Z.x > N.width - At.width || Z.y > N.height - At.height)
                      throw new RangeError("out of range source coordinates for image copy");
                    if (At.width > k.width || At.height > k.height || dt.x > k.width - At.width || dt.y > k.height - At.height)
                      throw new RangeError("out of range destination coordinates for image copy");
                    const Ut = N.data, se = k.data;
                    if (Ut === se)
                      throw new Error("srcData equals dstData, so image is already copied");
                    for (let Ie = 0; Ie < At.height; Ie++) {
                      const He = ((Z.y + Ie) * N.width + Z.x) * Dt, Ke = ((dt.y + Ie) * k.width + dt.x) * Dt;
                      for (let cr = 0; cr < At.width * Dt; cr++)
                        se[Ke + cr] = Ut[He + cr];
                    }
                    return k;
                  }
                  class Gd {
                    constructor(k, Z) {
                      Hd(this, k, 1, Z);
                    }
                    resize(k) {
                      Zv(this, k, 1);
                    }
                    clone() {
                      return new Gd({ width: this.width, height: this.height }, new Uint8Array(this.data));
                    }
                    static copy(k, Z, dt, At, Dt) {
                      dc(k, Z, dt, At, Dt, 1);
                    }
                  }
                  class kf {
                    constructor(k, Z) {
                      Hd(this, k, 4, Z);
                    }
                    resize(k) {
                      Zv(this, k, 4);
                    }
                    replace(k, Z) {
                      Z ? this.data.set(k) : k instanceof Uint8ClampedArray ? this.data = new Uint8Array(k.buffer) : this.data = k;
                    }
                    clone() {
                      return new kf({ width: this.width, height: this.height }, new Uint8Array(this.data));
                    }
                    static copy(k, Z, dt, At, Dt) {
                      dc(k, Z, dt, At, Dt, 4);
                    }
                  }
                  aa("AlphaImage", Gd), aa("RGBAImage", kf);
                  function By(N) {
                    const k = {}, Z = N.resolution || 256, dt = N.clips ? N.clips.length : 1, At = N.image || new kf({ width: Z, height: dt });
                    if (!d(Z))
                      throw new Error(`width is not a power of 2 - ${Z}`);
                    const Dt = (Ut, se, Ie) => {
                      k[N.evaluationKey] = Ie;
                      const He = N.expression.evaluate(k);
                      At.data[Ut + se + 0] = Math.floor(He.r * 255 / He.a), At.data[Ut + se + 1] = Math.floor(He.g * 255 / He.a), At.data[Ut + se + 2] = Math.floor(He.b * 255 / He.a), At.data[Ut + se + 3] = Math.floor(He.a * 255);
                    };
                    if (N.clips)
                      for (let Ut = 0, se = 0; Ut < dt; ++Ut, se += Z * 4)
                        for (let Ie = 0, He = 0; Ie < Z; Ie++, He += 4) {
                          const Ke = Ie / (Z - 1), { start: cr, end: Mr } = N.clips[Ut], Vr = cr * (1 - Ke) + Mr * Ke;
                          Dt(se, He, Vr);
                        }
                    else
                      for (let Ut = 0, se = 0; Ut < Z; Ut++, se += 4) {
                        const Ie = Ut / (Z - 1);
                        Dt(0, se, Ie);
                      }
                    return At;
                  }
                  class X1 extends oc {
                    createBucket(k) {
                      return new A0(k);
                    }
                    constructor(k) {
                      super(k, jv), this._updateColorRamp();
                    }
                    _handleSpecialPaintPropertyUpdate(k) {
                      k === "heatmap-color" && this._updateColorRamp();
                    }
                    _updateColorRamp() {
                      const k = this._transitionablePaint._values["heatmap-color"].value.expression;
                      this.colorRamp = By({
                        expression: k,
                        evaluationKey: "heatmapDensity",
                        image: this.colorRamp
                      }), this.colorRampTexture = null;
                    }
                    resize() {
                      this.heatmapFbo && (this.heatmapFbo.destroy(), this.heatmapFbo = null);
                    }
                    queryRadius() {
                      return 0;
                    }
                    queryIntersectsFeature() {
                      return !1;
                    }
                    hasOffscreenPass() {
                      return this.paint.get("heatmap-opacity") !== 0 && this.visibility !== "none";
                    }
                  }
                  let Ny;
                  const Y1 = () => Ny = Ny || new Ws({
                    "hillshade-illumination-direction": new ka(or.paint_hillshade["hillshade-illumination-direction"]),
                    "hillshade-illumination-anchor": new ka(or.paint_hillshade["hillshade-illumination-anchor"]),
                    "hillshade-exaggeration": new ka(or.paint_hillshade["hillshade-exaggeration"]),
                    "hillshade-shadow-color": new ka(or.paint_hillshade["hillshade-shadow-color"]),
                    "hillshade-highlight-color": new ka(or.paint_hillshade["hillshade-highlight-color"]),
                    "hillshade-accent-color": new ka(or.paint_hillshade["hillshade-accent-color"])
                  });
                  var Uy = { get paint() {
                    return Y1();
                  } };
                  class Xv extends oc {
                    constructor(k) {
                      super(k, Uy);
                    }
                    hasOffscreenPass() {
                      return this.paint.get("hillshade-exaggeration") !== 0 && this.visibility !== "none";
                    }
                  }
                  const K1 = Ls([
                    { name: "a_pos", components: 2, type: "Int16" }
                  ], 4), { members: J1, size: bw, alignment: ww } = K1;
                  function _g(N, k, Z = 2) {
                    const dt = k && k.length, At = dt ? k[0] * Z : N.length;
                    let Dt = Tg(N, 0, At, Z, !0);
                    const Ut = [];
                    if (!Dt || Dt.next === Dt.prev) return Ut;
                    let se, Ie, He;
                    if (dt && (Dt = ex(N, k, Dt, Z)), N.length > 80 * Z) {
                      se = 1 / 0, Ie = 1 / 0;
                      let Ke = -1 / 0, cr = -1 / 0;
                      for (let Mr = Z; Mr < At; Mr += Z) {
                        const Vr = N[Mr], nn = N[Mr + 1];
                        Vr < se && (se = Vr), nn < Ie && (Ie = nn), Vr > Ke && (Ke = Vr), nn > cr && (cr = nn);
                      }
                      He = Math.max(Ke - se, cr - Ie), He = He !== 0 ? 32767 / He : 0;
                    }
                    return Bp(Dt, Ut, Z, se, Ie, He, 0), Ut;
                  }
                  function Tg(N, k, Z, dt, At) {
                    let Dt;
                    if (At === Gy(N, k, Z, dt) > 0)
                      for (let Ut = k; Ut < Z; Ut += dt) Dt = Hy(Ut / dt | 0, N[Ut], N[Ut + 1], Dt);
                    else
                      for (let Ut = Z - dt; Ut >= k; Ut -= dt) Dt = Hy(Ut / dt | 0, N[Ut], N[Ut + 1], Dt);
                    return Dt && M0(Dt, Dt.next) && (Hp(Dt), Dt = Dt.next), Dt;
                  }
                  function bv(N, k) {
                    if (!N) return N;
                    k || (k = N);
                    let Z = N, dt;
                    do
                      if (dt = !1, !Z.steiner && (M0(Z, Z.next) || ll(Z.prev, Z, Z.next) === 0)) {
                        if (Hp(Z), Z = k = Z.prev, Z === Z.next) break;
                        dt = !0;
                      } else
                        Z = Z.next;
                    while (dt || Z !== k);
                    return k;
                  }
                  function Bp(N, k, Z, dt, At, Dt, Ut) {
                    if (!N) return;
                    !Ut && Dt && Ag(N, dt, At, Dt);
                    let se = N;
                    for (; N.prev !== N.next; ) {
                      const Ie = N.prev, He = N.next;
                      if (Dt ? $1(N, dt, At, Dt) : Q1(N)) {
                        k.push(Ie.i, N.i, He.i), Hp(N), N = He.next, se = He.next;
                        continue;
                      }
                      if (N = He, N === se) {
                        Ut ? Ut === 1 ? (N = q1(bv(N), k), Bp(N, k, Z, dt, At, Dt, 2)) : Ut === 2 && tx(N, k, Z, dt, At, Dt) : Bp(bv(N), k, Z, dt, At, Dt, 1);
                        break;
                      }
                    }
                  }
                  function Q1(N) {
                    const k = N.prev, Z = N, dt = N.next;
                    if (ll(k, Z, dt) >= 0) return !1;
                    const At = k.x, Dt = Z.x, Ut = dt.x, se = k.y, Ie = Z.y, He = dt.y, Ke = At < Dt ? At < Ut ? At : Ut : Dt < Ut ? Dt : Ut, cr = se < Ie ? se < He ? se : He : Ie < He ? Ie : He, Mr = At > Dt ? At > Ut ? At : Ut : Dt > Ut ? Dt : Ut, Vr = se > Ie ? se > He ? se : He : Ie > He ? Ie : He;
                    let nn = dt.next;
                    for (; nn !== k; ) {
                      if (nn.x >= Ke && nn.x <= Mr && nn.y >= cr && nn.y <= Vr && Kv(At, se, Dt, Ie, Ut, He, nn.x, nn.y) && ll(nn.prev, nn, nn.next) >= 0) return !1;
                      nn = nn.next;
                    }
                    return !0;
                  }
                  function $1(N, k, Z, dt) {
                    const At = N.prev, Dt = N, Ut = N.next;
                    if (ll(At, Dt, Ut) >= 0) return !1;
                    const se = At.x, Ie = Dt.x, He = Ut.x, Ke = At.y, cr = Dt.y, Mr = Ut.y, Vr = se < Ie ? se < He ? se : He : Ie < He ? Ie : He, nn = Ke < cr ? Ke < Mr ? Ke : Mr : cr < Mr ? cr : Mr, gn = se > Ie ? se > He ? se : He : Ie > He ? Ie : He, jn = Ke > cr ? Ke > Mr ? Ke : Mr : cr > Mr ? cr : Mr, ui = zf(Vr, nn, k, Z, dt), Ii = zf(gn, jn, k, Z, dt);
                    let Si = N.prevZ, Pi = N.nextZ;
                    for (; Si && Si.z >= ui && Pi && Pi.z <= Ii; ) {
                      if (Si.x >= Vr && Si.x <= gn && Si.y >= nn && Si.y <= jn && Si !== At && Si !== Ut && Kv(se, Ke, Ie, cr, He, Mr, Si.x, Si.y) && ll(Si.prev, Si, Si.next) >= 0 || (Si = Si.prevZ, Pi.x >= Vr && Pi.x <= gn && Pi.y >= nn && Pi.y <= jn && Pi !== At && Pi !== Ut && Kv(se, Ke, Ie, cr, He, Mr, Pi.x, Pi.y) && ll(Pi.prev, Pi, Pi.next) >= 0)) return !1;
                      Pi = Pi.nextZ;
                    }
                    for (; Si && Si.z >= ui; ) {
                      if (Si.x >= Vr && Si.x <= gn && Si.y >= nn && Si.y <= jn && Si !== At && Si !== Ut && Kv(se, Ke, Ie, cr, He, Mr, Si.x, Si.y) && ll(Si.prev, Si, Si.next) >= 0) return !1;
                      Si = Si.prevZ;
                    }
                    for (; Pi && Pi.z <= Ii; ) {
                      if (Pi.x >= Vr && Pi.x <= gn && Pi.y >= nn && Pi.y <= jn && Pi !== At && Pi !== Ut && Kv(se, Ke, Ie, cr, He, Mr, Pi.x, Pi.y) && ll(Pi.prev, Pi, Pi.next) >= 0) return !1;
                      Pi = Pi.nextZ;
                    }
                    return !0;
                  }
                  function q1(N, k) {
                    let Z = N;
                    do {
                      const dt = Z.prev, At = Z.next.next;
                      !M0(dt, At) && Jv(dt, Z, Z.next, At) && Vp(dt, At) && Vp(At, dt) && (k.push(dt.i, Z.i, At.i), Hp(Z), Hp(Z.next), Z = N = At), Z = Z.next;
                    } while (Z !== N);
                    return bv(Z);
                  }
                  function tx(N, k, Z, dt, At, Dt) {
                    let Ut = N;
                    do {
                      let se = Ut.next.next;
                      for (; se !== Ut.prev; ) {
                        if (Ut.i !== se.i && ox(Ut, se)) {
                          let Ie = Vy(Ut, se);
                          Ut = bv(Ut, Ut.next), Ie = bv(Ie, Ie.next), Bp(Ut, k, Z, dt, At, Dt, 0), Bp(Ie, k, Z, dt, At, Dt, 0);
                          return;
                        }
                        se = se.next;
                      }
                      Ut = Ut.next;
                    } while (Ut !== N);
                  }
                  function ex(N, k, Z, dt) {
                    const At = [];
                    for (let Dt = 0, Ut = k.length; Dt < Ut; Dt++) {
                      const se = k[Dt] * dt, Ie = Dt < Ut - 1 ? k[Dt + 1] * dt : N.length, He = Tg(N, se, Ie, dt, !1);
                      He === He.next && (He.steiner = !0), At.push(ax(He));
                    }
                    At.sort(rx);
                    for (let Dt = 0; Dt < At.length; Dt++)
                      Z = Yv(At[Dt], Z);
                    return Z;
                  }
                  function rx(N, k) {
                    return N.x - k.x;
                  }
                  function Yv(N, k) {
                    const Z = nx(N, k);
                    if (!Z)
                      return k;
                    const dt = Vy(Z, N);
                    return bv(dt, dt.next), bv(Z, Z.next);
                  }
                  function nx(N, k) {
                    let Z = k;
                    const dt = N.x, At = N.y;
                    let Dt = -1 / 0, Ut;
                    do {
                      if (At <= Z.y && At >= Z.next.y && Z.next.y !== Z.y) {
                        const cr = Z.x + (At - Z.y) * (Z.next.x - Z.x) / (Z.next.y - Z.y);
                        if (cr <= dt && cr > Dt && (Dt = cr, Ut = Z.x < Z.next.x ? Z : Z.next, cr === dt))
                          return Ut;
                      }
                      Z = Z.next;
                    } while (Z !== k);
                    if (!Ut) return null;
                    const se = Ut, Ie = Ut.x, He = Ut.y;
                    let Ke = 1 / 0;
                    Z = Ut;
                    do {
                      if (dt >= Z.x && Z.x >= Ie && dt !== Z.x && Kv(At < He ? dt : Dt, At, Ie, He, At < He ? Dt : dt, At, Z.x, Z.y)) {
                        const cr = Math.abs(At - Z.y) / (dt - Z.x);
                        Vp(Z, N) && (cr < Ke || cr === Ke && (Z.x > Ut.x || Z.x === Ut.x && ix(Ut, Z))) && (Ut = Z, Ke = cr);
                      }
                      Z = Z.next;
                    } while (Z !== se);
                    return Ut;
                  }
                  function ix(N, k) {
                    return ll(N.prev, N, k.prev) < 0 && ll(k.next, N, N.next) < 0;
                  }
                  function Ag(N, k, Z, dt) {
                    let At = N;
                    do
                      At.z === 0 && (At.z = zf(At.x, At.y, k, Z, dt)), At.prevZ = At.prev, At.nextZ = At.next, At = At.next;
                    while (At !== N);
                    At.prevZ.nextZ = null, At.prevZ = null, Np(At);
                  }
                  function Np(N) {
                    let k, Z = 1;
                    do {
                      let dt = N, At;
                      N = null;
                      let Dt = null;
                      for (k = 0; dt; ) {
                        k++;
                        let Ut = dt, se = 0;
                        for (let He = 0; He < Z && (se++, Ut = Ut.nextZ, !!Ut); He++)
                          ;
                        let Ie = Z;
                        for (; se > 0 || Ie > 0 && Ut; )
                          se !== 0 && (Ie === 0 || !Ut || dt.z <= Ut.z) ? (At = dt, dt = dt.nextZ, se--) : (At = Ut, Ut = Ut.nextZ, Ie--), Dt ? Dt.nextZ = At : N = At, At.prevZ = Dt, Dt = At;
                        dt = Ut;
                      }
                      Dt.nextZ = null, Z *= 2;
                    } while (k > 1);
                    return N;
                  }
                  function zf(N, k, Z, dt, At) {
                    return N = (N - Z) * At | 0, k = (k - dt) * At | 0, N = (N | N << 8) & 16711935, N = (N | N << 4) & 252645135, N = (N | N << 2) & 858993459, N = (N | N << 1) & 1431655765, k = (k | k << 8) & 16711935, k = (k | k << 4) & 252645135, k = (k | k << 2) & 858993459, k = (k | k << 1) & 1431655765, N | k << 1;
                  }
                  function ax(N) {
                    let k = N, Z = N;
                    do
                      (k.x < Z.x || k.x === Z.x && k.y < Z.y) && (Z = k), k = k.next;
                    while (k !== N);
                    return Z;
                  }
                  function Kv(N, k, Z, dt, At, Dt, Ut, se) {
                    return (At - Ut) * (k - se) >= (N - Ut) * (Dt - se) && (N - Ut) * (dt - se) >= (Z - Ut) * (k - se) && (Z - Ut) * (Dt - se) >= (At - Ut) * (dt - se);
                  }
                  function ox(N, k) {
                    return N.next.i !== k.i && N.prev.i !== k.i && !sx(N, k) && // dones't intersect other edges
                    (Vp(N, k) && Vp(k, N) && lx(N, k) && // locally visible
                    (ll(N.prev, N, k.prev) || ll(N, k.prev, k)) || // does not create opposite-facing sectors
                    M0(N, k) && ll(N.prev, N, N.next) > 0 && ll(k.prev, k, k.next) > 0);
                  }
                  function ll(N, k, Z) {
                    return (k.y - N.y) * (Z.x - k.x) - (k.x - N.x) * (Z.y - k.y);
                  }
                  function M0(N, k) {
                    return N.x === k.x && N.y === k.y;
                  }
                  function Jv(N, k, Z, dt) {
                    const At = E0(ll(N, k, Z)), Dt = E0(ll(N, k, dt)), Ut = E0(ll(Z, dt, N)), se = E0(ll(Z, dt, k));
                    return !!(At !== Dt && Ut !== se || At === 0 && Up(N, Z, k) || Dt === 0 && Up(N, dt, k) || Ut === 0 && Up(Z, N, dt) || se === 0 && Up(Z, k, dt));
                  }
                  function Up(N, k, Z) {
                    return k.x <= Math.max(N.x, Z.x) && k.x >= Math.min(N.x, Z.x) && k.y <= Math.max(N.y, Z.y) && k.y >= Math.min(N.y, Z.y);
                  }
                  function E0(N) {
                    return N > 0 ? 1 : N < 0 ? -1 : 0;
                  }
                  function sx(N, k) {
                    let Z = N;
                    do {
                      if (Z.i !== N.i && Z.next.i !== N.i && Z.i !== k.i && Z.next.i !== k.i && Jv(Z, Z.next, N, k)) return !0;
                      Z = Z.next;
                    } while (Z !== N);
                    return !1;
                  }
                  function Vp(N, k) {
                    return ll(N.prev, N, N.next) < 0 ? ll(N, k, N.next) >= 0 && ll(N, N.prev, k) >= 0 : ll(N, k, N.prev) < 0 || ll(N, N.next, k) < 0;
                  }
                  function lx(N, k) {
                    let Z = N, dt = !1;
                    const At = (N.x + k.x) / 2, Dt = (N.y + k.y) / 2;
                    do
                      Z.y > Dt != Z.next.y > Dt && Z.next.y !== Z.y && At < (Z.next.x - Z.x) * (Dt - Z.y) / (Z.next.y - Z.y) + Z.x && (dt = !dt), Z = Z.next;
                    while (Z !== N);
                    return dt;
                  }
                  function Vy(N, k) {
                    const Z = Sg(N.i, N.x, N.y), dt = Sg(k.i, k.x, k.y), At = N.next, Dt = k.prev;
                    return N.next = k, k.prev = N, Z.next = At, At.prev = Z, dt.next = Z, Z.prev = dt, Dt.next = dt, dt.prev = Dt, dt;
                  }
                  function Hy(N, k, Z, dt) {
                    const At = Sg(N, k, Z);
                    return dt ? (At.next = dt.next, At.prev = dt, dt.next.prev = At, dt.next = At) : (At.prev = At, At.next = At), At;
                  }
                  function Hp(N) {
                    N.next.prev = N.prev, N.prev.next = N.next, N.prevZ && (N.prevZ.nextZ = N.nextZ), N.nextZ && (N.nextZ.prevZ = N.prevZ);
                  }
                  function Sg(N, k, Z) {
                    return {
                      i: N,
                      // vertex index in coordinates array
                      x: k,
                      y: Z,
                      // vertex coordinates
                      prev: null,
                      // previous and next vertex nodes in a polygon ring
                      next: null,
                      z: 0,
                      // z-order curve value
                      prevZ: null,
                      // previous and next nodes in z-order
                      nextZ: null,
                      steiner: !1
                      // indicates whether this is a steiner point
                    };
                  }
                  function Gy(N, k, Z, dt) {
                    let At = 0;
                    for (let Dt = k, Ut = Z - dt; Dt < Z; Dt += dt)
                      At += (N[Ut] - N[Dt]) * (N[Dt + 1] + N[Ut + 1]), Ut = Dt;
                    return At;
                  }
                  function Mg(N, k, Z) {
                    const dt = Z.patternDependencies;
                    let At = !1;
                    for (const Dt of k) {
                      const Ut = Dt.paint.get(`${N}-pattern`);
                      Ut.isConstant() || (At = !0);
                      const se = Ut.constantOr(null);
                      se && (At = !0, dt[se.to] = !0, dt[se.from] = !0);
                    }
                    return At;
                  }
                  function Eg(N, k, Z, dt, At) {
                    const Dt = At.patternDependencies;
                    for (const Ut of k) {
                      const Ie = Ut.paint.get(`${N}-pattern`).value;
                      if (Ie.kind !== "constant") {
                        let He = Ie.evaluate({ zoom: dt - 1 }, Z, {}, At.availableImages), Ke = Ie.evaluate({ zoom: dt }, Z, {}, At.availableImages), cr = Ie.evaluate({ zoom: dt + 1 }, Z, {}, At.availableImages);
                        He = He && He.name ? He.name : He, Ke = Ke && Ke.name ? Ke.name : Ke, cr = cr && cr.name ? cr.name : cr, Dt[He] = !0, Dt[Ke] = !0, Dt[cr] = !0, Z.patterns[Ut.id] = { min: He, mid: Ke, max: cr };
                      }
                    }
                    return Z;
                  }
                  const ux = 500;
                  class Cg {
                    constructor(k) {
                      this.zoom = k.zoom, this.overscaling = k.overscaling, this.layers = k.layers, this.layerIds = this.layers.map((Z) => Z.id), this.index = k.index, this.hasPattern = !1, this.patternFeatures = [], this.layoutVertexArray = new po(), this.indexArray = new au(), this.indexArray2 = new nf(), this.programConfigurations = new Re(k.layers, k.zoom), this.segments = new Qo(), this.segments2 = new Qo(), this.stateDependentLayerIds = this.layers.filter((Z) => Z.isStateDependent()).map((Z) => Z.id);
                    }
                    populate(k, Z, dt) {
                      this.hasPattern = Mg("fill", this.layers, Z);
                      const At = this.layers[0].layout.get("fill-sort-key"), Dt = !At.isConstant(), Ut = [];
                      for (const { feature: se, id: Ie, index: He, sourceLayerIndex: Ke } of k) {
                        const cr = this.layers[0]._featureFilter.needGeometry, Mr = Gn(se, cr);
                        if (!this.layers[0]._featureFilter.filter(new Ko(this.zoom), Mr, dt))
                          continue;
                        const Vr = Dt ? At.evaluate(Mr, {}, dt, Z.availableImages) : void 0, nn = {
                          id: Ie,
                          properties: se.properties,
                          type: se.type,
                          sourceLayerIndex: Ke,
                          index: He,
                          geometry: cr ? Mr.geometry : Rn(se),
                          patterns: {},
                          sortKey: Vr
                        };
                        Ut.push(nn);
                      }
                      Dt && Ut.sort((se, Ie) => se.sortKey - Ie.sortKey);
                      for (const se of Ut) {
                        const { geometry: Ie, index: He, sourceLayerIndex: Ke } = se;
                        if (this.hasPattern) {
                          const Mr = Eg("fill", this.layers, se, this.zoom, Z);
                          this.patternFeatures.push(Mr);
                        } else
                          this.addFeature(se, Ie, He, dt, {});
                        const cr = k[He].feature;
                        Z.featureIndex.insert(cr, Ie, He, Ke, this.index);
                      }
                    }
                    update(k, Z, dt) {
                      this.stateDependentLayers.length && this.programConfigurations.updatePaintArrays(k, Z, this.stateDependentLayers, dt);
                    }
                    addFeatures(k, Z, dt) {
                      for (const At of this.patternFeatures)
                        this.addFeature(At, At.geometry, At.index, Z, dt);
                    }
                    isEmpty() {
                      return this.layoutVertexArray.length === 0;
                    }
                    uploadPending() {
                      return !this.uploaded || this.programConfigurations.needsUpload;
                    }
                    upload(k) {
                      this.uploaded || (this.layoutVertexBuffer = k.createVertexBuffer(this.layoutVertexArray, J1), this.indexBuffer = k.createIndexBuffer(this.indexArray), this.indexBuffer2 = k.createIndexBuffer(this.indexArray2)), this.programConfigurations.upload(k), this.uploaded = !0;
                    }
                    destroy() {
                      this.layoutVertexBuffer && (this.layoutVertexBuffer.destroy(), this.indexBuffer.destroy(), this.indexBuffer2.destroy(), this.programConfigurations.destroy(), this.segments.destroy(), this.segments2.destroy());
                    }
                    addFeature(k, Z, dt, At, Dt) {
                      for (const Ut of xs(Z, ux)) {
                        let se = 0;
                        for (const Vr of Ut)
                          se += Vr.length;
                        const Ie = this.segments.prepareSegment(se, this.layoutVertexArray, this.indexArray), He = Ie.vertexLength, Ke = [], cr = [];
                        for (const Vr of Ut) {
                          if (Vr.length === 0)
                            continue;
                          Vr !== Ut[0] && cr.push(Ke.length / 2);
                          const nn = this.segments2.prepareSegment(Vr.length, this.layoutVertexArray, this.indexArray2), gn = nn.vertexLength;
                          this.layoutVertexArray.emplaceBack(Vr[0].x, Vr[0].y), this.indexArray2.emplaceBack(gn + Vr.length - 1, gn), Ke.push(Vr[0].x), Ke.push(Vr[0].y);
                          for (let jn = 1; jn < Vr.length; jn++)
                            this.layoutVertexArray.emplaceBack(Vr[jn].x, Vr[jn].y), this.indexArray2.emplaceBack(gn + jn - 1, gn + jn), Ke.push(Vr[jn].x), Ke.push(Vr[jn].y);
                          nn.vertexLength += Vr.length, nn.primitiveLength += Vr.length;
                        }
                        const Mr = _g(Ke, cr);
                        for (let Vr = 0; Vr < Mr.length; Vr += 3)
                          this.indexArray.emplaceBack(He + Mr[Vr], He + Mr[Vr + 1], He + Mr[Vr + 2]);
                        Ie.vertexLength += se, Ie.primitiveLength += Mr.length / 3;
                      }
                      this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length, k, dt, Dt, At);
                    }
                  }
                  aa("FillBucket", Cg, { omit: ["layers", "patternFeatures"] });
                  let Lg;
                  const Wy = () => Lg = Lg || new Ws({
                    "fill-sort-key": new Ua(or.layout_fill["fill-sort-key"])
                  });
                  let _u;
                  const cx = () => _u = _u || new Ws({
                    "fill-antialias": new ka(or.paint_fill["fill-antialias"]),
                    "fill-opacity": new Ua(or.paint_fill["fill-opacity"]),
                    "fill-color": new Ua(or.paint_fill["fill-color"]),
                    "fill-outline-color": new Ua(or.paint_fill["fill-outline-color"]),
                    "fill-translate": new ka(or.paint_fill["fill-translate"]),
                    "fill-translate-anchor": new ka(or.paint_fill["fill-translate-anchor"]),
                    "fill-pattern": new kh(or.paint_fill["fill-pattern"])
                  });
                  var fx = { get paint() {
                    return cx();
                  }, get layout() {
                    return Wy();
                  } };
                  class jy extends oc {
                    constructor(k) {
                      super(k, fx);
                    }
                    recalculate(k, Z) {
                      super.recalculate(k, Z);
                      const dt = this.paint._values["fill-outline-color"];
                      dt.value.kind === "constant" && dt.value.value === void 0 && (this.paint._values["fill-outline-color"] = this.paint._values["fill-color"]);
                    }
                    createBucket(k) {
                      return new Cg(k);
                    }
                    queryRadius() {
                      return ca(this.paint.get("fill-translate"));
                    }
                    queryIntersectsFeature(k, Z, dt, At, Dt, Ut, se) {
                      const Ie = Uo(k, this.paint.get("fill-translate"), this.paint.get("fill-translate-anchor"), Ut.angle, se);
                      return Ci(Ie, At);
                    }
                    isTileClipped() {
                      return !0;
                    }
                  }
                  const hx = Ls([
                    { name: "a_pos", components: 2, type: "Int16" },
                    { name: "a_normal_ed", components: 4, type: "Int16" }
                  ], 4), Zy = Ls([
                    { name: "a_centroid", components: 2, type: "Int16" }
                  ], 4), { members: dx, size: vx, alignment: _w } = hx;
                  var iv = {}, px = A, Xy = wv;
                  function wv(N, k, Z, dt, At) {
                    this.properties = {}, this.extent = Z, this.type = 0, this._pbf = N, this._geometry = -1, this._keys = dt, this._values = At, N.readFields(gx, this, k);
                  }
                  function gx(N, k, Z) {
                    N == 1 ? k.id = Z.readVarint() : N == 2 ? yx(Z, k) : N == 3 ? k.type = Z.readVarint() : N == 4 && (k._geometry = Z.pos);
                  }
                  function yx(N, k) {
                    for (var Z = N.readVarint() + N.pos; N.pos < Z; ) {
                      var dt = k._keys[N.readVarint()], At = k._values[N.readVarint()];
                      k.properties[dt] = At;
                    }
                  }
                  wv.types = ["Unknown", "Point", "LineString", "Polygon"], wv.prototype.loadGeometry = function() {
                    var N = this._pbf;
                    N.pos = this._geometry;
                    for (var k = N.readVarint() + N.pos, Z = 1, dt = 0, At = 0, Dt = 0, Ut = [], se; N.pos < k; ) {
                      if (dt <= 0) {
                        var Ie = N.readVarint();
                        Z = Ie & 7, dt = Ie >> 3;
                      }
                      if (dt--, Z === 1 || Z === 2)
                        At += N.readSVarint(), Dt += N.readSVarint(), Z === 1 && (se && Ut.push(se), se = []), se.push(new px(At, Dt));
                      else if (Z === 7)
                        se && se.push(se[0].clone());
                      else
                        throw new Error("unknown command " + Z);
                    }
                    return se && Ut.push(se), Ut;
                  }, wv.prototype.bbox = function() {
                    var N = this._pbf;
                    N.pos = this._geometry;
                    for (var k = N.readVarint() + N.pos, Z = 1, dt = 0, At = 0, Dt = 0, Ut = 1 / 0, se = -1 / 0, Ie = 1 / 0, He = -1 / 0; N.pos < k; ) {
                      if (dt <= 0) {
                        var Ke = N.readVarint();
                        Z = Ke & 7, dt = Ke >> 3;
                      }
                      if (dt--, Z === 1 || Z === 2)
                        At += N.readSVarint(), Dt += N.readSVarint(), At < Ut && (Ut = At), At > se && (se = At), Dt < Ie && (Ie = Dt), Dt > He && (He = Dt);
                      else if (Z !== 7)
                        throw new Error("unknown command " + Z);
                    }
                    return [Ut, Ie, se, He];
                  }, wv.prototype.toGeoJSON = function(N, k, Z) {
                    var dt = this.extent * Math.pow(2, Z), At = this.extent * N, Dt = this.extent * k, Ut = this.loadGeometry(), se = wv.types[this.type], Ie, He;
                    function Ke(Vr) {
                      for (var nn = 0; nn < Vr.length; nn++) {
                        var gn = Vr[nn], jn = 180 - (gn.y + Dt) * 360 / dt;
                        Vr[nn] = [
                          (gn.x + At) * 360 / dt - 180,
                          360 / Math.PI * Math.atan(Math.exp(jn * Math.PI / 180)) - 90
                        ];
                      }
                    }
                    switch (this.type) {
                      case 1:
                        var cr = [];
                        for (Ie = 0; Ie < Ut.length; Ie++)
                          cr[Ie] = Ut[Ie][0];
                        Ut = cr, Ke(Ut);
                        break;
                      case 2:
                        for (Ie = 0; Ie < Ut.length; Ie++)
                          Ke(Ut[Ie]);
                        break;
                      case 3:
                        for (Ut = mx(Ut), Ie = 0; Ie < Ut.length; Ie++)
                          for (He = 0; He < Ut[Ie].length; He++)
                            Ke(Ut[Ie][He]);
                        break;
                    }
                    Ut.length === 1 ? Ut = Ut[0] : se = "Multi" + se;
                    var Mr = {
                      type: "Feature",
                      geometry: {
                        type: se,
                        coordinates: Ut
                      },
                      properties: this.properties
                    };
                    return "id" in this && (Mr.id = this.id), Mr;
                  };
                  function mx(N) {
                    var k = N.length;
                    if (k <= 1) return [N];
                    for (var Z = [], dt, At, Dt = 0; Dt < k; Dt++) {
                      var Ut = xx(N[Dt]);
                      Ut !== 0 && (At === void 0 && (At = Ut < 0), At === Ut < 0 ? (dt && Z.push(dt), dt = [N[Dt]]) : dt.push(N[Dt]));
                    }
                    return dt && Z.push(dt), Z;
                  }
                  function xx(N) {
                    for (var k = 0, Z = 0, dt = N.length, At = dt - 1, Dt, Ut; Z < dt; At = Z++)
                      Dt = N[Z], Ut = N[At], k += (Ut.x - Dt.x) * (Dt.y + Ut.y);
                    return k;
                  }
                  var Gp = Xy, Yy = Dl;
                  function Dl(N, k) {
                    this.version = 1, this.name = null, this.extent = 4096, this.length = 0, this._pbf = N, this._keys = [], this._values = [], this._features = [], N.readFields(bx, this, k), this.length = this._features.length;
                  }
                  function bx(N, k, Z) {
                    N === 15 ? k.version = Z.readVarint() : N === 1 ? k.name = Z.readString() : N === 5 ? k.extent = Z.readVarint() : N === 2 ? k._features.push(Z.pos) : N === 3 ? k._keys.push(Z.readString()) : N === 4 && k._values.push(wx(Z));
                  }
                  function wx(N) {
                    for (var k = null, Z = N.readVarint() + N.pos; N.pos < Z; ) {
                      var dt = N.readVarint() >> 3;
                      k = dt === 1 ? N.readString() : dt === 2 ? N.readFloat() : dt === 3 ? N.readDouble() : dt === 4 ? N.readVarint64() : dt === 5 ? N.readVarint() : dt === 6 ? N.readSVarint() : dt === 7 ? N.readBoolean() : null;
                    }
                    return k;
                  }
                  Dl.prototype.feature = function(N) {
                    if (N < 0 || N >= this._features.length) throw new Error("feature index out of bounds");
                    this._pbf.pos = this._features[N];
                    var k = this._pbf.readVarint() + this._pbf.pos;
                    return new Gp(this._pbf, k, this.extent, this._keys, this._values);
                  };
                  var C0 = Yy, L0 = cs;
                  function cs(N, k) {
                    this.layers = N.readFields(Pg, {}, k);
                  }
                  function Pg(N, k, Z) {
                    if (N === 3) {
                      var dt = new C0(Z, Z.readVarint() + Z.pos);
                      dt.length && (k[dt.name] = dt);
                    }
                  }
                  iv.VectorTile = L0, iv.VectorTileFeature = Xy, iv.VectorTileLayer = Yy;
                  const Ky = iv.VectorTileFeature.types, _x = 500, P0 = Math.pow(2, 13);
                  function Wp(N, k, Z, dt, At, Dt, Ut, se) {
                    N.emplaceBack(
                      // a_pos
                      k,
                      Z,
                      // a_normal_ed: 3-component normal and 1-component edgedistance
                      Math.floor(dt * P0) * 2 + Ut,
                      At * P0 * 2,
                      Dt * P0 * 2,
                      // edgedistance (used for wrapping patterns around extrusion sides)
                      Math.round(se)
                    );
                  }
                  class Vh {
                    constructor(k) {
                      this.zoom = k.zoom, this.overscaling = k.overscaling, this.layers = k.layers, this.layerIds = this.layers.map((Z) => Z.id), this.index = k.index, this.hasPattern = !1, this.layoutVertexArray = new Mo(), this.centroidVertexArray = new uo(), this.indexArray = new au(), this.programConfigurations = new Re(k.layers, k.zoom), this.segments = new Qo(), this.stateDependentLayerIds = this.layers.filter((Z) => Z.isStateDependent()).map((Z) => Z.id);
                    }
                    populate(k, Z, dt) {
                      this.features = [], this.hasPattern = Mg("fill-extrusion", this.layers, Z);
                      for (const { feature: At, id: Dt, index: Ut, sourceLayerIndex: se } of k) {
                        const Ie = this.layers[0]._featureFilter.needGeometry, He = Gn(At, Ie);
                        if (!this.layers[0]._featureFilter.filter(new Ko(this.zoom), He, dt))
                          continue;
                        const Ke = {
                          id: Dt,
                          sourceLayerIndex: se,
                          index: Ut,
                          geometry: Ie ? He.geometry : Rn(At),
                          properties: At.properties,
                          type: At.type,
                          patterns: {}
                        };
                        this.hasPattern ? this.features.push(Eg("fill-extrusion", this.layers, Ke, this.zoom, Z)) : this.addFeature(Ke, Ke.geometry, Ut, dt, {}), Z.featureIndex.insert(At, Ke.geometry, Ut, se, this.index, !0);
                      }
                    }
                    addFeatures(k, Z, dt) {
                      for (const At of this.features) {
                        const { geometry: Dt } = At;
                        this.addFeature(At, Dt, At.index, Z, dt);
                      }
                    }
                    update(k, Z, dt) {
                      this.stateDependentLayers.length && this.programConfigurations.updatePaintArrays(k, Z, this.stateDependentLayers, dt);
                    }
                    isEmpty() {
                      return this.layoutVertexArray.length === 0 && this.centroidVertexArray.length === 0;
                    }
                    uploadPending() {
                      return !this.uploaded || this.programConfigurations.needsUpload;
                    }
                    upload(k) {
                      this.uploaded || (this.layoutVertexBuffer = k.createVertexBuffer(this.layoutVertexArray, dx), this.centroidVertexBuffer = k.createVertexBuffer(this.centroidVertexArray, Zy.members, !0), this.indexBuffer = k.createIndexBuffer(this.indexArray)), this.programConfigurations.upload(k), this.uploaded = !0;
                    }
                    destroy() {
                      this.layoutVertexBuffer && (this.layoutVertexBuffer.destroy(), this.indexBuffer.destroy(), this.programConfigurations.destroy(), this.segments.destroy(), this.centroidVertexBuffer.destroy());
                    }
                    addFeature(k, Z, dt, At, Dt) {
                      for (const Ut of xs(Z, _x)) {
                        const se = { x: 0, y: 0, vertexCount: 0 };
                        let Ie = 0;
                        for (const nn of Ut)
                          Ie += nn.length;
                        let He = this.segments.prepareSegment(4, this.layoutVertexArray, this.indexArray);
                        for (const nn of Ut) {
                          if (nn.length === 0 || Tx(nn))
                            continue;
                          let gn = 0;
                          for (let jn = 0; jn < nn.length; jn++) {
                            const ui = nn[jn];
                            if (jn >= 1) {
                              const Ii = nn[jn - 1];
                              if (!Qv(ui, Ii)) {
                                He.vertexLength + 4 > Qo.MAX_VERTEX_ARRAY_LENGTH && (He = this.segments.prepareSegment(4, this.layoutVertexArray, this.indexArray));
                                const Si = ui.sub(Ii)._perp()._unit(), Pi = Ii.dist(ui);
                                gn + Pi > 32768 && (gn = 0), Wp(this.layoutVertexArray, ui.x, ui.y, Si.x, Si.y, 0, 0, gn), Wp(this.layoutVertexArray, ui.x, ui.y, Si.x, Si.y, 0, 1, gn), se.x += 2 * ui.x, se.y += 2 * ui.y, se.vertexCount += 2, gn += Pi, Wp(this.layoutVertexArray, Ii.x, Ii.y, Si.x, Si.y, 0, 0, gn), Wp(this.layoutVertexArray, Ii.x, Ii.y, Si.x, Si.y, 0, 1, gn), se.x += 2 * Ii.x, se.y += 2 * Ii.y, se.vertexCount += 2;
                                const Wi = He.vertexLength;
                                this.indexArray.emplaceBack(Wi, Wi + 2, Wi + 1), this.indexArray.emplaceBack(Wi + 1, Wi + 2, Wi + 3), He.vertexLength += 4, He.primitiveLength += 2;
                              }
                            }
                          }
                        }
                        if (He.vertexLength + Ie > Qo.MAX_VERTEX_ARRAY_LENGTH && (He = this.segments.prepareSegment(Ie, this.layoutVertexArray, this.indexArray)), Ky[k.type] !== "Polygon")
                          continue;
                        const Ke = [], cr = [], Mr = He.vertexLength;
                        for (const nn of Ut)
                          if (nn.length !== 0) {
                            nn !== Ut[0] && cr.push(Ke.length / 2);
                            for (let gn = 0; gn < nn.length; gn++) {
                              const jn = nn[gn];
                              Wp(this.layoutVertexArray, jn.x, jn.y, 0, 0, 1, 1, 0), se.x += jn.x, se.y += jn.y, se.vertexCount += 1, Ke.push(jn.x), Ke.push(jn.y);
                            }
                          }
                        const Vr = _g(Ke, cr);
                        for (let nn = 0; nn < Vr.length; nn += 3)
                          this.indexArray.emplaceBack(Mr + Vr[nn], Mr + Vr[nn + 2], Mr + Vr[nn + 1]);
                        He.primitiveLength += Vr.length / 3, He.vertexLength += Ie;
                        for (let nn = 0; nn < se.vertexCount; nn++) {
                          const gn = Math.floor(se.x / se.vertexCount), jn = Math.floor(se.y / se.vertexCount);
                          this.centroidVertexArray.emplaceBack(gn, jn);
                        }
                      }
                      this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length, k, dt, Dt, At);
                    }
                  }
                  aa("FillExtrusionBucket", Vh, { omit: ["layers", "features"] });
                  function Qv(N, k) {
                    return N.x === k.x && (N.x < 0 || N.x > Ar) || N.y === k.y && (N.y < 0 || N.y > Ar);
                  }
                  function Tx(N) {
                    return N.every((k) => k.x < 0) || N.every((k) => k.x > Ar) || N.every((k) => k.y < 0) || N.every((k) => k.y > Ar);
                  }
                  let Jy;
                  const Ax = () => Jy = Jy || new Ws({
                    "fill-extrusion-opacity": new ka(or["paint_fill-extrusion"]["fill-extrusion-opacity"]),
                    "fill-extrusion-color": new Ua(or["paint_fill-extrusion"]["fill-extrusion-color"]),
                    "fill-extrusion-translate": new ka(or["paint_fill-extrusion"]["fill-extrusion-translate"]),
                    "fill-extrusion-translate-anchor": new ka(or["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),
                    "fill-extrusion-pattern": new kh(or["paint_fill-extrusion"]["fill-extrusion-pattern"]),
                    "fill-extrusion-height": new Ua(or["paint_fill-extrusion"]["fill-extrusion-height"]),
                    "fill-extrusion-base": new Ua(or["paint_fill-extrusion"]["fill-extrusion-base"]),
                    "fill-extrusion-vertical-gradient": new ka(or["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])
                  });
                  var Qy = { get paint() {
                    return Ax();
                  } };
                  class Sx extends oc {
                    constructor(k) {
                      super(k, Qy);
                    }
                    createBucket(k) {
                      return new Vh(k);
                    }
                    queryRadius() {
                      return ca(this.paint.get("fill-extrusion-translate"));
                    }
                    is3D() {
                      return !0;
                    }
                    queryIntersectsFeature(k, Z, dt, At, Dt, Ut, se, Ie) {
                      const He = Uo(k, this.paint.get("fill-extrusion-translate"), this.paint.get("fill-extrusion-translate-anchor"), Ut.angle, se), Ke = this.paint.get("fill-extrusion-height").evaluate(Z, dt), cr = this.paint.get("fill-extrusion-base").evaluate(Z, dt), Mr = Cx(He, Ie, Ut, 0), Vr = Ex(At, cr, Ke, Ie), nn = Vr[0], gn = Vr[1];
                      return Mx(nn, gn, Mr);
                    }
                  }
                  function jp(N, k) {
                    return N.x * k.x + N.y * k.y;
                  }
                  function $y(N, k) {
                    if (N.length === 1) {
                      let Z = 0;
                      const dt = k[Z++];
                      let At;
                      for (; !At || dt.equals(At); )
                        if (At = k[Z++], !At)
                          return 1 / 0;
                      for (; Z < k.length; Z++) {
                        const Dt = k[Z], Ut = N[0], se = At.sub(dt), Ie = Dt.sub(dt), He = Ut.sub(dt), Ke = jp(se, se), cr = jp(se, Ie), Mr = jp(Ie, Ie), Vr = jp(He, se), nn = jp(He, Ie), gn = Ke * Mr - cr * cr, jn = (Mr * Vr - cr * nn) / gn, ui = (Ke * nn - cr * Vr) / gn, Ii = 1 - jn - ui, Si = dt.z * Ii + At.z * jn + Dt.z * ui;
                        if (isFinite(Si))
                          return Si;
                      }
                      return 1 / 0;
                    } else {
                      let Z = 1 / 0;
                      for (const dt of k)
                        Z = Math.min(Z, dt.z);
                      return Z;
                    }
                  }
                  function Mx(N, k, Z) {
                    let dt = 1 / 0;
                    Ci(Z, k) && (dt = $y(Z, k[0]));
                    for (let At = 0; At < k.length; At++) {
                      const Dt = k[At], Ut = N[At];
                      for (let se = 0; se < Dt.length - 1; se++) {
                        const Ie = Dt[se], He = Dt[se + 1], Ke = Ut[se], cr = Ut[se + 1], Mr = [Ie, He, cr, Ke, Ie];
                        Xn(Z, Mr) && (dt = Math.min(dt, $y(Z, Mr)));
                      }
                    }
                    return dt === 1 / 0 ? !1 : dt;
                  }
                  function Ex(N, k, Z, dt) {
                    const At = [], Dt = [], Ut = dt[8] * k, se = dt[9] * k, Ie = dt[10] * k, He = dt[11] * k, Ke = dt[8] * Z, cr = dt[9] * Z, Mr = dt[10] * Z, Vr = dt[11] * Z;
                    for (const nn of N) {
                      const gn = [], jn = [];
                      for (const ui of nn) {
                        const Ii = ui.x, Si = ui.y, Pi = dt[0] * Ii + dt[4] * Si + dt[12], Wi = dt[1] * Ii + dt[5] * Si + dt[13], Ma = dt[2] * Ii + dt[6] * Si + dt[14], ja = dt[3] * Ii + dt[7] * Si + dt[15], ho = Pi + Ut, ro = Wi + se, Ra = Ma + Ie, no = ja + He, Ha = Pi + Ke, eo = Wi + cr, $i = Ma + Mr, za = ja + Vr, Ja = new u(ho / no, ro / no);
                        Ja.z = Ra / no, gn.push(Ja);
                        const Bo = new u(Ha / za, eo / za);
                        Bo.z = $i / za, jn.push(Bo);
                      }
                      At.push(gn), Dt.push(jn);
                    }
                    return [At, Dt];
                  }
                  function Cx(N, k, Z, dt) {
                    const At = [];
                    for (const Dt of N) {
                      const Ut = [Dt.x, Dt.y, dt, 1];
                      md(Ut, Ut, k), At.push(new u(Ut[0] / Ut[3], Ut[1] / Ut[3]));
                    }
                    return At;
                  }
                  const Lx = Ls([
                    { name: "a_pos_normal", components: 2, type: "Int16" },
                    { name: "a_data", components: 4, type: "Uint8" }
                  ], 4), { members: Px, size: Tw, alignment: Ig } = Lx, $v = Ls([
                    { name: "a_uv_x", components: 1, type: "Float32" },
                    { name: "a_split_index", components: 1, type: "Float32" }
                  ]), { members: qy, size: Aw, alignment: Sw } = $v, Ix = iv.VectorTileFeature.types, I0 = 63, Rx = Math.cos(75 / 2 * (Math.PI / 180)), Dx = 15, kx = 20, zx = 15, Rg = 1 / 2, Dg = Math.pow(2, zx - 1) / Rg;
                  class Vu {
                    constructor(k) {
                      this.zoom = k.zoom, this.overscaling = k.overscaling, this.layers = k.layers, this.layerIds = this.layers.map((Z) => Z.id), this.index = k.index, this.hasPattern = !1, this.patternFeatures = [], this.lineClipsArray = [], this.gradients = {}, this.layers.forEach((Z) => {
                        this.gradients[Z.id] = {};
                      }), this.layoutVertexArray = new Zo(), this.layoutVertexArray2 = new _o(), this.indexArray = new au(), this.programConfigurations = new Re(k.layers, k.zoom), this.segments = new Qo(), this.maxLineLength = 0, this.stateDependentLayerIds = this.layers.filter((Z) => Z.isStateDependent()).map((Z) => Z.id);
                    }
                    populate(k, Z, dt) {
                      this.hasPattern = Mg("line", this.layers, Z);
                      const At = this.layers[0].layout.get("line-sort-key"), Dt = !At.isConstant(), Ut = [];
                      for (const { feature: se, id: Ie, index: He, sourceLayerIndex: Ke } of k) {
                        const cr = this.layers[0]._featureFilter.needGeometry, Mr = Gn(se, cr);
                        if (!this.layers[0]._featureFilter.filter(new Ko(this.zoom), Mr, dt))
                          continue;
                        const Vr = Dt ? At.evaluate(Mr, {}, dt) : void 0, nn = {
                          id: Ie,
                          properties: se.properties,
                          type: se.type,
                          sourceLayerIndex: Ke,
                          index: He,
                          geometry: cr ? Mr.geometry : Rn(se),
                          patterns: {},
                          sortKey: Vr
                        };
                        Ut.push(nn);
                      }
                      Dt && Ut.sort((se, Ie) => se.sortKey - Ie.sortKey);
                      for (const se of Ut) {
                        const { geometry: Ie, index: He, sourceLayerIndex: Ke } = se;
                        if (this.hasPattern) {
                          const Mr = Eg("line", this.layers, se, this.zoom, Z);
                          this.patternFeatures.push(Mr);
                        } else
                          this.addFeature(se, Ie, He, dt, {});
                        const cr = k[He].feature;
                        Z.featureIndex.insert(cr, Ie, He, Ke, this.index);
                      }
                    }
                    update(k, Z, dt) {
                      this.stateDependentLayers.length && this.programConfigurations.updatePaintArrays(k, Z, this.stateDependentLayers, dt);
                    }
                    addFeatures(k, Z, dt) {
                      for (const At of this.patternFeatures)
                        this.addFeature(At, At.geometry, At.index, Z, dt);
                    }
                    isEmpty() {
                      return this.layoutVertexArray.length === 0;
                    }
                    uploadPending() {
                      return !this.uploaded || this.programConfigurations.needsUpload;
                    }
                    upload(k) {
                      this.uploaded || (this.layoutVertexArray2.length !== 0 && (this.layoutVertexBuffer2 = k.createVertexBuffer(this.layoutVertexArray2, qy)), this.layoutVertexBuffer = k.createVertexBuffer(this.layoutVertexArray, Px), this.indexBuffer = k.createIndexBuffer(this.indexArray)), this.programConfigurations.upload(k), this.uploaded = !0;
                    }
                    destroy() {
                      this.layoutVertexBuffer && (this.layoutVertexBuffer.destroy(), this.indexBuffer.destroy(), this.programConfigurations.destroy(), this.segments.destroy());
                    }
                    lineFeatureClips(k) {
                      if (k.properties && Object.prototype.hasOwnProperty.call(k.properties, "mapbox_clip_start") && Object.prototype.hasOwnProperty.call(k.properties, "mapbox_clip_end")) {
                        const Z = +k.properties.mapbox_clip_start, dt = +k.properties.mapbox_clip_end;
                        return { start: Z, end: dt };
                      }
                    }
                    addFeature(k, Z, dt, At, Dt) {
                      const Ut = this.layers[0].layout, se = Ut.get("line-join").evaluate(k, {}), Ie = Ut.get("line-cap"), He = Ut.get("line-miter-limit"), Ke = Ut.get("line-round-limit");
                      this.lineClips = this.lineFeatureClips(k);
                      for (const cr of Z)
                        this.addLine(cr, k, se, Ie, He, Ke);
                      this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length, k, dt, Dt, At);
                    }
                    addLine(k, Z, dt, At, Dt, Ut) {
                      if (this.distance = 0, this.scaledDistance = 0, this.totalDistance = 0, this.lineClips) {
                        this.lineClipsArray.push(this.lineClips);
                        for (let ui = 0; ui < k.length - 1; ui++)
                          this.totalDistance += k[ui].dist(k[ui + 1]);
                        this.updateScaledDistance(), this.maxLineLength = Math.max(this.maxLineLength, this.totalDistance);
                      }
                      const se = Ix[Z.type] === "Polygon";
                      let Ie = k.length;
                      for (; Ie >= 2 && k[Ie - 1].equals(k[Ie - 2]); )
                        Ie--;
                      let He = 0;
                      for (; He < Ie - 1 && k[He].equals(k[He + 1]); )
                        He++;
                      if (Ie < (se ? 3 : 2))
                        return;
                      dt === "bevel" && (Dt = 1.05);
                      const Ke = this.overscaling <= 16 ? Dx * Ar / (512 * this.overscaling) : 0, cr = this.segments.prepareSegment(Ie * 10, this.layoutVertexArray, this.indexArray);
                      let Mr, Vr, nn, gn, jn;
                      this.e1 = this.e2 = -1, se && (Mr = k[Ie - 2], jn = k[He].sub(Mr)._unit()._perp());
                      for (let ui = He; ui < Ie; ui++) {
                        if (nn = ui === Ie - 1 ? se ? k[He + 1] : void 0 : (
                          // if it's a polygon, treat the last vertex like the first
                          k[ui + 1]
                        ), nn && k[ui].equals(nn))
                          continue;
                        jn && (gn = jn), Mr && (Vr = Mr), Mr = k[ui], jn = nn ? nn.sub(Mr)._unit()._perp() : gn, gn = gn || jn;
                        let Ii = gn.add(jn);
                        (Ii.x !== 0 || Ii.y !== 0) && Ii._unit();
                        const Si = gn.x * jn.x + gn.y * jn.y, Pi = Ii.x * jn.x + Ii.y * jn.y, Wi = Pi !== 0 ? 1 / Pi : 1 / 0, Ma = 2 * Math.sqrt(2 - 2 * Pi), ja = Pi < Rx && Vr && nn, ho = gn.x * jn.y - gn.y * jn.x > 0;
                        if (ja && ui > He) {
                          const no = Mr.dist(Vr);
                          if (no > 2 * Ke) {
                            const Ha = Mr.sub(Mr.sub(Vr)._mult(Ke / no)._round());
                            this.updateDistance(Vr, Ha), this.addCurrentVertex(Ha, gn, 0, 0, cr), Vr = Ha;
                          }
                        }
                        const ro = Vr && nn;
                        let Ra = ro ? dt : se ? "butt" : At;
                        if (ro && Ra === "round" && (Wi < Ut ? Ra = "miter" : Wi <= 2 && (Ra = "fakeround")), Ra === "miter" && Wi > Dt && (Ra = "bevel"), Ra === "bevel" && (Wi > 2 && (Ra = "flipbevel"), Wi < Dt && (Ra = "miter")), Vr && this.updateDistance(Vr, Mr), Ra === "miter")
                          Ii._mult(Wi), this.addCurrentVertex(Mr, Ii, 0, 0, cr);
                        else if (Ra === "flipbevel") {
                          if (Wi > 100)
                            Ii = jn.mult(-1);
                          else {
                            const no = Wi * gn.add(jn).mag() / gn.sub(jn).mag();
                            Ii._perp()._mult(no * (ho ? -1 : 1));
                          }
                          this.addCurrentVertex(Mr, Ii, 0, 0, cr), this.addCurrentVertex(Mr, Ii.mult(-1), 0, 0, cr);
                        } else if (Ra === "bevel" || Ra === "fakeround") {
                          const no = -Math.sqrt(Wi * Wi - 1), Ha = ho ? no : 0, eo = ho ? 0 : no;
                          if (Vr && this.addCurrentVertex(Mr, gn, Ha, eo, cr), Ra === "fakeround") {
                            const $i = Math.round(Ma * 180 / Math.PI / kx);
                            for (let za = 1; za < $i; za++) {
                              let Ja = za / $i;
                              if (Ja !== 0.5) {
                                const rl = Ja - 0.5, Rc = 1.0904 + Si * (-3.2452 + Si * (3.55645 - Si * 1.43519)), ms = 0.848013 + Si * (-1.06021 + Si * 0.215638);
                                Ja = Ja + Ja * rl * (Ja - 1) * (Rc * rl * rl + ms);
                              }
                              const Bo = jn.sub(gn)._mult(Ja)._add(gn)._unit()._mult(ho ? -1 : 1);
                              this.addHalfVertex(Mr, Bo.x, Bo.y, !1, ho, 0, cr);
                            }
                          }
                          nn && this.addCurrentVertex(Mr, jn, -Ha, -eo, cr);
                        } else if (Ra === "butt")
                          this.addCurrentVertex(Mr, Ii, 0, 0, cr);
                        else if (Ra === "square") {
                          const no = Vr ? 1 : -1;
                          this.addCurrentVertex(Mr, Ii, no, no, cr);
                        } else Ra === "round" && (Vr && (this.addCurrentVertex(Mr, gn, 0, 0, cr), this.addCurrentVertex(Mr, gn, 1, 1, cr, !0)), nn && (this.addCurrentVertex(Mr, jn, -1, -1, cr, !0), this.addCurrentVertex(Mr, jn, 0, 0, cr)));
                        if (ja && ui < Ie - 1) {
                          const no = Mr.dist(nn);
                          if (no > 2 * Ke) {
                            const Ha = Mr.add(nn.sub(Mr)._mult(Ke / no)._round());
                            this.updateDistance(Mr, Ha), this.addCurrentVertex(Ha, jn, 0, 0, cr), Mr = Ha;
                          }
                        }
                      }
                    }
                    /**
                     * Add two vertices to the buffers.
                     *
                     * @param p - the line vertex to add buffer vertices for
                     * @param normal - vertex normal
                     * @param endLeft - extrude to shift the left vertex along the line
                     * @param endRight - extrude to shift the left vertex along the line
                     * @param segment - the segment object to add the vertex to
                     * @param round - whether this is a round cap
                     */
                    addCurrentVertex(k, Z, dt, At, Dt, Ut = !1) {
                      const se = Z.x + Z.y * dt, Ie = Z.y - Z.x * dt, He = -Z.x + Z.y * At, Ke = -Z.y - Z.x * At;
                      this.addHalfVertex(k, se, Ie, Ut, !1, dt, Dt), this.addHalfVertex(k, He, Ke, Ut, !0, -At, Dt), this.distance > Dg / 2 && this.totalDistance === 0 && (this.distance = 0, this.updateScaledDistance(), this.addCurrentVertex(k, Z, dt, At, Dt, Ut));
                    }
                    addHalfVertex({ x: k, y: Z }, dt, At, Dt, Ut, se, Ie) {
                      const Ke = (this.lineClips ? this.scaledDistance * (Dg - 1) : this.scaledDistance) * Rg;
                      if (this.layoutVertexArray.emplaceBack(
                        // a_pos_normal
                        // Encode round/up the least significant bits
                        (k << 1) + (Dt ? 1 : 0),
                        (Z << 1) + (Ut ? 1 : 0),
                        // a_data
                        // add 128 to store a byte in an unsigned byte
                        Math.round(I0 * dt) + 128,
                        Math.round(I0 * At) + 128,
                        // Encode the -1/0/1 direction value into the first two bits of .z of a_data.
                        // Combine it with the lower 6 bits of `linesofarScaled` (shifted by 2 bits to make
                        // room for the direction value). The upper 8 bits of `linesofarScaled` are placed in
                        // the `w` component.
                        (se === 0 ? 0 : se < 0 ? -1 : 1) + 1 | (Ke & 63) << 2,
                        Ke >> 6
                      ), this.lineClips) {
                        const Mr = this.scaledDistance - this.lineClips.start, Vr = this.lineClips.end - this.lineClips.start, nn = Mr / Vr;
                        this.layoutVertexArray2.emplaceBack(nn, this.lineClipsArray.length);
                      }
                      const cr = Ie.vertexLength++;
                      this.e1 >= 0 && this.e2 >= 0 && (this.indexArray.emplaceBack(this.e1, this.e2, cr), Ie.primitiveLength++), Ut ? this.e2 = cr : this.e1 = cr;
                    }
                    updateScaledDistance() {
                      this.scaledDistance = this.lineClips ? this.lineClips.start + (this.lineClips.end - this.lineClips.start) * this.distance / this.totalDistance : this.distance;
                    }
                    updateDistance(k, Z) {
                      this.distance += k.dist(Z), this.updateScaledDistance();
                    }
                  }
                  aa("LineBucket", Vu, { omit: ["layers", "patternFeatures"] });
                  let Zp;
                  const Xp = () => Zp = Zp || new Ws({
                    "line-cap": new ka(or.layout_line["line-cap"]),
                    "line-join": new Ua(or.layout_line["line-join"]),
                    "line-miter-limit": new ka(or.layout_line["line-miter-limit"]),
                    "line-round-limit": new ka(or.layout_line["line-round-limit"]),
                    "line-sort-key": new Ua(or.layout_line["line-sort-key"])
                  });
                  let qv;
                  const lf = () => qv = qv || new Ws({
                    "line-opacity": new Ua(or.paint_line["line-opacity"]),
                    "line-color": new Ua(or.paint_line["line-color"]),
                    "line-translate": new ka(or.paint_line["line-translate"]),
                    "line-translate-anchor": new ka(or.paint_line["line-translate-anchor"]),
                    "line-width": new Ua(or.paint_line["line-width"]),
                    "line-gap-width": new Ua(or.paint_line["line-gap-width"]),
                    "line-offset": new Ua(or.paint_line["line-offset"]),
                    "line-blur": new Ua(or.paint_line["line-blur"]),
                    "line-dasharray": new ac(or.paint_line["line-dasharray"]),
                    "line-pattern": new kh(or.paint_line["line-pattern"]),
                    "line-gradient": new fh(or.paint_line["line-gradient"])
                  });
                  var tp = { get paint() {
                    return lf();
                  }, get layout() {
                    return Xp();
                  } };
                  class Fx extends Ua {
                    possiblyEvaluate(k, Z) {
                      return Z = new Ko(Math.floor(Z.zoom), {
                        now: Z.now,
                        fadeDuration: Z.fadeDuration,
                        zoomHistory: Z.zoomHistory,
                        transition: Z.transition
                      }), super.possiblyEvaluate(k, Z);
                    }
                    evaluate(k, Z, dt, At) {
                      return Z = M({}, Z, { zoom: Math.floor(Z.zoom) }), super.evaluate(k, Z, dt, At);
                    }
                  }
                  let Yp;
                  class tm extends oc {
                    constructor(k) {
                      super(k, tp), this.gradientVersion = 0, Yp || (Yp = new Fx(tp.paint.properties["line-width"].specification), Yp.useIntegerZoom = !0);
                    }
                    _handleSpecialPaintPropertyUpdate(k) {
                      if (k === "line-gradient") {
                        const Z = this.gradientExpression();
                        cd(Z) ? this.stepInterpolant = Z._styleExpression.expression instanceof Xu : this.stepInterpolant = !1, this.gradientVersion = (this.gradientVersion + 1) % Number.MAX_SAFE_INTEGER;
                      }
                    }
                    gradientExpression() {
                      return this._transitionablePaint._values["line-gradient"].value.expression;
                    }
                    recalculate(k, Z) {
                      super.recalculate(k, Z), this.paint._values["line-floorwidth"] = Yp.possiblyEvaluate(this._transitioningPaint._values["line-width"].value, k);
                    }
                    createBucket(k) {
                      return new Vu(k);
                    }
                    queryRadius(k) {
                      const Z = k, dt = _v(ua("line-width", this, Z), ua("line-gap-width", this, Z)), At = ua("line-offset", this, Z);
                      return dt / 2 + Math.abs(At) + ca(this.paint.get("line-translate"));
                    }
                    queryIntersectsFeature(k, Z, dt, At, Dt, Ut, se) {
                      const Ie = Uo(k, this.paint.get("line-translate"), this.paint.get("line-translate-anchor"), Ut.angle, se), He = se / 2 * _v(this.paint.get("line-width").evaluate(Z, dt), this.paint.get("line-gap-width").evaluate(Z, dt)), Ke = this.paint.get("line-offset").evaluate(Z, dt);
                      return Ke && (At = Zs(At, Ke * se)), Oi(Ie, At, He);
                    }
                    isTileClipped() {
                      return !0;
                    }
                  }
                  function _v(N, k) {
                    return k > 0 ? k + 2 * N : N;
                  }
                  const Tu = Ls([
                    { name: "a_pos_offset", components: 4, type: "Int16" },
                    { name: "a_data", components: 4, type: "Uint16" },
                    { name: "a_pixeloffset", components: 4, type: "Int16" }
                  ], 4), Ox = Ls([
                    { name: "a_projected_pos", components: 3, type: "Float32" }
                  ], 4);
                  Ls([
                    { name: "a_fade_opacity", components: 1, type: "Uint32" }
                  ], 4);
                  const R0 = Ls([
                    { name: "a_placed", components: 2, type: "Uint8" },
                    { name: "a_shift", components: 2, type: "Float32" },
                    { name: "a_box_real", components: 2, type: "Int16" }
                  ]);
                  Ls([
                    // the box is centered around the anchor point
                    { type: "Int16", name: "anchorPointX" },
                    { type: "Int16", name: "anchorPointY" },
                    // distances to the edges from the anchor
                    { type: "Int16", name: "x1" },
                    { type: "Int16", name: "y1" },
                    { type: "Int16", name: "x2" },
                    { type: "Int16", name: "y2" },
                    // the index of the feature in the original vectortile
                    { type: "Uint32", name: "featureIndex" },
                    // the source layer the feature appears in
                    { type: "Uint16", name: "sourceLayerIndex" },
                    // the bucket the feature appears in
                    { type: "Uint16", name: "bucketIndex" }
                  ]);
                  const Hh = Ls([
                    { name: "a_pos", components: 2, type: "Int16" },
                    { name: "a_anchor_pos", components: 2, type: "Int16" },
                    { name: "a_extrude", components: 2, type: "Int16" }
                  ], 4), Pc = Ls([
                    { name: "a_pos", components: 2, type: "Float32" },
                    { name: "a_radius", components: 1, type: "Float32" },
                    { name: "a_flags", components: 2, type: "Int16" }
                  ], 4);
                  Ls([
                    { name: "triangle", components: 3, type: "Uint16" }
                  ]), Ls([
                    { type: "Int16", name: "anchorX" },
                    { type: "Int16", name: "anchorY" },
                    { type: "Uint16", name: "glyphStartIndex" },
                    { type: "Uint16", name: "numGlyphs" },
                    { type: "Uint32", name: "vertexStartIndex" },
                    { type: "Uint32", name: "lineStartIndex" },
                    { type: "Uint32", name: "lineLength" },
                    { type: "Uint16", name: "segment" },
                    { type: "Uint16", name: "lowerSize" },
                    { type: "Uint16", name: "upperSize" },
                    { type: "Float32", name: "lineOffsetX" },
                    { type: "Float32", name: "lineOffsetY" },
                    { type: "Uint8", name: "writingMode" },
                    { type: "Uint8", name: "placedOrientation" },
                    { type: "Uint8", name: "hidden" },
                    { type: "Uint32", name: "crossTileID" },
                    { type: "Int16", name: "associatedIconIndex" }
                  ]), Ls([
                    { type: "Int16", name: "anchorX" },
                    { type: "Int16", name: "anchorY" },
                    { type: "Int16", name: "rightJustifiedTextSymbolIndex" },
                    { type: "Int16", name: "centerJustifiedTextSymbolIndex" },
                    { type: "Int16", name: "leftJustifiedTextSymbolIndex" },
                    { type: "Int16", name: "verticalPlacedTextSymbolIndex" },
                    { type: "Int16", name: "placedIconSymbolIndex" },
                    { type: "Int16", name: "verticalPlacedIconSymbolIndex" },
                    { type: "Uint16", name: "key" },
                    { type: "Uint16", name: "textBoxStartIndex" },
                    { type: "Uint16", name: "textBoxEndIndex" },
                    { type: "Uint16", name: "verticalTextBoxStartIndex" },
                    { type: "Uint16", name: "verticalTextBoxEndIndex" },
                    { type: "Uint16", name: "iconBoxStartIndex" },
                    { type: "Uint16", name: "iconBoxEndIndex" },
                    { type: "Uint16", name: "verticalIconBoxStartIndex" },
                    { type: "Uint16", name: "verticalIconBoxEndIndex" },
                    { type: "Uint16", name: "featureIndex" },
                    { type: "Uint16", name: "numHorizontalGlyphVertices" },
                    { type: "Uint16", name: "numVerticalGlyphVertices" },
                    { type: "Uint16", name: "numIconVertices" },
                    { type: "Uint16", name: "numVerticalIconVertices" },
                    { type: "Uint16", name: "useRuntimeCollisionCircles" },
                    { type: "Uint32", name: "crossTileID" },
                    { type: "Float32", name: "textBoxScale" },
                    { type: "Float32", name: "collisionCircleDiameter" },
                    { type: "Uint16", name: "textAnchorOffsetStartIndex" },
                    { type: "Uint16", name: "textAnchorOffsetEndIndex" }
                  ]), Ls([
                    { type: "Float32", name: "offsetX" }
                  ]), Ls([
                    { type: "Int16", name: "x" },
                    { type: "Int16", name: "y" },
                    { type: "Int16", name: "tileUnitDistanceFromAnchor" }
                  ]), Ls([
                    { type: "Uint16", name: "textAnchor" },
                    { type: "Float32", components: 2, name: "textOffset" }
                  ]);
                  function em(N, k, Z) {
                    const dt = k.layout.get("text-transform").evaluate(Z, {});
                    return dt === "uppercase" ? N = N.toLocaleUpperCase() : dt === "lowercase" && (N = N.toLocaleLowerCase()), Os.applyArabicShaping && (N = Os.applyArabicShaping(N)), N;
                  }
                  function Bx(N, k, Z) {
                    return N.sections.forEach((dt) => {
                      dt.text = em(dt.text, k, Z);
                    }), N;
                  }
                  function rm(N) {
                    const k = {}, Z = {}, dt = [];
                    let At = 0;
                    function Dt(He) {
                      dt.push(N[He]), At++;
                    }
                    function Ut(He, Ke, cr) {
                      const Mr = Z[He];
                      return delete Z[He], Z[Ke] = Mr, dt[Mr].geometry[0].pop(), dt[Mr].geometry[0] = dt[Mr].geometry[0].concat(cr[0]), Mr;
                    }
                    function se(He, Ke, cr) {
                      const Mr = k[Ke];
                      return delete k[Ke], k[He] = Mr, dt[Mr].geometry[0].shift(), dt[Mr].geometry[0] = cr[0].concat(dt[Mr].geometry[0]), Mr;
                    }
                    function Ie(He, Ke, cr) {
                      const Mr = cr ? Ke[0][Ke[0].length - 1] : Ke[0][0];
                      return `${He}:${Mr.x}:${Mr.y}`;
                    }
                    for (let He = 0; He < N.length; He++) {
                      const Ke = N[He], cr = Ke.geometry, Mr = Ke.text ? Ke.text.toString() : null;
                      if (!Mr) {
                        Dt(He);
                        continue;
                      }
                      const Vr = Ie(Mr, cr), nn = Ie(Mr, cr, !0);
                      if (Vr in Z && nn in k && Z[Vr] !== k[nn]) {
                        const gn = se(Vr, nn, cr), jn = Ut(Vr, nn, dt[gn].geometry);
                        delete k[Vr], delete Z[nn], Z[Ie(Mr, dt[jn].geometry, !0)] = jn, dt[gn].geometry = null;
                      } else Vr in Z ? Ut(Vr, nn, cr) : nn in k ? se(Vr, nn, cr) : (Dt(He), k[Vr] = At - 1, Z[nn] = At - 1);
                    }
                    return dt.filter((He) => He.geometry);
                  }
                  const Kp = {
                    "!": "︕",
                    "#": "＃",
                    $: "＄",
                    "%": "％",
                    "&": "＆",
                    "(": "︵",
                    ")": "︶",
                    "*": "＊",
                    "+": "＋",
                    ",": "︐",
                    "-": "︲",
                    ".": "・",
                    "/": "／",
                    ":": "︓",
                    ";": "︔",
                    "<": "︿",
                    "=": "＝",
                    ">": "﹀",
                    "?": "︖",
                    "@": "＠",
                    "[": "﹇",
                    "\\": "＼",
                    "]": "﹈",
                    "^": "＾",
                    _: "︳",
                    "`": "｀",
                    "{": "︷",
                    "|": "―",
                    "}": "︸",
                    "~": "～",
                    "¢": "￠",
                    "£": "￡",
                    "¥": "￥",
                    "¦": "￤",
                    "¬": "￢",
                    "¯": "￣",
                    "–": "︲",
                    "—": "︱",
                    "‘": "﹃",
                    "’": "﹄",
                    "“": "﹁",
                    "”": "﹂",
                    "…": "︙",
                    "‧": "・",
                    "₩": "￦",
                    "、": "︑",
                    "。": "︒",
                    "〈": "︿",
                    "〉": "﹀",
                    "《": "︽",
                    "》": "︾",
                    "「": "﹁",
                    "」": "﹂",
                    "『": "﹃",
                    "』": "﹄",
                    "【": "︻",
                    "】": "︼",
                    "〔": "︹",
                    "〕": "︺",
                    "〖": "︗",
                    "〗": "︘",
                    "！": "︕",
                    "（": "︵",
                    "）": "︶",
                    "，": "︐",
                    "－": "︲",
                    "．": "・",
                    "：": "︓",
                    "；": "︔",
                    "＜": "︿",
                    "＞": "﹀",
                    "？": "︖",
                    "［": "﹇",
                    "］": "﹈",
                    "＿": "︳",
                    "｛": "︷",
                    "｜": "―",
                    "｝": "︸",
                    "｟": "︵",
                    "｠": "︶",
                    "｡": "︒",
                    "｢": "﹁",
                    "｣": "﹂"
                  };
                  function nm(N) {
                    let k = "";
                    for (let Z = 0; Z < N.length; Z++) {
                      const dt = N.charCodeAt(Z + 1) || null, At = N.charCodeAt(Z - 1) || null;
                      (!dt || !Rh(dt) || Kp[N[Z + 1]]) && (!At || !Rh(At) || Kp[N[Z - 1]]) && Kp[N[Z]] ? k += Kp[N[Z]] : k += N[Z];
                    }
                    return k;
                  }
                  var ml = 24, Jp = {};
                  /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
                  Jp.read = function(N, k, Z, dt, At) {
                    var Dt, Ut, se = At * 8 - dt - 1, Ie = (1 << se) - 1, He = Ie >> 1, Ke = -7, cr = Z ? At - 1 : 0, Mr = Z ? -1 : 1, Vr = N[k + cr];
                    for (cr += Mr, Dt = Vr & (1 << -Ke) - 1, Vr >>= -Ke, Ke += se; Ke > 0; Dt = Dt * 256 + N[k + cr], cr += Mr, Ke -= 8)
                      ;
                    for (Ut = Dt & (1 << -Ke) - 1, Dt >>= -Ke, Ke += dt; Ke > 0; Ut = Ut * 256 + N[k + cr], cr += Mr, Ke -= 8)
                      ;
                    if (Dt === 0)
                      Dt = 1 - He;
                    else {
                      if (Dt === Ie)
                        return Ut ? NaN : (Vr ? -1 : 1) * (1 / 0);
                      Ut = Ut + Math.pow(2, dt), Dt = Dt - He;
                    }
                    return (Vr ? -1 : 1) * Ut * Math.pow(2, Dt - dt);
                  }, Jp.write = function(N, k, Z, dt, At, Dt) {
                    var Ut, se, Ie, He = Dt * 8 - At - 1, Ke = (1 << He) - 1, cr = Ke >> 1, Mr = At === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0, Vr = dt ? 0 : Dt - 1, nn = dt ? 1 : -1, gn = k < 0 || k === 0 && 1 / k < 0 ? 1 : 0;
                    for (k = Math.abs(k), isNaN(k) || k === 1 / 0 ? (se = isNaN(k) ? 1 : 0, Ut = Ke) : (Ut = Math.floor(Math.log(k) / Math.LN2), k * (Ie = Math.pow(2, -Ut)) < 1 && (Ut--, Ie *= 2), Ut + cr >= 1 ? k += Mr / Ie : k += Mr * Math.pow(2, 1 - cr), k * Ie >= 2 && (Ut++, Ie /= 2), Ut + cr >= Ke ? (se = 0, Ut = Ke) : Ut + cr >= 1 ? (se = (k * Ie - 1) * Math.pow(2, At), Ut = Ut + cr) : (se = k * Math.pow(2, cr - 1) * Math.pow(2, At), Ut = 0)); At >= 8; N[Z + Vr] = se & 255, Vr += nn, se /= 256, At -= 8)
                      ;
                    for (Ut = Ut << At | se, He += At; He > 0; N[Z + Vr] = Ut & 255, Vr += nn, Ut /= 256, He -= 8)
                      ;
                    N[Z + Vr - nn] |= gn * 128;
                  };
                  var D0 = fs, k0 = Jp;
                  function fs(N) {
                    this.buf = ArrayBuffer.isView && ArrayBuffer.isView(N) ? N : new Uint8Array(N || 0), this.pos = 0, this.type = 0, this.length = this.buf.length;
                  }
                  fs.Varint = 0, fs.Fixed64 = 1, fs.Bytes = 2, fs.Fixed32 = 5;
                  var kg = 65536 * 65536, im = 1 / kg, am = 12, Tv = typeof TextDecoder > "u" ? null : new TextDecoder("utf-8");
                  fs.prototype = {
                    destroy: function() {
                      this.buf = null;
                    },
                    // === READING =================================================================
                    readFields: function(N, k, Z) {
                      for (Z = Z || this.length; this.pos < Z; ) {
                        var dt = this.readVarint(), At = dt >> 3, Dt = this.pos;
                        this.type = dt & 7, N(At, k, this), this.pos === Dt && this.skip(dt);
                      }
                      return k;
                    },
                    readMessage: function(N, k) {
                      return this.readFields(N, k, this.readVarint() + this.pos);
                    },
                    readFixed32: function() {
                      var N = Qp(this.buf, this.pos);
                      return this.pos += 4, N;
                    },
                    readSFixed32: function() {
                      var N = $p(this.buf, this.pos);
                      return this.pos += 4, N;
                    },
                    // 64-bit int handling is based on github.com/dpw/node-buffer-more-ints (MIT-licensed)
                    readFixed64: function() {
                      var N = Qp(this.buf, this.pos) + Qp(this.buf, this.pos + 4) * kg;
                      return this.pos += 8, N;
                    },
                    readSFixed64: function() {
                      var N = Qp(this.buf, this.pos) + $p(this.buf, this.pos + 4) * kg;
                      return this.pos += 8, N;
                    },
                    readFloat: function() {
                      var N = k0.read(this.buf, this.pos, !0, 23, 4);
                      return this.pos += 4, N;
                    },
                    readDouble: function() {
                      var N = k0.read(this.buf, this.pos, !0, 52, 8);
                      return this.pos += 8, N;
                    },
                    readVarint: function(N) {
                      var k = this.buf, Z, dt;
                      return dt = k[this.pos++], Z = dt & 127, dt < 128 || (dt = k[this.pos++], Z |= (dt & 127) << 7, dt < 128) || (dt = k[this.pos++], Z |= (dt & 127) << 14, dt < 128) || (dt = k[this.pos++], Z |= (dt & 127) << 21, dt < 128) ? Z : (dt = k[this.pos], Z |= (dt & 15) << 28, Gh(Z, N, this));
                    },
                    readVarint64: function() {
                      return this.readVarint(!0);
                    },
                    readSVarint: function() {
                      var N = this.readVarint();
                      return N % 2 === 1 ? (N + 1) / -2 : N / 2;
                    },
                    readBoolean: function() {
                      return !!this.readVarint();
                    },
                    readString: function() {
                      var N = this.readVarint() + this.pos, k = this.pos;
                      return this.pos = N, N - k >= am && Tv ? F0(this.buf, k, N) : Hx(this.buf, k, N);
                    },
                    readBytes: function() {
                      var N = this.readVarint() + this.pos, k = this.buf.subarray(this.pos, N);
                      return this.pos = N, k;
                    },
                    // verbose for performance reasons; doesn't affect gzipped size
                    readPackedVarint: function(N, k) {
                      if (this.type !== fs.Bytes) return N.push(this.readVarint(k));
                      var Z = Wh(this);
                      for (N = N || []; this.pos < Z; ) N.push(this.readVarint(k));
                      return N;
                    },
                    readPackedSVarint: function(N) {
                      if (this.type !== fs.Bytes) return N.push(this.readSVarint());
                      var k = Wh(this);
                      for (N = N || []; this.pos < k; ) N.push(this.readSVarint());
                      return N;
                    },
                    readPackedBoolean: function(N) {
                      if (this.type !== fs.Bytes) return N.push(this.readBoolean());
                      var k = Wh(this);
                      for (N = N || []; this.pos < k; ) N.push(this.readBoolean());
                      return N;
                    },
                    readPackedFloat: function(N) {
                      if (this.type !== fs.Bytes) return N.push(this.readFloat());
                      var k = Wh(this);
                      for (N = N || []; this.pos < k; ) N.push(this.readFloat());
                      return N;
                    },
                    readPackedDouble: function(N) {
                      if (this.type !== fs.Bytes) return N.push(this.readDouble());
                      var k = Wh(this);
                      for (N = N || []; this.pos < k; ) N.push(this.readDouble());
                      return N;
                    },
                    readPackedFixed32: function(N) {
                      if (this.type !== fs.Bytes) return N.push(this.readFixed32());
                      var k = Wh(this);
                      for (N = N || []; this.pos < k; ) N.push(this.readFixed32());
                      return N;
                    },
                    readPackedSFixed32: function(N) {
                      if (this.type !== fs.Bytes) return N.push(this.readSFixed32());
                      var k = Wh(this);
                      for (N = N || []; this.pos < k; ) N.push(this.readSFixed32());
                      return N;
                    },
                    readPackedFixed64: function(N) {
                      if (this.type !== fs.Bytes) return N.push(this.readFixed64());
                      var k = Wh(this);
                      for (N = N || []; this.pos < k; ) N.push(this.readFixed64());
                      return N;
                    },
                    readPackedSFixed64: function(N) {
                      if (this.type !== fs.Bytes) return N.push(this.readSFixed64());
                      var k = Wh(this);
                      for (N = N || []; this.pos < k; ) N.push(this.readSFixed64());
                      return N;
                    },
                    skip: function(N) {
                      var k = N & 7;
                      if (k === fs.Varint) for (; this.buf[this.pos++] > 127; )
                        ;
                      else if (k === fs.Bytes) this.pos = this.readVarint() + this.pos;
                      else if (k === fs.Fixed32) this.pos += 4;
                      else if (k === fs.Fixed64) this.pos += 8;
                      else throw new Error("Unimplemented type: " + k);
                    },
                    // === WRITING =================================================================
                    writeTag: function(N, k) {
                      this.writeVarint(N << 3 | k);
                    },
                    realloc: function(N) {
                      for (var k = this.length || 16; k < this.pos + N; ) k *= 2;
                      if (k !== this.length) {
                        var Z = new Uint8Array(k);
                        Z.set(this.buf), this.buf = Z, this.length = k;
                      }
                    },
                    finish: function() {
                      return this.length = this.pos, this.pos = 0, this.buf.subarray(0, this.length);
                    },
                    writeFixed32: function(N) {
                      this.realloc(4), Wd(this.buf, N, this.pos), this.pos += 4;
                    },
                    writeSFixed32: function(N) {
                      this.realloc(4), Wd(this.buf, N, this.pos), this.pos += 4;
                    },
                    writeFixed64: function(N) {
                      this.realloc(8), Wd(this.buf, N & -1, this.pos), Wd(this.buf, Math.floor(N * im), this.pos + 4), this.pos += 8;
                    },
                    writeSFixed64: function(N) {
                      this.realloc(8), Wd(this.buf, N & -1, this.pos), Wd(this.buf, Math.floor(N * im), this.pos + 4), this.pos += 8;
                    },
                    writeVarint: function(N) {
                      if (N = +N || 0, N > 268435455 || N < 0) {
                        om(N, this);
                        return;
                      }
                      this.realloc(4), this.buf[this.pos++] = N & 127 | (N > 127 ? 128 : 0), !(N <= 127) && (this.buf[this.pos++] = (N >>>= 7) & 127 | (N > 127 ? 128 : 0), !(N <= 127) && (this.buf[this.pos++] = (N >>>= 7) & 127 | (N > 127 ? 128 : 0), !(N <= 127) && (this.buf[this.pos++] = N >>> 7 & 127)));
                    },
                    writeSVarint: function(N) {
                      this.writeVarint(N < 0 ? -N * 2 - 1 : N * 2);
                    },
                    writeBoolean: function(N) {
                      this.writeVarint(!!N);
                    },
                    writeString: function(N) {
                      N = String(N), this.realloc(N.length * 4), this.pos++;
                      var k = this.pos;
                      this.pos = rp(this.buf, N, this.pos);
                      var Z = this.pos - k;
                      Z >= 128 && zg(k, Z, this), this.pos = k - 1, this.writeVarint(Z), this.pos += Z;
                    },
                    writeFloat: function(N) {
                      this.realloc(4), k0.write(this.buf, N, this.pos, !0, 23, 4), this.pos += 4;
                    },
                    writeDouble: function(N) {
                      this.realloc(8), k0.write(this.buf, N, this.pos, !0, 52, 8), this.pos += 8;
                    },
                    writeBytes: function(N) {
                      var k = N.length;
                      this.writeVarint(k), this.realloc(k);
                      for (var Z = 0; Z < k; Z++) this.buf[this.pos++] = N[Z];
                    },
                    writeRawMessage: function(N, k) {
                      this.pos++;
                      var Z = this.pos;
                      N(k, this);
                      var dt = this.pos - Z;
                      dt >= 128 && zg(Z, dt, this), this.pos = Z - 1, this.writeVarint(dt), this.pos += dt;
                    },
                    writeMessage: function(N, k, Z) {
                      this.writeTag(N, fs.Bytes), this.writeRawMessage(k, Z);
                    },
                    writePackedVarint: function(N, k) {
                      k.length && this.writeMessage(N, lm, k);
                    },
                    writePackedSVarint: function(N, k) {
                      k.length && this.writeMessage(N, um, k);
                    },
                    writePackedBoolean: function(N, k) {
                      k.length && this.writeMessage(N, cm, k);
                    },
                    writePackedFloat: function(N, k) {
                      k.length && this.writeMessage(N, Ux, k);
                    },
                    writePackedDouble: function(N, k) {
                      k.length && this.writeMessage(N, Vx, k);
                    },
                    writePackedFixed32: function(N, k) {
                      k.length && this.writeMessage(N, fm, k);
                    },
                    writePackedSFixed32: function(N, k) {
                      k.length && this.writeMessage(N, ep, k);
                    },
                    writePackedFixed64: function(N, k) {
                      k.length && this.writeMessage(N, hm, k);
                    },
                    writePackedSFixed64: function(N, k) {
                      k.length && this.writeMessage(N, z0, k);
                    },
                    writeBytesField: function(N, k) {
                      this.writeTag(N, fs.Bytes), this.writeBytes(k);
                    },
                    writeFixed32Field: function(N, k) {
                      this.writeTag(N, fs.Fixed32), this.writeFixed32(k);
                    },
                    writeSFixed32Field: function(N, k) {
                      this.writeTag(N, fs.Fixed32), this.writeSFixed32(k);
                    },
                    writeFixed64Field: function(N, k) {
                      this.writeTag(N, fs.Fixed64), this.writeFixed64(k);
                    },
                    writeSFixed64Field: function(N, k) {
                      this.writeTag(N, fs.Fixed64), this.writeSFixed64(k);
                    },
                    writeVarintField: function(N, k) {
                      this.writeTag(N, fs.Varint), this.writeVarint(k);
                    },
                    writeSVarintField: function(N, k) {
                      this.writeTag(N, fs.Varint), this.writeSVarint(k);
                    },
                    writeStringField: function(N, k) {
                      this.writeTag(N, fs.Bytes), this.writeString(k);
                    },
                    writeFloatField: function(N, k) {
                      this.writeTag(N, fs.Fixed32), this.writeFloat(k);
                    },
                    writeDoubleField: function(N, k) {
                      this.writeTag(N, fs.Fixed64), this.writeDouble(k);
                    },
                    writeBooleanField: function(N, k) {
                      this.writeVarintField(N, !!k);
                    }
                  };
                  function Gh(N, k, Z) {
                    var dt = Z.buf, At, Dt;
                    if (Dt = dt[Z.pos++], At = (Dt & 112) >> 4, Dt < 128 || (Dt = dt[Z.pos++], At |= (Dt & 127) << 3, Dt < 128) || (Dt = dt[Z.pos++], At |= (Dt & 127) << 10, Dt < 128) || (Dt = dt[Z.pos++], At |= (Dt & 127) << 17, Dt < 128) || (Dt = dt[Z.pos++], At |= (Dt & 127) << 24, Dt < 128) || (Dt = dt[Z.pos++], At |= (Dt & 1) << 31, Dt < 128)) return Av(N, At, k);
                    throw new Error("Expected varint not more than 10 bytes");
                  }
                  function Wh(N) {
                    return N.type === fs.Bytes ? N.readVarint() + N.pos : N.pos + 1;
                  }
                  function Av(N, k, Z) {
                    return Z ? k * 4294967296 + (N >>> 0) : (k >>> 0) * 4294967296 + (N >>> 0);
                  }
                  function om(N, k) {
                    var Z, dt;
                    if (N >= 0 ? (Z = N % 4294967296 | 0, dt = N / 4294967296 | 0) : (Z = ~(-N % 4294967296), dt = ~(-N / 4294967296), Z ^ 4294967295 ? Z = Z + 1 | 0 : (Z = 0, dt = dt + 1 | 0)), N >= 18446744073709552e3 || N < -18446744073709552e3)
                      throw new Error("Given varint doesn't fit into 10 bytes");
                    k.realloc(10), Nx(Z, dt, k), sm(dt, k);
                  }
                  function Nx(N, k, Z) {
                    Z.buf[Z.pos++] = N & 127 | 128, N >>>= 7, Z.buf[Z.pos++] = N & 127 | 128, N >>>= 7, Z.buf[Z.pos++] = N & 127 | 128, N >>>= 7, Z.buf[Z.pos++] = N & 127 | 128, N >>>= 7, Z.buf[Z.pos] = N & 127;
                  }
                  function sm(N, k) {
                    var Z = (N & 7) << 4;
                    k.buf[k.pos++] |= Z | ((N >>>= 3) ? 128 : 0), N && (k.buf[k.pos++] = N & 127 | ((N >>>= 7) ? 128 : 0), N && (k.buf[k.pos++] = N & 127 | ((N >>>= 7) ? 128 : 0), N && (k.buf[k.pos++] = N & 127 | ((N >>>= 7) ? 128 : 0), N && (k.buf[k.pos++] = N & 127 | ((N >>>= 7) ? 128 : 0), N && (k.buf[k.pos++] = N & 127)))));
                  }
                  function zg(N, k, Z) {
                    var dt = k <= 16383 ? 1 : k <= 2097151 ? 2 : k <= 268435455 ? 3 : Math.floor(Math.log(k) / (Math.LN2 * 7));
                    Z.realloc(dt);
                    for (var At = Z.pos - 1; At >= N; At--) Z.buf[At + dt] = Z.buf[At];
                  }
                  function lm(N, k) {
                    for (var Z = 0; Z < N.length; Z++) k.writeVarint(N[Z]);
                  }
                  function um(N, k) {
                    for (var Z = 0; Z < N.length; Z++) k.writeSVarint(N[Z]);
                  }
                  function Ux(N, k) {
                    for (var Z = 0; Z < N.length; Z++) k.writeFloat(N[Z]);
                  }
                  function Vx(N, k) {
                    for (var Z = 0; Z < N.length; Z++) k.writeDouble(N[Z]);
                  }
                  function cm(N, k) {
                    for (var Z = 0; Z < N.length; Z++) k.writeBoolean(N[Z]);
                  }
                  function fm(N, k) {
                    for (var Z = 0; Z < N.length; Z++) k.writeFixed32(N[Z]);
                  }
                  function ep(N, k) {
                    for (var Z = 0; Z < N.length; Z++) k.writeSFixed32(N[Z]);
                  }
                  function hm(N, k) {
                    for (var Z = 0; Z < N.length; Z++) k.writeFixed64(N[Z]);
                  }
                  function z0(N, k) {
                    for (var Z = 0; Z < N.length; Z++) k.writeSFixed64(N[Z]);
                  }
                  function Qp(N, k) {
                    return (N[k] | N[k + 1] << 8 | N[k + 2] << 16) + N[k + 3] * 16777216;
                  }
                  function Wd(N, k, Z) {
                    N[Z] = k, N[Z + 1] = k >>> 8, N[Z + 2] = k >>> 16, N[Z + 3] = k >>> 24;
                  }
                  function $p(N, k) {
                    return (N[k] | N[k + 1] << 8 | N[k + 2] << 16) + (N[k + 3] << 24);
                  }
                  function Hx(N, k, Z) {
                    for (var dt = "", At = k; At < Z; ) {
                      var Dt = N[At], Ut = null, se = Dt > 239 ? 4 : Dt > 223 ? 3 : Dt > 191 ? 2 : 1;
                      if (At + se > Z) break;
                      var Ie, He, Ke;
                      se === 1 ? Dt < 128 && (Ut = Dt) : se === 2 ? (Ie = N[At + 1], (Ie & 192) === 128 && (Ut = (Dt & 31) << 6 | Ie & 63, Ut <= 127 && (Ut = null))) : se === 3 ? (Ie = N[At + 1], He = N[At + 2], (Ie & 192) === 128 && (He & 192) === 128 && (Ut = (Dt & 15) << 12 | (Ie & 63) << 6 | He & 63, (Ut <= 2047 || Ut >= 55296 && Ut <= 57343) && (Ut = null))) : se === 4 && (Ie = N[At + 1], He = N[At + 2], Ke = N[At + 3], (Ie & 192) === 128 && (He & 192) === 128 && (Ke & 192) === 128 && (Ut = (Dt & 15) << 18 | (Ie & 63) << 12 | (He & 63) << 6 | Ke & 63, (Ut <= 65535 || Ut >= 1114112) && (Ut = null))), Ut === null ? (Ut = 65533, se = 1) : Ut > 65535 && (Ut -= 65536, dt += String.fromCharCode(Ut >>> 10 & 1023 | 55296), Ut = 56320 | Ut & 1023), dt += String.fromCharCode(Ut), At += se;
                    }
                    return dt;
                  }
                  function F0(N, k, Z) {
                    return Tv.decode(N.subarray(k, Z));
                  }
                  function rp(N, k, Z) {
                    for (var dt = 0, At, Dt; dt < k.length; dt++) {
                      if (At = k.charCodeAt(dt), At > 55295 && At < 57344)
                        if (Dt)
                          if (At < 56320) {
                            N[Z++] = 239, N[Z++] = 191, N[Z++] = 189, Dt = At;
                            continue;
                          } else
                            At = Dt - 55296 << 10 | At - 56320 | 65536, Dt = null;
                        else {
                          At > 56319 || dt + 1 === k.length ? (N[Z++] = 239, N[Z++] = 191, N[Z++] = 189) : Dt = At;
                          continue;
                        }
                      else Dt && (N[Z++] = 239, N[Z++] = 191, N[Z++] = 189, Dt = null);
                      At < 128 ? N[Z++] = At : (At < 2048 ? N[Z++] = At >> 6 | 192 : (At < 65536 ? N[Z++] = At >> 12 | 224 : (N[Z++] = At >> 18 | 240, N[Z++] = At >> 12 & 63 | 128), N[Z++] = At >> 6 & 63 | 128), N[Z++] = At & 63 | 128);
                    }
                    return Z;
                  }
                  var Fg = /* @__PURE__ */ T(D0);
                  const Og = 3;
                  function Gx(N, k, Z) {
                    N === 1 && Z.readMessage(np, k);
                  }
                  function np(N, k, Z) {
                    if (N === 3) {
                      const { id: dt, bitmap: At, width: Dt, height: Ut, left: se, top: Ie, advance: He } = Z.readMessage(Wx, {});
                      k.push({
                        id: dt,
                        bitmap: new Gd({
                          width: Dt + 2 * Og,
                          height: Ut + 2 * Og
                        }, At),
                        metrics: { width: Dt, height: Ut, left: se, top: Ie, advance: He }
                      });
                    }
                  }
                  function Wx(N, k, Z) {
                    N === 1 ? k.id = Z.readVarint() : N === 2 ? k.bitmap = Z.readBytes() : N === 3 ? k.width = Z.readVarint() : N === 4 ? k.height = Z.readVarint() : N === 5 ? k.left = Z.readSVarint() : N === 6 ? k.top = Z.readSVarint() : N === 7 && (k.advance = Z.readVarint());
                  }
                  function jx(N) {
                    return new Fg(N).readFields(Gx, []);
                  }
                  const Sv = Og;
                  function O0(N) {
                    let k = 0, Z = 0;
                    for (const se of N)
                      k += se.w * se.h, Z = Math.max(Z, se.w);
                    N.sort((se, Ie) => Ie.h - se.h);
                    const At = [{ x: 0, y: 0, w: Math.max(Math.ceil(Math.sqrt(k / 0.95)), Z), h: 1 / 0 }];
                    let Dt = 0, Ut = 0;
                    for (const se of N)
                      for (let Ie = At.length - 1; Ie >= 0; Ie--) {
                        const He = At[Ie];
                        if (!(se.w > He.w || se.h > He.h)) {
                          if (se.x = He.x, se.y = He.y, Ut = Math.max(Ut, se.y + se.h), Dt = Math.max(Dt, se.x + se.w), se.w === He.w && se.h === He.h) {
                            const Ke = At.pop();
                            Ie < At.length && (At[Ie] = Ke);
                          } else se.h === He.h ? (He.x += se.w, He.w -= se.w) : se.w === He.w ? (He.y += se.h, He.h -= se.h) : (At.push({
                            x: He.x + se.w,
                            y: He.y,
                            w: He.w - se.w,
                            h: se.h
                          }), He.y += se.h, He.h -= se.h);
                          break;
                        }
                      }
                    return {
                      w: Dt,
                      // container width
                      h: Ut,
                      // container height
                      fill: k / (Dt * Ut) || 0
                      // space utilization
                    };
                  }
                  const vc = 1;
                  class Bg {
                    constructor(k, { pixelRatio: Z, version: dt, stretchX: At, stretchY: Dt, content: Ut, textFitWidth: se, textFitHeight: Ie }) {
                      this.paddedRect = k, this.pixelRatio = Z, this.stretchX = At, this.stretchY = Dt, this.content = Ut, this.version = dt, this.textFitWidth = se, this.textFitHeight = Ie;
                    }
                    get tl() {
                      return [
                        this.paddedRect.x + vc,
                        this.paddedRect.y + vc
                      ];
                    }
                    get br() {
                      return [
                        this.paddedRect.x + this.paddedRect.w - vc,
                        this.paddedRect.y + this.paddedRect.h - vc
                      ];
                    }
                    get tlbr() {
                      return this.tl.concat(this.br);
                    }
                    get displaySize() {
                      return [
                        (this.paddedRect.w - vc * 2) / this.pixelRatio,
                        (this.paddedRect.h - vc * 2) / this.pixelRatio
                      ];
                    }
                  }
                  class B0 {
                    constructor(k, Z) {
                      const dt = {}, At = {};
                      this.haveRenderCallbacks = [];
                      const Dt = [];
                      this.addImages(k, dt, Dt), this.addImages(Z, At, Dt);
                      const { w: Ut, h: se } = O0(Dt), Ie = new kf({ width: Ut || 1, height: se || 1 });
                      for (const He in k) {
                        const Ke = k[He], cr = dt[He].paddedRect;
                        kf.copy(Ke.data, Ie, { x: 0, y: 0 }, { x: cr.x + vc, y: cr.y + vc }, Ke.data);
                      }
                      for (const He in Z) {
                        const Ke = Z[He], cr = At[He].paddedRect, Mr = cr.x + vc, Vr = cr.y + vc, nn = Ke.data.width, gn = Ke.data.height;
                        kf.copy(Ke.data, Ie, { x: 0, y: 0 }, { x: Mr, y: Vr }, Ke.data), kf.copy(Ke.data, Ie, { x: 0, y: gn - 1 }, { x: Mr, y: Vr - 1 }, { width: nn, height: 1 }), kf.copy(Ke.data, Ie, { x: 0, y: 0 }, { x: Mr, y: Vr + gn }, { width: nn, height: 1 }), kf.copy(Ke.data, Ie, { x: nn - 1, y: 0 }, { x: Mr - 1, y: Vr }, { width: 1, height: gn }), kf.copy(Ke.data, Ie, { x: 0, y: 0 }, { x: Mr + nn, y: Vr }, { width: 1, height: gn });
                      }
                      this.image = Ie, this.iconPositions = dt, this.patternPositions = At;
                    }
                    addImages(k, Z, dt) {
                      for (const At in k) {
                        const Dt = k[At], Ut = {
                          x: 0,
                          y: 0,
                          w: Dt.data.width + 2 * vc,
                          h: Dt.data.height + 2 * vc
                        };
                        dt.push(Ut), Z[At] = new Bg(Ut, Dt), Dt.hasRenderCallback && this.haveRenderCallbacks.push(At);
                      }
                    }
                    patchUpdatedImages(k, Z) {
                      k.dispatchRenderCallbacks(this.haveRenderCallbacks);
                      for (const dt in k.updatedImages)
                        this.patchUpdatedImage(this.iconPositions[dt], k.getImage(dt), Z), this.patchUpdatedImage(this.patternPositions[dt], k.getImage(dt), Z);
                    }
                    patchUpdatedImage(k, Z, dt) {
                      if (!k || !Z || k.version === Z.version)
                        return;
                      k.version = Z.version;
                      const [At, Dt] = k.tl;
                      dt.update(Z.data, void 0, { x: At, y: Dt });
                    }
                  }
                  aa("ImagePosition", Bg), aa("ImageAtlas", B0), n.ai = void 0, function(N) {
                    N[N.none = 0] = "none", N[N.horizontal = 1] = "horizontal", N[N.vertical = 2] = "vertical", N[N.horizontalOnly = 3] = "horizontalOnly";
                  }(n.ai || (n.ai = {}));
                  const qp = -17;
                  function t0(N) {
                    for (const k of N)
                      if (k.positionedGlyphs.length !== 0)
                        return !1;
                    return !0;
                  }
                  const jd = 57344, Ng = 63743;
                  class ip {
                    constructor() {
                      this.scale = 1, this.fontStack = "", this.imageName = null;
                    }
                    static forText(k, Z) {
                      const dt = new ip();
                      return dt.scale = k || 1, dt.fontStack = Z, dt;
                    }
                    static forImage(k) {
                      const Z = new ip();
                      return Z.imageName = k, Z;
                    }
                  }
                  class ap {
                    constructor() {
                      this.text = "", this.sectionIndex = [], this.sections = [], this.imageSectionID = null;
                    }
                    static fromFeature(k, Z) {
                      const dt = new ap();
                      for (let At = 0; At < k.sections.length; At++) {
                        const Dt = k.sections[At];
                        Dt.image ? dt.addImageSection(Dt) : dt.addTextSection(Dt, Z);
                      }
                      return dt;
                    }
                    length() {
                      return this.text.length;
                    }
                    getSection(k) {
                      return this.sections[this.sectionIndex[k]];
                    }
                    getSectionIndex(k) {
                      return this.sectionIndex[k];
                    }
                    getCharCode(k) {
                      return this.text.charCodeAt(k);
                    }
                    verticalizePunctuation() {
                      this.text = nm(this.text);
                    }
                    trim() {
                      let k = 0;
                      for (let dt = 0; dt < this.text.length && U0[this.text.charCodeAt(dt)]; dt++)
                        k++;
                      let Z = this.text.length;
                      for (let dt = this.text.length - 1; dt >= 0 && dt >= k && U0[this.text.charCodeAt(dt)]; dt--)
                        Z--;
                      this.text = this.text.substring(k, Z), this.sectionIndex = this.sectionIndex.slice(k, Z);
                    }
                    substring(k, Z) {
                      const dt = new ap();
                      return dt.text = this.text.substring(k, Z), dt.sectionIndex = this.sectionIndex.slice(k, Z), dt.sections = this.sections, dt;
                    }
                    toString() {
                      return this.text;
                    }
                    getMaxScale() {
                      return this.sectionIndex.reduce((k, Z) => Math.max(k, this.sections[Z].scale), 0);
                    }
                    addTextSection(k, Z) {
                      this.text += k.text, this.sections.push(ip.forText(k.scale, k.fontStack || Z));
                      const dt = this.sections.length - 1;
                      for (let At = 0; At < k.text.length; ++At)
                        this.sectionIndex.push(dt);
                    }
                    addImageSection(k) {
                      const Z = k.image ? k.image.name : "";
                      if (Z.length === 0) {
                        U("Can't add FormattedSection with an empty image.");
                        return;
                      }
                      const dt = this.getNextImageSectionCharCode();
                      if (!dt) {
                        U(`Reached maximum number of images ${Ng - jd + 2}`);
                        return;
                      }
                      this.text += String.fromCharCode(dt), this.sections.push(ip.forImage(Z)), this.sectionIndex.push(this.sections.length - 1);
                    }
                    getNextImageSectionCharCode() {
                      return this.imageSectionID ? this.imageSectionID >= Ng ? null : ++this.imageSectionID : (this.imageSectionID = jd, this.imageSectionID);
                    }
                  }
                  function Zx(N, k) {
                    const Z = [], dt = N.text;
                    let At = 0;
                    for (const Dt of k)
                      Z.push(N.substring(At, Dt)), At = Dt;
                    return At < dt.length && Z.push(N.substring(At, dt.length)), Z;
                  }
                  function N0(N, k, Z, dt, At, Dt, Ut, se, Ie, He, Ke, cr, Mr, Vr, nn) {
                    const gn = ap.fromFeature(N, At);
                    cr === n.ai.vertical && gn.verticalizePunctuation();
                    let jn;
                    const { processBidirectionalText: ui, processStyledBidirectionalText: Ii } = Os;
                    if (ui && gn.sections.length === 1) {
                      jn = [];
                      const Wi = ui(gn.toString(), Vg(gn, He, Dt, k, dt, Vr));
                      for (const Ma of Wi) {
                        const ja = new ap();
                        ja.text = Ma, ja.sections = gn.sections;
                        for (let ho = 0; ho < Ma.length; ho++)
                          ja.sectionIndex.push(0);
                        jn.push(ja);
                      }
                    } else if (Ii) {
                      jn = [];
                      const Wi = Ii(gn.text, gn.sectionIndex, Vg(gn, He, Dt, k, dt, Vr));
                      for (const Ma of Wi) {
                        const ja = new ap();
                        ja.text = Ma[0], ja.sectionIndex = Ma[1], ja.sections = gn.sections, jn.push(ja);
                      }
                    } else
                      jn = Zx(gn, Vg(gn, He, Dt, k, dt, Vr));
                    const Si = [], Pi = {
                      positionedLines: Si,
                      text: gn.toString(),
                      top: Ke[1],
                      bottom: Ke[1],
                      left: Ke[0],
                      right: Ke[0],
                      writingMode: cr,
                      iconsInText: !1,
                      verticalizable: !1
                    };
                    return lp(Pi, k, Z, dt, jn, Ut, se, Ie, cr, He, Mr, nn), t0(Si) ? !1 : Pi;
                  }
                  const U0 = {
                    9: !0,
                    // tab
                    10: !0,
                    // newline
                    11: !0,
                    // vertical tab
                    12: !0,
                    // form feed
                    13: !0,
                    // carriage return
                    32: !0
                    // space
                  }, V0 = {
                    10: !0,
                    // newline
                    32: !0,
                    // space
                    38: !0,
                    // ampersand
                    41: !0,
                    // right parenthesis
                    43: !0,
                    // plus sign
                    45: !0,
                    // hyphen-minus
                    47: !0,
                    // solidus
                    173: !0,
                    // soft hyphen
                    183: !0,
                    // middle dot
                    8203: !0,
                    // zero-width space
                    8208: !0,
                    // hyphen
                    8211: !0,
                    // en dash
                    8231: !0
                    // interpunct
                    // Many other characters may be reasonable breakpoints
                    // Consider "neutral orientation" characters at scriptDetection.charHasNeutralVerticalOrientation
                    // See https://github.com/mapbox/mapbox-gl-js/issues/3658
                  }, Ug = {
                    40: !0
                    // left parenthesis
                  };
                  function dm(N, k, Z, dt, At, Dt) {
                    if (k.imageName) {
                      const Ut = dt[k.imageName];
                      return Ut ? Ut.displaySize[0] * k.scale * ml / Dt + At : 0;
                    } else {
                      const Ut = Z[k.fontStack], se = Ut && Ut[N];
                      return se ? se.metrics.advance * k.scale + At : 0;
                    }
                  }
                  function op(N, k, Z, dt, At, Dt) {
                    let Ut = 0;
                    for (let Ie = 0; Ie < N.length(); Ie++) {
                      const He = N.getSection(Ie);
                      Ut += dm(N.getCharCode(Ie), He, dt, At, k, Dt);
                    }
                    const se = Math.max(1, Math.ceil(Ut / Z));
                    return Ut / se;
                  }
                  function sp(N, k, Z, dt) {
                    const At = Math.pow(N - k, 2);
                    return dt ? N < k ? At / 2 : At * 2 : At + Math.abs(Z) * Z;
                  }
                  function es(N, k, Z) {
                    let dt = 0;
                    return N === 10 && (dt -= 1e4), Z && (dt += 150), (N === 40 || N === 65288) && (dt += 50), (k === 41 || k === 65289) && (dt += 50), dt;
                  }
                  function vm(N, k, Z, dt, At, Dt) {
                    let Ut = null, se = sp(k, Z, At, Dt);
                    for (const Ie of dt) {
                      const He = k - Ie.x, Ke = sp(He, Z, At, Dt) + Ie.badness;
                      Ke <= se && (Ut = Ie, se = Ke);
                    }
                    return {
                      index: N,
                      x: k,
                      priorBreak: Ut,
                      badness: se
                    };
                  }
                  function pm(N) {
                    return N ? pm(N.priorBreak).concat(N.index) : [];
                  }
                  function Vg(N, k, Z, dt, At, Dt) {
                    if (!N)
                      return [];
                    const Ut = [], se = op(N, k, Z, dt, At, Dt), Ie = N.text.indexOf("​") >= 0;
                    let He = 0;
                    for (let Ke = 0; Ke < N.length(); Ke++) {
                      const cr = N.getSection(Ke), Mr = N.getCharCode(Ke);
                      if (U0[Mr] || (He += dm(Mr, cr, dt, At, k, Dt)), Ke < N.length() - 1) {
                        const Vr = Fu(Mr);
                        (V0[Mr] || Vr || cr.imageName || Ke !== N.length() - 2 && Ug[N.getCharCode(Ke + 1)]) && Ut.push(vm(Ke + 1, He, se, Ut, es(Mr, N.getCharCode(Ke + 1), Vr && Ie), !1));
                      }
                    }
                    return pm(vm(N.length(), He, se, Ut, 0, !0));
                  }
                  function e0(N) {
                    let k = 0.5, Z = 0.5;
                    switch (N) {
                      case "right":
                      case "top-right":
                      case "bottom-right":
                        k = 1;
                        break;
                      case "left":
                      case "top-left":
                      case "bottom-left":
                        k = 0;
                        break;
                    }
                    switch (N) {
                      case "bottom":
                      case "bottom-right":
                      case "bottom-left":
                        Z = 1;
                        break;
                      case "top":
                      case "top-right":
                      case "top-left":
                        Z = 0;
                        break;
                    }
                    return { horizontalAlign: k, verticalAlign: Z };
                  }
                  function lp(N, k, Z, dt, At, Dt, Ut, se, Ie, He, Ke, cr) {
                    let Mr = 0, Vr = qp, nn = 0, gn = 0;
                    const jn = se === "right" ? 1 : se === "left" ? 0 : 0.5;
                    let ui = 0;
                    for (const Wi of At) {
                      Wi.trim();
                      const Ma = Wi.getMaxScale(), ja = (Ma - 1) * ml, ho = { positionedGlyphs: [], lineOffset: 0 };
                      N.positionedLines[ui] = ho;
                      const ro = ho.positionedGlyphs;
                      let Ra = 0;
                      if (!Wi.length()) {
                        Vr += Dt, ++ui;
                        continue;
                      }
                      for (let Ha = 0; Ha < Wi.length(); Ha++) {
                        const eo = Wi.getSection(Ha), $i = Wi.getSectionIndex(Ha), za = Wi.getCharCode(Ha);
                        let Ja = 0, Bo = null, rl = null, Rc = null, ms = ml;
                        const Kl = !(Ie === n.ai.horizontal || // Don't verticalize glyphs that have no upright orientation if vertical placement is disabled.
                        !Ke && !qa(za) || // If vertical placement is enabled, don't verticalize glyphs that
                        // are from complex text layout script, or whitespaces.
                        Ke && (U0[za] || Hv(za)));
                        if (eo.imageName) {
                          const Mu = dt[eo.imageName];
                          if (!Mu)
                            continue;
                          Rc = eo.imageName, N.iconsInText = N.iconsInText || !0, rl = Mu.paddedRect;
                          const pc = Mu.displaySize;
                          eo.scale = eo.scale * ml / cr, Bo = {
                            width: pc[0],
                            height: pc[1],
                            left: vc,
                            top: -Sv,
                            advance: Kl ? pc[1] : pc[0]
                          };
                          const yh = ml - pc[1] * eo.scale;
                          Ja = ja + yh, ms = Bo.advance;
                          const Of = Kl ? pc[0] * eo.scale - ml * Ma : pc[1] * eo.scale - ml * Ma;
                          Of > 0 && Of > Ra && (Ra = Of);
                        } else {
                          const Mu = Z[eo.fontStack], pc = Mu && Mu[za];
                          if (pc && pc.rect)
                            rl = pc.rect, Bo = pc.metrics;
                          else {
                            const yh = k[eo.fontStack], Of = yh && yh[za];
                            if (!Of)
                              continue;
                            Bo = Of.metrics;
                          }
                          Ja = (Ma - eo.scale) * ml;
                        }
                        Kl ? (N.verticalizable = !0, ro.push({ glyph: za, imageName: Rc, x: Mr, y: Vr + Ja, vertical: Kl, scale: eo.scale, fontStack: eo.fontStack, sectionIndex: $i, metrics: Bo, rect: rl }), Mr += ms * eo.scale + He) : (ro.push({ glyph: za, imageName: Rc, x: Mr, y: Vr + Ja, vertical: Kl, scale: eo.scale, fontStack: eo.fontStack, sectionIndex: $i, metrics: Bo, rect: rl }), Mr += Bo.advance * eo.scale + He);
                      }
                      if (ro.length !== 0) {
                        const Ha = Mr - He;
                        nn = Math.max(Ha, nn), Xx(ro, 0, ro.length - 1, jn, Ra);
                      }
                      Mr = 0;
                      const no = Dt * Ma + Ra;
                      ho.lineOffset = Math.max(Ra, ja), Vr += no, gn = Math.max(no, gn), ++ui;
                    }
                    const Ii = Vr - qp, { horizontalAlign: Si, verticalAlign: Pi } = e0(Ut);
                    Yx(N.positionedLines, jn, Si, Pi, nn, gn, Dt, Ii, At.length), N.top += -Pi * Ii, N.bottom = N.top + Ii, N.left += -Si * nn, N.right = N.left + nn;
                  }
                  function Xx(N, k, Z, dt, At) {
                    if (!dt && !At)
                      return;
                    const Dt = N[Z], Ut = Dt.metrics.advance * Dt.scale, se = (N[Z].x + Ut) * dt;
                    for (let Ie = k; Ie <= Z; Ie++)
                      N[Ie].x -= se, N[Ie].y += At;
                  }
                  function Yx(N, k, Z, dt, At, Dt, Ut, se, Ie) {
                    const He = (k - Z) * At;
                    let Ke = 0;
                    Dt !== Ut ? Ke = -se * dt - qp : Ke = (-dt * Ie + 0.5) * Ut;
                    for (const cr of N)
                      for (const Mr of cr.positionedGlyphs)
                        Mr.x += He, Mr.y += Ke;
                  }
                  function Kx(N, k, Z) {
                    const { horizontalAlign: dt, verticalAlign: At } = e0(Z), Dt = k[0], Ut = k[1], se = Dt - N.displaySize[0] * dt, Ie = se + N.displaySize[0], He = Ut - N.displaySize[1] * At, Ke = He + N.displaySize[1];
                    return { image: N, top: He, bottom: Ke, left: se, right: Ie };
                  }
                  function gm(N) {
                    var k, Z;
                    let dt = N.left, At = N.top, Dt = N.right - dt, Ut = N.bottom - At;
                    const se = N.image.content[2] - N.image.content[0], Ie = N.image.content[3] - N.image.content[1], He = (k = N.image.textFitWidth) !== null && k !== void 0 ? k : "stretchOrShrink", Ke = (Z = N.image.textFitHeight) !== null && Z !== void 0 ? Z : "stretchOrShrink", cr = se / Ie;
                    if (Ke === "proportional") {
                      if (He === "stretchOnly" && Dt / Ut < cr || He === "proportional") {
                        const Mr = Math.ceil(Ut * cr);
                        dt *= Mr / Dt, Dt = Mr;
                      }
                    } else if (He === "proportional" && Ke === "stretchOnly" && cr !== 0 && Dt / Ut > cr) {
                      const Mr = Math.ceil(Dt / cr);
                      At *= Mr / Ut, Ut = Mr;
                    }
                    return { x1: dt, y1: At, x2: dt + Dt, y2: At + Ut };
                  }
                  function ym(N, k, Z, dt, At, Dt) {
                    const Ut = N.image;
                    let se;
                    if (Ut.content) {
                      const jn = Ut.content, ui = Ut.pixelRatio || 1;
                      se = [
                        jn[0] / ui,
                        jn[1] / ui,
                        Ut.displaySize[0] - jn[2] / ui,
                        Ut.displaySize[1] - jn[3] / ui
                      ];
                    }
                    const Ie = k.left * Dt, He = k.right * Dt;
                    let Ke, cr, Mr, Vr;
                    Z === "width" || Z === "both" ? (Vr = At[0] + Ie - dt[3], cr = At[0] + He + dt[1]) : (Vr = At[0] + (Ie + He - Ut.displaySize[0]) / 2, cr = Vr + Ut.displaySize[0]);
                    const nn = k.top * Dt, gn = k.bottom * Dt;
                    return Z === "height" || Z === "both" ? (Ke = At[1] + nn - dt[0], Mr = At[1] + gn + dt[2]) : (Ke = At[1] + (nn + gn - Ut.displaySize[1]) / 2, Mr = Ke + Ut.displaySize[1]), { image: Ut, top: Ke, right: cr, bottom: Mr, left: Vr, collisionPadding: se };
                  }
                  const r0 = 255, xd = 128, av = r0 * xd;
                  function mm(N, k) {
                    const { expression: Z } = k;
                    if (Z.kind === "constant")
                      return { kind: "constant", layoutSize: Z.evaluate(new Ko(N + 1)) };
                    if (Z.kind === "source")
                      return { kind: "source" };
                    {
                      const { zoomStops: dt, interpolationType: At } = Z;
                      let Dt = 0;
                      for (; Dt < dt.length && dt[Dt] <= N; )
                        Dt++;
                      Dt = Math.max(0, Dt - 1);
                      let Ut = Dt;
                      for (; Ut < dt.length && dt[Ut] < N + 1; )
                        Ut++;
                      Ut = Math.min(dt.length - 1, Ut);
                      const se = dt[Dt], Ie = dt[Ut];
                      if (Z.kind === "composite")
                        return { kind: "composite", minZoom: se, maxZoom: Ie, interpolationType: At };
                      const He = Z.evaluate(new Ko(se)), Ke = Z.evaluate(new Ko(Ie));
                      return { kind: "camera", minZoom: se, maxZoom: Ie, minSize: He, maxSize: Ke, interpolationType: At };
                    }
                  }
                  function Jx(N, { uSize: k, uSizeT: Z }, { lowerSize: dt, upperSize: At }) {
                    return N.kind === "source" ? dt / xd : N.kind === "composite" ? Vs.number(dt / xd, At / xd, Z) : k;
                  }
                  function Qx(N, k) {
                    let Z = 0, dt = 0;
                    if (N.kind === "constant")
                      dt = N.layoutSize;
                    else if (N.kind !== "source") {
                      const { interpolationType: At, minZoom: Dt, maxZoom: Ut } = N, se = At ? f(Hs.interpolationFactor(At, k, Dt, Ut), 0, 1) : 0;
                      N.kind === "camera" ? dt = Vs.number(N.minSize, N.maxSize, se) : Z = se;
                    }
                    return { uSizeT: Z, uSize: dt };
                  }
                  function H0(N, k, Z) {
                    let dt = "never";
                    const At = N.get(k);
                    return At ? dt = At : N.get(Z) && (dt = "always"), dt;
                  }
                  const xm = iv.VectorTileFeature.types, bm = [
                    { name: "a_fade_opacity", components: 1, type: "Uint8", offset: 0 }
                  ];
                  function n0(N, k, Z, dt, At, Dt, Ut, se, Ie, He, Ke, cr, Mr) {
                    const Vr = se ? Math.min(av, Math.round(se[0])) : 0, nn = se ? Math.min(av, Math.round(se[1])) : 0;
                    N.emplaceBack(
                      // a_pos_offset
                      k,
                      Z,
                      Math.round(dt * 32),
                      Math.round(At * 32),
                      // a_data
                      Dt,
                      // x coordinate of symbol on glyph atlas texture
                      Ut,
                      // y coordinate of symbol on glyph atlas texture
                      (Vr << 1) + (Ie ? 1 : 0),
                      nn,
                      He * 16,
                      Ke * 16,
                      cr * 256,
                      Mr * 256
                    );
                  }
                  function up(N, k, Z) {
                    N.emplaceBack(k.x, k.y, Z), N.emplaceBack(k.x, k.y, Z), N.emplaceBack(k.x, k.y, Z), N.emplaceBack(k.x, k.y, Z);
                  }
                  function Mv(N) {
                    for (const k of N.sections)
                      if (Lf(k.text))
                        return !0;
                    return !1;
                  }
                  class i0 {
                    constructor(k) {
                      this.layoutVertexArray = new to(), this.indexArray = new au(), this.programConfigurations = k, this.segments = new Qo(), this.dynamicLayoutVertexArray = new Eo(), this.opacityVertexArray = new As(), this.hasVisibleVertices = !1, this.placedSymbolArray = new Vi();
                    }
                    isEmpty() {
                      return this.layoutVertexArray.length === 0 && this.indexArray.length === 0 && this.dynamicLayoutVertexArray.length === 0 && this.opacityVertexArray.length === 0;
                    }
                    upload(k, Z, dt, At) {
                      this.isEmpty() || (dt && (this.layoutVertexBuffer = k.createVertexBuffer(this.layoutVertexArray, Tu.members), this.indexBuffer = k.createIndexBuffer(this.indexArray, Z), this.dynamicLayoutVertexBuffer = k.createVertexBuffer(this.dynamicLayoutVertexArray, Ox.members, !0), this.opacityVertexBuffer = k.createVertexBuffer(this.opacityVertexArray, bm, !0), this.opacityVertexBuffer.itemSize = 1), (dt || At) && this.programConfigurations.upload(k));
                    }
                    destroy() {
                      this.layoutVertexBuffer && (this.layoutVertexBuffer.destroy(), this.indexBuffer.destroy(), this.programConfigurations.destroy(), this.segments.destroy(), this.dynamicLayoutVertexBuffer.destroy(), this.opacityVertexBuffer.destroy());
                    }
                  }
                  aa("SymbolBuffers", i0);
                  class ov {
                    constructor(k, Z, dt) {
                      this.layoutVertexArray = new k(), this.layoutAttributes = Z, this.indexArray = new dt(), this.segments = new Qo(), this.collisionVertexArray = new uc();
                    }
                    upload(k) {
                      this.layoutVertexBuffer = k.createVertexBuffer(this.layoutVertexArray, this.layoutAttributes), this.indexBuffer = k.createIndexBuffer(this.indexArray), this.collisionVertexBuffer = k.createVertexBuffer(this.collisionVertexArray, R0.members, !0);
                    }
                    destroy() {
                      this.layoutVertexBuffer && (this.layoutVertexBuffer.destroy(), this.indexBuffer.destroy(), this.segments.destroy(), this.collisionVertexBuffer.destroy());
                    }
                  }
                  aa("CollisionBuffers", ov);
                  class cp {
                    constructor(k) {
                      this.collisionBoxArray = k.collisionBoxArray, this.zoom = k.zoom, this.overscaling = k.overscaling, this.layers = k.layers, this.layerIds = this.layers.map((Ie) => Ie.id), this.index = k.index, this.pixelRatio = k.pixelRatio, this.sourceLayerIndex = k.sourceLayerIndex, this.hasPattern = !1, this.hasRTLText = !1, this.sortKeyRanges = [], this.collisionCircleArray = [], this.placementInvProjMatrix = of([]), this.placementViewportMatrix = of([]);
                      const dt = this.layers[0]._unevaluatedLayout._values;
                      this.textSizeData = mm(this.zoom, dt["text-size"]), this.iconSizeData = mm(this.zoom, dt["icon-size"]);
                      const At = this.layers[0].layout, Dt = At.get("symbol-sort-key"), Ut = At.get("symbol-z-order");
                      this.canOverlap = H0(At, "text-overlap", "text-allow-overlap") !== "never" || H0(At, "icon-overlap", "icon-allow-overlap") !== "never" || At.get("text-ignore-placement") || At.get("icon-ignore-placement"), this.sortFeaturesByKey = Ut !== "viewport-y" && !Dt.isConstant();
                      const se = Ut === "viewport-y" || Ut === "auto" && !this.sortFeaturesByKey;
                      this.sortFeaturesByY = se && this.canOverlap, At.get("symbol-placement") === "point" && (this.writingModes = At.get("text-writing-mode").map((Ie) => n.ai[Ie])), this.stateDependentLayerIds = this.layers.filter((Ie) => Ie.isStateDependent()).map((Ie) => Ie.id), this.sourceID = k.sourceID;
                    }
                    createArrays() {
                      this.text = new i0(new Re(this.layers, this.zoom, (k) => /^text/.test(k))), this.icon = new i0(new Re(this.layers, this.zoom, (k) => /^icon/.test(k))), this.glyphOffsetArray = new Ki(), this.lineVertexArray = new na(), this.symbolInstances = new Hi(), this.textAnchorOffsets = new la();
                    }
                    calculateGlyphDependencies(k, Z, dt, At, Dt) {
                      for (let Ut = 0; Ut < k.length; Ut++)
                        if (Z[k.charCodeAt(Ut)] = !0, (dt || At) && Dt) {
                          const se = Kp[k.charAt(Ut)];
                          se && (Z[se.charCodeAt(0)] = !0);
                        }
                    }
                    populate(k, Z, dt) {
                      const At = this.layers[0], Dt = At.layout, Ut = Dt.get("text-font"), se = Dt.get("text-field"), Ie = Dt.get("icon-image"), He = (se.value.kind !== "constant" || se.value.value instanceof Ns && !se.value.value.isEmpty() || se.value.value.toString().length > 0) && (Ut.value.kind !== "constant" || Ut.value.value.length > 0), Ke = Ie.value.kind !== "constant" || !!Ie.value.value || Object.keys(Ie.parameters).length > 0, cr = Dt.get("symbol-sort-key");
                      if (this.features = [], !He && !Ke)
                        return;
                      const Mr = Z.iconDependencies, Vr = Z.glyphDependencies, nn = Z.availableImages, gn = new Ko(this.zoom);
                      for (const { feature: jn, id: ui, index: Ii, sourceLayerIndex: Si } of k) {
                        const Pi = At._featureFilter.needGeometry, Wi = Gn(jn, Pi);
                        if (!At._featureFilter.filter(gn, Wi, dt))
                          continue;
                        Pi || (Wi.geometry = Rn(jn));
                        let Ma;
                        if (He) {
                          const Ra = At.getValueAndResolveTokens("text-field", Wi, dt, nn), no = Ns.factory(Ra), Ha = this.hasRTLText = this.hasRTLText || Mv(no);
                          (!Ha || // non-rtl text so can proceed safely
                          Os.getRTLTextPluginStatus() === "unavailable" || // We don't intend to lazy-load the rtl text plugin, so proceed with incorrect shaping
                          Ha && Os.isParsed()) && (Ma = Bx(no, At, Wi));
                        }
                        let ja;
                        if (Ke) {
                          const Ra = At.getValueAndResolveTokens("icon-image", Wi, dt, nn);
                          Ra instanceof jo ? ja = Ra : ja = jo.fromString(Ra);
                        }
                        if (!Ma && !ja)
                          continue;
                        const ho = this.sortFeaturesByKey ? cr.evaluate(Wi, {}, dt) : void 0, ro = {
                          id: ui,
                          text: Ma,
                          icon: ja,
                          index: Ii,
                          sourceLayerIndex: Si,
                          geometry: Wi.geometry,
                          properties: jn.properties,
                          type: xm[jn.type],
                          sortKey: ho
                        };
                        if (this.features.push(ro), ja && (Mr[ja.name] = !0), Ma) {
                          const Ra = Ut.evaluate(Wi, {}, dt).join(","), no = Dt.get("text-rotation-alignment") !== "viewport" && Dt.get("symbol-placement") !== "point";
                          this.allowVerticalPlacement = this.writingModes && this.writingModes.indexOf(n.ai.vertical) >= 0;
                          for (const Ha of Ma.sections)
                            if (Ha.image)
                              Mr[Ha.image.name] = !0;
                            else {
                              const eo = jl(Ma.toString()), $i = Ha.fontStack || Ra, za = Vr[$i] = Vr[$i] || {};
                              this.calculateGlyphDependencies(Ha.text, za, no, this.allowVerticalPlacement, eo);
                            }
                        }
                      }
                      Dt.get("symbol-placement") === "line" && (this.features = rm(this.features)), this.sortFeaturesByKey && this.features.sort((jn, ui) => jn.sortKey - ui.sortKey);
                    }
                    update(k, Z, dt) {
                      this.stateDependentLayers.length && (this.text.programConfigurations.updatePaintArrays(k, Z, this.layers, dt), this.icon.programConfigurations.updatePaintArrays(k, Z, this.layers, dt));
                    }
                    isEmpty() {
                      return this.symbolInstances.length === 0 && !this.hasRTLText;
                    }
                    uploadPending() {
                      return !this.uploaded || this.text.programConfigurations.needsUpload || this.icon.programConfigurations.needsUpload;
                    }
                    upload(k) {
                      !this.uploaded && this.hasDebugData() && (this.textCollisionBox.upload(k), this.iconCollisionBox.upload(k)), this.text.upload(k, this.sortFeaturesByY, !this.uploaded, this.text.programConfigurations.needsUpload), this.icon.upload(k, this.sortFeaturesByY, !this.uploaded, this.icon.programConfigurations.needsUpload), this.uploaded = !0;
                    }
                    destroyDebugData() {
                      this.textCollisionBox.destroy(), this.iconCollisionBox.destroy();
                    }
                    destroy() {
                      this.text.destroy(), this.icon.destroy(), this.hasDebugData() && this.destroyDebugData();
                    }
                    addToLineVertexArray(k, Z) {
                      const dt = this.lineVertexArray.length;
                      if (k.segment !== void 0) {
                        let At = k.dist(Z[k.segment + 1]), Dt = k.dist(Z[k.segment]);
                        const Ut = {};
                        for (let se = k.segment + 1; se < Z.length; se++)
                          Ut[se] = { x: Z[se].x, y: Z[se].y, tileUnitDistanceFromAnchor: At }, se < Z.length - 1 && (At += Z[se + 1].dist(Z[se]));
                        for (let se = k.segment || 0; se >= 0; se--)
                          Ut[se] = { x: Z[se].x, y: Z[se].y, tileUnitDistanceFromAnchor: Dt }, se > 0 && (Dt += Z[se - 1].dist(Z[se]));
                        for (let se = 0; se < Z.length; se++) {
                          const Ie = Ut[se];
                          this.lineVertexArray.emplaceBack(Ie.x, Ie.y, Ie.tileUnitDistanceFromAnchor);
                        }
                      }
                      return {
                        lineStartIndex: dt,
                        lineLength: this.lineVertexArray.length - dt
                      };
                    }
                    addSymbols(k, Z, dt, At, Dt, Ut, se, Ie, He, Ke, cr, Mr) {
                      const Vr = k.indexArray, nn = k.layoutVertexArray, gn = k.segments.prepareSegment(4 * Z.length, nn, Vr, this.canOverlap ? Ut.sortKey : void 0), jn = this.glyphOffsetArray.length, ui = gn.vertexLength, Ii = this.allowVerticalPlacement && se === n.ai.vertical ? Math.PI / 2 : 0, Si = Ut.text && Ut.text.sections;
                      for (let Pi = 0; Pi < Z.length; Pi++) {
                        const { tl: Wi, tr: Ma, bl: ja, br: ho, tex: ro, pixelOffsetTL: Ra, pixelOffsetBR: no, minFontScaleX: Ha, minFontScaleY: eo, glyphOffset: $i, isSDF: za, sectionIndex: Ja } = Z[Pi], Bo = gn.vertexLength, rl = $i[1];
                        n0(nn, Ie.x, Ie.y, Wi.x, rl + Wi.y, ro.x, ro.y, dt, za, Ra.x, Ra.y, Ha, eo), n0(nn, Ie.x, Ie.y, Ma.x, rl + Ma.y, ro.x + ro.w, ro.y, dt, za, no.x, Ra.y, Ha, eo), n0(nn, Ie.x, Ie.y, ja.x, rl + ja.y, ro.x, ro.y + ro.h, dt, za, Ra.x, no.y, Ha, eo), n0(nn, Ie.x, Ie.y, ho.x, rl + ho.y, ro.x + ro.w, ro.y + ro.h, dt, za, no.x, no.y, Ha, eo), up(k.dynamicLayoutVertexArray, Ie, Ii), Vr.emplaceBack(Bo, Bo + 1, Bo + 2), Vr.emplaceBack(Bo + 1, Bo + 2, Bo + 3), gn.vertexLength += 4, gn.primitiveLength += 2, this.glyphOffsetArray.emplaceBack($i[0]), (Pi === Z.length - 1 || Ja !== Z[Pi + 1].sectionIndex) && k.programConfigurations.populatePaintArrays(nn.length, Ut, Ut.index, {}, Mr, Si && Si[Ja]);
                      }
                      k.placedSymbolArray.emplaceBack(
                        Ie.x,
                        Ie.y,
                        jn,
                        this.glyphOffsetArray.length - jn,
                        ui,
                        He,
                        Ke,
                        Ie.segment,
                        dt ? dt[0] : 0,
                        dt ? dt[1] : 0,
                        At[0],
                        At[1],
                        se,
                        // placedOrientation is null initially; will be updated to horizontal(1)/vertical(2) if placed
                        0,
                        !1,
                        // The crossTileID is only filled/used on the foreground for dynamic text anchors
                        0,
                        cr
                      );
                    }
                    _addCollisionDebugVertex(k, Z, dt, At, Dt, Ut) {
                      return Z.emplaceBack(0, 0), k.emplaceBack(
                        // pos
                        dt.x,
                        dt.y,
                        // a_anchor_pos
                        At,
                        Dt,
                        // extrude
                        Math.round(Ut.x),
                        Math.round(Ut.y)
                      );
                    }
                    addCollisionDebugVertices(k, Z, dt, At, Dt, Ut, se) {
                      const Ie = Dt.segments.prepareSegment(4, Dt.layoutVertexArray, Dt.indexArray), He = Ie.vertexLength, Ke = Dt.layoutVertexArray, cr = Dt.collisionVertexArray, Mr = se.anchorX, Vr = se.anchorY;
                      this._addCollisionDebugVertex(Ke, cr, Ut, Mr, Vr, new u(k, Z)), this._addCollisionDebugVertex(Ke, cr, Ut, Mr, Vr, new u(dt, Z)), this._addCollisionDebugVertex(Ke, cr, Ut, Mr, Vr, new u(dt, At)), this._addCollisionDebugVertex(Ke, cr, Ut, Mr, Vr, new u(k, At)), Ie.vertexLength += 4;
                      const nn = Dt.indexArray;
                      nn.emplaceBack(He, He + 1), nn.emplaceBack(He + 1, He + 2), nn.emplaceBack(He + 2, He + 3), nn.emplaceBack(He + 3, He), Ie.primitiveLength += 4;
                    }
                    addDebugCollisionBoxes(k, Z, dt, At) {
                      for (let Dt = k; Dt < Z; Dt++) {
                        const Ut = this.collisionBoxArray.get(Dt), se = Ut.x1, Ie = Ut.y1, He = Ut.x2, Ke = Ut.y2;
                        this.addCollisionDebugVertices(se, Ie, He, Ke, At ? this.textCollisionBox : this.iconCollisionBox, Ut.anchorPoint, dt);
                      }
                    }
                    generateCollisionDebugBuffers() {
                      this.hasDebugData() && this.destroyDebugData(), this.textCollisionBox = new ov(js, Hh.members, nf), this.iconCollisionBox = new ov(js, Hh.members, nf);
                      for (let k = 0; k < this.symbolInstances.length; k++) {
                        const Z = this.symbolInstances.get(k);
                        this.addDebugCollisionBoxes(Z.textBoxStartIndex, Z.textBoxEndIndex, Z, !0), this.addDebugCollisionBoxes(Z.verticalTextBoxStartIndex, Z.verticalTextBoxEndIndex, Z, !0), this.addDebugCollisionBoxes(Z.iconBoxStartIndex, Z.iconBoxEndIndex, Z, !1), this.addDebugCollisionBoxes(Z.verticalIconBoxStartIndex, Z.verticalIconBoxEndIndex, Z, !1);
                      }
                    }
                    // These flat arrays are meant to be quicker to iterate over than the source
                    // CollisionBoxArray
                    _deserializeCollisionBoxesForSymbol(k, Z, dt, At, Dt, Ut, se, Ie, He) {
                      const Ke = {};
                      for (let cr = Z; cr < dt; cr++) {
                        const Mr = k.get(cr);
                        Ke.textBox = { x1: Mr.x1, y1: Mr.y1, x2: Mr.x2, y2: Mr.y2, anchorPointX: Mr.anchorPointX, anchorPointY: Mr.anchorPointY }, Ke.textFeatureIndex = Mr.featureIndex;
                        break;
                      }
                      for (let cr = At; cr < Dt; cr++) {
                        const Mr = k.get(cr);
                        Ke.verticalTextBox = { x1: Mr.x1, y1: Mr.y1, x2: Mr.x2, y2: Mr.y2, anchorPointX: Mr.anchorPointX, anchorPointY: Mr.anchorPointY }, Ke.verticalTextFeatureIndex = Mr.featureIndex;
                        break;
                      }
                      for (let cr = Ut; cr < se; cr++) {
                        const Mr = k.get(cr);
                        Ke.iconBox = { x1: Mr.x1, y1: Mr.y1, x2: Mr.x2, y2: Mr.y2, anchorPointX: Mr.anchorPointX, anchorPointY: Mr.anchorPointY }, Ke.iconFeatureIndex = Mr.featureIndex;
                        break;
                      }
                      for (let cr = Ie; cr < He; cr++) {
                        const Mr = k.get(cr);
                        Ke.verticalIconBox = { x1: Mr.x1, y1: Mr.y1, x2: Mr.x2, y2: Mr.y2, anchorPointX: Mr.anchorPointX, anchorPointY: Mr.anchorPointY }, Ke.verticalIconFeatureIndex = Mr.featureIndex;
                        break;
                      }
                      return Ke;
                    }
                    deserializeCollisionBoxes(k) {
                      this.collisionArrays = [];
                      for (let Z = 0; Z < this.symbolInstances.length; Z++) {
                        const dt = this.symbolInstances.get(Z);
                        this.collisionArrays.push(this._deserializeCollisionBoxesForSymbol(k, dt.textBoxStartIndex, dt.textBoxEndIndex, dt.verticalTextBoxStartIndex, dt.verticalTextBoxEndIndex, dt.iconBoxStartIndex, dt.iconBoxEndIndex, dt.verticalIconBoxStartIndex, dt.verticalIconBoxEndIndex));
                      }
                    }
                    hasTextData() {
                      return this.text.segments.get().length > 0;
                    }
                    hasIconData() {
                      return this.icon.segments.get().length > 0;
                    }
                    hasDebugData() {
                      return this.textCollisionBox && this.iconCollisionBox;
                    }
                    hasTextCollisionBoxData() {
                      return this.hasDebugData() && this.textCollisionBox.segments.get().length > 0;
                    }
                    hasIconCollisionBoxData() {
                      return this.hasDebugData() && this.iconCollisionBox.segments.get().length > 0;
                    }
                    addIndicesForPlacedSymbol(k, Z) {
                      const dt = k.placedSymbolArray.get(Z), At = dt.vertexStartIndex + dt.numGlyphs * 4;
                      for (let Dt = dt.vertexStartIndex; Dt < At; Dt += 4)
                        k.indexArray.emplaceBack(Dt, Dt + 1, Dt + 2), k.indexArray.emplaceBack(Dt + 1, Dt + 2, Dt + 3);
                    }
                    getSortedSymbolIndexes(k) {
                      if (this.sortedAngle === k && this.symbolInstanceIndexes !== void 0)
                        return this.symbolInstanceIndexes;
                      const Z = Math.sin(k), dt = Math.cos(k), At = [], Dt = [], Ut = [];
                      for (let se = 0; se < this.symbolInstances.length; ++se) {
                        Ut.push(se);
                        const Ie = this.symbolInstances.get(se);
                        At.push(Math.round(Z * Ie.anchorX + dt * Ie.anchorY) | 0), Dt.push(Ie.featureIndex);
                      }
                      return Ut.sort((se, Ie) => At[se] - At[Ie] || Dt[Ie] - Dt[se]), Ut;
                    }
                    addToSortKeyRanges(k, Z) {
                      const dt = this.sortKeyRanges[this.sortKeyRanges.length - 1];
                      dt && dt.sortKey === Z ? dt.symbolInstanceEnd = k + 1 : this.sortKeyRanges.push({
                        sortKey: Z,
                        symbolInstanceStart: k,
                        symbolInstanceEnd: k + 1
                      });
                    }
                    sortFeatures(k) {
                      if (this.sortFeaturesByY && this.sortedAngle !== k && !(this.text.segments.get().length > 1 || this.icon.segments.get().length > 1)) {
                        this.symbolInstanceIndexes = this.getSortedSymbolIndexes(k), this.sortedAngle = k, this.text.indexArray.clear(), this.icon.indexArray.clear(), this.featureSortOrder = [];
                        for (const Z of this.symbolInstanceIndexes) {
                          const dt = this.symbolInstances.get(Z);
                          this.featureSortOrder.push(dt.featureIndex), [
                            dt.rightJustifiedTextSymbolIndex,
                            dt.centerJustifiedTextSymbolIndex,
                            dt.leftJustifiedTextSymbolIndex
                          ].forEach((At, Dt, Ut) => {
                            At >= 0 && Ut.indexOf(At) === Dt && this.addIndicesForPlacedSymbol(this.text, At);
                          }), dt.verticalPlacedTextSymbolIndex >= 0 && this.addIndicesForPlacedSymbol(this.text, dt.verticalPlacedTextSymbolIndex), dt.placedIconSymbolIndex >= 0 && this.addIndicesForPlacedSymbol(this.icon, dt.placedIconSymbolIndex), dt.verticalPlacedIconSymbolIndex >= 0 && this.addIndicesForPlacedSymbol(this.icon, dt.verticalPlacedIconSymbolIndex);
                        }
                        this.text.indexBuffer && this.text.indexBuffer.updateData(this.text.indexArray), this.icon.indexBuffer && this.icon.indexBuffer.updateData(this.icon.indexArray);
                      }
                    }
                  }
                  aa("SymbolBucket", cp, {
                    omit: ["layers", "collisionBoxArray", "features", "compareText"]
                  }), cp.MAX_GLYPHS = 65535, cp.addDynamicAttributes = up;
                  function wm(N, k) {
                    return k.replace(/{([^{}]+)}/g, (Z, dt) => N && dt in N ? String(N[dt]) : "");
                  }
                  let el;
                  const _m = () => el = el || new Ws({
                    "symbol-placement": new ka(or.layout_symbol["symbol-placement"]),
                    "symbol-spacing": new ka(or.layout_symbol["symbol-spacing"]),
                    "symbol-avoid-edges": new ka(or.layout_symbol["symbol-avoid-edges"]),
                    "symbol-sort-key": new Ua(or.layout_symbol["symbol-sort-key"]),
                    "symbol-z-order": new ka(or.layout_symbol["symbol-z-order"]),
                    "icon-allow-overlap": new ka(or.layout_symbol["icon-allow-overlap"]),
                    "icon-overlap": new ka(or.layout_symbol["icon-overlap"]),
                    "icon-ignore-placement": new ka(or.layout_symbol["icon-ignore-placement"]),
                    "icon-optional": new ka(or.layout_symbol["icon-optional"]),
                    "icon-rotation-alignment": new ka(or.layout_symbol["icon-rotation-alignment"]),
                    "icon-size": new Ua(or.layout_symbol["icon-size"]),
                    "icon-text-fit": new ka(or.layout_symbol["icon-text-fit"]),
                    "icon-text-fit-padding": new ka(or.layout_symbol["icon-text-fit-padding"]),
                    "icon-image": new Ua(or.layout_symbol["icon-image"]),
                    "icon-rotate": new Ua(or.layout_symbol["icon-rotate"]),
                    "icon-padding": new Ua(or.layout_symbol["icon-padding"]),
                    "icon-keep-upright": new ka(or.layout_symbol["icon-keep-upright"]),
                    "icon-offset": new Ua(or.layout_symbol["icon-offset"]),
                    "icon-anchor": new Ua(or.layout_symbol["icon-anchor"]),
                    "icon-pitch-alignment": new ka(or.layout_symbol["icon-pitch-alignment"]),
                    "text-pitch-alignment": new ka(or.layout_symbol["text-pitch-alignment"]),
                    "text-rotation-alignment": new ka(or.layout_symbol["text-rotation-alignment"]),
                    "text-field": new Ua(or.layout_symbol["text-field"]),
                    "text-font": new Ua(or.layout_symbol["text-font"]),
                    "text-size": new Ua(or.layout_symbol["text-size"]),
                    "text-max-width": new Ua(or.layout_symbol["text-max-width"]),
                    "text-line-height": new ka(or.layout_symbol["text-line-height"]),
                    "text-letter-spacing": new Ua(or.layout_symbol["text-letter-spacing"]),
                    "text-justify": new Ua(or.layout_symbol["text-justify"]),
                    "text-radial-offset": new Ua(or.layout_symbol["text-radial-offset"]),
                    "text-variable-anchor": new ka(or.layout_symbol["text-variable-anchor"]),
                    "text-variable-anchor-offset": new Ua(or.layout_symbol["text-variable-anchor-offset"]),
                    "text-anchor": new Ua(or.layout_symbol["text-anchor"]),
                    "text-max-angle": new ka(or.layout_symbol["text-max-angle"]),
                    "text-writing-mode": new ka(or.layout_symbol["text-writing-mode"]),
                    "text-rotate": new Ua(or.layout_symbol["text-rotate"]),
                    "text-padding": new ka(or.layout_symbol["text-padding"]),
                    "text-keep-upright": new ka(or.layout_symbol["text-keep-upright"]),
                    "text-transform": new Ua(or.layout_symbol["text-transform"]),
                    "text-offset": new Ua(or.layout_symbol["text-offset"]),
                    "text-allow-overlap": new ka(or.layout_symbol["text-allow-overlap"]),
                    "text-overlap": new ka(or.layout_symbol["text-overlap"]),
                    "text-ignore-placement": new ka(or.layout_symbol["text-ignore-placement"]),
                    "text-optional": new ka(or.layout_symbol["text-optional"])
                  });
                  let ys;
                  const Tm = () => ys = ys || new Ws({
                    "icon-opacity": new Ua(or.paint_symbol["icon-opacity"]),
                    "icon-color": new Ua(or.paint_symbol["icon-color"]),
                    "icon-halo-color": new Ua(or.paint_symbol["icon-halo-color"]),
                    "icon-halo-width": new Ua(or.paint_symbol["icon-halo-width"]),
                    "icon-halo-blur": new Ua(or.paint_symbol["icon-halo-blur"]),
                    "icon-translate": new ka(or.paint_symbol["icon-translate"]),
                    "icon-translate-anchor": new ka(or.paint_symbol["icon-translate-anchor"]),
                    "text-opacity": new Ua(or.paint_symbol["text-opacity"]),
                    "text-color": new Ua(or.paint_symbol["text-color"], { runtimeType: qi, getOverride: (N) => N.textColor, hasOverride: (N) => !!N.textColor }),
                    "text-halo-color": new Ua(or.paint_symbol["text-halo-color"]),
                    "text-halo-width": new Ua(or.paint_symbol["text-halo-width"]),
                    "text-halo-blur": new Ua(or.paint_symbol["text-halo-blur"]),
                    "text-translate": new ka(or.paint_symbol["text-translate"]),
                    "text-translate-anchor": new ka(or.paint_symbol["text-translate-anchor"])
                  });
                  var G0 = { get paint() {
                    return Tm();
                  }, get layout() {
                    return _m();
                  } };
                  class Hg {
                    constructor(k) {
                      if (k.property.overrides === void 0)
                        throw new Error("overrides must be provided to instantiate FormatSectionOverride class");
                      this.type = k.property.overrides ? k.property.overrides.runtimeType : kn, this.defaultValue = k;
                    }
                    evaluate(k) {
                      if (k.formattedSection) {
                        const Z = this.defaultValue.property.overrides;
                        if (Z && Z.hasOverride(k.formattedSection))
                          return Z.getOverride(k.formattedSection);
                      }
                      return k.feature && k.featureState ? this.defaultValue.evaluate(k.feature, k.featureState) : this.defaultValue.property.specification.default;
                    }
                    eachChild(k) {
                      if (!this.defaultValue.isConstant()) {
                        const Z = this.defaultValue.value;
                        k(Z._styleExpression.expression);
                      }
                    }
                    // Cannot be statically evaluated, as the output depends on the evaluation context.
                    outputDefined() {
                      return !1;
                    }
                    serialize() {
                      return null;
                    }
                  }
                  aa("FormatSectionOverride", Hg, { omit: ["defaultValue"] });
                  class a0 extends oc {
                    constructor(k) {
                      super(k, G0);
                    }
                    recalculate(k, Z) {
                      if (super.recalculate(k, Z), this.layout.get("icon-rotation-alignment") === "auto" && (this.layout.get("symbol-placement") !== "point" ? this.layout._values["icon-rotation-alignment"] = "map" : this.layout._values["icon-rotation-alignment"] = "viewport"), this.layout.get("text-rotation-alignment") === "auto" && (this.layout.get("symbol-placement") !== "point" ? this.layout._values["text-rotation-alignment"] = "map" : this.layout._values["text-rotation-alignment"] = "viewport"), this.layout.get("text-pitch-alignment") === "auto" && (this.layout._values["text-pitch-alignment"] = this.layout.get("text-rotation-alignment") === "map" ? "map" : "viewport"), this.layout.get("icon-pitch-alignment") === "auto" && (this.layout._values["icon-pitch-alignment"] = this.layout.get("icon-rotation-alignment")), this.layout.get("symbol-placement") === "point") {
                        const dt = this.layout.get("text-writing-mode");
                        if (dt) {
                          const At = [];
                          for (const Dt of dt)
                            At.indexOf(Dt) < 0 && At.push(Dt);
                          this.layout._values["text-writing-mode"] = At;
                        } else
                          this.layout._values["text-writing-mode"] = ["horizontal"];
                      }
                      this._setPaintOverrides();
                    }
                    getValueAndResolveTokens(k, Z, dt, At) {
                      const Dt = this.layout.get(k).evaluate(Z, {}, dt, At), Ut = this._unevaluatedLayout._values[k];
                      return !Ut.isDataDriven() && !tf(Ut.value) && Dt ? wm(Z.properties, Dt) : Dt;
                    }
                    createBucket(k) {
                      return new cp(k);
                    }
                    queryRadius() {
                      return 0;
                    }
                    queryIntersectsFeature() {
                      throw new Error("Should take a different path in FeatureIndex");
                    }
                    _setPaintOverrides() {
                      for (const k of G0.paint.overridableProperties) {
                        if (!a0.hasPaintOverride(this.layout, k))
                          continue;
                        const Z = this.paint.get(k), dt = new Hg(Z), At = new Cc(dt, Z.property.specification);
                        let Dt = null;
                        Z.value.kind === "constant" || Z.value.kind === "source" ? Dt = new ef("source", At) : Dt = new pu("composite", At, Z.value.zoomStops), this.paint._values[k] = new ol(Z.property, Dt, Z.parameters);
                      }
                    }
                    _handleOverridablePaintPropertyUpdate(k, Z, dt) {
                      return !this.layout || Z.isDataDriven() || dt.isDataDriven() ? !1 : a0.hasPaintOverride(this.layout, k);
                    }
                    static hasPaintOverride(k, Z) {
                      const dt = k.get("text-field"), At = G0.paint.properties[Z];
                      let Dt = !1;
                      const Ut = (se) => {
                        for (const Ie of se)
                          if (At.overrides && At.overrides.hasOverride(Ie)) {
                            Dt = !0;
                            return;
                          }
                      };
                      if (dt.value.kind === "constant" && dt.value.value instanceof Ns)
                        Ut(dt.value.value.sections);
                      else if (dt.value.kind === "source") {
                        const se = (He) => {
                          if (!Dt)
                            if (He instanceof Ol && ss(He.value) === rn) {
                              const Ke = He.value;
                              Ut(Ke.sections);
                            } else He instanceof Cu ? Ut(He.sections) : He.eachChild(se);
                        }, Ie = dt.value;
                        Ie._styleExpression && se(Ie._styleExpression.expression);
                      }
                      return Dt;
                    }
                  }
                  function Am(N, k, Z, dt = 1) {
                    const At = N.get("icon-padding").evaluate(k, {}, Z), Dt = At && At.values;
                    return [
                      Dt[0] * dt,
                      Dt[1] * dt,
                      Dt[2] * dt,
                      Dt[3] * dt
                    ];
                  }
                  let Sm;
                  const Gg = () => Sm = Sm || new Ws({
                    "background-color": new ka(or.paint_background["background-color"]),
                    "background-pattern": new ac(or.paint_background["background-pattern"]),
                    "background-opacity": new ka(or.paint_background["background-opacity"])
                  });
                  var $x = { get paint() {
                    return Gg();
                  } };
                  class qx extends oc {
                    constructor(k) {
                      super(k, $x);
                    }
                  }
                  let sv;
                  const Ev = () => sv = sv || new Ws({
                    "raster-opacity": new ka(or.paint_raster["raster-opacity"]),
                    "raster-hue-rotate": new ka(or.paint_raster["raster-hue-rotate"]),
                    "raster-brightness-min": new ka(or.paint_raster["raster-brightness-min"]),
                    "raster-brightness-max": new ka(or.paint_raster["raster-brightness-max"]),
                    "raster-saturation": new ka(or.paint_raster["raster-saturation"]),
                    "raster-contrast": new ka(or.paint_raster["raster-contrast"]),
                    "raster-resampling": new ka(or.paint_raster["raster-resampling"]),
                    "raster-fade-duration": new ka(or.paint_raster["raster-fade-duration"])
                  });
                  var Mm = { get paint() {
                    return Ev();
                  } };
                  class ul extends oc {
                    constructor(k) {
                      super(k, Mm);
                    }
                  }
                  function o0(N) {
                    const k = [], Z = N.id;
                    return Z === void 0 && k.push({
                      message: `layers.${Z}: missing required property "id"`
                    }), N.render === void 0 && k.push({
                      message: `layers.${Z}: missing required method "render"`
                    }), N.renderingMode && N.renderingMode !== "2d" && N.renderingMode !== "3d" && k.push({
                      message: `layers.${Z}: property "renderingMode" must be either "2d" or "3d"`
                    }), k;
                  }
                  class tb extends oc {
                    constructor(k) {
                      super(k, {}), this.onAdd = (Z) => {
                        this.implementation.onAdd && this.implementation.onAdd(Z, Z.painter.context.gl);
                      }, this.onRemove = (Z) => {
                        this.implementation.onRemove && this.implementation.onRemove(Z, Z.painter.context.gl);
                      }, this.implementation = k;
                    }
                    is3D() {
                      return this.implementation.renderingMode === "3d";
                    }
                    hasOffscreenPass() {
                      return this.implementation.prerender !== void 0;
                    }
                    recalculate() {
                    }
                    updateTransitions() {
                    }
                    hasTransition() {
                      return !1;
                    }
                    serialize() {
                      throw new Error("Custom layers cannot be serialized");
                    }
                  }
                  function Zd(N) {
                    if (N.type === "custom")
                      return new tb(N);
                    switch (N.type) {
                      case "background":
                        return new qx(N);
                      case "circle":
                        return new wg(N);
                      case "fill":
                        return new jy(N);
                      case "fill-extrusion":
                        return new Sx(N);
                      case "heatmap":
                        return new X1(N);
                      case "hillshade":
                        return new Xv(N);
                      case "line":
                        return new tm(N);
                      case "raster":
                        return new ul(N);
                      case "symbol":
                        return new a0(N);
                    }
                  }
                  class eb {
                    constructor(k) {
                      this._methodToThrottle = k, this._triggered = !1, typeof MessageChannel < "u" && (this._channel = new MessageChannel(), this._channel.port2.onmessage = () => {
                        this._triggered = !1, this._methodToThrottle();
                      });
                    }
                    trigger() {
                      this._triggered || (this._triggered = !0, this._channel ? this._channel.port1.postMessage(!0) : setTimeout(() => {
                        this._triggered = !1, this._methodToThrottle();
                      }, 0));
                    }
                    remove() {
                      delete this._channel, this._methodToThrottle = () => {
                      };
                    }
                  }
                  class W0 {
                    /**
                     * @param target - The target
                     * @param mapId - A unique identifier for the Map instance using this Actor.
                     */
                    constructor(k, Z) {
                      this.target = k, this.mapId = Z, this.resolveRejects = {}, this.tasks = {}, this.taskQueue = [], this.abortControllers = {}, this.messageHandlers = {}, this.invoker = new eb(() => this.process()), this.subscription = pt(this.target, "message", (dt) => this.receive(dt), !1), this.globalScope = q(self) ? k : window;
                    }
                    registerMessageHandler(k, Z) {
                      this.messageHandlers[k] = Z;
                    }
                    /**
                     * Sends a message from a main-thread map to a Worker or from a Worker back to
                     * a main-thread map instance.
                     * @param message - the message to send
                     * @param abortController - an optional AbortController to abort the request
                     * @returns a promise that will be resolved with the response data
                     */
                    sendAsync(k, Z) {
                      return new Promise((dt, At) => {
                        const Dt = Math.round(Math.random() * 1e18).toString(36).substring(0, 10);
                        this.resolveRejects[Dt] = {
                          resolve: dt,
                          reject: At
                        }, Z && Z.signal.addEventListener("abort", () => {
                          delete this.resolveRejects[Dt];
                          const Ie = {
                            id: Dt,
                            type: "<cancel>",
                            origin: location.origin,
                            targetMapId: k.targetMapId,
                            sourceMapId: this.mapId
                          };
                          this.target.postMessage(Ie);
                        }, { once: !0 });
                        const Ut = [], se = Object.assign(Object.assign({}, k), { id: Dt, sourceMapId: this.mapId, origin: location.origin, data: as(k.data, Ut) });
                        this.target.postMessage(se, { transfer: Ut });
                      });
                    }
                    receive(k) {
                      const Z = k.data, dt = Z.id;
                      if (!(Z.origin !== "file://" && location.origin !== "file://" && Z.origin !== "resource://android" && location.origin !== "resource://android" && Z.origin !== location.origin) && !(Z.targetMapId && this.mapId !== Z.targetMapId)) {
                        if (Z.type === "<cancel>") {
                          delete this.tasks[dt];
                          const At = this.abortControllers[dt];
                          delete this.abortControllers[dt], At && At.abort();
                          return;
                        }
                        if (q(self) || Z.mustQueue) {
                          this.tasks[dt] = Z, this.taskQueue.push(dt), this.invoker.trigger();
                          return;
                        }
                        this.processTask(dt, Z);
                      }
                    }
                    process() {
                      if (this.taskQueue.length === 0)
                        return;
                      const k = this.taskQueue.shift(), Z = this.tasks[k];
                      delete this.tasks[k], this.taskQueue.length > 0 && this.invoker.trigger(), Z && this.processTask(k, Z);
                    }
                    processTask(k, Z) {
                      return s(this, void 0, void 0, function* () {
                        if (Z.type === "<response>") {
                          const Dt = this.resolveRejects[k];
                          if (delete this.resolveRejects[k], !Dt)
                            return;
                          Z.error ? Dt.reject(So(Z.error)) : Dt.resolve(So(Z.data));
                          return;
                        }
                        if (!this.messageHandlers[Z.type]) {
                          this.completeTask(k, new Error(`Could not find a registered handler for ${Z.type}, map ID: ${this.mapId}, available handlers: ${Object.keys(this.messageHandlers).join(", ")}`));
                          return;
                        }
                        const dt = So(Z.data), At = new AbortController();
                        this.abortControllers[k] = At;
                        try {
                          const Dt = yield this.messageHandlers[Z.type](Z.sourceMapId, dt, At);
                          this.completeTask(k, null, Dt);
                        } catch (Dt) {
                          this.completeTask(k, Dt);
                        }
                      });
                    }
                    completeTask(k, Z, dt) {
                      const At = [];
                      delete this.abortControllers[k];
                      const Dt = {
                        id: k,
                        type: "<response>",
                        sourceMapId: this.mapId,
                        origin: location.origin,
                        error: Z ? as(Z) : null,
                        data: as(dt, At)
                      };
                      this.target.postMessage(Dt, { transfer: At });
                    }
                    remove() {
                      this.invoker.remove(), this.subscription.unsubscribe();
                    }
                  }
                  const fp = 63710088e-1;
                  class bd {
                    /**
                     * @param lng - Longitude, measured in degrees.
                     * @param lat - Latitude, measured in degrees.
                     */
                    constructor(k, Z) {
                      if (isNaN(k) || isNaN(Z))
                        throw new Error(`Invalid LngLat object: (${k}, ${Z})`);
                      if (this.lng = +k, this.lat = +Z, this.lat > 90 || this.lat < -90)
                        throw new Error("Invalid LngLat latitude value: must be between -90 and 90");
                    }
                    /**
                     * Returns a new `LngLat` object whose longitude is wrapped to the range (-180, 180).
                     *
                     * @returns The wrapped `LngLat` object.
                     * @example
                     * ```ts
                     * let ll = new LngLat(286.0251, 40.7736);
                     * let wrapped = ll.wrap();
                     * wrapped.lng; // = -73.9749
                     * ```
                     */
                    wrap() {
                      return new bd(_(this.lng, -180, 180), this.lat);
                    }
                    /**
                     * Returns the coordinates represented as an array of two numbers.
                     *
                     * @returns The coordinates represented as an array of longitude and latitude.
                     * @example
                     * ```ts
                     * let ll = new LngLat(-73.9749, 40.7736);
                     * ll.toArray(); // = [-73.9749, 40.7736]
                     * ```
                     */
                    toArray() {
                      return [this.lng, this.lat];
                    }
                    /**
                     * Returns the coordinates represent as a string.
                     *
                     * @returns The coordinates represented as a string of the format `'LngLat(lng, lat)'`.
                     * @example
                     * ```ts
                     * let ll = new LngLat(-73.9749, 40.7736);
                     * ll.toString(); // = "LngLat(-73.9749, 40.7736)"
                     * ```
                     */
                    toString() {
                      return `LngLat(${this.lng}, ${this.lat})`;
                    }
                    /**
                     * Returns the approximate distance between a pair of coordinates in meters
                     * Uses the Haversine Formula (from R.W. Sinnott, "Virtues of the Haversine", Sky and Telescope, vol. 68, no. 2, 1984, p. 159)
                     *
                     * @param lngLat - coordinates to compute the distance to
                     * @returns Distance in meters between the two coordinates.
                     * @example
                     * ```ts
                     * let new_york = new LngLat(-74.0060, 40.7128);
                     * let los_angeles = new LngLat(-118.2437, 34.0522);
                     * new_york.distanceTo(los_angeles); // = 3935751.690893987, "true distance" using a non-spherical approximation is ~3966km
                     * ```
                     */
                    distanceTo(k) {
                      const Z = Math.PI / 180, dt = this.lat * Z, At = k.lat * Z, Dt = Math.sin(dt) * Math.sin(At) + Math.cos(dt) * Math.cos(At) * Math.cos((k.lng - this.lng) * Z);
                      return fp * Math.acos(Math.min(Dt, 1));
                    }
                    /**
                     * Converts an array of two numbers or an object with `lng` and `lat` or `lon` and `lat` properties
                     * to a `LngLat` object.
                     *
                     * If a `LngLat` object is passed in, the function returns it unchanged.
                     *
                     * @param input - An array of two numbers or object to convert, or a `LngLat` object to return.
                     * @returns A new `LngLat` object, if a conversion occurred, or the original `LngLat` object.
                     * @example
                     * ```ts
                     * let arr = [-73.9749, 40.7736];
                     * let ll = LngLat.convert(arr);
                     * ll;   // = LngLat {lng: -73.9749, lat: 40.7736}
                     * ```
                     */
                    static convert(k) {
                      if (k instanceof bd)
                        return k;
                      if (Array.isArray(k) && (k.length === 2 || k.length === 3))
                        return new bd(Number(k[0]), Number(k[1]));
                      if (!Array.isArray(k) && typeof k == "object" && k !== null)
                        return new bd(
                          // flow can't refine this to have one of lng or lat, so we have to cast to any
                          Number("lng" in k ? k.lng : k.lon),
                          Number(k.lat)
                        );
                      throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: <lng>, lat: <lat>}, an object {lon: <lng>, lat: <lat>}, or an array of [<lng>, <lat>]");
                    }
                  }
                  const Cv = 2 * Math.PI * fp;
                  function wd(N) {
                    return Cv * Math.cos(N * Math.PI / 180);
                  }
                  function Wg(N) {
                    return (180 + N) / 360;
                  }
                  function jg(N) {
                    return (180 - 180 / Math.PI * Math.log(Math.tan(Math.PI / 4 + N * Math.PI / 360))) / 360;
                  }
                  function Em(N, k) {
                    return N / wd(k);
                  }
                  function rb(N) {
                    return N * 360 - 180;
                  }
                  function cl(N) {
                    const k = 180 - N * 360;
                    return 360 / Math.PI * Math.atan(Math.exp(k * Math.PI / 180)) - 90;
                  }
                  function nb(N, k) {
                    return N * wd(cl(k));
                  }
                  function lv(N) {
                    return 1 / Math.cos(N * Math.PI / 180);
                  }
                  class s0 {
                    /**
                     * @param x - The x component of the position.
                     * @param y - The y component of the position.
                     * @param z - The z component of the position.
                     */
                    constructor(k, Z, dt = 0) {
                      this.x = +k, this.y = +Z, this.z = +dt;
                    }
                    /**
                     * Project a `LngLat` to a `MercatorCoordinate`.
                     *
                     * @param lngLatLike - The location to project.
                     * @param altitude - The altitude in meters of the position.
                     * @returns The projected mercator coordinate.
                     * @example
                     * ```ts
                     * let coord = MercatorCoordinate.fromLngLat({ lng: 0, lat: 0}, 0);
                     * coord; // MercatorCoordinate(0.5, 0.5, 0)
                     * ```
                     */
                    static fromLngLat(k, Z = 0) {
                      const dt = bd.convert(k);
                      return new s0(Wg(dt.lng), jg(dt.lat), Em(Z, dt.lat));
                    }
                    /**
                     * Returns the `LngLat` for the coordinate.
                     *
                     * @returns The `LngLat` object.
                     * @example
                     * ```ts
                     * let coord = new MercatorCoordinate(0.5, 0.5, 0);
                     * let lngLat = coord.toLngLat(); // LngLat(0, 0)
                     * ```
                     */
                    toLngLat() {
                      return new bd(rb(this.x), cl(this.y));
                    }
                    /**
                     * Returns the altitude in meters of the coordinate.
                     *
                     * @returns The altitude in meters.
                     * @example
                     * ```ts
                     * let coord = new MercatorCoordinate(0, 0, 0.02);
                     * coord.toAltitude(); // 6914.281956295339
                     * ```
                     */
                    toAltitude() {
                      return nb(this.z, this.y);
                    }
                    /**
                     * Returns the distance of 1 meter in `MercatorCoordinate` units at this latitude.
                     *
                     * For coordinates in real world units using meters, this naturally provides the scale
                     * to transform into `MercatorCoordinate`s.
                     *
                     * @returns Distance of 1 meter in `MercatorCoordinate` units.
                     */
                    meterInMercatorCoordinateUnits() {
                      return 1 / Cv * lv(cl(this.y));
                    }
                  }
                  function I(N, k, Z) {
                    k = Math.pow(2, Z) - k - 1;
                    var dt = D(N * 256, k * 256, Z), At = D((N + 1) * 256, (k + 1) * 256, Z);
                    return dt[0] + "," + dt[1] + "," + At[0] + "," + At[1];
                  }
                  function D(N, k, Z) {
                    var dt = 2 * Math.PI * 6378137 / 256 / Math.pow(2, Z), At = N * dt - 2 * Math.PI * 6378137 / 2, Dt = k * dt - 2 * Math.PI * 6378137 / 2;
                    return [At, Dt];
                  }
                  class W {
                    constructor(k, Z, dt) {
                      if (k < 0 || k > 25 || dt < 0 || dt >= Math.pow(2, k) || Z < 0 || Z >= Math.pow(2, k))
                        throw new Error(`x=${Z}, y=${dt}, z=${k} outside of bounds. 0<=x<${Math.pow(2, k)}, 0<=y<${Math.pow(2, k)} 0<=z<=25 `);
                      this.z = k, this.x = Z, this.y = dt, this.key = Pt(0, k, k, Z, dt);
                    }
                    equals(k) {
                      return this.z === k.z && this.x === k.x && this.y === k.y;
                    }
                    // given a list of urls, choose a url template and return a tile URL
                    url(k, Z, dt) {
                      const At = I(this.x, this.y, this.z), Dt = Ht(this.z, this.x, this.y);
                      return k[(this.x + this.y) % k.length].replace(/{prefix}/g, (this.x % 16).toString(16) + (this.y % 16).toString(16)).replace(/{z}/g, String(this.z)).replace(/{x}/g, String(this.x)).replace(/{y}/g, String(dt === "tms" ? Math.pow(2, this.z) - this.y - 1 : this.y)).replace(/{ratio}/g, Z > 1 ? "@2x" : "").replace(/{quadkey}/g, Dt).replace(/{bbox-epsg-3857}/g, At);
                    }
                    isChildOf(k) {
                      const Z = this.z - k.z;
                      return Z > 0 && k.x === this.x >> Z && k.y === this.y >> Z;
                    }
                    getTilePoint(k) {
                      const Z = Math.pow(2, this.z);
                      return new u((k.x * Z - this.x) * Ar, (k.y * Z - this.y) * Ar);
                    }
                    toString() {
                      return `${this.z}/${this.x}/${this.y}`;
                    }
                  }
                  class ot {
                    constructor(k, Z) {
                      this.wrap = k, this.canonical = Z, this.key = Pt(k, Z.z, Z.z, Z.x, Z.y);
                    }
                  }
                  class xt {
                    constructor(k, Z, dt, At, Dt) {
                      if (k < dt)
                        throw new Error(`overscaledZ should be >= z; overscaledZ = ${k}; z = ${dt}`);
                      this.overscaledZ = k, this.wrap = Z, this.canonical = new W(dt, +At, +Dt), this.key = Pt(Z, k, dt, At, Dt);
                    }
                    clone() {
                      return new xt(this.overscaledZ, this.wrap, this.canonical.z, this.canonical.x, this.canonical.y);
                    }
                    equals(k) {
                      return this.overscaledZ === k.overscaledZ && this.wrap === k.wrap && this.canonical.equals(k.canonical);
                    }
                    scaledTo(k) {
                      if (k > this.overscaledZ)
                        throw new Error(`targetZ > this.overscaledZ; targetZ = ${k}; overscaledZ = ${this.overscaledZ}`);
                      const Z = this.canonical.z - k;
                      return k > this.canonical.z ? new xt(k, this.wrap, this.canonical.z, this.canonical.x, this.canonical.y) : new xt(k, this.wrap, k, this.canonical.x >> Z, this.canonical.y >> Z);
                    }
                    /*
                     * calculateScaledKey is an optimization:
                     * when withWrap == true, implements the same as this.scaledTo(z).key,
                     * when withWrap == false, implements the same as this.scaledTo(z).wrapped().key.
                     */
                    calculateScaledKey(k, Z) {
                      if (k > this.overscaledZ)
                        throw new Error(`targetZ > this.overscaledZ; targetZ = ${k}; overscaledZ = ${this.overscaledZ}`);
                      const dt = this.canonical.z - k;
                      return k > this.canonical.z ? Pt(this.wrap * +Z, k, this.canonical.z, this.canonical.x, this.canonical.y) : Pt(this.wrap * +Z, k, k, this.canonical.x >> dt, this.canonical.y >> dt);
                    }
                    isChildOf(k) {
                      if (k.wrap !== this.wrap)
                        return !1;
                      const Z = this.canonical.z - k.canonical.z;
                      return k.overscaledZ === 0 || k.overscaledZ < this.overscaledZ && k.canonical.x === this.canonical.x >> Z && k.canonical.y === this.canonical.y >> Z;
                    }
                    children(k) {
                      if (this.overscaledZ >= k)
                        return [new xt(this.overscaledZ + 1, this.wrap, this.canonical.z, this.canonical.x, this.canonical.y)];
                      const Z = this.canonical.z + 1, dt = this.canonical.x * 2, At = this.canonical.y * 2;
                      return [
                        new xt(Z, this.wrap, Z, dt, At),
                        new xt(Z, this.wrap, Z, dt + 1, At),
                        new xt(Z, this.wrap, Z, dt, At + 1),
                        new xt(Z, this.wrap, Z, dt + 1, At + 1)
                      ];
                    }
                    isLessThan(k) {
                      return this.wrap < k.wrap ? !0 : this.wrap > k.wrap ? !1 : this.overscaledZ < k.overscaledZ ? !0 : this.overscaledZ > k.overscaledZ ? !1 : this.canonical.x < k.canonical.x ? !0 : this.canonical.x > k.canonical.x ? !1 : this.canonical.y < k.canonical.y;
                    }
                    wrapped() {
                      return new xt(this.overscaledZ, 0, this.canonical.z, this.canonical.x, this.canonical.y);
                    }
                    unwrapTo(k) {
                      return new xt(this.overscaledZ, k, this.canonical.z, this.canonical.x, this.canonical.y);
                    }
                    overscaleFactor() {
                      return Math.pow(2, this.overscaledZ - this.canonical.z);
                    }
                    toUnwrapped() {
                      return new ot(this.wrap, this.canonical);
                    }
                    toString() {
                      return `${this.overscaledZ}/${this.canonical.x}/${this.canonical.y}`;
                    }
                    getTilePoint(k) {
                      return this.canonical.getTilePoint(new s0(k.x - this.wrap, k.y));
                    }
                  }
                  function Pt(N, k, Z, dt, At) {
                    N *= 2, N < 0 && (N = N * -1 - 1);
                    const Dt = 1 << Z;
                    return (Dt * Dt * N + Dt * At + dt).toString(36) + Z.toString(36) + k.toString(36);
                  }
                  function Ht(N, k, Z) {
                    let dt = "", At;
                    for (let Dt = N; Dt > 0; Dt--)
                      At = 1 << Dt - 1, dt += (k & At ? 1 : 0) + (Z & At ? 2 : 0);
                    return dt;
                  }
                  aa("CanonicalTileID", W), aa("OverscaledTileID", xt, { omit: ["posMatrix"] });
                  class ve {
                    /**
                     * Constructs a `DEMData` object
                     * @param uid - the tile's unique id
                     * @param data - RGBAImage data has uniform 1px padding on all sides: square tile edge size defines stride
                    // and dim is calculated as stride - 2.
                     * @param encoding - the encoding type of the data
                     * @param redFactor - the red channel factor used to unpack the data, used for `custom` encoding only
                     * @param greenFactor - the green channel factor used to unpack the data, used for `custom` encoding only
                     * @param blueFactor - the blue channel factor used to unpack the data, used for `custom` encoding only
                     * @param baseShift - the base shift used to unpack the data, used for `custom` encoding only
                     */
                    constructor(k, Z, dt, At = 1, Dt = 1, Ut = 1, se = 0) {
                      if (this.uid = k, Z.height !== Z.width)
                        throw new RangeError("DEM tiles must be square");
                      if (dt && !["mapbox", "terrarium", "custom"].includes(dt)) {
                        U(`"${dt}" is not a valid encoding type. Valid types include "mapbox", "terrarium" and "custom".`);
                        return;
                      }
                      this.stride = Z.height;
                      const Ie = this.dim = Z.height - 2;
                      switch (this.data = new Uint32Array(Z.data.buffer), dt) {
                        case "terrarium":
                          this.redFactor = 256, this.greenFactor = 1, this.blueFactor = 390625e-8, this.baseShift = 32768;
                          break;
                        case "custom":
                          this.redFactor = At, this.greenFactor = Dt, this.blueFactor = Ut, this.baseShift = se;
                          break;
                        case "mapbox":
                        default:
                          this.redFactor = 6553.6, this.greenFactor = 25.6, this.blueFactor = 0.1, this.baseShift = 1e4;
                          break;
                      }
                      for (let He = 0; He < Ie; He++)
                        this.data[this._idx(-1, He)] = this.data[this._idx(0, He)], this.data[this._idx(Ie, He)] = this.data[this._idx(Ie - 1, He)], this.data[this._idx(He, -1)] = this.data[this._idx(He, 0)], this.data[this._idx(He, Ie)] = this.data[this._idx(He, Ie - 1)];
                      this.data[this._idx(-1, -1)] = this.data[this._idx(0, 0)], this.data[this._idx(Ie, -1)] = this.data[this._idx(Ie - 1, 0)], this.data[this._idx(-1, Ie)] = this.data[this._idx(0, Ie - 1)], this.data[this._idx(Ie, Ie)] = this.data[this._idx(Ie - 1, Ie - 1)], this.min = Number.MAX_SAFE_INTEGER, this.max = Number.MIN_SAFE_INTEGER;
                      for (let He = 0; He < Ie; He++)
                        for (let Ke = 0; Ke < Ie; Ke++) {
                          const cr = this.get(He, Ke);
                          cr > this.max && (this.max = cr), cr < this.min && (this.min = cr);
                        }
                    }
                    get(k, Z) {
                      const dt = new Uint8Array(this.data.buffer), At = this._idx(k, Z) * 4;
                      return this.unpack(dt[At], dt[At + 1], dt[At + 2]);
                    }
                    getUnpackVector() {
                      return [this.redFactor, this.greenFactor, this.blueFactor, this.baseShift];
                    }
                    _idx(k, Z) {
                      if (k < -1 || k >= this.dim + 1 || Z < -1 || Z >= this.dim + 1)
                        throw new RangeError("out of range source coordinates for DEM data");
                      return (Z + 1) * this.stride + (k + 1);
                    }
                    unpack(k, Z, dt) {
                      return k * this.redFactor + Z * this.greenFactor + dt * this.blueFactor - this.baseShift;
                    }
                    getPixels() {
                      return new kf({ width: this.stride, height: this.stride }, new Uint8Array(this.data.buffer));
                    }
                    backfillBorder(k, Z, dt) {
                      if (this.dim !== k.dim)
                        throw new Error("dem dimension mismatch");
                      let At = Z * this.dim, Dt = Z * this.dim + this.dim, Ut = dt * this.dim, se = dt * this.dim + this.dim;
                      switch (Z) {
                        case -1:
                          At = Dt - 1;
                          break;
                        case 1:
                          Dt = At + 1;
                          break;
                      }
                      switch (dt) {
                        case -1:
                          Ut = se - 1;
                          break;
                        case 1:
                          se = Ut + 1;
                          break;
                      }
                      const Ie = -Z * this.dim, He = -dt * this.dim;
                      for (let Ke = Ut; Ke < se; Ke++)
                        for (let cr = At; cr < Dt; cr++)
                          this.data[this._idx(cr, Ke)] = k.data[this._idx(cr + Ie, Ke + He)];
                    }
                  }
                  aa("DEMData", ve);
                  class Fe {
                    constructor(k) {
                      this._stringToNumber = {}, this._numberToString = [];
                      for (let Z = 0; Z < k.length; Z++) {
                        const dt = k[Z];
                        this._stringToNumber[dt] = Z, this._numberToString[Z] = dt;
                      }
                    }
                    encode(k) {
                      return this._stringToNumber[k];
                    }
                    decode(k) {
                      if (k >= this._numberToString.length)
                        throw new Error(`Out of bounds. Index requested n=${k} can't be >= this._numberToString.length ${this._numberToString.length}`);
                      return this._numberToString[k];
                    }
                  }
                  class Ze {
                    constructor(k, Z, dt, At, Dt) {
                      this.type = "Feature", this._vectorTileFeature = k, k._z = Z, k._x = dt, k._y = At, this.properties = k.properties, this.id = Dt;
                    }
                    get geometry() {
                      return this._geometry === void 0 && (this._geometry = this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x, this._vectorTileFeature._y, this._vectorTileFeature._z).geometry), this._geometry;
                    }
                    set geometry(k) {
                      this._geometry = k;
                    }
                    toJSON() {
                      const k = {
                        geometry: this.geometry
                      };
                      for (const Z in this)
                        Z === "_geometry" || Z === "_vectorTileFeature" || (k[Z] = this[Z]);
                      return k;
                    }
                  }
                  class nr {
                    constructor(k, Z) {
                      this.tileID = k, this.x = k.canonical.x, this.y = k.canonical.y, this.z = k.canonical.z, this.grid = new us(Ar, 16, 0), this.grid3D = new us(Ar, 16, 0), this.featureIndexArray = new wo(), this.promoteId = Z;
                    }
                    insert(k, Z, dt, At, Dt, Ut) {
                      const se = this.featureIndexArray.length;
                      this.featureIndexArray.emplaceBack(dt, At, Dt);
                      const Ie = Ut ? this.grid3D : this.grid;
                      for (let He = 0; He < Z.length; He++) {
                        const Ke = Z[He], cr = [1 / 0, 1 / 0, -1 / 0, -1 / 0];
                        for (let Mr = 0; Mr < Ke.length; Mr++) {
                          const Vr = Ke[Mr];
                          cr[0] = Math.min(cr[0], Vr.x), cr[1] = Math.min(cr[1], Vr.y), cr[2] = Math.max(cr[2], Vr.x), cr[3] = Math.max(cr[3], Vr.y);
                        }
                        cr[0] < Ar && cr[1] < Ar && cr[2] >= 0 && cr[3] >= 0 && Ie.insert(se, cr[0], cr[1], cr[2], cr[3]);
                      }
                    }
                    loadVTLayers() {
                      return this.vtLayers || (this.vtLayers = new iv.VectorTile(new Fg(this.rawTileData)).layers, this.sourceLayerCoder = new Fe(this.vtLayers ? Object.keys(this.vtLayers).sort() : ["_geojsonTileLayer"])), this.vtLayers;
                    }
                    // Finds non-symbol features in this tile at a particular position.
                    query(k, Z, dt, At) {
                      this.loadVTLayers();
                      const Dt = k.params || {}, Ut = Ar / k.tileSize / k.scale, se = Yr(Dt.filter), Ie = k.queryGeometry, He = k.queryPadding * Ut, Ke = Fr(Ie), cr = this.grid.query(Ke.minX - He, Ke.minY - He, Ke.maxX + He, Ke.maxY + He), Mr = Fr(k.cameraQueryGeometry), Vr = this.grid3D.query(Mr.minX - He, Mr.minY - He, Mr.maxX + He, Mr.maxY + He, (jn, ui, Ii, Si) => Va(k.cameraQueryGeometry, jn - He, ui - He, Ii + He, Si + He));
                      for (const jn of Vr)
                        cr.push(jn);
                      cr.sort(Rr);
                      const nn = {};
                      let gn;
                      for (let jn = 0; jn < cr.length; jn++) {
                        const ui = cr[jn];
                        if (ui === gn)
                          continue;
                        gn = ui;
                        const Ii = this.featureIndexArray.get(ui);
                        let Si = null;
                        this.loadMatchingFeature(nn, Ii.bucketIndex, Ii.sourceLayerIndex, Ii.featureIndex, se, Dt.layers, Dt.availableImages, Z, dt, At, (Pi, Wi, Ma) => (Si || (Si = Rn(Pi)), Wi.queryIntersectsFeature(Ie, Pi, Ma, Si, this.z, k.transform, Ut, k.pixelPosMatrix)));
                      }
                      return nn;
                    }
                    loadMatchingFeature(k, Z, dt, At, Dt, Ut, se, Ie, He, Ke, cr) {
                      const Mr = this.bucketLayerIDs[Z];
                      if (Ut && !B(Ut, Mr))
                        return;
                      const Vr = this.sourceLayerCoder.decode(dt), gn = this.vtLayers[Vr].feature(At);
                      if (Dt.needGeometry) {
                        const ui = Gn(gn, !0);
                        if (!Dt.filter(new Ko(this.tileID.overscaledZ), ui, this.tileID.canonical))
                          return;
                      } else if (!Dt.filter(new Ko(this.tileID.overscaledZ), gn))
                        return;
                      const jn = this.getId(gn, Vr);
                      for (let ui = 0; ui < Mr.length; ui++) {
                        const Ii = Mr[ui];
                        if (Ut && Ut.indexOf(Ii) < 0)
                          continue;
                        const Si = Ie[Ii];
                        if (!Si)
                          continue;
                        let Pi = {};
                        jn && Ke && (Pi = Ke.getState(Si.sourceLayer || "_geojsonTileLayer", jn));
                        const Wi = M({}, He[Ii]);
                        Wi.paint = wr(Wi.paint, Si.paint, gn, Pi, se), Wi.layout = wr(Wi.layout, Si.layout, gn, Pi, se);
                        const Ma = !cr || cr(gn, Si, Pi);
                        if (!Ma)
                          continue;
                        const ja = new Ze(gn, this.z, this.x, this.y, jn);
                        ja.layer = Wi;
                        let ho = k[Ii];
                        ho === void 0 && (ho = k[Ii] = []), ho.push({ featureIndex: At, feature: ja, intersectionZ: Ma });
                      }
                    }
                    // Given a set of symbol indexes that have already been looked up,
                    // return a matching set of GeoJSONFeatures
                    lookupSymbolFeatures(k, Z, dt, At, Dt, Ut, se, Ie) {
                      const He = {};
                      this.loadVTLayers();
                      const Ke = Yr(Dt);
                      for (const cr of k)
                        this.loadMatchingFeature(He, dt, At, cr, Ke, Ut, se, Ie, Z);
                      return He;
                    }
                    hasLayer(k) {
                      for (const Z of this.bucketLayerIDs)
                        for (const dt of Z)
                          if (k === dt)
                            return !0;
                      return !1;
                    }
                    getId(k, Z) {
                      let dt = k.id;
                      if (this.promoteId) {
                        const At = typeof this.promoteId == "string" ? this.promoteId : this.promoteId[Z];
                        dt = k.properties[At], typeof dt == "boolean" && (dt = Number(dt));
                      }
                      return dt;
                    }
                  }
                  aa("FeatureIndex", nr, { omit: ["rawTileData", "sourceLayerCoder"] });
                  function wr(N, k, Z, dt, At) {
                    return E(N, (Dt, Ut) => {
                      const se = k instanceof ch ? k.get(Ut) : null;
                      return se && se.evaluate ? se.evaluate(Z, dt, At) : se;
                    });
                  }
                  function Fr(N) {
                    let k = 1 / 0, Z = 1 / 0, dt = -1 / 0, At = -1 / 0;
                    for (const Dt of N)
                      k = Math.min(k, Dt.x), Z = Math.min(Z, Dt.y), dt = Math.max(dt, Dt.x), At = Math.max(At, Dt.y);
                    return { minX: k, minY: Z, maxX: dt, maxY: At };
                  }
                  function Rr(N, k) {
                    return k - N;
                  }
                  function Kr(N, k, Z, dt, At) {
                    const Dt = [];
                    for (let Ut = 0; Ut < N.length; Ut++) {
                      const se = N[Ut];
                      let Ie;
                      for (let He = 0; He < se.length - 1; He++) {
                        let Ke = se[He], cr = se[He + 1];
                        Ke.x < k && cr.x < k || (Ke.x < k ? Ke = new u(k, Ke.y + (cr.y - Ke.y) * ((k - Ke.x) / (cr.x - Ke.x)))._round() : cr.x < k && (cr = new u(k, Ke.y + (cr.y - Ke.y) * ((k - Ke.x) / (cr.x - Ke.x)))._round()), !(Ke.y < Z && cr.y < Z) && (Ke.y < Z ? Ke = new u(Ke.x + (cr.x - Ke.x) * ((Z - Ke.y) / (cr.y - Ke.y)), Z)._round() : cr.y < Z && (cr = new u(Ke.x + (cr.x - Ke.x) * ((Z - Ke.y) / (cr.y - Ke.y)), Z)._round()), !(Ke.x >= dt && cr.x >= dt) && (Ke.x >= dt ? Ke = new u(dt, Ke.y + (cr.y - Ke.y) * ((dt - Ke.x) / (cr.x - Ke.x)))._round() : cr.x >= dt && (cr = new u(dt, Ke.y + (cr.y - Ke.y) * ((dt - Ke.x) / (cr.x - Ke.x)))._round()), !(Ke.y >= At && cr.y >= At) && (Ke.y >= At ? Ke = new u(Ke.x + (cr.x - Ke.x) * ((At - Ke.y) / (cr.y - Ke.y)), At)._round() : cr.y >= At && (cr = new u(Ke.x + (cr.x - Ke.x) * ((At - Ke.y) / (cr.y - Ke.y)), At)._round()), (!Ie || !Ke.equals(Ie[Ie.length - 1])) && (Ie = [Ke], Dt.push(Ie)), Ie.push(cr)))));
                      }
                    }
                    return Dt;
                  }
                  class yn extends u {
                    constructor(k, Z, dt, At) {
                      super(k, Z), this.angle = dt, At !== void 0 && (this.segment = At);
                    }
                    clone() {
                      return new yn(this.x, this.y, this.angle, this.segment);
                    }
                  }
                  aa("Anchor", yn);
                  function Qn(N, k, Z, dt, At) {
                    if (k.segment === void 0 || Z === 0)
                      return !0;
                    let Dt = k, Ut = k.segment + 1, se = 0;
                    for (; se > -Z / 2; ) {
                      if (Ut--, Ut < 0)
                        return !1;
                      se -= N[Ut].dist(Dt), Dt = N[Ut];
                    }
                    se += N[Ut].dist(N[Ut + 1]), Ut++;
                    const Ie = [];
                    let He = 0;
                    for (; se < Z / 2; ) {
                      const Ke = N[Ut - 1], cr = N[Ut], Mr = N[Ut + 1];
                      if (!Mr)
                        return !1;
                      let Vr = Ke.angleTo(cr) - cr.angleTo(Mr);
                      for (Vr = Math.abs((Vr + 3 * Math.PI) % (Math.PI * 2) - Math.PI), Ie.push({
                        distance: se,
                        angleDelta: Vr
                      }), He += Vr; se - Ie[0].distance > dt; )
                        He -= Ie.shift().angleDelta;
                      if (He > At)
                        return !1;
                      Ut++, se += cr.dist(Mr);
                    }
                    return !0;
                  }
                  function Bn(N) {
                    let k = 0;
                    for (let Z = 0; Z < N.length - 1; Z++)
                      k += N[Z].dist(N[Z + 1]);
                    return k;
                  }
                  function vi(N, k, Z) {
                    return N ? 0.6 * k * Z : 0;
                  }
                  function ni(N, k) {
                    return Math.max(N ? N.right - N.left : 0, k ? k.right - k.left : 0);
                  }
                  function pi(N, k, Z, dt, At, Dt) {
                    const Ut = vi(Z, At, Dt), se = ni(Z, dt) * Dt;
                    let Ie = 0;
                    const He = Bn(N) / 2;
                    for (let Ke = 0; Ke < N.length - 1; Ke++) {
                      const cr = N[Ke], Mr = N[Ke + 1], Vr = cr.dist(Mr);
                      if (Ie + Vr > He) {
                        const nn = (He - Ie) / Vr, gn = Vs.number(cr.x, Mr.x, nn), jn = Vs.number(cr.y, Mr.y, nn), ui = new yn(gn, jn, Mr.angleTo(cr), Ke);
                        return ui._round(), !Ut || Qn(N, ui, se, Ut, k) ? ui : void 0;
                      }
                      Ie += Vr;
                    }
                  }
                  function wi(N, k, Z, dt, At, Dt, Ut, se, Ie) {
                    const He = vi(dt, Dt, Ut), Ke = ni(dt, At), cr = Ke * Ut, Mr = N[0].x === 0 || N[0].x === Ie || N[0].y === 0 || N[0].y === Ie;
                    k - cr < k / 4 && (k = cr + k / 4);
                    const Vr = Dt * 2, nn = Mr ? k / 2 * se % k : (Ke / 2 + Vr) * Ut * se % k;
                    return Fi(N, nn, k, He, Z, cr, Mr, !1, Ie);
                  }
                  function Fi(N, k, Z, dt, At, Dt, Ut, se, Ie) {
                    const He = Dt / 2, Ke = Bn(N);
                    let cr = 0, Mr = k - Z, Vr = [];
                    for (let nn = 0; nn < N.length - 1; nn++) {
                      const gn = N[nn], jn = N[nn + 1], ui = gn.dist(jn), Ii = jn.angleTo(gn);
                      for (; Mr + Z < cr + ui; ) {
                        Mr += Z;
                        const Si = (Mr - cr) / ui, Pi = Vs.number(gn.x, jn.x, Si), Wi = Vs.number(gn.y, jn.y, Si);
                        if (Pi >= 0 && Pi < Ie && Wi >= 0 && Wi < Ie && Mr - He >= 0 && Mr + He <= Ke) {
                          const Ma = new yn(Pi, Wi, Ii, nn);
                          Ma._round(), (!dt || Qn(N, Ma, Dt, dt, At)) && Vr.push(Ma);
                        }
                      }
                      cr += ui;
                    }
                    return !se && !Vr.length && !Ut && (Vr = Fi(N, cr / 2, Z, dt, At, Dt, Ut, !0, Ie)), Vr;
                  }
                  const Zi = vc;
                  function Yi(N, k, Z, dt) {
                    const At = [], Dt = N.image, Ut = Dt.pixelRatio, se = Dt.paddedRect.w - 2 * Zi, Ie = Dt.paddedRect.h - 2 * Zi;
                    let He = {
                      x1: N.left,
                      y1: N.top,
                      x2: N.right,
                      y2: N.bottom
                    };
                    const Ke = Dt.stretchX || [[0, se]], cr = Dt.stretchY || [[0, Ie]], Mr = ($i, za) => $i + za[1] - za[0], Vr = Ke.reduce(Mr, 0), nn = cr.reduce(Mr, 0), gn = se - Vr, jn = Ie - nn;
                    let ui = 0, Ii = Vr, Si = 0, Pi = nn, Wi = 0, Ma = gn, ja = 0, ho = jn;
                    if (Dt.content && dt) {
                      const $i = Dt.content, za = $i[2] - $i[0], Ja = $i[3] - $i[1];
                      (Dt.textFitWidth || Dt.textFitHeight) && (He = gm(N)), ui = ma(Ke, 0, $i[0]), Si = ma(cr, 0, $i[1]), Ii = ma(Ke, $i[0], $i[2]), Pi = ma(cr, $i[1], $i[3]), Wi = $i[0] - ui, ja = $i[1] - Si, Ma = za - Ii, ho = Ja - Pi;
                    }
                    const ro = He.x1, Ra = He.y1, no = He.x2 - ro, Ha = He.y2 - Ra, eo = ($i, za, Ja, Bo) => {
                      const rl = va($i.stretch - ui, Ii, no, ro), Rc = Za($i.fixed - Wi, Ma, $i.stretch, Vr), ms = va(za.stretch - Si, Pi, Ha, Ra), Kl = Za(za.fixed - ja, ho, za.stretch, nn), Mu = va(Ja.stretch - ui, Ii, no, ro), pc = Za(Ja.fixed - Wi, Ma, Ja.stretch, Vr), yh = va(Bo.stretch - Si, Pi, Ha, Ra), Of = Za(Bo.fixed - ja, ho, Bo.stretch, nn), Cm = new u(rl, ms), Lm = new u(Mu, ms), Pm = new u(Mu, yh), Im = new u(rl, yh), ib = new u(Rc / Ut, Kl / Ut), Zh = new u(pc / Ut, Of / Ut), hp = k * Math.PI / 180;
                      if (hp) {
                        const dp = Math.sin(hp), Yg = Math.cos(hp), Td = [Yg, -dp, dp, Yg];
                        Cm._matMult(Td), Lm._matMult(Td), Im._matMult(Td), Pm._matMult(Td);
                      }
                      const Xg = $i.stretch + $i.fixed, ab = Ja.stretch + Ja.fixed, Rm = za.stretch + za.fixed, ob = Bo.stretch + Bo.fixed, Xh = {
                        x: Dt.paddedRect.x + Zi + Xg,
                        y: Dt.paddedRect.y + Zi + Rm,
                        w: ab - Xg,
                        h: ob - Rm
                      }, Bf = Ma / Ut / no, Iv = ho / Ut / Ha;
                      return { tl: Cm, tr: Lm, bl: Im, br: Pm, tex: Xh, writingMode: void 0, glyphOffset: [0, 0], sectionIndex: 0, pixelOffsetTL: ib, pixelOffsetBR: Zh, minFontScaleX: Bf, minFontScaleY: Iv, isSDF: Z };
                    };
                    if (!dt || !Dt.stretchX && !Dt.stretchY)
                      At.push(eo({ fixed: 0, stretch: -1 }, { fixed: 0, stretch: -1 }, { fixed: 0, stretch: se + 1 }, { fixed: 0, stretch: Ie + 1 }));
                    else {
                      const $i = fa(Ke, gn, Vr), za = fa(cr, jn, nn);
                      for (let Ja = 0; Ja < $i.length - 1; Ja++) {
                        const Bo = $i[Ja], rl = $i[Ja + 1];
                        for (let Rc = 0; Rc < za.length - 1; Rc++) {
                          const ms = za[Rc], Kl = za[Rc + 1];
                          At.push(eo(Bo, ms, rl, Kl));
                        }
                      }
                    }
                    return At;
                  }
                  function ma(N, k, Z) {
                    let dt = 0;
                    for (const At of N)
                      dt += Math.max(k, Math.min(Z, At[1])) - Math.max(k, Math.min(Z, At[0]));
                    return dt;
                  }
                  function fa(N, k, Z) {
                    const dt = [{ fixed: -Zi, stretch: 0 }];
                    for (const [At, Dt] of N) {
                      const Ut = dt[dt.length - 1];
                      dt.push({
                        fixed: At - Ut.stretch,
                        stretch: Ut.stretch
                      }), dt.push({
                        fixed: At - Ut.stretch,
                        stretch: Ut.stretch + (Dt - At)
                      });
                    }
                    return dt.push({
                      fixed: k + Zi,
                      stretch: Z
                    }), dt;
                  }
                  function va(N, k, Z, dt) {
                    return N / k * Z + dt;
                  }
                  function Za(N, k, Z, dt) {
                    return N - k * Z / dt;
                  }
                  function Ta(N, k, Z, dt, At, Dt, Ut, se) {
                    const Ie = dt.layout.get("text-rotate").evaluate(Dt, {}) * Math.PI / 180, He = [];
                    for (const Ke of k.positionedLines)
                      for (const cr of Ke.positionedGlyphs) {
                        if (!cr.rect)
                          continue;
                        const Mr = cr.rect || {};
                        let nn = Sv + 1, gn = !0, jn = 1, ui = 0;
                        const Ii = (At || se) && cr.vertical, Si = cr.metrics.advance * cr.scale / 2;
                        if (se && k.verticalizable) {
                          const ms = (cr.scale - 1) * ml, Kl = (ml - cr.metrics.width * cr.scale) / 2;
                          ui = Ke.lineOffset / 2 - (cr.imageName ? -Kl : ms);
                        }
                        if (cr.imageName) {
                          const ms = Ut[cr.imageName];
                          gn = ms.sdf, jn = ms.pixelRatio, nn = vc / jn;
                        }
                        const Pi = At ? [cr.x + Si, cr.y] : [0, 0];
                        let Wi = At ? [0, 0] : [cr.x + Si + Z[0], cr.y + Z[1] - ui], Ma = [0, 0];
                        Ii && (Ma = Wi, Wi = [0, 0]);
                        const ja = cr.metrics.isDoubleResolution ? 2 : 1, ho = (cr.metrics.left - nn) * cr.scale - Si + Wi[0], ro = (-cr.metrics.top - nn) * cr.scale + Wi[1], Ra = ho + Mr.w / ja * cr.scale / jn, no = ro + Mr.h / ja * cr.scale / jn, Ha = new u(ho, ro), eo = new u(Ra, ro), $i = new u(ho, no), za = new u(Ra, no);
                        if (Ii) {
                          const ms = new u(-Si, Si - qp), Kl = -Math.PI / 2, Mu = ml / 2 - Si, pc = cr.imageName ? Mu : 0, yh = new u(5 - qp - Mu, -pc), Of = new u(...Ma);
                          Ha._rotateAround(Kl, ms)._add(yh)._add(Of), eo._rotateAround(Kl, ms)._add(yh)._add(Of), $i._rotateAround(Kl, ms)._add(yh)._add(Of), za._rotateAround(Kl, ms)._add(yh)._add(Of);
                        }
                        if (Ie) {
                          const ms = Math.sin(Ie), Kl = Math.cos(Ie), Mu = [Kl, -ms, ms, Kl];
                          Ha._matMult(Mu), eo._matMult(Mu), $i._matMult(Mu), za._matMult(Mu);
                        }
                        const Ja = new u(0, 0), Bo = new u(0, 0);
                        He.push({ tl: Ha, tr: eo, bl: $i, br: za, tex: Mr, writingMode: k.writingMode, glyphOffset: Pi, sectionIndex: cr.sectionIndex, isSDF: gn, pixelOffsetTL: Ja, pixelOffsetBR: Bo, minFontScaleX: 0, minFontScaleY: 0 });
                      }
                    return He;
                  }
                  class Aa {
                    /**
                     * Create a CollisionFeature, adding its collision box data to the given collisionBoxArray in the process.
                     * For line aligned labels a collision circle diameter is computed instead.
                     *
                     * @param anchor - The point along the line around which the label is anchored.
                     * @param shaped - The text or icon shaping results.
                     * @param boxScale - A magic number used to convert from glyph metrics units to geometry units.
                     * @param padding - The amount of padding to add around the label edges.
                     * @param alignLine - Whether the label is aligned with the line or the viewport.
                     */
                    constructor(k, Z, dt, At, Dt, Ut, se, Ie, He, Ke) {
                      var cr;
                      if (this.boxStartIndex = k.length, He) {
                        let Mr = Ut.top, Vr = Ut.bottom;
                        const nn = Ut.collisionPadding;
                        nn && (Mr -= nn[1], Vr += nn[3]);
                        let gn = Vr - Mr;
                        gn > 0 && (gn = Math.max(10, gn), this.circleDiameter = gn);
                      } else {
                        const Mr = !((cr = Ut.image) === null || cr === void 0) && cr.content && (Ut.image.textFitWidth || Ut.image.textFitHeight) ? gm(Ut) : {
                          x1: Ut.left,
                          y1: Ut.top,
                          x2: Ut.right,
                          y2: Ut.bottom
                        };
                        Mr.y1 = Mr.y1 * se - Ie[0], Mr.y2 = Mr.y2 * se + Ie[2], Mr.x1 = Mr.x1 * se - Ie[3], Mr.x2 = Mr.x2 * se + Ie[1];
                        const Vr = Ut.collisionPadding;
                        if (Vr && (Mr.x1 -= Vr[0] * se, Mr.y1 -= Vr[1] * se, Mr.x2 += Vr[2] * se, Mr.y2 += Vr[3] * se), Ke) {
                          const nn = new u(Mr.x1, Mr.y1), gn = new u(Mr.x2, Mr.y1), jn = new u(Mr.x1, Mr.y2), ui = new u(Mr.x2, Mr.y2), Ii = Ke * Math.PI / 180;
                          nn._rotate(Ii), gn._rotate(Ii), jn._rotate(Ii), ui._rotate(Ii), Mr.x1 = Math.min(nn.x, gn.x, jn.x, ui.x), Mr.x2 = Math.max(nn.x, gn.x, jn.x, ui.x), Mr.y1 = Math.min(nn.y, gn.y, jn.y, ui.y), Mr.y2 = Math.max(nn.y, gn.y, jn.y, ui.y);
                        }
                        k.emplaceBack(Z.x, Z.y, Mr.x1, Mr.y1, Mr.x2, Mr.y2, dt, At, Dt);
                      }
                      this.boxEndIndex = k.length;
                    }
                  }
                  class fo {
                    constructor(k = [], Z = (dt, At) => dt < At ? -1 : dt > At ? 1 : 0) {
                      if (this.data = k, this.length = this.data.length, this.compare = Z, this.length > 0)
                        for (let dt = (this.length >> 1) - 1; dt >= 0; dt--) this._down(dt);
                    }
                    push(k) {
                      this.data.push(k), this._up(this.length++);
                    }
                    pop() {
                      if (this.length === 0) return;
                      const k = this.data[0], Z = this.data.pop();
                      return --this.length > 0 && (this.data[0] = Z, this._down(0)), k;
                    }
                    peek() {
                      return this.data[0];
                    }
                    _up(k) {
                      const { data: Z, compare: dt } = this, At = Z[k];
                      for (; k > 0; ) {
                        const Dt = k - 1 >> 1, Ut = Z[Dt];
                        if (dt(At, Ut) >= 0) break;
                        Z[k] = Ut, k = Dt;
                      }
                      Z[k] = At;
                    }
                    _down(k) {
                      const { data: Z, compare: dt } = this, At = this.length >> 1, Dt = Z[k];
                      for (; k < At; ) {
                        let Ut = (k << 1) + 1;
                        const se = Ut + 1;
                        if (se < this.length && dt(Z[se], Z[Ut]) < 0 && (Ut = se), dt(Z[Ut], Dt) >= 0) break;
                        Z[k] = Z[Ut], k = Ut;
                      }
                      Z[k] = Dt;
                    }
                  }
                  function Ka(N, k = 1, Z = !1) {
                    let dt = 1 / 0, At = 1 / 0, Dt = -1 / 0, Ut = -1 / 0;
                    const se = N[0];
                    for (let gn = 0; gn < se.length; gn++) {
                      const jn = se[gn];
                      (!gn || jn.x < dt) && (dt = jn.x), (!gn || jn.y < At) && (At = jn.y), (!gn || jn.x > Dt) && (Dt = jn.x), (!gn || jn.y > Ut) && (Ut = jn.y);
                    }
                    const Ie = Dt - dt, He = Ut - At, Ke = Math.min(Ie, He);
                    let cr = Ke / 2;
                    const Mr = new fo([], zo);
                    if (Ke === 0)
                      return new u(dt, At);
                    for (let gn = dt; gn < Dt; gn += Ke)
                      for (let jn = At; jn < Ut; jn += Ke)
                        Mr.push(new Vo(gn + cr, jn + cr, cr, N));
                    let Vr = Oo(N), nn = Mr.length;
                    for (; Mr.length; ) {
                      const gn = Mr.pop();
                      (gn.d > Vr.d || !Vr.d) && (Vr = gn, Z && console.log("found best %d after %d probes", Math.round(1e4 * gn.d) / 1e4, nn)), !(gn.max - Vr.d <= k) && (cr = gn.h / 2, Mr.push(new Vo(gn.p.x - cr, gn.p.y - cr, cr, N)), Mr.push(new Vo(gn.p.x + cr, gn.p.y - cr, cr, N)), Mr.push(new Vo(gn.p.x - cr, gn.p.y + cr, cr, N)), Mr.push(new Vo(gn.p.x + cr, gn.p.y + cr, cr, N)), nn += 4);
                    }
                    return Z && (console.log(`num probes: ${nn}`), console.log(`best distance: ${Vr.d}`)), Vr.p;
                  }
                  function zo(N, k) {
                    return k.max - N.max;
                  }
                  function Vo(N, k, Z, dt) {
                    this.p = new u(N, k), this.h = Z, this.d = Fo(this.p, dt), this.max = this.d + this.h * Math.SQRT2;
                  }
                  function Fo(N, k) {
                    let Z = !1, dt = 1 / 0;
                    for (let At = 0; At < k.length; At++) {
                      const Dt = k[At];
                      for (let Ut = 0, se = Dt.length, Ie = se - 1; Ut < se; Ie = Ut++) {
                        const He = Dt[Ut], Ke = Dt[Ie];
                        He.y > N.y != Ke.y > N.y && N.x < (Ke.x - He.x) * (N.y - He.y) / (Ke.y - He.y) + He.x && (Z = !Z), dt = Math.min(dt, La(N, He, Ke));
                      }
                    }
                    return (Z ? 1 : -1) * Math.sqrt(dt);
                  }
                  function Oo(N) {
                    let k = 0, Z = 0, dt = 0;
                    const At = N[0];
                    for (let Dt = 0, Ut = At.length, se = Ut - 1; Dt < Ut; se = Dt++) {
                      const Ie = At[Dt], He = At[se], Ke = Ie.x * He.y - He.x * Ie.y;
                      Z += (Ie.x + He.x) * Ke, dt += (Ie.y + He.y) * Ke, k += Ke * 3;
                    }
                    return new Vo(Z / k, dt / k, 0, N);
                  }
                  n.ar = void 0, function(N) {
                    N[N.center = 1] = "center", N[N.left = 2] = "left", N[N.right = 3] = "right", N[N.top = 4] = "top", N[N.bottom = 5] = "bottom", N[N["top-left"] = 6] = "top-left", N[N["top-right"] = 7] = "top-right", N[N["bottom-left"] = 8] = "bottom-left", N[N["bottom-right"] = 9] = "bottom-right";
                  }(n.ar || (n.ar = {}));
                  const mo = 7, rs = Number.POSITIVE_INFINITY;
                  function os(N, k) {
                    function Z(At, Dt) {
                      let Ut = 0, se = 0;
                      Dt < 0 && (Dt = 0);
                      const Ie = Dt / Math.SQRT2;
                      switch (At) {
                        case "top-right":
                        case "top-left":
                          se = Ie - mo;
                          break;
                        case "bottom-right":
                        case "bottom-left":
                          se = -Ie + mo;
                          break;
                        case "bottom":
                          se = -Dt + mo;
                          break;
                        case "top":
                          se = Dt - mo;
                          break;
                      }
                      switch (At) {
                        case "top-right":
                        case "bottom-right":
                          Ut = -Ie;
                          break;
                        case "top-left":
                        case "bottom-left":
                          Ut = Ie;
                          break;
                        case "left":
                          Ut = Dt;
                          break;
                        case "right":
                          Ut = -Dt;
                          break;
                      }
                      return [Ut, se];
                    }
                    function dt(At, Dt, Ut) {
                      let se = 0, Ie = 0;
                      switch (Dt = Math.abs(Dt), Ut = Math.abs(Ut), At) {
                        case "top-right":
                        case "top-left":
                        case "top":
                          Ie = Ut - mo;
                          break;
                        case "bottom-right":
                        case "bottom-left":
                        case "bottom":
                          Ie = -Ut + mo;
                          break;
                      }
                      switch (At) {
                        case "top-right":
                        case "bottom-right":
                        case "right":
                          se = -Dt;
                          break;
                        case "top-left":
                        case "bottom-left":
                        case "left":
                          se = Dt;
                          break;
                      }
                      return [se, Ie];
                    }
                    return k[1] !== rs ? dt(N, k[0], k[1]) : Z(N, k[0]);
                  }
                  function Ds(N, k, Z) {
                    var dt;
                    const At = N.layout, Dt = (dt = At.get("text-variable-anchor-offset")) === null || dt === void 0 ? void 0 : dt.evaluate(k, {}, Z);
                    if (Dt) {
                      const se = Dt.values, Ie = [];
                      for (let He = 0; He < se.length; He += 2) {
                        const Ke = Ie[He] = se[He], cr = se[He + 1].map((Mr) => Mr * ml);
                        Ke.startsWith("top") ? cr[1] -= mo : Ke.startsWith("bottom") && (cr[1] += mo), Ie[He + 1] = cr;
                      }
                      return new yl(Ie);
                    }
                    const Ut = At.get("text-variable-anchor");
                    if (Ut) {
                      let se;
                      N._unevaluatedLayout.getValue("text-radial-offset") !== void 0 ? se = [At.get("text-radial-offset").evaluate(k, {}, Z) * ml, rs] : se = At.get("text-offset").evaluate(k, {}, Z).map((Ke) => Ke * ml);
                      const He = [];
                      for (const Ke of Ut)
                        He.push(Ke, os(Ke, se));
                      return new yl(He);
                    }
                    return null;
                  }
                  function Xs(N) {
                    N.bucket.createArrays();
                    const k = 512 * N.bucket.overscaling;
                    N.bucket.tilePixelRatio = Ar / k, N.bucket.compareText = {}, N.bucket.iconsNeedLinear = !1;
                    const Z = N.bucket.layers[0], dt = Z.layout, At = Z._unevaluatedLayout._values, Dt = {
                      // Filled in below, if *SizeData.kind is 'composite'
                      // compositeIconSizes: undefined,
                      // compositeTextSizes: undefined,
                      layoutIconSize: At["icon-size"].possiblyEvaluate(new Ko(N.bucket.zoom + 1), N.canonical),
                      layoutTextSize: At["text-size"].possiblyEvaluate(new Ko(N.bucket.zoom + 1), N.canonical),
                      textMaxSize: At["text-size"].possiblyEvaluate(new Ko(18))
                    };
                    if (N.bucket.textSizeData.kind === "composite") {
                      const { minZoom: Ke, maxZoom: cr } = N.bucket.textSizeData;
                      Dt.compositeTextSizes = [
                        At["text-size"].possiblyEvaluate(new Ko(Ke), N.canonical),
                        At["text-size"].possiblyEvaluate(new Ko(cr), N.canonical)
                      ];
                    }
                    if (N.bucket.iconSizeData.kind === "composite") {
                      const { minZoom: Ke, maxZoom: cr } = N.bucket.iconSizeData;
                      Dt.compositeIconSizes = [
                        At["icon-size"].possiblyEvaluate(new Ko(Ke), N.canonical),
                        At["icon-size"].possiblyEvaluate(new Ko(cr), N.canonical)
                      ];
                    }
                    const Ut = dt.get("text-line-height") * ml, se = dt.get("text-rotation-alignment") !== "viewport" && dt.get("symbol-placement") !== "point", Ie = dt.get("text-keep-upright"), He = dt.get("text-size");
                    for (const Ke of N.bucket.features) {
                      const cr = dt.get("text-font").evaluate(Ke, {}, N.canonical).join(","), Mr = He.evaluate(Ke, {}, N.canonical), Vr = Dt.layoutTextSize.evaluate(Ke, {}, N.canonical), nn = Dt.layoutIconSize.evaluate(Ke, {}, N.canonical), gn = {
                        horizontal: {},
                        vertical: void 0
                      }, jn = Ke.text;
                      let ui = [0, 0];
                      if (jn) {
                        const Wi = jn.toString(), Ma = dt.get("text-letter-spacing").evaluate(Ke, {}, N.canonical) * ml, ja = zu(Wi) ? Ma : 0, ho = dt.get("text-anchor").evaluate(Ke, {}, N.canonical), ro = Ds(Z, Ke, N.canonical);
                        if (!ro) {
                          const $i = dt.get("text-radial-offset").evaluate(Ke, {}, N.canonical);
                          $i ? ui = os(ho, [$i * ml, rs]) : ui = dt.get("text-offset").evaluate(Ke, {}, N.canonical).map((za) => za * ml);
                        }
                        let Ra = se ? "center" : dt.get("text-justify").evaluate(Ke, {}, N.canonical);
                        const Ha = dt.get("symbol-placement") === "point" ? dt.get("text-max-width").evaluate(Ke, {}, N.canonical) * ml : 1 / 0, eo = () => {
                          N.bucket.allowVerticalPlacement && jl(Wi) && (gn.vertical = N0(jn, N.glyphMap, N.glyphPositions, N.imagePositions, cr, Ha, Ut, ho, "left", ja, ui, n.ai.vertical, !0, Vr, Mr));
                        };
                        if (!se && ro) {
                          const $i = /* @__PURE__ */ new Set();
                          if (Ra === "auto")
                            for (let Ja = 0; Ja < ro.values.length; Ja += 2)
                              $i.add(fl(ro.values[Ja]));
                          else
                            $i.add(Ra);
                          let za = !1;
                          for (const Ja of $i)
                            if (!gn.horizontal[Ja])
                              if (za)
                                gn.horizontal[Ja] = gn.horizontal[0];
                              else {
                                const Bo = N0(jn, N.glyphMap, N.glyphPositions, N.imagePositions, cr, Ha, Ut, "center", Ja, ja, ui, n.ai.horizontal, !1, Vr, Mr);
                                Bo && (gn.horizontal[Ja] = Bo, za = Bo.positionedLines.length === 1);
                              }
                          eo();
                        } else {
                          Ra === "auto" && (Ra = fl(ho));
                          const $i = N0(jn, N.glyphMap, N.glyphPositions, N.imagePositions, cr, Ha, Ut, ho, Ra, ja, ui, n.ai.horizontal, !1, Vr, Mr);
                          $i && (gn.horizontal[Ra] = $i), eo(), jl(Wi) && se && Ie && (gn.vertical = N0(jn, N.glyphMap, N.glyphPositions, N.imagePositions, cr, Ha, Ut, ho, Ra, ja, ui, n.ai.vertical, !1, Vr, Mr));
                        }
                      }
                      let Ii, Si = !1;
                      if (Ke.icon && Ke.icon.name) {
                        const Wi = N.imageMap[Ke.icon.name];
                        Wi && (Ii = Kx(N.imagePositions[Ke.icon.name], dt.get("icon-offset").evaluate(Ke, {}, N.canonical), dt.get("icon-anchor").evaluate(Ke, {}, N.canonical)), Si = !!Wi.sdf, N.bucket.sdfIcons === void 0 ? N.bucket.sdfIcons = Si : N.bucket.sdfIcons !== Si && U("Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer"), (Wi.pixelRatio !== N.bucket.pixelRatio || dt.get("icon-rotate").constantOr(1) !== 0) && (N.bucket.iconsNeedLinear = !0));
                      }
                      const Pi = xl(gn.horizontal) || gn.vertical;
                      N.bucket.iconsInText = Pi ? Pi.iconsInText : !1, (Pi || Ii) && hl(N.bucket, Ke, gn, Ii, N.imageMap, Dt, Vr, nn, ui, Si, N.canonical);
                    }
                    N.showCollisionBoxes && N.bucket.generateCollisionDebugBuffers();
                  }
                  function fl(N) {
                    switch (N) {
                      case "right":
                      case "top-right":
                      case "bottom-right":
                        return "right";
                      case "left":
                      case "top-left":
                      case "bottom-left":
                        return "left";
                    }
                    return "center";
                  }
                  function hl(N, k, Z, dt, At, Dt, Ut, se, Ie, He, Ke) {
                    let cr = Dt.textMaxSize.evaluate(k, {});
                    cr === void 0 && (cr = Ut);
                    const Mr = N.layers[0].layout, Vr = Mr.get("icon-offset").evaluate(k, {}, Ke), nn = xl(Z.horizontal), gn = 24, jn = Ut / gn, ui = N.tilePixelRatio * jn, Ii = N.tilePixelRatio * cr / gn, Si = N.tilePixelRatio * se, Pi = N.tilePixelRatio * Mr.get("symbol-spacing"), Wi = Mr.get("text-padding") * N.tilePixelRatio, Ma = Am(Mr, k, Ke, N.tilePixelRatio), ja = Mr.get("text-max-angle") / 180 * Math.PI, ho = Mr.get("text-rotation-alignment") !== "viewport" && Mr.get("symbol-placement") !== "point", ro = Mr.get("icon-rotation-alignment") === "map" && Mr.get("symbol-placement") !== "point", Ra = Mr.get("symbol-placement"), no = Pi / 2, Ha = Mr.get("icon-text-fit");
                    let eo;
                    dt && Ha !== "none" && (N.allowVerticalPlacement && Z.vertical && (eo = ym(dt, Z.vertical, Ha, Mr.get("icon-text-fit-padding"), Vr, jn)), nn && (dt = ym(dt, nn, Ha, Mr.get("icon-text-fit-padding"), Vr, jn)));
                    const $i = (za, Ja) => {
                      Ja.x < 0 || Ja.x >= Ar || Ja.y < 0 || Ja.y >= Ar || Hu(N, Ja, za, Z, dt, At, eo, N.layers[0], N.collisionBoxArray, k.index, k.sourceLayerIndex, N.index, ui, [Wi, Wi, Wi, Wi], ho, Ie, Si, Ma, ro, Vr, k, Dt, He, Ke, Ut);
                    };
                    if (Ra === "line")
                      for (const za of Kr(k.geometry, 0, 0, Ar, Ar)) {
                        const Ja = wi(za, Pi, ja, Z.vertical || nn, dt, gn, Ii, N.overscaling, Ar);
                        for (const Bo of Ja) {
                          const rl = nn;
                          (!rl || !Gu(N, rl.text, no, Bo)) && $i(za, Bo);
                        }
                      }
                    else if (Ra === "line-center") {
                      for (const za of k.geometry)
                        if (za.length > 1) {
                          const Ja = pi(za, ja, Z.vertical || nn, dt, gn, Ii);
                          Ja && $i(za, Ja);
                        }
                    } else if (k.type === "Polygon")
                      for (const za of xs(k.geometry, 0)) {
                        const Ja = Ka(za, 16);
                        $i(za[0], new yn(Ja.x, Ja.y, 0));
                      }
                    else if (k.type === "LineString")
                      for (const za of k.geometry)
                        $i(za, new yn(za[0].x, za[0].y, 0));
                    else if (k.type === "Point")
                      for (const za of k.geometry)
                        for (const Ja of za)
                          $i([Ja], new yn(Ja.x, Ja.y, 0));
                  }
                  function Au(N, k) {
                    const Z = N.length, dt = k == null ? void 0 : k.values;
                    if ((dt == null ? void 0 : dt.length) > 0)
                      for (let At = 0; At < dt.length; At += 2) {
                        const Dt = n.ar[dt[At]], Ut = dt[At + 1];
                        N.emplaceBack(Dt, Ut[0], Ut[1]);
                      }
                    return [Z, N.length];
                  }
                  function ou(N, k, Z, dt, At, Dt, Ut, se, Ie, He, Ke, cr, Mr, Vr, nn) {
                    const gn = Ta(k, Z, se, At, Dt, Ut, dt, N.allowVerticalPlacement), jn = N.textSizeData;
                    let ui = null;
                    jn.kind === "source" ? (ui = [
                      xd * At.layout.get("text-size").evaluate(Ut, {})
                    ], ui[0] > av && U(`${N.layerIds[0]}: Value for "text-size" is >= ${r0}. Reduce your "text-size".`)) : jn.kind === "composite" && (ui = [
                      xd * Vr.compositeTextSizes[0].evaluate(Ut, {}, nn),
                      xd * Vr.compositeTextSizes[1].evaluate(Ut, {}, nn)
                    ], (ui[0] > av || ui[1] > av) && U(`${N.layerIds[0]}: Value for "text-size" is >= ${r0}. Reduce your "text-size".`)), N.addSymbols(N.text, gn, ui, se, Dt, Ut, He, k, Ie.lineStartIndex, Ie.lineLength, Mr, nn);
                    for (const Ii of Ke)
                      cr[Ii] = N.text.placedSymbolArray.length - 1;
                    return gn.length * 4;
                  }
                  function xl(N) {
                    for (const k in N)
                      return N[k];
                    return null;
                  }
                  function Hu(N, k, Z, dt, At, Dt, Ut, se, Ie, He, Ke, cr, Mr, Vr, nn, gn, jn, ui, Ii, Si, Pi, Wi, Ma, ja, ho) {
                    const ro = N.addToLineVertexArray(k, Z);
                    let Ra, no, Ha, eo, $i = 0, za = 0, Ja = 0, Bo = 0, rl = -1, Rc = -1;
                    const ms = {};
                    let Kl = vd("");
                    if (N.allowVerticalPlacement && dt.vertical) {
                      const Bf = se.layout.get("text-rotate").evaluate(Pi, {}, ja) + 90, Iv = dt.vertical;
                      Ha = new Aa(Ie, k, He, Ke, cr, Iv, Mr, Vr, nn, Bf), Ut && (eo = new Aa(Ie, k, He, Ke, cr, Ut, jn, ui, nn, Bf));
                    }
                    if (At) {
                      const Xh = se.layout.get("icon-rotate").evaluate(Pi, {}), Bf = se.layout.get("icon-text-fit") !== "none", Iv = Yi(At, Xh, Ma, Bf), dp = Ut ? Yi(Ut, Xh, Ma, Bf) : void 0;
                      no = new Aa(
                        Ie,
                        k,
                        He,
                        Ke,
                        cr,
                        At,
                        jn,
                        ui,
                        /*align boxes to line*/
                        !1,
                        Xh
                      ), $i = Iv.length * 4;
                      const Yg = N.iconSizeData;
                      let Td = null;
                      Yg.kind === "source" ? (Td = [
                        xd * se.layout.get("icon-size").evaluate(Pi, {})
                      ], Td[0] > av && U(`${N.layerIds[0]}: Value for "icon-size" is >= ${r0}. Reduce your "icon-size".`)) : Yg.kind === "composite" && (Td = [
                        xd * Wi.compositeIconSizes[0].evaluate(Pi, {}, ja),
                        xd * Wi.compositeIconSizes[1].evaluate(Pi, {}, ja)
                      ], (Td[0] > av || Td[1] > av) && U(`${N.layerIds[0]}: Value for "icon-size" is >= ${r0}. Reduce your "icon-size".`)), N.addSymbols(
                        N.icon,
                        Iv,
                        Td,
                        Si,
                        Ii,
                        Pi,
                        n.ai.none,
                        k,
                        ro.lineStartIndex,
                        ro.lineLength,
                        // The icon itself does not have an associated symbol since the text isn't placed yet
                        -1,
                        ja
                      ), rl = N.icon.placedSymbolArray.length - 1, dp && (za = dp.length * 4, N.addSymbols(
                        N.icon,
                        dp,
                        Td,
                        Si,
                        Ii,
                        Pi,
                        n.ai.vertical,
                        k,
                        ro.lineStartIndex,
                        ro.lineLength,
                        // The icon itself does not have an associated symbol since the text isn't placed yet
                        -1,
                        ja
                      ), Rc = N.icon.placedSymbolArray.length - 1);
                    }
                    const Mu = Object.keys(dt.horizontal);
                    for (const Xh of Mu) {
                      const Bf = dt.horizontal[Xh];
                      if (!Ra) {
                        Kl = vd(Bf.text);
                        const dp = se.layout.get("text-rotate").evaluate(Pi, {}, ja);
                        Ra = new Aa(Ie, k, He, Ke, cr, Bf, Mr, Vr, nn, dp);
                      }
                      const Iv = Bf.positionedLines.length === 1;
                      if (Ja += ou(N, k, Bf, Dt, se, nn, Pi, gn, ro, dt.vertical ? n.ai.horizontal : n.ai.horizontalOnly, Iv ? Mu : [Xh], ms, rl, Wi, ja), Iv)
                        break;
                    }
                    dt.vertical && (Bo += ou(N, k, dt.vertical, Dt, se, nn, Pi, gn, ro, n.ai.vertical, ["vertical"], ms, Rc, Wi, ja));
                    const pc = Ra ? Ra.boxStartIndex : N.collisionBoxArray.length, yh = Ra ? Ra.boxEndIndex : N.collisionBoxArray.length, Of = Ha ? Ha.boxStartIndex : N.collisionBoxArray.length, Cm = Ha ? Ha.boxEndIndex : N.collisionBoxArray.length, Lm = no ? no.boxStartIndex : N.collisionBoxArray.length, Pm = no ? no.boxEndIndex : N.collisionBoxArray.length, Im = eo ? eo.boxStartIndex : N.collisionBoxArray.length, ib = eo ? eo.boxEndIndex : N.collisionBoxArray.length;
                    let Zh = -1;
                    const hp = (Xh, Bf) => Xh && Xh.circleDiameter ? Math.max(Xh.circleDiameter, Bf) : Bf;
                    Zh = hp(Ra, Zh), Zh = hp(Ha, Zh), Zh = hp(no, Zh), Zh = hp(eo, Zh);
                    const Xg = Zh > -1 ? 1 : 0;
                    Xg && (Zh *= ho / ml), N.glyphOffsetArray.length >= cp.MAX_GLYPHS && U("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"), Pi.sortKey !== void 0 && N.addToSortKeyRanges(N.symbolInstances.length, Pi.sortKey);
                    const ab = Ds(se, Pi, ja), [Rm, ob] = Au(N.textAnchorOffsets, ab);
                    N.symbolInstances.emplaceBack(k.x, k.y, ms.right >= 0 ? ms.right : -1, ms.center >= 0 ? ms.center : -1, ms.left >= 0 ? ms.left : -1, ms.vertical || -1, rl, Rc, Kl, pc, yh, Of, Cm, Lm, Pm, Im, ib, He, Ja, Bo, $i, za, Xg, 0, Mr, Zh, Rm, ob);
                  }
                  function Gu(N, k, Z, dt) {
                    const At = N.compareText;
                    if (!(k in At))
                      At[k] = [];
                    else {
                      const Dt = At[k];
                      for (let Ut = Dt.length - 1; Ut >= 0; Ut--)
                        if (dt.dist(Dt[Ut]) < Z)
                          return !0;
                    }
                    return At[k].push(dt), !1;
                  }
                  const dl = [
                    Int8Array,
                    Uint8Array,
                    Uint8ClampedArray,
                    Int16Array,
                    Uint16Array,
                    Int32Array,
                    Uint32Array,
                    Float32Array,
                    Float64Array
                  ], su = 1, Su = 8;
                  class jh {
                    /**
                     * Creates an index from raw `ArrayBuffer` data.
                     * @param {ArrayBuffer} data
                     */
                    static from(k) {
                      if (!(k instanceof ArrayBuffer))
                        throw new Error("Data must be an instance of ArrayBuffer.");
                      const [Z, dt] = new Uint8Array(k, 0, 2);
                      if (Z !== 219)
                        throw new Error("Data does not appear to be in a KDBush format.");
                      const At = dt >> 4;
                      if (At !== su)
                        throw new Error(`Got v${At} data when expected v${su}.`);
                      const Dt = dl[dt & 15];
                      if (!Dt)
                        throw new Error("Unrecognized array type.");
                      const [Ut] = new Uint16Array(k, 2, 1), [se] = new Uint32Array(k, 4, 1);
                      return new jh(se, Ut, Dt, k);
                    }
                    /**
                     * Creates an index that will hold a given number of items.
                     * @param {number} numItems
                     * @param {number} [nodeSize=64] Size of the KD-tree node (64 by default).
                     * @param {TypedArrayConstructor} [ArrayType=Float64Array] The array type used for coordinates storage (`Float64Array` by default).
                     * @param {ArrayBuffer} [data] (For internal use only)
                     */
                    constructor(k, Z = 64, dt = Float64Array, At) {
                      if (isNaN(k) || k < 0) throw new Error(`Unpexpected numItems value: ${k}.`);
                      this.numItems = +k, this.nodeSize = Math.min(Math.max(+Z, 2), 65535), this.ArrayType = dt, this.IndexArrayType = k < 65536 ? Uint16Array : Uint32Array;
                      const Dt = dl.indexOf(this.ArrayType), Ut = k * 2 * this.ArrayType.BYTES_PER_ELEMENT, se = k * this.IndexArrayType.BYTES_PER_ELEMENT, Ie = (8 - se % 8) % 8;
                      if (Dt < 0)
                        throw new Error(`Unexpected typed array class: ${dt}.`);
                      At && At instanceof ArrayBuffer ? (this.data = At, this.ids = new this.IndexArrayType(this.data, Su, k), this.coords = new this.ArrayType(this.data, Su + se + Ie, k * 2), this._pos = k * 2, this._finished = !0) : (this.data = new ArrayBuffer(Su + Ut + se + Ie), this.ids = new this.IndexArrayType(this.data, Su, k), this.coords = new this.ArrayType(this.data, Su + se + Ie, k * 2), this._pos = 0, this._finished = !1, new Uint8Array(this.data, 0, 2).set([219, (su << 4) + Dt]), new Uint16Array(this.data, 2, 1)[0] = Z, new Uint32Array(this.data, 4, 1)[0] = k);
                    }
                    /**
                     * Add a point to the index.
                     * @param {number} x
                     * @param {number} y
                     * @returns {number} An incremental index associated with the added item (starting from `0`).
                     */
                    add(k, Z) {
                      const dt = this._pos >> 1;
                      return this.ids[dt] = dt, this.coords[this._pos++] = k, this.coords[this._pos++] = Z, dt;
                    }
                    /**
                     * Perform indexing of the added points.
                     */
                    finish() {
                      const k = this._pos >> 1;
                      if (k !== this.numItems)
                        throw new Error(`Added ${k} items when expected ${this.numItems}.`);
                      return _d(this.ids, this.coords, this.nodeSize, 0, this.numItems - 1, 0), this._finished = !0, this;
                    }
                    /**
                     * Search the index for items within a given bounding box.
                     * @param {number} minX
                     * @param {number} minY
                     * @param {number} maxX
                     * @param {number} maxY
                     * @returns {number[]} An array of indices correponding to the found items.
                     */
                    range(k, Z, dt, At) {
                      if (!this._finished) throw new Error("Data not yet indexed - call index.finish().");
                      const { ids: Dt, coords: Ut, nodeSize: se } = this, Ie = [0, Dt.length - 1, 0], He = [];
                      for (; Ie.length; ) {
                        const Ke = Ie.pop() || 0, cr = Ie.pop() || 0, Mr = Ie.pop() || 0;
                        if (cr - Mr <= se) {
                          for (let jn = Mr; jn <= cr; jn++) {
                            const ui = Ut[2 * jn], Ii = Ut[2 * jn + 1];
                            ui >= k && ui <= dt && Ii >= Z && Ii <= At && He.push(Dt[jn]);
                          }
                          continue;
                        }
                        const Vr = Mr + cr >> 1, nn = Ut[2 * Vr], gn = Ut[2 * Vr + 1];
                        nn >= k && nn <= dt && gn >= Z && gn <= At && He.push(Dt[Vr]), (Ke === 0 ? k <= nn : Z <= gn) && (Ie.push(Mr), Ie.push(Vr - 1), Ie.push(1 - Ke)), (Ke === 0 ? dt >= nn : At >= gn) && (Ie.push(Vr + 1), Ie.push(cr), Ie.push(1 - Ke));
                      }
                      return He;
                    }
                    /**
                     * Search the index for items within a given radius.
                     * @param {number} qx
                     * @param {number} qy
                     * @param {number} r Query radius.
                     * @returns {number[]} An array of indices correponding to the found items.
                     */
                    within(k, Z, dt) {
                      if (!this._finished) throw new Error("Data not yet indexed - call index.finish().");
                      const { ids: At, coords: Dt, nodeSize: Ut } = this, se = [0, At.length - 1, 0], Ie = [], He = dt * dt;
                      for (; se.length; ) {
                        const Ke = se.pop() || 0, cr = se.pop() || 0, Mr = se.pop() || 0;
                        if (cr - Mr <= Ut) {
                          for (let jn = Mr; jn <= cr; jn++)
                            Ff(Dt[2 * jn], Dt[2 * jn + 1], k, Z) <= He && Ie.push(At[jn]);
                          continue;
                        }
                        const Vr = Mr + cr >> 1, nn = Dt[2 * Vr], gn = Dt[2 * Vr + 1];
                        Ff(nn, gn, k, Z) <= He && Ie.push(At[Vr]), (Ke === 0 ? k - dt <= nn : Z - dt <= gn) && (se.push(Mr), se.push(Vr - 1), se.push(1 - Ke)), (Ke === 0 ? k + dt >= nn : Z + dt >= gn) && (se.push(Vr + 1), se.push(cr), se.push(1 - Ke));
                      }
                      return Ie;
                    }
                  }
                  function _d(N, k, Z, dt, At, Dt) {
                    if (At - dt <= Z) return;
                    const Ut = dt + At >> 1;
                    Xd(N, k, Ut, dt, At, Dt), _d(N, k, Z, dt, Ut - 1, 1 - Dt), _d(N, k, Z, Ut + 1, At, 1 - Dt);
                  }
                  function Xd(N, k, Z, dt, At, Dt) {
                    for (; At > dt; ) {
                      if (At - dt > 600) {
                        const He = At - dt + 1, Ke = Z - dt + 1, cr = Math.log(He), Mr = 0.5 * Math.exp(2 * cr / 3), Vr = 0.5 * Math.sqrt(cr * Mr * (He - Mr) / He) * (Ke - He / 2 < 0 ? -1 : 1), nn = Math.max(dt, Math.floor(Z - Ke * Mr / He + Vr)), gn = Math.min(At, Math.floor(Z + (He - Ke) * Mr / He + Vr));
                        Xd(N, k, Z, nn, gn, Dt);
                      }
                      const Ut = k[2 * Z + Dt];
                      let se = dt, Ie = At;
                      for (gh(N, k, dt, Z), k[2 * At + Dt] > Ut && gh(N, k, dt, At); se < Ie; ) {
                        for (gh(N, k, se, Ie), se++, Ie--; k[2 * se + Dt] < Ut; ) se++;
                        for (; k[2 * Ie + Dt] > Ut; ) Ie--;
                      }
                      k[2 * dt + Dt] === Ut ? gh(N, k, dt, Ie) : (Ie++, gh(N, k, Ie, At)), Ie <= Z && (dt = Ie + 1), Z <= Ie && (At = Ie - 1);
                    }
                  }
                  function gh(N, k, Z, dt) {
                    uv(N, Z, dt), uv(k, 2 * Z, 2 * dt), uv(k, 2 * Z + 1, 2 * dt + 1);
                  }
                  function uv(N, k, Z) {
                    const dt = N[k];
                    N[k] = N[Z], N[Z] = dt;
                  }
                  function Ff(N, k, Z, dt) {
                    const At = N - Z, Dt = k - dt;
                    return At * At + Dt * Dt;
                  }
                  n.bf = void 0, function(N) {
                    N.create = "create", N.load = "load", N.fullLoad = "fullLoad";
                  }(n.bf || (n.bf = {}));
                  let Lv = null, Pv = [];
                  const l0 = 1e3 / 60, Ic = "loadTime", cv = "fullLoadTime", j0 = {
                    mark(N) {
                      performance.mark(N);
                    },
                    frame(N) {
                      const k = N;
                      if (Lv != null) {
                        const Z = k - Lv;
                        Pv.push(Z);
                      }
                      Lv = k;
                    },
                    clearMetrics() {
                      Lv = null, Pv = [], performance.clearMeasures(Ic), performance.clearMeasures(cv);
                      for (const N in n.bf)
                        performance.clearMarks(n.bf[N]);
                    },
                    getPerformanceMetrics() {
                      performance.measure(Ic, n.bf.create, n.bf.load), performance.measure(cv, n.bf.create, n.bf.fullLoad);
                      const N = performance.getEntriesByName(Ic)[0].duration, k = performance.getEntriesByName(cv)[0].duration, Z = Pv.length, At = 1 / (Pv.reduce((se, Ie) => se + Ie, 0) / Z / 1e3), Dt = Pv.filter((se) => se > l0).reduce((se, Ie) => se + (Ie - l0) / l0, 0), Ut = Dt / (Z + Dt) * 100;
                      return {
                        loadTime: N,
                        fullLoadTime: k,
                        fps: At,
                        percentDroppedFrames: Ut,
                        totalFrames: Z
                      };
                    }
                  };
                  class u0 {
                    constructor(k) {
                      this._marks = {
                        start: [k.url, "start"].join("#"),
                        end: [k.url, "end"].join("#"),
                        measure: k.url.toString()
                      }, performance.mark(this._marks.start);
                    }
                    finish() {
                      performance.mark(this._marks.end);
                      let k = performance.getEntriesByName(this._marks.measure);
                      return k.length === 0 && (performance.measure(this._marks.measure, this._marks.start, this._marks.end), k = performance.getEntriesByName(this._marks.measure), performance.clearMarks(this._marks.start), performance.clearMarks(this._marks.end), performance.clearMeasures(this._marks.measure)), k;
                    }
                  }
                  n.$ = co, n.A = Bu, n.B = xo, n.C = vt, n.D = ka, n.E = $t, n.F = W0, n.G = Rt, n.H = Nu, n.I = Bg, n.J = hc, n.K = Wv, n.L = yd, n.M = C, n.N = bd, n.O = Wg, n.P = u, n.Q = jg, n.R = kf, n.S = xt, n.T = uh, n.U = l, n.V = y, n.W = ut, n.X = Ar, n.Y = Ls, n.Z = s0, n._ = s, n.a = Jt, n.a$ = wu, n.a0 = Qo, n.a1 = W, n.a2 = zr, n.a3 = Ne, n.a4 = L, n.a5 = Ei, n.a6 = cp, n.a7 = Yr, n.a8 = Gn, n.a9 = Ko, n.aA = tr, n.aB = Zd, n.aC = O, n.aD = jr, n.aE = o0, n.aF = z, n.aG = E, n.aH = w, n.aI = xu, n.aJ = Bh, n.aK = nv, n.aL = Gv, n.aM = pd, n.aN = so, n.aO = kp, n.aP = yv, n.aQ = Uh, n.aR = Uu, n.aS = lc, n.aT = Pc, n.aU = Pl, n.aV = h, n.aW = By, n.aX = uo, n.aY = au, n.aZ = cc, n.a_ = Yl, n.aa = Ze, n.ab = rt, n.ac = S, n.ad = f, n.ae = mv, n.af = Xl, n.ag = md, n.ah = Qx, n.aj = Jx, n.ak = up, n.al = F, n.am = Kr, n.an = Xn, n.ao = of, n.ap = g, n.aq = ml, n.as = H0, n.at = gd, n.au = fl, n.av = e0, n.aw = jh, n.ax = Fa, n.ay = _s, n.az = kt, n.b = ht, n.b0 = bu, n.b1 = Fp, n.b2 = tl, n.b3 = _, n.b4 = ot, n.b5 = Em, n.b6 = If, n.b7 = Nh, n.b8 = c, n.b9 = v, n.bA = Ct, n.bB = vu, n.bC = Os, n.ba = wt, n.bb = gs, n.bc = _a, n.bd = fp, n.be = j0, n.bg = Wt, n.bh = Vt, n.bi = zt, n.bj = Pa, n.bk = aa, n.bl = Fe, n.bm = nr, n.bn = B0, n.bo = Xs, n.bp = Vu, n.bq = Cg, n.br = Vh, n.bs = iv, n.bt = Fg, n.bu = u0, n.bv = lt, n.bw = ve, n.bx = T, n.by = A, n.bz = D0, n.c = Gt, n.d = et, n.e = M, n.f = j, n.g = Qt, n.h = ae, n.i = q, n.j = ie, n.k = ur, n.l = Se, n.m = ce, n.n = jx, n.o = Gd, n.p = O0, n.q = Ws, n.r = ba, n.s = ze, n.t = Cs, n.u = Qi, n.v = or, n.w = U, n.x = Ba, n.y = G, n.z = Vs;
                }), b("worker", ["./shared"], function(n) {
                  class s {
                    constructor(me) {
                      this.keyCache = {}, me && this.replace(me);
                    }
                    replace(me) {
                      this._layerConfigs = {}, this._layers = {}, this.update(me, []);
                    }
                    update(me, Le) {
                      for (const De of me) {
                        this._layerConfigs[De.id] = De;
                        const Je = this._layers[De.id] = n.aB(De);
                        Je._featureFilter = n.a7(Je.filter), this.keyCache[De.id] && delete this.keyCache[De.id];
                      }
                      for (const De of Le)
                        delete this.keyCache[De], delete this._layerConfigs[De], delete this._layers[De];
                      this.familiesBySource = {};
                      const qt = n.bj(Object.values(this._layerConfigs), this.keyCache);
                      for (const De of qt) {
                        const Je = De.map((Ue) => this._layers[Ue.id]), dr = Je[0];
                        if (dr.visibility === "none")
                          continue;
                        const qe = dr.source || "";
                        let we = this.familiesBySource[qe];
                        we || (we = this.familiesBySource[qe] = {});
                        const ue = dr.sourceLayer || "_geojsonTileLayer";
                        let Pe = we[ue];
                        Pe || (Pe = we[ue] = []), Pe.push(Je);
                      }
                    }
                  }
                  const T = 1;
                  class A {
                    constructor(me) {
                      const Le = {}, qt = [];
                      for (const qe in me) {
                        const we = me[qe], ue = Le[qe] = {};
                        for (const Pe in we) {
                          const Ue = we[+Pe];
                          if (!Ue || Ue.bitmap.width === 0 || Ue.bitmap.height === 0)
                            continue;
                          const Ye = {
                            x: 0,
                            y: 0,
                            w: Ue.bitmap.width + 2 * T,
                            h: Ue.bitmap.height + 2 * T
                          };
                          qt.push(Ye), ue[Pe] = { rect: Ye, metrics: Ue.metrics };
                        }
                      }
                      const { w: De, h: Je } = n.p(qt), dr = new n.o({ width: De || 1, height: Je || 1 });
                      for (const qe in me) {
                        const we = me[qe];
                        for (const ue in we) {
                          const Pe = we[+ue];
                          if (!Pe || Pe.bitmap.width === 0 || Pe.bitmap.height === 0)
                            continue;
                          const Ue = Le[qe][ue].rect;
                          n.o.copy(Pe.bitmap, dr, { x: 0, y: 0 }, { x: Ue.x + T, y: Ue.y + T }, Pe.bitmap);
                        }
                      }
                      this.image = dr, this.positions = Le;
                    }
                  }
                  n.bk("GlyphAtlas", A);
                  class p {
                    constructor(me) {
                      this.tileID = new n.S(me.tileID.overscaledZ, me.tileID.wrap, me.tileID.canonical.z, me.tileID.canonical.x, me.tileID.canonical.y), this.uid = me.uid, this.zoom = me.zoom, this.pixelRatio = me.pixelRatio, this.tileSize = me.tileSize, this.source = me.source, this.overscaling = this.tileID.overscaleFactor(), this.showCollisionBoxes = me.showCollisionBoxes, this.collectResourceTiming = !!me.collectResourceTiming, this.returnDependencies = !!me.returnDependencies, this.promoteId = me.promoteId, this.inFlightDependencies = [];
                    }
                    parse(me, Le, qt, De) {
                      return n._(this, void 0, void 0, function* () {
                        this.status = "parsing", this.data = me, this.collisionBoxArray = new n.a5();
                        const Je = new n.bl(Object.keys(me.layers).sort()), dr = new n.bm(this.tileID, this.promoteId);
                        dr.bucketLayerIDs = [];
                        const qe = {}, we = {
                          featureIndex: dr,
                          iconDependencies: {},
                          patternDependencies: {},
                          glyphDependencies: {},
                          availableImages: qt
                        }, ue = Le.familiesBySource[this.source];
                        for (const Xr in ue) {
                          const Gr = me.layers[Xr];
                          if (!Gr)
                            continue;
                          Gr.version === 1 && n.w(`Vector tile source "${this.source}" layer "${Xr}" does not use vector tile spec v2 and therefore may have some rendering errors.`);
                          const oe = Je.encode(Xr), de = [];
                          for (let or = 0; or < Gr.length; or++) {
                            const Er = Gr.feature(or), Tr = dr.getId(Er, Xr);
                            de.push({ feature: Er, id: Tr, index: or, sourceLayerIndex: oe });
                          }
                          for (const or of ue[Xr]) {
                            const Er = or[0];
                            if (Er.source !== this.source && n.w(`layer.source = ${Er.source} does not equal this.source = ${this.source}`), Er.minzoom && this.zoom < Math.floor(Er.minzoom) || Er.maxzoom && this.zoom >= Er.maxzoom || Er.visibility === "none")
                              continue;
                            u(or, this.zoom, qt), (qe[Er.id] = Er.createBucket({
                              index: dr.bucketLayerIDs.length,
                              layers: or,
                              zoom: this.zoom,
                              pixelRatio: this.pixelRatio,
                              overscaling: this.overscaling,
                              collisionBoxArray: this.collisionBoxArray,
                              sourceLayerIndex: oe,
                              sourceID: this.source
                            })).populate(de, we, this.tileID.canonical), dr.bucketLayerIDs.push(or.map((tr) => tr.id));
                          }
                        }
                        const Pe = n.aG(we.glyphDependencies, (Xr) => Object.keys(Xr).map(Number));
                        this.inFlightDependencies.forEach((Xr) => Xr == null ? void 0 : Xr.abort()), this.inFlightDependencies = [];
                        let Ue = Promise.resolve({});
                        if (Object.keys(Pe).length) {
                          const Xr = new AbortController();
                          this.inFlightDependencies.push(Xr), Ue = De.sendAsync({ type: "GG", data: { stacks: Pe, source: this.source, tileID: this.tileID, type: "glyphs" } }, Xr);
                        }
                        const Ye = Object.keys(we.iconDependencies);
                        let rr = Promise.resolve({});
                        if (Ye.length) {
                          const Xr = new AbortController();
                          this.inFlightDependencies.push(Xr), rr = De.sendAsync({ type: "GI", data: { icons: Ye, source: this.source, tileID: this.tileID, type: "icons" } }, Xr);
                        }
                        const lr = Object.keys(we.patternDependencies);
                        let hr = Promise.resolve({});
                        if (lr.length) {
                          const Xr = new AbortController();
                          this.inFlightDependencies.push(Xr), hr = De.sendAsync({ type: "GI", data: { icons: lr, source: this.source, tileID: this.tileID, type: "patterns" } }, Xr);
                        }
                        const [Sr, Dr, Or] = yield Promise.all([Ue, rr, hr]), Br = new A(Sr), Nr = new n.bn(Dr, Or);
                        for (const Xr in qe) {
                          const Gr = qe[Xr];
                          Gr instanceof n.a6 ? (u(Gr.layers, this.zoom, qt), n.bo({
                            bucket: Gr,
                            glyphMap: Sr,
                            glyphPositions: Br.positions,
                            imageMap: Dr,
                            imagePositions: Nr.iconPositions,
                            showCollisionBoxes: this.showCollisionBoxes,
                            canonical: this.tileID.canonical
                          })) : Gr.hasPattern && (Gr instanceof n.bp || Gr instanceof n.bq || Gr instanceof n.br) && (u(Gr.layers, this.zoom, qt), Gr.addFeatures(we, this.tileID.canonical, Nr.patternPositions));
                        }
                        return this.status = "done", {
                          buckets: Object.values(qe).filter((Xr) => !Xr.isEmpty()),
                          featureIndex: dr,
                          collisionBoxArray: this.collisionBoxArray,
                          glyphAtlasImage: Br.image,
                          imageAtlas: Nr,
                          // Only used for benchmarking:
                          glyphMap: this.returnDependencies ? Sr : null,
                          iconMap: this.returnDependencies ? Dr : null,
                          glyphPositions: this.returnDependencies ? Br.positions : null
                        };
                      });
                    }
                  }
                  function u(xe, me, Le) {
                    const qt = new n.a9(me);
                    for (const De of xe)
                      De.recalculate(qt, Le);
                  }
                  class t {
                    /**
                     * @param loadVectorData - Optional method for custom loading of a VectorTile
                     * object based on parameters passed from the main-thread Source. See
                     * {@link VectorTileWorkerSource#loadTile}. The default implementation simply
                     * loads the pbf at `params.url`.
                     */
                    constructor(me, Le, qt) {
                      this.actor = me, this.layerIndex = Le, this.availableImages = qt, this.fetching = {}, this.loading = {}, this.loaded = {};
                    }
                    /**
                     * Loads a vector tile
                     */
                    loadVectorTile(me, Le) {
                      return n._(this, void 0, void 0, function* () {
                        const qt = yield n.l(me.request, Le);
                        try {
                          return {
                            vectorTile: new n.bs.VectorTile(new n.bt(qt.data)),
                            rawData: qt.data,
                            cacheControl: qt.cacheControl,
                            expires: qt.expires
                          };
                        } catch (De) {
                          const Je = new Uint8Array(qt.data), dr = Je[0] === 31 && Je[1] === 139;
                          let qe = `Unable to parse the tile at ${me.request.url}, `;
                          throw dr ? qe += "please make sure the data is not gzipped and that you have configured the relevant header in the server" : qe += `got error: ${De.message}`, new Error(qe);
                        }
                      });
                    }
                    /**
                     * Implements {@link WorkerSource#loadTile}. Delegates to
                     * {@link VectorTileWorkerSource#loadVectorData} (which by default expects
                     * a `params.url` property) for fetching and producing a VectorTile object.
                     */
                    loadTile(me) {
                      return n._(this, void 0, void 0, function* () {
                        const Le = me.uid, qt = me && me.request && me.request.collectResourceTiming ? new n.bu(me.request) : !1, De = new p(me);
                        this.loading[Le] = De;
                        const Je = new AbortController();
                        De.abort = Je;
                        try {
                          const dr = yield this.loadVectorTile(me, Je);
                          if (delete this.loading[Le], !dr)
                            return null;
                          const qe = dr.rawData, we = {};
                          dr.expires && (we.expires = dr.expires), dr.cacheControl && (we.cacheControl = dr.cacheControl);
                          const ue = {};
                          if (qt) {
                            const Ue = qt.finish();
                            Ue && (ue.resourceTiming = JSON.parse(JSON.stringify(Ue)));
                          }
                          De.vectorTile = dr.vectorTile;
                          const Pe = De.parse(dr.vectorTile, this.layerIndex, this.availableImages, this.actor);
                          this.loaded[Le] = De, this.fetching[Le] = { rawTileData: qe, cacheControl: we, resourceTiming: ue };
                          try {
                            const Ue = yield Pe;
                            return n.e({ rawTileData: qe.slice(0) }, Ue, we, ue);
                          } finally {
                            delete this.fetching[Le];
                          }
                        } catch (dr) {
                          throw delete this.loading[Le], De.status = "done", this.loaded[Le] = De, dr;
                        }
                      });
                    }
                    /**
                     * Implements {@link WorkerSource#reloadTile}.
                     */
                    reloadTile(me) {
                      return n._(this, void 0, void 0, function* () {
                        const Le = me.uid;
                        if (!this.loaded || !this.loaded[Le])
                          throw new Error("Should not be trying to reload a tile that was never loaded or has been removed");
                        const qt = this.loaded[Le];
                        if (qt.showCollisionBoxes = me.showCollisionBoxes, qt.status === "parsing") {
                          const De = yield qt.parse(qt.vectorTile, this.layerIndex, this.availableImages, this.actor);
                          let Je;
                          if (this.fetching[Le]) {
                            const { rawTileData: dr, cacheControl: qe, resourceTiming: we } = this.fetching[Le];
                            delete this.fetching[Le], Je = n.e({ rawTileData: dr.slice(0) }, De, qe, we);
                          } else
                            Je = De;
                          return Je;
                        }
                        if (qt.status === "done" && qt.vectorTile)
                          return qt.parse(qt.vectorTile, this.layerIndex, this.availableImages, this.actor);
                      });
                    }
                    /**
                     * Implements {@link WorkerSource#abortTile}.
                     */
                    abortTile(me) {
                      return n._(this, void 0, void 0, function* () {
                        const Le = this.loading, qt = me.uid;
                        Le && Le[qt] && Le[qt].abort && (Le[qt].abort.abort(), delete Le[qt]);
                      });
                    }
                    /**
                     * Implements {@link WorkerSource#removeTile}.
                     */
                    removeTile(me) {
                      return n._(this, void 0, void 0, function* () {
                        this.loaded && this.loaded[me.uid] && delete this.loaded[me.uid];
                      });
                    }
                  }
                  class r {
                    constructor() {
                      this.loaded = {};
                    }
                    loadTile(me) {
                      return n._(this, void 0, void 0, function* () {
                        const { uid: Le, encoding: qt, rawImageData: De, redFactor: Je, greenFactor: dr, blueFactor: qe, baseShift: we } = me, ue = De.width + 2, Pe = De.height + 2, Ue = n.b(De) ? new n.R({ width: ue, height: Pe }, yield n.bv(De, -1, -1, ue, Pe)) : De, Ye = new n.bw(Le, Ue, qt, Je, dr, qe, we);
                        return this.loaded = this.loaded || {}, this.loaded[Le] = Ye, Ye;
                      });
                    }
                    removeTile(me) {
                      const Le = this.loaded, qt = me.uid;
                      Le && Le[qt] && delete Le[qt];
                    }
                  }
                  var i = a;
                  function a(xe, me) {
                    var Le = xe && xe.type, qt;
                    if (Le === "FeatureCollection")
                      for (qt = 0; qt < xe.features.length; qt++) a(xe.features[qt], me);
                    else if (Le === "GeometryCollection")
                      for (qt = 0; qt < xe.geometries.length; qt++) a(xe.geometries[qt], me);
                    else if (Le === "Feature")
                      a(xe.geometry, me);
                    else if (Le === "Polygon")
                      l(xe.coordinates, me);
                    else if (Le === "MultiPolygon")
                      for (qt = 0; qt < xe.coordinates.length; qt++) l(xe.coordinates[qt], me);
                    return xe;
                  }
                  function l(xe, me) {
                    if (xe.length !== 0) {
                      o(xe[0], me);
                      for (var Le = 1; Le < xe.length; Le++)
                        o(xe[Le], !me);
                    }
                  }
                  function o(xe, me) {
                    for (var Le = 0, qt = 0, De = 0, Je = xe.length, dr = Je - 1; De < Je; dr = De++) {
                      var qe = (xe[De][0] - xe[dr][0]) * (xe[dr][1] + xe[De][1]), we = Le + qe;
                      qt += Math.abs(Le) >= Math.abs(qe) ? Le - we + qe : qe - we + Le, Le = we;
                    }
                    Le + qt >= 0 != !!me && xe.reverse();
                  }
                  var y = /* @__PURE__ */ n.bx(i);
                  const g = n.bs.VectorTileFeature.prototype.toGeoJSON;
                  let x = class {
                    constructor(me) {
                      this._feature = me, this.extent = n.X, this.type = me.type, this.properties = me.tags, "id" in me && !isNaN(me.id) && (this.id = parseInt(me.id, 10));
                    }
                    loadGeometry() {
                      if (this._feature.type === 1) {
                        const me = [];
                        for (const Le of this._feature.geometry)
                          me.push([new n.P(Le[0], Le[1])]);
                        return me;
                      } else {
                        const me = [];
                        for (const Le of this._feature.geometry) {
                          const qt = [];
                          for (const De of Le)
                            qt.push(new n.P(De[0], De[1]));
                          me.push(qt);
                        }
                        return me;
                      }
                    }
                    toGeoJSON(me, Le, qt) {
                      return g.call(this, me, Le, qt);
                    }
                  }, c = class {
                    constructor(me) {
                      this.layers = { _geojsonTileLayer: this }, this.name = "_geojsonTileLayer", this.extent = n.X, this.length = me.length, this._features = me;
                    }
                    feature(me) {
                      return new x(this._features[me]);
                    }
                  };
                  var v = { exports: {} }, f = n.by, _ = n.bs.VectorTileFeature, S = M;
                  function M(xe, me) {
                    this.options = me || {}, this.features = xe, this.length = xe.length;
                  }
                  M.prototype.feature = function(xe) {
                    return new C(this.features[xe], this.options.extent);
                  };
                  function C(xe, me) {
                    this.id = typeof xe.id == "number" ? xe.id : void 0, this.type = xe.type, this.rawGeometry = xe.type === 1 ? [xe.geometry] : xe.geometry, this.properties = xe.tags, this.extent = me || 4096;
                  }
                  C.prototype.loadGeometry = function() {
                    var xe = this.rawGeometry;
                    this.geometry = [];
                    for (var me = 0; me < xe.length; me++) {
                      for (var Le = xe[me], qt = [], De = 0; De < Le.length; De++)
                        qt.push(new f(Le[De][0], Le[De][1]));
                      this.geometry.push(qt);
                    }
                    return this.geometry;
                  }, C.prototype.bbox = function() {
                    this.geometry || this.loadGeometry();
                    for (var xe = this.geometry, me = 1 / 0, Le = -1 / 0, qt = 1 / 0, De = -1 / 0, Je = 0; Je < xe.length; Je++)
                      for (var dr = xe[Je], qe = 0; qe < dr.length; qe++) {
                        var we = dr[qe];
                        me = Math.min(me, we.x), Le = Math.max(Le, we.x), qt = Math.min(qt, we.y), De = Math.max(De, we.y);
                      }
                    return [me, qt, Le, De];
                  }, C.prototype.toGeoJSON = _.prototype.toGeoJSON;
                  var m = n.bz, L = S;
                  v.exports = d, v.exports.fromVectorTileJs = d, v.exports.fromGeojsonVt = h, v.exports.GeoJSONWrapper = L;
                  function d(xe) {
                    var me = new m();
                    return E(xe, me), me.finish();
                  }
                  function h(xe, me) {
                    me = me || {};
                    var Le = {};
                    for (var qt in xe)
                      Le[qt] = new L(xe[qt].features, me), Le[qt].name = qt, Le[qt].version = me.version, Le[qt].extent = me.extent;
                    return d({ layers: Le });
                  }
                  function E(xe, me) {
                    for (var Le in xe.layers)
                      me.writeMessage(3, w, xe.layers[Le]);
                  }
                  function w(xe, me) {
                    me.writeVarintField(15, xe.version || 1), me.writeStringField(1, xe.name || ""), me.writeVarintField(5, xe.extent || 4096);
                    var Le, qt = {
                      keys: [],
                      values: [],
                      keycache: {},
                      valuecache: {}
                    };
                    for (Le = 0; Le < xe.length; Le++)
                      qt.feature = xe.feature(Le), me.writeMessage(2, z, qt);
                    var De = qt.keys;
                    for (Le = 0; Le < De.length; Le++)
                      me.writeStringField(3, De[Le]);
                    var Je = qt.values;
                    for (Le = 0; Le < Je.length; Le++)
                      me.writeMessage(4, H, Je[Le]);
                  }
                  function z(xe, me) {
                    var Le = xe.feature;
                    Le.id !== void 0 && me.writeVarintField(1, Le.id), me.writeMessage(2, O, xe), me.writeVarintField(3, Le.type), me.writeMessage(4, U, Le);
                  }
                  function O(xe, me) {
                    var Le = xe.feature, qt = xe.keys, De = xe.values, Je = xe.keycache, dr = xe.valuecache;
                    for (var qe in Le.properties) {
                      var we = Le.properties[qe], ue = Je[qe];
                      if (we !== null) {
                        typeof ue > "u" && (qt.push(qe), ue = qt.length - 1, Je[qe] = ue), me.writeVarint(ue);
                        var Pe = typeof we;
                        Pe !== "string" && Pe !== "boolean" && Pe !== "number" && (we = JSON.stringify(we));
                        var Ue = Pe + ":" + we, Ye = dr[Ue];
                        typeof Ye > "u" && (De.push(we), Ye = De.length - 1, dr[Ue] = Ye), me.writeVarint(Ye);
                      }
                    }
                  }
                  function B(xe, me) {
                    return (me << 3) + (xe & 7);
                  }
                  function V(xe) {
                    return xe << 1 ^ xe >> 31;
                  }
                  function U(xe, me) {
                    for (var Le = xe.loadGeometry(), qt = xe.type, De = 0, Je = 0, dr = Le.length, qe = 0; qe < dr; qe++) {
                      var we = Le[qe], ue = 1;
                      qt === 1 && (ue = we.length), me.writeVarint(B(1, ue));
                      for (var Pe = qt === 3 ? we.length - 1 : we.length, Ue = 0; Ue < Pe; Ue++) {
                        Ue === 1 && qt !== 1 && me.writeVarint(B(2, Pe - 1));
                        var Ye = we[Ue].x - De, rr = we[Ue].y - Je;
                        me.writeVarint(V(Ye)), me.writeVarint(V(rr)), De += Ye, Je += rr;
                      }
                      qt === 3 && me.writeVarint(B(7, 1));
                    }
                  }
                  function H(xe, me) {
                    var Le = typeof xe;
                    Le === "string" ? me.writeStringField(1, xe) : Le === "boolean" ? me.writeBooleanField(7, xe) : Le === "number" && (xe % 1 !== 0 ? me.writeDoubleField(3, xe) : xe < 0 ? me.writeSVarintField(6, xe) : me.writeVarintField(5, xe));
                  }
                  var F = v.exports, G = /* @__PURE__ */ n.bx(F);
                  const q = {
                    minZoom: 0,
                    // min zoom to generate clusters on
                    maxZoom: 16,
                    // max zoom level to cluster the points on
                    minPoints: 2,
                    // minimum points to form a cluster
                    radius: 40,
                    // cluster radius in pixels
                    extent: 512,
                    // tile extent (radius is calculated relative to it)
                    nodeSize: 64,
                    // size of the KD-tree leaf node, affects performance
                    log: !1,
                    // whether to log timing info
                    // whether to generate numeric ids for input features (in vector tiles)
                    generateId: !1,
                    // a reduce function for calculating custom cluster properties
                    reduce: null,
                    // (accumulated, props) => { accumulated.sum += props.sum; }
                    // properties to use for individual points when running the reducer
                    map: (xe) => xe
                    // props => ({sum: props.my_value})
                  }, rt = Math.fround || /* @__PURE__ */ ((xe) => (me) => (xe[0] = +me, xe[0]))(new Float32Array(1)), st = 2, vt = 3, ht = 4, et = 5, Q = 6;
                  class j {
                    constructor(me) {
                      this.options = Object.assign(Object.create(q), me), this.trees = new Array(this.options.maxZoom + 1), this.stride = this.options.reduce ? 7 : 6, this.clusterProps = [];
                    }
                    load(me) {
                      const { log: Le, minZoom: qt, maxZoom: De } = this.options;
                      Le && console.time("total time");
                      const Je = `prepare ${me.length} points`;
                      Le && console.time(Je), this.points = me;
                      const dr = [];
                      for (let we = 0; we < me.length; we++) {
                        const ue = me[we];
                        if (!ue.geometry) continue;
                        const [Pe, Ue] = ue.geometry.coordinates, Ye = rt(nt(Pe)), rr = rt(X(Ue));
                        dr.push(
                          Ye,
                          rr,
                          // projected point coordinates
                          1 / 0,
                          // the last zoom the point was processed at
                          we,
                          // index of the source feature in the original input array
                          -1,
                          // parent cluster id
                          1
                          // number of points in a cluster
                        ), this.options.reduce && dr.push(0);
                      }
                      let qe = this.trees[De + 1] = this._createTree(dr);
                      Le && console.timeEnd(Je);
                      for (let we = De; we >= qt; we--) {
                        const ue = +Date.now();
                        qe = this.trees[we] = this._createTree(this._cluster(qe, we)), Le && console.log("z%d: %d clusters in %dms", we, qe.numItems, +Date.now() - ue);
                      }
                      return Le && console.timeEnd("total time"), this;
                    }
                    getClusters(me, Le) {
                      let qt = ((me[0] + 180) % 360 + 360) % 360 - 180;
                      const De = Math.max(-90, Math.min(90, me[1]));
                      let Je = me[2] === 180 ? 180 : ((me[2] + 180) % 360 + 360) % 360 - 180;
                      const dr = Math.max(-90, Math.min(90, me[3]));
                      if (me[2] - me[0] >= 360)
                        qt = -180, Je = 180;
                      else if (qt > Je) {
                        const Ue = this.getClusters([qt, De, 180, dr], Le), Ye = this.getClusters([-180, De, Je, dr], Le);
                        return Ue.concat(Ye);
                      }
                      const qe = this.trees[this._limitZoom(Le)], we = qe.range(nt(qt), X(dr), nt(Je), X(De)), ue = qe.data, Pe = [];
                      for (const Ue of we) {
                        const Ye = this.stride * Ue;
                        Pe.push(ue[Ye + et] > 1 ? at(ue, Ye, this.clusterProps) : this.points[ue[Ye + vt]]);
                      }
                      return Pe;
                    }
                    getChildren(me) {
                      const Le = this._getOriginId(me), qt = this._getOriginZoom(me), De = "No cluster with the specified id.", Je = this.trees[qt];
                      if (!Je) throw new Error(De);
                      const dr = Je.data;
                      if (Le * this.stride >= dr.length) throw new Error(De);
                      const qe = this.options.radius / (this.options.extent * Math.pow(2, qt - 1)), we = dr[Le * this.stride], ue = dr[Le * this.stride + 1], Pe = Je.within(we, ue, qe), Ue = [];
                      for (const Ye of Pe) {
                        const rr = Ye * this.stride;
                        dr[rr + ht] === me && Ue.push(dr[rr + et] > 1 ? at(dr, rr, this.clusterProps) : this.points[dr[rr + vt]]);
                      }
                      if (Ue.length === 0) throw new Error(De);
                      return Ue;
                    }
                    getLeaves(me, Le, qt) {
                      Le = Le || 10, qt = qt || 0;
                      const De = [];
                      return this._appendLeaves(De, me, Le, qt, 0), De;
                    }
                    getTile(me, Le, qt) {
                      const De = this.trees[this._limitZoom(me)], Je = Math.pow(2, me), { extent: dr, radius: qe } = this.options, we = qe / dr, ue = (qt - we) / Je, Pe = (qt + 1 + we) / Je, Ue = {
                        features: []
                      };
                      return this._addTileFeatures(
                        De.range((Le - we) / Je, ue, (Le + 1 + we) / Je, Pe),
                        De.data,
                        Le,
                        qt,
                        Je,
                        Ue
                      ), Le === 0 && this._addTileFeatures(
                        De.range(1 - we / Je, ue, 1, Pe),
                        De.data,
                        Je,
                        qt,
                        Je,
                        Ue
                      ), Le === Je - 1 && this._addTileFeatures(
                        De.range(0, ue, we / Je, Pe),
                        De.data,
                        -1,
                        qt,
                        Je,
                        Ue
                      ), Ue.features.length ? Ue : null;
                    }
                    getClusterExpansionZoom(me) {
                      let Le = this._getOriginZoom(me) - 1;
                      for (; Le <= this.options.maxZoom; ) {
                        const qt = this.getChildren(me);
                        if (Le++, qt.length !== 1) break;
                        me = qt[0].properties.cluster_id;
                      }
                      return Le;
                    }
                    _appendLeaves(me, Le, qt, De, Je) {
                      const dr = this.getChildren(Le);
                      for (const qe of dr) {
                        const we = qe.properties;
                        if (we && we.cluster ? Je + we.point_count <= De ? Je += we.point_count : Je = this._appendLeaves(me, we.cluster_id, qt, De, Je) : Je < De ? Je++ : me.push(qe), me.length === qt) break;
                      }
                      return Je;
                    }
                    _createTree(me) {
                      const Le = new n.aw(me.length / this.stride | 0, this.options.nodeSize, Float32Array);
                      for (let qt = 0; qt < me.length; qt += this.stride) Le.add(me[qt], me[qt + 1]);
                      return Le.finish(), Le.data = me, Le;
                    }
                    _addTileFeatures(me, Le, qt, De, Je, dr) {
                      for (const qe of me) {
                        const we = qe * this.stride, ue = Le[we + et] > 1;
                        let Pe, Ue, Ye;
                        if (ue)
                          Pe = ut(Le, we, this.clusterProps), Ue = Le[we], Ye = Le[we + 1];
                        else {
                          const hr = this.points[Le[we + vt]];
                          Pe = hr.properties;
                          const [Sr, Dr] = hr.geometry.coordinates;
                          Ue = nt(Sr), Ye = X(Dr);
                        }
                        const rr = {
                          type: 1,
                          geometry: [[
                            Math.round(this.options.extent * (Ue * Je - qt)),
                            Math.round(this.options.extent * (Ye * Je - De))
                          ]],
                          tags: Pe
                        };
                        let lr;
                        ue || this.options.generateId ? lr = Le[we + vt] : lr = this.points[Le[we + vt]].id, lr !== void 0 && (rr.id = lr), dr.features.push(rr);
                      }
                    }
                    _limitZoom(me) {
                      return Math.max(this.options.minZoom, Math.min(Math.floor(+me), this.options.maxZoom + 1));
                    }
                    _cluster(me, Le) {
                      const { radius: qt, extent: De, reduce: Je, minPoints: dr } = this.options, qe = qt / (De * Math.pow(2, Le)), we = me.data, ue = [], Pe = this.stride;
                      for (let Ue = 0; Ue < we.length; Ue += Pe) {
                        if (we[Ue + st] <= Le) continue;
                        we[Ue + st] = Le;
                        const Ye = we[Ue], rr = we[Ue + 1], lr = me.within(we[Ue], we[Ue + 1], qe), hr = we[Ue + et];
                        let Sr = hr;
                        for (const Dr of lr) {
                          const Or = Dr * Pe;
                          we[Or + st] > Le && (Sr += we[Or + et]);
                        }
                        if (Sr > hr && Sr >= dr) {
                          let Dr = Ye * hr, Or = rr * hr, Br, Nr = -1;
                          const Xr = ((Ue / Pe | 0) << 5) + (Le + 1) + this.points.length;
                          for (const Gr of lr) {
                            const oe = Gr * Pe;
                            if (we[oe + st] <= Le) continue;
                            we[oe + st] = Le;
                            const de = we[oe + et];
                            Dr += we[oe] * de, Or += we[oe + 1] * de, we[oe + ht] = Xr, Je && (Br || (Br = this._map(we, Ue, !0), Nr = this.clusterProps.length, this.clusterProps.push(Br)), Je(Br, this._map(we, oe)));
                          }
                          we[Ue + ht] = Xr, ue.push(Dr / Sr, Or / Sr, 1 / 0, Xr, -1, Sr), Je && ue.push(Nr);
                        } else {
                          for (let Dr = 0; Dr < Pe; Dr++) ue.push(we[Ue + Dr]);
                          if (Sr > 1)
                            for (const Dr of lr) {
                              const Or = Dr * Pe;
                              if (!(we[Or + st] <= Le)) {
                                we[Or + st] = Le;
                                for (let Br = 0; Br < Pe; Br++) ue.push(we[Or + Br]);
                              }
                            }
                        }
                      }
                      return ue;
                    }
                    // get index of the point from which the cluster originated
                    _getOriginId(me) {
                      return me - this.points.length >> 5;
                    }
                    // get zoom of the point from which the cluster originated
                    _getOriginZoom(me) {
                      return (me - this.points.length) % 32;
                    }
                    _map(me, Le, qt) {
                      if (me[Le + et] > 1) {
                        const dr = this.clusterProps[me[Le + Q]];
                        return qt ? Object.assign({}, dr) : dr;
                      }
                      const De = this.points[me[Le + vt]].properties, Je = this.options.map(De);
                      return qt && Je === De ? Object.assign({}, Je) : Je;
                    }
                  }
                  function at(xe, me, Le) {
                    return {
                      type: "Feature",
                      id: xe[me + vt],
                      properties: ut(xe, me, Le),
                      geometry: {
                        type: "Point",
                        coordinates: [ct(xe[me]), lt(xe[me + 1])]
                      }
                    };
                  }
                  function ut(xe, me, Le) {
                    const qt = xe[me + et], De = qt >= 1e4 ? `${Math.round(qt / 1e3)}k` : qt >= 1e3 ? `${Math.round(qt / 100) / 10}k` : qt, Je = xe[me + Q], dr = Je === -1 ? {} : Object.assign({}, Le[Je]);
                    return Object.assign(dr, {
                      cluster: !0,
                      cluster_id: xe[me + vt],
                      point_count: qt,
                      point_count_abbreviated: De
                    });
                  }
                  function nt(xe) {
                    return xe / 360 + 0.5;
                  }
                  function X(xe) {
                    const me = Math.sin(xe * Math.PI / 180), Le = 0.5 - 0.25 * Math.log((1 + me) / (1 - me)) / Math.PI;
                    return Le < 0 ? 0 : Le > 1 ? 1 : Le;
                  }
                  function ct(xe) {
                    return (xe - 0.5) * 360;
                  }
                  function lt(xe) {
                    const me = (180 - xe * 360) * Math.PI / 180;
                    return 360 * Math.atan(Math.exp(me)) / Math.PI - 90;
                  }
                  function pt(xe, me, Le, qt) {
                    let De = qt;
                    const Je = me + (Le - me >> 1);
                    let dr = Le - me, qe;
                    const we = xe[me], ue = xe[me + 1], Pe = xe[Le], Ue = xe[Le + 1];
                    for (let Ye = me + 3; Ye < Le; Ye += 3) {
                      const rr = wt(xe[Ye], xe[Ye + 1], we, ue, Pe, Ue);
                      if (rr > De)
                        qe = Ye, De = rr;
                      else if (rr === De) {
                        const lr = Math.abs(Ye - Je);
                        lr < dr && (qe = Ye, dr = lr);
                      }
                    }
                    De > qt && (qe - me > 3 && pt(xe, me, qe, qt), xe[qe + 2] = De, Le - qe > 3 && pt(xe, qe, Le, qt));
                  }
                  function wt(xe, me, Le, qt, De, Je) {
                    let dr = De - Le, qe = Je - qt;
                    if (dr !== 0 || qe !== 0) {
                      const we = ((xe - Le) * dr + (me - qt) * qe) / (dr * dr + qe * qe);
                      we > 1 ? (Le = De, qt = Je) : we > 0 && (Le += dr * we, qt += qe * we);
                    }
                    return dr = xe - Le, qe = me - qt, dr * dr + qe * qe;
                  }
                  function Et(xe, me, Le, qt) {
                    const De = {
                      id: xe ?? null,
                      type: me,
                      geometry: Le,
                      tags: qt,
                      minX: 1 / 0,
                      minY: 1 / 0,
                      maxX: -1 / 0,
                      maxY: -1 / 0
                    };
                    if (me === "Point" || me === "MultiPoint" || me === "LineString")
                      Ct(De, Le);
                    else if (me === "Polygon")
                      Ct(De, Le[0]);
                    else if (me === "MultiLineString")
                      for (const Je of Le)
                        Ct(De, Je);
                    else if (me === "MultiPolygon")
                      for (const Je of Le)
                        Ct(De, Je[0]);
                    return De;
                  }
                  function Ct(xe, me) {
                    for (let Le = 0; Le < me.length; Le += 3)
                      xe.minX = Math.min(xe.minX, me[Le]), xe.minY = Math.min(xe.minY, me[Le + 1]), xe.maxX = Math.max(xe.maxX, me[Le]), xe.maxY = Math.max(xe.maxY, me[Le + 1]);
                  }
                  function Gt(xe, me) {
                    const Le = [];
                    if (xe.type === "FeatureCollection")
                      for (let qt = 0; qt < xe.features.length; qt++)
                        Jt(Le, xe.features[qt], me, qt);
                    else xe.type === "Feature" ? Jt(Le, xe, me) : Jt(Le, { geometry: xe }, me);
                    return Le;
                  }
                  function Jt(xe, me, Le, qt) {
                    if (!me.geometry) return;
                    const De = me.geometry.coordinates;
                    if (De && De.length === 0) return;
                    const Je = me.geometry.type, dr = Math.pow(Le.tolerance / ((1 << Le.maxZoom) * Le.extent), 2);
                    let qe = [], we = me.id;
                    if (Le.promoteId ? we = me.properties[Le.promoteId] : Le.generateId && (we = qt || 0), Je === "Point")
                      Qt(De, qe);
                    else if (Je === "MultiPoint")
                      for (const ue of De)
                        Qt(ue, qe);
                    else if (Je === "LineString")
                      Vt(De, qe, dr, !1);
                    else if (Je === "MultiLineString")
                      if (Le.lineMetrics) {
                        for (const ue of De)
                          qe = [], Vt(ue, qe, dr, !1), xe.push(Et(we, "LineString", qe, me.properties));
                        return;
                      } else
                        zt(De, qe, dr, !1);
                    else if (Je === "Polygon")
                      zt(De, qe, dr, !0);
                    else if (Je === "MultiPolygon")
                      for (const ue of De) {
                        const Pe = [];
                        zt(ue, Pe, dr, !0), qe.push(Pe);
                      }
                    else if (Je === "GeometryCollection") {
                      for (const ue of me.geometry.geometries)
                        Jt(xe, {
                          id: we,
                          geometry: ue,
                          properties: me.properties
                        }, Le, qt);
                      return;
                    } else
                      throw new Error("Input data is not a valid GeoJSON object.");
                    xe.push(Et(we, Je, qe, me.properties));
                  }
                  function Qt(xe, me) {
                    me.push(Rt(xe[0]), Wt(xe[1]), 0);
                  }
                  function Vt(xe, me, Le, qt) {
                    let De, Je, dr = 0;
                    for (let we = 0; we < xe.length; we++) {
                      const ue = Rt(xe[we][0]), Pe = Wt(xe[we][1]);
                      me.push(ue, Pe, 0), we > 0 && (qt ? dr += (De * Pe - ue * Je) / 2 : dr += Math.sqrt(Math.pow(ue - De, 2) + Math.pow(Pe - Je, 2))), De = ue, Je = Pe;
                    }
                    const qe = me.length - 3;
                    me[2] = 1, pt(me, 0, qe, Le), me[qe + 2] = 1, me.size = Math.abs(dr), me.start = 0, me.end = me.size;
                  }
                  function zt(xe, me, Le, qt) {
                    for (let De = 0; De < xe.length; De++) {
                      const Je = [];
                      Vt(xe[De], Je, Le, qt), me.push(Je);
                    }
                  }
                  function Rt(xe) {
                    return xe / 360 + 0.5;
                  }
                  function Wt(xe) {
                    const me = Math.sin(xe * Math.PI / 180), Le = 0.5 - 0.25 * Math.log((1 + me) / (1 - me)) / Math.PI;
                    return Le < 0 ? 0 : Le > 1 ? 1 : Le;
                  }
                  function kt(xe, me, Le, qt, De, Je, dr, qe) {
                    if (Le /= me, qt /= me, Je >= Le && dr < qt) return xe;
                    if (dr < Le || Je >= qt) return null;
                    const we = [];
                    for (const ue of xe) {
                      const Pe = ue.geometry;
                      let Ue = ue.type;
                      const Ye = De === 0 ? ue.minX : ue.minY, rr = De === 0 ? ue.maxX : ue.maxY;
                      if (Ye >= Le && rr < qt) {
                        we.push(ue);
                        continue;
                      } else if (rr < Le || Ye >= qt)
                        continue;
                      let lr = [];
                      if (Ue === "Point" || Ue === "MultiPoint")
                        re(Pe, lr, Le, qt, De);
                      else if (Ue === "LineString")
                        ge(Pe, lr, Le, qt, De, !1, qe.lineMetrics);
                      else if (Ue === "MultiLineString")
                        ce(Pe, lr, Le, qt, De, !1);
                      else if (Ue === "Polygon")
                        ce(Pe, lr, Le, qt, De, !0);
                      else if (Ue === "MultiPolygon")
                        for (const hr of Pe) {
                          const Sr = [];
                          ce(hr, Sr, Le, qt, De, !0), Sr.length && lr.push(Sr);
                        }
                      if (lr.length) {
                        if (qe.lineMetrics && Ue === "LineString") {
                          for (const hr of lr)
                            we.push(Et(ue.id, Ue, hr, ue.tags));
                          continue;
                        }
                        (Ue === "LineString" || Ue === "MultiLineString") && (lr.length === 1 ? (Ue = "LineString", lr = lr[0]) : Ue = "MultiLineString"), (Ue === "Point" || Ue === "MultiPoint") && (Ue = lr.length === 3 ? "Point" : "MultiPoint"), we.push(Et(ue.id, Ue, lr, ue.tags));
                      }
                    }
                    return we.length ? we : null;
                  }
                  function re(xe, me, Le, qt, De) {
                    for (let Je = 0; Je < xe.length; Je += 3) {
                      const dr = xe[Je + De];
                      dr >= Le && dr <= qt && ae(me, xe[Je], xe[Je + 1], xe[Je + 2]);
                    }
                  }
                  function ge(xe, me, Le, qt, De, Je, dr) {
                    let qe = _e(xe);
                    const we = De === 0 ? Se : ze;
                    let ue = xe.start, Pe, Ue;
                    for (let Dr = 0; Dr < xe.length - 3; Dr += 3) {
                      const Or = xe[Dr], Br = xe[Dr + 1], Nr = xe[Dr + 2], Xr = xe[Dr + 3], Gr = xe[Dr + 4], oe = De === 0 ? Or : Br, de = De === 0 ? Xr : Gr;
                      let or = !1;
                      dr && (Pe = Math.sqrt(Math.pow(Or - Xr, 2) + Math.pow(Br - Gr, 2))), oe < Le ? de > Le && (Ue = we(qe, Or, Br, Xr, Gr, Le), dr && (qe.start = ue + Pe * Ue)) : oe > qt ? de < qt && (Ue = we(qe, Or, Br, Xr, Gr, qt), dr && (qe.start = ue + Pe * Ue)) : ae(qe, Or, Br, Nr), de < Le && oe >= Le && (Ue = we(qe, Or, Br, Xr, Gr, Le), or = !0), de > qt && oe <= qt && (Ue = we(qe, Or, Br, Xr, Gr, qt), or = !0), !Je && or && (dr && (qe.end = ue + Pe * Ue), me.push(qe), qe = _e(xe)), dr && (ue += Pe);
                    }
                    let Ye = xe.length - 3;
                    const rr = xe[Ye], lr = xe[Ye + 1], hr = xe[Ye + 2], Sr = De === 0 ? rr : lr;
                    Sr >= Le && Sr <= qt && ae(qe, rr, lr, hr), Ye = qe.length - 3, Je && Ye >= 3 && (qe[Ye] !== qe[0] || qe[Ye + 1] !== qe[1]) && ae(qe, qe[0], qe[1], qe[2]), qe.length && me.push(qe);
                  }
                  function _e(xe) {
                    const me = [];
                    return me.size = xe.size, me.start = xe.start, me.end = xe.end, me;
                  }
                  function ce(xe, me, Le, qt, De, Je) {
                    for (const dr of xe)
                      ge(dr, me, Le, qt, De, Je, !1);
                  }
                  function ae(xe, me, Le, qt) {
                    xe.push(me, Le, qt);
                  }
                  function Se(xe, me, Le, qt, De, Je) {
                    const dr = (Je - me) / (qt - me);
                    return ae(xe, Je, Le + (De - Le) * dr, 1), dr;
                  }
                  function ze(xe, me, Le, qt, De, Je) {
                    const dr = (Je - Le) / (De - Le);
                    return ae(xe, me + (qt - me) * dr, Je, 1), dr;
                  }
                  function Ne(xe, me) {
                    const Le = me.buffer / me.extent;
                    let qt = xe;
                    const De = kt(xe, 1, -1 - Le, Le, 0, -1, 2, me), Je = kt(xe, 1, 1 - Le, 2 + Le, 0, -1, 2, me);
                    return (De || Je) && (qt = kt(xe, 1, -Le, 1 + Le, 0, -1, 2, me) || [], De && (qt = Ve(De, 1).concat(qt)), Je && (qt = qt.concat(Ve(Je, -1)))), qt;
                  }
                  function Ve(xe, me) {
                    const Le = [];
                    for (let qt = 0; qt < xe.length; qt++) {
                      const De = xe[qt], Je = De.type;
                      let dr;
                      if (Je === "Point" || Je === "MultiPoint" || Je === "LineString")
                        dr = Oe(De.geometry, me);
                      else if (Je === "MultiLineString" || Je === "Polygon") {
                        dr = [];
                        for (const qe of De.geometry)
                          dr.push(Oe(qe, me));
                      } else if (Je === "MultiPolygon") {
                        dr = [];
                        for (const qe of De.geometry) {
                          const we = [];
                          for (const ue of qe)
                            we.push(Oe(ue, me));
                          dr.push(we);
                        }
                      }
                      Le.push(Et(De.id, Je, dr, De.tags));
                    }
                    return Le;
                  }
                  function Oe(xe, me) {
                    const Le = [];
                    Le.size = xe.size, xe.start !== void 0 && (Le.start = xe.start, Le.end = xe.end);
                    for (let qt = 0; qt < xe.length; qt += 3)
                      Le.push(xe[qt] + me, xe[qt + 1], xe[qt + 2]);
                    return Le;
                  }
                  function ur(xe, me) {
                    if (xe.transformed) return xe;
                    const Le = 1 << xe.z, qt = xe.x, De = xe.y;
                    for (const Je of xe.features) {
                      const dr = Je.geometry, qe = Je.type;
                      if (Je.geometry = [], qe === 1)
                        for (let we = 0; we < dr.length; we += 2)
                          Je.geometry.push(ie(dr[we], dr[we + 1], me, Le, qt, De));
                      else
                        for (let we = 0; we < dr.length; we++) {
                          const ue = [];
                          for (let Pe = 0; Pe < dr[we].length; Pe += 2)
                            ue.push(ie(dr[we][Pe], dr[we][Pe + 1], me, Le, qt, De));
                          Je.geometry.push(ue);
                        }
                    }
                    return xe.transformed = !0, xe;
                  }
                  function ie(xe, me, Le, qt, De, Je) {
                    return [
                      Math.round(Le * (xe * qt - De)),
                      Math.round(Le * (me * qt - Je))
                    ];
                  }
                  function $t(xe, me, Le, qt, De) {
                    const Je = me === De.maxZoom ? 0 : De.tolerance / ((1 << me) * De.extent), dr = {
                      features: [],
                      numPoints: 0,
                      numSimplified: 0,
                      numFeatures: xe.length,
                      source: null,
                      x: Le,
                      y: qt,
                      z: me,
                      transformed: !1,
                      minX: 2,
                      minY: 1,
                      maxX: -1,
                      maxY: 0
                    };
                    for (const qe of xe)
                      jt(dr, qe, Je, De);
                    return dr;
                  }
                  function jt(xe, me, Le, qt) {
                    const De = me.geometry, Je = me.type, dr = [];
                    if (xe.minX = Math.min(xe.minX, me.minX), xe.minY = Math.min(xe.minY, me.minY), xe.maxX = Math.max(xe.maxX, me.maxX), xe.maxY = Math.max(xe.maxY, me.maxY), Je === "Point" || Je === "MultiPoint")
                      for (let qe = 0; qe < De.length; qe += 3)
                        dr.push(De[qe], De[qe + 1]), xe.numPoints++, xe.numSimplified++;
                    else if (Je === "LineString")
                      ee(dr, De, xe, Le, !1, !1);
                    else if (Je === "MultiLineString" || Je === "Polygon")
                      for (let qe = 0; qe < De.length; qe++)
                        ee(dr, De[qe], xe, Le, Je === "Polygon", qe === 0);
                    else if (Je === "MultiPolygon")
                      for (let qe = 0; qe < De.length; qe++) {
                        const we = De[qe];
                        for (let ue = 0; ue < we.length; ue++)
                          ee(dr, we[ue], xe, Le, !0, ue === 0);
                      }
                    if (dr.length) {
                      let qe = me.tags || null;
                      if (Je === "LineString" && qt.lineMetrics) {
                        qe = {};
                        for (const ue in me.tags) qe[ue] = me.tags[ue];
                        qe.mapbox_clip_start = De.start / De.size, qe.mapbox_clip_end = De.end / De.size;
                      }
                      const we = {
                        geometry: dr,
                        type: Je === "Polygon" || Je === "MultiPolygon" ? 3 : Je === "LineString" || Je === "MultiLineString" ? 2 : 1,
                        tags: qe
                      };
                      me.id !== null && (we.id = me.id), xe.features.push(we);
                    }
                  }
                  function ee(xe, me, Le, qt, De, Je) {
                    const dr = qt * qt;
                    if (qt > 0 && me.size < (De ? dr : qt)) {
                      Le.numPoints += me.length / 3;
                      return;
                    }
                    const qe = [];
                    for (let we = 0; we < me.length; we += 3)
                      (qt === 0 || me[we + 2] > dr) && (Le.numSimplified++, qe.push(me[we], me[we + 1])), Le.numPoints++;
                    De && Bt(qe, Je), xe.push(qe);
                  }
                  function Bt(xe, me) {
                    let Le = 0;
                    for (let qt = 0, De = xe.length, Je = De - 2; qt < De; Je = qt, qt += 2)
                      Le += (xe[qt] - xe[Je]) * (xe[qt + 1] + xe[Je + 1]);
                    if (Le > 0 === me)
                      for (let qt = 0, De = xe.length; qt < De / 2; qt += 2) {
                        const Je = xe[qt], dr = xe[qt + 1];
                        xe[qt] = xe[De - 2 - qt], xe[qt + 1] = xe[De - 1 - qt], xe[De - 2 - qt] = Je, xe[De - 1 - qt] = dr;
                      }
                  }
                  const Xt = {
                    maxZoom: 14,
                    // max zoom to preserve detail on
                    indexMaxZoom: 5,
                    // max zoom in the tile index
                    indexMaxPoints: 1e5,
                    // max number of points per tile in the tile index
                    tolerance: 3,
                    // simplification tolerance (higher means simpler)
                    extent: 4096,
                    // tile extent
                    buffer: 64,
                    // tile buffer on each side
                    lineMetrics: !1,
                    // whether to calculate line metrics
                    promoteId: null,
                    // name of a feature property to be promoted to feature.id
                    generateId: !1,
                    // whether to generate feature ids. Cannot be used with promoteId
                    debug: 0
                    // logging level (0, 1 or 2)
                  };
                  class Zt {
                    constructor(me, Le) {
                      Le = this.options = Mt(Object.create(Xt), Le);
                      const qt = Le.debug;
                      if (qt && console.time("preprocess data"), Le.maxZoom < 0 || Le.maxZoom > 24) throw new Error("maxZoom should be in the 0-24 range");
                      if (Le.promoteId && Le.generateId) throw new Error("promoteId and generateId cannot be used together.");
                      let De = Gt(me, Le);
                      this.tiles = {}, this.tileCoords = [], qt && (console.timeEnd("preprocess data"), console.log("index: maxZoom: %d, maxPoints: %d", Le.indexMaxZoom, Le.indexMaxPoints), console.time("generate tiles"), this.stats = {}, this.total = 0), De = Ne(De, Le), De.length && this.splitTile(De, 0, 0, 0), qt && (De.length && console.log("features: %d, points: %d", this.tiles[0].numFeatures, this.tiles[0].numPoints), console.timeEnd("generate tiles"), console.log("tiles generated:", this.total, JSON.stringify(this.stats)));
                    }
                    // splits features from a parent tile to sub-tiles.
                    // z, x, and y are the coordinates of the parent tile
                    // cz, cx, and cy are the coordinates of the target tile
                    //
                    // If no target tile is specified, splitting stops when we reach the maximum
                    // zoom or the number of points is low as specified in the options.
                    splitTile(me, Le, qt, De, Je, dr, qe) {
                      const we = [me, Le, qt, De], ue = this.options, Pe = ue.debug;
                      for (; we.length; ) {
                        De = we.pop(), qt = we.pop(), Le = we.pop(), me = we.pop();
                        const Ue = 1 << Le, Ye = ye(Le, qt, De);
                        let rr = this.tiles[Ye];
                        if (!rr && (Pe > 1 && console.time("creation"), rr = this.tiles[Ye] = $t(me, Le, qt, De, ue), this.tileCoords.push({ z: Le, x: qt, y: De }), Pe)) {
                          Pe > 1 && (console.log(
                            "tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",
                            Le,
                            qt,
                            De,
                            rr.numFeatures,
                            rr.numPoints,
                            rr.numSimplified
                          ), console.timeEnd("creation"));
                          const de = `z${Le}`;
                          this.stats[de] = (this.stats[de] || 0) + 1, this.total++;
                        }
                        if (rr.source = me, Je == null) {
                          if (Le === ue.indexMaxZoom || rr.numPoints <= ue.indexMaxPoints) continue;
                        } else {
                          if (Le === ue.maxZoom || Le === Je)
                            continue;
                          if (Je != null) {
                            const de = Je - Le;
                            if (qt !== dr >> de || De !== qe >> de) continue;
                          }
                        }
                        if (rr.source = null, me.length === 0) continue;
                        Pe > 1 && console.time("clipping");
                        const lr = 0.5 * ue.buffer / ue.extent, hr = 0.5 - lr, Sr = 0.5 + lr, Dr = 1 + lr;
                        let Or = null, Br = null, Nr = null, Xr = null, Gr = kt(me, Ue, qt - lr, qt + Sr, 0, rr.minX, rr.maxX, ue), oe = kt(me, Ue, qt + hr, qt + Dr, 0, rr.minX, rr.maxX, ue);
                        me = null, Gr && (Or = kt(Gr, Ue, De - lr, De + Sr, 1, rr.minY, rr.maxY, ue), Br = kt(Gr, Ue, De + hr, De + Dr, 1, rr.minY, rr.maxY, ue), Gr = null), oe && (Nr = kt(oe, Ue, De - lr, De + Sr, 1, rr.minY, rr.maxY, ue), Xr = kt(oe, Ue, De + hr, De + Dr, 1, rr.minY, rr.maxY, ue), oe = null), Pe > 1 && console.timeEnd("clipping"), we.push(Or || [], Le + 1, qt * 2, De * 2), we.push(Br || [], Le + 1, qt * 2, De * 2 + 1), we.push(Nr || [], Le + 1, qt * 2 + 1, De * 2), we.push(Xr || [], Le + 1, qt * 2 + 1, De * 2 + 1);
                      }
                    }
                    getTile(me, Le, qt) {
                      me = +me, Le = +Le, qt = +qt;
                      const De = this.options, { extent: Je, debug: dr } = De;
                      if (me < 0 || me > 24) return null;
                      const qe = 1 << me;
                      Le = Le + qe & qe - 1;
                      const we = ye(me, Le, qt);
                      if (this.tiles[we]) return ur(this.tiles[we], Je);
                      dr > 1 && console.log("drilling down to z%d-%d-%d", me, Le, qt);
                      let ue = me, Pe = Le, Ue = qt, Ye;
                      for (; !Ye && ue > 0; )
                        ue--, Pe = Pe >> 1, Ue = Ue >> 1, Ye = this.tiles[ye(ue, Pe, Ue)];
                      return !Ye || !Ye.source ? null : (dr > 1 && (console.log("found parent tile z%d-%d-%d", ue, Pe, Ue), console.time("drilling down")), this.splitTile(Ye.source, ue, Pe, Ue, me, Le, qt), dr > 1 && console.timeEnd("drilling down"), this.tiles[we] ? ur(this.tiles[we], Je) : null);
                    }
                  }
                  function ye(xe, me, Le) {
                    return ((1 << xe) * Le + me) * 32 + xe;
                  }
                  function Mt(xe, me) {
                    for (const Le in me) xe[Le] = me[Le];
                    return xe;
                  }
                  function St(xe, me) {
                    return new Zt(xe, me);
                  }
                  function Lt(xe, me) {
                    return me ? xe.properties[me] : xe.id;
                  }
                  function te(xe, me) {
                    if (xe == null)
                      return !0;
                    if (xe.type === "Feature")
                      return Lt(xe, me) != null;
                    if (xe.type === "FeatureCollection") {
                      const Le = /* @__PURE__ */ new Set();
                      for (const qt of xe.features) {
                        const De = Lt(qt, me);
                        if (De == null || Le.has(De))
                          return !1;
                        Le.add(De);
                      }
                      return !0;
                    }
                    return !1;
                  }
                  function fe(xe, me) {
                    const Le = /* @__PURE__ */ new Map();
                    if (xe != null) if (xe.type === "Feature")
                      Le.set(Lt(xe, me), xe);
                    else
                      for (const qt of xe.features)
                        Le.set(Lt(qt, me), qt);
                    return Le;
                  }
                  function Me(xe, me, Le) {
                    var qt, De, Je, dr;
                    if (me.removeAll && xe.clear(), me.remove)
                      for (const qe of me.remove)
                        xe.delete(qe);
                    if (me.add)
                      for (const qe of me.add) {
                        const we = Lt(qe, Le);
                        we != null && xe.set(we, qe);
                      }
                    if (me.update)
                      for (const qe of me.update) {
                        let we = xe.get(qe.id);
                        if (we == null)
                          continue;
                        const ue = qe.newGeometry || qe.removeAllProperties, Pe = !qe.removeAllProperties && (((qt = qe.removeProperties) === null || qt === void 0 ? void 0 : qt.length) > 0 || ((De = qe.addOrUpdateProperties) === null || De === void 0 ? void 0 : De.length) > 0);
                        if ((ue || Pe) && (we = Object.assign({}, we), xe.set(qe.id, we), Pe && (we.properties = Object.assign({}, we.properties))), qe.newGeometry && (we.geometry = qe.newGeometry), qe.removeAllProperties)
                          we.properties = {};
                        else if (((Je = qe.removeProperties) === null || Je === void 0 ? void 0 : Je.length) > 0)
                          for (const Ue of qe.removeProperties)
                            Object.prototype.hasOwnProperty.call(we.properties, Ue) && delete we.properties[Ue];
                        if (((dr = qe.addOrUpdateProperties) === null || dr === void 0 ? void 0 : dr.length) > 0)
                          for (const { key: Ue, value: Ye } of qe.addOrUpdateProperties)
                            we.properties[Ue] = Ye;
                      }
                  }
                  class ir extends t {
                    constructor() {
                      super(...arguments), this._dataUpdateable = /* @__PURE__ */ new Map();
                    }
                    loadVectorTile(me, Le) {
                      return n._(this, void 0, void 0, function* () {
                        const qt = me.tileID.canonical;
                        if (!this._geoJSONIndex)
                          throw new Error("Unable to parse the data into a cluster or geojson");
                        const De = this._geoJSONIndex.getTile(qt.z, qt.x, qt.y);
                        if (!De)
                          return null;
                        const Je = new c(De.features);
                        let dr = G(Je);
                        return (dr.byteOffset !== 0 || dr.byteLength !== dr.buffer.byteLength) && (dr = new Uint8Array(dr)), {
                          vectorTile: Je,
                          rawData: dr.buffer
                        };
                      });
                    }
                    /**
                     * Fetches (if appropriate), parses, and index geojson data into tiles. This
                     * preparatory method must be called before {@link GeoJSONWorkerSource#loadTile}
                     * can correctly serve up tiles.
                     *
                     * Defers to {@link GeoJSONWorkerSource#loadAndProcessGeoJSON} for the pre-processing.
                     *
                     * When a `loadData` request comes in while a previous one is being processed,
                     * the previous one is aborted.
                     *
                     * @param params - the parameters
                     * @returns a promise that resolves when the data is loaded and parsed into a GeoJSON object
                     */
                    loadData(me) {
                      return n._(this, void 0, void 0, function* () {
                        var Le;
                        (Le = this._pendingRequest) === null || Le === void 0 || Le.abort();
                        const qt = me && me.request && me.request.collectResourceTiming ? new n.bu(me.request) : !1;
                        this._pendingRequest = new AbortController();
                        try {
                          this._pendingData = this.loadAndProcessGeoJSON(me, this._pendingRequest), this._geoJSONIndex = me.cluster ? new j(mr(me)).load((yield this._pendingData).features) : St(yield this._pendingData, me.geojsonVtOptions), this.loaded = {};
                          const De = {};
                          if (qt) {
                            const Je = qt.finish();
                            Je && (De.resourceTiming = {}, De.resourceTiming[me.source] = JSON.parse(JSON.stringify(Je)));
                          }
                          return De;
                        } catch (De) {
                          if (delete this._pendingRequest, n.bA(De))
                            return { abandoned: !0 };
                          throw De;
                        }
                      });
                    }
                    /**
                     * Allows to get the source's actual GeoJSON.
                     *
                     * @returns a promise which is resolved with the source's actual GeoJSON
                     */
                    getData() {
                      return n._(this, void 0, void 0, function* () {
                        return this._pendingData;
                      });
                    }
                    /**
                    * Implements {@link WorkerSource#reloadTile}.
                    *
                    * If the tile is loaded, uses the implementation in VectorTileWorkerSource.
                    * Otherwise, such as after a setData() call, we load the tile fresh.
                    *
                    * @param params - the parameters
                    * @returns A promise that resolves when the tile is reloaded
                    */
                    reloadTile(me) {
                      const Le = this.loaded, qt = me.uid;
                      return Le && Le[qt] ? super.reloadTile(me) : this.loadTile(me);
                    }
                    /**
                     * Fetch, parse and process GeoJSON according to the given params.
                     *
                     * Defers to {@link GeoJSONWorkerSource#loadGeoJSON} for the fetching and parsing.
                     *
                     * @param params - the parameters
                     * @param abortController - the abort controller that allows aborting this operation
                     * @returns a promise that is resolved with the processes GeoJSON
                     */
                    loadAndProcessGeoJSON(me, Le) {
                      return n._(this, void 0, void 0, function* () {
                        let qt = yield this.loadGeoJSON(me, Le);
                        if (delete this._pendingRequest, typeof qt != "object")
                          throw new Error(`Input data given to '${me.source}' is not a valid GeoJSON object.`);
                        if (y(qt, !0), me.filter) {
                          const De = n.bB(me.filter, { type: "boolean", "property-type": "data-driven", overridable: !1, transition: !1 });
                          if (De.result === "error")
                            throw new Error(De.value.map((dr) => `${dr.key}: ${dr.message}`).join(", "));
                          qt = { type: "FeatureCollection", features: qt.features.filter((dr) => De.value.evaluate({ zoom: 0 }, dr)) };
                        }
                        return qt;
                      });
                    }
                    /**
                     * Fetch and parse GeoJSON according to the given params.
                     *
                     * GeoJSON is loaded and parsed from `params.url` if it exists, or else
                     * expected as a literal (string or object) `params.data`.
                     *
                     * @param params - the parameters
                     * @param abortController - the abort controller that allows aborting this operation
                     * @returns a promise that resolves when the data is loaded
                     */
                    loadGeoJSON(me, Le) {
                      return n._(this, void 0, void 0, function* () {
                        const { promoteId: qt } = me;
                        if (me.request) {
                          const De = yield n.h(me.request, Le);
                          return this._dataUpdateable = te(De.data, qt) ? fe(De.data, qt) : void 0, De.data;
                        }
                        if (typeof me.data == "string")
                          try {
                            const De = JSON.parse(me.data);
                            return this._dataUpdateable = te(De, qt) ? fe(De, qt) : void 0, De;
                          } catch {
                            throw new Error(`Input data given to '${me.source}' is not a valid GeoJSON object.`);
                          }
                        if (!me.dataDiff)
                          throw new Error(`Input data given to '${me.source}' is not a valid GeoJSON object.`);
                        if (!this._dataUpdateable)
                          throw new Error(`Cannot update existing geojson data in ${me.source}`);
                        return Me(this._dataUpdateable, me.dataDiff, qt), { type: "FeatureCollection", features: Array.from(this._dataUpdateable.values()) };
                      });
                    }
                    removeSource(me) {
                      return n._(this, void 0, void 0, function* () {
                        this._pendingRequest && this._pendingRequest.abort();
                      });
                    }
                    getClusterExpansionZoom(me) {
                      return this._geoJSONIndex.getClusterExpansionZoom(me.clusterId);
                    }
                    getClusterChildren(me) {
                      return this._geoJSONIndex.getChildren(me.clusterId);
                    }
                    getClusterLeaves(me) {
                      return this._geoJSONIndex.getLeaves(me.clusterId, me.limit, me.offset);
                    }
                  }
                  function mr({ superclusterOptions: xe, clusterProperties: me }) {
                    if (!me || !xe)
                      return xe;
                    const Le = {}, qt = {}, De = { accumulated: null, zoom: 0 }, Je = { properties: null }, dr = Object.keys(me);
                    for (const qe of dr) {
                      const [we, ue] = me[qe], Pe = n.bB(ue), Ue = n.bB(typeof we == "string" ? [we, ["accumulated"], ["get", qe]] : we);
                      Le[qe] = Pe.value, qt[qe] = Ue.value;
                    }
                    return xe.map = (qe) => {
                      Je.properties = qe;
                      const we = {};
                      for (const ue of dr)
                        we[ue] = Le[ue].evaluate(De, Je);
                      return we;
                    }, xe.reduce = (qe, we) => {
                      Je.properties = we;
                      for (const ue of dr)
                        De.accumulated = qe[ue], qe[ue] = qt[ue].evaluate(De, Je);
                    }, xe;
                  }
                  class Xe {
                    constructor(me) {
                      this.self = me, this.actor = new n.F(me), this.layerIndexes = {}, this.availableImages = {}, this.workerSources = {}, this.demWorkerSources = {}, this.externalWorkerSourceTypes = {}, this.self.registerWorkerSource = (Le, qt) => {
                        if (this.externalWorkerSourceTypes[Le])
                          throw new Error(`Worker source with name "${Le}" already registered.`);
                        this.externalWorkerSourceTypes[Le] = qt;
                      }, this.self.addProtocol = n.bh, this.self.removeProtocol = n.bi, this.self.registerRTLTextPlugin = (Le) => {
                        if (n.bC.isParsed())
                          throw new Error("RTL text plugin already registered.");
                        n.bC.setMethods(Le);
                      }, this.actor.registerMessageHandler("LDT", (Le, qt) => this._getDEMWorkerSource(Le, qt.source).loadTile(qt)), this.actor.registerMessageHandler("RDT", (Le, qt) => n._(this, void 0, void 0, function* () {
                        this._getDEMWorkerSource(Le, qt.source).removeTile(qt);
                      })), this.actor.registerMessageHandler("GCEZ", (Le, qt) => n._(this, void 0, void 0, function* () {
                        return this._getWorkerSource(Le, qt.type, qt.source).getClusterExpansionZoom(qt);
                      })), this.actor.registerMessageHandler("GCC", (Le, qt) => n._(this, void 0, void 0, function* () {
                        return this._getWorkerSource(Le, qt.type, qt.source).getClusterChildren(qt);
                      })), this.actor.registerMessageHandler("GCL", (Le, qt) => n._(this, void 0, void 0, function* () {
                        return this._getWorkerSource(Le, qt.type, qt.source).getClusterLeaves(qt);
                      })), this.actor.registerMessageHandler("LD", (Le, qt) => this._getWorkerSource(Le, qt.type, qt.source).loadData(qt)), this.actor.registerMessageHandler("GD", (Le, qt) => this._getWorkerSource(Le, qt.type, qt.source).getData()), this.actor.registerMessageHandler("LT", (Le, qt) => this._getWorkerSource(Le, qt.type, qt.source).loadTile(qt)), this.actor.registerMessageHandler("RT", (Le, qt) => this._getWorkerSource(Le, qt.type, qt.source).reloadTile(qt)), this.actor.registerMessageHandler("AT", (Le, qt) => this._getWorkerSource(Le, qt.type, qt.source).abortTile(qt)), this.actor.registerMessageHandler("RMT", (Le, qt) => this._getWorkerSource(Le, qt.type, qt.source).removeTile(qt)), this.actor.registerMessageHandler("RS", (Le, qt) => n._(this, void 0, void 0, function* () {
                        if (!this.workerSources[Le] || !this.workerSources[Le][qt.type] || !this.workerSources[Le][qt.type][qt.source])
                          return;
                        const De = this.workerSources[Le][qt.type][qt.source];
                        delete this.workerSources[Le][qt.type][qt.source], De.removeSource !== void 0 && De.removeSource(qt);
                      })), this.actor.registerMessageHandler("RM", (Le) => n._(this, void 0, void 0, function* () {
                        delete this.layerIndexes[Le], delete this.availableImages[Le], delete this.workerSources[Le], delete this.demWorkerSources[Le];
                      })), this.actor.registerMessageHandler("SR", (Le, qt) => n._(this, void 0, void 0, function* () {
                        this.referrer = qt;
                      })), this.actor.registerMessageHandler("SRPS", (Le, qt) => this._syncRTLPluginState(Le, qt)), this.actor.registerMessageHandler("IS", (Le, qt) => n._(this, void 0, void 0, function* () {
                        this.self.importScripts(qt);
                      })), this.actor.registerMessageHandler("SI", (Le, qt) => this._setImages(Le, qt)), this.actor.registerMessageHandler("UL", (Le, qt) => n._(this, void 0, void 0, function* () {
                        this._getLayerIndex(Le).update(qt.layers, qt.removedIds);
                      })), this.actor.registerMessageHandler("SL", (Le, qt) => n._(this, void 0, void 0, function* () {
                        this._getLayerIndex(Le).replace(qt);
                      }));
                    }
                    _setImages(me, Le) {
                      return n._(this, void 0, void 0, function* () {
                        this.availableImages[me] = Le;
                        for (const qt in this.workerSources[me]) {
                          const De = this.workerSources[me][qt];
                          for (const Je in De)
                            De[Je].availableImages = Le;
                        }
                      });
                    }
                    _syncRTLPluginState(me, Le) {
                      return n._(this, void 0, void 0, function* () {
                        if (n.bC.isParsed())
                          return n.bC.getState();
                        if (Le.pluginStatus !== "loading")
                          return n.bC.setState(Le), Le;
                        const qt = Le.pluginURL;
                        if (this.self.importScripts(qt), n.bC.isParsed()) {
                          const Je = {
                            pluginStatus: "loaded",
                            pluginURL: qt
                          };
                          return n.bC.setState(Je), Je;
                        }
                        throw n.bC.setState({
                          pluginStatus: "error",
                          pluginURL: ""
                        }), new Error(`RTL Text Plugin failed to import scripts from ${qt}`);
                      });
                    }
                    _getAvailableImages(me) {
                      let Le = this.availableImages[me];
                      return Le || (Le = []), Le;
                    }
                    _getLayerIndex(me) {
                      let Le = this.layerIndexes[me];
                      return Le || (Le = this.layerIndexes[me] = new s()), Le;
                    }
                    /**
                     * This is basically a lazy initialization of a worker per mapId and sourceType and sourceName
                     * @param mapId - the mapId
                     * @param sourceType - the source type - 'vector' for example
                     * @param sourceName - the source name - 'osm' for example
                     * @returns a new instance or a cached one
                     */
                    _getWorkerSource(me, Le, qt) {
                      if (this.workerSources[me] || (this.workerSources[me] = {}), this.workerSources[me][Le] || (this.workerSources[me][Le] = {}), !this.workerSources[me][Le][qt]) {
                        const De = {
                          sendAsync: (Je, dr) => (Je.targetMapId = me, this.actor.sendAsync(Je, dr))
                        };
                        switch (Le) {
                          case "vector":
                            this.workerSources[me][Le][qt] = new t(De, this._getLayerIndex(me), this._getAvailableImages(me));
                            break;
                          case "geojson":
                            this.workerSources[me][Le][qt] = new ir(De, this._getLayerIndex(me), this._getAvailableImages(me));
                            break;
                          default:
                            this.workerSources[me][Le][qt] = new this.externalWorkerSourceTypes[Le](De, this._getLayerIndex(me), this._getAvailableImages(me));
                            break;
                        }
                      }
                      return this.workerSources[me][Le][qt];
                    }
                    /**
                     * This is basically a lazy initialization of a worker per mapId and source
                     * @param mapId - the mapId
                     * @param sourceType - the source type - 'raster-dem' for example
                     * @returns a new instance or a cached one
                     */
                    _getDEMWorkerSource(me, Le) {
                      return this.demWorkerSources[me] || (this.demWorkerSources[me] = {}), this.demWorkerSources[me][Le] || (this.demWorkerSources[me][Le] = new r()), this.demWorkerSources[me][Le];
                    }
                  }
                  return n.i(self) && (self.worker = new Xe(self)), Xe;
                }), b("index", ["exports", "./shared"], function(n, s) {
                  var T = "maplibre-gl", A = "BSD licensed community fork of mapbox-gl, a WebGL interactive maps library", p = "4.5.2", u = "dist/maplibre-gl.js", t = "dist/maplibre-gl.css", r = "BSD-3-Clause", i = "https://maplibre.org/", a = "https://github.com/maplibre/maplibre-gl-js?sponsor=1", l = {
                    url: "https://github.com/maplibre/maplibre-gl-js/issues/"
                  }, o = {
                    type: "git",
                    url: "git://github.com/maplibre/maplibre-gl-js.git"
                  }, y = "dist/maplibre-gl.d.ts", g = "module", x = {
                    "@mapbox/geojson-rewind": "^0.5.2",
                    "@mapbox/jsonlint-lines-primitives": "^2.0.2",
                    "@mapbox/point-geometry": "^0.1.0",
                    "@mapbox/tiny-sdf": "^2.0.6",
                    "@mapbox/unitbezier": "^0.0.1",
                    "@mapbox/vector-tile": "^1.3.1",
                    "@mapbox/whoots-js": "^3.1.0",
                    "@maplibre/maplibre-gl-style-spec": "^20.3.0",
                    "@types/geojson": "^7946.0.14",
                    "@types/geojson-vt": "3.2.5",
                    "@types/mapbox__point-geometry": "^0.1.4",
                    "@types/mapbox__vector-tile": "^1.3.4",
                    "@types/pbf": "^3.0.5",
                    "@types/supercluster": "^7.1.3",
                    earcut: "^3.0.0",
                    "geojson-vt": "^4.0.2",
                    "gl-matrix": "^3.4.3",
                    "global-prefix": "^3.0.0",
                    kdbush: "^4.0.2",
                    "murmurhash-js": "^1.0.0",
                    pbf: "^3.3.0",
                    potpack: "^2.0.0",
                    quickselect: "^3.0.0",
                    supercluster: "^8.0.1",
                    tinyqueue: "^3.0.0",
                    "vt-pbf": "^3.1.3"
                  }, c = {
                    autoprefixer: "^10.4.20",
                    "@mapbox/mapbox-gl-rtl-text": "^0.3.0",
                    "@mapbox/mvt-fixtures": "^3.10.0",
                    "@rollup/plugin-commonjs": "^26.0.1",
                    "@rollup/plugin-json": "^6.1.0",
                    "@rollup/plugin-node-resolve": "^15.2.3",
                    "@rollup/plugin-replace": "^5.0.7",
                    "@rollup/plugin-strip": "^3.0.4",
                    "@rollup/plugin-terser": "^0.4.4",
                    "@rollup/plugin-typescript": "^11.1.6",
                    "@types/benchmark": "^2.1.5",
                    "@types/cssnano": "^5.0.0",
                    "@types/d3": "^7.4.3",
                    "@types/diff": "^5.2.1",
                    "@types/earcut": "^2.1.4",
                    "@types/eslint": "^8.56.7",
                    "@types/gl": "^6.0.5",
                    "@types/glob": "^8.1.0",
                    "@types/jest": "^29.5.12",
                    "@types/jsdom": "^21.1.7",
                    "@types/minimist": "^1.2.5",
                    "@types/murmurhash-js": "^1.0.6",
                    "@types/nise": "^1.4.5",
                    "@types/node": "^22.1.0",
                    "@types/offscreencanvas": "^2019.7.3",
                    "@types/pixelmatch": "^5.2.6",
                    "@types/pngjs": "^6.0.5",
                    "@types/react": "^18.3.3",
                    "@types/react-dom": "^18.3.0",
                    "@types/request": "^2.48.12",
                    "@types/shuffle-seed": "^1.1.3",
                    "@types/window-or-global": "^1.0.6",
                    "@typescript-eslint/eslint-plugin": "^7.18.0",
                    "@typescript-eslint/parser": "^7.18.0",
                    address: "^2.0.3",
                    benchmark: "^2.1.4",
                    canvas: "^2.11.2",
                    cssnano: "^7.0.4",
                    d3: "^7.9.0",
                    "d3-queue": "^3.0.7",
                    "devtools-protocol": "^0.0.1339468",
                    diff: "^5.2.0",
                    "dts-bundle-generator": "^9.5.1",
                    eslint: "^8.57.0",
                    "eslint-config-mourner": "^3.0.0",
                    "eslint-plugin-html": "^8.1.1",
                    "eslint-plugin-import": "^2.29.1",
                    "eslint-plugin-jest": "^28.8.0",
                    "eslint-plugin-react": "^7.35.0",
                    "eslint-plugin-tsdoc": "0.3.0",
                    expect: "^29.7.0",
                    glob: "^11.0.0",
                    "is-builtin-module": "^4.0.0",
                    jest: "^29.7.0",
                    "jest-environment-jsdom": "^29.7.0",
                    "jest-junit": "^16.0.0",
                    "jest-monocart-coverage": "^1.1.1",
                    "jest-webgl-canvas-mock": "^2.5.3",
                    jsdom: "^24.1.1",
                    "junit-report-builder": "^5.0.0",
                    minimist: "^1.2.8",
                    "mock-geolocation": "^1.0.11",
                    "monocart-coverage-reports": "^2.10.2",
                    nise: "^6.0.0",
                    "npm-font-open-sans": "^1.1.0",
                    "npm-run-all": "^4.1.5",
                    "pdf-merger-js": "^5.1.2",
                    pixelmatch: "^6.0.0",
                    pngjs: "^7.0.0",
                    postcss: "^8.4.41",
                    "postcss-cli": "^11.0.0",
                    "postcss-inline-svg": "^6.0.0",
                    "pretty-bytes": "^6.1.1",
                    puppeteer: "^23.0.2",
                    react: "^18.3.1",
                    "react-dom": "^18.3.1",
                    rollup: "^4.20.0",
                    "rollup-plugin-sourcemaps": "^0.6.3",
                    rw: "^1.3.3",
                    semver: "^7.6.3",
                    "shuffle-seed": "^1.1.6",
                    "source-map-explorer": "^2.5.3",
                    st: "^3.0.0",
                    stylelint: "^16.8.1",
                    "stylelint-config-standard": "^36.0.1",
                    "ts-jest": "^29.2.4",
                    "ts-node": "^10.9.2",
                    tslib: "^2.6.3",
                    typedoc: "^0.26.5",
                    "typedoc-plugin-markdown": "^4.2.3",
                    "typedoc-plugin-missing-exports": "^3.0.0",
                    typescript: "^5.5.4"
                  }, v = {
                    "postcss-inline-svg": {
                      "css-select": "^5.1.0",
                      "dom-serializer": "^2.0.0",
                      htmlparser2: "^8.0.1",
                      "postcss-value-parser": "^4.2.0"
                    }
                  }, f = {
                    "generate-dist-package": "node --no-warnings --loader ts-node/esm build/generate-dist-package.js",
                    "generate-shaders": "node --no-warnings --loader ts-node/esm build/generate-shaders.ts",
                    "generate-struct-arrays": "node --no-warnings --loader ts-node/esm build/generate-struct-arrays.ts",
                    "generate-style-code": "node --no-warnings --loader ts-node/esm build/generate-style-code.ts",
                    "generate-typings": "dts-bundle-generator --export-referenced-types --umd-module-name=maplibregl -o ./dist/maplibre-gl.d.ts ./src/index.ts",
                    "generate-docs": "typedoc && node --no-warnings --loader ts-node/esm build/generate-docs.ts",
                    "generate-images": "node --no-warnings --loader ts-node/esm build/generate-doc-images.ts",
                    "build-dist": "npm run build-css && npm run generate-typings && npm run build-dev && npm run build-csp-dev && npm run build-prod && npm run build-prod-unminified && npm run build-csp",
                    "build-dev": "rollup --configPlugin @rollup/plugin-typescript -c --environment BUILD:dev",
                    "watch-dev": "rollup --configPlugin @rollup/plugin-typescript -c --environment BUILD:dev --watch",
                    "build-prod": "rollup --configPlugin @rollup/plugin-typescript -c --environment BUILD:production,MINIFY:true",
                    "build-prod-unminified": "rollup --configPlugin @rollup/plugin-typescript -c --environment BUILD:production",
                    "build-csp": "rollup --configPlugin @rollup/plugin-typescript -c rollup.config.csp.ts --environment BUILD:production,MINIFY:true",
                    "build-csp-dev": "rollup --configPlugin @rollup/plugin-typescript -c rollup.config.csp.ts --environment BUILD:dev",
                    "build-css": "postcss -o dist/maplibre-gl.css src/css/maplibre-gl.css",
                    "watch-css": "postcss --watch -o dist/maplibre-gl.css src/css/maplibre-gl.css",
                    "build-benchmarks": "npm run build-dev && rollup --configPlugin @rollup/plugin-typescript -c test/bench/rollup_config_benchmarks.ts",
                    "watch-benchmarks": "rollup --configPlugin @rollup/plugin-typescript -c test/bench/rollup_config_benchmarks.ts --watch",
                    "start-server": "st --no-cache -H 0.0.0.0 --port 9966 .",
                    "start-docs": "docker run --rm -it -p 8000:8000 -v ${PWD}:/docs squidfunk/mkdocs-material",
                    start: "run-p watch-css watch-dev start-server",
                    "start-bench": "run-p watch-css watch-benchmarks start-server",
                    lint: "eslint --cache --ext .ts,.tsx,.js,.html --ignore-path .gitignore .",
                    "lint-css": "stylelint **/*.css --fix -f verbose",
                    test: "run-p lint lint-css test-render jest",
                    jest: "jest",
                    "test-build": "jest --selectProjects=build --reporters=default",
                    "test-build-ci": "jest --selectProjects=build",
                    "test-integration": "jest --selectProjects=integration --reporters=default",
                    "test-integration-ci": "jest --coverage --selectProjects=integration",
                    "test-render": "node --no-warnings --loader ts-node/esm test/integration/render/run_render_tests.ts",
                    "test-unit": "jest --selectProjects=unit --reporters=default",
                    "test-unit-ci": "jest --coverage --selectProjects unit",
                    "test-watch-roots": "jest --watch",
                    codegen: "run-p --print-label generate-dist-package generate-style-code generate-struct-arrays generate-shaders && npm run generate-typings",
                    benchmark: "node --no-warnings --loader ts-node/esm test/bench/run-benchmarks.ts",
                    "gl-stats": "node --no-warnings --loader ts-node/esm test/bench/gl-stats.ts",
                    prepare: "npm run codegen",
                    typecheck: "tsc --noEmit && tsc --project tsconfig.dist.json",
                    tsnode: "node --experimental-loader=ts-node/esm --no-warnings"
                  }, _ = [
                    "build/",
                    "dist/*",
                    "src/"
                  ], S = {
                    npm: ">=8.1.0",
                    node: ">=16.14.0"
                  }, M = {
                    name: T,
                    description: A,
                    version: p,
                    main: u,
                    style: t,
                    license: r,
                    homepage: i,
                    funding: a,
                    bugs: l,
                    repository: o,
                    types: y,
                    type: g,
                    dependencies: x,
                    devDependencies: c,
                    overrides: v,
                    scripts: f,
                    files: _,
                    engines: S
                  };
                  const C = typeof performance < "u" && performance && performance.now ? performance.now.bind(performance) : Date.now.bind(Date);
                  let m, L;
                  const d = {
                    /**
                     * Provides a function that outputs milliseconds: either performance.now()
                     * or a fallback to Date.now()
                     */
                    now: C,
                    frameAsync(Ot) {
                      return new Promise((R, J) => {
                        const yt = requestAnimationFrame(R);
                        Ot.signal.addEventListener("abort", () => {
                          cancelAnimationFrame(yt), J(s.c());
                        });
                      });
                    },
                    getImageData(Ot, R = 0) {
                      return this.getImageCanvasContext(Ot).getImageData(-R, -R, Ot.width + 2 * R, Ot.height + 2 * R);
                    },
                    getImageCanvasContext(Ot) {
                      const R = window.document.createElement("canvas"), J = R.getContext("2d", { willReadFrequently: !0 });
                      if (!J)
                        throw new Error("failed to create canvas 2d context");
                      return R.width = Ot.width, R.height = Ot.height, J.drawImage(Ot, 0, 0, Ot.width, Ot.height), J;
                    },
                    resolveURL(Ot) {
                      return m || (m = document.createElement("a")), m.href = Ot, m.href;
                    },
                    hardwareConcurrency: typeof navigator < "u" && navigator.hardwareConcurrency || 4,
                    get prefersReducedMotion() {
                      return matchMedia ? (L == null && (L = matchMedia("(prefers-reduced-motion: reduce)")), L.matches) : !1;
                    }
                  };
                  class h {
                    static testProp(R) {
                      if (!h.docStyle)
                        return R[0];
                      for (let J = 0; J < R.length; J++)
                        if (R[J] in h.docStyle)
                          return R[J];
                      return R[0];
                    }
                    static create(R, J, yt) {
                      const Tt = window.document.createElement(R);
                      return J !== void 0 && (Tt.className = J), yt && yt.appendChild(Tt), Tt;
                    }
                    static createNS(R, J) {
                      return window.document.createElementNS(R, J);
                    }
                    static disableDrag() {
                      h.docStyle && h.selectProp && (h.userSelect = h.docStyle[h.selectProp], h.docStyle[h.selectProp] = "none");
                    }
                    static enableDrag() {
                      h.docStyle && h.selectProp && (h.docStyle[h.selectProp] = h.userSelect);
                    }
                    static setTransform(R, J) {
                      R.style[h.transformProp] = J;
                    }
                    static addEventListener(R, J, yt, Tt = {}) {
                      "passive" in Tt ? R.addEventListener(J, yt, Tt) : R.addEventListener(J, yt, Tt.capture);
                    }
                    static removeEventListener(R, J, yt, Tt = {}) {
                      "passive" in Tt ? R.removeEventListener(J, yt, Tt) : R.removeEventListener(J, yt, Tt.capture);
                    }
                    // Suppress the next click, but only if it's immediate.
                    static suppressClickInternal(R) {
                      R.preventDefault(), R.stopPropagation(), window.removeEventListener("click", h.suppressClickInternal, !0);
                    }
                    static suppressClick() {
                      window.addEventListener("click", h.suppressClickInternal, !0), window.setTimeout(() => {
                        window.removeEventListener("click", h.suppressClickInternal, !0);
                      }, 0);
                    }
                    static getScale(R) {
                      const J = R.getBoundingClientRect();
                      return {
                        x: J.width / R.offsetWidth || 1,
                        y: J.height / R.offsetHeight || 1,
                        boundingClientRect: J
                      };
                    }
                    static getPoint(R, J, yt) {
                      const Tt = J.boundingClientRect;
                      return new s.P(
                        // rect.left/top values are in page scale (like clientX/Y),
                        // whereas clientLeft/Top (border width) values are the original values (before CSS scale applies).
                        (yt.clientX - Tt.left) / J.x - R.clientLeft,
                        (yt.clientY - Tt.top) / J.y - R.clientTop
                      );
                    }
                    static mousePos(R, J) {
                      const yt = h.getScale(R);
                      return h.getPoint(R, yt, J);
                    }
                    static touchPos(R, J) {
                      const yt = [], Tt = h.getScale(R);
                      for (let Nt = 0; Nt < J.length; Nt++)
                        yt.push(h.getPoint(R, Tt, J[Nt]));
                      return yt;
                    }
                    static mouseButton(R) {
                      return R.button;
                    }
                    static remove(R) {
                      R.parentNode && R.parentNode.removeChild(R);
                    }
                  }
                  h.docStyle = typeof window < "u" && window.document && window.document.documentElement.style, h.selectProp = h.testProp(["userSelect", "MozUserSelect", "WebkitUserSelect", "msUserSelect"]), h.transformProp = h.testProp(["transform", "WebkitTransform"]);
                  const E = {
                    supported: !1,
                    testSupport: V
                  };
                  let w, z = !1, O, B = !1;
                  typeof document < "u" && (O = document.createElement("img"), O.onload = () => {
                    w && U(w), w = null, B = !0;
                  }, O.onerror = () => {
                    z = !0, w = null;
                  }, O.src = "data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=");
                  function V(Ot) {
                    z || !O || (B ? U(Ot) : w = Ot);
                  }
                  function U(Ot) {
                    const R = Ot.createTexture();
                    Ot.bindTexture(Ot.TEXTURE_2D, R);
                    try {
                      if (Ot.texImage2D(Ot.TEXTURE_2D, 0, Ot.RGBA, Ot.RGBA, Ot.UNSIGNED_BYTE, O), Ot.isContextLost())
                        return;
                      E.supported = !0;
                    } catch {
                    }
                    Ot.deleteTexture(R), z = !0;
                  }
                  var H;
                  (function(Ot) {
                    let R, J, yt, Tt;
                    Ot.resetRequestQueue = () => {
                      R = [], J = 0, yt = 0, Tt = {};
                    }, Ot.addThrottleControl = (br) => {
                      const Ar = yt++;
                      return Tt[Ar] = br, Ar;
                    }, Ot.removeThrottleControl = (br) => {
                      delete Tt[br], je();
                    };
                    const Nt = () => {
                      for (const br of Object.keys(Tt))
                        if (Tt[br]())
                          return !0;
                      return !1;
                    };
                    Ot.getImage = (br, Ar, qr = !0) => new Promise((vn, bn) => {
                      E.supported && (br.headers || (br.headers = {}), br.headers.accept = "image/webp,*/*"), s.e(br, { type: "image" });
                      const Rn = {
                        abortController: Ar,
                        requestParameters: br,
                        supportImageRefresh: qr,
                        state: "queued",
                        onError: (Gn) => {
                          bn(Gn);
                        },
                        onSuccess: (Gn) => {
                          vn(Gn);
                        }
                      };
                      R.push(Rn), je();
                    });
                    const be = (br) => typeof createImageBitmap == "function" ? s.d(br) : s.f(br), Re = (br) => s._(this, void 0, void 0, function* () {
                      br.state = "running";
                      const { requestParameters: Ar, supportImageRefresh: qr, onError: vn, onSuccess: bn, abortController: Rn } = br, Gn = qr === !1 && !s.i(self) && !s.g(Ar.url) && (!Ar.headers || Object.keys(Ar.headers).reduce((oi, Xn) => oi && Xn === "accept", !0));
                      J++;
                      const ii = Gn ? pr(Ar, Rn) : s.m(Ar, Rn);
                      try {
                        const oi = yield ii;
                        if (delete br.abortController, br.state = "completed", oi.data instanceof HTMLImageElement || s.b(oi.data))
                          bn(oi);
                        else if (oi.data) {
                          const Xn = yield be(oi.data);
                          bn({ data: Xn, cacheControl: oi.cacheControl, expires: oi.expires });
                        }
                      } catch (oi) {
                        delete br.abortController, vn(oi);
                      } finally {
                        J--, je();
                      }
                    }), je = () => {
                      const br = Nt() ? s.a.MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME : s.a.MAX_PARALLEL_IMAGE_REQUESTS;
                      for (let Ar = J; Ar < br && R.length > 0; Ar++) {
                        const qr = R.shift();
                        if (qr.abortController.signal.aborted) {
                          Ar--;
                          continue;
                        }
                        Re(qr);
                      }
                    }, pr = (br, Ar) => new Promise((qr, vn) => {
                      const bn = new Image(), Rn = br.url, Gn = br.credentials;
                      Gn && Gn === "include" ? bn.crossOrigin = "use-credentials" : (Gn && Gn === "same-origin" || !s.s(Rn)) && (bn.crossOrigin = "anonymous"), Ar.signal.addEventListener("abort", () => {
                        bn.src = "", vn(s.c());
                      }), bn.fetchPriority = "high", bn.onload = () => {
                        bn.onerror = bn.onload = null, qr({ data: bn });
                      }, bn.onerror = () => {
                        bn.onerror = bn.onload = null, !Ar.signal.aborted && vn(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."));
                      }, bn.src = Rn;
                    });
                  })(H || (H = {})), H.resetRequestQueue();
                  class F {
                    constructor(R) {
                      this._transformRequestFn = R;
                    }
                    transformRequest(R, J) {
                      return this._transformRequestFn ? this._transformRequestFn(R, J) || { url: R } : { url: R };
                    }
                    setTransformRequest(R) {
                      this._transformRequestFn = R;
                    }
                  }
                  function G() {
                    var Ot = new s.A(4);
                    return s.A != Float32Array && (Ot[1] = 0, Ot[2] = 0), Ot[0] = 1, Ot[3] = 1, Ot;
                  }
                  function q(Ot, R, J) {
                    var yt = R[0], Tt = R[1], Nt = R[2], be = R[3], Re = Math.sin(J), je = Math.cos(J);
                    return Ot[0] = yt * je + Nt * Re, Ot[1] = Tt * je + be * Re, Ot[2] = yt * -Re + Nt * je, Ot[3] = Tt * -Re + be * je, Ot;
                  }
                  function rt() {
                    var Ot = new s.A(9);
                    return s.A != Float32Array && (Ot[1] = 0, Ot[2] = 0, Ot[3] = 0, Ot[5] = 0, Ot[6] = 0, Ot[7] = 0), Ot[0] = 1, Ot[4] = 1, Ot[8] = 1, Ot;
                  }
                  function st(Ot, R) {
                    var J = Math.sin(R), yt = Math.cos(R);
                    return Ot[0] = yt, Ot[1] = J, Ot[2] = 0, Ot[3] = -J, Ot[4] = yt, Ot[5] = 0, Ot[6] = 0, Ot[7] = 0, Ot[8] = 1, Ot;
                  }
                  function vt() {
                    var Ot = new s.A(3);
                    return s.A != Float32Array && (Ot[0] = 0, Ot[1] = 0, Ot[2] = 0), Ot;
                  }
                  function ht(Ot) {
                    var R = new s.A(3);
                    return R[0] = Ot[0], R[1] = Ot[1], R[2] = Ot[2], R;
                  }
                  function et(Ot, R, J) {
                    return Ot[0] = R[0] + J[0], Ot[1] = R[1] + J[1], Ot[2] = R[2] + J[2], Ot;
                  }
                  function Q(Ot, R, J) {
                    return Ot[0] = R[0] - J[0], Ot[1] = R[1] - J[1], Ot[2] = R[2] - J[2], Ot;
                  }
                  function j(Ot, R, J) {
                    return Ot[0] = R[0] * J, Ot[1] = R[1] * J, Ot[2] = R[2] * J, Ot;
                  }
                  function at(Ot, R) {
                    var J = R[0], yt = R[1], Tt = R[2], Nt = J * J + yt * yt + Tt * Tt;
                    return Nt > 0 && (Nt = 1 / Math.sqrt(Nt)), Ot[0] = R[0] * Nt, Ot[1] = R[1] * Nt, Ot[2] = R[2] * Nt, Ot;
                  }
                  function ut(Ot, R) {
                    return Ot[0] * R[0] + Ot[1] * R[1] + Ot[2] * R[2];
                  }
                  function nt(Ot, R, J) {
                    var yt = R[0], Tt = R[1], Nt = R[2], be = J[0], Re = J[1], je = J[2];
                    return Ot[0] = Tt * je - Nt * Re, Ot[1] = Nt * be - yt * je, Ot[2] = yt * Re - Tt * be, Ot;
                  }
                  function X(Ot, R, J) {
                    var yt = R[0], Tt = R[1], Nt = R[2];
                    return Ot[0] = yt * J[0] + Tt * J[3] + Nt * J[6], Ot[1] = yt * J[1] + Tt * J[4] + Nt * J[7], Ot[2] = yt * J[2] + Tt * J[5] + Nt * J[8], Ot;
                  }
                  var ct = Q;
                  (function() {
                    var Ot = vt();
                    return function(R, J, yt, Tt, Nt, be) {
                      var Re, je;
                      for (J || (J = 3), yt || (yt = 0), Tt ? je = Math.min(Tt * J + yt, R.length) : je = R.length, Re = yt; Re < je; Re += J)
                        Ot[0] = R[Re], Ot[1] = R[Re + 1], Ot[2] = R[Re + 2], Nt(Ot, Ot, be), R[Re] = Ot[0], R[Re + 1] = Ot[1], R[Re + 2] = Ot[2];
                      return R;
                    };
                  })();
                  function lt() {
                    var Ot = new s.A(2);
                    return s.A != Float32Array && (Ot[0] = 0, Ot[1] = 0), Ot;
                  }
                  function pt(Ot) {
                    var R = Ot[0], J = Ot[1];
                    return R * R + J * J;
                  }
                  function wt(Ot, R, J) {
                    var yt = R[0], Tt = R[1];
                    return Ot[0] = J[0] * yt + J[4] * Tt + J[12], Ot[1] = J[1] * yt + J[5] * Tt + J[13], Ot;
                  }
                  var Et = pt;
                  (function() {
                    var Ot = lt();
                    return function(R, J, yt, Tt, Nt, be) {
                      var Re, je;
                      for (J || (J = 2), yt || (yt = 0), Tt ? je = Math.min(Tt * J + yt, R.length) : je = R.length, Re = yt; Re < je; Re += J)
                        Ot[0] = R[Re], Ot[1] = R[Re + 1], Nt(Ot, Ot, be), R[Re] = Ot[0], R[Re + 1] = Ot[1];
                      return R;
                    };
                  })();
                  function Ct(Ot) {
                    const R = [];
                    if (typeof Ot == "string")
                      R.push({ id: "default", url: Ot });
                    else if (Ot && Ot.length > 0) {
                      const J = [];
                      for (const { id: yt, url: Tt } of Ot) {
                        const Nt = `${yt}${Tt}`;
                        J.indexOf(Nt) === -1 && (J.push(Nt), R.push({ id: yt, url: Tt }));
                      }
                    }
                    return R;
                  }
                  function Gt(Ot, R, J) {
                    const yt = Ot.split("?");
                    return yt[0] += `${R}${J}`, yt.join("?");
                  }
                  function Jt(Ot, R, J, yt) {
                    return s._(this, void 0, void 0, function* () {
                      const Tt = Ct(Ot), Nt = J > 1 ? "@2x" : "", be = {}, Re = {};
                      for (const { id: je, url: pr } of Tt) {
                        const br = R.transformRequest(
                          Gt(pr, Nt, ".json"),
                          "SpriteJSON"
                          /* ResourceType.SpriteJSON */
                        );
                        be[je] = s.h(br, yt);
                        const Ar = R.transformRequest(
                          Gt(pr, Nt, ".png"),
                          "SpriteImage"
                          /* ResourceType.SpriteImage */
                        );
                        Re[je] = H.getImage(Ar, yt);
                      }
                      return yield Promise.all([...Object.values(be), ...Object.values(Re)]), Qt(be, Re);
                    });
                  }
                  function Qt(Ot, R) {
                    return s._(this, void 0, void 0, function* () {
                      const J = {};
                      for (const yt in Ot) {
                        J[yt] = {};
                        const Tt = d.getImageCanvasContext((yield R[yt]).data), Nt = (yield Ot[yt]).data;
                        for (const be in Nt) {
                          const { width: Re, height: je, x: pr, y: br, sdf: Ar, pixelRatio: qr, stretchX: vn, stretchY: bn, content: Rn, textFitWidth: Gn, textFitHeight: ii } = Nt[be], oi = { width: Re, height: je, x: pr, y: br, context: Tt };
                          J[yt][be] = { data: null, pixelRatio: qr, sdf: Ar, stretchX: vn, stretchY: bn, content: Rn, textFitWidth: Gn, textFitHeight: ii, spriteData: oi };
                        }
                      }
                      return J;
                    });
                  }
                  class Vt {
                    constructor(R, J, yt, Tt) {
                      this.context = R, this.format = yt, this.texture = R.gl.createTexture(), this.update(J, Tt);
                    }
                    update(R, J, yt) {
                      const { width: Tt, height: Nt } = R, be = (!this.size || this.size[0] !== Tt || this.size[1] !== Nt) && !yt, { context: Re } = this, { gl: je } = Re;
                      if (this.useMipmap = !!(J && J.useMipmap), je.bindTexture(je.TEXTURE_2D, this.texture), Re.pixelStoreUnpackFlipY.set(!1), Re.pixelStoreUnpack.set(1), Re.pixelStoreUnpackPremultiplyAlpha.set(this.format === je.RGBA && (!J || J.premultiply !== !1)), be)
                        this.size = [Tt, Nt], R instanceof HTMLImageElement || R instanceof HTMLCanvasElement || R instanceof HTMLVideoElement || R instanceof ImageData || s.b(R) ? je.texImage2D(je.TEXTURE_2D, 0, this.format, this.format, je.UNSIGNED_BYTE, R) : je.texImage2D(je.TEXTURE_2D, 0, this.format, Tt, Nt, 0, this.format, je.UNSIGNED_BYTE, R.data);
                      else {
                        const { x: pr, y: br } = yt || { x: 0, y: 0 };
                        R instanceof HTMLImageElement || R instanceof HTMLCanvasElement || R instanceof HTMLVideoElement || R instanceof ImageData || s.b(R) ? je.texSubImage2D(je.TEXTURE_2D, 0, pr, br, je.RGBA, je.UNSIGNED_BYTE, R) : je.texSubImage2D(je.TEXTURE_2D, 0, pr, br, Tt, Nt, je.RGBA, je.UNSIGNED_BYTE, R.data);
                      }
                      this.useMipmap && this.isSizePowerOfTwo() && je.generateMipmap(je.TEXTURE_2D);
                    }
                    bind(R, J, yt) {
                      const { context: Tt } = this, { gl: Nt } = Tt;
                      Nt.bindTexture(Nt.TEXTURE_2D, this.texture), yt === Nt.LINEAR_MIPMAP_NEAREST && !this.isSizePowerOfTwo() && (yt = Nt.LINEAR), R !== this.filter && (Nt.texParameteri(Nt.TEXTURE_2D, Nt.TEXTURE_MAG_FILTER, R), Nt.texParameteri(Nt.TEXTURE_2D, Nt.TEXTURE_MIN_FILTER, yt || R), this.filter = R), J !== this.wrap && (Nt.texParameteri(Nt.TEXTURE_2D, Nt.TEXTURE_WRAP_S, J), Nt.texParameteri(Nt.TEXTURE_2D, Nt.TEXTURE_WRAP_T, J), this.wrap = J);
                    }
                    isSizePowerOfTwo() {
                      return this.size[0] === this.size[1] && Math.log(this.size[0]) / Math.LN2 % 1 === 0;
                    }
                    destroy() {
                      const { gl: R } = this.context;
                      R.deleteTexture(this.texture), this.texture = null;
                    }
                  }
                  function zt(Ot) {
                    const { userImage: R } = Ot;
                    return R && R.render && R.render() ? (Ot.data.replace(new Uint8Array(R.data.buffer)), !0) : !1;
                  }
                  const Rt = 1;
                  class Wt extends s.E {
                    constructor() {
                      super(), this.images = {}, this.updatedImages = {}, this.callbackDispatchedThisFrame = {}, this.loaded = !1, this.requestors = [], this.patterns = {}, this.atlasImage = new s.R({ width: 1, height: 1 }), this.dirty = !0;
                    }
                    isLoaded() {
                      return this.loaded;
                    }
                    setLoaded(R) {
                      if (this.loaded !== R && (this.loaded = R, R)) {
                        for (const { ids: J, promiseResolve: yt } of this.requestors)
                          yt(this._getImagesForIds(J));
                        this.requestors = [];
                      }
                    }
                    getImage(R) {
                      const J = this.images[R];
                      if (J && !J.data && J.spriteData) {
                        const yt = J.spriteData;
                        J.data = new s.R({
                          width: yt.width,
                          height: yt.height
                        }, yt.context.getImageData(yt.x, yt.y, yt.width, yt.height).data), J.spriteData = null;
                      }
                      return J;
                    }
                    addImage(R, J) {
                      if (this.images[R])
                        throw new Error(`Image id ${R} already exist, use updateImage instead`);
                      this._validate(R, J) && (this.images[R] = J);
                    }
                    _validate(R, J) {
                      let yt = !0;
                      const Tt = J.data || J.spriteData;
                      return this._validateStretch(J.stretchX, Tt && Tt.width) || (this.fire(new s.j(new Error(`Image "${R}" has invalid "stretchX" value`))), yt = !1), this._validateStretch(J.stretchY, Tt && Tt.height) || (this.fire(new s.j(new Error(`Image "${R}" has invalid "stretchY" value`))), yt = !1), this._validateContent(J.content, J) || (this.fire(new s.j(new Error(`Image "${R}" has invalid "content" value`))), yt = !1), yt;
                    }
                    _validateStretch(R, J) {
                      if (!R)
                        return !0;
                      let yt = 0;
                      for (const Tt of R) {
                        if (Tt[0] < yt || Tt[1] < Tt[0] || J < Tt[1])
                          return !1;
                        yt = Tt[1];
                      }
                      return !0;
                    }
                    _validateContent(R, J) {
                      if (!R)
                        return !0;
                      if (R.length !== 4)
                        return !1;
                      const yt = J.spriteData, Tt = yt && yt.width || J.data.width, Nt = yt && yt.height || J.data.height;
                      return !(R[0] < 0 || Tt < R[0] || R[1] < 0 || Nt < R[1] || R[2] < 0 || Tt < R[2] || R[3] < 0 || Nt < R[3] || R[2] < R[0] || R[3] < R[1]);
                    }
                    updateImage(R, J, yt = !0) {
                      const Tt = this.getImage(R);
                      if (yt && (Tt.data.width !== J.data.width || Tt.data.height !== J.data.height))
                        throw new Error(`size mismatch between old image (${Tt.data.width}x${Tt.data.height}) and new image (${J.data.width}x${J.data.height}).`);
                      J.version = Tt.version + 1, this.images[R] = J, this.updatedImages[R] = !0;
                    }
                    removeImage(R) {
                      const J = this.images[R];
                      delete this.images[R], delete this.patterns[R], J.userImage && J.userImage.onRemove && J.userImage.onRemove();
                    }
                    listImages() {
                      return Object.keys(this.images);
                    }
                    getImages(R) {
                      return new Promise((J, yt) => {
                        let Tt = !0;
                        if (!this.isLoaded())
                          for (const Nt of R)
                            this.images[Nt] || (Tt = !1);
                        this.isLoaded() || Tt ? J(this._getImagesForIds(R)) : this.requestors.push({ ids: R, promiseResolve: J });
                      });
                    }
                    _getImagesForIds(R) {
                      const J = {};
                      for (const yt of R) {
                        let Tt = this.getImage(yt);
                        Tt || (this.fire(new s.k("styleimagemissing", { id: yt })), Tt = this.getImage(yt)), Tt ? J[yt] = {
                          data: Tt.data.clone(),
                          pixelRatio: Tt.pixelRatio,
                          sdf: Tt.sdf,
                          version: Tt.version,
                          stretchX: Tt.stretchX,
                          stretchY: Tt.stretchY,
                          content: Tt.content,
                          textFitWidth: Tt.textFitWidth,
                          textFitHeight: Tt.textFitHeight,
                          hasRenderCallback: !!(Tt.userImage && Tt.userImage.render)
                        } : s.w(`Image "${yt}" could not be loaded. Please make sure you have added the image with map.addImage() or a "sprite" property in your style. You can provide missing images by listening for the "styleimagemissing" map event.`);
                      }
                      return J;
                    }
                    // Pattern stuff
                    getPixelSize() {
                      const { width: R, height: J } = this.atlasImage;
                      return { width: R, height: J };
                    }
                    getPattern(R) {
                      const J = this.patterns[R], yt = this.getImage(R);
                      if (!yt)
                        return null;
                      if (J && J.position.version === yt.version)
                        return J.position;
                      if (J)
                        J.position.version = yt.version;
                      else {
                        const Tt = yt.data.width + Rt * 2, Nt = yt.data.height + Rt * 2, be = { w: Tt, h: Nt, x: 0, y: 0 }, Re = new s.I(be, yt);
                        this.patterns[R] = { bin: be, position: Re };
                      }
                      return this._updatePatternAtlas(), this.patterns[R].position;
                    }
                    bind(R) {
                      const J = R.gl;
                      this.atlasTexture ? this.dirty && (this.atlasTexture.update(this.atlasImage), this.dirty = !1) : this.atlasTexture = new Vt(R, this.atlasImage, J.RGBA), this.atlasTexture.bind(J.LINEAR, J.CLAMP_TO_EDGE);
                    }
                    _updatePatternAtlas() {
                      const R = [];
                      for (const Nt in this.patterns)
                        R.push(this.patterns[Nt].bin);
                      const { w: J, h: yt } = s.p(R), Tt = this.atlasImage;
                      Tt.resize({ width: J || 1, height: yt || 1 });
                      for (const Nt in this.patterns) {
                        const { bin: be } = this.patterns[Nt], Re = be.x + Rt, je = be.y + Rt, pr = this.getImage(Nt).data, br = pr.width, Ar = pr.height;
                        s.R.copy(pr, Tt, { x: 0, y: 0 }, { x: Re, y: je }, { width: br, height: Ar }), s.R.copy(pr, Tt, { x: 0, y: Ar - 1 }, { x: Re, y: je - 1 }, { width: br, height: 1 }), s.R.copy(pr, Tt, { x: 0, y: 0 }, { x: Re, y: je + Ar }, { width: br, height: 1 }), s.R.copy(pr, Tt, { x: br - 1, y: 0 }, { x: Re - 1, y: je }, { width: 1, height: Ar }), s.R.copy(pr, Tt, { x: 0, y: 0 }, { x: Re + br, y: je }, { width: 1, height: Ar });
                      }
                      this.dirty = !0;
                    }
                    beginFrame() {
                      this.callbackDispatchedThisFrame = {};
                    }
                    dispatchRenderCallbacks(R) {
                      for (const J of R) {
                        if (this.callbackDispatchedThisFrame[J])
                          continue;
                        this.callbackDispatchedThisFrame[J] = !0;
                        const yt = this.getImage(J);
                        yt || s.w(`Image with ID: "${J}" was not found`), zt(yt) && this.updateImage(J, yt);
                      }
                    }
                  }
                  function kt(Ot, R, J, yt) {
                    return s._(this, void 0, void 0, function* () {
                      const Tt = R * 256, Nt = Tt + 255, be = yt.transformRequest(
                        J.replace("{fontstack}", Ot).replace("{range}", `${Tt}-${Nt}`),
                        "Glyphs"
                        /* ResourceType.Glyphs */
                      ), Re = yield s.l(be, new AbortController());
                      if (!Re || !Re.data)
                        throw new Error(`Could not load glyph range. range: ${R}, ${Tt}-${Nt}`);
                      const je = {};
                      for (const pr of s.n(Re.data))
                        je[pr.id] = pr;
                      return je;
                    });
                  }
                  const re = 1e20;
                  class ge {
                    constructor({
                      fontSize: R = 24,
                      buffer: J = 3,
                      radius: yt = 8,
                      cutoff: Tt = 0.25,
                      fontFamily: Nt = "sans-serif",
                      fontWeight: be = "normal",
                      fontStyle: Re = "normal"
                    } = {}) {
                      this.buffer = J, this.cutoff = Tt, this.radius = yt;
                      const je = this.size = R + J * 4, pr = this._createCanvas(je), br = this.ctx = pr.getContext("2d", { willReadFrequently: !0 });
                      br.font = `${Re} ${be} ${R}px ${Nt}`, br.textBaseline = "alphabetic", br.textAlign = "left", br.fillStyle = "black", this.gridOuter = new Float64Array(je * je), this.gridInner = new Float64Array(je * je), this.f = new Float64Array(je), this.z = new Float64Array(je + 1), this.v = new Uint16Array(je);
                    }
                    _createCanvas(R) {
                      const J = document.createElement("canvas");
                      return J.width = J.height = R, J;
                    }
                    draw(R) {
                      const {
                        width: J,
                        actualBoundingBoxAscent: yt,
                        actualBoundingBoxDescent: Tt,
                        actualBoundingBoxLeft: Nt,
                        actualBoundingBoxRight: be
                      } = this.ctx.measureText(R), Re = Math.ceil(yt), je = 0, pr = Math.max(0, Math.min(this.size - this.buffer, Math.ceil(be - Nt))), br = Math.min(this.size - this.buffer, Re + Math.ceil(Tt)), Ar = pr + 2 * this.buffer, qr = br + 2 * this.buffer, vn = Math.max(Ar * qr, 0), bn = new Uint8ClampedArray(vn), Rn = { data: bn, width: Ar, height: qr, glyphWidth: pr, glyphHeight: br, glyphTop: Re, glyphLeft: je, glyphAdvance: J };
                      if (pr === 0 || br === 0) return Rn;
                      const { ctx: Gn, buffer: ii, gridInner: oi, gridOuter: Xn } = this;
                      Gn.clearRect(ii, ii, pr, br), Gn.fillText(R, ii, ii + Re);
                      const Ri = Gn.getImageData(ii, ii, pr, br);
                      Xn.fill(re, 0, vn), oi.fill(0, 0, vn);
                      for (let Ci = 0; Ci < br; Ci++)
                        for (let Oi = 0; Oi < pr; Oi++) {
                          const pa = Ri.data[4 * (Ci * pr + Oi) + 3] / 255;
                          if (pa === 0) continue;
                          const Sa = (Ci + ii) * Ar + Oi + ii;
                          if (pa === 1)
                            Xn[Sa] = 0, oi[Sa] = re;
                          else {
                            const ao = 0.5 - pa;
                            Xn[Sa] = ao > 0 ? ao * ao : 0, oi[Sa] = ao < 0 ? ao * ao : 0;
                          }
                        }
                      _e(Xn, 0, 0, Ar, qr, Ar, this.f, this.v, this.z), _e(oi, ii, ii, pr, br, Ar, this.f, this.v, this.z);
                      for (let Ci = 0; Ci < vn; Ci++) {
                        const Oi = Math.sqrt(Xn[Ci]) - Math.sqrt(oi[Ci]);
                        bn[Ci] = Math.round(255 - 255 * (Oi / this.radius + this.cutoff));
                      }
                      return Rn;
                    }
                  }
                  function _e(Ot, R, J, yt, Tt, Nt, be, Re, je) {
                    for (let pr = R; pr < R + yt; pr++) ce(Ot, J * Nt + pr, Nt, Tt, be, Re, je);
                    for (let pr = J; pr < J + Tt; pr++) ce(Ot, pr * Nt + R, 1, yt, be, Re, je);
                  }
                  function ce(Ot, R, J, yt, Tt, Nt, be) {
                    Nt[0] = 0, be[0] = -re, be[1] = re, Tt[0] = Ot[R];
                    for (let Re = 1, je = 0, pr = 0; Re < yt; Re++) {
                      Tt[Re] = Ot[R + Re * J];
                      const br = Re * Re;
                      do {
                        const Ar = Nt[je];
                        pr = (Tt[Re] - Tt[Ar] + br - Ar * Ar) / (Re - Ar) / 2;
                      } while (pr <= be[je] && --je > -1);
                      je++, Nt[je] = Re, be[je] = pr, be[je + 1] = re;
                    }
                    for (let Re = 0, je = 0; Re < yt; Re++) {
                      for (; be[je + 1] < Re; ) je++;
                      const pr = Nt[je], br = Re - pr;
                      Ot[R + Re * J] = Tt[pr] + br * br;
                    }
                  }
                  class ae {
                    constructor(R, J) {
                      this.requestManager = R, this.localIdeographFontFamily = J, this.entries = {};
                    }
                    setURL(R) {
                      this.url = R;
                    }
                    getGlyphs(R) {
                      return s._(this, void 0, void 0, function* () {
                        const J = [];
                        for (const Nt in R)
                          for (const be of R[Nt])
                            J.push(this._getAndCacheGlyphsPromise(Nt, be));
                        const yt = yield Promise.all(J), Tt = {};
                        for (const { stack: Nt, id: be, glyph: Re } of yt)
                          Tt[Nt] || (Tt[Nt] = {}), Tt[Nt][be] = Re && {
                            id: Re.id,
                            bitmap: Re.bitmap.clone(),
                            metrics: Re.metrics
                          };
                        return Tt;
                      });
                    }
                    _getAndCacheGlyphsPromise(R, J) {
                      return s._(this, void 0, void 0, function* () {
                        let yt = this.entries[R];
                        yt || (yt = this.entries[R] = {
                          glyphs: {},
                          requests: {},
                          ranges: {}
                        });
                        let Tt = yt.glyphs[J];
                        if (Tt !== void 0)
                          return { stack: R, id: J, glyph: Tt };
                        if (Tt = this._tinySDF(yt, R, J), Tt)
                          return yt.glyphs[J] = Tt, { stack: R, id: J, glyph: Tt };
                        const Nt = Math.floor(J / 256);
                        if (Nt * 256 > 65535)
                          throw new Error("glyphs > 65535 not supported");
                        if (yt.ranges[Nt])
                          return { stack: R, id: J, glyph: Tt };
                        if (!this.url)
                          throw new Error("glyphsUrl is not set");
                        if (!yt.requests[Nt]) {
                          const Re = ae.loadGlyphRange(R, Nt, this.url, this.requestManager);
                          yt.requests[Nt] = Re;
                        }
                        const be = yield yt.requests[Nt];
                        for (const Re in be)
                          this._doesCharSupportLocalGlyph(+Re) || (yt.glyphs[+Re] = be[+Re]);
                        return yt.ranges[Nt] = !0, { stack: R, id: J, glyph: be[J] || null };
                      });
                    }
                    _doesCharSupportLocalGlyph(R) {
                      return !!this.localIdeographFontFamily && (s.u["CJK Unified Ideographs"](R) || s.u["Hangul Syllables"](R) || s.u.Hiragana(R) || s.u.Katakana(R));
                    }
                    _tinySDF(R, J, yt) {
                      const Tt = this.localIdeographFontFamily;
                      if (!Tt || !this._doesCharSupportLocalGlyph(yt))
                        return;
                      const Nt = 2;
                      let be = R.tinySDF;
                      if (!be) {
                        let br = "400";
                        /bold/i.test(J) ? br = "900" : /medium/i.test(J) ? br = "500" : /light/i.test(J) && (br = "200"), be = R.tinySDF = new ae.TinySDF({
                          fontSize: 24 * Nt,
                          buffer: 3 * Nt,
                          radius: 8 * Nt,
                          cutoff: 0.25,
                          fontFamily: Tt,
                          fontWeight: br
                        });
                      }
                      const Re = be.draw(String.fromCharCode(yt));
                      return {
                        id: yt,
                        bitmap: new s.o({ width: Re.width || 30 * Nt, height: Re.height || 30 * Nt }, Re.data),
                        metrics: {
                          width: Re.glyphWidth / Nt || 24,
                          height: Re.glyphHeight / Nt || 24,
                          left: Re.glyphLeft / Nt + 0.5 || 0,
                          top: Re.glyphTop / Nt - 27.5 || -8,
                          advance: Re.glyphAdvance / Nt || 24,
                          isDoubleResolution: !0
                        }
                      };
                    }
                  }
                  ae.loadGlyphRange = kt, ae.TinySDF = ge;
                  class Se {
                    constructor() {
                      this.specification = s.v.light.position;
                    }
                    possiblyEvaluate(R, J) {
                      return s.y(R.expression.evaluate(J));
                    }
                    interpolate(R, J, yt) {
                      return {
                        x: s.z.number(R.x, J.x, yt),
                        y: s.z.number(R.y, J.y, yt),
                        z: s.z.number(R.z, J.z, yt)
                      };
                    }
                  }
                  const ze = "-transition";
                  let Ne;
                  class Ve extends s.E {
                    constructor(R) {
                      super(), Ne = Ne || new s.q({
                        anchor: new s.D(s.v.light.anchor),
                        position: new Se(),
                        color: new s.D(s.v.light.color),
                        intensity: new s.D(s.v.light.intensity)
                      }), this._transitionable = new s.T(Ne), this.setLight(R), this._transitioning = this._transitionable.untransitioned();
                    }
                    getLight() {
                      return this._transitionable.serialize();
                    }
                    setLight(R, J = {}) {
                      if (!this._validate(s.r, R, J))
                        for (const yt in R) {
                          const Tt = R[yt];
                          yt.endsWith(ze) ? this._transitionable.setTransition(yt.slice(0, -ze.length), Tt) : this._transitionable.setValue(yt, Tt);
                        }
                    }
                    updateTransitions(R) {
                      this._transitioning = this._transitionable.transitioned(R, this._transitioning);
                    }
                    hasTransition() {
                      return this._transitioning.hasTransition();
                    }
                    recalculate(R) {
                      this.properties = this._transitioning.possiblyEvaluate(R);
                    }
                    _validate(R, J, yt) {
                      return yt && yt.validate === !1 ? !1 : s.t(this, R.call(s.x, {
                        value: J,
                        // Workaround for https://github.com/mapbox/mapbox-gl-js/issues/2407
                        style: { glyphs: !0, sprite: !0 },
                        styleSpec: s.v
                      }));
                    }
                  }
                  const Oe = new s.q({
                    "sky-color": new s.D(s.v.sky["sky-color"]),
                    "horizon-color": new s.D(s.v.sky["horizon-color"]),
                    "fog-color": new s.D(s.v.sky["fog-color"]),
                    "fog-ground-blend": new s.D(s.v.sky["fog-ground-blend"]),
                    "horizon-fog-blend": new s.D(s.v.sky["horizon-fog-blend"]),
                    "sky-horizon-blend": new s.D(s.v.sky["sky-horizon-blend"]),
                    "atmosphere-blend": new s.D(s.v.sky["atmosphere-blend"])
                  }), ur = "-transition";
                  class ie extends s.E {
                    constructor(R) {
                      super(), this._transitionable = new s.T(Oe), this.setSky(R), this._transitioning = this._transitionable.untransitioned();
                    }
                    setSky(R, J = {}) {
                      if (!this._validate(s.B, R, J))
                        for (const yt in R) {
                          const Tt = R[yt];
                          yt.endsWith(ur) ? this._transitionable.setTransition(yt.slice(0, -ur.length), Tt) : this._transitionable.setValue(yt, Tt);
                        }
                    }
                    getSky() {
                      return this._transitionable.serialize();
                    }
                    updateTransitions(R) {
                      this._transitioning = this._transitionable.transitioned(R, this._transitioning);
                    }
                    hasTransition() {
                      return this._transitioning.hasTransition();
                    }
                    recalculate(R) {
                      this.properties = this._transitioning.possiblyEvaluate(R);
                    }
                    _validate(R, J, yt = {}) {
                      return (yt == null ? void 0 : yt.validate) === !1 ? !1 : s.t(this, R.call(s.x, s.e({
                        value: J,
                        // Workaround for https://github.com/mapbox/mapbox-gl-js/issues/2407
                        style: { glyphs: !0, sprite: !0 },
                        styleSpec: s.v
                      })));
                    }
                    /**
                     * Currently fog is a very simple implementation, and should only used
                     * to create an atmosphere near the horizon.
                     * But because the fog is drawn from the far-clipping-plane to
                     * map-center, and because the fog does nothing know about the horizon,
                     * this method does a fadeout in respect of pitch. So, when the horizon
                     * gets out of view, which is at about pitch 70, this methods calculates
                     * the corresponding opacity values. Below pitch 60 the fog is completely
                     * invisible.
                     */
                    calculateFogBlendOpacity(R) {
                      return R < 60 ? 0 : R < 70 ? (R - 60) / 10 : 1;
                    }
                  }
                  class $t {
                    constructor(R, J) {
                      this.width = R, this.height = J, this.nextRow = 0, this.data = new Uint8Array(this.width * this.height), this.dashEntry = {};
                    }
                    /**
                     * Get or create a dash line pattern.
                     *
                     * @param dasharray - the key (represented by numbers) to get the dash texture
                     * @param round - whether to add circle caps in between dash segments
                     * @returns position of dash texture in {@link DashEntry}
                     */
                    getDash(R, J) {
                      const yt = R.join(",") + String(J);
                      return this.dashEntry[yt] || (this.dashEntry[yt] = this.addDash(R, J)), this.dashEntry[yt];
                    }
                    getDashRanges(R, J, yt) {
                      const Tt = R.length % 2 === 1, Nt = [];
                      let be = Tt ? -R[R.length - 1] * yt : 0, Re = R[0] * yt, je = !0;
                      Nt.push({ left: be, right: Re, isDash: je, zeroLength: R[0] === 0 });
                      let pr = R[0];
                      for (let br = 1; br < R.length; br++) {
                        je = !je;
                        const Ar = R[br];
                        be = pr * yt, pr += Ar, Re = pr * yt, Nt.push({ left: be, right: Re, isDash: je, zeroLength: Ar === 0 });
                      }
                      return Nt;
                    }
                    addRoundDash(R, J, yt) {
                      const Tt = J / 2;
                      for (let Nt = -yt; Nt <= yt; Nt++) {
                        const be = this.nextRow + yt + Nt, Re = this.width * be;
                        let je = 0, pr = R[je];
                        for (let br = 0; br < this.width; br++) {
                          br / pr.right > 1 && (pr = R[++je]);
                          const Ar = Math.abs(br - pr.left), qr = Math.abs(br - pr.right), vn = Math.min(Ar, qr);
                          let bn;
                          const Rn = Nt / yt * (Tt + 1);
                          if (pr.isDash) {
                            const Gn = Tt - Math.abs(Rn);
                            bn = Math.sqrt(vn * vn + Gn * Gn);
                          } else
                            bn = Tt - Math.sqrt(vn * vn + Rn * Rn);
                          this.data[Re + br] = Math.max(0, Math.min(255, bn + 128));
                        }
                      }
                    }
                    addRegularDash(R) {
                      for (let Re = R.length - 1; Re >= 0; --Re) {
                        const je = R[Re], pr = R[Re + 1];
                        je.zeroLength ? R.splice(Re, 1) : pr && pr.isDash === je.isDash && (pr.left = je.left, R.splice(Re, 1));
                      }
                      const J = R[0], yt = R[R.length - 1];
                      J.isDash === yt.isDash && (J.left = yt.left - this.width, yt.right = J.right + this.width);
                      const Tt = this.width * this.nextRow;
                      let Nt = 0, be = R[Nt];
                      for (let Re = 0; Re < this.width; Re++) {
                        Re / be.right > 1 && (be = R[++Nt]);
                        const je = Math.abs(Re - be.left), pr = Math.abs(Re - be.right), br = Math.min(je, pr), Ar = be.isDash ? br : -br;
                        this.data[Tt + Re] = Math.max(0, Math.min(255, Ar + 128));
                      }
                    }
                    addDash(R, J) {
                      const yt = J ? 7 : 0, Tt = 2 * yt + 1;
                      if (this.nextRow + Tt > this.height)
                        return s.w("LineAtlas out of space"), null;
                      let Nt = 0;
                      for (let Re = 0; Re < R.length; Re++)
                        Nt += R[Re];
                      if (Nt !== 0) {
                        const Re = this.width / Nt, je = this.getDashRanges(R, this.width, Re);
                        J ? this.addRoundDash(je, Re, yt) : this.addRegularDash(je);
                      }
                      const be = {
                        y: (this.nextRow + yt + 0.5) / this.height,
                        height: 2 * yt / this.height,
                        width: Nt
                      };
                      return this.nextRow += Tt, this.dirty = !0, be;
                    }
                    bind(R) {
                      const J = R.gl;
                      this.texture ? (J.bindTexture(J.TEXTURE_2D, this.texture), this.dirty && (this.dirty = !1, J.texSubImage2D(J.TEXTURE_2D, 0, 0, 0, this.width, this.height, J.ALPHA, J.UNSIGNED_BYTE, this.data))) : (this.texture = J.createTexture(), J.bindTexture(J.TEXTURE_2D, this.texture), J.texParameteri(J.TEXTURE_2D, J.TEXTURE_WRAP_S, J.REPEAT), J.texParameteri(J.TEXTURE_2D, J.TEXTURE_WRAP_T, J.REPEAT), J.texParameteri(J.TEXTURE_2D, J.TEXTURE_MIN_FILTER, J.LINEAR), J.texParameteri(J.TEXTURE_2D, J.TEXTURE_MAG_FILTER, J.LINEAR), J.texImage2D(J.TEXTURE_2D, 0, J.ALPHA, this.width, this.height, 0, J.ALPHA, J.UNSIGNED_BYTE, this.data));
                    }
                  }
                  function jt() {
                    return new Worker(s.a.WORKER_URL);
                  }
                  const ee = "maplibre_preloaded_worker_pool";
                  class Bt {
                    constructor() {
                      this.active = {};
                    }
                    acquire(R) {
                      if (!this.workers)
                        for (this.workers = []; this.workers.length < Bt.workerCount; )
                          this.workers.push(jt());
                      return this.active[R] = !0, this.workers.slice();
                    }
                    release(R) {
                      delete this.active[R], this.numActive() === 0 && (this.workers.forEach((J) => {
                        J.terminate();
                      }), this.workers = null);
                    }
                    isPreloaded() {
                      return !!this.active[ee];
                    }
                    numActive() {
                      return Object.keys(this.active).length;
                    }
                  }
                  const Xt = Math.floor(d.hardwareConcurrency / 2);
                  Bt.workerCount = s.C(globalThis) ? Math.max(Math.min(Xt, 3), 1) : 1;
                  let Zt;
                  function ye() {
                    return Zt || (Zt = new Bt()), Zt;
                  }
                  function Mt() {
                    ye().acquire(ee);
                  }
                  function St() {
                    const Ot = Zt;
                    Ot && (Ot.isPreloaded() && Ot.numActive() === 1 ? (Ot.release(ee), Zt = null) : console.warn("Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()"));
                  }
                  class Lt {
                    constructor(R, J) {
                      this.workerPool = R, this.actors = [], this.currentActor = 0, this.id = J;
                      const yt = this.workerPool.acquire(J);
                      for (let Tt = 0; Tt < yt.length; Tt++) {
                        const Nt = yt[Tt], be = new s.F(Nt, J);
                        be.name = `Worker ${Tt}`, this.actors.push(be);
                      }
                      if (!this.actors.length)
                        throw new Error("No actors found");
                    }
                    /**
                     * Broadcast a message to all Workers.
                     */
                    broadcast(R, J) {
                      const yt = [];
                      for (const Tt of this.actors)
                        yt.push(Tt.sendAsync({ type: R, data: J }));
                      return Promise.all(yt);
                    }
                    /**
                     * Acquires an actor to dispatch messages to. The actors are distributed in round-robin fashion.
                     * @returns An actor object backed by a web worker for processing messages.
                     */
                    getActor() {
                      return this.currentActor = (this.currentActor + 1) % this.actors.length, this.actors[this.currentActor];
                    }
                    remove(R = !0) {
                      this.actors.forEach((J) => {
                        J.remove();
                      }), this.actors = [], R && this.workerPool.release(this.id);
                    }
                    registerMessageHandler(R, J) {
                      for (const yt of this.actors)
                        yt.registerMessageHandler(R, J);
                    }
                  }
                  let te;
                  function fe() {
                    return te || (te = new Lt(ye(), s.G), te.registerMessageHandler("GR", (Ot, R, J) => s.m(R, J))), te;
                  }
                  function Me(Ot, R) {
                    const J = s.H();
                    return s.J(J, J, [1, 1, 0]), s.K(J, J, [Ot.width * 0.5, Ot.height * 0.5, 1]), s.L(J, J, Ot.calculatePosMatrix(R.toUnwrapped()));
                  }
                  function ir(Ot, R, J) {
                    if (Ot)
                      for (const yt of Ot) {
                        const Tt = R[yt];
                        if (Tt && Tt.source === J && Tt.type === "fill-extrusion")
                          return !0;
                      }
                    else
                      for (const yt in R) {
                        const Tt = R[yt];
                        if (Tt.source === J && Tt.type === "fill-extrusion")
                          return !0;
                      }
                    return !1;
                  }
                  function mr(Ot, R, J, yt, Tt, Nt) {
                    const be = ir(Tt && Tt.layers, R, Ot.id), Re = Nt.maxPitchScaleFactor(), je = Ot.tilesIn(yt, Re, be);
                    je.sort(me);
                    const pr = [];
                    for (const Ar of je)
                      pr.push({
                        wrappedTileID: Ar.tileID.wrapped().key,
                        queryResults: Ar.tile.queryRenderedFeatures(R, J, Ot._state, Ar.queryGeometry, Ar.cameraQueryGeometry, Ar.scale, Tt, Nt, Re, Me(Ot.transform, Ar.tileID))
                      });
                    const br = Le(pr);
                    for (const Ar in br)
                      br[Ar].forEach((qr) => {
                        const vn = qr.feature, bn = Ot.getFeatureState(vn.layer["source-layer"], vn.id);
                        vn.source = vn.layer.source, vn.layer["source-layer"] && (vn.sourceLayer = vn.layer["source-layer"]), vn.state = bn;
                      });
                    return br;
                  }
                  function Xe(Ot, R, J, yt, Tt, Nt, be) {
                    const Re = {}, je = Nt.queryRenderedSymbols(yt), pr = [];
                    for (const br of Object.keys(je).map(Number))
                      pr.push(be[br]);
                    pr.sort(me);
                    for (const br of pr) {
                      const Ar = br.featureIndex.lookupSymbolFeatures(je[br.bucketInstanceId], R, br.bucketIndex, br.sourceLayerIndex, Tt.filter, Tt.layers, Tt.availableImages, Ot);
                      for (const qr in Ar) {
                        const vn = Re[qr] = Re[qr] || [], bn = Ar[qr];
                        bn.sort((Rn, Gn) => {
                          const ii = br.featureSortOrder;
                          if (ii) {
                            const oi = ii.indexOf(Rn.featureIndex);
                            return ii.indexOf(Gn.featureIndex) - oi;
                          } else
                            return Gn.featureIndex - Rn.featureIndex;
                        });
                        for (const Rn of bn)
                          vn.push(Rn);
                      }
                    }
                    for (const br in Re)
                      Re[br].forEach((Ar) => {
                        const qr = Ar.feature, vn = Ot[br], Rn = J[vn.source].getFeatureState(qr.layer["source-layer"], qr.id);
                        qr.source = qr.layer.source, qr.layer["source-layer"] && (qr.sourceLayer = qr.layer["source-layer"]), qr.state = Rn;
                      });
                    return Re;
                  }
                  function xe(Ot, R) {
                    const J = Ot.getRenderableIds().map((Nt) => Ot.getTileByID(Nt)), yt = [], Tt = {};
                    for (let Nt = 0; Nt < J.length; Nt++) {
                      const be = J[Nt], Re = be.tileID.canonical.key;
                      Tt[Re] || (Tt[Re] = !0, be.querySourceFeatures(yt, R));
                    }
                    return yt;
                  }
                  function me(Ot, R) {
                    const J = Ot.tileID, yt = R.tileID;
                    return J.overscaledZ - yt.overscaledZ || J.canonical.y - yt.canonical.y || J.wrap - yt.wrap || J.canonical.x - yt.canonical.x;
                  }
                  function Le(Ot) {
                    const R = {}, J = {};
                    for (const yt of Ot) {
                      const Tt = yt.queryResults, Nt = yt.wrappedTileID, be = J[Nt] = J[Nt] || {};
                      for (const Re in Tt) {
                        const je = Tt[Re], pr = be[Re] = be[Re] || {}, br = R[Re] = R[Re] || [];
                        for (const Ar of je)
                          pr[Ar.featureIndex] || (pr[Ar.featureIndex] = !0, br.push(Ar));
                      }
                    }
                    return R;
                  }
                  function qt(Ot, R, J) {
                    return s._(this, void 0, void 0, function* () {
                      let yt = Ot;
                      if (Ot.url ? yt = (yield s.h(R.transformRequest(
                        Ot.url,
                        "Source"
                        /* ResourceType.Source */
                      ), J)).data : yield d.frameAsync(J), !yt)
                        return null;
                      const Tt = s.M(
                        // explicit source options take precedence over TileJSON
                        s.e(yt, Ot),
                        ["tiles", "minzoom", "maxzoom", "attribution", "bounds", "scheme", "tileSize", "encoding"]
                      );
                      return "vector_layers" in yt && yt.vector_layers && (Tt.vectorLayerIds = yt.vector_layers.map((Nt) => Nt.id)), Tt;
                    });
                  }
                  class De {
                    /**
                     * @param sw - The southwest corner of the bounding box.
                     * OR array of 4 numbers in the order of  west, south, east, north
                     * OR array of 2 LngLatLike: [sw,ne]
                     * @param ne - The northeast corner of the bounding box.
                     * @example
                     * ```ts
                     * let sw = new LngLat(-73.9876, 40.7661);
                     * let ne = new LngLat(-73.9397, 40.8002);
                     * let llb = new LngLatBounds(sw, ne);
                     * ```
                     * OR
                     * ```ts
                     * let llb = new LngLatBounds([-73.9876, 40.7661, -73.9397, 40.8002]);
                     * ```
                     * OR
                     * ```ts
                     * let llb = new LngLatBounds([sw, ne]);
                     * ```
                     */
                    constructor(R, J) {
                      R && (J ? this.setSouthWest(R).setNorthEast(J) : Array.isArray(R) && (R.length === 4 ? this.setSouthWest([R[0], R[1]]).setNorthEast([R[2], R[3]]) : this.setSouthWest(R[0]).setNorthEast(R[1])));
                    }
                    /**
                     * Set the northeast corner of the bounding box
                     *
                     * @param ne - a {@link LngLatLike} object describing the northeast corner of the bounding box.
                     */
                    setNorthEast(R) {
                      return this._ne = R instanceof s.N ? new s.N(R.lng, R.lat) : s.N.convert(R), this;
                    }
                    /**
                     * Set the southwest corner of the bounding box
                     *
                     * @param sw - a {@link LngLatLike} object describing the southwest corner of the bounding box.
                     */
                    setSouthWest(R) {
                      return this._sw = R instanceof s.N ? new s.N(R.lng, R.lat) : s.N.convert(R), this;
                    }
                    /**
                     * Extend the bounds to include a given LngLatLike or LngLatBoundsLike.
                     *
                     * @param obj - object to extend to
                     */
                    extend(R) {
                      const J = this._sw, yt = this._ne;
                      let Tt, Nt;
                      if (R instanceof s.N)
                        Tt = R, Nt = R;
                      else if (R instanceof De) {
                        if (Tt = R._sw, Nt = R._ne, !Tt || !Nt)
                          return this;
                      } else {
                        if (Array.isArray(R))
                          if (R.length === 4 || R.every(Array.isArray)) {
                            const be = R;
                            return this.extend(De.convert(be));
                          } else {
                            const be = R;
                            return this.extend(s.N.convert(be));
                          }
                        else if (R && ("lng" in R || "lon" in R) && "lat" in R)
                          return this.extend(s.N.convert(R));
                        return this;
                      }
                      return !J && !yt ? (this._sw = new s.N(Tt.lng, Tt.lat), this._ne = new s.N(Nt.lng, Nt.lat)) : (J.lng = Math.min(Tt.lng, J.lng), J.lat = Math.min(Tt.lat, J.lat), yt.lng = Math.max(Nt.lng, yt.lng), yt.lat = Math.max(Nt.lat, yt.lat)), this;
                    }
                    /**
                     * Returns the geographical coordinate equidistant from the bounding box's corners.
                     *
                     * @returns The bounding box's center.
                     * @example
                     * ```ts
                     * let llb = new LngLatBounds([-73.9876, 40.7661], [-73.9397, 40.8002]);
                     * llb.getCenter(); // = LngLat {lng: -73.96365, lat: 40.78315}
                     * ```
                     */
                    getCenter() {
                      return new s.N((this._sw.lng + this._ne.lng) / 2, (this._sw.lat + this._ne.lat) / 2);
                    }
                    /**
                     * Returns the southwest corner of the bounding box.
                     *
                     * @returns The southwest corner of the bounding box.
                     */
                    getSouthWest() {
                      return this._sw;
                    }
                    /**
                     * Returns the northeast corner of the bounding box.
                     *
                     * @returns The northeast corner of the bounding box.
                     */
                    getNorthEast() {
                      return this._ne;
                    }
                    /**
                     * Returns the northwest corner of the bounding box.
                     *
                     * @returns The northwest corner of the bounding box.
                     */
                    getNorthWest() {
                      return new s.N(this.getWest(), this.getNorth());
                    }
                    /**
                     * Returns the southeast corner of the bounding box.
                     *
                     * @returns The southeast corner of the bounding box.
                     */
                    getSouthEast() {
                      return new s.N(this.getEast(), this.getSouth());
                    }
                    /**
                     * Returns the west edge of the bounding box.
                     *
                     * @returns The west edge of the bounding box.
                     */
                    getWest() {
                      return this._sw.lng;
                    }
                    /**
                     * Returns the south edge of the bounding box.
                     *
                     * @returns The south edge of the bounding box.
                     */
                    getSouth() {
                      return this._sw.lat;
                    }
                    /**
                     * Returns the east edge of the bounding box.
                     *
                     * @returns The east edge of the bounding box.
                     */
                    getEast() {
                      return this._ne.lng;
                    }
                    /**
                     * Returns the north edge of the bounding box.
                     *
                     * @returns The north edge of the bounding box.
                     */
                    getNorth() {
                      return this._ne.lat;
                    }
                    /**
                     * Returns the bounding box represented as an array.
                     *
                     * @returns The bounding box represented as an array, consisting of the
                     * southwest and northeast coordinates of the bounding represented as arrays of numbers.
                     * @example
                     * ```ts
                     * let llb = new LngLatBounds([-73.9876, 40.7661], [-73.9397, 40.8002]);
                     * llb.toArray(); // = [[-73.9876, 40.7661], [-73.9397, 40.8002]]
                     * ```
                     */
                    toArray() {
                      return [this._sw.toArray(), this._ne.toArray()];
                    }
                    /**
                     * Return the bounding box represented as a string.
                     *
                     * @returns The bounding box represents as a string of the format
                     * `'LngLatBounds(LngLat(lng, lat), LngLat(lng, lat))'`.
                     * @example
                     * ```ts
                     * let llb = new LngLatBounds([-73.9876, 40.7661], [-73.9397, 40.8002]);
                     * llb.toString(); // = "LngLatBounds(LngLat(-73.9876, 40.7661), LngLat(-73.9397, 40.8002))"
                     * ```
                     */
                    toString() {
                      return `LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`;
                    }
                    /**
                     * Check if the bounding box is an empty/`null`-type box.
                     *
                     * @returns True if bounds have been defined, otherwise false.
                     */
                    isEmpty() {
                      return !(this._sw && this._ne);
                    }
                    /**
                     * Check if the point is within the bounding box.
                     *
                     * @param lnglat - geographic point to check against.
                     * @returns `true` if the point is within the bounding box.
                     * @example
                     * ```ts
                     * let llb = new LngLatBounds(
                     *   new LngLat(-73.9876, 40.7661),
                     *   new LngLat(-73.9397, 40.8002)
                     * );
                     *
                     * let ll = new LngLat(-73.9567, 40.7789);
                     *
                     * console.log(llb.contains(ll)); // = true
                     * ```
                     */
                    contains(R) {
                      const { lng: J, lat: yt } = s.N.convert(R), Tt = this._sw.lat <= yt && yt <= this._ne.lat;
                      let Nt = this._sw.lng <= J && J <= this._ne.lng;
                      return this._sw.lng > this._ne.lng && (Nt = this._sw.lng >= J && J >= this._ne.lng), Tt && Nt;
                    }
                    /**
                     * Converts an array to a `LngLatBounds` object.
                     *
                     * If a `LngLatBounds` object is passed in, the function returns it unchanged.
                     *
                     * Internally, the function calls `LngLat#convert` to convert arrays to `LngLat` values.
                     *
                     * @param input - An array of two coordinates to convert, or a `LngLatBounds` object to return.
                     * @returns A new `LngLatBounds` object, if a conversion occurred, or the original `LngLatBounds` object.
                     * @example
                     * ```ts
                     * let arr = [[-73.9876, 40.7661], [-73.9397, 40.8002]];
                     * let llb = LngLatBounds.convert(arr); // = LngLatBounds {_sw: LngLat {lng: -73.9876, lat: 40.7661}, _ne: LngLat {lng: -73.9397, lat: 40.8002}}
                     * ```
                     */
                    static convert(R) {
                      return R instanceof De || !R ? R : new De(R);
                    }
                    /**
                     * Returns a `LngLatBounds` from the coordinates extended by a given `radius`. The returned `LngLatBounds` completely contains the `radius`.
                     *
                     * @param center - center coordinates of the new bounds.
                     * @param radius - Distance in meters from the coordinates to extend the bounds.
                     * @returns A new `LngLatBounds` object representing the coordinates extended by the `radius`.
                     * @example
                     * ```ts
                     * let center = new LngLat(-73.9749, 40.7736);
                     * LngLatBounds.fromLngLat(100).toArray(); // = [[-73.97501862141328, 40.77351016847229], [-73.97478137858673, 40.77368983152771]]
                     * ```
                     */
                    static fromLngLat(R, J = 0) {
                      const Tt = 360 * J / 40075017, Nt = Tt / Math.cos(Math.PI / 180 * R.lat);
                      return new De(new s.N(R.lng - Nt, R.lat - Tt), new s.N(R.lng + Nt, R.lat + Tt));
                    }
                  }
                  class Je {
                    constructor(R, J, yt) {
                      this.bounds = De.convert(this.validateBounds(R)), this.minzoom = J || 0, this.maxzoom = yt || 24;
                    }
                    validateBounds(R) {
                      return !Array.isArray(R) || R.length !== 4 ? [-180, -90, 180, 90] : [Math.max(-180, R[0]), Math.max(-90, R[1]), Math.min(180, R[2]), Math.min(90, R[3])];
                    }
                    contains(R) {
                      const J = Math.pow(2, R.z), yt = {
                        minX: Math.floor(s.O(this.bounds.getWest()) * J),
                        minY: Math.floor(s.Q(this.bounds.getNorth()) * J),
                        maxX: Math.ceil(s.O(this.bounds.getEast()) * J),
                        maxY: Math.ceil(s.Q(this.bounds.getSouth()) * J)
                      };
                      return R.x >= yt.minX && R.x < yt.maxX && R.y >= yt.minY && R.y < yt.maxY;
                    }
                  }
                  class dr extends s.E {
                    constructor(R, J, yt, Tt) {
                      if (super(), this.id = R, this.dispatcher = yt, this.type = "vector", this.minzoom = 0, this.maxzoom = 22, this.scheme = "xyz", this.tileSize = 512, this.reparseOverscaled = !0, this.isTileClipped = !0, this._loaded = !1, s.e(this, s.M(J, ["url", "scheme", "tileSize", "promoteId"])), this._options = s.e({ type: "vector" }, J), this._collectResourceTiming = J.collectResourceTiming, this.tileSize !== 512)
                        throw new Error("vector tile sources must have a tileSize of 512");
                      this.setEventedParent(Tt);
                    }
                    load() {
                      return s._(this, void 0, void 0, function* () {
                        this._loaded = !1, this.fire(new s.k("dataloading", { dataType: "source" })), this._tileJSONRequest = new AbortController();
                        try {
                          const R = yield qt(this._options, this.map._requestManager, this._tileJSONRequest);
                          this._tileJSONRequest = null, this._loaded = !0, this.map.style.sourceCaches[this.id].clearTiles(), R && (s.e(this, R), R.bounds && (this.tileBounds = new Je(R.bounds, this.minzoom, this.maxzoom)), this.fire(new s.k("data", { dataType: "source", sourceDataType: "metadata" })), this.fire(new s.k("data", { dataType: "source", sourceDataType: "content" })));
                        } catch (R) {
                          this._tileJSONRequest = null, this.fire(new s.j(R));
                        }
                      });
                    }
                    loaded() {
                      return this._loaded;
                    }
                    hasTile(R) {
                      return !this.tileBounds || this.tileBounds.contains(R.canonical);
                    }
                    onAdd(R) {
                      this.map = R, this.load();
                    }
                    setSourceProperty(R) {
                      this._tileJSONRequest && this._tileJSONRequest.abort(), R(), this.load();
                    }
                    /**
                     * Sets the source `tiles` property and re-renders the map.
                     *
                     * @param tiles - An array of one or more tile source URLs, as in the TileJSON spec.
                     */
                    setTiles(R) {
                      return this.setSourceProperty(() => {
                        this._options.tiles = R;
                      }), this;
                    }
                    /**
                     * Sets the source `url` property and re-renders the map.
                     *
                     * @param url - A URL to a TileJSON resource. Supported protocols are `http:` and `https:`.
                     */
                    setUrl(R) {
                      return this.setSourceProperty(() => {
                        this.url = R, this._options.url = R;
                      }), this;
                    }
                    onRemove() {
                      this._tileJSONRequest && (this._tileJSONRequest.abort(), this._tileJSONRequest = null);
                    }
                    serialize() {
                      return s.e({}, this._options);
                    }
                    loadTile(R) {
                      return s._(this, void 0, void 0, function* () {
                        const J = R.tileID.canonical.url(this.tiles, this.map.getPixelRatio(), this.scheme), yt = {
                          request: this.map._requestManager.transformRequest(
                            J,
                            "Tile"
                            /* ResourceType.Tile */
                          ),
                          uid: R.uid,
                          tileID: R.tileID,
                          zoom: R.tileID.overscaledZ,
                          tileSize: this.tileSize * R.tileID.overscaleFactor(),
                          type: this.type,
                          source: this.id,
                          pixelRatio: this.map.getPixelRatio(),
                          showCollisionBoxes: this.map.showCollisionBoxes,
                          promoteId: this.promoteId
                        };
                        yt.request.collectResourceTiming = this._collectResourceTiming;
                        let Tt = "RT";
                        if (!R.actor || R.state === "expired")
                          R.actor = this.dispatcher.getActor(), Tt = "LT";
                        else if (R.state === "loading")
                          return new Promise((Nt, be) => {
                            R.reloadPromise = { resolve: Nt, reject: be };
                          });
                        R.abortController = new AbortController();
                        try {
                          const Nt = yield R.actor.sendAsync({ type: Tt, data: yt }, R.abortController);
                          if (delete R.abortController, R.aborted)
                            return;
                          this._afterTileLoadWorkerResponse(R, Nt);
                        } catch (Nt) {
                          if (delete R.abortController, R.aborted)
                            return;
                          if (Nt && Nt.status !== 404)
                            throw Nt;
                          this._afterTileLoadWorkerResponse(R, null);
                        }
                      });
                    }
                    _afterTileLoadWorkerResponse(R, J) {
                      if (J && J.resourceTiming && (R.resourceTiming = J.resourceTiming), J && this.map._refreshExpiredTiles && R.setExpiryData(J), R.loadVectorData(J, this.map.painter), R.reloadPromise) {
                        const yt = R.reloadPromise;
                        R.reloadPromise = null, this.loadTile(R).then(yt.resolve).catch(yt.reject);
                      }
                    }
                    abortTile(R) {
                      return s._(this, void 0, void 0, function* () {
                        R.abortController && (R.abortController.abort(), delete R.abortController), R.actor && (yield R.actor.sendAsync({
                          type: "AT",
                          data: { uid: R.uid, type: this.type, source: this.id }
                        }));
                      });
                    }
                    unloadTile(R) {
                      return s._(this, void 0, void 0, function* () {
                        R.unloadVectorData(), R.actor && (yield R.actor.sendAsync({
                          type: "RMT",
                          data: {
                            uid: R.uid,
                            type: this.type,
                            source: this.id
                          }
                        }));
                      });
                    }
                    hasTransition() {
                      return !1;
                    }
                  }
                  class qe extends s.E {
                    constructor(R, J, yt, Tt) {
                      super(), this.id = R, this.dispatcher = yt, this.setEventedParent(Tt), this.type = "raster", this.minzoom = 0, this.maxzoom = 22, this.roundZoom = !0, this.scheme = "xyz", this.tileSize = 512, this._loaded = !1, this._options = s.e({ type: "raster" }, J), s.e(this, s.M(J, ["url", "scheme", "tileSize"]));
                    }
                    load() {
                      return s._(this, void 0, void 0, function* () {
                        this._loaded = !1, this.fire(new s.k("dataloading", { dataType: "source" })), this._tileJSONRequest = new AbortController();
                        try {
                          const R = yield qt(this._options, this.map._requestManager, this._tileJSONRequest);
                          this._tileJSONRequest = null, this._loaded = !0, R && (s.e(this, R), R.bounds && (this.tileBounds = new Je(R.bounds, this.minzoom, this.maxzoom)), this.fire(new s.k("data", { dataType: "source", sourceDataType: "metadata" })), this.fire(new s.k("data", { dataType: "source", sourceDataType: "content" })));
                        } catch (R) {
                          this._tileJSONRequest = null, this.fire(new s.j(R));
                        }
                      });
                    }
                    loaded() {
                      return this._loaded;
                    }
                    onAdd(R) {
                      this.map = R, this.load();
                    }
                    onRemove() {
                      this._tileJSONRequest && (this._tileJSONRequest.abort(), this._tileJSONRequest = null);
                    }
                    setSourceProperty(R) {
                      this._tileJSONRequest && (this._tileJSONRequest.abort(), this._tileJSONRequest = null), R(), this.load();
                    }
                    /**
                     * Sets the source `tiles` property and re-renders the map.
                     *
                     * @param tiles - An array of one or more tile source URLs, as in the raster tiles spec (See the [Style Specification](https://maplibre.org/maplibre-style-spec/)
                     */
                    setTiles(R) {
                      return this.setSourceProperty(() => {
                        this._options.tiles = R;
                      }), this;
                    }
                    /**
                     * Sets the source `url` property and re-renders the map.
                     *
                     * @param url - A URL to a TileJSON resource. Supported protocols are `http:` and `https:`.
                     */
                    setUrl(R) {
                      return this.setSourceProperty(() => {
                        this.url = R, this._options.url = R;
                      }), this;
                    }
                    serialize() {
                      return s.e({}, this._options);
                    }
                    hasTile(R) {
                      return !this.tileBounds || this.tileBounds.contains(R.canonical);
                    }
                    loadTile(R) {
                      return s._(this, void 0, void 0, function* () {
                        const J = R.tileID.canonical.url(this.tiles, this.map.getPixelRatio(), this.scheme);
                        R.abortController = new AbortController();
                        try {
                          const yt = yield H.getImage(this.map._requestManager.transformRequest(
                            J,
                            "Tile"
                            /* ResourceType.Tile */
                          ), R.abortController, this.map._refreshExpiredTiles);
                          if (delete R.abortController, R.aborted) {
                            R.state = "unloaded";
                            return;
                          }
                          if (yt && yt.data) {
                            this.map._refreshExpiredTiles && yt.cacheControl && yt.expires && R.setExpiryData({ cacheControl: yt.cacheControl, expires: yt.expires });
                            const Tt = this.map.painter.context, Nt = Tt.gl, be = yt.data;
                            R.texture = this.map.painter.getTileTexture(be.width), R.texture ? R.texture.update(be, { useMipmap: !0 }) : (R.texture = new Vt(Tt, be, Nt.RGBA, { useMipmap: !0 }), R.texture.bind(Nt.LINEAR, Nt.CLAMP_TO_EDGE, Nt.LINEAR_MIPMAP_NEAREST)), R.state = "loaded";
                          }
                        } catch (yt) {
                          if (delete R.abortController, R.aborted)
                            R.state = "unloaded";
                          else if (yt)
                            throw R.state = "errored", yt;
                        }
                      });
                    }
                    abortTile(R) {
                      return s._(this, void 0, void 0, function* () {
                        R.abortController && (R.abortController.abort(), delete R.abortController);
                      });
                    }
                    unloadTile(R) {
                      return s._(this, void 0, void 0, function* () {
                        R.texture && this.map.painter.saveTileTexture(R.texture);
                      });
                    }
                    hasTransition() {
                      return !1;
                    }
                  }
                  class we extends qe {
                    constructor(R, J, yt, Tt) {
                      super(R, J, yt, Tt), this.type = "raster-dem", this.maxzoom = 22, this._options = s.e({ type: "raster-dem" }, J), this.encoding = J.encoding || "mapbox", this.redFactor = J.redFactor, this.greenFactor = J.greenFactor, this.blueFactor = J.blueFactor, this.baseShift = J.baseShift;
                    }
                    loadTile(R) {
                      return s._(this, void 0, void 0, function* () {
                        const J = R.tileID.canonical.url(this.tiles, this.map.getPixelRatio(), this.scheme), yt = this.map._requestManager.transformRequest(
                          J,
                          "Tile"
                          /* ResourceType.Tile */
                        );
                        R.neighboringTiles = this._getNeighboringTiles(R.tileID), R.abortController = new AbortController();
                        try {
                          const Tt = yield H.getImage(yt, R.abortController, this.map._refreshExpiredTiles);
                          if (delete R.abortController, R.aborted) {
                            R.state = "unloaded";
                            return;
                          }
                          if (Tt && Tt.data) {
                            const Nt = Tt.data;
                            this.map._refreshExpiredTiles && Tt.cacheControl && Tt.expires && R.setExpiryData({ cacheControl: Tt.cacheControl, expires: Tt.expires });
                            const Re = s.b(Nt) && s.U() ? Nt : yield this.readImageNow(Nt), je = {
                              type: this.type,
                              uid: R.uid,
                              source: this.id,
                              rawImageData: Re,
                              encoding: this.encoding,
                              redFactor: this.redFactor,
                              greenFactor: this.greenFactor,
                              blueFactor: this.blueFactor,
                              baseShift: this.baseShift
                            };
                            if (!R.actor || R.state === "expired") {
                              R.actor = this.dispatcher.getActor();
                              const pr = yield R.actor.sendAsync({ type: "LDT", data: je });
                              R.dem = pr, R.needsHillshadePrepare = !0, R.needsTerrainPrepare = !0, R.state = "loaded";
                            }
                          }
                        } catch (Tt) {
                          if (delete R.abortController, R.aborted)
                            R.state = "unloaded";
                          else if (Tt)
                            throw R.state = "errored", Tt;
                        }
                      });
                    }
                    readImageNow(R) {
                      return s._(this, void 0, void 0, function* () {
                        if (typeof VideoFrame < "u" && s.V()) {
                          const J = R.width + 2, yt = R.height + 2;
                          try {
                            return new s.R({ width: J, height: yt }, yield s.W(R, -1, -1, J, yt));
                          } catch {
                          }
                        }
                        return d.getImageData(R, 1);
                      });
                    }
                    _getNeighboringTiles(R) {
                      const J = R.canonical, yt = Math.pow(2, J.z), Tt = (J.x - 1 + yt) % yt, Nt = J.x === 0 ? R.wrap - 1 : R.wrap, be = (J.x + 1 + yt) % yt, Re = J.x + 1 === yt ? R.wrap + 1 : R.wrap, je = {};
                      return je[new s.S(R.overscaledZ, Nt, J.z, Tt, J.y).key] = { backfilled: !1 }, je[new s.S(R.overscaledZ, Re, J.z, be, J.y).key] = { backfilled: !1 }, J.y > 0 && (je[new s.S(R.overscaledZ, Nt, J.z, Tt, J.y - 1).key] = { backfilled: !1 }, je[new s.S(R.overscaledZ, R.wrap, J.z, J.x, J.y - 1).key] = { backfilled: !1 }, je[new s.S(R.overscaledZ, Re, J.z, be, J.y - 1).key] = { backfilled: !1 }), J.y + 1 < yt && (je[new s.S(R.overscaledZ, Nt, J.z, Tt, J.y + 1).key] = { backfilled: !1 }, je[new s.S(R.overscaledZ, R.wrap, J.z, J.x, J.y + 1).key] = { backfilled: !1 }, je[new s.S(R.overscaledZ, Re, J.z, be, J.y + 1).key] = { backfilled: !1 }), je;
                    }
                    unloadTile(R) {
                      return s._(this, void 0, void 0, function* () {
                        R.demTexture && this.map.painter.saveTileTexture(R.demTexture), R.fbo && (R.fbo.destroy(), delete R.fbo), R.dem && delete R.dem, delete R.neighboringTiles, R.state = "unloaded", R.actor && (yield R.actor.sendAsync({ type: "RDT", data: { type: this.type, uid: R.uid, source: this.id } }));
                      });
                    }
                  }
                  class ue extends s.E {
                    /** @internal */
                    constructor(R, J, yt, Tt) {
                      super(), this.id = R, this.type = "geojson", this.minzoom = 0, this.maxzoom = 18, this.tileSize = 512, this.isTileClipped = !0, this.reparseOverscaled = !0, this._removed = !1, this._pendingLoads = 0, this.actor = yt.getActor(), this.setEventedParent(Tt), this._data = J.data, this._options = s.e({}, J), this._collectResourceTiming = J.collectResourceTiming, J.maxzoom !== void 0 && (this.maxzoom = J.maxzoom), J.type && (this.type = J.type), J.attribution && (this.attribution = J.attribution), this.promoteId = J.promoteId;
                      const Nt = s.X / this.tileSize;
                      this.workerOptions = s.e({
                        source: this.id,
                        cluster: J.cluster || !1,
                        geojsonVtOptions: {
                          buffer: (J.buffer !== void 0 ? J.buffer : 128) * Nt,
                          tolerance: (J.tolerance !== void 0 ? J.tolerance : 0.375) * Nt,
                          extent: s.X,
                          maxZoom: this.maxzoom,
                          lineMetrics: J.lineMetrics || !1,
                          generateId: J.generateId || !1
                        },
                        superclusterOptions: {
                          maxZoom: J.clusterMaxZoom !== void 0 ? J.clusterMaxZoom : this.maxzoom - 1,
                          minPoints: Math.max(2, J.clusterMinPoints || 2),
                          extent: s.X,
                          radius: (J.clusterRadius || 50) * Nt,
                          log: !1,
                          generateId: J.generateId || !1
                        },
                        clusterProperties: J.clusterProperties,
                        filter: J.filter
                      }, J.workerOptions), typeof this.promoteId == "string" && (this.workerOptions.promoteId = this.promoteId);
                    }
                    load() {
                      return s._(this, void 0, void 0, function* () {
                        yield this._updateWorkerData();
                      });
                    }
                    onAdd(R) {
                      this.map = R, this.load();
                    }
                    /**
                     * Sets the GeoJSON data and re-renders the map.
                     *
                     * @param data - A GeoJSON data object or a URL to one. The latter is preferable in the case of large GeoJSON files.
                     */
                    setData(R) {
                      return this._data = R, this._updateWorkerData(), this;
                    }
                    /**
                     * Updates the source's GeoJSON, and re-renders the map.
                     *
                     * For sources with lots of features, this method can be used to make updates more quickly.
                     *
                     * This approach requires unique IDs for every feature in the source. The IDs can either be specified on the feature,
                     * or by using the promoteId option to specify which property should be used as the ID.
                     *
                     * It is an error to call updateData on a source that did not have unique IDs for each of its features already.
                     *
                     * Updates are applied on a best-effort basis, updating an ID that does not exist will not result in an error.
                     *
                     * @param diff - The changes that need to be applied.
                     */
                    updateData(R) {
                      return this._updateWorkerData(R), this;
                    }
                    /**
                     * Allows to get the source's actual GeoJSON data.
                     *
                     * @returns a promise which resolves to the source's actual GeoJSON data
                     */
                    getData() {
                      return s._(this, void 0, void 0, function* () {
                        const R = s.e({ type: this.type }, this.workerOptions);
                        return this.actor.sendAsync({ type: "GD", data: R });
                      });
                    }
                    /**
                     * To disable/enable clustering on the source options
                     * @param options - The options to set
                     * @example
                     * ```ts
                     * map.getSource('some id').setClusterOptions({cluster: false});
                     * map.getSource('some id').setClusterOptions({cluster: false, clusterRadius: 50, clusterMaxZoom: 14});
                     * ```
                     */
                    setClusterOptions(R) {
                      return this.workerOptions.cluster = R.cluster, R && (R.clusterRadius !== void 0 && (this.workerOptions.superclusterOptions.radius = R.clusterRadius), R.clusterMaxZoom !== void 0 && (this.workerOptions.superclusterOptions.maxZoom = R.clusterMaxZoom)), this._updateWorkerData(), this;
                    }
                    /**
                     * For clustered sources, fetches the zoom at which the given cluster expands.
                     *
                     * @param clusterId - The value of the cluster's `cluster_id` property.
                     * @returns a promise that is resolved with the zoom number
                     */
                    getClusterExpansionZoom(R) {
                      return this.actor.sendAsync({ type: "GCEZ", data: { type: this.type, clusterId: R, source: this.id } });
                    }
                    /**
                     * For clustered sources, fetches the children of the given cluster on the next zoom level (as an array of GeoJSON features).
                     *
                     * @param clusterId - The value of the cluster's `cluster_id` property.
                     * @returns a promise that is resolved when the features are retrieved
                     */
                    getClusterChildren(R) {
                      return this.actor.sendAsync({ type: "GCC", data: { type: this.type, clusterId: R, source: this.id } });
                    }
                    /**
                     * For clustered sources, fetches the original points that belong to the cluster (as an array of GeoJSON features).
                     *
                     * @param clusterId - The value of the cluster's `cluster_id` property.
                     * @param limit - The maximum number of features to return.
                     * @param offset - The number of features to skip (e.g. for pagination).
                     * @returns a promise that is resolved when the features are retrieved
                     * @example
                     * Retrieve cluster leaves on click
                     * ```ts
                     * map.on('click', 'clusters', (e) => {
                     *   let features = map.queryRenderedFeatures(e.point, {
                     *     layers: ['clusters']
                     *   });
                     *
                     *   let clusterId = features[0].properties.cluster_id;
                     *   let pointCount = features[0].properties.point_count;
                     *   let clusterSource = map.getSource('clusters');
                     *
                     *   const features = await clusterSource.getClusterLeaves(clusterId, pointCount);
                     *   // Print cluster leaves in the console
                     *   console.log('Cluster leaves:', features);
                     * });
                     * ```
                     */
                    getClusterLeaves(R, J, yt) {
                      return this.actor.sendAsync({ type: "GCL", data: {
                        type: this.type,
                        source: this.id,
                        clusterId: R,
                        limit: J,
                        offset: yt
                      } });
                    }
                    /**
                     * Responsible for invoking WorkerSource's geojson.loadData target, which
                     * handles loading the geojson data and preparing to serve it up as tiles,
                     * using geojson-vt or supercluster as appropriate.
                     * @param diff - the diff object
                     */
                    _updateWorkerData(R) {
                      return s._(this, void 0, void 0, function* () {
                        const J = s.e({ type: this.type }, this.workerOptions);
                        R ? J.dataDiff = R : typeof this._data == "string" ? (J.request = this.map._requestManager.transformRequest(
                          d.resolveURL(this._data),
                          "Source"
                          /* ResourceType.Source */
                        ), J.request.collectResourceTiming = this._collectResourceTiming) : J.data = JSON.stringify(this._data), this._pendingLoads++, this.fire(new s.k("dataloading", { dataType: "source" }));
                        try {
                          const yt = yield this.actor.sendAsync({ type: "LD", data: J });
                          if (this._pendingLoads--, this._removed || yt.abandoned) {
                            this.fire(new s.k("dataabort", { dataType: "source" }));
                            return;
                          }
                          let Tt = null;
                          yt.resourceTiming && yt.resourceTiming[this.id] && (Tt = yt.resourceTiming[this.id].slice(0));
                          const Nt = { dataType: "source" };
                          this._collectResourceTiming && Tt && Tt.length > 0 && s.e(Nt, { resourceTiming: Tt }), this.fire(new s.k("data", Object.assign(Object.assign({}, Nt), { sourceDataType: "metadata" }))), this.fire(new s.k("data", Object.assign(Object.assign({}, Nt), { sourceDataType: "content" })));
                        } catch (yt) {
                          if (this._pendingLoads--, this._removed) {
                            this.fire(new s.k("dataabort", { dataType: "source" }));
                            return;
                          }
                          this.fire(new s.j(yt));
                        }
                      });
                    }
                    loaded() {
                      return this._pendingLoads === 0;
                    }
                    loadTile(R) {
                      return s._(this, void 0, void 0, function* () {
                        const J = R.actor ? "RT" : "LT";
                        R.actor = this.actor;
                        const yt = {
                          type: this.type,
                          uid: R.uid,
                          tileID: R.tileID,
                          zoom: R.tileID.overscaledZ,
                          maxZoom: this.maxzoom,
                          tileSize: this.tileSize,
                          source: this.id,
                          pixelRatio: this.map.getPixelRatio(),
                          showCollisionBoxes: this.map.showCollisionBoxes,
                          promoteId: this.promoteId
                        };
                        R.abortController = new AbortController();
                        const Tt = yield this.actor.sendAsync({ type: J, data: yt }, R.abortController);
                        delete R.abortController, R.unloadVectorData(), R.aborted || R.loadVectorData(
                          Tt,
                          this.map.painter,
                          J === "RT"
                          /* MessageType.reloadTile */
                        );
                      });
                    }
                    abortTile(R) {
                      return s._(this, void 0, void 0, function* () {
                        R.abortController && (R.abortController.abort(), delete R.abortController), R.aborted = !0;
                      });
                    }
                    unloadTile(R) {
                      return s._(this, void 0, void 0, function* () {
                        R.unloadVectorData(), yield this.actor.sendAsync({ type: "RMT", data: { uid: R.uid, type: this.type, source: this.id } });
                      });
                    }
                    onRemove() {
                      this._removed = !0, this.actor.sendAsync({ type: "RS", data: { type: this.type, source: this.id } });
                    }
                    serialize() {
                      return s.e({}, this._options, {
                        type: this.type,
                        data: this._data
                      });
                    }
                    hasTransition() {
                      return !1;
                    }
                  }
                  var Pe = s.Y([
                    { name: "a_pos", type: "Int16", components: 2 },
                    { name: "a_texture_pos", type: "Int16", components: 2 }
                  ]);
                  class Ue extends s.E {
                    /** @internal */
                    constructor(R, J, yt, Tt) {
                      super(), this.id = R, this.dispatcher = yt, this.coordinates = J.coordinates, this.type = "image", this.minzoom = 0, this.maxzoom = 22, this.tileSize = 512, this.tiles = {}, this._loaded = !1, this.setEventedParent(Tt), this.options = J;
                    }
                    load(R) {
                      return s._(this, void 0, void 0, function* () {
                        this._loaded = !1, this.fire(new s.k("dataloading", { dataType: "source" })), this.url = this.options.url, this._request = new AbortController();
                        try {
                          const J = yield H.getImage(this.map._requestManager.transformRequest(
                            this.url,
                            "Image"
                            /* ResourceType.Image */
                          ), this._request);
                          this._request = null, this._loaded = !0, J && J.data && (this.image = J.data, R && (this.coordinates = R), this._finishLoading());
                        } catch (J) {
                          this._request = null, this._loaded = !0, this.fire(new s.j(J));
                        }
                      });
                    }
                    loaded() {
                      return this._loaded;
                    }
                    /**
                     * Updates the image URL and, optionally, the coordinates. To avoid having the image flash after changing,
                     * set the `raster-fade-duration` paint property on the raster layer to 0.
                     *
                     * @param options - The options object.
                     */
                    updateImage(R) {
                      return R.url ? (this._request && (this._request.abort(), this._request = null), this.options.url = R.url, this.load(R.coordinates).finally(() => {
                        this.texture = null;
                      }), this) : this;
                    }
                    _finishLoading() {
                      this.map && (this.setCoordinates(this.coordinates), this.fire(new s.k("data", { dataType: "source", sourceDataType: "metadata" })));
                    }
                    onAdd(R) {
                      this.map = R, this.load();
                    }
                    onRemove() {
                      this._request && (this._request.abort(), this._request = null);
                    }
                    /**
                     * Sets the image's coordinates and re-renders the map.
                     *
                     * @param coordinates - Four geographical coordinates,
                     * represented as arrays of longitude and latitude numbers, which define the corners of the image.
                     * The coordinates start at the top left corner of the image and proceed in clockwise order.
                     * They do not have to represent a rectangle.
                     */
                    setCoordinates(R) {
                      this.coordinates = R;
                      const J = R.map(s.Z.fromLngLat);
                      this.tileID = Ye(J), this.minzoom = this.maxzoom = this.tileID.z;
                      const yt = J.map((Tt) => this.tileID.getTilePoint(Tt)._round());
                      return this._boundsArray = new s.$(), this._boundsArray.emplaceBack(yt[0].x, yt[0].y, 0, 0), this._boundsArray.emplaceBack(yt[1].x, yt[1].y, s.X, 0), this._boundsArray.emplaceBack(yt[3].x, yt[3].y, 0, s.X), this._boundsArray.emplaceBack(yt[2].x, yt[2].y, s.X, s.X), this.boundsBuffer && (this.boundsBuffer.destroy(), delete this.boundsBuffer), this.fire(new s.k("data", { dataType: "source", sourceDataType: "content" })), this;
                    }
                    prepare() {
                      if (Object.keys(this.tiles).length === 0 || !this.image)
                        return;
                      const R = this.map.painter.context, J = R.gl;
                      this.boundsBuffer || (this.boundsBuffer = R.createVertexBuffer(this._boundsArray, Pe.members)), this.boundsSegments || (this.boundsSegments = s.a0.simpleSegment(0, 0, 4, 2)), this.texture || (this.texture = new Vt(R, this.image, J.RGBA), this.texture.bind(J.LINEAR, J.CLAMP_TO_EDGE));
                      let yt = !1;
                      for (const Tt in this.tiles) {
                        const Nt = this.tiles[Tt];
                        Nt.state !== "loaded" && (Nt.state = "loaded", Nt.texture = this.texture, yt = !0);
                      }
                      yt && this.fire(new s.k("data", { dataType: "source", sourceDataType: "idle", sourceId: this.id }));
                    }
                    loadTile(R) {
                      return s._(this, void 0, void 0, function* () {
                        this.tileID && this.tileID.equals(R.tileID.canonical) ? (this.tiles[String(R.tileID.wrap)] = R, R.buckets = {}) : R.state = "errored";
                      });
                    }
                    serialize() {
                      return {
                        type: "image",
                        url: this.options.url,
                        coordinates: this.coordinates
                      };
                    }
                    hasTransition() {
                      return !1;
                    }
                  }
                  function Ye(Ot) {
                    let R = 1 / 0, J = 1 / 0, yt = -1 / 0, Tt = -1 / 0;
                    for (const br of Ot)
                      R = Math.min(R, br.x), J = Math.min(J, br.y), yt = Math.max(yt, br.x), Tt = Math.max(Tt, br.y);
                    const Nt = yt - R, be = Tt - J, Re = Math.max(Nt, be), je = Math.max(0, Math.floor(-Math.log(Re) / Math.LN2)), pr = Math.pow(2, je);
                    return new s.a1(je, Math.floor((R + yt) / 2 * pr), Math.floor((J + Tt) / 2 * pr));
                  }
                  class rr extends Ue {
                    constructor(R, J, yt, Tt) {
                      super(R, J, yt, Tt), this.roundZoom = !0, this.type = "video", this.options = J;
                    }
                    load() {
                      return s._(this, void 0, void 0, function* () {
                        this._loaded = !1;
                        const R = this.options;
                        this.urls = [];
                        for (const J of R.urls)
                          this.urls.push(this.map._requestManager.transformRequest(
                            J,
                            "Source"
                            /* ResourceType.Source */
                          ).url);
                        try {
                          const J = yield s.a3(this.urls);
                          if (this._loaded = !0, !J)
                            return;
                          this.video = J, this.video.loop = !0, this.video.addEventListener("playing", () => {
                            this.map.triggerRepaint();
                          }), this.map && this.video.play(), this._finishLoading();
                        } catch (J) {
                          this.fire(new s.j(J));
                        }
                      });
                    }
                    /**
                     * Pauses the video.
                     */
                    pause() {
                      this.video && this.video.pause();
                    }
                    /**
                     * Plays the video.
                     */
                    play() {
                      this.video && this.video.play();
                    }
                    /**
                     * Sets playback to a timestamp, in seconds.
                     */
                    seek(R) {
                      if (this.video) {
                        const J = this.video.seekable;
                        R < J.start(0) || R > J.end(0) ? this.fire(new s.j(new s.a2(`sources.${this.id}`, null, `Playback for this video can be set only between the ${J.start(0)} and ${J.end(0)}-second mark.`))) : this.video.currentTime = R;
                      }
                    }
                    /**
                     * Returns the HTML `video` element.
                     *
                     * @returns The HTML `video` element.
                     */
                    getVideo() {
                      return this.video;
                    }
                    onAdd(R) {
                      this.map || (this.map = R, this.load(), this.video && (this.video.play(), this.setCoordinates(this.coordinates)));
                    }
                    /**
                     * Sets the video's coordinates and re-renders the map.
                     */
                    prepare() {
                      if (Object.keys(this.tiles).length === 0 || this.video.readyState < 2)
                        return;
                      const R = this.map.painter.context, J = R.gl;
                      this.boundsBuffer || (this.boundsBuffer = R.createVertexBuffer(this._boundsArray, Pe.members)), this.boundsSegments || (this.boundsSegments = s.a0.simpleSegment(0, 0, 4, 2)), this.texture ? this.video.paused || (this.texture.bind(J.LINEAR, J.CLAMP_TO_EDGE), J.texSubImage2D(J.TEXTURE_2D, 0, 0, 0, J.RGBA, J.UNSIGNED_BYTE, this.video)) : (this.texture = new Vt(R, this.video, J.RGBA), this.texture.bind(J.LINEAR, J.CLAMP_TO_EDGE));
                      let yt = !1;
                      for (const Tt in this.tiles) {
                        const Nt = this.tiles[Tt];
                        Nt.state !== "loaded" && (Nt.state = "loaded", Nt.texture = this.texture, yt = !0);
                      }
                      yt && this.fire(new s.k("data", { dataType: "source", sourceDataType: "idle", sourceId: this.id }));
                    }
                    serialize() {
                      return {
                        type: "video",
                        urls: this.urls,
                        coordinates: this.coordinates
                      };
                    }
                    hasTransition() {
                      return this.video && !this.video.paused;
                    }
                  }
                  class lr extends Ue {
                    /** @internal */
                    constructor(R, J, yt, Tt) {
                      super(R, J, yt, Tt), J.coordinates ? (!Array.isArray(J.coordinates) || J.coordinates.length !== 4 || J.coordinates.some((Nt) => !Array.isArray(Nt) || Nt.length !== 2 || Nt.some((be) => typeof be != "number"))) && this.fire(new s.j(new s.a2(`sources.${R}`, null, '"coordinates" property must be an array of 4 longitude/latitude array pairs'))) : this.fire(new s.j(new s.a2(`sources.${R}`, null, 'missing required property "coordinates"'))), J.animate && typeof J.animate != "boolean" && this.fire(new s.j(new s.a2(`sources.${R}`, null, 'optional "animate" property must be a boolean value'))), J.canvas ? typeof J.canvas != "string" && !(J.canvas instanceof HTMLCanvasElement) && this.fire(new s.j(new s.a2(`sources.${R}`, null, '"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))) : this.fire(new s.j(new s.a2(`sources.${R}`, null, 'missing required property "canvas"'))), this.options = J, this.animate = J.animate !== void 0 ? J.animate : !0;
                    }
                    load() {
                      return s._(this, void 0, void 0, function* () {
                        if (this._loaded = !0, this.canvas || (this.canvas = this.options.canvas instanceof HTMLCanvasElement ? this.options.canvas : document.getElementById(this.options.canvas)), this.width = this.canvas.width, this.height = this.canvas.height, this._hasInvalidDimensions()) {
                          this.fire(new s.j(new Error("Canvas dimensions cannot be less than or equal to zero.")));
                          return;
                        }
                        this.play = function() {
                          this._playing = !0, this.map.triggerRepaint();
                        }, this.pause = function() {
                          this._playing && (this.prepare(), this._playing = !1);
                        }, this._finishLoading();
                      });
                    }
                    /**
                     * Returns the HTML `canvas` element.
                     *
                     * @returns The HTML `canvas` element.
                     */
                    getCanvas() {
                      return this.canvas;
                    }
                    onAdd(R) {
                      this.map = R, this.load(), this.canvas && this.animate && this.play();
                    }
                    onRemove() {
                      this.pause();
                    }
                    prepare() {
                      let R = !1;
                      if (this.canvas.width !== this.width && (this.width = this.canvas.width, R = !0), this.canvas.height !== this.height && (this.height = this.canvas.height, R = !0), this._hasInvalidDimensions() || Object.keys(this.tiles).length === 0)
                        return;
                      const J = this.map.painter.context, yt = J.gl;
                      this.boundsBuffer || (this.boundsBuffer = J.createVertexBuffer(this._boundsArray, Pe.members)), this.boundsSegments || (this.boundsSegments = s.a0.simpleSegment(0, 0, 4, 2)), this.texture ? (R || this._playing) && this.texture.update(this.canvas, { premultiply: !0 }) : this.texture = new Vt(J, this.canvas, yt.RGBA, { premultiply: !0 });
                      let Tt = !1;
                      for (const Nt in this.tiles) {
                        const be = this.tiles[Nt];
                        be.state !== "loaded" && (be.state = "loaded", be.texture = this.texture, Tt = !0);
                      }
                      Tt && this.fire(new s.k("data", { dataType: "source", sourceDataType: "idle", sourceId: this.id }));
                    }
                    serialize() {
                      return {
                        type: "canvas",
                        coordinates: this.coordinates
                      };
                    }
                    hasTransition() {
                      return this._playing;
                    }
                    _hasInvalidDimensions() {
                      for (const R of [this.canvas.width, this.canvas.height])
                        if (isNaN(R) || R <= 0)
                          return !0;
                      return !1;
                    }
                  }
                  const hr = {}, Sr = (Ot, R, J, yt) => {
                    const Tt = Dr(R.type), Nt = new Tt(Ot, R, J, yt);
                    if (Nt.id !== Ot)
                      throw new Error(`Expected Source id to be ${Ot} instead of ${Nt.id}`);
                    return Nt;
                  }, Dr = (Ot) => {
                    switch (Ot) {
                      case "geojson":
                        return ue;
                      case "image":
                        return Ue;
                      case "raster":
                        return qe;
                      case "raster-dem":
                        return we;
                      case "vector":
                        return dr;
                      case "video":
                        return rr;
                      case "canvas":
                        return lr;
                    }
                    return hr[Ot];
                  }, Or = (Ot, R) => {
                    hr[Ot] = R;
                  }, Br = (Ot, R) => s._(void 0, void 0, void 0, function* () {
                    if (Dr(Ot))
                      throw new Error(`A source type called "${Ot}" already exists.`);
                    Or(Ot, R);
                  });
                  function Nr(Ot, R) {
                    const J = {};
                    if (!R)
                      return J;
                    for (const yt of Ot) {
                      const Tt = yt.layerIds.map((Nt) => R.getLayer(Nt)).filter(Boolean);
                      if (Tt.length !== 0) {
                        yt.layers = Tt, yt.stateDependentLayerIds && (yt.stateDependentLayers = yt.stateDependentLayerIds.map((Nt) => Tt.filter((be) => be.id === Nt)[0]));
                        for (const Nt of Tt)
                          J[Nt.id] = yt;
                      }
                    }
                    return J;
                  }
                  const Xr = "RTLPluginLoaded";
                  class Gr extends s.E {
                    constructor() {
                      super(...arguments), this.status = "unavailable", this.url = null, this.dispatcher = fe();
                    }
                    /** Sync RTL plugin state by broadcasting a message to the worker */
                    _syncState(R) {
                      return this.status = R, this.dispatcher.broadcast("SRPS", { pluginStatus: R, pluginURL: this.url }).catch((J) => {
                        throw this.status = "error", J;
                      });
                    }
                    /** This one is exposed to outside */
                    getRTLTextPluginStatus() {
                      return this.status;
                    }
                    clearRTLTextPlugin() {
                      this.status = "unavailable", this.url = null;
                    }
                    setRTLTextPlugin(R) {
                      return s._(this, arguments, void 0, function* (J, yt = !1) {
                        if (this.url)
                          throw new Error("setRTLTextPlugin cannot be called multiple times.");
                        if (this.url = d.resolveURL(J), !this.url)
                          throw new Error(`requested url ${J} is invalid`);
                        if (this.status === "unavailable")
                          if (yt)
                            this.status = "deferred", this._syncState(this.status);
                          else
                            return this._requestImport();
                        else if (this.status === "requested")
                          return this._requestImport();
                      });
                    }
                    /** Send a message to worker which will import the RTL plugin script */
                    _requestImport() {
                      return s._(this, void 0, void 0, function* () {
                        yield this._syncState("loading"), this.status = "loaded", this.fire(new s.k(Xr));
                      });
                    }
                    /** Start a lazy loading process of RTL plugin */
                    lazyLoad() {
                      this.status === "unavailable" ? this.status = "requested" : this.status === "deferred" && this._requestImport();
                    }
                  }
                  let oe = null;
                  function de() {
                    return oe || (oe = new Gr()), oe;
                  }
                  const or = 3e4;
                  class Er {
                    /**
                     * @param tileID - the tile ID
                     * @param size - The tile size
                     */
                    constructor(R, J) {
                      this.timeAdded = 0, this.fadeEndTime = 0, this.tileID = R, this.uid = s.a4(), this.uses = 0, this.tileSize = J, this.buckets = {}, this.expirationTime = null, this.queryPadding = 0, this.hasSymbolBuckets = !1, this.hasRTLText = !1, this.dependencies = {}, this.rtt = [], this.rttCoords = {}, this.expiredRequestCount = 0, this.state = "loading";
                    }
                    registerFadeDuration(R) {
                      const J = R + this.timeAdded;
                      J < this.fadeEndTime || (this.fadeEndTime = J);
                    }
                    wasRequested() {
                      return this.state === "errored" || this.state === "loaded" || this.state === "reloading";
                    }
                    clearTextures(R) {
                      this.demTexture && R.saveTileTexture(this.demTexture), this.demTexture = null;
                    }
                    /**
                     * Given a data object with a 'buffers' property, load it into
                     * this tile's elementGroups and buffers properties and set loaded
                     * to true. If the data is null, like in the case of an empty
                     * GeoJSON tile, no-op but still set loaded to true.
                     * @param data - The data from the worker
                     * @param painter - the painter
                     * @param justReloaded - `true` to just reload
                     */
                    loadVectorData(R, J, yt) {
                      if (this.hasData() && this.unloadVectorData(), this.state = "loaded", !R) {
                        this.collisionBoxArray = new s.a5();
                        return;
                      }
                      R.featureIndex && (this.latestFeatureIndex = R.featureIndex, R.rawTileData ? (this.latestRawTileData = R.rawTileData, this.latestFeatureIndex.rawTileData = R.rawTileData) : this.latestRawTileData && (this.latestFeatureIndex.rawTileData = this.latestRawTileData)), this.collisionBoxArray = R.collisionBoxArray, this.buckets = Nr(R.buckets, J.style), this.hasSymbolBuckets = !1;
                      for (const Tt in this.buckets) {
                        const Nt = this.buckets[Tt];
                        if (Nt instanceof s.a6)
                          if (this.hasSymbolBuckets = !0, yt)
                            Nt.justReloaded = !0;
                          else
                            break;
                      }
                      if (this.hasRTLText = !1, this.hasSymbolBuckets)
                        for (const Tt in this.buckets) {
                          const Nt = this.buckets[Tt];
                          if (Nt instanceof s.a6 && Nt.hasRTLText) {
                            this.hasRTLText = !0, de().lazyLoad();
                            break;
                          }
                        }
                      this.queryPadding = 0;
                      for (const Tt in this.buckets) {
                        const Nt = this.buckets[Tt];
                        this.queryPadding = Math.max(this.queryPadding, J.style.getLayer(Tt).queryRadius(Nt));
                      }
                      R.imageAtlas && (this.imageAtlas = R.imageAtlas), R.glyphAtlasImage && (this.glyphAtlasImage = R.glyphAtlasImage);
                    }
                    /**
                     * Release any data or WebGL resources referenced by this tile.
                     */
                    unloadVectorData() {
                      for (const R in this.buckets)
                        this.buckets[R].destroy();
                      this.buckets = {}, this.imageAtlasTexture && this.imageAtlasTexture.destroy(), this.imageAtlas && (this.imageAtlas = null), this.glyphAtlasTexture && this.glyphAtlasTexture.destroy(), this.latestFeatureIndex = null, this.state = "unloaded";
                    }
                    getBucket(R) {
                      return this.buckets[R.id];
                    }
                    upload(R) {
                      for (const yt in this.buckets) {
                        const Tt = this.buckets[yt];
                        Tt.uploadPending() && Tt.upload(R);
                      }
                      const J = R.gl;
                      this.imageAtlas && !this.imageAtlas.uploaded && (this.imageAtlasTexture = new Vt(R, this.imageAtlas.image, J.RGBA), this.imageAtlas.uploaded = !0), this.glyphAtlasImage && (this.glyphAtlasTexture = new Vt(R, this.glyphAtlasImage, J.ALPHA), this.glyphAtlasImage = null);
                    }
                    prepare(R) {
                      this.imageAtlas && this.imageAtlas.patchUpdatedImages(R, this.imageAtlasTexture);
                    }
                    // Queries non-symbol features rendered for this tile.
                    // Symbol features are queried globally
                    queryRenderedFeatures(R, J, yt, Tt, Nt, be, Re, je, pr, br) {
                      return !this.latestFeatureIndex || !this.latestFeatureIndex.rawTileData ? {} : this.latestFeatureIndex.query({
                        queryGeometry: Tt,
                        cameraQueryGeometry: Nt,
                        scale: be,
                        tileSize: this.tileSize,
                        pixelPosMatrix: br,
                        transform: je,
                        params: Re,
                        queryPadding: this.queryPadding * pr
                      }, R, J, yt);
                    }
                    querySourceFeatures(R, J) {
                      const yt = this.latestFeatureIndex;
                      if (!yt || !yt.rawTileData)
                        return;
                      const Tt = yt.loadVTLayers(), Nt = J && J.sourceLayer ? J.sourceLayer : "", be = Tt._geojsonTileLayer || Tt[Nt];
                      if (!be)
                        return;
                      const Re = s.a7(J && J.filter), { z: je, x: pr, y: br } = this.tileID.canonical, Ar = { z: je, x: pr, y: br };
                      for (let qr = 0; qr < be.length; qr++) {
                        const vn = be.feature(qr);
                        if (Re.needGeometry) {
                          const Gn = s.a8(vn, !0);
                          if (!Re.filter(new s.a9(this.tileID.overscaledZ), Gn, this.tileID.canonical))
                            continue;
                        } else if (!Re.filter(new s.a9(this.tileID.overscaledZ), vn))
                          continue;
                        const bn = yt.getId(vn, Nt), Rn = new s.aa(vn, je, pr, br, bn);
                        Rn.tile = Ar, R.push(Rn);
                      }
                    }
                    hasData() {
                      return this.state === "loaded" || this.state === "reloading" || this.state === "expired";
                    }
                    patternsLoaded() {
                      return this.imageAtlas && !!Object.keys(this.imageAtlas.patternPositions).length;
                    }
                    setExpiryData(R) {
                      const J = this.expirationTime;
                      if (R.cacheControl) {
                        const yt = s.ab(R.cacheControl);
                        yt["max-age"] && (this.expirationTime = Date.now() + yt["max-age"] * 1e3);
                      } else R.expires && (this.expirationTime = new Date(R.expires).getTime());
                      if (this.expirationTime) {
                        const yt = Date.now();
                        let Tt = !1;
                        if (this.expirationTime > yt)
                          Tt = !1;
                        else if (!J)
                          Tt = !0;
                        else if (this.expirationTime < J)
                          Tt = !0;
                        else {
                          const Nt = this.expirationTime - J;
                          Nt ? this.expirationTime = yt + Math.max(Nt, or) : Tt = !0;
                        }
                        Tt ? (this.expiredRequestCount++, this.state = "expired") : this.expiredRequestCount = 0;
                      }
                    }
                    getExpiryTimeout() {
                      if (this.expirationTime)
                        return this.expiredRequestCount ? 1e3 * (1 << Math.min(this.expiredRequestCount - 1, 31)) : Math.min(this.expirationTime - (/* @__PURE__ */ new Date()).getTime(), Math.pow(2, 31) - 1);
                    }
                    setFeatureState(R, J) {
                      if (!this.latestFeatureIndex || !this.latestFeatureIndex.rawTileData || Object.keys(R).length === 0)
                        return;
                      const yt = this.latestFeatureIndex.loadVTLayers();
                      for (const Tt in this.buckets) {
                        if (!J.style.hasLayer(Tt))
                          continue;
                        const Nt = this.buckets[Tt], be = Nt.layers[0].sourceLayer || "_geojsonTileLayer", Re = yt[be], je = R[be];
                        if (!Re || !je || Object.keys(je).length === 0)
                          continue;
                        Nt.update(je, Re, this.imageAtlas && this.imageAtlas.patternPositions || {});
                        const pr = J && J.style && J.style.getLayer(Tt);
                        pr && (this.queryPadding = Math.max(this.queryPadding, pr.queryRadius(Nt)));
                      }
                    }
                    holdingForFade() {
                      return this.symbolFadeHoldUntil !== void 0;
                    }
                    symbolFadeFinished() {
                      return !this.symbolFadeHoldUntil || this.symbolFadeHoldUntil < d.now();
                    }
                    clearFadeHold() {
                      this.symbolFadeHoldUntil = void 0;
                    }
                    setHoldDuration(R) {
                      this.symbolFadeHoldUntil = d.now() + R;
                    }
                    setDependencies(R, J) {
                      const yt = {};
                      for (const Tt of J)
                        yt[Tt] = !0;
                      this.dependencies[R] = yt;
                    }
                    hasDependency(R, J) {
                      for (const yt of R) {
                        const Tt = this.dependencies[yt];
                        if (Tt) {
                          for (const Nt of J)
                            if (Tt[Nt])
                              return !0;
                        }
                      }
                      return !1;
                    }
                  }
                  class Tr {
                    /**
                     * @param max - number of permitted values
                     * @param onRemove - callback called with items when they expire
                     */
                    constructor(R, J) {
                      this.max = R, this.onRemove = J, this.reset();
                    }
                    /**
                     * Clear the cache
                     *
                     * @returns this cache
                     */
                    reset() {
                      for (const R in this.data)
                        for (const J of this.data[R])
                          J.timeout && clearTimeout(J.timeout), this.onRemove(J.value);
                      return this.data = {}, this.order = [], this;
                    }
                    /**
                     * Add a key, value combination to the cache, trimming its size if this pushes
                     * it over max length.
                     *
                     * @param tileID - lookup key for the item
                     * @param data - tile data
                     *
                     * @returns this cache
                     */
                    add(R, J, yt) {
                      const Tt = R.wrapped().key;
                      this.data[Tt] === void 0 && (this.data[Tt] = []);
                      const Nt = {
                        value: J,
                        timeout: void 0
                      };
                      if (yt !== void 0 && (Nt.timeout = setTimeout(() => {
                        this.remove(R, Nt);
                      }, yt)), this.data[Tt].push(Nt), this.order.push(Tt), this.order.length > this.max) {
                        const be = this._getAndRemoveByKey(this.order[0]);
                        be && this.onRemove(be);
                      }
                      return this;
                    }
                    /**
                     * Determine whether the value attached to `key` is present
                     *
                     * @param tileID - the key to be looked-up
                     * @returns whether the cache has this value
                     */
                    has(R) {
                      return R.wrapped().key in this.data;
                    }
                    /**
                     * Get the value attached to a specific key and remove data from cache.
                     * If the key is not found, returns `null`
                     *
                     * @param tileID - the key to look up
                     * @returns the tile data, or null if it isn't found
                     */
                    getAndRemove(R) {
                      return this.has(R) ? this._getAndRemoveByKey(R.wrapped().key) : null;
                    }
                    /*
                     * Get and remove the value with the specified key.
                     */
                    _getAndRemoveByKey(R) {
                      const J = this.data[R].shift();
                      return J.timeout && clearTimeout(J.timeout), this.data[R].length === 0 && delete this.data[R], this.order.splice(this.order.indexOf(R), 1), J.value;
                    }
                    /*
                     * Get the value with the specified (wrapped tile) key.
                     */
                    getByKey(R) {
                      const J = this.data[R];
                      return J ? J[0].value : null;
                    }
                    /**
                     * Get the value attached to a specific key without removing data
                     * from the cache. If the key is not found, returns `null`
                     *
                     * @param tileID - the key to look up
                     * @returns the tile data, or null if it isn't found
                     */
                    get(R) {
                      return this.has(R) ? this.data[R.wrapped().key][0].value : null;
                    }
                    /**
                     * Remove a key/value combination from the cache.
                     *
                     * @param tileID - the key for the pair to delete
                     * @param value - If a value is provided, remove that exact version of the value.
                     * @returns this cache
                     */
                    remove(R, J) {
                      if (!this.has(R))
                        return this;
                      const yt = R.wrapped().key, Tt = J === void 0 ? 0 : this.data[yt].indexOf(J), Nt = this.data[yt][Tt];
                      return this.data[yt].splice(Tt, 1), Nt.timeout && clearTimeout(Nt.timeout), this.data[yt].length === 0 && delete this.data[yt], this.onRemove(Nt.value), this.order.splice(this.order.indexOf(yt), 1), this;
                    }
                    /**
                     * Change the max size of the cache.
                     *
                     * @param max - the max size of the cache
                     * @returns this cache
                     */
                    setMaxSize(R) {
                      for (this.max = R; this.order.length > this.max; ) {
                        const J = this._getAndRemoveByKey(this.order[0]);
                        J && this.onRemove(J);
                      }
                      return this;
                    }
                    /**
                     * Remove entries that do not pass a filter function. Used for removing
                     * stale tiles from the cache.
                     *
                     * @param filterFn - Determines whether the tile is filtered. If the supplied function returns false, the tile will be filtered out.
                     */
                    filter(R) {
                      const J = [];
                      for (const yt in this.data)
                        for (const Tt of this.data[yt])
                          R(Tt.value) || J.push(Tt);
                      for (const yt of J)
                        this.remove(yt.value.tileID, yt);
                    }
                  }
                  class tr {
                    constructor() {
                      this.state = {}, this.stateChanges = {}, this.deletedStates = {};
                    }
                    updateState(R, J, yt) {
                      const Tt = String(J);
                      if (this.stateChanges[R] = this.stateChanges[R] || {}, this.stateChanges[R][Tt] = this.stateChanges[R][Tt] || {}, s.e(this.stateChanges[R][Tt], yt), this.deletedStates[R] === null) {
                        this.deletedStates[R] = {};
                        for (const Nt in this.state[R])
                          Nt !== Tt && (this.deletedStates[R][Nt] = null);
                      } else if (this.deletedStates[R] && this.deletedStates[R][Tt] === null) {
                        this.deletedStates[R][Tt] = {};
                        for (const be in this.state[R][Tt])
                          yt[be] || (this.deletedStates[R][Tt][be] = null);
                      } else
                        for (const be in yt)
                          this.deletedStates[R] && this.deletedStates[R][Tt] && this.deletedStates[R][Tt][be] === null && delete this.deletedStates[R][Tt][be];
                    }
                    removeFeatureState(R, J, yt) {
                      if (this.deletedStates[R] === null)
                        return;
                      const Nt = String(J);
                      if (this.deletedStates[R] = this.deletedStates[R] || {}, yt && J !== void 0)
                        this.deletedStates[R][Nt] !== null && (this.deletedStates[R][Nt] = this.deletedStates[R][Nt] || {}, this.deletedStates[R][Nt][yt] = null);
                      else if (J !== void 0)
                        if (this.stateChanges[R] && this.stateChanges[R][Nt]) {
                          this.deletedStates[R][Nt] = {};
                          for (yt in this.stateChanges[R][Nt])
                            this.deletedStates[R][Nt][yt] = null;
                        } else
                          this.deletedStates[R][Nt] = null;
                      else
                        this.deletedStates[R] = null;
                    }
                    getState(R, J) {
                      const yt = String(J), Tt = this.state[R] || {}, Nt = this.stateChanges[R] || {}, be = s.e({}, Tt[yt], Nt[yt]);
                      if (this.deletedStates[R] === null)
                        return {};
                      if (this.deletedStates[R]) {
                        const Re = this.deletedStates[R][J];
                        if (Re === null)
                          return {};
                        for (const je in Re)
                          delete be[je];
                      }
                      return be;
                    }
                    initializeTileState(R, J) {
                      R.setFeatureState(this.state, J);
                    }
                    coalesceChanges(R, J) {
                      const yt = {};
                      for (const Tt in this.stateChanges) {
                        this.state[Tt] = this.state[Tt] || {};
                        const Nt = {};
                        for (const be in this.stateChanges[Tt])
                          this.state[Tt][be] || (this.state[Tt][be] = {}), s.e(this.state[Tt][be], this.stateChanges[Tt][be]), Nt[be] = this.state[Tt][be];
                        yt[Tt] = Nt;
                      }
                      for (const Tt in this.deletedStates) {
                        this.state[Tt] = this.state[Tt] || {};
                        const Nt = {};
                        if (this.deletedStates[Tt] === null)
                          for (const be in this.state[Tt])
                            Nt[be] = {}, this.state[Tt][be] = {};
                        else
                          for (const be in this.deletedStates[Tt]) {
                            if (this.deletedStates[Tt][be] === null)
                              this.state[Tt][be] = {};
                            else
                              for (const je of Object.keys(this.deletedStates[Tt][be]))
                                delete this.state[Tt][be][je];
                            Nt[be] = this.state[Tt][be];
                          }
                        yt[Tt] = yt[Tt] || {}, s.e(yt[Tt], Nt);
                      }
                      if (this.stateChanges = {}, this.deletedStates = {}, Object.keys(yt).length !== 0)
                        for (const Tt in R)
                          R[Tt].setFeatureState(yt, J);
                    }
                  }
                  class yr extends s.E {
                    constructor(R, J, yt) {
                      super(), this.id = R, this.dispatcher = yt, this.on("data", (Tt) => this._dataHandler(Tt)), this.on("dataloading", () => {
                        this._sourceErrored = !1;
                      }), this.on("error", () => {
                        this._sourceErrored = this._source.loaded();
                      }), this._source = Sr(R, J, yt, this), this._tiles = {}, this._cache = new Tr(0, (Tt) => this._unloadTile(Tt)), this._timers = {}, this._cacheTimers = {}, this._maxTileCacheSize = null, this._maxTileCacheZoomLevels = null, this._loadedParentTiles = {}, this._coveredTiles = {}, this._state = new tr(), this._didEmitContent = !1, this._updated = !1;
                    }
                    onAdd(R) {
                      this.map = R, this._maxTileCacheSize = R ? R._maxTileCacheSize : null, this._maxTileCacheZoomLevels = R ? R._maxTileCacheZoomLevels : null, this._source && this._source.onAdd && this._source.onAdd(R);
                    }
                    onRemove(R) {
                      this.clearTiles(), this._source && this._source.onRemove && this._source.onRemove(R);
                    }
                    /**
                     * Return true if no tile data is pending, tiles will not change unless
                     * an additional API call is received.
                     */
                    loaded() {
                      if (this._sourceErrored)
                        return !0;
                      if (!this._sourceLoaded || !this._source.loaded())
                        return !1;
                      if ((this.used !== void 0 || this.usedForTerrain !== void 0) && !this.used && !this.usedForTerrain)
                        return !0;
                      if (!this._updated)
                        return !1;
                      for (const R in this._tiles) {
                        const J = this._tiles[R];
                        if (J.state !== "loaded" && J.state !== "errored")
                          return !1;
                      }
                      return !0;
                    }
                    getSource() {
                      return this._source;
                    }
                    pause() {
                      this._paused = !0;
                    }
                    resume() {
                      if (!this._paused)
                        return;
                      const R = this._shouldReloadOnResume;
                      this._paused = !1, this._shouldReloadOnResume = !1, R && this.reload(), this.transform && this.update(this.transform, this.terrain);
                    }
                    _loadTile(R, J, yt) {
                      return s._(this, void 0, void 0, function* () {
                        try {
                          yield this._source.loadTile(R), this._tileLoaded(R, J, yt);
                        } catch (Tt) {
                          R.state = "errored", Tt.status !== 404 ? this._source.fire(new s.j(Tt, { tile: R })) : this.update(this.transform, this.terrain);
                        }
                      });
                    }
                    _unloadTile(R) {
                      this._source.unloadTile && this._source.unloadTile(R);
                    }
                    _abortTile(R) {
                      this._source.abortTile && this._source.abortTile(R), this._source.fire(new s.k("dataabort", { tile: R, coord: R.tileID, dataType: "source" }));
                    }
                    serialize() {
                      return this._source.serialize();
                    }
                    prepare(R) {
                      this._source.prepare && this._source.prepare(), this._state.coalesceChanges(this._tiles, this.map ? this.map.painter : null);
                      for (const J in this._tiles) {
                        const yt = this._tiles[J];
                        yt.upload(R), yt.prepare(this.map.style.imageManager);
                      }
                    }
                    /**
                     * Return all tile ids ordered with z-order, and cast to numbers
                     */
                    getIds() {
                      return Object.values(this._tiles).map((R) => R.tileID).sort(Ir).map((R) => R.key);
                    }
                    getRenderableIds(R) {
                      const J = [];
                      for (const yt in this._tiles)
                        this._isIdRenderable(yt, R) && J.push(this._tiles[yt]);
                      return R ? J.sort((yt, Tt) => {
                        const Nt = yt.tileID, be = Tt.tileID, Re = new s.P(Nt.canonical.x, Nt.canonical.y)._rotate(this.transform.angle), je = new s.P(be.canonical.x, be.canonical.y)._rotate(this.transform.angle);
                        return Nt.overscaledZ - be.overscaledZ || je.y - Re.y || je.x - Re.x;
                      }).map((yt) => yt.tileID.key) : J.map((yt) => yt.tileID).sort(Ir).map((yt) => yt.key);
                    }
                    hasRenderableParent(R) {
                      const J = this.findLoadedParent(R, 0);
                      return J ? this._isIdRenderable(J.tileID.key) : !1;
                    }
                    _isIdRenderable(R, J) {
                      return this._tiles[R] && this._tiles[R].hasData() && !this._coveredTiles[R] && (J || !this._tiles[R].holdingForFade());
                    }
                    reload() {
                      if (this._paused) {
                        this._shouldReloadOnResume = !0;
                        return;
                      }
                      this._cache.reset();
                      for (const R in this._tiles)
                        this._tiles[R].state !== "errored" && this._reloadTile(R, "reloading");
                    }
                    _reloadTile(R, J) {
                      return s._(this, void 0, void 0, function* () {
                        const yt = this._tiles[R];
                        yt && (yt.state !== "loading" && (yt.state = J), yield this._loadTile(yt, R, J));
                      });
                    }
                    _tileLoaded(R, J, yt) {
                      R.timeAdded = d.now(), yt === "expired" && (R.refreshedUponExpiration = !0), this._setTileReloadTimer(J, R), this.getSource().type === "raster-dem" && R.dem && this._backfillDEM(R), this._state.initializeTileState(R, this.map ? this.map.painter : null), R.aborted || this._source.fire(new s.k("data", { dataType: "source", tile: R, coord: R.tileID }));
                    }
                    /**
                     * For raster terrain source, backfill DEM to eliminate visible tile boundaries
                     */
                    _backfillDEM(R) {
                      const J = this.getRenderableIds();
                      for (let Tt = 0; Tt < J.length; Tt++) {
                        const Nt = J[Tt];
                        if (R.neighboringTiles && R.neighboringTiles[Nt]) {
                          const be = this.getTileByID(Nt);
                          yt(R, be), yt(be, R);
                        }
                      }
                      function yt(Tt, Nt) {
                        Tt.needsHillshadePrepare = !0, Tt.needsTerrainPrepare = !0;
                        let be = Nt.tileID.canonical.x - Tt.tileID.canonical.x;
                        const Re = Nt.tileID.canonical.y - Tt.tileID.canonical.y, je = Math.pow(2, Tt.tileID.canonical.z), pr = Nt.tileID.key;
                        be === 0 && Re === 0 || Math.abs(Re) > 1 || (Math.abs(be) > 1 && (Math.abs(be + je) === 1 ? be += je : Math.abs(be - je) === 1 && (be -= je)), !(!Nt.dem || !Tt.dem) && (Tt.dem.backfillBorder(Nt.dem, be, Re), Tt.neighboringTiles && Tt.neighboringTiles[pr] && (Tt.neighboringTiles[pr].backfilled = !0)));
                      }
                    }
                    /**
                     * Get a specific tile by TileID
                     */
                    getTile(R) {
                      return this.getTileByID(R.key);
                    }
                    /**
                     * Get a specific tile by id
                     */
                    getTileByID(R) {
                      return this._tiles[R];
                    }
                    /**
                     * For a given set of tiles, retain children that are loaded and have a zoom
                     * between `zoom` (exclusive) and `maxCoveringZoom` (inclusive)
                     */
                    _retainLoadedChildren(R, J, yt, Tt) {
                      for (const Nt in this._tiles) {
                        let be = this._tiles[Nt];
                        if (Tt[Nt] || !be.hasData() || be.tileID.overscaledZ <= J || be.tileID.overscaledZ > yt)
                          continue;
                        let Re = be.tileID;
                        for (; be && be.tileID.overscaledZ > J + 1; ) {
                          const pr = be.tileID.scaledTo(be.tileID.overscaledZ - 1);
                          be = this._tiles[pr.key], be && be.hasData() && (Re = pr);
                        }
                        let je = Re;
                        for (; je.overscaledZ > J; )
                          if (je = je.scaledTo(je.overscaledZ - 1), R[je.key]) {
                            Tt[Re.key] = Re;
                            break;
                          }
                      }
                    }
                    /**
                     * Find a loaded parent of the given tile (up to minCoveringZoom)
                     */
                    findLoadedParent(R, J) {
                      if (R.key in this._loadedParentTiles) {
                        const yt = this._loadedParentTiles[R.key];
                        return yt && yt.tileID.overscaledZ >= J ? yt : null;
                      }
                      for (let yt = R.overscaledZ - 1; yt >= J; yt--) {
                        const Tt = R.scaledTo(yt), Nt = this._getLoadedTile(Tt);
                        if (Nt)
                          return Nt;
                      }
                    }
                    /**
                     * Find a loaded sibling of the given tile
                     */
                    findLoadedSibling(R) {
                      return this._getLoadedTile(R);
                    }
                    _getLoadedTile(R) {
                      const J = this._tiles[R.key];
                      return J && J.hasData() ? J : this._cache.getByKey(R.wrapped().key);
                    }
                    /**
                     * Resizes the tile cache based on the current viewport's size
                     * or the maxTileCacheSize option passed during map creation
                     *
                     * Larger viewports use more tiles and need larger caches. Larger viewports
                     * are more likely to be found on devices with more memory and on pages where
                     * the map is more important.
                     */
                    updateCacheSize(R) {
                      const J = Math.ceil(R.width / this._source.tileSize) + 1, yt = Math.ceil(R.height / this._source.tileSize) + 1, Tt = J * yt, Nt = this._maxTileCacheZoomLevels === null ? s.a.MAX_TILE_CACHE_ZOOM_LEVELS : this._maxTileCacheZoomLevels, be = Math.floor(Tt * Nt), Re = typeof this._maxTileCacheSize == "number" ? Math.min(this._maxTileCacheSize, be) : be;
                      this._cache.setMaxSize(Re);
                    }
                    handleWrapJump(R) {
                      const J = this._prevLng === void 0 ? R : this._prevLng, Tt = (R - J) / 360, Nt = Math.round(Tt);
                      if (this._prevLng = R, Nt) {
                        const be = {};
                        for (const Re in this._tiles) {
                          const je = this._tiles[Re];
                          je.tileID = je.tileID.unwrapTo(je.tileID.wrap + Nt), be[je.tileID.key] = je;
                        }
                        this._tiles = be;
                        for (const Re in this._timers)
                          clearTimeout(this._timers[Re]), delete this._timers[Re];
                        for (const Re in this._tiles) {
                          const je = this._tiles[Re];
                          this._setTileReloadTimer(Re, je);
                        }
                      }
                    }
                    _updateCoveredAndRetainedTiles(R, J, yt, Tt, Nt, be) {
                      const Re = {}, je = {}, pr = Object.keys(R), br = d.now();
                      for (const Ar of pr) {
                        const qr = R[Ar], vn = this._tiles[Ar];
                        if (!vn || vn.fadeEndTime !== 0 && vn.fadeEndTime <= br)
                          continue;
                        const bn = this.findLoadedParent(qr, J), Rn = this.findLoadedSibling(qr), Gn = bn || Rn || null;
                        Gn && (this._addTile(Gn.tileID), Re[Gn.tileID.key] = Gn.tileID), je[Ar] = qr;
                      }
                      this._retainLoadedChildren(je, Tt, yt, R);
                      for (const Ar in Re)
                        R[Ar] || (this._coveredTiles[Ar] = !0, R[Ar] = Re[Ar]);
                      if (be) {
                        const Ar = {}, qr = {};
                        for (const vn of Nt)
                          this._tiles[vn.key].hasData() ? Ar[vn.key] = vn : qr[vn.key] = vn;
                        for (const vn in qr) {
                          const bn = qr[vn].children(this._source.maxzoom);
                          this._tiles[bn[0].key] && this._tiles[bn[1].key] && this._tiles[bn[2].key] && this._tiles[bn[3].key] && (Ar[bn[0].key] = R[bn[0].key] = bn[0], Ar[bn[1].key] = R[bn[1].key] = bn[1], Ar[bn[2].key] = R[bn[2].key] = bn[2], Ar[bn[3].key] = R[bn[3].key] = bn[3], delete qr[vn]);
                        }
                        for (const vn in qr) {
                          const bn = qr[vn], Rn = this.findLoadedParent(bn, this._source.minzoom), Gn = this.findLoadedSibling(bn), ii = Rn || Gn || null;
                          if (ii) {
                            Ar[ii.tileID.key] = R[ii.tileID.key] = ii.tileID;
                            for (const oi in Ar)
                              Ar[oi].isChildOf(ii.tileID) && delete Ar[oi];
                          }
                        }
                        for (const vn in this._tiles)
                          Ar[vn] || (this._coveredTiles[vn] = !0);
                      }
                    }
                    /**
                     * Removes tiles that are outside the viewport and adds new tiles that
                     * are inside the viewport.
                     */
                    update(R, J) {
                      if (!this._sourceLoaded || this._paused)
                        return;
                      this.transform = R, this.terrain = J, this.updateCacheSize(R), this.handleWrapJump(this.transform.center.lng), this._coveredTiles = {};
                      let yt;
                      !this.used && !this.usedForTerrain ? yt = [] : this._source.tileID ? yt = R.getVisibleUnwrappedCoordinates(this._source.tileID).map((br) => new s.S(br.canonical.z, br.wrap, br.canonical.z, br.canonical.x, br.canonical.y)) : (yt = R.coveringTiles({
                        tileSize: this.usedForTerrain ? this.tileSize : this._source.tileSize,
                        minzoom: this._source.minzoom,
                        maxzoom: this._source.maxzoom,
                        roundZoom: this.usedForTerrain ? !1 : this._source.roundZoom,
                        reparseOverscaled: this._source.reparseOverscaled,
                        terrain: J
                      }), this._source.hasTile && (yt = yt.filter((br) => this._source.hasTile(br))));
                      const Tt = R.coveringZoomLevel(this._source), Nt = Math.max(Tt - yr.maxOverzooming, this._source.minzoom), be = Math.max(Tt + yr.maxUnderzooming, this._source.minzoom);
                      if (this.usedForTerrain) {
                        const br = {};
                        for (const Ar of yt)
                          if (Ar.canonical.z > this._source.minzoom) {
                            const qr = Ar.scaledTo(Ar.canonical.z - 1);
                            br[qr.key] = qr;
                            const vn = Ar.scaledTo(Math.max(this._source.minzoom, Math.min(Ar.canonical.z, 5)));
                            br[vn.key] = vn;
                          }
                        yt = yt.concat(Object.values(br));
                      }
                      const Re = yt.length === 0 && !this._updated && this._didEmitContent;
                      this._updated = !0, Re && this.fire(new s.k("data", { sourceDataType: "idle", dataType: "source", sourceId: this.id }));
                      const je = this._updateRetainedTiles(yt, Tt);
                      Cr(this._source.type) && this._updateCoveredAndRetainedTiles(je, Nt, be, Tt, yt, J);
                      for (const br in je)
                        this._tiles[br].clearFadeHold();
                      const pr = s.ac(this._tiles, je);
                      for (const br of pr) {
                        const Ar = this._tiles[br];
                        Ar.hasSymbolBuckets && !Ar.holdingForFade() ? Ar.setHoldDuration(this.map._fadeDuration) : (!Ar.hasSymbolBuckets || Ar.symbolFadeFinished()) && this._removeTile(br);
                      }
                      this._updateLoadedParentTileCache(), this._updateLoadedSiblingTileCache();
                    }
                    releaseSymbolFadeTiles() {
                      for (const R in this._tiles)
                        this._tiles[R].holdingForFade() && this._removeTile(R);
                    }
                    _updateRetainedTiles(R, J) {
                      var yt;
                      const Tt = {}, Nt = {}, be = Math.max(J - yr.maxOverzooming, this._source.minzoom), Re = Math.max(J + yr.maxUnderzooming, this._source.minzoom), je = {};
                      for (const pr of R) {
                        const br = this._addTile(pr);
                        Tt[pr.key] = pr, !br.hasData() && J < this._source.maxzoom && (je[pr.key] = pr);
                      }
                      this._retainLoadedChildren(je, J, Re, Tt);
                      for (const pr of R) {
                        let br = this._tiles[pr.key];
                        if (br.hasData())
                          continue;
                        if (J + 1 > this._source.maxzoom) {
                          const qr = pr.children(this._source.maxzoom)[0], vn = this.getTile(qr);
                          if (vn && vn.hasData()) {
                            Tt[qr.key] = qr;
                            continue;
                          }
                        } else {
                          const qr = pr.children(this._source.maxzoom);
                          if (Tt[qr[0].key] && Tt[qr[1].key] && Tt[qr[2].key] && Tt[qr[3].key])
                            continue;
                        }
                        let Ar = br.wasRequested();
                        for (let qr = pr.overscaledZ - 1; qr >= be; --qr) {
                          const vn = pr.scaledTo(qr);
                          if (Nt[vn.key])
                            break;
                          if (Nt[vn.key] = !0, br = this.getTile(vn), !br && Ar && (br = this._addTile(vn)), br) {
                            const bn = br.hasData();
                            if ((bn || !(!((yt = this.map) === null || yt === void 0) && yt.cancelPendingTileRequestsWhileZooming) || Ar) && (Tt[vn.key] = vn), Ar = br.wasRequested(), bn)
                              break;
                          }
                        }
                      }
                      return Tt;
                    }
                    _updateLoadedParentTileCache() {
                      this._loadedParentTiles = {};
                      for (const R in this._tiles) {
                        const J = [];
                        let yt, Tt = this._tiles[R].tileID;
                        for (; Tt.overscaledZ > 0; ) {
                          if (Tt.key in this._loadedParentTiles) {
                            yt = this._loadedParentTiles[Tt.key];
                            break;
                          }
                          J.push(Tt.key);
                          const Nt = Tt.scaledTo(Tt.overscaledZ - 1);
                          if (yt = this._getLoadedTile(Nt), yt)
                            break;
                          Tt = Nt;
                        }
                        for (const Nt of J)
                          this._loadedParentTiles[Nt] = yt;
                      }
                    }
                    /**
                     * Update the cache of loaded sibling tiles
                     *
                     * Sibling tiles are tiles that share the same zoom level and
                     * x/y position but have different wrap values
                     * Maintaining sibling tile cache allows fading from old to new tiles
                     * of the same position and zoom level
                     */
                    _updateLoadedSiblingTileCache() {
                      this._loadedSiblingTiles = {};
                      for (const R in this._tiles) {
                        const J = this._tiles[R].tileID, yt = this._getLoadedTile(J);
                        this._loadedSiblingTiles[J.key] = yt;
                      }
                    }
                    /**
                     * Add a tile, given its coordinate, to the pyramid.
                     */
                    _addTile(R) {
                      let J = this._tiles[R.key];
                      if (J)
                        return J;
                      J = this._cache.getAndRemove(R), J && (this._setTileReloadTimer(R.key, J), J.tileID = R, this._state.initializeTileState(J, this.map ? this.map.painter : null), this._cacheTimers[R.key] && (clearTimeout(this._cacheTimers[R.key]), delete this._cacheTimers[R.key], this._setTileReloadTimer(R.key, J)));
                      const yt = J;
                      return J || (J = new Er(R, this._source.tileSize * R.overscaleFactor()), this._loadTile(J, R.key, J.state)), J.uses++, this._tiles[R.key] = J, yt || this._source.fire(new s.k("dataloading", { tile: J, coord: J.tileID, dataType: "source" })), J;
                    }
                    _setTileReloadTimer(R, J) {
                      R in this._timers && (clearTimeout(this._timers[R]), delete this._timers[R]);
                      const yt = J.getExpiryTimeout();
                      yt && (this._timers[R] = setTimeout(() => {
                        this._reloadTile(R, "expired"), delete this._timers[R];
                      }, yt));
                    }
                    /**
                     * Remove a tile, given its id, from the pyramid
                     */
                    _removeTile(R) {
                      const J = this._tiles[R];
                      J && (J.uses--, delete this._tiles[R], this._timers[R] && (clearTimeout(this._timers[R]), delete this._timers[R]), !(J.uses > 0) && (J.hasData() && J.state !== "reloading" ? this._cache.add(J.tileID, J, J.getExpiryTimeout()) : (J.aborted = !0, this._abortTile(J), this._unloadTile(J))));
                    }
                    /** @internal */
                    _dataHandler(R) {
                      const J = R.sourceDataType;
                      R.dataType === "source" && J === "metadata" && (this._sourceLoaded = !0), this._sourceLoaded && !this._paused && R.dataType === "source" && J === "content" && (this.reload(), this.transform && this.update(this.transform, this.terrain), this._didEmitContent = !0);
                    }
                    /**
                     * Remove all tiles from this pyramid
                     */
                    clearTiles() {
                      this._shouldReloadOnResume = !1, this._paused = !1;
                      for (const R in this._tiles)
                        this._removeTile(R);
                      this._cache.reset();
                    }
                    /**
                     * Search through our current tiles and attempt to find the tiles that
                     * cover the given bounds.
                     * @param pointQueryGeometry - coordinates of the corners of bounding rectangle
                     * @returns result items have `{tile, minX, maxX, minY, maxY}`, where min/max bounding values are the given bounds transformed in into the coordinate space of this tile.
                     */
                    tilesIn(R, J, yt) {
                      const Tt = [], Nt = this.transform;
                      if (!Nt)
                        return Tt;
                      const be = yt ? Nt.getCameraQueryGeometry(R) : R, Re = R.map((bn) => Nt.pointCoordinate(bn, this.terrain)), je = be.map((bn) => Nt.pointCoordinate(bn, this.terrain)), pr = this.getIds();
                      let br = 1 / 0, Ar = 1 / 0, qr = -1 / 0, vn = -1 / 0;
                      for (const bn of je)
                        br = Math.min(br, bn.x), Ar = Math.min(Ar, bn.y), qr = Math.max(qr, bn.x), vn = Math.max(vn, bn.y);
                      for (let bn = 0; bn < pr.length; bn++) {
                        const Rn = this._tiles[pr[bn]];
                        if (Rn.holdingForFade())
                          continue;
                        const Gn = Rn.tileID, ii = Math.pow(2, Nt.zoom - Rn.tileID.overscaledZ), oi = J * Rn.queryPadding * s.X / Rn.tileSize / ii, Xn = [
                          Gn.getTilePoint(new s.Z(br, Ar)),
                          Gn.getTilePoint(new s.Z(qr, vn))
                        ];
                        if (Xn[0].x - oi < s.X && Xn[0].y - oi < s.X && Xn[1].x + oi >= 0 && Xn[1].y + oi >= 0) {
                          const Ri = Re.map((Oi) => Gn.getTilePoint(Oi)), Ci = je.map((Oi) => Gn.getTilePoint(Oi));
                          Tt.push({
                            tile: Rn,
                            tileID: Gn,
                            queryGeometry: Ri,
                            cameraQueryGeometry: Ci,
                            scale: ii
                          });
                        }
                      }
                      return Tt;
                    }
                    getVisibleCoordinates(R) {
                      const J = this.getRenderableIds(R).map((yt) => this._tiles[yt].tileID);
                      for (const yt of J)
                        yt.posMatrix = this.transform.calculatePosMatrix(yt.toUnwrapped());
                      return J;
                    }
                    hasTransition() {
                      if (this._source.hasTransition())
                        return !0;
                      if (Cr(this._source.type)) {
                        const R = d.now();
                        for (const J in this._tiles)
                          if (this._tiles[J].fadeEndTime >= R)
                            return !0;
                      }
                      return !1;
                    }
                    /**
                     * Set the value of a particular state for a feature
                     */
                    setFeatureState(R, J, yt) {
                      R = R || "_geojsonTileLayer", this._state.updateState(R, J, yt);
                    }
                    /**
                     * Resets the value of a particular state key for a feature
                     */
                    removeFeatureState(R, J, yt) {
                      R = R || "_geojsonTileLayer", this._state.removeFeatureState(R, J, yt);
                    }
                    /**
                     * Get the entire state object for a feature
                     */
                    getFeatureState(R, J) {
                      return R = R || "_geojsonTileLayer", this._state.getState(R, J);
                    }
                    /**
                     * Sets the set of keys that the tile depends on. This allows tiles to
                     * be reloaded when their dependencies change.
                     */
                    setDependencies(R, J, yt) {
                      const Tt = this._tiles[R];
                      Tt && Tt.setDependencies(J, yt);
                    }
                    /**
                     * Reloads all tiles that depend on the given keys.
                     */
                    reloadTilesForDependencies(R, J) {
                      for (const yt in this._tiles)
                        this._tiles[yt].hasDependency(R, J) && this._reloadTile(yt, "reloading");
                      this._cache.filter((yt) => !yt.hasDependency(R, J));
                    }
                  }
                  yr.maxOverzooming = 10, yr.maxUnderzooming = 3;
                  function Ir(Ot, R) {
                    const J = Math.abs(Ot.wrap * 2) - +(Ot.wrap < 0), yt = Math.abs(R.wrap * 2) - +(R.wrap < 0);
                    return Ot.overscaledZ - R.overscaledZ || yt - J || R.canonical.y - Ot.canonical.y || R.canonical.x - Ot.canonical.x;
                  }
                  function Cr(Ot) {
                    return Ot === "raster" || Ot === "image" || Ot === "video";
                  }
                  class _r {
                    constructor(R, J) {
                      this.reset(R, J);
                    }
                    reset(R, J) {
                      this.points = R || [], this._distances = [0];
                      for (let yt = 1; yt < this.points.length; yt++)
                        this._distances[yt] = this._distances[yt - 1] + this.points[yt].dist(this.points[yt - 1]);
                      this.length = this._distances[this._distances.length - 1], this.padding = Math.min(J || 0, this.length * 0.5), this.paddedLength = this.length - this.padding * 2;
                    }
                    lerp(R) {
                      if (this.points.length === 1)
                        return this.points[0];
                      R = s.ad(R, 0, 1);
                      let J = 1, yt = this._distances[J];
                      const Tt = R * this.paddedLength + this.padding;
                      for (; yt < Tt && J < this._distances.length; )
                        yt = this._distances[++J];
                      const Nt = J - 1, be = this._distances[Nt], Re = yt - be, je = Re > 0 ? (Tt - be) / Re : 0;
                      return this.points[Nt].mult(1 - je).add(this.points[J].mult(je));
                    }
                  }
                  function Zr(Ot, R) {
                    let J = !0;
                    return Ot === "always" || (Ot === "never" || R === "never") && (J = !1), J;
                  }
                  class ln {
                    constructor(R, J, yt) {
                      const Tt = this.boxCells = [], Nt = this.circleCells = [];
                      this.xCellCount = Math.ceil(R / yt), this.yCellCount = Math.ceil(J / yt);
                      for (let be = 0; be < this.xCellCount * this.yCellCount; be++)
                        Tt.push([]), Nt.push([]);
                      this.circleKeys = [], this.boxKeys = [], this.bboxes = [], this.circles = [], this.width = R, this.height = J, this.xScale = this.xCellCount / R, this.yScale = this.yCellCount / J, this.boxUid = 0, this.circleUid = 0;
                    }
                    keysLength() {
                      return this.boxKeys.length + this.circleKeys.length;
                    }
                    insert(R, J, yt, Tt, Nt) {
                      this._forEachCell(J, yt, Tt, Nt, this._insertBoxCell, this.boxUid++), this.boxKeys.push(R), this.bboxes.push(J), this.bboxes.push(yt), this.bboxes.push(Tt), this.bboxes.push(Nt);
                    }
                    insertCircle(R, J, yt, Tt) {
                      this._forEachCell(J - Tt, yt - Tt, J + Tt, yt + Tt, this._insertCircleCell, this.circleUid++), this.circleKeys.push(R), this.circles.push(J), this.circles.push(yt), this.circles.push(Tt);
                    }
                    _insertBoxCell(R, J, yt, Tt, Nt, be) {
                      this.boxCells[Nt].push(be);
                    }
                    _insertCircleCell(R, J, yt, Tt, Nt, be) {
                      this.circleCells[Nt].push(be);
                    }
                    _query(R, J, yt, Tt, Nt, be, Re) {
                      if (yt < 0 || R > this.width || Tt < 0 || J > this.height)
                        return [];
                      const je = [];
                      if (R <= 0 && J <= 0 && this.width <= yt && this.height <= Tt) {
                        if (Nt)
                          return [{
                            key: null,
                            x1: R,
                            y1: J,
                            x2: yt,
                            y2: Tt
                          }];
                        for (let pr = 0; pr < this.boxKeys.length; pr++)
                          je.push({
                            key: this.boxKeys[pr],
                            x1: this.bboxes[pr * 4],
                            y1: this.bboxes[pr * 4 + 1],
                            x2: this.bboxes[pr * 4 + 2],
                            y2: this.bboxes[pr * 4 + 3]
                          });
                        for (let pr = 0; pr < this.circleKeys.length; pr++) {
                          const br = this.circles[pr * 3], Ar = this.circles[pr * 3 + 1], qr = this.circles[pr * 3 + 2];
                          je.push({
                            key: this.circleKeys[pr],
                            x1: br - qr,
                            y1: Ar - qr,
                            x2: br + qr,
                            y2: Ar + qr
                          });
                        }
                      } else {
                        const pr = {
                          hitTest: Nt,
                          overlapMode: be,
                          seenUids: { box: {}, circle: {} }
                        };
                        this._forEachCell(R, J, yt, Tt, this._queryCell, je, pr, Re);
                      }
                      return je;
                    }
                    query(R, J, yt, Tt) {
                      return this._query(R, J, yt, Tt, !1, null);
                    }
                    hitTest(R, J, yt, Tt, Nt, be) {
                      return this._query(R, J, yt, Tt, !0, Nt, be).length > 0;
                    }
                    hitTestCircle(R, J, yt, Tt, Nt) {
                      const be = R - yt, Re = R + yt, je = J - yt, pr = J + yt;
                      if (Re < 0 || be > this.width || pr < 0 || je > this.height)
                        return !1;
                      const br = [], Ar = {
                        hitTest: !0,
                        overlapMode: Tt,
                        circle: { x: R, y: J, radius: yt },
                        seenUids: { box: {}, circle: {} }
                      };
                      return this._forEachCell(be, je, Re, pr, this._queryCellCircle, br, Ar, Nt), br.length > 0;
                    }
                    _queryCell(R, J, yt, Tt, Nt, be, Re, je) {
                      const { seenUids: pr, hitTest: br, overlapMode: Ar } = Re, qr = this.boxCells[Nt];
                      if (qr !== null) {
                        const bn = this.bboxes;
                        for (const Rn of qr)
                          if (!pr.box[Rn]) {
                            pr.box[Rn] = !0;
                            const Gn = Rn * 4, ii = this.boxKeys[Rn];
                            if (R <= bn[Gn + 2] && J <= bn[Gn + 3] && yt >= bn[Gn + 0] && Tt >= bn[Gn + 1] && (!je || je(ii)) && (!br || !Zr(Ar, ii.overlapMode)) && (be.push({
                              key: ii,
                              x1: bn[Gn],
                              y1: bn[Gn + 1],
                              x2: bn[Gn + 2],
                              y2: bn[Gn + 3]
                            }), br))
                              return !0;
                          }
                      }
                      const vn = this.circleCells[Nt];
                      if (vn !== null) {
                        const bn = this.circles;
                        for (const Rn of vn)
                          if (!pr.circle[Rn]) {
                            pr.circle[Rn] = !0;
                            const Gn = Rn * 3, ii = this.circleKeys[Rn];
                            if (this._circleAndRectCollide(bn[Gn], bn[Gn + 1], bn[Gn + 2], R, J, yt, Tt) && (!je || je(ii)) && (!br || !Zr(Ar, ii.overlapMode))) {
                              const oi = bn[Gn], Xn = bn[Gn + 1], Ri = bn[Gn + 2];
                              if (be.push({
                                key: ii,
                                x1: oi - Ri,
                                y1: Xn - Ri,
                                x2: oi + Ri,
                                y2: Xn + Ri
                              }), br)
                                return !0;
                            }
                          }
                      }
                      return !1;
                    }
                    _queryCellCircle(R, J, yt, Tt, Nt, be, Re, je) {
                      const { circle: pr, seenUids: br, overlapMode: Ar } = Re, qr = this.boxCells[Nt];
                      if (qr !== null) {
                        const bn = this.bboxes;
                        for (const Rn of qr)
                          if (!br.box[Rn]) {
                            br.box[Rn] = !0;
                            const Gn = Rn * 4, ii = this.boxKeys[Rn];
                            if (this._circleAndRectCollide(pr.x, pr.y, pr.radius, bn[Gn + 0], bn[Gn + 1], bn[Gn + 2], bn[Gn + 3]) && (!je || je(ii)) && !Zr(Ar, ii.overlapMode))
                              return be.push(!0), !0;
                          }
                      }
                      const vn = this.circleCells[Nt];
                      if (vn !== null) {
                        const bn = this.circles;
                        for (const Rn of vn)
                          if (!br.circle[Rn]) {
                            br.circle[Rn] = !0;
                            const Gn = Rn * 3, ii = this.circleKeys[Rn];
                            if (this._circlesCollide(bn[Gn], bn[Gn + 1], bn[Gn + 2], pr.x, pr.y, pr.radius) && (!je || je(ii)) && !Zr(Ar, ii.overlapMode))
                              return be.push(!0), !0;
                          }
                      }
                    }
                    _forEachCell(R, J, yt, Tt, Nt, be, Re, je) {
                      const pr = this._convertToXCellCoord(R), br = this._convertToYCellCoord(J), Ar = this._convertToXCellCoord(yt), qr = this._convertToYCellCoord(Tt);
                      for (let vn = pr; vn <= Ar; vn++)
                        for (let bn = br; bn <= qr; bn++) {
                          const Rn = this.xCellCount * bn + vn;
                          if (Nt.call(this, R, J, yt, Tt, Rn, be, Re, je))
                            return;
                        }
                    }
                    _convertToXCellCoord(R) {
                      return Math.max(0, Math.min(this.xCellCount - 1, Math.floor(R * this.xScale)));
                    }
                    _convertToYCellCoord(R) {
                      return Math.max(0, Math.min(this.yCellCount - 1, Math.floor(R * this.yScale)));
                    }
                    _circlesCollide(R, J, yt, Tt, Nt, be) {
                      const Re = Tt - R, je = Nt - J, pr = yt + be;
                      return pr * pr > Re * Re + je * je;
                    }
                    _circleAndRectCollide(R, J, yt, Tt, Nt, be, Re) {
                      const je = (be - Tt) / 2, pr = Math.abs(R - (Tt + je));
                      if (pr > je + yt)
                        return !1;
                      const br = (Re - Nt) / 2, Ar = Math.abs(J - (Nt + br));
                      if (Ar > br + yt)
                        return !1;
                      if (pr <= je || Ar <= br)
                        return !0;
                      const qr = pr - je, vn = Ar - br;
                      return qr * qr + vn * vn <= yt * yt;
                    }
                  }
                  function Jr(Ot, R, J, yt, Tt) {
                    const Nt = s.H();
                    return R ? (s.K(Nt, Nt, [1 / Tt, 1 / Tt, 1]), J || s.ae(Nt, Nt, yt.angle)) : s.L(Nt, yt.labelPlaneMatrix, Ot), Nt;
                  }
                  function Zn(Ot, R, J, yt, Tt) {
                    if (R) {
                      const Nt = s.af(Ot);
                      return s.K(Nt, Nt, [Tt, Tt, 1]), J || s.ae(Nt, Nt, -yt.angle), Nt;
                    } else
                      return yt.glCoordMatrix;
                  }
                  function fn(Ot, R, J) {
                    let yt;
                    J ? (yt = [Ot.x, Ot.y, J(Ot.x, Ot.y), 1], s.ag(yt, yt, R)) : (yt = [Ot.x, Ot.y, 0, 1], rn(yt, yt, R));
                    const Tt = yt[3];
                    return {
                      point: new s.P(yt[0] / Tt, yt[1] / Tt),
                      signedDistanceFromCamera: Tt,
                      isOccluded: !1
                    };
                  }
                  function hi(Ot, R) {
                    return 0.5 + 0.5 * (Ot / R);
                  }
                  function Vn(Ot, R) {
                    return Ot.x >= -R[0] && Ot.x <= R[0] && Ot.y >= -R[1] && Ot.y <= R[1];
                  }
                  function jr(Ot, R, J, yt, Tt, Nt, be, Re, je, pr, br, Ar, qr, vn, bn) {
                    const Rn = yt ? Ot.textSizeData : Ot.iconSizeData, Gn = s.ah(Rn, J.transform.zoom), ii = [256 / J.width * 2 + 1, 256 / J.height * 2 + 1], oi = yt ? Ot.text.dynamicLayoutVertexArray : Ot.icon.dynamicLayoutVertexArray;
                    oi.clear();
                    const Xn = Ot.lineVertexArray, Ri = yt ? Ot.text.placedSymbolArray : Ot.icon.placedSymbolArray, Ci = J.transform.width / J.transform.height;
                    let Oi = !1;
                    for (let pa = 0; pa < Ri.length; pa++) {
                      const Sa = Ri.get(pa);
                      if (Sa.hidden || Sa.writingMode === s.ai.vertical && !Oi) {
                        ci(Sa.numGlyphs, oi);
                        continue;
                      }
                      Oi = !1;
                      const ao = fn(new s.P(Sa.anchorX, Sa.anchorY), R, bn);
                      if (!Vn(ao.point, ii)) {
                        ci(Sa.numGlyphs, oi);
                        continue;
                      }
                      const Xa = ao.signedDistanceFromCamera, La = hi(J.transform.cameraToCenterDistance, Xa), xa = s.aj(Rn, Gn, Sa), Ya = be ? xa / La : xa * La, Va = new s.P(Sa.anchorX, Sa.anchorY), ua = {
                        getElevation: bn,
                        labelPlaneMatrix: Tt,
                        lineVertexArray: Xn,
                        pitchWithMap: be,
                        projectionCache: { projections: {}, offsets: {}, cachedAnchorPoint: void 0, anyProjectionOccluded: !1 },
                        projection: pr,
                        tileAnchorPoint: Va,
                        unwrappedTileID: br,
                        width: Ar,
                        height: qr,
                        translation: vn
                      }, ca = sn(ua, Sa, Ya, !1, Re, R, Nt, Ot.glyphOffsetArray, oi, Ci, je);
                      Oi = ca.useVertical, (ca.notEnoughRoom || Oi || ca.needsFlipping && sn(ua, Sa, Ya, !0, Re, R, Nt, Ot.glyphOffsetArray, oi, Ci, je).notEnoughRoom) && ci(Sa.numGlyphs, oi);
                    }
                    yt ? Ot.text.dynamicLayoutVertexBuffer.updateData(oi) : Ot.icon.dynamicLayoutVertexBuffer.updateData(oi);
                  }
                  function zr(Ot, R, J, yt, Tt, Nt, be, Re) {
                    const je = Nt.glyphStartIndex + Nt.numGlyphs, pr = Nt.lineStartIndex, br = Nt.lineStartIndex + Nt.lineLength, Ar = R.getoffsetX(Nt.glyphStartIndex), qr = R.getoffsetX(je - 1), vn = Mi(Ot * Ar, J, yt, Tt, Nt.segment, pr, br, Re, be);
                    if (!vn)
                      return null;
                    const bn = Mi(Ot * qr, J, yt, Tt, Nt.segment, pr, br, Re, be);
                    return !bn || Re.projectionCache.anyProjectionOccluded ? null : { first: vn, last: bn };
                  }
                  function Tn(Ot, R, J, yt) {
                    if (Ot === s.ai.horizontal) {
                      const Tt = Math.abs(J.y - R.y), Nt = Math.abs(J.x - R.x) * yt;
                      if (Tt > Nt)
                        return { useVertical: !0 };
                    }
                    return (Ot === s.ai.vertical ? R.y < J.y : R.x > J.x) ? { needsFlipping: !0 } : null;
                  }
                  function sn(Ot, R, J, yt, Tt, Nt, be, Re, je, pr, br) {
                    const Ar = J / 24, qr = R.lineOffsetX * Ar, vn = R.lineOffsetY * Ar;
                    let bn;
                    if (R.numGlyphs > 1) {
                      const Rn = R.glyphStartIndex + R.numGlyphs, Gn = R.lineStartIndex, ii = R.lineStartIndex + R.lineLength, oi = zr(Ar, Re, qr, vn, yt, R, br, Ot);
                      if (!oi)
                        return { notEnoughRoom: !0 };
                      const Xn = fn(oi.first.point, be, Ot.getElevation).point, Ri = fn(oi.last.point, be, Ot.getElevation).point;
                      if (Tt && !yt) {
                        const Ci = Tn(R.writingMode, Xn, Ri, pr);
                        if (Ci)
                          return Ci;
                      }
                      bn = [oi.first];
                      for (let Ci = R.glyphStartIndex + 1; Ci < Rn - 1; Ci++)
                        bn.push(Mi(Ar * Re.getoffsetX(Ci), qr, vn, yt, R.segment, Gn, ii, Ot, br));
                      bn.push(oi.last);
                    } else {
                      if (Tt && !yt) {
                        const Gn = fn(Ot.tileAnchorPoint, Nt, Ot.getElevation).point, ii = R.lineStartIndex + R.segment + 1, oi = new s.P(Ot.lineVertexArray.getx(ii), Ot.lineVertexArray.gety(ii)), Xn = fn(oi, Nt, Ot.getElevation), Ri = Xn.signedDistanceFromCamera > 0 ? Xn.point : $n(Ot.tileAnchorPoint, oi, Gn, 1, Nt, Ot), Ci = Tn(R.writingMode, Gn, Ri, pr);
                        if (Ci)
                          return Ci;
                      }
                      const Rn = Mi(Ar * Re.getoffsetX(R.glyphStartIndex), qr, vn, yt, R.segment, R.lineStartIndex, R.lineStartIndex + R.lineLength, Ot, br);
                      if (!Rn || Ot.projectionCache.anyProjectionOccluded)
                        return { notEnoughRoom: !0 };
                      bn = [Rn];
                    }
                    for (const Rn of bn)
                      s.ak(je, Rn.point, Rn.angle);
                    return {};
                  }
                  function $n(Ot, R, J, yt, Tt, Nt) {
                    return An(Ot, R, J, yt, Tt, Nt);
                  }
                  function kn(Ot, R, J, yt, Tt) {
                    return An(Ot, R, J, yt, void 0, Tt);
                  }
                  function An(Ot, R, J, yt, Tt, Nt) {
                    const be = Ot.add(Ot.sub(R)._unit()), Re = Tt !== void 0 ? fn(be, Tt, Nt.getElevation).point : si(be.x, be.y, Nt).point, je = J.sub(Re);
                    return J.add(je._mult(yt / je.mag()));
                  }
                  function qn(Ot, R, J) {
                    const yt = R.projectionCache;
                    if (yt.projections[Ot])
                      return yt.projections[Ot];
                    const Tt = new s.P(R.lineVertexArray.getx(Ot), R.lineVertexArray.gety(Ot)), Nt = si(Tt.x, Tt.y, R);
                    if (Nt.signedDistanceFromCamera > 0)
                      return yt.projections[Ot] = Nt.point, yt.anyProjectionOccluded = yt.anyProjectionOccluded || Nt.isOccluded, Nt.point;
                    const be = Ot - J.direction, Re = J.distanceFromAnchor === 0 ? R.tileAnchorPoint : new s.P(R.lineVertexArray.getx(be), R.lineVertexArray.gety(be)), je = J.absOffsetX - J.distanceFromAnchor + 1;
                    return kn(Re, Tt, J.previousVertex, je, R);
                  }
                  function si(Ot, R, J) {
                    const yt = Ot + J.translation[0], Tt = R + J.translation[1];
                    let Nt;
                    return !J.pitchWithMap && J.projection.useSpecialProjectionForSymbols ? (Nt = J.projection.projectTileCoordinates(yt, Tt, J.unwrappedTileID, J.getElevation), Nt.point.x = (Nt.point.x * 0.5 + 0.5) * J.width, Nt.point.y = (-Nt.point.y * 0.5 + 0.5) * J.height) : (Nt = fn(new s.P(yt, Tt), J.labelPlaneMatrix, J.getElevation), Nt.isOccluded = !1), Nt;
                  }
                  function qi(Ot, R, J) {
                    return Ot._unit()._perp()._mult(R * J);
                  }
                  function ha(Ot, R, J, yt, Tt, Nt, be, Re, je) {
                    if (Re.projectionCache.offsets[Ot])
                      return Re.projectionCache.offsets[Ot];
                    const pr = J.add(R);
                    if (Ot + je.direction < yt || Ot + je.direction >= Tt)
                      return Re.projectionCache.offsets[Ot] = pr, pr;
                    const br = qn(Ot + je.direction, Re, je), Ar = qi(br.sub(J), be, je.direction), qr = J.add(Ar), vn = br.add(Ar);
                    return Re.projectionCache.offsets[Ot] = s.al(Nt, pr, qr, vn) || pr, Re.projectionCache.offsets[Ot];
                  }
                  function Mi(Ot, R, J, yt, Tt, Nt, be, Re, je) {
                    const pr = yt ? Ot - R : Ot + R;
                    let br = pr > 0 ? 1 : -1, Ar = 0;
                    yt && (br *= -1, Ar = Math.PI), br < 0 && (Ar += Math.PI);
                    let qr = br > 0 ? Nt + Tt : Nt + Tt + 1, vn;
                    Re.projectionCache.cachedAnchorPoint ? vn = Re.projectionCache.cachedAnchorPoint : (vn = si(Re.tileAnchorPoint.x, Re.tileAnchorPoint.y, Re).point, Re.projectionCache.cachedAnchorPoint = vn);
                    let bn = vn, Rn = vn, Gn, ii, oi = 0, Xn = 0;
                    const Ri = Math.abs(pr), Ci = [];
                    let Oi;
                    for (; oi + Xn <= Ri; ) {
                      if (qr += br, qr < Nt || qr >= be)
                        return null;
                      oi += Xn, Rn = bn, ii = Gn;
                      const Xa = {
                        absOffsetX: Ri,
                        direction: br,
                        distanceFromAnchor: oi,
                        previousVertex: Rn
                      };
                      if (bn = qn(qr, Re, Xa), J === 0)
                        Ci.push(Rn), Oi = bn.sub(Rn);
                      else {
                        let La;
                        const xa = bn.sub(Rn);
                        if (xa.mag() === 0) {
                          const Ya = qn(qr + br, Re, Xa);
                          La = qi(Ya.sub(bn), J, br);
                        } else
                          La = qi(xa, J, br);
                        ii || (ii = Rn.add(La)), Gn = ha(qr, La, bn, Nt, be, ii, J, Re, Xa), Ci.push(ii), Oi = Gn.sub(ii);
                      }
                      Xn = Oi.mag();
                    }
                    const pa = (Ri - oi) / Xn, Sa = Oi._mult(pa)._add(ii || Rn), ao = Ar + Math.atan2(bn.y - Rn.y, bn.x - Rn.x);
                    return Ci.push(Sa), {
                      point: Sa,
                      angle: je ? ao : 0,
                      path: Ci
                    };
                  }
                  const Ji = new Float32Array([-1 / 0, -1 / 0, 0, -1 / 0, -1 / 0, 0, -1 / 0, -1 / 0, 0, -1 / 0, -1 / 0, 0]);
                  function ci(Ot, R) {
                    for (let J = 0; J < Ot; J++) {
                      const yt = R.length;
                      R.resize(yt + 4), R.float32.set(Ji, yt * 3);
                    }
                  }
                  function rn(Ot, R, J) {
                    const yt = R[0], Tt = R[1];
                    return Ot[0] = J[0] * yt + J[4] * Tt + J[12], Ot[1] = J[1] * yt + J[5] * Tt + J[13], Ot[3] = J[3] * yt + J[7] * Tt + J[15], Ot;
                  }
                  const Cn = 100;
                  class Un {
                    constructor(R, J, yt = new ln(R.width + 2 * Cn, R.height + 2 * Cn, 25), Tt = new ln(R.width + 2 * Cn, R.height + 2 * Cn, 25)) {
                      this.transform = R, this.mapProjection = J, this.grid = yt, this.ignoredGrid = Tt, this.pitchFactor = Math.cos(R._pitch) * R.cameraToCenterDistance, this.screenRightBoundary = R.width + Cn, this.screenBottomBoundary = R.height + Cn, this.gridRightBoundary = R.width + 2 * Cn, this.gridBottomBoundary = R.height + 2 * Cn, this.perspectiveRatioCutoff = 0.6;
                    }
                    placeCollisionBox(R, J, yt, Tt, Nt, be, Re, je, pr, br, Ar) {
                      const qr = R.anchorPointX + je[0], vn = R.anchorPointY + je[1], bn = this.projectAndGetPerspectiveRatio(Tt, qr, vn, Nt, br), Rn = this._projectCollisionBox(R, yt, Tt, Nt, be, Re, je, bn, br, Ar), [Gn, ii, oi, Xn] = Rn.box;
                      return (this.mapProjection.useSpecialProjectionForSymbols ? be ? Rn.allPointsOccluded : this.mapProjection.isOccluded(qr, vn, Nt) : !1) || bn.perspectiveRatio < this.perspectiveRatioCutoff || !this.isInsideGrid(Gn, ii, oi, Xn) || J !== "always" && this.grid.hitTest(Gn, ii, oi, Xn, J, pr) ? {
                        box: [Gn, ii, oi, Xn],
                        placeable: !1,
                        offscreen: !1
                      } : {
                        box: [Gn, ii, oi, Xn],
                        placeable: !0,
                        offscreen: this.isOffscreen(Gn, ii, oi, Xn)
                      };
                    }
                    placeCollisionCircles(R, J, yt, Tt, Nt, be, Re, je, pr, br, Ar, qr, vn, bn, Rn, Gn) {
                      const ii = [], oi = new s.P(J.anchorX, J.anchorY), Xn = this.getPerspectiveRatio(be, oi.x, oi.y, Re, Gn), Ci = (Ar ? Nt / Xn : Nt * Xn) / s.aq, Oi = { projections: {}, offsets: {}, cachedAnchorPoint: void 0, anyProjectionOccluded: !1 }, pa = J.lineOffsetX * Ci, Sa = J.lineOffsetY * Ci, ao = {
                        getElevation: Gn,
                        labelPlaneMatrix: je,
                        lineVertexArray: yt,
                        pitchWithMap: Ar,
                        projectionCache: Oi,
                        projection: this.mapProjection,
                        tileAnchorPoint: oi,
                        unwrappedTileID: Re,
                        width: this.transform.width,
                        height: this.transform.height,
                        translation: Rn
                      }, Xa = zr(
                        Ci,
                        Tt,
                        pa,
                        Sa,
                        /*flip*/
                        !1,
                        J,
                        !1,
                        ao
                      );
                      let La = !1, xa = !1, Ya = !0;
                      if (Xa) {
                        const Va = vn * 0.5 * Xn + bn, Wo = new s.P(-Cn, -Cn), ua = new s.P(this.screenRightBoundary, this.screenBottomBoundary), ca = new _r(), Uo = Xa.first, Zs = Xa.last;
                        let Lo = [];
                        for (let ts = Uo.path.length - 1; ts >= 1; ts--)
                          Lo.push(Uo.path[ts]);
                        for (let ts = 1; ts < Zs.path.length; ts++)
                          Lo.push(Zs.path[ts]);
                        const qs = Va * 2.5;
                        if (pr) {
                          const ts = this.projectPathToScreenSpace(Lo, ao, pr);
                          ts.some((Rs) => Rs.signedDistanceFromCamera <= 0) ? Lo = [] : Lo = ts.map((Rs) => Rs.point);
                        }
                        let sl = [];
                        if (Lo.length > 0) {
                          const ts = Lo[0].clone(), Rs = Lo[0].clone();
                          for (let bo = 1; bo < Lo.length; bo++)
                            ts.x = Math.min(ts.x, Lo[bo].x), ts.y = Math.min(ts.y, Lo[bo].y), Rs.x = Math.max(Rs.x, Lo[bo].x), Rs.y = Math.max(Rs.y, Lo[bo].y);
                          ts.x >= Wo.x && Rs.x <= ua.x && ts.y >= Wo.y && Rs.y <= ua.y ? sl = [Lo] : Rs.x < Wo.x || ts.x > ua.x || Rs.y < Wo.y || ts.y > ua.y ? sl = [] : sl = s.am([Lo], Wo.x, Wo.y, ua.x, ua.y);
                        }
                        for (const ts of sl) {
                          ca.reset(ts, Va * 0.25);
                          let Rs = 0;
                          ca.length <= 0.5 * Va ? Rs = 1 : Rs = Math.ceil(ca.paddedLength / qs) + 1;
                          for (let bo = 0; bo < Rs; bo++) {
                            const Bu = bo / Math.max(Rs - 1, 1), Nu = ca.lerp(Bu), Xl = Nu.x + Cn, bu = Nu.y + Cn;
                            ii.push(Xl, bu, Va, 0);
                            const of = Xl - Va, gd = bu - Va, yd = Xl + Va, hc = bu + Va;
                            if (Ya = Ya && this.isOffscreen(of, gd, yd, hc), xa = xa || this.isInsideGrid(of, gd, yd, hc), R !== "always" && this.grid.hitTestCircle(Xl, bu, Va, R, qr) && (La = !0, !br))
                              return {
                                circles: [],
                                offscreen: !1,
                                collisionDetected: La
                              };
                          }
                        }
                      }
                      return {
                        circles: !br && La || !xa || Xn < this.perspectiveRatioCutoff ? [] : ii,
                        offscreen: Ya,
                        collisionDetected: La
                      };
                    }
                    projectPathToScreenSpace(R, J, yt) {
                      return R.map((Tt) => fn(Tt, yt, J.getElevation));
                    }
                    /**
                     * Because the geometries in the CollisionIndex are an approximation of the shape of
                     * symbols on the map, we use the CollisionIndex to look up the symbol part of
                     * `queryRenderedFeatures`.
                     */
                    queryRenderedSymbols(R) {
                      if (R.length === 0 || this.grid.keysLength() === 0 && this.ignoredGrid.keysLength() === 0)
                        return {};
                      const J = [];
                      let yt = 1 / 0, Tt = 1 / 0, Nt = -1 / 0, be = -1 / 0;
                      for (const br of R) {
                        const Ar = new s.P(br.x + Cn, br.y + Cn);
                        yt = Math.min(yt, Ar.x), Tt = Math.min(Tt, Ar.y), Nt = Math.max(Nt, Ar.x), be = Math.max(be, Ar.y), J.push(Ar);
                      }
                      const Re = this.grid.query(yt, Tt, Nt, be).concat(this.ignoredGrid.query(yt, Tt, Nt, be)), je = {}, pr = {};
                      for (const br of Re) {
                        const Ar = br.key;
                        if (je[Ar.bucketInstanceId] === void 0 && (je[Ar.bucketInstanceId] = {}), je[Ar.bucketInstanceId][Ar.featureIndex])
                          continue;
                        const qr = [
                          new s.P(br.x1, br.y1),
                          new s.P(br.x2, br.y1),
                          new s.P(br.x2, br.y2),
                          new s.P(br.x1, br.y2)
                        ];
                        s.an(J, qr) && (je[Ar.bucketInstanceId][Ar.featureIndex] = !0, pr[Ar.bucketInstanceId] === void 0 && (pr[Ar.bucketInstanceId] = []), pr[Ar.bucketInstanceId].push(Ar.featureIndex));
                      }
                      return pr;
                    }
                    insertCollisionBox(R, J, yt, Tt, Nt, be) {
                      const Re = yt ? this.ignoredGrid : this.grid, je = { bucketInstanceId: Tt, featureIndex: Nt, collisionGroupID: be, overlapMode: J };
                      Re.insert(je, R[0], R[1], R[2], R[3]);
                    }
                    insertCollisionCircles(R, J, yt, Tt, Nt, be) {
                      const Re = yt ? this.ignoredGrid : this.grid, je = { bucketInstanceId: Tt, featureIndex: Nt, collisionGroupID: be, overlapMode: J };
                      for (let pr = 0; pr < R.length; pr += 4)
                        Re.insertCircle(je, R[pr], R[pr + 1], R[pr + 2]);
                    }
                    projectAndGetPerspectiveRatio(R, J, yt, Tt, Nt) {
                      const be = this.mapProjection.useSpecialProjectionForSymbols ? this.mapProjection.projectTileCoordinates(J, yt, Tt, Nt) : fn(new s.P(J, yt), R, Nt);
                      return {
                        point: new s.P((be.point.x + 1) / 2 * this.transform.width + Cn, (-be.point.y + 1) / 2 * this.transform.height + Cn),
                        // See perspective ratio comment in symbol_sdf.vertex
                        // We're doing collision detection in viewport space so we need
                        // to scale down boxes in the distance
                        perspectiveRatio: 0.5 + 0.5 * (this.transform.cameraToCenterDistance / be.signedDistanceFromCamera),
                        isOccluded: be.isOccluded,
                        signedDistanceFromCamera: be.signedDistanceFromCamera
                      };
                    }
                    getPerspectiveRatio(R, J, yt, Tt, Nt) {
                      const be = this.mapProjection.useSpecialProjectionForSymbols ? this.mapProjection.projectTileCoordinates(J, yt, Tt, Nt) : fn(new s.P(J, yt), R, Nt);
                      return 0.5 + 0.5 * (this.transform.cameraToCenterDistance / be.signedDistanceFromCamera);
                    }
                    isOffscreen(R, J, yt, Tt) {
                      return yt < Cn || R >= this.screenRightBoundary || Tt < Cn || J > this.screenBottomBoundary;
                    }
                    isInsideGrid(R, J, yt, Tt) {
                      return yt >= 0 && R < this.gridRightBoundary && Tt >= 0 && J < this.gridBottomBoundary;
                    }
                    /*
                    * Returns a matrix for transforming collision shapes to viewport coordinate space.
                    * Use this function to render e.g. collision circles on the screen.
                    *   example transformation: clipPos = glCoordMatrix * viewportMatrix * circle_pos
                    */
                    getViewportMatrix() {
                      const R = s.ao([]);
                      return s.J(R, R, [-Cn, -Cn, 0]), R;
                    }
                    /**
                     * Applies all layout+paint properties of the given box in order to find as good approximation of its screen-space bounding box as possible.
                     */
                    _projectCollisionBox(R, J, yt, Tt, Nt, be, Re, je, pr, br) {
                      const Ar = J * je.perspectiveRatio;
                      let qr = new s.P(1, 0), vn = new s.P(0, 1);
                      const bn = new s.P(R.anchorPointX + Re[0], R.anchorPointY + Re[1]);
                      if (be && !Nt) {
                        const La = this.projectAndGetPerspectiveRatio(yt, bn.x + 1, bn.y, Tt, pr).point.sub(je.point).unit(), xa = Math.atan(La.y / La.x) + (La.x < 0 ? Math.PI : 0), Ya = Math.sin(xa), Va = Math.cos(xa);
                        qr = new s.P(Va, Ya), vn = new s.P(-Ya, Va);
                      } else if (!be && Nt) {
                        const Xa = -this.transform.angle, La = Math.sin(Xa), xa = Math.cos(Xa);
                        qr = new s.P(xa, La), vn = new s.P(-La, xa);
                      }
                      let Rn = je.point, Gn = Ar;
                      if (Nt) {
                        Rn = bn;
                        const Xa = this.transform.zoom - Math.floor(this.transform.zoom);
                        if (Gn = Math.pow(2, -Xa), Gn *= this.mapProjection.getPitchedTextCorrection(this.transform, bn, Tt), !br) {
                          const La = je.signedDistanceFromCamera / this.transform.cameraToCenterDistance, xa = s.ad(0.5 + 0.5 * La, 0, 4);
                          Gn *= xa;
                        }
                      }
                      br && (Rn = Rn.add(qr.mult(br.x * Gn)).add(vn.mult(br.y * Gn)));
                      const ii = R.x1 * Gn, oi = R.x2 * Gn, Xn = (ii + oi) / 2, Ri = R.y1 * Gn, Ci = R.y2 * Gn, Oi = (Ri + Ci) / 2, pa = [
                        { offsetX: ii, offsetY: Ri },
                        { offsetX: Xn, offsetY: Ri },
                        { offsetX: oi, offsetY: Ri },
                        { offsetX: oi, offsetY: Oi },
                        { offsetX: oi, offsetY: Ci },
                        { offsetX: Xn, offsetY: Ci },
                        { offsetX: ii, offsetY: Ci },
                        { offsetX: ii, offsetY: Oi }
                      ];
                      let Sa = [];
                      for (const { offsetX: Xa, offsetY: La } of pa)
                        Sa.push(new s.P(Rn.x + qr.x * Xa + vn.x * La, Rn.y + qr.y * Xa + vn.y * La));
                      let ao = !1;
                      if (Nt) {
                        const Xa = Sa.map((La) => this.projectAndGetPerspectiveRatio(yt, La.x, La.y, Tt, pr));
                        ao = Xa.some((La) => !La.isOccluded), Sa = Xa.map((La) => La.point);
                      } else
                        ao = !0;
                      return {
                        box: s.ap(Sa),
                        allPointsOccluded: !ao
                      };
                    }
                  }
                  function Fn(Ot, R, J) {
                    return R * (s.X / (Ot.tileSize * Math.pow(2, J - Ot.tileID.overscaledZ)));
                  }
                  class mi {
                    constructor(R, J, yt, Tt) {
                      R ? this.opacity = Math.max(0, Math.min(1, R.opacity + (R.placed ? J : -J))) : this.opacity = Tt && yt ? 1 : 0, this.placed = yt;
                    }
                    isHidden() {
                      return this.opacity === 0 && !this.placed;
                    }
                  }
                  class Nn {
                    constructor(R, J, yt, Tt, Nt) {
                      this.text = new mi(R ? R.text : null, J, yt, Nt), this.icon = new mi(R ? R.icon : null, J, Tt, Nt);
                    }
                    isHidden() {
                      return this.text.isHidden() && this.icon.isHidden();
                    }
                  }
                  class di {
                    constructor(R, J, yt) {
                      this.text = R, this.icon = J, this.skipFade = yt;
                    }
                  }
                  class Ai {
                    constructor() {
                      this.invProjMatrix = s.H(), this.viewportMatrix = s.H(), this.circles = [];
                    }
                  }
                  class Gi {
                    constructor(R, J, yt, Tt, Nt) {
                      this.bucketInstanceId = R, this.featureIndex = J, this.sourceLayerIndex = yt, this.bucketIndex = Tt, this.tileID = Nt;
                    }
                  }
                  class ia {
                    constructor(R) {
                      this.crossSourceCollisions = R, this.maxGroupID = 0, this.collisionGroups = {};
                    }
                    get(R) {
                      if (this.crossSourceCollisions)
                        return { ID: 0, predicate: null };
                      if (!this.collisionGroups[R]) {
                        const J = ++this.maxGroupID;
                        this.collisionGroups[R] = {
                          ID: J,
                          predicate: (yt) => yt.collisionGroupID === J
                        };
                      }
                      return this.collisionGroups[R];
                    }
                  }
                  function Ca(Ot, R, J, yt, Tt) {
                    const { horizontalAlign: Nt, verticalAlign: be } = s.av(Ot), Re = -(Nt - 0.5) * R, je = -(be - 0.5) * J;
                    return new s.P(Re + yt[0] * Tt, je + yt[1] * Tt);
                  }
                  class Qr {
                    constructor(R, J, yt, Tt, Nt, be) {
                      this.transform = R.clone(), this.terrain = yt, this.collisionIndex = new Un(this.transform, J), this.placements = {}, this.opacities = {}, this.variableOffsets = {}, this.stale = !1, this.commitTime = 0, this.fadeDuration = Tt, this.retainedQueryData = {}, this.collisionGroups = new ia(Nt), this.collisionCircleArrays = {}, this.collisionBoxArrays = /* @__PURE__ */ new Map(), this.prevPlacement = be, be && (be.prevPlacement = void 0), this.placedOrientations = {};
                    }
                    _getTerrainElevationFunc(R) {
                      const J = this.terrain;
                      return J ? (yt, Tt) => J.getElevation(R, yt, Tt) : null;
                    }
                    getBucketParts(R, J, yt, Tt) {
                      const Nt = yt.getBucket(J), be = yt.latestFeatureIndex;
                      if (!Nt || !be || J.id !== Nt.layerIds[0])
                        return;
                      const Re = yt.collisionBoxArray, je = Nt.layers[0].layout, pr = Nt.layers[0].paint, br = Math.pow(2, this.transform.zoom - yt.tileID.overscaledZ), Ar = yt.tileSize / s.X, qr = yt.tileID.toUnwrapped(), vn = this.transform.calculatePosMatrix(qr), bn = je.get("text-pitch-alignment") === "map", Rn = je.get("text-rotation-alignment") === "map", Gn = Fn(yt, 1, this.transform.zoom), ii = this.collisionIndex.mapProjection.translatePosition(this.transform, yt, pr.get("text-translate"), pr.get("text-translate-anchor")), oi = this.collisionIndex.mapProjection.translatePosition(this.transform, yt, pr.get("icon-translate"), pr.get("icon-translate-anchor")), Xn = Jr(vn, bn, Rn, this.transform, Gn);
                      let Ri = null;
                      if (bn) {
                        const Oi = Zn(vn, bn, Rn, this.transform, Gn);
                        Ri = s.L([], this.transform.labelPlaneMatrix, Oi);
                      }
                      this.retainedQueryData[Nt.bucketInstanceId] = new Gi(Nt.bucketInstanceId, be, Nt.sourceLayerIndex, Nt.index, yt.tileID);
                      const Ci = {
                        bucket: Nt,
                        layout: je,
                        translationText: ii,
                        translationIcon: oi,
                        posMatrix: vn,
                        unwrappedTileID: qr,
                        textLabelPlaneMatrix: Xn,
                        labelToScreenMatrix: Ri,
                        scale: br,
                        textPixelRatio: Ar,
                        holdingForFade: yt.holdingForFade(),
                        collisionBoxArray: Re,
                        partiallyEvaluatedTextSize: s.ah(Nt.textSizeData, this.transform.zoom),
                        collisionGroup: this.collisionGroups.get(Nt.sourceID)
                      };
                      if (Tt)
                        for (const Oi of Nt.sortKeyRanges) {
                          const { sortKey: pa, symbolInstanceStart: Sa, symbolInstanceEnd: ao } = Oi;
                          R.push({ sortKey: pa, symbolInstanceStart: Sa, symbolInstanceEnd: ao, parameters: Ci });
                        }
                      else
                        R.push({
                          symbolInstanceStart: 0,
                          symbolInstanceEnd: Nt.symbolInstances.length,
                          parameters: Ci
                        });
                    }
                    attemptAnchorPlacement(R, J, yt, Tt, Nt, be, Re, je, pr, br, Ar, qr, vn, bn, Rn, Gn, ii, oi, Xn) {
                      const Ri = s.ar[R.textAnchor], Ci = [R.textOffset0, R.textOffset1], Oi = Ca(Ri, yt, Tt, Ci, Nt), pa = this.collisionIndex.placeCollisionBox(J, qr, je, pr, br, Re, be, Gn, Ar.predicate, Xn, Oi);
                      if (!(oi && !this.collisionIndex.placeCollisionBox(oi, qr, je, pr, br, Re, be, ii, Ar.predicate, Xn, Oi).placeable) && pa.placeable) {
                        let Sa;
                        if (this.prevPlacement && this.prevPlacement.variableOffsets[vn.crossTileID] && this.prevPlacement.placements[vn.crossTileID] && this.prevPlacement.placements[vn.crossTileID].text && (Sa = this.prevPlacement.variableOffsets[vn.crossTileID].anchor), vn.crossTileID === 0)
                          throw new Error("symbolInstance.crossTileID can't be 0");
                        return this.variableOffsets[vn.crossTileID] = {
                          textOffset: Ci,
                          width: yt,
                          height: Tt,
                          anchor: Ri,
                          textBoxScale: Nt,
                          prevAnchor: Sa
                        }, this.markUsedJustification(bn, Ri, vn, Rn), bn.allowVerticalPlacement && (this.markUsedOrientation(bn, Rn, vn), this.placedOrientations[vn.crossTileID] = Rn), { shift: Oi, placedGlyphBoxes: pa };
                      }
                    }
                    placeLayerBucketPart(R, J, yt) {
                      const { bucket: Tt, layout: Nt, translationText: be, translationIcon: Re, posMatrix: je, unwrappedTileID: pr, textLabelPlaneMatrix: br, labelToScreenMatrix: Ar, textPixelRatio: qr, holdingForFade: vn, collisionBoxArray: bn, partiallyEvaluatedTextSize: Rn, collisionGroup: Gn } = R.parameters, ii = Nt.get("text-optional"), oi = Nt.get("icon-optional"), Xn = s.as(Nt, "text-overlap", "text-allow-overlap"), Ri = Xn === "always", Ci = s.as(Nt, "icon-overlap", "icon-allow-overlap"), Oi = Ci === "always", pa = Nt.get("text-rotation-alignment") === "map", Sa = Nt.get("text-pitch-alignment") === "map", ao = Nt.get("icon-text-fit") !== "none", Xa = Nt.get("symbol-z-order") === "viewport-y", La = Ri && (Oi || !Tt.hasIconData() || oi), xa = Oi && (Ri || !Tt.hasTextData() || ii);
                      !Tt.collisionArrays && bn && Tt.deserializeCollisionBoxes(bn);
                      const Ya = this.retainedQueryData[Tt.bucketInstanceId].tileID, Va = this._getTerrainElevationFunc(Ya), Wo = (ua, ca, Uo) => {
                        var Zs, Lo;
                        if (J[ua.crossTileID])
                          return;
                        if (vn) {
                          this.placements[ua.crossTileID] = new di(!1, !1, !1);
                          return;
                        }
                        let qs = !1, sl = !1, ts = !0, Rs = null, bo = { box: null, placeable: !1, offscreen: null }, Bu = { box: null, placeable: !1, offscreen: null }, Nu = null, Xl = null, bu = null, of = 0, gd = 0, yd = 0;
                        ca.textFeatureIndex ? of = ca.textFeatureIndex : ua.useRuntimeCollisionCircles && (of = ua.featureIndex), ca.verticalTextFeatureIndex && (gd = ca.verticalTextFeatureIndex);
                        const hc = ca.textBox;
                        if (hc) {
                          const sf = (Yl) => {
                            let wu = s.ai.horizontal;
                            if (Tt.allowVerticalPlacement && !Yl && this.prevPlacement) {
                              const Uu = this.prevPlacement.placedOrientations[ua.crossTileID];
                              Uu && (this.placedOrientations[ua.crossTileID] = Uu, wu = Uu, this.markUsedOrientation(Tt, wu, ua));
                            }
                            return wu;
                          }, If = (Yl, wu) => {
                            if (Tt.allowVerticalPlacement && ua.numVerticalGlyphVertices > 0 && ca.verticalTextBox) {
                              for (const Uu of Tt.writingModes)
                                if (Uu === s.ai.vertical ? (bo = wu(), Bu = bo) : bo = Yl(), bo && bo.placeable)
                                  break;
                            } else
                              bo = Yl();
                          }, Rf = ua.textAnchorOffsetStartIndex, Uh = ua.textAnchorOffsetEndIndex;
                          if (Uh === Rf) {
                            const Yl = (Df, Vd) => {
                              const tl = this.collisionIndex.placeCollisionBox(Df, Xn, qr, je, pr, Sa, pa, be, Gn.predicate, Va);
                              return tl && tl.placeable && (this.markUsedOrientation(Tt, Vd, ua), this.placedOrientations[ua.crossTileID] = Vd), tl;
                            };
                            If(() => Yl(hc, s.ai.horizontal), () => {
                              const Df = ca.verticalTextBox;
                              return Tt.allowVerticalPlacement && ua.numVerticalGlyphVertices > 0 && Df ? Yl(Df, s.ai.vertical) : { box: null, offscreen: null };
                            }), sf(bo && bo.placeable);
                          } else {
                            let Yl = s.ar[(Lo = (Zs = this.prevPlacement) === null || Zs === void 0 ? void 0 : Zs.variableOffsets[ua.crossTileID]) === null || Lo === void 0 ? void 0 : Lo.anchor];
                            const wu = (tl, md, Fp) => {
                              const wg = tl.x2 - tl.x1, Op = tl.y2 - tl.y1, xv = ua.textBoxScale, A0 = ao && Ci === "never" ? md : null;
                              let ph = null, S0 = Xn === "never" ? 1 : 2, jv = "never";
                              Yl && S0++;
                              for (let Hd = 0; Hd < S0; Hd++) {
                                for (let Zv = Rf; Zv < Uh; Zv++) {
                                  const dc = Tt.textAnchorOffsets.get(Zv);
                                  if (Yl && dc.textAnchor !== Yl)
                                    continue;
                                  const Gd = this.attemptAnchorPlacement(dc, tl, wg, Op, xv, pa, Sa, qr, je, pr, Gn, jv, ua, Tt, Fp, be, Re, A0, Va);
                                  if (Gd && (ph = Gd.placedGlyphBoxes, ph && ph.placeable))
                                    return qs = !0, Rs = Gd.shift, ph;
                                }
                                Yl ? Yl = null : jv = Xn;
                              }
                              return yt && !ph && (ph = {
                                box: this.collisionIndex.placeCollisionBox(
                                  hc,
                                  "always",
                                  // Skips expensive collision check with already placed boxes
                                  qr,
                                  je,
                                  pr,
                                  Sa,
                                  pa,
                                  be,
                                  Gn.predicate,
                                  Va,
                                  new s.P(0, 0)
                                ).box,
                                offscreen: !1,
                                placeable: !1
                              }), ph;
                            };
                            If(() => wu(hc, ca.iconBox, s.ai.horizontal), () => {
                              const tl = ca.verticalTextBox, md = bo && bo.placeable;
                              return Tt.allowVerticalPlacement && !md && ua.numVerticalGlyphVertices > 0 && tl ? wu(tl, ca.verticalIconBox, s.ai.vertical) : { box: null, occluded: !0, offscreen: null };
                            }), bo && (qs = bo.placeable, ts = bo.offscreen);
                            const Vd = sf(bo && bo.placeable);
                            if (!qs && this.prevPlacement) {
                              const tl = this.prevPlacement.variableOffsets[ua.crossTileID];
                              tl && (this.variableOffsets[ua.crossTileID] = tl, this.markUsedJustification(Tt, tl.anchor, ua, Vd));
                            }
                          }
                        }
                        if (Nu = bo, qs = Nu && Nu.placeable, ts = Nu && Nu.offscreen, ua.useRuntimeCollisionCircles) {
                          const sf = Tt.text.placedSymbolArray.get(ua.centerJustifiedTextSymbolIndex), If = s.aj(Tt.textSizeData, Rn, sf), Rf = Nt.get("text-padding"), Uh = ua.collisionCircleDiameter;
                          Xl = this.collisionIndex.placeCollisionCircles(Xn, sf, Tt.lineVertexArray, Tt.glyphOffsetArray, If, je, pr, br, Ar, yt, Sa, Gn.predicate, Uh, Rf, be, Va), Xl.circles.length && Xl.collisionDetected && !yt && s.w("Collisions detected, but collision boxes are not shown"), qs = Ri || Xl.circles.length > 0 && !Xl.collisionDetected, ts = ts && Xl.offscreen;
                        }
                        if (ca.iconFeatureIndex && (yd = ca.iconFeatureIndex), ca.iconBox) {
                          const sf = (If) => this.collisionIndex.placeCollisionBox(If, Ci, qr, je, pr, Sa, pa, Re, Gn.predicate, Va, ao && Rs ? Rs : void 0);
                          Bu && Bu.placeable && ca.verticalIconBox ? (bu = sf(ca.verticalIconBox), sl = bu.placeable) : (bu = sf(ca.iconBox), sl = bu.placeable), ts = ts && bu.offscreen;
                        }
                        const Wv = ii || ua.numHorizontalGlyphVertices === 0 && ua.numVerticalGlyphVertices === 0, Nh = oi || ua.numIconVertices === 0;
                        !Wv && !Nh ? sl = qs = sl && qs : Nh ? Wv || (sl = sl && qs) : qs = sl && qs;
                        const mv = qs && Nu.placeable, gs = sl && bu.placeable;
                        if (mv && (Bu && Bu.placeable && gd ? this.collisionIndex.insertCollisionBox(Nu.box, Xn, Nt.get("text-ignore-placement"), Tt.bucketInstanceId, gd, Gn.ID) : this.collisionIndex.insertCollisionBox(Nu.box, Xn, Nt.get("text-ignore-placement"), Tt.bucketInstanceId, of, Gn.ID)), gs && this.collisionIndex.insertCollisionBox(bu.box, Ci, Nt.get("icon-ignore-placement"), Tt.bucketInstanceId, yd, Gn.ID), Xl && qs && this.collisionIndex.insertCollisionCircles(Xl.circles, Xn, Nt.get("text-ignore-placement"), Tt.bucketInstanceId, of, Gn.ID), yt && this.storeCollisionData(Tt.bucketInstanceId, Uo, ca, Nu, bu, Xl), ua.crossTileID === 0)
                          throw new Error("symbolInstance.crossTileID can't be 0");
                        if (Tt.bucketInstanceId === 0)
                          throw new Error("bucket.bucketInstanceId can't be 0");
                        this.placements[ua.crossTileID] = new di(qs || La, sl || xa, ts || Tt.justReloaded), J[ua.crossTileID] = !0;
                      };
                      if (Xa) {
                        if (R.symbolInstanceStart !== 0)
                          throw new Error("bucket.bucketInstanceId should be 0");
                        const ua = Tt.getSortedSymbolIndexes(this.transform.angle);
                        for (let ca = ua.length - 1; ca >= 0; --ca) {
                          const Uo = ua[ca];
                          Wo(Tt.symbolInstances.get(Uo), Tt.collisionArrays[Uo], Uo);
                        }
                      } else
                        for (let ua = R.symbolInstanceStart; ua < R.symbolInstanceEnd; ua++)
                          Wo(Tt.symbolInstances.get(ua), Tt.collisionArrays[ua], ua);
                      if (yt && Tt.bucketInstanceId in this.collisionCircleArrays) {
                        const ua = this.collisionCircleArrays[Tt.bucketInstanceId];
                        s.at(ua.invProjMatrix, je), ua.viewportMatrix = this.collisionIndex.getViewportMatrix();
                      }
                      Tt.justReloaded = !1;
                    }
                    storeCollisionData(R, J, yt, Tt, Nt, be) {
                      if (yt.textBox || yt.iconBox) {
                        let Re;
                        this.collisionBoxArrays.has(R) ? Re = this.collisionBoxArrays.get(R) : (Re = /* @__PURE__ */ new Map(), this.collisionBoxArrays.set(R, Re));
                        let je;
                        Re.has(J) ? je = Re.get(J) : (je = {
                          text: null,
                          icon: null
                        }, Re.set(J, je)), yt.textBox && (je.text = Tt.box), yt.iconBox && (je.icon = Nt.box);
                      }
                      if (be) {
                        let Re = this.collisionCircleArrays[R];
                        Re === void 0 && (Re = this.collisionCircleArrays[R] = new Ai());
                        for (let je = 0; je < be.circles.length; je += 4)
                          Re.circles.push(be.circles[je + 0]), Re.circles.push(be.circles[je + 1]), Re.circles.push(be.circles[je + 2]), Re.circles.push(be.collisionDetected ? 1 : 0);
                      }
                    }
                    markUsedJustification(R, J, yt, Tt) {
                      const Nt = {
                        left: yt.leftJustifiedTextSymbolIndex,
                        center: yt.centerJustifiedTextSymbolIndex,
                        right: yt.rightJustifiedTextSymbolIndex
                      };
                      let be;
                      Tt === s.ai.vertical ? be = yt.verticalPlacedTextSymbolIndex : be = Nt[s.au(J)];
                      const Re = [
                        yt.leftJustifiedTextSymbolIndex,
                        yt.centerJustifiedTextSymbolIndex,
                        yt.rightJustifiedTextSymbolIndex,
                        yt.verticalPlacedTextSymbolIndex
                      ];
                      for (const je of Re)
                        je >= 0 && (be >= 0 && je !== be ? R.text.placedSymbolArray.get(je).crossTileID = 0 : R.text.placedSymbolArray.get(je).crossTileID = yt.crossTileID);
                    }
                    markUsedOrientation(R, J, yt) {
                      const Tt = J === s.ai.horizontal || J === s.ai.horizontalOnly ? J : 0, Nt = J === s.ai.vertical ? J : 0, be = [
                        yt.leftJustifiedTextSymbolIndex,
                        yt.centerJustifiedTextSymbolIndex,
                        yt.rightJustifiedTextSymbolIndex
                      ];
                      for (const Re of be)
                        R.text.placedSymbolArray.get(Re).placedOrientation = Tt;
                      yt.verticalPlacedTextSymbolIndex && (R.text.placedSymbolArray.get(yt.verticalPlacedTextSymbolIndex).placedOrientation = Nt);
                    }
                    commit(R) {
                      this.commitTime = R, this.zoomAtLastRecencyCheck = this.transform.zoom;
                      const J = this.prevPlacement;
                      let yt = !1;
                      this.prevZoomAdjustment = J ? J.zoomAdjustment(this.transform.zoom) : 0;
                      const Tt = J ? J.symbolFadeChange(R) : 1, Nt = J ? J.opacities : {}, be = J ? J.variableOffsets : {}, Re = J ? J.placedOrientations : {};
                      for (const je in this.placements) {
                        const pr = this.placements[je], br = Nt[je];
                        br ? (this.opacities[je] = new Nn(br, Tt, pr.text, pr.icon), yt = yt || pr.text !== br.text.placed || pr.icon !== br.icon.placed) : (this.opacities[je] = new Nn(null, Tt, pr.text, pr.icon, pr.skipFade), yt = yt || pr.text || pr.icon);
                      }
                      for (const je in Nt) {
                        const pr = Nt[je];
                        if (!this.opacities[je]) {
                          const br = new Nn(pr, Tt, !1, !1);
                          br.isHidden() || (this.opacities[je] = br, yt = yt || pr.text.placed || pr.icon.placed);
                        }
                      }
                      for (const je in be)
                        !this.variableOffsets[je] && this.opacities[je] && !this.opacities[je].isHidden() && (this.variableOffsets[je] = be[je]);
                      for (const je in Re)
                        !this.placedOrientations[je] && this.opacities[je] && !this.opacities[je].isHidden() && (this.placedOrientations[je] = Re[je]);
                      if (J && J.lastPlacementChangeTime === void 0)
                        throw new Error("Last placement time for previous placement is not defined");
                      yt ? this.lastPlacementChangeTime = R : typeof this.lastPlacementChangeTime != "number" && (this.lastPlacementChangeTime = J ? J.lastPlacementChangeTime : R);
                    }
                    updateLayerOpacities(R, J) {
                      const yt = {};
                      for (const Tt of J) {
                        const Nt = Tt.getBucket(R);
                        Nt && Tt.latestFeatureIndex && R.id === Nt.layerIds[0] && this.updateBucketOpacities(Nt, Tt.tileID, yt, Tt.collisionBoxArray);
                      }
                    }
                    updateBucketOpacities(R, J, yt, Tt) {
                      R.hasTextData() && (R.text.opacityVertexArray.clear(), R.text.hasVisibleVertices = !1), R.hasIconData() && (R.icon.opacityVertexArray.clear(), R.icon.hasVisibleVertices = !1), R.hasIconCollisionBoxData() && R.iconCollisionBox.collisionVertexArray.clear(), R.hasTextCollisionBoxData() && R.textCollisionBox.collisionVertexArray.clear();
                      const Nt = R.layers[0], be = Nt.layout, Re = new Nn(null, 0, !1, !1, !0), je = be.get("text-allow-overlap"), pr = be.get("icon-allow-overlap"), br = Nt._unevaluatedLayout.hasValue("text-variable-anchor") || Nt._unevaluatedLayout.hasValue("text-variable-anchor-offset"), Ar = be.get("text-rotation-alignment") === "map", qr = be.get("text-pitch-alignment") === "map", vn = be.get("icon-text-fit") !== "none", bn = new Nn(null, 0, je && (pr || !R.hasIconData() || be.get("icon-optional")), pr && (je || !R.hasTextData() || be.get("text-optional")), !0);
                      !R.collisionArrays && Tt && (R.hasIconCollisionBoxData() || R.hasTextCollisionBoxData()) && R.deserializeCollisionBoxes(Tt);
                      const Rn = (ii, oi, Xn) => {
                        for (let Ri = 0; Ri < oi / 4; Ri++)
                          ii.opacityVertexArray.emplaceBack(Xn);
                        ii.hasVisibleVertices = ii.hasVisibleVertices || Xn !== wn;
                      }, Gn = this.collisionBoxArrays.get(R.bucketInstanceId);
                      for (let ii = 0; ii < R.symbolInstances.length; ii++) {
                        const oi = R.symbolInstances.get(ii), { numHorizontalGlyphVertices: Xn, numVerticalGlyphVertices: Ri, crossTileID: Ci } = oi, Oi = yt[Ci];
                        let pa = this.opacities[Ci];
                        Oi ? pa = Re : pa || (pa = bn, this.opacities[Ci] = pa), yt[Ci] = !0;
                        const Sa = Xn > 0 || Ri > 0, ao = oi.numIconVertices > 0, Xa = this.placedOrientations[oi.crossTileID], La = Xa === s.ai.vertical, xa = Xa === s.ai.horizontal || Xa === s.ai.horizontalOnly;
                        if (Sa) {
                          const Va = Sn(pa.text), Wo = La ? wn : Va;
                          Rn(R.text, Xn, Wo);
                          const ua = xa ? wn : Va;
                          Rn(R.text, Ri, ua);
                          const ca = pa.text.isHidden();
                          [
                            oi.rightJustifiedTextSymbolIndex,
                            oi.centerJustifiedTextSymbolIndex,
                            oi.leftJustifiedTextSymbolIndex
                          ].forEach((Lo) => {
                            Lo >= 0 && (R.text.placedSymbolArray.get(Lo).hidden = ca || La ? 1 : 0);
                          }), oi.verticalPlacedTextSymbolIndex >= 0 && (R.text.placedSymbolArray.get(oi.verticalPlacedTextSymbolIndex).hidden = ca || xa ? 1 : 0);
                          const Uo = this.variableOffsets[oi.crossTileID];
                          Uo && this.markUsedJustification(R, Uo.anchor, oi, Xa);
                          const Zs = this.placedOrientations[oi.crossTileID];
                          Zs && (this.markUsedJustification(R, "left", oi, Zs), this.markUsedOrientation(R, Zs, oi));
                        }
                        if (ao) {
                          const Va = Sn(pa.icon), Wo = !(vn && oi.verticalPlacedIconSymbolIndex && La);
                          if (oi.placedIconSymbolIndex >= 0) {
                            const ua = Wo ? Va : wn;
                            Rn(R.icon, oi.numIconVertices, ua), R.icon.placedSymbolArray.get(oi.placedIconSymbolIndex).hidden = pa.icon.isHidden();
                          }
                          if (oi.verticalPlacedIconSymbolIndex >= 0) {
                            const ua = Wo ? wn : Va;
                            Rn(R.icon, oi.numVerticalIconVertices, ua), R.icon.placedSymbolArray.get(oi.verticalPlacedIconSymbolIndex).hidden = pa.icon.isHidden();
                          }
                        }
                        const Ya = Gn && Gn.has(ii) ? Gn.get(ii) : {
                          text: null,
                          icon: null
                        };
                        if (R.hasIconCollisionBoxData() || R.hasTextCollisionBoxData()) {
                          const Va = R.collisionArrays[ii];
                          if (Va) {
                            let Wo = new s.P(0, 0);
                            if (Va.textBox || Va.verticalTextBox) {
                              let ua = !0;
                              if (br) {
                                const ca = this.variableOffsets[Ci];
                                ca ? (Wo = Ca(ca.anchor, ca.width, ca.height, ca.textOffset, ca.textBoxScale), Ar && Wo._rotate(qr ? this.transform.angle : -this.transform.angle)) : ua = !1;
                              }
                              if (Va.textBox || Va.verticalTextBox) {
                                let ca;
                                Va.textBox && (ca = La), Va.verticalTextBox && (ca = xa), pn(R.textCollisionBox.collisionVertexArray, pa.text.placed, !ua || ca, Ya.text, Wo.x, Wo.y);
                              }
                            }
                            if (Va.iconBox || Va.verticalIconBox) {
                              const ua = !!(!xa && Va.verticalIconBox);
                              let ca;
                              Va.iconBox && (ca = ua), Va.verticalIconBox && (ca = !ua), pn(R.iconCollisionBox.collisionVertexArray, pa.icon.placed, ca, Ya.icon, vn ? Wo.x : 0, vn ? Wo.y : 0);
                            }
                          }
                        }
                      }
                      if (R.sortFeatures(this.transform.angle), this.retainedQueryData[R.bucketInstanceId] && (this.retainedQueryData[R.bucketInstanceId].featureSortOrder = R.featureSortOrder), R.hasTextData() && R.text.opacityVertexBuffer && R.text.opacityVertexBuffer.updateData(R.text.opacityVertexArray), R.hasIconData() && R.icon.opacityVertexBuffer && R.icon.opacityVertexBuffer.updateData(R.icon.opacityVertexArray), R.hasIconCollisionBoxData() && R.iconCollisionBox.collisionVertexBuffer && R.iconCollisionBox.collisionVertexBuffer.updateData(R.iconCollisionBox.collisionVertexArray), R.hasTextCollisionBoxData() && R.textCollisionBox.collisionVertexBuffer && R.textCollisionBox.collisionVertexBuffer.updateData(R.textCollisionBox.collisionVertexArray), R.text.opacityVertexArray.length !== R.text.layoutVertexArray.length / 4)
                        throw new Error(`bucket.text.opacityVertexArray.length (= ${R.text.opacityVertexArray.length}) !== bucket.text.layoutVertexArray.length (= ${R.text.layoutVertexArray.length}) / 4`);
                      if (R.icon.opacityVertexArray.length !== R.icon.layoutVertexArray.length / 4)
                        throw new Error(`bucket.icon.opacityVertexArray.length (= ${R.icon.opacityVertexArray.length}) !== bucket.icon.layoutVertexArray.length (= ${R.icon.layoutVertexArray.length}) / 4`);
                      if (R.bucketInstanceId in this.collisionCircleArrays) {
                        const ii = this.collisionCircleArrays[R.bucketInstanceId];
                        R.placementInvProjMatrix = ii.invProjMatrix, R.placementViewportMatrix = ii.viewportMatrix, R.collisionCircleArray = ii.circles, delete this.collisionCircleArrays[R.bucketInstanceId];
                      }
                    }
                    symbolFadeChange(R) {
                      return this.fadeDuration === 0 ? 1 : (R - this.commitTime) / this.fadeDuration + this.prevZoomAdjustment;
                    }
                    zoomAdjustment(R) {
                      return Math.max(0, (this.transform.zoom - R) / 1.5);
                    }
                    hasTransitions(R) {
                      return this.stale || R - this.lastPlacementChangeTime < this.fadeDuration;
                    }
                    stillRecent(R, J) {
                      const yt = this.zoomAtLastRecencyCheck === J ? 1 - this.zoomAdjustment(J) : 1;
                      return this.zoomAtLastRecencyCheck = J, this.commitTime + this.fadeDuration * yt > R;
                    }
                    setStale() {
                      this.stale = !0;
                    }
                  }
                  function pn(Ot, R, J, yt, Tt, Nt) {
                    (!yt || yt.length === 0) && (yt = [0, 0, 0, 0]);
                    const be = yt[0] - Cn, Re = yt[1] - Cn, je = yt[2] - Cn, pr = yt[3] - Cn;
                    Ot.emplaceBack(R ? 1 : 0, J ? 1 : 0, Tt || 0, Nt || 0, be, Re), Ot.emplaceBack(R ? 1 : 0, J ? 1 : 0, Tt || 0, Nt || 0, je, Re), Ot.emplaceBack(R ? 1 : 0, J ? 1 : 0, Tt || 0, Nt || 0, je, pr), Ot.emplaceBack(R ? 1 : 0, J ? 1 : 0, Tt || 0, Nt || 0, be, pr);
                  }
                  const $r = Math.pow(2, 25), mn = Math.pow(2, 24), Wn = Math.pow(2, 17), yi = Math.pow(2, 16), ei = Math.pow(2, 9), Jn = Math.pow(2, 8), en = Math.pow(2, 1);
                  function Sn(Ot) {
                    if (Ot.opacity === 0 && !Ot.placed)
                      return 0;
                    if (Ot.opacity === 1 && Ot.placed)
                      return 4294967295;
                    const R = Ot.placed ? 1 : 0, J = Math.floor(Ot.opacity * 127);
                    return J * $r + R * mn + J * Wn + R * yi + J * ei + R * Jn + J * en + R;
                  }
                  const wn = 0;
                  function Dn() {
                    return {
                      isOccluded(Ot, R, J) {
                        return !1;
                      },
                      getPitchedTextCorrection(Ot, R, J) {
                        return 1;
                      },
                      get useSpecialProjectionForSymbols() {
                        return !1;
                      },
                      projectTileCoordinates(Ot, R, J, yt) {
                        throw new Error("Not implemented.");
                      },
                      translatePosition(Ot, R, J, yt) {
                        return li(Ot, R, J, yt);
                      },
                      getCircleRadiusCorrection(Ot) {
                        return 1;
                      }
                    };
                  }
                  function li(Ot, R, J, yt, Tt = !1) {
                    if (!J[0] && !J[1])
                      return [0, 0];
                    const Nt = Tt ? yt === "map" ? Ot.angle : 0 : yt === "viewport" ? -Ot.angle : 0;
                    if (Nt) {
                      const be = Math.sin(Nt), Re = Math.cos(Nt);
                      J = [
                        J[0] * Re - J[1] * be,
                        J[0] * be + J[1] * Re
                      ];
                    }
                    return [
                      Tt ? J[0] : Fn(R, J[0], Ot.zoom),
                      Tt ? J[1] : Fn(R, J[1], Ot.zoom)
                    ];
                  }
                  class fi {
                    constructor(R) {
                      this._sortAcrossTiles = R.layout.get("symbol-z-order") !== "viewport-y" && !R.layout.get("symbol-sort-key").isConstant(), this._currentTileIndex = 0, this._currentPartIndex = 0, this._seenCrossTileIDs = {}, this._bucketParts = [];
                    }
                    continuePlacement(R, J, yt, Tt, Nt) {
                      const be = this._bucketParts;
                      for (; this._currentTileIndex < R.length; ) {
                        const Re = R[this._currentTileIndex];
                        if (J.getBucketParts(be, Tt, Re, this._sortAcrossTiles), this._currentTileIndex++, Nt())
                          return !0;
                      }
                      for (this._sortAcrossTiles && (this._sortAcrossTiles = !1, be.sort((Re, je) => Re.sortKey - je.sortKey)); this._currentPartIndex < be.length; ) {
                        const Re = be[this._currentPartIndex];
                        if (J.placeLayerBucketPart(Re, this._seenCrossTileIDs, yt), this._currentPartIndex++, Nt())
                          return !0;
                      }
                      return !1;
                    }
                  }
                  class _i {
                    constructor(R, J, yt, Tt, Nt, be, Re, je) {
                      this.placement = new Qr(R, Dn(), J, be, Re, je), this._currentPlacementIndex = yt.length - 1, this._forceFullPlacement = Tt, this._showCollisionBoxes = Nt, this._done = !1;
                    }
                    isDone() {
                      return this._done;
                    }
                    continuePlacement(R, J, yt) {
                      const Tt = d.now(), Nt = () => this._forceFullPlacement ? !1 : d.now() - Tt > 2;
                      for (; this._currentPlacementIndex >= 0; ) {
                        const be = R[this._currentPlacementIndex], Re = J[be], je = this.placement.collisionIndex.transform.zoom;
                        if (Re.type === "symbol" && (!Re.minzoom || Re.minzoom <= je) && (!Re.maxzoom || Re.maxzoom > je)) {
                          if (this._inProgressLayer || (this._inProgressLayer = new fi(Re)), this._inProgressLayer.continuePlacement(yt[Re.source], this.placement, this._showCollisionBoxes, Re, Nt))
                            return;
                          delete this._inProgressLayer;
                        }
                        this._currentPlacementIndex--;
                      }
                      this._done = !0;
                    }
                    commit(R) {
                      return this.placement.commit(R), this.placement;
                    }
                  }
                  const Ti = 512 / s.X / 2, bi = 128;
                  class ki {
                    constructor(R, J, yt) {
                      this.tileID = R, this.bucketInstanceId = yt, this._symbolsByKey = {};
                      const Tt = /* @__PURE__ */ new Map();
                      for (let Nt = 0; Nt < J.length; Nt++) {
                        const be = J.get(Nt), Re = be.key, je = Tt.get(Re);
                        je ? je.push(be) : Tt.set(Re, [be]);
                      }
                      for (const [Nt, be] of Tt) {
                        const Re = be.map((br) => ({ x: Math.floor(br.anchorX * Ti), y: Math.floor(br.anchorY * Ti) })), je = be.map((br) => br.crossTileID), pr = { positions: Re, crossTileIDs: je };
                        if (pr.positions.length > bi) {
                          const br = new s.aw(pr.positions.length, 16, Uint16Array);
                          for (const { x: Ar, y: qr } of pr.positions)
                            br.add(Ar, qr);
                          br.finish(), delete pr.positions, pr.index = br;
                        }
                        this._symbolsByKey[Nt] = pr;
                      }
                    }
                    // Converts the coordinates of the input symbol instance into coordinates that be can compared
                    // against other symbols in this index. Coordinates are:
                    // (1) local-tile-based (so after correction we get x,y values relative to our local anchorX/Y)
                    // (2) converted to the z-scale of this TileLayerIndex
                    // (3) down-sampled by "roundingFactor" from tile coordinate precision in order to be
                    //     more tolerant of small differences between tiles.
                    getScaledCoordinates(R, J) {
                      const { x: yt, y: Tt, z: Nt } = this.tileID.canonical, { x: be, y: Re, z: je } = J.canonical, pr = je - Nt, br = Ti / Math.pow(2, pr), Ar = (be * s.X + R.anchorX) * br, qr = (Re * s.X + R.anchorY) * br, vn = yt * s.X * Ti, bn = Tt * s.X * Ti;
                      return {
                        x: Math.floor(Ar - vn),
                        y: Math.floor(qr - bn)
                      };
                    }
                    findMatches(R, J, yt) {
                      const Tt = this.tileID.canonical.z < J.canonical.z ? 1 : Math.pow(2, this.tileID.canonical.z - J.canonical.z);
                      for (let Nt = 0; Nt < R.length; Nt++) {
                        const be = R.get(Nt);
                        if (be.crossTileID)
                          continue;
                        const Re = this._symbolsByKey[be.key];
                        if (!Re)
                          continue;
                        const je = this.getScaledCoordinates(be, J);
                        if (Re.index) {
                          const pr = Re.index.range(je.x - Tt, je.y - Tt, je.x + Tt, je.y + Tt).sort();
                          for (const br of pr) {
                            const Ar = Re.crossTileIDs[br];
                            if (!yt[Ar]) {
                              yt[Ar] = !0, be.crossTileID = Ar;
                              break;
                            }
                          }
                        } else if (Re.positions)
                          for (let pr = 0; pr < Re.positions.length; pr++) {
                            const br = Re.positions[pr], Ar = Re.crossTileIDs[pr];
                            if (Math.abs(br.x - je.x) <= Tt && Math.abs(br.y - je.y) <= Tt && !yt[Ar]) {
                              yt[Ar] = !0, be.crossTileID = Ar;
                              break;
                            }
                          }
                      }
                    }
                    getCrossTileIDsLists() {
                      return Object.values(this._symbolsByKey).map(({ crossTileIDs: R }) => R);
                    }
                  }
                  class Bi {
                    constructor() {
                      this.maxCrossTileID = 0;
                    }
                    generate() {
                      return ++this.maxCrossTileID;
                    }
                  }
                  class ra {
                    constructor() {
                      this.indexes = {}, this.usedCrossTileIDs = {}, this.lng = 0;
                    }
                    /*
                     * Sometimes when a user pans across the antimeridian the longitude value gets wrapped.
                     * To prevent labels from flashing out and in we adjust the tileID values in the indexes
                     * so that they match the new wrapped version of the map.
                     */
                    handleWrapJump(R) {
                      const J = Math.round((R - this.lng) / 360);
                      if (J !== 0)
                        for (const yt in this.indexes) {
                          const Tt = this.indexes[yt], Nt = {};
                          for (const be in Tt) {
                            const Re = Tt[be];
                            Re.tileID = Re.tileID.unwrapTo(Re.tileID.wrap + J), Nt[Re.tileID.key] = Re;
                          }
                          this.indexes[yt] = Nt;
                        }
                      this.lng = R;
                    }
                    addBucket(R, J, yt) {
                      if (this.indexes[R.overscaledZ] && this.indexes[R.overscaledZ][R.key]) {
                        if (this.indexes[R.overscaledZ][R.key].bucketInstanceId === J.bucketInstanceId)
                          return !1;
                        this.removeBucketCrossTileIDs(R.overscaledZ, this.indexes[R.overscaledZ][R.key]);
                      }
                      for (let Nt = 0; Nt < J.symbolInstances.length; Nt++) {
                        const be = J.symbolInstances.get(Nt);
                        be.crossTileID = 0;
                      }
                      this.usedCrossTileIDs[R.overscaledZ] || (this.usedCrossTileIDs[R.overscaledZ] = {});
                      const Tt = this.usedCrossTileIDs[R.overscaledZ];
                      for (const Nt in this.indexes) {
                        const be = this.indexes[Nt];
                        if (Number(Nt) > R.overscaledZ)
                          for (const Re in be) {
                            const je = be[Re];
                            je.tileID.isChildOf(R) && je.findMatches(J.symbolInstances, R, Tt);
                          }
                        else {
                          const Re = R.scaledTo(Number(Nt)), je = be[Re.key];
                          je && je.findMatches(J.symbolInstances, R, Tt);
                        }
                      }
                      for (let Nt = 0; Nt < J.symbolInstances.length; Nt++) {
                        const be = J.symbolInstances.get(Nt);
                        be.crossTileID || (be.crossTileID = yt.generate(), Tt[be.crossTileID] = !0);
                      }
                      return this.indexes[R.overscaledZ] === void 0 && (this.indexes[R.overscaledZ] = {}), this.indexes[R.overscaledZ][R.key] = new ki(R, J.symbolInstances, J.bucketInstanceId), !0;
                    }
                    removeBucketCrossTileIDs(R, J) {
                      for (const yt of J.getCrossTileIDsLists())
                        for (const Tt of yt)
                          delete this.usedCrossTileIDs[R][Tt];
                    }
                    removeStaleBuckets(R) {
                      let J = !1;
                      for (const yt in this.indexes) {
                        const Tt = this.indexes[yt];
                        for (const Nt in Tt)
                          R[Tt[Nt].bucketInstanceId] || (this.removeBucketCrossTileIDs(yt, Tt[Nt]), delete Tt[Nt], J = !0);
                      }
                      return J;
                    }
                  }
                  class Ea {
                    constructor() {
                      this.layerIndexes = {}, this.crossTileIDs = new Bi(), this.maxBucketInstanceId = 0, this.bucketsInCurrentPlacement = {};
                    }
                    addLayer(R, J, yt) {
                      let Tt = this.layerIndexes[R.id];
                      Tt === void 0 && (Tt = this.layerIndexes[R.id] = new ra());
                      let Nt = !1;
                      const be = {};
                      Tt.handleWrapJump(yt);
                      for (const Re of J) {
                        const je = Re.getBucket(R);
                        !je || R.id !== je.layerIds[0] || (je.bucketInstanceId || (je.bucketInstanceId = ++this.maxBucketInstanceId), Tt.addBucket(Re.tileID, je, this.crossTileIDs) && (Nt = !0), be[je.bucketInstanceId] = !0);
                      }
                      return Tt.removeStaleBuckets(be) && (Nt = !0), Nt;
                    }
                    pruneUnusedLayers(R) {
                      const J = {};
                      R.forEach((yt) => {
                        J[yt] = !0;
                      });
                      for (const yt in this.layerIndexes)
                        J[yt] || delete this.layerIndexes[yt];
                    }
                  }
                  const Io = (Ot, R) => s.t(Ot, R && R.filter((J) => J.identifier !== "source.canvas")), go = s.ax();
                  class Ss extends s.E {
                    constructor(R, J = {}) {
                      super(), this._rtlPluginLoaded = () => {
                        for (const yt in this.sourceCaches) {
                          const Tt = this.sourceCaches[yt].getSource().type;
                          (Tt === "vector" || Tt === "geojson") && this.sourceCaches[yt].reload();
                        }
                      }, this.map = R, this.dispatcher = new Lt(ye(), R._getMapId()), this.dispatcher.registerMessageHandler("GG", (yt, Tt) => this.getGlyphs(yt, Tt)), this.dispatcher.registerMessageHandler("GI", (yt, Tt) => this.getImages(yt, Tt)), this.imageManager = new Wt(), this.imageManager.setEventedParent(this), this.glyphManager = new ae(R._requestManager, J.localIdeographFontFamily), this.lineAtlas = new $t(256, 512), this.crossTileSymbolIndex = new Ea(), this._spritesImagesIds = {}, this._layers = {}, this._order = [], this.sourceCaches = {}, this.zoomHistory = new s.ay(), this._loaded = !1, this._availableImages = [], this._resetUpdates(), this.dispatcher.broadcast("SR", s.az()), de().on(Xr, this._rtlPluginLoaded), this.on("data", (yt) => {
                        if (yt.dataType !== "source" || yt.sourceDataType !== "metadata")
                          return;
                        const Tt = this.sourceCaches[yt.sourceId];
                        if (!Tt)
                          return;
                        const Nt = Tt.getSource();
                        if (!(!Nt || !Nt.vectorLayerIds))
                          for (const be in this._layers) {
                            const Re = this._layers[be];
                            Re.source === Nt.id && this._validateLayer(Re);
                          }
                      });
                    }
                    loadURL(R, J = {}, yt) {
                      this.fire(new s.k("dataloading", { dataType: "style" })), J.validate = typeof J.validate == "boolean" ? J.validate : !0;
                      const Tt = this.map._requestManager.transformRequest(
                        R,
                        "Style"
                        /* ResourceType.Style */
                      );
                      this._loadStyleRequest = new AbortController();
                      const Nt = this._loadStyleRequest;
                      s.h(Tt, this._loadStyleRequest).then((be) => {
                        this._loadStyleRequest = null, this._load(be.data, J, yt);
                      }).catch((be) => {
                        this._loadStyleRequest = null, be && !Nt.signal.aborted && this.fire(new s.j(be));
                      });
                    }
                    loadJSON(R, J = {}, yt) {
                      this.fire(new s.k("dataloading", { dataType: "style" })), this._frameRequest = new AbortController(), d.frameAsync(this._frameRequest).then(() => {
                        this._frameRequest = null, J.validate = J.validate !== !1, this._load(R, J, yt);
                      }).catch(() => {
                      });
                    }
                    loadEmpty() {
                      this.fire(new s.k("dataloading", { dataType: "style" })), this._load(go, { validate: !1 });
                    }
                    _load(R, J, yt) {
                      var Tt;
                      const Nt = J.transformStyle ? J.transformStyle(yt, R) : R;
                      if (!(J.validate && Io(this, s.x(Nt)))) {
                        this._loaded = !0, this.stylesheet = Nt;
                        for (const be in Nt.sources)
                          this.addSource(be, Nt.sources[be], { validate: !1 });
                        Nt.sprite ? this._loadSprite(Nt.sprite) : this.imageManager.setLoaded(!0), this.glyphManager.setURL(Nt.glyphs), this._createLayers(), this.light = new Ve(this.stylesheet.light), this.sky = new ie(this.stylesheet.sky), this.map.setTerrain((Tt = this.stylesheet.terrain) !== null && Tt !== void 0 ? Tt : null), this.fire(new s.k("data", { dataType: "style" })), this.fire(new s.k("style.load"));
                      }
                    }
                    _createLayers() {
                      const R = s.aA(this.stylesheet.layers);
                      this.dispatcher.broadcast("SL", R), this._order = R.map((J) => J.id), this._layers = {}, this._serializedLayers = null;
                      for (const J of R) {
                        const yt = s.aB(J);
                        yt.setEventedParent(this, { layer: { id: J.id } }), this._layers[J.id] = yt;
                      }
                    }
                    _loadSprite(R, J = !1, yt = void 0) {
                      this.imageManager.setLoaded(!1), this._spriteRequest = new AbortController();
                      let Tt;
                      Jt(R, this.map._requestManager, this.map.getPixelRatio(), this._spriteRequest).then((Nt) => {
                        if (this._spriteRequest = null, Nt)
                          for (const be in Nt) {
                            this._spritesImagesIds[be] = [];
                            const Re = this._spritesImagesIds[be] ? this._spritesImagesIds[be].filter((je) => !(je in Nt)) : [];
                            for (const je of Re)
                              this.imageManager.removeImage(je), this._changedImages[je] = !0;
                            for (const je in Nt[be]) {
                              const pr = be === "default" ? je : `${be}:${je}`;
                              this._spritesImagesIds[be].push(pr), pr in this.imageManager.images ? this.imageManager.updateImage(pr, Nt[be][je], !1) : this.imageManager.addImage(pr, Nt[be][je]), J && (this._changedImages[pr] = !0);
                            }
                          }
                      }).catch((Nt) => {
                        this._spriteRequest = null, Tt = Nt, this.fire(new s.j(Tt));
                      }).finally(() => {
                        this.imageManager.setLoaded(!0), this._availableImages = this.imageManager.listImages(), J && (this._changed = !0), this.dispatcher.broadcast("SI", this._availableImages), this.fire(new s.k("data", { dataType: "style" })), yt && yt(Tt);
                      });
                    }
                    _unloadSprite() {
                      for (const R of Object.values(this._spritesImagesIds).flat())
                        this.imageManager.removeImage(R), this._changedImages[R] = !0;
                      this._spritesImagesIds = {}, this._availableImages = this.imageManager.listImages(), this._changed = !0, this.dispatcher.broadcast("SI", this._availableImages), this.fire(new s.k("data", { dataType: "style" }));
                    }
                    _validateLayer(R) {
                      const J = this.sourceCaches[R.source];
                      if (!J)
                        return;
                      const yt = R.sourceLayer;
                      if (!yt)
                        return;
                      const Tt = J.getSource();
                      (Tt.type === "geojson" || Tt.vectorLayerIds && Tt.vectorLayerIds.indexOf(yt) === -1) && this.fire(new s.j(new Error(`Source layer "${yt}" does not exist on source "${Tt.id}" as specified by style layer "${R.id}".`)));
                    }
                    loaded() {
                      if (!this._loaded || Object.keys(this._updatedSources).length)
                        return !1;
                      for (const R in this.sourceCaches)
                        if (!this.sourceCaches[R].loaded())
                          return !1;
                      return !!this.imageManager.isLoaded();
                    }
                    /**
                     * @hidden
                     * take an array of string IDs, and based on this._layers, generate an array of LayerSpecification
                     * @param ids - an array of string IDs, for which serialized layers will be generated. If omitted, all serialized layers will be returned
                     * @returns generated result
                     */
                    _serializeByIds(R) {
                      const J = this._serializedAllLayers();
                      if (!R || R.length === 0)
                        return Object.values(J);
                      const yt = [];
                      for (const Tt of R)
                        J[Tt] && yt.push(J[Tt]);
                      return yt;
                    }
                    /**
                     * @hidden
                     * Lazy initialization of this._serializedLayers dictionary and return it
                     * @returns this._serializedLayers dictionary
                     */
                    _serializedAllLayers() {
                      let R = this._serializedLayers;
                      if (R)
                        return R;
                      R = this._serializedLayers = {};
                      const J = Object.keys(this._layers);
                      for (const yt of J) {
                        const Tt = this._layers[yt];
                        Tt.type !== "custom" && (R[yt] = Tt.serialize());
                      }
                      return R;
                    }
                    hasTransitions() {
                      if (this.light && this.light.hasTransition() || this.sky && this.sky.hasTransition())
                        return !0;
                      for (const R in this.sourceCaches)
                        if (this.sourceCaches[R].hasTransition())
                          return !0;
                      for (const R in this._layers)
                        if (this._layers[R].hasTransition())
                          return !0;
                      return !1;
                    }
                    _checkLoaded() {
                      if (!this._loaded)
                        throw new Error("Style is not done loading.");
                    }
                    /**
                     * @internal
                     * Apply queued style updates in a batch and recalculate zoom-dependent paint properties.
                     */
                    update(R) {
                      if (!this._loaded)
                        return;
                      const J = this._changed;
                      if (J) {
                        const Tt = Object.keys(this._updatedLayers), Nt = Object.keys(this._removedLayers);
                        (Tt.length || Nt.length) && this._updateWorkerLayers(Tt, Nt);
                        for (const be in this._updatedSources) {
                          const Re = this._updatedSources[be];
                          if (Re === "reload")
                            this._reloadSource(be);
                          else if (Re === "clear")
                            this._clearSource(be);
                          else
                            throw new Error(`Invalid action ${Re}`);
                        }
                        this._updateTilesForChangedImages(), this._updateTilesForChangedGlyphs();
                        for (const be in this._updatedPaintProps)
                          this._layers[be].updateTransitions(R);
                        this.light.updateTransitions(R), this.sky.updateTransitions(R), this._resetUpdates();
                      }
                      const yt = {};
                      for (const Tt in this.sourceCaches) {
                        const Nt = this.sourceCaches[Tt];
                        yt[Tt] = Nt.used, Nt.used = !1;
                      }
                      for (const Tt of this._order) {
                        const Nt = this._layers[Tt];
                        Nt.recalculate(R, this._availableImages), !Nt.isHidden(R.zoom) && Nt.source && (this.sourceCaches[Nt.source].used = !0);
                      }
                      for (const Tt in yt) {
                        const Nt = this.sourceCaches[Tt];
                        !!yt[Tt] != !!Nt.used && Nt.fire(new s.k("data", {
                          sourceDataType: "visibility",
                          dataType: "source",
                          sourceId: Tt
                        }));
                      }
                      this.light.recalculate(R), this.sky.recalculate(R), this.z = R.zoom, J && this.fire(new s.k("data", { dataType: "style" }));
                    }
                    /*
                     * Apply any queued image changes.
                     */
                    _updateTilesForChangedImages() {
                      const R = Object.keys(this._changedImages);
                      if (R.length) {
                        for (const J in this.sourceCaches)
                          this.sourceCaches[J].reloadTilesForDependencies(["icons", "patterns"], R);
                        this._changedImages = {};
                      }
                    }
                    _updateTilesForChangedGlyphs() {
                      if (this._glyphsDidChange) {
                        for (const R in this.sourceCaches)
                          this.sourceCaches[R].reloadTilesForDependencies(["glyphs"], [""]);
                        this._glyphsDidChange = !1;
                      }
                    }
                    _updateWorkerLayers(R, J) {
                      this.dispatcher.broadcast("UL", {
                        layers: this._serializeByIds(R),
                        removedIds: J
                      });
                    }
                    _resetUpdates() {
                      this._changed = !1, this._updatedLayers = {}, this._removedLayers = {}, this._updatedSources = {}, this._updatedPaintProps = {}, this._changedImages = {}, this._glyphsDidChange = !1;
                    }
                    /**
                     * Update this style's state to match the given style JSON, performing only
                     * the necessary mutations.
                     *
                     * May throw an Error ('Unimplemented: METHOD') if the mapbox-gl-style-spec
                     * diff algorithm produces an operation that is not supported.
                     *
                     * @returns true if any changes were made; false otherwise
                     */
                    setState(R, J = {}) {
                      var yt;
                      this._checkLoaded();
                      const Tt = this.serialize();
                      if (R = J.transformStyle ? J.transformStyle(Tt, R) : R, ((yt = J.validate) !== null && yt !== void 0 ? yt : !0) && Io(this, s.x(R)))
                        return !1;
                      R = s.aC(R), R.layers = s.aA(R.layers);
                      const be = s.aD(Tt, R), Re = this._getOperationsToPerform(be);
                      if (Re.unimplemented.length > 0)
                        throw new Error(`Unimplemented: ${Re.unimplemented.join(", ")}.`);
                      if (Re.operations.length === 0)
                        return !1;
                      for (const je of Re.operations)
                        je();
                      return this.stylesheet = R, this._serializedLayers = null, !0;
                    }
                    _getOperationsToPerform(R) {
                      const J = [], yt = [];
                      for (const Tt of R)
                        switch (Tt.command) {
                          case "setCenter":
                          case "setZoom":
                          case "setBearing":
                          case "setPitch":
                            continue;
                          case "addLayer":
                            J.push(() => this.addLayer.apply(this, Tt.args));
                            break;
                          case "removeLayer":
                            J.push(() => this.removeLayer.apply(this, Tt.args));
                            break;
                          case "setPaintProperty":
                            J.push(() => this.setPaintProperty.apply(this, Tt.args));
                            break;
                          case "setLayoutProperty":
                            J.push(() => this.setLayoutProperty.apply(this, Tt.args));
                            break;
                          case "setFilter":
                            J.push(() => this.setFilter.apply(this, Tt.args));
                            break;
                          case "addSource":
                            J.push(() => this.addSource.apply(this, Tt.args));
                            break;
                          case "removeSource":
                            J.push(() => this.removeSource.apply(this, Tt.args));
                            break;
                          case "setLayerZoomRange":
                            J.push(() => this.setLayerZoomRange.apply(this, Tt.args));
                            break;
                          case "setLight":
                            J.push(() => this.setLight.apply(this, Tt.args));
                            break;
                          case "setGeoJSONSourceData":
                            J.push(() => this.setGeoJSONSourceData.apply(this, Tt.args));
                            break;
                          case "setGlyphs":
                            J.push(() => this.setGlyphs.apply(this, Tt.args));
                            break;
                          case "setSprite":
                            J.push(() => this.setSprite.apply(this, Tt.args));
                            break;
                          case "setSky":
                            J.push(() => this.setSky.apply(this, Tt.args));
                            break;
                          case "setTerrain":
                            J.push(() => this.map.setTerrain.apply(this, Tt.args));
                            break;
                          case "setTransition":
                            J.push(() => {
                            });
                            break;
                          default:
                            yt.push(Tt.command);
                            break;
                        }
                      return {
                        operations: J,
                        unimplemented: yt
                      };
                    }
                    addImage(R, J) {
                      if (this.getImage(R))
                        return this.fire(new s.j(new Error(`An image named "${R}" already exists.`)));
                      this.imageManager.addImage(R, J), this._afterImageUpdated(R);
                    }
                    updateImage(R, J) {
                      this.imageManager.updateImage(R, J);
                    }
                    getImage(R) {
                      return this.imageManager.getImage(R);
                    }
                    removeImage(R) {
                      if (!this.getImage(R))
                        return this.fire(new s.j(new Error(`An image named "${R}" does not exist.`)));
                      this.imageManager.removeImage(R), this._afterImageUpdated(R);
                    }
                    _afterImageUpdated(R) {
                      this._availableImages = this.imageManager.listImages(), this._changedImages[R] = !0, this._changed = !0, this.dispatcher.broadcast("SI", this._availableImages), this.fire(new s.k("data", { dataType: "style" }));
                    }
                    listImages() {
                      return this._checkLoaded(), this.imageManager.listImages();
                    }
                    addSource(R, J, yt = {}) {
                      if (this._checkLoaded(), this.sourceCaches[R] !== void 0)
                        throw new Error(`Source "${R}" already exists.`);
                      if (!J.type)
                        throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(J).join(", ")}.`);
                      if (["vector", "raster", "geojson", "video", "image"].indexOf(J.type) >= 0 && this._validate(s.x.source, `sources.${R}`, J, null, yt))
                        return;
                      this.map && this.map._collectResourceTiming && (J.collectResourceTiming = !0);
                      const be = this.sourceCaches[R] = new yr(R, J, this.dispatcher);
                      be.style = this, be.setEventedParent(this, () => ({
                        isSourceLoaded: be.loaded(),
                        source: be.serialize(),
                        sourceId: R
                      })), be.onAdd(this.map), this._changed = !0;
                    }
                    /**
                     * Remove a source from this stylesheet, given its id.
                     * @param id - id of the source to remove
                     * @throws if no source is found with the given ID
                     */
                    removeSource(R) {
                      if (this._checkLoaded(), this.sourceCaches[R] === void 0)
                        throw new Error("There is no source with this ID");
                      for (const yt in this._layers)
                        if (this._layers[yt].source === R)
                          return this.fire(new s.j(new Error(`Source "${R}" cannot be removed while layer "${yt}" is using it.`)));
                      const J = this.sourceCaches[R];
                      delete this.sourceCaches[R], delete this._updatedSources[R], J.fire(new s.k("data", { sourceDataType: "metadata", dataType: "source", sourceId: R })), J.setEventedParent(null), J.onRemove(this.map), this._changed = !0;
                    }
                    /**
                     * Set the data of a GeoJSON source, given its id.
                     * @param id - id of the source
                     * @param data - GeoJSON source
                     */
                    setGeoJSONSourceData(R, J) {
                      if (this._checkLoaded(), this.sourceCaches[R] === void 0)
                        throw new Error(`There is no source with this ID=${R}`);
                      const yt = this.sourceCaches[R].getSource();
                      if (yt.type !== "geojson")
                        throw new Error(`geojsonSource.type is ${yt.type}, which is !== 'geojson`);
                      yt.setData(J), this._changed = !0;
                    }
                    /**
                     * Get a source by ID.
                     * @param id - ID of the desired source
                     * @returns source
                     */
                    getSource(R) {
                      return this.sourceCaches[R] && this.sourceCaches[R].getSource();
                    }
                    /**
                     * Add a layer to the map style. The layer will be inserted before the layer with
                     * ID `before`, or appended if `before` is omitted.
                     * @param layerObject - The style layer to add.
                     * @param before - ID of an existing layer to insert before
                     * @param options - Style setter options.
                     */
                    addLayer(R, J, yt = {}) {
                      this._checkLoaded();
                      const Tt = R.id;
                      if (this.getLayer(Tt)) {
                        this.fire(new s.j(new Error(`Layer "${Tt}" already exists on this map.`)));
                        return;
                      }
                      let Nt;
                      if (R.type === "custom") {
                        if (Io(this, s.aE(R)))
                          return;
                        Nt = s.aB(R);
                      } else {
                        if ("source" in R && typeof R.source == "object" && (this.addSource(Tt, R.source), R = s.aC(R), R = s.e(R, { source: Tt })), this._validate(s.x.layer, `layers.${Tt}`, R, { arrayIndex: -1 }, yt))
                          return;
                        Nt = s.aB(R), this._validateLayer(Nt), Nt.setEventedParent(this, { layer: { id: Tt } });
                      }
                      const be = J ? this._order.indexOf(J) : this._order.length;
                      if (J && be === -1) {
                        this.fire(new s.j(new Error(`Cannot add layer "${Tt}" before non-existing layer "${J}".`)));
                        return;
                      }
                      if (this._order.splice(be, 0, Tt), this._layerOrderChanged = !0, this._layers[Tt] = Nt, this._removedLayers[Tt] && Nt.source && Nt.type !== "custom") {
                        const Re = this._removedLayers[Tt];
                        delete this._removedLayers[Tt], Re.type !== Nt.type ? this._updatedSources[Nt.source] = "clear" : (this._updatedSources[Nt.source] = "reload", this.sourceCaches[Nt.source].pause());
                      }
                      this._updateLayer(Nt), Nt.onAdd && Nt.onAdd(this.map);
                    }
                    /**
                     * Moves a layer to a different z-position. The layer will be inserted before the layer with
                     * ID `before`, or appended if `before` is omitted.
                     * @param id - ID of the layer to move
                     * @param before - ID of an existing layer to insert before
                     */
                    moveLayer(R, J) {
                      if (this._checkLoaded(), this._changed = !0, !this._layers[R]) {
                        this.fire(new s.j(new Error(`The layer '${R}' does not exist in the map's style and cannot be moved.`)));
                        return;
                      }
                      if (R === J)
                        return;
                      const Tt = this._order.indexOf(R);
                      this._order.splice(Tt, 1);
                      const Nt = J ? this._order.indexOf(J) : this._order.length;
                      if (J && Nt === -1) {
                        this.fire(new s.j(new Error(`Cannot move layer "${R}" before non-existing layer "${J}".`)));
                        return;
                      }
                      this._order.splice(Nt, 0, R), this._layerOrderChanged = !0;
                    }
                    /**
                     * Remove the layer with the given id from the style.
                     * A {@link ErrorEvent} event will be fired if no such layer exists.
                     *
                     * @param id - id of the layer to remove
                     */
                    removeLayer(R) {
                      this._checkLoaded();
                      const J = this._layers[R];
                      if (!J) {
                        this.fire(new s.j(new Error(`Cannot remove non-existing layer "${R}".`)));
                        return;
                      }
                      J.setEventedParent(null);
                      const yt = this._order.indexOf(R);
                      this._order.splice(yt, 1), this._layerOrderChanged = !0, this._changed = !0, this._removedLayers[R] = J, delete this._layers[R], this._serializedLayers && delete this._serializedLayers[R], delete this._updatedLayers[R], delete this._updatedPaintProps[R], J.onRemove && J.onRemove(this.map);
                    }
                    /**
                     * Return the style layer object with the given `id`.
                     *
                     * @param id - id of the desired layer
                     * @returns a layer, if one with the given `id` exists
                     */
                    getLayer(R) {
                      return this._layers[R];
                    }
                    /**
                     * Return the ids of all layers currently in the style, including custom layers, in order.
                     *
                     * @returns ids of layers, in order
                     */
                    getLayersOrder() {
                      return [...this._order];
                    }
                    /**
                     * Checks if a specific layer is present within the style.
                     *
                     * @param id - the id of the desired layer
                     * @returns a boolean specifying if the given layer is present
                     */
                    hasLayer(R) {
                      return R in this._layers;
                    }
                    setLayerZoomRange(R, J, yt) {
                      this._checkLoaded();
                      const Tt = this.getLayer(R);
                      if (!Tt) {
                        this.fire(new s.j(new Error(`Cannot set the zoom range of non-existing layer "${R}".`)));
                        return;
                      }
                      Tt.minzoom === J && Tt.maxzoom === yt || (J != null && (Tt.minzoom = J), yt != null && (Tt.maxzoom = yt), this._updateLayer(Tt));
                    }
                    setFilter(R, J, yt = {}) {
                      this._checkLoaded();
                      const Tt = this.getLayer(R);
                      if (!Tt) {
                        this.fire(new s.j(new Error(`Cannot filter non-existing layer "${R}".`)));
                        return;
                      }
                      if (!s.aF(Tt.filter, J)) {
                        if (J == null) {
                          Tt.filter = void 0, this._updateLayer(Tt);
                          return;
                        }
                        this._validate(s.x.filter, `layers.${Tt.id}.filter`, J, null, yt) || (Tt.filter = s.aC(J), this._updateLayer(Tt));
                      }
                    }
                    /**
                     * Get a layer's filter object
                     * @param layer - the layer to inspect
                     * @returns the layer's filter, if any
                     */
                    getFilter(R) {
                      return s.aC(this.getLayer(R).filter);
                    }
                    setLayoutProperty(R, J, yt, Tt = {}) {
                      this._checkLoaded();
                      const Nt = this.getLayer(R);
                      if (!Nt) {
                        this.fire(new s.j(new Error(`Cannot style non-existing layer "${R}".`)));
                        return;
                      }
                      s.aF(Nt.getLayoutProperty(J), yt) || (Nt.setLayoutProperty(J, yt, Tt), this._updateLayer(Nt));
                    }
                    /**
                     * Get a layout property's value from a given layer
                     * @param layerId - the layer to inspect
                     * @param name - the name of the layout property
                     * @returns the property value
                     */
                    getLayoutProperty(R, J) {
                      const yt = this.getLayer(R);
                      if (!yt) {
                        this.fire(new s.j(new Error(`Cannot get style of non-existing layer "${R}".`)));
                        return;
                      }
                      return yt.getLayoutProperty(J);
                    }
                    setPaintProperty(R, J, yt, Tt = {}) {
                      this._checkLoaded();
                      const Nt = this.getLayer(R);
                      if (!Nt) {
                        this.fire(new s.j(new Error(`Cannot style non-existing layer "${R}".`)));
                        return;
                      }
                      if (s.aF(Nt.getPaintProperty(J), yt))
                        return;
                      Nt.setPaintProperty(J, yt, Tt) && this._updateLayer(Nt), this._changed = !0, this._updatedPaintProps[R] = !0, this._serializedLayers = null;
                    }
                    getPaintProperty(R, J) {
                      return this.getLayer(R).getPaintProperty(J);
                    }
                    setFeatureState(R, J) {
                      this._checkLoaded();
                      const yt = R.source, Tt = R.sourceLayer, Nt = this.sourceCaches[yt];
                      if (Nt === void 0) {
                        this.fire(new s.j(new Error(`The source '${yt}' does not exist in the map's style.`)));
                        return;
                      }
                      const be = Nt.getSource().type;
                      if (be === "geojson" && Tt) {
                        this.fire(new s.j(new Error("GeoJSON sources cannot have a sourceLayer parameter.")));
                        return;
                      }
                      if (be === "vector" && !Tt) {
                        this.fire(new s.j(new Error("The sourceLayer parameter must be provided for vector source types.")));
                        return;
                      }
                      R.id === void 0 && this.fire(new s.j(new Error("The feature id parameter must be provided."))), Nt.setFeatureState(Tt, R.id, J);
                    }
                    removeFeatureState(R, J) {
                      this._checkLoaded();
                      const yt = R.source, Tt = this.sourceCaches[yt];
                      if (Tt === void 0) {
                        this.fire(new s.j(new Error(`The source '${yt}' does not exist in the map's style.`)));
                        return;
                      }
                      const Nt = Tt.getSource().type, be = Nt === "vector" ? R.sourceLayer : void 0;
                      if (Nt === "vector" && !be) {
                        this.fire(new s.j(new Error("The sourceLayer parameter must be provided for vector source types.")));
                        return;
                      }
                      if (J && typeof R.id != "string" && typeof R.id != "number") {
                        this.fire(new s.j(new Error("A feature id is required to remove its specific state property.")));
                        return;
                      }
                      Tt.removeFeatureState(be, R.id, J);
                    }
                    getFeatureState(R) {
                      this._checkLoaded();
                      const J = R.source, yt = R.sourceLayer, Tt = this.sourceCaches[J];
                      if (Tt === void 0) {
                        this.fire(new s.j(new Error(`The source '${J}' does not exist in the map's style.`)));
                        return;
                      }
                      if (Tt.getSource().type === "vector" && !yt) {
                        this.fire(new s.j(new Error("The sourceLayer parameter must be provided for vector source types.")));
                        return;
                      }
                      return R.id === void 0 && this.fire(new s.j(new Error("The feature id parameter must be provided."))), Tt.getFeatureState(yt, R.id);
                    }
                    getTransition() {
                      return s.e({ duration: 300, delay: 0 }, this.stylesheet && this.stylesheet.transition);
                    }
                    serialize() {
                      if (!this._loaded)
                        return;
                      const R = s.aG(this.sourceCaches, (Nt) => Nt.serialize()), J = this._serializeByIds(this._order), yt = this.map.getTerrain() || void 0, Tt = this.stylesheet;
                      return s.aH({
                        version: Tt.version,
                        name: Tt.name,
                        metadata: Tt.metadata,
                        light: Tt.light,
                        sky: Tt.sky,
                        center: Tt.center,
                        zoom: Tt.zoom,
                        bearing: Tt.bearing,
                        pitch: Tt.pitch,
                        sprite: Tt.sprite,
                        glyphs: Tt.glyphs,
                        transition: Tt.transition,
                        sources: R,
                        layers: J,
                        terrain: yt
                      }, (Nt) => Nt !== void 0);
                    }
                    _updateLayer(R) {
                      this._updatedLayers[R.id] = !0, R.source && !this._updatedSources[R.source] && //Skip for raster layers (https://github.com/mapbox/mapbox-gl-js/issues/7865)
                      this.sourceCaches[R.source].getSource().type !== "raster" && (this._updatedSources[R.source] = "reload", this.sourceCaches[R.source].pause()), this._serializedLayers = null, this._changed = !0;
                    }
                    _flattenAndSortRenderedFeatures(R) {
                      const J = (be) => this._layers[be].type === "fill-extrusion", yt = {}, Tt = [];
                      for (let be = this._order.length - 1; be >= 0; be--) {
                        const Re = this._order[be];
                        if (J(Re)) {
                          yt[Re] = be;
                          for (const je of R) {
                            const pr = je[Re];
                            if (pr)
                              for (const br of pr)
                                Tt.push(br);
                          }
                        }
                      }
                      Tt.sort((be, Re) => Re.intersectionZ - be.intersectionZ);
                      const Nt = [];
                      for (let be = this._order.length - 1; be >= 0; be--) {
                        const Re = this._order[be];
                        if (J(Re))
                          for (let je = Tt.length - 1; je >= 0; je--) {
                            const pr = Tt[je].feature;
                            if (yt[pr.layer.id] < be)
                              break;
                            Nt.push(pr), Tt.pop();
                          }
                        else
                          for (const je of R) {
                            const pr = je[Re];
                            if (pr)
                              for (const br of pr)
                                Nt.push(br.feature);
                          }
                      }
                      return Nt;
                    }
                    queryRenderedFeatures(R, J, yt) {
                      J && J.filter && this._validate(s.x.filter, "queryRenderedFeatures.filter", J.filter, null, J);
                      const Tt = {};
                      if (J && J.layers) {
                        if (!Array.isArray(J.layers))
                          return this.fire(new s.j(new Error("parameters.layers must be an Array."))), [];
                        for (const Re of J.layers) {
                          const je = this._layers[Re];
                          if (!je)
                            return this.fire(new s.j(new Error(`The layer '${Re}' does not exist in the map's style and cannot be queried for features.`))), [];
                          Tt[je.source] = !0;
                        }
                      }
                      const Nt = [];
                      J.availableImages = this._availableImages;
                      const be = this._serializedAllLayers();
                      for (const Re in this.sourceCaches)
                        J.layers && !Tt[Re] || Nt.push(mr(this.sourceCaches[Re], this._layers, be, R, J, yt));
                      return this.placement && Nt.push(Xe(this._layers, be, this.sourceCaches, R, J, this.placement.collisionIndex, this.placement.retainedQueryData)), this._flattenAndSortRenderedFeatures(Nt);
                    }
                    querySourceFeatures(R, J) {
                      J && J.filter && this._validate(s.x.filter, "querySourceFeatures.filter", J.filter, null, J);
                      const yt = this.sourceCaches[R];
                      return yt ? xe(yt, J) : [];
                    }
                    getLight() {
                      return this.light.getLight();
                    }
                    setLight(R, J = {}) {
                      this._checkLoaded();
                      const yt = this.light.getLight();
                      let Tt = !1;
                      for (const be in R)
                        if (!s.aF(R[be], yt[be])) {
                          Tt = !0;
                          break;
                        }
                      if (!Tt)
                        return;
                      const Nt = {
                        now: d.now(),
                        transition: s.e({
                          duration: 300,
                          delay: 0
                        }, this.stylesheet.transition)
                      };
                      this.light.setLight(R, J), this.light.updateTransitions(Nt);
                    }
                    getSky() {
                      var R;
                      return (R = this.stylesheet) === null || R === void 0 ? void 0 : R.sky;
                    }
                    setSky(R, J = {}) {
                      const yt = this.sky.getSky();
                      let Tt = !1;
                      R || yt && (Tt = !0);
                      for (const be in R)
                        if (!s.aF(R[be], yt[be])) {
                          Tt = !0;
                          break;
                        }
                      if (!Tt)
                        return;
                      const Nt = {
                        now: d.now(),
                        transition: s.e({
                          duration: 300,
                          delay: 0
                        }, this.stylesheet.transition)
                      };
                      this.stylesheet.sky = R, this.sky.setSky(R, J), this.sky.updateTransitions(Nt);
                    }
                    _validate(R, J, yt, Tt, Nt = {}) {
                      return Nt && Nt.validate === !1 ? !1 : Io(this, R.call(s.x, s.e({
                        key: J,
                        style: this.serialize(),
                        value: yt,
                        styleSpec: s.v
                      }, Tt)));
                    }
                    _remove(R = !0) {
                      this._frameRequest && (this._frameRequest.abort(), this._frameRequest = null), this._loadStyleRequest && (this._loadStyleRequest.abort(), this._loadStyleRequest = null), this._spriteRequest && (this._spriteRequest.abort(), this._spriteRequest = null), de().off(Xr, this._rtlPluginLoaded);
                      for (const J in this._layers)
                        this._layers[J].setEventedParent(null);
                      for (const J in this.sourceCaches) {
                        const yt = this.sourceCaches[J];
                        yt.setEventedParent(null), yt.onRemove(this.map);
                      }
                      this.imageManager.setEventedParent(null), this.setEventedParent(null), R && this.dispatcher.broadcast("RM", void 0), this.dispatcher.remove(R);
                    }
                    _clearSource(R) {
                      this.sourceCaches[R].clearTiles();
                    }
                    _reloadSource(R) {
                      this.sourceCaches[R].resume(), this.sourceCaches[R].reload();
                    }
                    _updateSources(R) {
                      for (const J in this.sourceCaches)
                        this.sourceCaches[J].update(R, this.map.terrain);
                    }
                    _generateCollisionBoxes() {
                      for (const R in this.sourceCaches)
                        this._reloadSource(R);
                    }
                    _updatePlacement(R, J, yt, Tt, Nt = !1) {
                      let be = !1, Re = !1;
                      const je = {};
                      for (const br of this._order) {
                        const Ar = this._layers[br];
                        if (Ar.type !== "symbol")
                          continue;
                        if (!je[Ar.source]) {
                          const vn = this.sourceCaches[Ar.source];
                          je[Ar.source] = vn.getRenderableIds(!0).map((bn) => vn.getTileByID(bn)).sort((bn, Rn) => Rn.tileID.overscaledZ - bn.tileID.overscaledZ || (bn.tileID.isLessThan(Rn.tileID) ? -1 : 1));
                        }
                        const qr = this.crossTileSymbolIndex.addLayer(Ar, je[Ar.source], R.center.lng);
                        be = be || qr;
                      }
                      if (this.crossTileSymbolIndex.pruneUnusedLayers(this._order), Nt = Nt || this._layerOrderChanged || yt === 0, (Nt || !this.pauseablePlacement || this.pauseablePlacement.isDone() && !this.placement.stillRecent(d.now(), R.zoom)) && (this.pauseablePlacement = new _i(R, this.map.terrain, this._order, Nt, J, yt, Tt, this.placement), this._layerOrderChanged = !1), this.pauseablePlacement.isDone() ? this.placement.setStale() : (this.pauseablePlacement.continuePlacement(this._order, this._layers, je), this.pauseablePlacement.isDone() && (this.placement = this.pauseablePlacement.commit(d.now()), Re = !0), be && this.pauseablePlacement.placement.setStale()), Re || be)
                        for (const br of this._order) {
                          const Ar = this._layers[br];
                          Ar.type === "symbol" && this.placement.updateLayerOpacities(Ar, je[Ar.source]);
                        }
                      return !this.pauseablePlacement.isDone() || this.placement.hasTransitions(d.now());
                    }
                    _releaseSymbolFadeTiles() {
                      for (const R in this.sourceCaches)
                        this.sourceCaches[R].releaseSymbolFadeTiles();
                    }
                    // Callbacks from web workers
                    getImages(R, J) {
                      return s._(this, void 0, void 0, function* () {
                        const yt = yield this.imageManager.getImages(J.icons);
                        this._updateTilesForChangedImages();
                        const Tt = this.sourceCaches[J.source];
                        return Tt && Tt.setDependencies(J.tileID.key, J.type, J.icons), yt;
                      });
                    }
                    getGlyphs(R, J) {
                      return s._(this, void 0, void 0, function* () {
                        const yt = yield this.glyphManager.getGlyphs(J.stacks), Tt = this.sourceCaches[J.source];
                        return Tt && Tt.setDependencies(J.tileID.key, J.type, [""]), yt;
                      });
                    }
                    getGlyphsUrl() {
                      return this.stylesheet.glyphs || null;
                    }
                    setGlyphs(R, J = {}) {
                      this._checkLoaded(), !(R && this._validate(s.x.glyphs, "glyphs", R, null, J)) && (this._glyphsDidChange = !0, this.stylesheet.glyphs = R, this.glyphManager.entries = {}, this.glyphManager.setURL(R));
                    }
                    /**
                     * Add a sprite.
                     *
                     * @param id - The id of the desired sprite
                     * @param url - The url to load the desired sprite from
                     * @param options - The style setter options
                     * @param completion - The completion handler
                     */
                    addSprite(R, J, yt = {}, Tt) {
                      this._checkLoaded();
                      const Nt = [{ id: R, url: J }], be = [
                        ...Ct(this.stylesheet.sprite),
                        ...Nt
                      ];
                      this._validate(s.x.sprite, "sprite", be, null, yt) || (this.stylesheet.sprite = be, this._loadSprite(Nt, !0, Tt));
                    }
                    /**
                     * Remove a sprite by its id. When the last sprite is removed, the whole `this.stylesheet.sprite` object becomes
                     * `undefined`. This falsy `undefined` value later prevents attempts to load the sprite when it's absent.
                     *
                     * @param id - the id of the sprite to remove
                     */
                    removeSprite(R) {
                      this._checkLoaded();
                      const J = Ct(this.stylesheet.sprite);
                      if (!J.find((yt) => yt.id === R)) {
                        this.fire(new s.j(new Error(`Sprite "${R}" doesn't exists on this map.`)));
                        return;
                      }
                      if (this._spritesImagesIds[R])
                        for (const yt of this._spritesImagesIds[R])
                          this.imageManager.removeImage(yt), this._changedImages[yt] = !0;
                      J.splice(J.findIndex((yt) => yt.id === R), 1), this.stylesheet.sprite = J.length > 0 ? J : void 0, delete this._spritesImagesIds[R], this._availableImages = this.imageManager.listImages(), this._changed = !0, this.dispatcher.broadcast("SI", this._availableImages), this.fire(new s.k("data", { dataType: "style" }));
                    }
                    /**
                     * Get the current sprite value.
                     *
                     * @returns empty array when no sprite is set; id-url pairs otherwise
                     */
                    getSprite() {
                      return Ct(this.stylesheet.sprite);
                    }
                    /**
                     * Set a new value for the style's sprite.
                     *
                     * @param sprite - new sprite value
                     * @param options - style setter options
                     * @param completion - the completion handler
                     */
                    setSprite(R, J = {}, yt) {
                      this._checkLoaded(), !(R && this._validate(s.x.sprite, "sprite", R, null, J)) && (this.stylesheet.sprite = R, R ? this._loadSprite(R, !0, yt) : (this._unloadSprite(), yt && yt(null)));
                    }
                  }
                  var Bs = s.Y([
                    { name: "a_pos", type: "Int16", components: 2 }
                  ]), so = `#ifdef GL_ES
precision mediump float;
#else
#if !defined(lowp)
#define lowp
#endif
#if !defined(mediump)
#define mediump
#endif
#if !defined(highp)
#define highp
#endif
#endif
`, Ql = `#ifdef GL_ES
precision highp float;
#else
#if !defined(lowp)
#define lowp
#endif
#if !defined(mediump)
#define mediump
#endif
#if !defined(highp)
#define highp
#endif
#endif
vec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(unpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0
);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;}
#ifdef TERRAIN3D
uniform sampler2D u_terrain;uniform float u_terrain_dim;uniform mat4 u_terrain_matrix;uniform vec4 u_terrain_unpack;uniform float u_terrain_exaggeration;uniform highp sampler2D u_depth;
#endif
const highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitShifts=vec4(1.)/bitSh;highp float unpack(highp vec4 color) {return dot(color,bitShifts);}highp float depthOpacity(vec3 frag) {
#ifdef TERRAIN3D
highp float d=unpack(texture2D(u_depth,frag.xy*0.5+0.5))+0.0001-frag.z;return 1.0-max(0.0,min(1.0,-d*500.0));
#else
return 1.0;
#endif
}float calculate_visibility(vec4 pos) {
#ifdef TERRAIN3D
vec3 frag=pos.xyz/pos.w;highp float d=depthOpacity(frag);if (d > 0.95) return 1.0;return (d+depthOpacity(frag+vec3(0.0,0.01,0.0)))/2.0;
#else
return 1.0;
#endif
}float ele(vec2 pos) {
#ifdef TERRAIN3D
vec4 rgb=(texture2D(u_terrain,pos)*255.0)*u_terrain_unpack;return rgb.r+rgb.g+rgb.b-u_terrain_unpack.a;
#else
return 0.0;
#endif
}float get_elevation(vec2 pos) {
#ifdef TERRAIN3D
vec2 coord=(u_terrain_matrix*vec4(pos,0.0,1.0)).xy*u_terrain_dim+1.0;vec2 f=fract(coord);vec2 c=(floor(coord)+0.5)/(u_terrain_dim+2.0);float d=1.0/(u_terrain_dim+2.0);float tl=ele(c);float tr=ele(c+vec2(d,0.0));float bl=ele(c+vec2(0.0,d));float br=ele(c+vec2(d,d));float elevation=mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);return elevation*u_terrain_exaggeration;
#else
return 0.0;
#endif
}`, Zu = `uniform vec4 u_color;uniform float u_opacity;void main() {gl_FragColor=u_color*u_opacity;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, Ns = "attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}", io = `uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_mix)*u_opacity;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, vf = "uniform mat4 u_matrix;uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);}", yl = `varying vec3 v_data;varying float v_visibility;
#pragma mapbox: define highp vec4 color
#pragma mapbox: define mediump float radius
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
#pragma mapbox: define highp vec4 stroke_color
#pragma mapbox: define mediump float stroke_width
#pragma mapbox: define lowp float stroke_opacity
void main() {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize mediump float radius
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize highp vec4 stroke_color
#pragma mapbox: initialize mediump float stroke_width
#pragma mapbox: initialize lowp float stroke_opacity
vec2 extrude=v_data.xy;float extrude_length=length(extrude);lowp float antialiasblur=v_data.z;float antialiased_blur=-max(blur,antialiasblur);float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width));gl_FragColor=v_visibility*opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, jo = `uniform mat4 u_matrix;uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;attribute vec2 a_pos;varying vec3 v_data;varying float v_visibility;
#pragma mapbox: define highp vec4 color
#pragma mapbox: define mediump float radius
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
#pragma mapbox: define highp vec4 stroke_color
#pragma mapbox: define mediump float stroke_width
#pragma mapbox: define lowp float stroke_opacity
void main(void) {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize mediump float radius
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize highp vec4 stroke_color
#pragma mapbox: initialize mediump float stroke_width
#pragma mapbox: initialize lowp float stroke_opacity
vec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);float ele=get_elevation(circle_center);v_visibility=calculate_visibility(u_matrix*vec4(circle_center,ele,1.0));if (u_pitch_with_map) {vec2 corner_position=circle_center;if (u_scale_with_map) {corner_position+=extrude*(radius+stroke_width)*u_extrude_scale;} else {vec4 projected_center=u_matrix*vec4(circle_center,0,1);corner_position+=extrude*(radius+stroke_width)*u_extrude_scale*(projected_center.w/u_camera_to_center_distance);}gl_Position=u_matrix*vec4(corner_position,ele,1);} else {gl_Position=u_matrix*vec4(circle_center,ele,1);if (u_scale_with_map) {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*u_camera_to_center_distance;} else {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*gl_Position.w;}}lowp float antialiasblur=1.0/u_device_pixel_ratio/(radius+stroke_width);v_data=vec3(extrude.x,extrude.y,antialiasblur);}`, Ys = "void main() {gl_FragColor=vec4(1.0);}", uu = "attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}", ss = `uniform highp float u_intensity;varying vec2 v_extrude;
#pragma mapbox: define highp float weight
#define GAUSS_COEF 0.3989422804014327
void main() {
#pragma mapbox: initialize highp float weight
float d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);gl_FragColor=vec4(val,1.0,1.0,1.0);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, qo = `uniform mat4 u_matrix;uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;attribute vec2 a_pos;varying vec2 v_extrude;
#pragma mapbox: define highp float weight
#pragma mapbox: define mediump float radius
const highp float ZERO=1.0/255.0/16.0;
#define GAUSS_COEF 0.3989422804014327
void main(void) {
#pragma mapbox: initialize highp float weight
#pragma mapbox: initialize mediump float radius
vec2 unscaled_extrude=vec2(mod(a_pos,2.0)*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec4 pos=vec4(floor(a_pos*0.5)+extrude,0,1);gl_Position=u_matrix*pos;}`, Ol = `uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;varying vec2 v_pos;void main() {float t=texture2D(u_image,v_pos).r;vec4 color=texture2D(u_color_ramp,vec2(t,0.5));gl_FragColor=color*u_opacity;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(0.0);
#endif
}`, yo = "uniform mat4 u_matrix;uniform vec2 u_world;attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}", ds = "varying float v_placed;varying float v_notUsed;void main() {float alpha=0.5;gl_FragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}", Ks = "attribute vec2 a_anchor_pos;attribute vec2 a_placed;attribute vec2 a_box_real;uniform mat4 u_matrix;uniform vec2 u_pixel_extrude_scale;varying float v_placed;varying float v_notUsed;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);}void main() {gl_Position=projectTileWithElevation(a_anchor_pos,get_elevation(a_anchor_pos));gl_Position.xy=((a_box_real+0.5)*u_pixel_extrude_scale*2.0-1.0)*vec2(1.0,-1.0)*gl_Position.w;if (gl_Position.z/gl_Position.w < 1.1) {gl_Position.z=0.5;}v_placed=a_placed.x;v_notUsed=a_placed.y;}", zs = "varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}", is = "attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd  =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz  /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}", wl = "uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}", Th = "attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,get_elevation(a_pos),1);}", Us = `#pragma mapbox: define highp vec4 color
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize lowp float opacity
gl_FragColor=color*opacity;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, Gf = `attribute vec2 a_pos;uniform mat4 u_matrix;
#pragma mapbox: define highp vec4 color
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize lowp float opacity
gl_Position=u_matrix*vec4(a_pos,0,1);}`, _l = `varying vec2 v_pos;
#pragma mapbox: define highp vec4 outline_color
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize highp vec4 outline_color
#pragma mapbox: initialize lowp float opacity
float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, bs = `attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;
#pragma mapbox: define highp vec4 outline_color
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize highp vec4 outline_color
#pragma mapbox: initialize lowp float opacity
gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}`, pf = `uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp vec4 pattern_from
#pragma mapbox: define lowp vec4 pattern_to
void main() {
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump vec4 pattern_from
#pragma mapbox: initialize mediump vec4 pattern_to
vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, $l = `uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp vec4 pattern_from
#pragma mapbox: define lowp vec4 pattern_to
#pragma mapbox: define lowp float pixel_ratio_from
#pragma mapbox: define lowp float pixel_ratio_to
void main() {
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump vec4 pattern_from
#pragma mapbox: initialize mediump vec4 pattern_to
#pragma mapbox: initialize lowp float pixel_ratio_from
#pragma mapbox: initialize lowp float pixel_ratio_to
vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}`, Bl = `#ifdef GL_ES
precision highp float;
#endif
uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp vec4 pattern_from
#pragma mapbox: define lowp vec4 pattern_to
void main() {
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump vec4 pattern_from
#pragma mapbox: initialize mediump vec4 pattern_to
vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, gf = `uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp vec4 pattern_from
#pragma mapbox: define lowp vec4 pattern_to
#pragma mapbox: define lowp float pixel_ratio_from
#pragma mapbox: define lowp float pixel_ratio_to
void main() {
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump vec4 pattern_from
#pragma mapbox: initialize mediump vec4 pattern_to
#pragma mapbox: initialize lowp float pixel_ratio_from
#pragma mapbox: initialize lowp float pixel_ratio_to
vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}`, yf = `varying vec4 v_color;void main() {gl_FragColor=v_color;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, Wf = `uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed;
#ifdef TERRAIN3D
attribute vec2 a_centroid;
#endif
varying vec4 v_color;
#pragma mapbox: define highp float base
#pragma mapbox: define highp float height
#pragma mapbox: define highp vec4 color
void main() {
#pragma mapbox: initialize highp float base
#pragma mapbox: initialize highp float height
#pragma mapbox: initialize highp vec4 color
vec3 normal=a_normal_ed.xyz;
#ifdef TERRAIN3D
float height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);
#else
float height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;
#endif
base=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}`, Xu = `uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;
#pragma mapbox: define lowp float base
#pragma mapbox: define lowp float height
#pragma mapbox: define lowp vec4 pattern_from
#pragma mapbox: define lowp vec4 pattern_to
#pragma mapbox: define lowp float pixel_ratio_from
#pragma mapbox: define lowp float pixel_ratio_to
void main() {
#pragma mapbox: initialize lowp float base
#pragma mapbox: initialize lowp float height
#pragma mapbox: initialize mediump vec4 pattern_from
#pragma mapbox: initialize mediump vec4 pattern_to
#pragma mapbox: initialize lowp float pixel_ratio_from
#pragma mapbox: initialize lowp float pixel_ratio_to
vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, Pd = `uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;
#ifdef TERRAIN3D
attribute vec2 a_centroid;
#endif
varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;
#pragma mapbox: define lowp float base
#pragma mapbox: define lowp float height
#pragma mapbox: define lowp vec4 pattern_from
#pragma mapbox: define lowp vec4 pattern_to
#pragma mapbox: define lowp float pixel_ratio_from
#pragma mapbox: define lowp float pixel_ratio_to
void main() {
#pragma mapbox: initialize lowp float base
#pragma mapbox: initialize lowp float height
#pragma mapbox: initialize mediump vec4 pattern_from
#pragma mapbox: initialize mediump vec4 pattern_to
#pragma mapbox: initialize lowp float pixel_ratio_from
#pragma mapbox: initialize lowp float pixel_ratio_to
vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;
#ifdef TERRAIN3D
float height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);
#else
float height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;
#endif
base=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0
? a_pos
: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}`, Id = `#ifdef GL_ES
precision highp float;
#endif
uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/pow(2.0,exaggeration+(19.2562-u_zoom));gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, td = "uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}", Ah = `uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;
#define PI 3.141592653589793
void main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, Rd = "uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}", mc = `uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;
#pragma mapbox: define highp vec4 color
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, ed = `
#define scale 0.015873016
attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar;
#pragma mapbox: define highp vec4 color
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
#pragma mapbox: define mediump float gapwidth
#pragma mapbox: define lowp float offset
#pragma mapbox: define mediump float width
void main() {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump float gapwidth
#pragma mapbox: initialize lowp float offset
#pragma mapbox: initialize mediump float width
float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;
#ifdef TERRAIN3D
v_gamma_scale=1.0;
#else
float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;
#endif
v_width2=vec2(outset,inset);}`, mf = `uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp vec2 v_uv;
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,v_uv);gl_FragColor=color*(alpha*opacity);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, xc = `
#define scale 0.015873016
attribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_uv_x;attribute float a_split_index;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp vec2 v_uv;
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
#pragma mapbox: define mediump float gapwidth
#pragma mapbox: define lowp float offset
#pragma mapbox: define mediump float width
void main() {
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump float gapwidth
#pragma mapbox: initialize lowp float offset
#pragma mapbox: initialize mediump float width
float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;
#ifdef TERRAIN3D
v_gamma_scale=1.0;
#else
float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;
#endif
v_width2=vec2(outset,inset);}`, Fc = `#ifdef GL_ES
precision highp float;
#endif
uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;
#pragma mapbox: define lowp vec4 pattern_from
#pragma mapbox: define lowp vec4 pattern_to
#pragma mapbox: define lowp float pixel_ratio_from
#pragma mapbox: define lowp float pixel_ratio_to
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize mediump vec4 pattern_from
#pragma mapbox: initialize mediump vec4 pattern_to
#pragma mapbox: initialize lowp float pixel_ratio_from
#pragma mapbox: initialize lowp float pixel_ratio_to
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, Vs = `
#define scale 0.015873016
#define LINE_DISTANCE_SCALE 2.0
attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp float offset
#pragma mapbox: define mediump float gapwidth
#pragma mapbox: define mediump float width
#pragma mapbox: define lowp float floorwidth
#pragma mapbox: define lowp vec4 pattern_from
#pragma mapbox: define lowp vec4 pattern_to
#pragma mapbox: define lowp float pixel_ratio_from
#pragma mapbox: define lowp float pixel_ratio_to
void main() {
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize lowp float offset
#pragma mapbox: initialize mediump float gapwidth
#pragma mapbox: initialize mediump float width
#pragma mapbox: initialize lowp float floorwidth
#pragma mapbox: initialize mediump vec4 pattern_from
#pragma mapbox: initialize mediump vec4 pattern_to
#pragma mapbox: initialize lowp float pixel_ratio_from
#pragma mapbox: initialize lowp float pixel_ratio_to
float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;
#ifdef TERRAIN3D
v_gamma_scale=1.0;
#else
float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;
#endif
v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}`, Hs = `uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;
#pragma mapbox: define highp vec4 color
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
#pragma mapbox: define mediump float width
#pragma mapbox: define lowp float floorwidth
void main() {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump float width
#pragma mapbox: initialize lowp float floorwidth
float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, jf = `
#define scale 0.015873016
#define LINE_DISTANCE_SCALE 2.0
attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;
#pragma mapbox: define highp vec4 color
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
#pragma mapbox: define mediump float gapwidth
#pragma mapbox: define lowp float offset
#pragma mapbox: define mediump float width
#pragma mapbox: define lowp float floorwidth
void main() {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump float gapwidth
#pragma mapbox: initialize lowp float offset
#pragma mapbox: initialize mediump float width
#pragma mapbox: initialize lowp float floorwidth
float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;
#ifdef TERRAIN3D
v_gamma_scale=1.0;
#else
float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;
#endif
v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}`, Tl = `uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, rd = "uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}", Zf = `uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize lowp float opacity
lowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, nd = `attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;varying vec2 v_tex;varying float v_fade_opacity;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);}
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize lowp float opacity
vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?
camera_to_anchor_distance/u_camera_to_center_distance :
u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}gl_Position=finalPos;v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float visibility=calculate_visibility(projectedPoint);v_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));}`, id = `#define SDF_PX 8.0
uniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;
#pragma mapbox: define highp vec4 fill_color
#pragma mapbox: define highp vec4 halo_color
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp float halo_width
#pragma mapbox: define lowp float halo_blur
void main() {
#pragma mapbox: initialize highp vec4 fill_color
#pragma mapbox: initialize highp vec4 halo_color
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize lowp float halo_width
#pragma mapbox: initialize lowp float halo_blur
float EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float inner_edge=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);inner_edge=inner_edge+gamma*gamma_scale;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(inner_edge-gamma_scaled,inner_edge+gamma_scaled,dist);if (u_is_halo) {lowp float halo_edge=(6.0-halo_width/fontScale)/SDF_PX;alpha=min(smoothstep(halo_edge-gamma_scaled,halo_edge+gamma_scaled,dist),1.0-alpha);}gl_FragColor=color*(alpha*opacity*fade_opacity);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, Xf = `attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_translation;uniform float u_pitched_scale;varying vec2 v_data0;varying vec3 v_data1;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);}
#pragma mapbox: define highp vec4 fill_color
#pragma mapbox: define highp vec4 halo_color
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp float halo_width
#pragma mapbox: define lowp float halo_blur
void main() {
#pragma mapbox: initialize highp vec4 fill_color
#pragma mapbox: initialize highp vec4 halo_color
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize lowp float halo_width
#pragma mapbox: initialize lowp float halo_blur
vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?
camera_to_anchor_distance/u_camera_to_center_distance :
u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}`, ql = `#define SDF_PX 8.0
#define SDF 1.0
#define ICON 0.0
uniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;
#pragma mapbox: define highp vec4 fill_color
#pragma mapbox: define highp vec4 halo_color
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp float halo_width
#pragma mapbox: define lowp float halo_blur
void main() {
#pragma mapbox: initialize highp vec4 fill_color
#pragma mapbox: initialize highp vec4 halo_color
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize lowp float halo_width
#pragma mapbox: initialize lowp float halo_blur
float fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
return;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`, Oc = `attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;varying vec4 v_data0;varying vec4 v_data1;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);}
#pragma mapbox: define highp vec4 fill_color
#pragma mapbox: define highp vec4 halo_color
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp float halo_width
#pragma mapbox: define lowp float halo_blur
void main() {
#pragma mapbox: initialize highp vec4 fill_color
#pragma mapbox: initialize highp vec4 halo_color
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize lowp float halo_width
#pragma mapbox: initialize lowp float halo_blur
vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?
camera_to_anchor_distance/u_camera_to_center_distance :
u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}`, Yu = "varying float v_depth;const highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitMsk=vec4(0.,vec3(1./256.0));highp vec4 pack(highp float value) {highp vec4 comp=fract(value*bitSh);comp-=comp.xxyz*bitMsk;return comp;}void main() {gl_FragColor=pack(v_depth);}", xf = "precision mediump float;uniform sampler2D u_texture;uniform float u_terrain_coords_id;varying vec2 v_texture_pos;void main() {vec4 rgba=texture2D(u_texture,v_texture_pos);gl_FragColor=vec4(rgba.r,rgba.g,rgba.b,u_terrain_coords_id);}", Ku = "uniform sampler2D u_texture;uniform vec4 u_fog_color;uniform vec4 u_horizon_color;uniform float u_fog_ground_blend;uniform float u_fog_ground_blend_opacity;uniform float u_horizon_fog_blend;varying vec2 v_texture_pos;varying float v_fog_depth;const float gamma=2.2;vec4 gammaToLinear(vec4 color) {return pow(color,vec4(gamma));}vec4 linearToGamma(vec4 color) {return pow(color,vec4(1.0/gamma));}void main() {vec4 surface_color=texture2D(u_texture,v_texture_pos);if (v_fog_depth > u_fog_ground_blend) {vec4 surface_color_linear=gammaToLinear(surface_color);float blend_color=smoothstep(0.0,1.0,max((v_fog_depth-u_horizon_fog_blend)/(1.0-u_horizon_fog_blend),0.0));vec4 fog_horizon_color_linear=mix(gammaToLinear(u_fog_color),gammaToLinear(u_horizon_color),blend_color);float factor_fog=max(v_fog_depth-u_fog_ground_blend,0.0)/(1.0-u_fog_ground_blend);gl_FragColor=linearToGamma(mix(surface_color_linear,fog_horizon_color_linear,pow(factor_fog,2.0)*u_fog_ground_blend_opacity));} else {gl_FragColor=surface_color;}}", cu = "attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform float u_ele_delta;varying float v_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;gl_Position=u_matrix*vec4(a_pos3d.xy,ele-ele_delta,1.0);v_depth=gl_Position.z/gl_Position.w;}", Sh = "attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform float u_ele_delta;varying vec2 v_texture_pos;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/8192.0;gl_Position=u_matrix*vec4(a_pos3d.xy,ele-ele_delta,1.0);}", Bc = "attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform mat4 u_fog_matrix;uniform float u_ele_delta;varying vec2 v_texture_pos;varying float v_fog_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/8192.0;gl_Position=u_matrix*vec4(a_pos3d.xy,ele-ele_delta,1.0);vec4 pos=u_fog_matrix*vec4(a_pos3d.xy,ele,1.0);v_fog_depth=pos.z/pos.w*0.5+0.5;}", Js = "uniform vec4 u_sky_color;uniform vec4 u_horizon_color;uniform float u_horizon;uniform float u_sky_horizon_blend;void main() {float y=gl_FragCoord.y;if (y > u_horizon) {float blend=y-u_horizon;if (blend < u_sky_horizon_blend) {gl_FragColor=mix(u_sky_color,u_horizon_color,pow(1.0-blend/u_sky_horizon_blend,2.0));} else {gl_FragColor=u_sky_color;}}}", ls = "attribute vec2 a_pos;void main() {gl_Position=vec4(a_pos,1.0,1.0);}";
                  const bc = {
                    prelude: Ho(so, Ql),
                    background: Ho(Zu, Ns),
                    backgroundPattern: Ho(io, vf),
                    circle: Ho(yl, jo),
                    clippingMask: Ho(Ys, uu),
                    heatmap: Ho(ss, qo),
                    heatmapTexture: Ho(Ol, yo),
                    collisionBox: Ho(ds, Ks),
                    collisionCircle: Ho(zs, is),
                    debug: Ho(wl, Th),
                    fill: Ho(Us, Gf),
                    fillOutline: Ho(_l, bs),
                    fillOutlinePattern: Ho(pf, $l),
                    fillPattern: Ho(Bl, gf),
                    fillExtrusion: Ho(yf, Wf),
                    fillExtrusionPattern: Ho(Xu, Pd),
                    hillshadePrepare: Ho(Id, td),
                    hillshade: Ho(Ah, Rd),
                    line: Ho(mc, ed),
                    lineGradient: Ho(mf, xc),
                    linePattern: Ho(Fc, Vs),
                    lineSDF: Ho(Hs, jf),
                    raster: Ho(Tl, rd),
                    symbolIcon: Ho(Zf, nd),
                    symbolSDF: Ho(id, Xf),
                    symbolTextAndIcon: Ho(ql, Oc),
                    terrain: Ho(Ku, Bc),
                    terrainDepth: Ho(Yu, cu),
                    terrainCoords: Ho(xf, Sh),
                    sky: Ho(Js, ls)
                  };
                  function Ho(Ot, R) {
                    const J = /#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g, yt = R.match(/attribute ([\w]+) ([\w]+)/g), Tt = Ot.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g), Nt = R.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g), be = Nt ? Nt.concat(Tt) : Tt, Re = {};
                    return Ot = Ot.replace(J, (je, pr, br, Ar, qr) => (Re[qr] = !0, pr === "define" ? `
#ifndef HAS_UNIFORM_u_${qr}
varying ${br} ${Ar} ${qr};
#else
uniform ${br} ${Ar} u_${qr};
#endif
` : `
#ifdef HAS_UNIFORM_u_${qr}
    ${br} ${Ar} ${qr} = u_${qr};
#endif
`)), R = R.replace(J, (je, pr, br, Ar, qr) => {
                      const vn = Ar === "float" ? "vec2" : "vec4", bn = qr.match(/color/) ? "color" : vn;
                      return Re[qr] ? pr === "define" ? `
#ifndef HAS_UNIFORM_u_${qr}
uniform lowp float u_${qr}_t;
attribute ${br} ${vn} a_${qr};
varying ${br} ${Ar} ${qr};
#else
uniform ${br} ${Ar} u_${qr};
#endif
` : bn === "vec4" ? `
#ifndef HAS_UNIFORM_u_${qr}
    ${qr} = a_${qr};
#else
    ${br} ${Ar} ${qr} = u_${qr};
#endif
` : `
#ifndef HAS_UNIFORM_u_${qr}
    ${qr} = unpack_mix_${bn}(a_${qr}, u_${qr}_t);
#else
    ${br} ${Ar} ${qr} = u_${qr};
#endif
` : pr === "define" ? `
#ifndef HAS_UNIFORM_u_${qr}
uniform lowp float u_${qr}_t;
attribute ${br} ${vn} a_${qr};
#else
uniform ${br} ${Ar} u_${qr};
#endif
` : bn === "vec4" ? `
#ifndef HAS_UNIFORM_u_${qr}
    ${br} ${Ar} ${qr} = a_${qr};
#else
    ${br} ${Ar} ${qr} = u_${qr};
#endif
` : `
#ifndef HAS_UNIFORM_u_${qr}
    ${br} ${Ar} ${qr} = unpack_mix_${bn}(a_${qr}, u_${qr}_t);
#else
    ${br} ${Ar} ${qr} = u_${qr};
#endif
`;
                    }), { fragmentSource: Ot, vertexSource: R, staticAttributes: yt, staticUniforms: be };
                  }
                  class Yf {
                    constructor() {
                      this.boundProgram = null, this.boundLayoutVertexBuffer = null, this.boundPaintVertexBuffers = [], this.boundIndexBuffer = null, this.boundVertexOffset = null, this.boundDynamicVertexBuffer = null, this.vao = null;
                    }
                    bind(R, J, yt, Tt, Nt, be, Re, je, pr) {
                      this.context = R;
                      let br = this.boundPaintVertexBuffers.length !== Tt.length;
                      for (let qr = 0; !br && qr < Tt.length; qr++)
                        this.boundPaintVertexBuffers[qr] !== Tt[qr] && (br = !0);
                      !this.vao || this.boundProgram !== J || this.boundLayoutVertexBuffer !== yt || br || this.boundIndexBuffer !== Nt || this.boundVertexOffset !== be || this.boundDynamicVertexBuffer !== Re || this.boundDynamicVertexBuffer2 !== je || this.boundDynamicVertexBuffer3 !== pr ? this.freshBind(J, yt, Tt, Nt, be, Re, je, pr) : (R.bindVertexArray.set(this.vao), Re && Re.bind(), Nt && Nt.dynamicDraw && Nt.bind(), je && je.bind(), pr && pr.bind());
                    }
                    freshBind(R, J, yt, Tt, Nt, be, Re, je) {
                      const pr = R.numAttributes, br = this.context, Ar = br.gl;
                      this.vao && this.destroy(), this.vao = br.createVertexArray(), br.bindVertexArray.set(this.vao), this.boundProgram = R, this.boundLayoutVertexBuffer = J, this.boundPaintVertexBuffers = yt, this.boundIndexBuffer = Tt, this.boundVertexOffset = Nt, this.boundDynamicVertexBuffer = be, this.boundDynamicVertexBuffer2 = Re, this.boundDynamicVertexBuffer3 = je, J.enableAttributes(Ar, R);
                      for (const qr of yt)
                        qr.enableAttributes(Ar, R);
                      be && be.enableAttributes(Ar, R), Re && Re.enableAttributes(Ar, R), je && je.enableAttributes(Ar, R), J.bind(), J.setVertexAttribPointers(Ar, R, Nt);
                      for (const qr of yt)
                        qr.bind(), qr.setVertexAttribPointers(Ar, R, Nt);
                      be && (be.bind(), be.setVertexAttribPointers(Ar, R, Nt)), Tt && Tt.bind(), Re && (Re.bind(), Re.setVertexAttribPointers(Ar, R, Nt)), je && (je.bind(), je.setVertexAttribPointers(Ar, R, Nt)), br.currentNumAttributes = pr;
                    }
                    destroy() {
                      this.vao && (this.context.deleteVertexArray(this.vao), this.vao = null);
                    }
                  }
                  const Nc = (Ot, R) => ({
                    u_depth: new s.aI(Ot, R.u_depth),
                    u_terrain: new s.aI(Ot, R.u_terrain),
                    u_terrain_dim: new s.aJ(Ot, R.u_terrain_dim),
                    u_terrain_matrix: new s.aK(Ot, R.u_terrain_matrix),
                    u_terrain_unpack: new s.aL(Ot, R.u_terrain_unpack),
                    u_terrain_exaggeration: new s.aJ(Ot, R.u_terrain_exaggeration)
                  }), Uc = (Ot, R) => ({
                    u_matrix: new s.aK(Ot, R.u_matrix),
                    u_texture: new s.aI(Ot, R.u_texture),
                    u_ele_delta: new s.aJ(Ot, R.u_ele_delta),
                    u_fog_matrix: new s.aK(Ot, R.u_fog_matrix),
                    u_fog_color: new s.aM(Ot, R.u_fog_color),
                    u_fog_ground_blend: new s.aJ(Ot, R.u_fog_ground_blend),
                    u_fog_ground_blend_opacity: new s.aJ(Ot, R.u_fog_ground_blend_opacity),
                    u_horizon_color: new s.aM(Ot, R.u_horizon_color),
                    u_horizon_fog_blend: new s.aJ(Ot, R.u_horizon_fog_blend)
                  }), Gs = (Ot, R) => ({
                    u_matrix: new s.aK(Ot, R.u_matrix),
                    u_ele_delta: new s.aJ(Ot, R.u_ele_delta)
                  }), Vc = (Ot, R) => ({
                    u_matrix: new s.aK(Ot, R.u_matrix),
                    u_texture: new s.aI(Ot, R.u_texture),
                    u_terrain_coords_id: new s.aJ(Ot, R.u_terrain_coords_id),
                    u_ele_delta: new s.aJ(Ot, R.u_ele_delta)
                  }), Cu = (Ot, R, J, yt, Tt) => ({
                    u_matrix: Ot,
                    u_texture: 0,
                    u_ele_delta: R,
                    u_fog_matrix: J,
                    u_fog_color: yt ? yt.properties.get("fog-color") : s.aN.white,
                    u_fog_ground_blend: yt ? yt.properties.get("fog-ground-blend") : 1,
                    u_fog_ground_blend_opacity: yt ? yt.calculateFogBlendOpacity(Tt) : 0,
                    u_horizon_color: yt ? yt.properties.get("horizon-color") : s.aN.white,
                    u_horizon_fog_blend: yt ? yt.properties.get("horizon-fog-blend") : 1
                  }), Hc = (Ot, R) => ({
                    u_matrix: Ot,
                    u_ele_delta: R
                  }), Mh = (Ot, R, J) => ({
                    u_matrix: Ot,
                    u_terrain_coords_id: R / 255,
                    u_texture: 0,
                    u_ele_delta: J
                  });
                  function Al(Ot) {
                    const R = [];
                    for (let J = 0; J < Ot.length; J++) {
                      if (Ot[J] === null)
                        continue;
                      const yt = Ot[J].split(" ");
                      R.push(yt.pop());
                    }
                    return R;
                  }
                  class Eh {
                    constructor(R, J, yt, Tt, Nt, be) {
                      const Re = R.gl;
                      this.program = Re.createProgram();
                      const je = Al(J.staticAttributes), pr = yt ? yt.getBinderAttributes() : [], br = je.concat(pr), Ar = bc.prelude.staticUniforms ? Al(bc.prelude.staticUniforms) : [], qr = J.staticUniforms ? Al(J.staticUniforms) : [], vn = yt ? yt.getBinderUniforms() : [], bn = Ar.concat(qr).concat(vn), Rn = [];
                      for (const Oi of bn)
                        Rn.indexOf(Oi) < 0 && Rn.push(Oi);
                      const Gn = yt ? yt.defines() : [];
                      Nt && Gn.push("#define OVERDRAW_INSPECTOR;"), be && Gn.push("#define TERRAIN3D;");
                      const ii = Gn.concat(bc.prelude.fragmentSource, J.fragmentSource).join(`
`), oi = Gn.concat(bc.prelude.vertexSource, J.vertexSource).join(`
`), Xn = Re.createShader(Re.FRAGMENT_SHADER);
                      if (Re.isContextLost()) {
                        this.failedToCreate = !0;
                        return;
                      }
                      if (Re.shaderSource(Xn, ii), Re.compileShader(Xn), !Re.getShaderParameter(Xn, Re.COMPILE_STATUS))
                        throw new Error(`Could not compile fragment shader: ${Re.getShaderInfoLog(Xn)}`);
                      Re.attachShader(this.program, Xn);
                      const Ri = Re.createShader(Re.VERTEX_SHADER);
                      if (Re.isContextLost()) {
                        this.failedToCreate = !0;
                        return;
                      }
                      if (Re.shaderSource(Ri, oi), Re.compileShader(Ri), !Re.getShaderParameter(Ri, Re.COMPILE_STATUS))
                        throw new Error(`Could not compile vertex shader: ${Re.getShaderInfoLog(Ri)}`);
                      Re.attachShader(this.program, Ri), this.attributes = {};
                      const Ci = {};
                      this.numAttributes = br.length;
                      for (let Oi = 0; Oi < this.numAttributes; Oi++)
                        br[Oi] && (Re.bindAttribLocation(this.program, Oi, br[Oi]), this.attributes[br[Oi]] = Oi);
                      if (Re.linkProgram(this.program), !Re.getProgramParameter(this.program, Re.LINK_STATUS))
                        throw new Error(`Program failed to link: ${Re.getProgramInfoLog(this.program)}`);
                      Re.deleteShader(Ri), Re.deleteShader(Xn);
                      for (let Oi = 0; Oi < Rn.length; Oi++) {
                        const pa = Rn[Oi];
                        if (pa && !Ci[pa]) {
                          const Sa = Re.getUniformLocation(this.program, pa);
                          Sa && (Ci[pa] = Sa);
                        }
                      }
                      this.fixedUniforms = Tt(R, Ci), this.terrainUniforms = Nc(R, Ci), this.binderUniforms = yt ? yt.getUniforms(R, Ci) : [];
                    }
                    draw(R, J, yt, Tt, Nt, be, Re, je, pr, br, Ar, qr, vn, bn, Rn, Gn, ii, oi) {
                      const Xn = R.gl;
                      if (this.failedToCreate)
                        return;
                      if (R.program.set(this.program), R.setDepthMode(yt), R.setStencilMode(Tt), R.setColorMode(Nt), R.setCullFace(be), je) {
                        R.activeTexture.set(Xn.TEXTURE2), Xn.bindTexture(Xn.TEXTURE_2D, je.depthTexture), R.activeTexture.set(Xn.TEXTURE3), Xn.bindTexture(Xn.TEXTURE_2D, je.texture);
                        for (const Ci in this.terrainUniforms)
                          this.terrainUniforms[Ci].set(je[Ci]);
                      }
                      for (const Ci in this.fixedUniforms)
                        this.fixedUniforms[Ci].set(Re[Ci]);
                      Rn && Rn.setUniforms(R, this.binderUniforms, vn, { zoom: bn });
                      let Ri = 0;
                      switch (J) {
                        case Xn.LINES:
                          Ri = 2;
                          break;
                        case Xn.TRIANGLES:
                          Ri = 3;
                          break;
                        case Xn.LINE_STRIP:
                          Ri = 1;
                          break;
                      }
                      for (const Ci of qr.get()) {
                        const Oi = Ci.vaos || (Ci.vaos = {});
                        (Oi[pr] || (Oi[pr] = new Yf())).bind(R, this, br, Rn ? Rn.getPaintVertexBuffers() : [], Ar, Ci.vertexOffset, Gn, ii, oi), Xn.drawElements(J, Ci.primitiveLength * Ri, Xn.UNSIGNED_SHORT, Ci.primitiveOffset * Ri * 2);
                      }
                    }
                  }
                  function Gc(Ot, R, J) {
                    const yt = 1 / Fn(J, 1, R.transform.tileZoom), Tt = Math.pow(2, J.tileID.overscaledZ), Nt = J.tileSize * Math.pow(2, R.transform.tileZoom) / Tt, be = Nt * (J.tileID.canonical.x + J.tileID.wrap * Tt), Re = Nt * J.tileID.canonical.y;
                    return {
                      u_image: 0,
                      u_texsize: J.imageAtlasTexture.size,
                      u_scale: [yt, Ot.fromScale, Ot.toScale],
                      u_fade: Ot.t,
                      // split the pixel coord into two pairs of 16 bit numbers. The glsl spec only guarantees 16 bits of precision.
                      u_pixel_coord_upper: [be >> 16, Re >> 16],
                      u_pixel_coord_lower: [be & 65535, Re & 65535]
                    };
                  }
                  function Ch(Ot, R, J, yt) {
                    const Tt = J.imageManager.getPattern(Ot.from.toString()), Nt = J.imageManager.getPattern(Ot.to.toString()), { width: be, height: Re } = J.imageManager.getPixelSize(), je = Math.pow(2, yt.tileID.overscaledZ), pr = yt.tileSize * Math.pow(2, J.transform.tileZoom) / je, br = pr * (yt.tileID.canonical.x + yt.tileID.wrap * je), Ar = pr * yt.tileID.canonical.y;
                    return {
                      u_image: 0,
                      u_pattern_tl_a: Tt.tl,
                      u_pattern_br_a: Tt.br,
                      u_pattern_tl_b: Nt.tl,
                      u_pattern_br_b: Nt.br,
                      u_texsize: [be, Re],
                      u_mix: R.t,
                      u_pattern_size_a: Tt.displaySize,
                      u_pattern_size_b: Nt.displaySize,
                      u_scale_a: R.fromScale,
                      u_scale_b: R.toScale,
                      u_tile_units_to_pixels: 1 / Fn(yt, 1, J.transform.tileZoom),
                      // split the pixel coord into two pairs of 16 bit numbers. The glsl spec only guarantees 16 bits of precision.
                      u_pixel_coord_upper: [br >> 16, Ar >> 16],
                      u_pixel_coord_lower: [br & 65535, Ar & 65535]
                    };
                  }
                  const Wc = (Ot, R) => ({
                    u_matrix: new s.aK(Ot, R.u_matrix),
                    u_lightpos: new s.aO(Ot, R.u_lightpos),
                    u_lightintensity: new s.aJ(Ot, R.u_lightintensity),
                    u_lightcolor: new s.aO(Ot, R.u_lightcolor),
                    u_vertical_gradient: new s.aJ(Ot, R.u_vertical_gradient),
                    u_opacity: new s.aJ(Ot, R.u_opacity)
                  }), Kf = (Ot, R) => ({
                    u_matrix: new s.aK(Ot, R.u_matrix),
                    u_lightpos: new s.aO(Ot, R.u_lightpos),
                    u_lightintensity: new s.aJ(Ot, R.u_lightintensity),
                    u_lightcolor: new s.aO(Ot, R.u_lightcolor),
                    u_vertical_gradient: new s.aJ(Ot, R.u_vertical_gradient),
                    u_height_factor: new s.aJ(Ot, R.u_height_factor),
                    // pattern uniforms
                    u_image: new s.aI(Ot, R.u_image),
                    u_texsize: new s.aP(Ot, R.u_texsize),
                    u_pixel_coord_upper: new s.aP(Ot, R.u_pixel_coord_upper),
                    u_pixel_coord_lower: new s.aP(Ot, R.u_pixel_coord_lower),
                    u_scale: new s.aO(Ot, R.u_scale),
                    u_fade: new s.aJ(Ot, R.u_fade),
                    u_opacity: new s.aJ(Ot, R.u_opacity)
                  }), jc = (Ot, R, J, yt) => {
                    const Tt = R.style.light, Nt = Tt.properties.get("position"), be = [Nt.x, Nt.y, Nt.z], Re = rt();
                    Tt.properties.get("anchor") === "viewport" && st(Re, -R.transform.angle), X(be, be, Re);
                    const je = Tt.properties.get("color");
                    return {
                      u_matrix: Ot,
                      u_lightpos: be,
                      u_lightintensity: Tt.properties.get("intensity"),
                      u_lightcolor: [je.r, je.g, je.b],
                      u_vertical_gradient: +J,
                      u_opacity: yt
                    };
                  }, Ju = (Ot, R, J, yt, Tt, Nt, be) => s.e(jc(Ot, R, J, yt), Gc(Nt, R, be), {
                    u_height_factor: -Math.pow(2, Tt.overscaledZ) / be.tileSize / 8
                  }), Ro = (Ot, R) => ({
                    u_matrix: new s.aK(Ot, R.u_matrix)
                  }), ad = (Ot, R) => ({
                    u_matrix: new s.aK(Ot, R.u_matrix),
                    u_image: new s.aI(Ot, R.u_image),
                    u_texsize: new s.aP(Ot, R.u_texsize),
                    u_pixel_coord_upper: new s.aP(Ot, R.u_pixel_coord_upper),
                    u_pixel_coord_lower: new s.aP(Ot, R.u_pixel_coord_lower),
                    u_scale: new s.aO(Ot, R.u_scale),
                    u_fade: new s.aJ(Ot, R.u_fade)
                  }), tu = (Ot, R) => ({
                    u_matrix: new s.aK(Ot, R.u_matrix),
                    u_world: new s.aP(Ot, R.u_world)
                  }), bf = (Ot, R) => ({
                    u_matrix: new s.aK(Ot, R.u_matrix),
                    u_world: new s.aP(Ot, R.u_world),
                    u_image: new s.aI(Ot, R.u_image),
                    u_texsize: new s.aP(Ot, R.u_texsize),
                    u_pixel_coord_upper: new s.aP(Ot, R.u_pixel_coord_upper),
                    u_pixel_coord_lower: new s.aP(Ot, R.u_pixel_coord_lower),
                    u_scale: new s.aO(Ot, R.u_scale),
                    u_fade: new s.aJ(Ot, R.u_fade)
                  }), Jf = (Ot) => ({
                    u_matrix: Ot
                  }), Sl = (Ot, R, J, yt) => s.e(Jf(Ot), Gc(J, R, yt)), Qu = (Ot, R) => ({
                    u_matrix: Ot,
                    u_world: R
                  }), wf = (Ot, R, J, yt, Tt) => s.e(Sl(Ot, R, J, yt), {
                    u_world: Tt
                  }), vs = (Ot, R) => ({
                    u_camera_to_center_distance: new s.aJ(Ot, R.u_camera_to_center_distance),
                    u_scale_with_map: new s.aI(Ot, R.u_scale_with_map),
                    u_pitch_with_map: new s.aI(Ot, R.u_pitch_with_map),
                    u_extrude_scale: new s.aP(Ot, R.u_extrude_scale),
                    u_device_pixel_ratio: new s.aJ(Ot, R.u_device_pixel_ratio),
                    u_matrix: new s.aK(Ot, R.u_matrix)
                  }), _f = (Ot, R, J, yt) => {
                    const Tt = Ot.transform;
                    let Nt, be;
                    if (yt.paint.get("circle-pitch-alignment") === "map") {
                      const Re = Fn(J, 1, Tt.zoom);
                      Nt = !0, be = [Re, Re];
                    } else
                      Nt = !1, be = Tt.pixelsToGLUnits;
                    return {
                      u_camera_to_center_distance: Tt.cameraToCenterDistance,
                      u_scale_with_map: +(yt.paint.get("circle-pitch-scale") === "map"),
                      u_matrix: Ot.translatePosMatrix(R.posMatrix, J, yt.paint.get("circle-translate"), yt.paint.get("circle-translate-anchor")),
                      u_pitch_with_map: +Nt,
                      u_device_pixel_ratio: Ot.pixelRatio,
                      u_extrude_scale: be
                    };
                  }, Nl = (Ot, R) => ({
                    u_matrix: new s.aK(Ot, R.u_matrix),
                    u_pixel_extrude_scale: new s.aP(Ot, R.u_pixel_extrude_scale)
                  }), eu = (Ot, R) => ({
                    u_matrix: new s.aK(Ot, R.u_matrix),
                    u_inv_matrix: new s.aK(Ot, R.u_inv_matrix),
                    u_camera_to_center_distance: new s.aJ(Ot, R.u_camera_to_center_distance),
                    u_viewport_size: new s.aP(Ot, R.u_viewport_size)
                  }), $u = (Ot, R) => ({
                    u_matrix: R,
                    u_pixel_extrude_scale: [1 / Ot.width, 1 / Ot.height]
                  }), Lu = (Ot, R, J) => ({
                    u_matrix: Ot,
                    u_inv_matrix: R,
                    u_camera_to_center_distance: J.cameraToCenterDistance,
                    u_viewport_size: [J.width, J.height]
                  }), ru = (Ot, R) => ({
                    u_color: new s.aM(Ot, R.u_color),
                    u_matrix: new s.aK(Ot, R.u_matrix),
                    u_overlay: new s.aI(Ot, R.u_overlay),
                    u_overlay_scale: new s.aJ(Ot, R.u_overlay_scale)
                  }), nu = (Ot, R, J = 1) => ({
                    u_matrix: Ot,
                    u_color: R,
                    u_overlay: 0,
                    u_overlay_scale: J
                  }), Ul = (Ot, R) => ({
                    u_matrix: new s.aK(Ot, R.u_matrix)
                  }), Ml = (Ot) => ({
                    u_matrix: Ot
                  }), Tf = (Ot, R) => ({
                    u_extrude_scale: new s.aJ(Ot, R.u_extrude_scale),
                    u_intensity: new s.aJ(Ot, R.u_intensity),
                    u_matrix: new s.aK(Ot, R.u_matrix)
                  }), wc = (Ot, R) => ({
                    u_matrix: new s.aK(Ot, R.u_matrix),
                    u_world: new s.aP(Ot, R.u_world),
                    u_image: new s.aI(Ot, R.u_image),
                    u_color_ramp: new s.aI(Ot, R.u_color_ramp),
                    u_opacity: new s.aJ(Ot, R.u_opacity)
                  }), od = (Ot, R, J, yt) => ({
                    u_matrix: Ot,
                    u_extrude_scale: Fn(R, 1, J),
                    u_intensity: yt
                  }), Dd = (Ot, R, J, yt) => {
                    const Tt = s.H();
                    s.aQ(Tt, 0, Ot.width, Ot.height, 0, 0, 1);
                    const Nt = Ot.context.gl;
                    return {
                      u_matrix: Tt,
                      u_world: [Nt.drawingBufferWidth, Nt.drawingBufferHeight],
                      u_image: J,
                      u_color_ramp: yt,
                      u_opacity: R.paint.get("heatmap-opacity")
                    };
                  }, kd = (Ot, R) => ({
                    u_matrix: new s.aK(Ot, R.u_matrix),
                    u_image: new s.aI(Ot, R.u_image),
                    u_latrange: new s.aP(Ot, R.u_latrange),
                    u_light: new s.aP(Ot, R.u_light),
                    u_shadow: new s.aM(Ot, R.u_shadow),
                    u_highlight: new s.aM(Ot, R.u_highlight),
                    u_accent: new s.aM(Ot, R.u_accent)
                  }), Qf = (Ot, R) => ({
                    u_matrix: new s.aK(Ot, R.u_matrix),
                    u_image: new s.aI(Ot, R.u_image),
                    u_dimension: new s.aP(Ot, R.u_dimension),
                    u_zoom: new s.aJ(Ot, R.u_zoom),
                    u_unpack: new s.aL(Ot, R.u_unpack)
                  }), Zc = (Ot, R, J, yt) => {
                    const Tt = J.paint.get("hillshade-shadow-color"), Nt = J.paint.get("hillshade-highlight-color"), be = J.paint.get("hillshade-accent-color");
                    let Re = J.paint.get("hillshade-illumination-direction") * (Math.PI / 180);
                    J.paint.get("hillshade-illumination-anchor") === "viewport" && (Re -= Ot.transform.angle);
                    const je = !Ot.options.moving;
                    return {
                      u_matrix: yt ? yt.posMatrix : Ot.transform.calculatePosMatrix(R.tileID.toUnwrapped(), je),
                      u_image: 0,
                      u_latrange: xs(Ot, R.tileID),
                      u_light: [J.paint.get("hillshade-exaggeration"), Re],
                      u_shadow: Tt,
                      u_highlight: Nt,
                      u_accent: be
                    };
                  }, Xc = (Ot, R) => {
                    const J = R.stride, yt = s.H();
                    return s.aQ(yt, 0, s.X, -s.X, 0, 0, 1), s.J(yt, yt, [0, -s.X, 0]), {
                      u_matrix: yt,
                      u_image: 1,
                      u_dimension: [J, J],
                      u_zoom: Ot.overscaledZ,
                      u_unpack: R.getUnpackVector()
                    };
                  };
                  function xs(Ot, R) {
                    const J = Math.pow(2, R.canonical.z), yt = R.canonical.y;
                    return [
                      new s.Z(0, yt / J).toLngLat().lat,
                      new s.Z(0, (yt + 1) / J).toLngLat().lat
                    ];
                  }
                  const El = (Ot, R) => ({
                    u_matrix: new s.aK(Ot, R.u_matrix),
                    u_ratio: new s.aJ(Ot, R.u_ratio),
                    u_device_pixel_ratio: new s.aJ(Ot, R.u_device_pixel_ratio),
                    u_units_to_pixels: new s.aP(Ot, R.u_units_to_pixels)
                  }), Yc = (Ot, R) => ({
                    u_matrix: new s.aK(Ot, R.u_matrix),
                    u_ratio: new s.aJ(Ot, R.u_ratio),
                    u_device_pixel_ratio: new s.aJ(Ot, R.u_device_pixel_ratio),
                    u_units_to_pixels: new s.aP(Ot, R.u_units_to_pixels),
                    u_image: new s.aI(Ot, R.u_image),
                    u_image_height: new s.aJ(Ot, R.u_image_height)
                  }), sd = (Ot, R) => ({
                    u_matrix: new s.aK(Ot, R.u_matrix),
                    u_texsize: new s.aP(Ot, R.u_texsize),
                    u_ratio: new s.aJ(Ot, R.u_ratio),
                    u_device_pixel_ratio: new s.aJ(Ot, R.u_device_pixel_ratio),
                    u_image: new s.aI(Ot, R.u_image),
                    u_units_to_pixels: new s.aP(Ot, R.u_units_to_pixels),
                    u_scale: new s.aO(Ot, R.u_scale),
                    u_fade: new s.aJ(Ot, R.u_fade)
                  }), Kc = (Ot, R) => ({
                    u_matrix: new s.aK(Ot, R.u_matrix),
                    u_ratio: new s.aJ(Ot, R.u_ratio),
                    u_device_pixel_ratio: new s.aJ(Ot, R.u_device_pixel_ratio),
                    u_units_to_pixels: new s.aP(Ot, R.u_units_to_pixels),
                    u_patternscale_a: new s.aP(Ot, R.u_patternscale_a),
                    u_patternscale_b: new s.aP(Ot, R.u_patternscale_b),
                    u_sdfgamma: new s.aJ(Ot, R.u_sdfgamma),
                    u_image: new s.aI(Ot, R.u_image),
                    u_tex_y_a: new s.aJ(Ot, R.u_tex_y_a),
                    u_tex_y_b: new s.aJ(Ot, R.u_tex_y_b),
                    u_mix: new s.aJ(Ot, R.u_mix)
                  }), Vl = (Ot, R, J, yt) => {
                    const Tt = Ot.transform;
                    return {
                      u_matrix: th(Ot, R, J, yt),
                      u_ratio: 1 / Fn(R, 1, Tt.zoom),
                      u_device_pixel_ratio: Ot.pixelRatio,
                      u_units_to_pixels: [
                        1 / Tt.pixelsToGLUnits[0],
                        1 / Tt.pixelsToGLUnits[1]
                      ]
                    };
                  }, ld = (Ot, R, J, yt, Tt) => s.e(Vl(Ot, R, J, Tt), {
                    u_image: 0,
                    u_image_height: yt
                  }), $f = (Ot, R, J, yt, Tt) => {
                    const Nt = Ot.transform, be = Jc(R, Nt);
                    return {
                      u_matrix: th(Ot, R, J, Tt),
                      u_texsize: R.imageAtlasTexture.size,
                      // camera zoom ratio
                      u_ratio: 1 / Fn(R, 1, Nt.zoom),
                      u_device_pixel_ratio: Ot.pixelRatio,
                      u_image: 0,
                      u_scale: [be, yt.fromScale, yt.toScale],
                      u_fade: yt.t,
                      u_units_to_pixels: [
                        1 / Nt.pixelsToGLUnits[0],
                        1 / Nt.pixelsToGLUnits[1]
                      ]
                    };
                  }, qf = (Ot, R, J, yt, Tt, Nt) => {
                    const be = Ot.transform, Re = Ot.lineAtlas, je = Jc(R, be), pr = J.layout.get("line-cap") === "round", br = Re.getDash(yt.from, pr), Ar = Re.getDash(yt.to, pr), qr = br.width * Tt.fromScale, vn = Ar.width * Tt.toScale;
                    return s.e(Vl(Ot, R, J, Nt), {
                      u_patternscale_a: [je / qr, -br.height / 2],
                      u_patternscale_b: [je / vn, -Ar.height / 2],
                      u_sdfgamma: Re.width / (Math.min(qr, vn) * 256 * Ot.pixelRatio) / 2,
                      u_image: 0,
                      u_tex_y_a: br.y,
                      u_tex_y_b: Ar.y,
                      u_mix: Tt.t
                    });
                  };
                  function Jc(Ot, R) {
                    return 1 / Fn(Ot, 1, R.tileZoom);
                  }
                  function th(Ot, R, J, yt) {
                    return Ot.translatePosMatrix(yt ? yt.posMatrix : R.tileID.posMatrix, R, J.paint.get("line-translate"), J.paint.get("line-translate-anchor"));
                  }
                  const Fs = (Ot, R) => ({
                    u_matrix: new s.aK(Ot, R.u_matrix),
                    u_tl_parent: new s.aP(Ot, R.u_tl_parent),
                    u_scale_parent: new s.aJ(Ot, R.u_scale_parent),
                    u_buffer_scale: new s.aJ(Ot, R.u_buffer_scale),
                    u_fade_t: new s.aJ(Ot, R.u_fade_t),
                    u_opacity: new s.aJ(Ot, R.u_opacity),
                    u_image0: new s.aI(Ot, R.u_image0),
                    u_image1: new s.aI(Ot, R.u_image1),
                    u_brightness_low: new s.aJ(Ot, R.u_brightness_low),
                    u_brightness_high: new s.aJ(Ot, R.u_brightness_high),
                    u_saturation_factor: new s.aJ(Ot, R.u_saturation_factor),
                    u_contrast_factor: new s.aJ(Ot, R.u_contrast_factor),
                    u_spin_weights: new s.aO(Ot, R.u_spin_weights)
                  }), Ms = (Ot, R, J, yt, Tt) => ({
                    u_matrix: Ot,
                    u_tl_parent: R,
                    u_scale_parent: J,
                    u_buffer_scale: 1,
                    u_fade_t: yt.mix,
                    u_opacity: yt.opacity * Tt.paint.get("raster-opacity"),
                    u_image0: 0,
                    u_image1: 1,
                    u_brightness_low: Tt.paint.get("raster-brightness-min"),
                    u_brightness_high: Tt.paint.get("raster-brightness-max"),
                    u_saturation_factor: Qc(Tt.paint.get("raster-saturation")),
                    u_contrast_factor: qu(Tt.paint.get("raster-contrast")),
                    u_spin_weights: fu(Tt.paint.get("raster-hue-rotate"))
                  });
                  function fu(Ot) {
                    Ot *= Math.PI / 180;
                    const R = Math.sin(Ot), J = Math.cos(Ot);
                    return [
                      (2 * J + 1) / 3,
                      (-Math.sqrt(3) * R - J + 1) / 3,
                      (Math.sqrt(3) * R - J + 1) / 3
                    ];
                  }
                  function qu(Ot) {
                    return Ot > 0 ? 1 / (1 - Ot) : 1 + Ot;
                  }
                  function Qc(Ot) {
                    return Ot > 0 ? 1 - 1 / (1.001 - Ot) : -Ot;
                  }
                  const tc = (Ot, R) => ({
                    u_is_size_zoom_constant: new s.aI(Ot, R.u_is_size_zoom_constant),
                    u_is_size_feature_constant: new s.aI(Ot, R.u_is_size_feature_constant),
                    u_size_t: new s.aJ(Ot, R.u_size_t),
                    u_size: new s.aJ(Ot, R.u_size),
                    u_camera_to_center_distance: new s.aJ(Ot, R.u_camera_to_center_distance),
                    u_pitch: new s.aJ(Ot, R.u_pitch),
                    u_rotate_symbol: new s.aI(Ot, R.u_rotate_symbol),
                    u_aspect_ratio: new s.aJ(Ot, R.u_aspect_ratio),
                    u_fade_change: new s.aJ(Ot, R.u_fade_change),
                    u_matrix: new s.aK(Ot, R.u_matrix),
                    u_label_plane_matrix: new s.aK(Ot, R.u_label_plane_matrix),
                    u_coord_matrix: new s.aK(Ot, R.u_coord_matrix),
                    u_is_text: new s.aI(Ot, R.u_is_text),
                    u_pitch_with_map: new s.aI(Ot, R.u_pitch_with_map),
                    u_is_along_line: new s.aI(Ot, R.u_is_along_line),
                    u_is_variable_anchor: new s.aI(Ot, R.u_is_variable_anchor),
                    u_texsize: new s.aP(Ot, R.u_texsize),
                    u_texture: new s.aI(Ot, R.u_texture),
                    u_translation: new s.aP(Ot, R.u_translation),
                    u_pitched_scale: new s.aJ(Ot, R.u_pitched_scale)
                  }), Pu = (Ot, R) => ({
                    u_is_size_zoom_constant: new s.aI(Ot, R.u_is_size_zoom_constant),
                    u_is_size_feature_constant: new s.aI(Ot, R.u_is_size_feature_constant),
                    u_size_t: new s.aJ(Ot, R.u_size_t),
                    u_size: new s.aJ(Ot, R.u_size),
                    u_camera_to_center_distance: new s.aJ(Ot, R.u_camera_to_center_distance),
                    u_pitch: new s.aJ(Ot, R.u_pitch),
                    u_rotate_symbol: new s.aI(Ot, R.u_rotate_symbol),
                    u_aspect_ratio: new s.aJ(Ot, R.u_aspect_ratio),
                    u_fade_change: new s.aJ(Ot, R.u_fade_change),
                    u_matrix: new s.aK(Ot, R.u_matrix),
                    u_label_plane_matrix: new s.aK(Ot, R.u_label_plane_matrix),
                    u_coord_matrix: new s.aK(Ot, R.u_coord_matrix),
                    u_is_text: new s.aI(Ot, R.u_is_text),
                    u_pitch_with_map: new s.aI(Ot, R.u_pitch_with_map),
                    u_is_along_line: new s.aI(Ot, R.u_is_along_line),
                    u_is_variable_anchor: new s.aI(Ot, R.u_is_variable_anchor),
                    u_texsize: new s.aP(Ot, R.u_texsize),
                    u_texture: new s.aI(Ot, R.u_texture),
                    u_gamma_scale: new s.aJ(Ot, R.u_gamma_scale),
                    u_device_pixel_ratio: new s.aJ(Ot, R.u_device_pixel_ratio),
                    u_is_halo: new s.aI(Ot, R.u_is_halo),
                    u_translation: new s.aP(Ot, R.u_translation),
                    u_pitched_scale: new s.aJ(Ot, R.u_pitched_scale)
                  }), ec = (Ot, R) => ({
                    u_is_size_zoom_constant: new s.aI(Ot, R.u_is_size_zoom_constant),
                    u_is_size_feature_constant: new s.aI(Ot, R.u_is_size_feature_constant),
                    u_size_t: new s.aJ(Ot, R.u_size_t),
                    u_size: new s.aJ(Ot, R.u_size),
                    u_camera_to_center_distance: new s.aJ(Ot, R.u_camera_to_center_distance),
                    u_pitch: new s.aJ(Ot, R.u_pitch),
                    u_rotate_symbol: new s.aI(Ot, R.u_rotate_symbol),
                    u_aspect_ratio: new s.aJ(Ot, R.u_aspect_ratio),
                    u_fade_change: new s.aJ(Ot, R.u_fade_change),
                    u_matrix: new s.aK(Ot, R.u_matrix),
                    u_label_plane_matrix: new s.aK(Ot, R.u_label_plane_matrix),
                    u_coord_matrix: new s.aK(Ot, R.u_coord_matrix),
                    u_is_text: new s.aI(Ot, R.u_is_text),
                    u_pitch_with_map: new s.aI(Ot, R.u_pitch_with_map),
                    u_is_along_line: new s.aI(Ot, R.u_is_along_line),
                    u_is_variable_anchor: new s.aI(Ot, R.u_is_variable_anchor),
                    u_texsize: new s.aP(Ot, R.u_texsize),
                    u_texsize_icon: new s.aP(Ot, R.u_texsize_icon),
                    u_texture: new s.aI(Ot, R.u_texture),
                    u_texture_icon: new s.aI(Ot, R.u_texture_icon),
                    u_gamma_scale: new s.aJ(Ot, R.u_gamma_scale),
                    u_device_pixel_ratio: new s.aJ(Ot, R.u_device_pixel_ratio),
                    u_is_halo: new s.aI(Ot, R.u_is_halo),
                    u_translation: new s.aP(Ot, R.u_translation),
                    u_pitched_scale: new s.aJ(Ot, R.u_pitched_scale)
                  }), Hl = (Ot, R, J, yt, Tt, Nt, be, Re, je, pr, br, Ar, qr, vn) => {
                    const bn = be.transform;
                    return {
                      u_is_size_zoom_constant: +(Ot === "constant" || Ot === "source"),
                      u_is_size_feature_constant: +(Ot === "constant" || Ot === "camera"),
                      u_size_t: R ? R.uSizeT : 0,
                      u_size: R ? R.uSize : 0,
                      u_camera_to_center_distance: bn.cameraToCenterDistance,
                      u_pitch: bn.pitch / 360 * 2 * Math.PI,
                      u_rotate_symbol: +J,
                      u_aspect_ratio: bn.width / bn.height,
                      u_fade_change: be.options.fadeDuration ? be.symbolFadeChange : 1,
                      u_matrix: Re,
                      u_label_plane_matrix: je,
                      u_coord_matrix: pr,
                      u_is_text: +Ar,
                      u_pitch_with_map: +yt,
                      u_is_along_line: Tt,
                      u_is_variable_anchor: Nt,
                      u_texsize: qr,
                      u_texture: 0,
                      u_translation: br,
                      u_pitched_scale: vn
                    };
                  }, _c = (Ot, R, J, yt, Tt, Nt, be, Re, je, pr, br, Ar, qr, vn, bn) => {
                    const Rn = be.transform;
                    return s.e(Hl(Ot, R, J, yt, Tt, Nt, be, Re, je, pr, br, Ar, qr, bn), {
                      u_gamma_scale: yt ? Math.cos(Rn._pitch) * Rn.cameraToCenterDistance : 1,
                      u_device_pixel_ratio: be.pixelRatio,
                      u_is_halo: +vn
                    });
                  }, rc = (Ot, R, J, yt, Tt, Nt, be, Re, je, pr, br, Ar, qr, vn) => s.e(_c(Ot, R, J, yt, Tt, Nt, be, Re, je, pr, br, !0, Ar, !0, vn), {
                    u_texsize_icon: qr,
                    u_texture_icon: 1
                  }), Iu = (Ot, R) => ({
                    u_matrix: new s.aK(Ot, R.u_matrix),
                    u_opacity: new s.aJ(Ot, R.u_opacity),
                    u_color: new s.aM(Ot, R.u_color)
                  }), Af = (Ot, R) => ({
                    u_matrix: new s.aK(Ot, R.u_matrix),
                    u_opacity: new s.aJ(Ot, R.u_opacity),
                    u_image: new s.aI(Ot, R.u_image),
                    u_pattern_tl_a: new s.aP(Ot, R.u_pattern_tl_a),
                    u_pattern_br_a: new s.aP(Ot, R.u_pattern_br_a),
                    u_pattern_tl_b: new s.aP(Ot, R.u_pattern_tl_b),
                    u_pattern_br_b: new s.aP(Ot, R.u_pattern_br_b),
                    u_texsize: new s.aP(Ot, R.u_texsize),
                    u_mix: new s.aJ(Ot, R.u_mix),
                    u_pattern_size_a: new s.aP(Ot, R.u_pattern_size_a),
                    u_pattern_size_b: new s.aP(Ot, R.u_pattern_size_b),
                    u_scale_a: new s.aJ(Ot, R.u_scale_a),
                    u_scale_b: new s.aJ(Ot, R.u_scale_b),
                    u_pixel_coord_upper: new s.aP(Ot, R.u_pixel_coord_upper),
                    u_pixel_coord_lower: new s.aP(Ot, R.u_pixel_coord_lower),
                    u_tile_units_to_pixels: new s.aJ(Ot, R.u_tile_units_to_pixels)
                  }), Tc = (Ot, R, J) => ({
                    u_matrix: Ot,
                    u_opacity: R,
                    u_color: J
                  }), No = (Ot, R, J, yt, Tt, Nt) => s.e(Ch(yt, Nt, J, Tt), {
                    u_matrix: Ot,
                    u_opacity: R
                  }), Ac = (Ot, R) => ({
                    u_sky_color: new s.aM(Ot, R.u_sky_color),
                    u_horizon_color: new s.aM(Ot, R.u_horizon_color),
                    u_horizon: new s.aJ(Ot, R.u_horizon),
                    u_sky_horizon_blend: new s.aJ(Ot, R.u_sky_horizon_blend)
                  }), Sc = (Ot, R, J) => ({
                    u_sky_color: Ot.properties.get("sky-color"),
                    u_horizon_color: Ot.properties.get("horizon-color"),
                    u_horizon: (R.height / 2 + R.getHorizon()) * J,
                    u_sky_horizon_blend: Ot.properties.get("sky-horizon-blend") * R.height / 2 * J
                  }), Sf = {
                    fillExtrusion: Wc,
                    fillExtrusionPattern: Kf,
                    fill: Ro,
                    fillPattern: ad,
                    fillOutline: tu,
                    fillOutlinePattern: bf,
                    circle: vs,
                    collisionBox: Nl,
                    collisionCircle: eu,
                    debug: ru,
                    clippingMask: Ul,
                    heatmap: Tf,
                    heatmapTexture: wc,
                    hillshade: kd,
                    hillshadePrepare: Qf,
                    line: El,
                    lineGradient: Yc,
                    linePattern: sd,
                    lineSDF: Kc,
                    raster: Fs,
                    symbolIcon: tc,
                    symbolSDF: Pu,
                    symbolTextAndIcon: ec,
                    background: Iu,
                    backgroundPattern: Af,
                    terrain: Uc,
                    terrainDepth: Gs,
                    terrainCoords: Vc,
                    sky: Ac
                  };
                  class Ru {
                    constructor(R, J, yt) {
                      this.context = R;
                      const Tt = R.gl;
                      this.buffer = Tt.createBuffer(), this.dynamicDraw = !!yt, this.context.unbindVAO(), R.bindElementBuffer.set(this.buffer), Tt.bufferData(Tt.ELEMENT_ARRAY_BUFFER, J.arrayBuffer, this.dynamicDraw ? Tt.DYNAMIC_DRAW : Tt.STATIC_DRAW), this.dynamicDraw || delete J.arrayBuffer;
                    }
                    bind() {
                      this.context.bindElementBuffer.set(this.buffer);
                    }
                    updateData(R) {
                      const J = this.context.gl;
                      if (!this.dynamicDraw)
                        throw new Error("Attempted to update data while not in dynamic mode.");
                      this.context.unbindVAO(), this.bind(), J.bufferSubData(J.ELEMENT_ARRAY_BUFFER, 0, R.arrayBuffer);
                    }
                    destroy() {
                      const R = this.context.gl;
                      this.buffer && (R.deleteBuffer(this.buffer), delete this.buffer);
                    }
                  }
                  const Mf = {
                    Int8: "BYTE",
                    Uint8: "UNSIGNED_BYTE",
                    Int16: "SHORT",
                    Uint16: "UNSIGNED_SHORT",
                    Int32: "INT",
                    Uint32: "UNSIGNED_INT",
                    Float32: "FLOAT"
                  };
                  class eh {
                    /**
                     * @param dynamicDraw - Whether this buffer will be repeatedly updated.
                     */
                    constructor(R, J, yt, Tt) {
                      this.length = J.length, this.attributes = yt, this.itemSize = J.bytesPerElement, this.dynamicDraw = Tt, this.context = R;
                      const Nt = R.gl;
                      this.buffer = Nt.createBuffer(), R.bindVertexBuffer.set(this.buffer), Nt.bufferData(Nt.ARRAY_BUFFER, J.arrayBuffer, this.dynamicDraw ? Nt.DYNAMIC_DRAW : Nt.STATIC_DRAW), this.dynamicDraw || delete J.arrayBuffer;
                    }
                    bind() {
                      this.context.bindVertexBuffer.set(this.buffer);
                    }
                    updateData(R) {
                      if (R.length !== this.length)
                        throw new Error(`Length of new data is ${R.length}, which doesn't match current length of ${this.length}`);
                      const J = this.context.gl;
                      this.bind(), J.bufferSubData(J.ARRAY_BUFFER, 0, R.arrayBuffer);
                    }
                    enableAttributes(R, J) {
                      for (let yt = 0; yt < this.attributes.length; yt++) {
                        const Tt = this.attributes[yt], Nt = J.attributes[Tt.name];
                        Nt !== void 0 && R.enableVertexAttribArray(Nt);
                      }
                    }
                    /**
                     * Set the attribute pointers in a WebGL context
                     * @param gl - The WebGL context
                     * @param program - The active WebGL program
                     * @param vertexOffset - Index of the starting vertex of the segment
                     */
                    setVertexAttribPointers(R, J, yt) {
                      for (let Tt = 0; Tt < this.attributes.length; Tt++) {
                        const Nt = this.attributes[Tt], be = J.attributes[Nt.name];
                        be !== void 0 && R.vertexAttribPointer(be, Nt.components, R[Mf[Nt.type]], !1, this.itemSize, Nt.offset + this.itemSize * (yt || 0));
                      }
                    }
                    /**
                     * Destroy the GL buffer bound to the given WebGL context
                     */
                    destroy() {
                      const R = this.context.gl;
                      this.buffer && (R.deleteBuffer(this.buffer), delete this.buffer);
                    }
                  }
                  const Ef = /* @__PURE__ */ new WeakMap();
                  function hu(Ot) {
                    var R;
                    if (Ef.has(Ot))
                      return Ef.get(Ot);
                    {
                      const J = (R = Ot.getParameter(Ot.VERSION)) === null || R === void 0 ? void 0 : R.startsWith("WebGL 2.0");
                      return Ef.set(Ot, J), J;
                    }
                  }
                  class vo {
                    constructor(R) {
                      this.gl = R.gl, this.default = this.getDefault(), this.current = this.default, this.dirty = !1;
                    }
                    get() {
                      return this.current;
                    }
                    set(R) {
                    }
                    getDefault() {
                      return this.default;
                    }
                    setDefault() {
                      this.set(this.default);
                    }
                  }
                  class Cl extends vo {
                    getDefault() {
                      return s.aN.transparent;
                    }
                    set(R) {
                      const J = this.current;
                      R.r === J.r && R.g === J.g && R.b === J.b && R.a === J.a && !this.dirty || (this.gl.clearColor(R.r, R.g, R.b, R.a), this.current = R, this.dirty = !1);
                    }
                  }
                  class Qs extends vo {
                    getDefault() {
                      return 1;
                    }
                    set(R) {
                      R === this.current && !this.dirty || (this.gl.clearDepth(R), this.current = R, this.dirty = !1);
                    }
                  }
                  class Du extends vo {
                    getDefault() {
                      return 0;
                    }
                    set(R) {
                      R === this.current && !this.dirty || (this.gl.clearStencil(R), this.current = R, this.dirty = !1);
                    }
                  }
                  class ws extends vo {
                    getDefault() {
                      return [!0, !0, !0, !0];
                    }
                    set(R) {
                      const J = this.current;
                      R[0] === J[0] && R[1] === J[1] && R[2] === J[2] && R[3] === J[3] && !this.dirty || (this.gl.colorMask(R[0], R[1], R[2], R[3]), this.current = R, this.dirty = !1);
                    }
                  }
                  class Gl extends vo {
                    getDefault() {
                      return !0;
                    }
                    set(R) {
                      R === this.current && !this.dirty || (this.gl.depthMask(R), this.current = R, this.dirty = !1);
                    }
                  }
                  class Lh extends vo {
                    getDefault() {
                      return 255;
                    }
                    set(R) {
                      R === this.current && !this.dirty || (this.gl.stencilMask(R), this.current = R, this.dirty = !1);
                    }
                  }
                  class Ll extends vo {
                    getDefault() {
                      return {
                        func: this.gl.ALWAYS,
                        ref: 0,
                        mask: 255
                      };
                    }
                    set(R) {
                      const J = this.current;
                      R.func === J.func && R.ref === J.ref && R.mask === J.mask && !this.dirty || (this.gl.stencilFunc(R.func, R.ref, R.mask), this.current = R, this.dirty = !1);
                    }
                  }
                  class rh extends vo {
                    getDefault() {
                      const R = this.gl;
                      return [R.KEEP, R.KEEP, R.KEEP];
                    }
                    set(R) {
                      const J = this.current;
                      R[0] === J[0] && R[1] === J[1] && R[2] === J[2] && !this.dirty || (this.gl.stencilOp(R[0], R[1], R[2]), this.current = R, this.dirty = !1);
                    }
                  }
                  class nc extends vo {
                    getDefault() {
                      return !1;
                    }
                    set(R) {
                      if (R === this.current && !this.dirty)
                        return;
                      const J = this.gl;
                      R ? J.enable(J.STENCIL_TEST) : J.disable(J.STENCIL_TEST), this.current = R, this.dirty = !1;
                    }
                  }
                  class nh extends vo {
                    getDefault() {
                      return [0, 1];
                    }
                    set(R) {
                      const J = this.current;
                      R[0] === J[0] && R[1] === J[1] && !this.dirty || (this.gl.depthRange(R[0], R[1]), this.current = R, this.dirty = !1);
                    }
                  }
                  class $c extends vo {
                    getDefault() {
                      return !1;
                    }
                    set(R) {
                      if (R === this.current && !this.dirty)
                        return;
                      const J = this.gl;
                      R ? J.enable(J.DEPTH_TEST) : J.disable(J.DEPTH_TEST), this.current = R, this.dirty = !1;
                    }
                  }
                  class Es extends vo {
                    getDefault() {
                      return this.gl.LESS;
                    }
                    set(R) {
                      R === this.current && !this.dirty || (this.gl.depthFunc(R), this.current = R, this.dirty = !1);
                    }
                  }
                  class Mc extends vo {
                    getDefault() {
                      return !1;
                    }
                    set(R) {
                      if (R === this.current && !this.dirty)
                        return;
                      const J = this.gl;
                      R ? J.enable(J.BLEND) : J.disable(J.BLEND), this.current = R, this.dirty = !1;
                    }
                  }
                  class iu extends vo {
                    getDefault() {
                      const R = this.gl;
                      return [R.ONE, R.ZERO];
                    }
                    set(R) {
                      const J = this.current;
                      R[0] === J[0] && R[1] === J[1] && !this.dirty || (this.gl.blendFunc(R[0], R[1]), this.current = R, this.dirty = !1);
                    }
                  }
                  class Ec extends vo {
                    getDefault() {
                      return s.aN.transparent;
                    }
                    set(R) {
                      const J = this.current;
                      R.r === J.r && R.g === J.g && R.b === J.b && R.a === J.a && !this.dirty || (this.gl.blendColor(R.r, R.g, R.b, R.a), this.current = R, this.dirty = !1);
                    }
                  }
                  class ku extends vo {
                    getDefault() {
                      return this.gl.FUNC_ADD;
                    }
                    set(R) {
                      R === this.current && !this.dirty || (this.gl.blendEquation(R), this.current = R, this.dirty = !1);
                    }
                  }
                  class Ph extends vo {
                    getDefault() {
                      return !1;
                    }
                    set(R) {
                      if (R === this.current && !this.dirty)
                        return;
                      const J = this.gl;
                      R ? J.enable(J.CULL_FACE) : J.disable(J.CULL_FACE), this.current = R, this.dirty = !1;
                    }
                  }
                  class oo extends vo {
                    getDefault() {
                      return this.gl.BACK;
                    }
                    set(R) {
                      R === this.current && !this.dirty || (this.gl.cullFace(R), this.current = R, this.dirty = !1);
                    }
                  }
                  class ic extends vo {
                    getDefault() {
                      return this.gl.CCW;
                    }
                    set(R) {
                      R === this.current && !this.dirty || (this.gl.frontFace(R), this.current = R, this.dirty = !1);
                    }
                  }
                  class ih extends vo {
                    getDefault() {
                      return null;
                    }
                    set(R) {
                      R === this.current && !this.dirty || (this.gl.useProgram(R), this.current = R, this.dirty = !1);
                    }
                  }
                  class du extends vo {
                    getDefault() {
                      return this.gl.TEXTURE0;
                    }
                    set(R) {
                      R === this.current && !this.dirty || (this.gl.activeTexture(R), this.current = R, this.dirty = !1);
                    }
                  }
                  class Wl extends vo {
                    getDefault() {
                      const R = this.gl;
                      return [0, 0, R.drawingBufferWidth, R.drawingBufferHeight];
                    }
                    set(R) {
                      const J = this.current;
                      R[0] === J[0] && R[1] === J[1] && R[2] === J[2] && R[3] === J[3] && !this.dirty || (this.gl.viewport(R[0], R[1], R[2], R[3]), this.current = R, this.dirty = !1);
                    }
                  }
                  class Ih extends vo {
                    getDefault() {
                      return null;
                    }
                    set(R) {
                      if (R === this.current && !this.dirty)
                        return;
                      const J = this.gl;
                      J.bindFramebuffer(J.FRAMEBUFFER, R), this.current = R, this.dirty = !1;
                    }
                  }
                  class Cf extends vo {
                    getDefault() {
                      return null;
                    }
                    set(R) {
                      if (R === this.current && !this.dirty)
                        return;
                      const J = this.gl;
                      J.bindRenderbuffer(J.RENDERBUFFER, R), this.current = R, this.dirty = !1;
                    }
                  }
                  class qc extends vo {
                    getDefault() {
                      return null;
                    }
                    set(R) {
                      if (R === this.current && !this.dirty)
                        return;
                      const J = this.gl;
                      J.bindTexture(J.TEXTURE_2D, R), this.current = R, this.dirty = !1;
                    }
                  }
                  class ah extends vo {
                    getDefault() {
                      return null;
                    }
                    set(R) {
                      if (R === this.current && !this.dirty)
                        return;
                      const J = this.gl;
                      J.bindBuffer(J.ARRAY_BUFFER, R), this.current = R, this.dirty = !1;
                    }
                  }
                  class ud extends vo {
                    getDefault() {
                      return null;
                    }
                    set(R) {
                      const J = this.gl;
                      J.bindBuffer(J.ELEMENT_ARRAY_BUFFER, R), this.current = R, this.dirty = !1;
                    }
                  }
                  class Cc extends vo {
                    getDefault() {
                      return null;
                    }
                    set(R) {
                      var J;
                      if (R === this.current && !this.dirty)
                        return;
                      const yt = this.gl;
                      hu(yt) ? yt.bindVertexArray(R) : (J = yt.getExtension("OES_vertex_array_object")) === null || J === void 0 || J.bindVertexArrayOES(R), this.current = R, this.dirty = !1;
                    }
                  }
                  class tf extends vo {
                    getDefault() {
                      return 4;
                    }
                    set(R) {
                      if (R === this.current && !this.dirty)
                        return;
                      const J = this.gl;
                      J.pixelStorei(J.UNPACK_ALIGNMENT, R), this.current = R, this.dirty = !1;
                    }
                  }
                  class vu extends vo {
                    getDefault() {
                      return !1;
                    }
                    set(R) {
                      if (R === this.current && !this.dirty)
                        return;
                      const J = this.gl;
                      J.pixelStorei(J.UNPACK_PREMULTIPLY_ALPHA_WEBGL, R), this.current = R, this.dirty = !1;
                    }
                  }
                  class ef extends vo {
                    getDefault() {
                      return !1;
                    }
                    set(R) {
                      if (R === this.current && !this.dirty)
                        return;
                      const J = this.gl;
                      J.pixelStorei(J.UNPACK_FLIP_Y_WEBGL, R), this.current = R, this.dirty = !1;
                    }
                  }
                  class pu extends vo {
                    constructor(R, J) {
                      super(R), this.context = R, this.parent = J;
                    }
                    getDefault() {
                      return null;
                    }
                  }
                  class cd extends pu {
                    setDirty() {
                      this.dirty = !0;
                    }
                    set(R) {
                      if (R === this.current && !this.dirty)
                        return;
                      this.context.bindFramebuffer.set(this.parent);
                      const J = this.gl;
                      J.framebufferTexture2D(J.FRAMEBUFFER, J.COLOR_ATTACHMENT0, J.TEXTURE_2D, R, 0), this.current = R, this.dirty = !1;
                    }
                  }
                  class he extends pu {
                    set(R) {
                      if (R === this.current && !this.dirty)
                        return;
                      this.context.bindFramebuffer.set(this.parent);
                      const J = this.gl;
                      J.framebufferRenderbuffer(J.FRAMEBUFFER, J.DEPTH_ATTACHMENT, J.RENDERBUFFER, R), this.current = R, this.dirty = !1;
                    }
                  }
                  class Ae extends pu {
                    set(R) {
                      if (R === this.current && !this.dirty)
                        return;
                      this.context.bindFramebuffer.set(this.parent);
                      const J = this.gl;
                      J.framebufferRenderbuffer(J.FRAMEBUFFER, J.DEPTH_STENCIL_ATTACHMENT, J.RENDERBUFFER, R), this.current = R, this.dirty = !1;
                    }
                  }
                  class Be {
                    constructor(R, J, yt, Tt, Nt) {
                      this.context = R, this.width = J, this.height = yt;
                      const be = R.gl, Re = this.framebuffer = be.createFramebuffer();
                      if (this.colorAttachment = new cd(R, Re), Tt)
                        this.depthAttachment = Nt ? new Ae(R, Re) : new he(R, Re);
                      else if (Nt)
                        throw new Error("Stencil cannot be set without depth");
                      if (be.checkFramebufferStatus(be.FRAMEBUFFER) !== be.FRAMEBUFFER_COMPLETE)
                        throw new Error("Framebuffer is not complete");
                    }
                    destroy() {
                      const R = this.context.gl, J = this.colorAttachment.get();
                      if (J && R.deleteTexture(J), this.depthAttachment) {
                        const yt = this.depthAttachment.get();
                        yt && R.deleteRenderbuffer(yt);
                      }
                      R.deleteFramebuffer(this.framebuffer);
                    }
                  }
                  const Ge = 0, sr = 1, ar = 771;
                  class fr {
                    constructor(R, J, yt) {
                      this.blendFunction = R, this.blendColor = J, this.mask = yt;
                    }
                  }
                  fr.Replace = [sr, Ge], fr.disabled = new fr(fr.Replace, s.aN.transparent, [!1, !1, !1, !1]), fr.unblended = new fr(fr.Replace, s.aN.transparent, [!0, !0, !0, !0]), fr.alphaBlended = new fr([sr, ar], s.aN.transparent, [!0, !0, !0, !0]);
                  class Wr {
                    constructor(R) {
                      var J, yt;
                      if (this.gl = R, this.clearColor = new Cl(this), this.clearDepth = new Qs(this), this.clearStencil = new Du(this), this.colorMask = new ws(this), this.depthMask = new Gl(this), this.stencilMask = new Lh(this), this.stencilFunc = new Ll(this), this.stencilOp = new rh(this), this.stencilTest = new nc(this), this.depthRange = new nh(this), this.depthTest = new $c(this), this.depthFunc = new Es(this), this.blend = new Mc(this), this.blendFunc = new iu(this), this.blendColor = new Ec(this), this.blendEquation = new ku(this), this.cullFace = new Ph(this), this.cullFaceSide = new oo(this), this.frontFace = new ic(this), this.program = new ih(this), this.activeTexture = new du(this), this.viewport = new Wl(this), this.bindFramebuffer = new Ih(this), this.bindRenderbuffer = new Cf(this), this.bindTexture = new qc(this), this.bindVertexBuffer = new ah(this), this.bindElementBuffer = new ud(this), this.bindVertexArray = new Cc(this), this.pixelStoreUnpack = new tf(this), this.pixelStoreUnpackPremultiplyAlpha = new vu(this), this.pixelStoreUnpackFlipY = new ef(this), this.extTextureFilterAnisotropic = R.getExtension("EXT_texture_filter_anisotropic") || R.getExtension("MOZ_EXT_texture_filter_anisotropic") || R.getExtension("WEBKIT_EXT_texture_filter_anisotropic"), this.extTextureFilterAnisotropic && (this.extTextureFilterAnisotropicMax = R.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT)), this.maxTextureSize = R.getParameter(R.MAX_TEXTURE_SIZE), hu(R)) {
                        this.HALF_FLOAT = R.HALF_FLOAT;
                        const Tt = R.getExtension("EXT_color_buffer_half_float");
                        this.RGBA16F = (J = R.RGBA16F) !== null && J !== void 0 ? J : Tt == null ? void 0 : Tt.RGBA16F_EXT, this.RGB16F = (yt = R.RGB16F) !== null && yt !== void 0 ? yt : Tt == null ? void 0 : Tt.RGB16F_EXT, R.getExtension("EXT_color_buffer_float");
                      } else {
                        R.getExtension("EXT_color_buffer_half_float"), R.getExtension("OES_texture_half_float_linear");
                        const Tt = R.getExtension("OES_texture_half_float");
                        this.HALF_FLOAT = Tt == null ? void 0 : Tt.HALF_FLOAT_OES;
                      }
                    }
                    setDefault() {
                      this.unbindVAO(), this.clearColor.setDefault(), this.clearDepth.setDefault(), this.clearStencil.setDefault(), this.colorMask.setDefault(), this.depthMask.setDefault(), this.stencilMask.setDefault(), this.stencilFunc.setDefault(), this.stencilOp.setDefault(), this.stencilTest.setDefault(), this.depthRange.setDefault(), this.depthTest.setDefault(), this.depthFunc.setDefault(), this.blend.setDefault(), this.blendFunc.setDefault(), this.blendColor.setDefault(), this.blendEquation.setDefault(), this.cullFace.setDefault(), this.cullFaceSide.setDefault(), this.frontFace.setDefault(), this.program.setDefault(), this.activeTexture.setDefault(), this.bindFramebuffer.setDefault(), this.pixelStoreUnpack.setDefault(), this.pixelStoreUnpackPremultiplyAlpha.setDefault(), this.pixelStoreUnpackFlipY.setDefault();
                    }
                    setDirty() {
                      this.clearColor.dirty = !0, this.clearDepth.dirty = !0, this.clearStencil.dirty = !0, this.colorMask.dirty = !0, this.depthMask.dirty = !0, this.stencilMask.dirty = !0, this.stencilFunc.dirty = !0, this.stencilOp.dirty = !0, this.stencilTest.dirty = !0, this.depthRange.dirty = !0, this.depthTest.dirty = !0, this.depthFunc.dirty = !0, this.blend.dirty = !0, this.blendFunc.dirty = !0, this.blendColor.dirty = !0, this.blendEquation.dirty = !0, this.cullFace.dirty = !0, this.cullFaceSide.dirty = !0, this.frontFace.dirty = !0, this.program.dirty = !0, this.activeTexture.dirty = !0, this.viewport.dirty = !0, this.bindFramebuffer.dirty = !0, this.bindRenderbuffer.dirty = !0, this.bindTexture.dirty = !0, this.bindVertexBuffer.dirty = !0, this.bindElementBuffer.dirty = !0, this.bindVertexArray.dirty = !0, this.pixelStoreUnpack.dirty = !0, this.pixelStoreUnpackPremultiplyAlpha.dirty = !0, this.pixelStoreUnpackFlipY.dirty = !0;
                    }
                    createIndexBuffer(R, J) {
                      return new Ru(this, R, J);
                    }
                    createVertexBuffer(R, J, yt) {
                      return new eh(this, R, J, yt);
                    }
                    createRenderbuffer(R, J, yt) {
                      const Tt = this.gl, Nt = Tt.createRenderbuffer();
                      return this.bindRenderbuffer.set(Nt), Tt.renderbufferStorage(Tt.RENDERBUFFER, R, J, yt), this.bindRenderbuffer.set(null), Nt;
                    }
                    createFramebuffer(R, J, yt, Tt) {
                      return new Be(this, R, J, yt, Tt);
                    }
                    clear({ color: R, depth: J, stencil: yt }) {
                      const Tt = this.gl;
                      let Nt = 0;
                      R && (Nt |= Tt.COLOR_BUFFER_BIT, this.clearColor.set(R), this.colorMask.set([!0, !0, !0, !0])), typeof J < "u" && (Nt |= Tt.DEPTH_BUFFER_BIT, this.depthRange.set([0, 1]), this.clearDepth.set(J), this.depthMask.set(!0)), typeof yt < "u" && (Nt |= Tt.STENCIL_BUFFER_BIT, this.clearStencil.set(yt), this.stencilMask.set(255)), Tt.clear(Nt);
                    }
                    setCullFace(R) {
                      R.enable === !1 ? this.cullFace.set(!1) : (this.cullFace.set(!0), this.cullFaceSide.set(R.mode), this.frontFace.set(R.frontFace));
                    }
                    setDepthMode(R) {
                      R.func === this.gl.ALWAYS && !R.mask ? this.depthTest.set(!1) : (this.depthTest.set(!0), this.depthFunc.set(R.func), this.depthMask.set(R.mask), this.depthRange.set(R.range));
                    }
                    setStencilMode(R) {
                      R.test.func === this.gl.ALWAYS && !R.mask ? this.stencilTest.set(!1) : (this.stencilTest.set(!0), this.stencilMask.set(R.mask), this.stencilOp.set([R.fail, R.depthFail, R.pass]), this.stencilFunc.set({
                        func: R.test.func,
                        ref: R.ref,
                        mask: R.test.mask
                      }));
                    }
                    setColorMode(R) {
                      s.aF(R.blendFunction, fr.Replace) ? this.blend.set(!1) : (this.blend.set(!0), this.blendFunc.set(R.blendFunction), this.blendColor.set(R.blendColor)), this.colorMask.set(R.mask);
                    }
                    createVertexArray() {
                      var R;
                      return hu(this.gl) ? this.gl.createVertexArray() : (R = this.gl.getExtension("OES_vertex_array_object")) === null || R === void 0 ? void 0 : R.createVertexArrayOES();
                    }
                    deleteVertexArray(R) {
                      var J;
                      return hu(this.gl) ? this.gl.deleteVertexArray(R) : (J = this.gl.getExtension("OES_vertex_array_object")) === null || J === void 0 ? void 0 : J.deleteVertexArrayOES(R);
                    }
                    unbindVAO() {
                      this.bindVertexArray.set(null);
                    }
                  }
                  const Yr = 519;
                  class Pr {
                    constructor(R, J, yt) {
                      this.func = R, this.mask = J, this.range = yt;
                    }
                  }
                  Pr.ReadOnly = !1, Pr.ReadWrite = !0, Pr.disabled = new Pr(Yr, Pr.ReadOnly, [0, 1]);
                  const tn = 519, un = 7680;
                  class dn {
                    constructor(R, J, yt, Tt, Nt, be) {
                      this.test = R, this.ref = J, this.mask = yt, this.fail = Tt, this.depthFail = Nt, this.pass = be;
                    }
                  }
                  dn.disabled = new dn({ func: tn, mask: 0 }, 0, 0, un, un, un);
                  const On = 1029, ai = 2305;
                  class ri {
                    constructor(R, J, yt) {
                      this.enable = R, this.mode = J, this.frontFace = yt;
                    }
                  }
                  ri.disabled = new ri(!1, On, ai), ri.backCCW = new ri(!0, On, ai);
                  let gi;
                  function Ni(Ot, R, J, yt, Tt) {
                    const Nt = Ot.context, be = Nt.gl, Re = Ot.useProgram("collisionBox"), je = [];
                    let pr = 0, br = 0;
                    for (let Gn = 0; Gn < yt.length; Gn++) {
                      const ii = yt[Gn], Xn = R.getTile(ii).getBucket(J);
                      if (!Xn)
                        continue;
                      const Ri = Tt ? Xn.textCollisionBox : Xn.iconCollisionBox, Ci = Xn.collisionCircleArray;
                      if (Ci.length > 0) {
                        const Oi = s.H();
                        s.aR(Oi, Xn.placementInvProjMatrix, Ot.transform.glCoordMatrix), s.aR(Oi, Oi, Xn.placementViewportMatrix), je.push({
                          circleArray: Ci,
                          circleOffset: br,
                          transform: ii.posMatrix,
                          // Ignore translation
                          invTransform: Oi,
                          coord: ii
                        }), pr += Ci.length / 4, br = pr;
                      }
                      Ri && Re.draw(Nt, be.LINES, Pr.disabled, dn.disabled, Ot.colorModeForRenderPass(), ri.disabled, $u(Ot.transform, ii.posMatrix), Ot.style.map.terrain && Ot.style.map.terrain.getTerrainData(ii), J.id, Ri.layoutVertexBuffer, Ri.indexBuffer, Ri.segments, null, Ot.transform.zoom, null, null, Ri.collisionVertexBuffer);
                    }
                    if (!Tt || !je.length)
                      return;
                    const Ar = Ot.useProgram("collisionCircle"), qr = new s.aS();
                    qr.resize(pr * 4), qr._trim();
                    let vn = 0;
                    for (const Gn of je)
                      for (let ii = 0; ii < Gn.circleArray.length / 4; ii++) {
                        const oi = ii * 4, Xn = Gn.circleArray[oi + 0], Ri = Gn.circleArray[oi + 1], Ci = Gn.circleArray[oi + 2], Oi = Gn.circleArray[oi + 3];
                        qr.emplace(vn++, Xn, Ri, Ci, Oi, 0), qr.emplace(vn++, Xn, Ri, Ci, Oi, 1), qr.emplace(vn++, Xn, Ri, Ci, Oi, 2), qr.emplace(vn++, Xn, Ri, Ci, Oi, 3);
                      }
                    (!gi || gi.length < pr * 2) && (gi = Ia(pr));
                    const bn = Nt.createIndexBuffer(gi, !0), Rn = Nt.createVertexBuffer(qr, s.aT.members, !0);
                    for (const Gn of je) {
                      const ii = Lu(Gn.transform, Gn.invTransform, Ot.transform);
                      Ar.draw(Nt, be.TRIANGLES, Pr.disabled, dn.disabled, Ot.colorModeForRenderPass(), ri.disabled, ii, Ot.style.map.terrain && Ot.style.map.terrain.getTerrainData(Gn.coord), J.id, Rn, bn, s.a0.simpleSegment(0, Gn.circleOffset * 2, Gn.circleArray.length, Gn.circleArray.length / 2), null, Ot.transform.zoom, null, null, null);
                    }
                    Rn.destroy(), bn.destroy();
                  }
                  function Ia(Ot) {
                    const R = Ot * 2, J = new s.aU();
                    J.resize(R), J._trim();
                    for (let yt = 0; yt < R; yt++) {
                      const Tt = yt * 6;
                      J.uint16[Tt + 0] = yt * 4 + 0, J.uint16[Tt + 1] = yt * 4 + 1, J.uint16[Tt + 2] = yt * 4 + 2, J.uint16[Tt + 3] = yt * 4 + 2, J.uint16[Tt + 4] = yt * 4 + 3, J.uint16[Tt + 5] = yt * 4 + 0;
                    }
                    return J;
                  }
                  const Pa = s.ao(new Float32Array(16));
                  function Fa(Ot, R, J, yt, Tt) {
                    if (Ot.renderPass !== "translucent")
                      return;
                    const Nt = dn.disabled, be = Ot.colorModeForRenderPass();
                    (J._unevaluatedLayout.hasValue("text-variable-anchor") || J._unevaluatedLayout.hasValue("text-variable-anchor-offset")) && Na(yt, Ot, J, R, J.layout.get("text-rotation-alignment"), J.layout.get("text-pitch-alignment"), J.paint.get("text-translate"), J.paint.get("text-translate-anchor"), Tt), J.paint.get("icon-opacity").constantOr(1) !== 0 && Ft(Ot, R, J, yt, !1, J.paint.get("icon-translate"), J.paint.get("icon-translate-anchor"), J.layout.get("icon-rotation-alignment"), J.layout.get("icon-pitch-alignment"), J.layout.get("icon-keep-upright"), Nt, be), J.paint.get("text-opacity").constantOr(1) !== 0 && Ft(Ot, R, J, yt, !0, J.paint.get("text-translate"), J.paint.get("text-translate-anchor"), J.layout.get("text-rotation-alignment"), J.layout.get("text-pitch-alignment"), J.layout.get("text-keep-upright"), Nt, be), R.map.showCollisionBoxes && (Ni(Ot, R, J, yt, !0), Ni(Ot, R, J, yt, !1));
                  }
                  function Ga(Ot, R, J, yt, Tt, Nt) {
                    const { horizontalAlign: be, verticalAlign: Re } = s.av(Ot), je = -(be - 0.5) * R, pr = -(Re - 0.5) * J;
                    return new s.P((je / Tt + yt[0]) * Nt, (pr / Tt + yt[1]) * Nt);
                  }
                  function Na(Ot, R, J, yt, Tt, Nt, be, Re, je) {
                    const pr = R.transform, br = Dn(), Ar = Tt === "map", qr = Nt === "map";
                    for (const vn of Ot) {
                      const bn = yt.getTile(vn), Rn = bn.getBucket(J);
                      if (!Rn || !Rn.text || !Rn.text.segments.get().length)
                        continue;
                      const Gn = Rn.textSizeData, ii = s.ah(Gn, pr.zoom), oi = Fn(bn, 1, R.transform.zoom), Xn = Jr(vn.posMatrix, qr, Ar, R.transform, oi), Ri = J.layout.get("icon-text-fit") !== "none" && Rn.hasIconData();
                      if (ii) {
                        const Ci = Math.pow(2, pr.zoom - bn.tileID.overscaledZ), Oi = R.style.map.terrain ? (Sa, ao) => R.style.map.terrain.getElevation(vn, Sa, ao) : null, pa = br.translatePosition(pr, bn, be, Re);
                        Do(Rn, Ar, qr, je, pr, Xn, vn.posMatrix, Ci, ii, Ri, br, pa, vn.toUnwrapped(), Oi);
                      }
                    }
                  }
                  function To(Ot, R, J, yt, Tt, Nt) {
                    const be = R.tileAnchorPoint.add(new s.P(R.translation[0], R.translation[1]));
                    if (R.pitchWithMap) {
                      let Re = yt.mult(Nt);
                      J || (Re = Re.rotate(-Tt));
                      const je = be.add(Re);
                      return fn(je, R.labelPlaneMatrix, R.getElevation).point;
                    } else if (J) {
                      const je = si(R.tileAnchorPoint.x + 1, R.tileAnchorPoint.y, R).point.sub(Ot), pr = Math.atan(je.y / je.x) + (je.x < 0 ? Math.PI : 0);
                      return Ot.add(yt.rotate(pr));
                    } else
                      return Ot.add(yt);
                  }
                  function Do(Ot, R, J, yt, Tt, Nt, be, Re, je, pr, br, Ar, qr, vn) {
                    const bn = Ot.text.placedSymbolArray, Rn = Ot.text.dynamicLayoutVertexArray, Gn = Ot.icon.dynamicLayoutVertexArray, ii = {};
                    Rn.clear();
                    for (let oi = 0; oi < bn.length; oi++) {
                      const Xn = bn.get(oi), Ri = Ot.allowVerticalPlacement && !Xn.placedOrientation, Ci = !Xn.hidden && Xn.crossTileID && !Ri ? yt[Xn.crossTileID] : null;
                      if (!Ci)
                        ci(Xn.numGlyphs, Rn);
                      else {
                        const Oi = new s.P(Xn.anchorX, Xn.anchorY), pa = {
                          getElevation: vn,
                          width: Tt.width,
                          height: Tt.height,
                          labelPlaneMatrix: Nt,
                          lineVertexArray: null,
                          pitchWithMap: J,
                          projection: br,
                          projectionCache: null,
                          tileAnchorPoint: Oi,
                          translation: Ar,
                          unwrappedTileID: qr
                        }, Sa = J ? fn(Oi, be, vn) : si(Oi.x, Oi.y, pa), ao = hi(Tt.cameraToCenterDistance, Sa.signedDistanceFromCamera);
                        let Xa = s.aj(Ot.textSizeData, je, Xn) * ao / s.aq;
                        J && (Xa *= Ot.tilePixelRatio / Re);
                        const { width: La, height: xa, anchor: Ya, textOffset: Va, textBoxScale: Wo } = Ci, ua = Ga(Ya, La, xa, Va, Wo, Xa), ca = br.getPitchedTextCorrection(Tt, Oi.add(new s.P(Ar[0], Ar[1])), qr), Uo = To(Sa.point, pa, R, ua, Tt.angle, ca), Zs = Ot.allowVerticalPlacement && Xn.placedOrientation === s.ai.vertical ? Math.PI / 2 : 0;
                        for (let Lo = 0; Lo < Xn.numGlyphs; Lo++)
                          s.ak(Rn, Uo, Zs);
                        pr && Xn.associatedIconIndex >= 0 && (ii[Xn.associatedIconIndex] = { shiftedAnchor: Uo, angle: Zs });
                      }
                    }
                    if (pr) {
                      Gn.clear();
                      const oi = Ot.icon.placedSymbolArray;
                      for (let Xn = 0; Xn < oi.length; Xn++) {
                        const Ri = oi.get(Xn);
                        if (Ri.hidden)
                          ci(Ri.numGlyphs, Gn);
                        else {
                          const Ci = ii[Xn];
                          if (!Ci)
                            ci(Ri.numGlyphs, Gn);
                          else
                            for (let Oi = 0; Oi < Ri.numGlyphs; Oi++)
                              s.ak(Gn, Ci.shiftedAnchor, Ci.angle);
                        }
                      }
                      Ot.icon.dynamicLayoutVertexBuffer.updateData(Gn);
                    }
                    Ot.text.dynamicLayoutVertexBuffer.updateData(Rn);
                  }
                  function gt(Ot, R, J) {
                    return J.iconsInText && R ? "symbolTextAndIcon" : Ot ? "symbolSDF" : "symbolIcon";
                  }
                  function Ft(Ot, R, J, yt, Tt, Nt, be, Re, je, pr, br, Ar) {
                    const qr = Ot.context, vn = qr.gl, bn = Ot.transform, Rn = Dn(), Gn = Re === "map", ii = je === "map", oi = Re !== "viewport" && J.layout.get("symbol-placement") !== "point", Xn = Gn && !ii && !oi, Ri = !ii && oi, Ci = !J.layout.get("symbol-sort-key").isConstant();
                    let Oi = !1;
                    const pa = Ot.depthModeForSublayer(0, Pr.ReadOnly), Sa = J._unevaluatedLayout.hasValue("text-variable-anchor") || J._unevaluatedLayout.hasValue("text-variable-anchor-offset"), ao = [], Xa = Rn.getCircleRadiusCorrection(bn);
                    for (const La of yt) {
                      const xa = R.getTile(La), Ya = xa.getBucket(J);
                      if (!Ya)
                        continue;
                      const Va = Tt ? Ya.text : Ya.icon;
                      if (!Va || !Va.segments.get().length || !Va.hasVisibleVertices)
                        continue;
                      const Wo = Va.programConfigurations.get(J.id), ua = Tt || Ya.sdfIcons, ca = Tt ? Ya.textSizeData : Ya.iconSizeData, Uo = ii || bn.pitch !== 0, Zs = Ot.useProgram(gt(ua, Tt, Ya), Wo), Lo = s.ah(ca, bn.zoom), qs = Ot.style.map.terrain && Ot.style.map.terrain.getTerrainData(La);
                      let sl, ts = [0, 0], Rs, bo, Bu = null, Nu;
                      if (Tt) {
                        if (Rs = xa.glyphAtlasTexture, bo = vn.LINEAR, sl = xa.glyphAtlasTexture.size, Ya.iconsInText) {
                          ts = xa.imageAtlasTexture.size, Bu = xa.imageAtlasTexture;
                          const Uu = ca.kind === "composite" || ca.kind === "camera";
                          Nu = Uo || Ot.options.rotating || Ot.options.zooming || Uu ? vn.LINEAR : vn.NEAREST;
                        }
                      } else {
                        const Uu = J.layout.get("icon-size").constantOr(0) !== 1 || Ya.iconsNeedLinear;
                        Rs = xa.imageAtlasTexture, bo = ua || Ot.options.rotating || Ot.options.zooming || Uu || Uo ? vn.LINEAR : vn.NEAREST, sl = xa.imageAtlasTexture.size;
                      }
                      const Xl = Fn(xa, 1, Ot.transform.zoom), bu = Ri ? La.posMatrix : Pa, of = Jr(bu, ii, Gn, Ot.transform, Xl), gd = Zn(bu, ii, Gn, Ot.transform, Xl), yd = Zn(La.posMatrix, ii, Gn, Ot.transform, Xl), hc = Rn.translatePosition(Ot.transform, xa, Nt, be), Wv = Sa && Ya.hasTextData(), Nh = J.layout.get("icon-text-fit") !== "none" && Wv && Ya.hasIconData();
                      if (oi) {
                        const Uu = Ot.style.map.terrain ? (Vd, tl) => Ot.style.map.terrain.getElevation(La, Vd, tl) : null, Df = J.layout.get("text-rotation-alignment") === "map";
                        jr(Ya, La.posMatrix, Ot, Tt, of, yd, ii, pr, Df, Rn, La.toUnwrapped(), bn.width, bn.height, hc, Uu);
                      }
                      const mv = La.posMatrix, gs = Tt && Sa || Nh, If = oi || gs ? Pa : of, Rf = gd, Uh = ua && J.paint.get(Tt ? "text-halo-width" : "icon-halo-width").constantOr(1) !== 0;
                      let Yl;
                      ua ? Ya.iconsInText ? Yl = rc(ca.kind, Lo, Xn, ii, oi, gs, Ot, mv, If, Rf, hc, sl, ts, Xa) : Yl = _c(ca.kind, Lo, Xn, ii, oi, gs, Ot, mv, If, Rf, hc, Tt, sl, !0, Xa) : Yl = Hl(ca.kind, Lo, Xn, ii, oi, gs, Ot, mv, If, Rf, hc, Tt, sl, Xa);
                      const wu = {
                        program: Zs,
                        buffers: Va,
                        uniformValues: Yl,
                        atlasTexture: Rs,
                        atlasTextureIcon: Bu,
                        atlasInterpolation: bo,
                        atlasInterpolationIcon: Nu,
                        isSDF: ua,
                        hasHalo: Uh
                      };
                      if (Ci && Ya.canOverlap) {
                        Oi = !0;
                        const Uu = Va.segments.get();
                        for (const Df of Uu)
                          ao.push({
                            segments: new s.a0([Df]),
                            sortKey: Df.sortKey,
                            state: wu,
                            terrainData: qs
                          });
                      } else
                        ao.push({
                          segments: Va.segments,
                          sortKey: 0,
                          state: wu,
                          terrainData: qs
                        });
                    }
                    Oi && ao.sort((La, xa) => La.sortKey - xa.sortKey);
                    for (const La of ao) {
                      const xa = La.state;
                      if (qr.activeTexture.set(vn.TEXTURE0), xa.atlasTexture.bind(xa.atlasInterpolation, vn.CLAMP_TO_EDGE), xa.atlasTextureIcon && (qr.activeTexture.set(vn.TEXTURE1), xa.atlasTextureIcon && xa.atlasTextureIcon.bind(xa.atlasInterpolationIcon, vn.CLAMP_TO_EDGE)), xa.isSDF) {
                        const Ya = xa.uniformValues;
                        xa.hasHalo && (Ya.u_is_halo = 1, Kt(xa.buffers, La.segments, J, Ot, xa.program, pa, br, Ar, Ya, La.terrainData)), Ya.u_is_halo = 0;
                      }
                      Kt(xa.buffers, La.segments, J, Ot, xa.program, pa, br, Ar, xa.uniformValues, La.terrainData);
                    }
                  }
                  function Kt(Ot, R, J, yt, Tt, Nt, be, Re, je, pr) {
                    const br = yt.context, Ar = br.gl;
                    Tt.draw(br, Ar.TRIANGLES, Nt, be, Re, ri.disabled, je, pr, J.id, Ot.layoutVertexBuffer, Ot.indexBuffer, R, J.paint, yt.transform.zoom, Ot.programConfigurations.get(J.id), Ot.dynamicLayoutVertexBuffer, Ot.opacityVertexBuffer);
                  }
                  function pe(Ot, R, J, yt) {
                    if (Ot.renderPass !== "translucent")
                      return;
                    const Tt = J.paint.get("circle-opacity"), Nt = J.paint.get("circle-stroke-width"), be = J.paint.get("circle-stroke-opacity"), Re = !J.layout.get("circle-sort-key").isConstant();
                    if (Tt.constantOr(1) === 0 && (Nt.constantOr(1) === 0 || be.constantOr(1) === 0))
                      return;
                    const je = Ot.context, pr = je.gl, br = Ot.depthModeForSublayer(0, Pr.ReadOnly), Ar = dn.disabled, qr = Ot.colorModeForRenderPass(), vn = [];
                    for (let bn = 0; bn < yt.length; bn++) {
                      const Rn = yt[bn], Gn = R.getTile(Rn), ii = Gn.getBucket(J);
                      if (!ii)
                        continue;
                      const oi = ii.programConfigurations.get(J.id), Xn = Ot.useProgram("circle", oi), Ri = ii.layoutVertexBuffer, Ci = ii.indexBuffer, Oi = Ot.style.map.terrain && Ot.style.map.terrain.getTerrainData(Rn), pa = _f(Ot, Rn, Gn, J), Sa = {
                        programConfiguration: oi,
                        program: Xn,
                        layoutVertexBuffer: Ri,
                        indexBuffer: Ci,
                        uniformValues: pa,
                        terrainData: Oi
                      };
                      if (Re) {
                        const ao = ii.segments.get();
                        for (const Xa of ao)
                          vn.push({
                            segments: new s.a0([Xa]),
                            sortKey: Xa.sortKey,
                            state: Sa
                          });
                      } else
                        vn.push({
                          segments: ii.segments,
                          sortKey: 0,
                          state: Sa
                        });
                    }
                    Re && vn.sort((bn, Rn) => bn.sortKey - Rn.sortKey);
                    for (const bn of vn) {
                      const { programConfiguration: Rn, program: Gn, layoutVertexBuffer: ii, indexBuffer: oi, uniformValues: Xn, terrainData: Ri } = bn.state, Ci = bn.segments;
                      Gn.draw(je, pr.TRIANGLES, br, Ar, qr, ri.disabled, Xn, Ri, J.id, ii, oi, Ci, J.paint, Ot.transform.zoom, Rn);
                    }
                  }
                  function Te(Ot, R, J, yt) {
                    if (J.paint.get("heatmap-opacity") !== 0)
                      if (Ot.renderPass === "offscreen") {
                        const Tt = Ot.context, Nt = Tt.gl, be = dn.disabled, Re = new fr([Nt.ONE, Nt.ONE], s.aN.transparent, [!0, !0, !0, !0]);
                        Ce(Tt, Ot, J), Tt.clear({ color: s.aN.transparent });
                        for (let je = 0; je < yt.length; je++) {
                          const pr = yt[je];
                          if (R.hasRenderableParent(pr))
                            continue;
                          const br = R.getTile(pr), Ar = br.getBucket(J);
                          if (!Ar)
                            continue;
                          const qr = Ar.programConfigurations.get(J.id), vn = Ot.useProgram("heatmap", qr), { zoom: bn } = Ot.transform;
                          vn.draw(Tt, Nt.TRIANGLES, Pr.disabled, be, Re, ri.disabled, od(pr.posMatrix, br, bn, J.paint.get("heatmap-intensity")), null, J.id, Ar.layoutVertexBuffer, Ar.indexBuffer, Ar.segments, J.paint, Ot.transform.zoom, qr);
                        }
                        Tt.viewport.set([0, 0, Ot.width, Ot.height]);
                      } else Ot.renderPass === "translucent" && (Ot.context.setColorMode(Ot.colorModeForRenderPass()), We(Ot, J));
                  }
                  function Ce(Ot, R, J) {
                    const yt = Ot.gl;
                    Ot.activeTexture.set(yt.TEXTURE1), Ot.viewport.set([0, 0, R.width / 4, R.height / 4]);
                    let Tt = J.heatmapFbo;
                    if (Tt)
                      yt.bindTexture(yt.TEXTURE_2D, Tt.colorAttachment.get()), Ot.bindFramebuffer.set(Tt.framebuffer);
                    else {
                      const Nt = yt.createTexture();
                      yt.bindTexture(yt.TEXTURE_2D, Nt), yt.texParameteri(yt.TEXTURE_2D, yt.TEXTURE_WRAP_S, yt.CLAMP_TO_EDGE), yt.texParameteri(yt.TEXTURE_2D, yt.TEXTURE_WRAP_T, yt.CLAMP_TO_EDGE), yt.texParameteri(yt.TEXTURE_2D, yt.TEXTURE_MIN_FILTER, yt.LINEAR), yt.texParameteri(yt.TEXTURE_2D, yt.TEXTURE_MAG_FILTER, yt.LINEAR), Tt = J.heatmapFbo = Ot.createFramebuffer(R.width / 4, R.height / 4, !1, !1), er(Ot, R, Nt, Tt);
                    }
                  }
                  function er(Ot, R, J, yt) {
                    var Tt, Nt;
                    const be = Ot.gl, Re = (Tt = Ot.HALF_FLOAT) !== null && Tt !== void 0 ? Tt : be.UNSIGNED_BYTE, je = (Nt = Ot.RGBA16F) !== null && Nt !== void 0 ? Nt : be.RGBA;
                    be.texImage2D(be.TEXTURE_2D, 0, je, R.width / 4, R.height / 4, 0, be.RGBA, Re, null), yt.colorAttachment.set(J);
                  }
                  function We(Ot, R) {
                    const J = Ot.context, yt = J.gl, Tt = R.heatmapFbo;
                    if (!Tt)
                      return;
                    J.activeTexture.set(yt.TEXTURE0), yt.bindTexture(yt.TEXTURE_2D, Tt.colorAttachment.get()), J.activeTexture.set(yt.TEXTURE1);
                    let Nt = R.colorRampTexture;
                    Nt || (Nt = R.colorRampTexture = new Vt(J, R.colorRamp, yt.RGBA)), Nt.bind(yt.LINEAR, yt.CLAMP_TO_EDGE), Ot.useProgram("heatmapTexture").draw(J, yt.TRIANGLES, Pr.disabled, dn.disabled, Ot.colorModeForRenderPass(), ri.disabled, Dd(Ot, R, 0, 1), null, R.id, Ot.viewportBuffer, Ot.quadTriangleIndexBuffer, Ot.viewportSegments, R.paint, Ot.transform.zoom);
                  }
                  function gr(Ot, R, J, yt) {
                    if (Ot.renderPass !== "translucent")
                      return;
                    const Tt = J.paint.get("line-opacity"), Nt = J.paint.get("line-width");
                    if (Tt.constantOr(1) === 0 || Nt.constantOr(1) === 0)
                      return;
                    const be = Ot.depthModeForSublayer(0, Pr.ReadOnly), Re = Ot.colorModeForRenderPass(), je = J.paint.get("line-dasharray"), pr = J.paint.get("line-pattern"), br = pr.constantOr(1), Ar = J.paint.get("line-gradient"), qr = J.getCrossfadeParameters(), vn = br ? "linePattern" : je ? "lineSDF" : Ar ? "lineGradient" : "line", bn = Ot.context, Rn = bn.gl;
                    let Gn = !0;
                    for (const ii of yt) {
                      const oi = R.getTile(ii);
                      if (br && !oi.patternsLoaded())
                        continue;
                      const Xn = oi.getBucket(J);
                      if (!Xn)
                        continue;
                      const Ri = Xn.programConfigurations.get(J.id), Ci = Ot.context.program.get(), Oi = Ot.useProgram(vn, Ri), pa = Gn || Oi.program !== Ci, Sa = Ot.style.map.terrain && Ot.style.map.terrain.getTerrainData(ii), ao = pr.constantOr(null);
                      if (ao && oi.imageAtlas) {
                        const xa = oi.imageAtlas, Ya = xa.patternPositions[ao.to.toString()], Va = xa.patternPositions[ao.from.toString()];
                        Ya && Va && Ri.setConstantPatternPositions(Ya, Va);
                      }
                      const Xa = Sa ? ii : null, La = br ? $f(Ot, oi, J, qr, Xa) : je ? qf(Ot, oi, J, je, qr, Xa) : Ar ? ld(Ot, oi, J, Xn.lineClipsArray.length, Xa) : Vl(Ot, oi, J, Xa);
                      if (br)
                        bn.activeTexture.set(Rn.TEXTURE0), oi.imageAtlasTexture.bind(Rn.LINEAR, Rn.CLAMP_TO_EDGE), Ri.updatePaintBuffers(qr);
                      else if (je && (pa || Ot.lineAtlas.dirty))
                        bn.activeTexture.set(Rn.TEXTURE0), Ot.lineAtlas.bind(bn);
                      else if (Ar) {
                        const xa = Xn.gradients[J.id];
                        let Ya = xa.texture;
                        if (J.gradientVersion !== xa.version) {
                          let Va = 256;
                          if (J.stepInterpolant) {
                            const Wo = R.getSource().maxzoom, ua = ii.canonical.z === Wo ? Math.ceil(1 << Ot.transform.maxZoom - ii.canonical.z) : 1, Zs = Xn.maxLineLength / s.X * 1024 * ua;
                            Va = s.ad(s.aV(Zs), 256, bn.maxTextureSize);
                          }
                          xa.gradient = s.aW({
                            expression: J.gradientExpression(),
                            evaluationKey: "lineProgress",
                            resolution: Va,
                            image: xa.gradient || void 0,
                            clips: Xn.lineClipsArray
                          }), xa.texture ? xa.texture.update(xa.gradient) : xa.texture = new Vt(bn, xa.gradient, Rn.RGBA), xa.version = J.gradientVersion, Ya = xa.texture;
                        }
                        bn.activeTexture.set(Rn.TEXTURE0), Ya.bind(J.stepInterpolant ? Rn.NEAREST : Rn.LINEAR, Rn.CLAMP_TO_EDGE);
                      }
                      Oi.draw(bn, Rn.TRIANGLES, be, Ot.stencilModeForClipping(ii), Re, ri.disabled, La, Sa, J.id, Xn.layoutVertexBuffer, Xn.indexBuffer, Xn.segments, J.paint, Ot.transform.zoom, Ri, Xn.layoutVertexBuffer2), Gn = !1;
                    }
                  }
                  function xr(Ot, R, J, yt, Tt) {
                    if (!J || !yt || !yt.imageAtlas)
                      return;
                    const Nt = yt.imageAtlas.patternPositions;
                    let be = Nt[J.to.toString()], Re = Nt[J.from.toString()];
                    if (!be && Re && (be = Re), !Re && be && (Re = be), !be || !Re) {
                      const je = Tt.getPaintProperty(R);
                      be = Nt[je], Re = Nt[je];
                    }
                    be && Re && Ot.setConstantPatternPositions(be, Re);
                  }
                  function kr(Ot, R, J, yt) {
                    const Tt = J.paint.get("fill-color"), Nt = J.paint.get("fill-opacity");
                    if (Nt.constantOr(1) === 0)
                      return;
                    const be = Ot.colorModeForRenderPass(), Re = J.paint.get("fill-pattern"), je = Ot.opaquePassEnabledForLayer() && !Re.constantOr(1) && Tt.constantOr(s.aN.transparent).a === 1 && Nt.constantOr(0) === 1 ? "opaque" : "translucent";
                    if (Ot.renderPass === je) {
                      const pr = Ot.depthModeForSublayer(1, Ot.renderPass === "opaque" ? Pr.ReadWrite : Pr.ReadOnly);
                      an(Ot, R, J, yt, pr, be, !1);
                    }
                    if (Ot.renderPass === "translucent" && J.paint.get("fill-antialias")) {
                      const pr = Ot.depthModeForSublayer(J.getPaintProperty("fill-outline-color") ? 2 : 0, Pr.ReadOnly);
                      an(Ot, R, J, yt, pr, be, !0);
                    }
                  }
                  function an(Ot, R, J, yt, Tt, Nt, be) {
                    const Re = Ot.context.gl, je = "fill-pattern", pr = J.paint.get(je), br = pr && pr.constantOr(1), Ar = J.getCrossfadeParameters();
                    let qr, vn, bn, Rn, Gn;
                    be ? (vn = br && !J.getPaintProperty("fill-outline-color") ? "fillOutlinePattern" : "fillOutline", qr = Re.LINES) : (vn = br ? "fillPattern" : "fill", qr = Re.TRIANGLES);
                    const ii = pr.constantOr(null);
                    for (const oi of yt) {
                      const Xn = R.getTile(oi);
                      if (br && !Xn.patternsLoaded())
                        continue;
                      const Ri = Xn.getBucket(J);
                      if (!Ri)
                        continue;
                      const Ci = Ri.programConfigurations.get(J.id), Oi = Ot.useProgram(vn, Ci), pa = Ot.style.map.terrain && Ot.style.map.terrain.getTerrainData(oi);
                      br && (Ot.context.activeTexture.set(Re.TEXTURE0), Xn.imageAtlasTexture.bind(Re.LINEAR, Re.CLAMP_TO_EDGE), Ci.updatePaintBuffers(Ar)), xr(Ci, je, ii, Xn, J);
                      const Sa = pa ? oi : null, ao = Sa ? Sa.posMatrix : oi.posMatrix, Xa = Ot.translatePosMatrix(ao, Xn, J.paint.get("fill-translate"), J.paint.get("fill-translate-anchor"));
                      if (!be)
                        Rn = Ri.indexBuffer, Gn = Ri.segments, bn = br ? Sl(Xa, Ot, Ar, Xn) : Jf(Xa);
                      else {
                        Rn = Ri.indexBuffer2, Gn = Ri.segments2;
                        const La = [Re.drawingBufferWidth, Re.drawingBufferHeight];
                        bn = vn === "fillOutlinePattern" && br ? wf(Xa, Ot, Ar, Xn, La) : Qu(Xa, La);
                      }
                      Oi.draw(Ot.context, qr, Tt, Ot.stencilModeForClipping(oi), Nt, ri.disabled, bn, pa, J.id, Ri.layoutVertexBuffer, Rn, Gn, J.paint, Ot.transform.zoom, Ci);
                    }
                  }
                  function on(Ot, R, J, yt) {
                    const Tt = J.paint.get("fill-extrusion-opacity");
                    if (Tt !== 0 && Ot.renderPass === "translucent") {
                      const Nt = new Pr(Ot.context.gl.LEQUAL, Pr.ReadWrite, Ot.depthRangeFor3D);
                      if (Tt === 1 && !J.paint.get("fill-extrusion-pattern").constantOr(1)) {
                        const be = Ot.colorModeForRenderPass();
                        Ln(Ot, R, J, yt, Nt, dn.disabled, be);
                      } else
                        Ln(Ot, R, J, yt, Nt, dn.disabled, fr.disabled), Ln(Ot, R, J, yt, Nt, Ot.stencilModeFor3D(), Ot.colorModeForRenderPass());
                    }
                  }
                  function Ln(Ot, R, J, yt, Tt, Nt, be) {
                    const Re = Ot.context, je = Re.gl, pr = "fill-extrusion-pattern", br = J.paint.get(pr), Ar = br.constantOr(1), qr = J.getCrossfadeParameters(), vn = J.paint.get("fill-extrusion-opacity"), bn = br.constantOr(null);
                    for (const Rn of yt) {
                      const Gn = R.getTile(Rn), ii = Gn.getBucket(J);
                      if (!ii)
                        continue;
                      const oi = Ot.style.map.terrain && Ot.style.map.terrain.getTerrainData(Rn), Xn = ii.programConfigurations.get(J.id), Ri = Ot.useProgram(Ar ? "fillExtrusionPattern" : "fillExtrusion", Xn);
                      Ar && (Ot.context.activeTexture.set(je.TEXTURE0), Gn.imageAtlasTexture.bind(je.LINEAR, je.CLAMP_TO_EDGE), Xn.updatePaintBuffers(qr)), xr(Xn, pr, bn, Gn, J);
                      const Ci = Ot.translatePosMatrix(Rn.posMatrix, Gn, J.paint.get("fill-extrusion-translate"), J.paint.get("fill-extrusion-translate-anchor")), Oi = J.paint.get("fill-extrusion-vertical-gradient"), pa = Ar ? Ju(Ci, Ot, Oi, vn, Rn, qr, Gn) : jc(Ci, Ot, Oi, vn);
                      Ri.draw(Re, Re.gl.TRIANGLES, Tt, Nt, be, ri.backCCW, pa, oi, J.id, ii.layoutVertexBuffer, ii.indexBuffer, ii.segments, J.paint, Ot.transform.zoom, Xn, Ot.style.map.terrain && ii.centroidVertexBuffer);
                    }
                  }
                  function Hn(Ot, R, J, yt) {
                    if (Ot.renderPass !== "offscreen" && Ot.renderPass !== "translucent")
                      return;
                    const Tt = Ot.context, Nt = Ot.depthModeForSublayer(0, Pr.ReadOnly), be = Ot.colorModeForRenderPass(), [Re, je] = Ot.renderPass === "translucent" ? Ot.stencilConfigForOverlap(yt) : [{}, yt];
                    for (const pr of je) {
                      const br = R.getTile(pr);
                      typeof br.needsHillshadePrepare < "u" && br.needsHillshadePrepare && Ot.renderPass === "offscreen" ? xn(Ot, br, J, Nt, dn.disabled, be) : Ot.renderPass === "translucent" && cn(Ot, pr, br, J, Nt, Re[pr.overscaledZ], be);
                    }
                    Tt.viewport.set([0, 0, Ot.width, Ot.height]);
                  }
                  function cn(Ot, R, J, yt, Tt, Nt, be) {
                    const Re = Ot.context, je = Re.gl, pr = J.fbo;
                    if (!pr)
                      return;
                    const br = Ot.useProgram("hillshade"), Ar = Ot.style.map.terrain && Ot.style.map.terrain.getTerrainData(R);
                    Re.activeTexture.set(je.TEXTURE0), je.bindTexture(je.TEXTURE_2D, pr.colorAttachment.get());
                    const qr = Ar ? R : null;
                    br.draw(Re, je.TRIANGLES, Tt, Nt, be, ri.disabled, Zc(Ot, J, yt, qr), Ar, yt.id, Ot.rasterBoundsBuffer, Ot.quadTriangleIndexBuffer, Ot.rasterBoundsSegments);
                  }
                  function xn(Ot, R, J, yt, Tt, Nt) {
                    const be = Ot.context, Re = be.gl, je = R.dem;
                    if (je && je.data) {
                      const pr = je.dim, br = je.stride, Ar = je.getPixels();
                      if (be.activeTexture.set(Re.TEXTURE1), be.pixelStoreUnpackPremultiplyAlpha.set(!1), R.demTexture = R.demTexture || Ot.getTileTexture(br), R.demTexture) {
                        const vn = R.demTexture;
                        vn.update(Ar, { premultiply: !1 }), vn.bind(Re.NEAREST, Re.CLAMP_TO_EDGE);
                      } else
                        R.demTexture = new Vt(be, Ar, Re.RGBA, { premultiply: !1 }), R.demTexture.bind(Re.NEAREST, Re.CLAMP_TO_EDGE);
                      be.activeTexture.set(Re.TEXTURE0);
                      let qr = R.fbo;
                      if (!qr) {
                        const vn = new Vt(be, { width: pr, height: pr, data: null }, Re.RGBA);
                        vn.bind(Re.LINEAR, Re.CLAMP_TO_EDGE), qr = R.fbo = be.createFramebuffer(pr, pr, !0, !1), qr.colorAttachment.set(vn.texture);
                      }
                      be.bindFramebuffer.set(qr.framebuffer), be.viewport.set([0, 0, pr, pr]), Ot.useProgram("hillshadePrepare").draw(be, Re.TRIANGLES, yt, Tt, Nt, ri.disabled, Xc(R.tileID, je), null, J.id, Ot.rasterBoundsBuffer, Ot.quadTriangleIndexBuffer, Ot.rasterBoundsSegments), R.needsHillshadePrepare = !1;
                    }
                  }
                  function Pn(Ot, R, J, yt) {
                    if (Ot.renderPass !== "translucent" || J.paint.get("raster-opacity") === 0 || !yt.length)
                      return;
                    const Tt = Ot.context, Nt = Tt.gl, be = R.getSource(), Re = Ot.useProgram("raster"), je = Ot.colorModeForRenderPass(), [pr, br] = be instanceof Ue ? [{}, yt] : Ot.stencilConfigForOverlap(yt), Ar = br[br.length - 1].overscaledZ, qr = !Ot.options.moving;
                    for (const vn of br) {
                      const bn = Ot.depthModeForSublayer(vn.overscaledZ - Ar, J.paint.get("raster-opacity") === 1 ? Pr.ReadWrite : Pr.ReadOnly, Nt.LESS), Rn = R.getTile(vn);
                      Rn.registerFadeDuration(J.paint.get("raster-fade-duration"));
                      const Gn = R.findLoadedParent(vn, 0), ii = R.findLoadedSibling(vn), Xn = Yn(Rn, Gn || ii || null, R, J, Ot.transform, Ot.style.map.terrain);
                      let Ri, Ci;
                      const Oi = J.paint.get("raster-resampling") === "nearest" ? Nt.NEAREST : Nt.LINEAR;
                      Tt.activeTexture.set(Nt.TEXTURE0), Rn.texture.bind(Oi, Nt.CLAMP_TO_EDGE, Nt.LINEAR_MIPMAP_NEAREST), Tt.activeTexture.set(Nt.TEXTURE1), Gn ? (Gn.texture.bind(Oi, Nt.CLAMP_TO_EDGE, Nt.LINEAR_MIPMAP_NEAREST), Ri = Math.pow(2, Gn.tileID.overscaledZ - Rn.tileID.overscaledZ), Ci = [Rn.tileID.canonical.x * Ri % 1, Rn.tileID.canonical.y * Ri % 1]) : Rn.texture.bind(Oi, Nt.CLAMP_TO_EDGE, Nt.LINEAR_MIPMAP_NEAREST), Rn.texture.useMipmap && Tt.extTextureFilterAnisotropic && Ot.transform.pitch > 20 && Nt.texParameterf(Nt.TEXTURE_2D, Tt.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT, Tt.extTextureFilterAnisotropicMax);
                      const pa = Ot.style.map.terrain && Ot.style.map.terrain.getTerrainData(vn), Sa = pa ? vn : null, ao = Sa ? Sa.posMatrix : Ot.transform.calculatePosMatrix(vn.toUnwrapped(), qr), Xa = Ms(ao, Ci || [0, 0], Ri || 1, Xn, J);
                      be instanceof Ue ? Re.draw(Tt, Nt.TRIANGLES, bn, dn.disabled, je, ri.disabled, Xa, pa, J.id, be.boundsBuffer, Ot.quadTriangleIndexBuffer, be.boundsSegments) : Re.draw(Tt, Nt.TRIANGLES, bn, pr[vn.overscaledZ], je, ri.disabled, Xa, pa, J.id, Ot.rasterBoundsBuffer, Ot.quadTriangleIndexBuffer, Ot.rasterBoundsSegments);
                    }
                  }
                  function Yn(Ot, R, J, yt, Tt, Nt) {
                    const be = yt.paint.get("raster-fade-duration");
                    if (!Nt && be > 0) {
                      const Re = d.now(), je = (Re - Ot.timeAdded) / be, pr = R ? (Re - R.timeAdded) / be : -1, br = J.getSource(), Ar = Tt.coveringZoomLevel({
                        tileSize: br.tileSize,
                        roundZoom: br.roundZoom
                      }), qr = !R || Math.abs(R.tileID.overscaledZ - Ar) > Math.abs(Ot.tileID.overscaledZ - Ar), vn = qr && Ot.refreshedUponExpiration ? 1 : s.ad(qr ? je : 1 - pr, 0, 1);
                      return Ot.refreshedUponExpiration && je >= 1 && (Ot.refreshedUponExpiration = !1), R ? {
                        opacity: 1,
                        mix: 1 - vn
                      } : {
                        opacity: vn,
                        mix: 0
                      };
                    } else
                      return {
                        opacity: 1,
                        mix: 0
                      };
                  }
                  function ti(Ot, R, J, yt) {
                    const Tt = J.paint.get("background-color"), Nt = J.paint.get("background-opacity");
                    if (Nt === 0)
                      return;
                    const be = Ot.context, Re = be.gl, je = Ot.transform, pr = je.tileSize, br = J.paint.get("background-pattern");
                    if (Ot.isPatternMissing(br))
                      return;
                    const Ar = !br && Tt.a === 1 && Nt === 1 && Ot.opaquePassEnabledForLayer() ? "opaque" : "translucent";
                    if (Ot.renderPass !== Ar)
                      return;
                    const qr = dn.disabled, vn = Ot.depthModeForSublayer(0, Ar === "opaque" ? Pr.ReadWrite : Pr.ReadOnly), bn = Ot.colorModeForRenderPass(), Rn = Ot.useProgram(br ? "backgroundPattern" : "background"), Gn = yt || je.coveringTiles({ tileSize: pr, terrain: Ot.style.map.terrain });
                    br && (be.activeTexture.set(Re.TEXTURE0), Ot.imageManager.bind(Ot.context));
                    const ii = J.getCrossfadeParameters();
                    for (const oi of Gn) {
                      const Xn = yt ? oi.posMatrix : Ot.transform.calculatePosMatrix(oi.toUnwrapped()), Ri = br ? No(Xn, Nt, Ot, br, { tileID: oi, tileSize: pr }, ii) : Tc(Xn, Nt, Tt), Ci = Ot.style.map.terrain && Ot.style.map.terrain.getTerrainData(oi);
                      Rn.draw(be, Re.TRIANGLES, vn, qr, bn, ri.disabled, Ri, Ci, J.id, Ot.tileExtentBuffer, Ot.quadTriangleIndexBuffer, Ot.tileExtentSegments);
                    }
                  }
                  const zn = new s.aN(1, 0, 0, 1), Li = new s.aN(0, 1, 0, 1), Xi = new s.aN(0, 0, 1, 1), oa = new s.aN(1, 0, 1, 1), ji = new s.aN(0, 1, 1, 1);
                  function ea(Ot) {
                    const R = Ot.transform.padding, J = 3;
                    Wa(Ot, Ot.transform.height - (R.top || 0), J, zn), Wa(Ot, R.bottom || 0, J, Li), ya(Ot, R.left || 0, J, Xi), ya(Ot, Ot.transform.width - (R.right || 0), J, oa);
                    const yt = Ot.transform.centerPoint;
                    sa(Ot, yt.x, Ot.transform.height - yt.y, ji);
                  }
                  function sa(Ot, R, J, yt) {
                    Oa(Ot, R - 1, J - 10, 2, 20, yt), Oa(Ot, R - 10, J - 1, 20, 2, yt);
                  }
                  function Wa(Ot, R, J, yt) {
                    Oa(Ot, 0, R + J / 2, Ot.transform.width, J, yt);
                  }
                  function ya(Ot, R, J, yt) {
                    Oa(Ot, R - J / 2, 0, J, Ot.transform.height, yt);
                  }
                  function Oa(Ot, R, J, yt, Tt, Nt) {
                    const be = Ot.context, Re = be.gl;
                    Re.enable(Re.SCISSOR_TEST), Re.scissor(R * Ot.pixelRatio, J * Ot.pixelRatio, yt * Ot.pixelRatio, Tt * Ot.pixelRatio), be.clear({ color: Nt }), Re.disable(Re.SCISSOR_TEST);
                  }
                  function lo(Ot, R, J) {
                    for (let yt = 0; yt < J.length; yt++)
                      Go(Ot, R, J[yt]);
                  }
                  function Go(Ot, R, J) {
                    const yt = Ot.context, Tt = yt.gl, Nt = J.posMatrix, be = Ot.useProgram("debug"), Re = Pr.disabled, je = dn.disabled, pr = Ot.colorModeForRenderPass(), br = "$debug", Ar = Ot.style.map.terrain && Ot.style.map.terrain.getTerrainData(J);
                    yt.activeTexture.set(Tt.TEXTURE0);
                    const qr = R.getTileByID(J.key).latestRawTileData, vn = qr && qr.byteLength || 0, bn = Math.floor(vn / 1024), Rn = R.getTile(J).tileSize, Gn = 512 / Math.min(Rn, 512) * (J.overscaledZ / Ot.transform.zoom) * 0.5;
                    let ii = J.canonical.toString();
                    J.overscaledZ !== J.canonical.z && (ii += ` => ${J.overscaledZ}`);
                    const oi = `${ii} ${bn}kB`;
                    Po(Ot, oi), be.draw(yt, Tt.TRIANGLES, Re, je, fr.alphaBlended, ri.disabled, nu(Nt, s.aN.transparent, Gn), null, br, Ot.debugBuffer, Ot.quadTriangleIndexBuffer, Ot.debugSegments), be.draw(yt, Tt.LINE_STRIP, Re, je, pr, ri.disabled, nu(Nt, s.aN.red), Ar, br, Ot.debugBuffer, Ot.tileBorderIndexBuffer, Ot.debugSegments);
                  }
                  function Po(Ot, R) {
                    Ot.initDebugOverlayCanvas();
                    const J = Ot.debugOverlayCanvas, yt = Ot.context.gl, Tt = Ot.debugOverlayCanvas.getContext("2d");
                    Tt.clearRect(0, 0, J.width, J.height), Tt.shadowColor = "white", Tt.shadowBlur = 2, Tt.lineWidth = 1.5, Tt.strokeStyle = "white", Tt.textBaseline = "top", Tt.font = "bold 36px Open Sans, sans-serif", Tt.fillText(R, 5, 5), Tt.strokeText(R, 5, 5), Ot.debugOverlayTexture.update(J), Ot.debugOverlayTexture.bind(yt.LINEAR, yt.CLAMP_TO_EDGE);
                  }
                  function Ui(Ot, R) {
                    let J = null;
                    const Tt = Object.values(Ot._layers).flatMap((je) => je.source && !je.isHidden(R) ? [Ot.sourceCaches[je.source]] : []), Nt = Tt.filter((je) => je.getSource().type === "vector"), be = Tt.filter((je) => je.getSource().type !== "vector"), Re = (je) => {
                      (!J || J.getSource().maxzoom < je.getSource().maxzoom) && (J = je);
                    };
                    return Nt.forEach((je) => Re(je)), J || be.forEach((je) => Re(je)), J;
                  }
                  function Ba(Ot, R, J) {
                    const yt = Ot.context, Tt = J.implementation;
                    if (Ot.renderPass === "offscreen") {
                      const Nt = Tt.prerender;
                      Nt && (Ot.setCustomLayerDefaults(), yt.setColorMode(Ot.colorModeForRenderPass()), Nt.call(Tt, yt.gl, Ot.transform.customLayerMatrix()), yt.setDirty(), Ot.setBaseState());
                    } else if (Ot.renderPass === "translucent") {
                      Ot.setCustomLayerDefaults(), yt.setColorMode(Ot.colorModeForRenderPass()), yt.setStencilMode(dn.disabled);
                      const Nt = Tt.renderingMode === "3d" ? new Pr(Ot.context.gl.LEQUAL, Pr.ReadWrite, Ot.depthRangeFor3D) : Ot.depthModeForSublayer(0, Pr.ReadOnly);
                      yt.setDepthMode(Nt), Tt.render(yt.gl, Ot.transform.customLayerMatrix(), { farZ: Ot.transform.farZ, nearZ: Ot.transform.nearZ, fov: Ot.transform._fov, modelViewProjectionMatrix: Ot.transform.modelViewProjectionMatrix, projectionMatrix: Ot.transform.projectionMatrix }), yt.setDirty(), Ot.setBaseState(), yt.bindFramebuffer.set(null);
                    }
                  }
                  function ba(Ot, R) {
                    const J = Ot.context, yt = J.gl, Tt = fr.unblended, Nt = new Pr(yt.LEQUAL, Pr.ReadWrite, [0, 1]), be = R.getTerrainMesh(), Re = R.sourceCache.getRenderableTiles(), je = Ot.useProgram("terrainDepth");
                    J.bindFramebuffer.set(R.getFramebuffer("depth").framebuffer), J.viewport.set([0, 0, Ot.width / devicePixelRatio, Ot.height / devicePixelRatio]), J.clear({ color: s.aN.transparent, depth: 1 });
                    for (const pr of Re) {
                      const br = R.getTerrainData(pr.tileID), Ar = Ot.transform.calculatePosMatrix(pr.tileID.toUnwrapped()), qr = Hc(Ar, R.getMeshFrameDelta(Ot.transform.zoom));
                      je.draw(J, yt.TRIANGLES, Nt, dn.disabled, Tt, ri.backCCW, qr, br, "terrain", be.vertexBuffer, be.indexBuffer, be.segments);
                    }
                    J.bindFramebuffer.set(null), J.viewport.set([0, 0, Ot.width, Ot.height]);
                  }
                  function xo(Ot, R) {
                    const J = Ot.context, yt = J.gl, Tt = fr.unblended, Nt = new Pr(yt.LEQUAL, Pr.ReadWrite, [0, 1]), be = R.getTerrainMesh(), Re = R.getCoordsTexture(), je = R.sourceCache.getRenderableTiles(), pr = Ot.useProgram("terrainCoords");
                    J.bindFramebuffer.set(R.getFramebuffer("coords").framebuffer), J.viewport.set([0, 0, Ot.width / devicePixelRatio, Ot.height / devicePixelRatio]), J.clear({ color: s.aN.transparent, depth: 1 }), R.coordsIndex = [];
                    for (const br of je) {
                      const Ar = R.getTerrainData(br.tileID);
                      J.activeTexture.set(yt.TEXTURE0), yt.bindTexture(yt.TEXTURE_2D, Re.texture);
                      const qr = Ot.transform.calculatePosMatrix(br.tileID.toUnwrapped()), vn = Mh(qr, 255 - R.coordsIndex.length, R.getMeshFrameDelta(Ot.transform.zoom));
                      pr.draw(J, yt.TRIANGLES, Nt, dn.disabled, Tt, ri.backCCW, vn, Ar, "terrain", be.vertexBuffer, be.indexBuffer, be.segments), R.coordsIndex.push(br.tileID.key);
                    }
                    J.bindFramebuffer.set(null), J.viewport.set([0, 0, Ot.width, Ot.height]);
                  }
                  function Xo(Ot, R, J) {
                    const yt = Ot.context, Tt = yt.gl, Nt = Ot.colorModeForRenderPass(), be = new Pr(Tt.LEQUAL, Pr.ReadWrite, Ot.depthRangeFor3D), Re = Ot.useProgram("terrain"), je = R.getTerrainMesh();
                    yt.bindFramebuffer.set(null), yt.viewport.set([0, 0, Ot.width, Ot.height]);
                    for (const pr of J) {
                      const br = Ot.renderToTexture.getTexture(pr), Ar = R.getTerrainData(pr.tileID);
                      yt.activeTexture.set(Tt.TEXTURE0), Tt.bindTexture(Tt.TEXTURE_2D, br.texture);
                      const qr = Ot.transform.calculatePosMatrix(pr.tileID.toUnwrapped()), vn = R.getMeshFrameDelta(Ot.transform.zoom), bn = Ot.transform.calculateFogMatrix(pr.tileID.toUnwrapped()), Rn = Cu(qr, vn, bn, Ot.style.sky, Ot.transform.pitch);
                      Re.draw(yt, Tt.TRIANGLES, be, dn.disabled, Nt, ri.backCCW, Rn, Ar, "terrain", je.vertexBuffer, je.indexBuffer, je.segments);
                    }
                  }
                  class Co {
                    constructor(R, J, yt) {
                      this.vertexBuffer = R, this.indexBuffer = J, this.segments = yt;
                    }
                    destroy() {
                      this.vertexBuffer.destroy(), this.indexBuffer.destroy(), this.segments.destroy(), this.vertexBuffer = null, this.indexBuffer = null, this.segments = null;
                    }
                  }
                  function Cs(Ot, R) {
                    const J = Ot.context, yt = J.gl, Tt = Sc(R, Ot.style.map.transform, Ot.pixelRatio), Nt = new Pr(yt.LEQUAL, Pr.ReadWrite, [0, 1]), be = dn.disabled, Re = Ot.colorModeForRenderPass(), je = Ot.useProgram("sky");
                    if (!R.mesh) {
                      const pr = new s.aX();
                      pr.emplaceBack(-1, -1), pr.emplaceBack(1, -1), pr.emplaceBack(1, 1), pr.emplaceBack(-1, 1);
                      const br = new s.aY();
                      br.emplaceBack(0, 1, 2), br.emplaceBack(0, 2, 3), R.mesh = new Co(J.createVertexBuffer(pr, Bs.members), J.createIndexBuffer(br), s.a0.simpleSegment(0, 0, pr.length, br.length));
                    }
                    je.draw(J, yt.TRIANGLES, Nt, be, Re, ri.disabled, Tt, void 0, "sky", R.mesh.vertexBuffer, R.mesh.indexBuffer, R.mesh.segments);
                  }
                  class ns {
                    constructor(R, J) {
                      this.context = new Wr(R), this.transform = J, this._tileTextures = {}, this.terrainFacilitator = { dirty: !0, matrix: s.ao(new Float64Array(16)), renderTime: 0 }, this.setup(), this.numSublayers = yr.maxUnderzooming + yr.maxOverzooming + 1, this.depthEpsilon = 1 / Math.pow(2, 16), this.crossTileSymbolIndex = new Ea();
                    }
                    /*
                     * Update the GL viewport, projection matrix, and transforms to compensate
                     * for a new width and height value.
                     */
                    resize(R, J, yt) {
                      if (this.width = Math.floor(R * yt), this.height = Math.floor(J * yt), this.pixelRatio = yt, this.context.viewport.set([0, 0, this.width, this.height]), this.style)
                        for (const Tt of this.style._order)
                          this.style._layers[Tt].resize();
                    }
                    setup() {
                      const R = this.context, J = new s.aX();
                      J.emplaceBack(0, 0), J.emplaceBack(s.X, 0), J.emplaceBack(0, s.X), J.emplaceBack(s.X, s.X), this.tileExtentBuffer = R.createVertexBuffer(J, Bs.members), this.tileExtentSegments = s.a0.simpleSegment(0, 0, 4, 2);
                      const yt = new s.aX();
                      yt.emplaceBack(0, 0), yt.emplaceBack(s.X, 0), yt.emplaceBack(0, s.X), yt.emplaceBack(s.X, s.X), this.debugBuffer = R.createVertexBuffer(yt, Bs.members), this.debugSegments = s.a0.simpleSegment(0, 0, 4, 5);
                      const Tt = new s.$();
                      Tt.emplaceBack(0, 0, 0, 0), Tt.emplaceBack(s.X, 0, s.X, 0), Tt.emplaceBack(0, s.X, 0, s.X), Tt.emplaceBack(s.X, s.X, s.X, s.X), this.rasterBoundsBuffer = R.createVertexBuffer(Tt, Pe.members), this.rasterBoundsSegments = s.a0.simpleSegment(0, 0, 4, 2);
                      const Nt = new s.aX();
                      Nt.emplaceBack(0, 0), Nt.emplaceBack(1, 0), Nt.emplaceBack(0, 1), Nt.emplaceBack(1, 1), this.viewportBuffer = R.createVertexBuffer(Nt, Bs.members), this.viewportSegments = s.a0.simpleSegment(0, 0, 4, 2);
                      const be = new s.aZ();
                      be.emplaceBack(0), be.emplaceBack(1), be.emplaceBack(3), be.emplaceBack(2), be.emplaceBack(0), this.tileBorderIndexBuffer = R.createIndexBuffer(be);
                      const Re = new s.aY();
                      Re.emplaceBack(0, 1, 2), Re.emplaceBack(2, 1, 3), this.quadTriangleIndexBuffer = R.createIndexBuffer(Re);
                      const je = this.context.gl;
                      this.stencilClearMode = new dn({ func: je.ALWAYS, mask: 0 }, 0, 255, je.ZERO, je.ZERO, je.ZERO);
                    }
                    /*
                     * Reset the drawing canvas by clearing the stencil buffer so that we can draw
                     * new tiles at the same location, while retaining previously drawn pixels.
                     */
                    clearStencil() {
                      const R = this.context, J = R.gl;
                      this.nextStencilID = 1, this.currentStencilSource = void 0;
                      const yt = s.H();
                      s.aQ(yt, 0, this.width, this.height, 0, 0, 1), s.K(yt, yt, [J.drawingBufferWidth, J.drawingBufferHeight, 0]), this.useProgram("clippingMask").draw(R, J.TRIANGLES, Pr.disabled, this.stencilClearMode, fr.disabled, ri.disabled, Ml(yt), null, "$clipping", this.viewportBuffer, this.quadTriangleIndexBuffer, this.viewportSegments);
                    }
                    _renderTileClippingMasks(R, J) {
                      if (this.currentStencilSource === R.source || !R.isTileClipped() || !J || !J.length)
                        return;
                      this.currentStencilSource = R.source;
                      const yt = this.context, Tt = yt.gl;
                      this.nextStencilID + J.length > 256 && this.clearStencil(), yt.setColorMode(fr.disabled), yt.setDepthMode(Pr.disabled);
                      const Nt = this.useProgram("clippingMask");
                      this._tileClippingMaskIDs = {};
                      for (const be of J) {
                        const Re = this._tileClippingMaskIDs[be.key] = this.nextStencilID++, je = this.style.map.terrain && this.style.map.terrain.getTerrainData(be);
                        Nt.draw(
                          yt,
                          Tt.TRIANGLES,
                          Pr.disabled,
                          // Tests will always pass, and ref value will be written to stencil buffer.
                          new dn({ func: Tt.ALWAYS, mask: 0 }, Re, 255, Tt.KEEP, Tt.KEEP, Tt.REPLACE),
                          fr.disabled,
                          ri.disabled,
                          Ml(be.posMatrix),
                          je,
                          "$clipping",
                          this.tileExtentBuffer,
                          this.quadTriangleIndexBuffer,
                          this.tileExtentSegments
                        );
                      }
                    }
                    stencilModeFor3D() {
                      this.currentStencilSource = void 0, this.nextStencilID + 1 > 256 && this.clearStencil();
                      const R = this.nextStencilID++, J = this.context.gl;
                      return new dn({ func: J.NOTEQUAL, mask: 255 }, R, 255, J.KEEP, J.KEEP, J.REPLACE);
                    }
                    stencilModeForClipping(R) {
                      const J = this.context.gl;
                      return new dn({ func: J.EQUAL, mask: 255 }, this._tileClippingMaskIDs[R.key], 0, J.KEEP, J.KEEP, J.REPLACE);
                    }
                    /*
                     * Sort coordinates by Z as drawing tiles is done in Z-descending order.
                     * All children with the same Z write the same stencil value.  Children
                     * stencil values are greater than parent's.  This is used only for raster
                     * and raster-dem tiles, which are already clipped to tile boundaries, to
                     * mask area of tile overlapped by children tiles.
                     * Stencil ref values continue range used in _tileClippingMaskIDs.
                     *
                     * Returns [StencilMode for tile overscaleZ map, sortedCoords].
                     */
                    stencilConfigForOverlap(R) {
                      const J = this.context.gl, yt = R.sort((be, Re) => Re.overscaledZ - be.overscaledZ), Tt = yt[yt.length - 1].overscaledZ, Nt = yt[0].overscaledZ - Tt + 1;
                      if (Nt > 1) {
                        this.currentStencilSource = void 0, this.nextStencilID + Nt > 256 && this.clearStencil();
                        const be = {};
                        for (let Re = 0; Re < Nt; Re++)
                          be[Re + Tt] = new dn({ func: J.GEQUAL, mask: 255 }, Re + this.nextStencilID, 255, J.KEEP, J.KEEP, J.REPLACE);
                        return this.nextStencilID += Nt, [be, yt];
                      }
                      return [{ [Tt]: dn.disabled }, yt];
                    }
                    colorModeForRenderPass() {
                      const R = this.context.gl;
                      return this._showOverdrawInspector ? new fr([R.CONSTANT_COLOR, R.ONE], new s.aN(0.125, 0.125, 0.125, 0), [!0, !0, !0, !0]) : this.renderPass === "opaque" ? fr.unblended : fr.alphaBlended;
                    }
                    depthModeForSublayer(R, J, yt) {
                      if (!this.opaquePassEnabledForLayer())
                        return Pr.disabled;
                      const Tt = 1 - ((1 + this.currentLayer) * this.numSublayers + R) * this.depthEpsilon;
                      return new Pr(yt || this.context.gl.LEQUAL, J, [Tt, Tt]);
                    }
                    /*
                     * The opaque pass and 3D layers both use the depth buffer.
                     * Layers drawn above 3D layers need to be drawn using the
                     * painter's algorithm so that they appear above 3D features.
                     * This returns true for layers that can be drawn using the
                     * opaque pass.
                     */
                    opaquePassEnabledForLayer() {
                      return this.currentLayer < this.opaquePassCutoff;
                    }
                    render(R, J) {
                      var yt;
                      this.style = R, this.options = J, this.lineAtlas = R.lineAtlas, this.imageManager = R.imageManager, this.glyphManager = R.glyphManager, this.symbolFadeChange = R.placement.symbolFadeChange(d.now()), this.imageManager.beginFrame();
                      const Tt = this.style._order, Nt = this.style.sourceCaches, be = {}, Re = {}, je = {};
                      for (const pr in Nt) {
                        const br = Nt[pr];
                        br.used && br.prepare(this.context), be[pr] = br.getVisibleCoordinates(), Re[pr] = be[pr].slice().reverse(), je[pr] = br.getVisibleCoordinates(!0).reverse();
                      }
                      this.opaquePassCutoff = 1 / 0;
                      for (let pr = 0; pr < Tt.length; pr++) {
                        const br = Tt[pr];
                        if (this.style._layers[br].is3D()) {
                          this.opaquePassCutoff = pr;
                          break;
                        }
                      }
                      this.maybeDrawDepthAndCoords(!1), this.renderToTexture && (this.renderToTexture.prepareForRender(this.style, this.transform.zoom), this.opaquePassCutoff = 0), this.renderPass = "offscreen";
                      for (const pr of Tt) {
                        const br = this.style._layers[pr];
                        if (!br.hasOffscreenPass() || br.isHidden(this.transform.zoom))
                          continue;
                        const Ar = Re[br.source];
                        br.type !== "custom" && !Ar.length || this.renderLayer(this, Nt[br.source], br, Ar);
                      }
                      if (this.context.bindFramebuffer.set(null), this.context.clear({ color: J.showOverdrawInspector ? s.aN.black : s.aN.transparent, depth: 1 }), this.clearStencil(), !((yt = this.style.stylesheet) === null || yt === void 0) && yt.sky && Cs(this, this.style.sky), this._showOverdrawInspector = J.showOverdrawInspector, this.depthRangeFor3D = [0, 1 - (R._order.length + 2) * this.numSublayers * this.depthEpsilon], !this.renderToTexture)
                        for (this.renderPass = "opaque", this.currentLayer = Tt.length - 1; this.currentLayer >= 0; this.currentLayer--) {
                          const pr = this.style._layers[Tt[this.currentLayer]], br = Nt[pr.source], Ar = be[pr.source];
                          this._renderTileClippingMasks(pr, Ar), this.renderLayer(this, br, pr, Ar);
                        }
                      for (this.renderPass = "translucent", this.currentLayer = 0; this.currentLayer < Tt.length; this.currentLayer++) {
                        const pr = this.style._layers[Tt[this.currentLayer]], br = Nt[pr.source];
                        if (this.renderToTexture && this.renderToTexture.renderLayer(pr))
                          continue;
                        const Ar = (pr.type === "symbol" ? je : Re)[pr.source];
                        this._renderTileClippingMasks(pr, be[pr.source]), this.renderLayer(this, br, pr, Ar);
                      }
                      if (this.options.showTileBoundaries) {
                        const pr = Ui(this.style, this.transform.zoom);
                        pr && lo(this, pr, pr.getVisibleCoordinates());
                      }
                      this.options.showPadding && ea(this), this.context.setDefault();
                    }
                    /**
                     * Update the depth and coords framebuffers, if the contents of those frame buffers is out of date.
                     * If requireExact is false, then the contents of those frame buffers is not updated if it is close
                     * to accurate (that is, the camera has not moved much since it was updated last).
                     */
                    maybeDrawDepthAndCoords(R) {
                      if (!this.style || !this.style.map || !this.style.map.terrain)
                        return;
                      const J = this.terrainFacilitator.matrix, yt = this.transform.modelViewProjectionMatrix;
                      let Tt = this.terrainFacilitator.dirty;
                      Tt || (Tt = R ? !s.a_(J, yt) : !s.a$(J, yt)), Tt || (Tt = this.style.map.terrain.sourceCache.tilesAfterTime(this.terrainFacilitator.renderTime).length > 0), Tt && (s.b0(J, yt), this.terrainFacilitator.renderTime = Date.now(), this.terrainFacilitator.dirty = !1, ba(this, this.style.map.terrain), xo(this, this.style.map.terrain));
                    }
                    renderLayer(R, J, yt, Tt) {
                      if (!yt.isHidden(this.transform.zoom) && !(yt.type !== "background" && yt.type !== "custom" && !(Tt || []).length))
                        switch (this.id = yt.id, yt.type) {
                          case "symbol":
                            Fa(R, J, yt, Tt, this.style.placement.variableOffsets);
                            break;
                          case "circle":
                            pe(R, J, yt, Tt);
                            break;
                          case "heatmap":
                            Te(R, J, yt, Tt);
                            break;
                          case "line":
                            gr(R, J, yt, Tt);
                            break;
                          case "fill":
                            kr(R, J, yt, Tt);
                            break;
                          case "fill-extrusion":
                            on(R, J, yt, Tt);
                            break;
                          case "hillshade":
                            Hn(R, J, yt, Tt);
                            break;
                          case "raster":
                            Pn(R, J, yt, Tt);
                            break;
                          case "background":
                            ti(R, J, yt, Tt);
                            break;
                          case "custom":
                            Ba(R, J, yt);
                            break;
                        }
                    }
                    /**
                     * Transform a matrix to incorporate the *-translate and *-translate-anchor properties into it.
                     * @param inViewportPixelUnitsUnits - True when the units accepted by the matrix are in viewport pixels instead of tile units.
                     * @returns matrix
                     */
                    translatePosMatrix(R, J, yt, Tt, Nt) {
                      if (!yt[0] && !yt[1])
                        return R;
                      const be = Nt ? Tt === "map" ? this.transform.angle : 0 : Tt === "viewport" ? -this.transform.angle : 0;
                      if (be) {
                        const pr = Math.sin(be), br = Math.cos(be);
                        yt = [
                          yt[0] * br - yt[1] * pr,
                          yt[0] * pr + yt[1] * br
                        ];
                      }
                      const Re = [
                        Nt ? yt[0] : Fn(J, yt[0], this.transform.zoom),
                        Nt ? yt[1] : Fn(J, yt[1], this.transform.zoom),
                        0
                      ], je = new Float32Array(16);
                      return s.J(je, R, Re), je;
                    }
                    saveTileTexture(R) {
                      const J = this._tileTextures[R.size[0]];
                      J ? J.push(R) : this._tileTextures[R.size[0]] = [R];
                    }
                    getTileTexture(R) {
                      const J = this._tileTextures[R];
                      return J && J.length > 0 ? J.pop() : null;
                    }
                    /**
                     * Checks whether a pattern image is needed, and if it is, whether it is not loaded.
                     *
                     * @returns true if a needed image is missing and rendering needs to be skipped.
                     */
                    isPatternMissing(R) {
                      if (!R)
                        return !1;
                      if (!R.from || !R.to)
                        return !0;
                      const J = this.imageManager.getPattern(R.from.toString()), yt = this.imageManager.getPattern(R.to.toString());
                      return !J || !yt;
                    }
                    useProgram(R, J) {
                      this.cache = this.cache || {};
                      const yt = R + (J ? J.cacheKey : "") + (this._showOverdrawInspector ? "/overdraw" : "") + (this.style.map.terrain ? "/terrain" : "");
                      return this.cache[yt] || (this.cache[yt] = new Eh(this.context, bc[R], J, Sf[R], this._showOverdrawInspector, this.style.map.terrain)), this.cache[yt];
                    }
                    /*
                     * Reset some GL state to default values to avoid hard-to-debug bugs
                     * in custom layers.
                     */
                    setCustomLayerDefaults() {
                      this.context.unbindVAO(), this.context.cullFace.setDefault(), this.context.activeTexture.setDefault(), this.context.pixelStoreUnpack.setDefault(), this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(), this.context.pixelStoreUnpackFlipY.setDefault();
                    }
                    /*
                     * Set GL state that is shared by all layers.
                     */
                    setBaseState() {
                      const R = this.context.gl;
                      this.context.cullFace.set(!1), this.context.viewport.set([0, 0, this.width, this.height]), this.context.blendEquation.set(R.FUNC_ADD);
                    }
                    initDebugOverlayCanvas() {
                      if (this.debugOverlayCanvas == null) {
                        this.debugOverlayCanvas = document.createElement("canvas"), this.debugOverlayCanvas.width = 512, this.debugOverlayCanvas.height = 512;
                        const R = this.context.gl;
                        this.debugOverlayTexture = new Vt(this.context, this.debugOverlayCanvas, R.RGBA);
                      }
                    }
                    destroy() {
                      this.debugOverlayTexture && this.debugOverlayTexture.destroy();
                    }
                    /*
                     * Return true if drawing buffer size is != from requested size.
                     * That means that we've reached GL limits somehow.
                     * Note: drawing buffer size changes only when canvas size changes
                     */
                    overLimit() {
                      const { drawingBufferWidth: R, drawingBufferHeight: J } = this.context.gl;
                      return this.width !== R || this.height !== J;
                    }
                  }
                  class us {
                    constructor(R, J) {
                      this.points = R, this.planes = J;
                    }
                    static fromInvProjectionMatrix(R, J, yt) {
                      const Tt = [
                        [-1, 1, -1, 1],
                        [1, 1, -1, 1],
                        [1, -1, -1, 1],
                        [-1, -1, -1, 1],
                        [-1, 1, 1, 1],
                        [1, 1, 1, 1],
                        [1, -1, 1, 1],
                        [-1, -1, 1, 1]
                      ], Nt = Math.pow(2, yt), be = Tt.map((pr) => {
                        pr = s.ag([], pr, R);
                        const br = 1 / pr[3] / J * Nt;
                        return s.b1(pr, pr, [br, br, 1 / pr[3], br]);
                      }), je = [
                        [0, 1, 2],
                        // near
                        [6, 5, 4],
                        // far
                        [0, 3, 7],
                        // left
                        [2, 1, 5],
                        // right
                        [3, 2, 6],
                        // bottom
                        [0, 4, 5]
                        // top
                      ].map((pr) => {
                        const br = ct([], be[pr[0]], be[pr[1]]), Ar = ct([], be[pr[2]], be[pr[1]]), qr = at([], nt([], br, Ar)), vn = -ut(qr, be[pr[1]]);
                        return qr.concat(vn);
                      });
                      return new us(be, je);
                    }
                  }
                  class Ao {
                    constructor(R, J) {
                      this.min = R, this.max = J, this.center = j([], et([], this.min, this.max), 0.5);
                    }
                    quadrant(R) {
                      const J = [R % 2 === 0, R < 2], yt = ht(this.min), Tt = ht(this.max);
                      for (let Nt = 0; Nt < J.length; Nt++)
                        yt[Nt] = J[Nt] ? this.min[Nt] : this.center[Nt], Tt[Nt] = J[Nt] ? this.center[Nt] : this.max[Nt];
                      return Tt[2] = this.max[2], new Ao(yt, Tt);
                    }
                    distanceX(R) {
                      return Math.max(Math.min(this.max[0], R[0]), this.min[0]) - R[0];
                    }
                    distanceY(R) {
                      return Math.max(Math.min(this.max[1], R[1]), this.min[1]) - R[1];
                    }
                    // Performs a frustum-aabb intersection test. Returns 0 if there's no intersection,
                    // 1 if shapes are intersecting and 2 if the aabb if fully inside the frustum.
                    intersects(R) {
                      const J = [
                        [this.min[0], this.min[1], this.min[2], 1],
                        [this.max[0], this.min[1], this.min[2], 1],
                        [this.max[0], this.max[1], this.min[2], 1],
                        [this.min[0], this.max[1], this.min[2], 1],
                        [this.min[0], this.min[1], this.max[2], 1],
                        [this.max[0], this.min[1], this.max[2], 1],
                        [this.max[0], this.max[1], this.max[2], 1],
                        [this.min[0], this.max[1], this.max[2], 1]
                      ];
                      let yt = !0;
                      for (let Tt = 0; Tt < R.planes.length; Tt++) {
                        const Nt = R.planes[Tt];
                        let be = 0;
                        for (let Re = 0; Re < J.length; Re++)
                          s.b2(Nt, J[Re]) >= 0 && be++;
                        if (be === 0)
                          return 0;
                        be !== J.length && (yt = !1);
                      }
                      if (yt)
                        return 2;
                      for (let Tt = 0; Tt < 3; Tt++) {
                        let Nt = Number.MAX_VALUE, be = -Number.MAX_VALUE;
                        for (let Re = 0; Re < R.points.length; Re++) {
                          const je = R.points[Re][Tt] - this.min[Tt];
                          Nt = Math.min(Nt, je), be = Math.max(be, je);
                        }
                        if (be < 0 || Nt > this.max[Tt] - this.min[Tt])
                          return 0;
                      }
                      return 1;
                    }
                  }
                  class aa {
                    constructor(R = 0, J = 0, yt = 0, Tt = 0) {
                      if (isNaN(R) || R < 0 || isNaN(J) || J < 0 || isNaN(yt) || yt < 0 || isNaN(Tt) || Tt < 0)
                        throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");
                      this.top = R, this.bottom = J, this.left = yt, this.right = Tt;
                    }
                    /**
                     * Interpolates the inset in-place.
                     * This maintains the current inset value for any inset not present in `target`.
                     * @param start - interpolation start
                     * @param target - interpolation target
                     * @param t - interpolation step/weight
                     * @returns the insets
                     */
                    interpolate(R, J, yt) {
                      return J.top != null && R.top != null && (this.top = s.z.number(R.top, J.top, yt)), J.bottom != null && R.bottom != null && (this.bottom = s.z.number(R.bottom, J.bottom, yt)), J.left != null && R.left != null && (this.left = s.z.number(R.left, J.left, yt)), J.right != null && R.right != null && (this.right = s.z.number(R.right, J.right, yt)), this;
                    }
                    /**
                     * Utility method that computes the new apprent center or vanishing point after applying insets.
                     * This is in pixels and with the top left being (0.0) and +y being downwards.
                     *
                     * @param width - the width
                     * @param height - the height
                     * @returns the point
                     */
                    getCenter(R, J) {
                      const yt = s.ad((this.left + R - this.right) / 2, 0, R), Tt = s.ad((this.top + J - this.bottom) / 2, 0, J);
                      return new s.P(yt, Tt);
                    }
                    equals(R) {
                      return this.top === R.top && this.bottom === R.bottom && this.left === R.left && this.right === R.right;
                    }
                    clone() {
                      return new aa(this.top, this.bottom, this.left, this.right);
                    }
                    /**
                     * Returns the current state as json, useful when you want to have a
                     * read-only representation of the inset.
                     *
                     * @returns state as json
                     */
                    toJSON() {
                      return {
                        top: this.top,
                        bottom: this.bottom,
                        left: this.left,
                        right: this.right
                      };
                    }
                  }
                  const ta = 85.051129;
                  class wa {
                    constructor(R, J, yt, Tt, Nt) {
                      this.tileSize = 512, this._renderWorldCopies = Nt === void 0 ? !0 : !!Nt, this._minZoom = R || 0, this._maxZoom = J || 22, this._minPitch = yt ?? 0, this._maxPitch = Tt ?? 60, this.setMaxBounds(), this.width = 0, this.height = 0, this._center = new s.N(0, 0), this._elevation = 0, this.zoom = 0, this.angle = 0, this._fov = 0.6435011087932844, this._pitch = 0, this._unmodified = !0, this._edgeInsets = new aa(), this._posMatrixCache = {}, this._alignedPosMatrixCache = {}, this._fogMatrixCache = {}, this.minElevationForCurrentTile = 0;
                    }
                    clone() {
                      const R = new wa(this._minZoom, this._maxZoom, this._minPitch, this.maxPitch, this._renderWorldCopies);
                      return R.apply(this), R;
                    }
                    apply(R) {
                      this.tileSize = R.tileSize, this.latRange = R.latRange, this.width = R.width, this.height = R.height, this._center = R._center, this._elevation = R._elevation, this.minElevationForCurrentTile = R.minElevationForCurrentTile, this.zoom = R.zoom, this.angle = R.angle, this._fov = R._fov, this._pitch = R._pitch, this._unmodified = R._unmodified, this._edgeInsets = R._edgeInsets.clone(), this._calcMatrices();
                    }
                    get minZoom() {
                      return this._minZoom;
                    }
                    set minZoom(R) {
                      this._minZoom !== R && (this._minZoom = R, this.zoom = Math.max(this.zoom, R));
                    }
                    get maxZoom() {
                      return this._maxZoom;
                    }
                    set maxZoom(R) {
                      this._maxZoom !== R && (this._maxZoom = R, this.zoom = Math.min(this.zoom, R));
                    }
                    get minPitch() {
                      return this._minPitch;
                    }
                    set minPitch(R) {
                      this._minPitch !== R && (this._minPitch = R, this.pitch = Math.max(this.pitch, R));
                    }
                    get maxPitch() {
                      return this._maxPitch;
                    }
                    set maxPitch(R) {
                      this._maxPitch !== R && (this._maxPitch = R, this.pitch = Math.min(this.pitch, R));
                    }
                    get renderWorldCopies() {
                      return this._renderWorldCopies;
                    }
                    set renderWorldCopies(R) {
                      R === void 0 ? R = !0 : R === null && (R = !1), this._renderWorldCopies = R;
                    }
                    get worldSize() {
                      return this.tileSize * this.scale;
                    }
                    get centerOffset() {
                      return this.centerPoint._sub(this.size._div(2));
                    }
                    get size() {
                      return new s.P(this.width, this.height);
                    }
                    get bearing() {
                      return -this.angle / Math.PI * 180;
                    }
                    set bearing(R) {
                      const J = -s.b3(R, -180, 180) * Math.PI / 180;
                      this.angle !== J && (this._unmodified = !1, this.angle = J, this._calcMatrices(), this.rotationMatrix = G(), q(this.rotationMatrix, this.rotationMatrix, this.angle));
                    }
                    get pitch() {
                      return this._pitch / Math.PI * 180;
                    }
                    set pitch(R) {
                      const J = s.ad(R, this.minPitch, this.maxPitch) / 180 * Math.PI;
                      this._pitch !== J && (this._unmodified = !1, this._pitch = J, this._calcMatrices());
                    }
                    get fov() {
                      return this._fov / Math.PI * 180;
                    }
                    set fov(R) {
                      R = Math.max(0.01, Math.min(60, R)), this._fov !== R && (this._unmodified = !1, this._fov = R / 180 * Math.PI, this._calcMatrices());
                    }
                    get zoom() {
                      return this._zoom;
                    }
                    set zoom(R) {
                      const J = Math.min(Math.max(R, this.minZoom), this.maxZoom);
                      this._zoom !== J && (this._unmodified = !1, this._zoom = J, this.tileZoom = Math.max(0, Math.floor(J)), this.scale = this.zoomScale(J), this._constrain(), this._calcMatrices());
                    }
                    get center() {
                      return this._center;
                    }
                    set center(R) {
                      R.lat === this._center.lat && R.lng === this._center.lng || (this._unmodified = !1, this._center = R, this._constrain(), this._calcMatrices());
                    }
                    /**
                     * Elevation at current center point, meters above sea level
                     */
                    get elevation() {
                      return this._elevation;
                    }
                    set elevation(R) {
                      R !== this._elevation && (this._elevation = R, this._constrain(), this._calcMatrices());
                    }
                    get padding() {
                      return this._edgeInsets.toJSON();
                    }
                    set padding(R) {
                      this._edgeInsets.equals(R) || (this._unmodified = !1, this._edgeInsets.interpolate(this._edgeInsets, R, 1), this._calcMatrices());
                    }
                    /**
                     * The center of the screen in pixels with the top-left corner being (0,0)
                     * and +y axis pointing downwards. This accounts for padding.
                     */
                    get centerPoint() {
                      return this._edgeInsets.getCenter(this.width, this.height);
                    }
                    /**
                     * Returns if the padding params match
                     *
                     * @param padding - the padding to check against
                     * @returns true if they are equal, false otherwise
                     */
                    isPaddingEqual(R) {
                      return this._edgeInsets.equals(R);
                    }
                    /**
                     * Helper method to update edge-insets in place
                     *
                     * @param start - the starting padding
                     * @param target - the target padding
                     * @param t - the step/weight
                     */
                    interpolatePadding(R, J, yt) {
                      this._unmodified = !1, this._edgeInsets.interpolate(R, J, yt), this._constrain(), this._calcMatrices();
                    }
                    /**
                     * Return a zoom level that will cover all tiles the transform
                     * @param options - the options
                     * @returns zoom level An integer zoom level at which all tiles will be visible.
                     */
                    coveringZoomLevel(R) {
                      const J = (R.roundZoom ? Math.round : Math.floor)(this.zoom + this.scaleZoom(this.tileSize / R.tileSize));
                      return Math.max(0, J);
                    }
                    /**
                     * Return any "wrapped" copies of a given tile coordinate that are visible
                     * in the current view.
                     */
                    getVisibleUnwrappedCoordinates(R) {
                      const J = [new s.b4(0, R)];
                      if (this._renderWorldCopies) {
                        const yt = this.pointCoordinate(new s.P(0, 0)), Tt = this.pointCoordinate(new s.P(this.width, 0)), Nt = this.pointCoordinate(new s.P(this.width, this.height)), be = this.pointCoordinate(new s.P(0, this.height)), Re = Math.floor(Math.min(yt.x, Tt.x, Nt.x, be.x)), je = Math.floor(Math.max(yt.x, Tt.x, Nt.x, be.x)), pr = 1;
                        for (let br = Re - pr; br <= je + pr; br++)
                          br !== 0 && J.push(new s.b4(br, R));
                      }
                      return J;
                    }
                    /**
                     * Return all coordinates that could cover this transform for a covering
                     * zoom level.
                     * @param options - the options
                     * @returns OverscaledTileIDs
                     */
                    coveringTiles(R) {
                      var J, yt;
                      let Tt = this.coveringZoomLevel(R);
                      const Nt = Tt;
                      if (R.minzoom !== void 0 && Tt < R.minzoom)
                        return [];
                      R.maxzoom !== void 0 && Tt > R.maxzoom && (Tt = R.maxzoom);
                      const be = this.pointCoordinate(this.getCameraPoint()), Re = s.Z.fromLngLat(this.center), je = Math.pow(2, Tt), pr = [je * be.x, je * be.y, 0], br = [je * Re.x, je * Re.y, 0], Ar = us.fromInvProjectionMatrix(this.invModelViewProjectionMatrix, this.worldSize, Tt);
                      let qr = R.minzoom || 0;
                      !R.terrain && this.pitch <= 60 && this._edgeInsets.top < 0.1 && (qr = Tt);
                      const vn = R.terrain ? 2 / Math.min(this.tileSize, R.tileSize) * this.tileSize : 3, bn = (Xn) => ({
                        aabb: new Ao([Xn * je, 0, 0], [(Xn + 1) * je, je, 0]),
                        zoom: 0,
                        x: 0,
                        y: 0,
                        wrap: Xn,
                        fullyVisible: !1
                      }), Rn = [], Gn = [], ii = Tt, oi = R.reparseOverscaled ? Nt : Tt;
                      if (this._renderWorldCopies)
                        for (let Xn = 1; Xn <= 3; Xn++)
                          Rn.push(bn(-Xn)), Rn.push(bn(Xn));
                      for (Rn.push(bn(0)); Rn.length > 0; ) {
                        const Xn = Rn.pop(), Ri = Xn.x, Ci = Xn.y;
                        let Oi = Xn.fullyVisible;
                        if (!Oi) {
                          const xa = Xn.aabb.intersects(Ar);
                          if (xa === 0)
                            continue;
                          Oi = xa === 2;
                        }
                        const pa = R.terrain ? pr : br, Sa = Xn.aabb.distanceX(pa), ao = Xn.aabb.distanceY(pa), Xa = Math.max(Math.abs(Sa), Math.abs(ao)), La = vn + (1 << ii - Xn.zoom) - 2;
                        if (Xn.zoom === ii || Xa > La && Xn.zoom >= qr) {
                          const xa = ii - Xn.zoom, Ya = pr[0] - 0.5 - (Ri << xa), Va = pr[1] - 0.5 - (Ci << xa);
                          Gn.push({
                            tileID: new s.S(Xn.zoom === ii ? oi : Xn.zoom, Xn.wrap, Xn.zoom, Ri, Ci),
                            distanceSq: Et([br[0] - 0.5 - Ri, br[1] - 0.5 - Ci]),
                            // this variable is currently not used, but may be important to reduce the amount of loaded tiles
                            tileDistanceToCamera: Math.sqrt(Ya * Ya + Va * Va)
                          });
                          continue;
                        }
                        for (let xa = 0; xa < 4; xa++) {
                          const Ya = (Ri << 1) + xa % 2, Va = (Ci << 1) + (xa >> 1), Wo = Xn.zoom + 1;
                          let ua = Xn.aabb.quadrant(xa);
                          if (R.terrain) {
                            const ca = new s.S(Wo, Xn.wrap, Wo, Ya, Va), Uo = R.terrain.getMinMaxElevation(ca), Zs = (J = Uo.minElevation) !== null && J !== void 0 ? J : this.elevation, Lo = (yt = Uo.maxElevation) !== null && yt !== void 0 ? yt : this.elevation;
                            ua = new Ao([ua.min[0], ua.min[1], Zs], [ua.max[0], ua.max[1], Lo]);
                          }
                          Rn.push({ aabb: ua, zoom: Wo, x: Ya, y: Va, wrap: Xn.wrap, fullyVisible: Oi });
                        }
                      }
                      return Gn.sort((Xn, Ri) => Xn.distanceSq - Ri.distanceSq).map((Xn) => Xn.tileID);
                    }
                    resize(R, J) {
                      this.width = R, this.height = J, this.pixelsToGLUnits = [2 / R, -2 / J], this._constrain(), this._calcMatrices();
                    }
                    get unmodified() {
                      return this._unmodified;
                    }
                    zoomScale(R) {
                      return Math.pow(2, R);
                    }
                    scaleZoom(R) {
                      return Math.log(R) / Math.LN2;
                    }
                    /**
                     * Convert from LngLat to world coordinates (Mercator coordinates scaled by 512)
                     * @param lnglat - the lngLat
                     * @returns Point
                     */
                    project(R) {
                      const J = s.ad(R.lat, -ta, ta);
                      return new s.P(s.O(R.lng) * this.worldSize, s.Q(J) * this.worldSize);
                    }
                    /**
                     * Convert from world coordinates ([0, 512],[0, 512]) to LngLat ([-180, 180], [-90, 90])
                     * @param point - world coordinate
                     * @returns LngLat
                     */
                    unproject(R) {
                      return new s.Z(R.x / this.worldSize, R.y / this.worldSize).toLngLat();
                    }
                    get point() {
                      return this.project(this.center);
                    }
                    /**
                     * get the camera position in LngLat and altitudes in meter
                     * @returns An object with lngLat & altitude.
                     */
                    getCameraPosition() {
                      const R = this.pointLocation(this.getCameraPoint()), J = Math.cos(this._pitch) * this.cameraToCenterDistance / this._pixelPerMeter;
                      return { lngLat: R, altitude: J + this.elevation };
                    }
                    /**
                     * This method works in combination with freezeElevation activated.
                     * freezeElevation is enabled during map-panning because during this the camera should sit in constant height.
                     * After panning finished, call this method to recalculate the zoomlevel for the current camera-height in current terrain.
                     * @param terrain - the terrain
                     */
                    recalculateZoom(R) {
                      const J = this.elevation, yt = Math.cos(this._pitch) * this.cameraToCenterDistance / this._pixelPerMeter, Tt = this.pointLocation(this.centerPoint, R), Nt = R.getElevationForLngLatZoom(Tt, this.tileZoom);
                      if (!(this.elevation - Nt))
                        return;
                      const Re = yt + J - Nt, br = Math.cos(this._pitch) * this.cameraToCenterDistance / Re / s.b5(1, Tt.lat) / this.tileSize, Ar = this.scaleZoom(br);
                      this._elevation = Nt, this._center = Tt, this.zoom = Ar;
                    }
                    setLocationAtPoint(R, J) {
                      const yt = this.pointCoordinate(J), Tt = this.pointCoordinate(this.centerPoint), Nt = this.locationCoordinate(R), be = new s.Z(Nt.x - (yt.x - Tt.x), Nt.y - (yt.y - Tt.y));
                      this.center = this.coordinateLocation(be), this._renderWorldCopies && (this.center = this.center.wrap());
                    }
                    /**
                     * Given a LngLat location, return the screen point that corresponds to it
                     * @param lnglat - location
                     * @param terrain - optional terrain
                     * @returns screen point
                     */
                    locationPoint(R, J) {
                      return J ? this.coordinatePoint(this.locationCoordinate(R), J.getElevationForLngLatZoom(R, this.tileZoom), this.pixelMatrix3D) : this.coordinatePoint(this.locationCoordinate(R));
                    }
                    /**
                     * Given a point on screen, return its lnglat
                     * @param p - screen point
                     * @param terrain - optional terrain
                     * @returns lnglat location
                     */
                    pointLocation(R, J) {
                      return this.coordinateLocation(this.pointCoordinate(R, J));
                    }
                    /**
                     * Given a geographical lnglat, return an unrounded
                     * coordinate that represents it at low zoom level.
                     * @param lnglat - the location
                     * @returns The mercator coordinate
                     */
                    locationCoordinate(R) {
                      return s.Z.fromLngLat(R);
                    }
                    /**
                     * Given a Coordinate, return its geographical position.
                     * @param coord - mercator coordinates
                     * @returns lng and lat
                     */
                    coordinateLocation(R) {
                      return R && R.toLngLat();
                    }
                    /**
                     * Given a Point, return its mercator coordinate.
                     * @param p - the point
                     * @param terrain - optional terrain
                     * @returns lnglat
                     */
                    pointCoordinate(R, J) {
                      if (J) {
                        const Rn = J.pointCoordinate(R);
                        if (Rn != null)
                          return Rn;
                      }
                      const yt = 0, Tt = [R.x, R.y, 0, 1], Nt = [R.x, R.y, 1, 1];
                      s.ag(Tt, Tt, this.pixelMatrixInverse), s.ag(Nt, Nt, this.pixelMatrixInverse);
                      const be = Tt[3], Re = Nt[3], je = Tt[0] / be, pr = Nt[0] / Re, br = Tt[1] / be, Ar = Nt[1] / Re, qr = Tt[2] / be, vn = Nt[2] / Re, bn = qr === vn ? 0 : (yt - qr) / (vn - qr);
                      return new s.Z(s.z.number(je, pr, bn) / this.worldSize, s.z.number(br, Ar, bn) / this.worldSize);
                    }
                    /**
                     * Given a coordinate, return the screen point that corresponds to it
                     * @param coord - the coordinates
                     * @param elevation - the elevation
                     * @param pixelMatrix - the pixel matrix
                     * @returns screen point
                     */
                    coordinatePoint(R, J = 0, yt = this.pixelMatrix) {
                      const Tt = [R.x * this.worldSize, R.y * this.worldSize, J, 1];
                      return s.ag(Tt, Tt, yt), new s.P(Tt[0] / Tt[3], Tt[1] / Tt[3]);
                    }
                    /**
                     * Returns the map's geographical bounds. When the bearing or pitch is non-zero, the visible region is not
                     * an axis-aligned rectangle, and the result is the smallest bounds that encompasses the visible region.
                     * @returns Returns a {@link LngLatBounds} object describing the map's geographical bounds.
                     */
                    getBounds() {
                      const R = Math.max(0, this.height / 2 - this.getHorizon());
                      return new De().extend(this.pointLocation(new s.P(0, R))).extend(this.pointLocation(new s.P(this.width, R))).extend(this.pointLocation(new s.P(this.width, this.height))).extend(this.pointLocation(new s.P(0, this.height)));
                    }
                    /**
                     * Returns the maximum geographical bounds the map is constrained to, or `null` if none set.
                     * @returns max bounds
                     */
                    getMaxBounds() {
                      return !this.latRange || this.latRange.length !== 2 || !this.lngRange || this.lngRange.length !== 2 ? null : new De([this.lngRange[0], this.latRange[0]], [this.lngRange[1], this.latRange[1]]);
                    }
                    /**
                     * Calculate pixel height of the visible horizon in relation to map-center (e.g. height/2),
                     * multiplied by a static factor to simulate the earth-radius.
                     * The calculated value is the horizontal line from the camera-height to sea-level.
                     * @returns Horizon above center in pixels.
                     */
                    getHorizon() {
                      return Math.tan(Math.PI / 2 - this._pitch) * this.cameraToCenterDistance * 0.85;
                    }
                    /**
                     * Sets or clears the map's geographical constraints.
                     * @param bounds - A {@link LngLatBounds} object describing the new geographic boundaries of the map.
                     */
                    setMaxBounds(R) {
                      R ? (this.lngRange = [R.getWest(), R.getEast()], this.latRange = [R.getSouth(), R.getNorth()], this._constrain()) : (this.lngRange = null, this.latRange = [-ta, ta]);
                    }
                    calculateTileMatrix(R) {
                      const J = R.canonical, yt = this.worldSize / this.zoomScale(J.z), Tt = J.x + Math.pow(2, J.z) * R.wrap, Nt = s.ao(new Float64Array(16));
                      return s.J(Nt, Nt, [Tt * yt, J.y * yt, 0]), s.K(Nt, Nt, [yt / s.X, yt / s.X, 1]), Nt;
                    }
                    /**
                     * Calculate the posMatrix that, given a tile coordinate, would be used to display the tile on a map.
                     * @param unwrappedTileID - the tile ID
                     */
                    calculatePosMatrix(R, J = !1) {
                      const yt = R.key, Tt = J ? this._alignedPosMatrixCache : this._posMatrixCache;
                      if (Tt[yt])
                        return Tt[yt];
                      const Nt = this.calculateTileMatrix(R);
                      return s.L(Nt, J ? this.alignedModelViewProjectionMatrix : this.modelViewProjectionMatrix, Nt), Tt[yt] = new Float32Array(Nt), Tt[yt];
                    }
                    /**
                     * Calculate the fogMatrix that, given a tile coordinate, would be used to calculate fog on the map.
                     * @param unwrappedTileID - the tile ID
                     * @private
                     */
                    calculateFogMatrix(R) {
                      const J = R.key, yt = this._fogMatrixCache;
                      if (yt[J])
                        return yt[J];
                      const Tt = this.calculateTileMatrix(R);
                      return s.L(Tt, this.fogMatrix, Tt), yt[J] = new Float32Array(Tt), yt[J];
                    }
                    customLayerMatrix() {
                      return this.mercatorMatrix.slice();
                    }
                    /**
                     * Get center lngLat and zoom to ensure that
                     * 1) everything beyond the bounds is excluded
                     * 2) a given lngLat is as near the center as possible
                     * Bounds are those set by maxBounds or North & South "Poles" and, if only 1 globe is displayed, antimeridian.
                     */
                    getConstrained(R, J) {
                      J = s.ad(+J, this.minZoom, this.maxZoom);
                      const yt = {
                        center: new s.N(R.lng, R.lat),
                        zoom: J
                      };
                      let Tt = this.lngRange;
                      if (!this._renderWorldCopies && Tt === null) {
                        const Xn = 179.9999999999;
                        Tt = [-Xn, Xn];
                      }
                      const Nt = this.tileSize * this.zoomScale(yt.zoom);
                      let be = 0, Re = Nt, je = 0, pr = Nt, br = 0, Ar = 0;
                      const { x: qr, y: vn } = this.size;
                      if (this.latRange) {
                        const Xn = this.latRange;
                        be = s.Q(Xn[1]) * Nt, Re = s.Q(Xn[0]) * Nt, Re - be < vn && (br = vn / (Re - be));
                      }
                      Tt && (je = s.b3(s.O(Tt[0]) * Nt, 0, Nt), pr = s.b3(s.O(Tt[1]) * Nt, 0, Nt), pr < je && (pr += Nt), pr - je < qr && (Ar = qr / (pr - je)));
                      const { x: bn, y: Rn } = this.project.call({ worldSize: Nt }, R);
                      let Gn, ii;
                      const oi = Math.max(Ar || 0, br || 0);
                      if (oi) {
                        const Xn = new s.P(Ar ? (pr + je) / 2 : bn, br ? (Re + be) / 2 : Rn);
                        return yt.center = this.unproject.call({ worldSize: Nt }, Xn).wrap(), yt.zoom += this.scaleZoom(oi), yt;
                      }
                      if (this.latRange) {
                        const Xn = vn / 2;
                        Rn - Xn < be && (ii = be + Xn), Rn + Xn > Re && (ii = Re - Xn);
                      }
                      if (Tt) {
                        const Xn = (je + pr) / 2;
                        let Ri = bn;
                        this._renderWorldCopies && (Ri = s.b3(bn, Xn - Nt / 2, Xn + Nt / 2));
                        const Ci = qr / 2;
                        Ri - Ci < je && (Gn = je + Ci), Ri + Ci > pr && (Gn = pr - Ci);
                      }
                      if (Gn !== void 0 || ii !== void 0) {
                        const Xn = new s.P(Gn ?? bn, ii ?? Rn);
                        yt.center = this.unproject.call({ worldSize: Nt }, Xn).wrap();
                      }
                      return yt;
                    }
                    _constrain() {
                      if (!this.center || !this.width || !this.height || this._constraining)
                        return;
                      this._constraining = !0;
                      const R = this._unmodified, { center: J, zoom: yt } = this.getConstrained(this.center, this.zoom);
                      this.center = J, this.zoom = yt, this._unmodified = R, this._constraining = !1;
                    }
                    _calcMatrices() {
                      if (!this.height)
                        return;
                      const R = this._fov / 2, J = this.centerOffset, yt = this.point.x, Tt = this.point.y;
                      this.cameraToCenterDistance = 0.5 / Math.tan(R) * this.height, this._pixelPerMeter = s.b5(1, this.center.lat) * this.worldSize;
                      let Nt = s.ao(new Float64Array(16));
                      s.K(Nt, Nt, [this.width / 2, -this.height / 2, 1]), s.J(Nt, Nt, [1, -1, 0]), this.labelPlaneMatrix = Nt, Nt = s.ao(new Float64Array(16)), s.K(Nt, Nt, [1, -1, 1]), s.J(Nt, Nt, [-1, -1, 0]), s.K(Nt, Nt, [2 / this.width, 2 / this.height, 1]), this.glCoordMatrix = Nt;
                      const be = this.cameraToCenterDistance + this._elevation * this._pixelPerMeter / Math.cos(this._pitch), Re = Math.min(this.elevation, this.minElevationForCurrentTile), je = be - Re * this._pixelPerMeter / Math.cos(this._pitch), pr = Re < 0 ? je : be, br = Math.PI / 2 + this._pitch, Ar = this._fov * (0.5 + J.y / this.height), qr = Math.sin(Ar) * pr / Math.sin(s.ad(Math.PI - br - Ar, 0.01, Math.PI - 0.01)), vn = this.getHorizon(), Rn = 2 * Math.atan(vn / this.cameraToCenterDistance) * (0.5 + J.y / (vn * 2)), Gn = Math.sin(Rn) * pr / Math.sin(s.ad(Math.PI - br - Rn, 0.01, Math.PI - 0.01)), ii = Math.min(qr, Gn);
                      this.farZ = (Math.cos(Math.PI / 2 - this._pitch) * ii + pr) * 1.01, this.nearZ = this.height / 50, Nt = new Float64Array(16), s.b6(Nt, this._fov, this.width / this.height, this.nearZ, this.farZ), Nt[8] = -J.x * 2 / this.width, Nt[9] = J.y * 2 / this.height, this.projectionMatrix = s.af(Nt), s.K(Nt, Nt, [1, -1, 1]), s.J(Nt, Nt, [0, 0, -this.cameraToCenterDistance]), s.b7(Nt, Nt, this._pitch), s.ae(Nt, Nt, this.angle), s.J(Nt, Nt, [-yt, -Tt, 0]), this.mercatorMatrix = s.K([], Nt, [this.worldSize, this.worldSize, this.worldSize]), s.K(Nt, Nt, [1, 1, this._pixelPerMeter]), this.pixelMatrix = s.L(new Float64Array(16), this.labelPlaneMatrix, Nt), s.J(Nt, Nt, [0, 0, -this.elevation]), this.modelViewProjectionMatrix = Nt, this.invModelViewProjectionMatrix = s.at([], Nt), this.fogMatrix = new Float64Array(16), s.b6(this.fogMatrix, this._fov, this.width / this.height, be, this.farZ), this.fogMatrix[8] = -J.x * 2 / this.width, this.fogMatrix[9] = J.y * 2 / this.height, s.K(this.fogMatrix, this.fogMatrix, [1, -1, 1]), s.J(this.fogMatrix, this.fogMatrix, [0, 0, -this.cameraToCenterDistance]), s.b7(this.fogMatrix, this.fogMatrix, this._pitch), s.ae(this.fogMatrix, this.fogMatrix, this.angle), s.J(this.fogMatrix, this.fogMatrix, [-yt, -Tt, 0]), s.K(this.fogMatrix, this.fogMatrix, [1, 1, this._pixelPerMeter]), s.J(this.fogMatrix, this.fogMatrix, [0, 0, -this.elevation]), this.pixelMatrix3D = s.L(new Float64Array(16), this.labelPlaneMatrix, Nt);
                      const oi = this.width % 2 / 2, Xn = this.height % 2 / 2, Ri = Math.cos(this.angle), Ci = Math.sin(this.angle), Oi = yt - Math.round(yt) + Ri * oi + Ci * Xn, pa = Tt - Math.round(Tt) + Ri * Xn + Ci * oi, Sa = new Float64Array(Nt);
                      if (s.J(Sa, Sa, [Oi > 0.5 ? Oi - 1 : Oi, pa > 0.5 ? pa - 1 : pa, 0]), this.alignedModelViewProjectionMatrix = Sa, Nt = s.at(new Float64Array(16), this.pixelMatrix), !Nt)
                        throw new Error("failed to invert matrix");
                      this.pixelMatrixInverse = Nt, this._posMatrixCache = {}, this._alignedPosMatrixCache = {}, this._fogMatrixCache = {};
                    }
                    maxPitchScaleFactor() {
                      if (!this.pixelMatrixInverse)
                        return 1;
                      const R = this.pointCoordinate(new s.P(0, 0)), J = [R.x * this.worldSize, R.y * this.worldSize, 0, 1];
                      return s.ag(J, J, this.pixelMatrix)[3] / this.cameraToCenterDistance;
                    }
                    /**
                     * The camera looks at the map from a 3D (lng, lat, altitude) location. Let's use `cameraLocation`
                     * as the name for the location under the camera and on the surface of the earth (lng, lat, 0).
                     * `cameraPoint` is the projected position of the `cameraLocation`.
                     *
                     * This point is useful to us because only fill-extrusions that are between `cameraPoint` and
                     * the query point on the surface of the earth can extend and intersect the query.
                     *
                     * When the map is not pitched the `cameraPoint` is equivalent to the center of the map because
                     * the camera is right above the center of the map.
                     */
                    getCameraPoint() {
                      const R = this._pitch, J = Math.tan(R) * (this.cameraToCenterDistance || 1);
                      return this.centerPoint.add(new s.P(0, J));
                    }
                    /**
                     * When the map is pitched, some of the 3D features that intersect a query will not intersect
                     * the query at the surface of the earth. Instead the feature may be closer and only intersect
                     * the query because it extrudes into the air.
                     * @param queryGeometry - For point queries, the line from the query point to the "camera point",
                     * for other geometries, the envelope of the query geometry and the "camera point"
                     * @returns a geometry that includes all of the original query as well as all possible ares of the
                     * screen where the *base* of a visible extrusion could be.
                     *
                     */
                    getCameraQueryGeometry(R) {
                      const J = this.getCameraPoint();
                      if (R.length === 1)
                        return [R[0], J];
                      {
                        let yt = J.x, Tt = J.y, Nt = J.x, be = J.y;
                        for (const Re of R)
                          yt = Math.min(yt, Re.x), Tt = Math.min(Tt, Re.y), Nt = Math.max(Nt, Re.x), be = Math.max(be, Re.y);
                        return [
                          new s.P(yt, Tt),
                          new s.P(Nt, Tt),
                          new s.P(Nt, be),
                          new s.P(yt, be),
                          new s.P(yt, Tt)
                        ];
                      }
                    }
                    /**
                     * Return the distance to the camera in clip space from a LngLat.
                     * This can be compared to the value from the depth buffer (terrain.depthAtPoint)
                     * to determine whether a point is occluded.
                     * @param lngLat - the point
                     * @param elevation - the point's elevation
                     * @returns depth value in clip space (between 0 and 1)
                     */
                    lngLatToCameraDepth(R, J) {
                      const yt = this.locationCoordinate(R), Tt = [yt.x * this.worldSize, yt.y * this.worldSize, J, 1];
                      return s.ag(Tt, Tt, this.modelViewProjectionMatrix), Tt[2] / Tt[3];
                    }
                  }
                  function il(Ot, R) {
                    let J = !1, yt = null, Tt = null, Nt;
                    const be = () => {
                      yt = null, J && (Ot.apply(Tt, Nt), yt = setTimeout(be, R), J = !1);
                    };
                    return (...Re) => (J = !0, Tt = this, Nt = Re, yt || be(), yt);
                  }
                  class al {
                    constructor(R) {
                      this._getCurrentHash = () => {
                        const J = window.location.hash.replace("#", "");
                        if (this._hashName) {
                          let yt;
                          return J.split("&").map((Tt) => Tt.split("=")).forEach((Tt) => {
                            Tt[0] === this._hashName && (yt = Tt);
                          }), (yt && yt[1] || "").split("/");
                        }
                        return J.split("/");
                      }, this._onHashChange = () => {
                        const J = this._getCurrentHash();
                        if (J.length >= 3 && !J.some((yt) => isNaN(yt))) {
                          const yt = this._map.dragRotate.isEnabled() && this._map.touchZoomRotate.isEnabled() ? +(J[3] || 0) : this._map.getBearing();
                          return this._map.jumpTo({
                            center: [+J[2], +J[1]],
                            zoom: +J[0],
                            bearing: yt,
                            pitch: +(J[4] || 0)
                          }), !0;
                        }
                        return !1;
                      }, this._updateHashUnthrottled = () => {
                        const J = window.location.href.replace(/(#.+)?$/, this.getHashString());
                        window.history.replaceState(window.history.state, null, J);
                      }, this._removeHash = () => {
                        const J = this._getCurrentHash();
                        if (J.length === 0)
                          return;
                        const yt = J.join("/");
                        let Tt = yt;
                        Tt.split("&").length > 0 && (Tt = Tt.split("&")[0]), this._hashName && (Tt = `${this._hashName}=${yt}`);
                        let Nt = window.location.hash.replace(Tt, "");
                        Nt.startsWith("#&") ? Nt = Nt.slice(0, 1) + Nt.slice(2) : Nt === "#" && (Nt = "");
                        let be = window.location.href.replace(/(#.+)?$/, Nt);
                        be = be.replace("&&", "&"), window.history.replaceState(window.history.state, null, be);
                      }, this._updateHash = il(this._updateHashUnthrottled, 300), this._hashName = R && encodeURIComponent(R);
                    }
                    /**
                     * Map element to listen for coordinate changes
                     *
                     * @param map - The map object
                     */
                    addTo(R) {
                      return this._map = R, addEventListener("hashchange", this._onHashChange, !1), this._map.on("moveend", this._updateHash), this;
                    }
                    /**
                     * Removes hash
                     */
                    remove() {
                      return removeEventListener("hashchange", this._onHashChange, !1), this._map.off("moveend", this._updateHash), clearTimeout(this._updateHash()), this._removeHash(), delete this._map, this;
                    }
                    getHashString(R) {
                      const J = this._map.getCenter(), yt = Math.round(this._map.getZoom() * 100) / 100, Tt = Math.ceil((yt * Math.LN2 + Math.log(512 / 360 / 0.5)) / Math.LN10), Nt = Math.pow(10, Tt), be = Math.round(J.lng * Nt) / Nt, Re = Math.round(J.lat * Nt) / Nt, je = this._map.getBearing(), pr = this._map.getPitch();
                      let br = "";
                      if (R ? br += `/${be}/${Re}/${yt}` : br += `${yt}/${Re}/${be}`, (je || pr) && (br += `/${Math.round(je * 10) / 10}`), pr && (br += `/${Math.round(pr)}`), this._hashName) {
                        const Ar = this._hashName;
                        let qr = !1;
                        const vn = window.location.hash.slice(1).split("&").map((bn) => {
                          const Rn = bn.split("=")[0];
                          return Rn === Ar ? (qr = !0, `${Rn}=${br}`) : bn;
                        }).filter((bn) => bn);
                        return qr || vn.push(`${Ar}=${br}`), `#${vn.join("&")}`;
                      }
                      return `#${br}`;
                    }
                  }
                  const as = {
                    linearity: 0.3,
                    easing: s.b8(0, 0, 0.3, 1)
                  }, So = s.e({
                    deceleration: 2500,
                    maxSpeed: 1400
                  }, as), _s = s.e({
                    deceleration: 20,
                    maxSpeed: 1400
                  }, as), Qi = s.e({
                    deceleration: 1e3,
                    maxSpeed: 360
                  }, as), jl = s.e({
                    deceleration: 1e3,
                    maxSpeed: 90
                  }, as);
                  class zu {
                    constructor(R) {
                      this._map = R, this.clear();
                    }
                    clear() {
                      this._inertiaBuffer = [];
                    }
                    record(R) {
                      this._drainInertiaBuffer(), this._inertiaBuffer.push({ time: d.now(), settings: R });
                    }
                    _drainInertiaBuffer() {
                      const R = this._inertiaBuffer, J = d.now(), yt = 160;
                      for (; R.length > 0 && J - R[0].time > yt; )
                        R.shift();
                    }
                    _onMoveEnd(R) {
                      if (this._drainInertiaBuffer(), this._inertiaBuffer.length < 2)
                        return;
                      const J = {
                        zoom: 0,
                        bearing: 0,
                        pitch: 0,
                        pan: new s.P(0, 0),
                        pinchAround: void 0,
                        around: void 0
                      };
                      for (const { settings: be } of this._inertiaBuffer)
                        J.zoom += be.zoomDelta || 0, J.bearing += be.bearingDelta || 0, J.pitch += be.pitchDelta || 0, be.panDelta && J.pan._add(be.panDelta), be.around && (J.around = be.around), be.pinchAround && (J.pinchAround = be.pinchAround);
                      const Tt = this._inertiaBuffer[this._inertiaBuffer.length - 1].time - this._inertiaBuffer[0].time, Nt = {};
                      if (J.pan.mag()) {
                        const be = Fu(J.pan.mag(), Tt, s.e({}, So, R || {}));
                        Nt.offset = J.pan.mult(be.amount / J.pan.mag()), Nt.center = this._map.transform.center, Jo(Nt, be);
                      }
                      if (J.zoom) {
                        const be = Fu(J.zoom, Tt, _s);
                        Nt.zoom = this._map.transform.zoom + be.amount, Jo(Nt, be);
                      }
                      if (J.bearing) {
                        const be = Fu(J.bearing, Tt, Qi);
                        Nt.bearing = this._map.transform.bearing + s.ad(be.amount, -179, 179), Jo(Nt, be);
                      }
                      if (J.pitch) {
                        const be = Fu(J.pitch, Tt, jl);
                        Nt.pitch = this._map.transform.pitch + be.amount, Jo(Nt, be);
                      }
                      if (Nt.zoom || Nt.bearing) {
                        const be = J.pinchAround === void 0 ? J.around : J.pinchAround;
                        Nt.around = be ? this._map.unproject(be) : this._map.getCenter();
                      }
                      return this.clear(), s.e(Nt, {
                        noMoveStart: !0
                      });
                    }
                  }
                  function Jo(Ot, R) {
                    (!Ot.duration || Ot.duration < R.duration) && (Ot.duration = R.duration, Ot.easing = R.easing);
                  }
                  function Fu(Ot, R, J) {
                    const { maxSpeed: yt, linearity: Tt, deceleration: Nt } = J, be = s.ad(Ot * Tt / (R / 1e3), -yt, yt), Re = Math.abs(be) / (Nt * Tt);
                    return {
                      easing: J.easing,
                      duration: Re * 1e3,
                      amount: be * (Re / 2)
                    };
                  }
                  class qa extends s.k {
                    /**
                     * Prevents subsequent default processing of the event by the map.
                     *
                     * Calling this method will prevent the following default map behaviors:
                     *
                     *   * On `mousedown` events, the behavior of {@link DragPanHandler}
                     *   * On `mousedown` events, the behavior of {@link DragRotateHandler}
                     *   * On `mousedown` events, the behavior of {@link BoxZoomHandler}
                     *   * On `dblclick` events, the behavior of {@link DoubleClickZoomHandler}
                     *
                     */
                    preventDefault() {
                      this._defaultPrevented = !0;
                    }
                    /**
                     * `true` if `preventDefault` has been called.
                     */
                    get defaultPrevented() {
                      return this._defaultPrevented;
                    }
                    constructor(R, J, yt, Tt = {}) {
                      const Nt = h.mousePos(J.getCanvas(), yt), be = J.unproject(Nt);
                      super(R, s.e({ point: Nt, lngLat: be, originalEvent: yt }, Tt)), this._defaultPrevented = !1, this.target = J;
                    }
                  }
                  class Yo extends s.k {
                    /**
                     * Prevents subsequent default processing of the event by the map.
                     *
                     * Calling this method will prevent the following default map behaviors:
                     *
                     *   * On `touchstart` events, the behavior of {@link DragPanHandler}
                     *   * On `touchstart` events, the behavior of {@link TwoFingersTouchZoomRotateHandler}
                     *
                     */
                    preventDefault() {
                      this._defaultPrevented = !0;
                    }
                    /**
                     * `true` if `preventDefault` has been called.
                     */
                    get defaultPrevented() {
                      return this._defaultPrevented;
                    }
                    constructor(R, J, yt) {
                      const Tt = R === "touchend" ? yt.changedTouches : yt.touches, Nt = h.touchPos(J.getCanvasContainer(), Tt), be = Nt.map((pr) => J.unproject(pr)), Re = Nt.reduce((pr, br, Ar, qr) => pr.add(br.div(qr.length)), new s.P(0, 0)), je = J.unproject(Re);
                      super(R, { points: Nt, point: Re, lngLats: be, lngLat: je, originalEvent: yt }), this._defaultPrevented = !1;
                    }
                  }
                  class Rh extends s.k {
                    /**
                     * Prevents subsequent default processing of the event by the map.
                     *
                     * Calling this method will prevent the behavior of {@link ScrollZoomHandler}.
                     */
                    preventDefault() {
                      this._defaultPrevented = !0;
                    }
                    /**
                     * `true` if `preventDefault` has been called.
                     */
                    get defaultPrevented() {
                      return this._defaultPrevented;
                    }
                    /** */
                    constructor(R, J, yt) {
                      super(R, { originalEvent: yt }), this._defaultPrevented = !1;
                    }
                  }
                  class Hv {
                    constructor(R, J) {
                      this._map = R, this._clickTolerance = J.clickTolerance;
                    }
                    reset() {
                      delete this._mousedownPos;
                    }
                    wheel(R) {
                      return this._firePreventable(new Rh(R.type, this._map, R));
                    }
                    mousedown(R, J) {
                      return this._mousedownPos = J, this._firePreventable(new qa(R.type, this._map, R));
                    }
                    mouseup(R) {
                      this._map.fire(new qa(R.type, this._map, R));
                    }
                    click(R, J) {
                      this._mousedownPos && this._mousedownPos.dist(J) >= this._clickTolerance || this._map.fire(new qa(R.type, this._map, R));
                    }
                    dblclick(R) {
                      return this._firePreventable(new qa(R.type, this._map, R));
                    }
                    mouseover(R) {
                      this._map.fire(new qa(R.type, this._map, R));
                    }
                    mouseout(R) {
                      this._map.fire(new qa(R.type, this._map, R));
                    }
                    touchstart(R) {
                      return this._firePreventable(new Yo(R.type, this._map, R));
                    }
                    touchmove(R) {
                      this._map.fire(new Yo(R.type, this._map, R));
                    }
                    touchend(R) {
                      this._map.fire(new Yo(R.type, this._map, R));
                    }
                    touchcancel(R) {
                      this._map.fire(new Yo(R.type, this._map, R));
                    }
                    _firePreventable(R) {
                      if (this._map.fire(R), R.defaultPrevented)
                        return {};
                    }
                    isEnabled() {
                      return !0;
                    }
                    isActive() {
                      return !1;
                    }
                    enable() {
                    }
                    disable() {
                    }
                  }
                  class oh {
                    constructor(R) {
                      this._map = R;
                    }
                    reset() {
                      this._delayContextMenu = !1, this._ignoreContextMenu = !0, delete this._contextMenuEvent;
                    }
                    mousemove(R) {
                      this._map.fire(new qa(R.type, this._map, R));
                    }
                    mousedown() {
                      this._delayContextMenu = !0, this._ignoreContextMenu = !1;
                    }
                    mouseup() {
                      this._delayContextMenu = !1, this._contextMenuEvent && (this._map.fire(new qa("contextmenu", this._map, this._contextMenuEvent)), delete this._contextMenuEvent);
                    }
                    contextmenu(R) {
                      this._delayContextMenu ? this._contextMenuEvent = R : this._ignoreContextMenu || this._map.fire(new qa(R.type, this._map, R)), this._map.listens("contextmenu") && R.preventDefault();
                    }
                    isEnabled() {
                      return !0;
                    }
                    isActive() {
                      return !1;
                    }
                    enable() {
                    }
                    disable() {
                    }
                  }
                  class Dh {
                    constructor(R) {
                      this._map = R;
                    }
                    get transform() {
                      return this._map._requestedCameraState || this._map.transform;
                    }
                    get center() {
                      return { lng: this.transform.center.lng, lat: this.transform.center.lat };
                    }
                    get zoom() {
                      return this.transform.zoom;
                    }
                    get pitch() {
                      return this.transform.pitch;
                    }
                    get bearing() {
                      return this.transform.bearing;
                    }
                    unproject(R) {
                      return this.transform.pointLocation(s.P.convert(R), this._map.terrain);
                    }
                  }
                  class Lf {
                    /** @internal */
                    constructor(R, J) {
                      this._map = R, this._tr = new Dh(R), this._el = R.getCanvasContainer(), this._container = R.getContainer(), this._clickTolerance = J.clickTolerance || 1;
                    }
                    /**
                     * Returns a Boolean indicating whether the "box zoom" interaction is enabled.
                     *
                     * @returns `true` if the "box zoom" interaction is enabled.
                     */
                    isEnabled() {
                      return !!this._enabled;
                    }
                    /**
                     * Returns a Boolean indicating whether the "box zoom" interaction is active, i.e. currently being used.
                     *
                     * @returns `true` if the "box zoom" interaction is active.
                     */
                    isActive() {
                      return !!this._active;
                    }
                    /**
                     * Enables the "box zoom" interaction.
                     *
                     * @example
                     * ```ts
                     * map.boxZoom.enable();
                     * ```
                     */
                    enable() {
                      this.isEnabled() || (this._enabled = !0);
                    }
                    /**
                     * Disables the "box zoom" interaction.
                     *
                     * @example
                     * ```ts
                     * map.boxZoom.disable();
                     * ```
                     */
                    disable() {
                      this.isEnabled() && (this._enabled = !1);
                    }
                    mousedown(R, J) {
                      this.isEnabled() && R.shiftKey && R.button === 0 && (h.disableDrag(), this._startPos = this._lastPos = J, this._active = !0);
                    }
                    mousemoveWindow(R, J) {
                      if (!this._active)
                        return;
                      const yt = J;
                      if (this._lastPos.equals(yt) || !this._box && yt.dist(this._startPos) < this._clickTolerance)
                        return;
                      const Tt = this._startPos;
                      this._lastPos = yt, this._box || (this._box = h.create("div", "maplibregl-boxzoom", this._container), this._container.classList.add("maplibregl-crosshair"), this._fireEvent("boxzoomstart", R));
                      const Nt = Math.min(Tt.x, yt.x), be = Math.max(Tt.x, yt.x), Re = Math.min(Tt.y, yt.y), je = Math.max(Tt.y, yt.y);
                      h.setTransform(this._box, `translate(${Nt}px,${Re}px)`), this._box.style.width = `${be - Nt}px`, this._box.style.height = `${je - Re}px`;
                    }
                    mouseupWindow(R, J) {
                      if (!this._active || R.button !== 0)
                        return;
                      const yt = this._startPos, Tt = J;
                      if (this.reset(), h.suppressClick(), yt.x === Tt.x && yt.y === Tt.y)
                        this._fireEvent("boxzoomcancel", R);
                      else
                        return this._map.fire(new s.k("boxzoomend", { originalEvent: R })), {
                          cameraAnimation: (Nt) => Nt.fitScreenCoordinates(yt, Tt, this._tr.bearing, { linear: !0 })
                        };
                    }
                    keydown(R) {
                      this._active && R.keyCode === 27 && (this.reset(), this._fireEvent("boxzoomcancel", R));
                    }
                    reset() {
                      this._active = !1, this._container.classList.remove("maplibregl-crosshair"), this._box && (h.remove(this._box), this._box = null), h.enableDrag(), delete this._startPos, delete this._lastPos;
                    }
                    _fireEvent(R, J) {
                      return this._map.fire(new s.k(R, { originalEvent: J }));
                    }
                  }
                  function sh(Ot, R) {
                    if (Ot.length !== R.length)
                      throw new Error(`The number of touches and points are not equal - touches ${Ot.length}, points ${R.length}`);
                    const J = {};
                    for (let yt = 0; yt < Ot.length; yt++)
                      J[Ot[yt].identifier] = R[yt];
                    return J;
                  }
                  function fd(Ot) {
                    const R = new s.P(0, 0);
                    for (const J of Ot)
                      R._add(J);
                    return R.div(Ot.length);
                  }
                  const Os = 500, Ko = 500, lh = 30;
                  class zd {
                    constructor(R) {
                      this.reset(), this.numTouches = R.numTouches;
                    }
                    reset() {
                      delete this.centroid, delete this.startTime, delete this.touches, this.aborted = !1;
                    }
                    touchstart(R, J, yt) {
                      (this.centroid || yt.length > this.numTouches) && (this.aborted = !0), !this.aborted && (this.startTime === void 0 && (this.startTime = R.timeStamp), yt.length === this.numTouches && (this.centroid = fd(J), this.touches = sh(yt, J)));
                    }
                    touchmove(R, J, yt) {
                      if (this.aborted || !this.centroid)
                        return;
                      const Tt = sh(yt, J);
                      for (const Nt in this.touches) {
                        const be = this.touches[Nt], Re = Tt[Nt];
                        (!Re || Re.dist(be) > lh) && (this.aborted = !0);
                      }
                    }
                    touchend(R, J, yt) {
                      if ((!this.centroid || R.timeStamp - this.startTime > Ko) && (this.aborted = !0), yt.length === 0) {
                        const Tt = !this.aborted && this.centroid;
                        if (this.reset(), Tt)
                          return Tt;
                      }
                    }
                  }
                  class uh {
                    constructor(R) {
                      this.singleTap = new zd(R), this.numTaps = R.numTaps, this.reset();
                    }
                    reset() {
                      this.lastTime = 1 / 0, delete this.lastTap, this.count = 0, this.singleTap.reset();
                    }
                    touchstart(R, J, yt) {
                      this.singleTap.touchstart(R, J, yt);
                    }
                    touchmove(R, J, yt) {
                      this.singleTap.touchmove(R, J, yt);
                    }
                    touchend(R, J, yt) {
                      const Tt = this.singleTap.touchend(R, J, yt);
                      if (Tt) {
                        const Nt = R.timeStamp - this.lastTime < Os, be = !this.lastTap || this.lastTap.dist(Tt) < lh;
                        if ((!Nt || !be) && this.reset(), this.count++, this.lastTime = R.timeStamp, this.lastTap = Tt, this.count === this.numTaps)
                          return this.reset(), Tt;
                      }
                    }
                  }
                  class Fd {
                    constructor(R) {
                      this._tr = new Dh(R), this._zoomIn = new uh({
                        numTouches: 1,
                        numTaps: 2
                      }), this._zoomOut = new uh({
                        numTouches: 2,
                        numTaps: 1
                      }), this.reset();
                    }
                    reset() {
                      this._active = !1, this._zoomIn.reset(), this._zoomOut.reset();
                    }
                    touchstart(R, J, yt) {
                      this._zoomIn.touchstart(R, J, yt), this._zoomOut.touchstart(R, J, yt);
                    }
                    touchmove(R, J, yt) {
                      this._zoomIn.touchmove(R, J, yt), this._zoomOut.touchmove(R, J, yt);
                    }
                    touchend(R, J, yt) {
                      const Tt = this._zoomIn.touchend(R, J, yt), Nt = this._zoomOut.touchend(R, J, yt), be = this._tr;
                      if (Tt)
                        return this._active = !0, R.preventDefault(), setTimeout(() => this.reset(), 0), {
                          cameraAnimation: (Re) => Re.easeTo({
                            duration: 300,
                            zoom: be.zoom + 1,
                            around: be.unproject(Tt)
                          }, { originalEvent: R })
                        };
                      if (Nt)
                        return this._active = !0, R.preventDefault(), setTimeout(() => this.reset(), 0), {
                          cameraAnimation: (Re) => Re.easeTo({
                            duration: 300,
                            zoom: be.zoom - 1,
                            around: be.unproject(Nt)
                          }, { originalEvent: R })
                        };
                    }
                    touchcancel() {
                      this.reset();
                    }
                    enable() {
                      this._enabled = !0;
                    }
                    disable() {
                      this._enabled = !1, this.reset();
                    }
                    isEnabled() {
                      return this._enabled;
                    }
                    isActive() {
                      return this._active;
                    }
                  }
                  class gu {
                    constructor(R) {
                      this._enabled = !!R.enable, this._moveStateManager = R.moveStateManager, this._clickTolerance = R.clickTolerance || 1, this._moveFunction = R.move, this._activateOnStart = !!R.activateOnStart, R.assignEvents(this), this.reset();
                    }
                    reset(R) {
                      this._active = !1, this._moved = !1, delete this._lastPoint, this._moveStateManager.endMove(R);
                    }
                    _move(...R) {
                      const J = this._moveFunction(...R);
                      if (J.bearingDelta || J.pitchDelta || J.around || J.panDelta)
                        return this._active = !0, J;
                    }
                    dragStart(R, J) {
                      !this.isEnabled() || this._lastPoint || this._moveStateManager.isValidStartEvent(R) && (this._moveStateManager.startMove(R), this._lastPoint = J.length ? J[0] : J, this._activateOnStart && this._lastPoint && (this._active = !0));
                    }
                    dragMove(R, J) {
                      if (!this.isEnabled())
                        return;
                      const yt = this._lastPoint;
                      if (!yt)
                        return;
                      if (R.preventDefault(), !this._moveStateManager.isValidMoveEvent(R)) {
                        this.reset(R);
                        return;
                      }
                      const Tt = J.length ? J[0] : J;
                      if (!(!this._moved && Tt.dist(yt) < this._clickTolerance))
                        return this._moved = !0, this._lastPoint = Tt, this._move(yt, Tt);
                    }
                    dragEnd(R) {
                      !this.isEnabled() || !this._lastPoint || this._moveStateManager.isValidEndEvent(R) && (this._moved && h.suppressClick(), this.reset(R));
                    }
                    enable() {
                      this._enabled = !0;
                    }
                    disable() {
                      this._enabled = !1, this.reset();
                    }
                    isEnabled() {
                      return this._enabled;
                    }
                    isActive() {
                      return this._active;
                    }
                    getClickTolerance() {
                      return this._clickTolerance;
                    }
                  }
                  const yu = 0, ol = 2, ch = {
                    [yu]: 1,
                    [ol]: 2
                  };
                  function ka(Ot, R) {
                    const J = ch[R];
                    return Ot.buttons === void 0 || (Ot.buttons & J) !== J;
                  }
                  class Ua {
                    constructor(R) {
                      this._correctEvent = R.checkCorrectEvent;
                    }
                    startMove(R) {
                      const J = h.mouseButton(R);
                      this._eventButton = J;
                    }
                    endMove(R) {
                      delete this._eventButton;
                    }
                    isValidStartEvent(R) {
                      return this._correctEvent(R);
                    }
                    isValidMoveEvent(R) {
                      return !ka(R, this._eventButton);
                    }
                    isValidEndEvent(R) {
                      return h.mouseButton(R) === this._eventButton;
                    }
                  }
                  class kh {
                    constructor() {
                      this._firstTouch = void 0;
                    }
                    _isOneFingerTouch(R) {
                      return R.targetTouches.length === 1;
                    }
                    _isSameTouchEvent(R) {
                      return R.targetTouches[0].identifier === this._firstTouch;
                    }
                    startMove(R) {
                      const J = R.targetTouches[0].identifier;
                      this._firstTouch = J;
                    }
                    endMove(R) {
                      delete this._firstTouch;
                    }
                    isValidStartEvent(R) {
                      return this._isOneFingerTouch(R);
                    }
                    isValidMoveEvent(R) {
                      return this._isOneFingerTouch(R) && this._isSameTouchEvent(R);
                    }
                    isValidEndEvent(R) {
                      return this._isOneFingerTouch(R) && this._isSameTouchEvent(R);
                    }
                  }
                  const ac = 0, fh = 2, Ws = (Ot) => {
                    Ot.mousedown = Ot.dragStart, Ot.mousemoveWindow = Ot.dragMove, Ot.mouseup = Ot.dragEnd, Ot.contextmenu = (R) => {
                      R.preventDefault();
                    };
                  }, rf = ({ enable: Ot, clickTolerance: R }) => {
                    const J = new Ua({
                      checkCorrectEvent: (yt) => h.mouseButton(yt) === ac && !yt.ctrlKey
                    });
                    return new gu({
                      clickTolerance: R,
                      move: (yt, Tt) => ({ around: Tt, panDelta: Tt.sub(yt) }),
                      activateOnStart: !0,
                      moveStateManager: J,
                      enable: Ot,
                      assignEvents: Ws
                    });
                  }, oc = ({ enable: Ot, clickTolerance: R, bearingDegreesPerPixelMoved: J = 0.8 }) => {
                    const yt = new Ua({
                      checkCorrectEvent: (Tt) => h.mouseButton(Tt) === ac && Tt.ctrlKey || h.mouseButton(Tt) === fh
                    });
                    return new gu({
                      clickTolerance: R,
                      move: (Tt, Nt) => ({ bearingDelta: (Nt.x - Tt.x) * J }),
                      // prevent browser context menu when necessary; we don't allow it with rotation
                      // because we can't discern rotation gesture start from contextmenu on Mac
                      moveStateManager: yt,
                      enable: Ot,
                      assignEvents: Ws
                    });
                  }, ev = ({ enable: Ot, clickTolerance: R, pitchDegreesPerPixelMoved: J = -0.5 }) => {
                    const yt = new Ua({
                      checkCorrectEvent: (Tt) => h.mouseButton(Tt) === ac && Tt.ctrlKey || h.mouseButton(Tt) === fh
                    });
                    return new gu({
                      clickTolerance: R,
                      move: (Tt, Nt) => ({ pitchDelta: (Nt.y - Tt.y) * J }),
                      // prevent browser context menu when necessary; we don't allow it with rotation
                      // because we can't discern rotation gesture start from contextmenu on Mac
                      moveStateManager: yt,
                      enable: Ot,
                      assignEvents: Ws
                    });
                  };
                  class Lc {
                    constructor(R, J) {
                      this._clickTolerance = R.clickTolerance || 1, this._map = J, this.reset();
                    }
                    reset() {
                      this._active = !1, this._touches = {}, this._sum = new s.P(0, 0);
                    }
                    _shouldBePrevented(R) {
                      const J = this._map.cooperativeGestures.isEnabled() ? 2 : 1;
                      return R < J;
                    }
                    touchstart(R, J, yt) {
                      return this._calculateTransform(R, J, yt);
                    }
                    touchmove(R, J, yt) {
                      if (this._active) {
                        if (this._shouldBePrevented(yt.length)) {
                          this._map.cooperativeGestures.notifyGestureBlocked("touch_pan", R);
                          return;
                        }
                        return R.preventDefault(), this._calculateTransform(R, J, yt);
                      }
                    }
                    touchend(R, J, yt) {
                      this._calculateTransform(R, J, yt), this._active && this._shouldBePrevented(yt.length) && this.reset();
                    }
                    touchcancel() {
                      this.reset();
                    }
                    _calculateTransform(R, J, yt) {
                      yt.length > 0 && (this._active = !0);
                      const Tt = sh(yt, J), Nt = new s.P(0, 0), be = new s.P(0, 0);
                      let Re = 0;
                      for (const br in Tt) {
                        const Ar = Tt[br], qr = this._touches[br];
                        qr && (Nt._add(Ar), be._add(Ar.sub(qr)), Re++, Tt[br] = Ar);
                      }
                      if (this._touches = Tt, this._shouldBePrevented(Re) || !be.mag())
                        return;
                      const je = be.div(Re);
                      return this._sum._add(je), this._sum.mag() < this._clickTolerance ? void 0 : {
                        around: Nt.div(Re),
                        panDelta: je
                      };
                    }
                    enable() {
                      this._enabled = !0;
                    }
                    disable() {
                      this._enabled = !1, this.reset();
                    }
                    isEnabled() {
                      return this._enabled;
                    }
                    isActive() {
                      return this._active;
                    }
                  }
                  class Od {
                    /** @internal */
                    constructor() {
                      this.reset();
                    }
                    reset() {
                      this._active = !1, delete this._firstTwoTouches;
                    }
                    touchstart(R, J, yt) {
                      this._firstTwoTouches || yt.length < 2 || (this._firstTwoTouches = [
                        yt[0].identifier,
                        yt[1].identifier
                      ], this._start([J[0], J[1]]));
                    }
                    touchmove(R, J, yt) {
                      if (!this._firstTwoTouches)
                        return;
                      R.preventDefault();
                      const [Tt, Nt] = this._firstTwoTouches, be = Pf(yt, J, Tt), Re = Pf(yt, J, Nt);
                      if (!be || !Re)
                        return;
                      const je = this._aroundCenter ? null : be.add(Re).div(2);
                      return this._move([be, Re], je, R);
                    }
                    touchend(R, J, yt) {
                      if (!this._firstTwoTouches)
                        return;
                      const [Tt, Nt] = this._firstTwoTouches, be = Pf(yt, J, Tt), Re = Pf(yt, J, Nt);
                      be && Re || (this._active && h.suppressClick(), this.reset());
                    }
                    touchcancel() {
                      this.reset();
                    }
                    /**
                     * Enables the "drag to pitch" interaction.
                     *
                     * @example
                     * ```ts
                     * map.touchPitch.enable();
                     * ```
                     */
                    enable(R) {
                      this._enabled = !0, this._aroundCenter = !!R && R.around === "center";
                    }
                    /**
                     * Disables the "drag to pitch" interaction.
                     *
                     * @example
                     * ```ts
                     * map.touchPitch.disable();
                     * ```
                     */
                    disable() {
                      this._enabled = !1, this.reset();
                    }
                    /**
                     * Returns a Boolean indicating whether the "drag to pitch" interaction is enabled.
                     *
                     * @returns  `true` if the "drag to pitch" interaction is enabled.
                     */
                    isEnabled() {
                      return !!this._enabled;
                    }
                    /**
                     * Returns a Boolean indicating whether the "drag to pitch" interaction is active, i.e. currently being used.
                     *
                     * @returns `true` if the "drag to pitch" interaction is active.
                     */
                    isActive() {
                      return !!this._active;
                    }
                  }
                  function Pf(Ot, R, J) {
                    for (let yt = 0; yt < Ot.length; yt++)
                      if (Ot[yt].identifier === J)
                        return R[yt];
                  }
                  const Ts = 0.1;
                  function Ls(Ot, R) {
                    return Math.log(Ot / R) / Math.LN2;
                  }
                  class sc extends Od {
                    reset() {
                      super.reset(), delete this._distance, delete this._startDistance;
                    }
                    _start(R) {
                      this._startDistance = this._distance = R[0].dist(R[1]);
                    }
                    _move(R, J) {
                      const yt = this._distance;
                      if (this._distance = R[0].dist(R[1]), !(!this._active && Math.abs(Ls(this._distance, this._startDistance)) < Ts))
                        return this._active = !0, {
                          zoomDelta: Ls(this._distance, yt),
                          pinchAround: J
                        };
                    }
                  }
                  const gv = 25;
                  function zh(Ot, R) {
                    return Ot.angleWith(R) * 180 / Math.PI;
                  }
                  class Bd extends Od {
                    reset() {
                      super.reset(), delete this._minDiameter, delete this._startVector, delete this._vector;
                    }
                    _start(R) {
                      this._startVector = this._vector = R[0].sub(R[1]), this._minDiameter = R[0].dist(R[1]);
                    }
                    _move(R, J, yt) {
                      const Tt = this._vector;
                      if (this._vector = R[0].sub(R[1]), !(!this._active && this._isBelowThreshold(this._vector)))
                        return this._active = !0, {
                          bearingDelta: zh(this._vector, Tt),
                          pinchAround: J
                        };
                    }
                    _isBelowThreshold(R) {
                      this._minDiameter = Math.min(this._minDiameter, R.mag());
                      const J = Math.PI * this._minDiameter, yt = gv / J * 360, Tt = zh(R, this._startVector);
                      return Math.abs(Tt) < yt;
                    }
                  }
                  function hd(Ot) {
                    return Math.abs(Ot.y) > Math.abs(Ot.x);
                  }
                  const Ps = 100;
                  class mt extends Od {
                    constructor(R) {
                      super(), this._currentTouchCount = 0, this._map = R;
                    }
                    reset() {
                      super.reset(), this._valid = void 0, delete this._firstMove, delete this._lastPoints;
                    }
                    touchstart(R, J, yt) {
                      super.touchstart(R, J, yt), this._currentTouchCount = yt.length;
                    }
                    _start(R) {
                      this._lastPoints = R, hd(R[0].sub(R[1])) && (this._valid = !1);
                    }
                    _move(R, J, yt) {
                      if (this._map.cooperativeGestures.isEnabled() && this._currentTouchCount < 3)
                        return;
                      const Tt = R[0].sub(this._lastPoints[0]), Nt = R[1].sub(this._lastPoints[1]);
                      return this._valid = this.gestureBeginsVertically(Tt, Nt, yt.timeStamp), this._valid ? (this._lastPoints = R, this._active = !0, {
                        pitchDelta: (Tt.y + Nt.y) / 2 * -0.5
                      }) : void 0;
                    }
                    gestureBeginsVertically(R, J, yt) {
                      if (this._valid !== void 0)
                        return this._valid;
                      const Tt = 2, Nt = R.mag() >= Tt, be = J.mag() >= Tt;
                      if (!Nt && !be)
                        return;
                      if (!Nt || !be)
                        return this._firstMove === void 0 && (this._firstMove = yt), yt - this._firstMove < Ps ? void 0 : !1;
                      const Re = R.y > 0 == J.y > 0;
                      return hd(R) && hd(J) && Re;
                    }
                  }
                  const tt = {
                    panStep: 100,
                    bearingStep: 15,
                    pitchStep: 10
                  };
                  class bt {
                    /** @internal */
                    constructor(R) {
                      this._tr = new Dh(R);
                      const J = tt;
                      this._panStep = J.panStep, this._bearingStep = J.bearingStep, this._pitchStep = J.pitchStep, this._rotationDisabled = !1;
                    }
                    reset() {
                      this._active = !1;
                    }
                    keydown(R) {
                      if (R.altKey || R.ctrlKey || R.metaKey)
                        return;
                      let J = 0, yt = 0, Tt = 0, Nt = 0, be = 0;
                      switch (R.keyCode) {
                        case 61:
                        case 107:
                        case 171:
                        case 187:
                          J = 1;
                          break;
                        case 189:
                        case 109:
                        case 173:
                          J = -1;
                          break;
                        case 37:
                          R.shiftKey ? yt = -1 : (R.preventDefault(), Nt = -1);
                          break;
                        case 39:
                          R.shiftKey ? yt = 1 : (R.preventDefault(), Nt = 1);
                          break;
                        case 38:
                          R.shiftKey ? Tt = 1 : (R.preventDefault(), be = -1);
                          break;
                        case 40:
                          R.shiftKey ? Tt = -1 : (R.preventDefault(), be = 1);
                          break;
                        default:
                          return;
                      }
                      return this._rotationDisabled && (yt = 0, Tt = 0), {
                        cameraAnimation: (Re) => {
                          const je = this._tr;
                          Re.easeTo({
                            duration: 300,
                            easeId: "keyboardHandler",
                            easing: it,
                            zoom: J ? Math.round(je.zoom) + J * (R.shiftKey ? 2 : 1) : je.zoom,
                            bearing: je.bearing + yt * this._bearingStep,
                            pitch: je.pitch + Tt * this._pitchStep,
                            offset: [-Nt * this._panStep, -be * this._panStep],
                            center: je.center
                          }, { originalEvent: R });
                        }
                      };
                    }
                    /**
                     * Enables the "keyboard rotate and zoom" interaction.
                     *
                     * @example
                     * ```ts
                     * map.keyboard.enable();
                     * ```
                     */
                    enable() {
                      this._enabled = !0;
                    }
                    /**
                     * Disables the "keyboard rotate and zoom" interaction.
                     *
                     * @example
                     * ```ts
                     * map.keyboard.disable();
                     * ```
                     */
                    disable() {
                      this._enabled = !1, this.reset();
                    }
                    /**
                     * Returns a Boolean indicating whether the "keyboard rotate and zoom"
                     * interaction is enabled.
                     *
                     * @returns `true` if the "keyboard rotate and zoom"
                     * interaction is enabled.
                     */
                    isEnabled() {
                      return this._enabled;
                    }
                    /**
                     * Returns true if the handler is enabled and has detected the start of a
                     * zoom/rotate gesture.
                     *
                     * @returns `true` if the handler is enabled and has detected the
                     * start of a zoom/rotate gesture.
                     */
                    isActive() {
                      return this._active;
                    }
                    /**
                     * Disables the "keyboard pan/rotate" interaction, leaving the
                     * "keyboard zoom" interaction enabled.
                     *
                     * @example
                     * ```ts
                     * map.keyboard.disableRotation();
                     * ```
                     */
                    disableRotation() {
                      this._rotationDisabled = !0;
                    }
                    /**
                     * Enables the "keyboard pan/rotate" interaction.
                     *
                     * @example
                     * ```ts
                     * map.keyboard.enable();
                     * map.keyboard.enableRotation();
                     * ```
                     */
                    enableRotation() {
                      this._rotationDisabled = !1;
                    }
                  }
                  function it(Ot) {
                    return Ot * (2 - Ot);
                  }
                  const _t = 4.000244140625, Yt = 1 / 100, le = 1 / 450, Ee = 2;
                  class $e {
                    /** @internal */
                    constructor(R, J) {
                      this._onTimeout = (yt) => {
                        this._type = "wheel", this._delta -= this._lastValue, this._active || this._start(yt);
                      }, this._map = R, this._tr = new Dh(R), this._triggerRenderFrame = J, this._delta = 0, this._defaultZoomRate = Yt, this._wheelZoomRate = le;
                    }
                    /**
                     * Set the zoom rate of a trackpad
                     * @param zoomRate - 1/100 The rate used to scale trackpad movement to a zoom value.
                     * @example
                     * Speed up trackpad zoom
                     * ```ts
                     * map.scrollZoom.setZoomRate(1/25);
                     * ```
                     */
                    setZoomRate(R) {
                      this._defaultZoomRate = R;
                    }
                    /**
                     * Set the zoom rate of a mouse wheel
                     * @param wheelZoomRate - 1/450 The rate used to scale mouse wheel movement to a zoom value.
                     * @example
                     * Slow down zoom of mouse wheel
                     * ```ts
                     * map.scrollZoom.setWheelZoomRate(1/600);
                     * ```
                     */
                    setWheelZoomRate(R) {
                      this._wheelZoomRate = R;
                    }
                    /**
                     * Returns a Boolean indicating whether the "scroll to zoom" interaction is enabled.
                     * @returns `true` if the "scroll to zoom" interaction is enabled.
                     */
                    isEnabled() {
                      return !!this._enabled;
                    }
                    /*
                    * Active state is turned on and off with every scroll wheel event and is set back to false before the map
                    * render is called, so _active is not a good candidate for determining if a scroll zoom animation is in
                    * progress.
                    */
                    isActive() {
                      return !!this._active || this._finishTimeout !== void 0;
                    }
                    isZooming() {
                      return !!this._zooming;
                    }
                    /**
                     * Enables the "scroll to zoom" interaction.
                     *
                     * @param options - Options object.
                     * @example
                     * ```ts
                     * map.scrollZoom.enable();
                     * map.scrollZoom.enable({ around: 'center' })
                     * ```
                     */
                    enable(R) {
                      this.isEnabled() || (this._enabled = !0, this._aroundCenter = !!R && R.around === "center");
                    }
                    /**
                     * Disables the "scroll to zoom" interaction.
                     *
                     * @example
                     * ```ts
                     * map.scrollZoom.disable();
                     * ```
                     */
                    disable() {
                      this.isEnabled() && (this._enabled = !1);
                    }
                    /**
                     * Determines whether or not the gesture is blocked due to cooperativeGestures.
                     */
                    _shouldBePrevented(R) {
                      return this._map.cooperativeGestures.isEnabled() ? !(R.ctrlKey || this._map.cooperativeGestures.isBypassed(R)) : !1;
                    }
                    wheel(R) {
                      if (!this.isEnabled())
                        return;
                      if (this._shouldBePrevented(R)) {
                        this._map.cooperativeGestures.notifyGestureBlocked("wheel_zoom", R);
                        return;
                      }
                      let J = R.deltaMode === WheelEvent.DOM_DELTA_LINE ? R.deltaY * 40 : R.deltaY;
                      const yt = d.now(), Tt = yt - (this._lastWheelEventTime || 0);
                      this._lastWheelEventTime = yt, J !== 0 && J % _t === 0 ? this._type = "wheel" : J !== 0 && Math.abs(J) < 4 ? this._type = "trackpad" : Tt > 400 ? (this._type = null, this._lastValue = J, this._timeout = setTimeout(this._onTimeout, 40, R)) : this._type || (this._type = Math.abs(Tt * J) < 200 ? "trackpad" : "wheel", this._timeout && (clearTimeout(this._timeout), this._timeout = null, J += this._lastValue)), R.shiftKey && J && (J = J / 4), this._type && (this._lastWheelEvent = R, this._delta -= J, this._active || this._start(R)), R.preventDefault();
                    }
                    _start(R) {
                      if (!this._delta)
                        return;
                      this._frameId && (this._frameId = null), this._active = !0, this.isZooming() || (this._zooming = !0), this._finishTimeout && (clearTimeout(this._finishTimeout), delete this._finishTimeout);
                      const J = h.mousePos(this._map.getCanvas(), R), yt = this._tr;
                      J.y > yt.transform.height / 2 - yt.transform.getHorizon() ? this._around = s.N.convert(this._aroundCenter ? yt.center : yt.unproject(J)) : this._around = s.N.convert(yt.center), this._aroundPoint = yt.transform.locationPoint(this._around), this._frameId || (this._frameId = !0, this._triggerRenderFrame());
                    }
                    renderFrame() {
                      if (!this._frameId || (this._frameId = null, !this.isActive()))
                        return;
                      const R = this._tr.transform;
                      if (this._delta !== 0) {
                        const je = this._type === "wheel" && Math.abs(this._delta) > _t ? this._wheelZoomRate : this._defaultZoomRate;
                        let pr = Ee / (1 + Math.exp(-Math.abs(this._delta * je)));
                        this._delta < 0 && pr !== 0 && (pr = 1 / pr);
                        const br = typeof this._targetZoom == "number" ? R.zoomScale(this._targetZoom) : R.scale;
                        this._targetZoom = Math.min(R.maxZoom, Math.max(R.minZoom, R.scaleZoom(br * pr))), this._type === "wheel" && (this._startZoom = R.zoom, this._easing = this._smoothOutEasing(200)), this._delta = 0;
                      }
                      const J = typeof this._targetZoom == "number" ? this._targetZoom : R.zoom, yt = this._startZoom, Tt = this._easing;
                      let Nt = !1, be;
                      const Re = d.now() - this._lastWheelEventTime;
                      if (this._type === "wheel" && yt && Tt && Re) {
                        const je = Math.min(Re / 200, 1), pr = Tt(je);
                        be = s.z.number(yt, J, pr), je < 1 ? this._frameId || (this._frameId = !0) : Nt = !0;
                      } else
                        be = J, Nt = !0;
                      return this._active = !0, Nt && (this._active = !1, this._finishTimeout = setTimeout(() => {
                        this._zooming = !1, this._triggerRenderFrame(), delete this._targetZoom, delete this._finishTimeout;
                      }, 200)), {
                        noInertia: !0,
                        needsRenderFrame: !Nt,
                        zoomDelta: be - R.zoom,
                        around: this._aroundPoint,
                        originalEvent: this._lastWheelEvent
                      };
                    }
                    _smoothOutEasing(R) {
                      let J = s.b9;
                      if (this._prevEase) {
                        const yt = this._prevEase, Tt = (d.now() - yt.start) / yt.duration, Nt = yt.easing(Tt + 0.01) - yt.easing(Tt), be = 0.27 / Math.sqrt(Nt * Nt + 1e-4) * 0.01, Re = Math.sqrt(0.27 * 0.27 - be * be);
                        J = s.b8(be, Re, 0.25, 1);
                      }
                      return this._prevEase = {
                        start: d.now(),
                        duration: R,
                        easing: J
                      }, J;
                    }
                    reset() {
                      this._active = !1, this._zooming = !1, delete this._targetZoom, this._finishTimeout && (clearTimeout(this._finishTimeout), delete this._finishTimeout);
                    }
                  }
                  class vr {
                    /** @internal */
                    constructor(R, J) {
                      this._clickZoom = R, this._tapZoom = J;
                    }
                    /**
                     * Enables the "double click to zoom" interaction.
                     *
                     * @example
                     * ```ts
                     * map.doubleClickZoom.enable();
                     * ```
                     */
                    enable() {
                      this._clickZoom.enable(), this._tapZoom.enable();
                    }
                    /**
                     * Disables the "double click to zoom" interaction.
                     *
                     * @example
                     * ```ts
                     * map.doubleClickZoom.disable();
                     * ```
                     */
                    disable() {
                      this._clickZoom.disable(), this._tapZoom.disable();
                    }
                    /**
                     * Returns a Boolean indicating whether the "double click to zoom" interaction is enabled.
                     *
                     * @returns `true` if the "double click to zoom" interaction is enabled.
                     */
                    isEnabled() {
                      return this._clickZoom.isEnabled() && this._tapZoom.isEnabled();
                    }
                    /**
                     * Returns a Boolean indicating whether the "double click to zoom" interaction is active, i.e. currently being used.
                     *
                     * @returns `true` if the "double click to zoom" interaction is active.
                     */
                    isActive() {
                      return this._clickZoom.isActive() || this._tapZoom.isActive();
                    }
                  }
                  class Lr {
                    /** @internal */
                    constructor(R) {
                      this._tr = new Dh(R), this.reset();
                    }
                    reset() {
                      this._active = !1;
                    }
                    dblclick(R, J) {
                      return R.preventDefault(), {
                        cameraAnimation: (yt) => {
                          yt.easeTo({
                            duration: 300,
                            zoom: this._tr.zoom + (R.shiftKey ? -1 : 1),
                            around: this._tr.unproject(J)
                          }, { originalEvent: R });
                        }
                      };
                    }
                    enable() {
                      this._enabled = !0;
                    }
                    disable() {
                      this._enabled = !1, this.reset();
                    }
                    isEnabled() {
                      return this._enabled;
                    }
                    isActive() {
                      return this._active;
                    }
                  }
                  class Hr {
                    constructor() {
                      this._tap = new uh({
                        numTouches: 1,
                        numTaps: 1
                      }), this.reset();
                    }
                    reset() {
                      this._active = !1, delete this._swipePoint, delete this._swipeTouch, delete this._tapTime, delete this._tapPoint, this._tap.reset();
                    }
                    touchstart(R, J, yt) {
                      if (!this._swipePoint)
                        if (!this._tapTime)
                          this._tap.touchstart(R, J, yt);
                        else {
                          const Tt = J[0], Nt = R.timeStamp - this._tapTime < Os, be = this._tapPoint.dist(Tt) < lh;
                          !Nt || !be ? this.reset() : yt.length > 0 && (this._swipePoint = Tt, this._swipeTouch = yt[0].identifier);
                        }
                    }
                    touchmove(R, J, yt) {
                      if (!this._tapTime)
                        this._tap.touchmove(R, J, yt);
                      else if (this._swipePoint) {
                        if (yt[0].identifier !== this._swipeTouch)
                          return;
                        const Tt = J[0], Nt = Tt.y - this._swipePoint.y;
                        return this._swipePoint = Tt, R.preventDefault(), this._active = !0, {
                          zoomDelta: Nt / 128
                        };
                      }
                    }
                    touchend(R, J, yt) {
                      if (this._tapTime)
                        this._swipePoint && yt.length === 0 && this.reset();
                      else {
                        const Tt = this._tap.touchend(R, J, yt);
                        Tt && (this._tapTime = R.timeStamp, this._tapPoint = Tt);
                      }
                    }
                    touchcancel() {
                      this.reset();
                    }
                    enable() {
                      this._enabled = !0;
                    }
                    disable() {
                      this._enabled = !1, this.reset();
                    }
                    isEnabled() {
                      return this._enabled;
                    }
                    isActive() {
                      return this._active;
                    }
                  }
                  class Ur {
                    /** @internal */
                    constructor(R, J, yt) {
                      this._el = R, this._mousePan = J, this._touchPan = yt;
                    }
                    /**
                     * Enables the "drag to pan" interaction.
                     *
                     * @param options - Options object
                     * @example
                     * ```ts
                     *   map.dragPan.enable();
                     *   map.dragPan.enable({
                     *      linearity: 0.3,
                     *      easing: bezier(0, 0, 0.3, 1),
                     *      maxSpeed: 1400,
                     *      deceleration: 2500,
                     *   });
                     * ```
                     */
                    enable(R) {
                      this._inertiaOptions = R || {}, this._mousePan.enable(), this._touchPan.enable(), this._el.classList.add("maplibregl-touch-drag-pan");
                    }
                    /**
                     * Disables the "drag to pan" interaction.
                     *
                     * @example
                     * ```ts
                     * map.dragPan.disable();
                     * ```
                     */
                    disable() {
                      this._mousePan.disable(), this._touchPan.disable(), this._el.classList.remove("maplibregl-touch-drag-pan");
                    }
                    /**
                     * Returns a Boolean indicating whether the "drag to pan" interaction is enabled.
                     *
                     * @returns `true` if the "drag to pan" interaction is enabled.
                     */
                    isEnabled() {
                      return this._mousePan.isEnabled() && this._touchPan.isEnabled();
                    }
                    /**
                     * Returns a Boolean indicating whether the "drag to pan" interaction is active, i.e. currently being used.
                     *
                     * @returns `true` if the "drag to pan" interaction is active.
                     */
                    isActive() {
                      return this._mousePan.isActive() || this._touchPan.isActive();
                    }
                  }
                  class hn {
                    /** @internal */
                    constructor(R, J, yt) {
                      this._pitchWithRotate = R.pitchWithRotate, this._mouseRotate = J, this._mousePitch = yt;
                    }
                    /**
                     * Enables the "drag to rotate" interaction.
                     *
                     * @example
                     * ```ts
                     * map.dragRotate.enable();
                     * ```
                     */
                    enable() {
                      this._mouseRotate.enable(), this._pitchWithRotate && this._mousePitch.enable();
                    }
                    /**
                     * Disables the "drag to rotate" interaction.
                     *
                     * @example
                     * ```ts
                     * map.dragRotate.disable();
                     * ```
                     */
                    disable() {
                      this._mouseRotate.disable(), this._mousePitch.disable();
                    }
                    /**
                     * Returns a Boolean indicating whether the "drag to rotate" interaction is enabled.
                     *
                     * @returns `true` if the "drag to rotate" interaction is enabled.
                     */
                    isEnabled() {
                      return this._mouseRotate.isEnabled() && (!this._pitchWithRotate || this._mousePitch.isEnabled());
                    }
                    /**
                     * Returns a Boolean indicating whether the "drag to rotate" interaction is active, i.e. currently being used.
                     *
                     * @returns `true` if the "drag to rotate" interaction is active.
                     */
                    isActive() {
                      return this._mouseRotate.isActive() || this._mousePitch.isActive();
                    }
                  }
                  class En {
                    /** @internal */
                    constructor(R, J, yt, Tt) {
                      this._el = R, this._touchZoom = J, this._touchRotate = yt, this._tapDragZoom = Tt, this._rotationDisabled = !1, this._enabled = !0;
                    }
                    /**
                     * Enables the "pinch to rotate and zoom" interaction.
                     *
                     * @param options - Options object.
                     *
                     * @example
                     * ```ts
                     * map.touchZoomRotate.enable();
                     * map.touchZoomRotate.enable({ around: 'center' });
                     * ```
                     */
                    enable(R) {
                      this._touchZoom.enable(R), this._rotationDisabled || this._touchRotate.enable(R), this._tapDragZoom.enable(), this._el.classList.add("maplibregl-touch-zoom-rotate");
                    }
                    /**
                     * Disables the "pinch to rotate and zoom" interaction.
                     *
                     * @example
                     * ```ts
                     * map.touchZoomRotate.disable();
                     * ```
                     */
                    disable() {
                      this._touchZoom.disable(), this._touchRotate.disable(), this._tapDragZoom.disable(), this._el.classList.remove("maplibregl-touch-zoom-rotate");
                    }
                    /**
                     * Returns a Boolean indicating whether the "pinch to rotate and zoom" interaction is enabled.
                     *
                     * @returns `true` if the "pinch to rotate and zoom" interaction is enabled.
                     */
                    isEnabled() {
                      return this._touchZoom.isEnabled() && (this._rotationDisabled || this._touchRotate.isEnabled()) && this._tapDragZoom.isEnabled();
                    }
                    /**
                     * Returns true if the handler is enabled and has detected the start of a zoom/rotate gesture.
                     *
                     * @returns `true` if the handler is active, `false` otherwise
                     */
                    isActive() {
                      return this._touchZoom.isActive() || this._touchRotate.isActive() || this._tapDragZoom.isActive();
                    }
                    /**
                     * Disables the "pinch to rotate" interaction, leaving the "pinch to zoom"
                     * interaction enabled.
                     *
                     * @example
                     * ```ts
                     * map.touchZoomRotate.disableRotation();
                     * ```
                     */
                    disableRotation() {
                      this._rotationDisabled = !0, this._touchRotate.disable();
                    }
                    /**
                     * Enables the "pinch to rotate" interaction.
                     *
                     * @example
                     * ```ts
                     * map.touchZoomRotate.enable();
                     * map.touchZoomRotate.enableRotation();
                     * ```
                     */
                    enableRotation() {
                      this._rotationDisabled = !1, this._touchZoom.isEnabled() && this._touchRotate.enable();
                    }
                  }
                  class Mn {
                    constructor(R, J) {
                      this._bypassKey = navigator.userAgent.indexOf("Mac") !== -1 ? "metaKey" : "ctrlKey", this._map = R, this._options = J, this._enabled = !1;
                    }
                    isActive() {
                      return !1;
                    }
                    reset() {
                    }
                    _setupUI() {
                      if (this._container)
                        return;
                      const R = this._map.getCanvasContainer();
                      R.classList.add("maplibregl-cooperative-gestures"), this._container = h.create("div", "maplibregl-cooperative-gesture-screen", R);
                      let J = this._map._getUIString("CooperativeGesturesHandler.WindowsHelpText");
                      this._bypassKey === "metaKey" && (J = this._map._getUIString("CooperativeGesturesHandler.MacHelpText"));
                      const yt = this._map._getUIString("CooperativeGesturesHandler.MobileHelpText"), Tt = document.createElement("div");
                      Tt.className = "maplibregl-desktop-message", Tt.textContent = J, this._container.appendChild(Tt);
                      const Nt = document.createElement("div");
                      Nt.className = "maplibregl-mobile-message", Nt.textContent = yt, this._container.appendChild(Nt), this._container.setAttribute("aria-hidden", "true");
                    }
                    _destroyUI() {
                      this._container && (h.remove(this._container), this._map.getCanvasContainer().classList.remove("maplibregl-cooperative-gestures")), delete this._container;
                    }
                    enable() {
                      this._setupUI(), this._enabled = !0;
                    }
                    disable() {
                      this._enabled = !1, this._destroyUI();
                    }
                    isEnabled() {
                      return this._enabled;
                    }
                    isBypassed(R) {
                      return R[this._bypassKey];
                    }
                    notifyGestureBlocked(R, J) {
                      this._enabled && (this._map.fire(new s.k("cooperativegestureprevented", { gestureType: R, originalEvent: J })), this._container.classList.add("maplibregl-show"), setTimeout(() => {
                        this._container.classList.remove("maplibregl-show");
                      }, 100));
                    }
                  }
                  const _n = (Ot) => Ot.zoom || Ot.drag || Ot.pitch || Ot.rotate;
                  class In extends s.k {
                  }
                  function Kn(Ot) {
                    return Ot.panDelta && Ot.panDelta.mag() || Ot.zoomDelta || Ot.bearingDelta || Ot.pitchDelta;
                  }
                  class xi {
                    constructor(R, J) {
                      this.handleWindowEvent = (Tt) => {
                        this.handleEvent(Tt, `${Tt.type}Window`);
                      }, this.handleEvent = (Tt, Nt) => {
                        if (Tt.type === "blur") {
                          this.stop(!0);
                          return;
                        }
                        this._updatingCamera = !0;
                        const be = Tt.type === "renderFrame" ? void 0 : Tt, Re = { needsRenderFrame: !1 }, je = {}, pr = {}, br = Tt.touches, Ar = br ? this._getMapTouches(br) : void 0, qr = Ar ? h.touchPos(this._map.getCanvas(), Ar) : h.mousePos(this._map.getCanvas(), Tt);
                        for (const { handlerName: Rn, handler: Gn, allowed: ii } of this._handlers) {
                          if (!Gn.isEnabled())
                            continue;
                          let oi;
                          this._blockedByActive(pr, ii, Rn) ? Gn.reset() : Gn[Nt || Tt.type] && (oi = Gn[Nt || Tt.type](Tt, qr, Ar), this.mergeHandlerResult(Re, je, oi, Rn, be), oi && oi.needsRenderFrame && this._triggerRenderFrame()), (oi || Gn.isActive()) && (pr[Rn] = Gn);
                        }
                        const vn = {};
                        for (const Rn in this._previousActiveHandlers)
                          pr[Rn] || (vn[Rn] = be);
                        this._previousActiveHandlers = pr, (Object.keys(vn).length || Kn(Re)) && (this._changes.push([Re, je, vn]), this._triggerRenderFrame()), (Object.keys(pr).length || Kn(Re)) && this._map._stop(!0), this._updatingCamera = !1;
                        const { cameraAnimation: bn } = Re;
                        bn && (this._inertia.clear(), this._fireEvents({}, {}, !0), this._changes = [], bn(this._map));
                      }, this._map = R, this._el = this._map.getCanvasContainer(), this._handlers = [], this._handlersById = {}, this._changes = [], this._inertia = new zu(R), this._bearingSnap = J.bearingSnap, this._previousActiveHandlers = {}, this._eventsInProgress = {}, this._addDefaultHandlers(J);
                      const yt = this._el;
                      this._listeners = [
                        // This needs to be `passive: true` so that a double tap fires two
                        // pairs of touchstart/end events in iOS Safari 13. If this is set to
                        // `passive: false` then the second pair of events is only fired if
                        // preventDefault() is called on the first touchstart. Calling preventDefault()
                        // undesirably prevents click events.
                        [yt, "touchstart", { passive: !0 }],
                        // This needs to be `passive: false` so that scrolls and pinches can be
                        // prevented in browsers that don't support `touch-actions: none`, for example iOS Safari 12.
                        [yt, "touchmove", { passive: !1 }],
                        [yt, "touchend", void 0],
                        [yt, "touchcancel", void 0],
                        [yt, "mousedown", void 0],
                        [yt, "mousemove", void 0],
                        [yt, "mouseup", void 0],
                        // Bind window-level event listeners for move and up/end events. In the absence of
                        // the pointer capture API, which is not supported by all necessary platforms,
                        // window-level event listeners give us the best shot at capturing events that
                        // fall outside the map canvas element. Use `{capture: true}` for the move event
                        // to prevent map move events from being fired during a drag.
                        [document, "mousemove", { capture: !0 }],
                        [document, "mouseup", void 0],
                        [yt, "mouseover", void 0],
                        [yt, "mouseout", void 0],
                        [yt, "dblclick", void 0],
                        [yt, "click", void 0],
                        [yt, "keydown", { capture: !1 }],
                        [yt, "keyup", void 0],
                        [yt, "wheel", { passive: !1 }],
                        [yt, "contextmenu", void 0],
                        [window, "blur", void 0]
                      ];
                      for (const [Tt, Nt, be] of this._listeners)
                        h.addEventListener(Tt, Nt, Tt === document ? this.handleWindowEvent : this.handleEvent, be);
                    }
                    destroy() {
                      for (const [R, J, yt] of this._listeners)
                        h.removeEventListener(R, J, R === document ? this.handleWindowEvent : this.handleEvent, yt);
                    }
                    _addDefaultHandlers(R) {
                      const J = this._map, yt = J.getCanvasContainer();
                      this._add("mapEvent", new Hv(J, R));
                      const Tt = J.boxZoom = new Lf(J, R);
                      this._add("boxZoom", Tt), R.interactive && R.boxZoom && Tt.enable();
                      const Nt = J.cooperativeGestures = new Mn(J, R.cooperativeGestures);
                      this._add("cooperativeGestures", Nt), R.cooperativeGestures && Nt.enable();
                      const be = new Fd(J), Re = new Lr(J);
                      J.doubleClickZoom = new vr(Re, be), this._add("tapZoom", be), this._add("clickZoom", Re), R.interactive && R.doubleClickZoom && J.doubleClickZoom.enable();
                      const je = new Hr();
                      this._add("tapDragZoom", je);
                      const pr = J.touchPitch = new mt(J);
                      this._add("touchPitch", pr), R.interactive && R.touchPitch && J.touchPitch.enable(R.touchPitch);
                      const br = oc(R), Ar = ev(R);
                      J.dragRotate = new hn(R, br, Ar), this._add("mouseRotate", br, ["mousePitch"]), this._add("mousePitch", Ar, ["mouseRotate"]), R.interactive && R.dragRotate && J.dragRotate.enable();
                      const qr = rf(R), vn = new Lc(R, J);
                      J.dragPan = new Ur(yt, qr, vn), this._add("mousePan", qr), this._add("touchPan", vn, ["touchZoom", "touchRotate"]), R.interactive && R.dragPan && J.dragPan.enable(R.dragPan);
                      const bn = new Bd(), Rn = new sc();
                      J.touchZoomRotate = new En(yt, Rn, bn, je), this._add("touchRotate", bn, ["touchPan", "touchZoom"]), this._add("touchZoom", Rn, ["touchPan", "touchRotate"]), R.interactive && R.touchZoomRotate && J.touchZoomRotate.enable(R.touchZoomRotate);
                      const Gn = J.scrollZoom = new $e(J, () => this._triggerRenderFrame());
                      this._add("scrollZoom", Gn, ["mousePan"]), R.interactive && R.scrollZoom && J.scrollZoom.enable(R.scrollZoom);
                      const ii = J.keyboard = new bt(J);
                      this._add("keyboard", ii), R.interactive && R.keyboard && J.keyboard.enable(), this._add("blockableMapEvent", new oh(J));
                    }
                    _add(R, J, yt) {
                      this._handlers.push({ handlerName: R, handler: J, allowed: yt }), this._handlersById[R] = J;
                    }
                    stop(R) {
                      if (!this._updatingCamera) {
                        for (const { handler: J } of this._handlers)
                          J.reset();
                        this._inertia.clear(), this._fireEvents({}, {}, R), this._changes = [];
                      }
                    }
                    isActive() {
                      for (const { handler: R } of this._handlers)
                        if (R.isActive())
                          return !0;
                      return !1;
                    }
                    isZooming() {
                      return !!this._eventsInProgress.zoom || this._map.scrollZoom.isZooming();
                    }
                    isRotating() {
                      return !!this._eventsInProgress.rotate;
                    }
                    isMoving() {
                      return !!_n(this._eventsInProgress) || this.isZooming();
                    }
                    _blockedByActive(R, J, yt) {
                      for (const Tt in R)
                        if (Tt !== yt && (!J || J.indexOf(Tt) < 0))
                          return !0;
                      return !1;
                    }
                    _getMapTouches(R) {
                      const J = [];
                      for (const yt of R) {
                        const Tt = yt.target;
                        this._el.contains(Tt) && J.push(yt);
                      }
                      return J;
                    }
                    mergeHandlerResult(R, J, yt, Tt, Nt) {
                      if (!yt)
                        return;
                      s.e(R, yt);
                      const be = { handlerName: Tt, originalEvent: yt.originalEvent || Nt };
                      yt.zoomDelta !== void 0 && (J.zoom = be), yt.panDelta !== void 0 && (J.drag = be), yt.pitchDelta !== void 0 && (J.pitch = be), yt.bearingDelta !== void 0 && (J.rotate = be);
                    }
                    _applyChanges() {
                      const R = {}, J = {}, yt = {};
                      for (const [Tt, Nt, be] of this._changes)
                        Tt.panDelta && (R.panDelta = (R.panDelta || new s.P(0, 0))._add(Tt.panDelta)), Tt.zoomDelta && (R.zoomDelta = (R.zoomDelta || 0) + Tt.zoomDelta), Tt.bearingDelta && (R.bearingDelta = (R.bearingDelta || 0) + Tt.bearingDelta), Tt.pitchDelta && (R.pitchDelta = (R.pitchDelta || 0) + Tt.pitchDelta), Tt.around !== void 0 && (R.around = Tt.around), Tt.pinchAround !== void 0 && (R.pinchAround = Tt.pinchAround), Tt.noInertia && (R.noInertia = Tt.noInertia), s.e(J, Nt), s.e(yt, be);
                      this._updateMapTransform(R, J, yt), this._changes = [];
                    }
                    _updateMapTransform(R, J, yt) {
                      const Tt = this._map, Nt = Tt._getTransformForUpdate(), be = Tt.terrain;
                      if (!Kn(R) && !(be && this._terrainMovement))
                        return this._fireEvents(J, yt, !0);
                      let { panDelta: Re, zoomDelta: je, bearingDelta: pr, pitchDelta: br, around: Ar, pinchAround: qr } = R;
                      qr !== void 0 && (Ar = qr), Tt._stop(!0), Ar = Ar || Tt.transform.centerPoint;
                      const vn = Nt.pointLocation(Re ? Ar.sub(Re) : Ar);
                      pr && (Nt.bearing += pr), br && (Nt.pitch += br), je && (Nt.zoom += je), be ? !this._terrainMovement && (J.drag || J.zoom) ? (this._terrainMovement = !0, this._map._elevationFreeze = !0, Nt.setLocationAtPoint(vn, Ar)) : J.drag && this._terrainMovement ? Nt.center = Nt.pointLocation(Nt.centerPoint.sub(Re)) : Nt.setLocationAtPoint(vn, Ar) : Nt.setLocationAtPoint(vn, Ar), Tt._applyUpdatedTransform(Nt), this._map._update(), R.noInertia || this._inertia.record(R), this._fireEvents(J, yt, !0);
                    }
                    _fireEvents(R, J, yt) {
                      const Tt = _n(this._eventsInProgress), Nt = _n(R), be = {};
                      for (const Ar in R) {
                        const { originalEvent: qr } = R[Ar];
                        this._eventsInProgress[Ar] || (be[`${Ar}start`] = qr), this._eventsInProgress[Ar] = R[Ar];
                      }
                      !Tt && Nt && this._fireEvent("movestart", Nt.originalEvent);
                      for (const Ar in be)
                        this._fireEvent(Ar, be[Ar]);
                      Nt && this._fireEvent("move", Nt.originalEvent);
                      for (const Ar in R) {
                        const { originalEvent: qr } = R[Ar];
                        this._fireEvent(Ar, qr);
                      }
                      const Re = {};
                      let je;
                      for (const Ar in this._eventsInProgress) {
                        const { handlerName: qr, originalEvent: vn } = this._eventsInProgress[Ar];
                        this._handlersById[qr].isActive() || (delete this._eventsInProgress[Ar], je = J[qr] || vn, Re[`${Ar}end`] = je);
                      }
                      for (const Ar in Re)
                        this._fireEvent(Ar, Re[Ar]);
                      const pr = _n(this._eventsInProgress), br = (Tt || Nt) && !pr;
                      if (br && this._terrainMovement) {
                        this._map._elevationFreeze = !1, this._terrainMovement = !1;
                        const Ar = this._map._getTransformForUpdate();
                        Ar.recalculateZoom(this._map.terrain), this._map._applyUpdatedTransform(Ar);
                      }
                      if (yt && br) {
                        this._updatingCamera = !0;
                        const Ar = this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions), qr = (vn) => vn !== 0 && -this._bearingSnap < vn && vn < this._bearingSnap;
                        Ar && (Ar.essential || !d.prefersReducedMotion) ? (qr(Ar.bearing || this._map.getBearing()) && (Ar.bearing = 0), Ar.freezeElevation = !0, this._map.easeTo(Ar, { originalEvent: je })) : (this._map.fire(new s.k("moveend", { originalEvent: je })), qr(this._map.getBearing()) && this._map.resetNorth()), this._updatingCamera = !1;
                      }
                    }
                    _fireEvent(R, J) {
                      this._map.fire(new s.k(R, J ? { originalEvent: J } : {}));
                    }
                    _requestFrame() {
                      return this._map.triggerRepaint(), this._map._renderTaskQueue.add((R) => {
                        delete this._frameId, this.handleEvent(new In("renderFrame", { timeStamp: R })), this._applyChanges();
                      });
                    }
                    _triggerRenderFrame() {
                      this._frameId === void 0 && (this._frameId = this._requestFrame());
                    }
                  }
                  class Ei extends s.E {
                    constructor(R, J) {
                      super(), this._renderFrameCallback = () => {
                        const yt = Math.min((d.now() - this._easeStart) / this._easeOptions.duration, 1);
                        this._onEaseFrame(this._easeOptions.easing(yt)), yt < 1 && this._easeFrameId ? this._easeFrameId = this._requestRenderFrame(this._renderFrameCallback) : this.stop();
                      }, this._moving = !1, this._zooming = !1, this.transform = R, this._bearingSnap = J.bearingSnap, this.on("moveend", () => {
                        delete this._requestedCameraState;
                      });
                    }
                    /**
                     * Returns the map's geographical centerpoint.
                     *
                     * @returns The map's geographical centerpoint.
                     * @example
                     * Return a LngLat object such as `{lng: 0, lat: 0}`
                     * ```ts
                     * let center = map.getCenter();
                     * // access longitude and latitude values directly
                     * let {lng, lat} = map.getCenter();
                     * ```
                     */
                    getCenter() {
                      return new s.N(this.transform.center.lng, this.transform.center.lat);
                    }
                    /**
                     * Sets the map's geographical centerpoint. Equivalent to `jumpTo({center: center})`.
                     *
                     * Triggers the following events: `movestart` and `moveend`.
                     *
                     * @param center - The centerpoint to set.
                     * @param eventData - Additional properties to be added to event objects of events triggered by this method.
                     * @example
                     * ```ts
                     * map.setCenter([-74, 38]);
                     * ```
                     */
                    setCenter(R, J) {
                      return this.jumpTo({ center: R }, J);
                    }
                    /**
                     * Pans the map by the specified offset.
                     *
                     * Triggers the following events: `movestart` and `moveend`.
                     *
                     * @param offset - `x` and `y` coordinates by which to pan the map.
                     * @param options - Options object
                     * @param eventData - Additional properties to be added to event objects of events triggered by this method.
                     * @see [Navigate the map with game-like controls](https://maplibre.org/maplibre-gl-js/docs/examples/game-controls/)
                     */
                    panBy(R, J, yt) {
                      return R = s.P.convert(R).mult(-1), this.panTo(this.transform.center, s.e({ offset: R }, J), yt);
                    }
                    /**
                     * Pans the map to the specified location with an animated transition.
                     *
                     * Triggers the following events: `movestart` and `moveend`.
                     *
                     * @param lnglat - The location to pan the map to.
                     * @param options - Options describing the destination and animation of the transition.
                     * @param eventData - Additional properties to be added to event objects of events triggered by this method.
                     * @example
                     * ```ts
                     * map.panTo([-74, 38]);
                     * // Specify that the panTo animation should last 5000 milliseconds.
                     * map.panTo([-74, 38], {duration: 5000});
                     * ```
                     * @see [Update a feature in realtime](https://maplibre.org/maplibre-gl-js/docs/examples/live-update-feature/)
                     */
                    panTo(R, J, yt) {
                      return this.easeTo(s.e({
                        center: R
                      }, J), yt);
                    }
                    /**
                     * Returns the map's current zoom level.
                     *
                     * @returns The map's current zoom level.
                     * @example
                     * ```ts
                     * map.getZoom();
                     * ```
                     */
                    getZoom() {
                      return this.transform.zoom;
                    }
                    /**
                     * Sets the map's zoom level. Equivalent to `jumpTo({zoom: zoom})`.
                     *
                     * Triggers the following events: `movestart`, `move`, `moveend`, `zoomstart`, `zoom`, and `zoomend`.
                     *
                     * @param zoom - The zoom level to set (0-20).
                     * @param eventData - Additional properties to be added to event objects of events triggered by this method.
                     * @example
                     * Zoom to the zoom level 5 without an animated transition
                     * ```ts
                     * map.setZoom(5);
                     * ```
                     */
                    setZoom(R, J) {
                      return this.jumpTo({ zoom: R }, J), this;
                    }
                    /**
                     * Zooms the map to the specified zoom level, with an animated transition.
                     *
                     * Triggers the following events: `movestart`, `move`, `moveend`, `zoomstart`, `zoom`, and `zoomend`.
                     *
                     * @param zoom - The zoom level to transition to.
                     * @param options - Options object
                     * @param eventData - Additional properties to be added to event objects of events triggered by this method.
                     * @example
                     * ```ts
                     * // Zoom to the zoom level 5 without an animated transition
                     * map.zoomTo(5);
                     * // Zoom to the zoom level 8 with an animated transition
                     * map.zoomTo(8, {
                     *   duration: 2000,
                     *   offset: [100, 50]
                     * });
                     * ```
                     */
                    zoomTo(R, J, yt) {
                      return this.easeTo(s.e({
                        zoom: R
                      }, J), yt);
                    }
                    /**
                     * Increases the map's zoom level by 1.
                     *
                     * Triggers the following events: `movestart`, `move`, `moveend`, `zoomstart`, `zoom`, and `zoomend`.
                     *
                     * @param options - Options object
                     * @param eventData - Additional properties to be added to event objects of events triggered by this method.
                     * @example
                     * Zoom the map in one level with a custom animation duration
                     * ```ts
                     * map.zoomIn({duration: 1000});
                     * ```
                     */
                    zoomIn(R, J) {
                      return this.zoomTo(this.getZoom() + 1, R, J), this;
                    }
                    /**
                     * Decreases the map's zoom level by 1.
                     *
                     * Triggers the following events: `movestart`, `move`, `moveend`, `zoomstart`, `zoom`, and `zoomend`.
                     *
                     * @param options - Options object
                     * @param eventData - Additional properties to be added to event objects of events triggered by this method.
                     * @example
                     * Zoom the map out one level with a custom animation offset
                     * ```ts
                     * map.zoomOut({offset: [80, 60]});
                     * ```
                     */
                    zoomOut(R, J) {
                      return this.zoomTo(this.getZoom() - 1, R, J), this;
                    }
                    /**
                     * Returns the map's current bearing. The bearing is the compass direction that is "up"; for example, a bearing
                     * of 90° orients the map so that east is up.
                     *
                     * @returns The map's current bearing.
                     * @see [Navigate the map with game-like controls](https://maplibre.org/maplibre-gl-js/docs/examples/game-controls/)
                     */
                    getBearing() {
                      return this.transform.bearing;
                    }
                    /**
                     * Sets the map's bearing (rotation). The bearing is the compass direction that is "up"; for example, a bearing
                     * of 90° orients the map so that east is up.
                     *
                     * Equivalent to `jumpTo({bearing: bearing})`.
                     *
                     * Triggers the following events: `movestart`, `moveend`, and `rotate`.
                     *
                     * @param bearing - The desired bearing.
                     * @param eventData - Additional properties to be added to event objects of events triggered by this method.
                     * @example
                     * Rotate the map to 90 degrees
                     * ```ts
                     * map.setBearing(90);
                     * ```
                     */
                    setBearing(R, J) {
                      return this.jumpTo({ bearing: R }, J), this;
                    }
                    /**
                     * Returns the current padding applied around the map viewport.
                     *
                     * @returns The current padding around the map viewport.
                     */
                    getPadding() {
                      return this.transform.padding;
                    }
                    /**
                     * Sets the padding in pixels around the viewport.
                     *
                     * Equivalent to `jumpTo({padding: padding})`.
                     *
                     * Triggers the following events: `movestart` and `moveend`.
                     *
                     * @param padding - The desired padding.
                     * @param eventData - Additional properties to be added to event objects of events triggered by this method.
                     * @example
                     * Sets a left padding of 300px, and a top padding of 50px
                     * ```ts
                     * map.setPadding({ left: 300, top: 50 });
                     * ```
                     */
                    setPadding(R, J) {
                      return this.jumpTo({ padding: R }, J), this;
                    }
                    /**
                     * Rotates the map to the specified bearing, with an animated transition. The bearing is the compass direction
                     * that is "up"; for example, a bearing of 90° orients the map so that east is up.
                     *
                     * Triggers the following events: `movestart`, `moveend`, and `rotate`.
                     *
                     * @param bearing - The desired bearing.
                     * @param options - Options object
                     * @param eventData - Additional properties to be added to event objects of events triggered by this method.
                     */
                    rotateTo(R, J, yt) {
                      return this.easeTo(s.e({
                        bearing: R
                      }, J), yt);
                    }
                    /**
                     * Rotates the map so that north is up (0° bearing), with an animated transition.
                     *
                     * Triggers the following events: `movestart`, `moveend`, and `rotate`.
                     *
                     * @param options - Options object
                     * @param eventData - Additional properties to be added to event objects of events triggered by this method.
                     */
                    resetNorth(R, J) {
                      return this.rotateTo(0, s.e({ duration: 1e3 }, R), J), this;
                    }
                    /**
                     * Rotates and pitches the map so that north is up (0° bearing) and pitch is 0°, with an animated transition.
                     *
                     * Triggers the following events: `movestart`, `move`, `moveend`, `pitchstart`, `pitch`, `pitchend`, and `rotate`.
                     *
                     * @param options - Options object
                     * @param eventData - Additional properties to be added to event objects of events triggered by this method.
                     */
                    resetNorthPitch(R, J) {
                      return this.easeTo(s.e({
                        bearing: 0,
                        pitch: 0,
                        duration: 1e3
                      }, R), J), this;
                    }
                    /**
                     * Snaps the map so that north is up (0° bearing), if the current bearing is close enough to it (i.e. within the
                     * `bearingSnap` threshold).
                     *
                     * Triggers the following events: `movestart`, `moveend`, and `rotate`.
                     *
                     * @param options - Options object
                     * @param eventData - Additional properties to be added to event objects of events triggered by this method.
                     */
                    snapToNorth(R, J) {
                      return Math.abs(this.getBearing()) < this._bearingSnap ? this.resetNorth(R, J) : this;
                    }
                    /**
                     * Returns the map's current pitch (tilt).
                     *
                     * @returns The map's current pitch, measured in degrees away from the plane of the screen.
                     */
                    getPitch() {
                      return this.transform.pitch;
                    }
                    /**
                     * Sets the map's pitch (tilt). Equivalent to `jumpTo({pitch: pitch})`.
                     *
                     * Triggers the following events: `movestart`, `moveend`, `pitchstart`, and `pitchend`.
                     *
                     * @param pitch - The pitch to set, measured in degrees away from the plane of the screen (0-60).
                     * @param eventData - Additional properties to be added to event objects of events triggered by this method.
                     */
                    setPitch(R, J) {
                      return this.jumpTo({ pitch: R }, J), this;
                    }
                    /**
                     * @param bounds - Calculate the center for these bounds in the viewport and use
                     * the highest zoom level up to and including `Map#getMaxZoom()` that fits
                     * in the viewport. LngLatBounds represent a box that is always axis-aligned with bearing 0.
                     * @param options - Options object
                     * @returns If map is able to fit to provided bounds, returns `center`, `zoom`, and `bearing`.
                     * If map is unable to fit, method will warn and return undefined.
                     * @example
                     * ```ts
                     * let bbox = [[-79, 43], [-73, 45]];
                     * let newCameraTransform = map.cameraForBounds(bbox, {
                     *   padding: {top: 10, bottom:25, left: 15, right: 5}
                     * });
                     * ```
                     */
                    cameraForBounds(R, J) {
                      R = De.convert(R);
                      const yt = J && J.bearing || 0;
                      return this._cameraForBoxAndBearing(R.getNorthWest(), R.getSouthEast(), yt, J);
                    }
                    /**
                     * @internal
                     * Calculate the center of these two points in the viewport and use
                     * the highest zoom level up to and including `Map#getMaxZoom()` that fits
                     * the points in the viewport at the specified bearing.
                     * @param p0 - First point
                     * @param p1 - Second point
                     * @param bearing - Desired map bearing at end of animation, in degrees
                     * @param options - the camera options
                     * @returns If map is able to fit to provided bounds, returns `center`, `zoom`, and `bearing`.
                     *      If map is unable to fit, method will warn and return undefined.
                     * @example
                     * ```ts
                     * let p0 = [-79, 43];
                     * let p1 = [-73, 45];
                     * let bearing = 90;
                     * let newCameraTransform = map._cameraForBoxAndBearing(p0, p1, bearing, {
                     *   padding: {top: 10, bottom:25, left: 15, right: 5}
                     * });
                     * ```
                     */
                    _cameraForBoxAndBearing(R, J, yt, Tt) {
                      const Nt = {
                        top: 0,
                        bottom: 0,
                        right: 0,
                        left: 0
                      };
                      if (Tt = s.e({
                        padding: Nt,
                        offset: [0, 0],
                        maxZoom: this.transform.maxZoom
                      }, Tt), typeof Tt.padding == "number") {
                        const ua = Tt.padding;
                        Tt.padding = {
                          top: ua,
                          bottom: ua,
                          right: ua,
                          left: ua
                        };
                      }
                      Tt.padding = s.e(Nt, Tt.padding);
                      const be = this.transform, Re = be.padding, je = new De(R, J), pr = be.project(je.getNorthWest()), br = be.project(je.getNorthEast()), Ar = be.project(je.getSouthEast()), qr = be.project(je.getSouthWest()), vn = s.ba(-yt), bn = pr.rotate(vn), Rn = br.rotate(vn), Gn = Ar.rotate(vn), ii = qr.rotate(vn), oi = new s.P(Math.max(bn.x, Rn.x, ii.x, Gn.x), Math.max(bn.y, Rn.y, ii.y, Gn.y)), Xn = new s.P(Math.min(bn.x, Rn.x, ii.x, Gn.x), Math.min(bn.y, Rn.y, ii.y, Gn.y)), Ri = oi.sub(Xn), Ci = (be.width - (Re.left + Re.right + Tt.padding.left + Tt.padding.right)) / Ri.x, Oi = (be.height - (Re.top + Re.bottom + Tt.padding.top + Tt.padding.bottom)) / Ri.y;
                      if (Oi < 0 || Ci < 0) {
                        s.w("Map cannot fit within canvas with the given bounds, padding, and/or offset.");
                        return;
                      }
                      const pa = Math.min(be.scaleZoom(be.scale * Math.min(Ci, Oi)), Tt.maxZoom), Sa = s.P.convert(Tt.offset), ao = (Tt.padding.left - Tt.padding.right) / 2, Xa = (Tt.padding.top - Tt.padding.bottom) / 2, xa = new s.P(ao, Xa).rotate(s.ba(yt)), Va = Sa.add(xa).mult(be.scale / be.zoomScale(pa));
                      return {
                        center: be.unproject(
                          // either world diagonal can be used (NW-SE or NE-SW)
                          pr.add(Ar).div(2).sub(Va)
                        ),
                        zoom: pa,
                        bearing: yt
                      };
                    }
                    /**
                     * Pans and zooms the map to contain its visible area within the specified geographical bounds.
                     * This function will also reset the map's bearing to 0 if bearing is nonzero.
                     *
                     * Triggers the following events: `movestart` and `moveend`.
                     *
                     * @param bounds - Center these bounds in the viewport and use the highest
                     * zoom level up to and including `Map#getMaxZoom()` that fits them in the viewport.
                     * @param options - Options supports all properties from {@link AnimationOptions} and {@link CameraOptions} in addition to the fields below.
                     * @param eventData - Additional properties to be added to event objects of events triggered by this method.
                     * @example
                     * ```ts
                     * let bbox = [[-79, 43], [-73, 45]];
                     * map.fitBounds(bbox, {
                     *   padding: {top: 10, bottom:25, left: 15, right: 5}
                     * });
                     * ```
                     * @see [Fit a map to a bounding box](https://maplibre.org/maplibre-gl-js/docs/examples/fitbounds/)
                     */
                    fitBounds(R, J, yt) {
                      return this._fitInternal(this.cameraForBounds(R, J), J, yt);
                    }
                    /**
                     * Pans, rotates and zooms the map to to fit the box made by points p0 and p1
                     * once the map is rotated to the specified bearing. To zoom without rotating,
                     * pass in the current map bearing.
                     *
                     * Triggers the following events: `movestart`, `move`, `moveend`, `zoomstart`, `zoom`, `zoomend` and `rotate`.
                     *
                     * @param p0 - First point on screen, in pixel coordinates
                     * @param p1 - Second point on screen, in pixel coordinates
                     * @param bearing - Desired map bearing at end of animation, in degrees
                     * @param options - Options object
                     * @param eventData - Additional properties to be added to event objects of events triggered by this method.
                     * @example
                     * ```ts
                     * let p0 = [220, 400];
                     * let p1 = [500, 900];
                     * map.fitScreenCoordinates(p0, p1, map.getBearing(), {
                     *   padding: {top: 10, bottom:25, left: 15, right: 5}
                     * });
                     * ```
                     * @see Used by {@link BoxZoomHandler}
                     */
                    fitScreenCoordinates(R, J, yt, Tt, Nt) {
                      return this._fitInternal(this._cameraForBoxAndBearing(this.transform.pointLocation(s.P.convert(R)), this.transform.pointLocation(s.P.convert(J)), yt, Tt), Tt, Nt);
                    }
                    _fitInternal(R, J, yt) {
                      return R ? (J = s.e(R, J), delete J.padding, J.linear ? this.easeTo(J, yt) : this.flyTo(J, yt)) : this;
                    }
                    /**
                     * Changes any combination of center, zoom, bearing, and pitch, without
                     * an animated transition. The map will retain its current values for any
                     * details not specified in `options`.
                     *
                     * Triggers the following events: `movestart`, `move`, `moveend`, `zoomstart`, `zoom`, `zoomend`, `pitchstart`,
                     * `pitch`, `pitchend`, and `rotate`.
                     *
                     * @param options - Options object
                     * @param eventData - Additional properties to be added to event objects of events triggered by this method.
                     * @example
                     * ```ts
                     * // jump to coordinates at current zoom
                     * map.jumpTo({center: [0, 0]});
                     * // jump with zoom, pitch, and bearing options
                     * map.jumpTo({
                     *   center: [0, 0],
                     *   zoom: 8,
                     *   pitch: 45,
                     *   bearing: 90
                     * });
                     * ```
                     * @see [Jump to a series of locations](https://maplibre.org/maplibre-gl-js/docs/examples/jump-to/)
                     * @see [Update a feature in realtime](https://maplibre.org/maplibre-gl-js/docs/examples/live-update-feature/)
                     */
                    jumpTo(R, J) {
                      this.stop();
                      const yt = this._getTransformForUpdate();
                      let Tt = !1, Nt = !1, be = !1;
                      return "zoom" in R && yt.zoom !== +R.zoom && (Tt = !0, yt.zoom = +R.zoom), R.center !== void 0 && (yt.center = s.N.convert(R.center)), "bearing" in R && yt.bearing !== +R.bearing && (Nt = !0, yt.bearing = +R.bearing), "pitch" in R && yt.pitch !== +R.pitch && (be = !0, yt.pitch = +R.pitch), R.padding != null && !yt.isPaddingEqual(R.padding) && (yt.padding = R.padding), this._applyUpdatedTransform(yt), this.fire(new s.k("movestart", J)).fire(new s.k("move", J)), Tt && this.fire(new s.k("zoomstart", J)).fire(new s.k("zoom", J)).fire(new s.k("zoomend", J)), Nt && this.fire(new s.k("rotatestart", J)).fire(new s.k("rotate", J)).fire(new s.k("rotateend", J)), be && this.fire(new s.k("pitchstart", J)).fire(new s.k("pitch", J)).fire(new s.k("pitchend", J)), this.fire(new s.k("moveend", J));
                    }
                    /**
                     * Calculates pitch, zoom and bearing for looking at `newCenter` with the camera position being `newCenter`
                     * and returns them as {@link CameraOptions}.
                     * @param from - The camera to look from
                     * @param altitudeFrom - The altitude of the camera to look from
                     * @param to - The center to look at
                     * @param altitudeTo - Optional altitude of the center to look at. If none given the ground height will be used.
                     * @returns the calculated camera options
                     */
                    calculateCameraOptionsFromTo(R, J, yt, Tt = 0) {
                      const Nt = s.Z.fromLngLat(R, J), be = s.Z.fromLngLat(yt, Tt), Re = be.x - Nt.x, je = be.y - Nt.y, pr = be.z - Nt.z, br = Math.hypot(Re, je, pr);
                      if (br === 0)
                        throw new Error("Can't calculate camera options with same From and To");
                      const Ar = Math.hypot(Re, je), qr = this.transform.scaleZoom(this.transform.cameraToCenterDistance / br / this.transform.tileSize), vn = Math.atan2(Re, -je) * 180 / Math.PI;
                      let bn = Math.acos(Ar / br) * 180 / Math.PI;
                      return bn = pr < 0 ? 90 - bn : 90 + bn, {
                        center: be.toLngLat(),
                        zoom: qr,
                        pitch: bn,
                        bearing: vn
                      };
                    }
                    /**
                     * Changes any combination of `center`, `zoom`, `bearing`, `pitch`, and `padding` with an animated transition
                     * between old and new values. The map will retain its current values for any
                     * details not specified in `options`.
                     *
                     * Note: The transition will happen instantly if the user has enabled
                     * the `reduced motion` accessibility feature enabled in their operating system,
                     * unless `options` includes `essential: true`.
                     *
                     * Triggers the following events: `movestart`, `move`, `moveend`, `zoomstart`, `zoom`, `zoomend`, `pitchstart`,
                     * `pitch`, `pitchend`, and `rotate`.
                     *
                     * @param options - Options describing the destination and animation of the transition.
                     * Accepts {@link CameraOptions} and {@link AnimationOptions}.
                     * @param eventData - Additional properties to be added to event objects of events triggered by this method.
                     * @see [Navigate the map with game-like controls](https://maplibre.org/maplibre-gl-js/docs/examples/game-controls/)
                     */
                    easeTo(R, J) {
                      var yt;
                      this._stop(!1, R.easeId), R = s.e({
                        offset: [0, 0],
                        duration: 500,
                        easing: s.b9
                      }, R), (R.animate === !1 || !R.essential && d.prefersReducedMotion) && (R.duration = 0);
                      const Tt = this._getTransformForUpdate(), Nt = Tt.zoom, be = Tt.bearing, Re = Tt.pitch, je = Tt.padding, pr = "bearing" in R ? this._normalizeBearing(R.bearing, be) : be, br = "pitch" in R ? +R.pitch : Re, Ar = "padding" in R ? R.padding : Tt.padding, qr = s.P.convert(R.offset);
                      let vn = Tt.centerPoint.add(qr);
                      const bn = Tt.pointLocation(vn), { center: Rn, zoom: Gn } = Tt.getConstrained(s.N.convert(R.center || bn), (yt = R.zoom) !== null && yt !== void 0 ? yt : Nt);
                      this._normalizeCenter(Rn, Tt);
                      const ii = Tt.project(bn), oi = Tt.project(Rn).sub(ii), Xn = Tt.zoomScale(Gn - Nt);
                      let Ri, Ci;
                      R.around && (Ri = s.N.convert(R.around), Ci = Tt.locationPoint(Ri));
                      const Oi = {
                        moving: this._moving,
                        zooming: this._zooming,
                        rotating: this._rotating,
                        pitching: this._pitching
                      };
                      return this._zooming = this._zooming || Gn !== Nt, this._rotating = this._rotating || be !== pr, this._pitching = this._pitching || br !== Re, this._padding = !Tt.isPaddingEqual(Ar), this._easeId = R.easeId, this._prepareEase(J, R.noMoveStart, Oi), this.terrain && this._prepareElevation(Rn), this._ease((pa) => {
                        if (this._zooming && (Tt.zoom = s.z.number(Nt, Gn, pa)), this._rotating && (Tt.bearing = s.z.number(be, pr, pa)), this._pitching && (Tt.pitch = s.z.number(Re, br, pa)), this._padding && (Tt.interpolatePadding(je, Ar, pa), vn = Tt.centerPoint.add(qr)), this.terrain && !R.freezeElevation && this._updateElevation(pa), Ri)
                          Tt.setLocationAtPoint(Ri, Ci);
                        else {
                          const Sa = Tt.zoomScale(Tt.zoom - Nt), ao = Gn > Nt ? Math.min(2, Xn) : Math.max(0.5, Xn), Xa = Math.pow(ao, 1 - pa), La = Tt.unproject(ii.add(oi.mult(pa * Xa)).mult(Sa));
                          Tt.setLocationAtPoint(Tt.renderWorldCopies ? La.wrap() : La, vn);
                        }
                        this._applyUpdatedTransform(Tt), this._fireMoveEvents(J);
                      }, (pa) => {
                        this.terrain && R.freezeElevation && this._finalizeElevation(), this._afterEase(J, pa);
                      }, R), this;
                    }
                    _prepareEase(R, J, yt = {}) {
                      this._moving = !0, !J && !yt.moving && this.fire(new s.k("movestart", R)), this._zooming && !yt.zooming && this.fire(new s.k("zoomstart", R)), this._rotating && !yt.rotating && this.fire(new s.k("rotatestart", R)), this._pitching && !yt.pitching && this.fire(new s.k("pitchstart", R));
                    }
                    _prepareElevation(R) {
                      this._elevationCenter = R, this._elevationStart = this.transform.elevation, this._elevationTarget = this.terrain.getElevationForLngLatZoom(R, this.transform.tileZoom), this._elevationFreeze = !0;
                    }
                    _updateElevation(R) {
                      this.transform.minElevationForCurrentTile = this.terrain.getMinTileElevationForLngLatZoom(this._elevationCenter, this.transform.tileZoom);
                      const J = this.terrain.getElevationForLngLatZoom(this._elevationCenter, this.transform.tileZoom);
                      if (R < 1 && J !== this._elevationTarget) {
                        const yt = this._elevationTarget - this._elevationStart, Tt = (J - (yt * R + this._elevationStart)) / (1 - R);
                        this._elevationStart += R * (yt - Tt), this._elevationTarget = J;
                      }
                      this.transform.elevation = s.z.number(this._elevationStart, this._elevationTarget, R);
                    }
                    _finalizeElevation() {
                      this._elevationFreeze = !1, this.transform.recalculateZoom(this.terrain);
                    }
                    /**
                     * @internal
                     * Called when the camera is about to be manipulated.
                     * If `transformCameraUpdate` is specified or terrain is enabled, a copy of
                     * the current transform is created to track the accumulated changes.
                     * This underlying transform represents the "desired state" proposed by input handlers / animations / UI controls.
                     * It may differ from the state used for rendering (`this.transform`).
                     * @returns Transform to apply changes to
                     */
                    _getTransformForUpdate() {
                      return !this.transformCameraUpdate && !this.terrain ? this.transform : (this._requestedCameraState || (this._requestedCameraState = this.transform.clone()), this._requestedCameraState);
                    }
                    /**
                     * @internal
                     * Checks the given transform for the camera being below terrain surface and
                     * returns new pitch and zoom to fix that.
                     *
                     * With the new pitch and zoom, the camera will be at the same ground
                     * position but at higher altitude. It will still point to the same spot on
                     * the map.
                     *
                     * @param tr - The transform to check.
                     */
                    _elevateCameraIfInsideTerrain(R) {
                      const J = R.getCameraPosition(), yt = this.terrain.getElevationForLngLatZoom(J.lngLat, R.zoom);
                      if (J.altitude < yt) {
                        const Tt = this.calculateCameraOptionsFromTo(J.lngLat, yt, R.center, R.elevation);
                        return {
                          pitch: Tt.pitch,
                          zoom: Tt.zoom
                        };
                      }
                      return {};
                    }
                    /**
                     * @internal
                     * Called after the camera is done being manipulated.
                     * @param tr - the requested camera end state
                     * If the camera is inside terrain, it gets elevated.
                     * Call `transformCameraUpdate` if present, and then apply the "approved" changes.
                     */
                    _applyUpdatedTransform(R) {
                      const J = [];
                      if (this.terrain && J.push((Tt) => this._elevateCameraIfInsideTerrain(Tt)), this.transformCameraUpdate && J.push((Tt) => this.transformCameraUpdate(Tt)), !J.length)
                        return;
                      const yt = R.clone();
                      for (const Tt of J) {
                        const Nt = yt.clone(), { center: be, zoom: Re, pitch: je, bearing: pr, elevation: br } = Tt(Nt);
                        be && (Nt.center = be), Re !== void 0 && (Nt.zoom = Re), je !== void 0 && (Nt.pitch = je), pr !== void 0 && (Nt.bearing = pr), br !== void 0 && (Nt.elevation = br), yt.apply(Nt);
                      }
                      this.transform.apply(yt);
                    }
                    _fireMoveEvents(R) {
                      this.fire(new s.k("move", R)), this._zooming && this.fire(new s.k("zoom", R)), this._rotating && this.fire(new s.k("rotate", R)), this._pitching && this.fire(new s.k("pitch", R));
                    }
                    _afterEase(R, J) {
                      if (this._easeId && J && this._easeId === J)
                        return;
                      delete this._easeId;
                      const yt = this._zooming, Tt = this._rotating, Nt = this._pitching;
                      this._moving = !1, this._zooming = !1, this._rotating = !1, this._pitching = !1, this._padding = !1, yt && this.fire(new s.k("zoomend", R)), Tt && this.fire(new s.k("rotateend", R)), Nt && this.fire(new s.k("pitchend", R)), this.fire(new s.k("moveend", R));
                    }
                    /**
                     * Changes any combination of center, zoom, bearing, and pitch, animating the transition along a curve that
                     * evokes flight. The animation seamlessly incorporates zooming and panning to help
                     * the user maintain her bearings even after traversing a great distance.
                     *
                     * Note: The animation will be skipped, and this will behave equivalently to `jumpTo`
                     * if the user has the `reduced motion` accessibility feature enabled in their operating system,
                     * unless 'options' includes `essential: true`.
                     *
                     * Triggers the following events: `movestart`, `move`, `moveend`, `zoomstart`, `zoom`, `zoomend`, `pitchstart`,
                     * `pitch`, `pitchend`, and `rotate`.
                     *
                     * @param options - Options describing the destination and animation of the transition.
                     * Accepts {@link CameraOptions}, {@link AnimationOptions},
                     * and the following additional options.
                     * @param eventData - Additional properties to be added to event objects of events triggered by this method.
                     * @example
                     * ```ts
                     * // fly with default options to null island
                     * map.flyTo({center: [0, 0], zoom: 9});
                     * // using flyTo options
                     * map.flyTo({
                     *   center: [0, 0],
                     *   zoom: 9,
                     *   speed: 0.2,
                     *   curve: 1,
                     *   easing(t) {
                     *     return t;
                     *   }
                     * });
                     * ```
                     * @see [Fly to a location](https://maplibre.org/maplibre-gl-js/docs/examples/flyto/)
                     * @see [Slowly fly to a location](https://maplibre.org/maplibre-gl-js/docs/examples/flyto-options/)
                     * @see [Fly to a location based on scroll position](https://maplibre.org/maplibre-gl-js/docs/examples/scroll-fly-to/)
                     */
                    flyTo(R, J) {
                      var yt;
                      if (!R.essential && d.prefersReducedMotion) {
                        const ca = s.M(R, ["center", "zoom", "bearing", "pitch", "around"]);
                        return this.jumpTo(ca, J);
                      }
                      this.stop(), R = s.e({
                        offset: [0, 0],
                        speed: 1.2,
                        curve: 1.42,
                        easing: s.b9
                      }, R);
                      const Tt = this._getTransformForUpdate(), Nt = Tt.zoom, be = Tt.bearing, Re = Tt.pitch, je = Tt.padding, pr = "bearing" in R ? this._normalizeBearing(R.bearing, be) : be, br = "pitch" in R ? +R.pitch : Re, Ar = "padding" in R ? R.padding : Tt.padding, qr = s.P.convert(R.offset);
                      let vn = Tt.centerPoint.add(qr);
                      const bn = Tt.pointLocation(vn), { center: Rn, zoom: Gn } = Tt.getConstrained(s.N.convert(R.center || bn), (yt = R.zoom) !== null && yt !== void 0 ? yt : Nt);
                      this._normalizeCenter(Rn, Tt);
                      const ii = Tt.zoomScale(Gn - Nt), oi = Tt.project(bn), Xn = Tt.project(Rn).sub(oi);
                      let Ri = R.curve;
                      const Ci = Math.max(Tt.width, Tt.height), Oi = Ci / ii, pa = Xn.mag();
                      if ("minZoom" in R) {
                        const ca = s.ad(Math.min(R.minZoom, Nt, Gn), Tt.minZoom, Tt.maxZoom), Uo = Ci / Tt.zoomScale(ca - Nt);
                        Ri = Math.sqrt(Uo / pa * 2);
                      }
                      const Sa = Ri * Ri;
                      function ao(ca) {
                        const Uo = (Oi * Oi - Ci * Ci + (ca ? -1 : 1) * Sa * Sa * pa * pa) / (2 * (ca ? Oi : Ci) * Sa * pa);
                        return Math.log(Math.sqrt(Uo * Uo + 1) - Uo);
                      }
                      function Xa(ca) {
                        return (Math.exp(ca) - Math.exp(-ca)) / 2;
                      }
                      function La(ca) {
                        return (Math.exp(ca) + Math.exp(-ca)) / 2;
                      }
                      function xa(ca) {
                        return Xa(ca) / La(ca);
                      }
                      const Ya = ao(!1);
                      let Va = function(ca) {
                        return La(Ya) / La(Ya + Ri * ca);
                      }, Wo = function(ca) {
                        return Ci * ((La(Ya) * xa(Ya + Ri * ca) - Xa(Ya)) / Sa) / pa;
                      }, ua = (ao(!0) - Ya) / Ri;
                      if (Math.abs(pa) < 1e-6 || !isFinite(ua)) {
                        if (Math.abs(Ci - Oi) < 1e-6)
                          return this.easeTo(R, J);
                        const ca = Oi < Ci ? -1 : 1;
                        ua = Math.abs(Math.log(Oi / Ci)) / Ri, Wo = () => 0, Va = (Uo) => Math.exp(ca * Ri * Uo);
                      }
                      if ("duration" in R)
                        R.duration = +R.duration;
                      else {
                        const ca = "screenSpeed" in R ? +R.screenSpeed / Ri : +R.speed;
                        R.duration = 1e3 * ua / ca;
                      }
                      return R.maxDuration && R.duration > R.maxDuration && (R.duration = 0), this._zooming = !0, this._rotating = be !== pr, this._pitching = br !== Re, this._padding = !Tt.isPaddingEqual(Ar), this._prepareEase(J, !1), this.terrain && this._prepareElevation(Rn), this._ease((ca) => {
                        const Uo = ca * ua, Zs = 1 / Va(Uo);
                        Tt.zoom = ca === 1 ? Gn : Nt + Tt.scaleZoom(Zs), this._rotating && (Tt.bearing = s.z.number(be, pr, ca)), this._pitching && (Tt.pitch = s.z.number(Re, br, ca)), this._padding && (Tt.interpolatePadding(je, Ar, ca), vn = Tt.centerPoint.add(qr)), this.terrain && !R.freezeElevation && this._updateElevation(ca);
                        const Lo = ca === 1 ? Rn : Tt.unproject(oi.add(Xn.mult(Wo(Uo))).mult(Zs));
                        Tt.setLocationAtPoint(Tt.renderWorldCopies ? Lo.wrap() : Lo, vn), this._applyUpdatedTransform(Tt), this._fireMoveEvents(J);
                      }, () => {
                        this.terrain && R.freezeElevation && this._finalizeElevation(), this._afterEase(J);
                      }, R), this;
                    }
                    isEasing() {
                      return !!this._easeFrameId;
                    }
                    /**
                     * Stops any animated transition underway.
                     */
                    stop() {
                      return this._stop();
                    }
                    _stop(R, J) {
                      var yt;
                      if (this._easeFrameId && (this._cancelRenderFrame(this._easeFrameId), delete this._easeFrameId, delete this._onEaseFrame), this._onEaseEnd) {
                        const Tt = this._onEaseEnd;
                        delete this._onEaseEnd, Tt.call(this, J);
                      }
                      return R || (yt = this.handlers) === null || yt === void 0 || yt.stop(!1), this;
                    }
                    _ease(R, J, yt) {
                      yt.animate === !1 || yt.duration === 0 ? (R(1), J()) : (this._easeStart = d.now(), this._easeOptions = yt, this._onEaseFrame = R, this._onEaseEnd = J, this._easeFrameId = this._requestRenderFrame(this._renderFrameCallback));
                    }
                    // convert bearing so that it's numerically close to the current one so that it interpolates properly
                    _normalizeBearing(R, J) {
                      R = s.b3(R, -180, 180);
                      const yt = Math.abs(R - J);
                      return Math.abs(R - 360 - J) < yt && (R -= 360), Math.abs(R + 360 - J) < yt && (R += 360), R;
                    }
                    // If a path crossing the antimeridian would be shorter, extend the final coordinate so that
                    // interpolating between the two endpoints will cross it.
                    _normalizeCenter(R, J) {
                      if (!J.renderWorldCopies || J.lngRange)
                        return;
                      const yt = R.lng - J.center.lng;
                      R.lng += yt > 180 ? -360 : yt < -180 ? 360 : 0;
                    }
                    /**
                     * Get the elevation difference between a given point
                     * and a point that is currently in the middle of the screen.
                     * This method should be used for proper positioning of custom 3d objects, as explained [here](https://maplibre.org/maplibre-gl-js/docs/examples/add-3d-model-with-terrain/)
                     * Returns null if terrain is not enabled.
                     * This method is subject to change in Maplibre GL JS v5.
                     * @param lngLatLike - [x,y] or LngLat coordinates of the location
                     * @returns elevation offset in meters
                     */
                    queryTerrainElevation(R) {
                      return this.terrain ? this.terrain.getElevationForLngLatZoom(s.N.convert(R), this.transform.tileZoom) - this.transform.elevation : null;
                    }
                  }
                  const zi = {
                    compact: !0,
                    customAttribution: '<a href="https://maplibre.org/" target="_blank">MapLibre</a>'
                  };
                  class Vi {
                    /**
                     * @param options - the attribution options
                     */
                    constructor(R = zi) {
                      this._toggleAttribution = () => {
                        this._container.classList.contains("maplibregl-compact") && (this._container.classList.contains("maplibregl-compact-show") ? (this._container.setAttribute("open", ""), this._container.classList.remove("maplibregl-compact-show")) : (this._container.classList.add("maplibregl-compact-show"), this._container.removeAttribute("open")));
                      }, this._updateData = (J) => {
                        J && (J.sourceDataType === "metadata" || J.sourceDataType === "visibility" || J.dataType === "style" || J.type === "terrain") && this._updateAttributions();
                      }, this._updateCompact = () => {
                        this._map.getCanvasContainer().offsetWidth <= 640 || this._compact ? this._compact === !1 ? this._container.setAttribute("open", "") : !this._container.classList.contains("maplibregl-compact") && !this._container.classList.contains("maplibregl-attrib-empty") && (this._container.setAttribute("open", ""), this._container.classList.add("maplibregl-compact", "maplibregl-compact-show")) : (this._container.setAttribute("open", ""), this._container.classList.contains("maplibregl-compact") && this._container.classList.remove("maplibregl-compact", "maplibregl-compact-show"));
                      }, this._updateCompactMinimize = () => {
                        this._container.classList.contains("maplibregl-compact") && this._container.classList.contains("maplibregl-compact-show") && this._container.classList.remove("maplibregl-compact-show");
                      }, this.options = R;
                    }
                    getDefaultPosition() {
                      return "bottom-right";
                    }
                    /** {@inheritDoc IControl.onAdd} */
                    onAdd(R) {
                      return this._map = R, this._compact = this.options.compact, this._container = h.create("details", "maplibregl-ctrl maplibregl-ctrl-attrib"), this._compactButton = h.create("summary", "maplibregl-ctrl-attrib-button", this._container), this._compactButton.addEventListener("click", this._toggleAttribution), this._setElementTitle(this._compactButton, "ToggleAttribution"), this._innerContainer = h.create("div", "maplibregl-ctrl-attrib-inner", this._container), this._updateAttributions(), this._updateCompact(), this._map.on("styledata", this._updateData), this._map.on("sourcedata", this._updateData), this._map.on("terrain", this._updateData), this._map.on("resize", this._updateCompact), this._map.on("drag", this._updateCompactMinimize), this._container;
                    }
                    /** {@inheritDoc IControl.onRemove} */
                    onRemove() {
                      h.remove(this._container), this._map.off("styledata", this._updateData), this._map.off("sourcedata", this._updateData), this._map.off("terrain", this._updateData), this._map.off("resize", this._updateCompact), this._map.off("drag", this._updateCompactMinimize), this._map = void 0, this._compact = void 0, this._attribHTML = void 0;
                    }
                    _setElementTitle(R, J) {
                      const yt = this._map._getUIString(`AttributionControl.${J}`);
                      R.title = yt, R.setAttribute("aria-label", yt);
                    }
                    _updateAttributions() {
                      if (!this._map.style)
                        return;
                      let R = [];
                      if (this.options.customAttribution && (Array.isArray(this.options.customAttribution) ? R = R.concat(this.options.customAttribution.map((Tt) => typeof Tt != "string" ? "" : Tt)) : typeof this.options.customAttribution == "string" && R.push(this.options.customAttribution)), this._map.style.stylesheet) {
                        const Tt = this._map.style.stylesheet;
                        this.styleOwner = Tt.owner, this.styleId = Tt.id;
                      }
                      const J = this._map.style.sourceCaches;
                      for (const Tt in J) {
                        const Nt = J[Tt];
                        if (Nt.used || Nt.usedForTerrain) {
                          const be = Nt.getSource();
                          be.attribution && R.indexOf(be.attribution) < 0 && R.push(be.attribution);
                        }
                      }
                      R = R.filter((Tt) => String(Tt).trim()), R.sort((Tt, Nt) => Tt.length - Nt.length), R = R.filter((Tt, Nt) => {
                        for (let be = Nt + 1; be < R.length; be++)
                          if (R[be].indexOf(Tt) >= 0)
                            return !1;
                        return !0;
                      });
                      const yt = R.join(" | ");
                      yt !== this._attribHTML && (this._attribHTML = yt, R.length ? (this._innerContainer.innerHTML = yt, this._container.classList.remove("maplibregl-attrib-empty")) : this._container.classList.add("maplibregl-attrib-empty"), this._updateCompact(), this._editLink = null);
                    }
                  }
                  class Di {
                    /**
                     * @param options - the control's options
                     */
                    constructor(R = {}) {
                      this._updateCompact = () => {
                        const J = this._container.children;
                        if (J.length) {
                          const yt = J[0];
                          this._map.getCanvasContainer().offsetWidth <= 640 || this._compact ? this._compact !== !1 && yt.classList.add("maplibregl-compact") : yt.classList.remove("maplibregl-compact");
                        }
                      }, this.options = R;
                    }
                    getDefaultPosition() {
                      return "bottom-left";
                    }
                    /** {@inheritDoc IControl.onAdd} */
                    onAdd(R) {
                      this._map = R, this._compact = this.options && this.options.compact, this._container = h.create("div", "maplibregl-ctrl");
                      const J = h.create("a", "maplibregl-ctrl-logo");
                      return J.target = "_blank", J.rel = "noopener nofollow", J.href = "https://maplibre.org/", J.setAttribute("aria-label", this._map._getUIString("LogoControl.Title")), J.setAttribute("rel", "noopener nofollow"), this._container.appendChild(J), this._container.style.display = "block", this._map.on("resize", this._updateCompact), this._updateCompact(), this._container;
                    }
                    /** {@inheritDoc IControl.onRemove} */
                    onRemove() {
                      h.remove(this._container), this._map.off("resize", this._updateCompact), this._map = void 0, this._compact = void 0;
                    }
                  }
                  class Hi {
                    constructor() {
                      this._queue = [], this._id = 0, this._cleared = !1, this._currentlyRunning = !1;
                    }
                    add(R) {
                      const J = ++this._id;
                      return this._queue.push({ callback: R, id: J, cancelled: !1 }), J;
                    }
                    remove(R) {
                      const J = this._currentlyRunning, yt = J ? this._queue.concat(J) : this._queue;
                      for (const Tt of yt)
                        if (Tt.id === R) {
                          Tt.cancelled = !0;
                          return;
                        }
                    }
                    run(R = 0) {
                      if (this._currentlyRunning)
                        throw new Error("Attempting to run(), but is already running.");
                      const J = this._currentlyRunning = this._queue;
                      this._queue = [];
                      for (const yt of J)
                        if (!yt.cancelled && (yt.callback(R), this._cleared))
                          break;
                      this._cleared = !1, this._currentlyRunning = !1;
                    }
                    clear() {
                      this._currentlyRunning && (this._cleared = !0), this._queue = [];
                    }
                  }
                  var Ki = s.Y([
                    { name: "a_pos3d", type: "Int16", components: 3 }
                  ]);
                  class na extends s.E {
                    constructor(R) {
                      super(), this.sourceCache = R, this._tiles = {}, this._renderableTilesKeys = [], this._sourceTileCache = {}, this.minzoom = 0, this.maxzoom = 22, this.tileSize = 512, this.deltaZoom = 1, R.usedForTerrain = !0, R.tileSize = this.tileSize * 2 ** this.deltaZoom;
                    }
                    destruct() {
                      this.sourceCache.usedForTerrain = !1, this.sourceCache.tileSize = null;
                    }
                    /**
                     * Load Terrain Tiles, create internal render-to-texture tiles, free GPU memory.
                     * @param transform - the operation to do
                     * @param terrain - the terrain
                     */
                    update(R, J) {
                      this.sourceCache.update(R, J), this._renderableTilesKeys = [];
                      const yt = {};
                      for (const Tt of R.coveringTiles({
                        tileSize: this.tileSize,
                        minzoom: this.minzoom,
                        maxzoom: this.maxzoom,
                        reparseOverscaled: !1,
                        terrain: J
                      }))
                        yt[Tt.key] = !0, this._renderableTilesKeys.push(Tt.key), this._tiles[Tt.key] || (Tt.posMatrix = new Float64Array(16), s.aQ(Tt.posMatrix, 0, s.X, 0, s.X, 0, 1), this._tiles[Tt.key] = new Er(Tt, this.tileSize));
                      for (const Tt in this._tiles)
                        yt[Tt] || delete this._tiles[Tt];
                    }
                    /**
                     * Free render to texture cache
                     * @param tileID - optional, free only corresponding to tileID.
                     */
                    freeRtt(R) {
                      for (const J in this._tiles) {
                        const yt = this._tiles[J];
                        (!R || yt.tileID.equals(R) || yt.tileID.isChildOf(R) || R.isChildOf(yt.tileID)) && (yt.rtt = []);
                      }
                    }
                    /**
                     * get a list of tiles, which are loaded and should be rendered in the current scene
                     * @returns the renderable tiles
                     */
                    getRenderableTiles() {
                      return this._renderableTilesKeys.map((R) => this.getTileByID(R));
                    }
                    /**
                     * get terrain tile by the TileID key
                     * @param id - the tile id
                     * @returns the tile
                     */
                    getTileByID(R) {
                      return this._tiles[R];
                    }
                    /**
                     * Searches for the corresponding current renderable terrain-tiles
                     * @param tileID - the tile to look for
                     * @returns the tiles that were found
                     */
                    getTerrainCoords(R) {
                      const J = {};
                      for (const yt of this._renderableTilesKeys) {
                        const Tt = this._tiles[yt].tileID;
                        if (Tt.canonical.equals(R.canonical)) {
                          const Nt = R.clone();
                          Nt.posMatrix = new Float64Array(16), s.aQ(Nt.posMatrix, 0, s.X, 0, s.X, 0, 1), J[yt] = Nt;
                        } else if (Tt.canonical.isChildOf(R.canonical)) {
                          const Nt = R.clone();
                          Nt.posMatrix = new Float64Array(16);
                          const be = Tt.canonical.z - R.canonical.z, Re = Tt.canonical.x - (Tt.canonical.x >> be << be), je = Tt.canonical.y - (Tt.canonical.y >> be << be), pr = s.X >> be;
                          s.aQ(Nt.posMatrix, 0, pr, 0, pr, 0, 1), s.J(Nt.posMatrix, Nt.posMatrix, [-Re * pr, -je * pr, 0]), J[yt] = Nt;
                        } else if (R.canonical.isChildOf(Tt.canonical)) {
                          const Nt = R.clone();
                          Nt.posMatrix = new Float64Array(16);
                          const be = R.canonical.z - Tt.canonical.z, Re = R.canonical.x - (R.canonical.x >> be << be), je = R.canonical.y - (R.canonical.y >> be << be), pr = s.X >> be;
                          s.aQ(Nt.posMatrix, 0, s.X, 0, s.X, 0, 1), s.J(Nt.posMatrix, Nt.posMatrix, [Re * pr, je * pr, 0]), s.K(Nt.posMatrix, Nt.posMatrix, [1 / 2 ** be, 1 / 2 ** be, 0]), J[yt] = Nt;
                        }
                      }
                      return J;
                    }
                    /**
                     * find the covering raster-dem tile
                     * @param tileID - the tile to look for
                     * @param searchForDEM - Optional parameter to search for (parent) sourcetiles with loaded dem.
                     * @returns the tile
                     */
                    getSourceTile(R, J) {
                      const yt = this.sourceCache._source;
                      let Tt = R.overscaledZ - this.deltaZoom;
                      if (Tt > yt.maxzoom && (Tt = yt.maxzoom), Tt < yt.minzoom)
                        return null;
                      this._sourceTileCache[R.key] || (this._sourceTileCache[R.key] = R.scaledTo(Tt).key);
                      let Nt = this.sourceCache.getTileByID(this._sourceTileCache[R.key]);
                      if (!(Nt && Nt.dem) && J)
                        for (; Tt >= yt.minzoom && !(Nt && Nt.dem); )
                          Nt = this.sourceCache.getTileByID(R.scaledTo(Tt--).key);
                      return Nt;
                    }
                    /**
                     * get a list of tiles, loaded after a specific time. This is used to update depth & coords framebuffers.
                     * @param time - the time
                     * @returns the relevant tiles
                     */
                    tilesAfterTime(R = Date.now()) {
                      return Object.values(this._tiles).filter((J) => J.timeAdded >= R);
                    }
                  }
                  class da {
                    constructor(R, J, yt) {
                      this.painter = R, this.sourceCache = new na(J), this.options = yt, this.exaggeration = typeof yt.exaggeration == "number" ? yt.exaggeration : 1, this.qualityFactor = 2, this.meshSize = 128, this._demMatrixCache = {}, this.coordsIndex = [], this._coordsTextureSize = 1024;
                    }
                    /**
                     * get the elevation-value from original dem-data for a given tile-coordinate
                     * @param tileID - the tile to get elevation for
                     * @param x - between 0 .. EXTENT
                     * @param y - between 0 .. EXTENT
                     * @param extent - optional, default 8192
                     * @returns the elevation
                     */
                    getDEMElevation(R, J, yt, Tt = s.X) {
                      var Nt;
                      if (!(J >= 0 && J < Tt && yt >= 0 && yt < Tt))
                        return 0;
                      const be = this.getTerrainData(R), Re = (Nt = be.tile) === null || Nt === void 0 ? void 0 : Nt.dem;
                      if (!Re)
                        return 0;
                      const je = wt([], [J / Tt * s.X, yt / Tt * s.X], be.u_terrain_matrix), pr = [je[0] * Re.dim, je[1] * Re.dim], br = Math.floor(pr[0]), Ar = Math.floor(pr[1]), qr = pr[0] - br, vn = pr[1] - Ar;
                      return Re.get(br, Ar) * (1 - qr) * (1 - vn) + Re.get(br + 1, Ar) * qr * (1 - vn) + Re.get(br, Ar + 1) * (1 - qr) * vn + Re.get(br + 1, Ar + 1) * qr * vn;
                    }
                    /**
                     * Get the elevation for given {@link LngLat} in respect of exaggeration.
                     * @param lnglat - the location
                     * @param zoom - the zoom
                     * @returns the elevation
                     */
                    getElevationForLngLatZoom(R, J) {
                      const { tileID: yt, mercatorX: Tt, mercatorY: Nt } = this._getOverscaledTileIDFromLngLatZoom(R, J);
                      return this.getElevation(yt, Tt % s.X, Nt % s.X, s.X);
                    }
                    /**
                     * Get the elevation for given coordinate in respect of exaggeration.
                     * @param tileID - the tile id
                     * @param x - between 0 .. EXTENT
                     * @param y - between 0 .. EXTENT
                     * @param extent - optional, default 8192
                     * @returns the elevation
                     */
                    getElevation(R, J, yt, Tt = s.X) {
                      return this.getDEMElevation(R, J, yt, Tt) * this.exaggeration;
                    }
                    /**
                     * returns a Terrain Object for a tile. Unless the tile corresponds to data (e.g. tile is loading), return a flat dem object
                     * @param tileID - the tile to get the terrain for
                     * @returns the terrain data to use in the program
                     */
                    getTerrainData(R) {
                      if (!this._emptyDemTexture) {
                        const Tt = this.painter.context, Nt = new s.R({ width: 1, height: 1 }, new Uint8Array(1 * 4));
                        this._emptyDepthTexture = new Vt(Tt, Nt, Tt.gl.RGBA, { premultiply: !1 }), this._emptyDemUnpack = [0, 0, 0, 0], this._emptyDemTexture = new Vt(Tt, new s.R({ width: 1, height: 1 }), Tt.gl.RGBA, { premultiply: !1 }), this._emptyDemTexture.bind(Tt.gl.NEAREST, Tt.gl.CLAMP_TO_EDGE), this._emptyDemMatrix = s.ao([]);
                      }
                      const J = this.sourceCache.getSourceTile(R, !0);
                      if (J && J.dem && (!J.demTexture || J.needsTerrainPrepare)) {
                        const Tt = this.painter.context;
                        J.demTexture = this.painter.getTileTexture(J.dem.stride), J.demTexture ? J.demTexture.update(J.dem.getPixels(), { premultiply: !1 }) : J.demTexture = new Vt(Tt, J.dem.getPixels(), Tt.gl.RGBA, { premultiply: !1 }), J.demTexture.bind(Tt.gl.NEAREST, Tt.gl.CLAMP_TO_EDGE), J.needsTerrainPrepare = !1;
                      }
                      const yt = J && J + J.tileID.key + R.key;
                      if (yt && !this._demMatrixCache[yt]) {
                        const Tt = this.sourceCache.sourceCache._source.maxzoom;
                        let Nt = R.canonical.z - J.tileID.canonical.z;
                        R.overscaledZ > R.canonical.z && (R.canonical.z >= Tt ? Nt = R.canonical.z - Tt : s.w("cannot calculate elevation if elevation maxzoom > source.maxzoom"));
                        const be = R.canonical.x - (R.canonical.x >> Nt << Nt), Re = R.canonical.y - (R.canonical.y >> Nt << Nt), je = s.bb(new Float64Array(16), [1 / (s.X << Nt), 1 / (s.X << Nt), 0]);
                        s.J(je, je, [be * s.X, Re * s.X, 0]), this._demMatrixCache[R.key] = { matrix: je, coord: R };
                      }
                      return {
                        u_depth: 2,
                        u_terrain: 3,
                        u_terrain_dim: J && J.dem && J.dem.dim || 1,
                        u_terrain_matrix: yt ? this._demMatrixCache[R.key].matrix : this._emptyDemMatrix,
                        u_terrain_unpack: J && J.dem && J.dem.getUnpackVector() || this._emptyDemUnpack,
                        u_terrain_exaggeration: this.exaggeration,
                        texture: (J && J.demTexture || this._emptyDemTexture).texture,
                        depthTexture: (this._fboDepthTexture || this._emptyDepthTexture).texture,
                        tile: J
                      };
                    }
                    /**
                     * get a framebuffer as big as the map-div, which will be used to render depth & coords into a texture
                     * @param texture - the texture
                     * @returns the frame buffer
                     */
                    getFramebuffer(R) {
                      const J = this.painter, yt = J.width / devicePixelRatio, Tt = J.height / devicePixelRatio;
                      return this._fbo && (this._fbo.width !== yt || this._fbo.height !== Tt) && (this._fbo.destroy(), this._fboCoordsTexture.destroy(), this._fboDepthTexture.destroy(), delete this._fbo, delete this._fboDepthTexture, delete this._fboCoordsTexture), this._fboCoordsTexture || (this._fboCoordsTexture = new Vt(J.context, { width: yt, height: Tt, data: null }, J.context.gl.RGBA, { premultiply: !1 }), this._fboCoordsTexture.bind(J.context.gl.NEAREST, J.context.gl.CLAMP_TO_EDGE)), this._fboDepthTexture || (this._fboDepthTexture = new Vt(J.context, { width: yt, height: Tt, data: null }, J.context.gl.RGBA, { premultiply: !1 }), this._fboDepthTexture.bind(J.context.gl.NEAREST, J.context.gl.CLAMP_TO_EDGE)), this._fbo || (this._fbo = J.context.createFramebuffer(yt, Tt, !0, !1), this._fbo.depthAttachment.set(J.context.createRenderbuffer(J.context.gl.DEPTH_COMPONENT16, yt, Tt))), this._fbo.colorAttachment.set(R === "coords" ? this._fboCoordsTexture.texture : this._fboDepthTexture.texture), this._fbo;
                    }
                    /**
                     * create coords texture, needed to grab coordinates from canvas
                     * encode coords coordinate into 4 bytes:
                     *   - 8 lower bits for x
                     *   - 8 lower bits for y
                     *   - 4 higher bits for x
                     *   - 4 higher bits for y
                     *   - 8 bits for coordsIndex (1 .. 255) (= number of terraintile), is later setted in draw_terrain uniform value
                     * @returns the texture
                     */
                    getCoordsTexture() {
                      const R = this.painter.context;
                      if (this._coordsTexture)
                        return this._coordsTexture;
                      const J = new Uint8Array(this._coordsTextureSize * this._coordsTextureSize * 4);
                      for (let Nt = 0, be = 0; Nt < this._coordsTextureSize; Nt++)
                        for (let Re = 0; Re < this._coordsTextureSize; Re++, be += 4)
                          J[be + 0] = Re & 255, J[be + 1] = Nt & 255, J[be + 2] = Re >> 8 << 4 | Nt >> 8, J[be + 3] = 0;
                      const yt = new s.R({ width: this._coordsTextureSize, height: this._coordsTextureSize }, new Uint8Array(J.buffer)), Tt = new Vt(R, yt, R.gl.RGBA, { premultiply: !1 });
                      return Tt.bind(R.gl.NEAREST, R.gl.CLAMP_TO_EDGE), this._coordsTexture = Tt, Tt;
                    }
                    /**
                     * Reads a pixel from the coords-framebuffer and translate this to mercator.
                     * @param p - Screen-Coordinate
                     * @returns mercator coordinate for a screen pixel
                     */
                    pointCoordinate(R) {
                      this.painter.maybeDrawDepthAndCoords(!0);
                      const J = new Uint8Array(4), yt = this.painter.context, Tt = yt.gl, Nt = Math.round(R.x * this.painter.pixelRatio / devicePixelRatio), be = Math.round(R.y * this.painter.pixelRatio / devicePixelRatio), Re = Math.round(this.painter.height / devicePixelRatio);
                      yt.bindFramebuffer.set(this.getFramebuffer("coords").framebuffer), Tt.readPixels(Nt, Re - be - 1, 1, 1, Tt.RGBA, Tt.UNSIGNED_BYTE, J), yt.bindFramebuffer.set(null);
                      const je = J[0] + (J[2] >> 4 << 8), pr = J[1] + ((J[2] & 15) << 8), br = this.coordsIndex[255 - J[3]], Ar = br && this.sourceCache.getTileByID(br);
                      if (!Ar)
                        return null;
                      const qr = this._coordsTextureSize, vn = (1 << Ar.tileID.canonical.z) * qr;
                      return new s.Z((Ar.tileID.canonical.x * qr + je) / vn + Ar.tileID.wrap, (Ar.tileID.canonical.y * qr + pr) / vn, this.getElevation(Ar.tileID, je, pr, qr));
                    }
                    /**
                     * Reads the depth value from the depth-framebuffer at a given screen pixel
                     * @param p - Screen coordinate
                     * @returns depth value in clip space (between 0 and 1)
                     */
                    depthAtPoint(R) {
                      const J = new Uint8Array(4), yt = this.painter.context, Tt = yt.gl;
                      return yt.bindFramebuffer.set(this.getFramebuffer("depth").framebuffer), Tt.readPixels(R.x, this.painter.height / devicePixelRatio - R.y - 1, 1, 1, Tt.RGBA, Tt.UNSIGNED_BYTE, J), yt.bindFramebuffer.set(null), (J[0] / (256 * 256 * 256) + J[1] / (256 * 256) + J[2] / 256 + J[3]) / 256;
                    }
                    /**
                     * create a regular mesh which will be used by all terrain-tiles
                     * @returns the created regular mesh
                     */
                    getTerrainMesh() {
                      if (this._mesh)
                        return this._mesh;
                      const R = this.painter.context, J = new s.bc(), yt = new s.aY(), Tt = this.meshSize, Nt = s.X / Tt, be = Tt * Tt;
                      for (let Ar = 0; Ar <= Tt; Ar++)
                        for (let qr = 0; qr <= Tt; qr++)
                          J.emplaceBack(qr * Nt, Ar * Nt, 0);
                      for (let Ar = 0; Ar < be; Ar += Tt + 1)
                        for (let qr = 0; qr < Tt; qr++)
                          yt.emplaceBack(qr + Ar, Tt + qr + Ar + 1, Tt + qr + Ar + 2), yt.emplaceBack(qr + Ar, Tt + qr + Ar + 2, qr + Ar + 1);
                      const Re = J.length, je = Re + (Tt + 1) * 2;
                      for (const Ar of [0, 1])
                        for (let qr = 0; qr <= Tt; qr++)
                          for (const vn of [0, 1])
                            J.emplaceBack(qr * Nt, Ar * s.X, vn);
                      for (let Ar = 0; Ar < Tt * 2; Ar += 2)
                        yt.emplaceBack(je + Ar, je + Ar + 1, je + Ar + 3), yt.emplaceBack(je + Ar, je + Ar + 3, je + Ar + 2), yt.emplaceBack(Re + Ar, Re + Ar + 3, Re + Ar + 1), yt.emplaceBack(Re + Ar, Re + Ar + 2, Re + Ar + 3);
                      const pr = J.length, br = pr + (Tt + 1) * 2;
                      for (const Ar of [0, 1])
                        for (let qr = 0; qr <= Tt; qr++)
                          for (const vn of [0, 1])
                            J.emplaceBack(Ar * s.X, qr * Nt, vn);
                      for (let Ar = 0; Ar < Tt * 2; Ar += 2)
                        yt.emplaceBack(pr + Ar, pr + Ar + 1, pr + Ar + 3), yt.emplaceBack(pr + Ar, pr + Ar + 3, pr + Ar + 2), yt.emplaceBack(br + Ar, br + Ar + 3, br + Ar + 1), yt.emplaceBack(br + Ar, br + Ar + 2, br + Ar + 3);
                      return this._mesh = new Co(R.createVertexBuffer(J, Ki.members), R.createIndexBuffer(yt), s.a0.simpleSegment(0, 0, J.length, yt.length)), this._mesh;
                    }
                    /**
                     * Calculates a height of the frame around the terrain-mesh to avoid stiching between
                     * tile boundaries in different zoomlevels.
                     * @param zoom - current zoomlevel
                     * @returns the elevation delta in meters
                     */
                    getMeshFrameDelta(R) {
                      return 2 * Math.PI * s.bd / Math.pow(2, R) / 5;
                    }
                    getMinTileElevationForLngLatZoom(R, J) {
                      var yt;
                      const { tileID: Tt } = this._getOverscaledTileIDFromLngLatZoom(R, J);
                      return (yt = this.getMinMaxElevation(Tt).minElevation) !== null && yt !== void 0 ? yt : 0;
                    }
                    /**
                     * Get the minimum and maximum elevation contained in a tile. This includes any
                     * exaggeration included in the terrain.
                     *
                     * @param tileID - ID of the tile to be used as a source for the min/max elevation
                     * @returns the minimum and maximum elevation found in the tile, including the terrain's
                     * exaggeration
                     */
                    getMinMaxElevation(R) {
                      const J = this.getTerrainData(R).tile, yt = { minElevation: null, maxElevation: null };
                      return J && J.dem && (yt.minElevation = J.dem.min * this.exaggeration, yt.maxElevation = J.dem.max * this.exaggeration), yt;
                    }
                    _getOverscaledTileIDFromLngLatZoom(R, J) {
                      const yt = s.Z.fromLngLat(R.wrap()), Tt = (1 << J) * s.X, Nt = yt.x * Tt, be = yt.y * Tt, Re = Math.floor(Nt / s.X), je = Math.floor(be / s.X);
                      return {
                        tileID: new s.S(J, 0, J, Re, je),
                        mercatorX: Nt,
                        mercatorY: be
                      };
                    }
                  }
                  class la {
                    constructor(R, J, yt) {
                      this._context = R, this._size = J, this._tileSize = yt, this._objects = [], this._recentlyUsed = [], this._stamp = 0;
                    }
                    destruct() {
                      for (const R of this._objects)
                        R.texture.destroy(), R.fbo.destroy();
                    }
                    _createObject(R) {
                      const J = this._context.createFramebuffer(this._tileSize, this._tileSize, !0, !0), yt = new Vt(this._context, { width: this._tileSize, height: this._tileSize, data: null }, this._context.gl.RGBA);
                      return yt.bind(this._context.gl.LINEAR, this._context.gl.CLAMP_TO_EDGE), J.depthAttachment.set(this._context.createRenderbuffer(this._context.gl.DEPTH_STENCIL, this._tileSize, this._tileSize)), J.colorAttachment.set(yt.texture), { id: R, fbo: J, texture: yt, stamp: -1, inUse: !1 };
                    }
                    getObjectForId(R) {
                      return this._objects[R];
                    }
                    useObject(R) {
                      R.inUse = !0, this._recentlyUsed = this._recentlyUsed.filter((J) => R.id !== J), this._recentlyUsed.push(R.id);
                    }
                    stampObject(R) {
                      R.stamp = ++this._stamp;
                    }
                    getOrCreateFreeObject() {
                      for (const J of this._recentlyUsed)
                        if (!this._objects[J].inUse)
                          return this._objects[J];
                      if (this._objects.length >= this._size)
                        throw new Error("No free RenderPool available, call freeAllObjects() required!");
                      const R = this._createObject(this._objects.length);
                      return this._objects.push(R), R;
                    }
                    freeObject(R) {
                      R.inUse = !1;
                    }
                    freeAllObjects() {
                      for (const R of this._objects)
                        this.freeObject(R);
                    }
                    isFull() {
                      return this._objects.length < this._size ? !1 : this._objects.some((R) => !R.inUse) === !1;
                    }
                  }
                  const Da = {
                    background: !0,
                    fill: !0,
                    line: !0,
                    raster: !0,
                    hillshade: !0
                  };
                  class wo {
                    constructor(R, J) {
                      this.painter = R, this.terrain = J, this.pool = new la(R.context, 30, J.sourceCache.tileSize * J.qualityFactor);
                    }
                    destruct() {
                      this.pool.destruct();
                    }
                    getTexture(R) {
                      return this.pool.getObjectForId(R.rtt[this._stacks.length - 1].id).texture;
                    }
                    prepareForRender(R, J) {
                      this._stacks = [], this._prevType = null, this._rttTiles = [], this._renderableTiles = this.terrain.sourceCache.getRenderableTiles(), this._renderableLayerIds = R._order.filter((yt) => !R._layers[yt].isHidden(J)), this._coordsDescendingInv = {};
                      for (const yt in R.sourceCaches) {
                        this._coordsDescendingInv[yt] = {};
                        const Tt = R.sourceCaches[yt].getVisibleCoordinates();
                        for (const Nt of Tt) {
                          const be = this.terrain.sourceCache.getTerrainCoords(Nt);
                          for (const Re in be)
                            this._coordsDescendingInv[yt][Re] || (this._coordsDescendingInv[yt][Re] = []), this._coordsDescendingInv[yt][Re].push(be[Re]);
                        }
                      }
                      this._coordsDescendingInvStr = {};
                      for (const yt of R._order) {
                        const Tt = R._layers[yt], Nt = Tt.source;
                        if (Da[Tt.type] && !this._coordsDescendingInvStr[Nt]) {
                          this._coordsDescendingInvStr[Nt] = {};
                          for (const be in this._coordsDescendingInv[Nt])
                            this._coordsDescendingInvStr[Nt][be] = this._coordsDescendingInv[Nt][be].map((Re) => Re.key).sort().join();
                        }
                      }
                      for (const yt of this._renderableTiles)
                        for (const Tt in this._coordsDescendingInvStr) {
                          const Nt = this._coordsDescendingInvStr[Tt][yt.tileID.key];
                          Nt && Nt !== yt.rttCoords[Tt] && (yt.rtt = []);
                        }
                    }
                    /**
                     * due that switching textures is relatively slow, the render
                     * layer-by-layer context is not practicable. To bypass this problem
                     * this lines of code stack all layers and later render all at once.
                     * Because of the stylesheet possibility to mixing render-to-texture layers
                     * and 'live'-layers (f.e. symbols) it is necessary to create more stacks. For example
                     * a symbol-layer is in between of fill-layers.
                     * @param layer - the layer to render
                     * @returns if true layer is rendered to texture, otherwise false
                     */
                    renderLayer(R) {
                      if (R.isHidden(this.painter.transform.zoom))
                        return !1;
                      const J = R.type, yt = this.painter, Tt = this._renderableLayerIds[this._renderableLayerIds.length - 1] === R.id;
                      if (Da[J] && ((!this._prevType || !Da[this._prevType]) && this._stacks.push([]), this._prevType = J, this._stacks[this._stacks.length - 1].push(R.id), !Tt))
                        return !0;
                      if (Da[this._prevType] || Da[J] && Tt) {
                        this._prevType = J;
                        const Nt = this._stacks.length - 1, be = this._stacks[Nt] || [];
                        for (const Re of this._renderableTiles) {
                          if (this.pool.isFull() && (Xo(this.painter, this.terrain, this._rttTiles), this._rttTiles = [], this.pool.freeAllObjects()), this._rttTiles.push(Re), Re.rtt[Nt]) {
                            const pr = this.pool.getObjectForId(Re.rtt[Nt].id);
                            if (pr.stamp === Re.rtt[Nt].stamp) {
                              this.pool.useObject(pr);
                              continue;
                            }
                          }
                          const je = this.pool.getOrCreateFreeObject();
                          this.pool.useObject(je), this.pool.stampObject(je), Re.rtt[Nt] = { id: je.id, stamp: je.stamp }, yt.context.bindFramebuffer.set(je.fbo.framebuffer), yt.context.clear({ color: s.aN.transparent, stencil: 0 }), yt.currentStencilSource = void 0;
                          for (let pr = 0; pr < be.length; pr++) {
                            const br = yt.style._layers[be[pr]], Ar = br.source ? this._coordsDescendingInv[br.source][Re.tileID.key] : [Re.tileID];
                            yt.context.viewport.set([0, 0, je.fbo.width, je.fbo.height]), yt._renderTileClippingMasks(br, Ar), yt.renderLayer(yt, yt.style.sourceCaches[br.source], br, Ar), br.source && (Re.rttCoords[br.source] = this._coordsDescendingInvStr[br.source][Re.tileID.key]);
                          }
                        }
                        return Xo(this.painter, this.terrain, this._rttTiles), this._rttTiles = [], this.pool.freeAllObjects(), Da[J];
                      }
                      return !1;
                    }
                  }
                  const uo = {
                    "AttributionControl.ToggleAttribution": "Toggle attribution",
                    "AttributionControl.MapFeedback": "Map feedback",
                    "FullscreenControl.Enter": "Enter fullscreen",
                    "FullscreenControl.Exit": "Exit fullscreen",
                    "GeolocateControl.FindMyLocation": "Find my location",
                    "GeolocateControl.LocationNotAvailable": "Location not available",
                    "LogoControl.Title": "MapLibre logo",
                    "Map.Title": "Map",
                    "Marker.Title": "Map marker",
                    "NavigationControl.ResetBearing": "Reset bearing to north",
                    "NavigationControl.ZoomIn": "Zoom in",
                    "NavigationControl.ZoomOut": "Zoom out",
                    "Popup.Close": "Close popup",
                    "ScaleControl.Feet": "ft",
                    "ScaleControl.Meters": "m",
                    "ScaleControl.Kilometers": "km",
                    "ScaleControl.Miles": "mi",
                    "ScaleControl.NauticalMiles": "nm",
                    "TerrainControl.Enable": "Enable terrain",
                    "TerrainControl.Disable": "Disable terrain",
                    "CooperativeGesturesHandler.WindowsHelpText": "Use Ctrl + scroll to zoom the map",
                    "CooperativeGesturesHandler.MacHelpText": "Use ⌘ + scroll to zoom the map",
                    "CooperativeGesturesHandler.MobileHelpText": "Use two fingers to move the map"
                  }, _a = M.version, co = -2, $a = 22, po = 0, Mo = 60, Zo = 85, _o = {
                    hash: !1,
                    interactive: !0,
                    bearingSnap: 7,
                    attributionControl: zi,
                    maplibreLogo: !1,
                    failIfMajorPerformanceCaveat: !1,
                    preserveDrawingBuffer: !1,
                    refreshExpiredTiles: !0,
                    scrollZoom: !0,
                    minZoom: co,
                    maxZoom: $a,
                    minPitch: po,
                    maxPitch: Mo,
                    boxZoom: !0,
                    dragRotate: !0,
                    dragPan: !0,
                    keyboard: !0,
                    doubleClickZoom: !0,
                    touchZoomRotate: !0,
                    touchPitch: !0,
                    cooperativeGestures: !1,
                    trackResize: !0,
                    center: [0, 0],
                    zoom: 0,
                    bearing: 0,
                    pitch: 0,
                    renderWorldCopies: !0,
                    maxTileCacheSize: null,
                    maxTileCacheZoomLevels: s.a.MAX_TILE_CACHE_ZOOM_LEVELS,
                    transformRequest: null,
                    transformCameraUpdate: null,
                    fadeDuration: 300,
                    crossSourceCollisions: !0,
                    clickTolerance: 3,
                    localIdeographFontFamily: "sans-serif",
                    pitchWithRotate: !0,
                    validateStyle: !0,
                    /**Because GL MAX_TEXTURE_SIZE is usually at least 4096px. */
                    maxCanvasSize: [4096, 4096],
                    cancelPendingTileRequestsWhileZooming: !0
                  };
                  let ko = class extends Ei {
                    constructor(R) {
                      s.be.mark(s.bf.create);
                      const J = Object.assign(Object.assign({}, _o), R);
                      if (J.minZoom != null && J.maxZoom != null && J.minZoom > J.maxZoom)
                        throw new Error("maxZoom must be greater than or equal to minZoom");
                      if (J.minPitch != null && J.maxPitch != null && J.minPitch > J.maxPitch)
                        throw new Error("maxPitch must be greater than or equal to minPitch");
                      if (J.minPitch != null && J.minPitch < po)
                        throw new Error(`minPitch must be greater than or equal to ${po}`);
                      if (J.maxPitch != null && J.maxPitch > Zo)
                        throw new Error(`maxPitch must be less than or equal to ${Zo}`);
                      const yt = new wa(J.minZoom, J.maxZoom, J.minPitch, J.maxPitch, J.renderWorldCopies);
                      if (super(yt, { bearingSnap: J.bearingSnap }), this._idleTriggered = !1, this._crossFadingFactor = 1, this._renderTaskQueue = new Hi(), this._controls = [], this._mapId = s.a4(), this._contextLost = (Nt) => {
                        Nt.preventDefault(), this._frameRequest && (this._frameRequest.abort(), this._frameRequest = null), this.fire(new s.k("webglcontextlost", { originalEvent: Nt }));
                      }, this._contextRestored = (Nt) => {
                        this._setupPainter(), this.resize(), this._update(), this.fire(new s.k("webglcontextrestored", { originalEvent: Nt }));
                      }, this._onMapScroll = (Nt) => {
                        if (Nt.target === this._container)
                          return this._container.scrollTop = 0, this._container.scrollLeft = 0, !1;
                      }, this._onWindowOnline = () => {
                        this._update();
                      }, this._interactive = J.interactive, this._maxTileCacheSize = J.maxTileCacheSize, this._maxTileCacheZoomLevels = J.maxTileCacheZoomLevels, this._failIfMajorPerformanceCaveat = J.failIfMajorPerformanceCaveat === !0, this._preserveDrawingBuffer = J.preserveDrawingBuffer === !0, this._antialias = J.antialias === !0, this._trackResize = J.trackResize === !0, this._bearingSnap = J.bearingSnap, this._refreshExpiredTiles = J.refreshExpiredTiles === !0, this._fadeDuration = J.fadeDuration, this._crossSourceCollisions = J.crossSourceCollisions === !0, this._collectResourceTiming = J.collectResourceTiming === !0, this._locale = Object.assign(Object.assign({}, uo), J.locale), this._clickTolerance = J.clickTolerance, this._overridePixelRatio = J.pixelRatio, this._maxCanvasSize = J.maxCanvasSize, this.transformCameraUpdate = J.transformCameraUpdate, this.cancelPendingTileRequestsWhileZooming = J.cancelPendingTileRequestsWhileZooming === !0, this._imageQueueHandle = H.addThrottleControl(() => this.isMoving()), this._requestManager = new F(J.transformRequest), typeof J.container == "string") {
                        if (this._container = document.getElementById(J.container), !this._container)
                          throw new Error(`Container '${J.container}' not found.`);
                      } else if (J.container instanceof HTMLElement)
                        this._container = J.container;
                      else
                        throw new Error("Invalid type: 'container' must be a String or HTMLElement.");
                      if (J.maxBounds && this.setMaxBounds(J.maxBounds), this._setupContainer(), this._setupPainter(), this.on("move", () => this._update(!1)).on("moveend", () => this._update(!1)).on("zoom", () => this._update(!0)).on("terrain", () => {
                        this.painter.terrainFacilitator.dirty = !0, this._update(!0);
                      }).once("idle", () => {
                        this._idleTriggered = !0;
                      }), typeof window < "u") {
                        addEventListener("online", this._onWindowOnline, !1);
                        let Nt = !1;
                        const be = il((Re) => {
                          this._trackResize && !this._removed && this.resize(Re)._update();
                        }, 50);
                        this._resizeObserver = new ResizeObserver((Re) => {
                          if (!Nt) {
                            Nt = !0;
                            return;
                          }
                          be(Re);
                        }), this._resizeObserver.observe(this._container);
                      }
                      this.handlers = new xi(this, J);
                      const Tt = typeof J.hash == "string" && J.hash || void 0;
                      this._hash = J.hash && new al(Tt).addTo(this), (!this._hash || !this._hash._onHashChange()) && (this.jumpTo({
                        center: J.center,
                        zoom: J.zoom,
                        bearing: J.bearing,
                        pitch: J.pitch
                      }), J.bounds && (this.resize(), this.fitBounds(J.bounds, s.e({}, J.fitBoundsOptions, { duration: 0 })))), this.resize(), this._localIdeographFontFamily = J.localIdeographFontFamily, this._validateStyle = J.validateStyle, J.style && this.setStyle(J.style, { localIdeographFontFamily: J.localIdeographFontFamily }), J.attributionControl && this.addControl(new Vi(typeof J.attributionControl == "boolean" ? void 0 : J.attributionControl)), J.maplibreLogo && this.addControl(new Di(), J.logoPosition), this.on("style.load", () => {
                        this.transform.unmodified && this.jumpTo(this.style.stylesheet);
                      }), this.on("data", (Nt) => {
                        this._update(Nt.dataType === "style"), this.fire(new s.k(`${Nt.dataType}data`, Nt));
                      }), this.on("dataloading", (Nt) => {
                        this.fire(new s.k(`${Nt.dataType}dataloading`, Nt));
                      }), this.on("dataabort", (Nt) => {
                        this.fire(new s.k("sourcedataabort", Nt));
                      });
                    }
                    /**
                     * @internal
                     * Returns a unique number for this map instance which is used for the MapLoadEvent
                     * to make sure we only fire one event per instantiated map object.
                     * @returns the uniq map ID
                     */
                    _getMapId() {
                      return this._mapId;
                    }
                    /**
                     * Adds an {@link IControl} to the map, calling `control.onAdd(this)`.
                     *
                     * An {@link ErrorEvent} will be fired if the image parameter is invald.
                     *
                     * @param control - The {@link IControl} to add.
                     * @param position - position on the map to which the control will be added.
                     * Valid values are `'top-left'`, `'top-right'`, `'bottom-left'`, and `'bottom-right'`. Defaults to `'top-right'`.
                     * @example
                     * Add zoom and rotation controls to the map.
                     * ```ts
                     * map.addControl(new NavigationControl());
                     * ```
                     * @see [Display map navigation controls](https://maplibre.org/maplibre-gl-js/docs/examples/navigation/)
                     */
                    addControl(R, J) {
                      if (J === void 0 && (R.getDefaultPosition ? J = R.getDefaultPosition() : J = "top-right"), !R || !R.onAdd)
                        return this.fire(new s.j(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));
                      const yt = R.onAdd(this);
                      this._controls.push(R);
                      const Tt = this._controlPositions[J];
                      return J.indexOf("bottom") !== -1 ? Tt.insertBefore(yt, Tt.firstChild) : Tt.appendChild(yt), this;
                    }
                    /**
                     * Removes the control from the map.
                     *
                     * An {@link ErrorEvent} will be fired if the image parameter is invald.
                     *
                     * @param control - The {@link IControl} to remove.
                     * @example
                     * ```ts
                     * // Define a new navigation control.
                     * let navigation = new NavigationControl();
                     * // Add zoom and rotation controls to the map.
                     * map.addControl(navigation);
                     * // Remove zoom and rotation controls from the map.
                     * map.removeControl(navigation);
                     * ```
                     */
                    removeControl(R) {
                      if (!R || !R.onRemove)
                        return this.fire(new s.j(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));
                      const J = this._controls.indexOf(R);
                      return J > -1 && this._controls.splice(J, 1), R.onRemove(this), this;
                    }
                    /**
                     * Checks if a control exists on the map.
                     *
                     * @param control - The {@link IControl} to check.
                     * @returns true if map contains control.
                     * @example
                     * ```ts
                     * // Define a new navigation control.
                     * let navigation = new NavigationControl();
                     * // Add zoom and rotation controls to the map.
                     * map.addControl(navigation);
                     * // Check that the navigation control exists on the map.
                     * map.hasControl(navigation);
                     * ```
                     */
                    hasControl(R) {
                      return this._controls.indexOf(R) > -1;
                    }
                    calculateCameraOptionsFromTo(R, J, yt, Tt) {
                      return Tt == null && this.terrain && (Tt = this.terrain.getElevationForLngLatZoom(yt, this.transform.tileZoom)), super.calculateCameraOptionsFromTo(R, J, yt, Tt);
                    }
                    /**
                     * Resizes the map according to the dimensions of its
                     * `container` element.
                     *
                     * Checks if the map container size changed and updates the map if it has changed.
                     * This method must be called after the map's `container` is resized programmatically
                     * or when the map is shown after being initially hidden with CSS.
                     *
                     * Triggers the following events: `movestart`, `move`, `moveend`, and `resize`.
                     *
                     * @param eventData - Additional properties to be passed to `movestart`, `move`, `resize`, and `moveend`
                     * events that get triggered as a result of resize. This can be useful for differentiating the
                     * source of an event (for example, user-initiated or programmatically-triggered events).
                     * @example
                     * Resize the map when the map container is shown after being initially hidden with CSS.
                     * ```ts
                     * let mapDiv = document.getElementById('map');
                     * if (mapDiv.style.visibility === true) map.resize();
                     * ```
                     */
                    resize(R) {
                      var J;
                      const yt = this._containerDimensions(), Tt = yt[0], Nt = yt[1], be = this._getClampedPixelRatio(Tt, Nt);
                      if (this._resizeCanvas(Tt, Nt, be), this.painter.resize(Tt, Nt, be), this.painter.overLimit()) {
                        const je = this.painter.context.gl;
                        this._maxCanvasSize = [je.drawingBufferWidth, je.drawingBufferHeight];
                        const pr = this._getClampedPixelRatio(Tt, Nt);
                        this._resizeCanvas(Tt, Nt, pr), this.painter.resize(Tt, Nt, pr);
                      }
                      this.transform.resize(Tt, Nt), (J = this._requestedCameraState) === null || J === void 0 || J.resize(Tt, Nt);
                      const Re = !this._moving;
                      return Re && (this.stop(), this.fire(new s.k("movestart", R)).fire(new s.k("move", R))), this.fire(new s.k("resize", R)), Re && this.fire(new s.k("moveend", R)), this;
                    }
                    /**
                     * @internal
                     * Return the map's pixel ratio eventually scaled down to respect maxCanvasSize.
                     * Internally you should use this and not getPixelRatio().
                     */
                    _getClampedPixelRatio(R, J) {
                      const { 0: yt, 1: Tt } = this._maxCanvasSize, Nt = this.getPixelRatio(), be = R * Nt, Re = J * Nt, je = be > yt ? yt / be : 1, pr = Re > Tt ? Tt / Re : 1;
                      return Math.min(je, pr) * Nt;
                    }
                    /**
                     * Returns the map's pixel ratio.
                     * Note that the pixel ratio actually applied may be lower to respect maxCanvasSize.
                     * @returns The pixel ratio.
                     */
                    getPixelRatio() {
                      var R;
                      return (R = this._overridePixelRatio) !== null && R !== void 0 ? R : devicePixelRatio;
                    }
                    /**
                     * Sets the map's pixel ratio. This allows to override `devicePixelRatio`.
                     * After this call, the canvas' `width` attribute will be `container.clientWidth * pixelRatio`
                     * and its height attribute will be `container.clientHeight * pixelRatio`.
                     * Set this to null to disable `devicePixelRatio` override.
                     * Note that the pixel ratio actually applied may be lower to respect maxCanvasSize.
                     * @param pixelRatio - The pixel ratio.
                     */
                    setPixelRatio(R) {
                      this._overridePixelRatio = R, this.resize();
                    }
                    /**
                     * Returns the map's geographical bounds. When the bearing or pitch is non-zero, the visible region is not
                     * an axis-aligned rectangle, and the result is the smallest bounds that encompasses the visible region.
                     * @returns The geographical bounds of the map as {@link LngLatBounds}.
                     * @example
                     * ```ts
                     * let bounds = map.getBounds();
                     * ```
                     */
                    getBounds() {
                      return this.transform.getBounds();
                    }
                    /**
                     * Returns the maximum geographical bounds the map is constrained to, or `null` if none set.
                     * @returns The map object.
                     * @example
                     * ```ts
                     * let maxBounds = map.getMaxBounds();
                     * ```
                     */
                    getMaxBounds() {
                      return this.transform.getMaxBounds();
                    }
                    /**
                     * Sets or clears the map's geographical bounds.
                     *
                     * Pan and zoom operations are constrained within these bounds.
                     * If a pan or zoom is performed that would
                     * display regions outside these bounds, the map will
                     * instead display a position and zoom level
                     * as close as possible to the operation's request while still
                     * remaining within the bounds.
                     *
                     * @param bounds - The maximum bounds to set. If `null` or `undefined` is provided, the function removes the map's maximum bounds.
                     * @example
                     * Define bounds that conform to the `LngLatBoundsLike` object as set the max bounds.
                     * ```ts
                     * let bounds = [
                     *   [-74.04728, 40.68392], // [west, south]
                     *   [-73.91058, 40.87764]  // [east, north]
                     * ];
                     * map.setMaxBounds(bounds);
                     * ```
                     */
                    setMaxBounds(R) {
                      return this.transform.setMaxBounds(De.convert(R)), this._update();
                    }
                    /**
                     * Sets or clears the map's minimum zoom level.
                     * If the map's current zoom level is lower than the new minimum,
                     * the map will zoom to the new minimum.
                     *
                     * It is not always possible to zoom out and reach the set `minZoom`.
                     * Other factors such as map height may restrict zooming. For example,
                     * if the map is 512px tall it will not be possible to zoom below zoom 0
                     * no matter what the `minZoom` is set to.
                     *
                     * A {@link ErrorEvent} event will be fired if minZoom is out of bounds.
                     *
                     * @param minZoom - The minimum zoom level to set (-2 - 24).
                     * If `null` or `undefined` is provided, the function removes the current minimum zoom (i.e. sets it to -2).
                     * @example
                     * ```ts
                     * map.setMinZoom(12.25);
                     * ```
                     */
                    setMinZoom(R) {
                      if (R = R ?? co, R >= co && R <= this.transform.maxZoom)
                        return this.transform.minZoom = R, this._update(), this.getZoom() < R && this.setZoom(R), this;
                      throw new Error(`minZoom must be between ${co} and the current maxZoom, inclusive`);
                    }
                    /**
                     * Returns the map's minimum allowable zoom level.
                     *
                     * @returns minZoom
                     * @example
                     * ```ts
                     * let minZoom = map.getMinZoom();
                     * ```
                     */
                    getMinZoom() {
                      return this.transform.minZoom;
                    }
                    /**
                     * Sets or clears the map's maximum zoom level.
                     * If the map's current zoom level is higher than the new maximum,
                     * the map will zoom to the new maximum.
                     *
                     * A {@link ErrorEvent} event will be fired if minZoom is out of bounds.
                     *
                     * @param maxZoom - The maximum zoom level to set.
                     * If `null` or `undefined` is provided, the function removes the current maximum zoom (sets it to 22).
                     * @example
                     * ```ts
                     * map.setMaxZoom(18.75);
                     * ```
                     */
                    setMaxZoom(R) {
                      if (R = R ?? $a, R >= this.transform.minZoom)
                        return this.transform.maxZoom = R, this._update(), this.getZoom() > R && this.setZoom(R), this;
                      throw new Error("maxZoom must be greater than the current minZoom");
                    }
                    /**
                     * Returns the map's maximum allowable zoom level.
                     *
                     * @returns The maxZoom
                     * @example
                     * ```ts
                     * let maxZoom = map.getMaxZoom();
                     * ```
                     */
                    getMaxZoom() {
                      return this.transform.maxZoom;
                    }
                    /**
                     * Sets or clears the map's minimum pitch.
                     * If the map's current pitch is lower than the new minimum,
                     * the map will pitch to the new minimum.
                     *
                     * A {@link ErrorEvent} event will be fired if minPitch is out of bounds.
                     *
                     * @param minPitch - The minimum pitch to set (0-85). Values greater than 60 degrees are experimental and may result in rendering issues. If you encounter any, please raise an issue with details in the MapLibre project.
                     * If `null` or `undefined` is provided, the function removes the current minimum pitch (i.e. sets it to 0).
                     */
                    setMinPitch(R) {
                      if (R = R ?? po, R < po)
                        throw new Error(`minPitch must be greater than or equal to ${po}`);
                      if (R >= po && R <= this.transform.maxPitch)
                        return this.transform.minPitch = R, this._update(), this.getPitch() < R && this.setPitch(R), this;
                      throw new Error(`minPitch must be between ${po} and the current maxPitch, inclusive`);
                    }
                    /**
                     * Returns the map's minimum allowable pitch.
                     *
                     * @returns The minPitch
                     */
                    getMinPitch() {
                      return this.transform.minPitch;
                    }
                    /**
                     * Sets or clears the map's maximum pitch.
                     * If the map's current pitch is higher than the new maximum,
                     * the map will pitch to the new maximum.
                     *
                     * A {@link ErrorEvent} event will be fired if maxPitch is out of bounds.
                     *
                     * @param maxPitch - The maximum pitch to set (0-85). Values greater than 60 degrees are experimental and may result in rendering issues. If you encounter any, please raise an issue with details in the MapLibre project.
                     * If `null` or `undefined` is provided, the function removes the current maximum pitch (sets it to 60).
                     */
                    setMaxPitch(R) {
                      if (R = R ?? Mo, R > Zo)
                        throw new Error(`maxPitch must be less than or equal to ${Zo}`);
                      if (R >= this.transform.minPitch)
                        return this.transform.maxPitch = R, this._update(), this.getPitch() > R && this.setPitch(R), this;
                      throw new Error("maxPitch must be greater than the current minPitch");
                    }
                    /**
                     * Returns the map's maximum allowable pitch.
                     *
                     * @returns The maxPitch
                     */
                    getMaxPitch() {
                      return this.transform.maxPitch;
                    }
                    /**
                     * Returns the state of `renderWorldCopies`. If `true`, multiple copies of the world will be rendered side by side beyond -180 and 180 degrees longitude. If set to `false`:
                     *
                     * - When the map is zoomed out far enough that a single representation of the world does not fill the map's entire
                     * container, there will be blank space beyond 180 and -180 degrees longitude.
                     * - Features that cross 180 and -180 degrees longitude will be cut in two (with one portion on the right edge of the
                     * map and the other on the left edge of the map) at every zoom level.
                     * @returns The renderWorldCopies
                     * @example
                     * ```ts
                     * let worldCopiesRendered = map.getRenderWorldCopies();
                     * ```
                     * @see [Render world copies](https://maplibre.org/maplibre-gl-js/docs/examples/render-world-copies/)
                     */
                    getRenderWorldCopies() {
                      return this.transform.renderWorldCopies;
                    }
                    /**
                     * Sets the state of `renderWorldCopies`.
                     *
                     * @param renderWorldCopies - If `true`, multiple copies of the world will be rendered side by side beyond -180 and 180 degrees longitude. If set to `false`:
                     *
                     * - When the map is zoomed out far enough that a single representation of the world does not fill the map's entire
                     * container, there will be blank space beyond 180 and -180 degrees longitude.
                     * - Features that cross 180 and -180 degrees longitude will be cut in two (with one portion on the right edge of the
                     * map and the other on the left edge of the map) at every zoom level.
                     *
                     * `undefined` is treated as `true`, `null` is treated as `false`.
                     * @example
                     * ```ts
                     * map.setRenderWorldCopies(true);
                     * ```
                     * @see [Render world copies](https://maplibre.org/maplibre-gl-js/docs/examples/render-world-copies/)
                     */
                    setRenderWorldCopies(R) {
                      return this.transform.renderWorldCopies = R, this._update();
                    }
                    /**
                     * Returns a [Point](https://github.com/mapbox/point-geometry) representing pixel coordinates, relative to the map's `container`,
                     * that correspond to the specified geographical location.
                     *
                     * @param lnglat - The geographical location to project.
                     * @returns The [Point](https://github.com/mapbox/point-geometry) corresponding to `lnglat`, relative to the map's `container`.
                     * @example
                     * ```ts
                     * let coordinate = [-122.420679, 37.772537];
                     * let point = map.project(coordinate);
                     * ```
                     */
                    project(R) {
                      return this.transform.locationPoint(s.N.convert(R), this.style && this.terrain);
                    }
                    /**
                     * Returns a {@link LngLat} representing geographical coordinates that correspond
                     * to the specified pixel coordinates.
                     *
                     * @param point - The pixel coordinates to unproject.
                     * @returns The {@link LngLat} corresponding to `point`.
                     * @example
                     * ```ts
                     * map.on('click', (e) => {
                     *   // When the map is clicked, get the geographic coordinate.
                     *   let coordinate = map.unproject(e.point);
                     * });
                     * ```
                     */
                    unproject(R) {
                      return this.transform.pointLocation(s.P.convert(R), this.terrain);
                    }
                    /**
                     * Returns true if the map is panning, zooming, rotating, or pitching due to a camera animation or user gesture.
                     * @returns true if the map is moving.
                     * @example
                     * ```ts
                     * let isMoving = map.isMoving();
                     * ```
                     */
                    isMoving() {
                      var R;
                      return this._moving || ((R = this.handlers) === null || R === void 0 ? void 0 : R.isMoving());
                    }
                    /**
                     * Returns true if the map is zooming due to a camera animation or user gesture.
                     * @returns true if the map is zooming.
                     * @example
                     * ```ts
                     * let isZooming = map.isZooming();
                     * ```
                     */
                    isZooming() {
                      var R;
                      return this._zooming || ((R = this.handlers) === null || R === void 0 ? void 0 : R.isZooming());
                    }
                    /**
                     * Returns true if the map is rotating due to a camera animation or user gesture.
                     * @returns true if the map is rotating.
                     * @example
                     * ```ts
                     * map.isRotating();
                     * ```
                     */
                    isRotating() {
                      var R;
                      return this._rotating || ((R = this.handlers) === null || R === void 0 ? void 0 : R.isRotating());
                    }
                    _createDelegatedListener(R, J, yt) {
                      if (R === "mouseenter" || R === "mouseover") {
                        let Tt = !1;
                        return { layer: J, listener: yt, delegates: { mousemove: (Re) => {
                          const je = this.getLayer(J) ? this.queryRenderedFeatures(Re.point, { layers: [J] }) : [];
                          je.length ? Tt || (Tt = !0, yt.call(this, new qa(R, this, Re.originalEvent, { features: je }))) : Tt = !1;
                        }, mouseout: () => {
                          Tt = !1;
                        } } };
                      } else if (R === "mouseleave" || R === "mouseout") {
                        let Tt = !1;
                        return { layer: J, listener: yt, delegates: { mousemove: (Re) => {
                          (this.getLayer(J) ? this.queryRenderedFeatures(Re.point, { layers: [J] }) : []).length ? Tt = !0 : Tt && (Tt = !1, yt.call(this, new qa(R, this, Re.originalEvent)));
                        }, mouseout: (Re) => {
                          Tt && (Tt = !1, yt.call(this, new qa(R, this, Re.originalEvent)));
                        } } };
                      } else {
                        const Tt = (Nt) => {
                          const be = this.getLayer(J) ? this.queryRenderedFeatures(Nt.point, { layers: [J] }) : [];
                          be.length && (Nt.features = be, yt.call(this, Nt), delete Nt.features);
                        };
                        return { layer: J, listener: yt, delegates: { [R]: Tt } };
                      }
                    }
                    on(R, J, yt) {
                      if (yt === void 0)
                        return super.on(R, J);
                      const Tt = this._createDelegatedListener(R, J, yt);
                      this._delegatedListeners = this._delegatedListeners || {}, this._delegatedListeners[R] = this._delegatedListeners[R] || [], this._delegatedListeners[R].push(Tt);
                      for (const Nt in Tt.delegates)
                        this.on(Nt, Tt.delegates[Nt]);
                      return this;
                    }
                    once(R, J, yt) {
                      if (yt === void 0)
                        return super.once(R, J);
                      const Tt = this._createDelegatedListener(R, J, yt);
                      for (const Nt in Tt.delegates)
                        this.once(Nt, Tt.delegates[Nt]);
                      return this;
                    }
                    off(R, J, yt) {
                      if (yt === void 0)
                        return super.off(R, J);
                      const Tt = (Nt) => {
                        const be = Nt[R];
                        for (let Re = 0; Re < be.length; Re++) {
                          const je = be[Re];
                          if (je.layer === J && je.listener === yt) {
                            for (const pr in je.delegates)
                              this.off(pr, je.delegates[pr]);
                            return be.splice(Re, 1), this;
                          }
                        }
                      };
                      return this._delegatedListeners && this._delegatedListeners[R] && Tt(this._delegatedListeners), this;
                    }
                    /**
                     * Returns an array of MapGeoJSONFeature objects
                     * representing visible features that satisfy the query parameters.
                     *
                     * @param geometryOrOptions - (optional) The geometry of the query region:
                     * either a single point or southwest and northeast points describing a bounding box.
                     * Omitting this parameter (i.e. calling {@link Map#queryRenderedFeatures} with zero arguments,
                     * or with only a `options` argument) is equivalent to passing a bounding box encompassing the entire
                     * map viewport.
                     * The geometryOrOptions can receive a {@link QueryRenderedFeaturesOptions} only to support a situation where the function receives only one parameter which is the options parameter.
                     * @param options - (optional) Options object.
                     *
                     * @returns An array of MapGeoJSONFeature objects.
                     *
                     * The `properties` value of each returned feature object contains the properties of its source feature. For GeoJSON sources, only
                     * string and numeric property values are supported (i.e. `null`, `Array`, and `Object` values are not supported).
                     *
                     * Each feature includes top-level `layer`, `source`, and `sourceLayer` properties. The `layer` property is an object
                     * representing the style layer to  which the feature belongs. Layout and paint properties in this object contain values
                     * which are fully evaluated for the given zoom level and feature.
                     *
                     * Only features that are currently rendered are included. Some features will **not** be included, like:
                     *
                     * - Features from layers whose `visibility` property is `"none"`.
                     * - Features from layers whose zoom range excludes the current zoom level.
                     * - Symbol features that have been hidden due to text or icon collision.
                     *
                     * Features from all other layers are included, including features that may have no visible
                     * contribution to the rendered result; for example, because the layer's opacity or color alpha component is set to
                     * 0.
                     *
                     * The topmost rendered feature appears first in the returned array, and subsequent features are sorted by
                     * descending z-order. Features that are rendered multiple times (due to wrapping across the antemeridian at low
                     * zoom levels) are returned only once (though subject to the following caveat).
                     *
                     * Because features come from tiled vector data or GeoJSON data that is converted to tiles internally, feature
                     * geometries may be split or duplicated across tile boundaries and, as a result, features may appear multiple
                     * times in query results. For example, suppose there is a highway running through the bounding rectangle of a query.
                     * The results of the query will be those parts of the highway that lie within the map tiles covering the bounding
                     * rectangle, even if the highway extends into other tiles, and the portion of the highway within each map tile
                     * will be returned as a separate feature. Similarly, a point feature near a tile boundary may appear in multiple
                     * tiles due to tile buffering.
                     *
                     * @example
                     * Find all features at a point
                     * ```ts
                     * let features = map.queryRenderedFeatures(
                     *   [20, 35],
                     *   { layers: ['my-layer-name'] }
                     * );
                     * ```
                     *
                     * @example
                     * Find all features within a static bounding box
                     * ```ts
                     * let features = map.queryRenderedFeatures(
                     *   [[10, 20], [30, 50]],
                     *   { layers: ['my-layer-name'] }
                     * );
                     * ```
                     *
                     * @example
                     * Find all features within a bounding box around a point
                     * ```ts
                     * let width = 10;
                     * let height = 20;
                     * let features = map.queryRenderedFeatures([
                     *   [point.x - width / 2, point.y - height / 2],
                     *   [point.x + width / 2, point.y + height / 2]
                     * ], { layers: ['my-layer-name'] });
                     * ```
                     *
                     * @example
                     * Query all rendered features from a single layer
                     * ```ts
                     * let features = map.queryRenderedFeatures({ layers: ['my-layer-name'] });
                     * ```
                     * @see [Get features under the mouse pointer](https://maplibre.org/maplibre-gl-js/docs/examples/queryrenderedfeatures/)
                     */
                    queryRenderedFeatures(R, J) {
                      if (!this.style)
                        return [];
                      let yt;
                      const Tt = R instanceof s.P || Array.isArray(R), Nt = Tt ? R : [[0, 0], [this.transform.width, this.transform.height]];
                      if (J = J || (Tt ? {} : R) || {}, Nt instanceof s.P || typeof Nt[0] == "number")
                        yt = [s.P.convert(Nt)];
                      else {
                        const be = s.P.convert(Nt[0]), Re = s.P.convert(Nt[1]);
                        yt = [be, new s.P(Re.x, be.y), Re, new s.P(be.x, Re.y), be];
                      }
                      return this.style.queryRenderedFeatures(yt, J, this.transform);
                    }
                    /**
                     * Returns an array of MapGeoJSONFeature objects
                     * representing features within the specified vector tile or GeoJSON source that satisfy the query parameters.
                     *
                     * @param sourceId - The ID of the vector tile or GeoJSON source to query.
                     * @param parameters - The options object.
                     * @returns An array of MapGeoJSONFeature objects.
                     *
                     * In contrast to {@link Map#queryRenderedFeatures}, this function returns all features matching the query parameters,
                     * whether or not they are rendered by the current style (i.e. visible). The domain of the query includes all currently-loaded
                     * vector tiles and GeoJSON source tiles: this function does not check tiles outside the currently
                     * visible viewport.
                     *
                     * Because features come from tiled vector data or GeoJSON data that is converted to tiles internally, feature
                     * geometries may be split or duplicated across tile boundaries and, as a result, features may appear multiple
                     * times in query results. For example, suppose there is a highway running through the bounding rectangle of a query.
                     * The results of the query will be those parts of the highway that lie within the map tiles covering the bounding
                     * rectangle, even if the highway extends into other tiles, and the portion of the highway within each map tile
                     * will be returned as a separate feature. Similarly, a point feature near a tile boundary may appear in multiple
                     * tiles due to tile buffering.
                     *
                     * @example
                     * Find all features in one source layer in a vector source
                     * ```ts
                     * let features = map.querySourceFeatures('your-source-id', {
                     *   sourceLayer: 'your-source-layer'
                     * });
                     * ```
                     *
                     */
                    querySourceFeatures(R, J) {
                      return this.style.querySourceFeatures(R, J);
                    }
                    /**
                     * Updates the map's MapLibre style object with a new value.
                     *
                     * If a style is already set when this is used and options.diff is set to true, the map renderer will attempt to compare the given style
                     * against the map's current state and perform only the changes necessary to make the map style match the desired state. Changes in sprites
                     * (images used for icons and patterns) and glyphs (fonts for label text) **cannot** be diffed. If the sprites or fonts used in the current
                     * style and the given style are different in any way, the map renderer will force a full update, removing the current style and building
                     * the given one from scratch.
                     *
                     *
                     * @param style - A JSON object conforming to the schema described in the
                     * [MapLibre Style Specification](https://maplibre.org/maplibre-style-spec/), or a URL to such JSON.
                     * @param options - The options object.
                     *
                     * @example
                     * ```ts
                     * map.setStyle("https://demotiles.maplibre.org/style.json");
                     *
                     * map.setStyle('https://demotiles.maplibre.org/style.json', {
                     *   transformStyle: (previousStyle, nextStyle) => ({
                     *       ...nextStyle,
                     *       sources: {
                     *           ...nextStyle.sources,
                     *           // copy a source from previous style
                     *           'osm': previousStyle.sources.osm
                     *       },
                     *       layers: [
                     *           // background layer
                     *           nextStyle.layers[0],
                     *           // copy a layer from previous style
                     *           previousStyle.layers[0],
                     *           // other layers from the next style
                     *           ...nextStyle.layers.slice(1).map(layer => {
                     *               // hide the layers we don't need from demotiles style
                     *               if (layer.id.startsWith('geolines')) {
                     *                   layer.layout = {...layer.layout || {}, visibility: 'none'};
                     *               // filter out US polygons
                     *               } else if (layer.id.startsWith('coastline') || layer.id.startsWith('countries')) {
                     *                   layer.filter = ['!=', ['get', 'ADM0_A3'], 'USA'];
                     *               }
                     *               return layer;
                     *           })
                     *       ]
                     *   })
                     * });
                     * ```
                     */
                    setStyle(R, J) {
                      return J = s.e({}, {
                        localIdeographFontFamily: this._localIdeographFontFamily,
                        validate: this._validateStyle
                      }, J), J.diff !== !1 && J.localIdeographFontFamily === this._localIdeographFontFamily && this.style && R ? (this._diffStyle(R, J), this) : (this._localIdeographFontFamily = J.localIdeographFontFamily, this._updateStyle(R, J));
                    }
                    /**
                     *  Updates the requestManager's transform request with a new function
                     *
                     * @param transformRequest - A callback run before the Map makes a request for an external URL. The callback can be used to modify the url, set headers, or set the credentials property for cross-origin requests.
                     * Expected to return an object with a `url` property and optionally `headers` and `credentials` properties
                     *
                     * @example
                     * ```ts
                     * map.setTransformRequest((url: string, resourceType: string) => {});
                     * ```
                     */
                    setTransformRequest(R) {
                      return this._requestManager.setTransformRequest(R), this;
                    }
                    _getUIString(R) {
                      const J = this._locale[R];
                      if (J == null)
                        throw new Error(`Missing UI string '${R}'`);
                      return J;
                    }
                    _updateStyle(R, J) {
                      if (J.transformStyle && this.style && !this.style._loaded) {
                        this.style.once("style.load", () => this._updateStyle(R, J));
                        return;
                      }
                      const yt = this.style && J.transformStyle ? this.style.serialize() : void 0;
                      if (this.style && (this.style.setEventedParent(null), this.style._remove(!R)), R)
                        this.style = new Ss(this, J || {});
                      else
                        return delete this.style, this;
                      return this.style.setEventedParent(this, { style: this.style }), typeof R == "string" ? this.style.loadURL(R, J, yt) : this.style.loadJSON(R, J, yt), this;
                    }
                    _lazyInitEmptyStyle() {
                      this.style || (this.style = new Ss(this, {}), this.style.setEventedParent(this, { style: this.style }), this.style.loadEmpty());
                    }
                    _diffStyle(R, J) {
                      if (typeof R == "string") {
                        const yt = R, Tt = this._requestManager.transformRequest(
                          yt,
                          "Style"
                          /* ResourceType.Style */
                        );
                        s.h(Tt, new AbortController()).then((Nt) => {
                          this._updateDiff(Nt.data, J);
                        }).catch((Nt) => {
                          Nt && this.fire(new s.j(Nt));
                        });
                      } else typeof R == "object" && this._updateDiff(R, J);
                    }
                    _updateDiff(R, J) {
                      try {
                        this.style.setState(R, J) && this._update(!0);
                      } catch (yt) {
                        s.w(`Unable to perform style diff: ${yt.message || yt.error || yt}.  Rebuilding the style from scratch.`), this._updateStyle(R, J);
                      }
                    }
                    /**
                     * Returns the map's MapLibre style object, a JSON object which can be used to recreate the map's style.
                     *
                     * @returns The map's style JSON object.
                     *
                     * @example
                     * ```ts
                     * let styleJson = map.getStyle();
                     * ```
                     *
                     */
                    getStyle() {
                      if (this.style)
                        return this.style.serialize();
                    }
                    /**
                     * Returns a Boolean indicating whether the map's style is fully loaded.
                     *
                     * @returns A Boolean indicating whether the style is fully loaded.
                     *
                     * @example
                     * ```ts
                     * let styleLoadStatus = map.isStyleLoaded();
                     * ```
                     */
                    isStyleLoaded() {
                      return this.style ? this.style.loaded() : s.w("There is no style added to the map.");
                    }
                    /**
                     * Adds a source to the map's style.
                     *
                     * Events triggered:
                     *
                     * Triggers the `source.add` event.
                     *
                     * @param id - The ID of the source to add. Must not conflict with existing sources.
                     * @param source - The source object, conforming to the
                     * MapLibre Style Specification's [source definition](https://maplibre.org/maplibre-style-spec/sources) or
                     * {@link CanvasSourceSpecification}.
                     * @example
                     * ```ts
                     * map.addSource('my-data', {
                     *   type: 'vector',
                     *   url: 'https://demotiles.maplibre.org/tiles/tiles.json'
                     * });
                     * ```
                     * @example
                     * ```ts
                     * map.addSource('my-data', {
                     *   "type": "geojson",
                     *   "data": {
                     *     "type": "Feature",
                     *     "geometry": {
                     *       "type": "Point",
                     *       "coordinates": [-77.0323, 38.9131]
                     *     },
                     *     "properties": {
                     *       "title": "Mapbox DC",
                     *       "marker-symbol": "monument"
                     *     }
                     *   }
                     * });
                     * ```
                     * @see GeoJSON source: [Add live realtime data](https://maplibre.org/maplibre-gl-js/docs/examples/live-geojson/)
                     */
                    addSource(R, J) {
                      return this._lazyInitEmptyStyle(), this.style.addSource(R, J), this._update(!0);
                    }
                    /**
                     * Returns a Boolean indicating whether the source is loaded. Returns `true` if the source with
                     * the given ID in the map's style has no outstanding network requests, otherwise `false`.
                     *
                     * A {@link ErrorEvent} event will be fired if there is no source wit the specified ID.
                     *
                     * @param id - The ID of the source to be checked.
                     * @returns A Boolean indicating whether the source is loaded.
                     * @example
                     * ```ts
                     * let sourceLoaded = map.isSourceLoaded('bathymetry-data');
                     * ```
                     */
                    isSourceLoaded(R) {
                      const J = this.style && this.style.sourceCaches[R];
                      if (J === void 0) {
                        this.fire(new s.j(new Error(`There is no source with ID '${R}'`)));
                        return;
                      }
                      return J.loaded();
                    }
                    /**
                     * Loads a 3D terrain mesh, based on a "raster-dem" source.
                     *
                     * Triggers the `terrain` event.
                     *
                     * @param options - Options object.
                     * @example
                     * ```ts
                     * map.setTerrain({ source: 'terrain' });
                     * ```
                     */
                    setTerrain(R) {
                      if (this.style._checkLoaded(), this._terrainDataCallback && this.style.off("data", this._terrainDataCallback), !R)
                        this.terrain && this.terrain.sourceCache.destruct(), this.terrain = null, this.painter.renderToTexture && this.painter.renderToTexture.destruct(), this.painter.renderToTexture = null, this.transform.minElevationForCurrentTile = 0, this.transform.elevation = 0;
                      else {
                        const J = this.style.sourceCaches[R.source];
                        if (!J)
                          throw new Error(`cannot load terrain, because there exists no source with ID: ${R.source}`);
                        this.terrain === null && J.reload();
                        for (const yt in this.style._layers) {
                          const Tt = this.style._layers[yt];
                          Tt.type === "hillshade" && Tt.source === R.source && s.w("You are using the same source for a hillshade layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.");
                        }
                        this.terrain = new da(this.painter, J, R), this.painter.renderToTexture = new wo(this.painter, this.terrain), this.transform.minElevationForCurrentTile = this.terrain.getMinTileElevationForLngLatZoom(this.transform.center, this.transform.tileZoom), this.transform.elevation = this.terrain.getElevationForLngLatZoom(this.transform.center, this.transform.tileZoom), this._terrainDataCallback = (yt) => {
                          yt.dataType === "style" ? this.terrain.sourceCache.freeRtt() : yt.dataType === "source" && yt.tile && (yt.sourceId === R.source && !this._elevationFreeze && (this.transform.minElevationForCurrentTile = this.terrain.getMinTileElevationForLngLatZoom(this.transform.center, this.transform.tileZoom), this.transform.elevation = this.terrain.getElevationForLngLatZoom(this.transform.center, this.transform.tileZoom)), this.terrain.sourceCache.freeRtt(yt.tile.tileID));
                        }, this.style.on("data", this._terrainDataCallback);
                      }
                      return this.fire(new s.k("terrain", { terrain: R })), this;
                    }
                    /**
                     * Get the terrain-options if terrain is loaded
                     * @returns the TerrainSpecification passed to setTerrain
                     * @example
                     * ```ts
                     * map.getTerrain(); // { source: 'terrain' };
                     * ```
                     */
                    getTerrain() {
                      var R, J;
                      return (J = (R = this.terrain) === null || R === void 0 ? void 0 : R.options) !== null && J !== void 0 ? J : null;
                    }
                    /**
                     * Returns a Boolean indicating whether all tiles in the viewport from all sources on
                     * the style are loaded.
                     *
                     * @returns A Boolean indicating whether all tiles are loaded.
                     * @example
                     * ```ts
                     * let tilesLoaded = map.areTilesLoaded();
                     * ```
                     */
                    areTilesLoaded() {
                      const R = this.style && this.style.sourceCaches;
                      for (const J in R) {
                        const Tt = R[J]._tiles;
                        for (const Nt in Tt) {
                          const be = Tt[Nt];
                          if (!(be.state === "loaded" || be.state === "errored"))
                            return !1;
                        }
                      }
                      return !0;
                    }
                    /**
                     * Removes a source from the map's style.
                     *
                     * @param id - The ID of the source to remove.
                     * @example
                     * ```ts
                     * map.removeSource('bathymetry-data');
                     * ```
                     */
                    removeSource(R) {
                      return this.style.removeSource(R), this._update(!0);
                    }
                    /**
                     * Returns the source with the specified ID in the map's style.
                     *
                     * This method is often used to update a source using the instance members for the relevant
                     * source type as defined in classes that derive from {@link Source}.
                     * For example, setting the `data` for a GeoJSON source or updating the `url` and `coordinates`
                     * of an image source.
                     *
                     * @param id - The ID of the source to get.
                     * @returns The style source with the specified ID or `undefined` if the ID
                     * corresponds to no existing sources.
                     * The shape of the object varies by source type.
                     * A list of options for each source type is available on the MapLibre Style Specification's
                     * [Sources](https://maplibre.org/maplibre-style-spec/sources/) page.
                     * @example
                     * ```ts
                     * let sourceObject = map.getSource('points');
                     * ```
                     * @see [Create a draggable point](https://maplibre.org/maplibre-gl-js/docs/examples/drag-a-point/)
                     * @see [Animate a point](https://maplibre.org/maplibre-gl-js/docs/examples/animate-point-along-line/)
                     * @see [Add live realtime data](https://maplibre.org/maplibre-gl-js/docs/examples/live-geojson/)
                     */
                    getSource(R) {
                      return this.style.getSource(R);
                    }
                    /**
                     * Add an image to the style. This image can be displayed on the map like any other icon in the style's
                     * sprite using the image's ID with
                     * [`icon-image`](https://maplibre.org/maplibre-style-spec/layers/#layout-symbol-icon-image),
                     * [`background-pattern`](https://maplibre.org/maplibre-style-spec/layers/#paint-background-background-pattern),
                     * [`fill-pattern`](https://maplibre.org/maplibre-style-spec/layers/#paint-fill-fill-pattern),
                     * or [`line-pattern`](https://maplibre.org/maplibre-style-spec/layers/#paint-line-line-pattern).
                     *
                     * A {@link ErrorEvent} event will be fired if the image parameter is invalid or there is not enough space in the sprite to add this image.
                     *
                     * @param id - The ID of the image.
                     * @param image - The image as an `HTMLImageElement`, `ImageData`, `ImageBitmap` or object with `width`, `height`, and `data`
                     * properties with the same format as `ImageData`.
                     * @param options - Options object.
                     * @example
                     * ```ts
                     * // If the style's sprite does not already contain an image with ID 'cat',
                     * // add the image 'cat-icon.png' to the style's sprite with the ID 'cat'.
                     * const image = await map.loadImage('https://upload.wikimedia.org/wikipedia/commons/thumb/6/60/Cat_silhouette.svg/400px-Cat_silhouette.svg.png');
                     * if (!map.hasImage('cat')) map.addImage('cat', image.data);
                     *
                     * // Add a stretchable image that can be used with `icon-text-fit`
                     * // In this example, the image is 600px wide by 400px high.
                     * const image = await map.loadImage('https://upload.wikimedia.org/wikipedia/commons/8/89/Black_and_White_Boxed_%28bordered%29.png');
                     * if (map.hasImage('border-image')) return;
                     * map.addImage('border-image', image.data, {
                     *     content: [16, 16, 300, 384], // place text over left half of image, avoiding the 16px border
                     *     stretchX: [[16, 584]], // stretch everything horizontally except the 16px border
                     *     stretchY: [[16, 384]], // stretch everything vertically except the 16px border
                     * });
                     * ```
                     * @see Use `HTMLImageElement`: [Add an icon to the map](https://maplibre.org/maplibre-gl-js/docs/examples/add-image/)
                     * @see Use `ImageData`: [Add a generated icon to the map](https://maplibre.org/maplibre-gl-js/docs/examples/add-image-generated/)
                     */
                    addImage(R, J, yt = {}) {
                      const { pixelRatio: Tt = 1, sdf: Nt = !1, stretchX: be, stretchY: Re, content: je, textFitWidth: pr, textFitHeight: br } = yt;
                      this._lazyInitEmptyStyle();
                      const Ar = 0;
                      if (J instanceof HTMLImageElement || s.b(J)) {
                        const { width: qr, height: vn, data: bn } = d.getImageData(J);
                        this.style.addImage(R, { data: new s.R({ width: qr, height: vn }, bn), pixelRatio: Tt, stretchX: be, stretchY: Re, content: je, textFitWidth: pr, textFitHeight: br, sdf: Nt, version: Ar });
                      } else {
                        if (J.width === void 0 || J.height === void 0)
                          return this.fire(new s.j(new Error("Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));
                        {
                          const { width: qr, height: vn, data: bn } = J, Rn = J;
                          return this.style.addImage(R, {
                            data: new s.R({ width: qr, height: vn }, new Uint8Array(bn)),
                            pixelRatio: Tt,
                            stretchX: be,
                            stretchY: Re,
                            content: je,
                            textFitWidth: pr,
                            textFitHeight: br,
                            sdf: Nt,
                            version: Ar,
                            userImage: Rn
                          }), Rn.onAdd && Rn.onAdd(this, R), this;
                        }
                      }
                    }
                    /**
                     * Update an existing image in a style. This image can be displayed on the map like any other icon in the style's
                     * sprite using the image's ID with
                     * [`icon-image`](https://maplibre.org/maplibre-style-spec/layers/#layout-symbol-icon-image),
                     * [`background-pattern`](https://maplibre.org/maplibre-style-spec/layers/#paint-background-background-pattern),
                     * [`fill-pattern`](https://maplibre.org/maplibre-style-spec/layers/#paint-fill-fill-pattern),
                     * or [`line-pattern`](https://maplibre.org/maplibre-style-spec/layers/#paint-line-line-pattern).
                     *
                     * An {@link ErrorEvent} will be fired if the image parameter is invald.
                     *
                     * @param id - The ID of the image.
                     * @param image - The image as an `HTMLImageElement`, `ImageData`, `ImageBitmap` or object with `width`, `height`, and `data`
                     * properties with the same format as `ImageData`.
                     * @example
                     * ```ts
                     * // If an image with the ID 'cat' already exists in the style's sprite,
                     * // replace that image with a new image, 'other-cat-icon.png'.
                     * if (map.hasImage('cat')) map.updateImage('cat', './other-cat-icon.png');
                     * ```
                     */
                    updateImage(R, J) {
                      const yt = this.style.getImage(R);
                      if (!yt)
                        return this.fire(new s.j(new Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));
                      const Tt = J instanceof HTMLImageElement || s.b(J) ? d.getImageData(J) : J, { width: Nt, height: be, data: Re } = Tt;
                      if (Nt === void 0 || be === void 0)
                        return this.fire(new s.j(new Error("Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));
                      if (Nt !== yt.data.width || be !== yt.data.height)
                        return this.fire(new s.j(new Error("The width and height of the updated image must be that same as the previous version of the image")));
                      const je = !(J instanceof HTMLImageElement || s.b(J));
                      return yt.data.replace(Re, je), this.style.updateImage(R, yt), this;
                    }
                    /**
                     * Returns an image, specified by ID, currently available in the map.
                     * This includes both images from the style's original sprite
                     * and any images that have been added at runtime using {@link Map#addImage}.
                     *
                     * @param id - The ID of the image.
                     * @returns An image in the map with the specified ID.
                     *
                     * @example
                     * ```ts
                     * let coffeeShopIcon = map.getImage("coffee_cup");
                     * ```
                     */
                    getImage(R) {
                      return this.style.getImage(R);
                    }
                    /**
                     * Check whether or not an image with a specific ID exists in the style. This checks both images
                     * in the style's original sprite and any images
                     * that have been added at runtime using {@link Map#addImage}.
                     *
                     * An {@link ErrorEvent} will be fired if the image parameter is invald.
                     *
                     * @param id - The ID of the image.
                     *
                     * @returns A Boolean indicating whether the image exists.
                     * @example
                     * Check if an image with the ID 'cat' exists in the style's sprite.
                     * ```ts
                     * let catIconExists = map.hasImage('cat');
                     * ```
                     */
                    hasImage(R) {
                      return R ? !!this.style.getImage(R) : (this.fire(new s.j(new Error("Missing required image id"))), !1);
                    }
                    /**
                     * Remove an image from a style. This can be an image from the style's original
                     * sprite or any images
                     * that have been added at runtime using {@link Map#addImage}.
                     *
                     * @param id - The ID of the image.
                     *
                     * @example
                     * ```ts
                     * // If an image with the ID 'cat' exists in
                     * // the style's sprite, remove it.
                     * if (map.hasImage('cat')) map.removeImage('cat');
                     * ```
                     */
                    removeImage(R) {
                      this.style.removeImage(R);
                    }
                    /**
                     * Load an image from an external URL to be used with {@link Map#addImage}. External
                     * domains must support [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS).
                     *
                     * @param url - The URL of the image file. Image file must be in png, webp, or jpg format.
                     * @returns a promise that is resolved when the image is loaded
                     *
                     * @example
                     * Load an image from an external URL.
                     * ```ts
                     * const response = await map.loadImage('https://picsum.photos/50/50');
                     * // Add the loaded image to the style's sprite with the ID 'photo'.
                     * map.addImage('photo', response.data);
                     * ```
                     * @see [Add an icon to the map](https://maplibre.org/maplibre-gl-js/docs/examples/add-image/)
                     */
                    loadImage(R) {
                      return H.getImage(this._requestManager.transformRequest(
                        R,
                        "Image"
                        /* ResourceType.Image */
                      ), new AbortController());
                    }
                    /**
                     * Returns an Array of strings containing the IDs of all images currently available in the map.
                     * This includes both images from the style's original sprite
                     * and any images that have been added at runtime using {@link Map#addImage}.
                     *
                     * @returns An Array of strings containing the names of all sprites/images currently available in the map.
                     *
                     * @example
                     * ```ts
                     * let allImages = map.listImages();
                     * ```
                     */
                    listImages() {
                      return this.style.listImages();
                    }
                    /**
                     * Adds a [MapLibre style layer](https://maplibre.org/maplibre-style-spec/layers)
                     * to the map's style.
                     *
                     * A layer defines how data from a specified source will be styled. Read more about layer types
                     * and available paint and layout properties in the [MapLibre Style Specification](https://maplibre.org/maplibre-style-spec/layers).
                     *
                     * @param layer - The layer to add,
                     * conforming to either the MapLibre Style Specification's [layer definition](https://maplibre.org/maplibre-style-spec/layers) or,
                     * less commonly, the {@link CustomLayerInterface} specification. Can also be a layer definition with an embedded source definition.
                     * The MapLibre Style Specification's layer definition is appropriate for most layers.
                     *
                     * @param beforeId - The ID of an existing layer to insert the new layer before,
                     * resulting in the new layer appearing visually beneath the existing layer.
                     * If this argument is not specified, the layer will be appended to the end of the layers array
                     * and appear visually above all other layers.
                     *
                     * @example
                     * Add a circle layer with a vector source
                     * ```ts
                     * map.addLayer({
                     *   id: 'points-of-interest',
                     *   source: {
                     *     type: 'vector',
                     *     url: 'https://demotiles.maplibre.org/tiles/tiles.json'
                     *   },
                     *   'source-layer': 'poi_label',
                     *   type: 'circle',
                     *   paint: {
                     *     // MapLibre Style Specification paint properties
                     *   },
                     *   layout: {
                     *     // MapLibre Style Specification layout properties
                     *   }
                     * });
                     * ```
                     *
                     * @example
                     * Define a source before using it to create a new layer
                     * ```ts
                     * map.addSource('state-data', {
                     *   type: 'geojson',
                     *   data: 'path/to/data.geojson'
                     * });
                     *
                     * map.addLayer({
                     *   id: 'states',
                     *   // References the GeoJSON source defined above
                     *   // and does not require a `source-layer`
                     *   source: 'state-data',
                     *   type: 'symbol',
                     *   layout: {
                     *     // Set the label content to the
                     *     // feature's `name` property
                     *     text-field: ['get', 'name']
                     *   }
                     * });
                     * ```
                     *
                     * @example
                     * Add a new symbol layer before an existing layer
                     * ```ts
                     * map.addLayer({
                     *   id: 'states',
                     *   // References a source that's already been defined
                     *   source: 'state-data',
                     *   type: 'symbol',
                     *   layout: {
                     *     // Set the label content to the
                     *     // feature's `name` property
                     *     text-field: ['get', 'name']
                     *   }
                     * // Add the layer before the existing `cities` layer
                     * }, 'cities');
                     * ```
                     * @see [Create and style clusters](https://maplibre.org/maplibre-gl-js/docs/examples/cluster/)
                     * @see [Add a vector tile source](https://maplibre.org/maplibre-gl-js/docs/examples/vector-source/)
                     * @see [Add a WMS source](https://maplibre.org/maplibre-gl-js/docs/examples/wms/)
                     */
                    addLayer(R, J) {
                      return this._lazyInitEmptyStyle(), this.style.addLayer(R, J), this._update(!0);
                    }
                    /**
                     * Moves a layer to a different z-position.
                     *
                     * @param id - The ID of the layer to move.
                     * @param beforeId - The ID of an existing layer to insert the new layer before. When viewing the map, the `id` layer will appear beneath the `beforeId` layer. If `beforeId` is omitted, the layer will be appended to the end of the layers array and appear above all other layers on the map.
                     *
                     * @example
                     * Move a layer with ID 'polygon' before the layer with ID 'country-label'. The `polygon` layer will appear beneath the `country-label` layer on the map.
                     * ```ts
                     * map.moveLayer('polygon', 'country-label');
                     * ```
                     */
                    moveLayer(R, J) {
                      return this.style.moveLayer(R, J), this._update(!0);
                    }
                    /**
                     * Removes the layer with the given ID from the map's style.
                     *
                     * An {@link ErrorEvent} will be fired if the image parameter is invald.
                     *
                     * @param id - The ID of the layer to remove
                     *
                     * @example
                     * If a layer with ID 'state-data' exists, remove it.
                     * ```ts
                     * if (map.getLayer('state-data')) map.removeLayer('state-data');
                     * ```
                     */
                    removeLayer(R) {
                      return this.style.removeLayer(R), this._update(!0);
                    }
                    /**
                     * Returns the layer with the specified ID in the map's style.
                     *
                     * @param id - The ID of the layer to get.
                     * @returns The layer with the specified ID, or `undefined`
                     * if the ID corresponds to no existing layers.
                     *
                     * @example
                     * ```ts
                     * let stateDataLayer = map.getLayer('state-data');
                     * ```
                     * @see [Filter symbols by toggling a list](https://maplibre.org/maplibre-gl-js/docs/examples/filter-markers/)
                     * @see [Filter symbols by text input](https://maplibre.org/maplibre-gl-js/docs/examples/filter-markers-by-input/)
                     */
                    getLayer(R) {
                      return this.style.getLayer(R);
                    }
                    /**
                     * Return the ids of all layers currently in the style, including custom layers, in order.
                     *
                     * @returns ids of layers, in order
                     *
                     * @example
                     * ```ts
                     * const orderedLayerIds = map.getLayersOrder();
                     * ```
                     */
                    getLayersOrder() {
                      return this.style.getLayersOrder();
                    }
                    /**
                     * Sets the zoom extent for the specified style layer. The zoom extent includes the
                     * [minimum zoom level](https://maplibre.org/maplibre-style-spec/layers/#minzoom)
                     * and [maximum zoom level](https://maplibre.org/maplibre-style-spec/layers/#maxzoom))
                     * at which the layer will be rendered.
                     *
                     * Note: For style layers using vector sources, style layers cannot be rendered at zoom levels lower than the
                     * minimum zoom level of the _source layer_ because the data does not exist at those zoom levels. If the minimum
                     * zoom level of the source layer is higher than the minimum zoom level defined in the style layer, the style
                     * layer will not be rendered at all zoom levels in the zoom range.
                     *
                     * @param layerId - The ID of the layer to which the zoom extent will be applied.
                     * @param minzoom - The minimum zoom to set (0-24).
                     * @param maxzoom - The maximum zoom to set (0-24).
                     *
                     * @example
                     * ```ts
                     * map.setLayerZoomRange('my-layer', 2, 5);
                     * ```
                     */
                    setLayerZoomRange(R, J, yt) {
                      return this.style.setLayerZoomRange(R, J, yt), this._update(!0);
                    }
                    /**
                     * Sets the filter for the specified style layer.
                     *
                     * Filters control which features a style layer renders from its source.
                     * Any feature for which the filter expression evaluates to `true` will be
                     * rendered on the map. Those that are false will be hidden.
                     *
                     * Use `setFilter` to show a subset of your source data.
                     *
                     * To clear the filter, pass `null` or `undefined` as the second parameter.
                     *
                     * @param layerId - The ID of the layer to which the filter will be applied.
                     * @param filter - The filter, conforming to the MapLibre Style Specification's
                     * [filter definition](https://maplibre.org/maplibre-style-spec/layers/#filter).  If `null` or `undefined` is provided, the function removes any existing filter from the layer.
                     * @param options - Options object.
                     *
                     * @example
                     * Display only features with the 'name' property 'USA'
                     * ```ts
                     * map.setFilter('my-layer', ['==', ['get', 'name'], 'USA']);
                     * ```
                     * @example
                     * Display only features with five or more 'available-spots'
                     * ```ts
                     * map.setFilter('bike-docks', ['>=', ['get', 'available-spots'], 5]);
                     * ```
                     * @example
                     * Remove the filter for the 'bike-docks' style layer
                     * ```ts
                     * map.setFilter('bike-docks', null);
                     * ```
                     * @see [Create a timeline animation](https://maplibre.org/maplibre-gl-js/docs/examples/timeline-animation/)
                     */
                    setFilter(R, J, yt = {}) {
                      return this.style.setFilter(R, J, yt), this._update(!0);
                    }
                    /**
                     * Returns the filter applied to the specified style layer.
                     *
                     * @param layerId - The ID of the style layer whose filter to get.
                     * @returns The layer's filter.
                     */
                    getFilter(R) {
                      return this.style.getFilter(R);
                    }
                    /**
                     * Sets the value of a paint property in the specified style layer.
                     *
                     * @param layerId - The ID of the layer to set the paint property in.
                     * @param name - The name of the paint property to set.
                     * @param value - The value of the paint property to set.
                     * Must be of a type appropriate for the property, as defined in the [MapLibre Style Specification](https://maplibre.org/maplibre-style-spec/).
                     * Pass `null` to unset the existing value.
                     * @param options - Options object.
                     * @example
                     * ```ts
                     * map.setPaintProperty('my-layer', 'fill-color', '#faafee');
                     * ```
                     * @see [Change a layer's color with buttons](https://maplibre.org/maplibre-gl-js/docs/examples/color-switcher/)
                     * @see [Create a draggable point](https://maplibre.org/maplibre-gl-js/docs/examples/drag-a-point/)
                     */
                    setPaintProperty(R, J, yt, Tt = {}) {
                      return this.style.setPaintProperty(R, J, yt, Tt), this._update(!0);
                    }
                    /**
                     * Returns the value of a paint property in the specified style layer.
                     *
                     * @param layerId - The ID of the layer to get the paint property from.
                     * @param name - The name of a paint property to get.
                     * @returns The value of the specified paint property.
                     */
                    getPaintProperty(R, J) {
                      return this.style.getPaintProperty(R, J);
                    }
                    /**
                     * Sets the value of a layout property in the specified style layer.
                     *
                     * @param layerId - The ID of the layer to set the layout property in.
                     * @param name - The name of the layout property to set.
                     * @param value - The value of the layout property. Must be of a type appropriate for the property, as defined in the [MapLibre Style Specification](https://maplibre.org/maplibre-style-spec/).
                     * @param options - The options object.
                     * @example
                     * ```ts
                     * map.setLayoutProperty('my-layer', 'visibility', 'none');
                     * ```
                     */
                    setLayoutProperty(R, J, yt, Tt = {}) {
                      return this.style.setLayoutProperty(R, J, yt, Tt), this._update(!0);
                    }
                    /**
                     * Returns the value of a layout property in the specified style layer.
                     *
                     * @param layerId - The ID of the layer to get the layout property from.
                     * @param name - The name of the layout property to get.
                     * @returns The value of the specified layout property.
                     */
                    getLayoutProperty(R, J) {
                      return this.style.getLayoutProperty(R, J);
                    }
                    /**
                     * Sets the value of the style's glyphs property.
                     *
                     * @param glyphsUrl - Glyph URL to set. Must conform to the [MapLibre Style Specification](https://maplibre.org/maplibre-style-spec/glyphs/).
                     * @param options - Options object.
                     * @example
                     * ```ts
                     * map.setGlyphs('https://demotiles.maplibre.org/font/{fontstack}/{range}.pbf');
                     * ```
                     */
                    setGlyphs(R, J = {}) {
                      return this._lazyInitEmptyStyle(), this.style.setGlyphs(R, J), this._update(!0);
                    }
                    /**
                     * Returns the value of the style's glyphs URL
                     *
                     * @returns glyphs Style's glyphs url
                     */
                    getGlyphs() {
                      return this.style.getGlyphsUrl();
                    }
                    /**
                     * Adds a sprite to the map's style. Fires the `style` event.
                     *
                     * @param id - The ID of the sprite to add. Must not conflict with existing sprites.
                     * @param url - The URL to load the sprite from
                     * @param options - Options object.
                     * @example
                     * ```ts
                     * map.addSprite('sprite-two', 'http://example.com/sprite-two');
                     * ```
                     */
                    addSprite(R, J, yt = {}) {
                      return this._lazyInitEmptyStyle(), this.style.addSprite(R, J, yt, (Tt) => {
                        Tt || this._update(!0);
                      }), this;
                    }
                    /**
                     * Removes the sprite from the map's style. Fires the `style` event.
                     *
                     * @param id - The ID of the sprite to remove. If the sprite is declared as a single URL, the ID must be "default".
                     * @example
                     * ```ts
                     * map.removeSprite('sprite-two');
                     * map.removeSprite('default');
                     * ```
                     */
                    removeSprite(R) {
                      return this._lazyInitEmptyStyle(), this.style.removeSprite(R), this._update(!0);
                    }
                    /**
                     * Returns the as-is value of the style's sprite.
                     *
                     * @returns style's sprite list of id-url pairs
                     */
                    getSprite() {
                      return this.style.getSprite();
                    }
                    /**
                     * Sets the value of the style's sprite property.
                     *
                     * @param spriteUrl - Sprite URL to set.
                     * @param options - Options object.
                     * @example
                     * ```ts
                     * map.setSprite('YOUR_SPRITE_URL');
                     * ```
                     */
                    setSprite(R, J = {}) {
                      return this._lazyInitEmptyStyle(), this.style.setSprite(R, J, (yt) => {
                        yt || this._update(!0);
                      }), this;
                    }
                    /**
                     * Sets the any combination of light values.
                     *
                     * @param light - Light properties to set. Must conform to the [MapLibre Style Specification](https://maplibre.org/maplibre-style-spec/light).
                     * @param options - Options object.
                     *
                     * @example
                     * ```ts
                     * let layerVisibility = map.getLayoutProperty('my-layer', 'visibility');
                     * ```
                     */
                    setLight(R, J = {}) {
                      return this._lazyInitEmptyStyle(), this.style.setLight(R, J), this._update(!0);
                    }
                    /**
                     * Returns the value of the light object.
                     *
                     * @returns light Light properties of the style.
                     */
                    getLight() {
                      return this.style.getLight();
                    }
                    /**
                     * Loads sky and fog defined by {@link SkySpecification} onto the map.
                     * Note: The fog only shows when using the terrain 3D feature.
                     * @param sky - Sky properties to set. Must conform to the [MapLibre Style Specification](https://maplibre.org/maplibre-gl-js-docs/style-spec/#sky).
                     * @returns `this`
                     * @example
                     * ```ts
                     * map.setSky({ 'sky-color': '#00f' });
                     * ```
                     */
                    setSky(R) {
                      return this._lazyInitEmptyStyle(), this.style.setSky(R), this._update(!0);
                    }
                    /**
                     * Returns the value of the sky object.
                     *
                     * @returns sky Sky properties of the style.
                     */
                    getSky() {
                      return this.style.getSky();
                    }
                    /**
                     * Sets the `state` of a feature.
                     * A feature's `state` is a set of user-defined key-value pairs that are assigned to a feature at runtime.
                     * When using this method, the `state` object is merged with any existing key-value pairs in the feature's state.
                     * Features are identified by their `feature.id` attribute, which can be any number or string.
                     *
                     * This method can only be used with sources that have a `feature.id` attribute. The `feature.id` attribute can be defined in three ways:
                     *
                     * - For vector or GeoJSON sources, including an `id` attribute in the original data file.
                     * - For vector or GeoJSON sources, using the [`promoteId`](https://maplibre.org/maplibre-style-spec/sources/#vector-promoteId) option at the time the source is defined.
                     * - For GeoJSON sources, using the [`generateId`](https://maplibre.org/maplibre-style-spec/sources/#geojson-generateId) option to auto-assign an `id` based on the feature's index in the source data. If you change feature data using `map.getSource('some id').setData(..)`, you may need to re-apply state taking into account updated `id` values.
                     *
                     * _Note: You can use the [`feature-state` expression](https://maplibre.org/maplibre-style-spec/expressions/#feature-state) to access the values in a feature's state object for the purposes of styling._
                     *
                     * @param feature - Feature identifier. Feature objects returned from
                     * {@link Map#queryRenderedFeatures} or event handlers can be used as feature identifiers.
                     * @param state - A set of key-value pairs. The values should be valid JSON types.
                     *
                     * @example
                     * ```ts
                     * // When the mouse moves over the `my-layer` layer, update
                     * // the feature state for the feature under the mouse
                     * map.on('mousemove', 'my-layer', (e) => {
                     *   if (e.features.length > 0) {
                     *     map.setFeatureState({
                     *       source: 'my-source',
                     *       sourceLayer: 'my-source-layer',
                     *       id: e.features[0].id,
                     *     }, {
                     *       hover: true
                     *     });
                     *   }
                     * });
                     * ```
                     * @see [Create a hover effect](https://maplibre.org/maplibre-gl-js/docs/examples/hover-styles/)
                     */
                    setFeatureState(R, J) {
                      return this.style.setFeatureState(R, J), this._update();
                    }
                    /**
                     * Removes the `state` of a feature, setting it back to the default behavior.
                     * If only a `target.source` is specified, it will remove the state for all features from that source.
                     * If `target.id` is also specified, it will remove all keys for that feature's state.
                     * If `key` is also specified, it removes only that key from that feature's state.
                     * Features are identified by their `feature.id` attribute, which can be any number or string.
                     *
                     * @param target - Identifier of where to remove state. It can be a source, a feature, or a specific key of feature.
                     * Feature objects returned from {@link Map#queryRenderedFeatures} or event handlers can be used as feature identifiers.
                     * @param key - (optional) The key in the feature state to reset.
                     * @example
                     * Reset the entire state object for all features in the `my-source` source
                     * ```ts
                     * map.removeFeatureState({
                     *   source: 'my-source'
                     * });
                     * ```
                     *
                     * @example
                     * When the mouse leaves the `my-layer` layer,
                     * reset the entire state object for the
                     * feature under the mouse
                     * ```ts
                     * map.on('mouseleave', 'my-layer', (e) => {
                     *   map.removeFeatureState({
                     *     source: 'my-source',
                     *     sourceLayer: 'my-source-layer',
                     *     id: e.features[0].id
                     *   });
                     * });
                     * ```
                     *
                     * @example
                     * When the mouse leaves the `my-layer` layer,
                     * reset only the `hover` key-value pair in the
                     * state for the feature under the mouse
                     * ```ts
                     * map.on('mouseleave', 'my-layer', (e) => {
                     *   map.removeFeatureState({
                     *     source: 'my-source',
                     *     sourceLayer: 'my-source-layer',
                     *     id: e.features[0].id
                     *   }, 'hover');
                     * });
                     * ```
                     */
                    removeFeatureState(R, J) {
                      return this.style.removeFeatureState(R, J), this._update();
                    }
                    /**
                     * Gets the `state` of a feature.
                     * A feature's `state` is a set of user-defined key-value pairs that are assigned to a feature at runtime.
                     * Features are identified by their `feature.id` attribute, which can be any number or string.
                     *
                     * _Note: To access the values in a feature's state object for the purposes of styling the feature, use the [`feature-state` expression](https://maplibre.org/maplibre-style-spec/expressions/#feature-state)._
                     *
                     * @param feature - Feature identifier. Feature objects returned from
                     * {@link Map#queryRenderedFeatures} or event handlers can be used as feature identifiers.
                     * @returns The state of the feature: a set of key-value pairs that was assigned to the feature at runtime.
                     *
                     * @example
                     * When the mouse moves over the `my-layer` layer,
                     * get the feature state for the feature under the mouse
                     * ```ts
                     * map.on('mousemove', 'my-layer', (e) => {
                     *   if (e.features.length > 0) {
                     *     map.getFeatureState({
                     *       source: 'my-source',
                     *       sourceLayer: 'my-source-layer',
                     *       id: e.features[0].id
                     *     });
                     *   }
                     * });
                     * ```
                     */
                    getFeatureState(R) {
                      return this.style.getFeatureState(R);
                    }
                    /**
                     * Returns the map's containing HTML element.
                     *
                     * @returns The map's container.
                     */
                    getContainer() {
                      return this._container;
                    }
                    /**
                     * Returns the HTML element containing the map's `<canvas>` element.
                     *
                     * If you want to add non-GL overlays to the map, you should append them to this element.
                     *
                     * This is the element to which event bindings for map interactivity (such as panning and zooming) are
                     * attached. It will receive bubbled events from child elements such as the `<canvas>`, but not from
                     * map controls.
                     *
                     * @returns The container of the map's `<canvas>`.
                     * @see [Create a draggable point](https://maplibre.org/maplibre-gl-js/docs/examples/drag-a-point/)
                     */
                    getCanvasContainer() {
                      return this._canvasContainer;
                    }
                    /**
                     * Returns the map's `<canvas>` element.
                     *
                     * @returns The map's `<canvas>` element.
                     * @see [Measure distances](https://maplibre.org/maplibre-gl-js/docs/examples/measure/)
                     * @see [Display a popup on hover](https://maplibre.org/maplibre-gl-js/docs/examples/popup-on-hover/)
                     * @see [Center the map on a clicked symbol](https://maplibre.org/maplibre-gl-js/docs/examples/center-on-symbol/)
                     */
                    getCanvas() {
                      return this._canvas;
                    }
                    _containerDimensions() {
                      let R = 0, J = 0;
                      return this._container && (R = this._container.clientWidth || 400, J = this._container.clientHeight || 300), [R, J];
                    }
                    _setupContainer() {
                      const R = this._container;
                      R.classList.add("maplibregl-map");
                      const J = this._canvasContainer = h.create("div", "maplibregl-canvas-container", R);
                      this._interactive && J.classList.add("maplibregl-interactive"), this._canvas = h.create("canvas", "maplibregl-canvas", J), this._canvas.addEventListener("webglcontextlost", this._contextLost, !1), this._canvas.addEventListener("webglcontextrestored", this._contextRestored, !1), this._canvas.setAttribute("tabindex", this._interactive ? "0" : "-1"), this._canvas.setAttribute("aria-label", this._getUIString("Map.Title")), this._canvas.setAttribute("role", "region");
                      const yt = this._containerDimensions(), Tt = this._getClampedPixelRatio(yt[0], yt[1]);
                      this._resizeCanvas(yt[0], yt[1], Tt);
                      const Nt = this._controlContainer = h.create("div", "maplibregl-control-container", R), be = this._controlPositions = {};
                      ["top-left", "top-right", "bottom-left", "bottom-right"].forEach((Re) => {
                        be[Re] = h.create("div", `maplibregl-ctrl-${Re} `, Nt);
                      }), this._container.addEventListener("scroll", this._onMapScroll, !1);
                    }
                    _resizeCanvas(R, J, yt) {
                      this._canvas.width = Math.floor(yt * R), this._canvas.height = Math.floor(yt * J), this._canvas.style.width = `${R}px`, this._canvas.style.height = `${J}px`;
                    }
                    _setupPainter() {
                      const R = {
                        alpha: !0,
                        stencil: !0,
                        depth: !0,
                        failIfMajorPerformanceCaveat: this._failIfMajorPerformanceCaveat,
                        preserveDrawingBuffer: this._preserveDrawingBuffer,
                        antialias: this._antialias || !1
                      };
                      let J = null;
                      this._canvas.addEventListener("webglcontextcreationerror", (Tt) => {
                        J = { requestedAttributes: R }, Tt && (J.statusMessage = Tt.statusMessage, J.type = Tt.type);
                      }, { once: !0 });
                      const yt = this._canvas.getContext("webgl2", R) || this._canvas.getContext("webgl", R);
                      if (!yt) {
                        const Tt = "Failed to initialize WebGL";
                        throw J ? (J.message = Tt, new Error(JSON.stringify(J))) : new Error(Tt);
                      }
                      this.painter = new ns(yt, this.transform), E.testSupport(yt);
                    }
                    /**
                     * Returns a Boolean indicating whether the map is fully loaded.
                     *
                     * Returns `false` if the style is not yet fully loaded,
                     * or if there has been a change to the sources or style that
                     * has not yet fully loaded.
                     *
                     * @returns A Boolean indicating whether the map is fully loaded.
                     */
                    loaded() {
                      return !this._styleDirty && !this._sourcesDirty && !!this.style && this.style.loaded();
                    }
                    /**
                     * @internal
                     * Update this map's style and sources, and re-render the map.
                     *
                     * @param updateStyle - mark the map's style for reprocessing as
                     * well as its sources
                     */
                    _update(R) {
                      return !this.style || !this.style._loaded ? this : (this._styleDirty = this._styleDirty || R, this._sourcesDirty = !0, this.triggerRepaint(), this);
                    }
                    /**
                     * @internal
                     * Request that the given callback be executed during the next render
                     * frame.  Schedule a render frame if one is not already scheduled.
                     *
                     * @returns An id that can be used to cancel the callback
                     */
                    _requestRenderFrame(R) {
                      return this._update(), this._renderTaskQueue.add(R);
                    }
                    _cancelRenderFrame(R) {
                      this._renderTaskQueue.remove(R);
                    }
                    /**
                     * @internal
                     * Call when a (re-)render of the map is required:
                     *
                     * - The style has changed (`setPaintProperty()`, etc.)
                     * - Source data has changed (e.g. tiles have finished loading)
                     * - The map has is moving (or just finished moving)
                     * - A transition is in progress
                     *
                     * @param paintStartTimeStamp - The time when the animation frame began executing.
                     */
                    _render(R) {
                      const J = this._idleTriggered ? this._fadeDuration : 0;
                      if (this.painter.context.setDirty(), this.painter.setBaseState(), this._renderTaskQueue.run(R), this._removed)
                        return;
                      let yt = !1;
                      if (this.style && this._styleDirty) {
                        this._styleDirty = !1;
                        const Nt = this.transform.zoom, be = d.now();
                        this.style.zoomHistory.update(Nt, be);
                        const Re = new s.a9(Nt, {
                          now: be,
                          fadeDuration: J,
                          zoomHistory: this.style.zoomHistory,
                          transition: this.style.getTransition()
                        }), je = Re.crossFadingFactor();
                        (je !== 1 || je !== this._crossFadingFactor) && (yt = !0, this._crossFadingFactor = je), this.style.update(Re);
                      }
                      this.style && this._sourcesDirty && (this._sourcesDirty = !1, this.style._updateSources(this.transform)), this.terrain ? (this.terrain.sourceCache.update(this.transform, this.terrain), this.transform.minElevationForCurrentTile = this.terrain.getMinTileElevationForLngLatZoom(this.transform.center, this.transform.tileZoom), this._elevationFreeze || (this.transform.elevation = this.terrain.getElevationForLngLatZoom(this.transform.center, this.transform.tileZoom))) : (this.transform.minElevationForCurrentTile = 0, this.transform.elevation = 0), this._placementDirty = this.style && this.style._updatePlacement(this.painter.transform, this.showCollisionBoxes, J, this._crossSourceCollisions), this.painter.render(this.style, {
                        showTileBoundaries: this.showTileBoundaries,
                        showOverdrawInspector: this._showOverdrawInspector,
                        rotating: this.isRotating(),
                        zooming: this.isZooming(),
                        moving: this.isMoving(),
                        fadeDuration: J,
                        showPadding: this.showPadding
                      }), this.fire(new s.k("render")), this.loaded() && !this._loaded && (this._loaded = !0, s.be.mark(s.bf.load), this.fire(new s.k("load"))), this.style && (this.style.hasTransitions() || yt) && (this._styleDirty = !0), this.style && !this._placementDirty && this.style._releaseSymbolFadeTiles();
                      const Tt = this._sourcesDirty || this._styleDirty || this._placementDirty;
                      return Tt || this._repaint ? this.triggerRepaint() : !this.isMoving() && this.loaded() && this.fire(new s.k("idle")), this._loaded && !this._fullyLoaded && !Tt && (this._fullyLoaded = !0, s.be.mark(s.bf.fullLoad)), this;
                    }
                    /**
                     * Force a synchronous redraw of the map.
                     * @example
                     * ```ts
                     * map.redraw();
                     * ```
                     */
                    redraw() {
                      return this.style && (this._frameRequest && (this._frameRequest.abort(), this._frameRequest = null), this._render(0)), this;
                    }
                    /**
                     * Clean up and release all internal resources associated with this map.
                     *
                     * This includes DOM elements, event bindings, web workers, and WebGL resources.
                     *
                     * Use this method when you are done using the map and wish to ensure that it no
                     * longer consumes browser resources. Afterwards, you must not call any other
                     * methods on the map.
                     */
                    remove() {
                      var R;
                      this._hash && this._hash.remove();
                      for (const yt of this._controls)
                        yt.onRemove(this);
                      this._controls = [], this._frameRequest && (this._frameRequest.abort(), this._frameRequest = null), this._renderTaskQueue.clear(), this.painter.destroy(), this.handlers.destroy(), delete this.handlers, this.setStyle(null), typeof window < "u" && removeEventListener("online", this._onWindowOnline, !1), H.removeThrottleControl(this._imageQueueHandle), (R = this._resizeObserver) === null || R === void 0 || R.disconnect();
                      const J = this.painter.context.gl.getExtension("WEBGL_lose_context");
                      J != null && J.loseContext && J.loseContext(), this._canvas.removeEventListener("webglcontextrestored", this._contextRestored, !1), this._canvas.removeEventListener("webglcontextlost", this._contextLost, !1), h.remove(this._canvasContainer), h.remove(this._controlContainer), this._container.classList.remove("maplibregl-map"), s.be.clearMetrics(), this._removed = !0, this.fire(new s.k("remove"));
                    }
                    /**
                     * Trigger the rendering of a single frame. Use this method with custom layers to
                     * repaint the map when the layer changes. Calling this multiple times before the
                     * next frame is rendered will still result in only a single frame being rendered.
                     * @example
                     * ```ts
                     * map.triggerRepaint();
                     * ```
                     * @see [Add a 3D model](https://maplibre.org/maplibre-gl-js/docs/examples/add-3d-model/)
                     * @see [Add an animated icon to the map](https://maplibre.org/maplibre-gl-js/docs/examples/add-image-animated/)
                     */
                    triggerRepaint() {
                      this.style && !this._frameRequest && (this._frameRequest = new AbortController(), d.frameAsync(this._frameRequest).then((R) => {
                        s.be.frame(R), this._frameRequest = null, this._render(R);
                      }).catch(() => {
                      }));
                    }
                    /**
                     * Gets and sets a Boolean indicating whether the map will render an outline
                     * around each tile and the tile ID. These tile boundaries are useful for
                     * debugging.
                     *
                     * The uncompressed file size of the first vector source is drawn in the top left
                     * corner of each tile, next to the tile ID.
                     *
                     * @example
                     * ```ts
                     * map.showTileBoundaries = true;
                     * ```
                     */
                    get showTileBoundaries() {
                      return !!this._showTileBoundaries;
                    }
                    set showTileBoundaries(R) {
                      this._showTileBoundaries !== R && (this._showTileBoundaries = R, this._update());
                    }
                    /**
                     * Gets and sets a Boolean indicating whether the map will visualize
                     * the padding offsets.
                     */
                    get showPadding() {
                      return !!this._showPadding;
                    }
                    set showPadding(R) {
                      this._showPadding !== R && (this._showPadding = R, this._update());
                    }
                    /**
                     * Gets and sets a Boolean indicating whether the map will render boxes
                     * around all symbols in the data source, revealing which symbols
                     * were rendered or which were hidden due to collisions.
                     * This information is useful for debugging.
                     */
                    get showCollisionBoxes() {
                      return !!this._showCollisionBoxes;
                    }
                    set showCollisionBoxes(R) {
                      this._showCollisionBoxes !== R && (this._showCollisionBoxes = R, R ? this.style._generateCollisionBoxes() : this._update());
                    }
                    /**
                     * Gets and sets a Boolean indicating whether the map should color-code
                     * each fragment to show how many times it has been shaded.
                     * White fragments have been shaded 8 or more times.
                     * Black fragments have been shaded 0 times.
                     * This information is useful for debugging.
                     */
                    get showOverdrawInspector() {
                      return !!this._showOverdrawInspector;
                    }
                    set showOverdrawInspector(R) {
                      this._showOverdrawInspector !== R && (this._showOverdrawInspector = R, this._update());
                    }
                    /**
                     * Gets and sets a Boolean indicating whether the map will
                     * continuously repaint. This information is useful for analyzing performance.
                     */
                    get repaint() {
                      return !!this._repaint;
                    }
                    set repaint(R) {
                      this._repaint !== R && (this._repaint = R, this.triggerRepaint());
                    }
                    // show vertices
                    get vertices() {
                      return !!this._vertices;
                    }
                    set vertices(R) {
                      this._vertices = R, this._update();
                    }
                    /**
                     * Returns the package version of the library
                     * @returns Package version of the library
                     */
                    get version() {
                      return _a;
                    }
                    /**
                     * Returns the elevation for the point where the camera is looking.
                     * This value corresponds to:
                     * "meters above sea level" * "exaggeration"
                     * @returns The elevation.
                     */
                    getCameraTargetElevation() {
                      return this.transform.elevation;
                    }
                  };
                  const to = (Ot) => {
                    Ot.touchstart = Ot.dragStart, Ot.touchmoveWindow = Ot.dragMove, Ot.touchend = Ot.dragEnd;
                  }, Eo = ({ enable: Ot, clickTolerance: R, bearingDegreesPerPixelMoved: J = 0.8 }) => {
                    const yt = new kh();
                    return new gu({
                      clickTolerance: R,
                      move: (Tt, Nt) => ({ bearingDelta: (Nt.x - Tt.x) * J }),
                      moveStateManager: yt,
                      enable: Ot,
                      assignEvents: to
                    });
                  }, As = ({ enable: Ot, clickTolerance: R, pitchDegreesPerPixelMoved: J = -0.5 }) => {
                    const yt = new kh();
                    return new gu({
                      clickTolerance: R,
                      move: (Tt, Nt) => ({ pitchDelta: (Nt.y - Tt.y) * J }),
                      moveStateManager: yt,
                      enable: Ot,
                      assignEvents: to
                    });
                  }, js = {
                    showCompass: !0,
                    showZoom: !0,
                    visualizePitch: !1
                  };
                  class lc {
                    /**
                     * @param options - the control's options
                     */
                    constructor(R) {
                      this._updateZoomButtons = () => {
                        const J = this._map.getZoom(), yt = J === this._map.getMaxZoom(), Tt = J === this._map.getMinZoom();
                        this._zoomInButton.disabled = yt, this._zoomOutButton.disabled = Tt, this._zoomInButton.setAttribute("aria-disabled", yt.toString()), this._zoomOutButton.setAttribute("aria-disabled", Tt.toString());
                      }, this._rotateCompassArrow = () => {
                        const J = this.options.visualizePitch ? `scale(${1 / Math.pow(Math.cos(this._map.transform.pitch * (Math.PI / 180)), 0.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${this._map.transform.angle * (180 / Math.PI)}deg)` : `rotate(${this._map.transform.angle * (180 / Math.PI)}deg)`;
                        this._compassIcon.style.transform = J;
                      }, this._setButtonTitle = (J, yt) => {
                        const Tt = this._map._getUIString(`NavigationControl.${yt}`);
                        J.title = Tt, J.setAttribute("aria-label", Tt);
                      }, this.options = s.e({}, js, R), this._container = h.create("div", "maplibregl-ctrl maplibregl-ctrl-group"), this._container.addEventListener("contextmenu", (J) => J.preventDefault()), this.options.showZoom && (this._zoomInButton = this._createButton("maplibregl-ctrl-zoom-in", (J) => this._map.zoomIn({}, { originalEvent: J })), h.create("span", "maplibregl-ctrl-icon", this._zoomInButton).setAttribute("aria-hidden", "true"), this._zoomOutButton = this._createButton("maplibregl-ctrl-zoom-out", (J) => this._map.zoomOut({}, { originalEvent: J })), h.create("span", "maplibregl-ctrl-icon", this._zoomOutButton).setAttribute("aria-hidden", "true")), this.options.showCompass && (this._compass = this._createButton("maplibregl-ctrl-compass", (J) => {
                        this.options.visualizePitch ? this._map.resetNorthPitch({}, { originalEvent: J }) : this._map.resetNorth({}, { originalEvent: J });
                      }), this._compassIcon = h.create("span", "maplibregl-ctrl-icon", this._compass), this._compassIcon.setAttribute("aria-hidden", "true"));
                    }
                    /** {@inheritDoc IControl.onAdd} */
                    onAdd(R) {
                      return this._map = R, this.options.showZoom && (this._setButtonTitle(this._zoomInButton, "ZoomIn"), this._setButtonTitle(this._zoomOutButton, "ZoomOut"), this._map.on("zoom", this._updateZoomButtons), this._updateZoomButtons()), this.options.showCompass && (this._setButtonTitle(this._compass, "ResetBearing"), this.options.visualizePitch && this._map.on("pitch", this._rotateCompassArrow), this._map.on("rotate", this._rotateCompassArrow), this._rotateCompassArrow(), this._handler = new uc(this._map, this._compass, this.options.visualizePitch)), this._container;
                    }
                    /** {@inheritDoc IControl.onRemove} */
                    onRemove() {
                      h.remove(this._container), this.options.showZoom && this._map.off("zoom", this._updateZoomButtons), this.options.showCompass && (this.options.visualizePitch && this._map.off("pitch", this._rotateCompassArrow), this._map.off("rotate", this._rotateCompassArrow), this._handler.off(), delete this._handler), delete this._map;
                    }
                    _createButton(R, J) {
                      const yt = h.create("button", R, this._container);
                      return yt.type = "button", yt.addEventListener("click", J), yt;
                    }
                  }
                  class uc {
                    constructor(R, J, yt = !1) {
                      this.mousedown = (be) => {
                        this.startMouse(s.e({}, be, { ctrlKey: !0, preventDefault: () => be.preventDefault() }), h.mousePos(this.element, be)), h.addEventListener(window, "mousemove", this.mousemove), h.addEventListener(window, "mouseup", this.mouseup);
                      }, this.mousemove = (be) => {
                        this.moveMouse(be, h.mousePos(this.element, be));
                      }, this.mouseup = (be) => {
                        this.mouseRotate.dragEnd(be), this.mousePitch && this.mousePitch.dragEnd(be), this.offTemp();
                      }, this.touchstart = (be) => {
                        be.targetTouches.length !== 1 ? this.reset() : (this._startPos = this._lastPos = h.touchPos(this.element, be.targetTouches)[0], this.startTouch(be, this._startPos), h.addEventListener(window, "touchmove", this.touchmove, { passive: !1 }), h.addEventListener(window, "touchend", this.touchend));
                      }, this.touchmove = (be) => {
                        be.targetTouches.length !== 1 ? this.reset() : (this._lastPos = h.touchPos(this.element, be.targetTouches)[0], this.moveTouch(be, this._lastPos));
                      }, this.touchend = (be) => {
                        be.targetTouches.length === 0 && this._startPos && this._lastPos && this._startPos.dist(this._lastPos) < this._clickTolerance && this.element.click(), delete this._startPos, delete this._lastPos, this.offTemp();
                      }, this.reset = () => {
                        this.mouseRotate.reset(), this.mousePitch && this.mousePitch.reset(), this.touchRotate.reset(), this.touchPitch && this.touchPitch.reset(), delete this._startPos, delete this._lastPos, this.offTemp();
                      }, this._clickTolerance = 10;
                      const Tt = R.dragRotate._mouseRotate.getClickTolerance(), Nt = R.dragRotate._mousePitch.getClickTolerance();
                      this.element = J, this.mouseRotate = oc({ clickTolerance: Tt, enable: !0 }), this.touchRotate = Eo({ clickTolerance: Tt, enable: !0 }), this.map = R, yt && (this.mousePitch = ev({ clickTolerance: Nt, enable: !0 }), this.touchPitch = As({ clickTolerance: Nt, enable: !0 })), h.addEventListener(J, "mousedown", this.mousedown), h.addEventListener(J, "touchstart", this.touchstart, { passive: !1 }), h.addEventListener(J, "touchcancel", this.reset);
                    }
                    startMouse(R, J) {
                      this.mouseRotate.dragStart(R, J), this.mousePitch && this.mousePitch.dragStart(R, J), h.disableDrag();
                    }
                    startTouch(R, J) {
                      this.touchRotate.dragStart(R, J), this.touchPitch && this.touchPitch.dragStart(R, J), h.disableDrag();
                    }
                    moveMouse(R, J) {
                      const yt = this.map, { bearingDelta: Tt } = this.mouseRotate.dragMove(R, J) || {};
                      if (Tt && yt.setBearing(yt.getBearing() + Tt), this.mousePitch) {
                        const { pitchDelta: Nt } = this.mousePitch.dragMove(R, J) || {};
                        Nt && yt.setPitch(yt.getPitch() + Nt);
                      }
                    }
                    moveTouch(R, J) {
                      const yt = this.map, { bearingDelta: Tt } = this.touchRotate.dragMove(R, J) || {};
                      if (Tt && yt.setBearing(yt.getBearing() + Tt), this.touchPitch) {
                        const { pitchDelta: Nt } = this.touchPitch.dragMove(R, J) || {};
                        Nt && yt.setPitch(yt.getPitch() + Nt);
                      }
                    }
                    off() {
                      const R = this.element;
                      h.removeEventListener(R, "mousedown", this.mousedown), h.removeEventListener(R, "touchstart", this.touchstart, { passive: !1 }), h.removeEventListener(window, "touchmove", this.touchmove, { passive: !1 }), h.removeEventListener(window, "touchend", this.touchend), h.removeEventListener(R, "touchcancel", this.reset), this.offTemp();
                    }
                    offTemp() {
                      h.enableDrag(), h.removeEventListener(window, "mousemove", this.mousemove), h.removeEventListener(window, "mouseup", this.mouseup), h.removeEventListener(window, "touchmove", this.touchmove, { passive: !1 }), h.removeEventListener(window, "touchend", this.touchend);
                    }
                  }
                  let Pl;
                  function au() {
                    return s._(this, arguments, void 0, function* (Ot = !1) {
                      if (Pl !== void 0 && !Ot)
                        return Pl;
                      if (window.navigator.permissions === void 0)
                        return Pl = !!window.navigator.geolocation, Pl;
                      try {
                        Pl = (yield window.navigator.permissions.query({ name: "geolocation" })).state !== "denied";
                      } catch {
                        Pl = !!window.navigator.geolocation;
                      }
                      return Pl;
                    });
                  }
                  function nf(Ot, R, J) {
                    const yt = new s.N(Ot.lng, Ot.lat);
                    if (Ot = new s.N(Ot.lng, Ot.lat), R) {
                      const Tt = new s.N(Ot.lng - 360, Ot.lat), Nt = new s.N(Ot.lng + 360, Ot.lat), be = J.locationPoint(Ot).distSqr(R);
                      J.locationPoint(Tt).distSqr(R) < be ? Ot = Tt : J.locationPoint(Nt).distSqr(R) < be && (Ot = Nt);
                    }
                    for (; Math.abs(Ot.lng - J.center.lng) > 180; ) {
                      const Tt = J.locationPoint(Ot);
                      if (Tt.x >= 0 && Tt.y >= 0 && Tt.x <= J.width && Tt.y <= J.height)
                        break;
                      Ot.lng > J.center.lng ? Ot.lng -= 360 : Ot.lng += 360;
                    }
                    return Ot.lng !== yt.lng && J.locationPoint(Ot).y > J.height / 2 - J.getHorizon() ? Ot : yt;
                  }
                  const cc = {
                    center: "translate(-50%,-50%)",
                    top: "translate(-50%,0)",
                    "top-left": "translate(0,0)",
                    "top-right": "translate(-100%,0)",
                    bottom: "translate(-50%,-100%)",
                    "bottom-left": "translate(0,-100%)",
                    "bottom-right": "translate(-100%,-100%)",
                    left: "translate(0,-50%)",
                    right: "translate(-100%,-50%)"
                  };
                  function Zl(Ot, R, J) {
                    const yt = Ot.classList;
                    for (const Tt in cc)
                      yt.remove(`maplibregl-${J}-anchor-${Tt}`);
                    yt.add(`maplibregl-${J}-anchor-${R}`);
                  }
                  class fc extends s.E {
                    /**
                     * @param options - the options
                     */
                    constructor(R) {
                      if (super(), this._onKeyPress = (J) => {
                        const yt = J.code, Tt = J.charCode || J.keyCode;
                        (yt === "Space" || yt === "Enter" || Tt === 32 || Tt === 13) && this.togglePopup();
                      }, this._onMapClick = (J) => {
                        const yt = J.originalEvent.target, Tt = this._element;
                        this._popup && (yt === Tt || Tt.contains(yt)) && this.togglePopup();
                      }, this._update = (J) => {
                        var yt;
                        if (!this._map)
                          return;
                        const Tt = this._map.loaded() && !this._map.isMoving();
                        ((J == null ? void 0 : J.type) === "terrain" || (J == null ? void 0 : J.type) === "render" && !Tt) && this._map.once("render", this._update), this._map.transform.renderWorldCopies ? this._lngLat = nf(this._lngLat, this._flatPos, this._map.transform) : this._lngLat = (yt = this._lngLat) === null || yt === void 0 ? void 0 : yt.wrap(), this._flatPos = this._pos = this._map.project(this._lngLat)._add(this._offset), this._map.terrain && (this._flatPos = this._map.transform.locationPoint(this._lngLat)._add(this._offset));
                        let Nt = "";
                        this._rotationAlignment === "viewport" || this._rotationAlignment === "auto" ? Nt = `rotateZ(${this._rotation}deg)` : this._rotationAlignment === "map" && (Nt = `rotateZ(${this._rotation - this._map.getBearing()}deg)`);
                        let be = "";
                        this._pitchAlignment === "viewport" || this._pitchAlignment === "auto" ? be = "rotateX(0deg)" : this._pitchAlignment === "map" && (be = `rotateX(${this._map.getPitch()}deg)`), !this._subpixelPositioning && (!J || J.type === "moveend") && (this._pos = this._pos.round()), h.setTransform(this._element, `${cc[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${be} ${Nt}`), d.frameAsync(new AbortController()).then(() => {
                          this._updateOpacity(J && J.type === "moveend");
                        }).catch(() => {
                        });
                      }, this._onMove = (J) => {
                        if (!this._isDragging) {
                          const yt = this._clickTolerance || this._map._clickTolerance;
                          this._isDragging = J.point.dist(this._pointerdownPos) >= yt;
                        }
                        this._isDragging && (this._pos = J.point.sub(this._positionDelta), this._lngLat = this._map.unproject(this._pos), this.setLngLat(this._lngLat), this._element.style.pointerEvents = "none", this._state === "pending" && (this._state = "active", this.fire(new s.k("dragstart"))), this.fire(new s.k("drag")));
                      }, this._onUp = () => {
                        this._element.style.pointerEvents = "auto", this._positionDelta = null, this._pointerdownPos = null, this._isDragging = !1, this._map.off("mousemove", this._onMove), this._map.off("touchmove", this._onMove), this._state === "active" && this.fire(new s.k("dragend")), this._state = "inactive";
                      }, this._addDragHandler = (J) => {
                        this._element.contains(J.originalEvent.target) && (J.preventDefault(), this._positionDelta = J.point.sub(this._pos).add(this._offset), this._pointerdownPos = J.point, this._state = "pending", this._map.on("mousemove", this._onMove), this._map.on("touchmove", this._onMove), this._map.once("mouseup", this._onUp), this._map.once("touchend", this._onUp));
                      }, this._anchor = R && R.anchor || "center", this._color = R && R.color || "#3FB1CE", this._scale = R && R.scale || 1, this._draggable = R && R.draggable || !1, this._clickTolerance = R && R.clickTolerance || 0, this._subpixelPositioning = R && R.subpixelPositioning || !1, this._isDragging = !1, this._state = "inactive", this._rotation = R && R.rotation || 0, this._rotationAlignment = R && R.rotationAlignment || "auto", this._pitchAlignment = R && R.pitchAlignment && R.pitchAlignment !== "auto" ? R.pitchAlignment : this._rotationAlignment, this.setOpacity(), this.setOpacity(R == null ? void 0 : R.opacity, R == null ? void 0 : R.opacityWhenCovered), !R || !R.element) {
                        this._defaultMarker = !0, this._element = h.create("div");
                        const J = h.createNS("http://www.w3.org/2000/svg", "svg"), yt = 41, Tt = 27;
                        J.setAttributeNS(null, "display", "block"), J.setAttributeNS(null, "height", `${yt}px`), J.setAttributeNS(null, "width", `${Tt}px`), J.setAttributeNS(null, "viewBox", `0 0 ${Tt} ${yt}`);
                        const Nt = h.createNS("http://www.w3.org/2000/svg", "g");
                        Nt.setAttributeNS(null, "stroke", "none"), Nt.setAttributeNS(null, "stroke-width", "1"), Nt.setAttributeNS(null, "fill", "none"), Nt.setAttributeNS(null, "fill-rule", "evenodd");
                        const be = h.createNS("http://www.w3.org/2000/svg", "g");
                        be.setAttributeNS(null, "fill-rule", "nonzero");
                        const Re = h.createNS("http://www.w3.org/2000/svg", "g");
                        Re.setAttributeNS(null, "transform", "translate(3.0, 29.0)"), Re.setAttributeNS(null, "fill", "#000000");
                        const je = [
                          { rx: "10.5", ry: "5.25002273" },
                          { rx: "10.5", ry: "5.25002273" },
                          { rx: "9.5", ry: "4.77275007" },
                          { rx: "8.5", ry: "4.29549936" },
                          { rx: "7.5", ry: "3.81822308" },
                          { rx: "6.5", ry: "3.34094679" },
                          { rx: "5.5", ry: "2.86367051" },
                          { rx: "4.5", ry: "2.38636864" }
                        ];
                        for (const ii of je) {
                          const oi = h.createNS("http://www.w3.org/2000/svg", "ellipse");
                          oi.setAttributeNS(null, "opacity", "0.04"), oi.setAttributeNS(null, "cx", "10.5"), oi.setAttributeNS(null, "cy", "5.80029008"), oi.setAttributeNS(null, "rx", ii.rx), oi.setAttributeNS(null, "ry", ii.ry), Re.appendChild(oi);
                        }
                        const pr = h.createNS("http://www.w3.org/2000/svg", "g");
                        pr.setAttributeNS(null, "fill", this._color);
                        const br = h.createNS("http://www.w3.org/2000/svg", "path");
                        br.setAttributeNS(null, "d", "M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z"), pr.appendChild(br);
                        const Ar = h.createNS("http://www.w3.org/2000/svg", "g");
                        Ar.setAttributeNS(null, "opacity", "0.25"), Ar.setAttributeNS(null, "fill", "#000000");
                        const qr = h.createNS("http://www.w3.org/2000/svg", "path");
                        qr.setAttributeNS(null, "d", "M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z"), Ar.appendChild(qr);
                        const vn = h.createNS("http://www.w3.org/2000/svg", "g");
                        vn.setAttributeNS(null, "transform", "translate(6.0, 7.0)"), vn.setAttributeNS(null, "fill", "#FFFFFF");
                        const bn = h.createNS("http://www.w3.org/2000/svg", "g");
                        bn.setAttributeNS(null, "transform", "translate(8.0, 8.0)");
                        const Rn = h.createNS("http://www.w3.org/2000/svg", "circle");
                        Rn.setAttributeNS(null, "fill", "#000000"), Rn.setAttributeNS(null, "opacity", "0.25"), Rn.setAttributeNS(null, "cx", "5.5"), Rn.setAttributeNS(null, "cy", "5.5"), Rn.setAttributeNS(null, "r", "5.4999962");
                        const Gn = h.createNS("http://www.w3.org/2000/svg", "circle");
                        Gn.setAttributeNS(null, "fill", "#FFFFFF"), Gn.setAttributeNS(null, "cx", "5.5"), Gn.setAttributeNS(null, "cy", "5.5"), Gn.setAttributeNS(null, "r", "5.4999962"), bn.appendChild(Rn), bn.appendChild(Gn), be.appendChild(Re), be.appendChild(pr), be.appendChild(Ar), be.appendChild(vn), be.appendChild(bn), J.appendChild(be), J.setAttributeNS(null, "height", `${yt * this._scale}px`), J.setAttributeNS(null, "width", `${Tt * this._scale}px`), this._element.appendChild(J), this._offset = s.P.convert(R && R.offset || [0, -14]);
                      } else
                        this._element = R.element, this._offset = s.P.convert(R && R.offset || [0, 0]);
                      if (this._element.classList.add("maplibregl-marker"), this._element.addEventListener("dragstart", (J) => {
                        J.preventDefault();
                      }), this._element.addEventListener("mousedown", (J) => {
                        J.preventDefault();
                      }), Zl(this._element, this._anchor, "marker"), R && R.className)
                        for (const J of R.className.split(" "))
                          this._element.classList.add(J);
                      this._popup = null;
                    }
                    /**
                     * Attaches the `Marker` to a `Map` object.
                     * @param map - The MapLibre GL JS map to add the marker to.
                     * @example
                     * ```ts
                     * let marker = new Marker()
                     *   .setLngLat([30.5, 50.5])
                     *   .addTo(map); // add the marker to the map
                     * ```
                     */
                    addTo(R) {
                      return this.remove(), this._map = R, this._element.setAttribute("aria-label", R._getUIString("Marker.Title")), R.getCanvasContainer().appendChild(this._element), R.on("move", this._update), R.on("moveend", this._update), R.on("terrain", this._update), this.setDraggable(this._draggable), this._update(), this._map.on("click", this._onMapClick), this;
                    }
                    /**
                     * Removes the marker from a map
                     * @example
                     * ```ts
                     * let marker = new Marker().addTo(map);
                     * marker.remove();
                     * ```
                     */
                    remove() {
                      return this._opacityTimeout && (clearTimeout(this._opacityTimeout), delete this._opacityTimeout), this._map && (this._map.off("click", this._onMapClick), this._map.off("move", this._update), this._map.off("moveend", this._update), this._map.off("terrain", this._update), this._map.off("mousedown", this._addDragHandler), this._map.off("touchstart", this._addDragHandler), this._map.off("mouseup", this._onUp), this._map.off("touchend", this._onUp), this._map.off("mousemove", this._onMove), this._map.off("touchmove", this._onMove), delete this._map), h.remove(this._element), this._popup && this._popup.remove(), this;
                    }
                    /**
                     * Get the marker's geographical location.
                     *
                     * The longitude of the result may differ by a multiple of 360 degrees from the longitude previously
                     * set by `setLngLat` because `Marker` wraps the anchor longitude across copies of the world to keep
                     * the marker on screen.
                     *
                     * @returns A {@link LngLat} describing the marker's location.
                     * @example
                     * ```ts
                     * // Store the marker's longitude and latitude coordinates in a variable
                     * let lngLat = marker.getLngLat();
                     * // Print the marker's longitude and latitude values in the console
                     * console.log('Longitude: ' + lngLat.lng + ', Latitude: ' + lngLat.lat )
                     * ```
                     * @see [Create a draggable Marker](https://maplibre.org/maplibre-gl-js/docs/examples/drag-a-marker/)
                     */
                    getLngLat() {
                      return this._lngLat;
                    }
                    /**
                     * Set the marker's geographical position and move it.
                     * @param lnglat - A {@link LngLat} describing where the marker should be located.
                     * @example
                     * Create a new marker, set the longitude and latitude, and add it to the map
                     * ```ts
                     * new Marker()
                     *   .setLngLat([-65.017, -16.457])
                     *   .addTo(map);
                     * ```
                     * @see [Add custom icons with Markers](https://maplibre.org/maplibre-gl-js/docs/examples/custom-marker-icons/)
                     * @see [Create a draggable Marker](https://maplibre.org/maplibre-gl-js/docs/examples/drag-a-marker/)
                     */
                    setLngLat(R) {
                      return this._lngLat = s.N.convert(R), this._pos = null, this._popup && this._popup.setLngLat(this._lngLat), this._update(), this;
                    }
                    /**
                     * Returns the `Marker`'s HTML element.
                     * @returns element
                     */
                    getElement() {
                      return this._element;
                    }
                    /**
                     * Binds a {@link Popup} to the {@link Marker}.
                     * @param popup - An instance of the {@link Popup} class. If undefined or null, any popup
                     * set on this {@link Marker} instance is unset.
                     * @example
                     * ```ts
                     * let marker = new Marker()
                     *  .setLngLat([0, 0])
                     *  .setPopup(new Popup().setHTML("<h1>Hello World!</h1>")) // add popup
                     *  .addTo(map);
                     * ```
                     * @see [Attach a popup to a marker instance](https://maplibre.org/maplibre-gl-js/docs/examples/set-popup/)
                     */
                    setPopup(R) {
                      if (this._popup && (this._popup.remove(), this._popup = null, this._element.removeEventListener("keypress", this._onKeyPress), this._originalTabIndex || this._element.removeAttribute("tabindex")), R) {
                        if (!("offset" in R.options)) {
                          const Tt = Math.abs(13.5) / Math.SQRT2;
                          R.options.offset = this._defaultMarker ? {
                            top: [0, 0],
                            "top-left": [0, 0],
                            "top-right": [0, 0],
                            bottom: [0, -38.1],
                            "bottom-left": [Tt, (24.6 + Tt) * -1],
                            "bottom-right": [-Tt, (24.6 + Tt) * -1],
                            left: [13.5, -24.6],
                            right: [-13.5, -24.6]
                          } : this._offset;
                        }
                        this._popup = R, this._originalTabIndex = this._element.getAttribute("tabindex"), this._originalTabIndex || this._element.setAttribute("tabindex", "0"), this._element.addEventListener("keypress", this._onKeyPress);
                      }
                      return this;
                    }
                    /**
                      * Set the option to allow subpixel positioning of the marker by passing a boolean
                      *
                      * @param value - when set to `true`, subpixel positioning is enabled for the marker.
                      *
                      * @example
                      * ```ts
                      * let marker = new Marker()
                      * marker.setSubpixelPositioning(true);
                      * ```
                      */
                    setSubpixelPositioning(R) {
                      return this._subpixelPositioning = R, this;
                    }
                    /**
                     * Returns the {@link Popup} instance that is bound to the {@link Marker}.
                     * @returns popup
                     * @example
                     * ```ts
                     * let marker = new Marker()
                     *  .setLngLat([0, 0])
                     *  .setPopup(new Popup().setHTML("<h1>Hello World!</h1>"))
                     *  .addTo(map);
                     *
                     * console.log(marker.getPopup()); // return the popup instance
                     * ```
                     */
                    getPopup() {
                      return this._popup;
                    }
                    /**
                     * Opens or closes the {@link Popup} instance that is bound to the {@link Marker}, depending on the current state of the {@link Popup}.
                     * @example
                     * ```ts
                     * let marker = new Marker()
                     *  .setLngLat([0, 0])
                     *  .setPopup(new Popup().setHTML("<h1>Hello World!</h1>"))
                     *  .addTo(map);
                     *
                     * marker.togglePopup(); // toggle popup open or closed
                     * ```
                     */
                    togglePopup() {
                      const R = this._popup;
                      if (this._element.style.opacity === this._opacityWhenCovered)
                        return this;
                      if (R)
                        R.isOpen() ? R.remove() : (R.setLngLat(this._lngLat), R.addTo(this._map));
                      else return this;
                      return this;
                    }
                    _updateOpacity(R = !1) {
                      var J, yt;
                      if (!((J = this._map) === null || J === void 0 ? void 0 : J.terrain)) {
                        this._element.style.opacity !== this._opacity && (this._element.style.opacity = this._opacity);
                        return;
                      }
                      if (R)
                        this._opacityTimeout = null;
                      else {
                        if (this._opacityTimeout)
                          return;
                        this._opacityTimeout = setTimeout(() => {
                          this._opacityTimeout = null;
                        }, 100);
                      }
                      const Nt = this._map, be = Nt.terrain.depthAtPoint(this._pos), Re = Nt.terrain.getElevationForLngLatZoom(this._lngLat, Nt.transform.tileZoom), je = Nt.transform.lngLatToCameraDepth(this._lngLat, Re), pr = 6e-3;
                      if (je - be < pr) {
                        this._element.style.opacity = this._opacity;
                        return;
                      }
                      const br = -this._offset.y / Nt.transform._pixelPerMeter, Ar = Math.sin(Nt.getPitch() * Math.PI / 180) * br, qr = Nt.terrain.depthAtPoint(new s.P(this._pos.x, this._pos.y - this._offset.y)), bn = Nt.transform.lngLatToCameraDepth(this._lngLat, Re + Ar) - qr > pr;
                      !((yt = this._popup) === null || yt === void 0) && yt.isOpen() && bn && this._popup.remove(), this._element.style.opacity = bn ? this._opacityWhenCovered : this._opacity;
                    }
                    /**
                     * Get the marker's offset.
                     * @returns The marker's screen coordinates in pixels.
                     */
                    getOffset() {
                      return this._offset;
                    }
                    /**
                     * Sets the offset of the marker
                     * @param offset - The offset in pixels as a {@link PointLike} object to apply relative to the element's center. Negatives indicate left and up.
                     */
                    setOffset(R) {
                      return this._offset = s.P.convert(R), this._update(), this;
                    }
                    /**
                     * Adds a CSS class to the marker element.
                     *
                     * @param className - on-empty string with CSS class name to add to marker element
                     *
                     * @example
                     * ```
                     * let marker = new Marker()
                     * marker.addClassName('some-class')
                     * ```
                     */
                    addClassName(R) {
                      this._element.classList.add(R);
                    }
                    /**
                     * Removes a CSS class from the marker element.
                     *
                     * @param className - Non-empty string with CSS class name to remove from marker element
                     *
                     * @example
                     * ```ts
                     * let marker = new Marker()
                     * marker.removeClassName('some-class')
                     * ```
                     */
                    removeClassName(R) {
                      this._element.classList.remove(R);
                    }
                    /**
                     * Add or remove the given CSS class on the marker element, depending on whether the element currently has that class.
                     *
                     * @param className - Non-empty string with CSS class name to add/remove
                     *
                     * @returns if the class was removed return false, if class was added, then return true
                     *
                     * @example
                     * ```ts
                     * let marker = new Marker()
                     * marker.toggleClassName('toggleClass')
                     * ```
                     */
                    toggleClassName(R) {
                      return this._element.classList.toggle(R);
                    }
                    /**
                     * Sets the `draggable` property and functionality of the marker
                     * @param shouldBeDraggable - Turns drag functionality on/off
                     */
                    setDraggable(R) {
                      return this._draggable = !!R, this._map && (R ? (this._map.on("mousedown", this._addDragHandler), this._map.on("touchstart", this._addDragHandler)) : (this._map.off("mousedown", this._addDragHandler), this._map.off("touchstart", this._addDragHandler))), this;
                    }
                    /**
                     * Returns true if the marker can be dragged
                     * @returns True if the marker is draggable.
                     */
                    isDraggable() {
                      return this._draggable;
                    }
                    /**
                     * Sets the `rotation` property of the marker.
                     * @param rotation - The rotation angle of the marker (clockwise, in degrees), relative to its respective {@link Marker#setRotationAlignment} setting.
                     */
                    setRotation(R) {
                      return this._rotation = R || 0, this._update(), this;
                    }
                    /**
                     * Returns the current rotation angle of the marker (in degrees).
                     * @returns The current rotation angle of the marker.
                     */
                    getRotation() {
                      return this._rotation;
                    }
                    /**
                     * Sets the `rotationAlignment` property of the marker.
                     * @param alignment - Sets the `rotationAlignment` property of the marker. defaults to 'auto'
                     */
                    setRotationAlignment(R) {
                      return this._rotationAlignment = R || "auto", this._update(), this;
                    }
                    /**
                     * Returns the current `rotationAlignment` property of the marker.
                     * @returns The current rotational alignment of the marker.
                     */
                    getRotationAlignment() {
                      return this._rotationAlignment;
                    }
                    /**
                     * Sets the `pitchAlignment` property of the marker.
                     * @param alignment - Sets the `pitchAlignment` property of the marker. If alignment is 'auto', it will automatically match `rotationAlignment`.
                     */
                    setPitchAlignment(R) {
                      return this._pitchAlignment = R && R !== "auto" ? R : this._rotationAlignment, this._update(), this;
                    }
                    /**
                     * Returns the current `pitchAlignment` property of the marker.
                     * @returns The current pitch alignment of the marker in degrees.
                     */
                    getPitchAlignment() {
                      return this._pitchAlignment;
                    }
                    /**
                     * Sets the `opacity` and `opacityWhenCovered` properties of the marker.
                     * When called without arguments, resets opacity and opacityWhenCovered to defaults
                     * @param opacity - Sets the `opacity` property of the marker.
                     * @param opacityWhenCovered - Sets the `opacityWhenCovered` property of the marker.
                     */
                    setOpacity(R, J) {
                      return R === void 0 && J === void 0 && (this._opacity = "1", this._opacityWhenCovered = "0.2"), R !== void 0 && (this._opacity = R), J !== void 0 && (this._opacityWhenCovered = J), this._map && this._updateOpacity(!0), this;
                    }
                  }
                  const Ou = {
                    positionOptions: {
                      enableHighAccuracy: !1,
                      maximumAge: 0,
                      timeout: 6e3
                      /* 6 sec */
                    },
                    fitBoundsOptions: {
                      maxZoom: 15
                    },
                    trackUserLocation: !1,
                    showAccuracyCircle: !0,
                    showUserLocation: !0
                  };
                  let Il = 0, Qo = !1;
                  class af extends s.E {
                    /**
                     * @param options - the control's options
                     */
                    constructor(R) {
                      super(), this._onSuccess = (J) => {
                        if (this._map) {
                          if (this._isOutOfMapMaxBounds(J)) {
                            this._setErrorState(), this.fire(new s.k("outofmaxbounds", J)), this._updateMarker(), this._finish();
                            return;
                          }
                          if (this.options.trackUserLocation)
                            switch (this._lastKnownPosition = J, this._watchState) {
                              case "WAITING_ACTIVE":
                              case "ACTIVE_LOCK":
                              case "ACTIVE_ERROR":
                                this._watchState = "ACTIVE_LOCK", this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"), this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"), this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");
                                break;
                              case "BACKGROUND":
                              case "BACKGROUND_ERROR":
                                this._watchState = "BACKGROUND", this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"), this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"), this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background");
                                break;
                              default:
                                throw new Error(`Unexpected watchState ${this._watchState}`);
                            }
                          this.options.showUserLocation && this._watchState !== "OFF" && this._updateMarker(J), (!this.options.trackUserLocation || this._watchState === "ACTIVE_LOCK") && this._updateCamera(J), this.options.showUserLocation && this._dotElement.classList.remove("maplibregl-user-location-dot-stale"), this.fire(new s.k("geolocate", J)), this._finish();
                        }
                      }, this._updateCamera = (J) => {
                        const yt = new s.N(J.coords.longitude, J.coords.latitude), Tt = J.coords.accuracy, Nt = this._map.getBearing(), be = s.e({ bearing: Nt }, this.options.fitBoundsOptions), Re = De.fromLngLat(yt, Tt);
                        this._map.fitBounds(Re, be, {
                          geolocateSource: !0
                          // tag this camera change so it won't cause the control to change to background state
                        });
                      }, this._updateMarker = (J) => {
                        if (J) {
                          const yt = new s.N(J.coords.longitude, J.coords.latitude);
                          this._accuracyCircleMarker.setLngLat(yt).addTo(this._map), this._userLocationDotMarker.setLngLat(yt).addTo(this._map), this._accuracy = J.coords.accuracy, this.options.showUserLocation && this.options.showAccuracyCircle && this._updateCircleRadius();
                        } else
                          this._userLocationDotMarker.remove(), this._accuracyCircleMarker.remove();
                      }, this._onZoom = () => {
                        this.options.showUserLocation && this.options.showAccuracyCircle && this._updateCircleRadius();
                      }, this._onError = (J) => {
                        if (this._map) {
                          if (this.options.trackUserLocation)
                            if (J.code === 1) {
                              this._watchState = "OFF", this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"), this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"), this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"), this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"), this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"), this._geolocateButton.disabled = !0;
                              const yt = this._map._getUIString("GeolocateControl.LocationNotAvailable");
                              this._geolocateButton.title = yt, this._geolocateButton.setAttribute("aria-label", yt), this._geolocationWatchID !== void 0 && this._clearWatch();
                            } else {
                              if (J.code === 3 && Qo)
                                return;
                              this._setErrorState();
                            }
                          this._watchState !== "OFF" && this.options.showUserLocation && this._dotElement.classList.add("maplibregl-user-location-dot-stale"), this.fire(new s.k("error", J)), this._finish();
                        }
                      }, this._finish = () => {
                        this._timeoutId && clearTimeout(this._timeoutId), this._timeoutId = void 0;
                      }, this._setupUI = () => {
                        this._map && (this._container.addEventListener("contextmenu", (J) => J.preventDefault()), this._geolocateButton = h.create("button", "maplibregl-ctrl-geolocate", this._container), h.create("span", "maplibregl-ctrl-icon", this._geolocateButton).setAttribute("aria-hidden", "true"), this._geolocateButton.type = "button", this._geolocateButton.disabled = !0);
                      }, this._finishSetupUI = (J) => {
                        if (this._map) {
                          if (J === !1) {
                            s.w("Geolocation support is not available so the GeolocateControl will be disabled.");
                            const yt = this._map._getUIString("GeolocateControl.LocationNotAvailable");
                            this._geolocateButton.disabled = !0, this._geolocateButton.title = yt, this._geolocateButton.setAttribute("aria-label", yt);
                          } else {
                            const yt = this._map._getUIString("GeolocateControl.FindMyLocation");
                            this._geolocateButton.disabled = !1, this._geolocateButton.title = yt, this._geolocateButton.setAttribute("aria-label", yt);
                          }
                          this.options.trackUserLocation && (this._geolocateButton.setAttribute("aria-pressed", "false"), this._watchState = "OFF"), this.options.showUserLocation && (this._dotElement = h.create("div", "maplibregl-user-location-dot"), this._userLocationDotMarker = new fc({ element: this._dotElement }), this._circleElement = h.create("div", "maplibregl-user-location-accuracy-circle"), this._accuracyCircleMarker = new fc({ element: this._circleElement, pitchAlignment: "map" }), this.options.trackUserLocation && (this._watchState = "OFF"), this._map.on("zoom", this._onZoom)), this._geolocateButton.addEventListener("click", () => this.trigger()), this._setup = !0, this.options.trackUserLocation && this._map.on("movestart", (yt) => {
                            const Tt = yt.originalEvent && yt.originalEvent.type === "resize";
                            !yt.geolocateSource && this._watchState === "ACTIVE_LOCK" && !Tt && (this._watchState = "BACKGROUND", this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background"), this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"), this.fire(new s.k("trackuserlocationend")), this.fire(new s.k("userlocationlostfocus")));
                          });
                        }
                      }, this.options = s.e({}, Ou, R);
                    }
                    /** {@inheritDoc IControl.onAdd} */
                    onAdd(R) {
                      return this._map = R, this._container = h.create("div", "maplibregl-ctrl maplibregl-ctrl-group"), this._setupUI(), au().then((J) => this._finishSetupUI(J)), this._container;
                    }
                    /** {@inheritDoc IControl.onRemove} */
                    onRemove() {
                      this._geolocationWatchID !== void 0 && (window.navigator.geolocation.clearWatch(this._geolocationWatchID), this._geolocationWatchID = void 0), this.options.showUserLocation && this._userLocationDotMarker && this._userLocationDotMarker.remove(), this.options.showAccuracyCircle && this._accuracyCircleMarker && this._accuracyCircleMarker.remove(), h.remove(this._container), this._map.off("zoom", this._onZoom), this._map = void 0, Il = 0, Qo = !1;
                    }
                    /**
                     * Check if the Geolocation API Position is outside the map's `maxBounds`.
                     *
                     * @param position - the Geolocation API Position
                     * @returns `true` if position is outside the map's `maxBounds`, otherwise returns `false`.
                     */
                    _isOutOfMapMaxBounds(R) {
                      const J = this._map.getMaxBounds(), yt = R.coords;
                      return J && (yt.longitude < J.getWest() || yt.longitude > J.getEast() || yt.latitude < J.getSouth() || yt.latitude > J.getNorth());
                    }
                    _setErrorState() {
                      switch (this._watchState) {
                        case "WAITING_ACTIVE":
                          this._watchState = "ACTIVE_ERROR", this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"), this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error");
                          break;
                        case "ACTIVE_LOCK":
                          this._watchState = "ACTIVE_ERROR", this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"), this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error"), this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");
                          break;
                        case "BACKGROUND":
                          this._watchState = "BACKGROUND_ERROR", this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"), this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background-error"), this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");
                          break;
                        case "ACTIVE_ERROR":
                          break;
                        default:
                          throw new Error(`Unexpected watchState ${this._watchState}`);
                      }
                    }
                    _updateCircleRadius() {
                      const R = this._map.getBounds(), J = R.getSouthEast(), yt = R.getNorthEast(), Tt = J.distanceTo(yt), Nt = this._map._container.clientHeight, be = Math.ceil(2 * (this._accuracy / (Tt / Nt)));
                      this._circleElement.style.width = `${be}px`, this._circleElement.style.height = `${be}px`;
                    }
                    /**
                     * Programmatically request and move the map to the user's location.
                     *
                     * @returns `false` if called before control was added to a map, otherwise returns `true`.
                     * @example
                     * ```ts
                     * // Initialize the geolocate control.
                     * let geolocate = new GeolocateControl({
                     *  positionOptions: {
                     *    enableHighAccuracy: true
                     *  },
                     *  trackUserLocation: true
                     * });
                     * // Add the control to the map.
                     * map.addControl(geolocate);
                     * map.on('load', () => {
                     *   geolocate.trigger();
                     * });
                     * ```
                     */
                    trigger() {
                      if (!this._setup)
                        return s.w("Geolocate control triggered before added to a map"), !1;
                      if (this.options.trackUserLocation) {
                        switch (this._watchState) {
                          case "OFF":
                            this._watchState = "WAITING_ACTIVE", this.fire(new s.k("trackuserlocationstart"));
                            break;
                          case "WAITING_ACTIVE":
                          case "ACTIVE_LOCK":
                          case "ACTIVE_ERROR":
                          case "BACKGROUND_ERROR":
                            Il--, Qo = !1, this._watchState = "OFF", this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"), this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"), this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"), this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"), this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"), this.fire(new s.k("trackuserlocationend"));
                            break;
                          case "BACKGROUND":
                            this._watchState = "ACTIVE_LOCK", this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"), this._lastKnownPosition && this._updateCamera(this._lastKnownPosition), this.fire(new s.k("trackuserlocationstart")), this.fire(new s.k("userlocationfocus"));
                            break;
                          default:
                            throw new Error(`Unexpected watchState ${this._watchState}`);
                        }
                        switch (this._watchState) {
                          case "WAITING_ACTIVE":
                            this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"), this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");
                            break;
                          case "ACTIVE_LOCK":
                            this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");
                            break;
                          case "OFF":
                            break;
                          default:
                            throw new Error(`Unexpected watchState ${this._watchState}`);
                        }
                        if (this._watchState === "OFF" && this._geolocationWatchID !== void 0)
                          this._clearWatch();
                        else if (this._geolocationWatchID === void 0) {
                          this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"), this._geolocateButton.setAttribute("aria-pressed", "true"), Il++;
                          let R;
                          Il > 1 ? (R = { maximumAge: 6e5, timeout: 0 }, Qo = !0) : (R = this.options.positionOptions, Qo = !1), this._geolocationWatchID = window.navigator.geolocation.watchPosition(this._onSuccess, this._onError, R);
                        }
                      } else
                        window.navigator.geolocation.getCurrentPosition(this._onSuccess, this._onError, this.options.positionOptions), this._timeoutId = setTimeout(
                          this._finish,
                          1e4
                          /* 10sec */
                        );
                      return !0;
                    }
                    _clearWatch() {
                      window.navigator.geolocation.clearWatch(this._geolocationWatchID), this._geolocationWatchID = void 0, this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"), this._geolocateButton.setAttribute("aria-pressed", "false"), this.options.showUserLocation && this._updateMarker(null);
                    }
                  }
                  const mu = {
                    maxWidth: 100,
                    unit: "metric"
                  };
                  class Fh {
                    /**
                     * @param options - the control's options
                     */
                    constructor(R) {
                      this._onMove = () => {
                        hh(this._map, this._container, this.options);
                      }, this.setUnit = (J) => {
                        this.options.unit = J, hh(this._map, this._container, this.options);
                      }, this.options = Object.assign(Object.assign({}, mu), R);
                    }
                    getDefaultPosition() {
                      return "bottom-left";
                    }
                    /** {@inheritDoc IControl.onAdd} */
                    onAdd(R) {
                      return this._map = R, this._container = h.create("div", "maplibregl-ctrl maplibregl-ctrl-scale", R.getContainer()), this._map.on("move", this._onMove), this._onMove(), this._container;
                    }
                    /** {@inheritDoc IControl.onRemove} */
                    onRemove() {
                      h.remove(this._container), this._map.off("move", this._onMove), this._map = void 0;
                    }
                  }
                  function hh(Ot, R, J) {
                    const yt = J && J.maxWidth || 100, Tt = Ot._container.clientHeight / 2, Nt = Ot.unproject([0, Tt]), be = Ot.unproject([yt, Tt]), Re = Nt.distanceTo(be);
                    if (J && J.unit === "imperial") {
                      const je = 3.2808 * Re;
                      if (je > 5280) {
                        const pr = je / 5280;
                        Is(R, yt, pr, Ot._getUIString("ScaleControl.Miles"));
                      } else
                        Is(R, yt, je, Ot._getUIString("ScaleControl.Feet"));
                    } else if (J && J.unit === "nautical") {
                      const je = Re / 1852;
                      Is(R, yt, je, Ot._getUIString("ScaleControl.NauticalMiles"));
                    } else Re >= 1e3 ? Is(R, yt, Re / 1e3, Ot._getUIString("ScaleControl.Kilometers")) : Is(R, yt, Re, Ot._getUIString("ScaleControl.Meters"));
                  }
                  function Is(Ot, R, J, yt) {
                    const Tt = Ud(J), Nt = Tt / J;
                    Ot.style.width = `${R * Nt}px`, Ot.innerHTML = `${Tt}&nbsp;${yt}`;
                  }
                  function Nd(Ot) {
                    const R = Math.pow(10, Math.ceil(-Math.log(Ot) / Math.LN10));
                    return Math.round(Ot * R) / R;
                  }
                  function Ud(Ot) {
                    const R = Math.pow(10, `${Math.floor(Ot)}`.length - 1);
                    let J = Ot / R;
                    return J = J >= 10 ? 10 : J >= 5 ? 5 : J >= 3 ? 3 : J >= 2 ? 2 : J >= 1 ? 1 : Nd(J), R * J;
                  }
                  class Rl extends s.E {
                    /**
                     * @param options - the control's options
                     */
                    constructor(R = {}) {
                      super(), this._onFullscreenChange = () => {
                        var J;
                        let yt = window.document.fullscreenElement || window.document.mozFullScreenElement || window.document.webkitFullscreenElement || window.document.msFullscreenElement;
                        for (; !((J = yt == null ? void 0 : yt.shadowRoot) === null || J === void 0) && J.fullscreenElement; )
                          yt = yt.shadowRoot.fullscreenElement;
                        yt === this._container !== this._fullscreen && this._handleFullscreenChange();
                      }, this._onClickFullscreen = () => {
                        this._isFullscreen() ? this._exitFullscreen() : this._requestFullscreen();
                      }, this._fullscreen = !1, R && R.container && (R.container instanceof HTMLElement ? this._container = R.container : s.w("Full screen control 'container' must be a DOM element.")), "onfullscreenchange" in document ? this._fullscreenchange = "fullscreenchange" : "onmozfullscreenchange" in document ? this._fullscreenchange = "mozfullscreenchange" : "onwebkitfullscreenchange" in document ? this._fullscreenchange = "webkitfullscreenchange" : "onmsfullscreenchange" in document && (this._fullscreenchange = "MSFullscreenChange");
                    }
                    /** {@inheritDoc IControl.onAdd} */
                    onAdd(R) {
                      return this._map = R, this._container || (this._container = this._map.getContainer()), this._controlContainer = h.create("div", "maplibregl-ctrl maplibregl-ctrl-group"), this._setupUI(), this._controlContainer;
                    }
                    /** {@inheritDoc IControl.onRemove} */
                    onRemove() {
                      h.remove(this._controlContainer), this._map = null, window.document.removeEventListener(this._fullscreenchange, this._onFullscreenChange);
                    }
                    _setupUI() {
                      const R = this._fullscreenButton = h.create("button", "maplibregl-ctrl-fullscreen", this._controlContainer);
                      h.create("span", "maplibregl-ctrl-icon", R).setAttribute("aria-hidden", "true"), R.type = "button", this._updateTitle(), this._fullscreenButton.addEventListener("click", this._onClickFullscreen), window.document.addEventListener(this._fullscreenchange, this._onFullscreenChange);
                    }
                    _updateTitle() {
                      const R = this._getTitle();
                      this._fullscreenButton.setAttribute("aria-label", R), this._fullscreenButton.title = R;
                    }
                    _getTitle() {
                      return this._map._getUIString(this._isFullscreen() ? "FullscreenControl.Exit" : "FullscreenControl.Enter");
                    }
                    _isFullscreen() {
                      return this._fullscreen;
                    }
                    _handleFullscreenChange() {
                      this._fullscreen = !this._fullscreen, this._fullscreenButton.classList.toggle("maplibregl-ctrl-shrink"), this._fullscreenButton.classList.toggle("maplibregl-ctrl-fullscreen"), this._updateTitle(), this._fullscreen ? (this.fire(new s.k("fullscreenstart")), this._prevCooperativeGesturesEnabled = this._map.cooperativeGestures.isEnabled(), this._map.cooperativeGestures.disable()) : (this.fire(new s.k("fullscreenend")), this._prevCooperativeGesturesEnabled && this._map.cooperativeGestures.enable());
                    }
                    _exitFullscreen() {
                      window.document.exitFullscreen ? window.document.exitFullscreen() : window.document.mozCancelFullScreen ? window.document.mozCancelFullScreen() : window.document.msExitFullscreen ? window.document.msExitFullscreen() : window.document.webkitCancelFullScreen ? window.document.webkitCancelFullScreen() : this._togglePseudoFullScreen();
                    }
                    _requestFullscreen() {
                      this._container.requestFullscreen ? this._container.requestFullscreen() : this._container.mozRequestFullScreen ? this._container.mozRequestFullScreen() : this._container.msRequestFullscreen ? this._container.msRequestFullscreen() : this._container.webkitRequestFullscreen ? this._container.webkitRequestFullscreen() : this._togglePseudoFullScreen();
                    }
                    _togglePseudoFullScreen() {
                      this._container.classList.toggle("maplibregl-pseudo-fullscreen"), this._handleFullscreenChange(), this._map.resize();
                    }
                  }
                  class dd {
                    /**
                     * @param options - the control's options
                     */
                    constructor(R) {
                      this._toggleTerrain = () => {
                        this._map.getTerrain() ? this._map.setTerrain(null) : this._map.setTerrain(this.options), this._updateTerrainIcon();
                      }, this._updateTerrainIcon = () => {
                        this._terrainButton.classList.remove("maplibregl-ctrl-terrain"), this._terrainButton.classList.remove("maplibregl-ctrl-terrain-enabled"), this._map.terrain ? (this._terrainButton.classList.add("maplibregl-ctrl-terrain-enabled"), this._terrainButton.title = this._map._getUIString("TerrainControl.Disable")) : (this._terrainButton.classList.add("maplibregl-ctrl-terrain"), this._terrainButton.title = this._map._getUIString("TerrainControl.Enable"));
                      }, this.options = R;
                    }
                    /** {@inheritDoc IControl.onAdd} */
                    onAdd(R) {
                      return this._map = R, this._container = h.create("div", "maplibregl-ctrl maplibregl-ctrl-group"), this._terrainButton = h.create("button", "maplibregl-ctrl-terrain", this._container), h.create("span", "maplibregl-ctrl-icon", this._terrainButton).setAttribute("aria-hidden", "true"), this._terrainButton.type = "button", this._terrainButton.addEventListener("click", this._toggleTerrain), this._updateTerrainIcon(), this._map.on("terrain", this._updateTerrainIcon), this._container;
                    }
                    /** {@inheritDoc IControl.onRemove} */
                    onRemove() {
                      h.remove(this._container), this._map.off("terrain", this._updateTerrainIcon), this._map = void 0;
                    }
                  }
                  const rv = {
                    closeButton: !0,
                    closeOnClick: !0,
                    focusAfterOpen: !0,
                    className: "",
                    maxWidth: "240px",
                    subpixelPositioning: !1
                  }, vd = [
                    "a[href]",
                    "[tabindex]:not([tabindex='-1'])",
                    "[contenteditable]:not([contenteditable='false'])",
                    "button:not([disabled])",
                    "input:not([disabled])",
                    "select:not([disabled])",
                    "textarea:not([disabled])"
                  ].join(", ");
                  class Oh extends s.E {
                    /**
                     * @param options - the options
                     */
                    constructor(R) {
                      super(), this.remove = () => (this._content && h.remove(this._content), this._container && (h.remove(this._container), delete this._container), this._map && (this._map.off("move", this._update), this._map.off("move", this._onClose), this._map.off("click", this._onClose), this._map.off("remove", this.remove), this._map.off("mousemove", this._onMouseMove), this._map.off("mouseup", this._onMouseUp), this._map.off("drag", this._onDrag), this._map._canvasContainer.classList.remove("maplibregl-track-pointer"), delete this._map, this.fire(new s.k("close"))), this), this._onMouseUp = (J) => {
                        this._update(J.point);
                      }, this._onMouseMove = (J) => {
                        this._update(J.point);
                      }, this._onDrag = (J) => {
                        this._update(J.point);
                      }, this._update = (J) => {
                        var yt;
                        const Tt = this._lngLat || this._trackPointer;
                        if (!this._map || !Tt || !this._content)
                          return;
                        if (!this._container) {
                          if (this._container = h.create("div", "maplibregl-popup", this._map.getContainer()), this._tip = h.create("div", "maplibregl-popup-tip", this._container), this._container.appendChild(this._content), this.options.className)
                            for (const pr of this.options.className.split(" "))
                              this._container.classList.add(pr);
                          this._closeButton && this._closeButton.setAttribute("aria-label", this._map._getUIString("Popup.Close")), this._trackPointer && this._container.classList.add("maplibregl-popup-track-pointer");
                        }
                        if (this.options.maxWidth && this._container.style.maxWidth !== this.options.maxWidth && (this._container.style.maxWidth = this.options.maxWidth), this._map.transform.renderWorldCopies && !this._trackPointer ? this._lngLat = nf(this._lngLat, this._flatPos, this._map.transform) : this._lngLat = (yt = this._lngLat) === null || yt === void 0 ? void 0 : yt.wrap(), this._trackPointer && !J)
                          return;
                        const Nt = this._flatPos = this._pos = this._trackPointer && J ? J : this._map.project(this._lngLat);
                        this._map.terrain && (this._flatPos = this._trackPointer && J ? J : this._map.transform.locationPoint(this._lngLat));
                        let be = this.options.anchor;
                        const Re = dh(this.options.offset);
                        if (!be) {
                          const pr = this._container.offsetWidth, br = this._container.offsetHeight;
                          let Ar;
                          Nt.y + Re.bottom.y < br ? Ar = ["top"] : Nt.y > this._map.transform.height - br ? Ar = ["bottom"] : Ar = [], Nt.x < pr / 2 ? Ar.push("left") : Nt.x > this._map.transform.width - pr / 2 && Ar.push("right"), Ar.length === 0 ? be = "bottom" : be = Ar.join("-");
                        }
                        let je = Nt.add(Re[be]);
                        this.options.subpixelPositioning || (je = je.round()), h.setTransform(this._container, `${cc[be]} translate(${je.x}px,${je.y}px)`), Zl(this._container, be, "popup");
                      }, this._onClose = () => {
                        this.remove();
                      }, this.options = s.e(Object.create(rv), R);
                    }
                    /**
                     * Adds the popup to a map.
                     *
                     * @param map - The MapLibre GL JS map to add the popup to.
                     * @example
                     * ```ts
                     * new Popup()
                     *   .setLngLat([0, 0])
                     *   .setHTML("<h1>Null Island</h1>")
                     *   .addTo(map);
                     * ```
                     * @see [Display a popup](https://maplibre.org/maplibre-gl-js/docs/examples/popup/)
                     * @see [Display a popup on hover](https://maplibre.org/maplibre-gl-js/docs/examples/popup-on-hover/)
                     * @see [Display a popup on click](https://maplibre.org/maplibre-gl-js/docs/examples/popup-on-click/)
                     * @see [Show polygon information on click](https://maplibre.org/maplibre-gl-js/docs/examples/polygon-popup-on-click/)
                     */
                    addTo(R) {
                      return this._map && this.remove(), this._map = R, this.options.closeOnClick && this._map.on("click", this._onClose), this.options.closeOnMove && this._map.on("move", this._onClose), this._map.on("remove", this.remove), this._update(), this._focusFirstElement(), this._trackPointer ? (this._map.on("mousemove", this._onMouseMove), this._map.on("mouseup", this._onMouseUp), this._container && this._container.classList.add("maplibregl-popup-track-pointer"), this._map._canvasContainer.classList.add("maplibregl-track-pointer")) : this._map.on("move", this._update), this.fire(new s.k("open")), this;
                    }
                    /**
                     * @returns `true` if the popup is open, `false` if it is closed.
                     */
                    isOpen() {
                      return !!this._map;
                    }
                    /**
                     * Returns the geographical location of the popup's anchor.
                     *
                     * The longitude of the result may differ by a multiple of 360 degrees from the longitude previously
                     * set by `setLngLat` because `Popup` wraps the anchor longitude across copies of the world to keep
                     * the popup on screen.
                     *
                     * @returns The geographical location of the popup's anchor.
                     */
                    getLngLat() {
                      return this._lngLat;
                    }
                    /**
                     * Sets the geographical location of the popup's anchor, and moves the popup to it. Replaces trackPointer() behavior.
                     *
                     * @param lnglat - The geographical location to set as the popup's anchor.
                     */
                    setLngLat(R) {
                      return this._lngLat = s.N.convert(R), this._pos = null, this._flatPos = null, this._trackPointer = !1, this._update(), this._map && (this._map.on("move", this._update), this._map.off("mousemove", this._onMouseMove), this._container && this._container.classList.remove("maplibregl-popup-track-pointer"), this._map._canvasContainer.classList.remove("maplibregl-track-pointer")), this;
                    }
                    /**
                     * Tracks the popup anchor to the cursor position on screens with a pointer device (it will be hidden on touchscreens). Replaces the `setLngLat` behavior.
                     * For most use cases, set `closeOnClick` and `closeButton` to `false`.
                     * @example
                     * ```ts
                     * let popup = new Popup({ closeOnClick: false, closeButton: false })
                     *   .setHTML("<h1>Hello World!</h1>")
                     *   .trackPointer()
                     *   .addTo(map);
                     * ```
                     */
                    trackPointer() {
                      return this._trackPointer = !0, this._pos = null, this._flatPos = null, this._update(), this._map && (this._map.off("move", this._update), this._map.on("mousemove", this._onMouseMove), this._map.on("drag", this._onDrag), this._container && this._container.classList.add("maplibregl-popup-track-pointer"), this._map._canvasContainer.classList.add("maplibregl-track-pointer")), this;
                    }
                    /**
                     * Returns the `Popup`'s HTML element.
                     * @example
                     * Change the `Popup` element's font size
                     * ```ts
                     * let popup = new Popup()
                     *   .setLngLat([-96, 37.8])
                     *   .setHTML("<p>Hello World!</p>")
                     *   .addTo(map);
                     * let popupElem = popup.getElement();
                     * popupElem.style.fontSize = "25px";
                     * ```
                     * @returns element
                     */
                    getElement() {
                      return this._container;
                    }
                    /**
                     * Sets the popup's content to a string of text.
                     *
                     * This function creates a [Text](https://developer.mozilla.org/en-US/docs/Web/API/Text) node in the DOM,
                     * so it cannot insert raw HTML. Use this method for security against XSS
                     * if the popup content is user-provided.
                     *
                     * @param text - Textual content for the popup.
                     * @example
                     * ```ts
                     * let popup = new Popup()
                     *   .setLngLat(e.lngLat)
                     *   .setText('Hello, world!')
                     *   .addTo(map);
                     * ```
                     */
                    setText(R) {
                      return this.setDOMContent(document.createTextNode(R));
                    }
                    /**
                     * Sets the popup's content to the HTML provided as a string.
                     *
                     * This method does not perform HTML filtering or sanitization, and must be
                     * used only with trusted content. Consider {@link Popup#setText} if
                     * the content is an untrusted text string.
                     *
                     * @param html - A string representing HTML content for the popup.
                     * @example
                     * ```ts
                     * let popup = new Popup()
                     *   .setLngLat(e.lngLat)
                     *   .setHTML("<h1>Hello World!</h1>")
                     *   .addTo(map);
                     * ```
                     * @see [Display a popup](https://maplibre.org/maplibre-gl-js/docs/examples/popup/)
                     * @see [Display a popup on hover](https://maplibre.org/maplibre-gl-js/docs/examples/popup-on-hover/)
                     * @see [Display a popup on click](https://maplibre.org/maplibre-gl-js/docs/examples/popup-on-click/)
                     * @see [Attach a popup to a marker instance](https://maplibre.org/maplibre-gl-js/docs/examples/set-popup/)
                     */
                    setHTML(R) {
                      const J = document.createDocumentFragment(), yt = document.createElement("body");
                      let Tt;
                      for (yt.innerHTML = R; Tt = yt.firstChild, !!Tt; )
                        J.appendChild(Tt);
                      return this.setDOMContent(J);
                    }
                    /**
                     * Returns the popup's maximum width.
                     *
                     * @returns The maximum width of the popup.
                     */
                    getMaxWidth() {
                      var R;
                      return (R = this._container) === null || R === void 0 ? void 0 : R.style.maxWidth;
                    }
                    /**
                     * Sets the popup's maximum width. This is setting the CSS property `max-width`.
                     * Available values can be found here: https://developer.mozilla.org/en-US/docs/Web/CSS/max-width
                     *
                     * @param maxWidth - A string representing the value for the maximum width.
                     */
                    setMaxWidth(R) {
                      return this.options.maxWidth = R, this._update(), this;
                    }
                    /**
                     * Sets the popup's content to the element provided as a DOM node.
                     *
                     * @param htmlNode - A DOM node to be used as content for the popup.
                     * @example
                     * Create an element with the popup content
                     * ```ts
                     * let div = document.createElement('div');
                     * div.innerHTML = 'Hello, world!';
                     * let popup = new Popup()
                     *   .setLngLat(e.lngLat)
                     *   .setDOMContent(div)
                     *   .addTo(map);
                     * ```
                     */
                    setDOMContent(R) {
                      if (this._content)
                        for (; this._content.hasChildNodes(); )
                          this._content.firstChild && this._content.removeChild(this._content.firstChild);
                      else
                        this._content = h.create("div", "maplibregl-popup-content", this._container);
                      return this._content.appendChild(R), this._createCloseButton(), this._update(), this._focusFirstElement(), this;
                    }
                    /**
                     * Adds a CSS class to the popup container element.
                     *
                     * @param className - Non-empty string with CSS class name to add to popup container
                     *
                     * @example
                     * ```ts
                     * let popup = new Popup()
                     * popup.addClassName('some-class')
                     * ```
                     */
                    addClassName(R) {
                      return this._container && this._container.classList.add(R), this;
                    }
                    /**
                     * Removes a CSS class from the popup container element.
                     *
                     * @param className - Non-empty string with CSS class name to remove from popup container
                     *
                     * @example
                     * ```ts
                     * let popup = new Popup()
                     * popup.removeClassName('some-class')
                     * ```
                     */
                    removeClassName(R) {
                      return this._container && this._container.classList.remove(R), this;
                    }
                    /**
                     * Sets the popup's offset.
                     *
                     * @param offset - Sets the popup's offset.
                     */
                    setOffset(R) {
                      return this.options.offset = R, this._update(), this;
                    }
                    /**
                     * Add or remove the given CSS class on the popup container, depending on whether the container currently has that class.
                     *
                     * @param className - Non-empty string with CSS class name to add/remove
                     *
                     * @returns if the class was removed return false, if class was added, then return true, undefined if there is no container
                     *
                     * @example
                     * ```ts
                     * let popup = new Popup()
                     * popup.toggleClassName('toggleClass')
                     * ```
                     */
                    toggleClassName(R) {
                      if (this._container)
                        return this._container.classList.toggle(R);
                    }
                    /**
                     * Set the option to allow subpixel positioning of the popup by passing a boolean
                     *
                     * @param value - When boolean is true, subpixel positioning is enabled for the popup.
                     *
                     * @example
                     * ```ts
                     * let popup = new Popup()
                     * popup.setSubpixelPositioning(true);
                     * ```
                     */
                    setSubpixelPositioning(R) {
                      this.options.subpixelPositioning = R;
                    }
                    _createCloseButton() {
                      this.options.closeButton && (this._closeButton = h.create("button", "maplibregl-popup-close-button", this._content), this._closeButton.type = "button", this._closeButton.innerHTML = "&#215;", this._closeButton.addEventListener("click", this._onClose));
                    }
                    _focusFirstElement() {
                      if (!this.options.focusAfterOpen || !this._container)
                        return;
                      const R = this._container.querySelector(vd);
                      R && R.focus();
                    }
                  }
                  function dh(Ot) {
                    if (Ot)
                      if (typeof Ot == "number") {
                        const R = Math.round(Math.abs(Ot) / Math.SQRT2);
                        return {
                          center: new s.P(0, 0),
                          top: new s.P(0, Ot),
                          "top-left": new s.P(R, R),
                          "top-right": new s.P(-R, R),
                          bottom: new s.P(0, -Ot),
                          "bottom-left": new s.P(R, -R),
                          "bottom-right": new s.P(-R, -R),
                          left: new s.P(Ot, 0),
                          right: new s.P(-Ot, 0)
                        };
                      } else if (Ot instanceof s.P || Array.isArray(Ot)) {
                        const R = s.P.convert(Ot);
                        return {
                          center: R,
                          top: R,
                          "top-left": R,
                          "top-right": R,
                          bottom: R,
                          "bottom-left": R,
                          "bottom-right": R,
                          left: R,
                          right: R
                        };
                      } else
                        return {
                          center: s.P.convert(Ot.center || [0, 0]),
                          top: s.P.convert(Ot.top || [0, 0]),
                          "top-left": s.P.convert(Ot["top-left"] || [0, 0]),
                          "top-right": s.P.convert(Ot["top-right"] || [0, 0]),
                          bottom: s.P.convert(Ot.bottom || [0, 0]),
                          "bottom-left": s.P.convert(Ot["bottom-left"] || [0, 0]),
                          "bottom-right": s.P.convert(Ot["bottom-right"] || [0, 0]),
                          left: s.P.convert(Ot.left || [0, 0]),
                          right: s.P.convert(Ot.right || [0, 0])
                        };
                    else return dh(new s.P(0, 0));
                  }
                  const vh = M.version;
                  function ps(Ot, R) {
                    return de().setRTLTextPlugin(Ot, R);
                  }
                  function $s() {
                    return de().getRTLTextPluginStatus();
                  }
                  function xu() {
                    return vh;
                  }
                  function Bh() {
                    return Bt.workerCount;
                  }
                  function yv(Ot) {
                    Bt.workerCount = Ot;
                  }
                  function kp() {
                    return s.a.MAX_PARALLEL_IMAGE_REQUESTS;
                  }
                  function Gv(Ot) {
                    s.a.MAX_PARALLEL_IMAGE_REQUESTS = Ot;
                  }
                  function pd() {
                    return s.a.WORKER_URL;
                  }
                  function zp(Ot) {
                    s.a.WORKER_URL = Ot;
                  }
                  function nv(Ot) {
                    return fe().broadcast("IS", Ot);
                  }
                  n.AJAXError = s.bg, n.Evented = s.E, n.LngLat = s.N, n.MercatorCoordinate = s.Z, n.Point = s.P, n.addProtocol = s.bh, n.config = s.a, n.removeProtocol = s.bi, n.AttributionControl = Vi, n.BoxZoomHandler = Lf, n.CanvasSource = lr, n.CooperativeGesturesHandler = Mn, n.DoubleClickZoomHandler = vr, n.DragPanHandler = Ur, n.DragRotateHandler = hn, n.EdgeInsets = aa, n.FullscreenControl = Rl, n.GeoJSONSource = ue, n.GeolocateControl = af, n.Hash = al, n.ImageSource = Ue, n.KeyboardHandler = bt, n.LngLatBounds = De, n.LogoControl = Di, n.Map = ko, n.MapMouseEvent = qa, n.MapTouchEvent = Yo, n.MapWheelEvent = Rh, n.Marker = fc, n.NavigationControl = lc, n.Popup = Oh, n.RasterDEMTileSource = we, n.RasterTileSource = qe, n.ScaleControl = Fh, n.ScrollZoomHandler = $e, n.Style = Ss, n.TerrainControl = dd, n.TwoFingersTouchPitchHandler = mt, n.TwoFingersTouchRotateHandler = Bd, n.TwoFingersTouchZoomHandler = sc, n.TwoFingersTouchZoomRotateHandler = En, n.VectorTileSource = dr, n.VideoSource = rr, n.addSourceType = Br, n.clearPrewarmedResources = St, n.getMaxParallelImageRequests = kp, n.getRTLTextPluginStatus = $s, n.getVersion = xu, n.getWorkerCount = Bh, n.getWorkerUrl = pd, n.importScriptInWorkers = nv, n.prewarm = Mt, n.setMaxParallelImageRequests = Gv, n.setRTLTextPlugin = ps, n.setWorkerCount = yv, n.setWorkerUrl = zp;
                });
                var P = K;
                return P;
              });
            }
          ),
          /***/
          88640: (
            /***/
            function(Y, K, e) {
              e.d(K, {
                GW: function() {
                  return (
                    /* reexport */
                    Qt
                  );
                },
                Dj: function() {
                  return (
                    /* reexport */
                    ut
                  );
                }
              });
              function b(Vt, zt, Rt) {
                Vt.prototype = zt.prototype = Rt, Rt.constructor = Vt;
              }
              function P(Vt, zt) {
                var Rt = Object.create(Vt.prototype);
                for (var Wt in zt) Rt[Wt] = zt[Wt];
                return Rt;
              }
              function n() {
              }
              var s = 0.7, T = 1 / s, A = "\\s*([+-]?\\d+)\\s*", p = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*", u = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*", t = /^#([0-9a-f]{3,8})$/, r = new RegExp("^rgb\\(".concat(A, ",").concat(A, ",").concat(A, "\\)$")), i = new RegExp("^rgb\\(".concat(u, ",").concat(u, ",").concat(u, "\\)$")), a = new RegExp("^rgba\\(".concat(A, ",").concat(A, ",").concat(A, ",").concat(p, "\\)$")), l = new RegExp("^rgba\\(".concat(u, ",").concat(u, ",").concat(u, ",").concat(p, "\\)$")), o = new RegExp("^hsl\\(".concat(p, ",").concat(u, ",").concat(u, "\\)$")), y = new RegExp("^hsla\\(".concat(p, ",").concat(u, ",").concat(u, ",").concat(p, "\\)$")), g = {
                aliceblue: 15792383,
                antiquewhite: 16444375,
                aqua: 65535,
                aquamarine: 8388564,
                azure: 15794175,
                beige: 16119260,
                bisque: 16770244,
                black: 0,
                blanchedalmond: 16772045,
                blue: 255,
                blueviolet: 9055202,
                brown: 10824234,
                burlywood: 14596231,
                cadetblue: 6266528,
                chartreuse: 8388352,
                chocolate: 13789470,
                coral: 16744272,
                cornflowerblue: 6591981,
                cornsilk: 16775388,
                crimson: 14423100,
                cyan: 65535,
                darkblue: 139,
                darkcyan: 35723,
                darkgoldenrod: 12092939,
                darkgray: 11119017,
                darkgreen: 25600,
                darkgrey: 11119017,
                darkkhaki: 12433259,
                darkmagenta: 9109643,
                darkolivegreen: 5597999,
                darkorange: 16747520,
                darkorchid: 10040012,
                darkred: 9109504,
                darksalmon: 15308410,
                darkseagreen: 9419919,
                darkslateblue: 4734347,
                darkslategray: 3100495,
                darkslategrey: 3100495,
                darkturquoise: 52945,
                darkviolet: 9699539,
                deeppink: 16716947,
                deepskyblue: 49151,
                dimgray: 6908265,
                dimgrey: 6908265,
                dodgerblue: 2003199,
                firebrick: 11674146,
                floralwhite: 16775920,
                forestgreen: 2263842,
                fuchsia: 16711935,
                gainsboro: 14474460,
                ghostwhite: 16316671,
                gold: 16766720,
                goldenrod: 14329120,
                gray: 8421504,
                green: 32768,
                greenyellow: 11403055,
                grey: 8421504,
                honeydew: 15794160,
                hotpink: 16738740,
                indianred: 13458524,
                indigo: 4915330,
                ivory: 16777200,
                khaki: 15787660,
                lavender: 15132410,
                lavenderblush: 16773365,
                lawngreen: 8190976,
                lemonchiffon: 16775885,
                lightblue: 11393254,
                lightcoral: 15761536,
                lightcyan: 14745599,
                lightgoldenrodyellow: 16448210,
                lightgray: 13882323,
                lightgreen: 9498256,
                lightgrey: 13882323,
                lightpink: 16758465,
                lightsalmon: 16752762,
                lightseagreen: 2142890,
                lightskyblue: 8900346,
                lightslategray: 7833753,
                lightslategrey: 7833753,
                lightsteelblue: 11584734,
                lightyellow: 16777184,
                lime: 65280,
                limegreen: 3329330,
                linen: 16445670,
                magenta: 16711935,
                maroon: 8388608,
                mediumaquamarine: 6737322,
                mediumblue: 205,
                mediumorchid: 12211667,
                mediumpurple: 9662683,
                mediumseagreen: 3978097,
                mediumslateblue: 8087790,
                mediumspringgreen: 64154,
                mediumturquoise: 4772300,
                mediumvioletred: 13047173,
                midnightblue: 1644912,
                mintcream: 16121850,
                mistyrose: 16770273,
                moccasin: 16770229,
                navajowhite: 16768685,
                navy: 128,
                oldlace: 16643558,
                olive: 8421376,
                olivedrab: 7048739,
                orange: 16753920,
                orangered: 16729344,
                orchid: 14315734,
                palegoldenrod: 15657130,
                palegreen: 10025880,
                paleturquoise: 11529966,
                palevioletred: 14381203,
                papayawhip: 16773077,
                peachpuff: 16767673,
                peru: 13468991,
                pink: 16761035,
                plum: 14524637,
                powderblue: 11591910,
                purple: 8388736,
                rebeccapurple: 6697881,
                red: 16711680,
                rosybrown: 12357519,
                royalblue: 4286945,
                saddlebrown: 9127187,
                salmon: 16416882,
                sandybrown: 16032864,
                seagreen: 3050327,
                seashell: 16774638,
                sienna: 10506797,
                silver: 12632256,
                skyblue: 8900331,
                slateblue: 6970061,
                slategray: 7372944,
                slategrey: 7372944,
                snow: 16775930,
                springgreen: 65407,
                steelblue: 4620980,
                tan: 13808780,
                teal: 32896,
                thistle: 14204888,
                tomato: 16737095,
                turquoise: 4251856,
                violet: 15631086,
                wheat: 16113331,
                white: 16777215,
                whitesmoke: 16119285,
                yellow: 16776960,
                yellowgreen: 10145074
              };
              b(n, _, {
                copy: function(zt) {
                  return Object.assign(new this.constructor(), this, zt);
                },
                displayable: function() {
                  return this.rgb().displayable();
                },
                hex: x,
                // Deprecated! Use color.formatHex.
                formatHex: x,
                formatHex8: c,
                formatHsl: v,
                formatRgb: f,
                toString: f
              });
              function x() {
                return this.rgb().formatHex();
              }
              function c() {
                return this.rgb().formatHex8();
              }
              function v() {
                return V(this).formatHsl();
              }
              function f() {
                return this.rgb().formatRgb();
              }
              function _(Vt) {
                var zt, Rt;
                return Vt = (Vt + "").trim().toLowerCase(), (zt = t.exec(Vt)) ? (Rt = zt[1].length, zt = parseInt(zt[1], 16), Rt === 6 ? S(zt) : Rt === 3 ? new L(zt >> 8 & 15 | zt >> 4 & 240, zt >> 4 & 15 | zt & 240, (zt & 15) << 4 | zt & 15, 1) : Rt === 8 ? M(zt >> 24 & 255, zt >> 16 & 255, zt >> 8 & 255, (zt & 255) / 255) : Rt === 4 ? M(zt >> 12 & 15 | zt >> 8 & 240, zt >> 8 & 15 | zt >> 4 & 240, zt >> 4 & 15 | zt & 240, ((zt & 15) << 4 | zt & 15) / 255) : null) : (zt = r.exec(Vt)) ? new L(zt[1], zt[2], zt[3], 1) : (zt = i.exec(Vt)) ? new L(zt[1] * 255 / 100, zt[2] * 255 / 100, zt[3] * 255 / 100, 1) : (zt = a.exec(Vt)) ? M(zt[1], zt[2], zt[3], zt[4]) : (zt = l.exec(Vt)) ? M(zt[1] * 255 / 100, zt[2] * 255 / 100, zt[3] * 255 / 100, zt[4]) : (zt = o.exec(Vt)) ? B(zt[1], zt[2] / 100, zt[3] / 100, 1) : (zt = y.exec(Vt)) ? B(zt[1], zt[2] / 100, zt[3] / 100, zt[4]) : g.hasOwnProperty(Vt) ? S(g[Vt]) : Vt === "transparent" ? new L(NaN, NaN, NaN, 0) : null;
              }
              function S(Vt) {
                return new L(Vt >> 16 & 255, Vt >> 8 & 255, Vt & 255, 1);
              }
              function M(Vt, zt, Rt, Wt) {
                return Wt <= 0 && (Vt = zt = Rt = NaN), new L(Vt, zt, Rt, Wt);
              }
              function C(Vt) {
                return Vt instanceof n || (Vt = _(Vt)), Vt ? (Vt = Vt.rgb(), new L(Vt.r, Vt.g, Vt.b, Vt.opacity)) : new L();
              }
              function m(Vt, zt, Rt, Wt) {
                return arguments.length === 1 ? C(Vt) : new L(Vt, zt, Rt, Wt ?? 1);
              }
              function L(Vt, zt, Rt, Wt) {
                this.r = +Vt, this.g = +zt, this.b = +Rt, this.opacity = +Wt;
              }
              b(L, m, P(n, {
                brighter: function(zt) {
                  return zt = zt == null ? T : Math.pow(T, zt), new L(this.r * zt, this.g * zt, this.b * zt, this.opacity);
                },
                darker: function(zt) {
                  return zt = zt == null ? s : Math.pow(s, zt), new L(this.r * zt, this.g * zt, this.b * zt, this.opacity);
                },
                rgb: function() {
                  return this;
                },
                clamp: function() {
                  return new L(z(this.r), z(this.g), z(this.b), w(this.opacity));
                },
                displayable: function() {
                  return -0.5 <= this.r && this.r < 255.5 && -0.5 <= this.g && this.g < 255.5 && -0.5 <= this.b && this.b < 255.5 && 0 <= this.opacity && this.opacity <= 1;
                },
                hex: d,
                // Deprecated! Use color.formatHex.
                formatHex: d,
                formatHex8: h,
                formatRgb: E,
                toString: E
              }));
              function d() {
                return "#".concat(O(this.r)).concat(O(this.g)).concat(O(this.b));
              }
              function h() {
                return "#".concat(O(this.r)).concat(O(this.g)).concat(O(this.b)).concat(O((isNaN(this.opacity) ? 1 : this.opacity) * 255));
              }
              function E() {
                var Vt = w(this.opacity);
                return "".concat(Vt === 1 ? "rgb(" : "rgba(").concat(z(this.r), ", ").concat(z(this.g), ", ").concat(z(this.b)).concat(Vt === 1 ? ")" : ", ".concat(Vt, ")"));
              }
              function w(Vt) {
                return isNaN(Vt) ? 1 : Math.max(0, Math.min(1, Vt));
              }
              function z(Vt) {
                return Math.max(0, Math.min(255, Math.round(Vt) || 0));
              }
              function O(Vt) {
                return Vt = z(Vt), (Vt < 16 ? "0" : "") + Vt.toString(16);
              }
              function B(Vt, zt, Rt, Wt) {
                return Wt <= 0 ? Vt = zt = Rt = NaN : Rt <= 0 || Rt >= 1 ? Vt = zt = NaN : zt <= 0 && (Vt = NaN), new H(Vt, zt, Rt, Wt);
              }
              function V(Vt) {
                if (Vt instanceof H) return new H(Vt.h, Vt.s, Vt.l, Vt.opacity);
                if (Vt instanceof n || (Vt = _(Vt)), !Vt) return new H();
                if (Vt instanceof H) return Vt;
                Vt = Vt.rgb();
                var zt = Vt.r / 255, Rt = Vt.g / 255, Wt = Vt.b / 255, kt = Math.min(zt, Rt, Wt), re = Math.max(zt, Rt, Wt), ge = NaN, _e = re - kt, ce = (re + kt) / 2;
                return _e ? (zt === re ? ge = (Rt - Wt) / _e + (Rt < Wt) * 6 : Rt === re ? ge = (Wt - zt) / _e + 2 : ge = (zt - Rt) / _e + 4, _e /= ce < 0.5 ? re + kt : 2 - re - kt, ge *= 60) : _e = ce > 0 && ce < 1 ? 0 : ge, new H(ge, _e, ce, Vt.opacity);
              }
              function U(Vt, zt, Rt, Wt) {
                return arguments.length === 1 ? V(Vt) : new H(Vt, zt, Rt, Wt ?? 1);
              }
              function H(Vt, zt, Rt, Wt) {
                this.h = +Vt, this.s = +zt, this.l = +Rt, this.opacity = +Wt;
              }
              b(H, U, P(n, {
                brighter: function(zt) {
                  return zt = zt == null ? T : Math.pow(T, zt), new H(this.h, this.s, this.l * zt, this.opacity);
                },
                darker: function(zt) {
                  return zt = zt == null ? s : Math.pow(s, zt), new H(this.h, this.s, this.l * zt, this.opacity);
                },
                rgb: function() {
                  var zt = this.h % 360 + (this.h < 0) * 360, Rt = isNaN(zt) || isNaN(this.s) ? 0 : this.s, Wt = this.l, kt = Wt + (Wt < 0.5 ? Wt : 1 - Wt) * Rt, re = 2 * Wt - kt;
                  return new L(q(zt >= 240 ? zt - 240 : zt + 120, re, kt), q(zt, re, kt), q(zt < 120 ? zt + 240 : zt - 120, re, kt), this.opacity);
                },
                clamp: function() {
                  return new H(F(this.h), G(this.s), G(this.l), w(this.opacity));
                },
                displayable: function() {
                  return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1;
                },
                formatHsl: function() {
                  var zt = w(this.opacity);
                  return "".concat(zt === 1 ? "hsl(" : "hsla(").concat(F(this.h), ", ").concat(G(this.s) * 100, "%, ").concat(G(this.l) * 100, "%").concat(zt === 1 ? ")" : ", ".concat(zt, ")"));
                }
              }));
              function F(Vt) {
                return Vt = (Vt || 0) % 360, Vt < 0 ? Vt + 360 : Vt;
              }
              function G(Vt) {
                return Math.max(0, Math.min(1, Vt || 0));
              }
              function q(Vt, zt, Rt) {
                return (Vt < 60 ? zt + (Rt - zt) * Vt / 60 : Vt < 180 ? Rt : Vt < 240 ? zt + (Rt - zt) * (240 - Vt) / 60 : zt) * 255;
              }
              var rt = function(Vt) {
                return function() {
                  return Vt;
                };
              };
              function st(Vt, zt) {
                return function(Rt) {
                  return Vt + Rt * zt;
                };
              }
              function vt(Vt, zt, Rt) {
                return Vt = Math.pow(Vt, Rt), zt = Math.pow(zt, Rt) - Vt, Rt = 1 / Rt, function(Wt) {
                  return Math.pow(Vt + Wt * zt, Rt);
                };
              }
              function ht(Vt) {
                return (Vt = +Vt) == 1 ? et : function(zt, Rt) {
                  return Rt - zt ? vt(zt, Rt, Vt) : rt(isNaN(zt) ? Rt : zt);
                };
              }
              function et(Vt, zt) {
                var Rt = zt - Vt;
                return Rt ? st(Vt, Rt) : rt(isNaN(Vt) ? zt : Vt);
              }
              var Q = function Vt(zt) {
                var Rt = ht(zt);
                function Wt(kt, re) {
                  var ge = Rt((kt = m(kt)).r, (re = m(re)).r), _e = Rt(kt.g, re.g), ce = Rt(kt.b, re.b), ae = et(kt.opacity, re.opacity);
                  return function(Se) {
                    return kt.r = ge(Se), kt.g = _e(Se), kt.b = ce(Se), kt.opacity = ae(Se), kt + "";
                  };
                }
                return Wt.gamma = Vt, Wt;
              }(1);
              function j(Vt, zt) {
                var Rt = zt ? zt.length : 0, Wt = Vt ? Math.min(Rt, Vt.length) : 0, kt = new Array(Wt), re = new Array(Rt), ge;
                for (ge = 0; ge < Wt; ++ge) kt[ge] = Qt(Vt[ge], zt[ge]);
                for (; ge < Rt; ++ge) re[ge] = zt[ge];
                return function(_e) {
                  for (ge = 0; ge < Wt; ++ge) re[ge] = kt[ge](_e);
                  return re;
                };
              }
              function at(Vt, zt) {
                var Rt = /* @__PURE__ */ new Date();
                return Vt = +Vt, zt = +zt, function(Wt) {
                  return Rt.setTime(Vt * (1 - Wt) + zt * Wt), Rt;
                };
              }
              function ut(Vt, zt) {
                return Vt = +Vt, zt = +zt, function(Rt) {
                  return Vt * (1 - Rt) + zt * Rt;
                };
              }
              function nt(Vt) {
                "@babel/helpers - typeof";
                return nt = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(zt) {
                  return typeof zt;
                } : function(zt) {
                  return zt && typeof Symbol == "function" && zt.constructor === Symbol && zt !== Symbol.prototype ? "symbol" : typeof zt;
                }, nt(Vt);
              }
              function X(Vt, zt) {
                var Rt = {}, Wt = {}, kt;
                (Vt === null || nt(Vt) !== "object") && (Vt = {}), (zt === null || nt(zt) !== "object") && (zt = {});
                for (kt in zt)
                  kt in Vt ? Rt[kt] = Qt(Vt[kt], zt[kt]) : Wt[kt] = zt[kt];
                return function(re) {
                  for (kt in Rt) Wt[kt] = Rt[kt](re);
                  return Wt;
                };
              }
              var ct = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, lt = new RegExp(ct.source, "g");
              function pt(Vt) {
                return function() {
                  return Vt;
                };
              }
              function wt(Vt) {
                return function(zt) {
                  return Vt(zt) + "";
                };
              }
              function Et(Vt, zt) {
                var Rt = ct.lastIndex = lt.lastIndex = 0, Wt, kt, re, ge = -1, _e = [], ce = [];
                for (Vt = Vt + "", zt = zt + ""; (Wt = ct.exec(Vt)) && (kt = lt.exec(zt)); )
                  (re = kt.index) > Rt && (re = zt.slice(Rt, re), _e[ge] ? _e[ge] += re : _e[++ge] = re), (Wt = Wt[0]) === (kt = kt[0]) ? _e[ge] ? _e[ge] += kt : _e[++ge] = kt : (_e[++ge] = null, ce.push({
                    i: ge,
                    x: ut(Wt, kt)
                  })), Rt = lt.lastIndex;
                return Rt < zt.length && (re = zt.slice(Rt), _e[ge] ? _e[ge] += re : _e[++ge] = re), _e.length < 2 ? ce[0] ? wt(ce[0].x) : pt(zt) : (zt = ce.length, function(ae) {
                  for (var Se = 0, ze; Se < zt; ++Se) _e[(ze = ce[Se]).i] = ze.x(ae);
                  return _e.join("");
                });
              }
              function Ct(Vt, zt) {
                zt || (zt = []);
                var Rt = Vt ? Math.min(zt.length, Vt.length) : 0, Wt = zt.slice(), kt;
                return function(re) {
                  for (kt = 0; kt < Rt; ++kt) Wt[kt] = Vt[kt] * (1 - re) + zt[kt] * re;
                  return Wt;
                };
              }
              function Gt(Vt) {
                return ArrayBuffer.isView(Vt) && !(Vt instanceof DataView);
              }
              function Jt(Vt) {
                "@babel/helpers - typeof";
                return Jt = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(zt) {
                  return typeof zt;
                } : function(zt) {
                  return zt && typeof Symbol == "function" && zt.constructor === Symbol && zt !== Symbol.prototype ? "symbol" : typeof zt;
                }, Jt(Vt);
              }
              function Qt(Vt, zt) {
                var Rt = Jt(zt), Wt;
                return zt == null || Rt === "boolean" ? rt(zt) : (Rt === "number" ? ut : Rt === "string" ? (Wt = _(zt)) ? (zt = Wt, Q) : Et : zt instanceof _ ? Q : zt instanceof Date ? at : Gt(zt) ? Ct : Array.isArray(zt) ? j : typeof zt.valueOf != "function" && typeof zt.toString != "function" || isNaN(zt) ? X : ut)(Vt, zt);
              }
            }
          ),
          /***/
          23648: (
            /***/
            function(Y) {
              Y.exports = /* @__PURE__ */ JSON.parse('["xx-small","x-small","small","medium","large","x-large","xx-large","larger","smaller"]');
            }
          ),
          /***/
          2362: (
            /***/
            function(Y) {
              Y.exports = /* @__PURE__ */ JSON.parse('["normal","condensed","semi-condensed","extra-condensed","ultra-condensed","expanded","semi-expanded","extra-expanded","ultra-expanded"]');
            }
          ),
          /***/
          87486: (
            /***/
            function(Y) {
              Y.exports = /* @__PURE__ */ JSON.parse('["normal","italic","oblique"]');
            }
          ),
          /***/
          99803: (
            /***/
            function(Y) {
              Y.exports = /* @__PURE__ */ JSON.parse('["normal","bold","bolder","lighter","100","200","300","400","500","600","700","800","900"]');
            }
          ),
          /***/
          54324: (
            /***/
            function(Y) {
              Y.exports = /* @__PURE__ */ JSON.parse('["inherit","initial","unset"]');
            }
          ),
          /***/
          94316: (
            /***/
            function(Y) {
              Y.exports = /* @__PURE__ */ JSON.parse('["caption","icon","menu","message-box","small-caption","status-bar"]');
            }
          ),
          /***/
          37071: (
            /***/
            function(Y) {
              Y.exports = /* @__PURE__ */ JSON.parse(`{"version":8,"name":"orto","metadata":{"maputnik:renderer":"mlgljs"},"center":[1.537786,41.837539],"zoom":12,"bearing":0,"pitch":0,"light":{"anchor":"viewport","color":"white","intensity":0.4,"position":[1.15,45,30]},"sources":{"ortoEsri":{"type":"raster","tiles":["https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}"],"tileSize":256,"maxzoom":18,"attribution":"ESRI &copy; <a href='http://www.esri.com'>ESRI</a>"},"ortoInstaMaps":{"type":"raster","tiles":["https://tilemaps.icgc.cat/mapfactory/wmts/orto_8_12/CAT3857/{z}/{x}/{y}.png"],"tileSize":256,"maxzoom":13},"ortoICGC":{"type":"raster","tiles":["https://geoserveis.icgc.cat/icc_mapesmultibase/noutm/wmts/orto/GRID3857/{z}/{x}/{y}.jpeg"],"tileSize":256,"minzoom":13.1,"maxzoom":20},"openmaptiles":{"type":"vector","url":"https://geoserveis.icgc.cat/contextmaps/basemap.json"}},"sprite":"https://geoserveis.icgc.cat/contextmaps/sprites/sprite@1","glyphs":"https://geoserveis.icgc.cat/contextmaps/glyphs/{fontstack}/{range}.pbf","layers":[{"id":"background","type":"background","paint":{"background-color":"#F4F9F4"}},{"id":"ortoEsri","type":"raster","source":"ortoEsri","maxzoom":16,"layout":{"visibility":"visible"}},{"id":"ortoICGC","type":"raster","source":"ortoICGC","minzoom":13.1,"maxzoom":19,"layout":{"visibility":"visible"}},{"id":"ortoInstaMaps","type":"raster","source":"ortoInstaMaps","maxzoom":13,"layout":{"visibility":"visible"}},{"id":"waterway_tunnel","type":"line","source":"openmaptiles","source-layer":"waterway","minzoom":14,"filter":["all",["in","class","river","stream","canal"],["==","brunnel","tunnel"]],"layout":{"line-cap":"round"},"paint":{"line-color":"#a0c8f0","line-width":{"base":1.3,"stops":[[13,0.5],[20,6]]},"line-dasharray":[2,4]}},{"id":"waterway-other","type":"line","metadata":{"mapbox:group":"1444849382550.77"},"source":"openmaptiles","source-layer":"waterway","filter":["!in","class","canal","river","stream"],"layout":{"line-cap":"round"},"paint":{"line-color":"#a0c8f0","line-width":{"base":1.3,"stops":[[13,0.5],[20,2]]}}},{"id":"waterway-stream-canal","type":"line","metadata":{"mapbox:group":"1444849382550.77"},"source":"openmaptiles","source-layer":"waterway","filter":["all",["in","class","canal","stream"],["!=","brunnel","tunnel"]],"layout":{"line-cap":"round"},"paint":{"line-color":"#a0c8f0","line-width":{"base":1.3,"stops":[[13,0.5],[20,6]]}}},{"id":"waterway-river","type":"line","metadata":{"mapbox:group":"1444849382550.77"},"source":"openmaptiles","source-layer":"waterway","filter":["all",["==","class","river"],["!=","brunnel","tunnel"]],"layout":{"line-cap":"round"},"paint":{"line-color":"#a0c8f0","line-width":{"base":1.2,"stops":[[10,0.8],[20,4]]},"line-opacity":0.5}},{"id":"water-offset","type":"fill","metadata":{"mapbox:group":"1444849382550.77"},"source":"openmaptiles","source-layer":"water","maxzoom":8,"filter":["==","$type","Polygon"],"layout":{"visibility":"visible"},"paint":{"fill-opacity":0,"fill-color":"#a0c8f0","fill-translate":{"base":1,"stops":[[6,[2,0]],[8,[0,0]]]}}},{"id":"water","type":"fill","metadata":{"mapbox:group":"1444849382550.77"},"source":"openmaptiles","source-layer":"water","layout":{"visibility":"visible"},"paint":{"fill-color":"hsl(210, 67%, 85%)","fill-opacity":0}},{"id":"water-pattern","type":"fill","metadata":{"mapbox:group":"1444849382550.77"},"source":"openmaptiles","source-layer":"water","layout":{"visibility":"visible"},"paint":{"fill-translate":[0,2.5],"fill-pattern":"wave","fill-opacity":1}},{"id":"landcover-ice-shelf","type":"fill","metadata":{"mapbox:group":"1444849382550.77"},"source":"openmaptiles","source-layer":"landcover","filter":["==","subclass","ice_shelf"],"layout":{"visibility":"visible"},"paint":{"fill-color":"#fff","fill-opacity":{"base":1,"stops":[[0,0.9],[10,0.3]]}}},{"id":"tunnel-service-track-casing","type":"line","metadata":{"mapbox:group":"1444849354174.1904"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","brunnel","tunnel"],["in","class","service","track"]],"layout":{"line-join":"round"},"paint":{"line-color":"#cfcdca","line-dasharray":[0.5,0.25],"line-width":{"base":1.2,"stops":[[15,1],[16,4],[20,11]]}}},{"id":"tunnel-minor-casing","type":"line","metadata":{"mapbox:group":"1444849354174.1904"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","brunnel","tunnel"],["==","class","minor"]],"layout":{"line-join":"round"},"paint":{"line-color":"#cfcdca","line-opacity":{"stops":[[12,0],[12.5,1]]},"line-width":{"base":1.2,"stops":[[12,0.5],[13,1],[14,4],[20,15]]}}},{"id":"tunnel-secondary-tertiary-casing","type":"line","metadata":{"mapbox:group":"1444849354174.1904"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","brunnel","tunnel"],["in","class","secondary","tertiary"]],"layout":{"line-join":"round"},"paint":{"line-color":"#e9ac77","line-opacity":1,"line-width":{"base":1.2,"stops":[[8,1.5],[20,17]]}}},{"id":"tunnel-trunk-primary-casing","type":"line","metadata":{"mapbox:group":"1444849354174.1904"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","brunnel","tunnel"],["in","class","primary","trunk"]],"layout":{"line-join":"round"},"paint":{"line-color":"#e9ac77","line-width":{"base":1.2,"stops":[[5,0.4],[6,0.6],[7,1.5],[20,22]]},"line-opacity":0.7}},{"id":"tunnel-motorway-casing","type":"line","metadata":{"mapbox:group":"1444849354174.1904"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","brunnel","tunnel"],["==","class","motorway"]],"layout":{"line-join":"round","visibility":"visible"},"paint":{"line-color":"#e9ac77","line-dasharray":[0.5,0.25],"line-width":{"base":1.2,"stops":[[5,0.4],[6,0.6],[7,1.5],[20,22]]},"line-opacity":0.5}},{"id":"tunnel-path","type":"line","metadata":{"mapbox:group":"1444849354174.1904"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","$type","LineString"],["all",["==","brunnel","tunnel"],["==","class","path"]]],"paint":{"line-color":"#cba","line-dasharray":[1.5,0.75],"line-width":{"base":1.2,"stops":[[15,1.2],[20,4]]}}},{"id":"tunnel-service-track","type":"line","metadata":{"mapbox:group":"1444849354174.1904"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","brunnel","tunnel"],["in","class","service","track"]],"layout":{"line-join":"round"},"paint":{"line-color":"#fff","line-width":{"base":1.2,"stops":[[15.5,0],[16,2],[20,7.5]]}}},{"id":"tunnel-minor","type":"line","metadata":{"mapbox:group":"1444849354174.1904"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","brunnel","tunnel"],["==","class","minor_road"]],"layout":{"line-join":"round"},"paint":{"line-color":"#fff","line-opacity":1,"line-width":{"base":1.2,"stops":[[13.5,0],[14,2.5],[20,11.5]]}}},{"id":"tunnel-secondary-tertiary","type":"line","metadata":{"mapbox:group":"1444849354174.1904"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","brunnel","tunnel"],["in","class","secondary","tertiary"]],"layout":{"line-join":"round"},"paint":{"line-color":"#fff4c6","line-width":{"base":1.2,"stops":[[6.5,0],[7,0.5],[20,10]]}}},{"id":"tunnel-trunk-primary","type":"line","metadata":{"mapbox:group":"1444849354174.1904"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","brunnel","tunnel"],["in","class","primary","trunk"]],"layout":{"line-join":"round"},"paint":{"line-color":"#fff4c6","line-width":{"base":1.2,"stops":[[6.5,0],[7,0.5],[20,18]]},"line-opacity":0.5}},{"id":"tunnel-motorway","type":"line","metadata":{"mapbox:group":"1444849354174.1904"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","brunnel","tunnel"],["==","class","motorway"]],"layout":{"line-join":"round","visibility":"visible"},"paint":{"line-color":"#ffdaa6","line-width":{"base":1.2,"stops":[[6.5,0],[7,0.5],[20,18]]},"line-opacity":0.5}},{"id":"tunnel-railway","type":"line","metadata":{"mapbox:group":"1444849354174.1904"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","brunnel","tunnel"],["==","class","rail"]],"paint":{"line-color":"#bbb","line-width":{"base":1.4,"stops":[[14,0.4],[15,0.75],[20,2]]},"line-dasharray":[2,2]}},{"id":"ferry","type":"line","source":"openmaptiles","source-layer":"transportation","filter":["all",["in","class","ferry"]],"layout":{"line-join":"round","visibility":"visible"},"paint":{"line-color":"rgba(108, 159, 182, 1)","line-width":1.1,"line-dasharray":[2,2]}},{"id":"aeroway-taxiway-casing","type":"line","metadata":{"mapbox:group":"1444849345966.4436"},"source":"openmaptiles","source-layer":"aeroway","minzoom":12,"filter":["all",["in","class","taxiway"]],"layout":{"line-cap":"round","line-join":"round","visibility":"visible"},"paint":{"line-color":"rgba(153, 153, 153, 1)","line-width":{"base":1.5,"stops":[[11,2],[17,12]]},"line-opacity":1}},{"id":"aeroway-runway-casing","type":"line","metadata":{"mapbox:group":"1444849345966.4436"},"source":"openmaptiles","source-layer":"aeroway","minzoom":12,"filter":["all",["in","class","runway"]],"layout":{"line-cap":"round","line-join":"round","visibility":"visible"},"paint":{"line-color":"rgba(153, 153, 153, 1)","line-width":{"base":1.5,"stops":[[11,5],[17,55]]},"line-opacity":1}},{"id":"aeroway-taxiway","type":"line","metadata":{"mapbox:group":"1444849345966.4436"},"source":"openmaptiles","source-layer":"aeroway","minzoom":4,"filter":["all",["in","class","taxiway"],["==","$type","LineString"]],"layout":{"line-cap":"round","line-join":"round","visibility":"visible"},"paint":{"line-color":"rgba(255, 255, 255, 1)","line-width":{"base":1.5,"stops":[[11,1],[17,10]]},"line-opacity":{"base":1,"stops":[[11,0],[12,1]]}}},{"id":"aeroway-runway","type":"line","metadata":{"mapbox:group":"1444849345966.4436"},"source":"openmaptiles","source-layer":"aeroway","minzoom":4,"filter":["all",["in","class","runway"],["==","$type","LineString"]],"layout":{"line-cap":"round","line-join":"round","visibility":"visible"},"paint":{"line-color":"rgba(255, 255, 255, 1)","line-width":{"base":1.5,"stops":[[11,4],[17,50]]},"line-opacity":{"base":1,"stops":[[11,0],[12,1]]}}},{"id":"highway-motorway-link-casing","type":"line","metadata":{"mapbox:group":"1444849345966.4436"},"source":"openmaptiles","source-layer":"transportation","minzoom":12,"filter":["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway_link"]],"layout":{"line-cap":"round","line-join":"round"},"paint":{"line-color":"#e9ac77","line-opacity":1,"line-width":{"base":1.2,"stops":[[12,1],[13,3],[14,4],[20,15]]}}},{"id":"highway-link-casing","type":"line","metadata":{"mapbox:group":"1444849345966.4436"},"source":"openmaptiles","source-layer":"transportation","minzoom":13,"filter":["all",["!in","brunnel","bridge","tunnel"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],"layout":{"line-cap":"round","line-join":"round","visibility":"visible"},"paint":{"line-color":"#e9ac77","line-opacity":1,"line-width":{"base":1.2,"stops":[[12,1],[13,3],[14,4],[20,15]]}}},{"id":"highway-minor-casing","type":"line","metadata":{"mapbox:group":"1444849345966.4436"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","$type","LineString"],["all",["!=","brunnel","tunnel"],["in","class","minor","service","track"]]],"layout":{"line-cap":"round","line-join":"round"},"paint":{"line-color":"#cfcdca","line-opacity":{"stops":[[12,0],[12.5,0]]},"line-width":{"base":1.2,"stops":[[12,0.5],[13,1],[14,4],[20,15]]}}},{"id":"highway-secondary-tertiary-casing","type":"line","metadata":{"mapbox:group":"1444849345966.4436"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["!in","brunnel","bridge","tunnel"],["in","class","secondary","tertiary"]],"layout":{"line-cap":"butt","line-join":"round","visibility":"visible"},"paint":{"line-color":"#e9ac77","line-opacity":0.5,"line-width":{"base":1.2,"stops":[[8,1.5],[20,17]]}}},{"id":"highway-primary-casing","type":"line","metadata":{"mapbox:group":"1444849345966.4436"},"source":"openmaptiles","source-layer":"transportation","minzoom":5,"filter":["all",["!in","brunnel","bridge","tunnel"],["in","class","primary"]],"layout":{"line-cap":"butt","line-join":"round","visibility":"visible"},"paint":{"line-color":"#e9ac77","line-opacity":{"stops":[[7,0],[8,0.6]]},"line-width":{"base":1.2,"stops":[[7,0],[8,0.6],[9,1.5],[20,22]]}}},{"id":"highway-trunk-casing","type":"line","metadata":{"mapbox:group":"1444849345966.4436"},"source":"openmaptiles","source-layer":"transportation","minzoom":5,"filter":["all",["!in","brunnel","bridge","tunnel"],["in","class","trunk"]],"layout":{"line-cap":"butt","line-join":"round","visibility":"visible"},"paint":{"line-color":"#e9ac77","line-opacity":{"stops":[[5,0],[6,0.5]]},"line-width":{"base":1.2,"stops":[[5,0],[6,0.6],[7,1.5],[20,22]]}}},{"id":"highway-motorway-casing","type":"line","metadata":{"mapbox:group":"1444849345966.4436"},"source":"openmaptiles","source-layer":"transportation","minzoom":4,"filter":["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway"]],"layout":{"line-cap":"butt","line-join":"round","visibility":"visible"},"paint":{"line-color":"#e9ac77","line-width":{"base":1.2,"stops":[[4,0],[5,0.4],[6,0.6],[7,1.5],[20,22]]},"line-opacity":{"stops":[[4,0],[5,0.5]]}}},{"id":"highway-path","type":"line","metadata":{"mapbox:group":"1444849345966.4436"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["==","class","path"]]],"paint":{"line-color":"#cba","line-dasharray":[1.5,0.75],"line-width":{"base":1.2,"stops":[[15,1.2],[20,4]]}}},{"id":"highway-motorway-link","type":"line","metadata":{"mapbox:group":"1444849345966.4436"},"source":"openmaptiles","source-layer":"transportation","minzoom":12,"filter":["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway_link"]],"layout":{"line-cap":"round","line-join":"round"},"paint":{"line-color":"#fc8","line-width":{"base":1.2,"stops":[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{"id":"highway-link","type":"line","metadata":{"mapbox:group":"1444849345966.4436"},"source":"openmaptiles","source-layer":"transportation","minzoom":13,"filter":["all",["!in","brunnel","bridge","tunnel"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],"layout":{"line-cap":"round","line-join":"round","visibility":"visible"},"paint":{"line-color":"#fea","line-width":{"base":1.2,"stops":[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{"id":"highway-minor","type":"line","metadata":{"mapbox:group":"1444849345966.4436"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","$type","LineString"],["all",["!=","brunnel","tunnel"],["in","class","minor","service","track"]]],"layout":{"line-cap":"round","line-join":"round"},"paint":{"line-color":"#fff","line-opacity":0.5,"line-width":{"base":1.2,"stops":[[13.5,0],[14,2.5],[20,11.5]]}}},{"id":"highway-secondary-tertiary","type":"line","metadata":{"mapbox:group":"1444849345966.4436"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["!in","brunnel","bridge","tunnel"],["in","class","secondary","tertiary"]],"layout":{"line-cap":"round","line-join":"round","visibility":"visible"},"paint":{"line-color":"#fea","line-width":{"base":1.2,"stops":[[6.5,0],[8,0.5],[20,13]]},"line-opacity":0.5}},{"id":"highway-primary","type":"line","metadata":{"mapbox:group":"1444849345966.4436"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["in","class","primary"]]],"layout":{"line-cap":"round","line-join":"round","visibility":"visible"},"paint":{"line-color":"#fea","line-width":{"base":1.2,"stops":[[8.5,0],[9,0.5],[20,18]]},"line-opacity":0}},{"id":"highway-trunk","type":"line","metadata":{"mapbox:group":"1444849345966.4436"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["in","class","trunk"]]],"layout":{"line-cap":"round","line-join":"round","visibility":"visible"},"paint":{"line-color":"#fea","line-width":{"base":1.2,"stops":[[6.5,0],[7,0.5],[20,18]]},"line-opacity":0.5}},{"id":"highway-motorway","type":"line","metadata":{"mapbox:group":"1444849345966.4436"},"source":"openmaptiles","source-layer":"transportation","minzoom":5,"filter":["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway"]]],"layout":{"line-cap":"round","line-join":"round","visibility":"visible"},"paint":{"line-color":"#fc8","line-width":{"base":1.2,"stops":[[6.5,0],[7,0.5],[20,18]]},"line-opacity":0.5}},{"id":"railway-transit","type":"line","metadata":{"mapbox:group":"1444849345966.4436"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","$type","LineString"],["all",["==","class","transit"],["!in","brunnel","tunnel"]]],"layout":{"visibility":"visible"},"paint":{"line-color":"hsla(0, 0%, 73%, 0.77)","line-width":{"base":1.4,"stops":[[14,0.4],[20,1]]}}},{"id":"railway-transit-hatching","type":"line","metadata":{"mapbox:group":"1444849345966.4436"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","$type","LineString"],["all",["==","class","transit"],["!in","brunnel","tunnel"]]],"layout":{"visibility":"visible"},"paint":{"line-color":"hsla(0, 0%, 73%, 0.68)","line-dasharray":[0.2,8],"line-width":{"base":1.4,"stops":[[14.5,0],[15,2],[20,6]]}}},{"id":"railway-service","type":"line","metadata":{"mapbox:group":"1444849345966.4436"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","$type","LineString"],["all",["==","class","rail"],["has","service"]]],"paint":{"line-color":"hsla(0, 0%, 73%, 0.77)","line-width":{"base":1.4,"stops":[[14,0.4],[20,1]]}}},{"id":"railway-service-hatching","type":"line","metadata":{"mapbox:group":"1444849345966.4436"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","$type","LineString"],["all",["==","class","rail"],["has","service"]]],"layout":{"visibility":"visible"},"paint":{"line-color":"hsla(0, 0%, 73%, 0.68)","line-dasharray":[0.2,8],"line-width":{"base":1.4,"stops":[[14.5,0],[15,2],[20,6]]}}},{"id":"railway","type":"line","metadata":{"mapbox:group":"1444849345966.4436"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","$type","LineString"],["all",["!has","service"],["!in","brunnel","bridge","tunnel"],["==","class","rail"]]],"paint":{"line-color":"#bbb","line-width":{"base":1.4,"stops":[[14,0.4],[15,0.75],[20,2]]}}},{"id":"railway-hatching","type":"line","metadata":{"mapbox:group":"1444849345966.4436"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","$type","LineString"],["all",["!has","service"],["!in","brunnel","bridge","tunnel"],["==","class","rail"]]],"paint":{"line-color":"#bbb","line-dasharray":[0.2,8],"line-width":{"base":1.4,"stops":[[14.5,0],[15,3],[20,8]]}}},{"id":"bridge-motorway-link-casing","type":"line","metadata":{"mapbox:group":"1444849334699.1902"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","brunnel","bridge"],["==","class","motorway_link"]],"layout":{"line-join":"round"},"paint":{"line-color":"#e9ac77","line-opacity":1,"line-width":{"base":1.2,"stops":[[12,1],[13,3],[14,4],[20,15]]}}},{"id":"bridge-link-casing","type":"line","metadata":{"mapbox:group":"1444849334699.1902"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","brunnel","bridge"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],"layout":{"line-join":"round"},"paint":{"line-color":"#e9ac77","line-opacity":1,"line-width":{"base":1.2,"stops":[[12,1],[13,3],[14,4],[20,15]]}}},{"id":"bridge-secondary-tertiary-casing","type":"line","metadata":{"mapbox:group":"1444849334699.1902"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","brunnel","bridge"],["in","class","secondary","tertiary"]],"layout":{"line-join":"round"},"paint":{"line-color":"#e9ac77","line-opacity":1,"line-width":{"base":1.2,"stops":[[8,1.5],[20,28]]}}},{"id":"bridge-trunk-primary-casing","type":"line","metadata":{"mapbox:group":"1444849334699.1902"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","brunnel","bridge"],["in","class","primary","trunk"]],"layout":{"line-join":"round"},"paint":{"line-color":"hsl(28, 76%, 67%)","line-width":{"base":1.2,"stops":[[5,0.4],[6,0.6],[7,1.5],[20,26]]}}},{"id":"bridge-motorway-casing","type":"line","metadata":{"mapbox:group":"1444849334699.1902"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","brunnel","bridge"],["==","class","motorway"]],"layout":{"line-join":"round"},"paint":{"line-color":"#e9ac77","line-width":{"base":1.2,"stops":[[5,0.4],[6,0.6],[7,1.5],[20,22]]},"line-opacity":0.5}},{"id":"bridge-path-casing","type":"line","metadata":{"mapbox:group":"1444849334699.1902"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","$type","LineString"],["all",["==","brunnel","bridge"],["==","class","path"]]],"paint":{"line-color":"#f8f4f0","line-width":{"base":1.2,"stops":[[15,1.2],[20,18]]}}},{"id":"bridge-path","type":"line","metadata":{"mapbox:group":"1444849334699.1902"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","$type","LineString"],["all",["==","brunnel","bridge"],["==","class","path"]]],"paint":{"line-color":"#cba","line-width":{"base":1.2,"stops":[[15,1.2],[20,4]]},"line-dasharray":[1.5,0.75]}},{"id":"bridge-motorway-link","type":"line","metadata":{"mapbox:group":"1444849334699.1902"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","brunnel","bridge"],["==","class","motorway_link"]],"layout":{"line-join":"round"},"paint":{"line-color":"#fc8","line-width":{"base":1.2,"stops":[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{"id":"bridge-link","type":"line","metadata":{"mapbox:group":"1444849334699.1902"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","brunnel","bridge"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],"layout":{"line-join":"round"},"paint":{"line-color":"#fea","line-width":{"base":1.2,"stops":[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{"id":"bridge-secondary-tertiary","type":"line","metadata":{"mapbox:group":"1444849334699.1902"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","brunnel","bridge"],["in","class","secondary","tertiary"]],"layout":{"line-join":"round"},"paint":{"line-color":"#fea","line-width":{"base":1.2,"stops":[[6.5,0],[7,0.5],[20,20]]}}},{"id":"bridge-trunk-primary","type":"line","metadata":{"mapbox:group":"1444849334699.1902"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","brunnel","bridge"],["in","class","primary","trunk"]],"layout":{"line-join":"round"},"paint":{"line-color":"#fea","line-width":{"base":1.2,"stops":[[6.5,0],[7,0.5],[20,18]]}}},{"id":"bridge-motorway","type":"line","metadata":{"mapbox:group":"1444849334699.1902"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","brunnel","bridge"],["==","class","motorway"]],"layout":{"line-join":"round"},"paint":{"line-color":"#fc8","line-width":{"base":1.2,"stops":[[6.5,0],[7,0.5],[20,18]]},"line-opacity":0.5}},{"id":"bridge-railway","type":"line","metadata":{"mapbox:group":"1444849334699.1902"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","brunnel","bridge"],["==","class","rail"]],"paint":{"line-color":"#bbb","line-width":{"base":1.4,"stops":[[14,0.4],[15,0.75],[20,2]]}}},{"id":"bridge-railway-hatching","type":"line","metadata":{"mapbox:group":"1444849334699.1902"},"source":"openmaptiles","source-layer":"transportation","filter":["all",["==","brunnel","bridge"],["==","class","rail"]],"paint":{"line-color":"#bbb","line-dasharray":[0.2,8],"line-width":{"base":1.4,"stops":[[14.5,0],[15,3],[20,8]]}}},{"id":"cablecar","type":"line","source":"openmaptiles","source-layer":"transportation","minzoom":13,"filter":["==","class","cable_car"],"layout":{"visibility":"visible","line-cap":"round"},"paint":{"line-color":"hsl(0, 0%, 70%)","line-width":{"base":1,"stops":[[11,1],[19,2.5]]}}},{"id":"cablecar-dash","type":"line","source":"openmaptiles","source-layer":"transportation","minzoom":13,"filter":["==","class","cable_car"],"layout":{"visibility":"visible","line-cap":"round"},"paint":{"line-color":"hsl(0, 0%, 70%)","line-width":{"base":1,"stops":[[11,3],[19,5.5]]},"line-dasharray":[2,3]}},{"id":"boundary-land-level-4","type":"line","source":"openmaptiles","source-layer":"boundary","filter":["all",[">=","admin_level",4],["<=","admin_level",8],["!=","maritime",1]],"layout":{"line-join":"round"},"paint":{"line-color":"#9e9cab","line-dasharray":[3,1,1,1],"line-width":{"base":1.4,"stops":[[4,0.4],[5,1],[12,3]]},"line-opacity":0.6}},{"id":"boundary-land-level-2","type":"line","source":"openmaptiles","source-layer":"boundary","filter":["all",["==","admin_level",2],["!=","maritime",1],["!=","disputed",1]],"layout":{"line-cap":"round","line-join":"round"},"paint":{"line-color":"hsl(248, 7%, 66%)","line-width":{"base":1,"stops":[[0,0.6],[4,1.4],[5,2],[12,2]]}}},{"id":"boundary-land-disputed","type":"line","source":"openmaptiles","source-layer":"boundary","filter":["all",["!=","maritime",1],["==","disputed",1]],"layout":{"line-cap":"round","line-join":"round"},"paint":{"line-color":"hsl(248, 7%, 70%)","line-dasharray":[1,3],"line-width":{"base":1,"stops":[[0,0.6],[4,1.4],[5,2],[12,8]]}}},{"id":"boundary-water","type":"line","source":"openmaptiles","source-layer":"boundary","filter":["all",["in","admin_level",2,4],["==","maritime",1]],"layout":{"line-cap":"round","line-join":"round"},"paint":{"line-color":"rgba(154, 189, 214, 1)","line-width":{"base":1,"stops":[[0,0.6],[4,1],[5,1],[12,1]]},"line-opacity":{"stops":[[6,0],[10,0]]}}},{"id":"waterway-name","type":"symbol","source":"openmaptiles","source-layer":"waterway","minzoom":13,"filter":["all",["==","$type","LineString"],["has","name"]],"layout":{"text-font":["Noto Sans Italic"],"text-size":14,"text-field":"{name:latin} {name:nonlatin}","text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"line","text-letter-spacing":0.2,"symbol-spacing":350},"paint":{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{"id":"water-name-lakeline","type":"symbol","source":"openmaptiles","source-layer":"water_name","filter":["==","$type","LineString"],"layout":{"text-font":["Noto Sans Italic"],"text-size":14,"text-field":"{name:latin}\\n{name:nonlatin}","text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"line","symbol-spacing":350,"text-letter-spacing":0.2},"paint":{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{"id":"water-name-ocean","type":"symbol","source":"openmaptiles","source-layer":"water_name","filter":["all",["==","$type","Point"],["==","class","ocean"]],"layout":{"text-font":["Noto Sans Italic"],"text-size":14,"text-field":"{name:latin}","text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"point","symbol-spacing":350,"text-letter-spacing":0.2},"paint":{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{"id":"water-name-other","type":"symbol","source":"openmaptiles","source-layer":"water_name","filter":["all",["==","$type","Point"],["!in","class","ocean"]],"layout":{"text-font":["Noto Sans Italic"],"text-size":{"stops":[[0,10],[6,14]]},"text-field":"{name:latin}\\n{name:nonlatin}","text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"point","symbol-spacing":350,"text-letter-spacing":0.2,"visibility":"visible"},"paint":{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{"id":"poi-level-3","type":"symbol","source":"openmaptiles","source-layer":"poi","minzoom":16,"filter":["all",["==","$type","Point"],[">=","rank",25]],"layout":{"text-padding":2,"text-font":["Noto Sans Regular"],"text-anchor":"top","icon-image":"{class}_11","text-field":"{name:latin}\\n{name:nonlatin}","text-offset":[0,0.6],"text-size":12,"text-max-width":9},"paint":{"text-halo-blur":0.5,"text-color":"#666","text-halo-width":1,"text-halo-color":"#ffffff"}},{"id":"poi-level-2","type":"symbol","source":"openmaptiles","source-layer":"poi","minzoom":15,"filter":["all",["==","$type","Point"],["<=","rank",24],[">=","rank",15]],"layout":{"text-padding":2,"text-font":["Noto Sans Regular"],"text-anchor":"top","icon-image":"{class}_11","text-field":"{name:latin}\\n{name:nonlatin}","text-offset":[0,0.6],"text-size":12,"text-max-width":9},"paint":{"text-halo-blur":0.5,"text-color":"#666","text-halo-width":1,"text-halo-color":"#ffffff"}},{"id":"poi-level-1","type":"symbol","source":"openmaptiles","source-layer":"poi","minzoom":14,"filter":["all",["==","$type","Point"],["<=","rank",14],["has","name"]],"layout":{"text-padding":2,"text-font":["Noto Sans Regular"],"text-anchor":"top","icon-image":"{class}_11","text-field":"{name:latin}\\n{name:nonlatin}","text-offset":[0,0.6],"text-size":11,"text-max-width":9},"paint":{"text-halo-blur":0.5,"text-color":"rgba(191, 228, 172, 1)","text-halo-width":1,"text-halo-color":"rgba(30, 29, 29, 1)"}},{"id":"poi-railway","type":"symbol","source":"openmaptiles","source-layer":"poi","minzoom":13,"filter":["all",["==","$type","Point"],["has","name"],["==","class","railway"],["==","subclass","station"]],"layout":{"text-padding":2,"text-font":["Noto Sans Regular"],"text-anchor":"top","icon-image":"{class}_11","text-field":"{name:latin}\\n{name:nonlatin}","text-offset":[0,0.6],"text-size":12,"text-max-width":9,"icon-optional":false,"icon-ignore-placement":false,"icon-allow-overlap":false,"text-ignore-placement":false,"text-allow-overlap":false,"text-optional":true},"paint":{"text-halo-blur":0.5,"text-color":"#666","text-halo-width":1,"text-halo-color":"#ffffff"}},{"id":"road_oneway","type":"symbol","source":"openmaptiles","source-layer":"transportation","minzoom":15,"filter":["all",["==","oneway",1],["in","class","motorway","trunk","primary","secondary","tertiary","minor","service"]],"layout":{"symbol-placement":"line","icon-image":"oneway","symbol-spacing":75,"icon-padding":2,"icon-rotation-alignment":"map","icon-rotate":90,"icon-size":{"stops":[[15,0.5],[19,1]]}},"paint":{"icon-opacity":0.5}},{"id":"road_oneway_opposite","type":"symbol","source":"openmaptiles","source-layer":"transportation","minzoom":15,"filter":["all",["==","oneway",-1],["in","class","motorway","trunk","primary","secondary","tertiary","minor","service"]],"layout":{"symbol-placement":"line","icon-image":"oneway","symbol-spacing":75,"icon-padding":2,"icon-rotation-alignment":"map","icon-rotate":-90,"icon-size":{"stops":[[15,0.5],[19,1]]}},"paint":{"icon-opacity":0.5}},{"id":"highway-name-path","type":"symbol","source":"openmaptiles","source-layer":"transportation_name","minzoom":15.5,"filter":["==","class","path"],"layout":{"text-size":{"base":1,"stops":[[13,12],[14,13]]},"text-font":["Noto Sans Regular"],"text-field":"{name:latin} {name:nonlatin}","symbol-placement":"line","text-rotation-alignment":"map"},"paint":{"text-halo-color":"#f8f4f0","text-color":"hsl(30, 23%, 62%)","text-halo-width":0.5}},{"id":"highway-name-minor","type":"symbol","source":"openmaptiles","source-layer":"transportation_name","minzoom":15,"filter":["all",["==","$type","LineString"],["in","class","minor","service","track"]],"layout":{"text-size":{"base":1,"stops":[[13,12],[14,13]]},"text-font":["Noto Sans Regular"],"text-field":"{name:latin} {name:nonlatin}","symbol-placement":"line","text-rotation-alignment":"map"},"paint":{"text-halo-blur":0.5,"text-color":"#765","text-halo-width":1}},{"id":"highway-name-major","type":"symbol","source":"openmaptiles","source-layer":"transportation_name","minzoom":12.2,"filter":["in","class","primary","secondary","tertiary","trunk"],"layout":{"text-size":{"base":1,"stops":[[13,12],[14,13]]},"text-font":["Noto Sans Regular"],"text-field":"{name:latin} {name:nonlatin}","symbol-placement":"line","text-rotation-alignment":"map"},"paint":{"text-halo-blur":0.5,"text-color":"#765","text-halo-width":1}},{"id":"highway-shield","type":"symbol","source":"openmaptiles","source-layer":"transportation_name","minzoom":8,"filter":["all",["<=","ref_length",6],["==","$type","LineString"],["!in","network","us-interstate","us-highway","us-state"]],"layout":{"text-size":10,"icon-image":"road_{ref_length}","icon-rotation-alignment":"viewport","symbol-spacing":200,"text-font":["Noto Sans Regular"],"symbol-placement":{"base":1,"stops":[[10,"point"],[11,"line"]]},"text-rotation-alignment":"viewport","icon-size":1,"text-field":"{ref}"},"paint":{"text-opacity":1,"text-color":"rgba(20, 19, 19, 1)","text-halo-color":"rgba(230, 221, 221, 0)","text-halo-width":2,"icon-color":"rgba(183, 18, 18, 1)","icon-opacity":0.3,"icon-halo-color":"rgba(183, 55, 55, 0)"}},{"id":"highway-shield-us-interstate","type":"symbol","source":"openmaptiles","source-layer":"transportation_name","minzoom":7,"filter":["all",["<=","ref_length",6],["==","$type","LineString"],["in","network","us-interstate"]],"layout":{"text-size":10,"icon-image":"{network}_{ref_length}","icon-rotation-alignment":"viewport","symbol-spacing":200,"text-font":["Noto Sans Regular"],"symbol-placement":{"base":1,"stops":[[7,"point"],[7,"line"],[8,"line"]]},"text-rotation-alignment":"viewport","icon-size":1,"text-field":"{ref}"},"paint":{"text-color":"rgba(0, 0, 0, 1)"}},{"id":"highway-shield-us-other","type":"symbol","source":"openmaptiles","source-layer":"transportation_name","minzoom":9,"filter":["all",["<=","ref_length",6],["==","$type","LineString"],["in","network","us-highway","us-state"]],"layout":{"text-size":10,"icon-image":"{network}_{ref_length}","icon-rotation-alignment":"viewport","symbol-spacing":200,"text-font":["Noto Sans Regular"],"symbol-placement":{"base":1,"stops":[[10,"point"],[11,"line"]]},"text-rotation-alignment":"viewport","icon-size":1,"text-field":"{ref}"},"paint":{"text-color":"rgba(0, 0, 0, 1)"}},{"id":"place-other","type":"symbol","metadata":{"mapbox:group":"1444849242106.713"},"source":"openmaptiles","source-layer":"place","minzoom":12,"filter":["!in","class","city","town","village","country","continent"],"layout":{"text-letter-spacing":0.1,"text-size":{"base":1.2,"stops":[[12,10],[15,14]]},"text-font":["Noto Sans Bold"],"text-field":"{name:latin}\\n{name:nonlatin}","text-transform":"uppercase","text-max-width":9,"visibility":"visible"},"paint":{"text-color":"rgba(255,255,255,1)","text-halo-width":1.2,"text-halo-color":"rgba(57, 28, 28, 1)"}},{"id":"place-village","type":"symbol","metadata":{"mapbox:group":"1444849242106.713"},"source":"openmaptiles","source-layer":"place","minzoom":10,"filter":["==","class","village"],"layout":{"text-font":["Noto Sans Regular"],"text-size":{"base":1.2,"stops":[[10,12],[15,16]]},"text-field":"{name:latin}\\n{name:nonlatin}","text-max-width":8,"visibility":"visible"},"paint":{"text-color":"rgba(255, 255, 255, 1)","text-halo-width":1.2,"text-halo-color":"rgba(10, 9, 9, 0.8)"}},{"id":"place-town","type":"symbol","metadata":{"mapbox:group":"1444849242106.713"},"source":"openmaptiles","source-layer":"place","filter":["==","class","town"],"layout":{"text-font":["Noto Sans Regular"],"text-size":{"base":1.2,"stops":[[10,14],[15,24]]},"text-field":"{name:latin}\\n{name:nonlatin}","text-max-width":8,"visibility":"visible"},"paint":{"text-color":"rgba(255, 255, 255, 1)","text-halo-width":1.2,"text-halo-color":"rgba(22, 22, 22, 0.8)"}},{"id":"place-city","type":"symbol","metadata":{"mapbox:group":"1444849242106.713"},"source":"openmaptiles","source-layer":"place","filter":["all",["!=","capital",2],["==","class","city"]],"layout":{"text-font":["Noto Sans Regular"],"text-size":{"base":1.2,"stops":[[7,14],[11,24]]},"text-field":"{name:latin}\\n{name:nonlatin}","text-max-width":8,"visibility":"visible"},"paint":{"text-color":"rgba(0, 0, 0, 1)","text-halo-width":1.2,"text-halo-color":"rgba(255,255,255,0.8)"}},{"id":"place-city-capital","type":"symbol","metadata":{"mapbox:group":"1444849242106.713"},"source":"openmaptiles","source-layer":"place","filter":["all",["==","capital",2],["==","class","city"]],"layout":{"text-font":["Noto Sans Regular"],"text-size":{"base":1.2,"stops":[[7,14],[11,24]]},"text-field":"{name:latin}\\n{name:nonlatin}","text-max-width":8,"icon-image":"star_11","text-offset":[0.4,0],"icon-size":0.8,"text-anchor":"left","visibility":"visible"},"paint":{"text-color":"#333","text-halo-width":1.2,"text-halo-color":"rgba(255,255,255,0.8)"}},{"id":"place-country-other","type":"symbol","metadata":{"mapbox:group":"1444849242106.713"},"source":"openmaptiles","source-layer":"place","filter":["all",["==","class","country"],[">=","rank",3],["!has","iso_a2"]],"layout":{"text-font":["Noto Sans Italic"],"text-field":"{name:latin}","text-size":{"stops":[[3,11],[7,17]]},"text-transform":"uppercase","text-max-width":6.25,"visibility":"visible"},"paint":{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{"id":"place-country-3","type":"symbol","metadata":{"mapbox:group":"1444849242106.713"},"source":"openmaptiles","source-layer":"place","filter":["all",["==","class","country"],[">=","rank",3],["has","iso_a2"]],"layout":{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":{"stops":[[3,11],[7,17]]},"text-transform":"uppercase","text-max-width":6.25,"visibility":"visible"},"paint":{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{"id":"place-country-2","type":"symbol","metadata":{"mapbox:group":"1444849242106.713"},"source":"openmaptiles","source-layer":"place","filter":["all",["==","class","country"],["==","rank",2],["has","iso_a2"]],"layout":{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":{"stops":[[2,11],[5,17]]},"text-transform":"uppercase","text-max-width":6.25,"visibility":"visible"},"paint":{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{"id":"place-country-1","type":"symbol","metadata":{"mapbox:group":"1444849242106.713"},"source":"openmaptiles","source-layer":"place","filter":["all",["==","class","country"],["==","rank",1],["has","iso_a2"]],"layout":{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":{"stops":[[1,11],[4,17]]},"text-transform":"uppercase","text-max-width":6.25,"visibility":"visible"},"paint":{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{"id":"place-continent","type":"symbol","metadata":{"mapbox:group":"1444849242106.713"},"source":"openmaptiles","source-layer":"place","maxzoom":1,"filter":["==","class","continent"],"layout":{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":14,"text-max-width":6.25,"text-transform":"uppercase","visibility":"visible"},"paint":{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}}],"id":"qebnlkra6"}`);
            }
          ),
          /***/
          51962: (
            /***/
            function(Y) {
              Y.exports = /* @__PURE__ */ JSON.parse(`{"version":8,"name":"orto","metadata":{},"center":[1.537786,41.837539],"zoom":12,"bearing":0,"pitch":0,"light":{"anchor":"viewport","color":"white","intensity":0.4,"position":[1.15,45,30]},"sources":{"ortoEsri":{"type":"raster","tiles":["https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}"],"tileSize":256,"maxzoom":18,"attribution":"ESRI &copy; <a href='http://www.esri.com'>ESRI</a>"},"ortoInstaMaps":{"type":"raster","tiles":["https://tilemaps.icgc.cat/mapfactory/wmts/orto_8_12/CAT3857/{z}/{x}/{y}.png"],"tileSize":256,"maxzoom":13},"ortoICGC":{"type":"raster","tiles":["https://geoserveis.icgc.cat/icc_mapesmultibase/noutm/wmts/orto/GRID3857/{z}/{x}/{y}.jpeg"],"tileSize":256,"minzoom":13.1,"maxzoom":20},"openmaptiles":{"type":"vector","url":"https://geoserveis.icgc.cat/contextmaps/basemap.json"}},"sprite":"https://geoserveis.icgc.cat/contextmaps/sprites/sprite@1","glyphs":"https://geoserveis.icgc.cat/contextmaps/glyphs/{fontstack}/{range}.pbf","layers":[{"id":"background","type":"background","paint":{"background-color":"#F4F9F4"}},{"id":"ortoEsri","type":"raster","source":"ortoEsri","maxzoom":16,"layout":{"visibility":"visible"}},{"id":"ortoICGC","type":"raster","source":"ortoICGC","minzoom":13.1,"maxzoom":19,"layout":{"visibility":"visible"}},{"id":"ortoInstaMaps","type":"raster","source":"ortoInstaMaps","maxzoom":13,"layout":{"visibility":"visible"}}]}`);
            }
          )
          /******/
        }, ne = {};
        function ke(Y) {
          var K = ne[Y];
          if (K !== void 0)
            return K.exports;
          var e = ne[Y] = {
            /******/
            id: Y,
            /******/
            // no module.loaded needed
            /******/
            exports: {}
            /******/
          };
          return It[Y].call(e.exports, e, e.exports, ke), e.exports;
        }
        ke.m = It, function() {
          ke.n = function(Y) {
            var K = Y && Y.__esModule ? (
              /******/
              function() {
                return Y.default;
              }
            ) : (
              /******/
              function() {
                return Y;
              }
            );
            return ke.d(K, { a: K }), K;
          };
        }(), function() {
          ke.d = function(Y, K) {
            for (var e in K)
              ke.o(K, e) && !ke.o(Y, e) && Object.defineProperty(Y, e, { enumerable: !0, get: K[e] });
          };
        }(), function() {
          ke.g = function() {
            if (typeof globalThis == "object") return globalThis;
            try {
              return this || new Function("return this")();
            } catch {
              if (typeof window == "object") return window;
            }
          }();
        }(), function() {
          ke.o = function(Y, K) {
            return Object.prototype.hasOwnProperty.call(Y, K);
          };
        }(), function() {
          ke.r = function(Y) {
            typeof Symbol < "u" && Symbol.toStringTag && Object.defineProperty(Y, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(Y, "__esModule", { value: !0 });
          };
        }(), function() {
          ke.b = document.baseURI || self.location.href;
        }(), function() {
          ke.nc = void 0;
        }();
        var Qe = ke(20260);
        return Qe;
      }()
    );
  });
})($_);
var LA = $_.exports;
(function($) {
  Object.defineProperty($, "__esModule", {
    value: !0
  }), $.default = void 0;
  var ft = ne(Y_), It = ne(LA);
  function ne(Y) {
    return Y && Y.__esModule ? Y : { default: Y };
  }
  var ke = (0, ft.default)(It.default), Qe = ke;
  $.default = Qe;
})(X_);
const PA = /* @__PURE__ */ tT(X_);
function IA({ data: $, layout: ft = {}, config: It = {} }) {
  const [ne, ke] = hf.useState(!1), Qe = hf.useRef(null);
  hf.useEffect(() => {
    Qe.current && ke(!0);
  }, []);
  const Y = {
    autosize: !0,
    margin: { t: 40, r: 10, l: 50, b: 50 },
    ...ft
  }, K = {
    responsive: !0,
    displayModeBar: !1,
    ...It
  };
  return /* @__PURE__ */ hf.createElement("div", { className: "plot-container", ref: Qe }, ne && /* @__PURE__ */ hf.createElement(
    PA,
    {
      data: $,
      layout: Y,
      config: K,
      useResizeHandler: !1,
      style: { width: "90%", height: "90%" }
    }
  ));
}
function RA() {
  const [$] = Db("plot_data"), [ft] = Db("plot_layout"), [It] = Db("plot_config");
  return /* @__PURE__ */ hf.createElement(
    IA,
    {
      data: $,
      layout: ft,
      config: It
    }
  );
}
const OA = {
  render: TA(RA)
};
export {
  OA as default
};
